stream-chat-react 12.12.0 → 12.13.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.
@@ -45535,10 +45535,10 @@ var UnMemoizedConnectionStatus = () => {
45535
45535
  var ConnectionStatus = import_react80.default.memo(UnMemoizedConnectionStatus);
45536
45536
 
45537
45537
  // src/components/MessageList/GiphyPreviewMessage.tsx
45538
- var import_react224 = __toESM(require("react"));
45538
+ var import_react225 = __toESM(require("react"));
45539
45539
 
45540
45540
  // src/components/Message/Message.tsx
45541
- var import_react223 = __toESM(require("react"));
45541
+ var import_react224 = __toESM(require("react"));
45542
45542
 
45543
45543
  // src/components/Message/hooks/useActionHandler.ts
45544
45544
  var handleActionWarning = `Action handler was called, but it is missing one of its required arguments.
@@ -49112,7 +49112,7 @@ var useMessageTextStreaming = ({
49112
49112
  };
49113
49113
 
49114
49114
  // src/components/Message/MessageSimple.tsx
49115
- var import_react222 = __toESM(require("react"));
49115
+ var import_react223 = __toESM(require("react"));
49116
49116
  var import_clsx59 = __toESM(require("clsx"));
49117
49117
 
49118
49118
  // src/components/Message/icons.tsx
@@ -51707,19 +51707,30 @@ var PollCreationDialog = ({ close }) => {
51707
51707
  };
51708
51708
 
51709
51709
  // src/components/Message/QuotedMessage.tsx
51710
- var QuotedMessage = () => {
51710
+ var QuotedMessage = ({
51711
+ renderText: propsRenderText
51712
+ }) => {
51711
51713
  const { Attachment: Attachment2 = Attachment, Avatar: ContextAvatar } = useComponentContext("QuotedMessage");
51712
51714
  const { client } = useChatContext();
51713
- const { isMyMessage, message } = useMessageContext("QuotedMessage");
51715
+ const {
51716
+ isMyMessage,
51717
+ message,
51718
+ renderText: contextRenderText
51719
+ } = useMessageContext("QuotedMessage");
51714
51720
  const { t: t2, userLanguage } = useTranslationContext("QuotedMessage");
51715
51721
  const { jumpToMessage } = useChannelActionContext("QuotedMessage");
51722
+ const renderText2 = propsRenderText ?? contextRenderText ?? renderText;
51716
51723
  const Avatar2 = ContextAvatar || Avatar;
51717
51724
  const { quoted_message } = message;
51725
+ const poll = quoted_message?.poll_id && client.polls.fromState(quoted_message.poll_id);
51726
+ const quotedMessageDeleted = quoted_message?.deleted_at || quoted_message?.type === "deleted";
51727
+ const quotedMessageText = quotedMessageDeleted ? t2("This message was deleted...") : quoted_message?.i18n?.[`${userLanguage}_text`] || quoted_message?.text;
51728
+ const quotedMessageAttachment = quoted_message?.attachments?.length && !quotedMessageDeleted ? quoted_message.attachments[0] : null;
51729
+ const renderedText = (0, import_react179.useMemo)(
51730
+ () => renderText2(quotedMessageText, quoted_message?.mentioned_users),
51731
+ [quotedMessageText, quoted_message?.mentioned_users, renderText2]
51732
+ );
51718
51733
  if (!quoted_message) return null;
51719
- const poll = quoted_message.poll_id && client.polls.fromState(quoted_message.poll_id);
51720
- const quotedMessageDeleted = quoted_message.deleted_at || quoted_message.type === "deleted";
51721
- const quotedMessageText = quotedMessageDeleted ? t2("This message was deleted...") : quoted_message.i18n?.[`${userLanguage}_text`] || quoted_message.text;
51722
- const quotedMessageAttachment = quoted_message.attachments?.length && !quotedMessageDeleted ? quoted_message.attachments[0] : null;
51723
51734
  if (!quoted_message.poll && !quotedMessageText && !quotedMessageAttachment) return null;
51724
51735
  return /* @__PURE__ */ import_react179.default.createElement(import_react179.default.Fragment, null, /* @__PURE__ */ import_react179.default.createElement(
51725
51736
  "div",
@@ -51753,7 +51764,7 @@ var QuotedMessage = () => {
51753
51764
  className: "str-chat__quoted-message-bubble__text",
51754
51765
  "data-testid": "quoted-message-text"
51755
51766
  },
51756
- quotedMessageText
51767
+ renderedText
51757
51768
  ))
51758
51769
  )
51759
51770
  ), message.attachments?.length ? /* @__PURE__ */ import_react179.default.createElement(Attachment2, { attachments: message.attachments }) : null);
@@ -53060,10 +53071,10 @@ var DefaultTriggerProvider = ({
53060
53071
  };
53061
53072
 
53062
53073
  // src/components/MessageInput/EditMessageForm.tsx
53063
- var import_react212 = __toESM(require("react"));
53074
+ var import_react215 = __toESM(require("react"));
53064
53075
 
53065
53076
  // src/components/MessageInput/MessageInputFlat.tsx
53066
- var import_react211 = __toESM(require("react"));
53077
+ var import_react214 = __toESM(require("react"));
53067
53078
  var import_clsx54 = __toESM(require("clsx"));
53068
53079
  var import_react_dropzone2 = require("react-dropzone");
53069
53080
 
@@ -53105,40 +53116,170 @@ var StopAIGenerationButton = ({
53105
53116
  };
53106
53117
 
53107
53118
  // src/components/MessageInput/QuotedMessagePreview.tsx
53119
+ var import_react209 = __toESM(require("react"));
53120
+
53121
+ // src/components/Message/FixedHeightMessage.tsx
53122
+ var import_react207 = __toESM(require("react"));
53123
+
53124
+ // src/components/MML/MML.tsx
53108
53125
  var import_react206 = __toESM(require("react"));
53126
+ var MMLReact = import_react206.default.lazy(async () => {
53127
+ const mml = await Promise.resolve().then(() => __toESM(require_dist2()));
53128
+ return { default: mml.MML };
53129
+ });
53130
+ var MML = (props) => {
53131
+ const { actionHandler, align = "right", source } = props;
53132
+ const { theme } = useChatContext("MML");
53133
+ return /* @__PURE__ */ import_react206.default.createElement(import_react206.Suspense, { fallback: null }, /* @__PURE__ */ import_react206.default.createElement(
53134
+ MMLReact,
53135
+ {
53136
+ className: `mml-align-${align}`,
53137
+ Loading: null,
53138
+ onSubmit: actionHandler,
53139
+ source,
53140
+ Success: null,
53141
+ theme: (theme || "").replace(" ", "-")
53142
+ }
53143
+ ));
53144
+ };
53145
+
53146
+ // src/components/Message/FixedHeightMessage.tsx
53147
+ var selectColor = (number2, dark) => {
53148
+ const hue = number2 * 137.508;
53149
+ return `hsl(${hue},${dark ? "50%" : "85%"}, ${dark ? "75%" : "55%"})`;
53150
+ };
53151
+ var hashUserId = (userId) => {
53152
+ const hash = userId.split("").reduce((acc, c) => {
53153
+ acc = (acc << 5) - acc + c.charCodeAt(0);
53154
+ return acc & acc;
53155
+ }, 0);
53156
+ return Math.abs(hash) / 10 ** Math.ceil(Math.log10(Math.abs(hash) + 1));
53157
+ };
53158
+ var getUserColor = (theme, userId) => selectColor(hashUserId(userId), theme.includes("dark"));
53159
+ var UnMemoizedFixedHeightMessage = (props) => {
53160
+ const { groupedByUser: propGroupedByUser, message: propMessage } = props;
53161
+ const { theme } = useChatContext("FixedHeightMessage");
53162
+ const { groupedByUser: contextGroupedByUser, message: contextMessage } = useMessageContext("FixedHeightMessage");
53163
+ const { MessageDeleted: MessageDeleted2 = MessageDeleted } = useComponentContext("FixedHeightMessage");
53164
+ const { userLanguage } = useTranslationContext("FixedHeightMessage");
53165
+ const groupedByUser = propGroupedByUser !== void 0 ? propGroupedByUser : contextGroupedByUser;
53166
+ const message = propMessage || contextMessage;
53167
+ const handleAction = useActionHandler(message);
53168
+ const handleDelete2 = useDeleteHandler(message);
53169
+ const role = useUserRole(message);
53170
+ const messageTextToRender = message?.i18n?.[`${userLanguage}_text`] || message?.text;
53171
+ const renderedText = (0, import_react207.useMemo)(
53172
+ () => renderText(messageTextToRender, message.mentioned_users),
53173
+ [message.mentioned_users, messageTextToRender]
53174
+ );
53175
+ const userId = message.user?.id || "";
53176
+ const userColor = (0, import_react207.useMemo)(() => getUserColor(theme, userId), [userId, theme]);
53177
+ const messageActionsHandler = (0, import_react207.useCallback)(
53178
+ () => getMessageActions(["delete"], { canDelete: role.canDelete }),
53179
+ [role]
53180
+ );
53181
+ const images = message?.attachments?.filter(({ type }) => type === "image");
53182
+ return /* @__PURE__ */ import_react207.default.createElement(
53183
+ "div",
53184
+ {
53185
+ className: `str-chat__virtual-message__wrapper ${role.isMyMessage ? "str-chat__virtual-message__wrapper--me" : ""} ${groupedByUser ? "str-chat__virtual-message__wrapper--group" : ""}`,
53186
+ key: message.id
53187
+ },
53188
+ message.user && /* @__PURE__ */ import_react207.default.createElement(
53189
+ Avatar,
53190
+ {
53191
+ image: message.user.image,
53192
+ name: message.user.name || message.user.id,
53193
+ user: message.user
53194
+ }
53195
+ ),
53196
+ /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__virtual-message__content" }, /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__virtual-message__meta" }, /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__virtual-message__author", style: { color: userColor } }, /* @__PURE__ */ import_react207.default.createElement("strong", null, message.user?.name || "unknown"))), message.deleted_at || message.type === "deleted" ? /* @__PURE__ */ import_react207.default.createElement(MessageDeleted2, { message }) : /* @__PURE__ */ import_react207.default.createElement(import_react207.default.Fragment, null, images && /* @__PURE__ */ import_react207.default.createElement(Gallery, { images }), /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__virtual-message__text", "data-testid": "msg-text" }, renderedText, message.mml && /* @__PURE__ */ import_react207.default.createElement(MML, { actionHandler: handleAction, align: "left", source: message.mml }), /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__virtual-message__data" }, /* @__PURE__ */ import_react207.default.createElement(
53197
+ MessageActions,
53198
+ {
53199
+ customWrapperClass: "str-chat__virtual-message__actions",
53200
+ getMessageActions: messageActionsHandler,
53201
+ handleDelete: handleDelete2,
53202
+ message,
53203
+ mine: () => role.isMyMessage
53204
+ }
53205
+ ), /* @__PURE__ */ import_react207.default.createElement("span", { className: "str-chat__virtual-message__date" }, /* @__PURE__ */ import_react207.default.createElement(
53206
+ MessageTimestamp,
53207
+ {
53208
+ customClass: "str-chat__message-simple-timestamp",
53209
+ message
53210
+ }
53211
+ ))))))
53212
+ );
53213
+ };
53214
+ var FixedHeightMessage = import_react207.default.memo(
53215
+ UnMemoizedFixedHeightMessage
53216
+ );
53217
+
53218
+ // src/components/Message/StreamedMessageText.tsx
53219
+ var import_react208 = __toESM(require("react"));
53220
+ var StreamedMessageText = (props) => {
53221
+ const {
53222
+ message: messageFromProps,
53223
+ renderingLetterCount,
53224
+ renderText: renderText2,
53225
+ streamingLetterIntervalMs
53226
+ } = props;
53227
+ const { message: messageFromContext } = useMessageContext("StreamedMessageText");
53228
+ const message = messageFromProps || messageFromContext;
53229
+ const { text: text7 = "" } = message;
53230
+ const { streamedMessageText } = useMessageTextStreaming({
53231
+ renderingLetterCount,
53232
+ streamingLetterIntervalMs,
53233
+ text: text7
53234
+ });
53235
+ return /* @__PURE__ */ import_react208.default.createElement(
53236
+ MessageText,
53237
+ {
53238
+ message: { ...message, text: streamedMessageText },
53239
+ renderText: renderText2
53240
+ }
53241
+ );
53242
+ };
53243
+
53244
+ // src/components/MessageInput/QuotedMessagePreview.tsx
53109
53245
  var QuotedMessagePreviewHeader = () => {
53110
53246
  const { setQuotedMessage } = useChannelActionContext("QuotedMessagePreview");
53111
53247
  const { t: t2 } = useTranslationContext("QuotedMessagePreview");
53112
- return /* @__PURE__ */ import_react206.default.createElement("div", { className: "str-chat__quoted-message-preview-header" }, /* @__PURE__ */ import_react206.default.createElement("div", { className: "str-chat__quoted-message-reply-to-message" }, t2("Reply to Message")), /* @__PURE__ */ import_react206.default.createElement(
53248
+ return /* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__quoted-message-preview-header" }, /* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__quoted-message-reply-to-message" }, t2("Reply to Message")), /* @__PURE__ */ import_react209.default.createElement(
53113
53249
  "button",
53114
53250
  {
53115
53251
  "aria-label": t2("aria/Cancel Reply"),
53116
53252
  className: "str-chat__quoted-message-remove",
53117
53253
  onClick: () => setQuotedMessage(void 0)
53118
53254
  },
53119
- /* @__PURE__ */ import_react206.default.createElement(CloseIcon, null)
53255
+ /* @__PURE__ */ import_react209.default.createElement(CloseIcon, null)
53120
53256
  ));
53121
53257
  };
53122
53258
  var QuotedMessagePreview = ({
53123
- quotedMessage
53259
+ quotedMessage,
53260
+ renderText: renderText2 = renderText
53124
53261
  }) => {
53125
53262
  const { client } = useChatContext();
53126
53263
  const { Attachment: Attachment2 = Attachment, Avatar: Avatar2 = Avatar } = useComponentContext("QuotedMessagePreview");
53127
53264
  const { userLanguage } = useTranslationContext("QuotedMessagePreview");
53128
53265
  const quotedMessageText = quotedMessage.i18n?.[`${userLanguage}_text`] || quotedMessage.text;
53129
- const quotedMessageAttachment = (0, import_react206.useMemo)(() => {
53266
+ const renderedText = (0, import_react209.useMemo)(
53267
+ () => renderText2(quotedMessageText, quotedMessage.mentioned_users),
53268
+ [quotedMessage.mentioned_users, quotedMessageText, renderText2]
53269
+ );
53270
+ const quotedMessageAttachment = (0, import_react209.useMemo)(() => {
53130
53271
  const [attachment] = quotedMessage.attachments ?? [];
53131
53272
  return attachment ? [attachment] : [];
53132
53273
  }, [quotedMessage.attachments]);
53133
53274
  if (!quotedMessageText && !quotedMessageAttachment) return null;
53134
53275
  const poll = quotedMessage.poll_id && client.polls.fromState(quotedMessage.poll_id);
53135
- return /* @__PURE__ */ import_react206.default.createElement(
53276
+ return /* @__PURE__ */ import_react209.default.createElement(
53136
53277
  "div",
53137
53278
  {
53138
53279
  className: "str-chat__quoted-message-preview",
53139
53280
  "data-testid": "quoted-message-preview"
53140
53281
  },
53141
- quotedMessage.user && /* @__PURE__ */ import_react206.default.createElement(
53282
+ quotedMessage.user && /* @__PURE__ */ import_react209.default.createElement(
53142
53283
  Avatar2,
53143
53284
  {
53144
53285
  className: "str-chat__avatar--quoted-message-sender",
@@ -53147,33 +53288,33 @@ var QuotedMessagePreview = ({
53147
53288
  user: quotedMessage.user
53148
53289
  }
53149
53290
  ),
53150
- /* @__PURE__ */ import_react206.default.createElement("div", { className: "str-chat__quoted-message-bubble" }, poll ? /* @__PURE__ */ import_react206.default.createElement(Poll, { isQuoted: true, poll }) : /* @__PURE__ */ import_react206.default.createElement(import_react206.default.Fragment, null, !!quotedMessageAttachment.length && /* @__PURE__ */ import_react206.default.createElement(Attachment2, { attachments: quotedMessageAttachment, isQuoted: true }), /* @__PURE__ */ import_react206.default.createElement(
53291
+ /* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__quoted-message-bubble" }, poll ? /* @__PURE__ */ import_react209.default.createElement(Poll, { isQuoted: true, poll }) : /* @__PURE__ */ import_react209.default.createElement(import_react209.default.Fragment, null, !!quotedMessageAttachment.length && /* @__PURE__ */ import_react209.default.createElement(Attachment2, { attachments: quotedMessageAttachment, isQuoted: true }), /* @__PURE__ */ import_react209.default.createElement(
53151
53292
  "div",
53152
53293
  {
53153
53294
  className: "str-chat__quoted-message-text",
53154
53295
  "data-testid": "quoted-message-text"
53155
53296
  },
53156
- /* @__PURE__ */ import_react206.default.createElement("p", null, quotedMessageText)
53297
+ renderedText
53157
53298
  )))
53158
53299
  );
53159
53300
  };
53160
53301
 
53161
53302
  // src/components/MessageInput/LinkPreviewList.tsx
53162
53303
  var import_clsx53 = __toESM(require("clsx"));
53163
- var import_react207 = __toESM(require("react"));
53304
+ var import_react210 = __toESM(require("react"));
53164
53305
  var LinkPreviewList = ({ linkPreviews }) => {
53165
53306
  const { quotedMessage } = useChannelStateContext();
53166
53307
  const showLinkPreviews = linkPreviews.length > 0 && !quotedMessage;
53167
53308
  if (!showLinkPreviews) return null;
53168
- return /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__link-preview-list" }, Array.from(linkPreviews.values()).map(
53169
- (linkPreview) => linkPreview.state === "loaded" /* LOADED */ ? /* @__PURE__ */ import_react207.default.createElement(LinkPreviewCard, { key: linkPreview.og_scrape_url, linkPreview }) : null
53309
+ return /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__link-preview-list" }, Array.from(linkPreviews.values()).map(
53310
+ (linkPreview) => linkPreview.state === "loaded" /* LOADED */ ? /* @__PURE__ */ import_react210.default.createElement(LinkPreviewCard, { key: linkPreview.og_scrape_url, linkPreview }) : null
53170
53311
  ));
53171
53312
  };
53172
53313
  var LinkPreviewCard = ({ linkPreview }) => {
53173
53314
  const { dismissLinkPreview } = useMessageInputContext();
53174
53315
  const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers();
53175
- const [referenceElement, setReferenceElement] = (0, import_react207.useState)(null);
53176
- return /* @__PURE__ */ import_react207.default.createElement(
53316
+ const [referenceElement, setReferenceElement] = (0, import_react210.useState)(null);
53317
+ return /* @__PURE__ */ import_react210.default.createElement(
53177
53318
  "div",
53178
53319
  {
53179
53320
  className: (0, import_clsx53.default)("str-chat__link-preview-card", {
@@ -53181,7 +53322,7 @@ var LinkPreviewCard = ({ linkPreview }) => {
53181
53322
  }),
53182
53323
  "data-testid": "link-preview-card"
53183
53324
  },
53184
- /* @__PURE__ */ import_react207.default.createElement(
53325
+ /* @__PURE__ */ import_react210.default.createElement(
53185
53326
  PopperTooltip,
53186
53327
  {
53187
53328
  offset: [0, 5],
@@ -53190,7 +53331,7 @@ var LinkPreviewCard = ({ linkPreview }) => {
53190
53331
  },
53191
53332
  linkPreview.og_scrape_url
53192
53333
  ),
53193
- /* @__PURE__ */ import_react207.default.createElement(
53334
+ /* @__PURE__ */ import_react210.default.createElement(
53194
53335
  "div",
53195
53336
  {
53196
53337
  className: "str-chat__link-preview-card__icon-container",
@@ -53198,23 +53339,23 @@ var LinkPreviewCard = ({ linkPreview }) => {
53198
53339
  onMouseLeave: handleLeave,
53199
53340
  ref: setReferenceElement
53200
53341
  },
53201
- /* @__PURE__ */ import_react207.default.createElement(LinkIcon, null)
53342
+ /* @__PURE__ */ import_react210.default.createElement(LinkIcon, null)
53202
53343
  ),
53203
- /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__link-preview-card__content" }, /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__link-preview-card__content-title" }, linkPreview.title), /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__link-preview-card__content-description" }, linkPreview.text)),
53204
- /* @__PURE__ */ import_react207.default.createElement(
53344
+ /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__link-preview-card__content" }, /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__link-preview-card__content-title" }, linkPreview.title), /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__link-preview-card__content-description" }, linkPreview.text)),
53345
+ /* @__PURE__ */ import_react210.default.createElement(
53205
53346
  "button",
53206
53347
  {
53207
53348
  className: "str-chat__link-preview-card__dismiss-button",
53208
53349
  "data-testid": "link-preview-card-dismiss-btn",
53209
53350
  onClick: () => dismissLinkPreview(linkPreview)
53210
53351
  },
53211
- /* @__PURE__ */ import_react207.default.createElement(CloseIcon, null)
53352
+ /* @__PURE__ */ import_react210.default.createElement(CloseIcon, null)
53212
53353
  )
53213
53354
  );
53214
53355
  };
53215
53356
 
53216
53357
  // src/components/ChatAutoComplete/ChatAutoComplete.tsx
53217
- var import_react208 = __toESM(require("react"));
53358
+ var import_react211 = __toESM(require("react"));
53218
53359
  var UnMemoizedChatAutoComplete = (props) => {
53219
53360
  const {
53220
53361
  AutocompleteSuggestionItem: SuggestionItem,
@@ -53236,7 +53377,7 @@ var UnMemoizedChatAutoComplete = (props) => {
53236
53377
  const [firstSkin] = emoji.skins ?? [];
53237
53378
  return emoji.native ?? firstSkin.native;
53238
53379
  };
53239
- const updateInnerRef = (0, import_react208.useCallback)(
53380
+ const updateInnerRef = (0, import_react211.useCallback)(
53240
53381
  (ref) => {
53241
53382
  if (innerRef) {
53242
53383
  innerRef.current = ref;
@@ -53244,7 +53385,7 @@ var UnMemoizedChatAutoComplete = (props) => {
53244
53385
  },
53245
53386
  [innerRef]
53246
53387
  );
53247
- return /* @__PURE__ */ import_react208.default.createElement(
53388
+ return /* @__PURE__ */ import_react211.default.createElement(
53248
53389
  ReactTextareaAutocomplete,
53249
53390
  {
53250
53391
  additionalTextareaProps: messageInput.additionalTextareaProps,
@@ -53279,15 +53420,15 @@ var UnMemoizedChatAutoComplete = (props) => {
53279
53420
  }
53280
53421
  );
53281
53422
  };
53282
- var ChatAutoComplete = import_react208.default.memo(
53423
+ var ChatAutoComplete = import_react211.default.memo(
53283
53424
  UnMemoizedChatAutoComplete
53284
53425
  );
53285
53426
 
53286
53427
  // src/components/AIStateIndicator/AIStateIndicator.tsx
53287
- var import_react210 = __toESM(require("react"));
53428
+ var import_react213 = __toESM(require("react"));
53288
53429
 
53289
53430
  // src/components/AIStateIndicator/hooks/useAIState.ts
53290
- var import_react209 = require("react");
53431
+ var import_react212 = require("react");
53291
53432
  var AIStates = {
53292
53433
  Error: "AI_STATE_ERROR",
53293
53434
  ExternalSources: "AI_STATE_EXTERNAL_SOURCES",
@@ -53296,8 +53437,8 @@ var AIStates = {
53296
53437
  Thinking: "AI_STATE_THINKING"
53297
53438
  };
53298
53439
  var useAIState = (channel) => {
53299
- const [aiState, setAiState] = (0, import_react209.useState)(AIStates.Idle);
53300
- (0, import_react209.useEffect)(() => {
53440
+ const [aiState, setAiState] = (0, import_react212.useState)(AIStates.Idle);
53441
+ (0, import_react212.useEffect)(() => {
53301
53442
  if (!channel) {
53302
53443
  return;
53303
53444
  }
@@ -53337,7 +53478,7 @@ var AIStateIndicator = ({
53337
53478
  [AIStates.Thinking]: t2("Thinking..."),
53338
53479
  [AIStates.Generating]: t2("Generating...")
53339
53480
  };
53340
- return aiState in allowedStates ? /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__ai-state-indicator-container" }, /* @__PURE__ */ import_react210.default.createElement("p", { className: "str-chat__ai-state-indicator-text" }, allowedStates[aiState])) : null;
53481
+ return aiState in allowedStates ? /* @__PURE__ */ import_react213.default.createElement("div", { className: "str-chat__ai-state-indicator-container" }, /* @__PURE__ */ import_react213.default.createElement("p", { className: "str-chat__ai-state-indicator-text" }, allowedStates[aiState])) : null;
53341
53482
  };
53342
53483
 
53343
53484
  // src/components/MessageInput/MessageInputFlat.tsx
@@ -53382,19 +53523,19 @@ var MessageInputFlat = () => {
53382
53523
  const { setQuotedMessage } = useChannelActionContext("MessageInputFlat");
53383
53524
  const { channel } = useChatContext("MessageInputFlat");
53384
53525
  const { aiState } = useAIState(channel);
53385
- const stopGenerating = (0, import_react211.useCallback)(() => channel?.stopAIResponse(), [channel]);
53526
+ const stopGenerating = (0, import_react214.useCallback)(() => channel?.stopAIResponse(), [channel]);
53386
53527
  const [
53387
53528
  showRecordingPermissionDeniedNotification,
53388
53529
  setShowRecordingPermissionDeniedNotification
53389
- ] = (0, import_react211.useState)(false);
53390
- const closePermissionDeniedNotification = (0, import_react211.useCallback)(() => {
53530
+ ] = (0, import_react214.useState)(false);
53531
+ const closePermissionDeniedNotification = (0, import_react214.useCallback)(() => {
53391
53532
  setShowRecordingPermissionDeniedNotification(false);
53392
53533
  }, []);
53393
- const failedUploadsCount = (0, import_react211.useMemo)(
53534
+ const failedUploadsCount = (0, import_react214.useMemo)(
53394
53535
  () => attachments.filter((a2) => a2.localMetadata?.uploadState === "failed").length,
53395
53536
  [attachments]
53396
53537
  );
53397
- const accept = (0, import_react211.useMemo)(
53538
+ const accept = (0, import_react214.useMemo)(
53398
53539
  () => acceptedFiles.reduce((mediaTypeMap, mediaType) => {
53399
53540
  mediaTypeMap[mediaType] ?? (mediaTypeMap[mediaType] = []);
53400
53541
  return mediaTypeMap;
@@ -53408,7 +53549,7 @@ var MessageInputFlat = () => {
53408
53549
  noClick: true,
53409
53550
  onDrop: uploadNewFiles
53410
53551
  });
53411
- (0, import_react211.useEffect)(() => {
53552
+ (0, import_react214.useEffect)(() => {
53412
53553
  const handleQuotedMessageUpdate = (e2) => {
53413
53554
  if (e2.message?.id !== quotedMessage?.id) return;
53414
53555
  if (e2.type === "message.deleted") {
@@ -53424,40 +53565,40 @@ var MessageInputFlat = () => {
53424
53565
  channel?.off("message.updated", handleQuotedMessageUpdate);
53425
53566
  };
53426
53567
  }, [channel, quotedMessage]);
53427
- if (recordingController.recordingState) return /* @__PURE__ */ import_react211.default.createElement(AudioRecorder2, null);
53568
+ if (recordingController.recordingState) return /* @__PURE__ */ import_react214.default.createElement(AudioRecorder2, null);
53428
53569
  const displayQuotedMessage = !message && quotedMessage && quotedMessage.parent_id === parent?.id;
53429
53570
  const recordingEnabled = !!(recordingController.recorder && navigator.mediaDevices);
53430
53571
  const isRecording = !!recordingController.recordingState;
53431
53572
  const StopAIGenerationButton2 = StopAIGenerationButtonOverride === void 0 ? StopAIGenerationButton : StopAIGenerationButtonOverride;
53432
53573
  const shouldDisplayStopAIGeneration = [AIStates.Thinking, AIStates.Generating].includes(aiState) && !!StopAIGenerationButton2;
53433
- return /* @__PURE__ */ import_react211.default.createElement(import_react211.default.Fragment, null, /* @__PURE__ */ import_react211.default.createElement("div", { ...getRootProps({ className: "str-chat__message-input" }) }, recordingEnabled && recordingController.permissionState === "denied" && showRecordingPermissionDeniedNotification && /* @__PURE__ */ import_react211.default.createElement(
53574
+ return /* @__PURE__ */ import_react214.default.createElement(import_react214.default.Fragment, null, /* @__PURE__ */ import_react214.default.createElement("div", { ...getRootProps({ className: "str-chat__message-input" }) }, recordingEnabled && recordingController.permissionState === "denied" && showRecordingPermissionDeniedNotification && /* @__PURE__ */ import_react214.default.createElement(
53434
53575
  RecordingPermissionDeniedNotification2,
53435
53576
  {
53436
53577
  onClose: closePermissionDeniedNotification,
53437
53578
  permissionName: "microphone" /* MIC */
53438
53579
  }
53439
- ), findAndEnqueueURLsToEnrich && /* @__PURE__ */ import_react211.default.createElement(LinkPreviewList2, { linkPreviews: Array.from(linkPreviews.values()) }), isDragActive && /* @__PURE__ */ import_react211.default.createElement(
53580
+ ), findAndEnqueueURLsToEnrich && /* @__PURE__ */ import_react214.default.createElement(LinkPreviewList2, { linkPreviews: Array.from(linkPreviews.values()) }), isDragActive && /* @__PURE__ */ import_react214.default.createElement(
53440
53581
  "div",
53441
53582
  {
53442
53583
  className: (0, import_clsx54.default)("str-chat__dropzone-container", {
53443
53584
  "str-chat__dropzone-container--not-accepted": isDragReject
53444
53585
  })
53445
53586
  },
53446
- !isDragReject && /* @__PURE__ */ import_react211.default.createElement("p", null, t2("Drag your files here")),
53447
- isDragReject && /* @__PURE__ */ import_react211.default.createElement("p", null, t2("Some of the files will not be accepted"))
53448
- ), displayQuotedMessage && /* @__PURE__ */ import_react211.default.createElement(QuotedMessagePreviewHeader, null), /* @__PURE__ */ import_react211.default.createElement("div", { className: "str-chat__message-input-inner" }, /* @__PURE__ */ import_react211.default.createElement(AttachmentSelector2, null), /* @__PURE__ */ import_react211.default.createElement("div", { className: "str-chat__message-textarea-container" }, displayQuotedMessage && /* @__PURE__ */ import_react211.default.createElement(QuotedMessagePreview2, { quotedMessage }), isUploadEnabled && !!(numberOfUploads + failedUploadsCount || attachments.length > 0) && /* @__PURE__ */ import_react211.default.createElement(AttachmentPreviewList2, null), /* @__PURE__ */ import_react211.default.createElement("div", { className: "str-chat__message-textarea-with-emoji-picker" }, /* @__PURE__ */ import_react211.default.createElement(ChatAutoComplete, null), EmojiPicker && /* @__PURE__ */ import_react211.default.createElement(EmojiPicker, null))), shouldDisplayStopAIGeneration ? /* @__PURE__ */ import_react211.default.createElement(StopAIGenerationButton2, { onClick: stopGenerating }) : !hideSendButton && /* @__PURE__ */ import_react211.default.createElement(import_react211.default.Fragment, null, cooldownRemaining ? /* @__PURE__ */ import_react211.default.createElement(
53587
+ !isDragReject && /* @__PURE__ */ import_react214.default.createElement("p", null, t2("Drag your files here")),
53588
+ isDragReject && /* @__PURE__ */ import_react214.default.createElement("p", null, t2("Some of the files will not be accepted"))
53589
+ ), displayQuotedMessage && /* @__PURE__ */ import_react214.default.createElement(QuotedMessagePreviewHeader, null), /* @__PURE__ */ import_react214.default.createElement("div", { className: "str-chat__message-input-inner" }, /* @__PURE__ */ import_react214.default.createElement(AttachmentSelector2, null), /* @__PURE__ */ import_react214.default.createElement("div", { className: "str-chat__message-textarea-container" }, displayQuotedMessage && /* @__PURE__ */ import_react214.default.createElement(QuotedMessagePreview2, { quotedMessage }), isUploadEnabled && !!(numberOfUploads + failedUploadsCount || attachments.length > 0) && /* @__PURE__ */ import_react214.default.createElement(AttachmentPreviewList2, null), /* @__PURE__ */ import_react214.default.createElement("div", { className: "str-chat__message-textarea-with-emoji-picker" }, /* @__PURE__ */ import_react214.default.createElement(ChatAutoComplete, null), EmojiPicker && /* @__PURE__ */ import_react214.default.createElement(EmojiPicker, null))), shouldDisplayStopAIGeneration ? /* @__PURE__ */ import_react214.default.createElement(StopAIGenerationButton2, { onClick: stopGenerating }) : !hideSendButton && /* @__PURE__ */ import_react214.default.createElement(import_react214.default.Fragment, null, cooldownRemaining ? /* @__PURE__ */ import_react214.default.createElement(
53449
53590
  CooldownTimer2,
53450
53591
  {
53451
53592
  cooldownInterval: cooldownRemaining,
53452
53593
  setCooldownRemaining
53453
53594
  }
53454
- ) : /* @__PURE__ */ import_react211.default.createElement(import_react211.default.Fragment, null, /* @__PURE__ */ import_react211.default.createElement(
53595
+ ) : /* @__PURE__ */ import_react214.default.createElement(import_react214.default.Fragment, null, /* @__PURE__ */ import_react214.default.createElement(
53455
53596
  SendButton2,
53456
53597
  {
53457
53598
  disabled: !numberOfUploads && !text7.length && attachments.length - failedUploadsCount === 0,
53458
53599
  sendMessage: handleSubmit
53459
53600
  }
53460
- ), recordingEnabled && /* @__PURE__ */ import_react211.default.createElement(
53601
+ ), recordingEnabled && /* @__PURE__ */ import_react214.default.createElement(
53461
53602
  StartRecordingAudioButton2,
53462
53603
  {
53463
53604
  disabled: isRecording || !asyncMessagesMultiSendEnabled && attachments.some(
@@ -53475,22 +53616,22 @@ var MessageInputFlat = () => {
53475
53616
  var EditMessageForm = () => {
53476
53617
  const { t: t2 } = useTranslationContext("EditMessageForm");
53477
53618
  const { clearEditingState, handleSubmit } = useMessageInputContext("EditMessageForm");
53478
- (0, import_react212.useEffect)(() => {
53619
+ (0, import_react215.useEffect)(() => {
53479
53620
  const onKeyDown = (event) => {
53480
53621
  if (event.key === "Escape") clearEditingState?.();
53481
53622
  };
53482
53623
  document.addEventListener("keydown", onKeyDown);
53483
53624
  return () => document.removeEventListener("keydown", onKeyDown);
53484
53625
  }, [clearEditingState]);
53485
- return /* @__PURE__ */ import_react212.default.createElement(
53626
+ return /* @__PURE__ */ import_react215.default.createElement(
53486
53627
  "form",
53487
53628
  {
53488
53629
  autoComplete: "off",
53489
53630
  className: "str-chat__edit-message-form",
53490
53631
  onSubmit: handleSubmit
53491
53632
  },
53492
- /* @__PURE__ */ import_react212.default.createElement(MessageInputFlat, null),
53493
- /* @__PURE__ */ import_react212.default.createElement("div", { className: "str-chat__edit-message-form-options" }, /* @__PURE__ */ import_react212.default.createElement(
53633
+ /* @__PURE__ */ import_react215.default.createElement(MessageInputFlat, null),
53634
+ /* @__PURE__ */ import_react215.default.createElement("div", { className: "str-chat__edit-message-form-options" }, /* @__PURE__ */ import_react215.default.createElement(
53494
53635
  "button",
53495
53636
  {
53496
53637
  className: "str-chat__edit-message-cancel",
@@ -53498,7 +53639,7 @@ var EditMessageForm = () => {
53498
53639
  onClick: clearEditingState
53499
53640
  },
53500
53641
  t2("Cancel")
53501
- ), /* @__PURE__ */ import_react212.default.createElement(
53642
+ ), /* @__PURE__ */ import_react215.default.createElement(
53502
53643
  "button",
53503
53644
  {
53504
53645
  className: "str-chat__edit-message-send",
@@ -53511,7 +53652,7 @@ var EditMessageForm = () => {
53511
53652
  };
53512
53653
 
53513
53654
  // src/components/MessageInput/MessageInput.tsx
53514
- var import_react213 = __toESM(require("react"));
53655
+ var import_react216 = __toESM(require("react"));
53515
53656
  var MessageInputProvider = (props) => {
53516
53657
  const cooldownTimerState = useCooldownTimer();
53517
53658
  const messageInputState = useMessageInputState(props);
@@ -53522,7 +53663,7 @@ var MessageInputProvider = (props) => {
53522
53663
  ...props,
53523
53664
  emojiSearchIndex: props.emojiSearchIndex ?? emojiSearchIndex
53524
53665
  });
53525
- return /* @__PURE__ */ import_react213.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
53666
+ return /* @__PURE__ */ import_react216.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
53526
53667
  };
53527
53668
  var UnMemoizedMessageInput = (props) => {
53528
53669
  const { Input: PropInput } = props;
@@ -53531,57 +53672,35 @@ var UnMemoizedMessageInput = (props) => {
53531
53672
  const Input = PropInput || ContextInput || MessageInputFlat;
53532
53673
  const dialogManagerId = props.isThreadInput ? "message-input-dialog-manager-thread" : "message-input-dialog-manager";
53533
53674
  if (dragAndDropWindow)
53534
- return /* @__PURE__ */ import_react213.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react213.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react213.default.createElement(Input, null)));
53535
- return /* @__PURE__ */ import_react213.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react213.default.createElement(MessageInputProvider, { ...props }, /* @__PURE__ */ import_react213.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react213.default.createElement(Input, null))));
53675
+ return /* @__PURE__ */ import_react216.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react216.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react216.default.createElement(Input, null)));
53676
+ return /* @__PURE__ */ import_react216.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react216.default.createElement(MessageInputProvider, { ...props }, /* @__PURE__ */ import_react216.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react216.default.createElement(Input, null))));
53536
53677
  };
53537
- var MessageInput = import_react213.default.memo(
53678
+ var MessageInput = import_react216.default.memo(
53538
53679
  UnMemoizedMessageInput
53539
53680
  );
53540
53681
 
53541
- // src/components/MML/MML.tsx
53542
- var import_react214 = __toESM(require("react"));
53543
- var MMLReact = import_react214.default.lazy(async () => {
53544
- const mml = await Promise.resolve().then(() => __toESM(require_dist2()));
53545
- return { default: mml.MML };
53546
- });
53547
- var MML = (props) => {
53548
- const { actionHandler, align = "right", source } = props;
53549
- const { theme } = useChatContext("MML");
53550
- return /* @__PURE__ */ import_react214.default.createElement(import_react214.Suspense, { fallback: null }, /* @__PURE__ */ import_react214.default.createElement(
53551
- MMLReact,
53552
- {
53553
- className: `mml-align-${align}`,
53554
- Loading: null,
53555
- onSubmit: actionHandler,
53556
- source,
53557
- Success: null,
53558
- theme: (theme || "").replace(" ", "-")
53559
- }
53560
- ));
53561
- };
53562
-
53563
53682
  // src/components/Reactions/ReactionsList.tsx
53564
- var import_react218 = __toESM(require("react"));
53683
+ var import_react220 = __toESM(require("react"));
53565
53684
  var import_clsx56 = __toESM(require("clsx"));
53566
53685
 
53567
53686
  // src/components/Reactions/ReactionsListModal.tsx
53568
- var import_react216 = __toESM(require("react"));
53687
+ var import_react218 = __toESM(require("react"));
53569
53688
  var import_clsx55 = __toESM(require("clsx"));
53570
53689
 
53571
53690
  // src/components/Reactions/hooks/useFetchReactions.ts
53572
- var import_react215 = require("react");
53691
+ var import_react217 = require("react");
53573
53692
  function useFetchReactions(options) {
53574
53693
  const { handleFetchReactions: contextHandleFetchReactions } = useMessageContext("useFetchReactions");
53575
- const [reactions, setReactions] = (0, import_react215.useState)([]);
53694
+ const [reactions, setReactions] = (0, import_react217.useState)([]);
53576
53695
  const {
53577
53696
  handleFetchReactions: propHandleFetchReactions,
53578
53697
  reactionType,
53579
53698
  shouldFetch,
53580
53699
  sort
53581
53700
  } = options;
53582
- const [isLoading, setIsLoading] = (0, import_react215.useState)(shouldFetch);
53701
+ const [isLoading, setIsLoading] = (0, import_react217.useState)(shouldFetch);
53583
53702
  const handleFetchReactions = propHandleFetchReactions ?? contextHandleFetchReactions;
53584
- (0, import_react215.useEffect)(() => {
53703
+ (0, import_react217.useEffect)(() => {
53585
53704
  if (!shouldFetch) {
53586
53705
  return;
53587
53706
  }
@@ -53637,24 +53756,24 @@ function ReactionsListModal({
53637
53756
  shouldFetch: modalProps.open,
53638
53757
  sort: reactionDetailsSort
53639
53758
  });
53640
- const reactionDetailsWithLegacyFallback = (0, import_react216.useMemo)(
53759
+ const reactionDetailsWithLegacyFallback = (0, import_react218.useMemo)(
53641
53760
  () => legacySortReactionDetails ? [...reactionDetails].sort(legacySortReactionDetails) : reactionDetails,
53642
53761
  [legacySortReactionDetails, reactionDetails]
53643
53762
  );
53644
- return /* @__PURE__ */ import_react216.default.createElement(
53763
+ return /* @__PURE__ */ import_react218.default.createElement(
53645
53764
  Modal,
53646
53765
  {
53647
53766
  ...modalProps,
53648
53767
  className: (0, import_clsx55.default)("str-chat__message-reactions-details-modal", modalProps.className)
53649
53768
  },
53650
- /* @__PURE__ */ import_react216.default.createElement(
53769
+ /* @__PURE__ */ import_react218.default.createElement(
53651
53770
  "div",
53652
53771
  {
53653
53772
  className: "str-chat__message-reactions-details",
53654
53773
  "data-testid": "reactions-list-modal"
53655
53774
  },
53656
- /* @__PURE__ */ import_react216.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
53657
- ({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react216.default.createElement(
53775
+ /* @__PURE__ */ import_react218.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
53776
+ ({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react218.default.createElement(
53658
53777
  "div",
53659
53778
  {
53660
53779
  className: (0, import_clsx55.default)("str-chat__message-reactions-details-reaction-type", {
@@ -53666,25 +53785,25 @@ function ReactionsListModal({
53666
53785
  reactionType
53667
53786
  )
53668
53787
  },
53669
- /* @__PURE__ */ import_react216.default.createElement("span", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback" }, /* @__PURE__ */ import_react216.default.createElement(EmojiComponent, null)),
53788
+ /* @__PURE__ */ import_react218.default.createElement("span", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback" }, /* @__PURE__ */ import_react218.default.createElement(EmojiComponent, null)),
53670
53789
  "\xA0",
53671
- /* @__PURE__ */ import_react216.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
53790
+ /* @__PURE__ */ import_react218.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
53672
53791
  )
53673
53792
  )),
53674
- SelectedEmojiComponent && /* @__PURE__ */ import_react216.default.createElement("div", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big" }, /* @__PURE__ */ import_react216.default.createElement(SelectedEmojiComponent, null)),
53675
- /* @__PURE__ */ import_react216.default.createElement(
53793
+ SelectedEmojiComponent && /* @__PURE__ */ import_react218.default.createElement("div", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big" }, /* @__PURE__ */ import_react218.default.createElement(SelectedEmojiComponent, null)),
53794
+ /* @__PURE__ */ import_react218.default.createElement(
53676
53795
  "div",
53677
53796
  {
53678
53797
  className: "str-chat__message-reactions-details-reacting-users",
53679
53798
  "data-testid": "all-reacting-users"
53680
53799
  },
53681
- areReactionsLoading ? /* @__PURE__ */ import_react216.default.createElement(LoadingIndicator, null) : reactionDetailsWithLegacyFallback.map(({ user }) => /* @__PURE__ */ import_react216.default.createElement(
53800
+ areReactionsLoading ? /* @__PURE__ */ import_react218.default.createElement(LoadingIndicator, null) : reactionDetailsWithLegacyFallback.map(({ user }) => /* @__PURE__ */ import_react218.default.createElement(
53682
53801
  "div",
53683
53802
  {
53684
53803
  className: "str-chat__message-reactions-details-reacting-user",
53685
53804
  key: user?.id
53686
53805
  },
53687
- /* @__PURE__ */ import_react216.default.createElement(
53806
+ /* @__PURE__ */ import_react218.default.createElement(
53688
53807
  Avatar,
53689
53808
  {
53690
53809
  className: "stream-chat__avatar--reaction",
@@ -53693,7 +53812,7 @@ function ReactionsListModal({
53693
53812
  name: user?.name || user?.id
53694
53813
  }
53695
53814
  ),
53696
- /* @__PURE__ */ import_react216.default.createElement(
53815
+ /* @__PURE__ */ import_react218.default.createElement(
53697
53816
  "span",
53698
53817
  {
53699
53818
  className: "str-chat__user-item--name",
@@ -53708,7 +53827,7 @@ function ReactionsListModal({
53708
53827
  }
53709
53828
 
53710
53829
  // src/components/Reactions/hooks/useProcessReactions.tsx
53711
- var import_react217 = require("react");
53830
+ var import_react219 = require("react");
53712
53831
  var defaultReactionsSort = (a2, b) => {
53713
53832
  if (a2.firstReactionAt && b.firstReactionAt) {
53714
53833
  return +a2.firstReactionAt - +b.firstReactionAt;
@@ -53730,19 +53849,19 @@ var useProcessReactions = (params) => {
53730
53849
  const latestReactions = propReactions || message.latest_reactions;
53731
53850
  const ownReactions = propOwnReactions || message?.own_reactions;
53732
53851
  const reactionGroups = propReactionGroups || message?.reaction_groups;
53733
- const isOwnReaction = (0, import_react217.useCallback)(
53852
+ const isOwnReaction = (0, import_react219.useCallback)(
53734
53853
  (reactionType) => ownReactions?.some((reaction) => reaction.type === reactionType) ?? false,
53735
53854
  [ownReactions]
53736
53855
  );
53737
- const getEmojiByReactionType = (0, import_react217.useCallback)(
53856
+ const getEmojiByReactionType = (0, import_react219.useCallback)(
53738
53857
  (reactionType) => reactionOptions.find(({ type }) => type === reactionType)?.Component ?? null,
53739
53858
  [reactionOptions]
53740
53859
  );
53741
- const isSupportedReaction = (0, import_react217.useCallback)(
53860
+ const isSupportedReaction = (0, import_react219.useCallback)(
53742
53861
  (reactionType) => reactionOptions.some((reactionOption) => reactionOption.type === reactionType),
53743
53862
  [reactionOptions]
53744
53863
  );
53745
- const getLatestReactedUserNames = (0, import_react217.useCallback)(
53864
+ const getLatestReactedUserNames = (0, import_react219.useCallback)(
53746
53865
  (reactionType) => latestReactions?.flatMap((reaction) => {
53747
53866
  if (reactionType && reactionType === reaction.type) {
53748
53867
  const username = reaction.user?.name || reaction.user?.id;
@@ -53752,7 +53871,7 @@ var useProcessReactions = (params) => {
53752
53871
  }) ?? [],
53753
53872
  [latestReactions]
53754
53873
  );
53755
- const existingReactions = (0, import_react217.useMemo)(() => {
53874
+ const existingReactions = (0, import_react219.useMemo)(() => {
53756
53875
  if (!reactionGroups) {
53757
53876
  return [];
53758
53877
  }
@@ -53786,7 +53905,7 @@ var useProcessReactions = (params) => {
53786
53905
  sortReactions
53787
53906
  ]);
53788
53907
  const hasReactions = existingReactions.length > 0;
53789
- const totalReactionCount = (0, import_react217.useMemo)(
53908
+ const totalReactionCount = (0, import_react219.useMemo)(
53790
53909
  () => existingReactions.reduce((total, { reactionCount }) => total + reactionCount, 0),
53791
53910
  [existingReactions]
53792
53911
  );
@@ -53808,7 +53927,7 @@ var UnMemoizedReactionsList = (props) => {
53808
53927
  ...rest
53809
53928
  } = props;
53810
53929
  const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
53811
- const [selectedReactionType, setSelectedReactionType] = (0, import_react218.useState)(null);
53930
+ const [selectedReactionType, setSelectedReactionType] = (0, import_react220.useState)(null);
53812
53931
  const { t: t2 } = useTranslationContext("ReactionsList");
53813
53932
  const { ReactionsListModal: ReactionsListModal2 = ReactionsListModal } = useComponentContext();
53814
53933
  const handleReactionButtonClick = (reactionType) => {
@@ -53818,7 +53937,7 @@ var UnMemoizedReactionsList = (props) => {
53818
53937
  setSelectedReactionType(reactionType);
53819
53938
  };
53820
53939
  if (!hasReactions) return null;
53821
- return /* @__PURE__ */ import_react218.default.createElement(import_react218.default.Fragment, null, /* @__PURE__ */ import_react218.default.createElement(
53940
+ return /* @__PURE__ */ import_react220.default.createElement(import_react220.default.Fragment, null, /* @__PURE__ */ import_react220.default.createElement(
53822
53941
  "div",
53823
53942
  {
53824
53943
  "aria-label": t2("aria/Reaction list"),
@@ -53829,8 +53948,8 @@ var UnMemoizedReactionsList = (props) => {
53829
53948
  "data-testid": "reaction-list",
53830
53949
  role: "figure"
53831
53950
  },
53832
- /* @__PURE__ */ import_react218.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
53833
- ({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react218.default.createElement(
53951
+ /* @__PURE__ */ import_react220.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
53952
+ ({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react220.default.createElement(
53834
53953
  "li",
53835
53954
  {
53836
53955
  className: (0, import_clsx56.default)("str-chat__message-reaction", {
@@ -53838,7 +53957,7 @@ var UnMemoizedReactionsList = (props) => {
53838
53957
  }),
53839
53958
  key: reactionType
53840
53959
  },
53841
- /* @__PURE__ */ import_react218.default.createElement(
53960
+ /* @__PURE__ */ import_react220.default.createElement(
53842
53961
  "button",
53843
53962
  {
53844
53963
  "aria-label": `Reactions: ${reactionType}`,
@@ -53846,9 +53965,9 @@ var UnMemoizedReactionsList = (props) => {
53846
53965
  onClick: () => handleReactionButtonClick(reactionType),
53847
53966
  type: "button"
53848
53967
  },
53849
- /* @__PURE__ */ import_react218.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react218.default.createElement(EmojiComponent, null)),
53968
+ /* @__PURE__ */ import_react220.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react220.default.createElement(EmojiComponent, null)),
53850
53969
  "\xA0",
53851
- /* @__PURE__ */ import_react218.default.createElement(
53970
+ /* @__PURE__ */ import_react220.default.createElement(
53852
53971
  "span",
53853
53972
  {
53854
53973
  className: "str-chat__message-reaction-count",
@@ -53858,8 +53977,8 @@ var UnMemoizedReactionsList = (props) => {
53858
53977
  )
53859
53978
  )
53860
53979
  )
53861
- ), /* @__PURE__ */ import_react218.default.createElement("li", null, /* @__PURE__ */ import_react218.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
53862
- ), selectedReactionType !== null && /* @__PURE__ */ import_react218.default.createElement(
53980
+ ), /* @__PURE__ */ import_react220.default.createElement("li", null, /* @__PURE__ */ import_react220.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
53981
+ ), selectedReactionType !== null && /* @__PURE__ */ import_react220.default.createElement(
53863
53982
  ReactionsListModal2,
53864
53983
  {
53865
53984
  handleFetchReactions,
@@ -53872,12 +53991,12 @@ var UnMemoizedReactionsList = (props) => {
53872
53991
  }
53873
53992
  ));
53874
53993
  };
53875
- var ReactionsList = import_react218.default.memo(
53994
+ var ReactionsList = import_react220.default.memo(
53876
53995
  UnMemoizedReactionsList
53877
53996
  );
53878
53997
 
53879
53998
  // src/components/Reactions/SimpleReactionsList.tsx
53880
- var import_react219 = __toESM(require("react"));
53999
+ var import_react221 = __toESM(require("react"));
53881
54000
  var import_clsx57 = __toESM(require("clsx"));
53882
54001
  var WithTooltip = ({
53883
54002
  children,
@@ -53885,12 +54004,12 @@ var WithTooltip = ({
53885
54004
  onMouseLeave,
53886
54005
  title
53887
54006
  }) => {
53888
- const [referenceElement, setReferenceElement] = (0, import_react219.useState)(null);
54007
+ const [referenceElement, setReferenceElement] = (0, import_react221.useState)(null);
53889
54008
  const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers({
53890
54009
  onMouseEnter,
53891
54010
  onMouseLeave
53892
54011
  });
53893
- return /* @__PURE__ */ import_react219.default.createElement(import_react219.default.Fragment, null, /* @__PURE__ */ import_react219.default.createElement(PopperTooltip, { referenceElement, visible: tooltipVisible }, title), /* @__PURE__ */ import_react219.default.createElement(
54012
+ return /* @__PURE__ */ import_react221.default.createElement(import_react221.default.Fragment, null, /* @__PURE__ */ import_react221.default.createElement(PopperTooltip, { referenceElement, visible: tooltipVisible }, title), /* @__PURE__ */ import_react221.default.createElement(
53894
54013
  "span",
53895
54014
  {
53896
54015
  onMouseEnter: handleEnter,
@@ -53906,7 +54025,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
53906
54025
  const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
53907
54026
  const handleReaction = propHandleReaction || contextHandleReaction;
53908
54027
  if (!hasReactions) return null;
53909
- return /* @__PURE__ */ import_react219.default.createElement("div", { className: "str-chat__message-reactions-container" }, /* @__PURE__ */ import_react219.default.createElement(
54028
+ return /* @__PURE__ */ import_react221.default.createElement("div", { className: "str-chat__message-reactions-container" }, /* @__PURE__ */ import_react221.default.createElement(
53910
54029
  "ul",
53911
54030
  {
53912
54031
  className: "str-chat__simple-reactions-list str-chat__message-reactions",
@@ -53915,7 +54034,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
53915
54034
  existingReactions.map(
53916
54035
  ({ EmojiComponent, isOwnReaction, latestReactedUserNames, reactionType }) => {
53917
54036
  const tooltipContent = latestReactedUserNames.join(", ");
53918
- return EmojiComponent && /* @__PURE__ */ import_react219.default.createElement(
54037
+ return EmojiComponent && /* @__PURE__ */ import_react221.default.createElement(
53919
54038
  "li",
53920
54039
  {
53921
54040
  className: (0, import_clsx57.default)("str-chat__simple-reactions-list-item", {
@@ -53925,19 +54044,19 @@ var UnMemoizedSimpleReactionsList = (props) => {
53925
54044
  onClick: (event) => handleReaction(reactionType, event),
53926
54045
  onKeyUp: (event) => handleReaction(reactionType, event)
53927
54046
  },
53928
- /* @__PURE__ */ import_react219.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react219.default.createElement(EmojiComponent, null))
54047
+ /* @__PURE__ */ import_react221.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react221.default.createElement(EmojiComponent, null))
53929
54048
  );
53930
54049
  }
53931
54050
  ),
53932
- /* @__PURE__ */ import_react219.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
54051
+ /* @__PURE__ */ import_react221.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
53933
54052
  ));
53934
54053
  };
53935
- var SimpleReactionsList = import_react219.default.memo(
54054
+ var SimpleReactionsList = import_react221.default.memo(
53936
54055
  UnMemoizedSimpleReactionsList
53937
54056
  );
53938
54057
 
53939
54058
  // src/components/Message/MessageEditedTimestamp.tsx
53940
- var import_react220 = __toESM(require("react"));
54059
+ var import_react222 = __toESM(require("react"));
53941
54060
  var import_clsx58 = __toESM(require("clsx"));
53942
54061
  function MessageEditedTimestamp({
53943
54062
  message: propMessage,
@@ -53953,7 +54072,7 @@ function MessageEditedTimestamp({
53953
54072
  if (!isMessageEdited(message)) {
53954
54073
  return null;
53955
54074
  }
53956
- return /* @__PURE__ */ import_react220.default.createElement(
54075
+ return /* @__PURE__ */ import_react222.default.createElement(
53957
54076
  "div",
53958
54077
  {
53959
54078
  className: (0, import_clsx58.default)(
@@ -53964,36 +54083,10 @@ function MessageEditedTimestamp({
53964
54083
  },
53965
54084
  t2("Edited"),
53966
54085
  " ",
53967
- /* @__PURE__ */ import_react220.default.createElement(Timestamp2, { timestamp: message.message_text_updated_at, ...timestampProps })
54086
+ /* @__PURE__ */ import_react222.default.createElement(Timestamp2, { timestamp: message.message_text_updated_at, ...timestampProps })
53968
54087
  );
53969
54088
  }
53970
54089
 
53971
- // src/components/Message/StreamedMessageText.tsx
53972
- var import_react221 = __toESM(require("react"));
53973
- var StreamedMessageText = (props) => {
53974
- const {
53975
- message: messageFromProps,
53976
- renderingLetterCount,
53977
- renderText: renderText2,
53978
- streamingLetterIntervalMs
53979
- } = props;
53980
- const { message: messageFromContext } = useMessageContext("StreamedMessageText");
53981
- const message = messageFromProps || messageFromContext;
53982
- const { text: text7 = "" } = message;
53983
- const { streamedMessageText } = useMessageTextStreaming({
53984
- renderingLetterCount,
53985
- streamingLetterIntervalMs,
53986
- text: text7
53987
- });
53988
- return /* @__PURE__ */ import_react221.default.createElement(
53989
- MessageText,
53990
- {
53991
- message: { ...message, text: streamedMessageText },
53992
- renderText: renderText2
53993
- }
53994
- );
53995
- };
53996
-
53997
54090
  // src/components/Message/MessageSimple.tsx
53998
54091
  var MessageSimpleWithContext = (props) => {
53999
54092
  const {
@@ -54017,8 +54110,8 @@ var MessageSimpleWithContext = (props) => {
54017
54110
  } = props;
54018
54111
  const { client } = useChatContext("MessageSimple");
54019
54112
  const { t: t2 } = useTranslationContext("MessageSimple");
54020
- const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react222.useState)(false);
54021
- const [isEditedTimestampOpen, setEditedTimestampOpen] = (0, import_react222.useState)(false);
54113
+ const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react223.useState)(false);
54114
+ const [isEditedTimestampOpen, setEditedTimestampOpen] = (0, import_react223.useState)(false);
54022
54115
  const {
54023
54116
  Attachment: Attachment2 = Attachment,
54024
54117
  Avatar: Avatar2 = Avatar,
@@ -54038,7 +54131,7 @@ var MessageSimpleWithContext = (props) => {
54038
54131
  } = useComponentContext("MessageSimple");
54039
54132
  const hasAttachment = messageHasAttachments(message);
54040
54133
  const hasReactions = messageHasReactions(message);
54041
- const isAIGenerated = (0, import_react222.useMemo)(
54134
+ const isAIGenerated = (0, import_react223.useMemo)(
54042
54135
  () => isMessageAIGenerated?.(message),
54043
54136
  [isMessageAIGenerated, message]
54044
54137
  );
@@ -54046,7 +54139,7 @@ var MessageSimpleWithContext = (props) => {
54046
54139
  return null;
54047
54140
  }
54048
54141
  if (message.deleted_at || message.type === "deleted") {
54049
- return /* @__PURE__ */ import_react222.default.createElement(MessageDeleted2, { message });
54142
+ return /* @__PURE__ */ import_react223.default.createElement(MessageDeleted2, { message });
54050
54143
  }
54051
54144
  const showMetadata = !groupedByUser || endOfGroup;
54052
54145
  const showReplyCountButton = !threadList && !!message.reply_count;
@@ -54080,14 +54173,14 @@ var MessageSimpleWithContext = (props) => {
54080
54173
  }
54081
54174
  );
54082
54175
  const poll = message.poll_id && client.polls.fromState(message.poll_id);
54083
- return /* @__PURE__ */ import_react222.default.createElement(import_react222.default.Fragment, null, editing && /* @__PURE__ */ import_react222.default.createElement(
54176
+ return /* @__PURE__ */ import_react223.default.createElement(import_react223.default.Fragment, null, editing && /* @__PURE__ */ import_react223.default.createElement(
54084
54177
  Modal,
54085
54178
  {
54086
54179
  className: "str-chat__edit-message-modal",
54087
54180
  onClose: clearEditingState,
54088
54181
  open: editing
54089
54182
  },
54090
- /* @__PURE__ */ import_react222.default.createElement(
54183
+ /* @__PURE__ */ import_react223.default.createElement(
54091
54184
  MessageInput,
54092
54185
  {
54093
54186
  clearEditingState,
@@ -54098,14 +54191,14 @@ var MessageSimpleWithContext = (props) => {
54098
54191
  ...additionalMessageInputProps
54099
54192
  }
54100
54193
  )
54101
- ), isBounceDialogOpen && /* @__PURE__ */ import_react222.default.createElement(
54194
+ ), isBounceDialogOpen && /* @__PURE__ */ import_react223.default.createElement(
54102
54195
  MessageBounceModal,
54103
54196
  {
54104
54197
  MessageBouncePrompt: MessageBouncePrompt2,
54105
54198
  onClose: () => setIsBounceDialogOpen(false),
54106
54199
  open: isBounceDialogOpen
54107
54200
  }
54108
- ), /* @__PURE__ */ import_react222.default.createElement("div", { className: rootClassName2, key: message.id }, PinIndicator2 && /* @__PURE__ */ import_react222.default.createElement(PinIndicator2, null), message.user && /* @__PURE__ */ import_react222.default.createElement(
54201
+ ), /* @__PURE__ */ import_react223.default.createElement("div", { className: rootClassName2, key: message.id }, PinIndicator2 && /* @__PURE__ */ import_react223.default.createElement(PinIndicator2, null), message.user && /* @__PURE__ */ import_react223.default.createElement(
54109
54202
  Avatar2,
54110
54203
  {
54111
54204
  image: message.user.image,
@@ -54114,7 +54207,7 @@ var MessageSimpleWithContext = (props) => {
54114
54207
  onMouseOver: onUserHover,
54115
54208
  user: message.user
54116
54209
  }
54117
- ), /* @__PURE__ */ import_react222.default.createElement(
54210
+ ), /* @__PURE__ */ import_react223.default.createElement(
54118
54211
  "div",
54119
54212
  {
54120
54213
  className: (0, import_clsx59.default)("str-chat__message-inner", {
@@ -54124,37 +54217,37 @@ var MessageSimpleWithContext = (props) => {
54124
54217
  onClick: handleClick,
54125
54218
  onKeyUp: handleClick
54126
54219
  },
54127
- /* @__PURE__ */ import_react222.default.createElement(MessageActions2, null),
54128
- /* @__PURE__ */ import_react222.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react222.default.createElement(ReactionsList2, { reverse: true })),
54129
- /* @__PURE__ */ import_react222.default.createElement("div", { className: "str-chat__message-bubble" }, poll && /* @__PURE__ */ import_react222.default.createElement(Poll, { poll }), message.attachments?.length && !message.quoted_message ? /* @__PURE__ */ import_react222.default.createElement(
54220
+ /* @__PURE__ */ import_react223.default.createElement(MessageActions2, null),
54221
+ /* @__PURE__ */ import_react223.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react223.default.createElement(ReactionsList2, { reverse: true })),
54222
+ /* @__PURE__ */ import_react223.default.createElement("div", { className: "str-chat__message-bubble" }, poll && /* @__PURE__ */ import_react223.default.createElement(Poll, { poll }), message.attachments?.length && !message.quoted_message ? /* @__PURE__ */ import_react223.default.createElement(
54130
54223
  Attachment2,
54131
54224
  {
54132
54225
  actionHandler: handleAction,
54133
54226
  attachments: message.attachments
54134
54227
  }
54135
- ) : null, isAIGenerated ? /* @__PURE__ */ import_react222.default.createElement(StreamedMessageText2, { message, renderText: renderText2 }) : /* @__PURE__ */ import_react222.default.createElement(MessageText, { message, renderText: renderText2 }), message.mml && /* @__PURE__ */ import_react222.default.createElement(
54228
+ ) : null, isAIGenerated ? /* @__PURE__ */ import_react223.default.createElement(StreamedMessageText2, { message, renderText: renderText2 }) : /* @__PURE__ */ import_react223.default.createElement(MessageText, { message, renderText: renderText2 }), message.mml && /* @__PURE__ */ import_react223.default.createElement(
54136
54229
  MML,
54137
54230
  {
54138
54231
  actionHandler: handleAction,
54139
54232
  align: isMyMessage() ? "right" : "left",
54140
54233
  source: message.mml
54141
54234
  }
54142
- ), /* @__PURE__ */ import_react222.default.createElement(MessageErrorIcon, null))
54143
- ), showReplyCountButton && /* @__PURE__ */ import_react222.default.createElement(
54235
+ ), /* @__PURE__ */ import_react223.default.createElement(MessageErrorIcon, null))
54236
+ ), showReplyCountButton && /* @__PURE__ */ import_react223.default.createElement(
54144
54237
  MessageRepliesCountButton2,
54145
54238
  {
54146
54239
  onClick: handleOpenThread,
54147
54240
  reply_count: message.reply_count
54148
54241
  }
54149
- ), showMetadata && /* @__PURE__ */ import_react222.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react222.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react222.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react222.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react222.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t2("Edited")), isEdited && /* @__PURE__ */ import_react222.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
54242
+ ), showMetadata && /* @__PURE__ */ import_react223.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react223.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react223.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t2("Edited")), isEdited && /* @__PURE__ */ import_react223.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
54150
54243
  };
54151
- var MemoizedMessageSimple = import_react222.default.memo(
54244
+ var MemoizedMessageSimple = import_react223.default.memo(
54152
54245
  MessageSimpleWithContext,
54153
54246
  areMessageUIPropsEqual
54154
54247
  );
54155
54248
  var MessageSimple = (props) => {
54156
54249
  const messageContext = useMessageContext("MessageSimple");
54157
- return /* @__PURE__ */ import_react222.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
54250
+ return /* @__PURE__ */ import_react223.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
54158
54251
  };
54159
54252
 
54160
54253
  // src/components/Message/Message.tsx
@@ -54190,11 +54283,11 @@ var MessageWithContext = (props) => {
54190
54283
  canReply,
54191
54284
  isMyMessage
54192
54285
  } = userRoles;
54193
- const messageIsUnread = (0, import_react223.useMemo)(
54286
+ const messageIsUnread = (0, import_react224.useMemo)(
54194
54287
  () => !!(!isMyMessage && client.user?.id && read && (!read[client.user.id] || message?.created_at && new Date(message.created_at).getTime() > read[client.user.id].last_read.getTime())),
54195
54288
  [client, isMyMessage, message.created_at, read]
54196
54289
  );
54197
- const messageActionsHandler = (0, import_react223.useCallback)(
54290
+ const messageActionsHandler = (0, import_react224.useCallback)(
54198
54291
  () => getMessageActions(messageActions, {
54199
54292
  canDelete,
54200
54293
  canEdit,
@@ -54248,9 +54341,9 @@ var MessageWithContext = (props) => {
54248
54341
  onUserHover,
54249
54342
  setEditingState: setEdit
54250
54343
  };
54251
- return /* @__PURE__ */ import_react223.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react223.default.createElement(MessageUIComponent, { groupedByUser }));
54344
+ return /* @__PURE__ */ import_react224.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react224.default.createElement(MessageUIComponent, { groupedByUser }));
54252
54345
  };
54253
- var MemoizedMessage = import_react223.default.memo(
54346
+ var MemoizedMessage = import_react224.default.memo(
54254
54347
  MessageWithContext,
54255
54348
  areMessagePropsEqual
54256
54349
  );
@@ -54317,7 +54410,7 @@ var Message = (props) => {
54317
54410
  notify: addNotification
54318
54411
  });
54319
54412
  const highlighted = highlightedMessageId === message.id;
54320
- return /* @__PURE__ */ import_react223.default.createElement(
54413
+ return /* @__PURE__ */ import_react224.default.createElement(
54321
54414
  MemoizedMessage,
54322
54415
  {
54323
54416
  additionalMessageInputProps: props.additionalMessageInputProps,
@@ -54369,7 +54462,7 @@ var Message = (props) => {
54369
54462
  // src/components/MessageList/GiphyPreviewMessage.tsx
54370
54463
  var GiphyPreviewMessage = (props) => {
54371
54464
  const { message } = props;
54372
- return /* @__PURE__ */ import_react224.default.createElement("div", { className: "giphy-preview-message" }, /* @__PURE__ */ import_react224.default.createElement(Message, { message }));
54465
+ return /* @__PURE__ */ import_react225.default.createElement("div", { className: "giphy-preview-message" }, /* @__PURE__ */ import_react225.default.createElement(Message, { message }));
54373
54466
  };
54374
54467
 
54375
54468
  // src/components/MessageList/MessageList.tsx
@@ -54377,7 +54470,7 @@ var import_clsx61 = __toESM(require("clsx"));
54377
54470
  var import_react244 = __toESM(require("react"));
54378
54471
 
54379
54472
  // src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
54380
- var import_react225 = require("react");
54473
+ var import_react226 = require("react");
54381
54474
 
54382
54475
  // src/components/MessageList/utils.ts
54383
54476
  var import_nanoid9 = require("nanoid");
@@ -54560,6 +54653,7 @@ var getIsFirstUnreadMessage = ({
54560
54653
  previousMessage,
54561
54654
  unreadMessageCount = 0
54562
54655
  }) => {
54656
+ if (message.parent_id) return false;
54563
54657
  const createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
54564
54658
  const lastReadTimestamp = lastReadDate?.getTime();
54565
54659
  const messageIsUnread = !!createdAtTimestamp && !!lastReadTimestamp && createdAtTimestamp > lastReadTimestamp;
@@ -54583,7 +54677,7 @@ var useEnrichedMessages = (args) => {
54583
54677
  } = args;
54584
54678
  const { client } = useChatContext("useEnrichedMessages");
54585
54679
  const { HeaderComponent } = useComponentContext("useEnrichedMessages");
54586
- const lastRead = (0, import_react225.useMemo)(() => channel.lastRead?.(), [channel]);
54680
+ const lastRead = (0, import_react226.useMemo)(() => channel.lastRead?.(), [channel]);
54587
54681
  const enableDateSeparator = !disableDateSeparator;
54588
54682
  let messagesWithDates = !enableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator ? messages : processMessages({
54589
54683
  enableDateSeparator,
@@ -54598,7 +54692,7 @@ var useEnrichedMessages = (args) => {
54598
54692
  messagesWithDates = insertIntro(messagesWithDates, headerPosition);
54599
54693
  }
54600
54694
  const groupStylesFn = groupStyles || getGroupStyles;
54601
- const messageGroupStyles = (0, import_react225.useMemo)(
54695
+ const messageGroupStyles = (0, import_react226.useMemo)(
54602
54696
  () => messagesWithDates.reduce((acc, message, i) => {
54603
54697
  const style = groupStylesFn(
54604
54698
  message,
@@ -54617,13 +54711,13 @@ var useEnrichedMessages = (args) => {
54617
54711
  };
54618
54712
 
54619
54713
  // src/components/MessageList/hooks/MessageList/useMessageListElements.tsx
54620
- var import_react227 = require("react");
54714
+ var import_react228 = require("react");
54621
54715
 
54622
54716
  // src/components/MessageList/hooks/useLastReadData.ts
54623
- var import_react226 = require("react");
54717
+ var import_react227 = require("react");
54624
54718
  var useLastReadData = (props) => {
54625
54719
  const { messages, read, returnAllReadData, userID } = props;
54626
- return (0, import_react226.useMemo)(
54720
+ return (0, import_react227.useMemo)(
54627
54721
  () => getReadStates(
54628
54722
  messages.filter(({ user }) => user?.id === userID),
54629
54723
  read,
@@ -54655,11 +54749,11 @@ var useMessageListElements = (props) => {
54655
54749
  returnAllReadData,
54656
54750
  userID: client.userID
54657
54751
  });
54658
- const lastReceivedMessageId = (0, import_react227.useMemo)(
54752
+ const lastReceivedMessageId = (0, import_react228.useMemo)(
54659
54753
  () => getLastReceived(enrichedMessages),
54660
54754
  [enrichedMessages]
54661
54755
  );
54662
- const elements = (0, import_react227.useMemo)(
54756
+ const elements = (0, import_react228.useMemo)(
54663
54757
  () => renderMessages({
54664
54758
  channelUnreadUiState,
54665
54759
  components,
@@ -54686,7 +54780,7 @@ var useMessageListElements = (props) => {
54686
54780
  };
54687
54781
 
54688
54782
  // src/components/MessageList/hooks/MessageList/useMessageListScrollManager.ts
54689
- var import_react228 = require("react");
54783
+ var import_react229 = require("react");
54690
54784
  function useMessageListScrollManager(params) {
54691
54785
  const {
54692
54786
  loadMoreScrollThreshold,
@@ -54697,13 +54791,13 @@ function useMessageListScrollManager(params) {
54697
54791
  showNewMessages
54698
54792
  } = params;
54699
54793
  const { client } = useChatContext("useMessageListScrollManager");
54700
- const measures = (0, import_react228.useRef)({
54794
+ const measures = (0, import_react229.useRef)({
54701
54795
  offsetHeight: 0,
54702
54796
  scrollHeight: 0
54703
54797
  });
54704
- const messages = (0, import_react228.useRef)(void 0);
54705
- const scrollTop = (0, import_react228.useRef)(0);
54706
- (0, import_react228.useLayoutEffect)(() => {
54798
+ const messages = (0, import_react229.useRef)(void 0);
54799
+ const scrollTop = (0, import_react229.useRef)(0);
54800
+ (0, import_react229.useLayoutEffect)(() => {
54707
54801
  const prevMeasures = measures.current;
54708
54802
  const prevMessages = messages.current;
54709
54803
  const newMessages = params.messages;
@@ -54743,7 +54837,7 @@ function useMessageListScrollManager(params) {
54743
54837
  }
54744
54838
 
54745
54839
  // src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx
54746
- var import_react229 = require("react");
54840
+ var import_react230 = require("react");
54747
54841
  var useScrollLocationLogic = (params) => {
54748
54842
  const {
54749
54843
  hasMoreNewer,
@@ -54753,12 +54847,12 @@ var useScrollLocationLogic = (params) => {
54753
54847
  scrolledUpThreshold = 200,
54754
54848
  suppressAutoscroll
54755
54849
  } = params;
54756
- const [hasNewMessages, setHasNewMessages] = (0, import_react229.useState)(false);
54757
- const [wrapperRect, setWrapperRect] = (0, import_react229.useState)();
54758
- const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react229.useState)(true);
54759
- const closeToBottom = (0, import_react229.useRef)(false);
54760
- const closeToTop = (0, import_react229.useRef)(false);
54761
- const scrollToBottom = (0, import_react229.useCallback)(() => {
54850
+ const [hasNewMessages, setHasNewMessages] = (0, import_react230.useState)(false);
54851
+ const [wrapperRect, setWrapperRect] = (0, import_react230.useState)();
54852
+ const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react230.useState)(true);
54853
+ const closeToBottom = (0, import_react230.useRef)(false);
54854
+ const closeToTop = (0, import_react230.useRef)(false);
54855
+ const scrollToBottom = (0, import_react230.useCallback)(() => {
54762
54856
  if (!listElement?.scrollTo || hasMoreNewer || suppressAutoscroll) {
54763
54857
  return;
54764
54858
  }
@@ -54767,7 +54861,7 @@ var useScrollLocationLogic = (params) => {
54767
54861
  });
54768
54862
  setHasNewMessages(false);
54769
54863
  }, [listElement, hasMoreNewer, suppressAutoscroll]);
54770
- (0, import_react229.useLayoutEffect)(() => {
54864
+ (0, import_react230.useLayoutEffect)(() => {
54771
54865
  if (listElement) {
54772
54866
  setWrapperRect(listElement.getBoundingClientRect());
54773
54867
  scrollToBottom();
@@ -54787,7 +54881,7 @@ var useScrollLocationLogic = (params) => {
54787
54881
  scrollToBottom,
54788
54882
  showNewMessages: () => setHasNewMessages(true)
54789
54883
  });
54790
- const onScroll = (0, import_react229.useCallback)(
54884
+ const onScroll = (0, import_react230.useCallback)(
54791
54885
  (event) => {
54792
54886
  const element3 = event.target;
54793
54887
  const scrollTop = element3.scrollTop;
@@ -54818,22 +54912,22 @@ var useScrollLocationLogic = (params) => {
54818
54912
  };
54819
54913
 
54820
54914
  // src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts
54821
- var import_react232 = require("react");
54915
+ var import_react233 = require("react");
54822
54916
 
54823
54917
  // src/components/MessageList/MessageListMainPanel.tsx
54824
- var import_react230 = __toESM(require("react"));
54918
+ var import_react231 = __toESM(require("react"));
54825
54919
  var MESSAGE_LIST_MAIN_PANEL_CLASS = "str-chat__main-panel-inner str-chat__message-list-main-panel";
54826
- var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react230.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
54920
+ var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react231.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
54827
54921
 
54828
54922
  // src/components/MessageList/UnreadMessagesSeparator.tsx
54829
- var import_react231 = __toESM(require("react"));
54923
+ var import_react232 = __toESM(require("react"));
54830
54924
  var UNREAD_MESSAGE_SEPARATOR_CLASS = "str-chat__unread-messages-separator";
54831
54925
  var UnreadMessagesSeparator = ({
54832
54926
  showCount,
54833
54927
  unreadCount
54834
54928
  }) => {
54835
54929
  const { t: t2 } = useTranslationContext("UnreadMessagesSeparator");
54836
- return /* @__PURE__ */ import_react231.default.createElement(
54930
+ return /* @__PURE__ */ import_react232.default.createElement(
54837
54931
  "div",
54838
54932
  {
54839
54933
  className: UNREAD_MESSAGE_SEPARATOR_CLASS,
@@ -54859,10 +54953,10 @@ var useUnreadMessagesNotification = ({
54859
54953
  unreadCount
54860
54954
  }) => {
54861
54955
  const { messages } = useChannelStateContext("UnreadMessagesNotification");
54862
- const [show, setShow] = (0, import_react232.useState)(false);
54863
- const isScrolledAboveTargetTop = (0, import_react232.useRef)(false);
54956
+ const [show, setShow] = (0, import_react233.useState)(false);
54957
+ const isScrolledAboveTargetTop = (0, import_react233.useRef)(false);
54864
54958
  const intersectionObserverIsSupported = typeof IntersectionObserver !== "undefined";
54865
- (0, import_react232.useEffect)(() => {
54959
+ (0, import_react233.useEffect)(() => {
54866
54960
  if (!(unreadCount && intersectionObserverIsSupported)) {
54867
54961
  setShow(false);
54868
54962
  return;
@@ -54909,7 +55003,7 @@ var useUnreadMessagesNotification = ({
54909
55003
  showAlways,
54910
55004
  unreadCount
54911
55005
  ]);
54912
- (0, import_react232.useEffect)(() => {
55006
+ (0, import_react233.useEffect)(() => {
54913
55007
  if (unreadCount && isMessageListScrolledToBottom && isScrolledAboveTargetTop.current) {
54914
55008
  setShow(true);
54915
55009
  isScrolledAboveTargetTop.current = false;
@@ -54919,7 +55013,7 @@ var useUnreadMessagesNotification = ({
54919
55013
  };
54920
55014
 
54921
55015
  // src/components/MessageList/hooks/useMarkRead.ts
54922
- var import_react233 = require("react");
55016
+ var import_react234 = require("react");
54923
55017
  var hasReadLastMessage = (channel, userId) => {
54924
55018
  const latestMessageIdInChannel = channel.state.latestMessages.slice(-1)[0]?.id;
54925
55019
  const lastReadMessageIdServer = channel.state.read[userId]?.last_read_message_id;
@@ -54933,7 +55027,7 @@ var useMarkRead = ({
54933
55027
  const { client } = useChatContext("useMarkRead");
54934
55028
  const { markRead, setChannelUnreadUiState } = useChannelActionContext("useMarkRead");
54935
55029
  const { channel } = useChannelStateContext("useMarkRead");
54936
- (0, import_react233.useEffect)(() => {
55030
+ (0, import_react234.useEffect)(() => {
54937
55031
  const shouldMarkRead = () => !document.hidden && !wasMarkedUnread && !messageListIsThread && isMessageListScrolledToBottom && client.user?.id && !hasReadLastMessage(channel, client.user.id);
54938
55032
  const onVisibilityChange = () => {
54939
55033
  if (shouldMarkRead()) markRead();
@@ -54992,11 +55086,11 @@ function getPreviousLastMessage(messages, newMessage) {
54992
55086
  }
54993
55087
 
54994
55088
  // src/components/MessageList/MessageNotification.tsx
54995
- var import_react234 = __toESM(require("react"));
55089
+ var import_react235 = __toESM(require("react"));
54996
55090
  var UnMemoizedMessageNotification = (props) => {
54997
55091
  const { children, onClick, showNotification = true } = props;
54998
55092
  if (!showNotification) return null;
54999
- return /* @__PURE__ */ import_react234.default.createElement(
55093
+ return /* @__PURE__ */ import_react235.default.createElement(
55000
55094
  "button",
55001
55095
  {
55002
55096
  "aria-live": "polite",
@@ -55007,12 +55101,12 @@ var UnMemoizedMessageNotification = (props) => {
55007
55101
  children
55008
55102
  );
55009
55103
  };
55010
- var MessageNotification = import_react234.default.memo(
55104
+ var MessageNotification = import_react235.default.memo(
55011
55105
  UnMemoizedMessageNotification
55012
55106
  );
55013
55107
 
55014
55108
  // src/components/MessageList/MessageListNotifications.tsx
55015
- var import_react235 = __toESM(require("react"));
55109
+ var import_react236 = __toESM(require("react"));
55016
55110
  var MessageListNotifications = (props) => {
55017
55111
  const {
55018
55112
  hasNewMessages,
@@ -55025,7 +55119,7 @@ var MessageListNotifications = (props) => {
55025
55119
  unreadCount
55026
55120
  } = props;
55027
55121
  const { t: t2 } = useTranslationContext("MessageListNotifications");
55028
- return /* @__PURE__ */ import_react235.default.createElement("div", { className: "str-chat__list-notifications" }, notifications.map((notification) => /* @__PURE__ */ import_react235.default.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)), /* @__PURE__ */ import_react235.default.createElement(ConnectionStatus, null), /* @__PURE__ */ import_react235.default.createElement(
55122
+ return /* @__PURE__ */ import_react236.default.createElement("div", { className: "str-chat__list-notifications" }, notifications.map((notification) => /* @__PURE__ */ import_react236.default.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)), /* @__PURE__ */ import_react236.default.createElement(ConnectionStatus, null), /* @__PURE__ */ import_react236.default.createElement(
55029
55123
  MessageNotification2,
55030
55124
  {
55031
55125
  isMessageListScrolledToBottom,
@@ -55039,11 +55133,11 @@ var MessageListNotifications = (props) => {
55039
55133
  };
55040
55134
 
55041
55135
  // src/components/MessageList/UnreadMessagesNotification.tsx
55042
- var import_react237 = __toESM(require("react"));
55136
+ var import_react238 = __toESM(require("react"));
55043
55137
 
55044
55138
  // src/components/MessageList/icons.tsx
55045
- var import_react236 = __toESM(require("react"));
55046
- var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react236.default.createElement(
55139
+ var import_react237 = __toESM(require("react"));
55140
+ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react237.default.createElement(
55047
55141
  "svg",
55048
55142
  {
55049
55143
  className,
@@ -55054,7 +55148,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react23
55054
55148
  width: "24",
55055
55149
  xmlns: "http://www.w3.org/2000/svg"
55056
55150
  },
55057
- /* @__PURE__ */ import_react236.default.createElement(
55151
+ /* @__PURE__ */ import_react237.default.createElement(
55058
55152
  "path",
55059
55153
  {
55060
55154
  d: "M7.41 8.29504L12 12.875L16.59 8.29504L18 9.70504L12 15.705L6 9.70504L7.41 8.29504Z",
@@ -55062,7 +55156,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react23
55062
55156
  }
55063
55157
  )
55064
55158
  );
55065
- var CloseIcon2 = () => /* @__PURE__ */ import_react236.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 14 13", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react236.default.createElement("path", { d: "M1.32227 12.3408C0.944336 11.9629 0.953125 11.3213 1.32227 10.9521L5.60254 6.66309L1.32227 2.38281C0.953125 2.01367 0.944336 1.37207 1.32227 0.994141C1.7002 0.616211 2.3418 0.625 2.71094 0.985352L7 5.27441L11.2803 0.994141C11.6494 0.625 12.291 0.616211 12.6689 0.994141C13.0469 1.37207 13.0381 2.01367 12.6689 2.38281L8.38867 6.66309L12.6689 10.9521C13.0381 11.3213 13.0469 11.9629 12.6689 12.3408C12.291 12.7188 11.6494 12.71 11.2803 12.3408L7 8.06055L2.71094 12.3408C2.3418 12.71 1.7002 12.7188 1.32227 12.3408Z" }));
55159
+ var CloseIcon2 = () => /* @__PURE__ */ import_react237.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 14 13", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react237.default.createElement("path", { d: "M1.32227 12.3408C0.944336 11.9629 0.953125 11.3213 1.32227 10.9521L5.60254 6.66309L1.32227 2.38281C0.953125 2.01367 0.944336 1.37207 1.32227 0.994141C1.7002 0.616211 2.3418 0.625 2.71094 0.985352L7 5.27441L11.2803 0.994141C11.6494 0.625 12.291 0.616211 12.6689 0.994141C13.0469 1.37207 13.0381 2.01367 12.6689 2.38281L8.38867 6.66309L12.6689 10.9521C13.0381 11.3213 13.0469 11.9629 12.6689 12.3408C12.291 12.7188 11.6494 12.71 11.2803 12.3408L7 8.06055L2.71094 12.3408C2.3418 12.71 1.7002 12.7188 1.32227 12.3408Z" }));
55066
55160
 
55067
55161
  // src/components/MessageList/UnreadMessagesNotification.tsx
55068
55162
  var UnreadMessagesNotification = ({
@@ -55074,19 +55168,19 @@ var UnreadMessagesNotification = ({
55074
55168
  "UnreadMessagesNotification"
55075
55169
  );
55076
55170
  const { t: t2 } = useTranslationContext("UnreadMessagesNotification");
55077
- return /* @__PURE__ */ import_react237.default.createElement(
55171
+ return /* @__PURE__ */ import_react238.default.createElement(
55078
55172
  "div",
55079
55173
  {
55080
55174
  className: "str-chat__unread-messages-notification",
55081
55175
  "data-testid": "unread-messages-notification"
55082
55176
  },
55083
- /* @__PURE__ */ import_react237.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
55084
- /* @__PURE__ */ import_react237.default.createElement("button", { onClick: () => markRead() }, /* @__PURE__ */ import_react237.default.createElement(CloseIcon2, null))
55177
+ /* @__PURE__ */ import_react238.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
55178
+ /* @__PURE__ */ import_react238.default.createElement("button", { onClick: () => markRead() }, /* @__PURE__ */ import_react238.default.createElement(CloseIcon2, null))
55085
55179
  );
55086
55180
  };
55087
55181
 
55088
55182
  // src/components/InfiniteScrollPaginator/InfiniteScroll.tsx
55089
- var import_react238 = __toESM(require("react"));
55183
+ var import_react239 = __toESM(require("react"));
55090
55184
  var mousewheelListener2 = (event) => {
55091
55185
  if (event instanceof WheelEvent && event.deltaY === 1) {
55092
55186
  event.preventDefault();
@@ -55117,10 +55211,10 @@ var InfiniteScroll = (props) => {
55117
55211
  const loadPreviousPageFn = loadPreviousPage || loadMore;
55118
55212
  const hasNextPageFlag = hasNextPage || hasMoreNewer;
55119
55213
  const hasPreviousPageFlag = hasPreviousPage || hasMore;
55120
- const scrollComponent = (0, import_react238.useRef)(void 0);
55121
- const previousOffset = (0, import_react238.useRef)(void 0);
55122
- const previousReverseOffset = (0, import_react238.useRef)(void 0);
55123
- const scrollListenerRef = (0, import_react238.useRef)(void 0);
55214
+ const scrollComponent = (0, import_react239.useRef)(void 0);
55215
+ const previousOffset = (0, import_react239.useRef)(void 0);
55216
+ const previousReverseOffset = (0, import_react239.useRef)(void 0);
55217
+ const scrollListenerRef = (0, import_react239.useRef)(void 0);
55124
55218
  scrollListenerRef.current = () => {
55125
55219
  const element4 = scrollComponent.current;
55126
55220
  if (!element4 || element4.offsetParent === null) {
@@ -55144,7 +55238,7 @@ var InfiniteScroll = (props) => {
55144
55238
  loadNextPageFn();
55145
55239
  }
55146
55240
  };
55147
- (0, import_react238.useEffect)(() => {
55241
+ (0, import_react239.useEffect)(() => {
55148
55242
  deprecationAndReplacementWarning(
55149
55243
  [
55150
55244
  [{ hasMoreNewer }, { hasNextPage }],
@@ -55155,7 +55249,7 @@ var InfiniteScroll = (props) => {
55155
55249
  "InfiniteScroll"
55156
55250
  );
55157
55251
  }, []);
55158
- (0, import_react238.useEffect)(() => {
55252
+ (0, import_react239.useEffect)(() => {
55159
55253
  const scrollElement = scrollComponent.current?.parentNode;
55160
55254
  if (!scrollElement) return;
55161
55255
  const scrollListener = () => scrollListenerRef.current?.();
@@ -55167,7 +55261,7 @@ var InfiniteScroll = (props) => {
55167
55261
  scrollElement.removeEventListener("resize", scrollListener, useCapture);
55168
55262
  };
55169
55263
  }, [initialLoad, useCapture]);
55170
- (0, import_react238.useEffect)(() => {
55264
+ (0, import_react239.useEffect)(() => {
55171
55265
  const scrollElement = scrollComponent.current?.parentNode;
55172
55266
  if (scrollElement) {
55173
55267
  scrollElement.addEventListener("wheel", mousewheelListener2, { passive: false });
@@ -55188,11 +55282,11 @@ var InfiniteScroll = (props) => {
55188
55282
  if (head) {
55189
55283
  childrenArray.unshift(head);
55190
55284
  }
55191
- return import_react238.default.createElement(element3, attributes, childrenArray);
55285
+ return import_react239.default.createElement(element3, attributes, childrenArray);
55192
55286
  };
55193
55287
 
55194
55288
  // src/components/TypingIndicator/TypingIndicator.tsx
55195
- var import_react239 = __toESM(require("react"));
55289
+ var import_react240 = __toESM(require("react"));
55196
55290
  var import_clsx60 = __toESM(require("clsx"));
55197
55291
  var useJoinTypingUsers = (names) => {
55198
55292
  const { t: t2 } = useTranslationContext();
@@ -55230,7 +55324,7 @@ var UnMemoizedTypingIndicator = (props) => {
55230
55324
  return null;
55231
55325
  }
55232
55326
  if (!isTypingActive) return null;
55233
- return /* @__PURE__ */ import_react239.default.createElement(
55327
+ return /* @__PURE__ */ import_react240.default.createElement(
55234
55328
  "div",
55235
55329
  {
55236
55330
  className: (0, import_clsx60.default)("str-chat__typing-indicator", {
@@ -55238,90 +55332,17 @@ var UnMemoizedTypingIndicator = (props) => {
55238
55332
  }),
55239
55333
  "data-testid": "typing-indicator"
55240
55334
  },
55241
- /* @__PURE__ */ import_react239.default.createElement("div", { className: "str-chat__typing-indicator__dots" }, /* @__PURE__ */ import_react239.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react239.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react239.default.createElement("span", { className: "str-chat__typing-indicator__dot" })),
55242
- /* @__PURE__ */ import_react239.default.createElement("div", { className: "str-chat__typing-indicator__users", "data-testid": "typing-users" }, joinedTypingUsers)
55335
+ /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__typing-indicator__dots" }, /* @__PURE__ */ import_react240.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react240.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react240.default.createElement("span", { className: "str-chat__typing-indicator__dot" })),
55336
+ /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__typing-indicator__users", "data-testid": "typing-users" }, joinedTypingUsers)
55243
55337
  );
55244
55338
  };
55245
- var TypingIndicator = import_react239.default.memo(
55339
+ var TypingIndicator = import_react240.default.memo(
55246
55340
  UnMemoizedTypingIndicator
55247
55341
  );
55248
55342
 
55249
55343
  // src/components/MessageList/renderMessages.tsx
55250
55344
  var import_react243 = __toESM(require("react"));
55251
55345
 
55252
- // src/components/Message/FixedHeightMessage.tsx
55253
- var import_react240 = __toESM(require("react"));
55254
- var selectColor = (number2, dark) => {
55255
- const hue = number2 * 137.508;
55256
- return `hsl(${hue},${dark ? "50%" : "85%"}, ${dark ? "75%" : "55%"})`;
55257
- };
55258
- var hashUserId = (userId) => {
55259
- const hash = userId.split("").reduce((acc, c) => {
55260
- acc = (acc << 5) - acc + c.charCodeAt(0);
55261
- return acc & acc;
55262
- }, 0);
55263
- return Math.abs(hash) / 10 ** Math.ceil(Math.log10(Math.abs(hash) + 1));
55264
- };
55265
- var getUserColor = (theme, userId) => selectColor(hashUserId(userId), theme.includes("dark"));
55266
- var UnMemoizedFixedHeightMessage = (props) => {
55267
- const { groupedByUser: propGroupedByUser, message: propMessage } = props;
55268
- const { theme } = useChatContext("FixedHeightMessage");
55269
- const { groupedByUser: contextGroupedByUser, message: contextMessage } = useMessageContext("FixedHeightMessage");
55270
- const { MessageDeleted: MessageDeleted2 = MessageDeleted } = useComponentContext("FixedHeightMessage");
55271
- const { userLanguage } = useTranslationContext("FixedHeightMessage");
55272
- const groupedByUser = propGroupedByUser !== void 0 ? propGroupedByUser : contextGroupedByUser;
55273
- const message = propMessage || contextMessage;
55274
- const handleAction = useActionHandler(message);
55275
- const handleDelete2 = useDeleteHandler(message);
55276
- const role = useUserRole(message);
55277
- const messageTextToRender = message?.i18n?.[`${userLanguage}_text`] || message?.text;
55278
- const renderedText = (0, import_react240.useMemo)(
55279
- () => renderText(messageTextToRender, message.mentioned_users),
55280
- [message.mentioned_users, messageTextToRender]
55281
- );
55282
- const userId = message.user?.id || "";
55283
- const userColor = (0, import_react240.useMemo)(() => getUserColor(theme, userId), [userId, theme]);
55284
- const messageActionsHandler = (0, import_react240.useCallback)(
55285
- () => getMessageActions(["delete"], { canDelete: role.canDelete }),
55286
- [role]
55287
- );
55288
- const images = message?.attachments?.filter(({ type }) => type === "image");
55289
- return /* @__PURE__ */ import_react240.default.createElement(
55290
- "div",
55291
- {
55292
- className: `str-chat__virtual-message__wrapper ${role.isMyMessage ? "str-chat__virtual-message__wrapper--me" : ""} ${groupedByUser ? "str-chat__virtual-message__wrapper--group" : ""}`,
55293
- key: message.id
55294
- },
55295
- message.user && /* @__PURE__ */ import_react240.default.createElement(
55296
- Avatar,
55297
- {
55298
- image: message.user.image,
55299
- name: message.user.name || message.user.id,
55300
- user: message.user
55301
- }
55302
- ),
55303
- /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__virtual-message__content" }, /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__virtual-message__meta" }, /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__virtual-message__author", style: { color: userColor } }, /* @__PURE__ */ import_react240.default.createElement("strong", null, message.user?.name || "unknown"))), message.deleted_at || message.type === "deleted" ? /* @__PURE__ */ import_react240.default.createElement(MessageDeleted2, { message }) : /* @__PURE__ */ import_react240.default.createElement(import_react240.default.Fragment, null, images && /* @__PURE__ */ import_react240.default.createElement(Gallery, { images }), /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__virtual-message__text", "data-testid": "msg-text" }, renderedText, message.mml && /* @__PURE__ */ import_react240.default.createElement(MML, { actionHandler: handleAction, align: "left", source: message.mml }), /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__virtual-message__data" }, /* @__PURE__ */ import_react240.default.createElement(
55304
- MessageActions,
55305
- {
55306
- customWrapperClass: "str-chat__virtual-message__actions",
55307
- getMessageActions: messageActionsHandler,
55308
- handleDelete: handleDelete2,
55309
- message,
55310
- mine: () => role.isMyMessage
55311
- }
55312
- ), /* @__PURE__ */ import_react240.default.createElement("span", { className: "str-chat__virtual-message__date" }, /* @__PURE__ */ import_react240.default.createElement(
55313
- MessageTimestamp,
55314
- {
55315
- customClass: "str-chat__message-simple-timestamp",
55316
- message
55317
- }
55318
- ))))))
55319
- );
55320
- };
55321
- var FixedHeightMessage = import_react240.default.memo(
55322
- UnMemoizedFixedHeightMessage
55323
- );
55324
-
55325
55346
  // src/components/DateSeparator/DateSeparator.tsx
55326
55347
  var import_react241 = __toESM(require("react"));
55327
55348
  var UnMemoizedDateSeparator = (props) => {
@@ -57676,7 +57697,7 @@ var useChat = ({
57676
57697
  if (!client) return;
57677
57698
  const userAgent = client.getUserAgent();
57678
57699
  if (!userAgent.includes("stream-chat-react")) {
57679
- client.setUserAgent(`stream-chat-react-12.12.0-${userAgent}`);
57700
+ client.setUserAgent(`stream-chat-react-12.13.0-${userAgent}`);
57680
57701
  }
57681
57702
  client.threads.registerSubscriptions();
57682
57703
  client.polls.registerSubscriptions();