stream-chat-react 14.11.1 → 15.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1701) hide show
  1. package/dist/cjs/ListItemLayout.60c3b287.js +2181 -0
  2. package/dist/cjs/ListItemLayout.60c3b287.js.map +1 -0
  3. package/dist/cjs/{ReactPlayerWrapper.a94a0cd1.js → ReactPlayerWrapper.f04b1d06.js} +5 -5
  4. package/dist/cjs/{ReactPlayerWrapper.a94a0cd1.js.map → ReactPlayerWrapper.f04b1d06.js.map} +1 -1
  5. package/dist/cjs/SlotLayout.de45be2d.js +1672 -0
  6. package/dist/cjs/SlotLayout.de45be2d.js.map +1 -0
  7. package/dist/cjs/Thread.373af587.js +7479 -0
  8. package/dist/cjs/Thread.373af587.js.map +1 -0
  9. package/dist/cjs/channel-detail.js +409 -389
  10. package/dist/cjs/channel-detail.js.map +1 -1
  11. package/dist/cjs/emojis.js +18 -16
  12. package/dist/cjs/emojis.js.map +1 -1
  13. package/dist/cjs/index.js +14474 -20038
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/slot-geometry.js +145 -0
  16. package/dist/cjs/slot-geometry.js.map +1 -0
  17. package/dist/cjs/slot-layout.js +37 -0
  18. package/dist/cjs/useChannel.1004ed4c.js +18 -0
  19. package/dist/cjs/useChannel.1004ed4c.js.map +1 -0
  20. package/dist/cjs/useComponentContextIcons.d16834d9.js +1729 -0
  21. package/dist/cjs/useComponentContextIcons.d16834d9.js.map +1 -0
  22. package/dist/cjs/useIsCooldownActive.1f778bc1.js +110 -0
  23. package/dist/cjs/useIsCooldownActive.1f778bc1.js.map +1 -0
  24. package/dist/css/channel-detail.css.map +1 -1
  25. package/dist/css/index.css +228 -64
  26. package/dist/css/index.css.map +1 -1
  27. package/dist/es/_virtual/_rolldown/runtime.mjs +13 -0
  28. package/dist/es/a11y/a11yUtils.mjs +42 -0
  29. package/dist/es/a11y/a11yUtils.mjs.map +1 -0
  30. package/dist/es/a11y/accessibleLabel.mjs +31 -0
  31. package/dist/es/a11y/accessibleLabel.mjs.map +1 -0
  32. package/dist/es/a11y/hooks/useAriaIdentifiers.mjs +25 -0
  33. package/dist/es/a11y/hooks/useAriaIdentifiers.mjs.map +1 -0
  34. package/dist/es/a11y/hooks/useListboxKeyboardNavigation.mjs +85 -0
  35. package/dist/es/a11y/hooks/useListboxKeyboardNavigation.mjs.map +1 -0
  36. package/dist/es/a11y/hooks/useResolvedModalAriaProps.mjs +32 -0
  37. package/dist/es/a11y/hooks/useResolvedModalAriaProps.mjs.map +1 -0
  38. package/dist/es/a11y/hooks/useVirtualizedListboxKeyboardNavigation.mjs +68 -0
  39. package/dist/es/a11y/hooks/useVirtualizedListboxKeyboardNavigation.mjs.map +1 -0
  40. package/dist/es/channel-detail.mjs +29 -3020
  41. package/dist/es/components/AIStateIndicator/AIStateIndicator.mjs +27 -0
  42. package/dist/es/components/AIStateIndicator/AIStateIndicator.mjs.map +1 -0
  43. package/dist/es/components/AIStateIndicator/hooks/useAIState.mjs +20 -0
  44. package/dist/es/components/AIStateIndicator/hooks/useAIState.mjs.map +1 -0
  45. package/dist/es/components/Accessibility/AriaLiveAnnouncerProvider.mjs +144 -0
  46. package/dist/es/components/Accessibility/AriaLiveAnnouncerProvider.mjs.map +1 -0
  47. package/dist/es/components/Accessibility/AriaLiveOutlet.mjs +58 -0
  48. package/dist/es/components/Accessibility/AriaLiveOutlet.mjs.map +1 -0
  49. package/dist/es/components/Accessibility/AriaLiveOutletContext.mjs +8 -0
  50. package/dist/es/components/Accessibility/AriaLiveOutletContext.mjs.map +1 -0
  51. package/dist/es/components/Accessibility/NotificationAnnouncer.mjs +86 -0
  52. package/dist/es/components/Accessibility/NotificationAnnouncer.mjs.map +1 -0
  53. package/dist/es/components/Accessibility/hooks/useAudioPlaybackChangeAnnouncements.mjs +20 -0
  54. package/dist/es/components/Accessibility/hooks/useAudioPlaybackChangeAnnouncements.mjs.map +1 -0
  55. package/dist/es/components/Accessibility/hooks/useFocusReturn.mjs +37 -0
  56. package/dist/es/components/Accessibility/hooks/useFocusReturn.mjs.map +1 -0
  57. package/dist/es/components/Accessibility/hooks/useIncomingMessageAnnouncements.mjs +89 -0
  58. package/dist/es/components/Accessibility/hooks/useIncomingMessageAnnouncements.mjs.map +1 -0
  59. package/dist/es/components/Accessibility/hooks/useInertWhenHidden.mjs +85 -0
  60. package/dist/es/components/Accessibility/hooks/useInertWhenHidden.mjs.map +1 -0
  61. package/dist/es/components/Accessibility/hooks/useInteractionAnnouncements.mjs +165 -0
  62. package/dist/es/components/Accessibility/hooks/useInteractionAnnouncements.mjs.map +1 -0
  63. package/dist/es/components/Accessibility/scheduling/useAnnouncementQueue.mjs +43 -0
  64. package/dist/es/components/Accessibility/scheduling/useAnnouncementQueue.mjs.map +1 -0
  65. package/dist/es/components/Accessibility/scheduling/useDebouncedAnnounce.mjs +78 -0
  66. package/dist/es/components/Accessibility/scheduling/useDebouncedAnnounce.mjs.map +1 -0
  67. package/dist/es/components/Accessibility/scheduling/useSettledAnnouncement.mjs +90 -0
  68. package/dist/es/components/Accessibility/scheduling/useSettledAnnouncement.mjs.map +1 -0
  69. package/dist/es/components/Accessibility/useAriaLiveAnnouncer.mjs +13 -0
  70. package/dist/es/components/Accessibility/useAriaLiveAnnouncer.mjs.map +1 -0
  71. package/dist/es/components/Attachment/Attachment.mjs +89 -0
  72. package/dist/es/components/Attachment/Attachment.mjs.map +1 -0
  73. package/dist/es/components/Attachment/AttachmentActions.mjs +110 -0
  74. package/dist/es/components/Attachment/AttachmentActions.mjs.map +1 -0
  75. package/dist/es/components/Attachment/AttachmentContainer.mjs +269 -0
  76. package/dist/es/components/Attachment/AttachmentContainer.mjs.map +1 -0
  77. package/dist/es/components/Attachment/Audio.mjs +109 -0
  78. package/dist/es/components/Attachment/Audio.mjs.map +1 -0
  79. package/dist/es/components/Attachment/FileAttachment.mjs +46 -0
  80. package/dist/es/components/Attachment/FileAttachment.mjs.map +1 -0
  81. package/dist/es/components/Attachment/Geolocation.mjs +89 -0
  82. package/dist/es/components/Attachment/Geolocation.mjs.map +1 -0
  83. package/dist/es/components/Attachment/Giphy.mjs +62 -0
  84. package/dist/es/components/Attachment/Giphy.mjs.map +1 -0
  85. package/dist/es/components/Attachment/Image.mjs +19 -0
  86. package/dist/es/components/Attachment/Image.mjs.map +1 -0
  87. package/dist/es/components/Attachment/LinkPreview/Card.mjs +93 -0
  88. package/dist/es/components/Attachment/LinkPreview/Card.mjs.map +1 -0
  89. package/dist/es/components/Attachment/LinkPreview/UnableToRenderCard.mjs +22 -0
  90. package/dist/es/components/Attachment/LinkPreview/UnableToRenderCard.mjs.map +1 -0
  91. package/dist/es/components/Attachment/ModalGallery.mjs +178 -0
  92. package/dist/es/components/Attachment/ModalGallery.mjs.map +1 -0
  93. package/dist/es/components/Attachment/UnsupportedAttachment.mjs +25 -0
  94. package/dist/es/components/Attachment/UnsupportedAttachment.mjs.map +1 -0
  95. package/dist/es/components/Attachment/VideoAttachment.mjs +56 -0
  96. package/dist/es/components/Attachment/VideoAttachment.mjs.map +1 -0
  97. package/dist/es/components/Attachment/VisibilityDisclaimer.mjs +17 -0
  98. package/dist/es/components/Attachment/VisibilityDisclaimer.mjs.map +1 -0
  99. package/dist/es/components/Attachment/VoiceRecording.mjs +139 -0
  100. package/dist/es/components/Attachment/VoiceRecording.mjs.map +1 -0
  101. package/dist/es/components/Attachment/attachment-sizing.mjs +73 -0
  102. package/dist/es/components/Attachment/attachment-sizing.mjs.map +1 -0
  103. package/dist/es/components/Attachment/audioSampling.mjs +74 -0
  104. package/dist/es/components/Attachment/audioSampling.mjs.map +1 -0
  105. package/dist/es/components/Attachment/components/AttachmentUploadProgressIndicator.mjs +38 -0
  106. package/dist/es/components/Attachment/components/AttachmentUploadProgressIndicator.mjs.map +1 -0
  107. package/dist/es/components/Attachment/components/DownloadButton.mjs +35 -0
  108. package/dist/es/components/Attachment/components/DownloadButton.mjs.map +1 -0
  109. package/dist/es/components/Attachment/components/FileSizeIndicator.mjs +17 -0
  110. package/dist/es/components/Attachment/components/FileSizeIndicator.mjs.map +1 -0
  111. package/dist/es/components/Attachment/giphyAccessibility.mjs +15 -0
  112. package/dist/es/components/Attachment/giphyAccessibility.mjs.map +1 -0
  113. package/dist/es/components/Attachment/hooks/useAttachmentUploadState.mjs +80 -0
  114. package/dist/es/components/Attachment/hooks/useAttachmentUploadState.mjs.map +1 -0
  115. package/dist/es/components/Attachment/hooks/useLocalVideoDimensions.mjs +79 -0
  116. package/dist/es/components/Attachment/hooks/useLocalVideoDimensions.mjs.map +1 -0
  117. package/dist/es/components/Attachment/icons.mjs +13 -0
  118. package/dist/es/components/Attachment/icons.mjs.map +1 -0
  119. package/dist/es/components/Attachment/utils.mjs +41 -0
  120. package/dist/es/components/Attachment/utils.mjs.map +1 -0
  121. package/dist/es/components/AudioPlayback/AudioPlaybackArbiter.mjs +57 -0
  122. package/dist/es/components/AudioPlayback/AudioPlaybackArbiter.mjs.map +1 -0
  123. package/dist/es/components/AudioPlayback/AudioPlayer.mjs +472 -0
  124. package/dist/es/components/AudioPlayback/AudioPlayer.mjs.map +1 -0
  125. package/dist/es/components/AudioPlayback/AudioPlayerPool.mjs +73 -0
  126. package/dist/es/components/AudioPlayback/AudioPlayerPool.mjs.map +1 -0
  127. package/dist/es/components/AudioPlayback/WithAudioPlayback.mjs +86 -0
  128. package/dist/es/components/AudioPlayback/WithAudioPlayback.mjs.map +1 -0
  129. package/dist/es/components/AudioPlayback/components/DurationDisplay.mjs +33 -0
  130. package/dist/es/components/AudioPlayback/components/DurationDisplay.mjs.map +1 -0
  131. package/dist/es/components/AudioPlayback/components/PlaybackRateButton.mjs +15 -0
  132. package/dist/es/components/AudioPlayback/components/PlaybackRateButton.mjs.map +1 -0
  133. package/dist/es/components/AudioPlayback/components/ProgressBar.mjs +56 -0
  134. package/dist/es/components/AudioPlayback/components/ProgressBar.mjs.map +1 -0
  135. package/dist/es/components/AudioPlayback/components/WaveProgressBar.mjs +107 -0
  136. package/dist/es/components/AudioPlayback/components/WaveProgressBar.mjs.map +1 -0
  137. package/dist/es/components/AudioPlayback/components/formatTime.mjs +14 -0
  138. package/dist/es/components/AudioPlayback/components/formatTime.mjs.map +1 -0
  139. package/dist/es/components/AudioPlayback/components/keyboardSeek.mjs +36 -0
  140. package/dist/es/components/AudioPlayback/components/keyboardSeek.mjs.map +1 -0
  141. package/dist/es/components/AudioPlayback/components/progressBarA11y.mjs +19 -0
  142. package/dist/es/components/AudioPlayback/components/progressBarA11y.mjs.map +1 -0
  143. package/dist/es/components/AudioPlayback/components/useInteractiveProgressBar.mjs +77 -0
  144. package/dist/es/components/AudioPlayback/components/useInteractiveProgressBar.mjs.map +1 -0
  145. package/dist/es/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.mjs +33 -0
  146. package/dist/es/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.mjs.map +1 -0
  147. package/dist/es/components/Avatar/Avatar.mjs +62 -0
  148. package/dist/es/components/Avatar/Avatar.mjs.map +1 -0
  149. package/dist/es/components/Avatar/AvatarStack.mjs +32 -0
  150. package/dist/es/components/Avatar/AvatarStack.mjs.map +1 -0
  151. package/dist/es/components/Avatar/ChannelAvatar.mjs +25 -0
  152. package/dist/es/components/Avatar/ChannelAvatar.mjs.map +1 -0
  153. package/dist/es/components/Avatar/GroupAvatar.mjs +53 -0
  154. package/dist/es/components/Avatar/GroupAvatar.mjs.map +1 -0
  155. package/dist/es/components/Avatar/utils.mjs +10 -0
  156. package/dist/es/components/Avatar/utils.mjs.map +1 -0
  157. package/dist/es/components/Badge/Badge.mjs +28 -0
  158. package/dist/es/components/Badge/Badge.mjs.map +1 -0
  159. package/dist/es/components/Badge/MediaBadge.mjs +21 -0
  160. package/dist/es/components/Badge/MediaBadge.mjs.map +1 -0
  161. package/dist/es/components/BaseImage/BaseImage.mjs +35 -0
  162. package/dist/es/components/BaseImage/BaseImage.mjs.map +1 -0
  163. package/dist/es/components/BaseImage/ImagePlaceholder.mjs +21 -0
  164. package/dist/es/components/BaseImage/ImagePlaceholder.mjs.map +1 -0
  165. package/dist/es/components/BaseImage/toBaseImageDescriptors.mjs +57 -0
  166. package/dist/es/components/BaseImage/toBaseImageDescriptors.mjs.map +1 -0
  167. package/dist/es/components/Button/Button.mjs +36 -0
  168. package/dist/es/components/Button/Button.mjs.map +1 -0
  169. package/dist/es/components/Button/PlayButton.mjs +26 -0
  170. package/dist/es/components/Button/PlayButton.mjs.map +1 -0
  171. package/dist/es/components/Button/WorkspaceNavigationButtons.mjs +94 -0
  172. package/dist/es/components/Button/WorkspaceNavigationButtons.mjs.map +1 -0
  173. package/dist/es/components/Channel/Channel.mjs +66 -0
  174. package/dist/es/components/Channel/Channel.mjs.map +1 -0
  175. package/dist/es/components/Channel/constants.mjs +6 -0
  176. package/dist/es/components/Channel/constants.mjs.map +1 -0
  177. package/dist/es/components/Channel/hooks/useChannelCapabilities.mjs +21 -0
  178. package/dist/es/components/Channel/hooks/useChannelCapabilities.mjs.map +1 -0
  179. package/dist/es/components/Channel/hooks/useChannelContainerClasses.mjs +20 -0
  180. package/dist/es/components/Channel/hooks/useChannelContainerClasses.mjs.map +1 -0
  181. package/dist/es/components/ChannelHeader/ChannelHeader.mjs +71 -0
  182. package/dist/es/components/ChannelHeader/ChannelHeader.mjs.map +1 -0
  183. package/dist/es/components/ChannelHeader/hooks/useChannelHasMembersOnline.mjs +26 -0
  184. package/dist/es/components/ChannelHeader/hooks/useChannelHasMembersOnline.mjs.map +1 -0
  185. package/dist/es/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.mjs +31 -0
  186. package/dist/es/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.mjs.map +1 -0
  187. package/dist/es/components/ChannelList/ChannelList.mjs +72 -0
  188. package/dist/es/components/ChannelList/ChannelList.mjs.map +1 -0
  189. package/dist/es/components/ChannelList/ChannelListHeader.mjs +22 -0
  190. package/dist/es/components/ChannelList/ChannelListHeader.mjs.map +1 -0
  191. package/dist/es/components/ChannelList/ChannelLists.mjs +31 -0
  192. package/dist/es/components/ChannelList/ChannelLists.mjs.map +1 -0
  193. package/dist/es/components/ChannelList/ChannelNavigation.mjs +36 -0
  194. package/dist/es/components/ChannelList/ChannelNavigation.mjs.map +1 -0
  195. package/dist/es/components/ChannelList/hooks/useChannelListKeyboardNavigation.mjs +82 -0
  196. package/dist/es/components/ChannelList/hooks/useChannelListKeyboardNavigation.mjs.map +1 -0
  197. package/dist/es/components/ChannelList/hooks/useChannelMembersState.mjs +23 -0
  198. package/dist/es/components/ChannelList/hooks/useChannelMembersState.mjs.map +1 -0
  199. package/dist/es/components/ChannelList/hooks/useChannelMembershipState.mjs +15 -0
  200. package/dist/es/components/ChannelList/hooks/useChannelMembershipState.mjs.map +1 -0
  201. package/dist/es/components/ChannelList/hooks/useChannelPaginatorState.mjs +21 -0
  202. package/dist/es/components/ChannelList/hooks/useChannelPaginatorState.mjs.map +1 -0
  203. package/dist/es/components/ChannelList/hooks/useSelectedChannelState.mjs +24 -0
  204. package/dist/es/components/ChannelList/hooks/useSelectedChannelState.mjs.map +1 -0
  205. package/dist/es/components/ChannelListItem/ChannelListItem.mjs +65 -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 +31 -0
  212. package/dist/es/components/ChannelListItem/ChannelListItemTimestamp.mjs.map +1 -0
  213. package/dist/es/components/ChannelListItem/ChannelListItemUI.mjs +120 -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 +15 -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 +36 -0
  224. package/dist/es/components/ChannelListItem/hooks/useMessageDeliveryStatus.mjs.map +1 -0
  225. package/dist/es/components/ChannelListItem/utils.a11y.mjs +135 -0
  226. package/dist/es/components/ChannelListItem/utils.a11y.mjs.map +1 -0
  227. package/dist/es/components/ChannelListItem/utils.mjs +196 -0
  228. package/dist/es/components/ChannelListItem/utils.mjs.map +1 -0
  229. package/dist/es/components/Chat/Chat.mjs +89 -0
  230. package/dist/es/components/Chat/Chat.mjs.map +1 -0
  231. package/dist/es/components/Chat/hooks/useChat.mjs +44 -0
  232. package/dist/es/components/Chat/hooks/useChat.mjs.map +1 -0
  233. package/dist/es/components/Chat/hooks/useCreateChatClient.mjs +36 -0
  234. package/dist/es/components/Chat/hooks/useCreateChatClient.mjs.map +1 -0
  235. package/dist/es/components/Chat/hooks/useCreateChatContext.mjs +30 -0
  236. package/dist/es/components/Chat/hooks/useCreateChatContext.mjs.map +1 -0
  237. package/dist/es/components/Chat/hooks/useNetworkConnectionState.mjs +46 -0
  238. package/dist/es/components/Chat/hooks/useNetworkConnectionState.mjs.map +1 -0
  239. package/dist/es/components/Chat/hooks/useReportLostConnectionSystemNotification.mjs +139 -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/Chat/hooks/useWSConnectionState.mjs +31 -0
  244. package/dist/es/components/Chat/hooks/useWSConnectionState.mjs.map +1 -0
  245. package/dist/es/components/DateSeparator/DateSeparator.mjs +36 -0
  246. package/dist/es/components/DateSeparator/DateSeparator.mjs.map +1 -0
  247. package/dist/es/components/Dialog/components/Alert.mjs +53 -0
  248. package/dist/es/components/Dialog/components/Alert.mjs.map +1 -0
  249. package/dist/es/components/Dialog/components/Callout.mjs +57 -0
  250. package/dist/es/components/Dialog/components/Callout.mjs.map +1 -0
  251. package/dist/es/components/Dialog/components/ContextMenu.mjs +551 -0
  252. package/dist/es/components/Dialog/components/ContextMenu.mjs.map +1 -0
  253. package/dist/es/components/Dialog/components/Prompt.mjs +112 -0
  254. package/dist/es/components/Dialog/components/Prompt.mjs.map +1 -0
  255. package/dist/es/components/Dialog/components/Viewer.mjs +100 -0
  256. package/dist/es/components/Dialog/components/Viewer.mjs.map +1 -0
  257. package/dist/es/components/Dialog/hooks/useDialog.mjs +53 -0
  258. package/dist/es/components/Dialog/hooks/useDialog.mjs.map +1 -0
  259. package/dist/es/components/Dialog/hooks/usePopoverPosition.mjs +57 -0
  260. package/dist/es/components/Dialog/hooks/usePopoverPosition.mjs.map +1 -0
  261. package/dist/es/components/Dialog/service/DialogAnchor.mjs +175 -0
  262. package/dist/es/components/Dialog/service/DialogAnchor.mjs.map +1 -0
  263. package/dist/es/components/Dialog/service/DialogManager.mjs +172 -0
  264. package/dist/es/components/Dialog/service/DialogManager.mjs.map +1 -0
  265. package/dist/es/components/Dialog/service/DialogPortal.mjs +63 -0
  266. package/dist/es/components/Dialog/service/DialogPortal.mjs.map +1 -0
  267. package/dist/es/components/DragAndDrop/DragAndDropContainer.mjs +90 -0
  268. package/dist/es/components/DragAndDrop/DragAndDropContainer.mjs.map +1 -0
  269. package/dist/es/components/EmptyStateIndicator/EmptyStateIndicator.mjs +39 -0
  270. package/dist/es/components/EmptyStateIndicator/EmptyStateIndicator.mjs.map +1 -0
  271. package/dist/es/components/EventComponent/EventComponent.mjs +27 -0
  272. package/dist/es/components/EventComponent/EventComponent.mjs.map +1 -0
  273. package/dist/es/components/FileIcon/FileIcon.mjs +43 -0
  274. package/dist/es/components/FileIcon/FileIcon.mjs.map +1 -0
  275. package/dist/es/components/FileIcon/FileIconSet.mjs +407 -0
  276. package/dist/es/components/FileIcon/FileIconSet.mjs.map +1 -0
  277. package/dist/es/components/FileIcon/iconMap.mjs +41 -0
  278. package/dist/es/components/FileIcon/iconMap.mjs.map +1 -0
  279. package/dist/es/components/FileIcon/mimeTypes.mjs +242 -0
  280. package/dist/es/components/FileIcon/mimeTypes.mjs.map +1 -0
  281. package/dist/es/components/Form/Checkbox.mjs +15 -0
  282. package/dist/es/components/Form/Checkbox.mjs.map +1 -0
  283. package/dist/es/components/Form/Dropdown.mjs +135 -0
  284. package/dist/es/components/Form/Dropdown.mjs.map +1 -0
  285. package/dist/es/components/Form/FieldError.mjs +13 -0
  286. package/dist/es/components/Form/FieldError.mjs.map +1 -0
  287. package/dist/es/components/Form/NumericInput.mjs +126 -0
  288. package/dist/es/components/Form/NumericInput.mjs.map +1 -0
  289. package/dist/es/components/Form/SwitchField.mjs +103 -0
  290. package/dist/es/components/Form/SwitchField.mjs.map +1 -0
  291. package/dist/es/components/Form/TextInput.mjs +113 -0
  292. package/dist/es/components/Form/TextInput.mjs.map +1 -0
  293. package/dist/es/components/Form/TextInputFieldSet.mjs +21 -0
  294. package/dist/es/components/Form/TextInputFieldSet.mjs.map +1 -0
  295. package/dist/es/components/Form/hooks/useFormState.mjs +54 -0
  296. package/dist/es/components/Form/hooks/useFormState.mjs.map +1 -0
  297. package/dist/es/components/Gallery/Gallery.mjs +60 -0
  298. package/dist/es/components/Gallery/Gallery.mjs.map +1 -0
  299. package/dist/es/components/Gallery/GalleryContext.mjs +15 -0
  300. package/dist/es/components/Gallery/GalleryContext.mjs.map +1 -0
  301. package/dist/es/components/Gallery/GalleryHeader.mjs +92 -0
  302. package/dist/es/components/Gallery/GalleryHeader.mjs.map +1 -0
  303. package/dist/es/components/Gallery/GalleryUI.mjs +206 -0
  304. package/dist/es/components/Gallery/GalleryUI.mjs.map +1 -0
  305. package/dist/es/components/Icons/BaseIcon.mjs +20 -0
  306. package/dist/es/components/Icons/BaseIcon.mjs.map +1 -0
  307. package/dist/es/components/Icons/createIcon.mjs +23 -0
  308. package/dist/es/components/Icons/createIcon.mjs.map +1 -0
  309. package/dist/es/components/Icons/icons.mjs +802 -0
  310. package/dist/es/components/Icons/icons.mjs.map +1 -0
  311. package/dist/es/components/InfiniteScrollPaginator/InfiniteScroll.mjs +81 -0
  312. package/dist/es/components/InfiniteScrollPaginator/InfiniteScroll.mjs.map +1 -0
  313. package/dist/es/components/InfiniteScrollPaginator/InfiniteScrollPaginator.mjs +75 -0
  314. package/dist/es/components/InfiniteScrollPaginator/InfiniteScrollPaginator.mjs.map +1 -0
  315. package/dist/es/components/InfiniteScrollPaginator/InfiniteScrollWithComponents.mjs +43 -0
  316. package/dist/es/components/InfiniteScrollPaginator/InfiniteScrollWithComponents.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 +24 -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 +58 -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 +81 -0
  364. package/dist/es/components/MediaRecorder/classes/AmplitudeRecorder.mjs.map +1 -0
  365. package/dist/es/components/MediaRecorder/classes/BrowserPermission.mjs +63 -0
  366. package/dist/es/components/MediaRecorder/classes/BrowserPermission.mjs.map +1 -0
  367. package/dist/es/components/MediaRecorder/classes/MediaRecorderController.mjs +251 -0
  368. package/dist/es/components/MediaRecorder/classes/MediaRecorderController.mjs.map +1 -0
  369. package/dist/es/components/MediaRecorder/hooks/useMediaRecorder.mjs +75 -0
  370. package/dist/es/components/MediaRecorder/hooks/useMediaRecorder.mjs.map +1 -0
  371. package/dist/es/components/MediaRecorder/observable/BehaviorSubject.mjs +28 -0
  372. package/dist/es/components/MediaRecorder/observable/BehaviorSubject.mjs.map +1 -0
  373. package/dist/es/components/MediaRecorder/observable/Observable.mjs +24 -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 +55 -0
  378. package/dist/es/components/MediaRecorder/observable/Subject.mjs.map +1 -0
  379. package/dist/es/components/MediaRecorder/observable/Subscription.mjs +16 -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 +113 -0
  388. package/dist/es/components/Message/Message.mjs.map +1 -0
  389. package/dist/es/components/Message/MessageAlsoSentInChannelIndicator.mjs +35 -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 +42 -0
  398. package/dist/es/components/Message/MessageEditedIndicator.mjs.map +1 -0
  399. package/dist/es/components/Message/MessageRepliesCountButton.mjs +71 -0
  400. package/dist/es/components/Message/MessageRepliesCountButton.mjs.map +1 -0
  401. package/dist/es/components/Message/MessageStatus.mjs +87 -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 +21 -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 +186 -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 +58 -0
  416. package/dist/es/components/Message/ReminderNotification.mjs.map +1 -0
  417. package/dist/es/components/Message/StreamedMessageText.mjs +36 -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 +31 -0
  424. package/dist/es/components/Message/hooks/useActionHandler.mjs.map +1 -0
  425. package/dist/es/components/Message/hooks/useDeleteHandler.mjs +40 -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 +22 -0
  430. package/dist/es/components/Message/hooks/useMarkUnreadHandler.mjs.map +1 -0
  431. package/dist/es/components/Message/hooks/useMentionsHandler.mjs +20 -0
  432. package/dist/es/components/Message/hooks/useMentionsHandler.mjs.map +1 -0
  433. package/dist/es/components/Message/hooks/useMessageAlsoSentInChannelNavigation.mjs +72 -0
  434. package/dist/es/components/Message/hooks/useMessageAlsoSentInChannelNavigation.mjs.map +1 -0
  435. package/dist/es/components/Message/hooks/useMessageReminder.mjs +14 -0
  436. package/dist/es/components/Message/hooks/useMessageReminder.mjs.map +1 -0
  437. package/dist/es/components/Message/hooks/useMessageTextStreaming.mjs +48 -0
  438. package/dist/es/components/Message/hooks/useMessageTextStreaming.mjs.map +1 -0
  439. package/dist/es/components/Message/hooks/useMuteHandler.mjs +41 -0
  440. package/dist/es/components/Message/hooks/useMuteHandler.mjs.map +1 -0
  441. package/dist/es/components/Message/hooks/useOpenThreadHandler.mjs +25 -0
  442. package/dist/es/components/Message/hooks/useOpenThreadHandler.mjs.map +1 -0
  443. package/dist/es/components/Message/hooks/usePinHandler.mjs +50 -0
  444. package/dist/es/components/Message/hooks/usePinHandler.mjs.map +1 -0
  445. package/dist/es/components/Message/hooks/useReactionHandler.mjs +98 -0
  446. package/dist/es/components/Message/hooks/useReactionHandler.mjs.map +1 -0
  447. package/dist/es/components/Message/hooks/useReactionsFetcher.mjs +31 -0
  448. package/dist/es/components/Message/hooks/useReactionsFetcher.mjs.map +1 -0
  449. package/dist/es/components/Message/hooks/useRetryHandler.mjs +15 -0
  450. package/dist/es/components/Message/hooks/useRetryHandler.mjs.map +1 -0
  451. package/dist/es/components/Message/hooks/useUserHandler.mjs +15 -0
  452. package/dist/es/components/Message/hooks/useUserHandler.mjs.map +1 -0
  453. package/dist/es/components/Message/hooks/useUserRole.mjs +51 -0
  454. package/dist/es/components/Message/hooks/useUserRole.mjs.map +1 -0
  455. package/dist/es/components/Message/renderText/componentRenderers/Anchor.mjs +20 -0
  456. package/dist/es/components/Message/renderText/componentRenderers/Anchor.mjs.map +1 -0
  457. package/dist/es/components/Message/renderText/componentRenderers/Emoji.mjs +12 -0
  458. package/dist/es/components/Message/renderText/componentRenderers/Emoji.mjs.map +1 -0
  459. package/dist/es/components/Message/renderText/componentRenderers/Mention.mjs +14 -0
  460. package/dist/es/components/Message/renderText/componentRenderers/Mention.mjs.map +1 -0
  461. package/dist/es/components/Message/renderText/regex.mjs +22 -0
  462. package/dist/es/components/Message/renderText/regex.mjs.map +1 -0
  463. package/dist/es/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.mjs +16 -0
  464. package/dist/es/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.mjs.map +1 -0
  465. package/dist/es/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.mjs +111 -0
  466. package/dist/es/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.mjs.map +1 -0
  467. package/dist/es/components/Message/renderText/remarkPlugins/htmlToTextPlugin.mjs +14 -0
  468. package/dist/es/components/Message/renderText/remarkPlugins/htmlToTextPlugin.mjs.map +1 -0
  469. package/dist/es/components/Message/renderText/remarkPlugins/imageToLink.mjs +33 -0
  470. package/dist/es/components/Message/renderText/remarkPlugins/imageToLink.mjs.map +1 -0
  471. package/dist/es/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.mjs +44 -0
  472. package/dist/es/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.mjs.map +1 -0
  473. package/dist/es/components/Message/renderText/remarkPlugins/plusPlusToEmphasis.mjs +68 -0
  474. package/dist/es/components/Message/renderText/remarkPlugins/plusPlusToEmphasis.mjs.map +1 -0
  475. package/dist/es/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.mjs +19 -0
  476. package/dist/es/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.mjs.map +1 -0
  477. package/dist/es/components/Message/renderText/renderText.mjs +131 -0
  478. package/dist/es/components/Message/renderText/renderText.mjs.map +1 -0
  479. package/dist/es/components/Message/utils.mjs +114 -0
  480. package/dist/es/components/Message/utils.mjs.map +1 -0
  481. package/dist/es/components/MessageActions/DeleteMessageAlert.mjs +43 -0
  482. package/dist/es/components/MessageActions/DeleteMessageAlert.mjs.map +1 -0
  483. package/dist/es/components/MessageActions/DownloadSubmenu.mjs +52 -0
  484. package/dist/es/components/MessageActions/DownloadSubmenu.mjs.map +1 -0
  485. package/dist/es/components/MessageActions/MessageActions.defaults.mjs +643 -0
  486. package/dist/es/components/MessageActions/MessageActions.defaults.mjs.map +1 -0
  487. package/dist/es/components/MessageActions/MessageActions.mjs +61 -0
  488. package/dist/es/components/MessageActions/MessageActions.mjs.map +1 -0
  489. package/dist/es/components/MessageActions/QuickMessageActionButton.mjs +20 -0
  490. package/dist/es/components/MessageActions/QuickMessageActionButton.mjs.map +1 -0
  491. package/dist/es/components/MessageActions/RemindMeSubmenu.mjs +71 -0
  492. package/dist/es/components/MessageActions/RemindMeSubmenu.mjs.map +1 -0
  493. package/dist/es/components/MessageActions/downloadUtils.mjs +65 -0
  494. package/dist/es/components/MessageActions/downloadUtils.mjs.map +1 -0
  495. package/dist/es/components/MessageActions/hooks/useBaseMessageActionSetFilter.mjs +67 -0
  496. package/dist/es/components/MessageActions/hooks/useBaseMessageActionSetFilter.mjs.map +1 -0
  497. package/dist/es/components/MessageBounce/MessageBounceModal.mjs +18 -0
  498. package/dist/es/components/MessageBounce/MessageBounceModal.mjs.map +1 -0
  499. package/dist/es/components/MessageBounce/MessageBouncePrompt.mjs +67 -0
  500. package/dist/es/components/MessageBounce/MessageBouncePrompt.mjs.map +1 -0
  501. package/dist/es/components/MessageComposer/AttachmentPreviewList/AttachmentPreviewList.mjs +91 -0
  502. package/dist/es/components/MessageComposer/AttachmentPreviewList/AttachmentPreviewList.mjs.map +1 -0
  503. package/dist/es/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.mjs +131 -0
  504. package/dist/es/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.mjs.map +1 -0
  505. package/dist/es/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.mjs +82 -0
  506. package/dist/es/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.mjs.map +1 -0
  507. package/dist/es/components/MessageComposer/AttachmentPreviewList/GeolocationPreview.mjs +53 -0
  508. package/dist/es/components/MessageComposer/AttachmentPreviewList/GeolocationPreview.mjs.map +1 -0
  509. package/dist/es/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.mjs +96 -0
  510. package/dist/es/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.mjs.map +1 -0
  511. package/dist/es/components/MessageComposer/AttachmentPreviewList/UnsupportedAttachmentPreview.mjs +36 -0
  512. package/dist/es/components/MessageComposer/AttachmentPreviewList/UnsupportedAttachmentPreview.mjs.map +1 -0
  513. package/dist/es/components/MessageComposer/AttachmentPreviewList/VoiceRecordingPreviewSlot.mjs +29 -0
  514. package/dist/es/components/MessageComposer/AttachmentPreviewList/VoiceRecordingPreviewSlot.mjs.map +1 -0
  515. package/dist/es/components/MessageComposer/AttachmentPreviewList/utils/AttachmentPreviewRoot.mjs +53 -0
  516. package/dist/es/components/MessageComposer/AttachmentPreviewList/utils/AttachmentPreviewRoot.mjs.map +1 -0
  517. package/dist/es/components/MessageComposer/AttachmentSelector/AttachmentSelector.mjs +311 -0
  518. package/dist/es/components/MessageComposer/AttachmentSelector/AttachmentSelector.mjs.map +1 -0
  519. package/dist/es/components/MessageComposer/AttachmentSelector/CommandsMenu.mjs +99 -0
  520. package/dist/es/components/MessageComposer/AttachmentSelector/CommandsMenu.mjs.map +1 -0
  521. package/dist/es/components/MessageComposer/CommandChip.mjs +37 -0
  522. package/dist/es/components/MessageComposer/CommandChip.mjs.map +1 -0
  523. package/dist/es/components/MessageComposer/CooldownTimer.mjs +15 -0
  524. package/dist/es/components/MessageComposer/CooldownTimer.mjs.map +1 -0
  525. package/dist/es/components/MessageComposer/EditedMessagePreview.mjs +17 -0
  526. package/dist/es/components/MessageComposer/EditedMessagePreview.mjs.map +1 -0
  527. package/dist/es/components/MessageComposer/LinkPreviewList.mjs +78 -0
  528. package/dist/es/components/MessageComposer/LinkPreviewList.mjs.map +1 -0
  529. package/dist/es/components/MessageComposer/MessageComposer.mjs +61 -0
  530. package/dist/es/components/MessageComposer/MessageComposer.mjs.map +1 -0
  531. package/dist/es/components/MessageComposer/MessageComposerActions.mjs +75 -0
  532. package/dist/es/components/MessageComposer/MessageComposerActions.mjs.map +1 -0
  533. package/dist/es/components/MessageComposer/MessageComposerUI.mjs +100 -0
  534. package/dist/es/components/MessageComposer/MessageComposerUI.mjs.map +1 -0
  535. package/dist/es/components/MessageComposer/QuotedMessageIndicator.mjs +9 -0
  536. package/dist/es/components/MessageComposer/QuotedMessageIndicator.mjs.map +1 -0
  537. package/dist/es/components/MessageComposer/QuotedMessagePreview.mjs +325 -0
  538. package/dist/es/components/MessageComposer/QuotedMessagePreview.mjs.map +1 -0
  539. package/dist/es/components/MessageComposer/RemoveAttachmentPreviewButton.mjs +25 -0
  540. package/dist/es/components/MessageComposer/RemoveAttachmentPreviewButton.mjs.map +1 -0
  541. package/dist/es/components/MessageComposer/SendButton.mjs +29 -0
  542. package/dist/es/components/MessageComposer/SendButton.mjs.map +1 -0
  543. package/dist/es/components/MessageComposer/SendToChannelCheckbox.mjs +51 -0
  544. package/dist/es/components/MessageComposer/SendToChannelCheckbox.mjs.map +1 -0
  545. package/dist/es/components/MessageComposer/StopAIGenerationButton.mjs +18 -0
  546. package/dist/es/components/MessageComposer/StopAIGenerationButton.mjs.map +1 -0
  547. package/dist/es/components/MessageComposer/WithDragAndDropUpload.mjs +105 -0
  548. package/dist/es/components/MessageComposer/WithDragAndDropUpload.mjs.map +1 -0
  549. package/dist/es/components/MessageComposer/hooks/useAttachmentManagerState.mjs +37 -0
  550. package/dist/es/components/MessageComposer/hooks/useAttachmentManagerState.mjs.map +1 -0
  551. package/dist/es/components/MessageComposer/hooks/useAttachmentsForPreview.mjs +21 -0
  552. package/dist/es/components/MessageComposer/hooks/useAttachmentsForPreview.mjs.map +1 -0
  553. package/dist/es/components/MessageComposer/hooks/useCanCreatePoll.mjs +15 -0
  554. package/dist/es/components/MessageComposer/hooks/useCanCreatePoll.mjs.map +1 -0
  555. package/dist/es/components/MessageComposer/hooks/useCooldownRemaining.mjs +18 -0
  556. package/dist/es/components/MessageComposer/hooks/useCooldownRemaining.mjs.map +1 -0
  557. package/dist/es/components/MessageComposer/hooks/useCreateMessageComposerContext.mjs +33 -0
  558. package/dist/es/components/MessageComposer/hooks/useCreateMessageComposerContext.mjs.map +1 -0
  559. package/dist/es/components/MessageComposer/hooks/useIsCooldownActive.mjs +11 -0
  560. package/dist/es/components/MessageComposer/hooks/useIsCooldownActive.mjs.map +1 -0
  561. package/dist/es/components/MessageComposer/hooks/useMessageComposerBindings.mjs +23 -0
  562. package/dist/es/components/MessageComposer/hooks/useMessageComposerBindings.mjs.map +1 -0
  563. package/dist/es/components/MessageComposer/hooks/useMessageComposerCommands.mjs +27 -0
  564. package/dist/es/components/MessageComposer/hooks/useMessageComposerCommands.mjs.map +1 -0
  565. package/dist/es/components/MessageComposer/hooks/useMessageComposerController.mjs +30 -0
  566. package/dist/es/components/MessageComposer/hooks/useMessageComposerController.mjs.map +1 -0
  567. package/dist/es/components/MessageComposer/hooks/useMessageComposerHasSendableData.mjs +13 -0
  568. package/dist/es/components/MessageComposer/hooks/useMessageComposerHasSendableData.mjs.map +1 -0
  569. package/dist/es/components/MessageComposer/hooks/useMessageComposerSubmitFn.mjs +16 -0
  570. package/dist/es/components/MessageComposer/hooks/useMessageComposerSubmitFn.mjs.map +1 -0
  571. package/dist/es/components/MessageComposer/hooks/useMessageContentIsEmpty.mjs +13 -0
  572. package/dist/es/components/MessageComposer/hooks/useMessageContentIsEmpty.mjs.map +1 -0
  573. package/dist/es/components/MessageComposer/hooks/usePasteHandler.mjs +34 -0
  574. package/dist/es/components/MessageComposer/hooks/usePasteHandler.mjs.map +1 -0
  575. package/dist/es/components/MessageComposer/hooks/useTextareaRef.mjs +14 -0
  576. package/dist/es/components/MessageComposer/hooks/useTextareaRef.mjs.map +1 -0
  577. package/dist/es/components/MessageComposer/hooks/utils.mjs +16 -0
  578. package/dist/es/components/MessageComposer/hooks/utils.mjs.map +1 -0
  579. package/dist/es/components/MessageComposer/icons.mjs +62 -0
  580. package/dist/es/components/MessageComposer/icons.mjs.map +1 -0
  581. package/dist/es/components/MessageComposer/preEditSnapshot.mjs +39 -0
  582. package/dist/es/components/MessageComposer/preEditSnapshot.mjs.map +1 -0
  583. package/dist/es/components/MessageList/FloatingDateSeparator.mjs +46 -0
  584. package/dist/es/components/MessageList/FloatingDateSeparator.mjs.map +1 -0
  585. package/dist/es/components/MessageList/GiphyPreviewMessage.mjs +15 -0
  586. package/dist/es/components/MessageList/GiphyPreviewMessage.mjs.map +1 -0
  587. package/dist/es/components/MessageList/MessageList.mjs +284 -0
  588. package/dist/es/components/MessageList/MessageList.mjs.map +1 -0
  589. package/dist/es/components/MessageList/MessageListMainPanel.mjs +12 -0
  590. package/dist/es/components/MessageList/MessageListMainPanel.mjs.map +1 -0
  591. package/dist/es/components/MessageList/NewMessageNotification.mjs +36 -0
  592. package/dist/es/components/MessageList/NewMessageNotification.mjs.map +1 -0
  593. package/dist/es/components/MessageList/ScrollToLatestMessageButton.mjs +83 -0
  594. package/dist/es/components/MessageList/ScrollToLatestMessageButton.mjs.map +1 -0
  595. package/dist/es/components/MessageList/UnreadMessagesNotification.mjs +49 -0
  596. package/dist/es/components/MessageList/UnreadMessagesNotification.mjs.map +1 -0
  597. package/dist/es/components/MessageList/UnreadMessagesSeparator.mjs +44 -0
  598. package/dist/es/components/MessageList/UnreadMessagesSeparator.mjs.map +1 -0
  599. package/dist/es/components/MessageList/VirtualizedMessageList.mjs +358 -0
  600. package/dist/es/components/MessageList/VirtualizedMessageList.mjs.map +1 -0
  601. package/dist/es/components/MessageList/VirtualizedMessageListComponents.mjs +93 -0
  602. package/dist/es/components/MessageList/VirtualizedMessageListComponents.mjs.map +1 -0
  603. package/dist/es/components/MessageList/hooks/MessageList/useEnrichedMessages.mjs +38 -0
  604. package/dist/es/components/MessageList/hooks/MessageList/useEnrichedMessages.mjs.map +1 -0
  605. package/dist/es/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.mjs +74 -0
  606. package/dist/es/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.mjs.map +1 -0
  607. package/dist/es/components/MessageList/hooks/MessageList/useMessageListElements.mjs +66 -0
  608. package/dist/es/components/MessageList/hooks/MessageList/useMessageListElements.mjs.map +1 -0
  609. package/dist/es/components/MessageList/hooks/MessageList/useMessageListScrollManager.mjs +143 -0
  610. package/dist/es/components/MessageList/hooks/MessageList/useMessageListScrollManager.mjs.map +1 -0
  611. package/dist/es/components/MessageList/hooks/MessageList/useScrollLocationLogic.mjs +100 -0
  612. package/dist/es/components/MessageList/hooks/MessageList/useScrollLocationLogic.mjs.map +1 -0
  613. package/dist/es/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.mjs +86 -0
  614. package/dist/es/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.mjs.map +1 -0
  615. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.mjs +70 -0
  616. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.mjs.map +1 -0
  617. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.mjs +24 -0
  618. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.mjs.map +1 -0
  619. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.mjs +18 -0
  620. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.mjs.map +1 -0
  621. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.mjs +45 -0
  622. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.mjs.map +1 -0
  623. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.mjs +41 -0
  624. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.mjs.map +1 -0
  625. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.mjs +33 -0
  626. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.mjs.map +1 -0
  627. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.mjs +27 -0
  628. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.mjs.map +1 -0
  629. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.mjs +48 -0
  630. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.mjs.map +1 -0
  631. package/dist/es/components/MessageList/hooks/useCanPaginateReplies.mjs +47 -0
  632. package/dist/es/components/MessageList/hooks/useCanPaginateReplies.mjs.map +1 -0
  633. package/dist/es/components/MessageList/hooks/useLastDeliveredData.mjs +11 -0
  634. package/dist/es/components/MessageList/hooks/useLastDeliveredData.mjs.map +1 -0
  635. package/dist/es/components/MessageList/hooks/useLastOwnMessage.mjs +8 -0
  636. package/dist/es/components/MessageList/hooks/useLastOwnMessage.mjs.map +1 -0
  637. package/dist/es/components/MessageList/hooks/useLastReadData.mjs +11 -0
  638. package/dist/es/components/MessageList/hooks/useLastReadData.mjs.map +1 -0
  639. package/dist/es/components/MessageList/hooks/useMarkRead.mjs +105 -0
  640. package/dist/es/components/MessageList/hooks/useMarkRead.mjs.map +1 -0
  641. package/dist/es/components/MessageList/hooks/useReceiptsByMessageId.mjs +71 -0
  642. package/dist/es/components/MessageList/hooks/useReceiptsByMessageId.mjs.map +1 -0
  643. package/dist/es/components/MessageList/hooks/useThreadHead.mjs +26 -0
  644. package/dist/es/components/MessageList/hooks/useThreadHead.mjs.map +1 -0
  645. package/dist/es/components/MessageList/messageSourceKey.mjs +37 -0
  646. package/dist/es/components/MessageList/messageSourceKey.mjs.map +1 -0
  647. package/dist/es/components/MessageList/renderMessages.mjs +76 -0
  648. package/dist/es/components/MessageList/renderMessages.mjs.map +1 -0
  649. package/dist/es/components/MessageList/utils.mjs +162 -0
  650. package/dist/es/components/MessageList/utils.mjs.map +1 -0
  651. package/dist/es/components/Modal/GlobalModal.mjs +157 -0
  652. package/dist/es/components/Modal/GlobalModal.mjs.map +1 -0
  653. package/dist/es/components/Notifications/Notification.mjs +92 -0
  654. package/dist/es/components/Notifications/Notification.mjs.map +1 -0
  655. package/dist/es/components/Notifications/NotificationConfigurationContext.mjs +19 -0
  656. package/dist/es/components/Notifications/NotificationConfigurationContext.mjs.map +1 -0
  657. package/dist/es/components/Notifications/NotificationList.mjs +300 -0
  658. package/dist/es/components/Notifications/NotificationList.mjs.map +1 -0
  659. package/dist/es/components/Notifications/hooks/useNotificationApi.mjs +114 -0
  660. package/dist/es/components/Notifications/hooks/useNotificationApi.mjs.map +1 -0
  661. package/dist/es/components/Notifications/hooks/useNotificationTarget.mjs +21 -0
  662. package/dist/es/components/Notifications/hooks/useNotificationTarget.mjs.map +1 -0
  663. package/dist/es/components/Notifications/hooks/useNotifications.mjs +39 -0
  664. package/dist/es/components/Notifications/hooks/useNotifications.mjs.map +1 -0
  665. package/dist/es/components/Notifications/hooks/useSystemNotifications.mjs +22 -0
  666. package/dist/es/components/Notifications/hooks/useSystemNotifications.mjs.map +1 -0
  667. package/dist/es/components/Notifications/notificationTarget.mjs +53 -0
  668. package/dist/es/components/Notifications/notificationTarget.mjs.map +1 -0
  669. package/dist/es/components/Poll/Poll.mjs +18 -0
  670. package/dist/es/components/Poll/Poll.mjs.map +1 -0
  671. package/dist/es/components/Poll/PollActions/AddCommentPrompt.mjs +79 -0
  672. package/dist/es/components/Poll/PollActions/AddCommentPrompt.mjs.map +1 -0
  673. package/dist/es/components/Poll/PollActions/EndPollAlert.mjs +61 -0
  674. package/dist/es/components/Poll/PollActions/EndPollAlert.mjs.map +1 -0
  675. package/dist/es/components/Poll/PollActions/PollAction.mjs +27 -0
  676. package/dist/es/components/Poll/PollActions/PollAction.mjs.map +1 -0
  677. package/dist/es/components/Poll/PollActions/PollActions.mjs +98 -0
  678. package/dist/es/components/Poll/PollActions/PollActions.mjs.map +1 -0
  679. package/dist/es/components/Poll/PollActions/PollAnswerList.mjs +70 -0
  680. package/dist/es/components/Poll/PollActions/PollAnswerList.mjs.map +1 -0
  681. package/dist/es/components/Poll/PollActions/PollOptionsFullList.mjs +32 -0
  682. package/dist/es/components/Poll/PollActions/PollOptionsFullList.mjs.map +1 -0
  683. package/dist/es/components/Poll/PollActions/PollQuestion.mjs +20 -0
  684. package/dist/es/components/Poll/PollActions/PollQuestion.mjs.map +1 -0
  685. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotes.mjs +51 -0
  686. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotes.mjs.map +1 -0
  687. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.mjs +48 -0
  688. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.mjs.map +1 -0
  689. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesList.mjs +39 -0
  690. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesList.mjs.map +1 -0
  691. package/dist/es/components/Poll/PollActions/PollResults/PollResults.mjs +79 -0
  692. package/dist/es/components/Poll/PollActions/PollResults/PollResults.mjs.map +1 -0
  693. package/dist/es/components/Poll/PollActions/SuggestPollOptionPrompt.mjs +82 -0
  694. package/dist/es/components/Poll/PollActions/SuggestPollOptionPrompt.mjs.map +1 -0
  695. package/dist/es/components/Poll/PollContent.mjs +28 -0
  696. package/dist/es/components/Poll/PollContent.mjs.map +1 -0
  697. package/dist/es/components/Poll/PollCreationDialog/MultipleAnswersField.mjs +86 -0
  698. package/dist/es/components/Poll/PollCreationDialog/MultipleAnswersField.mjs.map +1 -0
  699. package/dist/es/components/Poll/PollCreationDialog/NameField.mjs +42 -0
  700. package/dist/es/components/Poll/PollCreationDialog/NameField.mjs.map +1 -0
  701. package/dist/es/components/Poll/PollCreationDialog/OptionFieldSet.mjs +194 -0
  702. package/dist/es/components/Poll/PollCreationDialog/OptionFieldSet.mjs.map +1 -0
  703. package/dist/es/components/Poll/PollCreationDialog/PollCreationDialog.mjs +77 -0
  704. package/dist/es/components/Poll/PollCreationDialog/PollCreationDialog.mjs.map +1 -0
  705. package/dist/es/components/Poll/PollCreationDialog/PollCreationDialogControls.mjs +53 -0
  706. package/dist/es/components/Poll/PollCreationDialog/PollCreationDialogControls.mjs.map +1 -0
  707. package/dist/es/components/Poll/PollCreationDialog/PollOptionReorderHandle.mjs +79 -0
  708. package/dist/es/components/Poll/PollCreationDialog/PollOptionReorderHandle.mjs.map +1 -0
  709. package/dist/es/components/Poll/PollHeader.mjs +50 -0
  710. package/dist/es/components/Poll/PollHeader.mjs.map +1 -0
  711. package/dist/es/components/Poll/PollOptionList.mjs +45 -0
  712. package/dist/es/components/Poll/PollOptionList.mjs.map +1 -0
  713. package/dist/es/components/Poll/PollOptionSelector.mjs +105 -0
  714. package/dist/es/components/Poll/PollOptionSelector.mjs.map +1 -0
  715. package/dist/es/components/Poll/PollVote.mjs +60 -0
  716. package/dist/es/components/Poll/PollVote.mjs.map +1 -0
  717. package/dist/es/components/Poll/hooks/useManagePollVotesRealtime.mjs +36 -0
  718. package/dist/es/components/Poll/hooks/useManagePollVotesRealtime.mjs.map +1 -0
  719. package/dist/es/components/Poll/hooks/usePollAnswerPagination.mjs +44 -0
  720. package/dist/es/components/Poll/hooks/usePollAnswerPagination.mjs.map +1 -0
  721. package/dist/es/components/Poll/hooks/usePollOptionVotesPagination.mjs +45 -0
  722. package/dist/es/components/Poll/hooks/usePollOptionVotesPagination.mjs.map +1 -0
  723. package/dist/es/components/Portal/Portal.mjs +17 -0
  724. package/dist/es/components/Portal/Portal.mjs.map +1 -0
  725. package/dist/es/components/ReactFileUtilities/UploadButton.mjs +54 -0
  726. package/dist/es/components/ReactFileUtilities/UploadButton.mjs.map +1 -0
  727. package/dist/es/{audioProcessing.766ca76c.mjs → components/ReactFileUtilities/utils.mjs} +2 -32
  728. package/dist/es/components/ReactFileUtilities/utils.mjs.map +1 -0
  729. package/dist/es/components/Reactions/MessageReactions.mjs +150 -0
  730. package/dist/es/components/Reactions/MessageReactions.mjs.map +1 -0
  731. package/dist/es/components/Reactions/MessageReactionsDetail.mjs +157 -0
  732. package/dist/es/components/Reactions/MessageReactionsDetail.mjs.map +1 -0
  733. package/dist/es/components/Reactions/ReactionSelector.mjs +134 -0
  734. package/dist/es/components/Reactions/ReactionSelector.mjs.map +1 -0
  735. package/dist/es/components/Reactions/ReactionSelectorWithButton.mjs +51 -0
  736. package/dist/es/components/Reactions/ReactionSelectorWithButton.mjs.map +1 -0
  737. package/dist/es/components/Reactions/SpriteImage.mjs +34 -0
  738. package/dist/es/components/Reactions/SpriteImage.mjs.map +1 -0
  739. package/dist/es/components/Reactions/hooks/useFetchReactions.mjs +61 -0
  740. package/dist/es/components/Reactions/hooks/useFetchReactions.mjs.map +1 -0
  741. package/dist/es/components/Reactions/hooks/useProcessReactions.mjs +83 -0
  742. package/dist/es/components/Reactions/hooks/useProcessReactions.mjs.map +1 -0
  743. package/dist/es/components/Reactions/reactionOptions.mjs +79 -0
  744. package/dist/es/components/Reactions/reactionOptions.mjs.map +1 -0
  745. package/dist/es/components/Reactions/utils/utils.mjs +13 -0
  746. package/dist/es/components/Reactions/utils/utils.mjs.map +1 -0
  747. package/dist/es/components/SafeAnchor/SafeAnchor.mjs +21 -0
  748. package/dist/es/components/SafeAnchor/SafeAnchor.mjs.map +1 -0
  749. package/dist/es/components/Search/Search.mjs +40 -0
  750. package/dist/es/components/Search/Search.mjs.map +1 -0
  751. package/dist/es/components/Search/SearchBar/SearchBar.mjs +114 -0
  752. package/dist/es/components/Search/SearchBar/SearchBar.mjs.map +1 -0
  753. package/dist/es/components/Search/SearchContext.mjs +17 -0
  754. package/dist/es/components/Search/SearchContext.mjs.map +1 -0
  755. package/dist/es/components/Search/SearchResults/SearchResultItem.mjs +130 -0
  756. package/dist/es/components/Search/SearchResults/SearchResultItem.mjs.map +1 -0
  757. package/dist/es/components/Search/SearchResults/SearchResults.mjs +37 -0
  758. package/dist/es/components/Search/SearchResults/SearchResults.mjs.map +1 -0
  759. package/dist/es/components/Search/SearchResults/SearchResultsHeader.mjs +55 -0
  760. package/dist/es/components/Search/SearchResults/SearchResultsHeader.mjs.map +1 -0
  761. package/dist/es/components/Search/SearchResults/SearchResultsPresearch.mjs +15 -0
  762. package/dist/es/components/Search/SearchResults/SearchResultsPresearch.mjs.map +1 -0
  763. package/dist/es/components/Search/SearchResults/SearchSourceResultList.mjs +31 -0
  764. package/dist/es/components/Search/SearchResults/SearchSourceResultList.mjs.map +1 -0
  765. package/dist/es/components/Search/SearchResults/SearchSourceResultListFooter.mjs +31 -0
  766. package/dist/es/components/Search/SearchResults/SearchSourceResultListFooter.mjs.map +1 -0
  767. package/dist/es/components/Search/SearchResults/SearchSourceResults.mjs +30 -0
  768. package/dist/es/components/Search/SearchResults/SearchSourceResults.mjs.map +1 -0
  769. package/dist/es/components/Search/SearchResults/SearchSourceResultsEmpty.mjs +15 -0
  770. package/dist/es/components/Search/SearchResults/SearchSourceResultsEmpty.mjs.map +1 -0
  771. package/dist/es/components/Search/SearchResults/SearchSourceResultsHeader.mjs +6 -0
  772. package/dist/es/components/Search/SearchResults/SearchSourceResultsHeader.mjs.map +1 -0
  773. package/dist/es/components/Search/SearchResults/SearchSourceResultsLoadingIndicator.mjs +18 -0
  774. package/dist/es/components/Search/SearchResults/SearchSourceResultsLoadingIndicator.mjs.map +1 -0
  775. package/dist/es/components/Search/SearchSourceResultsContext.mjs +17 -0
  776. package/dist/es/components/Search/SearchSourceResultsContext.mjs.map +1 -0
  777. package/dist/es/components/Search/hooks/useAnnounceSearchResultCount.mjs +57 -0
  778. package/dist/es/components/Search/hooks/useAnnounceSearchResultCount.mjs.map +1 -0
  779. package/dist/es/components/Search/hooks/useSearchQueriesInProgress.mjs +24 -0
  780. package/dist/es/components/Search/hooks/useSearchQueriesInProgress.mjs.map +1 -0
  781. package/dist/es/components/Search/hooks/useSearchResultsKeyboardNavigation.mjs +28 -0
  782. package/dist/es/components/Search/hooks/useSearchResultsKeyboardNavigation.mjs.map +1 -0
  783. package/dist/es/components/SkipNavigation/SkipNavigation.mjs +64 -0
  784. package/dist/es/components/SkipNavigation/SkipNavigation.mjs.map +1 -0
  785. package/dist/es/components/SummarizedMessagePreview/SummarizedMessagePreview.mjs +55 -0
  786. package/dist/es/components/SummarizedMessagePreview/SummarizedMessagePreview.mjs.map +1 -0
  787. package/dist/es/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.mjs +141 -0
  788. package/dist/es/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.mjs.map +1 -0
  789. package/dist/es/components/TextareaComposer/SuggestionList/CommandItem.mjs +26 -0
  790. package/dist/es/components/TextareaComposer/SuggestionList/CommandItem.mjs.map +1 -0
  791. package/dist/es/components/TextareaComposer/SuggestionList/EmoticonItem.mjs +26 -0
  792. package/dist/es/components/TextareaComposer/SuggestionList/EmoticonItem.mjs.map +1 -0
  793. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.mjs +32 -0
  794. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.mjs.map +1 -0
  795. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/MentionItem.mjs +39 -0
  796. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/MentionItem.mjs.map +1 -0
  797. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/MentionSuggestionTitle.mjs +7 -0
  798. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/MentionSuggestionTitle.mjs.map +1 -0
  799. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.mjs +34 -0
  800. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.mjs.map +1 -0
  801. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/SpecialMentionItem.mjs +6 -0
  802. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/SpecialMentionItem.mjs.map +1 -0
  803. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.mjs +31 -0
  804. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.mjs.map +1 -0
  805. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/UserItem.mjs +50 -0
  806. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/UserItem.mjs.map +1 -0
  807. package/dist/es/components/TextareaComposer/SuggestionList/SuggestionList.mjs +198 -0
  808. package/dist/es/components/TextareaComposer/SuggestionList/SuggestionList.mjs.map +1 -0
  809. package/dist/es/components/TextareaComposer/SuggestionList/SuggestionListItem.mjs +46 -0
  810. package/dist/es/components/TextareaComposer/SuggestionList/SuggestionListItem.mjs.map +1 -0
  811. package/dist/es/components/TextareaComposer/SuggestionList/TokenizedSuggestionParts.mjs +30 -0
  812. package/dist/es/components/TextareaComposer/SuggestionList/TokenizedSuggestionParts.mjs.map +1 -0
  813. package/dist/es/components/TextareaComposer/TextareaComposer.mjs +290 -0
  814. package/dist/es/components/TextareaComposer/TextareaComposer.mjs.map +1 -0
  815. package/dist/es/components/TextareaComposer/hooks/useTextareaPlaceholder.mjs +31 -0
  816. package/dist/es/components/TextareaComposer/hooks/useTextareaPlaceholder.mjs.map +1 -0
  817. package/dist/es/components/Thread/Thread.mjs +103 -0
  818. package/dist/es/components/Thread/Thread.mjs.map +1 -0
  819. package/dist/es/components/Thread/ThreadHead.mjs +27 -0
  820. package/dist/es/components/Thread/ThreadHead.mjs.map +1 -0
  821. package/dist/es/components/Thread/ThreadHeader.mjs +78 -0
  822. package/dist/es/components/Thread/ThreadHeader.mjs.map +1 -0
  823. package/dist/es/components/Thread/ThreadStart.mjs +25 -0
  824. package/dist/es/components/Thread/ThreadStart.mjs.map +1 -0
  825. package/dist/es/components/Threads/ThreadContext.mjs +13 -0
  826. package/dist/es/components/Threads/ThreadContext.mjs.map +1 -0
  827. package/dist/es/components/Threads/ThreadList/ThreadList.mjs +112 -0
  828. package/dist/es/components/Threads/ThreadList/ThreadList.mjs.map +1 -0
  829. package/dist/es/components/Threads/ThreadList/ThreadListEmptyPlaceholder.mjs +17 -0
  830. package/dist/es/components/Threads/ThreadList/ThreadListEmptyPlaceholder.mjs.map +1 -0
  831. package/dist/es/components/Threads/ThreadList/ThreadListHeader.mjs +22 -0
  832. package/dist/es/components/Threads/ThreadList/ThreadListHeader.mjs.map +1 -0
  833. package/dist/es/components/Threads/ThreadList/ThreadListItem.mjs +18 -0
  834. package/dist/es/components/Threads/ThreadList/ThreadListItem.mjs.map +1 -0
  835. package/dist/es/components/Threads/ThreadList/ThreadListItemUI.mjs +160 -0
  836. package/dist/es/components/Threads/ThreadList/ThreadListItemUI.mjs.map +1 -0
  837. package/dist/es/components/Threads/ThreadList/ThreadListLoadingIndicator.mjs +22 -0
  838. package/dist/es/components/Threads/ThreadList/ThreadListLoadingIndicator.mjs.map +1 -0
  839. package/dist/es/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.mjs +34 -0
  840. package/dist/es/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.mjs.map +1 -0
  841. package/dist/es/components/Threads/ThreadList/useThreadHighlighting.mjs +47 -0
  842. package/dist/es/components/Threads/ThreadList/useThreadHighlighting.mjs.map +1 -0
  843. package/dist/es/components/Threads/ThreadList/utils.a11y.mjs +91 -0
  844. package/dist/es/components/Threads/ThreadList/utils.a11y.mjs.map +1 -0
  845. package/dist/es/components/Threads/UnreadCountBadge.mjs +16 -0
  846. package/dist/es/components/Threads/UnreadCountBadge.mjs.map +1 -0
  847. package/dist/es/components/Threads/hooks/useCloseThread.mjs +30 -0
  848. package/dist/es/components/Threads/hooks/useCloseThread.mjs.map +1 -0
  849. package/dist/es/components/Tooltip/Tooltip.mjs +39 -0
  850. package/dist/es/components/Tooltip/Tooltip.mjs.map +1 -0
  851. package/dist/es/components/Tooltip/hooks/useEnterLeaveHandlers.mjs +20 -0
  852. package/dist/es/components/Tooltip/hooks/useEnterLeaveHandlers.mjs.map +1 -0
  853. package/dist/es/components/TypingIndicator/TypingIndicator.mjs +85 -0
  854. package/dist/es/components/TypingIndicator/TypingIndicator.mjs.map +1 -0
  855. package/dist/es/components/TypingIndicator/TypingIndicatorDots.mjs +33 -0
  856. package/dist/es/components/TypingIndicator/TypingIndicatorDots.mjs.map +1 -0
  857. package/dist/es/components/TypingIndicator/TypingIndicatorHeader.mjs +48 -0
  858. package/dist/es/components/TypingIndicator/TypingIndicatorHeader.mjs.map +1 -0
  859. package/dist/es/components/TypingIndicator/hooks/useDebouncedTypingActive.mjs +53 -0
  860. package/dist/es/components/TypingIndicator/hooks/useDebouncedTypingActive.mjs.map +1 -0
  861. package/dist/es/components/TypingIndicator/utils/getTypingStatusMessage.mjs +19 -0
  862. package/dist/es/components/TypingIndicator/utils/getTypingStatusMessage.mjs.map +1 -0
  863. package/dist/es/components/UtilityComponents/ErrorBoundary.mjs +22 -0
  864. package/dist/es/components/UtilityComponents/ErrorBoundary.mjs.map +1 -0
  865. package/dist/es/components/UtilityComponents/hooks/useMutationObserver.mjs +45 -0
  866. package/dist/es/components/UtilityComponents/hooks/useMutationObserver.mjs.map +1 -0
  867. package/dist/es/components/UtilityComponents/useStableId.mjs +20 -0
  868. package/dist/es/components/UtilityComponents/useStableId.mjs.map +1 -0
  869. package/dist/es/{ReactPlayerWrapper.d2ae5941.mjs → components/VideoPlayer/ReactPlayerWrapper.mjs} +3 -3
  870. package/dist/es/components/VideoPlayer/ReactPlayerWrapper.mjs.map +1 -0
  871. package/dist/es/components/VideoPlayer/VideoPlayer.mjs +30 -0
  872. package/dist/es/components/VideoPlayer/VideoPlayer.mjs.map +1 -0
  873. package/dist/es/components/VideoPlayer/VideoThumbnail.mjs +35 -0
  874. package/dist/es/components/VideoPlayer/VideoThumbnail.mjs.map +1 -0
  875. package/dist/es/components/VisuallyHidden/VisuallyHidden.mjs +29 -0
  876. package/dist/es/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -0
  877. package/dist/es/constants/messageTypes.mjs +9 -0
  878. package/dist/es/constants/messageTypes.mjs.map +1 -0
  879. package/dist/es/context/AttachmentContext.mjs +16 -0
  880. package/dist/es/context/AttachmentContext.mjs.map +1 -0
  881. package/dist/es/context/AttachmentSelectorContext.mjs +13 -0
  882. package/dist/es/context/AttachmentSelectorContext.mjs.map +1 -0
  883. package/dist/es/context/ChannelInstanceContext.mjs +17 -0
  884. package/dist/es/context/ChannelInstanceContext.mjs.map +1 -0
  885. package/dist/es/context/ChannelListContext.mjs +17 -0
  886. package/dist/es/context/ChannelListContext.mjs.map +1 -0
  887. package/dist/es/context/ChatContext.mjs +14 -0
  888. package/dist/es/context/ChatContext.mjs.map +1 -0
  889. package/dist/es/context/ComponentContext.mjs +13 -0
  890. package/dist/es/context/ComponentContext.mjs.map +1 -0
  891. package/dist/es/context/DialogManagerContext.mjs +119 -0
  892. package/dist/es/context/DialogManagerContext.mjs.map +1 -0
  893. package/dist/es/context/MessageBounceContext.mjs +51 -0
  894. package/dist/es/context/MessageBounceContext.mjs.map +1 -0
  895. package/dist/es/context/MessageComposerContext.mjs +19 -0
  896. package/dist/es/context/MessageComposerContext.mjs.map +1 -0
  897. package/dist/es/context/MessageComposerControllerContext.mjs +19 -0
  898. package/dist/es/context/MessageComposerControllerContext.mjs.map +1 -0
  899. package/dist/es/context/MessageContext.mjs +14 -0
  900. package/dist/es/context/MessageContext.mjs.map +1 -0
  901. package/dist/es/context/MessageListContext.mjs +17 -0
  902. package/dist/es/context/MessageListContext.mjs.map +1 -0
  903. package/dist/es/context/MessageTranslationViewContext.mjs +73 -0
  904. package/dist/es/context/MessageTranslationViewContext.mjs.map +1 -0
  905. package/dist/es/context/ModalContext.mjs +18 -0
  906. package/dist/es/context/ModalContext.mjs.map +1 -0
  907. package/dist/es/context/PollContext.mjs +14 -0
  908. package/dist/es/context/PollContext.mjs.map +1 -0
  909. package/dist/es/context/TranslationContext.mjs +17 -0
  910. package/dist/es/context/TranslationContext.mjs.map +1 -0
  911. package/dist/es/context/VirtualizedMessageListContext.mjs +17 -0
  912. package/dist/es/context/VirtualizedMessageListContext.mjs.map +1 -0
  913. package/dist/es/context/WithComponents.mjs +23 -0
  914. package/dist/es/context/WithComponents.mjs.map +1 -0
  915. package/dist/es/context/WorkspaceNavigationContext.mjs +45 -0
  916. package/dist/es/context/WorkspaceNavigationContext.mjs.map +1 -0
  917. package/dist/es/context/requireContext.mjs +17 -0
  918. package/dist/es/context/requireContext.mjs.map +1 -0
  919. package/dist/es/context/useChannel.mjs +14 -0
  920. package/dist/es/context/useChannel.mjs.map +1 -0
  921. package/dist/es/context/useComponentContextIcons.mjs +26 -0
  922. package/dist/es/context/useComponentContextIcons.mjs.map +1 -0
  923. package/dist/es/emojis.mjs +2 -229
  924. package/dist/es/hooks/useIsDmChannel.mjs +30 -0
  925. package/dist/es/hooks/useIsDmChannel.mjs.map +1 -0
  926. package/dist/es/hooks/useMessagePaginator.mjs +14 -0
  927. package/dist/es/hooks/useMessagePaginator.mjs.map +1 -0
  928. package/dist/es/i18n/Streami18n.mjs +62 -0
  929. package/dist/es/i18n/Streami18n.mjs.map +1 -0
  930. package/dist/es/i18n/TranslationBuilder/index.mjs +3 -0
  931. package/dist/es/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.mjs +49 -0
  932. package/dist/es/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.mjs.map +1 -0
  933. package/dist/es/i18n/TranslationBuilder/notifications/translators.mjs +36 -0
  934. package/dist/es/i18n/TranslationBuilder/notifications/translators.mjs.map +1 -0
  935. package/dist/es/i18n/TranslationBuilder/notifications/translatorsByNotificationType.mjs +51 -0
  936. package/dist/es/i18n/TranslationBuilder/notifications/translatorsByNotificationType.mjs.map +1 -0
  937. package/dist/es/i18n/runtimeDefaults.mjs +41 -0
  938. package/dist/es/i18n/runtimeDefaults.mjs.map +1 -0
  939. package/dist/es/i18n/useStreami18n.mjs +41 -0
  940. package/dist/es/i18n/useStreami18n.mjs.map +1 -0
  941. package/dist/es/i18n/utils.mjs +14 -0
  942. package/dist/es/i18n/utils.mjs.map +1 -0
  943. package/dist/es/index.mjs +318 -20870
  944. package/dist/es/mp3-encoder.mjs +1 -1
  945. package/dist/es/plugins/ChannelDetail/AvatarWithChannelDetail.mjs +40 -0
  946. package/dist/es/plugins/ChannelDetail/AvatarWithChannelDetail.mjs.map +1 -0
  947. package/dist/es/plugins/ChannelDetail/ChannelDetail.mjs +105 -0
  948. package/dist/es/plugins/ChannelDetail/ChannelDetail.mjs.map +1 -0
  949. package/dist/es/plugins/ChannelDetail/ChannelDetailContext.mjs +20 -0
  950. package/dist/es/plugins/ChannelDetail/ChannelDetailContext.mjs.map +1 -0
  951. package/dist/es/plugins/ChannelDetail/ChannelDetailEmptyList.mjs +14 -0
  952. package/dist/es/plugins/ChannelDetail/ChannelDetailEmptyList.mjs.map +1 -0
  953. package/dist/es/plugins/ChannelDetail/ChannelDetailListLoadingIndicator.mjs +20 -0
  954. package/dist/es/plugins/ChannelDetail/ChannelDetailListLoadingIndicator.mjs.map +1 -0
  955. package/dist/es/plugins/ChannelDetail/ChannelDetailNavButton.mjs +26 -0
  956. package/dist/es/plugins/ChannelDetail/ChannelDetailNavButton.mjs.map +1 -0
  957. package/dist/es/plugins/ChannelDetail/ChannelDetailSearchInput.mjs +35 -0
  958. package/dist/es/plugins/ChannelDetail/ChannelDetailSearchInput.mjs.map +1 -0
  959. package/dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigator.mjs +164 -0
  960. package/dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigator.mjs.map +1 -0
  961. package/dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.mjs +49 -0
  962. package/dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.mjs.map +1 -0
  963. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.mjs +25 -0
  964. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.mjs.map +1 -0
  965. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.mjs +131 -0
  966. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.mjs.map +1 -0
  967. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.mjs +64 -0
  968. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.mjs.map +1 -0
  969. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/useChannelFilesSearch.mjs +47 -0
  970. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/useChannelFilesSearch.mjs.map +1 -0
  971. package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.defaults.mjs +568 -0
  972. package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.defaults.mjs.map +1 -0
  973. package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.mjs +324 -0
  974. package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.mjs.map +1 -0
  975. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.mjs +25 -0
  976. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.mjs.map +1 -0
  977. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.mjs +215 -0
  978. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.mjs.map +1 -0
  979. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.mjs +42 -0
  980. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.mjs.map +1 -0
  981. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/useChannelMediaSearch.mjs +47 -0
  982. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/useChannelMediaSearch.mjs.map +1 -0
  983. package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.defaults.mjs +454 -0
  984. package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.defaults.mjs.map +1 -0
  985. package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.mjs +77 -0
  986. package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.mjs.map +1 -0
  987. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.mjs +190 -0
  988. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.mjs.map +1 -0
  989. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.mjs +111 -0
  990. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.mjs.map +1 -0
  991. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.defaults.mjs +120 -0
  992. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.defaults.mjs.map +1 -0
  993. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.mjs +95 -0
  994. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.mjs.map +1 -0
  995. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.mjs +11 -0
  996. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.mjs.map +1 -0
  997. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberCount.mjs +22 -0
  998. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberCount.mjs.map +1 -0
  999. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberIds.mjs +23 -0
  1000. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberIds.mjs.map +1 -0
  1001. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMembersSearch.mjs +52 -0
  1002. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMembersSearch.mjs.map +1 -0
  1003. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.mjs +25 -0
  1004. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.mjs.map +1 -0
  1005. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.mjs +143 -0
  1006. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.mjs.map +1 -0
  1007. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.mjs +16 -0
  1008. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.mjs.map +1 -0
  1009. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesSearch.mjs +68 -0
  1010. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesSearch.mjs.map +1 -0
  1011. package/dist/es/plugins/ChannelDetail/VirtualizedList/VirtualizedList.mjs +42 -0
  1012. package/dist/es/plugins/ChannelDetail/VirtualizedList/VirtualizedList.mjs.map +1 -0
  1013. package/dist/es/plugins/Emojis/EmojiPicker.mjs +96 -0
  1014. package/dist/es/plugins/Emojis/EmojiPicker.mjs.map +1 -0
  1015. package/dist/es/plugins/Emojis/Picker.mjs +23 -0
  1016. package/dist/es/plugins/Emojis/Picker.mjs.map +1 -0
  1017. package/dist/es/plugins/Emojis/middleware/textComposerEmojiMiddleware.mjs +127 -0
  1018. package/dist/es/plugins/Emojis/middleware/textComposerEmojiMiddleware.mjs.map +1 -0
  1019. package/dist/es/plugins/SlotGeometry/SlotGeometry.mjs +141 -0
  1020. package/dist/es/plugins/SlotGeometry/SlotGeometry.mjs.map +1 -0
  1021. package/dist/es/plugins/SlotLayout/ChannelSlot.mjs +30 -0
  1022. package/dist/es/plugins/SlotLayout/ChannelSlot.mjs.map +1 -0
  1023. package/dist/es/plugins/SlotLayout/ChatView.a11y.utility.mjs +13 -0
  1024. package/dist/es/plugins/SlotLayout/ChatView.a11y.utility.mjs.map +1 -0
  1025. package/dist/es/plugins/SlotLayout/ChatView.mjs +277 -0
  1026. package/dist/es/plugins/SlotLayout/ChatView.mjs.map +1 -0
  1027. package/dist/es/plugins/SlotLayout/ChatViewNavigationContext.mjs +239 -0
  1028. package/dist/es/plugins/SlotLayout/ChatViewNavigationContext.mjs.map +1 -0
  1029. package/dist/es/plugins/SlotLayout/ThreadListSlot.mjs +42 -0
  1030. package/dist/es/plugins/SlotLayout/ThreadListSlot.mjs.map +1 -0
  1031. package/dist/es/plugins/SlotLayout/ThreadSlot.mjs +34 -0
  1032. package/dist/es/plugins/SlotLayout/ThreadSlot.mjs.map +1 -0
  1033. package/dist/es/plugins/SlotLayout/hooks/useLayoutViewState.mjs +26 -0
  1034. package/dist/es/plugins/SlotLayout/hooks/useLayoutViewState.mjs.map +1 -0
  1035. package/dist/es/plugins/SlotLayout/hooks/useSlotEntity.mjs +167 -0
  1036. package/dist/es/plugins/SlotLayout/hooks/useSlotEntity.mjs.map +1 -0
  1037. package/dist/es/plugins/SlotLayout/layout/Slot.mjs +46 -0
  1038. package/dist/es/plugins/SlotLayout/layout/Slot.mjs.map +1 -0
  1039. package/dist/es/plugins/SlotLayout/layout/WorkspaceLayout.mjs +23 -0
  1040. package/dist/es/plugins/SlotLayout/layout/WorkspaceLayout.mjs.map +1 -0
  1041. package/dist/es/plugins/SlotLayout/layoutController/LayoutController.mjs +376 -0
  1042. package/dist/es/plugins/SlotLayout/layoutController/LayoutController.mjs.map +1 -0
  1043. package/dist/es/plugins/SlotLayout/layoutController/serialization.mjs +80 -0
  1044. package/dist/es/plugins/SlotLayout/layoutController/serialization.mjs.map +1 -0
  1045. package/dist/es/plugins/SlotLayout/slotBinding.mjs +15 -0
  1046. package/dist/es/plugins/SlotLayout/slotBinding.mjs.map +1 -0
  1047. package/dist/es/plugins/SlotLayout/slotRegistry.mjs +64 -0
  1048. package/dist/es/plugins/SlotLayout/slotRegistry.mjs.map +1 -0
  1049. package/dist/es/plugins/SlotLayout/workspaceNavigationAdapter.mjs +130 -0
  1050. package/dist/es/plugins/SlotLayout/workspaceNavigationAdapter.mjs.map +1 -0
  1051. package/dist/es/slot-geometry.mjs +2 -0
  1052. package/dist/es/slot-layout.mjs +14 -0
  1053. package/dist/es/store/hooks/useStateStore.mjs +32 -0
  1054. package/dist/es/store/hooks/useStateStore.mjs.map +1 -0
  1055. package/dist/es/utils/findReverse.mjs +8 -0
  1056. package/dist/es/utils/findReverse.mjs.map +1 -0
  1057. package/dist/es/utils/getChannel.mjs +41 -0
  1058. package/dist/es/utils/getChannel.mjs.map +1 -0
  1059. package/dist/es/utils/getTextareaCaretRect.mjs +45 -0
  1060. package/dist/es/utils/getTextareaCaretRect.mjs.map +1 -0
  1061. package/dist/es/utils/getWholeChar.mjs +20 -0
  1062. package/dist/es/utils/getWholeChar.mjs.map +1 -0
  1063. package/dist/es/utils/isDmChannel.mjs +9 -0
  1064. package/dist/es/utils/isDmChannel.mjs.map +1 -0
  1065. package/dist/es/utils/mergeDeep.mjs +8 -0
  1066. package/dist/es/utils/mergeDeep.mjs.map +1 -0
  1067. package/dist/es/utils/useStableCallback.mjs +34 -0
  1068. package/dist/es/utils/useStableCallback.mjs.map +1 -0
  1069. package/dist/types/a11y/accessibleLabel.d.ts.map +1 -1
  1070. package/dist/types/components/AIStateIndicator/AIStateIndicator.d.ts.map +1 -1
  1071. package/dist/types/components/AIStateIndicator/hooks/useAIState.d.ts +3 -8
  1072. package/dist/types/components/AIStateIndicator/hooks/useAIState.d.ts.map +1 -1
  1073. package/dist/types/components/Accessibility/NotificationAnnouncer.d.ts +1 -2
  1074. package/dist/types/components/Accessibility/NotificationAnnouncer.d.ts.map +1 -1
  1075. package/dist/types/components/Accessibility/hooks/useIncomingMessageAnnouncements.d.ts.map +1 -1
  1076. package/dist/types/components/Accessibility/hooks/useInteractionAnnouncements.d.ts.map +1 -1
  1077. package/dist/types/components/Accessibility/useAriaLiveAnnouncer.d.ts +4 -0
  1078. package/dist/types/components/Accessibility/useAriaLiveAnnouncer.d.ts.map +1 -1
  1079. package/dist/types/components/Attachment/Attachment.d.ts +13 -2
  1080. package/dist/types/components/Attachment/Attachment.d.ts.map +1 -1
  1081. package/dist/types/components/Attachment/AttachmentActions.d.ts.map +1 -1
  1082. package/dist/types/components/Attachment/AttachmentContainer.d.ts +2 -2
  1083. package/dist/types/components/Attachment/AttachmentContainer.d.ts.map +1 -1
  1084. package/dist/types/components/Attachment/Audio.d.ts.map +1 -1
  1085. package/dist/types/components/Attachment/FileAttachment.d.ts.map +1 -1
  1086. package/dist/types/components/Attachment/Geolocation.d.ts +3 -3
  1087. package/dist/types/components/Attachment/Geolocation.d.ts.map +1 -1
  1088. package/dist/types/components/Attachment/Giphy.d.ts.map +1 -1
  1089. package/dist/types/components/Attachment/LinkPreview/Card.d.ts.map +1 -1
  1090. package/dist/types/components/Attachment/LinkPreview/CardAudio.d.ts +1 -1
  1091. package/dist/types/components/Attachment/LinkPreview/CardAudio.d.ts.map +1 -1
  1092. package/dist/types/components/Attachment/ModalGallery.d.ts.map +1 -1
  1093. package/dist/types/components/Attachment/UnsupportedAttachment.d.ts.map +1 -1
  1094. package/dist/types/components/Attachment/VideoAttachment.d.ts.map +1 -1
  1095. package/dist/types/components/Attachment/VisibilityDisclaimer.d.ts.map +1 -1
  1096. package/dist/types/components/Attachment/VoiceRecording.d.ts.map +1 -1
  1097. package/dist/types/components/Attachment/components/AttachmentUploadProgressIndicator.d.ts +32 -0
  1098. package/dist/types/components/Attachment/components/AttachmentUploadProgressIndicator.d.ts.map +1 -0
  1099. package/dist/types/components/Attachment/components/DownloadButton.d.ts.map +1 -1
  1100. package/dist/types/components/Attachment/components/index.d.ts +1 -0
  1101. package/dist/types/components/Attachment/components/index.d.ts.map +1 -1
  1102. package/dist/types/components/Attachment/hooks/useAttachmentUploadState.d.ts +61 -0
  1103. package/dist/types/components/Attachment/hooks/useAttachmentUploadState.d.ts.map +1 -0
  1104. package/dist/types/components/Attachment/hooks/useLocalVideoDimensions.d.ts +16 -0
  1105. package/dist/types/components/Attachment/hooks/useLocalVideoDimensions.d.ts.map +1 -0
  1106. package/dist/types/components/Attachment/index.d.ts +1 -0
  1107. package/dist/types/components/Attachment/index.d.ts.map +1 -1
  1108. package/dist/types/components/Attachment/utils.d.ts +2 -2
  1109. package/dist/types/components/Attachment/utils.d.ts.map +1 -1
  1110. package/dist/types/components/AudioPlayback/AudioPlaybackArbiter.d.ts +37 -0
  1111. package/dist/types/components/AudioPlayback/AudioPlaybackArbiter.d.ts.map +1 -0
  1112. package/dist/types/components/AudioPlayback/AudioPlayer.d.ts +1 -1
  1113. package/dist/types/components/AudioPlayback/AudioPlayer.d.ts.map +1 -1
  1114. package/dist/types/components/AudioPlayback/AudioPlayerPool.d.ts +19 -31
  1115. package/dist/types/components/AudioPlayback/AudioPlayerPool.d.ts.map +1 -1
  1116. package/dist/types/components/AudioPlayback/WithAudioPlayback.d.ts +17 -2
  1117. package/dist/types/components/AudioPlayback/WithAudioPlayback.d.ts.map +1 -1
  1118. package/dist/types/components/AudioPlayback/components/ProgressBar.d.ts.map +1 -1
  1119. package/dist/types/components/AudioPlayback/components/WaveProgressBar.d.ts.map +1 -1
  1120. package/dist/types/components/AudioPlayback/components/progressBarA11y.d.ts +2 -2
  1121. package/dist/types/components/AudioPlayback/components/progressBarA11y.d.ts.map +1 -1
  1122. package/dist/types/components/AudioPlayback/index.d.ts.map +1 -1
  1123. package/dist/types/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.d.ts +2 -2
  1124. package/dist/types/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.d.ts.map +1 -1
  1125. package/dist/types/components/Avatar/Avatar.d.ts +1 -5
  1126. package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
  1127. package/dist/types/components/Badge/Badge.d.ts.map +1 -1
  1128. package/dist/types/components/Badge/MediaBadge.d.ts.map +1 -1
  1129. package/dist/types/components/BaseImage/ImagePlaceholder.d.ts.map +1 -1
  1130. package/dist/types/components/Button/PlayButton.d.ts.map +1 -1
  1131. package/dist/types/components/Button/WorkspaceNavigationButtons.d.ts +11 -0
  1132. package/dist/types/components/Button/WorkspaceNavigationButtons.d.ts.map +1 -0
  1133. package/dist/types/components/Button/index.d.ts +1 -0
  1134. package/dist/types/components/Button/index.d.ts.map +1 -1
  1135. package/dist/types/components/Channel/Channel.d.ts +9 -57
  1136. package/dist/types/components/Channel/Channel.d.ts.map +1 -1
  1137. package/dist/types/components/Channel/hooks/useChannelCapabilities.d.ts +4 -0
  1138. package/dist/types/components/Channel/hooks/useChannelCapabilities.d.ts.map +1 -0
  1139. package/dist/types/components/Channel/index.d.ts +1 -2
  1140. package/dist/types/components/Channel/index.d.ts.map +1 -1
  1141. package/dist/types/components/ChannelHeader/ChannelHeader.d.ts +12 -0
  1142. package/dist/types/components/ChannelHeader/ChannelHeader.d.ts.map +1 -1
  1143. package/dist/types/components/ChannelHeader/hooks/useChannelHasMembersOnline.d.ts +8 -0
  1144. package/dist/types/components/ChannelHeader/hooks/useChannelHasMembersOnline.d.ts.map +1 -1
  1145. package/dist/types/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.d.ts +7 -8
  1146. package/dist/types/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.d.ts.map +1 -1
  1147. package/dist/types/components/ChannelList/ChannelList.d.ts +11 -78
  1148. package/dist/types/components/ChannelList/ChannelList.d.ts.map +1 -1
  1149. package/dist/types/components/ChannelList/ChannelListHeader.d.ts.map +1 -1
  1150. package/dist/types/components/ChannelList/ChannelLists.d.ts +10 -0
  1151. package/dist/types/components/ChannelList/ChannelLists.d.ts.map +1 -0
  1152. package/dist/types/components/ChannelList/ChannelNavigation.d.ts +9 -0
  1153. package/dist/types/components/ChannelList/ChannelNavigation.d.ts.map +1 -0
  1154. package/dist/types/components/ChannelList/hooks/index.d.ts +1 -2
  1155. package/dist/types/components/ChannelList/hooks/index.d.ts.map +1 -1
  1156. package/dist/types/components/ChannelList/hooks/useChannelMembersState.d.ts.map +1 -1
  1157. package/dist/types/components/ChannelList/hooks/useChannelMembershipState.d.ts.map +1 -1
  1158. package/dist/types/components/ChannelList/hooks/useChannelPaginatorState.d.ts +18 -0
  1159. package/dist/types/components/ChannelList/hooks/useChannelPaginatorState.d.ts.map +1 -0
  1160. package/dist/types/components/ChannelList/hooks/useSelectedChannelState.d.ts +3 -3
  1161. package/dist/types/components/ChannelList/hooks/useSelectedChannelState.d.ts.map +1 -1
  1162. package/dist/types/components/ChannelList/index.d.ts +3 -2
  1163. package/dist/types/components/ChannelList/index.d.ts.map +1 -1
  1164. package/dist/types/components/ChannelListItem/ChannelListItem.d.ts +9 -18
  1165. package/dist/types/components/ChannelListItem/ChannelListItem.d.ts.map +1 -1
  1166. package/dist/types/components/ChannelListItem/ChannelListItemActionButtons.defaults.d.ts.map +1 -1
  1167. package/dist/types/components/ChannelListItem/ChannelListItemTimestamp.d.ts +3 -3
  1168. package/dist/types/components/ChannelListItem/ChannelListItemTimestamp.d.ts.map +1 -1
  1169. package/dist/types/components/ChannelListItem/ChannelListItemUI.d.ts.map +1 -1
  1170. package/dist/types/components/ChannelListItem/hooks/useChannelDisplayName.d.ts +1 -1
  1171. package/dist/types/components/ChannelListItem/hooks/useChannelDisplayName.d.ts.map +1 -1
  1172. package/dist/types/components/ChannelListItem/hooks/useIsChannelMuted.d.ts +8 -5
  1173. package/dist/types/components/ChannelListItem/hooks/useIsChannelMuted.d.ts.map +1 -1
  1174. package/dist/types/components/ChannelListItem/hooks/useMessageDeliveryStatus.d.ts.map +1 -1
  1175. package/dist/types/components/ChannelListItem/utils.a11y.d.ts +14 -5
  1176. package/dist/types/components/ChannelListItem/utils.a11y.d.ts.map +1 -1
  1177. package/dist/types/components/ChannelListItem/utils.d.ts +1 -1
  1178. package/dist/types/components/ChannelListItem/utils.d.ts.map +1 -1
  1179. package/dist/types/components/Chat/Chat.d.ts +1 -4
  1180. package/dist/types/components/Chat/Chat.d.ts.map +1 -1
  1181. package/dist/types/components/Chat/hooks/useChat.d.ts +4 -16
  1182. package/dist/types/components/Chat/hooks/useChat.d.ts.map +1 -1
  1183. package/dist/types/components/Chat/hooks/useCreateChatClient.d.ts +2 -2
  1184. package/dist/types/components/Chat/hooks/useCreateChatClient.d.ts.map +1 -1
  1185. package/dist/types/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  1186. package/dist/types/components/Chat/hooks/useNetworkConnectionState.d.ts +34 -0
  1187. package/dist/types/components/Chat/hooks/useNetworkConnectionState.d.ts.map +1 -0
  1188. package/dist/types/components/Chat/hooks/useReportLostConnectionSystemNotification.d.ts +26 -2
  1189. package/dist/types/components/Chat/hooks/useReportLostConnectionSystemNotification.d.ts.map +1 -1
  1190. package/dist/types/components/Chat/hooks/useWSConnectionState.d.ts +22 -0
  1191. package/dist/types/components/Chat/hooks/useWSConnectionState.d.ts.map +1 -0
  1192. package/dist/types/components/Chat/index.d.ts +2 -0
  1193. package/dist/types/components/Chat/index.d.ts.map +1 -1
  1194. package/dist/types/components/Dialog/components/ContextMenu.d.ts +0 -4
  1195. package/dist/types/components/Dialog/components/ContextMenu.d.ts.map +1 -1
  1196. package/dist/types/components/Dialog/hooks/usePopoverPosition.d.ts +2 -2
  1197. package/dist/types/components/Dialog/hooks/usePopoverPosition.d.ts.map +1 -1
  1198. package/dist/types/components/Dialog/service/DialogAnchor.d.ts +8 -1
  1199. package/dist/types/components/Dialog/service/DialogAnchor.d.ts.map +1 -1
  1200. package/dist/types/components/Dialog/service/DialogManager.d.ts +1 -1
  1201. package/dist/types/components/Dialog/service/DialogManager.d.ts.map +1 -1
  1202. package/dist/types/components/EmptyStateIndicator/EmptyStateIndicator.d.ts.map +1 -1
  1203. package/dist/types/components/Form/Dropdown.d.ts +4 -1
  1204. package/dist/types/components/Form/Dropdown.d.ts.map +1 -1
  1205. package/dist/types/components/Form/NumericInput.d.ts.map +1 -1
  1206. package/dist/types/components/Gallery/GalleryContext.d.ts +5 -0
  1207. package/dist/types/components/Gallery/GalleryContext.d.ts.map +1 -1
  1208. package/dist/types/components/Gallery/GalleryHeader.d.ts.map +1 -1
  1209. package/dist/types/components/Gallery/GalleryUI.d.ts.map +1 -1
  1210. package/dist/types/components/Icons/index.d.ts +1 -1
  1211. package/dist/types/components/Icons/index.d.ts.map +1 -1
  1212. package/dist/types/components/Icons/slots.d.ts +18 -7
  1213. package/dist/types/components/Icons/slots.d.ts.map +1 -1
  1214. package/dist/types/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts +8 -2
  1215. package/dist/types/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts.map +1 -1
  1216. package/dist/types/components/InfiniteScrollPaginator/InfiniteScrollWithComponents.d.ts +43 -0
  1217. package/dist/types/components/InfiniteScrollPaginator/InfiniteScrollWithComponents.d.ts.map +1 -0
  1218. package/dist/types/components/InfiniteScrollPaginator/hooks/useCursorPaginator.d.ts +1 -1
  1219. package/dist/types/components/InfiniteScrollPaginator/hooks/useCursorPaginator.d.ts.map +1 -1
  1220. package/dist/types/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
  1221. package/dist/types/components/Loading/AttachmentUploadedSizeIndicator.d.ts +23 -0
  1222. package/dist/types/components/Loading/AttachmentUploadedSizeIndicator.d.ts.map +1 -0
  1223. package/dist/types/components/Loading/LoadingErrorIndicator.d.ts.map +1 -1
  1224. package/dist/types/components/Loading/LoadingIndicator.d.ts +2 -3
  1225. package/dist/types/components/Loading/LoadingIndicator.d.ts.map +1 -1
  1226. package/dist/types/components/Loading/UploadProgressIndicator.d.ts +7 -1
  1227. package/dist/types/components/Loading/UploadProgressIndicator.d.ts.map +1 -1
  1228. package/dist/types/components/Loading/index.d.ts +1 -0
  1229. package/dist/types/components/Loading/index.d.ts.map +1 -1
  1230. package/dist/types/components/Loading/progress-indicators.d.ts.map +1 -1
  1231. package/dist/types/components/Location/ShareLocationDialog.d.ts.map +1 -1
  1232. package/dist/types/components/Location/hooks/useLiveLocationSharingManager.d.ts.map +1 -1
  1233. package/dist/types/components/MediaRecorder/AudioRecorder/AudioRecorderRecordingControls.d.ts.map +1 -1
  1234. package/dist/types/components/MediaRecorder/AudioRecorder/AudioRecordingButtonWithNotification.d.ts.map +1 -1
  1235. package/dist/types/components/MediaRecorder/AudioRecorder/AudioRecordingPlayback.d.ts.map +1 -1
  1236. package/dist/types/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.d.ts.map +1 -1
  1237. package/dist/types/components/MediaRecorder/RecordingPermissionDeniedNotification.d.ts.map +1 -1
  1238. package/dist/types/components/MediaRecorder/classes/MediaRecorderController.d.ts.map +1 -1
  1239. package/dist/types/components/MediaRecorder/hooks/useMediaRecorder.d.ts +2 -2
  1240. package/dist/types/components/MediaRecorder/hooks/useMediaRecorder.d.ts.map +1 -1
  1241. package/dist/types/components/Message/Message.d.ts.map +1 -1
  1242. package/dist/types/components/Message/MessageAlsoSentInChannelIndicator.d.ts +11 -1
  1243. package/dist/types/components/Message/MessageAlsoSentInChannelIndicator.d.ts.map +1 -1
  1244. package/dist/types/components/Message/MessageDeletedBubble.d.ts.map +1 -1
  1245. package/dist/types/components/Message/MessageEditedIndicator.d.ts.map +1 -1
  1246. package/dist/types/components/Message/MessageRepliesCountButton.d.ts.map +1 -1
  1247. package/dist/types/components/Message/MessageStatus.d.ts.map +1 -1
  1248. package/dist/types/components/Message/MessageText.d.ts.map +1 -1
  1249. package/dist/types/components/Message/MessageTimestamp.d.ts.map +1 -1
  1250. package/dist/types/components/Message/MessageTranslationIndicator.d.ts.map +1 -1
  1251. package/dist/types/components/Message/MessageUI.d.ts.map +1 -1
  1252. package/dist/types/components/Message/ReminderNotification.d.ts.map +1 -1
  1253. package/dist/types/components/Message/StreamedMessageText.d.ts.map +1 -1
  1254. package/dist/types/components/Message/Timestamp.d.ts.map +1 -1
  1255. package/dist/types/components/Message/hooks/index.d.ts +1 -0
  1256. package/dist/types/components/Message/hooks/index.d.ts.map +1 -1
  1257. package/dist/types/components/Message/hooks/useActionHandler.d.ts +1 -1
  1258. package/dist/types/components/Message/hooks/useActionHandler.d.ts.map +1 -1
  1259. package/dist/types/components/Message/hooks/useDeleteHandler.d.ts +6 -2
  1260. package/dist/types/components/Message/hooks/useDeleteHandler.d.ts.map +1 -1
  1261. package/dist/types/components/Message/hooks/useMarkUnreadHandler.d.ts +6 -1
  1262. package/dist/types/components/Message/hooks/useMarkUnreadHandler.d.ts.map +1 -1
  1263. package/dist/types/components/Message/hooks/useMentionsHandler.d.ts.map +1 -1
  1264. package/dist/types/components/Message/hooks/useMessageAlsoSentInChannelNavigation.d.ts +22 -0
  1265. package/dist/types/components/Message/hooks/useMessageAlsoSentInChannelNavigation.d.ts.map +1 -0
  1266. package/dist/types/components/Message/hooks/useMuteHandler.d.ts +7 -2
  1267. package/dist/types/components/Message/hooks/useMuteHandler.d.ts.map +1 -1
  1268. package/dist/types/components/Message/hooks/useOpenThreadHandler.d.ts +1 -0
  1269. package/dist/types/components/Message/hooks/useOpenThreadHandler.d.ts.map +1 -1
  1270. package/dist/types/components/Message/hooks/usePinHandler.d.ts +23 -2
  1271. package/dist/types/components/Message/hooks/usePinHandler.d.ts.map +1 -1
  1272. package/dist/types/components/Message/hooks/useReactionHandler.d.ts +1 -1
  1273. package/dist/types/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  1274. package/dist/types/components/Message/hooks/useReactionsFetcher.d.ts +2 -2
  1275. package/dist/types/components/Message/hooks/useReactionsFetcher.d.ts.map +1 -1
  1276. package/dist/types/components/Message/hooks/useRetryHandler.d.ts +3 -2
  1277. package/dist/types/components/Message/hooks/useRetryHandler.d.ts.map +1 -1
  1278. package/dist/types/components/Message/hooks/useUserRole.d.ts +1 -0
  1279. package/dist/types/components/Message/hooks/useUserRole.d.ts.map +1 -1
  1280. package/dist/types/components/Message/types.d.ts +11 -20
  1281. package/dist/types/components/Message/types.d.ts.map +1 -1
  1282. package/dist/types/components/Message/utils.d.ts +7 -38
  1283. package/dist/types/components/Message/utils.d.ts.map +1 -1
  1284. package/dist/types/components/MessageActions/DeleteMessageAlert.d.ts.map +1 -1
  1285. package/dist/types/components/MessageActions/DownloadSubmenu.d.ts.map +1 -1
  1286. package/dist/types/components/MessageActions/MessageActions.d.ts +6 -2
  1287. package/dist/types/components/MessageActions/MessageActions.d.ts.map +1 -1
  1288. package/dist/types/components/MessageActions/MessageActions.defaults.d.ts.map +1 -1
  1289. package/dist/types/components/MessageActions/RemindMeSubmenu.d.ts.map +1 -1
  1290. package/dist/types/components/MessageActions/hooks/useBaseMessageActionSetFilter.d.ts.map +1 -1
  1291. package/dist/types/components/MessageBounce/MessageBouncePrompt.d.ts.map +1 -1
  1292. package/dist/types/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.d.ts.map +1 -1
  1293. package/dist/types/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.d.ts.map +1 -1
  1294. package/dist/types/components/MessageComposer/AttachmentPreviewList/GeolocationPreview.d.ts.map +1 -1
  1295. package/dist/types/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.d.ts.map +1 -1
  1296. package/dist/types/components/MessageComposer/AttachmentPreviewList/UnsupportedAttachmentPreview.d.ts.map +1 -1
  1297. package/dist/types/components/MessageComposer/AttachmentPreviewList/index.d.ts +1 -1
  1298. package/dist/types/components/MessageComposer/AttachmentPreviewList/index.d.ts.map +1 -1
  1299. package/dist/types/components/MessageComposer/AttachmentPreviewList/utils/AttachmentPreviewRoot.d.ts.map +1 -1
  1300. package/dist/types/components/MessageComposer/AttachmentSelector/AttachmentSelector.d.ts.map +1 -1
  1301. package/dist/types/components/MessageComposer/AttachmentSelector/CommandsMenu.d.ts +5 -5
  1302. package/dist/types/components/MessageComposer/AttachmentSelector/CommandsMenu.d.ts.map +1 -1
  1303. package/dist/types/components/MessageComposer/CommandChip.d.ts.map +1 -1
  1304. package/dist/types/components/MessageComposer/EditMessageForm.d.ts +1 -0
  1305. package/dist/types/components/MessageComposer/EditMessageForm.d.ts.map +1 -0
  1306. package/dist/types/components/MessageComposer/MessageComposer.d.ts +1 -17
  1307. package/dist/types/components/MessageComposer/MessageComposer.d.ts.map +1 -1
  1308. package/dist/types/components/MessageComposer/MessageComposerActions.d.ts.map +1 -1
  1309. package/dist/types/components/MessageComposer/MessageComposerUI.d.ts.map +1 -1
  1310. package/dist/types/components/MessageComposer/QuotedMessagePreview.d.ts +3 -3
  1311. package/dist/types/components/MessageComposer/QuotedMessagePreview.d.ts.map +1 -1
  1312. package/dist/types/components/MessageComposer/RemoveAttachmentPreviewButton.d.ts.map +1 -1
  1313. package/dist/types/components/MessageComposer/SendButton.d.ts.map +1 -1
  1314. package/dist/types/components/MessageComposer/SendToChannelCheckbox.d.ts.map +1 -1
  1315. package/dist/types/components/MessageComposer/StopAIGenerationButton.d.ts.map +1 -1
  1316. package/dist/types/components/MessageComposer/WithDragAndDropUpload.d.ts +2 -5
  1317. package/dist/types/components/MessageComposer/WithDragAndDropUpload.d.ts.map +1 -1
  1318. package/dist/types/components/MessageComposer/hooks/index.d.ts +1 -0
  1319. package/dist/types/components/MessageComposer/hooks/index.d.ts.map +1 -1
  1320. package/dist/types/components/MessageComposer/hooks/useAttachmentManagerState.d.ts +5 -1
  1321. package/dist/types/components/MessageComposer/hooks/useAttachmentManagerState.d.ts.map +1 -1
  1322. package/dist/types/components/MessageComposer/hooks/useAttachmentsForPreview.d.ts +1 -2
  1323. package/dist/types/components/MessageComposer/hooks/useAttachmentsForPreview.d.ts.map +1 -1
  1324. package/dist/types/components/MessageComposer/hooks/useCreateMessageComposerContext.d.ts.map +1 -1
  1325. package/dist/types/components/MessageComposer/hooks/useMessageComposerBindings.d.ts +0 -1
  1326. package/dist/types/components/MessageComposer/hooks/useMessageComposerBindings.d.ts.map +1 -1
  1327. package/dist/types/components/MessageComposer/hooks/useMessageComposerCommands.d.ts +2 -2
  1328. package/dist/types/components/MessageComposer/hooks/useMessageComposerCommands.d.ts.map +1 -1
  1329. package/dist/types/components/MessageComposer/hooks/useMessageComposerController.d.ts +1 -1
  1330. package/dist/types/components/MessageComposer/hooks/useMessageComposerController.d.ts.map +1 -1
  1331. package/dist/types/components/MessageComposer/hooks/useMessageComposerSubmitFn.d.ts +7 -0
  1332. package/dist/types/components/MessageComposer/hooks/useMessageComposerSubmitFn.d.ts.map +1 -0
  1333. package/dist/types/components/MessageComposer/hooks/utils.d.ts.map +1 -1
  1334. package/dist/types/components/MessageComposer/index.d.ts +2 -1
  1335. package/dist/types/components/MessageComposer/index.d.ts.map +1 -1
  1336. package/dist/types/components/MessageList/FloatingDateSeparator.d.ts +1 -1
  1337. package/dist/types/components/MessageList/FloatingDateSeparator.d.ts.map +1 -1
  1338. package/dist/types/components/MessageList/MessageList.d.ts +24 -25
  1339. package/dist/types/components/MessageList/MessageList.d.ts.map +1 -1
  1340. package/dist/types/components/MessageList/NewMessageNotification.d.ts.map +1 -1
  1341. package/dist/types/components/MessageList/ScrollToLatestMessageButton.d.ts +0 -1
  1342. package/dist/types/components/MessageList/ScrollToLatestMessageButton.d.ts.map +1 -1
  1343. package/dist/types/components/MessageList/UnreadMessagesNotification.d.ts +1 -4
  1344. package/dist/types/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -1
  1345. package/dist/types/components/MessageList/UnreadMessagesSeparator.d.ts.map +1 -1
  1346. package/dist/types/components/MessageList/VirtualizedMessageList.d.ts +23 -42
  1347. package/dist/types/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  1348. package/dist/types/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  1349. package/dist/types/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts +3 -3
  1350. package/dist/types/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -1
  1351. package/dist/types/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.d.ts +2 -2
  1352. package/dist/types/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.d.ts.map +1 -1
  1353. package/dist/types/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +1 -3
  1354. package/dist/types/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
  1355. package/dist/types/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts +1 -0
  1356. package/dist/types/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -1
  1357. package/dist/types/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts +6 -25
  1358. package/dist/types/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
  1359. package/dist/types/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts +1 -1
  1360. package/dist/types/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map +1 -1
  1361. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.d.ts +2 -2
  1362. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.d.ts.map +1 -1
  1363. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts +1 -1
  1364. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts.map +1 -1
  1365. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +1 -5
  1366. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts.map +1 -1
  1367. package/dist/types/components/MessageList/hooks/useCanPaginateReplies.d.ts +32 -0
  1368. package/dist/types/components/MessageList/hooks/useCanPaginateReplies.d.ts.map +1 -0
  1369. package/dist/types/components/MessageList/hooks/useLastDeliveredData.d.ts +1 -0
  1370. package/dist/types/components/MessageList/hooks/useLastDeliveredData.d.ts.map +1 -1
  1371. package/dist/types/components/MessageList/hooks/useLastReadData.d.ts +1 -0
  1372. package/dist/types/components/MessageList/hooks/useLastReadData.d.ts.map +1 -1
  1373. package/dist/types/components/MessageList/hooks/useMarkRead.d.ts +5 -9
  1374. package/dist/types/components/MessageList/hooks/useMarkRead.d.ts.map +1 -1
  1375. package/dist/types/components/MessageList/hooks/useReceiptsByMessageId.d.ts +12 -0
  1376. package/dist/types/components/MessageList/hooks/useReceiptsByMessageId.d.ts.map +1 -0
  1377. package/dist/types/components/MessageList/hooks/useThreadHead.d.ts +9 -0
  1378. package/dist/types/components/MessageList/hooks/useThreadHead.d.ts.map +1 -0
  1379. package/dist/types/components/MessageList/messageSourceKey.d.ts +14 -0
  1380. package/dist/types/components/MessageList/messageSourceKey.d.ts.map +1 -0
  1381. package/dist/types/components/MessageList/renderMessages.d.ts +11 -9
  1382. package/dist/types/components/MessageList/renderMessages.d.ts.map +1 -1
  1383. package/dist/types/components/MessageList/utils.d.ts +22 -13
  1384. package/dist/types/components/MessageList/utils.d.ts.map +1 -1
  1385. package/dist/types/components/Modal/CloseButtonOnModalOverlay.d.ts.map +1 -1
  1386. package/dist/types/components/Notifications/Notification.d.ts.map +1 -1
  1387. package/dist/types/components/Notifications/NotificationList.d.ts.map +1 -1
  1388. package/dist/types/components/Notifications/hooks/useNotificationApi.d.ts +3 -0
  1389. package/dist/types/components/Notifications/hooks/useNotificationApi.d.ts.map +1 -1
  1390. package/dist/types/components/Notifications/hooks/useNotificationTarget.d.ts.map +1 -1
  1391. package/dist/types/components/Notifications/notificationTarget.d.ts.map +1 -1
  1392. package/dist/types/components/Poll/PollActions/AddCommentPrompt.d.ts.map +1 -1
  1393. package/dist/types/components/Poll/PollActions/EndPollAlert.d.ts.map +1 -1
  1394. package/dist/types/components/Poll/PollActions/PollActions.d.ts.map +1 -1
  1395. package/dist/types/components/Poll/PollActions/PollAnswerList.d.ts.map +1 -1
  1396. package/dist/types/components/Poll/PollActions/PollOptionsFullList.d.ts.map +1 -1
  1397. package/dist/types/components/Poll/PollActions/PollQuestion.d.ts.map +1 -1
  1398. package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotes.d.ts +2 -2
  1399. package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotes.d.ts.map +1 -1
  1400. package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts +2 -2
  1401. package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts.map +1 -1
  1402. package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotesList.d.ts +2 -2
  1403. package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotesList.d.ts.map +1 -1
  1404. package/dist/types/components/Poll/PollActions/PollResults/PollResults.d.ts.map +1 -1
  1405. package/dist/types/components/Poll/PollActions/SuggestPollOptionPrompt.d.ts.map +1 -1
  1406. package/dist/types/components/Poll/PollCreationDialog/MultipleAnswersField.d.ts.map +1 -1
  1407. package/dist/types/components/Poll/PollCreationDialog/NameField.d.ts.map +1 -1
  1408. package/dist/types/components/Poll/PollCreationDialog/OptionFieldSet.d.ts.map +1 -1
  1409. package/dist/types/components/Poll/PollCreationDialog/PollCreationDialog.d.ts.map +1 -1
  1410. package/dist/types/components/Poll/PollCreationDialog/PollCreationDialogControls.d.ts.map +1 -1
  1411. package/dist/types/components/Poll/PollCreationDialog/PollOptionReorderHandle.d.ts.map +1 -1
  1412. package/dist/types/components/Poll/PollHeader.d.ts.map +1 -1
  1413. package/dist/types/components/Poll/PollOptionList.d.ts.map +1 -1
  1414. package/dist/types/components/Poll/PollOptionSelector.d.ts +2 -2
  1415. package/dist/types/components/Poll/PollOptionSelector.d.ts.map +1 -1
  1416. package/dist/types/components/Poll/PollVote.d.ts +1 -1
  1417. package/dist/types/components/Poll/PollVote.d.ts.map +1 -1
  1418. package/dist/types/components/Poll/hooks/useManagePollVotesRealtime.d.ts +2 -2
  1419. package/dist/types/components/Poll/hooks/useManagePollVotesRealtime.d.ts.map +1 -1
  1420. package/dist/types/components/Poll/hooks/usePollAnswerPagination.d.ts +2 -2
  1421. package/dist/types/components/Poll/hooks/usePollAnswerPagination.d.ts.map +1 -1
  1422. package/dist/types/components/Poll/hooks/usePollOptionVotesPagination.d.ts +2 -2
  1423. package/dist/types/components/Poll/hooks/usePollOptionVotesPagination.d.ts.map +1 -1
  1424. package/dist/types/components/Reactions/MessageReactions.d.ts.map +1 -1
  1425. package/dist/types/components/Reactions/MessageReactionsDetail.d.ts +2 -2
  1426. package/dist/types/components/Reactions/MessageReactionsDetail.d.ts.map +1 -1
  1427. package/dist/types/components/Reactions/ReactionSelector.d.ts.map +1 -1
  1428. package/dist/types/components/Reactions/ReactionSelectorWithButton.d.ts +0 -5
  1429. package/dist/types/components/Reactions/ReactionSelectorWithButton.d.ts.map +1 -1
  1430. package/dist/types/components/Reactions/hooks/useFetchReactions.d.ts +2 -2
  1431. package/dist/types/components/Reactions/hooks/useFetchReactions.d.ts.map +1 -1
  1432. package/dist/types/components/Reactions/hooks/useProcessReactions.d.ts +1 -3
  1433. package/dist/types/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
  1434. package/dist/types/components/Search/SearchBar/SearchBar.d.ts.map +1 -1
  1435. package/dist/types/components/Search/SearchContext.d.ts.map +1 -1
  1436. package/dist/types/components/Search/SearchResults/SearchResultItem.d.ts +20 -6
  1437. package/dist/types/components/Search/SearchResults/SearchResultItem.d.ts.map +1 -1
  1438. package/dist/types/components/Search/SearchResults/SearchResultsHeader.d.ts.map +1 -1
  1439. package/dist/types/components/Search/SearchResults/SearchSourceResultsEmpty.d.ts.map +1 -1
  1440. package/dist/types/components/Search/SearchResults/SearchSourceResultsLoadingIndicator.d.ts.map +1 -1
  1441. package/dist/types/components/Search/SearchSourceResultsContext.d.ts.map +1 -1
  1442. package/dist/types/components/Search/hooks/index.d.ts +0 -1
  1443. package/dist/types/components/Search/hooks/index.d.ts.map +1 -1
  1444. package/dist/types/components/SummarizedMessagePreview/SummarizedMessagePreview.d.ts +6 -0
  1445. package/dist/types/components/SummarizedMessagePreview/SummarizedMessagePreview.d.ts.map +1 -1
  1446. package/dist/types/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.d.ts.map +1 -1
  1447. package/dist/types/components/TextareaComposer/SuggestionList/CommandItem.d.ts +2 -2
  1448. package/dist/types/components/TextareaComposer/SuggestionList/CommandItem.d.ts.map +1 -1
  1449. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.d.ts.map +1 -1
  1450. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.d.ts.map +1 -1
  1451. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.d.ts.map +1 -1
  1452. package/dist/types/components/TextareaComposer/SuggestionList/SuggestionList.d.ts.map +1 -1
  1453. package/dist/types/components/TextareaComposer/TextareaComposer.d.ts.map +1 -1
  1454. package/dist/types/components/TextareaComposer/hooks/useTextareaPlaceholder.d.ts.map +1 -1
  1455. package/dist/types/components/Thread/Thread.d.ts +31 -27
  1456. package/dist/types/components/Thread/Thread.d.ts.map +1 -1
  1457. package/dist/types/components/Thread/ThreadHead.d.ts.map +1 -1
  1458. package/dist/types/components/Thread/ThreadHeader.d.ts +13 -6
  1459. package/dist/types/components/Thread/ThreadHeader.d.ts.map +1 -1
  1460. package/dist/types/components/Thread/ThreadStart.d.ts.map +1 -1
  1461. package/dist/types/components/Thread/index.d.ts +0 -1
  1462. package/dist/types/components/Thread/index.d.ts.map +1 -1
  1463. package/dist/types/components/Threads/ThreadContext.d.ts.map +1 -1
  1464. package/dist/types/components/Threads/ThreadList/ThreadList.d.ts.map +1 -1
  1465. package/dist/types/components/Threads/ThreadList/ThreadListEmptyPlaceholder.d.ts.map +1 -1
  1466. package/dist/types/components/Threads/ThreadList/ThreadListHeader.d.ts.map +1 -1
  1467. package/dist/types/components/Threads/ThreadList/ThreadListItemUI.d.ts.map +1 -1
  1468. package/dist/types/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.d.ts.map +1 -1
  1469. package/dist/types/components/Threads/ThreadList/useThreadHighlighting.d.ts +15 -0
  1470. package/dist/types/components/Threads/ThreadList/useThreadHighlighting.d.ts.map +1 -0
  1471. package/dist/types/components/Threads/ThreadList/utils.a11y.d.ts.map +1 -1
  1472. package/dist/types/components/Threads/hooks/useCloseThread.d.ts +9 -0
  1473. package/dist/types/components/Threads/hooks/useCloseThread.d.ts.map +1 -0
  1474. package/dist/types/components/Threads/index.d.ts +1 -0
  1475. package/dist/types/components/Threads/index.d.ts.map +1 -1
  1476. package/dist/types/components/TypingIndicator/TypingIndicator.d.ts +4 -5
  1477. package/dist/types/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
  1478. package/dist/types/components/TypingIndicator/TypingIndicatorHeader.d.ts +1 -1
  1479. package/dist/types/components/TypingIndicator/TypingIndicatorHeader.d.ts.map +1 -1
  1480. package/dist/types/components/TypingIndicator/hooks/useDebouncedTypingActive.d.ts +2 -2
  1481. package/dist/types/components/TypingIndicator/hooks/useDebouncedTypingActive.d.ts.map +1 -1
  1482. package/dist/types/components/TypingIndicator/utils/getTypingStatusMessage.d.ts +2 -3
  1483. package/dist/types/components/TypingIndicator/utils/getTypingStatusMessage.d.ts.map +1 -1
  1484. package/dist/types/components/VideoPlayer/ReactPlayerWrapper.d.ts +1 -1
  1485. package/dist/types/components/VideoPlayer/ReactPlayerWrapper.d.ts.map +1 -1
  1486. package/dist/types/components/VideoPlayer/VideoPlayer.d.ts +7 -1
  1487. package/dist/types/components/VideoPlayer/VideoPlayer.d.ts.map +1 -1
  1488. package/dist/types/components/VideoPlayer/VideoThumbnail.d.ts.map +1 -1
  1489. package/dist/types/components/index.d.ts +0 -2
  1490. package/dist/types/components/index.d.ts.map +1 -1
  1491. package/dist/types/context/AttachmentContext.d.ts +19 -0
  1492. package/dist/types/context/AttachmentContext.d.ts.map +1 -0
  1493. package/dist/types/context/ChannelInstanceContext.d.ts +16 -0
  1494. package/dist/types/context/ChannelInstanceContext.d.ts.map +1 -0
  1495. package/dist/types/context/ChannelListContext.d.ts +9 -18
  1496. package/dist/types/context/ChannelListContext.d.ts.map +1 -1
  1497. package/dist/types/context/ChatContext.d.ts +10 -23
  1498. package/dist/types/context/ChatContext.d.ts.map +1 -1
  1499. package/dist/types/context/ComponentContext.d.ts +30 -20
  1500. package/dist/types/context/ComponentContext.d.ts.map +1 -1
  1501. package/dist/types/context/DialogManagerContext.d.ts.map +1 -1
  1502. package/dist/types/context/MessageBounceContext.d.ts +1 -1
  1503. package/dist/types/context/MessageBounceContext.d.ts.map +1 -1
  1504. package/dist/types/context/MessageComposerContext.d.ts +7 -2
  1505. package/dist/types/context/MessageComposerContext.d.ts.map +1 -1
  1506. package/dist/types/context/MessageComposerControllerContext.d.ts +13 -0
  1507. package/dist/types/context/MessageComposerControllerContext.d.ts.map +1 -0
  1508. package/dist/types/context/MessageContext.d.ts +8 -21
  1509. package/dist/types/context/MessageContext.d.ts.map +1 -1
  1510. package/dist/types/context/MessageListContext.d.ts +2 -2
  1511. package/dist/types/context/MessageListContext.d.ts.map +1 -1
  1512. package/dist/types/context/MessageTranslationViewContext.d.ts.map +1 -1
  1513. package/dist/types/context/ModalContext.d.ts +4 -0
  1514. package/dist/types/context/ModalContext.d.ts.map +1 -1
  1515. package/dist/types/context/PollContext.d.ts.map +1 -1
  1516. package/dist/types/context/TranslationContext.d.ts +21 -11
  1517. package/dist/types/context/TranslationContext.d.ts.map +1 -1
  1518. package/dist/types/context/VirtualizedMessageListContext.d.ts.map +1 -1
  1519. package/dist/types/context/WithComponents.d.ts.map +1 -1
  1520. package/dist/types/context/WorkspaceNavigationContext.d.ts +128 -0
  1521. package/dist/types/context/WorkspaceNavigationContext.d.ts.map +1 -0
  1522. package/dist/types/context/index.d.ts +6 -4
  1523. package/dist/types/context/index.d.ts.map +1 -1
  1524. package/dist/types/context/requireContext.d.ts +10 -0
  1525. package/dist/types/context/requireContext.d.ts.map +1 -0
  1526. package/dist/types/context/useChannel.d.ts +3 -0
  1527. package/dist/types/context/useChannel.d.ts.map +1 -0
  1528. package/dist/types/context/useComponentContextIcons.d.ts +4 -6
  1529. package/dist/types/context/useComponentContextIcons.d.ts.map +1 -1
  1530. package/dist/types/hooks/index.d.ts +3 -0
  1531. package/dist/types/hooks/index.d.ts.map +1 -0
  1532. package/dist/types/hooks/useIsDmChannel.d.ts +13 -0
  1533. package/dist/types/hooks/useIsDmChannel.d.ts.map +1 -0
  1534. package/dist/types/hooks/useMessagePaginator.d.ts +6 -0
  1535. package/dist/types/hooks/useMessagePaginator.d.ts.map +1 -0
  1536. package/dist/types/i18n/Streami18n.d.ts +48 -847
  1537. package/dist/types/i18n/Streami18n.d.ts.map +1 -1
  1538. package/dist/types/i18n/TranslationBuilder/index.d.ts +6 -1
  1539. package/dist/types/i18n/TranslationBuilder/index.d.ts.map +1 -1
  1540. package/dist/types/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.d.ts.map +1 -1
  1541. package/dist/types/i18n/TranslationBuilder/notifications/translators.d.ts.map +1 -1
  1542. package/dist/types/i18n/TranslationBuilder/notifications/translatorsByNotificationType.d.ts +3 -1
  1543. package/dist/types/i18n/TranslationBuilder/notifications/translatorsByNotificationType.d.ts.map +1 -1
  1544. package/dist/types/i18n/index.d.ts +2 -2
  1545. package/dist/types/i18n/index.d.ts.map +1 -1
  1546. package/dist/types/i18n/keys.d.ts +583 -0
  1547. package/dist/types/i18n/keys.d.ts.map +1 -0
  1548. package/dist/types/i18n/runtimeDefaults.d.ts +37 -0
  1549. package/dist/types/i18n/runtimeDefaults.d.ts.map +1 -0
  1550. package/dist/types/i18n/types.d.ts +34 -104
  1551. package/dist/types/i18n/types.d.ts.map +1 -1
  1552. package/dist/types/i18n/useStreami18n.d.ts +19 -0
  1553. package/dist/types/i18n/useStreami18n.d.ts.map +1 -0
  1554. package/dist/types/i18n/utils.d.ts +18 -14
  1555. package/dist/types/i18n/utils.d.ts.map +1 -1
  1556. package/dist/types/plugins/ChannelDetail/AvatarWithChannelDetail.d.ts.map +1 -1
  1557. package/dist/types/plugins/ChannelDetail/ChannelDetail.d.ts.map +1 -1
  1558. package/dist/types/plugins/ChannelDetail/ChannelDetailEmptyList.d.ts.map +1 -1
  1559. package/dist/types/plugins/ChannelDetail/ChannelDetailSearchInput.d.ts.map +1 -1
  1560. package/dist/types/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.d.ts.map +1 -1
  1561. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.d.ts.map +1 -1
  1562. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.d.ts.map +1 -1
  1563. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.d.ts.map +1 -1
  1564. package/dist/types/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.defaults.d.ts.map +1 -1
  1565. package/dist/types/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.d.ts.map +1 -1
  1566. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.d.ts.map +1 -1
  1567. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.d.ts.map +1 -1
  1568. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.d.ts.map +1 -1
  1569. package/dist/types/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.defaults.d.ts.map +1 -1
  1570. package/dist/types/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.d.ts.map +1 -1
  1571. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.d.ts.map +1 -1
  1572. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.d.ts.map +1 -1
  1573. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.defaults.d.ts.map +1 -1
  1574. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.d.ts.map +1 -1
  1575. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.d.ts.map +1 -1
  1576. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.d.ts.map +1 -1
  1577. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.d.ts.map +1 -1
  1578. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.d.ts +5 -1
  1579. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.d.ts.map +1 -1
  1580. package/dist/types/plugins/Emojis/EmojiPicker.d.ts +0 -4
  1581. package/dist/types/plugins/Emojis/EmojiPicker.d.ts.map +1 -1
  1582. package/dist/types/plugins/SlotGeometry/SlotGeometry.d.ts +72 -0
  1583. package/dist/types/plugins/SlotGeometry/SlotGeometry.d.ts.map +1 -0
  1584. package/dist/types/plugins/SlotGeometry/index.d.ts +3 -0
  1585. package/dist/types/plugins/SlotGeometry/index.d.ts.map +1 -0
  1586. package/dist/types/plugins/SlotLayout/ChannelSlot.d.ts +24 -0
  1587. package/dist/types/plugins/SlotLayout/ChannelSlot.d.ts.map +1 -0
  1588. package/dist/types/plugins/SlotLayout/ChatView.a11y.utility.d.ts.map +1 -0
  1589. package/dist/types/plugins/SlotLayout/ChatView.d.ts +113 -0
  1590. package/dist/types/plugins/SlotLayout/ChatView.d.ts.map +1 -0
  1591. package/dist/types/plugins/SlotLayout/ChatViewNavigationContext.d.ts +111 -0
  1592. package/dist/types/plugins/SlotLayout/ChatViewNavigationContext.d.ts.map +1 -0
  1593. package/dist/types/plugins/SlotLayout/ThreadListSlot.d.ts +8 -0
  1594. package/dist/types/plugins/SlotLayout/ThreadListSlot.d.ts.map +1 -0
  1595. package/dist/types/plugins/SlotLayout/ThreadSlot.d.ts +10 -0
  1596. package/dist/types/plugins/SlotLayout/ThreadSlot.d.ts.map +1 -0
  1597. package/dist/types/plugins/SlotLayout/hooks/index.d.ts +3 -0
  1598. package/dist/types/plugins/SlotLayout/hooks/index.d.ts.map +1 -0
  1599. package/dist/types/plugins/SlotLayout/hooks/useLayoutViewState.d.ts +5 -0
  1600. package/dist/types/plugins/SlotLayout/hooks/useLayoutViewState.d.ts.map +1 -0
  1601. package/dist/types/plugins/SlotLayout/hooks/useSlotEntity.d.ts +162 -0
  1602. package/dist/types/plugins/SlotLayout/hooks/useSlotEntity.d.ts.map +1 -0
  1603. package/dist/types/plugins/SlotLayout/index.d.ts +12 -0
  1604. package/dist/types/plugins/SlotLayout/index.d.ts.map +1 -0
  1605. package/dist/types/plugins/SlotLayout/layout/Slot.d.ts +8 -0
  1606. package/dist/types/plugins/SlotLayout/layout/Slot.d.ts.map +1 -0
  1607. package/dist/types/plugins/SlotLayout/layout/WorkspaceLayout.d.ts +11 -0
  1608. package/dist/types/plugins/SlotLayout/layout/WorkspaceLayout.d.ts.map +1 -0
  1609. package/dist/types/plugins/SlotLayout/layoutController/LayoutController.d.ts +25 -0
  1610. package/dist/types/plugins/SlotLayout/layoutController/LayoutController.d.ts.map +1 -0
  1611. package/dist/types/plugins/SlotLayout/layoutController/layoutControllerTypes.d.ts +121 -0
  1612. package/dist/types/plugins/SlotLayout/layoutController/layoutControllerTypes.d.ts.map +1 -0
  1613. package/dist/types/plugins/SlotLayout/layoutController/serialization.d.ts +6 -0
  1614. package/dist/types/plugins/SlotLayout/layoutController/serialization.d.ts.map +1 -0
  1615. package/dist/types/plugins/SlotLayout/slotBinding.d.ts +85 -0
  1616. package/dist/types/plugins/SlotLayout/slotBinding.d.ts.map +1 -0
  1617. package/dist/types/plugins/SlotLayout/slotRegistry.d.ts +60 -0
  1618. package/dist/types/plugins/SlotLayout/slotRegistry.d.ts.map +1 -0
  1619. package/dist/types/plugins/SlotLayout/workspaceNavigationAdapter.d.ts +26 -0
  1620. package/dist/types/plugins/SlotLayout/workspaceNavigationAdapter.d.ts.map +1 -0
  1621. package/dist/types/store/hooks/useStateStore.d.ts +1 -1
  1622. package/dist/types/store/hooks/useStateStore.d.ts.map +1 -1
  1623. package/dist/types/types/index.d.ts +0 -1
  1624. package/dist/types/types/index.d.ts.map +1 -1
  1625. package/dist/types/types/types.d.ts +0 -10
  1626. package/dist/types/types/types.d.ts.map +1 -1
  1627. package/dist/types/utils/getChannel.d.ts +2 -2
  1628. package/dist/types/utils/getChannel.d.ts.map +1 -1
  1629. package/dist/types/utils/useStableCallback.d.ts +1 -1
  1630. package/package.json +34 -20
  1631. package/dist/cjs/NotificationList.6abbee1c.js +0 -9459
  1632. package/dist/cjs/NotificationList.6abbee1c.js.map +0 -1
  1633. package/dist/cjs/useChannelHeaderOnlineStatus.7e17671e.js +0 -961
  1634. package/dist/cjs/useChannelHeaderOnlineStatus.7e17671e.js.map +0 -1
  1635. package/dist/cjs/useInertWhenHidden.22151beb.js +0 -6426
  1636. package/dist/cjs/useInertWhenHidden.22151beb.js.map +0 -1
  1637. package/dist/es/NotificationList.db01a56d.mjs +0 -7703
  1638. package/dist/es/NotificationList.db01a56d.mjs.map +0 -1
  1639. package/dist/es/ReactPlayerWrapper.d2ae5941.mjs.map +0 -1
  1640. package/dist/es/audioProcessing.766ca76c.mjs.map +0 -1
  1641. package/dist/es/channel-detail.mjs.map +0 -1
  1642. package/dist/es/emojis.mjs.map +0 -1
  1643. package/dist/es/index.mjs.map +0 -1
  1644. package/dist/es/useChannelHeaderOnlineStatus.a9357343.mjs +0 -771
  1645. package/dist/es/useChannelHeaderOnlineStatus.a9357343.mjs.map +0 -1
  1646. package/dist/es/useInertWhenHidden.3d5fbdba.mjs +0 -5765
  1647. package/dist/es/useInertWhenHidden.3d5fbdba.mjs.map +0 -1
  1648. package/dist/types/components/Channel/channelState.d.ts +0 -90
  1649. package/dist/types/components/Channel/channelState.d.ts.map +0 -1
  1650. package/dist/types/components/Channel/hooks/useCreateChannelStateContext.d.ts +0 -6
  1651. package/dist/types/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +0 -1
  1652. package/dist/types/components/Channel/hooks/useCreateTypingContext.d.ts +0 -3
  1653. package/dist/types/components/Channel/hooks/useCreateTypingContext.d.ts.map +0 -1
  1654. package/dist/types/components/Channel/hooks/useEditMessageHandler.d.ts +0 -5
  1655. package/dist/types/components/Channel/hooks/useEditMessageHandler.d.ts.map +0 -1
  1656. package/dist/types/components/Channel/hooks/useMentionsHandlers.d.ts +0 -10
  1657. package/dist/types/components/Channel/hooks/useMentionsHandlers.d.ts.map +0 -1
  1658. package/dist/types/components/Channel/utils.d.ts +0 -33
  1659. package/dist/types/components/Channel/utils.d.ts.map +0 -1
  1660. package/dist/types/components/ChannelList/ChannelListUI.d.ts +0 -18
  1661. package/dist/types/components/ChannelList/ChannelListUI.d.ts.map +0 -1
  1662. package/dist/types/components/ChannelList/hooks/useChannelListShape.d.ts +0 -61
  1663. package/dist/types/components/ChannelList/hooks/useChannelListShape.d.ts.map +0 -1
  1664. package/dist/types/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts +0 -2
  1665. package/dist/types/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +0 -1
  1666. package/dist/types/components/ChannelList/hooks/usePaginatedChannels.d.ts +0 -29
  1667. package/dist/types/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +0 -1
  1668. package/dist/types/components/ChannelList/utils.d.ts +0 -46
  1669. package/dist/types/components/ChannelList/utils.d.ts.map +0 -1
  1670. package/dist/types/components/Chat/hooks/useChannelsQueryState.d.ts +0 -12
  1671. package/dist/types/components/Chat/hooks/useChannelsQueryState.d.ts.map +0 -1
  1672. package/dist/types/components/ChatView/ChatView.a11y.utility.d.ts.map +0 -1
  1673. package/dist/types/components/ChatView/ChatView.d.ts +0 -59
  1674. package/dist/types/components/ChatView/ChatView.d.ts.map +0 -1
  1675. package/dist/types/components/ChatView/index.d.ts +0 -2
  1676. package/dist/types/components/ChatView/index.d.ts.map +0 -1
  1677. package/dist/types/components/MessageComposer/AttachmentPreviewList/AttachmentUploadedSizeIndicator.d.ts +0 -14
  1678. package/dist/types/components/MessageComposer/AttachmentPreviewList/AttachmentUploadedSizeIndicator.d.ts.map +0 -1
  1679. package/dist/types/components/MessageComposer/hooks/useSubmitHandler.d.ts +0 -5
  1680. package/dist/types/components/MessageComposer/hooks/useSubmitHandler.d.ts.map +0 -1
  1681. package/dist/types/components/Search/hooks/useSearchFocusedMessage.d.ts +0 -2
  1682. package/dist/types/components/Search/hooks/useSearchFocusedMessage.d.ts.map +0 -1
  1683. package/dist/types/components/Thread/LegacyThreadContext.d.ts +0 -9
  1684. package/dist/types/components/Thread/LegacyThreadContext.d.ts.map +0 -1
  1685. package/dist/types/components/Window/Window.d.ts +0 -13
  1686. package/dist/types/components/Window/Window.d.ts.map +0 -1
  1687. package/dist/types/components/Window/index.d.ts +0 -2
  1688. package/dist/types/components/Window/index.d.ts.map +0 -1
  1689. package/dist/types/context/ChannelActionContext.d.ts +0 -46
  1690. package/dist/types/context/ChannelActionContext.d.ts.map +0 -1
  1691. package/dist/types/context/ChannelStateContext.d.ts +0 -51
  1692. package/dist/types/context/ChannelStateContext.d.ts.map +0 -1
  1693. package/dist/types/context/TypingContext.d.ts +0 -12
  1694. package/dist/types/context/TypingContext.d.ts.map +0 -1
  1695. package/dist/types/i18n/TranslationBuilder/TranslationBuilder.d.ts +0 -36
  1696. package/dist/types/i18n/TranslationBuilder/TranslationBuilder.d.ts.map +0 -1
  1697. package/dist/types/i18n/translations.d.ts +0 -14
  1698. package/dist/types/i18n/translations.d.ts.map +0 -1
  1699. package/dist/types/utils/getChannelConfig.d.ts +0 -8
  1700. package/dist/types/utils/getChannelConfig.d.ts.map +0 -1
  1701. /package/dist/types/{components/ChatView → plugins/SlotLayout}/ChatView.a11y.utility.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlotLayout.de45be2d.js","names":[],"sources":["../../src/components/Threads/UnreadCountBadge.tsx","../../src/plugins/SlotLayout/ChatView.a11y.utility.ts","../../src/plugins/SlotLayout/slotRegistry.tsx","../../src/plugins/SlotLayout/hooks/useLayoutViewState.ts","../../src/plugins/SlotLayout/ChatViewNavigationContext.tsx","../../src/plugins/SlotLayout/workspaceNavigationAdapter.tsx","../../src/plugins/SlotLayout/slotBinding.ts","../../src/plugins/SlotLayout/layout/Slot.tsx","../../src/plugins/SlotLayout/layout/WorkspaceLayout.tsx","../../src/plugins/SlotLayout/layoutController/LayoutController.ts","../../src/plugins/SlotLayout/hooks/useSlotEntity.ts","../../src/plugins/SlotLayout/ChatView.tsx","../../src/plugins/SlotLayout/layoutController/serialization.ts","../../src/plugins/SlotLayout/ChannelSlot.tsx","../../src/plugins/SlotLayout/ThreadSlot.tsx","../../src/plugins/SlotLayout/ThreadListSlot.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport React from 'react';\nimport type { PropsWithChildren } from 'react';\n\nexport const UnreadCountBadge = ({\n children,\n count,\n position,\n}: PropsWithChildren<{\n count: number;\n position?: 'top-right' | 'bottom-right' | 'bottom-left' | 'top-left';\n}>) => (\n // The wrapper stays in the a11y tree so arbitrary `children` remain exposed. Only the numeric\n // badge is hidden: it duplicates a count the consumer must already convey via an accessible name\n // (e.g. the threads selector button's aria-label includes the unread count), so exposing it would\n // announce the number twice.\n <div className='str-chat__unread-count-badge-container'>\n {children}\n {count > 0 && (\n <div\n aria-hidden='true'\n className={clsx(\n 'str-chat__unread-count-badge',\n position && `str-chat__unread-count-badge--${position}`,\n )}\n >\n {count}\n </div>\n )}\n </div>\n);\n","/**\n * ChatView is a top-level view switcher between two parallel, independent\n * surfaces (channels and threads). It is NOT a WAI-ARIA Tabs widget: each view\n * owns its own composer and message list and is not a panel of a single\n * composite widget. The selector is a navigation landmark (role=\"navigation\")\n * whose buttons mark the active surface via aria-current=\"true\" (generic\n * \"current item\"; not \"page\", since the SDK may be embedded in a larger host UI).\n *\n * The helper generates stable per-instance DOM ids for the view containers so\n * integrators (skip-links, programmatic focus) have predictable hooks even\n * when multiple ChatViews coexist.\n */\nexport type ChatViewA11yContextValue = {\n chatViewPanelIds: Record<'channels' | 'threads', string>;\n};\n\nexport const DEFAULT_CHAT_VIEW_A11Y_CONTEXT_VALUE: ChatViewA11yContextValue = {\n chatViewPanelIds: {\n channels: 'str-chat__chat-view-panel-channels',\n threads: 'str-chat__chat-view-panel-threads',\n },\n};\n\nexport const createChatViewA11yContextValue = (\n chatViewId: string,\n): ChatViewA11yContextValue => ({\n chatViewPanelIds: {\n channels: `str-chat__chat-view-${chatViewId}-panel-channels`,\n threads: `str-chat__chat-view-${chatViewId}-panel-threads`,\n },\n});\n","// Renderer registry: the single home for per-kind slot policy.\n// Each registered `kind` declares how it renders (`Component`) plus the policy\n// the navigation layer reads — `persistent` (nav-rail lists that `hide` rather\n// than `close`) and `view` (which ChatView a freshly-opened kind belongs to).\n//\n// `Component`, `persistent`, and `view` are all consumed by later steps:\n// - `Component` here in step 5 (generic <Slot> self-lookup);\n// - `persistent` in step 7 (replaces the interim `isListEntityKind` set);\n// - `view` in step 6 (kind -> view coupling for the generic `open`).\n\nimport React, { createContext, useContext } from 'react';\n\nimport { ChannelNavigation } from '../../components/ChannelList';\nimport { ThreadList } from '../../components/Threads/ThreadList';\n\nimport type { ReactNode } from 'react';\nimport type { ChatView } from './ChatView';\nimport type {\n ChatViewEntityBinding,\n ChatViewEntityKind,\n ChatViewSlotRendererProps,\n ChatViewSlotRenderers,\n} from './slotBinding';\n\nexport type SlotKindDefinition<TKind extends ChatViewEntityKind> = {\n /**\n * Pure renderer for this kind — no slot claiming, no layout-state reads.\n * Optional: a kind may declare only policy (`view`/`persistent`) and leave the\n * renderer to the app's `slotRenderers` prop (e.g. `channel`/`thread`).\n */\n Component?: (props: ChatViewSlotRendererProps<TKind>) => ReactNode;\n /**\n * Persistent kinds (nav-rail lists) are `hide`/`unhide`-only: the resolver\n * never overwrites them and `close` does not apply. Transient kinds\n * (channel/thread/profile) are `close`-able and may be replaced. Consumed by\n * step 7.\n */\n persistent?: boolean;\n /** ChatView this kind belongs to; consumed by the generic `open` in step 6. */\n view?: ChatView;\n};\n\nexport type SlotKindRegistry = Partial<{\n [TKind in ChatViewEntityKind]: SlotKindDefinition<TKind>;\n}>;\n\n/** Minimal built-in renderer for the `userProfile` demo kind — proves the\n * registry can render arbitrary UI in a slot, not just channel/thread/list. */\nconst SlotUserProfile = ({ userId }: { userId: string }) => (\n <div className='str-chat__chat-view__slot-user-profile' data-user-id={userId}>\n {userId}\n </div>\n);\n\nexport const defaultSlotKindRegistry: SlotKindRegistry = {\n // `channel`/`thread` declare only policy; their renderer is app-supplied via\n // the `slotRenderers` prop (folded in by `resolveSlotKindRegistry`).\n channel: { view: 'channels' },\n channelList: {\n Component: () => <ChannelNavigation />,\n persistent: true,\n },\n threadList: {\n Component: () => <ThreadList />,\n persistent: true,\n },\n userProfile: {\n Component: ({ source }) => <SlotUserProfile userId={source.userId} />,\n },\n};\n\n/** Fold the app's `slotRenderers` prop into a registry, overriding only each\n * kind's `Component` while preserving the built-in policy (`persistent`/`view`). */\nexport const resolveSlotKindRegistry = (\n slotRenderers?: ChatViewSlotRenderers,\n base: SlotKindRegistry = defaultSlotKindRegistry,\n): SlotKindRegistry => {\n if (!slotRenderers) return base;\n const merged: SlotKindRegistry = { ...base };\n (Object.keys(slotRenderers) as ChatViewEntityKind[]).forEach((kind) => {\n const Component = slotRenderers[kind];\n if (!Component) return;\n // Correlated-union assignment across a keyed record is not expressible to\n // TS here; the key/value kinds are guaranteed to match by construction.\n (merged as Record<string, SlotKindDefinition<ChatViewEntityKind>>)[kind] = {\n ...(base[kind] as SlotKindDefinition<ChatViewEntityKind> | undefined),\n Component: Component as SlotKindDefinition<ChatViewEntityKind>['Component'],\n };\n });\n return merged;\n};\n\n/**\n * State-aware dispatch for a slot's current binding. Looks up the bound kind in\n * the registry and renders its pure `Component`; unknown/unregistered kinds and\n * empty slots render nothing (the caller supplies a fallback).\n */\nexport const renderSlotFromRegistry = (\n entity: ChatViewEntityBinding | undefined,\n slot: string,\n registry: SlotKindRegistry,\n): ReactNode | null => {\n if (!entity) return null;\n const definition = registry[entity.kind];\n if (!definition?.Component) return null;\n const Component = definition.Component as (props: {\n entity: ChatViewEntityBinding;\n slot: string;\n source: ChatViewEntityBinding['source'];\n }) => ReactNode;\n return Component({ entity, slot, source: entity.source });\n};\n\n/** Per-kind policy readers used by the navigation layer (D6). */\nexport const isPersistentSlotKind = (\n registry: SlotKindRegistry,\n kind?: ChatViewEntityKind,\n): boolean => !!kind && !!registry[kind]?.persistent;\n\nexport const resolveSlotKindView = (\n registry: SlotKindRegistry,\n kind: ChatViewEntityKind,\n): ChatView | undefined => registry[kind]?.view;\n\nexport const SlotRegistryContext = createContext<SlotKindRegistry>(\n defaultSlotKindRegistry,\n);\n\nexport const useSlotRegistry = () => useContext(SlotRegistryContext);\n","import { useMemo } from 'react';\n\nimport { useStateStore } from '../../../store';\nimport type { ChatView } from '../ChatView';\nimport { useChatViewContext } from '../ChatView';\nimport type {\n ChatViewLayoutState,\n ChatViewLayoutViewState,\n} from '../layoutController/layoutControllerTypes';\n\nexport const getLayoutViewState = (\n state: ChatViewLayoutState,\n view = state.activeView,\n): ChatViewLayoutViewState => {\n const layout = state.layouts?.[view];\n return {\n availableSlots: [...(layout?.availableSlots ?? [])],\n hiddenSlots: { ...(layout?.hiddenSlots ?? {}) },\n slotBindings: { ...(layout?.slotBindings ?? {}) },\n slotForwardHistory: { ...(layout?.slotForwardHistory ?? {}) },\n slotHistory: { ...(layout?.slotHistory ?? {}) },\n slotLayers: { ...(layout?.slotLayers ?? {}) },\n slotMeta: { ...(layout?.slotMeta ?? {}) },\n slotNames: layout?.slotNames ? [...layout.slotNames] : undefined,\n };\n};\nexport const useLayoutViewState = (view?: ChatView) => {\n const { layoutController } = useChatViewContext();\n const selector = useMemo(\n () => (state: Parameters<typeof getLayoutViewState>[0]) =>\n getLayoutViewState(state, view ?? state.activeView),\n [view],\n );\n\n return (\n useStateStore(layoutController.state, selector) ??\n selector(layoutController.state.getLatestValue())\n );\n};\n","import React, { createContext, useContext, useMemo } from 'react';\n\nimport { useStateStore } from '../../store';\nimport {\n createChatViewSlotBinding,\n getChatViewEntityBinding,\n useChatViewContext,\n} from './ChatView';\nimport {\n isPersistentSlotKind,\n resolveSlotKindView,\n useSlotRegistry,\n} from './slotRegistry';\n\nimport type { PropsWithChildren } from 'react';\nimport type {\n LocalMessage,\n Channel as StreamChannel,\n StreamChat,\n Thread as StreamThread,\n} from 'stream-chat';\nimport { Thread as StreamThreadClass } from 'stream-chat';\nimport type {\n ChatView,\n ChatViewEntityBinding,\n ResolveViewActionTargetSlotArgs,\n} from './ChatView';\nimport { getLayoutViewState, useLayoutViewState } from './hooks/useLayoutViewState';\nimport type {\n ChatViewLayoutState,\n ChatViewLayoutViewState,\n LayoutSlotBinding,\n OpenResult,\n SlotName,\n} from './layoutController/layoutControllerTypes';\n\ntype ViewSlotRuntime = {\n activeViewState: ChatViewLayoutViewState;\n availableSlots: SlotName[];\n orderedSlots: SlotName[];\n slotBindings: Record<SlotName, LayoutSlotBinding | undefined>;\n slotLayers: Record<SlotName, LayoutSlotBinding[] | undefined>;\n};\n\n// D6 — the resolver is kind-driven and persistent-aware (via the registry), not\n// keyed on a fixed set of actions or a hardcoded list-kind set. Precedence:\n// reuse a same-kind slot -> first free non-persistent -> first free -> first\n// non-persistent. Persistent (list) slots are never an implicit target and there\n// is deliberately no \"last slot\" fallback, so when only persistent slots remain\n// the resolver returns undefined and `openInLayout` rejects rather than\n// destroying a list.\nconst resolveDefaultTargetSlot = ({\n additive,\n isPersistentSlot,\n kind,\n requestedSlot,\n runtime,\n}: {\n additive?: boolean;\n isPersistentSlot: (slot: SlotName) => boolean;\n kind: ChatViewEntityBinding['kind'];\n requestedSlot?: SlotName;\n runtime: ViewSlotRuntime;\n}): SlotName | undefined => {\n if (requestedSlot && runtime.availableSlots.includes(requestedSlot)) {\n return requestedSlot;\n }\n\n const readSlotKind = (slot: SlotName) =>\n getChatViewEntityBinding(runtime.slotBindings[slot])?.kind;\n // A slot is \"free\" only when it has neither a base binding NOR a covering layer stack — binding\n // into the base beneath a layer would render invisibly, so a layered slot counts as occupied.\n const isFree = (slot: SlotName) =>\n !runtime.slotBindings[slot] && !runtime.slotLayers[slot]?.length;\n const sameKind = runtime.availableSlots.find((slot) => readSlotKind(slot) === kind);\n const firstFreeNonPersistent = runtime.availableSlots.find(\n (slot) => isFree(slot) && !isPersistentSlot(slot),\n );\n const firstFree = runtime.availableSlots.find((slot) => isFree(slot));\n // When every slot is occupied, evict the LAST non-persistent slot rather than the first.\n // Slots run primary -> secondary, so the first slot holds the anchor content (e.g. the main\n // channel); a newly-opened panel — a reply thread opened while a 2nd channel occupies the\n // secondary slot, say — should replace the most-recent secondary panel, never make the\n // primary disappear.\n const lastNonPersistent = [...runtime.availableSlots]\n .reverse()\n .find((slot) => !isPersistentSlot(slot));\n\n // `additive` opens *beside* existing content (ctrl/⌘-click): skip the same-kind slot, which\n // would replace the current primary, and prefer a free/secondary slot instead. In a\n // single-slot layout it falls through to that slot, so it degrades to a normal open.\n if (additive) {\n return firstFreeNonPersistent ?? firstFree ?? lastNonPersistent;\n }\n\n return sameKind ?? firstFreeNonPersistent ?? firstFree ?? lastNonPersistent;\n};\n\nexport type OpenThreadTarget =\n | StreamThread\n | { channel: StreamChannel; message: LocalMessage };\n\n/**\n * Binding builder for the `thread` kind (D6). The `{ channel, message }` ->\n * `Thread` construction (with dedupe against `client.threads`) lives here so\n * callers can drive the generic `open` with a ready binding instead of a\n * thread-specific navigation method.\n */\nexport const createThreadEntityBinding = (\n client: StreamChat,\n target: { channel: StreamChannel; message: LocalMessage },\n): ChatViewEntityBinding => {\n const existingThread = client.threads.threadsById[target.message.id];\n const thread =\n existingThread ??\n new StreamThreadClass({\n channel: target.channel,\n client,\n parentMessage: target.message,\n });\n return { key: thread.id ?? undefined, kind: 'thread', source: thread };\n};\n\n/** Options for {@link ChatViewNavigation.open}. */\nexport type ChatViewOpenOptions = {\n /**\n * Open *beside* existing content instead of replacing it.\n *\n * By default `open` reuses the slot that already holds the binding's `kind` (so selecting a\n * channel replaces the current channel). With `additive: true` the resolver skips that\n * same-kind slot and instead targets the first free non-persistent slot — falling back to the\n * last non-persistent slot when every slot is occupied. The effect is that the entity opens in\n * a *secondary* slot next to the current one (e.g. ctrl/⌘-click a channel to open a 2nd channel\n * side-by-side, or a search result beside the open channel).\n *\n * In a single-slot layout there is no secondary slot to open into, so it falls back to that\n * one slot and behaves like a normal open. Ignored when an explicit `slot` is provided.\n *\n * @default false\n */\n additive?: boolean;\n /**\n * Open non-destructively: push the binding as a **layer** on top of the resolved target slot's\n * current content instead of replacing it, and skip dependent-slot invalidation (nothing is\n * being replaced). `close`/`popLayer` on that slot later restores what was underneath, at its\n * exact state. Compose with `additive` to target the *secondary* slot — e.g.\n * `open(channel, { additive: true, layer: true })` stacks a channel over an open reply thread\n * without closing it. Orthogonal to slot resolution: `layer` chooses stack-vs-replace, while\n * `slot`/`additive` choose *which* slot.\n *\n * @default false\n */\n layer?: boolean;\n /**\n * Bind into this specific slot, when it exists in the target view's layout. Takes precedence\n * over `additive` and over the default kind-based slot resolution. Ignored (falls back to the\n * default resolution) when the named slot is not part of the active layout.\n */\n slot?: SlotName;\n};\n\nexport type ChatViewNavigation = {\n /**\n * Dismiss the top of `slot`. If the slot has layers (see {@link pushLayer}), pop the topmost\n * layer, revealing what's beneath at its preserved state. Only when no layers remain does this\n * release the base binding. No-op for empty or persistent slots.\n */\n close: (slot: SlotName) => void;\n /**\n * Close `slot` entirely: its base binding and every layer stacked on it. Where {@link close}\n * steps back one layer, this dismisses the whole panel. No-op for empty or persistent slots.\n */\n release: (slot: SlotName) => void;\n /** Hide `slot` without releasing its binding (subtree stays mounted). */\n hide: (slot: SlotName) => void;\n /**\n * Push `binding` as a **layer** on top of `slot`'s current content. The content beneath stays\n * mounted (state/scroll preserved) and hidden; the layer covers it. Use for transient overlays\n * that should return to the underlying view — e.g. a member profile opened over a thread, where\n * `close`/`popLayer` restores the thread exactly where it was. Ephemeral (not serialized).\n */\n pushLayer: (slot: SlotName, binding: ChatViewEntityBinding) => void;\n /** Pop `slot`'s top layer, revealing the layer/base beneath. No-op when there are no layers. */\n popLayer: (slot: SlotName) => void;\n /**\n * Resolve a target slot for `binding` and bind it there, switching to the binding kind's view\n * first if needed (e.g. a `channel` binding activates the channels view).\n *\n * Slot resolution, in order:\n * 1. `options.slot`, if that slot exists in the target view's layout;\n * 2. otherwise, unless `options.additive` is set, the slot already holding this `kind`\n * (replacing its content);\n * 3. the first free non-persistent slot;\n * 4. the first free slot;\n * 5. the last non-persistent slot (evicting a secondary panel — never the primary).\n *\n * See {@link ChatViewOpenOptions.additive} for opening *beside* current content instead of\n * replacing.\n *\n * Returns an {@link OpenResult}; if no slot can be resolved the call is a rejected no-op — no\n * view switch and no dependent-slot teardown, so a rejected open never leaves a partial state.\n */\n open: (binding: ChatViewEntityBinding, options?: ChatViewOpenOptions) => OpenResult;\n /** Switch the active view (channels/threads); optionally focus a specific `slot`. */\n openView: (view: ChatView, options?: { slot?: SlotName }) => void;\n /** Reveal a previously hidden `slot`. */\n unhide: (slot: SlotName) => void;\n};\n\nconst chatViewNavigationStateSelector = (state: ChatViewLayoutState) => ({\n activeView: state.activeView,\n});\n\nconst ChatViewNavigationContext = createContext<ChatViewNavigation>({\n close: () => undefined,\n hide: () => undefined,\n open: () => ({ reason: 'no-available-slot', status: 'rejected' }),\n openView: () => undefined,\n popLayer: () => undefined,\n pushLayer: () => undefined,\n release: () => undefined,\n unhide: () => undefined,\n});\n\nexport const useChatViewNavigation = () => useContext(ChatViewNavigationContext);\n\n/** The slot (in the active view) currently holding a binding of `kind`, if any. */\nexport const useSlotForKind = (\n kind: ChatViewEntityBinding['kind'],\n): SlotName | undefined => {\n const { availableSlots, slotBindings } = useLayoutViewState();\n return useMemo(\n () =>\n availableSlots.find(\n (slot) => getChatViewEntityBinding(slotBindings[slot])?.kind === kind,\n ),\n [availableSlots, kind, slotBindings],\n );\n};\n\n/** The slot (in the active view) whose binding carries entity `key`, if any. */\nexport const useSlotForKey = (key?: string): SlotName | undefined => {\n const { availableSlots, slotBindings } = useLayoutViewState();\n return useMemo(\n () =>\n key === undefined\n ? undefined\n : availableSlots.find(\n (slot) => getChatViewEntityBinding(slotBindings[slot])?.key === key,\n ),\n [availableSlots, key, slotBindings],\n );\n};\n\nexport const ChatViewNavigationProvider = ({ children }: PropsWithChildren) => {\n const { layoutController, resolveActionTargetSlot } = useChatViewContext();\n const registry = useSlotRegistry();\n const { availableSlots, slotBindings, slotLayers } = useLayoutViewState();\n const { activeView } =\n useStateStore(layoutController.state, chatViewNavigationStateSelector) ??\n chatViewNavigationStateSelector(layoutController.state.getLatestValue());\n\n const value = useMemo<ChatViewNavigation>(() => {\n const slotKind = (slot: SlotName) =>\n getChatViewEntityBinding(slotBindings[slot])?.kind;\n\n const buildRuntimeForView = (view: ChatView): ViewSlotRuntime => {\n const state = layoutController.state.getLatestValue();\n const viewState = getLayoutViewState(state, view);\n\n return {\n activeViewState: viewState,\n availableSlots: viewState.availableSlots,\n orderedSlots: viewState.slotNames?.length\n ? viewState.slotNames\n : viewState.availableSlots,\n slotBindings: viewState.slotBindings,\n slotLayers: viewState.slotLayers ?? {},\n };\n };\n\n const makeIsPersistentSlot = (runtime: ViewSlotRuntime) => (slot: SlotName) =>\n isPersistentSlotKind(\n registry,\n getChatViewEntityBinding(runtime.slotBindings[slot])?.kind,\n );\n\n const materializeTargetSlot = (runtime: ViewSlotRuntime, slot?: SlotName) => {\n if (!slot) return undefined;\n if (runtime.availableSlots.includes(slot)) return slot;\n if (!runtime.orderedSlots.includes(slot)) return undefined;\n\n const nextAvailableSlots = runtime.orderedSlots.filter(\n (candidate) => runtime.availableSlots.includes(candidate) || candidate === slot,\n );\n layoutController.setAvailableSlots(nextAvailableSlots);\n return slot;\n };\n\n const resolveTargetSlot = ({\n additive,\n kind,\n requestedSlot,\n runtime,\n view,\n }: {\n additive?: boolean;\n kind: ChatViewEntityBinding['kind'];\n requestedSlot?: SlotName;\n runtime: ViewSlotRuntime;\n view: ChatView;\n }) => {\n // Preserve the public per-view resolver extension point (keyed on the\n // channel/thread actions) for the kinds that have one. `additive` (open beside) skips it\n // and uses the default resolver, which is where the \"prefer a free/secondary slot\" logic\n // lives.\n const action =\n !additive && kind === 'channel'\n ? 'openChannel'\n : !additive && kind === 'thread'\n ? 'openThread'\n : undefined;\n if (action) {\n const args: ResolveViewActionTargetSlotArgs = {\n action,\n activeView: view,\n availableSlots: runtime.availableSlots,\n requestedSlot,\n slotBindings: runtime.slotBindings,\n slotNames: runtime.orderedSlots,\n };\n const customTargetSlot = resolveActionTargetSlot(view, args);\n if (customTargetSlot) {\n const materialized = materializeTargetSlot(runtime, customTargetSlot);\n if (materialized) return materialized;\n }\n }\n\n return materializeTargetSlot(\n runtime,\n resolveDefaultTargetSlot({\n additive,\n isPersistentSlot: makeIsPersistentSlot(runtime),\n kind,\n requestedSlot,\n runtime,\n }),\n );\n };\n\n const openView: ChatViewNavigation['openView'] = (view, options) => {\n layoutController.openView(view, { slot: options?.slot });\n };\n\n // Replacing a channel closes the reply threads opened from it. A thread slot is released, but\n // content stacked over the thread (a channel opened beside it) stays, its top layer becoming\n // the slot's base. A reply thread of `replacedChannel` stacked over another panel is popped,\n // revealing that panel.\n const closeReplyThreads = (replacedChannel?: StreamChannel) => {\n availableSlots.forEach((slot) => {\n const layers = slotLayers?.[slot] ?? [];\n const top = layers[layers.length - 1];\n const topEntity = getChatViewEntityBinding(top);\n if (\n replacedChannel &&\n topEntity?.kind === 'thread' &&\n topEntity.source.channel?.cid === replacedChannel.cid\n ) {\n layoutController.popLayer(slot);\n return;\n }\n if (slotKind(slot) !== 'thread') return;\n if (!top) {\n layoutController.release(slot);\n return;\n }\n layoutController.bind(slot, top);\n layoutController.popLayer(slot);\n });\n };\n\n const open: ChatViewNavigation['open'] = (binding, options) => {\n // Resolve the target slot BEFORE any mutation: a rejected open is a no-op\n // (no view switch, no dependent-slot teardown), never a destructive\n // partial navigation.\n const kindView = resolveSlotKindView(registry, binding.kind);\n const targetView = kindView ?? activeView;\n const runtime = buildRuntimeForView(targetView);\n const targetSlot = resolveTargetSlot({\n additive: options?.additive,\n kind: binding.kind,\n requestedSlot: options?.slot,\n runtime,\n view: targetView,\n });\n\n if (!targetSlot) {\n return { reason: 'no-available-slot', status: 'rejected' };\n }\n\n // Kinds that declare a target view switch to it on open (e.g. channel ->\n // channels); view-agnostic kinds (thread) open in the active view.\n if (kindView) openView(targetView, options);\n\n // Base policy — \"open in the secondary slot; if it's occupied, stack a layer\" for both\n // channels (⌘/ctrl-click) and threads (reply-in-thread). Push a LAYER when:\n // - `options.layer` explicitly asks for it, OR\n // - the target is a SECONDARY slot (not the primary/anchor slot) that is already occupied\n // (a base binding or a covering layer) and this is NOT an in-place same-kind replace.\n // The primary/anchor slot (first non-persistent slot) always base-binds — selecting a channel\n // there replaces it, and single-slot layouts keep replacing rather than layering. A same-kind\n // base (thread over thread in its own slot) is an intentional replace and stays a base bind -\n // except a channel opened beside another one (`additive`), which stacks too, so that stepping\n // back returns to the previous channel. Everything else landing on an occupied secondary\n // slot stacks on top instead of evicting/hiding it — `close`/`popLayer` restores what's\n // beneath.\n const isPersistentSlot = makeIsPersistentSlot(runtime);\n const anchorSlot = runtime.availableSlots.find((slot) => !isPersistentSlot(slot));\n const targetBase = runtime.slotBindings[targetSlot];\n const targetBaseKind = getChatViewEntityBinding(targetBase)?.kind;\n const targetOccupied = !!targetBase || !!runtime.slotLayers[targetSlot]?.length;\n const isSecondaryTarget = targetSlot !== anchorSlot;\n // Opening beside what the target slot already shows on top changes nothing. Anything else -\n // a channel lower in its stack, or open in another slot - is stacked on top, so it is shown.\n const shownInTarget = getChatViewEntityBinding(\n runtime.slotLayers[targetSlot]?.at(-1) ?? targetBase,\n );\n if (\n options?.additive &&\n isSecondaryTarget &&\n binding.key !== undefined &&\n shownInTarget?.key === binding.key\n ) {\n return { slot: targetSlot, status: 'opened' };\n }\n const stacksBesideSameKind = !!options?.additive && binding.kind === 'channel';\n const sameKindBaseReplace =\n !!targetBase && targetBaseKind === binding.kind && !stacksBesideSameKind;\n\n if (\n options?.layer ||\n (isSecondaryTarget && targetOccupied && !sameKindBaseReplace)\n ) {\n layoutController.pushLayer(targetSlot, createChatViewSlotBinding(binding));\n return { slot: targetSlot, status: 'layered' };\n }\n\n // Dependent-slot invalidation: replacing a channel closes threads bound to\n // the previous channel. (Interim kind check; a later step may express this\n // as registry policy.) Only on a real base replace — layered opens above skip it.\n if (binding.kind === 'channel') {\n const replaced = getChatViewEntityBinding(targetBase);\n closeReplyThreads(replaced?.kind === 'channel' ? replaced.source : undefined);\n }\n\n return layoutController.openInLayout(createChatViewSlotBinding(binding), {\n targetSlot,\n });\n };\n\n const close: ChatViewNavigation['close'] = (slot) => {\n if (!availableSlots.includes(slot)) return;\n // Layers dismiss top-down: pop the topmost layer first and only release the base binding\n // once no layers remain.\n if (slotLayers?.[slot]?.length) {\n layoutController.popLayer(slot);\n return;\n }\n // Persistent kinds (nav-rail lists) are hide-only; close never releases them.\n if (isPersistentSlotKind(registry, slotKind(slot))) return;\n layoutController.release(slot);\n };\n\n const release: ChatViewNavigation['release'] = (slot) => {\n if (!availableSlots.includes(slot)) return;\n if (isPersistentSlotKind(registry, slotKind(slot))) return;\n layoutController.release(slot);\n };\n\n const hide: ChatViewNavigation['hide'] = (slot) => {\n if (availableSlots.includes(slot)) layoutController.hide(slot);\n };\n\n const pushLayer: ChatViewNavigation['pushLayer'] = (slot, binding) => {\n if (!availableSlots.includes(slot)) return;\n layoutController.pushLayer(slot, createChatViewSlotBinding(binding));\n };\n\n const popLayer: ChatViewNavigation['popLayer'] = (slot) => {\n if (availableSlots.includes(slot)) layoutController.popLayer(slot);\n };\n\n const unhide: ChatViewNavigation['unhide'] = (slot) => {\n if (availableSlots.includes(slot)) layoutController.unhide(slot);\n };\n\n return { close, hide, open, openView, popLayer, pushLayer, release, unhide };\n }, [\n activeView,\n availableSlots,\n layoutController,\n registry,\n resolveActionTargetSlot,\n slotBindings,\n slotLayers,\n ]);\n\n return (\n <ChatViewNavigationContext.Provider value={value}>\n {children}\n </ChatViewNavigationContext.Provider>\n );\n};\n","import React, { useMemo } from 'react';\n\nimport { useChatContext } from '../../context';\nimport { WorkspaceNavigationProvider } from '../../context/WorkspaceNavigationContext';\nimport {\n createThreadEntityBinding,\n useChatViewNavigation,\n} from './ChatViewNavigationContext';\nimport { getChatViewEntityBinding, useChatViewContext } from './ChatView';\nimport { useLayoutViewState } from './hooks/useLayoutViewState';\nimport { isPersistentSlotKind, useSlotRegistry } from './slotRegistry';\n\nimport type { PropsWithChildren } from 'react';\nimport type { Channel as StreamChannel, Thread as StreamThread } from 'stream-chat';\nimport { Thread as StreamThreadClass } from 'stream-chat';\nimport type { WorkspaceNavigation } from '../../context/WorkspaceNavigationContext';\nimport type { ChatViewEntityBinding } from './ChatView';\n\n/**\n * Optional transform an app supplies (via `ChatView`) to customize the derived\n * {@link WorkspaceNavigation} — e.g. make `openChannel`/`openThread` open *beside* the current\n * content on ⌘/ctrl-click. Receives the fully-derived navigation and returns only the members to\n * override; they are merged over it, so every member left out keeps the SDK's behaviour. `base` is\n * there to delegate to (e.g. call `base.openChannel` with adjusted options). Must be referentially\n * stable (wrap in `useCallback`) — it participates in the adapter's `useMemo`.\n */\nexport type DeriveWorkspaceNavigation = (\n base: WorkspaceNavigation,\n) => Partial<WorkspaceNavigation>;\n\nexport type WorkspaceNavigationAdapterProps = {\n deriveWorkspaceNavigation?: DeriveWorkspaceNavigation;\n};\n\n/**\n * Implements the core-owned {@link WorkspaceNavigation} abstraction (D1) over the ChatView slot\n * system and provides it to the subtree. Rendered inside `ChatViewNavigationProvider` (so it can\n * drive `open`/`close`) and the ChatView context (so it can read the active view's slot state).\n *\n * Every read/operation is derived from the same slot primitives the ChatView hooks use, so core\n * consumers routed through the adapter behave exactly as they did calling the slot API directly.\n * An app may pass `deriveWorkspaceNavigation` to override individual operations (e.g. additive\n * open on ⌘/ctrl-click); whatever it leaves out stays as derived here.\n */\nexport const WorkspaceNavigationAdapter = ({\n children,\n deriveWorkspaceNavigation,\n}: PropsWithChildren<WorkspaceNavigationAdapterProps>) => {\n const { close, open, release } = useChatViewNavigation();\n const registry = useSlotRegistry();\n const { activeView } = useChatViewContext();\n const { client } = useChatContext();\n const { availableSlots, slotBindings, slotLayers } = useLayoutViewState();\n\n const value = useMemo<WorkspaceNavigation>(() => {\n const bindingOf = (slot: string) => getChatViewEntityBinding(slotBindings[slot]);\n // The slot (in the active view) whose base binding carries entity `key` — mirrors `useSlotForKey`.\n const slotOfKey = (key?: string) =>\n key === undefined\n ? undefined\n : availableSlots.find((slot) => bindingOf(slot)?.key === key);\n // First slot holding a thread — mirrors `useSlotForKind('thread')`.\n const activeThreadSlot = availableSlots.find(\n (slot) => bindingOf(slot)?.kind === 'thread',\n );\n // What a slot shows: its top layer when something is stacked over the base, else the base.\n const visibleBindingOf = (slot: string) => {\n const layers = slotLayers?.[slot];\n return layers?.length\n ? getChatViewEntityBinding(layers[layers.length - 1])\n : bindingOf(slot);\n };\n // A thread or channel opened into an occupied slot is stacked as a layer, so finding the panel\n // showing an entity has to look at each slot's top layer, not only at its base binding.\n const slotShowingKey = (key: string) =>\n availableSlots.find((slot) => visibleBindingOf(slot)?.key === key);\n const slotShowingThread = availableSlots.find(\n (slot) => visibleBindingOf(slot)?.kind === 'thread',\n );\n // Slots showing a channel, in layout order: the first is the primary channel panel, any later\n // one is a channel opened beside it.\n const slotsShowingChannel = availableSlots.filter(\n (slot) => visibleBindingOf(slot)?.kind === 'channel',\n );\n // The first slot not holding a nav-rail list: the workspace's main panel.\n const primarySlot = availableSlots.find(\n (slot) => !isPersistentSlotKind(registry, bindingOf(slot)?.kind),\n );\n // Closing a panel beside the main one dismisses it whole, with whatever is stacked in it; the\n // main panel only ever steps back one layer, so it is never emptied from under the workspace.\n const dismissSlot = (slot: string) =>\n slot === primarySlot ? close(slot) : release(slot);\n const hasContentBeneath = (slot?: string) => !!slot && !!slotLayers?.[slot]?.length;\n // The slot an entity is shown in. The same channel or thread can be open in several; the\n // caller's own panel (a slot, see `WorkspacePanelProvider`) settles which one is meant.\n const slotShowing = (key?: string, panel?: string) => {\n if (key === undefined) return undefined;\n if (\n panel &&\n availableSlots.includes(panel) &&\n visibleBindingOf(panel)?.key === key\n ) {\n return panel;\n }\n return slotShowingKey(key);\n };\n\n const openChannels = availableSlots.reduce<StreamChannel[]>((acc, slot) => {\n const binding = bindingOf(slot);\n if (binding?.kind === 'channel') acc.push(binding.source);\n return acc;\n }, []);\n const openThreads = availableSlots.reduce<StreamThread[]>((acc, slot) => {\n const binding = bindingOf(slot);\n if (binding?.kind === 'thread') acc.push(binding.source);\n return acc;\n }, []);\n\n const isThreadsView = activeView === 'threads';\n\n return {\n canGoBack: (key, panel) => hasContentBeneath(slotShowing(key, panel)),\n closeChannel: (cid, options) => {\n const slot = slotShowing(cid, options?.panel);\n if (slot) dismissSlot(slot);\n },\n closeThread: (threadId, options) => {\n // Mirror `closableThreadSlot = threadSlot ?? activeThreadSlot` from the previous Thread wiring.\n const slot =\n (threadId === undefined\n ? undefined\n : options?.panel\n ? slotShowing(threadId, options.panel)\n : (slotOfKey(threadId) ?? slotShowingKey(threadId))) ??\n activeThreadSlot ??\n slotShowingThread;\n if (slot) dismissSlot(slot);\n },\n goBack: (key, options) => {\n const slot = slotShowing(key, options?.panel);\n // `close` pops the top layer - the entity shown - revealing what it is stacked over.\n if (hasContentBeneath(slot)) close(slot as string);\n },\n // Active = shown: a channel covered by another panel stacked in its slot is not.\n isChannelActive: (cid) => cid !== undefined && !!slotShowingKey(cid),\n isChannelDismissable: (cid, panel) => {\n const slot = slotShowing(cid, panel);\n return !!slot && slotsShowingChannel.indexOf(slot) > 0;\n },\n isThreadActive: (threadId) =>\n threadId !== undefined &&\n availableSlots.some((slot) => {\n const binding = visibleBindingOf(slot);\n return binding?.kind === 'thread' && binding.source.id === threadId;\n }),\n isThreadDismissable: (threadId, panel) => {\n // Reply threads in any non-threads view are closable; in the threads view only a secondary\n // thread (one not occupying the view's primary thread slot) is closable.\n if (!isThreadsView) return true;\n const slot = panel\n ? slotShowing(threadId, panel)\n : threadId === undefined\n ? undefined\n : slotOfKey(threadId);\n return !!slot && !!activeThreadSlot && slot !== activeThreadSlot;\n },\n isThreadsView,\n openChannel: (channel, options) => {\n void open(\n { key: channel.cid ?? undefined, kind: 'channel', source: channel },\n options,\n );\n },\n openChannels,\n openThread: (target, options) => {\n const binding: ChatViewEntityBinding =\n target instanceof StreamThreadClass\n ? { key: target.id ?? undefined, kind: 'thread', source: target }\n : createThreadEntityBinding(client, target);\n void open(binding, options);\n },\n openThreads,\n };\n }, [\n activeView,\n availableSlots,\n client,\n close,\n open,\n registry,\n release,\n slotBindings,\n slotLayers,\n ]);\n\n const derived = useMemo<WorkspaceNavigation>(() => {\n if (!deriveWorkspaceNavigation) return value;\n // A member set to `undefined` keeps the default rather than removing it.\n const overrides = Object.fromEntries(\n Object.entries(deriveWorkspaceNavigation(value)).filter(\n ([, member]) => member !== undefined,\n ),\n );\n return { ...value, ...overrides };\n }, [deriveWorkspaceNavigation, value]);\n\n return (\n <WorkspaceNavigationProvider value={derived}>{children}</WorkspaceNavigationProvider>\n );\n};\n","// Leaf module: entity-binding primitives shared by ChatView, the generic <Slot>\n// dispatcher, and the slot renderer registry. Kept free of ChatView.tsx *value*\n// imports so `Slot`/`slotRegistry` can consume it without an import cycle\n// (ChatView -> WorkspaceLayout -> Slot -> slotRegistry -> here).\n\nimport type { Channel as StreamChannel, Thread } from 'stream-chat';\nimport type { ReactNode } from 'react';\nimport type { ChatView } from './ChatView';\nimport type {\n LayoutSlotBinding,\n SlotName,\n} from './layoutController/layoutControllerTypes';\n\nexport type UserListEntitySource = {\n query: string;\n};\n\n// D7 (iii) — list kinds carry no source; the layout that seeds them picks the\n// kind (`channelList` vs `threadList`), so the old `source.view` indirection is gone.\nexport type ChannelListEntitySource = Record<string, never>;\nexport type ThreadListEntitySource = Record<string, never>;\n\nexport type SearchResultsEntitySource = {\n query: string;\n};\n\nexport type UserProfileEntitySource = {\n userId: string;\n};\n\nexport type ChatViewEntityBinding =\n | { key?: string; kind: 'channelList'; source: ChannelListEntitySource }\n | { key?: string; kind: 'threadList'; source: ThreadListEntitySource }\n | { key?: string; kind: 'channel'; source: StreamChannel }\n | { key?: string; kind: 'thread'; source: Thread }\n | { key?: string; kind: 'memberList'; source: StreamChannel }\n | { key?: string; kind: 'userList'; source: UserListEntitySource }\n | { key?: string; kind: 'searchResults'; source: SearchResultsEntitySource }\n | { key?: string; kind: 'pinnedMessagesList'; source: StreamChannel }\n | { key?: string; kind: 'userProfile'; source: UserProfileEntitySource };\n\nexport type ChatViewEntityKind = ChatViewEntityBinding['kind'];\n\nexport type LayoutEntityByKind<TKind extends ChatViewEntityKind> = Extract<\n ChatViewEntityBinding,\n { kind: TKind }\n>;\n\nexport type ChatViewSlotRendererProps<TKind extends ChatViewEntityKind> = {\n entity: LayoutEntityByKind<TKind>;\n slot: string;\n source: LayoutEntityByKind<TKind>['source'];\n};\n\nexport type ChatViewSlotFallbackProps = {\n slot: string;\n};\n\n/**\n * App-facing per-kind render overrides. A thin projection of the renderer\n * registry: supplying `slotRenderers[kind]` overrides only that kind's\n * `Component` while inheriting the built-in policy (`persistent`/`view`).\n */\nexport type ChatViewSlotRenderers = Partial<{\n [TKind in ChatViewEntityKind]: (props: ChatViewSlotRendererProps<TKind>) => ReactNode;\n}>;\n\nconst isChatViewEntityBinding = (value: unknown): value is ChatViewEntityBinding => {\n if (!value || typeof value !== 'object') return false;\n const candidate = value as Partial<ChatViewEntityBinding>;\n return typeof candidate.kind === 'string' && 'source' in candidate;\n};\n\nexport const getChatViewEntityBinding = (\n binding?: LayoutSlotBinding,\n): ChatViewEntityBinding | undefined =>\n isChatViewEntityBinding(binding?.payload) ? binding.payload : undefined;\n\nexport const createChatViewSlotBinding = (\n entity: ChatViewEntityBinding,\n): LayoutSlotBinding => ({\n key: entity.key ? `${entity.kind}:${entity.key}` : undefined,\n payload: entity,\n});\n\n/**\n * Declarative layout preset (D7). A \"view\" is a `LayoutDescriptor`: a named slot\n * structure plus optional bindings to seed into those slots. Switching view =\n * activating a layout; each layout keeps its own slot state (remembered snapshot).\n */\nexport type LayoutDescriptor = {\n id: ChatView;\n slots: SlotName[];\n initialBindings?: Partial<Record<SlotName, ChatViewEntityBinding>>;\n};\n","import clsx from 'clsx';\nimport React from 'react';\n\nimport { WorkspacePanelProvider } from '../../../context/WorkspaceNavigationContext';\nimport { useLayoutViewState } from '../hooks/useLayoutViewState';\nimport { getChatViewEntityBinding } from '../slotBinding';\nimport { renderSlotFromRegistry, useSlotRegistry } from '../slotRegistry';\n\nimport type { ReactNode } from 'react';\n\nexport type SlotProps = {\n children?: ReactNode;\n className?: string;\n slot: string;\n};\n\nexport const Slot = ({ children, className, slot }: SlotProps) => {\n const { hiddenSlots, slotBindings, slotLayers } = useLayoutViewState();\n const registry = useSlotRegistry();\n const hidden = !!hiddenSlots?.[slot];\n const layers = slotLayers?.[slot] ?? [];\n\n // Explicit children win (legacy claim-and-render wrappers); otherwise dispatch\n // on the slot's current binding via the registry.\n const baseContent =\n children ??\n renderSlotFromRegistry(getChatViewEntityBinding(slotBindings[slot]), slot, registry);\n\n return (\n <section\n aria-hidden={hidden || undefined}\n className={clsx(\n 'str-chat__chat-view__slot',\n {\n 'str-chat__chat-view__slot--hidden': hidden,\n },\n className,\n )}\n data-slot={slot}\n >\n {/* Whatever the slot shows is in this panel, so its controls act on this slot. */}\n <WorkspacePanelProvider panel={slot}>\n {layers.length === 0 ? (\n // Fast path: no layers — render the base content directly (unchanged structure).\n baseContent\n ) : (\n // Layered: base + each layer kept mounted; only the topmost is shown. Non-top layers get\n // the `hidden` attribute (display:none) so their subtree state is preserved; the visible\n // layer uses `display: contents` so it lays out exactly as a direct child would. Each entry\n // is keyed by its binding identity (`LayoutSlotBinding.key`, the same key the controller\n // dedupes on) — not the array index — so a layer keeps its subtree as the stack changes.\n <>\n {[\n { key: 'base', node: baseContent },\n ...layers.map((layer) => {\n const entity = getChatViewEntityBinding(layer);\n return {\n key: layer.key ?? `layer:${entity?.kind ?? 'unknown'}`,\n node: renderSlotFromRegistry(entity, slot, registry),\n };\n }),\n ].map(({ key, node }, index, all) => {\n const isTop = index === all.length - 1;\n return (\n <div\n aria-hidden={!isTop || undefined}\n className='str-chat__chat-view__slot-layer'\n hidden={!isTop}\n key={key}\n style={isTop ? { display: 'contents' } : undefined}\n >\n {node}\n </div>\n );\n })}\n </>\n )}\n </WorkspacePanelProvider>\n </section>\n );\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport { Slot } from './Slot';\n\nimport type { ReactNode } from 'react';\n\nexport type WorkspaceLayoutSlot = {\n content?: ReactNode;\n slot: string;\n};\n\nexport type WorkspaceLayoutProps = {\n navRail?: ReactNode;\n slots: WorkspaceLayoutSlot[];\n};\n\nexport const WorkspaceLayout = ({ navRail, slots }: WorkspaceLayoutProps) => (\n <div className='str-chat__chat-view__workspace-layout'>\n {navRail ? (\n <div className='str-chat__chat-view__workspace-layout-nav-rail'>{navRail}</div>\n ) : null}\n <div\n className={clsx('str-chat__chat-view__workspace-layout-slots', {\n 'str-chat__chat-view__workspace-layout-slots--empty': slots.length === 0,\n })}\n >\n {slots.map(({ content, slot }) => (\n <Slot\n className='str-chat__chat-view__workspace-layout-slot'\n key={slot}\n slot={slot}\n >\n {content}\n </Slot>\n ))}\n </div>\n </div>\n);\n","import { StateStore } from '@stream-io/state-store';\n\nimport type {\n ChatViewLayoutState,\n ChatViewLayoutViewState,\n CreateLayoutControllerOptions,\n DuplicateEntityPolicy,\n LayoutController as LayoutControllerApi,\n LayoutRuntimeState,\n LayoutSlotBinding,\n OpenOptions,\n OpenResult,\n SlotName,\n} from './layoutControllerTypes';\n\nconst DEFAULT_LAYOUT_STATE: ChatViewLayoutState = {\n activeView: 'channels',\n layouts: {},\n};\n\n/** Build a full per-layout runtime state, defaulting any field left unset.\n * Handy for `initialState` callers that only want to seed a couple of fields. */\nexport const createLayoutRuntimeState = (\n partial: Partial<LayoutRuntimeState> = {},\n): LayoutRuntimeState => ({\n availableSlots: partial.availableSlots ? [...partial.availableSlots] : [],\n hiddenSlots: { ...(partial.hiddenSlots ?? {}) },\n slotBindings: { ...(partial.slotBindings ?? {}) },\n slotForwardHistory: { ...(partial.slotForwardHistory ?? {}) },\n slotHistory: { ...(partial.slotHistory ?? {}) },\n slotLayers: { ...(partial.slotLayers ?? {}) },\n slotMeta: { ...(partial.slotMeta ?? {}) },\n slotNames: partial.slotNames ? [...partial.slotNames] : undefined,\n});\n\nconst DEFAULT_DUPLICATE_ENTITY_POLICY: DuplicateEntityPolicy = 'allow';\n\n/**\n * Slot binding means:\n *\n * - `slot name` -> `what should be shown in that slot`.\n *\n * Example:\n * - `main` -> `{ kind: 'channel', source: channelA }`\n * - `main-thread` -> `{ kind: 'thread', source: threadX }`\n *\n * In LayoutController:\n * - `payload` is the thing to render in the slot.\n * - `key` (optional) is used to identify duplicates.\n * - changing a binding means \\\"show different data in this slot now\\\".\n */\nconst resolveBindingKey = (binding: LayoutSlotBinding) => binding.key;\n\nconst toViewState = (\n state: ChatViewLayoutState,\n view = state.activeView,\n): ChatViewLayoutViewState => {\n const layout = state.layouts?.[view];\n return {\n availableSlots: [...(layout?.availableSlots ?? [])],\n hiddenSlots: { ...(layout?.hiddenSlots ?? {}) },\n slotBindings: { ...(layout?.slotBindings ?? {}) },\n slotForwardHistory: { ...(layout?.slotForwardHistory ?? {}) },\n slotHistory: { ...(layout?.slotHistory ?? {}) },\n slotLayers: { ...(layout?.slotLayers ?? {}) },\n slotMeta: { ...(layout?.slotMeta ?? {}) },\n slotNames: layout?.slotNames ? [...layout.slotNames] : undefined,\n };\n};\n\nconst mergeViewState = (\n state: ChatViewLayoutState,\n nextViewState: ChatViewLayoutViewState,\n view = state.activeView,\n): ChatViewLayoutState => ({\n ...state,\n layouts: {\n ...(state.layouts ?? {}),\n [view]: {\n availableSlots: [...nextViewState.availableSlots],\n hiddenSlots: { ...nextViewState.hiddenSlots },\n slotBindings: { ...nextViewState.slotBindings },\n slotForwardHistory: { ...nextViewState.slotForwardHistory },\n slotHistory: { ...nextViewState.slotHistory },\n slotLayers: { ...(nextViewState.slotLayers ?? {}) },\n slotMeta: { ...nextViewState.slotMeta },\n slotNames: nextViewState.slotNames ? [...nextViewState.slotNames] : undefined,\n },\n },\n});\n\nconst buildInitialState = (\n partialState?: CreateLayoutControllerOptions['initialState'],\n): ChatViewLayoutState => {\n const activeView = partialState?.activeView ?? DEFAULT_LAYOUT_STATE.activeView;\n\n // Flat single-view shorthand: fold top-level runtime fields into the active view's\n // layout when it isn't provided explicitly via `layouts`.\n const {\n availableSlots,\n hiddenSlots,\n slotBindings,\n slotForwardHistory,\n slotHistory,\n slotMeta,\n slotNames,\n } = partialState ?? {};\n const hasFlatViewFields = Boolean(\n availableSlots ||\n hiddenSlots ||\n slotBindings ||\n slotForwardHistory ||\n slotHistory ||\n slotMeta ||\n slotNames,\n );\n\n const normalized: ChatViewLayoutState = {\n ...DEFAULT_LAYOUT_STATE,\n ...partialState,\n activeView,\n layouts: {\n ...(DEFAULT_LAYOUT_STATE.layouts ?? {}),\n ...(hasFlatViewFields\n ? {\n [activeView]: createLayoutRuntimeState({\n availableSlots,\n hiddenSlots,\n slotBindings,\n slotForwardHistory,\n slotHistory,\n slotMeta,\n slotNames,\n }),\n }\n : {}),\n ...(partialState?.layouts ?? {}),\n },\n };\n\n const initialViewState = toViewState(normalized, activeView);\n const next = mergeViewState(normalized, initialViewState, activeView);\n\n if (\n !next.layouts?.[activeView]?.availableSlots?.length &&\n initialViewState.slotNames?.length\n ) {\n // Every declared slot can be opened into.\n return mergeViewState(\n next,\n {\n ...initialViewState,\n availableSlots: [...initialViewState.slotNames],\n },\n activeView,\n );\n }\n\n return next;\n};\n\nconst isSameSlotBinding = (\n first: LayoutSlotBinding,\n second: LayoutSlotBinding,\n): boolean => {\n const firstKey = resolveBindingKey(first);\n const secondKey = resolveBindingKey(second);\n\n if (firstKey && secondKey) return firstKey === secondKey;\n\n return first === second;\n};\n\nconst findBindingSlot = (\n viewState: ChatViewLayoutViewState,\n binding: LayoutSlotBinding,\n): SlotName | undefined => {\n const identityKey = resolveBindingKey(binding);\n if (!identityKey) return;\n\n return viewState.availableSlots.find((slot) => {\n const boundBinding = viewState.slotBindings[slot];\n if (!boundBinding) return false;\n return resolveBindingKey(boundBinding) === identityKey;\n });\n};\n\nconst pushSlotHistory = (\n viewState: ChatViewLayoutViewState,\n slot: SlotName,\n binding: LayoutSlotBinding,\n): ChatViewLayoutViewState => {\n const slotHistory = viewState.slotHistory?.[slot] ?? [];\n const previousBinding = slotHistory[slotHistory.length - 1];\n if (previousBinding && isSameSlotBinding(previousBinding, binding)) {\n return viewState;\n }\n\n return {\n ...viewState,\n slotHistory: {\n ...(viewState.slotHistory ?? {}),\n [slot]: [...slotHistory, binding],\n },\n };\n};\n\nconst popSlotHistory = (\n viewState: ChatViewLayoutViewState,\n slot: SlotName,\n): { popped?: LayoutSlotBinding; state: ChatViewLayoutViewState } => {\n const slotHistory = viewState.slotHistory?.[slot];\n if (!slotHistory?.length) return { state: viewState };\n\n const popped = slotHistory[slotHistory.length - 1];\n const nextSlotHistory = { ...(viewState.slotHistory ?? {}) };\n const remainingHistory = slotHistory.slice(0, -1);\n\n if (remainingHistory.length) {\n nextSlotHistory[slot] = remainingHistory;\n } else {\n delete nextSlotHistory[slot];\n }\n\n return {\n popped,\n state: {\n ...viewState,\n slotHistory: nextSlotHistory,\n },\n };\n};\n\nconst pushSlotForwardHistory = (\n viewState: ChatViewLayoutViewState,\n slot: SlotName,\n binding: LayoutSlotBinding,\n): ChatViewLayoutViewState => {\n const slotForwardHistory = viewState.slotForwardHistory?.[slot] ?? [];\n const previousBinding = slotForwardHistory[slotForwardHistory.length - 1];\n if (previousBinding && isSameSlotBinding(previousBinding, binding)) {\n return viewState;\n }\n\n return {\n ...viewState,\n slotForwardHistory: {\n ...(viewState.slotForwardHistory ?? {}),\n [slot]: [...slotForwardHistory, binding],\n },\n };\n};\n\nconst popSlotForwardHistory = (\n viewState: ChatViewLayoutViewState,\n slot: SlotName,\n): { popped?: LayoutSlotBinding; state: ChatViewLayoutViewState } => {\n const slotForwardHistory = viewState.slotForwardHistory?.[slot];\n if (!slotForwardHistory?.length) return { state: viewState };\n\n const popped = slotForwardHistory[slotForwardHistory.length - 1];\n const nextSlotForwardHistory = { ...(viewState.slotForwardHistory ?? {}) };\n const remainingHistory = slotForwardHistory.slice(0, -1);\n\n if (remainingHistory.length) {\n nextSlotForwardHistory[slot] = remainingHistory;\n } else {\n delete nextSlotForwardHistory[slot];\n }\n\n return {\n popped,\n state: {\n ...viewState,\n slotForwardHistory: nextSlotForwardHistory,\n },\n };\n};\n\nconst clearSlotForwardHistory = (\n viewState: ChatViewLayoutViewState,\n slot: SlotName,\n): ChatViewLayoutViewState => {\n if (!viewState.slotForwardHistory?.[slot]) return viewState;\n\n const nextSlotForwardHistory = { ...(viewState.slotForwardHistory ?? {}) };\n delete nextSlotForwardHistory[slot];\n\n return {\n ...viewState,\n slotForwardHistory: nextSlotForwardHistory,\n };\n};\n\nconst upsertSlotBinding = (\n viewState: ChatViewLayoutViewState,\n slot: SlotName,\n binding: LayoutSlotBinding,\n): ChatViewLayoutViewState => {\n const nextSlotBindings: ChatViewLayoutViewState['slotBindings'] = {\n ...viewState.slotBindings,\n [slot]: binding,\n };\n\n const wasOccupied = !!viewState.slotBindings[slot];\n const hasOccupiedAt = typeof viewState.slotMeta[slot]?.occupiedAt === 'number';\n const shouldSetOccupiedAt = !wasOccupied || !hasOccupiedAt;\n\n const nextSlotMeta = shouldSetOccupiedAt\n ? {\n ...viewState.slotMeta,\n [slot]: {\n occupiedAt: Date.now(),\n },\n }\n : viewState.slotMeta;\n\n return {\n ...viewState,\n slotBindings: nextSlotBindings,\n slotMeta: nextSlotMeta,\n };\n};\n\nconst clearSlotBinding = (\n viewState: ChatViewLayoutViewState,\n slot: SlotName,\n): ChatViewLayoutViewState => {\n if (\n !viewState.slotBindings[slot] &&\n !viewState.slotMeta[slot] &&\n !viewState.slotHistory?.[slot] &&\n !viewState.slotForwardHistory?.[slot] &&\n !viewState.slotLayers?.[slot]\n ) {\n return viewState;\n }\n\n const nextSlotBindings = { ...viewState.slotBindings };\n delete nextSlotBindings[slot];\n\n const nextSlotMeta = { ...viewState.slotMeta };\n delete nextSlotMeta[slot];\n\n const nextSlotHistory = { ...(viewState.slotHistory ?? {}) };\n delete nextSlotHistory[slot];\n\n const nextSlotForwardHistory = { ...(viewState.slotForwardHistory ?? {}) };\n delete nextSlotForwardHistory[slot];\n\n const nextSlotLayers = { ...(viewState.slotLayers ?? {}) };\n delete nextSlotLayers[slot];\n\n return {\n ...viewState,\n slotBindings: nextSlotBindings,\n slotForwardHistory: nextSlotForwardHistory,\n slotHistory: nextSlotHistory,\n slotLayers: nextSlotLayers,\n slotMeta: nextSlotMeta,\n };\n};\n\n// step 2 — the single slot resolver lives in the navigation layer (ChatViewNavigationContext).\n// openInLayout is pure mechanism: it accepts an already-resolved, available target slot (an\n// occupied slot is allowed — that is a replace) and otherwise rejects. Callers own resolution.\nconst resolveOpenTargetSlot = (\n activeViewState: ChatViewLayoutViewState,\n options: OpenOptions | undefined,\n): SlotName | undefined => {\n const requestedSlot = options?.targetSlot;\n if (!requestedSlot) return undefined;\n return activeViewState.availableSlots.includes(requestedSlot)\n ? requestedSlot\n : undefined;\n};\n\nexport class LayoutController implements LayoutControllerApi {\n private readonly duplicateEntityPolicy: DuplicateEntityPolicy;\n private readonly resolveDuplicateEntity?: CreateLayoutControllerOptions['resolveDuplicateEntity'];\n state: StateStore<ChatViewLayoutState>;\n\n constructor(options: CreateLayoutControllerOptions = {}) {\n const {\n duplicateEntityPolicy = DEFAULT_DUPLICATE_ENTITY_POLICY,\n initialState,\n resolveDuplicateEntity,\n state = new StateStore<ChatViewLayoutState>(buildInitialState(initialState)),\n } = options;\n\n this.duplicateEntityPolicy = duplicateEntityPolicy;\n this.resolveDuplicateEntity = resolveDuplicateEntity;\n this.state = state;\n }\n\n setActiveView: LayoutControllerApi['setActiveView'] = (next) => {\n this.state.next((current) => ({ ...current, activeView: next }));\n };\n\n openView: LayoutControllerApi['openView'] = (view, options) => {\n void options;\n this.state.next((current) => ({ ...current, activeView: view }));\n };\n\n setAvailableSlots: LayoutControllerApi['setAvailableSlots'] = (slots) => {\n this.state.next((current) => {\n const activeViewState = toViewState(current);\n return mergeViewState(current, {\n ...activeViewState,\n availableSlots: [...slots],\n });\n });\n };\n\n setSlotNames: LayoutControllerApi['setSlotNames'] = (slots) => {\n this.state.next((current) => {\n const activeViewState = toViewState(current);\n return mergeViewState(current, {\n ...activeViewState,\n slotNames: slots?.length ? [...slots] : undefined,\n });\n });\n };\n\n hide: LayoutControllerApi['hide'] = (slot) => {\n this.state.next((current) => {\n const activeViewState = toViewState(current);\n return mergeViewState(current, {\n ...activeViewState,\n hiddenSlots: {\n ...activeViewState.hiddenSlots,\n [slot]: true,\n },\n });\n });\n };\n\n unhide: LayoutControllerApi['unhide'] = (slot) => {\n this.state.next((current) => {\n const activeViewState = toViewState(current);\n return mergeViewState(current, {\n ...activeViewState,\n hiddenSlots: {\n ...activeViewState.hiddenSlots,\n [slot]: false,\n },\n });\n });\n };\n\n // step 4 — bind/release are the mechanism primitives. `bind` places a binding into a slot\n // (an occupied slot is replaced); `release` frees a slot. Higher-level open/close in the\n // navigation layer are built on these; history navigation is goBack/goForward, kept separate.\n bind: LayoutControllerApi['bind'] = (slot, binding) => {\n this.state.next((current) => {\n const activeViewState = toViewState(current);\n const nextViewState = clearSlotForwardHistory(\n upsertSlotBinding(activeViewState, slot, binding),\n slot,\n );\n\n return mergeViewState(current, nextViewState);\n });\n };\n\n release: LayoutControllerApi['release'] = (slot) => {\n this.state.next((current) => {\n const activeViewState = toViewState(current);\n return mergeViewState(current, clearSlotBinding(activeViewState, slot));\n });\n };\n\n // Layers stack *above* a slot's base binding (see `slotLayers`). Push/pop keep every layer\n // (and the base beneath) mounted; only the topmost is shown by the renderer, so popping a\n // layer reveals what's underneath at its exact preserved state.\n pushLayer: LayoutControllerApi['pushLayer'] = (slot, binding) => {\n this.state.next((current) => {\n const activeViewState = toViewState(current);\n const slotLayers = activeViewState.slotLayers?.[slot] ?? [];\n return mergeViewState(current, {\n ...activeViewState,\n slotLayers: {\n ...(activeViewState.slotLayers ?? {}),\n [slot]: [...slotLayers, binding],\n },\n });\n });\n };\n\n popLayer: LayoutControllerApi['popLayer'] = (slot) => {\n this.state.next((current) => {\n const activeViewState = toViewState(current);\n const slotLayers = activeViewState.slotLayers?.[slot];\n if (!slotLayers?.length) return current;\n\n const nextSlotLayers = { ...(activeViewState.slotLayers ?? {}) };\n const remaining = slotLayers.slice(0, -1);\n if (remaining.length) {\n nextSlotLayers[slot] = remaining;\n } else {\n delete nextSlotLayers[slot];\n }\n\n return mergeViewState(current, {\n ...activeViewState,\n slotLayers: nextSlotLayers,\n });\n });\n };\n\n goBack: LayoutControllerApi['goBack'] = (slot) => {\n this.state.next((current) => {\n const activeViewState = toViewState(current);\n const { popped, state: nextState } = popSlotHistory(activeViewState, slot);\n if (!popped) return mergeViewState(current, nextState);\n\n const currentBinding = nextState.slotBindings[slot];\n const withForward = currentBinding\n ? pushSlotForwardHistory(nextState, slot, currentBinding)\n : nextState;\n\n return mergeViewState(current, upsertSlotBinding(withForward, slot, popped));\n });\n };\n\n goForward: LayoutControllerApi['goForward'] = (slot) => {\n this.state.next((current) => {\n const activeViewState = toViewState(current);\n const { popped, state: nextState } = popSlotForwardHistory(activeViewState, slot);\n if (!popped) return mergeViewState(current, nextState);\n\n const currentBinding = nextState.slotBindings[slot];\n const withBack = currentBinding\n ? pushSlotHistory(nextState, slot, currentBinding)\n : nextState;\n\n return mergeViewState(current, upsertSlotBinding(withBack, slot, popped));\n });\n };\n\n openInLayout: LayoutControllerApi['openInLayout'] = (binding, openOptions) => {\n const current = this.state.getLatestValue();\n const activeViewState = toViewState(current);\n const targetSlot = resolveOpenTargetSlot(activeViewState, openOptions);\n\n if (!targetSlot) {\n return {\n reason: 'no-available-slot',\n status: 'rejected',\n } satisfies OpenResult;\n }\n\n const existingBindingSlot = findBindingSlot(activeViewState, binding);\n\n if (existingBindingSlot) {\n const duplicatePolicy =\n this.resolveDuplicateEntity?.({\n activeViewState,\n binding,\n existingSlot: existingBindingSlot,\n requestedSlot: openOptions?.targetSlot,\n state: current,\n }) ?? this.duplicateEntityPolicy;\n\n if (duplicatePolicy === 'reject') {\n return {\n reason: 'duplicate-binding',\n status: 'rejected',\n } satisfies OpenResult;\n }\n\n if (duplicatePolicy === 'move' && existingBindingSlot !== targetSlot) {\n this.state.next((nextState) =>\n mergeViewState(\n nextState,\n clearSlotBinding(toViewState(nextState), existingBindingSlot),\n ),\n );\n }\n }\n\n const replacedBinding = toViewState(this.state.getLatestValue()).slotBindings[\n targetSlot\n ];\n\n this.state.next((nextState) => {\n const currentViewState = toViewState(nextState);\n const currentSlotBinding = currentViewState.slotBindings[targetSlot];\n const withHistory =\n currentSlotBinding && !isSameSlotBinding(currentSlotBinding, binding)\n ? pushSlotHistory(currentViewState, targetSlot, currentSlotBinding)\n : currentViewState;\n const nextViewState = clearSlotForwardHistory(\n upsertSlotBinding(withHistory, targetSlot, binding),\n targetSlot,\n );\n\n return mergeViewState(nextState, nextViewState);\n });\n\n if (replacedBinding && replacedBinding !== binding) {\n return {\n replaced: replacedBinding,\n slot: targetSlot,\n status: 'replaced',\n } satisfies OpenResult;\n }\n\n return {\n slot: targetSlot,\n status: 'opened',\n } satisfies OpenResult;\n };\n}\n","import { getChatViewEntityBinding } from '../ChatView';\nimport { useLayoutViewState } from './useLayoutViewState';\n\nimport type { ChatView, ChatViewEntityBinding } from '../ChatView';\nimport type { SlotName } from '../layoutController/layoutControllerTypes';\n\ntype SlotEntityKind = ChatViewEntityBinding['kind'];\n\ntype SlotEntitySourceMap = {\n [TKind in SlotEntityKind]: Extract<ChatViewEntityBinding, { kind: TKind }>['source'];\n};\n\ntype SlotEntitySourceByKind<TKind extends SlotEntityKind> = SlotEntitySourceMap[TKind];\n\ntype UseSlotEntityOptions<TKind extends SlotEntityKind> = {\n /**\n * Entity kind to resolve from ChatView slot bindings.\n */\n kind: TKind;\n /**\n * Optional explicit slot to inspect.\n *\n * - when provided: only that slot is checked\n * - when omitted: slots are checked in active view order (`availableSlots`)\n */\n slot?: SlotName;\n /**\n * Optional explicit view to read slots from.\n *\n * - when omitted: the **active** view's slots are read\n * - when provided: that view's slots are read regardless of which view is active\n * (its layout state is retained across view switches). Useful for cross-view\n * concerns like URL sync that must not clear when another view is focused.\n */\n view?: ChatView;\n};\n\nconst resolveCandidateSlots = (\n slot: SlotName | undefined,\n availableSlots: SlotName[],\n) => {\n if (slot) return [slot];\n return availableSlots;\n};\n\nconst isEntityOfKind = <TKind extends SlotEntityKind>(\n entity: ChatViewEntityBinding | undefined,\n kind: TKind,\n): entity is Extract<ChatViewEntityBinding, { kind: TKind }> => entity?.kind === kind;\n\n/**\n * Resolves the `source` of the first matching ChatView entity binding.\n *\n * Behavior:\n * 1. Read active-view slot topology/bindings via `useLayoutViewState()`.\n * 2. Build candidate slots:\n * - `[slot]` when explicit `slot` is provided\n * - `availableSlots` order when `slot` is omitted\n * 3. Return `entity.source` for the first binding whose `kind` matches.\n * 4. Return `undefined` when no match exists.\n *\n * Why this exists:\n * - Keeps slot-to-entity lookup consistent and centralized for ChatView-aware\n * components (e.g. `ChannelSlot`, `ThreadSlot`).\n * - Preserves type safety by narrowing returned `source` based on `kind`.\n *\n * @example\n * ```tsx\n * const channel = useSlotEntity({ kind: 'channel' });\n * // channel is Stream Channel | undefined\n * ```\n *\n * @example\n * ```tsx\n * const thread = useSlotEntity({ kind: 'thread', slot: 'main-thread' });\n * // thread is Thread | undefined from that slot only\n * ```\n *\n * @example\n * ```tsx\n * const list = useSlotEntity({ kind: 'channelList', slot: 'list' });\n * // list is { view?: ChatView } | undefined\n * ```\n */\nexport const useSlotEntity = <TKind extends SlotEntityKind>({\n kind,\n slot,\n view,\n}: UseSlotEntityOptions<TKind>): SlotEntitySourceByKind<TKind> | undefined => {\n const { availableSlots, slotBindings } = useLayoutViewState(view);\n\n const candidateSlots = resolveCandidateSlots(slot, availableSlots);\n for (const candidateSlot of candidateSlots) {\n const entity = getChatViewEntityBinding(slotBindings[candidateSlot]);\n if (isEntityOfKind(entity, kind)) {\n // Safe due to discriminant check on `kind` above.\n return entity.source as SlotEntitySourceByKind<TKind>;\n }\n }\n\n return undefined;\n};\n\n/**\n * Like {@link useSlotEntity}, but resolves the source of the **topmost layer** on a slot (the last\n * entry of `slotLayers[slot]`) rather than its base binding — when that layer's `kind` matches.\n *\n * Layers stack above the base binding and cover it while it stays mounted (see\n * `ChatViewNavigation.pushLayer`). Read the base with `useSlotEntity`/`useSlotChannel`/… and the\n * overlay on top with this hook, then render the overlay covering the base.\n *\n * @example\n * ```tsx\n * const profile = useSlotTopLayerEntity({ kind: 'userProfile', slot: 'main-thread' });\n * // profile is { userId } | undefined — present while a userProfile layer covers the slot\n * ```\n */\nexport const useSlotTopLayerEntity = <TKind extends SlotEntityKind>({\n kind,\n slot,\n view,\n}: UseSlotEntityOptions<TKind>): SlotEntitySourceByKind<TKind> | undefined => {\n const { availableSlots, slotLayers } = useLayoutViewState(view);\n\n for (const candidateSlot of resolveCandidateSlots(slot, availableSlots)) {\n const layers = slotLayers?.[candidateSlot];\n const topBinding = layers?.[layers.length - 1];\n const entity = getChatViewEntityBinding(topBinding);\n if (isEntityOfKind(entity, kind)) {\n // Safe due to discriminant check on `kind` above.\n return entity.source as SlotEntitySourceByKind<TKind>;\n }\n }\n\n return undefined;\n};\n\n/**\n * Resolves **every** matching ChatView entity binding as `{ slot, source }` pairs\n * (in active-view `availableSlots` order, or only `slot` when provided).\n *\n * Prefer this over `useSlotEntity` when several slots can hold the same kind (e.g.\n * two channels side by side) — it never collapses the set to \"the first match\".\n *\n * @example\n * ```tsx\n * const channels = useSlotEntities({ kind: 'channel' });\n * // channels is Array<{ slot: SlotName; source: Channel }>\n * ```\n */\nexport const useSlotEntities = <TKind extends SlotEntityKind>({\n kind,\n slot,\n view,\n}: UseSlotEntityOptions<TKind>): Array<{\n slot: SlotName;\n source: SlotEntitySourceByKind<TKind>;\n}> => {\n const { availableSlots, slotBindings } = useLayoutViewState(view);\n\n return resolveCandidateSlots(slot, availableSlots).reduce<\n Array<{ slot: SlotName; source: SlotEntitySourceByKind<TKind> }>\n >((matches, candidateSlot) => {\n const entity = getChatViewEntityBinding(slotBindings[candidateSlot]);\n if (isEntityOfKind(entity, kind)) {\n // Safe due to discriminant check on `kind` above.\n matches.push({\n slot: candidateSlot,\n source: entity.source as SlotEntitySourceByKind<TKind>,\n });\n }\n return matches;\n }, []);\n};\n\n/**\n * Convenience wrapper for `useSlotEntity({ kind: 'channel' })` — the channel in a\n * single slot. Pass `slot` to be precise; omitting it returns the first channel slot\n * (only meaningful for a single-channel workspace). For multiple channels, use\n * `useSlotChannels`.\n *\n * @example\n * ```tsx\n * const channel = useSlotChannel({ slot: 'main' });\n * ```\n */\nexport const useSlotChannel = (options?: { slot?: SlotName; view?: ChatView }) =>\n useSlotEntity({ kind: 'channel', slot: options?.slot, view: options?.view });\n\n/**\n * Every slot currently holding a channel, as `{ channel, slot }` pairs. Robust for\n * side-by-side channels — the caller renders one panel per entry (and, for a\n * single-channel workspace, gets an array of length ≤ 1).\n *\n * @example\n * ```tsx\n * useSlotChannels().map(({ channel, slot }) => <ChannelPanel key={slot} channel={channel} />)\n * ```\n */\nexport const useSlotChannels = (options?: { slot?: SlotName; view?: ChatView }) =>\n useSlotEntities({ kind: 'channel', slot: options?.slot, view: options?.view }).map(\n ({ slot, source }) => ({\n channel: source,\n slot,\n }),\n );\n\n/**\n * Convenience wrapper for `useSlotEntity({ kind: 'thread' })`.\n *\n * @example\n * ```tsx\n * const thread = useSlotThread();\n * ```\n */\nexport const useSlotThread = (options?: { slot?: SlotName; view?: ChatView }) =>\n useSlotEntity({ kind: 'thread', slot: options?.slot, view: options?.view });\n\n/**\n * Every slot currently holding a thread, as `{ thread, slot }` pairs — the thread\n * analog of `useSlotChannels`. The caller renders one thread panel per entry.\n *\n * @example\n * ```tsx\n * useSlotThreads().map(({ thread, slot }) => (\n * <Thread key={slot} thread={thread}><ThreadHeader /><MessageList /></Thread>\n * ))\n * ```\n */\nexport const useSlotThreads = (options?: { slot?: SlotName; view?: ChatView }) =>\n useSlotEntities({ kind: 'thread', slot: options?.slot, view: options?.view }).map(\n ({ slot, source }) => ({\n slot,\n thread: source,\n }),\n );\n","import clsx from 'clsx';\nimport React, {\n type ComponentType,\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useStableId } from '../../components/UtilityComponents/useStableId';\n\nimport { Button, type ButtonProps } from '../../components/Button';\nimport { UnreadCountBadge } from '../../components/Threads/UnreadCountBadge';\nimport {\n DialogManagerProvider,\n useChatContext,\n useComponentContextIcons,\n useTranslationContext,\n} from '../../context';\nimport { useStateStore } from '../../store';\n// MERGE-RECONCILE: this file keeps PR #2909's slot/layout navigation architecture\n// (LayoutController / WorkspaceLayout / ChatViewNavigationProvider, context shape\n// activeView/setActiveView/layoutController) as the base, and adopts release-v15's\n// navigation-landmark accessibility (ChatViewA11yContext with chatViewPanelIds only;\n// role=\"navigation\" + aria-current selector, no tab/tabpanel wiring) and Phosphor\n// icons (../Icons) on top. PR's `Icon` from '../Threads/icons' was removed and is\n// no longer imported. Reconcile if the layout navigation is later dropped in favor of the\n// simpler release-v15 ChatView.\nimport {\n type ChatViewA11yContextValue,\n createChatViewA11yContextValue,\n DEFAULT_CHAT_VIEW_A11Y_CONTEXT_VALUE,\n} from './ChatView.a11y.utility';\nimport { ChatViewNavigationProvider } from './ChatViewNavigationContext';\nimport { WorkspaceNavigationAdapter } from './workspaceNavigationAdapter';\nimport type { DeriveWorkspaceNavigation } from './workspaceNavigationAdapter';\nimport { WorkspaceLayout } from './layout/WorkspaceLayout';\nimport {\n createLayoutRuntimeState,\n LayoutController as LayoutControllerClass,\n} from './layoutController/LayoutController';\nimport { createChatViewSlotBinding, getChatViewEntityBinding } from './slotBinding';\nimport {\n renderSlotFromRegistry,\n resolveSlotKindRegistry,\n SlotRegistryContext,\n} from './slotRegistry';\n\nimport type { PropsWithChildren } from 'react';\nimport type { Thread, ThreadManagerState } from 'stream-chat';\nimport type {\n ChatViewLayoutState,\n DuplicateEntityPolicy,\n LayoutController,\n LayoutRuntimeState,\n LayoutSlotBinding,\n ResolveDuplicateEntity,\n SlotName,\n} from './layoutController/layoutControllerTypes';\nimport type {\n ChatViewEntityBinding,\n ChatViewSlotFallbackProps,\n ChatViewSlotRenderers,\n LayoutDescriptor,\n} from './slotBinding';\nimport { getLayoutViewState } from './hooks';\nimport { requireContext } from '../../context/requireContext';\n\n// Re-export the binding primitives + renderer types from their leaf modules so\n// existing `stream-chat-react` imports keep resolving through ChatView.\nexport * from './slotBinding';\nexport type { SlotKindDefinition, SlotKindRegistry } from './slotRegistry';\nexport { defaultSlotKindRegistry } from './slotRegistry';\n\nexport type ChatView = 'channels' | 'threads';\n\n/**\n * ChatView switches between two independent surfaces, not panels in a single\n * WAI-ARIA Tabs widget. The selector is a navigation landmark\n * (`role=\"navigation\"`) holding one button per surface; the button for the\n * surface currently shown is marked with `aria-current=\"true\"` (the \"current\n * item in a set\" — not `\"page\"`, since this SDK view may be embedded in a larger\n * host UI that owns the page). View wrappers stay plain `<div>`s (id only, from\n * `chatViewPanelIds`) to avoid leaking ancestor context into descendants like\n * the composer textarea.\n */\n\n// Entity-binding primitives + per-kind renderer types live in the leaf module\n// `./slotBinding` (so the generic <Slot> and the renderer registry can consume\n// them without an import cycle). Re-exported here for back-compat.\nexport type ChatViewEntityInferer = {\n kind: ChatViewEntityBinding['kind'];\n match: (source: unknown) => boolean;\n toBinding: (source: unknown) => ChatViewEntityBinding;\n};\n\nexport type ChatViewBuiltinLayout = 'nav-rail-entity-list-workspace';\n\nexport type ChatViewProps = PropsWithChildren<{\n /**\n * Optional id for the dialog manager ChatView hosts inside its `.str-chat` root. Dialogs\n * opened by view content (context menus, member actions, …) resolve to this manager and\n * their overlays render under `.str-chat`, so the SDK's `.str-chat`-scoped dialog CSS\n * applies. Omit for a local (unregistered) manager.\n */\n /**\n * Optionally override the {@link WorkspaceNavigation} the ChatView provides — e.g. make\n * `openChannel`/`openThread` open beside the current content on ⌘/ctrl-click. Receives the\n * SDK-derived navigation and returns only the members to override — the rest keep their default.\n * Must be referentially stable.\n */\n deriveWorkspaceNavigation?: DeriveWorkspaceNavigation;\n dialogManagerId?: string;\n duplicateEntityPolicy?: DuplicateEntityPolicy;\n entityInferrers?: ChatViewEntityInferer[];\n layout?: ChatViewBuiltinLayout;\n layoutController?: LayoutController;\n layouts?: LayoutDescriptor[];\n resolveDuplicateEntity?: ResolveDuplicateEntity;\n SlotFallback?: ComponentType<ChatViewSlotFallbackProps>;\n slotFallbackComponents?: Partial<\n Record<string, ComponentType<ChatViewSlotFallbackProps>>\n >;\n slotRenderers?: ChatViewSlotRenderers;\n /**\n * Per-view content (D8). The active view's node is rendered inside an a11y tabpanel;\n * that view's slot topology comes from the matching `layouts` descriptor, and\n * `viewActionSlotResolvers[view]` (if any) is registered while it is active. Replaces\n * the removed `ChatView.Channels`/`ChatView.Threads` gated components — the app writes\n * one mapping instead of two hand-composed, activeView-gated trees.\n */\n views?: Partial<Record<ChatView, ReactNode>>;\n /** Optional per-view navigation action slot resolvers. */\n viewActionSlotResolvers?: Partial<Record<ChatView, ViewActionSlotResolvers>>;\n}>;\n\nexport type ChatViewNavigationAction = 'openChannel' | 'openThread';\n\nexport type ResolveViewActionTargetSlotArgs = {\n action: ChatViewNavigationAction;\n activeView: ChatView;\n availableSlots: SlotName[];\n requestedSlot?: SlotName;\n slotBindings: Record<SlotName, LayoutSlotBinding | undefined>;\n slotNames?: SlotName[];\n};\n\nexport type ResolveViewActionTargetSlot = (\n args: ResolveViewActionTargetSlotArgs,\n) => SlotName | undefined;\n\nexport type ViewActionSlotResolvers = Partial<\n Record<ChatViewNavigationAction, ResolveViewActionTargetSlot>\n>;\n\ntype ChatViewContextValue = {\n activeView: ChatView;\n entityInferers: ChatViewEntityInferer[];\n layoutController: LayoutController;\n registerViewActionSlotResolvers: (\n view: ChatView,\n resolvers?: ViewActionSlotResolvers,\n ) => void;\n resolveActionTargetSlot: (\n view: ChatView,\n args: ResolveViewActionTargetSlotArgs,\n ) => SlotName | undefined;\n setActiveView: (cv: ChatView) => void;\n};\n\n// No default: a shared `LayoutController` would let unrelated subtrees write to one instance.\nexport const ChatViewContext = createContext<ChatViewContextValue | undefined>(undefined);\nconst ChatViewA11yContext = createContext<ChatViewA11yContextValue>(\n DEFAULT_CHAT_VIEW_A11Y_CONTEXT_VALUE,\n);\n\nexport const useChatViewContext = () =>\n requireContext(useContext(ChatViewContext), 'useChatViewContext', 'ChatView');\n\nconst activeViewSelector = ({ activeView }: ChatViewLayoutState) => ({ activeView });\nconst workspaceLayoutStateSelector = (state: ChatViewLayoutState) => ({\n activeView: state.activeView,\n viewState: getLayoutViewState(state),\n});\n\nconst DefaultSlotFallback = () => (\n <div className='str-chat__chat-view__workspace-layout-slot-fallback'>\n Select a channel to start messaging\n </div>\n);\n\nconst resolveSlotFallbackComponent = ({\n slot,\n SlotFallback,\n slotFallbackComponents,\n}: {\n SlotFallback?: ComponentType<ChatViewSlotFallbackProps>;\n slot: string;\n slotFallbackComponents?: Partial<\n Record<string, ComponentType<ChatViewSlotFallbackProps>>\n >;\n}) => slotFallbackComponents?.[slot] ?? SlotFallback ?? DefaultSlotFallback;\n\nconst BUILTIN_WORKSPACE_LAYOUT: ChatViewBuiltinLayout = 'nav-rail-entity-list-workspace';\nconst DEFAULT_LIST_BINDING_KEY = 'list';\n\n// D7 — the built-in views expressed as declarative layout descriptors. Each layout\n// seeds its own list kind into its first slot (channels -> channelList,\n// threads -> threadList); the kind picks the renderer, so there is no `source.view`.\nconst LIST_KIND_BY_LAYOUT: Record<ChatView, 'channelList' | 'threadList'> = {\n channels: 'channelList',\n threads: 'threadList',\n};\nconst buildDefaultLayoutDescriptors = (slots: SlotName[]): LayoutDescriptor[] => {\n const seedSlot = slots[0];\n return (['channels', 'threads'] as const).map((id) => ({\n id,\n initialBindings: seedSlot\n ? {\n [seedSlot]: {\n key: DEFAULT_LIST_BINDING_KEY,\n kind: LIST_KIND_BY_LAYOUT[id],\n source: {},\n },\n }\n : undefined,\n slots,\n }));\n};\n\n// Without app `layouts`, each view has a single slot.\nconst DEFAULT_SLOT_NAMES: SlotName[] = ['slot1'];\nconst DEFAULT_LAYOUT_DESCRIPTORS = buildDefaultLayoutDescriptors(DEFAULT_SLOT_NAMES);\n\n// D7 — turn the declarative descriptors into seeded per-layout runtime state at\n// controller construction (replaces the imperative, lazy seed effect).\nconst seedLayoutsFromDescriptors = (\n descriptors: LayoutDescriptor[],\n): Partial<Record<ChatView, LayoutRuntimeState>> =>\n descriptors.reduce<Partial<Record<ChatView, LayoutRuntimeState>>>((acc, descriptor) => {\n const slotBindings: Record<SlotName, LayoutSlotBinding | undefined> = {};\n Object.entries(descriptor.initialBindings ?? {}).forEach(([slot, entity]) => {\n if (entity) slotBindings[slot] = createChatViewSlotBinding(entity);\n });\n acc[descriptor.id] = createLayoutRuntimeState({\n availableSlots: descriptor.slots,\n slotBindings,\n slotNames: descriptor.slots,\n });\n return acc;\n }, {});\n\nexport const ChatView = ({\n children,\n deriveWorkspaceNavigation,\n dialogManagerId,\n duplicateEntityPolicy,\n entityInferrers = [],\n layout,\n layoutController,\n layouts: layoutsProp,\n resolveDuplicateEntity,\n SlotFallback,\n slotFallbackComponents,\n slotRenderers,\n viewActionSlotResolvers: viewActionSlotResolversProp,\n views,\n}: ChatViewProps) => {\n const { theme } = useChatContext();\n const chatViewId = useStableId();\n const a11yValue = useMemo(\n () => createChatViewA11yContextValue(chatViewId),\n [chatViewId],\n );\n const [viewActionSlotResolvers, setViewActionSlotResolvers] = useState<\n Partial<Record<ChatView, ViewActionSlotResolvers>>\n >({});\n const layoutDescriptors = layoutsProp ?? DEFAULT_LAYOUT_DESCRIPTORS;\n\n // Seed every layout's slots and bindings from its descriptor up front when the SDK owns per-view\n // rendering (the built-in workspace or the `views` map), or when the app declares its layouts. In\n // bare `children` mode without `layouts` the app renders its own lists, so the channels view gets\n // the default slot and no list binding.\n const seedFromDescriptors =\n !!layoutsProp || layout === BUILTIN_WORKSPACE_LAYOUT || !!views;\n\n const internalLayoutController = useMemo(\n () =>\n new LayoutControllerClass({\n duplicateEntityPolicy,\n initialState: {\n activeView: 'channels',\n layouts: seedFromDescriptors\n ? seedLayoutsFromDescriptors(layoutDescriptors)\n : {\n channels: createLayoutRuntimeState({\n availableSlots: DEFAULT_SLOT_NAMES,\n slotNames: DEFAULT_SLOT_NAMES,\n }),\n },\n },\n resolveDuplicateEntity,\n }),\n [\n duplicateEntityPolicy,\n layoutDescriptors,\n resolveDuplicateEntity,\n seedFromDescriptors,\n ],\n );\n\n const effectiveLayoutController = layoutController ?? internalLayoutController;\n\n const { activeView } =\n useStateStore(effectiveLayoutController.state, activeViewSelector) ??\n activeViewSelector(effectiveLayoutController.state.getLatestValue());\n\n const setActiveView = useCallback(\n (cv: ChatView) => {\n // Per-view layouts are retained across switches (that is the point of the\n // `layouts` map): each view keeps its own slot bindings so returning to it\n // restores what was open. We must NOT release the source view's channel/thread\n // bindings here — display is slot-based, so releasing on switch would drop the\n // open channel/thread (e.g. `?channel=` cleared when moving to the threads view).\n effectiveLayoutController.setActiveView(cv);\n },\n [effectiveLayoutController],\n );\n\n const registerViewActionSlotResolvers = useCallback(\n (view: ChatView, resolvers?: ViewActionSlotResolvers) => {\n setViewActionSlotResolvers((current) => {\n const previous = current[view];\n if (previous === resolvers) return current;\n\n const next = { ...current };\n if (!resolvers) delete next[view];\n else next[view] = resolvers;\n return next;\n });\n },\n [],\n );\n\n const resolveActionTargetSlot = useCallback(\n (view: ChatView, args: ResolveViewActionTargetSlotArgs) =>\n viewActionSlotResolvers[view]?.[args.action]?.(args),\n [viewActionSlotResolvers],\n );\n\n const value = useMemo(\n () => ({\n activeView,\n entityInferers: entityInferrers,\n layoutController: effectiveLayoutController,\n registerViewActionSlotResolvers,\n resolveActionTargetSlot,\n setActiveView,\n }),\n [\n activeView,\n effectiveLayoutController,\n entityInferrers,\n registerViewActionSlotResolvers,\n resolveActionTargetSlot,\n setActiveView,\n ],\n );\n\n // Register per-view navigation action resolvers supplied via the `views`-mode prop.\n useEffect(() => {\n if (!viewActionSlotResolversProp) return;\n const entries = Object.entries(viewActionSlotResolversProp) as Array<\n [ChatView, ViewActionSlotResolvers | undefined]\n >;\n entries.forEach(([view, resolvers]) =>\n registerViewActionSlotResolvers(view, resolvers),\n );\n return () => {\n entries.forEach(([view]) => registerViewActionSlotResolvers(view, undefined));\n };\n }, [registerViewActionSlotResolvers, viewActionSlotResolversProp]);\n\n const workspaceLayoutState =\n useStateStore(effectiveLayoutController.state, workspaceLayoutStateSelector) ??\n workspaceLayoutStateSelector(effectiveLayoutController.state.getLatestValue());\n const { viewState } = workspaceLayoutState;\n\n const slotKindRegistry = useMemo(\n () => resolveSlotKindRegistry(slotRenderers),\n [slotRenderers],\n );\n\n // D8 — the active view's content is rendered in a single plain container (a\n // navigation-landmark view wrapper with a stable id from `chatViewPanelIds`, no\n // tab/tabpanel role); per-view slot topology is seeded from its `layouts` descriptor.\n // Always-on `children` (e.g. sync helpers, dialog managers) render alongside it,\n // regardless of the active view.\n const activeViewContent = views?.[activeView];\n\n const content = views ? (\n <>\n {children}\n {activeViewContent != null && (\n <div\n className={`str-chat__chat-view__${activeView}`}\n id={a11yValue.chatViewPanelIds[activeView]}\n >\n {activeViewContent}\n </div>\n )}\n </>\n ) : layout === BUILTIN_WORKSPACE_LAYOUT ? (\n (() => {\n const slots = viewState.availableSlots.map((slot) => {\n const content = renderSlotFromRegistry(\n getChatViewEntityBinding(viewState.slotBindings[slot]),\n slot,\n slotKindRegistry,\n );\n const Fallback = resolveSlotFallbackComponent({\n slot,\n SlotFallback,\n slotFallbackComponents,\n });\n\n return {\n content: content ?? <Fallback slot={slot} />,\n slot,\n };\n });\n\n return <WorkspaceLayout navRail={<ChatViewSelector />} slots={slots} />;\n })()\n ) : (\n children\n );\n\n return (\n <ChatViewA11yContext.Provider value={a11yValue}>\n <ChatViewContext.Provider value={value}>\n <SlotRegistryContext.Provider value={slotKindRegistry}>\n <ChatViewNavigationProvider>\n {/* Expose the slot-agnostic WorkspaceNavigation adapter (D1) to the subtree so core\n components navigate through it rather than the ChatView slot API directly. */}\n <WorkspaceNavigationAdapter\n deriveWorkspaceNavigation={deriveWorkspaceNavigation}\n >\n <div className={clsx('str-chat', theme, 'str-chat__chat-view')}>\n {/* Host the chat-view dialog manager INSIDE `.str-chat` so dialogs opened by\n view content (context menus, member actions, …) portal here and inherit the\n `.str-chat`-scoped dialog CSS. Nested managers (e.g. MessageList's) still win\n where present. */}\n <DialogManagerProvider id={dialogManagerId}>\n {content}\n </DialogManagerProvider>\n </div>\n </WorkspaceNavigationAdapter>\n </ChatViewNavigationProvider>\n </SlotRegistryContext.Provider>\n </ChatViewContext.Provider>\n </ChatViewA11yContext.Provider>\n );\n};\n\n// thread business logic that's impossible to keep within client but encapsulated for ease of use\nexport const useActiveThread = ({ activeThread }: { activeThread?: Thread }) => {\n useEffect(() => {\n if (!activeThread) return;\n\n const handleVisibilityChange = () => {\n if (document.visibilityState === 'visible' && document.hasFocus()) {\n activeThread.activate();\n }\n if (document.visibilityState === 'hidden' || !document.hasFocus()) {\n activeThread.deactivate();\n }\n };\n\n handleVisibilityChange();\n\n window.addEventListener('focus', handleVisibilityChange);\n window.addEventListener('blur', handleVisibilityChange);\n return () => {\n activeThread.deactivate();\n window.removeEventListener('blur', handleVisibilityChange);\n window.removeEventListener('focus', handleVisibilityChange);\n };\n }, [activeThread]);\n};\n\n// D8 — `ThreadAdapter` is retired: the threads view renders the thread(s) bound in\n// thread slots (via `useSlotThreads` + `Thread`), so there is no single\n// `activeThread` adapter. `useActiveThread` remains for callers that render a thread\n// panel and want focus-driven activate/deactivate.\n\nexport const ChatViewSelectorButton = ({\n ActiveIcon,\n children,\n className,\n Icon,\n iconOnly = true,\n isActive,\n text,\n ...props\n}: ButtonProps & {\n ActiveIcon?: ComponentType;\n iconOnly?: boolean;\n Icon?: ComponentType;\n isActive?: boolean;\n text?: string;\n}) => {\n const SelectorIcon = isActive && ActiveIcon ? ActiveIcon : Icon;\n const shouldShowTooltip = !!text && iconOnly;\n\n return (\n <div className='str-chat__chat-view__selector-button-container'>\n <Button\n appearance='ghost'\n aria-current={isActive || undefined}\n aria-label={props['aria-label'] ?? (shouldShowTooltip ? text : undefined)}\n className={clsx('str-chat__chat-view__selector-button', className)}\n variant='secondary'\n {...props}\n >\n {children ?? (SelectorIcon && <SelectorIcon />)}\n {!iconOnly && text && (\n <div className='str-chat__chat-view__selector-button-text'>{text}</div>\n )}\n </Button>\n {shouldShowTooltip && (\n <div\n aria-hidden='true'\n className='str-chat__chat-view__selector-button-tooltip str-chat__tooltip'\n >\n {text}\n </div>\n )}\n </div>\n );\n};\n\nconst unreadThreadCountSelector = ({ unreadThreadCount }: ThreadManagerState) => ({\n unreadThreadCount,\n});\n\nexport type ChatViewSelectorItemProps = {\n iconOnly?: boolean;\n};\n\nexport const ChatViewChannelsSelectorButton = ({\n iconOnly = true,\n}: ChatViewSelectorItemProps) => {\n const { IconMessageBubble, IconMessageBubbleFill } = useComponentContextIcons();\n const { activeView, setActiveView } = useChatViewContext();\n const { t } = useTranslationContext();\n\n const isActive = activeView === 'channels';\n\n return (\n <ChatViewSelectorButton\n ActiveIcon={IconMessageBubbleFill}\n aria-label={t(\n 'slotLayout.chatView.openChannelsView.ariaLabel',\n 'Open channels view',\n )}\n Icon={IconMessageBubble}\n iconOnly={iconOnly}\n isActive={isActive}\n onClick={() => setActiveView('channels')}\n onPointerDown={() => setActiveView('channels')}\n text={t('slotLayout.chatView.channels.text', 'Channels')}\n />\n );\n};\n\nexport const ChatViewThreadsSelectorButton = ({\n iconOnly = true,\n}: ChatViewSelectorItemProps) => {\n const { IconThread, IconThreadFill } = useComponentContextIcons();\n const { client } = useChatContext();\n const { unreadThreadCount } = useStateStore(\n client.threads.state,\n unreadThreadCountSelector,\n ) ?? {\n unreadThreadCount: 0,\n };\n const { activeView, setActiveView } = useChatViewContext();\n const { t } = useTranslationContext();\n\n const isActive = activeView === 'threads';\n const label =\n unreadThreadCount > 0\n ? t('slotLayout.chatView.openThreadsViewUnread.ariaLabel', {\n count: unreadThreadCount,\n defaultValue_one: 'Open threads view, {{ count }} unread thread',\n defaultValue_other: 'Open threads view, {{ count }} unread threads',\n })\n : t('slotLayout.chatView.openThreadsView.ariaLabel', 'Open threads view');\n\n return (\n <ChatViewSelectorButton\n ActiveIcon={IconThreadFill}\n aria-label={label}\n Icon={IconThread}\n iconOnly={iconOnly}\n isActive={isActive}\n onClick={() => setActiveView('threads')}\n onPointerDown={() => setActiveView('threads')}\n text={t('common.threads.text', 'Threads')}\n >\n <UnreadCountBadge count={unreadThreadCount} position='top-right'>\n {isActive ? <IconThreadFill /> : <IconThread />}\n </UnreadCountBadge>\n </ChatViewSelectorButton>\n );\n};\n\nexport type ChatViewSelectorItem = {\n Component: React.ComponentType<ChatViewSelectorItemProps>;\n type: string & {};\n};\n\nexport type ChatViewSelectorEntry = ChatViewSelectorItem;\n\nexport type ChatViewSelectorProps = {\n iconOnly?: boolean;\n itemSet?: ChatViewSelectorEntry[];\n};\n\nexport const defaultChatViewSelectorItemSet: ChatViewSelectorEntry[] = [\n {\n Component: ChatViewChannelsSelectorButton,\n type: 'channels' as string & {},\n },\n {\n Component: ChatViewThreadsSelectorButton,\n type: 'threads' as string & {},\n },\n];\n\nconst ChatViewSelector = ({\n iconOnly = true,\n itemSet = defaultChatViewSelectorItemSet,\n}: ChatViewSelectorProps) => {\n const { t } = useTranslationContext();\n\n return (\n <div\n aria-label={t(\n 'slotLayout.chatView.chatViewControls.ariaLabel',\n 'Chat view controls',\n )}\n className='str-chat__chat-view__selector'\n role='navigation'\n >\n {itemSet.map(({ Component, type }) => (\n <Component iconOnly={iconOnly} key={type} />\n ))}\n </div>\n );\n};\n\nChatView.Selector = ChatViewSelector;\n","import type {\n ChatViewLayoutSnapshot,\n ChatViewLayoutState,\n DeserializeLayoutEntityBinding,\n LayoutController,\n LayoutRuntimeState,\n RestoreLayoutStateOptions,\n SerializedLayoutRuntimeState,\n SerializedLayoutSlotBinding,\n SerializeLayoutEntityBinding,\n SerializeLayoutStateOptions,\n} from './layoutControllerTypes';\nimport type { ChatView } from '../ChatView';\n\nconst defaultSerializeEntityBinding: SerializeLayoutEntityBinding = (binding) => ({\n key: binding.key,\n payload: binding.payload,\n});\n\nconst defaultDeserializeEntityBinding: DeserializeLayoutEntityBinding = (binding) =>\n binding;\n\nconst serializeBindings = (\n bindings: LayoutRuntimeState['slotBindings'],\n serializeEntityBinding: SerializeLayoutEntityBinding,\n) =>\n Object.entries(bindings ?? {}).reduce<\n Record<string, SerializedLayoutSlotBinding | undefined>\n >((acc, [slot, binding]) => {\n acc[slot] = binding ? serializeEntityBinding(binding) : undefined;\n return acc;\n }, {});\n\nconst serializeHistory = (\n history: LayoutRuntimeState['slotHistory'],\n serializeEntityBinding: SerializeLayoutEntityBinding,\n) =>\n Object.entries(history ?? {}).reduce<\n Record<string, SerializedLayoutSlotBinding[] | undefined>\n >((acc, [slot, entities]) => {\n if (!entities?.length) {\n acc[slot] = undefined;\n return acc;\n }\n const serialized = entities\n .map(serializeEntityBinding)\n .filter((binding): binding is SerializedLayoutSlotBinding => !!binding);\n acc[slot] = serialized.length ? serialized : undefined;\n return acc;\n }, {});\n\nconst serializeRuntimeState = (\n runtime: LayoutRuntimeState,\n serializeEntityBinding: SerializeLayoutEntityBinding,\n): SerializedLayoutRuntimeState => ({\n availableSlots: [...runtime.availableSlots],\n hiddenSlots: { ...runtime.hiddenSlots },\n slotBindings: serializeBindings(runtime.slotBindings, serializeEntityBinding),\n slotForwardHistory: serializeHistory(\n runtime.slotForwardHistory,\n serializeEntityBinding,\n ),\n slotHistory: serializeHistory(runtime.slotHistory, serializeEntityBinding),\n slotMeta: { ...runtime.slotMeta },\n slotNames: runtime.slotNames ? [...runtime.slotNames] : undefined,\n});\n\nconst deserializeBindings = (\n bindings: SerializedLayoutRuntimeState['slotBindings'],\n deserializeEntityBinding: DeserializeLayoutEntityBinding,\n) =>\n Object.entries(bindings ?? {}).reduce<LayoutRuntimeState['slotBindings']>(\n (acc, [slot, binding]) => {\n acc[slot] = binding ? deserializeEntityBinding(binding) : undefined;\n return acc;\n },\n {},\n );\n\nconst deserializeHistory = (\n history: SerializedLayoutRuntimeState['slotHistory'],\n deserializeEntityBinding: DeserializeLayoutEntityBinding,\n) =>\n Object.entries(history ?? {}).reduce<LayoutRuntimeState['slotHistory']>(\n (acc, [slot, entities]) => {\n if (!entities?.length) {\n acc[slot] = undefined;\n return acc;\n }\n const deserialized = entities\n .map(deserializeEntityBinding)\n .filter((binding): binding is NonNullable<typeof binding> => !!binding);\n acc[slot] = deserialized.length ? deserialized : undefined;\n return acc;\n },\n {},\n );\n\nconst deserializeRuntimeState = (\n runtime: SerializedLayoutRuntimeState,\n deserializeEntityBinding: DeserializeLayoutEntityBinding,\n): LayoutRuntimeState => ({\n availableSlots: [...runtime.availableSlots],\n hiddenSlots: { ...runtime.hiddenSlots },\n slotBindings: deserializeBindings(runtime.slotBindings, deserializeEntityBinding),\n slotForwardHistory: deserializeHistory(\n runtime.slotForwardHistory,\n deserializeEntityBinding,\n ),\n slotHistory: deserializeHistory(runtime.slotHistory, deserializeEntityBinding),\n slotMeta: { ...runtime.slotMeta },\n slotNames: runtime.slotNames ? [...runtime.slotNames] : undefined,\n});\n\nexport const serializeLayoutState = (\n state: ChatViewLayoutState,\n options: SerializeLayoutStateOptions = {},\n): ChatViewLayoutSnapshot => {\n const serializeEntityBinding =\n options.serializeEntityBinding ?? defaultSerializeEntityBinding;\n\n const layouts = Object.entries(state.layouts ?? {}).reduce<\n ChatViewLayoutSnapshot['layouts']\n >((acc, [view, runtime]) => {\n if (runtime) {\n acc[view as ChatView] = serializeRuntimeState(runtime, serializeEntityBinding);\n }\n return acc;\n }, {});\n\n return { activeView: state.activeView, layouts };\n};\n\nexport const restoreLayoutState = (\n snapshot: ChatViewLayoutSnapshot,\n options: RestoreLayoutStateOptions = {},\n): ChatViewLayoutState => {\n const deserializeEntityBinding =\n options.deserializeEntityBinding ?? defaultDeserializeEntityBinding;\n\n const layouts = Object.entries(snapshot.layouts ?? {}).reduce<\n NonNullable<ChatViewLayoutState['layouts']>\n >((acc, [view, runtime]) => {\n if (runtime) {\n acc[view as ChatView] = deserializeRuntimeState(runtime, deserializeEntityBinding);\n }\n return acc;\n }, {});\n\n return { activeView: snapshot.activeView, layouts };\n};\n\nexport const serializeLayoutControllerState = (\n controller: LayoutController,\n options?: SerializeLayoutStateOptions,\n) => serializeLayoutState(controller.state.getLatestValue(), options);\n\nexport const restoreLayoutControllerState = (\n controller: LayoutController,\n snapshot: ChatViewLayoutSnapshot,\n options?: RestoreLayoutStateOptions,\n) => {\n controller.state.next(() => restoreLayoutState(snapshot, options));\n};\n","import React from 'react';\n\nimport { useSlotChannel } from './hooks';\nimport { Channel as ChannelComponent, type ChannelProps } from '../../components/Channel';\nimport { WorkspacePanelProvider } from '../../context/WorkspaceNavigationContext';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\nimport type { SlotName } from './layoutController/layoutControllerTypes';\n\nexport type ChannelSlotProps = PropsWithChildren<\n Omit<ChannelProps, 'channel'> & {\n /** Rendered when no channel is bound to `slot`. */\n fallback?: ReactNode;\n /**\n * The layout slot this adapter renders. Always pass an explicit `slot` — a\n * generic list/workspace must be precise about which slot it displays (multiple\n * channels can be open side by side). Omitting it falls back to the first\n * channel slot and is only meaningful for a single-channel workspace.\n */\n slot?: SlotName;\n }\n>;\n\n/**\n * ChatView-aware channel adapter: renders the channel bound to `slot`.\n *\n * It only *displays* — it never adopts/moves a channel from another slot. Which\n * channel goes into which slot is decided by navigation (`open`). If your app\n * resolves channel instances directly from layout bindings (e.g. via custom\n * `slotRenderers`), render `<Channel channel={...} />` directly and skip this.\n */\nexport const ChannelSlot = ({\n children,\n fallback = null,\n slot,\n ...channelProps\n}: ChannelSlotProps) => {\n const channel = useSlotChannel({ slot });\n\n if (!channel) return <>{fallback}</>;\n\n return (\n <WorkspacePanelProvider panel={slot}>\n <ChannelComponent {...channelProps} channel={channel}>\n {children}\n </ChannelComponent>\n </WorkspacePanelProvider>\n );\n};\n","import React, { useEffect } from 'react';\n\nimport { useChatViewContext } from './ChatView';\nimport { useSlotThread } from './hooks';\nimport { Thread, type ThreadProps } from '../../components/Thread';\nimport { WorkspacePanelProvider } from '../../context/WorkspaceNavigationContext';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\nimport type { SlotName } from './layoutController/layoutControllerTypes';\n\nexport type ThreadSlotProps = PropsWithChildren<\n Omit<ThreadProps, 'thread'> & {\n fallback?: ReactNode;\n hideIfEmpty?: boolean;\n slot?: SlotName;\n }\n>;\n\nexport const ThreadSlot = ({\n children,\n fallback = null,\n hideIfEmpty = true,\n slot,\n ...threadProps\n}: ThreadSlotProps) => {\n const { layoutController } = useChatViewContext();\n const thread = useSlotThread({ slot });\n\n useEffect(() => {\n if (!slot || !hideIfEmpty) return;\n if (thread) layoutController.unhide(slot);\n else layoutController.hide(slot);\n }, [hideIfEmpty, layoutController, slot, thread]);\n\n if (!thread) return <>{fallback}</>;\n\n return (\n <WorkspacePanelProvider panel={slot}>\n <Thread {...threadProps} thread={thread}>\n {children}\n </Thread>\n </WorkspacePanelProvider>\n );\n};\n","import React, { useEffect } from 'react';\n\nimport { createChatViewSlotBinding, getChatViewEntityBinding } from './slotBinding';\nimport { useChatViewContext } from './ChatView';\nimport { useLayoutViewState } from './hooks/useLayoutViewState';\nimport { Slot } from './layout/Slot';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\nimport type { SlotName } from './layoutController/layoutControllerTypes';\n\nexport type ThreadListSlotProps = PropsWithChildren<{\n fallback?: ReactNode;\n slot?: SlotName;\n}>;\n\nconst LIST_BINDING_KEY = 'thread-list';\nconst LIST_ENTITY_KIND = 'threadList';\n\nexport const ThreadListSlot = ({\n children,\n fallback = null,\n slot,\n}: ThreadListSlotProps) => {\n const { layoutController } = useChatViewContext();\n const { availableSlots, slotBindings } = useLayoutViewState();\n\n const requestedSlot = slot && availableSlots.includes(slot) ? slot : undefined;\n const existingListSlot = availableSlots.find(\n (candidate) =>\n getChatViewEntityBinding(slotBindings[candidate])?.kind === LIST_ENTITY_KIND,\n );\n const firstFreeSlot = availableSlots.find((candidate) => !slotBindings[candidate]);\n const listSlot =\n requestedSlot ?? existingListSlot ?? firstFreeSlot ?? availableSlots[0];\n\n useEffect(() => {\n if (!listSlot) return;\n\n if (requestedSlot && existingListSlot && existingListSlot !== requestedSlot) {\n layoutController.release(existingListSlot);\n }\n\n const existingEntity = getChatViewEntityBinding(slotBindings[listSlot]);\n if (existingEntity?.kind === LIST_ENTITY_KIND) {\n return;\n }\n\n layoutController.bind(\n listSlot,\n createChatViewSlotBinding({\n key: LIST_BINDING_KEY,\n kind: LIST_ENTITY_KIND,\n source: {},\n }),\n );\n }, [existingListSlot, layoutController, listSlot, requestedSlot, slotBindings]);\n\n if (!listSlot) return <>{fallback}</>;\n\n return <Slot slot={listSlot}>{children ?? fallback}</Slot>;\n};\n"],"mappings":"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"}