stream-chat-react 12.4.1 → 12.5.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 (181) hide show
  1. package/dist/assets/icons/stream-chat-icons.eot +0 -0
  2. package/dist/assets/icons/stream-chat-icons.svg +4 -0
  3. package/dist/assets/icons/stream-chat-icons.ttf +0 -0
  4. package/dist/assets/icons/stream-chat-icons.woff +0 -0
  5. package/dist/assets/icons/stream-chat-icons.woff2 +0 -0
  6. package/dist/components/Attachment/components/ProgressBar.d.ts +2 -2
  7. package/dist/components/Attachment/components/ProgressBar.js +2 -1
  8. package/dist/components/Channel/Channel.d.ts +1 -1
  9. package/dist/components/Channel/Channel.js +36 -15
  10. package/dist/components/Channel/constants.d.ts +1 -0
  11. package/dist/components/Channel/constants.js +1 -0
  12. package/dist/components/Channel/hooks/useChannelContainerClasses.d.ts +2 -0
  13. package/dist/components/Channel/hooks/useChannelContainerClasses.js +10 -5
  14. package/dist/components/ChannelPreview/utils.js +35 -0
  15. package/dist/components/Chat/hooks/useChat.js +2 -0
  16. package/dist/components/Dialog/DialogAnchor.d.ts +1 -2
  17. package/dist/components/Dialog/DialogMenu.d.ts +3 -0
  18. package/dist/components/Dialog/DialogMenu.js +5 -0
  19. package/dist/components/Dialog/DialogPortal.d.ts +1 -1
  20. package/dist/components/Dialog/DialogPortal.js +4 -12
  21. package/dist/components/Dialog/FormDialog.d.ts +23 -0
  22. package/dist/components/Dialog/FormDialog.js +72 -0
  23. package/dist/components/Dialog/PromptDialog.d.ts +8 -0
  24. package/dist/components/Dialog/PromptDialog.js +7 -0
  25. package/dist/components/DragAndDrop/DragAndDropContainer.d.ts +7 -0
  26. package/dist/components/DragAndDrop/DragAndDropContainer.js +93 -0
  27. package/dist/components/Form/FieldError.d.ts +6 -0
  28. package/dist/components/Form/FieldError.js +3 -0
  29. package/dist/components/Form/SwitchField.d.ts +7 -0
  30. package/dist/components/Form/SwitchField.js +21 -0
  31. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +10 -0
  32. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +10 -0
  33. package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts +10 -0
  34. package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.js +68 -0
  35. package/dist/components/InfiniteScrollPaginator/hooks/useCursorPaginator.d.ts +18 -0
  36. package/dist/components/InfiniteScrollPaginator/hooks/useCursorPaginator.js +41 -0
  37. package/dist/components/Message/MessageSimple.js +5 -1
  38. package/dist/components/Message/QuotedMessage.js +8 -4
  39. package/dist/components/Message/hooks/useUserRole.js +3 -2
  40. package/dist/components/Message/index.d.ts +1 -0
  41. package/dist/components/MessageInput/AttachmentSelector.d.ts +25 -0
  42. package/dist/components/MessageInput/AttachmentSelector.js +125 -0
  43. package/dist/components/MessageInput/EditMessageForm.js +1 -1
  44. package/dist/components/MessageInput/MessageInput.d.ts +2 -0
  45. package/dist/components/MessageInput/MessageInput.js +9 -4
  46. package/dist/components/MessageInput/MessageInputFlat.js +4 -10
  47. package/dist/components/MessageInput/QuotedMessagePreview.js +7 -3
  48. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -1
  49. package/dist/components/MessageInput/hooks/usePasteHandler.js +5 -8
  50. package/dist/components/MessageInput/hooks/useSubmitHandler.js +4 -1
  51. package/dist/components/MessageInput/index.d.ts +1 -0
  52. package/dist/components/MessageInput/index.js +1 -0
  53. package/dist/components/Modal/ModalHeader.d.ts +8 -0
  54. package/dist/components/Modal/ModalHeader.js +6 -0
  55. package/dist/components/Poll/Poll.d.ts +7 -0
  56. package/dist/components/Poll/Poll.js +8 -0
  57. package/dist/components/Poll/PollActions/AddCommentForm.d.ts +7 -0
  58. package/dist/components/Poll/PollActions/AddCommentForm.js +24 -0
  59. package/dist/components/Poll/PollActions/EndPollDialog.d.ts +6 -0
  60. package/dist/components/Poll/PollActions/EndPollDialog.js +19 -0
  61. package/dist/components/Poll/PollActions/PollAction.d.ts +9 -0
  62. package/dist/components/Poll/PollActions/PollAction.js +5 -0
  63. package/dist/components/Poll/PollActions/PollActions.d.ts +17 -0
  64. package/dist/components/Poll/PollActions/PollActions.js +46 -0
  65. package/dist/components/Poll/PollActions/PollAnswerList.d.ts +7 -0
  66. package/dist/components/Poll/PollActions/PollAnswerList.js +28 -0
  67. package/dist/components/Poll/PollActions/PollOptionsFullList.d.ts +6 -0
  68. package/dist/components/Poll/PollActions/PollOptionsFullList.js +16 -0
  69. package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.d.ts +7 -0
  70. package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.js +18 -0
  71. package/dist/components/Poll/PollActions/PollResults/PollOptionWithLatestVotes.d.ts +9 -0
  72. package/dist/components/Poll/PollActions/PollResults/PollOptionWithLatestVotes.js +19 -0
  73. package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts +11 -0
  74. package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.js +18 -0
  75. package/dist/components/Poll/PollActions/PollResults/PollResults.d.ts +6 -0
  76. package/dist/components/Poll/PollActions/PollResults/PollResults.js +33 -0
  77. package/dist/components/Poll/PollActions/PollResults/index.d.ts +1 -0
  78. package/dist/components/Poll/PollActions/PollResults/index.js +1 -0
  79. package/dist/components/Poll/PollActions/SuggestPollOptionForm.d.ts +7 -0
  80. package/dist/components/Poll/PollActions/SuggestPollOptionForm.js +37 -0
  81. package/dist/components/Poll/PollActions/index.d.ts +7 -0
  82. package/dist/components/Poll/PollActions/index.js +7 -0
  83. package/dist/components/Poll/PollContent.d.ts +3 -0
  84. package/dist/components/Poll/PollContent.js +18 -0
  85. package/dist/components/Poll/PollCreationDialog/OptionFieldSet.d.ts +9 -0
  86. package/dist/components/Poll/PollCreationDialog/OptionFieldSet.js +70 -0
  87. package/dist/components/Poll/PollCreationDialog/PollCreationDialog.d.ts +5 -0
  88. package/dist/components/Poll/PollCreationDialog/PollCreationDialog.js +87 -0
  89. package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.d.ts +8 -0
  90. package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.js +44 -0
  91. package/dist/components/Poll/PollCreationDialog/index.d.ts +1 -0
  92. package/dist/components/Poll/PollCreationDialog/index.js +1 -0
  93. package/dist/components/Poll/PollCreationDialog/types.d.ts +21 -0
  94. package/dist/components/Poll/PollCreationDialog/types.js +1 -0
  95. package/dist/components/Poll/PollHeader.d.ts +3 -0
  96. package/dist/components/Poll/PollHeader.js +31 -0
  97. package/dist/components/Poll/PollOptionList.d.ts +6 -0
  98. package/dist/components/Poll/PollOptionList.js +14 -0
  99. package/dist/components/Poll/PollOptionSelector.d.ts +19 -0
  100. package/dist/components/Poll/PollOptionSelector.js +53 -0
  101. package/dist/components/Poll/PollVote.d.ts +12 -0
  102. package/dist/components/Poll/PollVote.js +31 -0
  103. package/dist/components/Poll/QuotedPoll.d.ts +3 -0
  104. package/dist/components/Poll/QuotedPoll.js +17 -0
  105. package/dist/components/Poll/constants.d.ts +3 -0
  106. package/dist/components/Poll/constants.js +3 -0
  107. package/dist/components/Poll/hooks/index.d.ts +2 -0
  108. package/dist/components/Poll/hooks/index.js +2 -0
  109. package/dist/components/Poll/hooks/useManagePollVotesRealtime.d.ts +4 -0
  110. package/dist/components/Poll/hooks/useManagePollVotesRealtime.js +36 -0
  111. package/dist/components/Poll/hooks/usePollAnswerPagination.d.ts +13 -0
  112. package/dist/components/Poll/hooks/usePollAnswerPagination.js +27 -0
  113. package/dist/components/Poll/hooks/usePollOptionVotesPagination.d.ts +13 -0
  114. package/dist/components/Poll/hooks/usePollOptionVotesPagination.js +27 -0
  115. package/dist/components/Poll/index.d.ts +10 -0
  116. package/dist/components/Poll/index.js +10 -0
  117. package/dist/components/Portal/Portal.d.ts +6 -0
  118. package/dist/components/Portal/Portal.js +14 -0
  119. package/dist/components/ReactFileUtilities/UploadButton.d.ts +11 -1
  120. package/dist/components/ReactFileUtilities/UploadButton.js +22 -4
  121. package/dist/components/Thread/Thread.js +1 -1
  122. package/dist/components/index.d.ts +2 -0
  123. package/dist/components/index.js +1 -0
  124. package/dist/context/AttachmentSelectorContext.d.ts +8 -0
  125. package/dist/context/AttachmentSelectorContext.js +6 -0
  126. package/dist/context/ComponentContext.d.ts +21 -5
  127. package/dist/context/PollContext.d.ts +11 -0
  128. package/dist/context/PollContext.js +7 -0
  129. package/dist/context/index.d.ts +1 -0
  130. package/dist/context/index.js +1 -0
  131. package/dist/css/v2/index.css +2 -2
  132. package/dist/css/v2/index.layout.css +2 -2
  133. package/dist/experimental/index.browser.cjs +129 -117
  134. package/dist/experimental/index.browser.cjs.map +4 -4
  135. package/dist/experimental/index.node.cjs +129 -117
  136. package/dist/experimental/index.node.cjs.map +4 -4
  137. package/dist/i18n/Streami18n.d.ts +45 -0
  138. package/dist/i18n/de.json +70 -25
  139. package/dist/i18n/en.json +46 -1
  140. package/dist/i18n/es.json +74 -25
  141. package/dist/i18n/fr.json +83 -34
  142. package/dist/i18n/hi.json +54 -9
  143. package/dist/i18n/it.json +75 -26
  144. package/dist/i18n/ja.json +46 -5
  145. package/dist/i18n/ko.json +46 -5
  146. package/dist/i18n/nl.json +59 -14
  147. package/dist/i18n/pt.json +66 -17
  148. package/dist/i18n/ru.json +66 -13
  149. package/dist/i18n/tr.json +77 -32
  150. package/dist/index.browser.cjs +4229 -1861
  151. package/dist/index.browser.cjs.map +4 -4
  152. package/dist/index.node.cjs +4169 -1774
  153. package/dist/index.node.cjs.map +4 -4
  154. package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +2 -2
  155. package/dist/scss/v2/AudioRecorder/AudioRecorder-layout.scss +64 -14
  156. package/dist/scss/v2/AudioRecorder/AudioRecorder-theme.scss +11 -1
  157. package/dist/scss/v2/Avatar/Avatar-layout.scss +4 -0
  158. package/dist/scss/v2/ChannelList/ChannelList-layout.scss +15 -0
  159. package/dist/scss/v2/Dialog/Dialog-layout.scss +54 -0
  160. package/dist/scss/v2/Dialog/Dialog-theme.scss +103 -0
  161. package/dist/scss/v2/DragAndDropContainer/DragAmdDropContainer-layout.scss +5 -0
  162. package/dist/scss/v2/DragAndDropContainer/DragAndDropContainer-theme.scss +47 -0
  163. package/dist/scss/v2/Form/Form-layout.scss +9 -0
  164. package/dist/scss/v2/Form/Form-theme.scss +17 -0
  165. package/dist/scss/v2/Icon/Icon-layout.scss +6 -1
  166. package/dist/scss/v2/InfiniteScrollPaginator/InfiniteScrollPaginator-layout.scss +4 -0
  167. package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +0 -9
  168. package/dist/scss/v2/MessageInput/MessageInput-layout.scss +29 -4
  169. package/dist/scss/v2/MessageInput/MessageInput-theme.scss +61 -0
  170. package/dist/scss/v2/Modal/Modal-layout.scss +31 -0
  171. package/dist/scss/v2/Modal/Modal-theme.scss +6 -0
  172. package/dist/scss/v2/Notification/MessageNotification-layout.scss +1 -1
  173. package/dist/scss/v2/Poll/Poll-layout.scss +488 -0
  174. package/dist/scss/v2/Poll/Poll-theme.scss +206 -0
  175. package/dist/scss/v2/_base.scss +4 -0
  176. package/dist/scss/v2/_global-theme-variables.scss +1 -1
  177. package/dist/scss/v2/_icons.scss +7 -0
  178. package/dist/scss/v2/index.layout.scss +4 -0
  179. package/dist/scss/v2/index.scss +4 -0
  180. package/dist/types/types.d.ts +6 -0
  181. package/package.json +4 -4
