stream-chat-react 14.5.0 → 14.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/dist/cjs/{ReactPlayerWrapper.963d6170.js → ReactPlayerWrapper.30240f76.js} +2 -2
  2. package/dist/cjs/{ReactPlayerWrapper.963d6170.js.map → ReactPlayerWrapper.30240f76.js.map} +1 -1
  3. package/dist/cjs/channel-detail.js +3007 -0
  4. package/dist/cjs/channel-detail.js.map +1 -0
  5. package/dist/cjs/emojis.js +5 -4
  6. package/dist/cjs/emojis.js.map +1 -1
  7. package/dist/cjs/index.js +1804 -4064
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/useChannelHeaderOnlineStatus.6546ac83.js +4143 -0
  10. package/dist/cjs/useChannelHeaderOnlineStatus.6546ac83.js.map +1 -0
  11. package/dist/cjs/useMessageComposerController.c0dad9bc.js +99 -0
  12. package/dist/cjs/useMessageComposerController.c0dad9bc.js.map +1 -0
  13. package/dist/cjs/{useNotificationApi.e9312774.js → useNotificationApi.eb753f31.js} +121 -166
  14. package/dist/cjs/useNotificationApi.eb753f31.js.map +1 -0
  15. package/dist/css/channel-detail.css +825 -0
  16. package/dist/css/channel-detail.css.map +1 -0
  17. package/dist/css/index.css +111 -31
  18. package/dist/css/index.css.map +1 -1
  19. package/dist/es/channel-detail.mjs +2950 -0
  20. package/dist/es/channel-detail.mjs.map +1 -0
  21. package/dist/es/emojis.mjs +2 -1
  22. package/dist/es/emojis.mjs.map +1 -1
  23. package/dist/es/index.mjs +1399 -3669
  24. package/dist/es/index.mjs.map +1 -1
  25. package/dist/es/useChannelHeaderOnlineStatus.c5215b13.mjs +3600 -0
  26. package/dist/es/useChannelHeaderOnlineStatus.c5215b13.mjs.map +1 -0
  27. package/dist/es/useMessageComposerController.29f189b4.mjs +69 -0
  28. package/dist/es/useMessageComposerController.29f189b4.mjs.map +1 -0
  29. package/dist/es/{useNotificationApi.4be515a0.mjs → useNotificationApi.fa5cddf9.mjs} +104 -137
  30. package/dist/es/useNotificationApi.fa5cddf9.mjs.map +1 -0
  31. package/dist/types/components/AudioPlayback/components/index.d.ts +1 -0
  32. package/dist/types/components/AudioPlayback/components/index.d.ts.map +1 -1
  33. package/dist/types/components/Avatar/ChannelAvatar.d.ts.map +1 -1
  34. package/dist/types/components/ChannelHeader/hooks/useChannelHasMembersOnline.d.ts +7 -0
  35. package/dist/types/components/ChannelHeader/hooks/useChannelHasMembersOnline.d.ts.map +1 -0
  36. package/dist/types/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.d.ts +6 -1
  37. package/dist/types/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.d.ts.map +1 -1
  38. package/dist/types/components/ChannelListItem/hooks/index.d.ts +1 -0
  39. package/dist/types/components/ChannelListItem/hooks/index.d.ts.map +1 -1
  40. package/dist/types/components/ChannelListItem/hooks/useChannelPreviewInfo.d.ts.map +1 -1
  41. package/dist/types/components/ChannelListItem/hooks/useIsUserMuted.d.ts +2 -0
  42. package/dist/types/components/ChannelListItem/hooks/useIsUserMuted.d.ts.map +1 -0
  43. package/dist/types/components/Chat/Chat.d.ts.map +1 -1
  44. package/dist/types/components/Dialog/components/Prompt.d.ts +7 -4
  45. package/dist/types/components/Dialog/components/Prompt.d.ts.map +1 -1
  46. package/dist/types/components/Dialog/service/DialogPortal.d.ts +5 -1
  47. package/dist/types/components/Dialog/service/DialogPortal.d.ts.map +1 -1
  48. package/dist/types/components/FileIcon/iconMap.d.ts.map +1 -1
  49. package/dist/types/components/Form/Checkbox.d.ts +8 -0
  50. package/dist/types/components/Form/Checkbox.d.ts.map +1 -0
  51. package/dist/types/components/Form/SwitchField.d.ts +6 -0
  52. package/dist/types/components/Form/SwitchField.d.ts.map +1 -1
  53. package/dist/types/components/Form/index.d.ts +1 -0
  54. package/dist/types/components/Form/index.d.ts.map +1 -1
  55. package/dist/types/components/Icons/icons.d.ts +12 -0
  56. package/dist/types/components/Icons/icons.d.ts.map +1 -1
  57. package/dist/types/components/InfiniteScrollPaginator/index.d.ts +1 -0
  58. package/dist/types/components/InfiniteScrollPaginator/index.d.ts.map +1 -1
  59. package/dist/types/components/Message/hooks/useMessageTextStreaming.d.ts +1 -1
  60. package/dist/types/components/Message/hooks/useReactionsFetcher.d.ts +1 -1
  61. package/dist/types/components/Message/hooks/useReactionsFetcher.d.ts.map +1 -1
  62. package/dist/types/components/Modal/GlobalModal.d.ts +3 -1
  63. package/dist/types/components/Modal/GlobalModal.d.ts.map +1 -1
  64. package/dist/types/components/Notifications/hooks/useNotificationApi.d.ts.map +1 -1
  65. package/dist/types/components/Poll/PollCreationDialog/MultipleAnswersField.d.ts.map +1 -1
  66. package/dist/types/components/Poll/PollOptionSelector.d.ts +0 -4
  67. package/dist/types/components/Poll/PollOptionSelector.d.ts.map +1 -1
  68. package/dist/types/context/DialogManagerContext.d.ts +3 -1
  69. package/dist/types/context/DialogManagerContext.d.ts.map +1 -1
  70. package/dist/types/i18n/Streami18n.d.ts +99 -0
  71. package/dist/types/i18n/Streami18n.d.ts.map +1 -1
  72. package/dist/types/plugins/ChannelDetail/AvatarWithChannelDetail.d.ts +9 -0
  73. package/dist/types/plugins/ChannelDetail/AvatarWithChannelDetail.d.ts.map +1 -0
  74. package/dist/types/plugins/ChannelDetail/ChannelDetail.d.ts +14 -0
  75. package/dist/types/plugins/ChannelDetail/ChannelDetail.d.ts.map +1 -0
  76. package/dist/types/plugins/ChannelDetail/ChannelDetailContext.d.ts +11 -0
  77. package/dist/types/plugins/ChannelDetail/ChannelDetailContext.d.ts.map +1 -0
  78. package/dist/types/plugins/ChannelDetail/ChannelDetailEmptyList.d.ts +3 -0
  79. package/dist/types/plugins/ChannelDetail/ChannelDetailEmptyList.d.ts.map +1 -0
  80. package/dist/types/plugins/ChannelDetail/ChannelDetailListLoadingIndicator.d.ts +6 -0
  81. package/dist/types/plugins/ChannelDetail/ChannelDetailListLoadingIndicator.d.ts.map +1 -0
  82. package/dist/types/plugins/ChannelDetail/ChannelDetailNavButton.d.ts +15 -0
  83. package/dist/types/plugins/ChannelDetail/ChannelDetailNavButton.d.ts.map +1 -0
  84. package/dist/types/plugins/ChannelDetail/ChannelDetailSearchInput.d.ts +8 -0
  85. package/dist/types/plugins/ChannelDetail/ChannelDetailSearchInput.d.ts.map +1 -0
  86. package/dist/types/plugins/ChannelDetail/SectionNavigator/SectionNavigator.d.ts +52 -0
  87. package/dist/types/plugins/ChannelDetail/SectionNavigator/SectionNavigator.d.ts.map +1 -0
  88. package/dist/types/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.d.ts +11 -0
  89. package/dist/types/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.d.ts.map +1 -0
  90. package/dist/types/plugins/ChannelDetail/SectionNavigator/index.d.ts +3 -0
  91. package/dist/types/plugins/ChannelDetail/SectionNavigator/index.d.ts.map +1 -0
  92. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.d.ts +2 -0
  93. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.d.ts.map +1 -0
  94. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.d.ts +5 -0
  95. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.d.ts.map +1 -0
  96. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.d.ts +40 -0
  97. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.d.ts.map +1 -0
  98. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/index.d.ts +5 -0
  99. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/index.d.ts.map +1 -0
  100. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/useChannelFilesSearch.d.ts +10 -0
  101. package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/useChannelFilesSearch.d.ts.map +1 -0
  102. package/dist/types/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.defaults.d.ts +16 -0
  103. package/dist/types/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.defaults.d.ts.map +1 -0
  104. package/dist/types/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.d.ts +20 -0
  105. package/dist/types/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.d.ts.map +1 -0
  106. package/dist/types/plugins/ChannelDetail/Views/ChannelManagementView/index.d.ts +3 -0
  107. package/dist/types/plugins/ChannelDetail/Views/ChannelManagementView/index.d.ts.map +1 -0
  108. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.d.ts +2 -0
  109. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.d.ts.map +1 -0
  110. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.d.ts +8 -0
  111. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.d.ts.map +1 -0
  112. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.d.ts +22 -0
  113. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.d.ts.map +1 -0
  114. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/index.d.ts +5 -0
  115. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/index.d.ts.map +1 -0
  116. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/useChannelMediaSearch.d.ts +9 -0
  117. package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/useChannelMediaSearch.d.ts.map +1 -0
  118. package/dist/types/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.defaults.d.ts +26 -0
  119. package/dist/types/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.defaults.d.ts.map +1 -0
  120. package/dist/types/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.d.ts +12 -0
  121. package/dist/types/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.d.ts.map +1 -0
  122. package/dist/types/plugins/ChannelDetail/Views/ChannelMemberDetailView/index.d.ts +3 -0
  123. package/dist/types/plugins/ChannelDetail/Views/ChannelMemberDetailView/index.d.ts.map +1 -0
  124. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.d.ts +7 -0
  125. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.d.ts.map +1 -0
  126. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.d.ts +6 -0
  127. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.d.ts.map +1 -0
  128. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.defaults.d.ts +45 -0
  129. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.defaults.d.ts.map +1 -0
  130. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.d.ts +46 -0
  131. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.d.ts.map +1 -0
  132. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.d.ts +8 -0
  133. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.d.ts.map +1 -0
  134. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/index.d.ts +6 -0
  135. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/index.d.ts.map +1 -0
  136. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberCount.d.ts +4 -0
  137. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberCount.d.ts.map +1 -0
  138. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberIds.d.ts +4 -0
  139. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberIds.d.ts.map +1 -0
  140. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMembersSearch.d.ts +12 -0
  141. package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMembersSearch.d.ts.map +1 -0
  142. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.d.ts +2 -0
  143. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.d.ts.map +1 -0
  144. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.d.ts +9 -0
  145. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.d.ts.map +1 -0
  146. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/index.d.ts +4 -0
  147. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/index.d.ts.map +1 -0
  148. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.d.ts +4 -0
  149. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.d.ts.map +1 -0
  150. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesSearch.d.ts +16 -0
  151. package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesSearch.d.ts.map +1 -0
  152. package/dist/types/plugins/ChannelDetail/VirtualizedList/VirtualizedList.d.ts +28 -0
  153. package/dist/types/plugins/ChannelDetail/VirtualizedList/VirtualizedList.d.ts.map +1 -0
  154. package/dist/types/plugins/ChannelDetail/VirtualizedList/index.d.ts +2 -0
  155. package/dist/types/plugins/ChannelDetail/VirtualizedList/index.d.ts.map +1 -0
  156. package/dist/types/plugins/ChannelDetail/index.d.ts +16 -0
  157. package/dist/types/plugins/ChannelDetail/index.d.ts.map +1 -0
  158. package/dist/types/utils/index.d.ts +2 -0
  159. package/dist/types/utils/index.d.ts.map +1 -1
  160. package/dist/types/utils/isDmChannel.d.ts +6 -0
  161. package/dist/types/utils/isDmChannel.d.ts.map +1 -0
  162. package/package.json +11 -2
  163. package/dist/cjs/useNotificationApi.e9312774.js.map +0 -1
  164. package/dist/es/useNotificationApi.4be515a0.mjs.map +0 -1
