stream-chat-react 13.2.1 → 13.2.3

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.
@@ -402,6 +402,7 @@ __export(src_exports, {
402
402
  MessageInputContext: () => MessageInputContext,
403
403
  MessageInputContextProvider: () => MessageInputContextProvider,
404
404
  MessageInputFlat: () => MessageInputFlat,
405
+ MessageIsThreadReplyInChannelButtonIndicator: () => MessageIsThreadReplyInChannelButtonIndicator,
405
406
  MessageList: () => MessageList,
406
407
  MessageListContext: () => MessageListContext,
407
408
  MessageListContextProvider: () => MessageListContextProvider,
@@ -4249,7 +4250,7 @@ var ChannelListMessenger = (props) => {
4249
4250
  } = props;
4250
4251
  const { t } = useTranslationContext("ChannelListMessenger");
4251
4252
  if (error) {
4252
- return /* @__PURE__ */ import_react47.default.createElement(LoadingErrorIndicator2, null);
4253
+ return /* @__PURE__ */ import_react47.default.createElement(LoadingErrorIndicator2, { error });
4253
4254
  }
4254
4255
  if (loading) {
4255
4256
  return /* @__PURE__ */ import_react47.default.createElement(LoadingIndicator2, null);
@@ -19814,7 +19815,6 @@ var keepLineBreaksPlugin = () => transform2;
19814
19815
  // src/components/Message/renderText/renderText.tsx
19815
19816
  var import_react110 = __toESM(require("react"));
19816
19817
  var import_linkifyjs = require("linkifyjs");
19817
- var import_lodash13 = __toESM(require("lodash.uniqby"));
19818
19818
 
19819
19819
  // node_modules/ccount/index.js
19820
19820
  function ccount(value, character) {
@@ -22951,39 +22951,31 @@ var renderText = (text7, mentionedUsers, {
22951
22951
  let newText = text7;
22952
22952
  const markdownLinks = matchMarkdownLinks(newText);
22953
22953
  const codeBlocks = messageCodeBlocks(newText);
22954
- (0, import_lodash13.default)([...(0, import_linkifyjs.find)(newText, "email"), ...(0, import_linkifyjs.find)(newText, "url")], "value").forEach(
22955
- ({ href, type, value }) => {
22956
- const linkIsInBlock = codeBlocks.some((block) => block?.includes(value));
22957
- const noParsingNeeded = markdownLinks && markdownLinks.filter((text8) => {
22958
- const strippedHref = href?.replace(detectHttp, "");
22959
- const strippedText = text8?.replace(detectHttp, "");
22960
- if (!strippedHref || !strippedText) return false;
22961
- return strippedHref.includes(strippedText) || strippedText.includes(strippedHref);
22962
- });
22963
- if (noParsingNeeded.length > 0 || linkIsInBlock) return;
22964
- try {
22965
- if (type === "email" && mentionedUsers) {
22966
- const emailMatchesWithName = mentionedUsers.some((u2) => u2.name === value);
22967
- if (emailMatchesWithName) {
22968
- newText = newText.replace(
22969
- new RegExp(escapeRegExp(value), "g"),
22970
- (match, position3) => {
22971
- const isMention = newText.charAt(position3 - 1) === "@";
22972
- return isMention ? match : `[${match}](${encodeDecode(href)})`;
22973
- }
22974
- );
22975
- return;
22976
- }
22954
+ const links = [...(0, import_linkifyjs.find)(newText, "email"), ...(0, import_linkifyjs.find)(newText, "url")];
22955
+ for (let i = links.length - 1; i >= 0; i--) {
22956
+ const { end, href, start: start2, type, value } = links[i];
22957
+ const linkIsInBlock = codeBlocks.some((block) => block?.includes(value));
22958
+ const noParsingNeeded = markdownLinks && markdownLinks.filter((text8) => {
22959
+ const strippedHref = href?.replace(detectHttp, "");
22960
+ const strippedText = text8?.replace(detectHttp, "");
22961
+ if (!strippedHref || !strippedText) return false;
22962
+ return strippedHref.includes(strippedText) || strippedText.includes(strippedHref);
22963
+ });
22964
+ if (noParsingNeeded.length > 0 || linkIsInBlock) return;
22965
+ try {
22966
+ if (type === "email" && mentionedUsers) {
22967
+ const emailMatchesWithName = mentionedUsers.find((u2) => u2.name === value);
22968
+ if (emailMatchesWithName) {
22969
+ const isMention = newText.charAt(start2 - 1) === "@";
22970
+ newText = newText.slice(0, start2) + (isMention ? value : `[${value}](${encodeDecode(href)})`) + newText.slice(end);
22977
22971
  }
22972
+ } else {
22978
22973
  const displayLink = type === "email" ? value : formatUrlForDisplay(href);
22979
- newText = newText.replace(
22980
- new RegExp(escapeRegExp(value), "g"),
22981
- `[${displayLink}](${encodeDecode(href)})`
22982
- );
22983
- } catch (e) {
22974
+ newText = newText.slice(0, start2) + `[${displayLink}](${encodeDecode(href)})` + newText.slice(end);
22984
22975
  }
22976
+ } catch (e) {
22985
22977
  }
22986
- );
22978
+ }
22987
22979
  const remarkPlugins = [
22988
22980
  htmlToTextPlugin,
22989
22981
  keepLineBreaksPlugin,
@@ -23850,7 +23842,8 @@ var FormDialog = ({
23850
23842
  "button",
23851
23843
  {
23852
23844
  className: "str-chat__dialog__controls-button str-chat__dialog__controls-button--cancel",
23853
- onClick: close
23845
+ onClick: close,
23846
+ type: "button"
23854
23847
  },
23855
23848
  t("Cancel")
23856
23849
  ), /* @__PURE__ */ import_react127.default.createElement(
@@ -24137,7 +24130,7 @@ function useManagePollVotesRealtime(managedVoteType, cursorPaginatorState, optio
24137
24130
  }
24138
24131
 
24139
24132
  // src/components/InfiniteScrollPaginator/hooks/useCursorPaginator.ts
24140
- var import_lodash14 = __toESM(require("lodash.uniqby"));
24133
+ var import_lodash13 = __toESM(require("lodash.uniqby"));
24141
24134
  var import_react136 = require("react");
24142
24135
  var import_stream_chat3 = require("stream-chat");
24143
24136
  var useCursorPaginator = (paginationFn, loadFirstPage) => {
@@ -24159,7 +24152,7 @@ var useCursorPaginator = (paginationFn, loadFirstPage) => {
24159
24152
  cursorPaginatorState.next((prev) => ({
24160
24153
  ...prev,
24161
24154
  hasNextPage: !!next,
24162
- items: (0, import_lodash14.default)(prev.items.concat(items), "id"),
24155
+ items: (0, import_lodash13.default)(prev.items.concat(items), "id"),
24163
24156
  latestPageItems: items,
24164
24157
  next: next || null
24165
24158
  }));
@@ -24258,7 +24251,7 @@ var usePollOptionVotesPagination = ({
24258
24251
 
24259
24252
  // src/components/InfiniteScrollPaginator/InfiniteScrollPaginator.tsx
24260
24253
  var import_clsx31 = __toESM(require("clsx"));
24261
- var import_lodash15 = __toESM(require("lodash.debounce"));
24254
+ var import_lodash14 = __toESM(require("lodash.debounce"));
24262
24255
  var import_react139 = __toESM(require("react"));
24263
24256
  var mousewheelListener = (event) => {
24264
24257
  if (event instanceof WheelEvent && event.deltaY === 1) {
@@ -24280,7 +24273,7 @@ var InfiniteScrollPaginator = (props) => {
24280
24273
  const rootRef = (0, import_react139.useRef)(null);
24281
24274
  const childRef = (0, import_react139.useRef)(null);
24282
24275
  const scrollListener = (0, import_react139.useMemo)(
24283
- () => (0, import_lodash15.default)(() => {
24276
+ () => (0, import_lodash14.default)(() => {
24284
24277
  const root4 = rootRef.current;
24285
24278
  const child = childRef.current;
24286
24279
  if (!root4 || root4.offsetParent === null || !child) {
@@ -24370,7 +24363,7 @@ var import_react142 = __toESM(require("react"));
24370
24363
 
24371
24364
  // src/components/Poll/PollOptionSelector.tsx
24372
24365
  var import_clsx32 = __toESM(require("clsx"));
24373
- var import_lodash16 = __toESM(require("lodash.debounce"));
24366
+ var import_lodash15 = __toESM(require("lodash.debounce"));
24374
24367
  var import_react141 = __toESM(require("react"));
24375
24368
  var import_stream_chat4 = require("stream-chat");
24376
24369
  var AmountBar = ({ amount, className }) => /* @__PURE__ */ import_react141.default.createElement(
@@ -24418,7 +24411,7 @@ var PollOptionSelector = ({
24418
24411
  const canCastVote = channelCapabilities["cast-poll-vote"] && !is_closed;
24419
24412
  const winningOptionCount = maxVotedOptionIds[0] ? vote_counts_by_option[maxVotedOptionIds[0]] : 0;
24420
24413
  const toggleVote = (0, import_react141.useMemo)(
24421
- () => (0, import_lodash16.default)(() => {
24414
+ () => (0, import_lodash15.default)(() => {
24422
24415
  if (!canCastVote) return;
24423
24416
  const haveVotedForTheOption = !!ownVotesByOptionId[option.id];
24424
24417
  return haveVotedForTheOption ? poll.removeVote(ownVotesByOptionId[option.id].id, message.id) : poll.castVote(option.id, message.id);
@@ -24842,7 +24835,7 @@ var MultipleAnswersField = () => {
24842
24835
  );
24843
24836
  },
24844
24837
  placeholder: t("Maximum number of votes (from 2 to 10)"),
24845
- type: "number",
24838
+ type: "text",
24846
24839
  value: max_votes_allowed
24847
24840
  }
24848
24841
  ))
@@ -25075,7 +25068,8 @@ var OptionFieldSet = () => {
25075
25068
  });
25076
25069
  },
25077
25070
  onKeyUp: (event) => {
25078
- if (event.key === "Enter") {
25071
+ const isFocusedLastOptionField = i === options.length - 1;
25072
+ if (event.key === "Enter" && !isFocusedLastOptionField) {
25079
25073
  const nextInputId = options[i + 1].id;
25080
25074
  document.getElementById(nextInputId)?.focus();
25081
25075
  }
@@ -25107,7 +25101,8 @@ var PollCreationDialogControls = ({
25107
25101
  onClick: () => {
25108
25102
  messageComposer.pollComposer.initState();
25109
25103
  close();
25110
- }
25104
+ },
25105
+ type: "button"
25111
25106
  },
25112
25107
  t("Cancel")
25113
25108
  ), /* @__PURE__ */ import_react157.default.createElement(
@@ -30459,7 +30454,7 @@ var useUnreadMessagesNotificationVirtualized = ({
30459
30454
 
30460
30455
  // src/components/MessageList/VirtualizedMessageListComponents.tsx
30461
30456
  var import_clsx48 = __toESM(require("clsx"));
30462
- var import_lodash17 = __toESM(require("lodash.throttle"));
30457
+ var import_lodash16 = __toESM(require("lodash.throttle"));
30463
30458
  var import_react194 = __toESM(require("react"));
30464
30459
  var PREPEND_OFFSET = 10 ** 7;
30465
30460
  function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
@@ -30468,7 +30463,7 @@ function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
30468
30463
  function calculateFirstItemIndex(numItemsPrepended) {
30469
30464
  return PREPEND_OFFSET - numItemsPrepended;
30470
30465
  }
30471
- var makeItemsRenderedHandler = (renderedItemsActions, processedMessages) => (0, import_lodash17.default)((items) => {
30466
+ var makeItemsRenderedHandler = (renderedItemsActions, processedMessages) => (0, import_lodash16.default)((items) => {
30472
30467
  const renderedMessages = items.map((item) => {
30473
30468
  if (!item.originalIndex) return void 0;
30474
30469
  return processedMessages[calculateItemIndex(item.originalIndex, PREPEND_OFFSET)];
@@ -32705,9 +32700,9 @@ var import_fix_webm_duration = __toESM(require("fix-webm-duration"));
32705
32700
  var import_nanoid5 = require("nanoid");
32706
32701
 
32707
32702
  // src/utils/mergeDeep.ts
32708
- var import_lodash18 = __toESM(require("lodash.mergewith"));
32703
+ var import_lodash17 = __toESM(require("lodash.mergewith"));
32709
32704
  var overrideUndefinedOnly = (object, source) => object ?? source;
32710
- var mergeDeepUndefined = (target, source) => (0, import_lodash18.default)(target, source, overrideUndefinedOnly);
32705
+ var mergeDeepUndefined = (target, source) => (0, import_lodash17.default)(target, source, overrideUndefinedOnly);
32711
32706
 
32712
32707
  // src/components/MediaRecorder/classes/AmplitudeRecorder.ts
32713
32708
  var MAX_FREQUENCY_AMPLITUDE = 255;
@@ -34188,6 +34183,12 @@ var searchSourceStateSelector2 = (state) => ({
34188
34183
  var configStateSelector = (state) => ({
34189
34184
  enabled: state.text.enabled
34190
34185
  });
34186
+ var messageComposerStateSelector2 = (state) => ({
34187
+ quotedMessage: state.quotedMessage
34188
+ });
34189
+ var attachmentManagerStateSelector = (state) => ({
34190
+ attachments: state.attachments
34191
+ });
34191
34192
  var defaultShouldSubmit = (event) => event.key === "Enter" && !event.shiftKey && !event.nativeEvent.isComposing;
34192
34193
  var TextareaComposer = ({
34193
34194
  className,
@@ -34210,6 +34211,7 @@ var TextareaComposer = ({
34210
34211
  const {
34211
34212
  additionalTextareaProps,
34212
34213
  cooldownRemaining,
34214
+ focus,
34213
34215
  handleSubmit,
34214
34216
  maxRows: maxRowsContext,
34215
34217
  minRows: minRowsContext,
@@ -34228,6 +34230,14 @@ var TextareaComposer = ({
34228
34230
  textComposerStateSelector2
34229
34231
  );
34230
34232
  const { enabled } = useStateStore(messageComposer.configState, configStateSelector);
34233
+ const { quotedMessage } = useStateStore(
34234
+ messageComposer.state,
34235
+ messageComposerStateSelector2
34236
+ );
34237
+ const { attachments } = useStateStore(
34238
+ messageComposer.attachmentManager.state,
34239
+ attachmentManagerStateSelector
34240
+ );
34231
34241
  const { isLoadingItems } = useStateStore(suggestions?.searchSource.state, searchSourceStateSelector2) ?? {};
34232
34242
  const containerRef = (0, import_react246.useRef)(null);
34233
34243
  const [focusedItemIndex, setFocusedItemIndex] = (0, import_react246.useState)(0);
@@ -34341,6 +34351,16 @@ var TextareaComposer = ({
34341
34351
  setFocusedItemIndex(0);
34342
34352
  }
34343
34353
  }, [textComposer.suggestions]);
34354
+ (0, import_react246.useEffect)(() => {
34355
+ const textareaIsFocused = textareaRef.current?.matches(":focus");
34356
+ if (!textareaRef.current || textareaIsFocused || !focus) return;
34357
+ textareaRef.current.focus();
34358
+ }, [attachments, focus, quotedMessage, textareaRef]);
34359
+ (0, import_react246.useEffect)(() => {
34360
+ const textarea = textareaRef.current;
34361
+ if (!textarea) return;
34362
+ textarea.value = text7;
34363
+ }, [textareaRef, text7]);
34344
34364
  return /* @__PURE__ */ import_react246.default.createElement(
34345
34365
  "div",
34346
34366
  {
@@ -34379,8 +34399,7 @@ var TextareaComposer = ({
34379
34399
  placeholder: placeholder || t("Type your message"),
34380
34400
  ref: (ref) => {
34381
34401
  textareaRef.current = ref;
34382
- },
34383
- value: text7
34402
+ }
34384
34403
  }
34385
34404
  ),
34386
34405
  !isComposing && /* @__PURE__ */ import_react246.default.createElement(
@@ -34687,7 +34706,7 @@ var MessageInputProvider = (props) => {
34687
34706
  );
34688
34707
  (0, import_react252.useEffect)(() => {
34689
34708
  const threadId = messageComposer.threadId;
34690
- if (!threadId || !messageComposer.channel || !messageComposer.compositionIsEmpty)
34709
+ if (!threadId || !messageComposer.channel || !messageComposer.compositionIsEmpty || !messageComposer.config.drafts.enabled)
34691
34710
  return;
34692
34711
  messageComposer.channel.getDraft({ parent_id: threadId }).then(({ draft }) => {
34693
34712
  if (draft) {
@@ -34753,7 +34772,8 @@ var EditMessageForm = () => {
34753
34772
  {
34754
34773
  className: "str-chat__edit-message-cancel",
34755
34774
  "data-testid": "cancel-button",
34756
- onClick: cancel
34775
+ onClick: cancel,
34776
+ type: "button"
34757
34777
  },
34758
34778
  t("Cancel")
34759
34779
  ), /* @__PURE__ */ import_react253.default.createElement(EditMessageFormSendButton, null))
@@ -34780,6 +34800,7 @@ var EditMessageModal = ({
34780
34800
  MessageInput,
34781
34801
  {
34782
34802
  clearEditingState,
34803
+ focus: true,
34783
34804
  hideSendButton: true,
34784
34805
  Input: EditMessageInput,
34785
34806
  ...additionalMessageInputProps
@@ -34804,7 +34825,7 @@ var UploadFileInput = (0, import_react254.forwardRef)(function UploadFileInput2(
34804
34825
  ...props
34805
34826
  }, ref) {
34806
34827
  const { t } = useTranslationContext("UploadFileInput");
34807
- const { cooldownRemaining } = useMessageInputContext();
34828
+ const { cooldownRemaining, textareaRef } = useMessageInputContext();
34808
34829
  const messageComposer = useMessageComposer();
34809
34830
  const { attachmentManager } = messageComposer;
34810
34831
  const { isUploadEnabled } = useAttachmentManagerState();
@@ -34816,9 +34837,10 @@ var UploadFileInput = (0, import_react254.forwardRef)(function UploadFileInput2(
34816
34837
  const onFileChange = (0, import_react254.useCallback)(
34817
34838
  (files) => {
34818
34839
  attachmentManager.uploadFiles(files);
34840
+ textareaRef.current?.focus();
34819
34841
  onFileChangeCustom?.(files);
34820
34842
  },
34821
- [onFileChangeCustom, attachmentManager]
34843
+ [onFileChangeCustom, attachmentManager, textareaRef]
34822
34844
  );
34823
34845
  return /* @__PURE__ */ import_react254.default.createElement(
34824
34846
  FileInput,
@@ -35129,15 +35151,19 @@ var GalleryContainer = ({
35129
35151
  const { imageAttachmentSizeHandler } = useChannelStateContext();
35130
35152
  const [attachmentConfigurations, setAttachmentConfigurations] = (0, import_react259.useState)([]);
35131
35153
  (0, import_react259.useLayoutEffect)(() => {
35132
- if (imageElements.current && imageElements.current.every((element3) => !!element3) && imageAttachmentSizeHandler) {
35133
- const newConfigurations = [];
35134
- imageElements.current.forEach((element3, i) => {
35135
- const config = imageAttachmentSizeHandler(attachment.images[i], element3);
35136
- newConfigurations.push(config);
35137
- });
35138
- setAttachmentConfigurations(newConfigurations);
35139
- }
35140
- }, [imageElements, imageAttachmentSizeHandler, attachment]);
35154
+ if (!imageElements.current || !imageAttachmentSizeHandler) return;
35155
+ const newConfigurations = [];
35156
+ const nonNullImageElements = imageElements.current.filter((e) => !!e);
35157
+ if (nonNullImageElements.length < imageElements.current.length) {
35158
+ imageElements.current = nonNullImageElements;
35159
+ }
35160
+ imageElements.current.forEach((element3, i) => {
35161
+ if (!element3) return;
35162
+ const config = imageAttachmentSizeHandler(attachment.images[i], element3);
35163
+ newConfigurations.push(config);
35164
+ });
35165
+ setAttachmentConfigurations(newConfigurations);
35166
+ }, [imageAttachmentSizeHandler, attachment]);
35141
35167
  const images = attachment.images.map((image3, i) => ({
35142
35168
  ...image3,
35143
35169
  previewUrl: attachmentConfigurations[i]?.url || "about:blank",
@@ -35343,9 +35369,9 @@ var getAttachmentType = (attachment) => {
35343
35369
  // src/components/Channel/Channel.tsx
35344
35370
  var import_react266 = __toESM(require("react"));
35345
35371
  var import_clsx67 = __toESM(require("clsx"));
35346
- var import_lodash19 = __toESM(require("lodash.debounce"));
35347
- var import_lodash20 = __toESM(require("lodash.defaultsdeep"));
35348
- var import_lodash21 = __toESM(require("lodash.throttle"));
35372
+ var import_lodash18 = __toESM(require("lodash.debounce"));
35373
+ var import_lodash19 = __toESM(require("lodash.defaultsdeep"));
35374
+ var import_lodash20 = __toESM(require("lodash.throttle"));
35349
35375
  var import_stream_chat13 = require("stream-chat");
35350
35376
 
35351
35377
  // src/components/Channel/channelState.ts
@@ -35943,7 +35969,7 @@ var ChannelInner = (props) => {
35943
35969
  skipMessageDataMemoization
35944
35970
  } = props;
35945
35971
  const channelQueryOptions = (0, import_react266.useMemo)(
35946
- () => (0, import_lodash20.default)(propChannelQueryOptions, {
35972
+ () => (0, import_lodash19.default)(propChannelQueryOptions, {
35947
35973
  messages: { limit: DEFAULT_INITIAL_CHANNEL_PAGE_SIZE }
35948
35974
  }),
35949
35975
  [propChannelQueryOptions]
@@ -35978,7 +36004,7 @@ var ChannelInner = (props) => {
35978
36004
  null
35979
36005
  );
35980
36006
  const channelCapabilitiesArray = channel.data?.own_capabilities;
35981
- const throttledCopyStateFromChannel = (0, import_lodash21.default)(
36007
+ const throttledCopyStateFromChannel = (0, import_lodash20.default)(
35982
36008
  () => dispatch({ channel, type: "copyStateFromChannelOnEvent" }),
35983
36009
  500,
35984
36010
  {
@@ -35987,14 +36013,14 @@ var ChannelInner = (props) => {
35987
36013
  }
35988
36014
  );
35989
36015
  const setChannelUnreadUiState = (0, import_react266.useMemo)(
35990
- () => (0, import_lodash21.default)(_setChannelUnreadUiState, 200, {
36016
+ () => (0, import_lodash20.default)(_setChannelUnreadUiState, 200, {
35991
36017
  leading: true,
35992
36018
  trailing: false
35993
36019
  }),
35994
36020
  []
35995
36021
  );
35996
36022
  const markRead = (0, import_react266.useMemo)(
35997
- () => (0, import_lodash21.default)(
36023
+ () => (0, import_lodash20.default)(
35998
36024
  async (options) => {
35999
36025
  const { updateChannelUiUnreadState = true } = options ?? {};
36000
36026
  if (channel.disconnected || !channelConfig?.read_events) {
@@ -36009,7 +36035,7 @@ var ChannelInner = (props) => {
36009
36035
  );
36010
36036
  } else {
36011
36037
  const markReadResponse = await channel.markRead();
36012
- if (updateChannelUiUnreadState && markReadResponse) {
36038
+ if (updateChannelUiUnreadState && markReadResponse?.event) {
36013
36039
  _setChannelUnreadUiState({
36014
36040
  last_read: lastRead.current,
36015
36041
  last_read_message_id: markReadResponse.event.last_read_message_id,
@@ -36199,7 +36225,7 @@ var ChannelInner = (props) => {
36199
36225
  []
36200
36226
  );
36201
36227
  const loadMoreFinished = (0, import_react266.useCallback)(
36202
- (0, import_lodash19.default)(
36228
+ (0, import_lodash18.default)(
36203
36229
  (hasMore, messages) => {
36204
36230
  if (!isMounted.current) return;
36205
36231
  dispatch({ hasMore, messages, type: "loadMoreFinished" });
@@ -36520,7 +36546,7 @@ var ChannelInner = (props) => {
36520
36546
  dispatch({ type: "closeThread" });
36521
36547
  };
36522
36548
  const loadMoreThreadFinished = (0, import_react266.useCallback)(
36523
- (0, import_lodash19.default)(
36549
+ (0, import_lodash18.default)(
36524
36550
  (threadHasMore, threadMessages) => {
36525
36551
  dispatch({
36526
36552
  threadHasMore,
@@ -36850,7 +36876,7 @@ var useChat = ({
36850
36876
  };
36851
36877
  (0, import_react269.useEffect)(() => {
36852
36878
  if (!client) return;
36853
- const version = "13.2.1";
36879
+ const version = "13.2.3";
36854
36880
  const userAgent = client.getUserAgent();
36855
36881
  if (!userAgent.includes("stream-chat-react")) {
36856
36882
  client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);
@@ -37204,6 +37230,7 @@ var Window = import_react274.default.memo(UnMemoizedWindow);
37204
37230
  MessageInputContext,
37205
37231
  MessageInputContextProvider,
37206
37232
  MessageInputFlat,
37233
+ MessageIsThreadReplyInChannelButtonIndicator,
37207
37234
  MessageList,
37208
37235
  MessageListContext,
37209
37236
  MessageListContextProvider,