@@ -40,7 +40,7 @@ module.exports = __toCommonJS(experimental_exports);
40
40
 
41
41
  // src/experimental/MessageActions/MessageActions.tsx
42
42
  var import_clsx5 = __toESM(require("clsx"));
43
- var import_react24 = __toESM(require("react"));
43
+ var import_react25 = __toESM(require("react"));
44
44
 
45
45
  // src/context/ChannelActionContext.tsx
46
46
  var import_react = __toESM(require("react"));
@@ -94,11 +94,10 @@ var ComponentContext = import_react4.default.createContext({});
94
94
  var useComponentContext = (_componentName) => (0, import_react4.useContext)(ComponentContext);
95
95
 
96
96
  // src/context/DialogManagerContext.tsx
97
- var import_react8 = __toESM(require("react"));
97
+ var import_react9 = __toESM(require("react"));
98
98
 
99
99
  // src/components/Dialog/DialogPortal.tsx
100
- var import_react7 = __toESM(require("react"));
101
- var import_react_dom = require("react-dom");
100
+ var import_react8 = __toESM(require("react"));
102
101
 
103
102
  // src/components/Dialog/hooks/useDialog.ts
104
103
  var import_react6 = require("react");
@@ -138,37 +137,50 @@ var useDialogIsOpen = (id) => {
138
137
  return useStateStore(dialogManager.state, dialogIsOpenSelector).isOpen;
139
138
  };
140
139
 