@@ -0,0 +1,99 @@
1
+ const require_useNotificationApi = require("./useNotificationApi.eb753f31.js");
2
+ let react = require("react");
3
+ react = require_useNotificationApi.__toESM(react);
4
+ let react_jsx_runtime = require("react/jsx-runtime");
5
+ let stream_chat = require("stream-chat");
6
+ //#region src/context/MessageComposerContext.tsx
7
+ var MessageComposerContext = (0, react.createContext)(void 0);
8
+ var MessageComposerContextProvider = ({ children, value }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MessageComposerContext.Provider, {
9
+ value,
10
+ children
11
+ });
12
+ var useMessageComposerContext = (componentName) => {
13
+ const contextValue = (0, react.useContext)(MessageComposerContext);
14
+ if (!contextValue) return {};
15
+ return contextValue;
16
+ };
17
+ //#endregion
18
+ //#region src/components/MessageComposer/hooks/useIsCooldownActive.ts
19
+ var cooldownTimerStateSelector = (state) => ({ isCooldownActive: !!state.cooldownRemaining });
20
+ var useIsCooldownActive = () => {
21
+ const { channel } = require_useNotificationApi.useChannelStateContext();
22
+ return require_useNotificationApi.useStateStore(channel.cooldownTimer.state, cooldownTimerStateSelector).isCooldownActive;
23
+ };
24
+ //#endregion
25
+ //#region src/components/MessageComposer/hooks/useMessageComposerController.ts
26
+ var useMessageComposerController = () => {
27
+ const { client } = require_useNotificationApi.useChatContext();
28
+ const { messageComposerCache: queueCache } = client;
29
+ const { channel } = require_useNotificationApi.useChannelStateContext();
30
+ const { legacyThread: parentMessage } = require_useNotificationApi.useLegacyThreadContext();
31
+ const threadInstance = require_useNotificationApi.useThreadContext();
32
+ const cachedParentMessage = (0, react.useMemo)(() => {
33
+ if (!parentMessage) return void 0;
34
+ return parentMessage;
35
+ }, [parentMessage?.id]);
36
+ const messageComposer = (0, react.useMemo)(() => {
37
+ if (threadInstance) return threadInstance.messageComposer;
38
+ else if (cachedParentMessage) {
39
+ const compositionContext = {
40
+ ...cachedParentMessage,
41
+ legacyThreadId: cachedParentMessage.id
42
+ };
43
+ const tag = stream_chat.MessageComposer.constructTag(compositionContext);
44
+ const cachedComposer = queueCache.get(tag);
45
+ if (cachedComposer) return cachedComposer;
46
+ return new stream_chat.MessageComposer({
47
+ client,
48
+ compositionContext
49
+ });
50
+ } else return channel.messageComposer;
51
+ }, [
52
+ cachedParentMessage,
53
+ channel,
54
+ client,
55
+ queueCache,
56
+ threadInstance
57
+ ]);
58
+ if (["legacy_thread", "message"].includes(messageComposer.contextType) && !queueCache.peek(messageComposer.tag)) queueCache.add(messageComposer.tag, messageComposer);
59
+ (0, react.useEffect)(() => {
60
+ const unsubscribe = messageComposer.registerSubscriptions();
61
+ return () => {
62
+ unsubscribe();
63
+ };
64
+ }, [messageComposer]);
65
+ return messageComposer;
66
+ };
67
+ //#endregion
68
+ Object.defineProperty(exports, "MessageComposerContext", {
69
+ enumerable: true,
70
+ get: function() {
71
+ return MessageComposerContext;
72
+ }
73
+ });
74
+ Object.defineProperty(exports, "MessageComposerContextProvider", {
75
+ enumerable: true,
76
+ get: function() {
77
+ return MessageComposerContextProvider;
78
+ }
79
+ });
80
+ Object.defineProperty(exports, "useIsCooldownActive", {
81
+ enumerable: true,
82
+ get: function() {
83
+ return useIsCooldownActive;
84
+ }
85
+ });
86
+ Object.defineProperty(exports, "useMessageComposerContext", {
87
+ enumerable: true,
88
+ get: function() {
89
+ return useMessageComposerContext;
90
+ }
91
+ });
92
+ Object.defineProperty(exports, "useMessageComposerController", {
93
+ enumerable: true,
94
+ get: function() {
95
+ return useMessageComposerController;
96
+ }
97
+ });
98
+
99
+ //# sourceMappingURL=useMessageComposerController.c0dad9bc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMessageComposerController.c0dad9bc.js","names":[],"sources":["../../src/context/MessageComposerContext.tsx","../../src/components/MessageComposer/hooks/useIsCooldownActive.ts","../../src/components/MessageComposer/hooks/useMessageComposerController.ts"],"sourcesContent":["import React, { createContext, useContext } from 'react';\nimport type { PropsWithChildren } from 'react';\n\nimport type { MessageComposerProps } from '../components/MessageComposer';\nimport type { UseMessageComposerBindingsParams } from '../components/MessageComposer/hooks/useMessageComposerBindings';\n\nexport type MessageComposerContextValue = UseMessageComposerBindingsParams &\n Omit<MessageComposerProps, 'Input'>;\n\nexport const MessageComposerContext = createContext<\n UseMessageComposerBindingsParams | undefined\n>(undefined);\n\nexport const MessageComposerContextProvider = ({\n children,\n value,\n}: PropsWithChildren<{\n value: MessageComposerContextValue;\n}>) => (\n <MessageComposerContext.Provider\n value={value as unknown as MessageComposerContextValue}\n >\n {children}\n </MessageComposerContext.Provider>\n);\n\nexport const useMessageComposerContext = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n componentName?: string,\n) => {\n const contextValue = useContext(MessageComposerContext);\n\n if (!contextValue) {\n return {} as MessageComposerContextValue;\n }\n\n return contextValue as unknown as MessageComposerContextValue;\n};\n","import { useChannelStateContext } from '../../../context';\nimport { useStateStore } from '../../../store';\nimport type { CooldownTimerState } from 'stream-chat';\n\nconst cooldownTimerStateSelector = (state: CooldownTimerState) => ({\n isCooldownActive: !!state.cooldownRemaining,\n});\n\nexport const useIsCooldownActive = () => {\n const { channel } = useChannelStateContext();\n return useStateStore(channel.cooldownTimer.state, cooldownTimerStateSelector)\n .isCooldownActive;\n};\n","import { useEffect, useMemo } from 'react';\nimport { MessageComposer as MessageComposerController } from 'stream-chat';\nimport { useThreadContext } from '../../Threads';\nimport { useChannelStateContext, useChatContext } from '../../../context';\nimport { useLegacyThreadContext } from '../../Thread';\n\nexport const useMessageComposerController = () => {\n const { client } = useChatContext();\n const { messageComposerCache: queueCache } = client;\n const { channel } = useChannelStateContext();\n const { legacyThread: parentMessage } = useLegacyThreadContext();\n const threadInstance = useThreadContext();\n\n const cachedParentMessage = useMemo(() => {\n if (!parentMessage) return undefined;\n\n return parentMessage;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parentMessage?.id]);\n\n // composer hierarchy\n // edited message (always new) -> thread instance (own) -> thread message (always new) -> channel (own)\n // editedMessage ?? thread ?? parentMessage ?? channel;\n const messageComposer = useMemo(() => {\n if (threadInstance) {\n return threadInstance.messageComposer;\n } else if (cachedParentMessage) {\n const compositionContext = {\n ...cachedParentMessage,\n legacyThreadId: cachedParentMessage.id,\n };\n\n const tag = MessageComposerController.constructTag(compositionContext);\n\n const cachedComposer = queueCache.get(tag);\n if (cachedComposer) return cachedComposer;\n\n return new MessageComposerController({\n client,\n compositionContext,\n });\n } else {\n return channel.messageComposer;\n }\n }, [cachedParentMessage, channel, client, queueCache, threadInstance]);\n\n if (\n (['legacy_thread', 'message'] as MessageComposerController['contextType'][]).includes(\n messageComposer.contextType,\n ) &&\n !queueCache.peek(messageComposer.tag)\n ) {\n queueCache.add(messageComposer.tag, messageComposer);\n }\n\n useEffect(() => {\n const unsubscribe = messageComposer.registerSubscriptions();\n return () => {\n unsubscribe();\n };\n }, [messageComposer]);\n\n return messageComposer;\n};\n"],"mappings":";;;;;;AASA,IAAa,0BAAA,GAAA,MAAA,eAEX,KAAA,CAAS;AAEX,IAAa,kCAAkC,EAC7C,UACA,YAIA,iBAAA,GAAA,kBAAA,KAAC,uBAAuB,UAAxB;CACS;CAEN;AAC8B,CAAA;AAGnC,IAAa,6BAEX,kBACG;CACH,MAAM,gBAAA,GAAA,MAAA,YAA0B,sBAAsB;CAEtD,IAAI,CAAC,cACH,OAAO,CAAC;CAGV,OAAO;AACT;;;ACjCA,IAAM,8BAA8B,WAA+B,EACjE,kBAAkB,CAAC,CAAC,MAAM,kBAC5B;AAEA,IAAa,4BAA4B;CACvC,MAAM,EAAE,YAAY,2BAAA,uBAAuB;CAC3C,OAAO,2BAAA,cAAc,QAAQ,cAAc,OAAO,0BAA0B,EACzE;AACL;;;ACNA,IAAa,qCAAqC;CAChD,MAAM,EAAE,WAAW,2BAAA,eAAe;CAClC,MAAM,EAAE,sBAAsB,eAAe;CAC7C,MAAM,EAAE,YAAY,2BAAA,uBAAuB;CAC3C,MAAM,EAAE,cAAc,kBAAkB,2BAAA,uBAAuB;CAC/D,MAAM,iBAAiB,2BAAA,iBAAiB;CAExC,MAAM,uBAAA,GAAA,MAAA,eAAoC;EACxC,IAAI,CAAC,eAAe,OAAO,KAAA;EAE3B,OAAO;CAET,GAAG,CAAC,eAAe,EAAE,CAAC;CAKtB,MAAM,mBAAA,GAAA,MAAA,eAAgC;EACpC,IAAI,gBACF,OAAO,eAAe;OACjB,IAAI,qBAAqB;GAC9B,MAAM,qBAAqB;IACzB,GAAG;IACH,gBAAgB,oBAAoB;GACtC;GAEA,MAAM,MAAM,YAAA,gBAA0B,aAAa,kBAAkB;GAErE,MAAM,iBAAiB,WAAW,IAAI,GAAG;GACzC,IAAI,gBAAgB,OAAO;GAE3B,OAAO,IAAI,YAAA,gBAA0B;IACnC;IACA;GACF,CAAC;EACH,OACE,OAAO,QAAQ;CAEnB,GAAG;EAAC;EAAqB;EAAS;EAAQ;EAAY;CAAc,CAAC;CAErE,IACG,CAAC,iBAAiB,SAAS,EAAiD,SAC3E,gBAAgB,WAClB,KACA,CAAC,WAAW,KAAK,gBAAgB,GAAG,GAEpC,WAAW,IAAI,gBAAgB,KAAK,eAAe;CAGrD,CAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,cAAc,gBAAgB,sBAAsB;EAC1D,aAAa;GACX,YAAY;EACd;CACF,GAAG,CAAC,eAAe,CAAC;CAEpB,OAAO;AACT"}
@@ -25,6 +25,8 @@ react = __toESM(react);
25
25
  let react_jsx_runtime = require("react/jsx-runtime");