141
- // src/components/Dialog/DialogPortal.tsx
142
- var DialogPortalEntry = ({
140
+ // src/components/Portal/Portal.ts
141
+ var import_react7 = require("react");
142
+ var import_react_dom = require("react-dom");
143
+ var Portal = ({
143
144
  children,
144
- dialogId
145
+ getPortalDestination,
146
+ isOpen
145
147
  }) => {
146
- const { dialogManager } = useDialogManager();
147
- const dialogIsOpen = useDialogIsOpen(dialogId);
148
148
  const [portalDestination, setPortalDestination] = (0, import_react7.useState)(null);
149
149
  (0, import_react7.useLayoutEffect)(() => {
150
- const destination = document.querySelector(
151
- `div[data-str-chat__portal-id="${dialogManager.id}"]`
152
- );
153
- if (!destination) return;
150
+ const destination = getPortalDestination();
151
+ if (!destination || !isOpen) return;
154
152
  setPortalDestination(destination);
155
- }, [dialogManager, dialogIsOpen]);
153
+ }, [getPortalDestination, isOpen]);
156
154
  if (!portalDestination) return null;
157
155
  return (0, import_react_dom.createPortal)(children, portalDestination);
158
156
  };
159
157
 
158
+ // src/components/Dialog/DialogPortal.tsx
159
+ var DialogPortalEntry = ({
160
+ children,
161
+ dialogId
162
+ }) => {
163
+ const { dialogManager } = useDialogManager();
164
+ const dialogIsOpen = useDialogIsOpen(dialogId);
165
+ const getPortalDestination = (0, import_react8.useCallback)(
166
+ () => document.querySelector(`div[data-str-chat__portal-id="${dialogManager.id}"]`),
167
+ [dialogManager.id]
168
+ );
169
+ return /* @__PURE__ */ import_react8.default.createElement(Portal, { getPortalDestination, isOpen: dialogIsOpen }, children);
170
+ };
171
+
160
172
  // src/context/DialogManagerContext.tsx
161
- var DialogManagerProviderContext = import_react8.default.createContext(void 0);
173
+ var DialogManagerProviderContext = import_react9.default.createContext(void 0);
162
174
  var useDialogManager = () => {
163
- const value = (0, import_react8.useContext)(DialogManagerProviderContext);
175
+ const value = (0, import_react9.useContext)(DialogManagerProviderContext);
164
176
  return value;
165
177
  };
166
178
 
167
179
  // src/context/MessageContext.tsx
168
- var import_react9 = __toESM(require("react"));
169
- var MessageContext = import_react9.default.createContext(void 0);
180
+ var import_react10 = __toESM(require("react"));
181
+ var MessageContext = import_react10.default.createContext(void 0);
170
182
  var useMessageContext = (_componentName) => {
171
- const contextValue = (0, import_react9.useContext)(MessageContext);
183
+ const contextValue = (0, import_react10.useContext)(MessageContext);
172
184
  if (!contextValue) {
173
185
  return {};
174
186
  }
@@ -176,7 +188,7 @@ var useMessageContext = (_componentName) => {
176
188
  };
177
189
 
178
190
  // src/context/TranslationContext.tsx
179
- var import_react10 = __toESM(require("react"));
191
+ var import_react11 = __toESM(require("react"));
180
192
  var import_dayjs2 = __toESM(require("dayjs"));
181
193
  var import_calendar = __toESM(require("dayjs/plugin/calendar"));
182
194
  var import_localizedFormat = __toESM(require("dayjs/plugin/localizedFormat"));
@@ -189,13 +201,13 @@ var defaultDateTimeParser = (input) => (0, import_dayjs.default)(input);
189
201
  // src/context/TranslationContext.tsx
190
202
  import_dayjs2.default.extend(import_calendar.default);
191
203
  import_dayjs2.default.extend(import_localizedFormat.default);
192
- var TranslationContext = import_react10.default.createContext({
204
+ var TranslationContext = import_react11.default.createContext({
193
205
  t: defaultTranslatorFunction,
194
206
  tDateTimeParser: defaultDateTimeParser,
195
207
  userLanguage: "en"
196
208
  });
197
209
  var useTranslationContext = (componentName) => {
198
- const contextValue = (0, import_react10.useContext)(TranslationContext);
210
+ const contextValue = (0, import_react11.useContext)(TranslationContext);
199
211
  if (!contextValue) {
200
212
  console.warn(
201
213
  `The useTranslationContext hook was called outside of the TranslationContext provider. Make sure this hook is called within a child of the Chat component. The errored call is located in the ${componentName} component.`
@@ -207,12 +219,12 @@ var useTranslationContext = (componentName) => {
207
219
 
208
220
  // src/components/Avatar/Avatar.tsx
209
221
  var import_clsx = __toESM(require("clsx"));
210
- var import_react12 = __toESM(require("react"));
222
+ var import_react13 = __toESM(require("react"));
211
223
 
212
224
  // src/components/Threads/icons.tsx
213
- var import_react11 = __toESM(require("react"));
225
+ var import_react12 = __toESM(require("react"));
214
226
  var Icon = {
215
- MessageBubble: (props) => /* @__PURE__ */ import_react11.default.createElement(
227
+ MessageBubble: (props) => /* @__PURE__ */ import_react12.default.createElement(
216
228
  "svg",
217
229
  {
218
230
  className: "str-chat__icon str-chat__icon--message-bubble",
@@ -223,7 +235,7 @@ var Icon = {
223
235
  xmlns: "http://www.w3.org/2000/svg",
224
236
  ...props
225
237
  },
226
- /* @__PURE__ */ import_react11.default.createElement(
238
+ /* @__PURE__ */ import_react12.default.createElement(
227
239
  "path",
228
240
  {
229
241
  d: "M1.66659 1.66665H12.3333V9.66665H2.44659L1.66659 10.4466V1.66665ZM1.66659 0.333313C0.933252 0.333313 0.339919 0.933313 0.339919 1.66665L0.333252 13.6666L2.99992 11H12.3333C13.0666 11 13.6666 10.4 13.6666 9.66665V1.66665C13.6666 0.933313 13.0666 0.333313 12.3333 0.333313H1.66659ZM2.99992 6.99998H10.9999V8.33331H2.99992V6.99998ZM2.99992 4.99998H10.9999V6.33331H2.99992V4.99998ZM2.99992 2.99998H10.9999V4.33331H2.99992V2.99998Z",
@@ -231,7 +243,7 @@ var Icon = {
231
243
  }
232
244
  )
233
245
  ),
234
- MessageBubbleEmpty: (props) => /* @__PURE__ */ import_react11.default.createElement(
246
+ MessageBubbleEmpty: (props) => /* @__PURE__ */ import_react12.default.createElement(
235
247
  "svg",
236
248
  {
237
249
  className: "str-chat__icon str-chat__icon--message-bubble-empty",
@@ -242,7 +254,7 @@ var Icon = {
242
254
  xmlns: "http://www.w3.org/2000/svg",
243
255
  ...props
244
256
  },
245
- /* @__PURE__ */ import_react11.default.createElement(
257
+ /* @__PURE__ */ import_react12.default.createElement(
246
258
  "path",
247
259
  {
248
260
  d: "M18 0H2C0.9 0 0 0.9 0 2V20L4 16H18C19.1 16 20 15.1 20 14V2C20 0.9 19.1 0 18 0ZM18 14H4L2 16V2H18V14Z",
@@ -250,7 +262,7 @@ var Icon = {
250
262
  }
251
263
  )
252
264
  ),
253
- Reload: (props) => /* @__PURE__ */ import_react11.default.createElement(
265
+ Reload: (props) => /* @__PURE__ */ import_react12.default.createElement(
254
266
  "svg",
255
267
  {
256
268
  className: "str-chat__icon str-chat__icon--reload",
@@ -261,7 +273,7 @@ var Icon = {
261
273
  xmlns: "http://www.w3.org/2000/svg",
262
274
  ...props
263
275
  },
264
- /* @__PURE__ */ import_react11.default.createElement(
276
+ /* @__PURE__ */ import_react12.default.createElement(
265
277
  "path",
266
278
  {
267
279
  d: "M8 3V0L4 4L8 8V5C11.31 5 14 7.69 14 11C14 12.01 13.75 12.97 13.3 13.8L14.76 15.26C15.54 14.03 16 12.57 16 11C16 6.58 12.42 3 8 3ZM8 17C4.69 17 2 14.31 2 11C2 9.99 2.25 9.03 2.7 8.2L1.24 6.74C0.46 7.97 0 9.43 0 11C0 15.42 3.58 19 8 19V22L12 18L8 14V17Z",
@@ -269,7 +281,7 @@ var Icon = {
269
281
  }
270
282
  )
271
283
  ),
272
- User: (props) => /* @__PURE__ */ import_react11.default.createElement(
284
+ User: (props) => /* @__PURE__ */ import_react12.default.createElement(
273
285
  "svg",
274
286
  {
275
287
  className: "str-chat__icon str-chat__icon--user",
@@ -280,7 +292,7 @@ var Icon = {
280
292
  xmlns: "http://www.w3.org/2000/svg",
281
293
  ...props
282
294
  },
283
- /* @__PURE__ */ import_react11.default.createElement(
295
+ /* @__PURE__ */ import_react12.default.createElement(
284
296
  "path",
285
297
  {
286
298
  d: "M8 2C9.1 2 10 2.9 10 4C10 5.1 9.1 6 8 6C6.9 6 6 5.1 6 4C6 2.9 6.9 2 8 2ZM8 12C10.7 12 13.8 13.29 14 14H2C2.23 13.28 5.31 12 8 12ZM8 0C5.79 0 4 1.79 4 4C4 6.21 5.79 8 8 8C10.21 8 12 6.21 12 4C12 1.79 10.21 0 8 0ZM8 10C5.33 10 0 11.34 0 14V16H16V14C16 11.34 10.67 10 8 10Z",
@@ -324,14 +336,14 @@ var Avatar = (props) => {
324
336
  onClick = () => void 0,
325
337
  onMouseOver = () => void 0
326
338
  } = props;
327
- const [error, setError] = (0, import_react12.useState)(false);
328
- (0, import_react12.useEffect)(() => {
339
+ const [error, setError] = (0, import_react13.useState)(false);
340
+ (0, import_react13.useEffect)(() => {
329
341
  setError(false);
330
342
  }, [image]);
331
343
  const nameStr = name?.toString() || "";
332
344
  const initials = getWholeChar(nameStr, 0);
333
345
  const showImage = image && !error;
334
- return /* @__PURE__ */ import_react12.default.createElement(
346
+ return /* @__PURE__ */ import_react13.default.createElement(
335
347
  "div",
336
348
  {
337
349
  className: (0, import_clsx.default)(`str-chat__avatar str-chat__message-sender-avatar`, className, {
@@ -345,7 +357,7 @@ var Avatar = (props) => {
345
357
  role: "button",
346
358
  title: name
347
359
  },
348
- showImage ? /* @__PURE__ */ import_react12.default.createElement(
360
+ showImage ? /* @__PURE__ */ import_react13.default.createElement(
349
361
  "img",
350
362
  {
351
363
  alt: initials,
@@ -354,7 +366,7 @@ var Avatar = (props) => {
354
366
  onError: () => setError(true),
355
367
  src: image
356
368
  }
357
- ) : /* @__PURE__ */ import_react12.default.createElement(import_react12.default.Fragment, null, !!initials.length && /* @__PURE__ */ import_react12.default.createElement("div", { className: (0, import_clsx.default)("str-chat__avatar-fallback"), "data-testid": "avatar-fallback" }, initials), !initials.length && /* @__PURE__ */ import_react12.default.createElement(Icon.User, null))
369
+ ) : /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, null, !!initials.length && /* @__PURE__ */ import_react13.default.createElement("div", { className: (0, import_clsx.default)("str-chat__avatar-fallback"), "data-testid": "avatar-fallback" }, initials), !initials.length && /* @__PURE__ */ import_react13.default.createElement(Icon.User, null))
358
370
  );
359
371
  };
360
372
 
@@ -393,7 +405,7 @@ var useUserRole = (message, onlySenderCanEdit, disableQuotedMessages) => {
393
405
  const isOwner = channel.state.membership.role === "owner";
394
406
  const isModerator = client.user?.role === "channel_moderator" || channel.state.membership.role === "channel_moderator" || channel.state.membership.role === "moderator" || channel.state.membership.is_moderator === true || channel.state.membership.channel_role === "channel_moderator";
395
407
  const isMyMessage = client.userID === message.user?.id;
396
- const canEdit = !onlySenderCanEdit && channelCapabilities["update-any-message"] || isMyMessage && channelCapabilities["update-own-message"];
408
+ const canEdit = !message.poll && (!onlySenderCanEdit && channelCapabilities["update-any-message"] || isMyMessage && channelCapabilities["update-own-message"]);
397
409
  const canDelete = channelCapabilities["delete-any-message"] || isMyMessage && channelCapabilities["delete-own-message"];
398
410
  const canFlag = !isMyMessage && channelCapabilities["flag-message"];
399
411
  const canMarkUnread = channelCapabilities["read-events"];
@@ -418,8 +430,8 @@ var useUserRole = (message, onlySenderCanEdit, disableQuotedMessages) => {
418
430
  };
419
431
 
420
432
  // src/components/Message/icons.tsx
421
- var import_react13 = __toESM(require("react"));
422
- var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.default.createElement(
433
+ var import_react14 = __toESM(require("react"));
434
+ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react14.default.createElement(
423
435
  "svg",
424
436
  {
425
437
  className,
@@ -428,7 +440,7 @@ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.default
428
440
  width: "11",
429
441
  xmlns: "http://www.w3.org/2000/svg"
430
442
  },
431
- /* @__PURE__ */ import_react13.default.createElement(
443
+ /* @__PURE__ */ import_react14.default.createElement(
432
444
  "path",
433
445
  {
434
446
  d: "M1.5 3a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm4 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm4 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z",
@@ -436,7 +448,7 @@ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.default
436
448
  }
437
449
  )
438
450
  );
439
- var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.default.createElement(
451
+ var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react14.default.createElement(
440
452
  "svg",
441
453
  {
442
454
  className,
@@ -445,9 +457,9 @@ var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.defaul
445
457
  width: "12",
446
458
  xmlns: "http://www.w3.org/2000/svg"
447
459
  },
448
- /* @__PURE__ */ import_react13.default.createElement("g", { clipRule: "evenodd", fillRule: "evenodd" }, /* @__PURE__ */ import_react13.default.createElement("path", { d: "M6 1.2C3.3 1.2 1.2 3.3 1.2 6c0 2.7 2.1 4.8 4.8 4.8 2.7 0 4.8-2.1 4.8-4.8 0-2.7-2.1-4.8-4.8-4.8zM0 6c0-3.3 2.7-6 6-6s6 2.7 6 6-2.7 6-6 6-6-2.7-6-6z" }), /* @__PURE__ */ import_react13.default.createElement("path", { d: "M5.4 4.5c0 .5-.4.9-.9.9s-.9-.4-.9-.9.4-.9.9-.9.9.4.9.9zM8.4 4.5c0 .5-.4.9-.9.9s-.9-.4-.9-.9.4-.9.9-.9.9.4.9.9zM3.3 6.7c.3-.2.6-.1.8.1.3.4.8.9 1.5 1 .6.2 1.4.1 2.4-1 .2-.2.6-.3.8 0 .2.2.3.6 0 .8-1.1 1.3-2.4 1.7-3.5 1.5-1-.2-1.8-.9-2.2-1.5-.2-.3-.1-.7.2-.9z" }))
460
+ /* @__PURE__ */ import_react14.default.createElement("g", { clipRule: "evenodd", fillRule: "evenodd" }, /* @__PURE__ */ import_react14.default.createElement("path", { d: "M6 1.2C3.3 1.2 1.2 3.3 1.2 6c0 2.7 2.1 4.8 4.8 4.8 2.7 0 4.8-2.1 4.8-4.8 0-2.7-2.1-4.8-4.8-4.8zM0 6c0-3.3 2.7-6 6-6s6 2.7 6 6-2.7 6-6 6-6-2.7-6-6z" }), /* @__PURE__ */ import_react14.default.createElement("path", { d: "M5.4 4.5c0 .5-.4.9-.9.9s-.9-.4-.9-.9.4-.9.9-.9.9.4.9.9zM8.4 4.5c0 .5-.4.9-.9.9s-.9-.4-.9-.9.4-.9.9-.9.9.4.9.9zM3.3 6.7c.3-.2.6-.1.8.1.3.4.8.9 1.5 1 .6.2 1.4.1 2.4-1 .2-.2.6-.3.8 0 .2.2.3.6 0 .8-1.1 1.3-2.4 1.7-3.5 1.5-1-.2-1.8-.9-2.2-1.5-.2-.3-.1-.7.2-.9z" }))
449
461
  );
450
- var ThreadIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.default.createElement("svg", { className, height: "10", width: "14", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react13.default.createElement(
462
+ var ThreadIcon = ({ className = "" }) => /* @__PURE__ */ import_react14.default.createElement("svg", { className, height: "10", width: "14", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react14.default.createElement(
451
463
  "path",
452
464
  {
453
465
  d: "M8.516 3c4.78 0 4.972 6.5 4.972 6.5-1.6-2.906-2.847-3.184-4.972-3.184v2.872L3.772 4.994 8.516.5V3zM.484 5l4.5-4.237v1.78L2.416 5l2.568 2.125v1.828L.484 5z",
@@ -457,11 +469,11 @@ var ThreadIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.default.
457
469
 
458
470
  // src/components/MessageActions/MessageActions.tsx
459
471
  var import_clsx3 = __toESM(require("clsx"));
460
- var import_react15 = __toESM(require("react"));
472
+ var import_react16 = __toESM(require("react"));
461
473
 
462
474
  // src/components/Dialog/DialogAnchor.tsx
463
475
  var import_clsx2 = __toESM(require("clsx"));
464
- var import_react14 = __toESM(require("react"));
476
+ var import_react15 = __toESM(require("react"));
465
477
  var import_focus = require("@react-aria/focus");
466
478
  var import_react_popper = require("react-popper");
467
479
  function useDialogAnchor({
@@ -469,7 +481,7 @@ function useDialogAnchor({
469
481
  placement,
470
482
  referenceElement
471
483
  }) {
472
- const [popperElement, setPopperElement] = (0, import_react14.useState)(null);
484
+ const [popperElement, setPopperElement] = (0, import_react15.useState)(null);
473
485
  const { attributes, styles, update } = (0, import_react_popper.usePopper)(referenceElement, popperElement, {
474
486
  modifiers: [
475
487
  {
@@ -484,7 +496,7 @@ function useDialogAnchor({
484
496
  ],
485
497
  placement
486
498
  });
487
- (0, import_react14.useEffect)(() => {
499
+ (0, import_react15.useEffect)(() => {
488
500
  if (open && popperElement) {
489
501
  update?.();
490
502
  }
@@ -515,7 +527,7 @@ var DialogAnchor = ({
515
527
  placement,
516
528
  referenceElement
517
529
  });
518
- (0, import_react14.useEffect)(() => {
530
+ (0, import_react15.useEffect)(() => {
519
531
  if (!open) return;
520
532
  const hideOnEscape = (event) => {
521
533
  if (event.key !== "Escape") return;
@@ -529,7 +541,7 @@ var DialogAnchor = ({
529
541
  if (!open) {
530
542
  return null;
531
543
  }
532
- return /* @__PURE__ */ import_react14.default.createElement(DialogPortalEntry, { dialogId: id }, /* @__PURE__ */ import_react14.default.createElement(import_focus.FocusScope, { autoFocus: focus, contain: trapFocus, restoreFocus: true }, /* @__PURE__ */ import_react14.default.createElement(
544
+ return /* @__PURE__ */ import_react15.default.createElement(DialogPortalEntry, { dialogId: id }, /* @__PURE__ */ import_react15.default.createElement(import_focus.FocusScope, { autoFocus: focus, contain: trapFocus, restoreFocus: true }, /* @__PURE__ */ import_react15.default.createElement(
533
545
  "div",
534
546
  {
535
547
  ...restDivProps,
@@ -557,25 +569,25 @@ var MessageActionsWrapper = (props) => {
557
569
  "data-testid": "message-actions",
558
570
  onClick: toggleOpen
559
571
  };
560
- if (inline) return /* @__PURE__ */ import_react15.default.createElement("span", { ...wrapperProps }, children);
561
- return /* @__PURE__ */ import_react15.default.createElement("div", { ...wrapperProps }, children);
572
+ if (inline) return /* @__PURE__ */ import_react16.default.createElement("span", { ...wrapperProps }, children);
573
+ return /* @__PURE__ */ import_react16.default.createElement("div", { ...wrapperProps }, children);
562
574
  };
563
575
 
564
576
  // src/components/Reactions/ReactionSelectorWithButton.tsx
565
- var import_react20 = __toESM(require("react"));
577
+ var import_react21 = __toESM(require("react"));
566
578
 
567
579
  // src/components/Reactions/ReactionSelector.tsx
568
- var import_react19 = __toESM(require("react"));
580
+ var import_react20 = __toESM(require("react"));
569
581
  var import_clsx4 = __toESM(require("clsx"));
570
582
 
571
583
  // src/components/Reactions/reactionOptions.tsx
572
- var import_react18 = __toESM(require("react"));
584
+ var import_react19 = __toESM(require("react"));
573
585
 
574
586
  // src/components/Reactions/StreamEmoji.tsx
575
- var import_react17 = __toESM(require("react"));
587
+ var import_react18 = __toESM(require("react"));
576
588
 
577
589
  // src/components/Reactions/SpriteImage.tsx
578
- var import_react16 = __toESM(require("react"));
590
+ var import_react17 = __toESM(require("react"));
579
591
 
580
592
  // src/components/Reactions/utils/utils.ts
581
593
  var isMutableRef = (ref) => {
@@ -610,13 +622,13 @@ var SpriteImage = ({
610
622
  style,
611
623
  width
612
624
  }) => {
613
- const [[spriteWidth, spriteHeight], setSpriteDimensions] = (0, import_react16.useState)([0, 0]);
614
- (0, import_react16.useEffect)(() => {
625
+ const [[spriteWidth, spriteHeight], setSpriteDimensions] = (0, import_react17.useState)([0, 0]);
626
+ (0, import_react17.useEffect)(() => {
615
627
  getImageDimensions(spriteUrl).then(setSpriteDimensions).catch(console.error);
616
628
  }, [spriteUrl]);
617
629
  const [x, y] = position;
618
- if (!spriteHeight || !spriteWidth) return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, fallback);
619
- return /* @__PURE__ */ import_react16.default.createElement(
630
+ if (!spriteHeight || !spriteWidth) return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, fallback);
631
+ return /* @__PURE__ */ import_react17.default.createElement(
620
632
  "div",
621
633
  {
622
634
  "data-testid": "sprite-image",
@@ -654,7 +666,7 @@ var StreamEmoji = ({
654
666
  type
655
667
  }) => {
656
668
  const position = StreamSpriteEmojiPositions[type];
657
- return /* @__PURE__ */ import_react17.default.createElement(
669
+ return /* @__PURE__ */ import_react18.default.createElement(
658
670
  SpriteImage,
659
671
  {
660
672
  columns: 2,
@@ -671,11 +683,11 @@ var StreamEmoji = ({
671
683
 
672
684
  // src/components/Reactions/reactionOptions.tsx
673
685
  var defaultReactionOptions = [
674
- { type: "haha", Component: () => /* @__PURE__ */ import_react18.default.createElement(StreamEmoji, { fallback: "\u{1F602}", type: "haha" }), name: "Joy" },
675
- { type: "like", Component: () => /* @__PURE__ */ import_react18.default.createElement(StreamEmoji, { fallback: "\u{1F44D}", type: "like" }), name: "Thumbs up" },
676
- { type: "love", Component: () => /* @__PURE__ */ import_react18.default.createElement(StreamEmoji, { fallback: "\u2764\uFE0F", type: "love" }), name: "Heart" },
677
- { type: "sad", Component: () => /* @__PURE__ */ import_react18.default.createElement(StreamEmoji, { fallback: "\u{1F614}", type: "sad" }), name: "Sad" },
678
- { type: "wow", Component: () => /* @__PURE__ */ import_react18.default.createElement(StreamEmoji, { fallback: "\u{1F632}", type: "wow" }), name: "Astonished" }
686
+ { type: "haha", Component: () => /* @__PURE__ */ import_react19.default.createElement(StreamEmoji, { fallback: "\u{1F602}", type: "haha" }), name: "Joy" },
687
+ { type: "like", Component: () => /* @__PURE__ */ import_react19.default.createElement(StreamEmoji, { fallback: "\u{1F44D}", type: "like" }), name: "Thumbs up" },
688
+ { type: "love", Component: () => /* @__PURE__ */ import_react19.default.createElement(StreamEmoji, { fallback: "\u2764\uFE0F", type: "love" }), name: "Heart" },
689
+ { type: "sad", Component: () => /* @__PURE__ */ import_react19.default.createElement(StreamEmoji, { fallback: "\u{1F614}", type: "sad" }), name: "Sad" },
690
+ { type: "wow", Component: () => /* @__PURE__ */ import_react19.default.createElement(StreamEmoji, { fallback: "\u{1F632}", type: "wow" }), name: "Astonished" }
679
691
  ];
680
692
 
681
693
  // src/components/Reactions/ReactionSelector.tsx
@@ -707,23 +719,23 @@ var UnMemoizedReactionSelector = (props) => {
707
719
  const latestReactions = propLatestReactions || message?.latest_reactions || [];
708
720
  const ownReactions = propOwnReactions || message?.own_reactions || [];
709
721
  const reactionGroups = propReactionGroups || message?.reaction_groups || {};
710
- const [tooltipReactionType, setTooltipReactionType] = (0, import_react19.useState)(null);
711
- const [tooltipPositions, setTooltipPositions] = (0, import_react19.useState)(null);
712
- const rootRef = (0, import_react19.useRef)(null);
713
- const targetRef = (0, import_react19.useRef)(null);
714
- const tooltipRef = (0, import_react19.useRef)(null);
715
- const showTooltip = (0, import_react19.useCallback)(
722
+ const [tooltipReactionType, setTooltipReactionType] = (0, import_react20.useState)(null);
723
+ const [tooltipPositions, setTooltipPositions] = (0, import_react20.useState)(null);
724
+ const rootRef = (0, import_react20.useRef)(null);
725
+ const targetRef = (0, import_react20.useRef)(null);
726
+ const tooltipRef = (0, import_react20.useRef)(null);
727
+ const showTooltip = (0, import_react20.useCallback)(
716
728
  (event, reactionType) => {
717
729
  targetRef.current = event.currentTarget;
718
730
  setTooltipReactionType(reactionType);
719
731
  },
720
732
  []
721
733
  );
722
- const hideTooltip = (0, import_react19.useCallback)(() => {
734
+ const hideTooltip = (0, import_react20.useCallback)(() => {
723
735
  setTooltipReactionType(null);
724
736
  setTooltipPositions(null);
725
737
  }, []);
726
- (0, import_react19.useEffect)(() => {
738
+ (0, import_react20.useEffect)(() => {
727
739
  if (!tooltipReactionType || !rootRef.current) return;
728
740
  const tooltip = tooltipRef.current?.getBoundingClientRect();
729
741
  const target = targetRef.current?.getBoundingClientRect();
@@ -744,7 +756,7 @@ var UnMemoizedReactionSelector = (props) => {
744
756
  }).filter(Boolean);
745
757
  const iHaveReactedWithReaction = (reactionType) => ownReactions.find((reaction) => reaction.type === reactionType);
746
758
  const getLatestUserForReactionType = (type) => latestReactions.find((reaction) => reaction.type === type && !!reaction.user)?.user || void 0;
747
- return /* @__PURE__ */ import_react19.default.createElement(
759
+ return /* @__PURE__ */ import_react20.default.createElement(
748
760
  "div",
749
761
  {
750
762
  className: (0, import_clsx4.default)(
@@ -756,7 +768,7 @@ var UnMemoizedReactionSelector = (props) => {
756
768
  "data-testid": "reaction-selector",
757
769
  ref: rootRef
758
770
  },
759
- !!tooltipReactionType && detailedView && /* @__PURE__ */ import_react19.default.createElement(
771
+ !!tooltipReactionType && detailedView && /* @__PURE__ */ import_react20.default.createElement(
760
772
  "div",
761
773
  {
762
774
  className: "str-chat__reaction-selector-tooltip",
@@ -766,13 +778,13 @@ var UnMemoizedReactionSelector = (props) => {
766
778
  visibility: tooltipPositions ? "visible" : "hidden"
767
779
  }
768
780
  },
769
- /* @__PURE__ */ import_react19.default.createElement("div", { className: "arrow", style: { left: tooltipPositions?.arrow } }),
770
- getUsersPerReactionType(tooltipReactionType)?.map((user, i, users) => /* @__PURE__ */ import_react19.default.createElement("span", { className: "latest-user-username", key: `key-${i}-${user}` }, `${user}${i < users.length - 1 ? ", " : ""}`))
781
+ /* @__PURE__ */ import_react20.default.createElement("div", { className: "arrow", style: { left: tooltipPositions?.arrow } }),
782
+ getUsersPerReactionType(tooltipReactionType)?.map((user, i, users) => /* @__PURE__ */ import_react20.default.createElement("span", { className: "latest-user-username", key: `key-${i}-${user}` }, `${user}${i < users.length - 1 ? ", " : ""}`))
771
783
  ),
772
- /* @__PURE__ */ import_react19.default.createElement("ul", { className: "str-chat__message-reactions-list str-chat__message-reactions-options" }, reactionOptions.map(({ Component, name: reactionName, type: reactionType }) => {
784
+ /* @__PURE__ */ import_react20.default.createElement("ul", { className: "str-chat__message-reactions-list str-chat__message-reactions-options" }, reactionOptions.map(({ Component, name: reactionName, type: reactionType }) => {
773
785
  const latestUser = getLatestUserForReactionType(reactionType);
774
786
  const count = reactionGroups[reactionType]?.count ?? 0;
775
- return /* @__PURE__ */ import_react19.default.createElement("li", { key: reactionType }, /* @__PURE__ */ import_react19.default.createElement(
787
+ return /* @__PURE__ */ import_react20.default.createElement("li", { key: reactionType }, /* @__PURE__ */ import_react20.default.createElement(
776
788
  "button",
777
789
  {
778
790
  "aria-label": `Select Reaction: ${reactionName || reactionType}`,
@@ -793,7 +805,7 @@ var UnMemoizedReactionSelector = (props) => {
793
805
  }
794
806
  }
795
807
  },
796
- !!count && detailedView && /* @__PURE__ */ import_react19.default.createElement(
808
+ !!count && detailedView && /* @__PURE__ */ import_react20.default.createElement(
797
809
  "div",
798
810
  {
799
811
  className: "latest-user str-chat__message-reactions-last-user",
@@ -801,7 +813,7 @@ var UnMemoizedReactionSelector = (props) => {
801
813
  onMouseEnter: (e) => showTooltip(e, reactionType),
802
814
  onMouseLeave: hideTooltip
803
815
  },
804
- latestUser ? /* @__PURE__ */ import_react19.default.createElement(
816
+ latestUser ? /* @__PURE__ */ import_react20.default.createElement(
805
817
  Avatar2,
806
818
  {
807
819
  image: latestUser.image,
@@ -809,15 +821,15 @@ var UnMemoizedReactionSelector = (props) => {
809
821
  size: 20,
810
822
  user: latestUser
811
823
  }
812
- ) : /* @__PURE__ */ import_react19.default.createElement("div", { className: "latest-user-not-found" })
824
+ ) : /* @__PURE__ */ import_react20.default.createElement("div", { className: "latest-user-not-found" })
813
825
  ),
814
- /* @__PURE__ */ import_react19.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react19.default.createElement(Component, null)),
815
- Boolean(count) && detailedView && /* @__PURE__ */ import_react19.default.createElement("span", { className: "str-chat__message-reactions-list-item__count" }, count || "")
826
+ /* @__PURE__ */ import_react20.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react20.default.createElement(Component, null)),
827
+ Boolean(count) && detailedView && /* @__PURE__ */ import_react20.default.createElement("span", { className: "str-chat__message-reactions-list-item__count" }, count || "")
816
828
  ));
817
829
  }))
818
830
  );
819
831
  };
820
- var ReactionSelector = import_react19.default.memo(
832
+ var ReactionSelector = import_react20.default.memo(
821
833
  UnMemoizedReactionSelector
822
834
  );
823
835
 
@@ -828,11 +840,11 @@ var ReactionSelectorWithButton = ({
828
840
  const { t } = useTranslationContext("ReactionSelectorWithButton");
829
841
  const { isMyMessage, message } = useMessageContext("MessageOptions");
830
842
  const { ReactionSelector: ReactionSelector2 = ReactionSelector } = useComponentContext("MessageOptions");
831
- const buttonRef = (0, import_react20.useRef)(null);
843
+ const buttonRef = (0, import_react21.useRef)(null);
832
844
  const dialogId = `reaction-selector--${message.id}`;
833
845
  const dialog = useDialog({ id: dialogId });
834
846
  const dialogIsOpen = useDialogIsOpen(dialogId);
835
- return /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement(
847
+ return /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, /* @__PURE__ */ import_react21.default.createElement(
836
848
  DialogAnchor,
837
849
  {
838
850
  id: dialogId,
@@ -840,8 +852,8 @@ var ReactionSelectorWithButton = ({
840
852
  referenceElement: buttonRef.current,
841
853
  trapFocus: true
842
854
  },
843
- /* @__PURE__ */ import_react20.default.createElement(ReactionSelector2, null)
844
- ), /* @__PURE__ */ import_react20.default.createElement(
855
+ /* @__PURE__ */ import_react21.default.createElement(ReactionSelector2, null)
856
+ ), /* @__PURE__ */ import_react21.default.createElement(
845
857
  "button",
846
858
  {
847
859
  "aria-expanded": dialogIsOpen,
@@ -851,12 +863,12 @@ var ReactionSelectorWithButton = ({
851
863
  onClick: () => dialog?.toggle(),
852
864
  ref: buttonRef
853
865
  },
854
- /* @__PURE__ */ import_react20.default.createElement(ReactionIcon2, { className: "str-chat__message-action-icon" })
866
+ /* @__PURE__ */ import_react21.default.createElement(ReactionIcon2, { className: "str-chat__message-action-icon" })
855
867
  ));
856
868
  };
857
869
 
858
870
  // src/experimental/MessageActions/hooks/useBaseMessageActionSetFilter.ts
859
- var import_react21 = require("react");
871
+ var import_react22 = require("react");
860
872
  var useBaseMessageActionSetFilter = (messageActionSet, disable = false) => {
861
873
  const { initialMessage: isInitialMessage, message } = useMessageContext();
862
874
  const {
@@ -870,7 +882,7 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable = false) => {
870
882
  canReply
871
883
  } = useUserRole(message);
872
884
  const isMessageThreadReply = typeof message.parent_id === "string";
873
- return (0, import_react21.useMemo)(() => {
885
+ return (0, import_react22.useMemo)(() => {
874
886
  if (disable) return messageActionSet;
875
887
  if (isInitialMessage || // not sure whether this thing even works anymore
876
888
  !message.type || message.type === "error" || message.type === "system" || message.type === "ephemeral" || message.status === "failed" || message.status === "sending")
@@ -900,8 +912,8 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable = false) => {
900
912
  };
901
913
 
902
914
  // src/experimental/MessageActions/hooks/useSplitMessageActionSet.ts
903
- var import_react22 = require("react");
904
- var useSplitMessageActionSet = (messageActionSet) => (0, import_react22.useMemo)(() => {
915
+ var import_react23 = require("react");
916
+ var useSplitMessageActionSet = (messageActionSet) => (0, import_react23.useMemo)(() => {
905
917
  const quickActionSet = [];
906
918
  const dropdownActionSet = [];
907
919
  for (const action of messageActionSet) {
@@ -912,14 +924,14 @@ var useSplitMessageActionSet = (messageActionSet) => (0, import_react22.useMemo)
912
924
  }, [messageActionSet]);
913
925
 
914
926
  // src/experimental/MessageActions/defaults.tsx
915
- var import_react23 = __toESM(require("react"));
927
+ var import_react24 = __toESM(require("react"));
916
928
  var DefaultDropdownActionButton = ({
917
929
  "aria-selected": ariaSelected = "false",
918
930
  children,
919
931
  className = "str-chat__message-actions-list-item-button",
920
932
  role = "option",
921
933
  ...rest
922
- }) => /* @__PURE__ */ import_react23.default.createElement("button", { "aria-selected": ariaSelected, className, role, ...rest }, children);
934
+ }) => /* @__PURE__ */ import_react24.default.createElement("button", { "aria-selected": ariaSelected, className, role, ...rest }, children);
923
935
  var DefaultMessageActionComponents = {
924
936
  dropdown: {
925
937
  Quote() {
@@ -934,48 +946,48 @@ var DefaultMessageActionComponents = {
934
946
  textarea.focus();
935
947
  }
936
948
  };
937
- return /* @__PURE__ */ import_react23.default.createElement(DefaultDropdownActionButton, { onClick: handleQuote }, t("Quote"));
949
+ return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleQuote }, t("Quote"));
938
950
  },
939
951
  Pin() {
940
952
  const { handlePin, message } = useMessageContext();
941
953
  const { t } = useTranslationContext();
942
- return /* @__PURE__ */ import_react23.default.createElement(DefaultDropdownActionButton, { onClick: handlePin }, !message.pinned ? t("Pin") : t("Unpin"));
954
+ return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handlePin }, !message.pinned ? t("Pin") : t("Unpin"));
943
955
  },
944
956
  MarkUnread() {
945
957
  const { handleMarkUnread } = useMessageContext();
946
958
  const { t } = useTranslationContext();
947
- return /* @__PURE__ */ import_react23.default.createElement(DefaultDropdownActionButton, { onClick: handleMarkUnread }, t("Mark as unread"));
959
+ return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleMarkUnread }, t("Mark as unread"));
948
960
  },
949
961
  Flag() {
950
962
  const { handleFlag } = useMessageContext();
951
963
  const { t } = useTranslationContext();
952
- return /* @__PURE__ */ import_react23.default.createElement(DefaultDropdownActionButton, { onClick: handleFlag }, t("Flag"));
964
+ return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleFlag }, t("Flag"));
953
965
  },
954
966
  Mute() {
955
967
  const { handleMute, message } = useMessageContext();
956
968
  const { mutes } = useChatContext();
957
969
  const { t } = useTranslationContext();
958
- return /* @__PURE__ */ import_react23.default.createElement(DefaultDropdownActionButton, { onClick: handleMute }, isUserMuted(message, mutes) ? t("Unmute") : t("Mute"));
970
+ return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleMute }, isUserMuted(message, mutes) ? t("Unmute") : t("Mute"));
959
971
  },
960
972
  Edit() {
961
973
  const { handleEdit } = useMessageContext();
962
974
  const { t } = useTranslationContext();
963
- return /* @__PURE__ */ import_react23.default.createElement(DefaultDropdownActionButton, { onClick: handleEdit }, t("Edit Message"));
975
+ return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleEdit }, t("Edit Message"));
964
976
  },
965
977
  Delete() {
966
978
  const { handleDelete } = useMessageContext();
967
979
  const { t } = useTranslationContext();
968
- return /* @__PURE__ */ import_react23.default.createElement(DefaultDropdownActionButton, { onClick: handleDelete }, t("Delete"));
980
+ return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleDelete }, t("Delete"));
969
981
  }
970
982
  },
971
983
  quick: {
972
984
  React() {
973
- return /* @__PURE__ */ import_react23.default.createElement(ReactionSelectorWithButton, { ReactionIcon });
985
+ return /* @__PURE__ */ import_react24.default.createElement(ReactionSelectorWithButton, { ReactionIcon });
974
986
  },
975
987
  Reply() {
976
988
  const { handleOpenThread } = useMessageContext();
977
989
  const { t } = useTranslationContext();
978
- return /* @__PURE__ */ import_react23.default.createElement(
990
+ return /* @__PURE__ */ import_react24.default.createElement(
979
991
  "button",
980
992
  {
981
993
  "aria-label": t("aria/Open Thread"),
@@ -983,7 +995,7 @@ var DefaultMessageActionComponents = {
983
995
  "data-testid": "thread-action",
984
996
  onClick: handleOpenThread
985
997
  },
986
- /* @__PURE__ */ import_react23.default.createElement(ThreadIcon, { className: "str-chat__message-action-icon" })
998
+ /* @__PURE__ */ import_react24.default.createElement(ThreadIcon, { className: "str-chat__message-action-icon" })
987
999
  );
988
1000
  }
989
1001
  }
@@ -1021,7 +1033,7 @@ var MessageActions = ({
1021
1033
  const { theme } = useChatContext();
1022
1034
  const { isMyMessage, message } = useMessageContext();
1023
1035
  const { t } = useTranslationContext();
1024
- const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0, import_react24.useState)(
1036
+ const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0, import_react25.useState)(
1025
1037
  null
1026
1038
  );
1027
1039
  const filteredMessageActionSet = useBaseMessageActionSetFilter(
@@ -1037,14 +1049,14 @@ var MessageActions = ({
1037
1049
  if (dropdownActionSet.length + quickActionSet.length === 0) {
1038
1050
  return null;
1039
1051
  }
1040
- return /* @__PURE__ */ import_react24.default.createElement(
1052
+ return /* @__PURE__ */ import_react25.default.createElement(
1041
1053
  "div",
1042
1054
  {
1043
1055
  className: (0, import_clsx5.default)(`str-chat__message-${theme}__actions str-chat__message-options`, {
1044
1056
  "str-chat__message-options--active": dropdownDialogIsOpen || reactionSelectorDialogIsOpen
1045
1057
  })
1046
1058
  },
1047
- dropdownActionSet.length > 0 && /* @__PURE__ */ import_react24.default.createElement(MessageActionsWrapper, { inline: false, toggleOpen: dialog?.toggle }, /* @__PURE__ */ import_react24.default.createElement(
1059
+ dropdownActionSet.length > 0 && /* @__PURE__ */ import_react25.default.createElement(MessageActionsWrapper, { inline: false, toggleOpen: dialog?.toggle }, /* @__PURE__ */ import_react25.default.createElement(
1048
1060
  "button",
1049
1061
  {
1050
1062
  "aria-expanded": dropdownDialogIsOpen,
@@ -1054,8 +1066,8 @@ var MessageActions = ({
1054
1066
  "data-testid": "message-actions-toggle-button",
1055
1067
  ref: setActionsBoxButtonElement
1056
1068
  },
1057
- /* @__PURE__ */ import_react24.default.createElement(ActionsIcon, { className: "str-chat__message-action-icon" })
1058
- ), /* @__PURE__ */ import_react24.default.createElement(
1069
+ /* @__PURE__ */ import_react25.default.createElement(ActionsIcon, { className: "str-chat__message-action-icon" })
1070
+ ), /* @__PURE__ */ import_react25.default.createElement(
1059
1071
  DialogAnchor,
1060
1072
  {
1061
1073
  id: dropdownDialogId,
@@ -1063,21 +1075,21 @@ var MessageActions = ({
1063
1075
  referenceElement: actionsBoxButtonElement,
1064
1076
  trapFocus: true
1065
1077
  },
1066
- /* @__PURE__ */ import_react24.default.createElement(DropdownBox, { open: dropdownDialogIsOpen }, dropdownActionSet.map(({ Component: DropdownActionComponent, type }) => /* @__PURE__ */ import_react24.default.createElement(DropdownActionComponent, { key: type })))
1078
+ /* @__PURE__ */ import_react25.default.createElement(DropdownBox, { open: dropdownDialogIsOpen }, dropdownActionSet.map(({ Component: DropdownActionComponent, type }) => /* @__PURE__ */ import_react25.default.createElement(DropdownActionComponent, { key: type })))
1067
1079
  )),
1068
- quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */ import_react24.default.createElement(QuickActionComponent, { key: type }))
1080
+ quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */ import_react25.default.createElement(QuickActionComponent, { key: type }))
1069
1081
  );
1070
1082
  };
1071
1083
  var DropdownBox = ({ children, open }) => {
1072
1084
  const { t } = useTranslationContext();
1073
- return /* @__PURE__ */ import_react24.default.createElement(
1085
+ return /* @__PURE__ */ import_react25.default.createElement(
1074
1086
  "div",
1075
1087
  {
1076
1088
  className: (0, import_clsx5.default)("str-chat__message-actions-box", {
1077
1089
  "str-chat__message-actions-box--open": open
1078
1090
  })
1079
1091
  },
1080
- /* @__PURE__ */ import_react24.default.createElement(
1092
+ /* @__PURE__ */ import_react25.default.createElement(
1081
1093
  "div",
1082
1094
  {
1083
1095
  "aria-label": t("aria/Message Options"),