26
26
  let stream_chat = require("stream-chat");
27
27
  let nanoid = require("nanoid");
28
+ let clsx = require("clsx");
29
+ clsx = __toESM(clsx);
28
30
  let use_sync_external_store_shim = require("use-sync-external-store/shim");
29
31
  let react_dom = require("react-dom");
30
32
  let dayjs = require("dayjs");
@@ -33,9 +35,6 @@ let dayjs_plugin_calendar = require("dayjs/plugin/calendar");
33
35
  dayjs_plugin_calendar = __toESM(dayjs_plugin_calendar);
34
36
  let dayjs_plugin_localizedFormat = require("dayjs/plugin/localizedFormat");
35
37
  dayjs_plugin_localizedFormat = __toESM(dayjs_plugin_localizedFormat);
36
- let clsx = require("clsx");
37
- clsx = __toESM(clsx);
38
- let _floating_ui_react = require("@floating-ui/react");
39
38
  let lodash_debounce = require("lodash.debounce");
40
39
  lodash_debounce = __toESM(lodash_debounce);
41
40
  let lodash_throttle = require("lodash.throttle");
@@ -44,6 +43,7 @@ let react_fast_compare = require("react-fast-compare");
44
43
  react_fast_compare = __toESM(react_fast_compare);
45
44
  let emoji_regex = require("emoji-regex");
46
45
  emoji_regex = __toESM(emoji_regex);
46
+ let _floating_ui_react = require("@floating-ui/react");
47
47
  let linkifyjs = require("linkifyjs");
48
48
  linkifyjs = __toESM(linkifyjs);
49
49
  //#region src/context/ChannelActionContext.tsx
@@ -370,7 +370,7 @@ var Portal = ({ children, getPortalDestination, isOpen }) => {
370
370
  //#endregion
371
371
  //#region src/components/Dialog/service/DialogPortal.tsx
372
372
  var shouldCloseOnOutsideClick = ({ dialog, managerCloseOnClickOutside }) => dialog.closeOnClickOutside ?? managerCloseOnClickOutside;
373
- var DialogPortalDestination = () => {
373
+ var DialogPortalDestination = ({ captureOutsideClicks, className }) => {
374
374
  const { dialogManager } = useNearestDialogManagerContext() ?? {};
375
375
  const openedDialogCount = useOpenedDialogCount({ dialogManagerId: dialogManager?.id });
376
376
  const [destinationRoot, setDestinationRoot] = (0, react.useState)(null);
@@ -399,7 +399,10 @@ var DialogPortalDestination = () => {
399
399
  }, [destinationRoot, dialogManager]);
400
400
  if (!openedDialogCount) return null;
401
401
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
402
- className: "str-chat__dialog-overlay",
402
+ className: (0, clsx.default)("str-chat__dialog-overlay", {
403
+ "str-chat__dialog-overlay--modal": dialogManager?.id === modalDialogManagerId,
404
+ "str-chat__dialog-overlay--with-outside-click-capture": captureOutsideClicks
405
+ }, className),
403
406
  "data-str-chat__portal-id": dialogManager?.id,
404
407
  "data-testid": "str-chat__dialog-overlay",
405
408
  ref: setDestinationRoot,
@@ -441,7 +444,7 @@ var DialogManagerProviderContext = react.default.createContext(void 0);
441
444
  /**
442
445
  * Creates/provides a dialog manager and its portal destination.
443
446
  */
444
- var DialogManagerProvider = ({ children, closeOnClickOutside, id }) => {
447
+ var DialogManagerProvider = ({ children, closeOnClickOutside, id, portalDestinationProps }) => {
445
448
  const [dialogManager, setDialogManager] = (0, react.useState)(() => {
446
449
  if (id) return getDialogManager(id) ?? null;
447
450
  return new DialogManager({ closeOnClickOutside });
@@ -460,7 +463,7 @@ var DialogManagerProvider = ({ children, closeOnClickOutside, id }) => {
460
463
  if (!dialogManager) return null;
461
464
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(DialogManagerProviderContext.Provider, {
462
465
  value: { dialogManager },
463
- children: [children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DialogPortalDestination, {})]
466
+ children: [children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DialogPortalDestination, { ...portalDestinationProps })]
464
467
  });
465
468
  };
466
469
  var getManagerFromStore = ({ dialogId, dialogManagerId, newState, previousState }) => {
@@ -530,18 +533,6 @@ var ModalDialogManagerProvider = ({ children }) => /* @__PURE__ */ (0, react_jsx
530
533
  var useModalDialogManager = () => (0, react.useMemo)(() => getDialogManager(modalDialogManagerId), []);
531
534
  var useNearestDialogManagerContext = () => (0, react.useContext)(DialogManagerProviderContext);
532
535
  //#endregion
533
- //#region src/context/MessageComposerContext.tsx
534
- var MessageComposerContext = (0, react.createContext)(void 0);
535
- var MessageComposerContextProvider = ({ children, value }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MessageComposerContext.Provider, {
536
- value,
537
- children
538
- });
539
- var useMessageComposerContext = (componentName) => {
540
- const contextValue = (0, react.useContext)(MessageComposerContext);
541
- if (!contextValue) return {};
542
- return contextValue;
543
- };
544
- //#endregion
545
536
  //#region src/i18n/utils.ts
546
537
  var isNumberOrString = (output) => typeof output === "string" || typeof output === "number";
547
538
  var isDayOrMoment = (output) => !!output?.isSame;
@@ -741,50 +732,20 @@ var isNotificationForPanel = (notification, panel, options) => {
741
732
  return (options?.fallbackPanel ?? "channel") === panel;
742
733
  };
743
734
  //#endregion
744
- //#region src/components/Dialog/hooks/usePopoverPosition.ts
745
- var hasResizeObserver = typeof window !== "undefined" && "ResizeObserver" in window;
746
- function autoMiddlewareFor(p) {
747
- if (!String(p).startsWith("auto")) return null;
748
- return (0, _floating_ui_react.autoPlacement)({ alignment: p === "auto-start" ? "start" : p === "auto-end" ? "end" : void 0 });
749
- }
750
- function toOffsetMw(opt) {
751
- if (opt == null) return null;
752
- if (Array.isArray(opt)) {
753
- const [crossAxis, mainAxis] = opt;
754
- return (0, _floating_ui_react.offset)({
755
- crossAxis,
756
- mainAxis
757
- });
758
- }
759
- if (typeof opt === "number") return (0, _floating_ui_react.offset)(opt);
760
- return (0, _floating_ui_react.offset)(opt);
761
- }
762
- function usePopoverPosition({ allowFlip = true, allowShift = true, autoUpdateOptions, fitAvailableSpace = false, freeze = false, offset, placement = "bottom-start", shiftOptions }) {
763
- const autoMw = autoMiddlewareFor(placement);
764
- const offsetMiddleware = toOffsetMw(offset);
765
- const isSidePlacement = placement.startsWith("left") || placement.startsWith("right");
766
- const mergedShiftOptions = shiftOptions ? {
767
- padding: 8,
768
- ...shiftOptions
769
- } : { padding: 8 };
770
- return (0, _floating_ui_react.useFloating)({
771
- middleware: [
772
- ...offsetMiddleware ? [offsetMiddleware] : [],
773
- ...autoMw ? [autoMw] : allowFlip && !isSidePlacement ? [(0, _floating_ui_react.flip)()] : [],
774
- ...allowShift ? [(0, _floating_ui_react.shift)(mergedShiftOptions)] : [],
775
- ...fitAvailableSpace ? [(0, _floating_ui_react.size)({ apply: () => {} })] : []
776
- ],
777
- placement: String(placement).startsWith("auto") ? "bottom" : placement,
778
- strategy: "fixed",
779
- whileElementsMounted: freeze ? void 0 : (reference, floating, update) => (0, _floating_ui_react.autoUpdate)(reference, floating, update, {
780
- ancestorResize: true,
781
- ancestorScroll: true,
782
- animationFrame: false,
783
- elementResize: hasResizeObserver,
784
- ...autoUpdateOptions
785
- })
786
- });
787
- }
735
+ //#region src/components/UtilityComponents/useStableId.ts
736
+ var reactUseId = react.default.useId;
737
+ var stripUseIdWrappers = (id) => id.replace(/[:«»]/g, "");
738
+ /**
739
+ * Returns a stable, unique string id.
740
+ *
741
+ * On React 18+ this delegates to `React.useId()` (with the surrounding wrapper
742
+ * characters stripped so the value is safe to use anywhere an HTML id is expected)
743
+ * and is SSR-stable. On React 17, it falls back to a client-only id generated via `nanoid`.
744
+ */
745
+ var useStableId = () => {
746
+ if (reactUseId) return stripUseIdWrappers(reactUseId());
747
+ return (0, react.useMemo)(() => (0, nanoid.nanoid)(), []);
748
+ };
788
749
  //#endregion
789
750
  //#region src/components/Button/Button.tsx
790
751
  var variantToClass = {
@@ -1121,6 +1082,14 @@ var IconMore = createIcon("IconMore", /* @__PURE__ */ (0, react_jsx_runtime.jsxs
1121
1082
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M4.6875 11.25C5.37786 11.25 5.9375 10.6904 5.9375 10C5.9375 9.30964 5.37786 8.75 4.6875 8.75C3.99714 8.75 3.4375 9.30964 3.4375 10C3.4375 10.6904 3.99714 11.25 4.6875 11.25Z" }),
1122
1083
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M15.3125 11.25C16.0029 11.25 16.5625 10.6904 16.5625 10C16.5625 9.30964 16.0029 8.75 15.3125 8.75C14.6221 8.75 14.0625 9.30964 14.0625 10C14.0625 10.6904 14.6221 11.25 15.3125 11.25Z" })
1123
1084
  ] }));
1085
+ var IconMenu = createIcon("IconMenu", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
1086
+ d: "M3.125 5H16.875M3.125 10H16.875M3.125 15H16.875",
1087
+ fill: "none",
1088
+ stroke: "currentColor",
1089
+ strokeLinecap: "round",
1090
+ strokeLinejoin: "round",
1091
+ strokeWidth: "1.5"
1092
+ }));
1124
1093
  var IconReorder = createIcon("IconReorder", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M8.875 15.3125C8.875 16.2445 8.11948 17 7.1875 17C6.25552 17 5.5 16.2445 5.5 15.3125C5.5 14.3805 6.25552 13.625 7.1875 13.625C8.11948 13.625 8.875 14.3805 8.875 15.3125ZM14.5 15.3125C14.5 16.2445 13.7445 17 12.8125 17C11.8805 17 11.125 16.2445 11.125 15.3125C11.125 14.3805 11.8805 13.625 12.8125 13.625C13.7445 13.625 14.5 14.3805 14.5 15.3125ZM8.875 10C8.875 10.932 8.11948 11.6875 7.1875 11.6875C6.25552 11.6875 5.5 10.932 5.5 10C5.5 9.06802 6.25552 8.3125 7.1875 8.3125C8.11948 8.3125 8.875 9.06802 8.875 10ZM14.5 10C14.5 10.932 13.7445 11.6875 12.8125 11.6875C11.8805 11.6875 11.125 10.932 11.125 10C11.125 9.06802 11.8805 8.3125 12.8125 8.3125C13.7445 8.3125 14.5 9.06802 14.5 10ZM8.875 4.6875C8.875 5.61948 8.11948 6.375 7.1875 6.375C6.25552 6.375 5.5 5.61948 5.5 4.6875C5.5 3.75552 6.25552 3 7.1875 3C8.11948 3 8.875 3.75552 8.875 4.6875ZM14.5 4.6875C14.5 5.61948 13.7445 6.375 12.8125 6.375C11.8805 6.375 11.125 5.61948 11.125 4.6875C11.125 3.75552 11.8805 3 12.8125 3C13.7445 3 14.5 3.75552 14.5 4.6875Z" }));
1125
1094
  var IconChecks = createIcon("IconChecks", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
1126
1095
  d: "M1.5 10.5724L4.98387 13.9936L13.1129 6.00977M10.371 13.9936L18.5 6.00977",
@@ -1207,6 +1176,10 @@ var IconFlag = createIcon("IconFlag", /* @__PURE__ */ (0, react_jsx_runtime.jsx)
1207
1176
  strokeLinejoin: "round",
1208
1177
  strokeWidth: "1.5"
1209
1178
  }));
1179
+ var IconFolder = createIcon("IconFolder", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
1180
+ d: "M3.25 15.5H16.75V7H10C9.83774 7 9.67962 6.94696 9.5498 6.84961L7.25098 5.125H3.25V15.5ZM18.25 15.6943C18.25 16.0406 18.112 16.3724 17.8672 16.6172C17.6224 16.862 17.2906 17 16.9443 17H3.125C2.76033 17 2.41021 16.8555 2.15234 16.5977C1.89448 16.3398 1.75 15.9897 1.75 15.625V5C1.75 4.63533 1.89448 4.28521 2.15234 4.02734L2.25391 3.93652C2.49856 3.73611 2.80597 3.625 3.125 3.625H7.29102C7.58852 3.625 7.8782 3.72189 8.11621 3.90039L10.25 5.5H16.875C17.194 5.5 17.5014 5.61111 17.7461 5.81152L17.8477 5.90234L17.9385 6.00391C18.1389 6.24856 18.25 6.55597 18.25 6.875V15.6943Z",
1181
+ fill: "currentColor"
1182
+ }));
1210
1183
  var IconImage = createIcon("IconImage", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
1211
1184
  d: "M4.42891 16.875L12.9953 8.30781C13.0534 8.2497 13.1223 8.2036 13.1982 8.17215C13.274 8.1407 13.3554 8.12451 13.4375 8.12451C13.5196 8.12451 13.601 8.1407 13.6768 8.17215C13.7527 8.2036 13.8216 8.2497 13.8797 8.30781L16.875 11.3039M3.75 3.125H16.25C16.5952 3.125 16.875 3.40482 16.875 3.75V16.25C16.875 16.5952 16.5952 16.875 16.25 16.875H3.75C3.40482 16.875 3.125 16.5952 3.125 16.25V3.75C3.125 3.40482 3.40482 3.125 3.75 3.125ZM8.75 7.5C8.75 8.19036 8.19036 8.75 7.5 8.75C6.80964 8.75 6.25 8.19036 6.25 7.5C6.25 6.80964 6.80964 6.25 7.5 6.25C8.19036 6.25 8.75 6.80964 8.75 7.5Z",
1212
1185
  fill: "none",
@@ -1215,6 +1188,20 @@ var IconImage = createIcon("IconImage", /* @__PURE__ */ (0, react_jsx_runtime.js
1215
1188
  strokeLinejoin: "round",
1216
1189
  strokeWidth: "1.5"
1217
1190
  }));
1191
+ var IconInfo = createIcon("IconInfo", /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1192
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
1193
+ d: "M16.75 10C16.75 6.27208 13.7279 3.25 10 3.25C6.27208 3.25 3.25 6.27208 3.25 10C3.25 13.7279 6.27208 16.75 10 16.75C13.7279 16.75 16.75 13.7279 16.75 10ZM18.25 10C18.25 14.5563 14.5563 18.25 10 18.25C5.44365 18.25 1.75 14.5563 1.75 10C1.75 5.44365 5.44365 1.75 10 1.75C14.5563 1.75 18.25 5.44365 18.25 10Z",
1194
+ fill: "currentColor"
1195
+ }),
1196
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
1197
+ d: "M10.75 13.0107C11.1047 13.0703 11.375 13.3784 11.375 13.75C11.375 14.1642 11.0392 14.5 10.625 14.5C10.2603 14.5 9.91021 14.3555 9.65234 14.0977C9.39448 13.8398 9.25 13.4897 9.25 13.125V10.1133C8.89539 10.0537 8.625 9.74655 8.625 9.375C8.625 8.96079 8.96079 8.625 9.375 8.625C9.69403 8.625 10.0014 8.73611 10.2461 8.93652L10.3477 9.02734L10.4385 9.12891C10.6389 9.37356 10.75 9.68097 10.75 10V13.0107Z",
1198
+ fill: "currentColor"
1199
+ }),
1200
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
1201
+ d: "M9.6875 7.5C10.2053 7.5 10.625 7.08027 10.625 6.5625C10.625 6.04473 10.2053 5.625 9.6875 5.625C9.16973 5.625 8.75 6.04473 8.75 6.5625C8.75 7.08027 9.16973 7.5 9.6875 7.5Z",
1202
+ fill: "currentColor"
1203
+ })
1204
+ ] }));
1218
1205
  var IconSearch = createIcon("IconSearch", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
1219
1206
  d: "M13.1695 13.1695L17.5 17.5M15 8.75C15 12.2018 12.2018 15 8.75 15C5.29822 15 2.5 12.2018 2.5 8.75C2.5 5.29822 5.29822 2.5 8.75 2.5C12.2018 2.5 15 5.29822 15 8.75Z",
1220
1207
  fill: "none",
@@ -1526,21 +1513,6 @@ var IconGiphy = createIcon("IconGiphy", /* @__PURE__ */ (0, react_jsx_runtime.js
1526
1513
  })
1527
1514
  ] }));
1528
1515
  //#endregion
1529
- //#region src/components/UtilityComponents/useStableId.ts
1530
- var reactUseId = react.default.useId;
1531
- var stripUseIdWrappers = (id) => id.replace(/[:«»]/g, "");
1532
- /**
1533
- * Returns a stable, unique string id.
1534
- *
1535
- * On React 18+ this delegates to `React.useId()` (with the surrounding wrapper
1536
- * characters stripped so the value is safe to use anywhere an HTML id is expected)
1537
- * and is SSR-stable. On React 17, it falls back to a client-only id generated via `nanoid`.
1538
- */
1539
- var useStableId = () => {
1540
- if (reactUseId) return stripUseIdWrappers(reactUseId());
1541
- return (0, react.useMemo)(() => (0, nanoid.nanoid)(), []);
1542
- };
1543
- //#endregion
1544
1516
  //#region src/components/EmptyStateIndicator/EmptyStateIndicator.tsx
1545
1517
  var UnMemoizedEmptyStateIndicator = (props) => {
1546
1518
  const { listType, messageText } = props;
@@ -2115,6 +2087,51 @@ var isMessageBlocked = (message) => message.shadowed || message.type === "error"
2115
2087
  var isMessageDeleted = (message) => Boolean(message.deleted_at || message.type === "deleted" || message.deleted_for_me);
2116
2088
  var isMessageEdited = (message) => !!message.message_text_updated_at;
2117
2089
  //#endregion
2090
+ //#region src/components/Dialog/hooks/usePopoverPosition.ts
2091
+ var hasResizeObserver = typeof window !== "undefined" && "ResizeObserver" in window;
2092
+ function autoMiddlewareFor(p) {
2093
+ if (!String(p).startsWith("auto")) return null;
2094
+ return (0, _floating_ui_react.autoPlacement)({ alignment: p === "auto-start" ? "start" : p === "auto-end" ? "end" : void 0 });
2095
+ }
2096
+ function toOffsetMw(opt) {
2097
+ if (opt == null) return null;
2098
+ if (Array.isArray(opt)) {
2099
+ const [crossAxis, mainAxis] = opt;
2100
+ return (0, _floating_ui_react.offset)({
2101
+ crossAxis,
2102
+ mainAxis
2103
+ });
2104
+ }
2105
+ if (typeof opt === "number") return (0, _floating_ui_react.offset)(opt);
2106
+ return (0, _floating_ui_react.offset)(opt);
2107
+ }
2108
+ function usePopoverPosition({ allowFlip = true, allowShift = true, autoUpdateOptions, fitAvailableSpace = false, freeze = false, offset, placement = "bottom-start", shiftOptions }) {
2109
+ const autoMw = autoMiddlewareFor(placement);
2110
+ const offsetMiddleware = toOffsetMw(offset);
2111
+ const isSidePlacement = placement.startsWith("left") || placement.startsWith("right");
2112
+ const mergedShiftOptions = shiftOptions ? {
2113
+ padding: 8,
2114
+ ...shiftOptions
2115
+ } : { padding: 8 };
2116
+ return (0, _floating_ui_react.useFloating)({
2117
+ middleware: [
2118
+ ...offsetMiddleware ? [offsetMiddleware] : [],
2119
+ ...autoMw ? [autoMw] : allowFlip && !isSidePlacement ? [(0, _floating_ui_react.flip)()] : [],
2120
+ ...allowShift ? [(0, _floating_ui_react.shift)(mergedShiftOptions)] : [],
2121
+ ...fitAvailableSpace ? [(0, _floating_ui_react.size)({ apply: () => {} })] : []
2122
+ ],
2123
+ placement: String(placement).startsWith("auto") ? "bottom" : placement,
2124
+ strategy: "fixed",
2125
+ whileElementsMounted: freeze ? void 0 : (reference, floating, update) => (0, _floating_ui_react.autoUpdate)(reference, floating, update, {
2126
+ ancestorResize: true,
2127
+ ancestorScroll: true,
2128
+ animationFrame: false,
2129
+ elementResize: hasResizeObserver,
2130
+ ...autoUpdateOptions
2131
+ })
2132
+ });
2133
+ }
2134
+ //#endregion
2118
2135
  //#region src/components/Thread/LegacyThreadContext.ts
2119
2136
  var LegacyThreadContext = react.default.createContext({ legacyThread: void 0 });
2120
2137
  var useLegacyThreadContext = () => (0, react.useContext)(LegacyThreadContext);
@@ -2764,56 +2781,6 @@ var useActiveAudioPlayer = () => {
2764
2781
  return activeAudioPlayer;
2765
2782
  };
2766
2783
  //#endregion
2767
- //#region src/components/MessageComposer/hooks/useIsCooldownActive.ts
2768
- var cooldownTimerStateSelector = (state) => ({ isCooldownActive: !!state.cooldownRemaining });
2769
- var useIsCooldownActive = () => {
2770
- const { channel } = useChannelStateContext();
2771
- return useStateStore(channel.cooldownTimer.state, cooldownTimerStateSelector).isCooldownActive;
2772
- };
2773
- //#endregion
2774
- //#region src/components/MessageComposer/hooks/useMessageComposerController.ts
2775
- var useMessageComposerController = () => {
2776
- const { client } = useChatContext();
2777
- const { messageComposerCache: queueCache } = client;
2778
- const { channel } = useChannelStateContext();
2779
- const { legacyThread: parentMessage } = useLegacyThreadContext();
2780
- const threadInstance = useThreadContext();
2781
- const cachedParentMessage = (0, react.useMemo)(() => {
2782
- if (!parentMessage) return void 0;
2783
- return parentMessage;
2784
- }, [parentMessage?.id]);
2785
- const messageComposer = (0, react.useMemo)(() => {
2786
- if (threadInstance) return threadInstance.messageComposer;
2787
- else if (cachedParentMessage) {
2788
- const compositionContext = {
2789
- ...cachedParentMessage,
2790
- legacyThreadId: cachedParentMessage.id
2791
- };
2792
- const tag = stream_chat.MessageComposer.constructTag(compositionContext);
2793
- const cachedComposer = queueCache.get(tag);
2794
- if (cachedComposer) return cachedComposer;
2795
- return new stream_chat.MessageComposer({
2796
- client,
2797
- compositionContext
2798
- });
2799
- } else return channel.messageComposer;
2800
- }, [
2801
- cachedParentMessage,
2802
- channel,
2803
- client,
2804
- queueCache,
2805
- threadInstance
2806
- ]);
2807
- if (["legacy_thread", "message"].includes(messageComposer.contextType) && !queueCache.peek(messageComposer.tag)) queueCache.add(messageComposer.tag, messageComposer);
2808
- (0, react.useEffect)(() => {
2809
- const unsubscribe = messageComposer.registerSubscriptions();
2810
- return () => {
2811
- unsubscribe();
2812
- };
2813
- }, [messageComposer]);
2814
- return messageComposer;
2815
- };
2816
- //#endregion
2817
2784
  //#region src/constants/messageTypes.ts
2818
2785
  var CUSTOM_MESSAGE_TYPE = {
2819
2786
  date: "message.date",
@@ -4142,16 +4109,16 @@ var useNotificationTarget = () => {
4142
4109
  };
4143
4110
  //#endregion
4144
4111
  //#region src/components/Notifications/hooks/useNotificationApi.ts
4145
- var modalDialogIsOpenSelector = ({ dialogsById }) => ({ isOpen: !!dialogsById[modalDialogId]?.isOpen });
4112
+ var modalDialogManagerStateSelector = ({ dialogsById, openedDialogIds }) => ({ hasOpenDialog: openedDialogIds ? openedDialogIds.length > 0 : Object.values(dialogsById).some((dialog) => dialog.isOpen) });
4146
4113
  /** Tag used for full-width system banners (e.g. connection status). Excluded from `NotificationList` by default. */
4147
4114
  var SYSTEM_NOTIFICATION_TAG = "system";
4148
4115
  var hasSystemNotificationTag = (notification) => notification.tags?.includes("system") ?? false;
4149
- var getTargetTags = (targetPanels, inferredPanel, tags, modalIsOpen) => {
4116
+ var getTargetTags = (targetPanels, inferredPanel, tags, modalManagerHasOpenDialog) => {
4150
4117
  if (targetPanels) {
4151
- const effectiveTargetPanels = modalIsOpen && targetPanels.length > 0 ? [...targetPanels, "modal"] : targetPanels;
4118
+ const effectiveTargetPanels = modalManagerHasOpenDialog && targetPanels.length > 0 ? [...targetPanels, "modal"] : targetPanels;
4152
4119
  return Array.from(new Set([...effectiveTargetPanels.map(getNotificationTargetTag), ...tags ?? []]));
4153
4120
  }
4154
- if (modalIsOpen) return Array.from(new Set([
4121
+ if (modalManagerHasOpenDialog) return Array.from(new Set([
4155
4122
  ...inferredPanel ? [getNotificationTargetTag(inferredPanel)] : [],
4156
4123
  getNotificationTargetTag("modal"),
4157
4124
  ...tags ?? []
@@ -4172,10 +4139,10 @@ var getTypeFromIncident = ({ incident, severity, type }) => {
4172
4139
  var useNotificationApi = () => {
4173
4140
  const { client } = useChatContext();
4174
4141
  const inferredPanel = useNotificationTarget();
4175
- const modalIsOpen = useStateStore(useModalDialogManager()?.state, modalDialogIsOpenSelector)?.isOpen ?? false;
4142
+ const modalManagerHasOpenDialog = useStateStore(useModalDialogManager()?.state, modalDialogManagerStateSelector)?.hasOpenDialog ?? false;
4176
4143
  return {
4177
4144
  addNotification: (0, react.useCallback)(({ actions, context, duration, emitter, error, incident, message, severity, tags, targetPanels, type }) => {
4178
- const notificationTags = getTargetTags(targetPanels, inferredPanel, tags, modalIsOpen);
4145
+ const notificationTags = getTargetTags(targetPanels, inferredPanel, tags, modalManagerHasOpenDialog);
4179
4146
  const resolvedType = getTypeFromIncident({
4180
4147
  incident,
4181
4148
  severity,
@@ -4201,7 +4168,7 @@ var useNotificationApi = () => {
4201
4168
  }, [
4202
4169
  client,
4203
4170
  inferredPanel,
4204
- modalIsOpen
4171
+ modalManagerHasOpenDialog
4205
4172
  ]),
4206
4173
  addSystemNotification: (0, react.useCallback)(({ actions, context, duration, emitter, error, incident, message, severity, tags, type }) => {
4207
4174
  const notificationTags = Array.from(new Set([SYSTEM_NOTIFICATION_TAG, ...tags ?? []]));
@@ -4603,6 +4570,12 @@ Object.defineProperty(exports, "IconFlag", {
4603
4570
  return IconFlag;
4604
4571
  }
4605
4572
  });
4573
+ Object.defineProperty(exports, "IconFolder", {
4574
+ enumerable: true,
4575
+ get: function() {
4576
+ return IconFolder;
4577
+ }
4578
+ });
4606
4579
  Object.defineProperty(exports, "IconGiphy", {
4607
4580
  enumerable: true,
4608
4581
  get: function() {
@@ -4615,6 +4588,12 @@ Object.defineProperty(exports, "IconImage", {
4615
4588
  return IconImage;
4616
4589
  }
4617
4590
  });
4591
+ Object.defineProperty(exports, "IconInfo", {
4592
+ enumerable: true,
4593
+ get: function() {
4594
+ return IconInfo;
4595
+ }
4596
+ });
4618
4597
  Object.defineProperty(exports, "IconLeave", {
4619
4598
  enumerable: true,
4620
4599
  get: function() {
@@ -4645,6 +4624,12 @@ Object.defineProperty(exports, "IconMegaphone", {
4645
4624
  return IconMegaphone;
4646
4625
  }
4647
4626
  });
4627
+ Object.defineProperty(exports, "IconMenu", {
4628
+ enumerable: true,
4629
+ get: function() {
4630
+ return IconMenu;
4631
+ }
4632
+ });
4648
4633
  Object.defineProperty(exports, "IconMessageBubble", {
4649
4634
  enumerable: true,
4650
4635
  get: function() {
@@ -4921,18 +4906,6 @@ Object.defineProperty(exports, "MESSAGE_ACTIONS", {
4921
4906
  return MESSAGE_ACTIONS;
4922
4907
  }
4923
4908
  });
4924
- Object.defineProperty(exports, "MessageComposerContext", {
4925
- enumerable: true,
4926
- get: function() {
4927
- return MessageComposerContext;
4928
- }
4929
- });
4930
- Object.defineProperty(exports, "MessageComposerContextProvider", {
4931
- enumerable: true,
4932
- get: function() {
4933
- return MessageComposerContextProvider;
4934
- }
4935
- });
4936
4909
  Object.defineProperty(exports, "ModalDialogManagerProvider", {
4937
4910
  enumerable: true,
4938
4911
  get: function() {
@@ -5419,12 +5392,6 @@ Object.defineProperty(exports, "useEditMessageHandler", {
5419
5392
  return useEditMessageHandler;
5420
5393
  }
5421
5394
  });
5422
- Object.defineProperty(exports, "useIsCooldownActive", {
5423
- enumerable: true,
5424
- get: function() {
5425
- return useIsCooldownActive;
5426
- }
5427
- });
5428
5395
  Object.defineProperty(exports, "useLegacyThreadContext", {
5429
5396
  enumerable: true,
5430
5397
  get: function() {
@@ -5437,18 +5404,6 @@ Object.defineProperty(exports, "useMentionsHandlers", {
5437
5404
  return useMentionsHandlers;
5438
5405
  }
5439
5406
  });
5440
- Object.defineProperty(exports, "useMessageComposerContext", {
5441
- enumerable: true,
5442
- get: function() {
5443
- return useMessageComposerContext;
5444
- }
5445
- });
5446
- Object.defineProperty(exports, "useMessageComposerController", {
5447
- enumerable: true,
5448
- get: function() {
5449
- return useMessageComposerController;
5450
- }
5451
- });
5452
5407
  Object.defineProperty(exports, "useModalDialog", {
5453
5408
  enumerable: true,
5454
5409
  get: function() {
@@ -5546,4 +5501,4 @@ Object.defineProperty(exports, "validateAndGetMessage", {
5546
5501
  }
5547
5502
  });
5548
5503
 
5549
- //# sourceMappingURL=useNotificationApi.e9312774.js.map
5504
+ //# sourceMappingURL=useNotificationApi.eb753f31.js.map