stream-chat-react 12.14.0 → 12.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/components/Channel/Channel.d.ts +8 -2
  2. package/dist/components/Chat/hooks/useChat.js +1 -1
  3. package/dist/components/MessageInput/MessageInput.js +3 -0
  4. package/dist/components/MessageInput/MessageInputFlat.js +28 -48
  5. package/dist/components/MessageInput/WithDragAndDropUpload.d.ts +37 -0
  6. package/dist/components/MessageInput/WithDragAndDropUpload.js +85 -0
  7. package/dist/components/MessageInput/index.d.ts +1 -0
  8. package/dist/components/MessageInput/index.js +1 -0
  9. package/dist/context/MessageInputContext.js +3 -2
  10. package/dist/css/v2/index.css +1 -1
  11. package/dist/css/v2/index.layout.css +1 -1
  12. package/dist/index.browser.cjs +442 -400
  13. package/dist/index.browser.cjs.map +4 -4
  14. package/dist/index.node.cjs +467 -424
  15. package/dist/index.node.cjs.map +4 -4
  16. package/dist/plugins/Emojis/index.browser.cjs +0 -3
  17. package/dist/plugins/Emojis/index.browser.cjs.map +2 -2
  18. package/dist/plugins/Emojis/index.node.cjs +0 -3
  19. package/dist/plugins/Emojis/index.node.cjs.map +2 -2
  20. package/dist/scss/v2/DropzoneContainer/DropzoneContainer-layout.scss +14 -0
  21. package/dist/scss/v2/DropzoneContainer/DropzoneContainer-theme.scss +17 -0
  22. package/dist/scss/v2/MessageInput/MessageInput-layout.scss +0 -13
  23. package/dist/scss/v2/MessageInput/MessageInput-theme.scss +8 -19
  24. package/dist/scss/v2/index.layout.scss +2 -1
  25. package/dist/scss/v2/index.scss +1 -0
  26. package/package.json +2 -2
  27. /package/dist/scss/v2/DragAndDropContainer/{DragAmdDropContainer-layout.scss → DragAndDropContainer-layout.scss} +0 -0
@@ -8447,7 +8447,7 @@ var require_react_is = __commonJS({
8447
8447
  var require_ast_to_react = __commonJS({
8448
8448
  "node_modules/mml-react/node_modules/react-markdown/lib/ast-to-react.js"(exports, module2) {
8449
8449
  "use strict";
8450
- var React210 = require("react");
8450
+ var React211 = require("react");
8451
8451
  var xtend = require_immutable();
8452
8452
  var ReactIs = require_react_is();
8453
8453
  function astToReact(node2, options) {
@@ -8474,7 +8474,7 @@ var require_ast_to_react = __commonJS({
8474
8474
  throw new Error("Renderer for type `".concat(node2.type, "` not defined or is not renderable"));
8475
8475
  }
8476
8476
  var nodeProps = getNodeProps(node2, key, options, renderer, parent, index3);
8477
- return React210.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || void 0);
8477
+ return React211.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || void 0);
8478
8478
  function resolveChildren() {
8479
8479
  return node2.children && node2.children.map(function(childNode, i) {
8480
8480
  return astToReact(childNode, options, {
@@ -8488,7 +8488,7 @@ var require_ast_to_react = __commonJS({
8488
8488
  var props = {
8489
8489
  key
8490
8490
  };
8491
- var isSimpleRenderer = typeof renderer === "string" || renderer === React210.Fragment;
8491
+ var isSimpleRenderer = typeof renderer === "string" || renderer === React211.Fragment;
8492
8492
  if (opts.sourcePos && node2.position) {
8493
8493
  props["data-sourcepos"] = flattenPosition(node2.position);
8494
8494
  }
@@ -8641,14 +8641,14 @@ var require_ast_to_react = __commonJS({
8641
8641
  function mergeNodeChildren(node2, parsedChildren) {
8642
8642
  var el = node2.element;
8643
8643
  if (Array.isArray(el)) {
8644
- var Fragment3 = React210.Fragment || "div";
8645
- return React210.createElement(Fragment3, null, el);
8644
+ var Fragment3 = React211.Fragment || "div";
8645
+ return React211.createElement(Fragment3, null, el);
8646
8646
  }
8647
8647
  if (el.props.children || parsedChildren) {
8648
- var children = React210.Children.toArray(el.props.children).concat(parsedChildren);
8649
- return React210.cloneElement(el, null, children);
8648
+ var children = React211.Children.toArray(el.props.children).concat(parsedChildren);
8649
+ return React211.cloneElement(el, null, children);
8650
8650
  }
8651
- return React210.cloneElement(el, null);
8651
+ return React211.cloneElement(el, null);
8652
8652
  }
8653
8653
  function flattenPosition(pos) {
8654
8654
  return [pos.start.line, ":", pos.start.column, "-", pos.end.line, ":", pos.end.column].map(String).join("");
@@ -8772,9 +8772,9 @@ var require_renderers = __commonJS({
8772
8772
  "node_modules/mml-react/node_modules/react-markdown/lib/renderers.js"(exports, module2) {
8773
8773
  "use strict";
8774
8774
  var xtend = require_immutable();
8775
- var React210 = require("react");
8776
- var supportsStringRender = parseInt((React210.version || "16").slice(0, 2), 10) >= 16;
8777
- var createElement = React210.createElement;
8775
+ var React211 = require("react");
8776
+ var supportsStringRender = parseInt((React211.version || "16").slice(0, 2), 10) >= 16;
8777
+ var createElement = React211.createElement;
8778
8778
  module2.exports = {
8779
8779
  break: "br",
8780
8780
  paragraph: "p",
@@ -8810,7 +8810,7 @@ var require_renderers = __commonJS({
8810
8810
  }
8811
8811
  function Root(props) {
8812
8812
  var className = props.className;
8813
- var root4 = !className && React210.Fragment || "div";
8813
+ var root4 = !className && React211.Fragment || "div";
8814
8814
  return createElement(root4, className ? {
8815
8815
  className
8816
8816
  } : null, props.children);
@@ -8866,7 +8866,7 @@ var require_renderers = __commonJS({
8866
8866
  var dangerous = props.allowDangerousHtml || props.escapeHtml === false;
8867
8867
  var tag = props.isBlock ? "div" : "span";
8868
8868
  if (!dangerous) {
8869
- return createElement(React210.Fragment || tag, null, props.value);
8869
+ return createElement(React211.Fragment || tag, null, props.value);
8870
8870
  }
8871
8871
  var nodeProps = {
8872
8872
  dangerouslySetInnerHTML: {
@@ -8876,7 +8876,7 @@ var require_renderers = __commonJS({
8876
8876
  return createElement(tag, nodeProps);
8877
8877
  }
8878
8878
  function ParsedHtml(props) {
8879
- return props["data-sourcepos"] ? React210.cloneElement(props.element, {
8879
+ return props["data-sourcepos"] ? React211.cloneElement(props.element, {
8880
8880
  "data-sourcepos": props["data-sourcepos"]
8881
8881
  }) : props.element;
8882
8882
  }
@@ -17773,6 +17773,7 @@ __export(src_exports, {
17773
17773
  WaveProgressBar: () => WaveProgressBar,
17774
17774
  Window: () => Window,
17775
17775
  WithComponents: () => WithComponents,
17776
+ WithDragAndDropUpload: () => WithDragAndDropUpload,
17776
17777
  areMessagePropsEqual: () => areMessagePropsEqual,
17777
17778
  areMessageUIPropsEqual: () => areMessageUIPropsEqual,
17778
17779
  attachmentTypeIconMap: () => attachmentTypeIconMap,
@@ -18483,9 +18484,6 @@ var MessageInputContextProvider = ({
18483
18484
  var useMessageInputContext = (componentName) => {
18484
18485
  const contextValue = (0, import_react13.useContext)(MessageInputContext);
18485
18486
  if (!contextValue) {
18486
- console.warn(
18487
- `The useMessageInputContext hook was called outside of the MessageInputContext provider. Make sure this hook is called within the MessageInput's UI component. The errored call is located in the ${componentName} component.`
18488
- );
18489
18487
  return {};
18490
18488
  }
18491
18489
  return contextValue;
@@ -35600,7 +35598,7 @@ ReactTextareaAutocomplete.propTypes = {
35600
35598
  };
35601
35599
 
35602
35600
  // src/components/Channel/Channel.tsx
35603
- var import_react258 = __toESM(require("react"));
35601
+ var import_react259 = __toESM(require("react"));
35604
35602
  var import_lodash22 = __toESM(require("lodash.debounce"));
35605
35603
  var import_lodash23 = __toESM(require("lodash.defaultsdeep"));
35606
35604
  var import_lodash24 = __toESM(require("lodash.throttle"));
@@ -40868,10 +40866,10 @@ var UnMemoizedConnectionStatus = () => {
40868
40866
  var ConnectionStatus = import_react80.default.memo(UnMemoizedConnectionStatus);
40869
40867
 
40870
40868
  // src/components/MessageList/GiphyPreviewMessage.tsx
40871
- var import_react227 = __toESM(require("react"));
40869
+ var import_react228 = __toESM(require("react"));
40872
40870
 
40873
40871
  // src/components/Message/Message.tsx
40874
- var import_react226 = __toESM(require("react"));
40872
+ var import_react227 = __toESM(require("react"));
40875
40873
 
40876
40874
  // src/components/Message/hooks/useActionHandler.ts
40877
40875
  var handleActionWarning = `Action handler was called, but it is missing one of its required arguments.
@@ -44446,7 +44444,7 @@ var useMessageTextStreaming = ({
44446
44444
  };
44447
44445
 
44448
44446
  // src/components/Message/MessageSimple.tsx
44449
- var import_react225 = __toESM(require("react"));
44447
+ var import_react226 = __toESM(require("react"));
44450
44448
  var import_clsx60 = __toESM(require("clsx"));
44451
44449
 
44452
44450
  // src/components/Message/icons.tsx
@@ -48431,12 +48429,10 @@ var DefaultTriggerProvider = ({
48431
48429
  };
48432
48430
 
48433
48431
  // src/components/MessageInput/EditMessageForm.tsx
48434
- var import_react217 = __toESM(require("react"));
48432
+ var import_react218 = __toESM(require("react"));
48435
48433
 
48436
48434
  // src/components/MessageInput/MessageInputFlat.tsx
48437
- var import_react216 = __toESM(require("react"));
48438
- var import_clsx55 = __toESM(require("clsx"));
48439
- var import_react_dropzone2 = require("react-dropzone");
48435
+ var import_react217 = __toESM(require("react"));
48440
48436
 
48441
48437
  // src/components/MessageInput/SendButton.tsx
48442
48438
  var import_react205 = __toESM(require("react"));
@@ -48841,9 +48837,83 @@ var AIStateIndicator = ({
48841
48837
  return aiState in allowedStates ? /* @__PURE__ */ import_react215.default.createElement("div", { className: "str-chat__ai-state-indicator-container" }, /* @__PURE__ */ import_react215.default.createElement("p", { className: "str-chat__ai-state-indicator-text" }, allowedStates[aiState])) : null;
48842
48838
  };
48843
48839
 
48840
+ // src/components/MessageInput/WithDragAndDropUpload.tsx
48841
+ var import_react216 = __toESM(require("react"));
48842
+ var import_react_dropzone2 = require("react-dropzone");
48843
+ var import_clsx55 = __toESM(require("clsx"));
48844
+ var DragAndDropUploadContext = import_react216.default.createContext({
48845
+ subscribeToDrop: null
48846
+ });
48847
+ var useDragAndDropUploadContext = () => (0, import_react216.useContext)(DragAndDropUploadContext);
48848
+ var useRegisterDropHandlers = ({ uploadNewFiles }) => {
48849
+ const { subscribeToDrop } = useDragAndDropUploadContext();
48850
+ (0, import_react216.useEffect)(() => {
48851
+ const unsubscribe = subscribeToDrop?.(uploadNewFiles);
48852
+ return unsubscribe;
48853
+ }, [subscribeToDrop, uploadNewFiles]);
48854
+ };
48855
+ var WithDragAndDropUpload = ({
48856
+ children,
48857
+ className,
48858
+ component: Component2 = "div",
48859
+ style
48860
+ }) => {
48861
+ const dropHandlersRef = (0, import_react216.useRef)(/* @__PURE__ */ new Set());
48862
+ const { acceptedFiles = [], multipleUploads } = useChannelStateContext();
48863
+ const { t: t2 } = useTranslationContext();
48864
+ const messageInputContext = useMessageInputContext();
48865
+ const dragAndDropUploadContext = useDragAndDropUploadContext();
48866
+ const isWithinMessageInputContext = typeof messageInputContext.uploadNewFiles === "function";
48867
+ const accept = (0, import_react216.useMemo)(
48868
+ () => acceptedFiles.reduce((mediaTypeMap, mediaType) => {
48869
+ mediaTypeMap[mediaType] ?? (mediaTypeMap[mediaType] = []);
48870
+ return mediaTypeMap;
48871
+ }, {}),
48872
+ [acceptedFiles]
48873
+ );
48874
+ const subscribeToDrop = (0, import_react216.useCallback)((fn) => {
48875
+ dropHandlersRef.current.add(fn);
48876
+ return () => {
48877
+ dropHandlersRef.current.delete(fn);
48878
+ };
48879
+ }, []);
48880
+ const handleDrop = (0, import_react216.useCallback)((files) => {
48881
+ dropHandlersRef.current.forEach((fn) => fn(files));
48882
+ }, []);
48883
+ const { getRootProps, isDragActive, isDragReject } = (0, import_react_dropzone2.useDropzone)({
48884
+ accept,
48885
+ // apply `disabled` rules if available, otherwise allow anything and
48886
+ // let the `uploadNewFiles` handle the limitations internally
48887
+ disabled: isWithinMessageInputContext ? !messageInputContext.isUploadEnabled || messageInputContext.maxFilesLeft === 0 : false,
48888
+ multiple: multipleUploads,
48889
+ noClick: true,
48890
+ onDrop: isWithinMessageInputContext ? messageInputContext.uploadNewFiles : handleDrop
48891
+ });
48892
+ if (dragAndDropUploadContext.subscribeToDrop !== null) {
48893
+ return /* @__PURE__ */ import_react216.default.createElement(Component2, { className }, children);
48894
+ }
48895
+ return /* @__PURE__ */ import_react216.default.createElement(
48896
+ DragAndDropUploadContext.Provider,
48897
+ {
48898
+ value: {
48899
+ subscribeToDrop
48900
+ }
48901
+ },
48902
+ /* @__PURE__ */ import_react216.default.createElement(Component2, { ...getRootProps({ className, style }) }, isDragActive && /* @__PURE__ */ import_react216.default.createElement(
48903
+ "div",
48904
+ {
48905
+ className: (0, import_clsx55.default)("str-chat__dropzone-container", {
48906
+ "str-chat__dropzone-container--not-accepted": isDragReject
48907
+ })
48908
+ },
48909
+ !isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Drag your files here")),
48910
+ isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Some of the files will not be accepted"))
48911
+ ), children)
48912
+ );
48913
+ };
48914
+
48844
48915
  // src/components/MessageInput/MessageInputFlat.tsx
48845
48916
  var MessageInputFlat = () => {
48846
- const { t: t2 } = useTranslationContext("MessageInputFlat");
48847
48917
  const {
48848
48918
  asyncMessagesMultiSendEnabled,
48849
48919
  attachments,
@@ -48853,14 +48923,12 @@ var MessageInputFlat = () => {
48853
48923
  hideSendButton,
48854
48924
  isUploadEnabled,
48855
48925
  linkPreviews,
48856
- maxFilesLeft,
48857
48926
  message,
48858
48927
  numberOfUploads,
48859
48928
  parent,
48860
48929
  recordingController,
48861
48930
  setCooldownRemaining,
48862
- text: text8,
48863
- uploadNewFiles
48931
+ text: text8
48864
48932
  } = useMessageInputContext("MessageInputFlat");
48865
48933
  const {
48866
48934
  AttachmentPreviewList: AttachmentPreviewList2 = AttachmentPreviewList,
@@ -48875,41 +48943,23 @@ var MessageInputFlat = () => {
48875
48943
  StartRecordingAudioButton: StartRecordingAudioButton2 = StartRecordingAudioButton,
48876
48944
  StopAIGenerationButton: StopAIGenerationButtonOverride
48877
48945
  } = useComponentContext("MessageInputFlat");
48878
- const {
48879
- acceptedFiles = [],
48880
- multipleUploads,
48881
- quotedMessage
48882
- } = useChannelStateContext("MessageInputFlat");
48946
+ const { quotedMessage } = useChannelStateContext("MessageInputFlat");
48883
48947
  const { setQuotedMessage } = useChannelActionContext("MessageInputFlat");
48884
48948
  const { channel } = useChatContext("MessageInputFlat");
48885
48949
  const { aiState } = useAIState(channel);
48886
- const stopGenerating = (0, import_react216.useCallback)(() => channel?.stopAIResponse(), [channel]);
48950
+ const stopGenerating = (0, import_react217.useCallback)(() => channel?.stopAIResponse(), [channel]);
48887
48951
  const [
48888
48952
  showRecordingPermissionDeniedNotification,
48889
48953
  setShowRecordingPermissionDeniedNotification
48890
- ] = (0, import_react216.useState)(false);
48891
- const closePermissionDeniedNotification = (0, import_react216.useCallback)(() => {
48954
+ ] = (0, import_react217.useState)(false);
48955
+ const closePermissionDeniedNotification = (0, import_react217.useCallback)(() => {
48892
48956
  setShowRecordingPermissionDeniedNotification(false);
48893
48957
  }, []);
48894
- const failedUploadsCount = (0, import_react216.useMemo)(
48958
+ const failedUploadsCount = (0, import_react217.useMemo)(
48895
48959
  () => attachments.filter((a2) => a2.localMetadata?.uploadState === "failed").length,
48896
48960
  [attachments]
48897
48961
  );
48898
- const accept = (0, import_react216.useMemo)(
48899
- () => acceptedFiles.reduce((mediaTypeMap, mediaType) => {
48900
- mediaTypeMap[mediaType] ?? (mediaTypeMap[mediaType] = []);
48901
- return mediaTypeMap;
48902
- }, {}),
48903
- [acceptedFiles]
48904
- );
48905
- const { getRootProps, isDragActive, isDragReject } = (0, import_react_dropzone2.useDropzone)({
48906
- accept,
48907
- disabled: !isUploadEnabled || maxFilesLeft === 0,
48908
- multiple: multipleUploads,
48909
- noClick: true,
48910
- onDrop: uploadNewFiles
48911
- });
48912
- (0, import_react216.useEffect)(() => {
48962
+ (0, import_react217.useEffect)(() => {
48913
48963
  const handleQuotedMessageUpdate = (e2) => {
48914
48964
  if (e2.message?.id !== quotedMessage?.id) return;
48915
48965
  if (e2.type === "message.deleted") {
@@ -48925,40 +48975,31 @@ var MessageInputFlat = () => {
48925
48975
  channel?.off("message.updated", handleQuotedMessageUpdate);
48926
48976
  };
48927
48977
  }, [channel, quotedMessage]);
48928
- if (recordingController.recordingState) return /* @__PURE__ */ import_react216.default.createElement(AudioRecorder2, null);
48978
+ if (recordingController.recordingState) return /* @__PURE__ */ import_react217.default.createElement(AudioRecorder2, null);
48929
48979
  const displayQuotedMessage = !message && quotedMessage && quotedMessage.parent_id === parent?.id;
48930
48980
  const recordingEnabled = !!(recordingController.recorder && navigator.mediaDevices);
48931
48981
  const isRecording = !!recordingController.recordingState;
48932
48982
  const StopAIGenerationButton2 = StopAIGenerationButtonOverride === void 0 ? StopAIGenerationButton : StopAIGenerationButtonOverride;
48933
48983
  const shouldDisplayStopAIGeneration = [AIStates.Thinking, AIStates.Generating].includes(aiState) && !!StopAIGenerationButton2;
48934
- return /* @__PURE__ */ import_react216.default.createElement(import_react216.default.Fragment, null, /* @__PURE__ */ import_react216.default.createElement("div", { ...getRootProps({ className: "str-chat__message-input" }) }, recordingEnabled && recordingController.permissionState === "denied" && showRecordingPermissionDeniedNotification && /* @__PURE__ */ import_react216.default.createElement(
48984
+ return /* @__PURE__ */ import_react217.default.createElement(WithDragAndDropUpload, { className: "str-chat__message-input", component: "div" }, recordingEnabled && recordingController.permissionState === "denied" && showRecordingPermissionDeniedNotification && /* @__PURE__ */ import_react217.default.createElement(
48935
48985
  RecordingPermissionDeniedNotification2,
48936
48986
  {
48937
48987
  onClose: closePermissionDeniedNotification,
48938
48988
  permissionName: "microphone" /* MIC */
48939
48989
  }
48940
- ), findAndEnqueueURLsToEnrich && /* @__PURE__ */ import_react216.default.createElement(LinkPreviewList2, { linkPreviews: Array.from(linkPreviews.values()) }), isDragActive && /* @__PURE__ */ import_react216.default.createElement(
48941
- "div",
48942
- {
48943
- className: (0, import_clsx55.default)("str-chat__dropzone-container", {
48944
- "str-chat__dropzone-container--not-accepted": isDragReject
48945
- })
48946
- },
48947
- !isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Drag your files here")),
48948
- isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Some of the files will not be accepted"))
48949
- ), displayQuotedMessage && /* @__PURE__ */ import_react216.default.createElement(QuotedMessagePreviewHeader, null), /* @__PURE__ */ import_react216.default.createElement("div", { className: "str-chat__message-input-inner" }, /* @__PURE__ */ import_react216.default.createElement(AttachmentSelector2, null), /* @__PURE__ */ import_react216.default.createElement("div", { className: "str-chat__message-textarea-container" }, displayQuotedMessage && /* @__PURE__ */ import_react216.default.createElement(QuotedMessagePreview2, { quotedMessage }), isUploadEnabled && !!(numberOfUploads + failedUploadsCount || attachments.length > 0) && /* @__PURE__ */ import_react216.default.createElement(AttachmentPreviewList2, null), /* @__PURE__ */ import_react216.default.createElement("div", { className: "str-chat__message-textarea-with-emoji-picker" }, /* @__PURE__ */ import_react216.default.createElement(ChatAutoComplete, null), EmojiPicker && /* @__PURE__ */ import_react216.default.createElement(EmojiPicker, null))), shouldDisplayStopAIGeneration ? /* @__PURE__ */ import_react216.default.createElement(StopAIGenerationButton2, { onClick: stopGenerating }) : !hideSendButton && /* @__PURE__ */ import_react216.default.createElement(import_react216.default.Fragment, null, cooldownRemaining ? /* @__PURE__ */ import_react216.default.createElement(
48990
+ ), findAndEnqueueURLsToEnrich && /* @__PURE__ */ import_react217.default.createElement(LinkPreviewList2, { linkPreviews: Array.from(linkPreviews.values()) }), displayQuotedMessage && /* @__PURE__ */ import_react217.default.createElement(QuotedMessagePreviewHeader, null), /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__message-input-inner" }, /* @__PURE__ */ import_react217.default.createElement(AttachmentSelector2, null), /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__message-textarea-container" }, displayQuotedMessage && /* @__PURE__ */ import_react217.default.createElement(QuotedMessagePreview2, { quotedMessage }), isUploadEnabled && !!(numberOfUploads + failedUploadsCount || attachments.length > 0) && /* @__PURE__ */ import_react217.default.createElement(AttachmentPreviewList2, null), /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__message-textarea-with-emoji-picker" }, /* @__PURE__ */ import_react217.default.createElement(ChatAutoComplete, null), EmojiPicker && /* @__PURE__ */ import_react217.default.createElement(EmojiPicker, null))), shouldDisplayStopAIGeneration ? /* @__PURE__ */ import_react217.default.createElement(StopAIGenerationButton2, { onClick: stopGenerating }) : !hideSendButton && /* @__PURE__ */ import_react217.default.createElement(import_react217.default.Fragment, null, cooldownRemaining ? /* @__PURE__ */ import_react217.default.createElement(
48950
48991
  CooldownTimer2,
48951
48992
  {
48952
48993
  cooldownInterval: cooldownRemaining,
48953
48994
  setCooldownRemaining
48954
48995
  }
48955
- ) : /* @__PURE__ */ import_react216.default.createElement(import_react216.default.Fragment, null, /* @__PURE__ */ import_react216.default.createElement(
48996
+ ) : /* @__PURE__ */ import_react217.default.createElement(import_react217.default.Fragment, null, /* @__PURE__ */ import_react217.default.createElement(
48956
48997
  SendButton2,
48957
48998
  {
48958
48999
  disabled: !numberOfUploads && !text8.length && attachments.length - failedUploadsCount === 0,
48959
49000
  sendMessage: handleSubmit
48960
49001
  }
48961
- ), recordingEnabled && /* @__PURE__ */ import_react216.default.createElement(
49002
+ ), recordingEnabled && /* @__PURE__ */ import_react217.default.createElement(
48962
49003
  StartRecordingAudioButton2,
48963
49004
  {
48964
49005
  disabled: isRecording || !asyncMessagesMultiSendEnabled && attachments.some(
@@ -48969,29 +49010,29 @@ var MessageInputFlat = () => {
48969
49010
  setShowRecordingPermissionDeniedNotification(true);
48970
49011
  }
48971
49012
  }
48972
- ))))));
49013
+ )))));
48973
49014
  };
48974
49015
 
48975
49016
  // src/components/MessageInput/EditMessageForm.tsx
48976
49017
  var EditMessageForm = () => {
48977
49018
  const { t: t2 } = useTranslationContext("EditMessageForm");
48978
49019
  const { clearEditingState, handleSubmit } = useMessageInputContext("EditMessageForm");
48979
- (0, import_react217.useEffect)(() => {
49020
+ (0, import_react218.useEffect)(() => {
48980
49021
  const onKeyDown = (event) => {
48981
49022
  if (event.key === "Escape") clearEditingState?.();
48982
49023
  };
48983
49024
  document.addEventListener("keydown", onKeyDown);
48984
49025
  return () => document.removeEventListener("keydown", onKeyDown);
48985
49026
  }, [clearEditingState]);
48986
- return /* @__PURE__ */ import_react217.default.createElement(
49027
+ return /* @__PURE__ */ import_react218.default.createElement(
48987
49028
  "form",
48988
49029
  {
48989
49030
  autoComplete: "off",
48990
49031
  className: "str-chat__edit-message-form",
48991
49032
  onSubmit: handleSubmit
48992
49033
  },
48993
- /* @__PURE__ */ import_react217.default.createElement(MessageInputFlat, null),
48994
- /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__edit-message-form-options" }, /* @__PURE__ */ import_react217.default.createElement(
49034
+ /* @__PURE__ */ import_react218.default.createElement(MessageInputFlat, null),
49035
+ /* @__PURE__ */ import_react218.default.createElement("div", { className: "str-chat__edit-message-form-options" }, /* @__PURE__ */ import_react218.default.createElement(
48995
49036
  "button",
48996
49037
  {
48997
49038
  className: "str-chat__edit-message-cancel",
@@ -48999,7 +49040,7 @@ var EditMessageForm = () => {
48999
49040
  onClick: clearEditingState
49000
49041
  },
49001
49042
  t2("Cancel")
49002
- ), /* @__PURE__ */ import_react217.default.createElement(
49043
+ ), /* @__PURE__ */ import_react218.default.createElement(
49003
49044
  "button",
49004
49045
  {
49005
49046
  className: "str-chat__edit-message-send",
@@ -49012,7 +49053,7 @@ var EditMessageForm = () => {
49012
49053
  };
49013
49054
 
49014
49055
  // src/components/MessageInput/MessageInput.tsx
49015
- var import_react218 = __toESM(require("react"));
49056
+ var import_react219 = __toESM(require("react"));
49016
49057
  var MessageInputProvider = (props) => {
49017
49058
  const cooldownTimerState = useCooldownTimer();
49018
49059
  const messageInputState = useMessageInputState(props);
@@ -49023,7 +49064,8 @@ var MessageInputProvider = (props) => {
49023
49064
  ...props,
49024
49065
  emojiSearchIndex: props.emojiSearchIndex ?? emojiSearchIndex
49025
49066
  });
49026
- return /* @__PURE__ */ import_react218.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
49067
+ useRegisterDropHandlers(messageInputContextValue);
49068
+ return /* @__PURE__ */ import_react219.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
49027
49069
  };
49028
49070
  var UnMemoizedMessageInput = (props) => {
49029
49071
  const { Input: PropInput } = props;
@@ -49032,35 +49074,35 @@ var UnMemoizedMessageInput = (props) => {
49032
49074
  const Input3 = PropInput || ContextInput || MessageInputFlat;
49033
49075
  const dialogManagerId = props.isThreadInput ? "message-input-dialog-manager-thread" : "message-input-dialog-manager";
49034
49076
  if (dragAndDropWindow)
49035
- return /* @__PURE__ */ import_react218.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react218.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react218.default.createElement(Input3, null)));
49036
- return /* @__PURE__ */ import_react218.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react218.default.createElement(MessageInputProvider, { ...props }, /* @__PURE__ */ import_react218.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react218.default.createElement(Input3, null))));
49077
+ return /* @__PURE__ */ import_react219.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react219.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react219.default.createElement(Input3, null)));
49078
+ return /* @__PURE__ */ import_react219.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react219.default.createElement(MessageInputProvider, { ...props }, /* @__PURE__ */ import_react219.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react219.default.createElement(Input3, null))));
49037
49079
  };
49038
- var MessageInput = import_react218.default.memo(
49080
+ var MessageInput = import_react219.default.memo(
49039
49081
  UnMemoizedMessageInput
49040
49082
  );
49041
49083
 
49042
49084
  // src/components/Reactions/ReactionsList.tsx
49043
- var import_react222 = __toESM(require("react"));
49085
+ var import_react223 = __toESM(require("react"));
49044
49086
  var import_clsx57 = __toESM(require("clsx"));
49045
49087
 
49046
49088
  // src/components/Reactions/ReactionsListModal.tsx
49047
- var import_react220 = __toESM(require("react"));
49089
+ var import_react221 = __toESM(require("react"));
49048
49090
  var import_clsx56 = __toESM(require("clsx"));
49049
49091
 
49050
49092
  // src/components/Reactions/hooks/useFetchReactions.ts
49051
- var import_react219 = require("react");
49093
+ var import_react220 = require("react");
49052
49094
  function useFetchReactions(options) {
49053
49095
  const { handleFetchReactions: contextHandleFetchReactions } = useMessageContext("useFetchReactions");
49054
- const [reactions, setReactions] = (0, import_react219.useState)([]);
49096
+ const [reactions, setReactions] = (0, import_react220.useState)([]);
49055
49097
  const {
49056
49098
  handleFetchReactions: propHandleFetchReactions,
49057
49099
  reactionType,
49058
49100
  shouldFetch,
49059
49101
  sort
49060
49102
  } = options;
49061
- const [isLoading, setIsLoading] = (0, import_react219.useState)(shouldFetch);
49103
+ const [isLoading, setIsLoading] = (0, import_react220.useState)(shouldFetch);
49062
49104
  const handleFetchReactions = propHandleFetchReactions ?? contextHandleFetchReactions;
49063
- (0, import_react219.useEffect)(() => {
49105
+ (0, import_react220.useEffect)(() => {
49064
49106
  if (!shouldFetch) {
49065
49107
  return;
49066
49108
  }
@@ -49116,24 +49158,24 @@ function ReactionsListModal({
49116
49158
  shouldFetch: modalProps.open,
49117
49159
  sort: reactionDetailsSort
49118
49160
  });
49119
- const reactionDetailsWithLegacyFallback = (0, import_react220.useMemo)(
49161
+ const reactionDetailsWithLegacyFallback = (0, import_react221.useMemo)(
49120
49162
  () => legacySortReactionDetails ? [...reactionDetails].sort(legacySortReactionDetails) : reactionDetails,
49121
49163
  [legacySortReactionDetails, reactionDetails]
49122
49164
  );
49123
- return /* @__PURE__ */ import_react220.default.createElement(
49165
+ return /* @__PURE__ */ import_react221.default.createElement(
49124
49166
  Modal,
49125
49167
  {
49126
49168
  ...modalProps,
49127
49169
  className: (0, import_clsx56.default)("str-chat__message-reactions-details-modal", modalProps.className)
49128
49170
  },
49129
- /* @__PURE__ */ import_react220.default.createElement(
49171
+ /* @__PURE__ */ import_react221.default.createElement(
49130
49172
  "div",
49131
49173
  {
49132
49174
  className: "str-chat__message-reactions-details",
49133
49175
  "data-testid": "reactions-list-modal"
49134
49176
  },
49135
- /* @__PURE__ */ import_react220.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
49136
- ({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react220.default.createElement(
49177
+ /* @__PURE__ */ import_react221.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
49178
+ ({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react221.default.createElement(
49137
49179
  "div",
49138
49180
  {
49139
49181
  className: (0, import_clsx56.default)("str-chat__message-reactions-details-reaction-type", {
@@ -49145,25 +49187,25 @@ function ReactionsListModal({
49145
49187
  reactionType
49146
49188
  )
49147
49189
  },
49148
- /* @__PURE__ */ import_react220.default.createElement("span", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback" }, /* @__PURE__ */ import_react220.default.createElement(EmojiComponent, null)),
49190
+ /* @__PURE__ */ import_react221.default.createElement("span", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback" }, /* @__PURE__ */ import_react221.default.createElement(EmojiComponent, null)),
49149
49191
  "\xA0",
49150
- /* @__PURE__ */ import_react220.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
49192
+ /* @__PURE__ */ import_react221.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
49151
49193
  )
49152
49194
  )),
49153
- SelectedEmojiComponent && /* @__PURE__ */ import_react220.default.createElement("div", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big" }, /* @__PURE__ */ import_react220.default.createElement(SelectedEmojiComponent, null)),
49154
- /* @__PURE__ */ import_react220.default.createElement(
49195
+ SelectedEmojiComponent && /* @__PURE__ */ import_react221.default.createElement("div", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big" }, /* @__PURE__ */ import_react221.default.createElement(SelectedEmojiComponent, null)),
49196
+ /* @__PURE__ */ import_react221.default.createElement(
49155
49197
  "div",
49156
49198
  {
49157
49199
  className: "str-chat__message-reactions-details-reacting-users",
49158
49200
  "data-testid": "all-reacting-users"
49159
49201
  },
49160
- areReactionsLoading ? /* @__PURE__ */ import_react220.default.createElement(LoadingIndicator, null) : reactionDetailsWithLegacyFallback.map(({ user }) => /* @__PURE__ */ import_react220.default.createElement(
49202
+ areReactionsLoading ? /* @__PURE__ */ import_react221.default.createElement(LoadingIndicator, null) : reactionDetailsWithLegacyFallback.map(({ user }) => /* @__PURE__ */ import_react221.default.createElement(
49161
49203
  "div",
49162
49204
  {
49163
49205
  className: "str-chat__message-reactions-details-reacting-user",
49164
49206
  key: user?.id
49165
49207
  },
49166
- /* @__PURE__ */ import_react220.default.createElement(
49208
+ /* @__PURE__ */ import_react221.default.createElement(
49167
49209
  Avatar,
49168
49210
  {
49169
49211
  className: "stream-chat__avatar--reaction",
@@ -49172,7 +49214,7 @@ function ReactionsListModal({
49172
49214
  name: user?.name || user?.id
49173
49215
  }
49174
49216
  ),
49175
- /* @__PURE__ */ import_react220.default.createElement(
49217
+ /* @__PURE__ */ import_react221.default.createElement(
49176
49218
  "span",
49177
49219
  {
49178
49220
  className: "str-chat__user-item--name",
@@ -49187,7 +49229,7 @@ function ReactionsListModal({
49187
49229
  }
49188
49230
 
49189
49231
  // src/components/Reactions/hooks/useProcessReactions.tsx
49190
- var import_react221 = require("react");
49232
+ var import_react222 = require("react");
49191
49233
  var defaultReactionsSort = (a2, b) => {
49192
49234
  if (a2.firstReactionAt && b.firstReactionAt) {
49193
49235
  return +a2.firstReactionAt - +b.firstReactionAt;
@@ -49209,19 +49251,19 @@ var useProcessReactions = (params) => {
49209
49251
  const latestReactions = propReactions || message.latest_reactions;
49210
49252
  const ownReactions = propOwnReactions || message?.own_reactions;
49211
49253
  const reactionGroups = propReactionGroups || message?.reaction_groups;
49212
- const isOwnReaction = (0, import_react221.useCallback)(
49254
+ const isOwnReaction = (0, import_react222.useCallback)(
49213
49255
  (reactionType) => ownReactions?.some((reaction) => reaction.type === reactionType) ?? false,
49214
49256
  [ownReactions]
49215
49257
  );
49216
- const getEmojiByReactionType = (0, import_react221.useCallback)(
49258
+ const getEmojiByReactionType = (0, import_react222.useCallback)(
49217
49259
  (reactionType) => reactionOptions.find(({ type }) => type === reactionType)?.Component ?? null,
49218
49260
  [reactionOptions]
49219
49261
  );
49220
- const isSupportedReaction = (0, import_react221.useCallback)(
49262
+ const isSupportedReaction = (0, import_react222.useCallback)(
49221
49263
  (reactionType) => reactionOptions.some((reactionOption) => reactionOption.type === reactionType),
49222
49264
  [reactionOptions]
49223
49265
  );
49224
- const getLatestReactedUserNames = (0, import_react221.useCallback)(
49266
+ const getLatestReactedUserNames = (0, import_react222.useCallback)(
49225
49267
  (reactionType) => latestReactions?.flatMap((reaction) => {
49226
49268
  if (reactionType && reactionType === reaction.type) {
49227
49269
  const username = reaction.user?.name || reaction.user?.id;
@@ -49231,7 +49273,7 @@ var useProcessReactions = (params) => {
49231
49273
  }) ?? [],
49232
49274
  [latestReactions]
49233
49275
  );
49234
- const existingReactions = (0, import_react221.useMemo)(() => {
49276
+ const existingReactions = (0, import_react222.useMemo)(() => {
49235
49277
  if (!reactionGroups) {
49236
49278
  return [];
49237
49279
  }
@@ -49265,7 +49307,7 @@ var useProcessReactions = (params) => {
49265
49307
  sortReactions
49266
49308
  ]);
49267
49309
  const hasReactions = existingReactions.length > 0;
49268
- const totalReactionCount = (0, import_react221.useMemo)(
49310
+ const totalReactionCount = (0, import_react222.useMemo)(
49269
49311
  () => existingReactions.reduce((total, { reactionCount }) => total + reactionCount, 0),
49270
49312
  [existingReactions]
49271
49313
  );
@@ -49287,7 +49329,7 @@ var UnMemoizedReactionsList = (props) => {
49287
49329
  ...rest
49288
49330
  } = props;
49289
49331
  const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
49290
- const [selectedReactionType, setSelectedReactionType] = (0, import_react222.useState)(null);
49332
+ const [selectedReactionType, setSelectedReactionType] = (0, import_react223.useState)(null);
49291
49333
  const { t: t2 } = useTranslationContext("ReactionsList");
49292
49334
  const { ReactionsListModal: ReactionsListModal2 = ReactionsListModal } = useComponentContext();
49293
49335
  const handleReactionButtonClick = (reactionType) => {
@@ -49297,7 +49339,7 @@ var UnMemoizedReactionsList = (props) => {
49297
49339
  setSelectedReactionType(reactionType);
49298
49340
  };
49299
49341
  if (!hasReactions) return null;
49300
- return /* @__PURE__ */ import_react222.default.createElement(import_react222.default.Fragment, null, /* @__PURE__ */ import_react222.default.createElement(
49342
+ return /* @__PURE__ */ import_react223.default.createElement(import_react223.default.Fragment, null, /* @__PURE__ */ import_react223.default.createElement(
49301
49343
  "div",
49302
49344
  {
49303
49345
  "aria-label": t2("aria/Reaction list"),
@@ -49308,8 +49350,8 @@ var UnMemoizedReactionsList = (props) => {
49308
49350
  "data-testid": "reaction-list",
49309
49351
  role: "figure"
49310
49352
  },
49311
- /* @__PURE__ */ import_react222.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
49312
- ({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react222.default.createElement(
49353
+ /* @__PURE__ */ import_react223.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
49354
+ ({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react223.default.createElement(
49313
49355
  "li",
49314
49356
  {
49315
49357
  className: (0, import_clsx57.default)("str-chat__message-reaction", {
@@ -49317,7 +49359,7 @@ var UnMemoizedReactionsList = (props) => {
49317
49359
  }),
49318
49360
  key: reactionType
49319
49361
  },
49320
- /* @__PURE__ */ import_react222.default.createElement(
49362
+ /* @__PURE__ */ import_react223.default.createElement(
49321
49363
  "button",
49322
49364
  {
49323
49365
  "aria-label": `Reactions: ${reactionType}`,
@@ -49325,9 +49367,9 @@ var UnMemoizedReactionsList = (props) => {
49325
49367
  onClick: () => handleReactionButtonClick(reactionType),
49326
49368
  type: "button"
49327
49369
  },
49328
- /* @__PURE__ */ import_react222.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react222.default.createElement(EmojiComponent, null)),
49370
+ /* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react223.default.createElement(EmojiComponent, null)),
49329
49371
  "\xA0",
49330
- /* @__PURE__ */ import_react222.default.createElement(
49372
+ /* @__PURE__ */ import_react223.default.createElement(
49331
49373
  "span",
49332
49374
  {
49333
49375
  className: "str-chat__message-reaction-count",
@@ -49337,8 +49379,8 @@ var UnMemoizedReactionsList = (props) => {
49337
49379
  )
49338
49380
  )
49339
49381
  )
49340
- ), /* @__PURE__ */ import_react222.default.createElement("li", null, /* @__PURE__ */ import_react222.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
49341
- ), selectedReactionType !== null && /* @__PURE__ */ import_react222.default.createElement(
49382
+ ), /* @__PURE__ */ import_react223.default.createElement("li", null, /* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
49383
+ ), selectedReactionType !== null && /* @__PURE__ */ import_react223.default.createElement(
49342
49384
  ReactionsListModal2,
49343
49385
  {
49344
49386
  handleFetchReactions,
@@ -49351,12 +49393,12 @@ var UnMemoizedReactionsList = (props) => {
49351
49393
  }
49352
49394
  ));
49353
49395
  };
49354
- var ReactionsList = import_react222.default.memo(
49396
+ var ReactionsList = import_react223.default.memo(
49355
49397
  UnMemoizedReactionsList
49356
49398
  );
49357
49399
 
49358
49400
  // src/components/Reactions/SimpleReactionsList.tsx
49359
- var import_react223 = __toESM(require("react"));
49401
+ var import_react224 = __toESM(require("react"));
49360
49402
  var import_clsx58 = __toESM(require("clsx"));
49361
49403
  var WithTooltip = ({
49362
49404
  children,
@@ -49364,12 +49406,12 @@ var WithTooltip = ({
49364
49406
  onMouseLeave,
49365
49407
  title
49366
49408
  }) => {
49367
- const [referenceElement, setReferenceElement] = (0, import_react223.useState)(null);
49409
+ const [referenceElement, setReferenceElement] = (0, import_react224.useState)(null);
49368
49410
  const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers({
49369
49411
  onMouseEnter,
49370
49412
  onMouseLeave
49371
49413
  });
49372
- return /* @__PURE__ */ import_react223.default.createElement(import_react223.default.Fragment, null, /* @__PURE__ */ import_react223.default.createElement(PopperTooltip, { referenceElement, visible: tooltipVisible }, title), /* @__PURE__ */ import_react223.default.createElement(
49414
+ return /* @__PURE__ */ import_react224.default.createElement(import_react224.default.Fragment, null, /* @__PURE__ */ import_react224.default.createElement(PopperTooltip, { referenceElement, visible: tooltipVisible }, title), /* @__PURE__ */ import_react224.default.createElement(
49373
49415
  "span",
49374
49416
  {
49375
49417
  onMouseEnter: handleEnter,
@@ -49385,7 +49427,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
49385
49427
  const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
49386
49428
  const handleReaction = propHandleReaction || contextHandleReaction;
49387
49429
  if (!hasReactions) return null;
49388
- return /* @__PURE__ */ import_react223.default.createElement("div", { className: "str-chat__message-reactions-container" }, /* @__PURE__ */ import_react223.default.createElement(
49430
+ return /* @__PURE__ */ import_react224.default.createElement("div", { className: "str-chat__message-reactions-container" }, /* @__PURE__ */ import_react224.default.createElement(
49389
49431
  "ul",
49390
49432
  {
49391
49433
  className: "str-chat__simple-reactions-list str-chat__message-reactions",
@@ -49394,7 +49436,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
49394
49436
  existingReactions.map(
49395
49437
  ({ EmojiComponent, isOwnReaction, latestReactedUserNames, reactionType }) => {
49396
49438
  const tooltipContent = latestReactedUserNames.join(", ");
49397
- return EmojiComponent && /* @__PURE__ */ import_react223.default.createElement(
49439
+ return EmojiComponent && /* @__PURE__ */ import_react224.default.createElement(
49398
49440
  "li",
49399
49441
  {
49400
49442
  className: (0, import_clsx58.default)("str-chat__simple-reactions-list-item", {
@@ -49404,19 +49446,19 @@ var UnMemoizedSimpleReactionsList = (props) => {
49404
49446
  onClick: (event) => handleReaction(reactionType, event),
49405
49447
  onKeyUp: (event) => handleReaction(reactionType, event)
49406
49448
  },
49407
- /* @__PURE__ */ import_react223.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react223.default.createElement(EmojiComponent, null))
49449
+ /* @__PURE__ */ import_react224.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react224.default.createElement(EmojiComponent, null))
49408
49450
  );
49409
49451
  }
49410
49452
  ),
49411
- /* @__PURE__ */ import_react223.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
49453
+ /* @__PURE__ */ import_react224.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
49412
49454
  ));
49413
49455
  };
49414
- var SimpleReactionsList = import_react223.default.memo(
49456
+ var SimpleReactionsList = import_react224.default.memo(
49415
49457
  UnMemoizedSimpleReactionsList
49416
49458
  );
49417
49459
 
49418
49460
  // src/components/Message/MessageEditedTimestamp.tsx
49419
- var import_react224 = __toESM(require("react"));
49461
+ var import_react225 = __toESM(require("react"));
49420
49462
  var import_clsx59 = __toESM(require("clsx"));
49421
49463
  function MessageEditedTimestamp({
49422
49464
  message: propMessage,
@@ -49432,7 +49474,7 @@ function MessageEditedTimestamp({
49432
49474
  if (!isMessageEdited(message)) {
49433
49475
  return null;
49434
49476
  }
49435
- return /* @__PURE__ */ import_react224.default.createElement(
49477
+ return /* @__PURE__ */ import_react225.default.createElement(
49436
49478
  "div",
49437
49479
  {
49438
49480
  className: (0, import_clsx59.default)(
@@ -49443,7 +49485,7 @@ function MessageEditedTimestamp({
49443
49485
  },
49444
49486
  t2("Edited"),
49445
49487
  " ",
49446
- /* @__PURE__ */ import_react224.default.createElement(Timestamp2, { timestamp: message.message_text_updated_at, ...timestampProps })
49488
+ /* @__PURE__ */ import_react225.default.createElement(Timestamp2, { timestamp: message.message_text_updated_at, ...timestampProps })
49447
49489
  );
49448
49490
  }
49449
49491
 
@@ -49470,8 +49512,8 @@ var MessageSimpleWithContext = (props) => {
49470
49512
  } = props;
49471
49513
  const { client } = useChatContext("MessageSimple");
49472
49514
  const { t: t2 } = useTranslationContext("MessageSimple");
49473
- const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react225.useState)(false);
49474
- const [isEditedTimestampOpen, setEditedTimestampOpen] = (0, import_react225.useState)(false);
49515
+ const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react226.useState)(false);
49516
+ const [isEditedTimestampOpen, setEditedTimestampOpen] = (0, import_react226.useState)(false);
49475
49517
  const {
49476
49518
  Attachment: Attachment2 = Attachment,
49477
49519
  Avatar: Avatar2 = Avatar,
@@ -49492,7 +49534,7 @@ var MessageSimpleWithContext = (props) => {
49492
49534
  } = useComponentContext("MessageSimple");
49493
49535
  const hasAttachment = messageHasAttachments(message);
49494
49536
  const hasReactions = messageHasReactions(message);
49495
- const isAIGenerated = (0, import_react225.useMemo)(
49537
+ const isAIGenerated = (0, import_react226.useMemo)(
49496
49538
  () => isMessageAIGenerated?.(message),
49497
49539
  [isMessageAIGenerated, message]
49498
49540
  );
@@ -49500,10 +49542,10 @@ var MessageSimpleWithContext = (props) => {
49500
49542
  return null;
49501
49543
  }
49502
49544
  if (message.deleted_at || message.type === "deleted") {
49503
- return /* @__PURE__ */ import_react225.default.createElement(MessageDeleted2, { message });
49545
+ return /* @__PURE__ */ import_react226.default.createElement(MessageDeleted2, { message });
49504
49546
  }
49505
49547
  if (isMessageBlocked(message)) {
49506
- return /* @__PURE__ */ import_react225.default.createElement(MessageBlocked2, null);
49548
+ return /* @__PURE__ */ import_react226.default.createElement(MessageBlocked2, null);
49507
49549
  }
49508
49550
  const showMetadata = !groupedByUser || endOfGroup;
49509
49551
  const showReplyCountButton = !threadList && !!message.reply_count;
@@ -49537,14 +49579,14 @@ var MessageSimpleWithContext = (props) => {
49537
49579
  }
49538
49580
  );
49539
49581
  const poll = message.poll_id && client.polls.fromState(message.poll_id);
49540
- return /* @__PURE__ */ import_react225.default.createElement(import_react225.default.Fragment, null, editing && /* @__PURE__ */ import_react225.default.createElement(
49582
+ return /* @__PURE__ */ import_react226.default.createElement(import_react226.default.Fragment, null, editing && /* @__PURE__ */ import_react226.default.createElement(
49541
49583
  Modal,
49542
49584
  {
49543
49585
  className: "str-chat__edit-message-modal",
49544
49586
  onClose: clearEditingState,
49545
49587
  open: editing
49546
49588
  },
49547
- /* @__PURE__ */ import_react225.default.createElement(
49589
+ /* @__PURE__ */ import_react226.default.createElement(
49548
49590
  MessageInput,
49549
49591
  {
49550
49592
  clearEditingState,
@@ -49555,14 +49597,14 @@ var MessageSimpleWithContext = (props) => {
49555
49597
  ...additionalMessageInputProps
49556
49598
  }
49557
49599
  )
49558
- ), isBounceDialogOpen && /* @__PURE__ */ import_react225.default.createElement(
49600
+ ), isBounceDialogOpen && /* @__PURE__ */ import_react226.default.createElement(
49559
49601
  MessageBounceModal,
49560
49602
  {
49561
49603
  MessageBouncePrompt: MessageBouncePrompt2,
49562
49604
  onClose: () => setIsBounceDialogOpen(false),
49563
49605
  open: isBounceDialogOpen
49564
49606
  }
49565
- ), /* @__PURE__ */ import_react225.default.createElement("div", { className: rootClassName2, key: message.id }, PinIndicator2 && /* @__PURE__ */ import_react225.default.createElement(PinIndicator2, null), message.user && /* @__PURE__ */ import_react225.default.createElement(
49607
+ ), /* @__PURE__ */ import_react226.default.createElement("div", { className: rootClassName2, key: message.id }, PinIndicator2 && /* @__PURE__ */ import_react226.default.createElement(PinIndicator2, null), message.user && /* @__PURE__ */ import_react226.default.createElement(
49566
49608
  Avatar2,
49567
49609
  {
49568
49610
  image: message.user.image,
@@ -49571,7 +49613,7 @@ var MessageSimpleWithContext = (props) => {
49571
49613
  onMouseOver: onUserHover,
49572
49614
  user: message.user
49573
49615
  }
49574
- ), /* @__PURE__ */ import_react225.default.createElement(
49616
+ ), /* @__PURE__ */ import_react226.default.createElement(
49575
49617
  "div",
49576
49618
  {
49577
49619
  className: (0, import_clsx60.default)("str-chat__message-inner", {
@@ -49581,37 +49623,37 @@ var MessageSimpleWithContext = (props) => {
49581
49623
  onClick: handleClick,
49582
49624
  onKeyUp: handleClick
49583
49625
  },
49584
- /* @__PURE__ */ import_react225.default.createElement(MessageActions2, null),
49585
- /* @__PURE__ */ import_react225.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react225.default.createElement(ReactionsList2, { reverse: true })),
49586
- /* @__PURE__ */ import_react225.default.createElement("div", { className: "str-chat__message-bubble" }, poll && /* @__PURE__ */ import_react225.default.createElement(Poll, { poll }), message.attachments?.length && !message.quoted_message ? /* @__PURE__ */ import_react225.default.createElement(
49626
+ /* @__PURE__ */ import_react226.default.createElement(MessageActions2, null),
49627
+ /* @__PURE__ */ import_react226.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react226.default.createElement(ReactionsList2, { reverse: true })),
49628
+ /* @__PURE__ */ import_react226.default.createElement("div", { className: "str-chat__message-bubble" }, poll && /* @__PURE__ */ import_react226.default.createElement(Poll, { poll }), message.attachments?.length && !message.quoted_message ? /* @__PURE__ */ import_react226.default.createElement(
49587
49629
  Attachment2,
49588
49630
  {
49589
49631
  actionHandler: handleAction,
49590
49632
  attachments: message.attachments
49591
49633
  }
49592
- ) : null, isAIGenerated ? /* @__PURE__ */ import_react225.default.createElement(StreamedMessageText2, { message, renderText: renderText2 }) : /* @__PURE__ */ import_react225.default.createElement(MessageText, { message, renderText: renderText2 }), message.mml && /* @__PURE__ */ import_react225.default.createElement(
49634
+ ) : null, isAIGenerated ? /* @__PURE__ */ import_react226.default.createElement(StreamedMessageText2, { message, renderText: renderText2 }) : /* @__PURE__ */ import_react226.default.createElement(MessageText, { message, renderText: renderText2 }), message.mml && /* @__PURE__ */ import_react226.default.createElement(
49593
49635
  MML3,
49594
49636
  {
49595
49637
  actionHandler: handleAction,
49596
49638
  align: isMyMessage() ? "right" : "left",
49597
49639
  source: message.mml
49598
49640
  }
49599
- ), /* @__PURE__ */ import_react225.default.createElement(MessageErrorIcon, null))
49600
- ), showReplyCountButton && /* @__PURE__ */ import_react225.default.createElement(
49641
+ ), /* @__PURE__ */ import_react226.default.createElement(MessageErrorIcon, null))
49642
+ ), showReplyCountButton && /* @__PURE__ */ import_react226.default.createElement(
49601
49643
  MessageRepliesCountButton2,
49602
49644
  {
49603
49645
  onClick: handleOpenThread,
49604
49646
  reply_count: message.reply_count
49605
49647
  }
49606
- ), showMetadata && /* @__PURE__ */ import_react225.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react225.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react225.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react225.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react225.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t2("Edited")), isEdited && /* @__PURE__ */ import_react225.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
49648
+ ), showMetadata && /* @__PURE__ */ import_react226.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react226.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react226.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react226.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react226.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t2("Edited")), isEdited && /* @__PURE__ */ import_react226.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
49607
49649
  };
49608
- var MemoizedMessageSimple = import_react225.default.memo(
49650
+ var MemoizedMessageSimple = import_react226.default.memo(
49609
49651
  MessageSimpleWithContext,
49610
49652
  areMessageUIPropsEqual
49611
49653
  );
49612
49654
  var MessageSimple = (props) => {
49613
49655
  const messageContext = useMessageContext("MessageSimple");
49614
- return /* @__PURE__ */ import_react225.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
49656
+ return /* @__PURE__ */ import_react226.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
49615
49657
  };
49616
49658
 
49617
49659
  // src/components/Message/Message.tsx
@@ -49647,11 +49689,11 @@ var MessageWithContext = (props) => {
49647
49689
  canReply,
49648
49690
  isMyMessage
49649
49691
  } = userRoles;
49650
- const messageIsUnread = (0, import_react226.useMemo)(
49692
+ const messageIsUnread = (0, import_react227.useMemo)(
49651
49693
  () => !!(!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())),
49652
49694
  [client, isMyMessage, message.created_at, read]
49653
49695
  );
49654
- const messageActionsHandler = (0, import_react226.useCallback)(
49696
+ const messageActionsHandler = (0, import_react227.useCallback)(
49655
49697
  () => getMessageActions(messageActions, {
49656
49698
  canDelete,
49657
49699
  canEdit,
@@ -49705,9 +49747,9 @@ var MessageWithContext = (props) => {
49705
49747
  onUserHover,
49706
49748
  setEditingState: setEdit
49707
49749
  };
49708
- return /* @__PURE__ */ import_react226.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react226.default.createElement(MessageUIComponent, { groupedByUser }));
49750
+ return /* @__PURE__ */ import_react227.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react227.default.createElement(MessageUIComponent, { groupedByUser }));
49709
49751
  };
49710
- var MemoizedMessage = import_react226.default.memo(
49752
+ var MemoizedMessage = import_react227.default.memo(
49711
49753
  MessageWithContext,
49712
49754
  areMessagePropsEqual
49713
49755
  );
@@ -49774,7 +49816,7 @@ var Message = (props) => {
49774
49816
  notify: addNotification
49775
49817
  });
49776
49818
  const highlighted = highlightedMessageId === message.id;
49777
- return /* @__PURE__ */ import_react226.default.createElement(
49819
+ return /* @__PURE__ */ import_react227.default.createElement(
49778
49820
  MemoizedMessage,
49779
49821
  {
49780
49822
  additionalMessageInputProps: props.additionalMessageInputProps,
@@ -49826,15 +49868,15 @@ var Message = (props) => {
49826
49868
  // src/components/MessageList/GiphyPreviewMessage.tsx
49827
49869
  var GiphyPreviewMessage = (props) => {
49828
49870
  const { message } = props;
49829
- return /* @__PURE__ */ import_react227.default.createElement("div", { className: "giphy-preview-message" }, /* @__PURE__ */ import_react227.default.createElement(Message, { message }));
49871
+ return /* @__PURE__ */ import_react228.default.createElement("div", { className: "giphy-preview-message" }, /* @__PURE__ */ import_react228.default.createElement(Message, { message }));
49830
49872
  };
49831
49873
 
49832
49874
  // src/components/MessageList/MessageList.tsx
49833
49875
  var import_clsx62 = __toESM(require("clsx"));
49834
- var import_react246 = __toESM(require("react"));
49876
+ var import_react247 = __toESM(require("react"));
49835
49877
 
49836
49878
  // src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
49837
- var import_react228 = require("react");
49879
+ var import_react229 = require("react");
49838
49880
 
49839
49881
  // src/components/MessageList/utils.ts
49840
49882
  var import_nanoid9 = require("nanoid");
@@ -50041,7 +50083,7 @@ var useEnrichedMessages = (args) => {
50041
50083
  } = args;
50042
50084
  const { client } = useChatContext("useEnrichedMessages");
50043
50085
  const { HeaderComponent } = useComponentContext("useEnrichedMessages");
50044
- const lastRead = (0, import_react228.useMemo)(() => channel.lastRead?.(), [channel]);
50086
+ const lastRead = (0, import_react229.useMemo)(() => channel.lastRead?.(), [channel]);
50045
50087
  const enableDateSeparator = !disableDateSeparator;
50046
50088
  let messagesWithDates = !enableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator ? messages : processMessages({
50047
50089
  enableDateSeparator,
@@ -50056,7 +50098,7 @@ var useEnrichedMessages = (args) => {
50056
50098
  messagesWithDates = insertIntro(messagesWithDates, headerPosition);
50057
50099
  }
50058
50100
  const groupStylesFn = groupStyles || getGroupStyles;
50059
- const messageGroupStyles = (0, import_react228.useMemo)(
50101
+ const messageGroupStyles = (0, import_react229.useMemo)(
50060
50102
  () => messagesWithDates.reduce((acc, message, i) => {
50061
50103
  const style = groupStylesFn(
50062
50104
  message,
@@ -50075,13 +50117,13 @@ var useEnrichedMessages = (args) => {
50075
50117
  };
50076
50118
 
50077
50119
  // src/components/MessageList/hooks/MessageList/useMessageListElements.tsx
50078
- var import_react230 = require("react");
50120
+ var import_react231 = require("react");
50079
50121
 
50080
50122
  // src/components/MessageList/hooks/useLastReadData.ts
50081
- var import_react229 = require("react");
50123
+ var import_react230 = require("react");
50082
50124
  var useLastReadData = (props) => {
50083
50125
  const { messages, read, returnAllReadData, userID } = props;
50084
- return (0, import_react229.useMemo)(
50126
+ return (0, import_react230.useMemo)(
50085
50127
  () => getReadStates(
50086
50128
  messages.filter(({ user }) => user?.id === userID),
50087
50129
  read,
@@ -50113,11 +50155,11 @@ var useMessageListElements = (props) => {
50113
50155
  returnAllReadData,
50114
50156
  userID: client.userID
50115
50157
  });
50116
- const lastReceivedMessageId = (0, import_react230.useMemo)(
50158
+ const lastReceivedMessageId = (0, import_react231.useMemo)(
50117
50159
  () => getLastReceived(enrichedMessages),
50118
50160
  [enrichedMessages]
50119
50161
  );
50120
- const elements = (0, import_react230.useMemo)(
50162
+ const elements = (0, import_react231.useMemo)(
50121
50163
  () => renderMessages({
50122
50164
  channelUnreadUiState,
50123
50165
  components,
@@ -50144,7 +50186,7 @@ var useMessageListElements = (props) => {
50144
50186
  };
50145
50187
 
50146
50188
  // src/components/MessageList/hooks/MessageList/useMessageListScrollManager.ts
50147
- var import_react231 = require("react");
50189
+ var import_react232 = require("react");
50148
50190
  function useMessageListScrollManager(params) {
50149
50191
  const {
50150
50192
  loadMoreScrollThreshold,
@@ -50155,13 +50197,13 @@ function useMessageListScrollManager(params) {
50155
50197
  showNewMessages
50156
50198
  } = params;
50157
50199
  const { client } = useChatContext("useMessageListScrollManager");
50158
- const measures = (0, import_react231.useRef)({
50200
+ const measures = (0, import_react232.useRef)({
50159
50201
  offsetHeight: 0,
50160
50202
  scrollHeight: 0
50161
50203
  });
50162
- const messages = (0, import_react231.useRef)(void 0);
50163
- const scrollTop = (0, import_react231.useRef)(0);
50164
- (0, import_react231.useLayoutEffect)(() => {
50204
+ const messages = (0, import_react232.useRef)(void 0);
50205
+ const scrollTop = (0, import_react232.useRef)(0);
50206
+ (0, import_react232.useLayoutEffect)(() => {
50165
50207
  const prevMeasures = measures.current;
50166
50208
  const prevMessages = messages.current;
50167
50209
  const newMessages = params.messages;
@@ -50201,7 +50243,7 @@ function useMessageListScrollManager(params) {
50201
50243
  }
50202
50244
 
50203
50245
  // src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx
50204
- var import_react232 = require("react");
50246
+ var import_react233 = require("react");
50205
50247
  var useScrollLocationLogic = (params) => {
50206
50248
  const {
50207
50249
  hasMoreNewer,
@@ -50211,12 +50253,12 @@ var useScrollLocationLogic = (params) => {
50211
50253
  scrolledUpThreshold = 200,
50212
50254
  suppressAutoscroll
50213
50255
  } = params;
50214
- const [hasNewMessages, setHasNewMessages] = (0, import_react232.useState)(false);
50215
- const [wrapperRect, setWrapperRect] = (0, import_react232.useState)();
50216
- const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react232.useState)(true);
50217
- const closeToBottom = (0, import_react232.useRef)(false);
50218
- const closeToTop = (0, import_react232.useRef)(false);
50219
- const scrollToBottom = (0, import_react232.useCallback)(() => {
50256
+ const [hasNewMessages, setHasNewMessages] = (0, import_react233.useState)(false);
50257
+ const [wrapperRect, setWrapperRect] = (0, import_react233.useState)();
50258
+ const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react233.useState)(true);
50259
+ const closeToBottom = (0, import_react233.useRef)(false);
50260
+ const closeToTop = (0, import_react233.useRef)(false);
50261
+ const scrollToBottom = (0, import_react233.useCallback)(() => {
50220
50262
  if (!listElement?.scrollTo || hasMoreNewer || suppressAutoscroll) {
50221
50263
  return;
50222
50264
  }
@@ -50225,7 +50267,7 @@ var useScrollLocationLogic = (params) => {
50225
50267
  });
50226
50268
  setHasNewMessages(false);
50227
50269
  }, [listElement, hasMoreNewer, suppressAutoscroll]);
50228
- (0, import_react232.useLayoutEffect)(() => {
50270
+ (0, import_react233.useLayoutEffect)(() => {
50229
50271
  if (listElement) {
50230
50272
  setWrapperRect(listElement.getBoundingClientRect());
50231
50273
  scrollToBottom();
@@ -50245,7 +50287,7 @@ var useScrollLocationLogic = (params) => {
50245
50287
  scrollToBottom,
50246
50288
  showNewMessages: () => setHasNewMessages(true)
50247
50289
  });
50248
- const onScroll = (0, import_react232.useCallback)(
50290
+ const onScroll = (0, import_react233.useCallback)(
50249
50291
  (event) => {
50250
50292
  const element4 = event.target;
50251
50293
  const scrollTop = element4.scrollTop;
@@ -50276,22 +50318,22 @@ var useScrollLocationLogic = (params) => {
50276
50318
  };
50277
50319
 
50278
50320
  // src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts
50279
- var import_react235 = require("react");
50321
+ var import_react236 = require("react");
50280
50322
 
50281
50323
  // src/components/MessageList/MessageListMainPanel.tsx
50282
- var import_react233 = __toESM(require("react"));
50324
+ var import_react234 = __toESM(require("react"));
50283
50325
  var MESSAGE_LIST_MAIN_PANEL_CLASS = "str-chat__main-panel-inner str-chat__message-list-main-panel";
50284
- var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react233.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
50326
+ var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react234.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
50285
50327
 
50286
50328
  // src/components/MessageList/UnreadMessagesSeparator.tsx
50287
- var import_react234 = __toESM(require("react"));
50329
+ var import_react235 = __toESM(require("react"));
50288
50330
  var UNREAD_MESSAGE_SEPARATOR_CLASS = "str-chat__unread-messages-separator";
50289
50331
  var UnreadMessagesSeparator = ({
50290
50332
  showCount,
50291
50333
  unreadCount
50292
50334
  }) => {
50293
50335
  const { t: t2 } = useTranslationContext("UnreadMessagesSeparator");
50294
- return /* @__PURE__ */ import_react234.default.createElement(
50336
+ return /* @__PURE__ */ import_react235.default.createElement(
50295
50337
  "div",
50296
50338
  {
50297
50339
  className: UNREAD_MESSAGE_SEPARATOR_CLASS,
@@ -50317,10 +50359,10 @@ var useUnreadMessagesNotification = ({
50317
50359
  unreadCount
50318
50360
  }) => {
50319
50361
  const { messages } = useChannelStateContext("UnreadMessagesNotification");
50320
- const [show, setShow] = (0, import_react235.useState)(false);
50321
- const isScrolledAboveTargetTop = (0, import_react235.useRef)(false);
50362
+ const [show, setShow] = (0, import_react236.useState)(false);
50363
+ const isScrolledAboveTargetTop = (0, import_react236.useRef)(false);
50322
50364
  const intersectionObserverIsSupported = typeof IntersectionObserver !== "undefined";
50323
- (0, import_react235.useEffect)(() => {
50365
+ (0, import_react236.useEffect)(() => {
50324
50366
  if (!(unreadCount && intersectionObserverIsSupported)) {
50325
50367
  setShow(false);
50326
50368
  return;
@@ -50367,7 +50409,7 @@ var useUnreadMessagesNotification = ({
50367
50409
  showAlways,
50368
50410
  unreadCount
50369
50411
  ]);
50370
- (0, import_react235.useEffect)(() => {
50412
+ (0, import_react236.useEffect)(() => {
50371
50413
  if (unreadCount && isMessageListScrolledToBottom && isScrolledAboveTargetTop.current) {
50372
50414
  setShow(true);
50373
50415
  isScrolledAboveTargetTop.current = false;
@@ -50377,7 +50419,7 @@ var useUnreadMessagesNotification = ({
50377
50419
  };
50378
50420
 
50379
50421
  // src/components/MessageList/hooks/useMarkRead.ts
50380
- var import_react236 = require("react");
50422
+ var import_react237 = require("react");
50381
50423
  var hasReadLastMessage = (channel, userId) => {
50382
50424
  const latestMessageIdInChannel = channel.state.latestMessages.slice(-1)[0]?.id;
50383
50425
  const lastReadMessageIdServer = channel.state.read[userId]?.last_read_message_id;
@@ -50391,7 +50433,7 @@ var useMarkRead = ({
50391
50433
  const { client } = useChatContext("useMarkRead");
50392
50434
  const { markRead, setChannelUnreadUiState } = useChannelActionContext("useMarkRead");
50393
50435
  const { channel } = useChannelStateContext("useMarkRead");
50394
- (0, import_react236.useEffect)(() => {
50436
+ (0, import_react237.useEffect)(() => {
50395
50437
  const shouldMarkRead = () => !document.hidden && !wasMarkedUnread && !messageListIsThread && isMessageListScrolledToBottom && client.user?.id && !hasReadLastMessage(channel, client.user.id);
50396
50438
  const onVisibilityChange = () => {
50397
50439
  if (shouldMarkRead()) markRead();
@@ -50450,11 +50492,11 @@ function getPreviousLastMessage(messages, newMessage) {
50450
50492
  }
50451
50493
 
50452
50494
  // src/components/MessageList/MessageNotification.tsx
50453
- var import_react237 = __toESM(require("react"));
50495
+ var import_react238 = __toESM(require("react"));
50454
50496
  var UnMemoizedMessageNotification = (props) => {
50455
50497
  const { children, onClick, showNotification = true } = props;
50456
50498
  if (!showNotification) return null;
50457
- return /* @__PURE__ */ import_react237.default.createElement(
50499
+ return /* @__PURE__ */ import_react238.default.createElement(
50458
50500
  "button",
50459
50501
  {
50460
50502
  "aria-live": "polite",
@@ -50465,12 +50507,12 @@ var UnMemoizedMessageNotification = (props) => {
50465
50507
  children
50466
50508
  );
50467
50509
  };
50468
- var MessageNotification = import_react237.default.memo(
50510
+ var MessageNotification = import_react238.default.memo(
50469
50511
  UnMemoizedMessageNotification
50470
50512
  );
50471
50513
 
50472
50514
  // src/components/MessageList/MessageListNotifications.tsx
50473
- var import_react238 = __toESM(require("react"));
50515
+ var import_react239 = __toESM(require("react"));
50474
50516
  var MessageListNotifications = (props) => {
50475
50517
  const {
50476
50518
  hasNewMessages,
@@ -50483,7 +50525,7 @@ var MessageListNotifications = (props) => {
50483
50525
  unreadCount
50484
50526
  } = props;
50485
50527
  const { t: t2 } = useTranslationContext("MessageListNotifications");
50486
- return /* @__PURE__ */ import_react238.default.createElement("div", { className: "str-chat__list-notifications" }, notifications.map((notification) => /* @__PURE__ */ import_react238.default.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)), /* @__PURE__ */ import_react238.default.createElement(ConnectionStatus, null), /* @__PURE__ */ import_react238.default.createElement(
50528
+ return /* @__PURE__ */ import_react239.default.createElement("div", { className: "str-chat__list-notifications" }, notifications.map((notification) => /* @__PURE__ */ import_react239.default.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)), /* @__PURE__ */ import_react239.default.createElement(ConnectionStatus, null), /* @__PURE__ */ import_react239.default.createElement(
50487
50529
  MessageNotification2,
50488
50530
  {
50489
50531
  isMessageListScrolledToBottom,
@@ -50497,11 +50539,11 @@ var MessageListNotifications = (props) => {
50497
50539
  };
50498
50540
 
50499
50541
  // src/components/MessageList/UnreadMessagesNotification.tsx
50500
- var import_react240 = __toESM(require("react"));
50542
+ var import_react241 = __toESM(require("react"));
50501
50543
 
50502
50544
  // src/components/MessageList/icons.tsx
50503
- var import_react239 = __toESM(require("react"));
50504
- var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react239.default.createElement(
50545
+ var import_react240 = __toESM(require("react"));
50546
+ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react240.default.createElement(
50505
50547
  "svg",
50506
50548
  {
50507
50549
  className,
@@ -50512,7 +50554,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react23
50512
50554
  width: "24",
50513
50555
  xmlns: "http://www.w3.org/2000/svg"
50514
50556
  },
50515
- /* @__PURE__ */ import_react239.default.createElement(
50557
+ /* @__PURE__ */ import_react240.default.createElement(
50516
50558
  "path",
50517
50559
  {
50518
50560
  d: "M7.41 8.29504L12 12.875L16.59 8.29504L18 9.70504L12 15.705L6 9.70504L7.41 8.29504Z",
@@ -50520,7 +50562,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react23
50520
50562
  }
50521
50563
  )
50522
50564
  );
50523
- var CloseIcon2 = () => /* @__PURE__ */ import_react239.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 14 13", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react239.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" }));
50565
+ var CloseIcon2 = () => /* @__PURE__ */ import_react240.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 14 13", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react240.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" }));
50524
50566
 
50525
50567
  // src/components/MessageList/UnreadMessagesNotification.tsx
50526
50568
  var UnreadMessagesNotification = ({
@@ -50532,19 +50574,19 @@ var UnreadMessagesNotification = ({
50532
50574
  "UnreadMessagesNotification"
50533
50575
  );
50534
50576
  const { t: t2 } = useTranslationContext("UnreadMessagesNotification");
50535
- return /* @__PURE__ */ import_react240.default.createElement(
50577
+ return /* @__PURE__ */ import_react241.default.createElement(
50536
50578
  "div",
50537
50579
  {
50538
50580
  className: "str-chat__unread-messages-notification",
50539
50581
  "data-testid": "unread-messages-notification"
50540
50582
  },
50541
- /* @__PURE__ */ import_react240.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
50542
- /* @__PURE__ */ import_react240.default.createElement("button", { onClick: () => markRead() }, /* @__PURE__ */ import_react240.default.createElement(CloseIcon2, null))
50583
+ /* @__PURE__ */ import_react241.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
50584
+ /* @__PURE__ */ import_react241.default.createElement("button", { onClick: () => markRead() }, /* @__PURE__ */ import_react241.default.createElement(CloseIcon2, null))
50543
50585
  );
50544
50586
  };
50545
50587
 
50546
50588
  // src/components/InfiniteScrollPaginator/InfiniteScroll.tsx
50547
- var import_react241 = __toESM(require("react"));
50589
+ var import_react242 = __toESM(require("react"));
50548
50590
  var mousewheelListener2 = (event) => {
50549
50591
  if (event instanceof WheelEvent && event.deltaY === 1) {
50550
50592
  event.preventDefault();
@@ -50575,10 +50617,10 @@ var InfiniteScroll = (props) => {
50575
50617
  const loadPreviousPageFn = loadPreviousPage || loadMore;
50576
50618
  const hasNextPageFlag = hasNextPage || hasMoreNewer;
50577
50619
  const hasPreviousPageFlag = hasPreviousPage || hasMore;
50578
- const scrollComponent = (0, import_react241.useRef)(void 0);
50579
- const previousOffset = (0, import_react241.useRef)(void 0);
50580
- const previousReverseOffset = (0, import_react241.useRef)(void 0);
50581
- const scrollListenerRef = (0, import_react241.useRef)(void 0);
50620
+ const scrollComponent = (0, import_react242.useRef)(void 0);
50621
+ const previousOffset = (0, import_react242.useRef)(void 0);
50622
+ const previousReverseOffset = (0, import_react242.useRef)(void 0);
50623
+ const scrollListenerRef = (0, import_react242.useRef)(void 0);
50582
50624
  scrollListenerRef.current = () => {
50583
50625
  const element5 = scrollComponent.current;
50584
50626
  if (!element5 || element5.offsetParent === null) {
@@ -50602,7 +50644,7 @@ var InfiniteScroll = (props) => {
50602
50644
  loadNextPageFn();
50603
50645
  }
50604
50646
  };
50605
- (0, import_react241.useEffect)(() => {
50647
+ (0, import_react242.useEffect)(() => {
50606
50648
  deprecationAndReplacementWarning(
50607
50649
  [
50608
50650
  [{ hasMoreNewer }, { hasNextPage }],
@@ -50613,7 +50655,7 @@ var InfiniteScroll = (props) => {
50613
50655
  "InfiniteScroll"
50614
50656
  );
50615
50657
  }, []);
50616
- (0, import_react241.useEffect)(() => {
50658
+ (0, import_react242.useEffect)(() => {
50617
50659
  const scrollElement = scrollComponent.current?.parentNode;
50618
50660
  if (!scrollElement) return;
50619
50661
  const scrollListener = () => scrollListenerRef.current?.();
@@ -50625,7 +50667,7 @@ var InfiniteScroll = (props) => {
50625
50667
  scrollElement.removeEventListener("resize", scrollListener, useCapture);
50626
50668
  };
50627
50669
  }, [initialLoad, useCapture]);
50628
- (0, import_react241.useEffect)(() => {
50670
+ (0, import_react242.useEffect)(() => {
50629
50671
  const scrollElement = scrollComponent.current?.parentNode;
50630
50672
  if (scrollElement) {
50631
50673
  scrollElement.addEventListener("wheel", mousewheelListener2, { passive: false });
@@ -50646,11 +50688,11 @@ var InfiniteScroll = (props) => {
50646
50688
  if (head) {
50647
50689
  childrenArray.unshift(head);
50648
50690
  }
50649
- return import_react241.default.createElement(element4, attributes, childrenArray);
50691
+ return import_react242.default.createElement(element4, attributes, childrenArray);
50650
50692
  };
50651
50693
 
50652
50694
  // src/components/TypingIndicator/TypingIndicator.tsx
50653
- var import_react242 = __toESM(require("react"));
50695
+ var import_react243 = __toESM(require("react"));
50654
50696
  var import_clsx61 = __toESM(require("clsx"));
50655
50697
  var useJoinTypingUsers = (names) => {
50656
50698
  const { t: t2 } = useTranslationContext();
@@ -50688,7 +50730,7 @@ var UnMemoizedTypingIndicator = (props) => {
50688
50730
  return null;
50689
50731
  }
50690
50732
  if (!isTypingActive) return null;
50691
- return /* @__PURE__ */ import_react242.default.createElement(
50733
+ return /* @__PURE__ */ import_react243.default.createElement(
50692
50734
  "div",
50693
50735
  {
50694
50736
  className: (0, import_clsx61.default)("str-chat__typing-indicator", {
@@ -50696,19 +50738,19 @@ var UnMemoizedTypingIndicator = (props) => {
50696
50738
  }),
50697
50739
  "data-testid": "typing-indicator"
50698
50740
  },
50699
- /* @__PURE__ */ import_react242.default.createElement("div", { className: "str-chat__typing-indicator__dots" }, /* @__PURE__ */ import_react242.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react242.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react242.default.createElement("span", { className: "str-chat__typing-indicator__dot" })),
50700
- /* @__PURE__ */ import_react242.default.createElement("div", { className: "str-chat__typing-indicator__users", "data-testid": "typing-users" }, joinedTypingUsers)
50741
+ /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__typing-indicator__dots" }, /* @__PURE__ */ import_react243.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react243.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react243.default.createElement("span", { className: "str-chat__typing-indicator__dot" })),
50742
+ /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__typing-indicator__users", "data-testid": "typing-users" }, joinedTypingUsers)
50701
50743
  );
50702
50744
  };
50703
- var TypingIndicator = import_react242.default.memo(
50745
+ var TypingIndicator = import_react243.default.memo(
50704
50746
  UnMemoizedTypingIndicator
50705
50747
  );
50706
50748
 
50707
50749
  // src/components/MessageList/renderMessages.tsx
50708
- var import_react245 = __toESM(require("react"));
50750
+ var import_react246 = __toESM(require("react"));
50709
50751
 
50710
50752
  // src/components/DateSeparator/DateSeparator.tsx
50711
- var import_react243 = __toESM(require("react"));
50753
+ var import_react244 = __toESM(require("react"));
50712
50754
  var UnMemoizedDateSeparator = (props) => {
50713
50755
  const {
50714
50756
  calendar: calendar3,
@@ -50728,21 +50770,21 @@ var UnMemoizedDateSeparator = (props) => {
50728
50770
  tDateTimeParser,
50729
50771
  timestampTranslationKey: "timestamp/DateSeparator"
50730
50772
  });
50731
- return /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__date-separator", "data-testid": "date-separator" }, (position4 === "right" || position4 === "center") && /* @__PURE__ */ import_react243.default.createElement("hr", { className: "str-chat__date-separator-line" }), /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__date-separator-date" }, unread ? `${t2("New")} - ${formattedDate}` : formattedDate), (position4 === "left" || position4 === "center") && /* @__PURE__ */ import_react243.default.createElement("hr", { className: "str-chat__date-separator-line" }));
50773
+ return /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__date-separator", "data-testid": "date-separator" }, (position4 === "right" || position4 === "center") && /* @__PURE__ */ import_react244.default.createElement("hr", { className: "str-chat__date-separator-line" }), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__date-separator-date" }, unread ? `${t2("New")} - ${formattedDate}` : formattedDate), (position4 === "left" || position4 === "center") && /* @__PURE__ */ import_react244.default.createElement("hr", { className: "str-chat__date-separator-line" }));
50732
50774
  };
50733
- var DateSeparator = import_react243.default.memo(
50775
+ var DateSeparator = import_react244.default.memo(
50734
50776
  UnMemoizedDateSeparator
50735
50777
  );
50736
50778
 
50737
50779
  // src/components/EventComponent/EventComponent.tsx
50738
- var import_react244 = __toESM(require("react"));
50780
+ var import_react245 = __toESM(require("react"));
50739
50781
  var UnMemoizedEventComponent = (props) => {
50740
50782
  const { Avatar: Avatar2 = Avatar, calendar: calendar3, calendarFormats, format, message } = props;
50741
50783
  const { t: t2, tDateTimeParser } = useTranslationContext("EventComponent");
50742
50784
  const { created_at = "", event, text: text8, type } = message;
50743
50785
  const getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser };
50744
50786
  if (type === "system")
50745
- return /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__message--system", "data-testid": "message-system" }, /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__message--system__text" }, /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__message--system__line" }), /* @__PURE__ */ import_react244.default.createElement("p", null, text8), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__message--system__line" })), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__message--system__date" }, /* @__PURE__ */ import_react244.default.createElement("strong", null, getDateString({
50787
+ return /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system", "data-testid": "message-system" }, /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__text" }, /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__line" }), /* @__PURE__ */ import_react245.default.createElement("p", null, text8), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__line" })), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__date" }, /* @__PURE__ */ import_react245.default.createElement("strong", null, getDateString({
50746
50788
  ...getDateOptions,
50747
50789
  calendar: calendar3,
50748
50790
  calendarFormats,
@@ -50753,11 +50795,11 @@ var UnMemoizedEventComponent = (props) => {
50753
50795
  if (event?.type === "member.removed" || event?.type === "member.added") {
50754
50796
  const name2 = event.user?.name || event.user?.id;
50755
50797
  const sentence = `${name2} ${event.type === "member.added" ? "has joined the chat" : "was removed from the chat"}`;
50756
- return /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__event-component__channel-event" }, /* @__PURE__ */ import_react244.default.createElement(Avatar2, { image: event.user?.image, name: name2, user: event.user }), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__event-component__channel-event__content" }, /* @__PURE__ */ import_react244.default.createElement("em", { className: "str-chat__event-component__channel-event__sentence" }, sentence), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__event-component__channel-event__date" }, getDateString({ ...getDateOptions, format: "LT" }))));
50798
+ return /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__event-component__channel-event" }, /* @__PURE__ */ import_react245.default.createElement(Avatar2, { image: event.user?.image, name: name2, user: event.user }), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__event-component__channel-event__content" }, /* @__PURE__ */ import_react245.default.createElement("em", { className: "str-chat__event-component__channel-event__sentence" }, sentence), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__event-component__channel-event__date" }, getDateString({ ...getDateOptions, format: "LT" }))));
50757
50799
  }
50758
50800
  return null;
50759
50801
  };
50760
- var EventComponent = import_react244.default.memo(
50802
+ var EventComponent = import_react245.default.memo(
50761
50803
  UnMemoizedEventComponent
50762
50804
  );
50763
50805
 
@@ -50785,7 +50827,7 @@ function defaultRenderMessages({
50785
50827
  const message = messages[index3];
50786
50828
  if (isDateSeparatorMessage(message)) {
50787
50829
  renderedMessages.push(
50788
- /* @__PURE__ */ import_react245.default.createElement("li", { key: `${message.date.toISOString()}-i` }, /* @__PURE__ */ import_react245.default.createElement(
50830
+ /* @__PURE__ */ import_react246.default.createElement("li", { key: `${message.date.toISOString()}-i` }, /* @__PURE__ */ import_react246.default.createElement(
50789
50831
  DateSeparator2,
50790
50832
  {
50791
50833
  date: message.date,
@@ -50796,17 +50838,17 @@ function defaultRenderMessages({
50796
50838
  );
50797
50839
  } else if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
50798
50840
  renderedMessages.push(
50799
- /* @__PURE__ */ import_react245.default.createElement("li", { key: "intro" }, /* @__PURE__ */ import_react245.default.createElement(HeaderComponent, null))
50841
+ /* @__PURE__ */ import_react246.default.createElement("li", { key: "intro" }, /* @__PURE__ */ import_react246.default.createElement(HeaderComponent, null))
50800
50842
  );
50801
50843
  } else if (message.type === "system") {
50802
50844
  renderedMessages.push(
50803
- /* @__PURE__ */ import_react245.default.createElement(
50845
+ /* @__PURE__ */ import_react246.default.createElement(
50804
50846
  "li",
50805
50847
  {
50806
50848
  "data-message-id": message.id,
50807
50849
  key: message.id || message.created_at
50808
50850
  },
50809
- /* @__PURE__ */ import_react245.default.createElement(MessageSystem, { message })
50851
+ /* @__PURE__ */ import_react246.default.createElement(MessageSystem, { message })
50810
50852
  )
50811
50853
  );
50812
50854
  } else {
@@ -50825,19 +50867,19 @@ function defaultRenderMessages({
50825
50867
  unreadMessageCount: channelUnreadUiState?.unread_messages
50826
50868
  });
50827
50869
  renderedMessages.push(
50828
- /* @__PURE__ */ import_react245.default.createElement(import_react245.Fragment, { key: message.id || message.created_at }, isFirstUnreadMessage && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react245.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react245.default.createElement(
50870
+ /* @__PURE__ */ import_react246.default.createElement(import_react246.Fragment, { key: message.id || message.created_at }, isFirstUnreadMessage && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react246.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react246.default.createElement(
50829
50871
  UnreadMessagesSeparator2,
50830
50872
  {
50831
50873
  unreadCount: channelUnreadUiState?.unread_messages
50832
50874
  }
50833
- )), /* @__PURE__ */ import_react245.default.createElement(
50875
+ )), /* @__PURE__ */ import_react246.default.createElement(
50834
50876
  "li",
50835
50877
  {
50836
50878
  className: messageClass,
50837
50879
  "data-message-id": message.id,
50838
50880
  "data-testid": messageClass
50839
50881
  },
50840
- /* @__PURE__ */ import_react245.default.createElement(
50882
+ /* @__PURE__ */ import_react246.default.createElement(
50841
50883
  Message,
50842
50884
  {
50843
50885
  groupStyles: [groupStyles],
@@ -50894,8 +50936,8 @@ var MessageListWithContext = (props) => {
50894
50936
  threadList = false,
50895
50937
  unsafeHTML = false
50896
50938
  } = props;
50897
- const [listElement, setListElement] = import_react246.default.useState(null);
50898
- const [ulElement, setUlElement] = import_react246.default.useState(null);
50939
+ const [listElement, setListElement] = import_react247.default.useState(null);
50940
+ const [ulElement, setUlElement] = import_react247.default.useState(null);
50899
50941
  const { customClasses } = useChatContext("MessageList");
50900
50942
  const {
50901
50943
  EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator,
@@ -50983,24 +51025,24 @@ var MessageListWithContext = (props) => {
50983
51025
  threadList
50984
51026
  });
50985
51027
  const messageListClass = customClasses?.messageList || "str-chat__list";
50986
- const loadMore = import_react246.default.useCallback(() => {
51028
+ const loadMore = import_react247.default.useCallback(() => {
50987
51029
  if (loadMoreCallback) {
50988
51030
  loadMoreCallback(messageLimit);
50989
51031
  }
50990
51032
  }, [loadMoreCallback, messageLimit]);
50991
- const loadMoreNewer = import_react246.default.useCallback(() => {
51033
+ const loadMoreNewer = import_react247.default.useCallback(() => {
50992
51034
  if (loadMoreNewerCallback) {
50993
51035
  loadMoreNewerCallback(messageLimit);
50994
51036
  }
50995
51037
  }, [loadMoreNewerCallback, messageLimit]);
50996
- const scrollToBottomFromNotification = import_react246.default.useCallback(async () => {
51038
+ const scrollToBottomFromNotification = import_react247.default.useCallback(async () => {
50997
51039
  if (hasMoreNewer) {
50998
51040
  await jumpToLatestMessage();
50999
51041
  } else {
51000
51042
  scrollToBottom();
51001
51043
  }
51002
51044
  }, [scrollToBottom, hasMoreNewer]);
51003
- import_react246.default.useLayoutEffect(() => {
51045
+ import_react247.default.useLayoutEffect(() => {
51004
51046
  if (highlightedMessageId) {
51005
51047
  const element4 = ulElement?.querySelector(
51006
51048
  `[data-message-id='${highlightedMessageId}']`
@@ -51010,12 +51052,12 @@ var MessageListWithContext = (props) => {
51010
51052
  }, [highlightedMessageId]);
51011
51053
  const showEmptyStateIndicator = elements.length === 0 && !threadList;
51012
51054
  const dialogManagerId = threadList ? "message-list-dialog-manager-thread" : "message-list-dialog-manager";
51013
- return /* @__PURE__ */ import_react246.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react246.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react246.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react246.default.createElement(
51055
+ return /* @__PURE__ */ import_react247.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react247.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react247.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react247.default.createElement(
51014
51056
  UnreadMessagesNotification2,
51015
51057
  {
51016
51058
  unreadCount: channelUnreadUiState?.unread_messages
51017
51059
  }
51018
- ), /* @__PURE__ */ import_react246.default.createElement(
51060
+ ), /* @__PURE__ */ import_react247.default.createElement(
51019
51061
  "div",
51020
51062
  {
51021
51063
  className: (0, import_clsx62.default)(messageListClass, customClasses?.threadList),
@@ -51023,7 +51065,7 @@ var MessageListWithContext = (props) => {
51023
51065
  ref: setListElement,
51024
51066
  tabIndex: 0
51025
51067
  },
51026
- showEmptyStateIndicator ? /* @__PURE__ */ import_react246.default.createElement(EmptyStateIndicator2, { listType: threadList ? "thread" : "message" }) : /* @__PURE__ */ import_react246.default.createElement(
51068
+ showEmptyStateIndicator ? /* @__PURE__ */ import_react247.default.createElement(EmptyStateIndicator2, { listType: threadList ? "thread" : "message" }) : /* @__PURE__ */ import_react247.default.createElement(
51027
51069
  InfiniteScroll,
51028
51070
  {
51029
51071
  className: "str-chat__message-list-scroll",
@@ -51032,17 +51074,17 @@ var MessageListWithContext = (props) => {
51032
51074
  hasPreviousPage: props.hasMore,
51033
51075
  head: props.head,
51034
51076
  isLoading: props.loadingMore,
51035
- loader: /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__list__loading", key: "loading-indicator" }, props.loadingMore && /* @__PURE__ */ import_react246.default.createElement(LoadingIndicator2, { size: 20 })),
51077
+ loader: /* @__PURE__ */ import_react247.default.createElement("div", { className: "str-chat__list__loading", key: "loading-indicator" }, props.loadingMore && /* @__PURE__ */ import_react247.default.createElement(LoadingIndicator2, { size: 20 })),
51036
51078
  loadNextPage: loadMoreNewer,
51037
51079
  loadPreviousPage: loadMore,
51038
51080
  threshold: loadMoreScrollThreshold,
51039
51081
  ...restInternalInfiniteScrollProps
51040
51082
  },
51041
- /* @__PURE__ */ import_react246.default.createElement("ul", { className: "str-chat__ul", ref: setUlElement }, elements),
51042
- /* @__PURE__ */ import_react246.default.createElement(TypingIndicator2, { threadList }),
51043
- /* @__PURE__ */ import_react246.default.createElement("div", { key: "bottom" })
51083
+ /* @__PURE__ */ import_react247.default.createElement("ul", { className: "str-chat__ul", ref: setUlElement }, elements),
51084
+ /* @__PURE__ */ import_react247.default.createElement(TypingIndicator2, { threadList }),
51085
+ /* @__PURE__ */ import_react247.default.createElement("div", { key: "bottom" })
51044
51086
  )
51045
- ))), /* @__PURE__ */ import_react246.default.createElement(
51087
+ ))), /* @__PURE__ */ import_react247.default.createElement(
51046
51088
  MessageListNotifications2,
51047
51089
  {
51048
51090
  hasNewMessages,
@@ -51067,7 +51109,7 @@ var MessageList = (props) => {
51067
51109
  // eslint-disable-line @typescript-eslint/no-unused-vars
51068
51110
  ...restChannelStateContext
51069
51111
  } = useChannelStateContext("MessageList");
51070
- return /* @__PURE__ */ import_react246.default.createElement(
51112
+ return /* @__PURE__ */ import_react247.default.createElement(
51071
51113
  MessageListWithContext,
51072
51114
  {
51073
51115
  jumpToLatestMessage,
@@ -51080,16 +51122,16 @@ var MessageList = (props) => {
51080
51122
  };
51081
51123
 
51082
51124
  // src/components/MessageList/ScrollToBottomButton.tsx
51083
- var import_react247 = __toESM(require("react"));
51125
+ var import_react248 = __toESM(require("react"));
51084
51126
  var import_clsx63 = __toESM(require("clsx"));
51085
51127
  var UnMemoizedScrollToBottomButton = (props) => {
51086
51128
  const { isMessageListScrolledToBottom, onClick, threadList } = props;
51087
51129
  const { channel: activeChannel, client } = useChatContext();
51088
51130
  const { thread } = useChannelStateContext();
51089
- const [countUnread, setCountUnread] = (0, import_react247.useState)(activeChannel?.countUnread() || 0);
51090
- const [replyCount, setReplyCount] = (0, import_react247.useState)(thread?.reply_count || 0);
51131
+ const [countUnread, setCountUnread] = (0, import_react248.useState)(activeChannel?.countUnread() || 0);
51132
+ const [replyCount, setReplyCount] = (0, import_react248.useState)(thread?.reply_count || 0);
51091
51133
  const observedEvent = threadList ? "message.updated" : "message.new";
51092
- (0, import_react247.useEffect)(() => {
51134
+ (0, import_react248.useEffect)(() => {
51093
51135
  const handleEvent = (event) => {
51094
51136
  const newMessageInAnotherChannel = event.cid !== activeChannel?.cid;
51095
51137
  const newMessageIsMine = event.user?.id === client.user?.id;
@@ -51111,14 +51153,14 @@ var UnMemoizedScrollToBottomButton = (props) => {
51111
51153
  client.off(observedEvent, handleEvent);
51112
51154
  };
51113
51155
  }, [activeChannel, isMessageListScrolledToBottom, observedEvent, replyCount, thread]);
51114
- (0, import_react247.useEffect)(() => {
51156
+ (0, import_react248.useEffect)(() => {
51115
51157
  if (isMessageListScrolledToBottom) {
51116
51158
  setCountUnread(0);
51117
51159
  setReplyCount(thread?.reply_count || 0);
51118
51160
  }
51119
51161
  }, [isMessageListScrolledToBottom, thread]);
51120
51162
  if (isMessageListScrolledToBottom) return null;
51121
- return /* @__PURE__ */ import_react247.default.createElement("div", { className: "str-chat__jump-to-latest-message" }, /* @__PURE__ */ import_react247.default.createElement(
51163
+ return /* @__PURE__ */ import_react248.default.createElement("div", { className: "str-chat__jump-to-latest-message" }, /* @__PURE__ */ import_react248.default.createElement(
51122
51164
  "button",
51123
51165
  {
51124
51166
  "aria-live": "polite",
@@ -51129,8 +51171,8 @@ var UnMemoizedScrollToBottomButton = (props) => {
51129
51171
  "data-testid": "message-notification",
51130
51172
  onClick
51131
51173
  },
51132
- /* @__PURE__ */ import_react247.default.createElement(ArrowDown, null),
51133
- countUnread > 0 && /* @__PURE__ */ import_react247.default.createElement(
51174
+ /* @__PURE__ */ import_react248.default.createElement(ArrowDown, null),
51175
+ countUnread > 0 && /* @__PURE__ */ import_react248.default.createElement(
51134
51176
  "div",
51135
51177
  {
51136
51178
  className: (0, import_clsx63.default)(
@@ -51143,23 +51185,23 @@ var UnMemoizedScrollToBottomButton = (props) => {
51143
51185
  )
51144
51186
  ));
51145
51187
  };
51146
- var ScrollToBottomButton = import_react247.default.memo(
51188
+ var ScrollToBottomButton = import_react248.default.memo(
51147
51189
  UnMemoizedScrollToBottomButton
51148
51190
  );
51149
51191
 
51150
51192
  // src/components/MessageList/VirtualizedMessageList.tsx
51151
- var import_react257 = __toESM(require("react"));
51193
+ var import_react258 = __toESM(require("react"));
51152
51194
  var import_react_virtuoso3 = require("react-virtuoso");
51153
51195
 
51154
51196
  // src/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.ts
51155
- var import_react248 = require("react");
51197
+ var import_react249 = require("react");
51156
51198
  function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
51157
- const [newMessagesNotification, setNewMessagesNotification] = (0, import_react248.useState)(false);
51158
- const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react248.useState)(true);
51159
- const didMount = (0, import_react248.useRef)(false);
51160
- const lastMessageId = (0, import_react248.useRef)("");
51161
- const atBottom = (0, import_react248.useRef)(false);
51162
- (0, import_react248.useEffect)(() => {
51199
+ const [newMessagesNotification, setNewMessagesNotification] = (0, import_react249.useState)(false);
51200
+ const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react249.useState)(true);
51201
+ const didMount = (0, import_react249.useRef)(false);
51202
+ const lastMessageId = (0, import_react249.useRef)("");
51203
+ const atBottom = (0, import_react249.useRef)(false);
51204
+ (0, import_react249.useEffect)(() => {
51163
51205
  if (hasMoreNewer) {
51164
51206
  setNewMessagesNotification(true);
51165
51207
  return;
@@ -51185,17 +51227,17 @@ function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
51185
51227
  }
51186
51228
 
51187
51229
  // src/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.ts
51188
- var import_react249 = require("react");
51230
+ var import_react250 = require("react");
51189
51231
  var STATUSES_EXCLUDED_FROM_PREPEND = {
51190
51232
  failed: true,
51191
51233
  sending: true
51192
51234
  };
51193
51235
  function usePrependedMessagesCount(messages, hasDateSeparator) {
51194
51236
  const firstRealMessageIndex = hasDateSeparator ? 1 : 0;
51195
- const firstMessageOnFirstLoadedPage = (0, import_react249.useRef)(void 0);
51196
- const previousFirstMessageOnFirstLoadedPage = (0, import_react249.useRef)(void 0);
51197
- const previousNumItemsPrepended = (0, import_react249.useRef)(0);
51198
- const numItemsPrepended = (0, import_react249.useMemo)(() => {
51237
+ const firstMessageOnFirstLoadedPage = (0, import_react250.useRef)(void 0);
51238
+ const previousFirstMessageOnFirstLoadedPage = (0, import_react250.useRef)(void 0);
51239
+ const previousNumItemsPrepended = (0, import_react250.useRef)(0);
51240
+ const numItemsPrepended = (0, import_react250.useMemo)(() => {
51199
51241
  if (!messages || !messages.length) {
51200
51242
  previousNumItemsPrepended.current = 0;
51201
51243
  return 0;
@@ -51225,10 +51267,10 @@ function usePrependedMessagesCount(messages, hasDateSeparator) {
51225
51267
  }
51226
51268
 
51227
51269
  // src/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.ts
51228
- var import_react250 = require("react");
51270
+ var import_react251 = require("react");
51229
51271
  function useShouldForceScrollToBottom(messages, currentUserId) {
51230
- const lastFocusedOwnMessage = (0, import_react250.useRef)("");
51231
- const initialFocusRegistered = (0, import_react250.useRef)(false);
51272
+ const lastFocusedOwnMessage = (0, import_react251.useRef)("");
51273
+ const initialFocusRegistered = (0, import_react251.useRef)(false);
51232
51274
  function recheckForNewOwnMessage() {
51233
51275
  if (messages && messages.length > 0) {
51234
51276
  const lastMessage = messages[messages.length - 1];
@@ -51239,7 +51281,7 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
51239
51281
  }
51240
51282
  return false;
51241
51283
  }
51242
- (0, import_react250.useEffect)(() => {
51284
+ (0, import_react251.useEffect)(() => {
51243
51285
  if (messages && messages.length && !initialFocusRegistered.current) {
51244
51286
  initialFocusRegistered.current = true;
51245
51287
  recheckForNewOwnMessage();
@@ -51249,11 +51291,11 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
51249
51291
  }
51250
51292
 
51251
51293
  // src/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.ts
51252
- var import_react251 = require("react");
51294
+ var import_react252 = require("react");
51253
51295
  var useGiphyPreview = (separateGiphyPreview) => {
51254
- const [giphyPreviewMessage, setGiphyPreviewMessage] = (0, import_react251.useState)();
51296
+ const [giphyPreviewMessage, setGiphyPreviewMessage] = (0, import_react252.useState)();
51255
51297
  const { client } = useChatContext("useGiphyPreview");
51256
- (0, import_react251.useEffect)(() => {
51298
+ (0, import_react252.useEffect)(() => {
51257
51299
  const handleEvent = (event) => {
51258
51300
  const { message, user } = event;
51259
51301
  if (message?.command === "giphy" && user?.id === client.userID) {
@@ -51270,13 +51312,13 @@ var useGiphyPreview = (separateGiphyPreview) => {
51270
51312
  };
51271
51313
 
51272
51314
  // src/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.ts
51273
- var import_react252 = require("react");
51315
+ var import_react253 = require("react");
51274
51316
  var useMessageSetKey = ({
51275
51317
  messages
51276
51318
  }) => {
51277
- const [messageSetKey, setMessageSetKey] = (0, import_react252.useState)(+/* @__PURE__ */ new Date());
51278
- const firstMessageId = (0, import_react252.useRef)(void 0);
51279
- (0, import_react252.useEffect)(() => {
51319
+ const [messageSetKey, setMessageSetKey] = (0, import_react253.useState)(+/* @__PURE__ */ new Date());
51320
+ const firstMessageId = (0, import_react253.useRef)(void 0);
51321
+ (0, import_react253.useEffect)(() => {
51280
51322
  const continuousSet = messages?.find(
51281
51323
  (message) => message.id === firstMessageId.current
51282
51324
  );
@@ -51291,24 +51333,24 @@ var useMessageSetKey = ({
51291
51333
  };
51292
51334
 
51293
51335
  // src/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.ts
51294
- var import_react253 = require("react");
51336
+ var import_react254 = require("react");
51295
51337
  var useScrollToBottomOnNewMessage = ({
51296
51338
  messages,
51297
51339
  scrollToBottom,
51298
51340
  scrollToLatestMessageOnFocus
51299
51341
  }) => {
51300
- const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0, import_react253.useState)(false);
51301
- const scrollToBottomIfConfigured = (0, import_react253.useRef)(void 0);
51342
+ const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0, import_react254.useState)(false);
51343
+ const scrollToBottomIfConfigured = (0, import_react254.useRef)(void 0);
51302
51344
  scrollToBottomIfConfigured.current = (event) => {
51303
51345
  if (!scrollToLatestMessageOnFocus || !newMessagesReceivedInBackground || event.target !== window) {
51304
51346
  return;
51305
51347
  }
51306
51348
  setTimeout(scrollToBottom, 100);
51307
51349
  };
51308
- (0, import_react253.useEffect)(() => {
51350
+ (0, import_react254.useEffect)(() => {
51309
51351
  setNewMessagesReceivedInBackground(true);
51310
51352
  }, [messages]);
51311
- (0, import_react253.useEffect)(() => {
51353
+ (0, import_react254.useEffect)(() => {
51312
51354
  const handleFocus = (event) => {
51313
51355
  scrollToBottomIfConfigured.current?.(event);
51314
51356
  };
@@ -51327,14 +51369,14 @@ var useScrollToBottomOnNewMessage = ({
51327
51369
  };
51328
51370
 
51329
51371
  // src/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.ts
51330
- var import_react254 = require("react");
51372
+ var import_react255 = require("react");
51331
51373
  var useUnreadMessagesNotificationVirtualized = ({
51332
51374
  lastRead,
51333
51375
  showAlways,
51334
51376
  unreadCount
51335
51377
  }) => {
51336
- const [show, setShow] = (0, import_react254.useState)(false);
51337
- const toggleShowUnreadMessagesNotification = (0, import_react254.useCallback)(
51378
+ const [show, setShow] = (0, import_react255.useState)(false);
51379
+ const toggleShowUnreadMessagesNotification = (0, import_react255.useCallback)(
51338
51380
  (renderedMessages) => {
51339
51381
  if (!unreadCount) return;
51340
51382
  const firstRenderedMessage = renderedMessages[0];
@@ -51348,7 +51390,7 @@ var useUnreadMessagesNotificationVirtualized = ({
51348
51390
  },
51349
51391
  [lastRead, showAlways, unreadCount]
51350
51392
  );
51351
- (0, import_react254.useEffect)(() => {
51393
+ (0, import_react255.useEffect)(() => {
51352
51394
  if (!unreadCount) setShow(false);
51353
51395
  }, [unreadCount]);
51354
51396
  return { show, toggleShowUnreadMessagesNotification };
@@ -51357,7 +51399,7 @@ var useUnreadMessagesNotificationVirtualized = ({
51357
51399
  // src/components/MessageList/VirtualizedMessageListComponents.tsx
51358
51400
  var import_clsx64 = __toESM(require("clsx"));
51359
51401
  var import_lodash21 = __toESM(require("lodash.throttle"));
51360
- var import_react255 = __toESM(require("react"));
51402
+ var import_react256 = __toESM(require("react"));
51361
51403
  var PREPEND_OFFSET = 10 ** 7;
51362
51404
  function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
51363
51405
  return virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;
@@ -51378,10 +51420,10 @@ var Item3 = ({
51378
51420
  context,
51379
51421
  ...props
51380
51422
  }) => {
51381
- if (!context) return /* @__PURE__ */ import_react255.default.createElement(import_react255.default.Fragment, null);
51423
+ if (!context) return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null);
51382
51424
  const message = context.processedMessages[calculateItemIndex(props["data-item-index"], context.numItemsPrepended)];
51383
51425
  const groupStyles = context.messageGroupStyles[message.id];
51384
- return /* @__PURE__ */ import_react255.default.createElement(
51426
+ return /* @__PURE__ */ import_react256.default.createElement(
51385
51427
  "div",
51386
51428
  {
51387
51429
  ...props,
@@ -51395,13 +51437,13 @@ var Header = ({
51395
51437
  context
51396
51438
  }) => {
51397
51439
  const { LoadingIndicator: LoadingIndicator2 = LoadingIndicator } = useComponentContext("VirtualizedMessageListHeader");
51398
- return /* @__PURE__ */ import_react255.default.createElement(import_react255.default.Fragment, null, context?.head, context?.loadingMore && LoadingIndicator2 && /* @__PURE__ */ import_react255.default.createElement("div", { className: "str-chat__virtual-list__loading" }, /* @__PURE__ */ import_react255.default.createElement(LoadingIndicator2, { size: 20 })));
51440
+ return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null, context?.head, context?.loadingMore && LoadingIndicator2 && /* @__PURE__ */ import_react256.default.createElement("div", { className: "str-chat__virtual-list__loading" }, /* @__PURE__ */ import_react256.default.createElement(LoadingIndicator2, { size: 20 })));
51399
51441
  };
51400
51442
  var EmptyPlaceholder = ({
51401
51443
  context
51402
51444
  }) => {
51403
51445
  const { EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator } = useComponentContext("VirtualizedMessageList");
51404
- return /* @__PURE__ */ import_react255.default.createElement(import_react255.default.Fragment, null, EmptyStateIndicator2 && /* @__PURE__ */ import_react255.default.createElement(EmptyStateIndicator2, { listType: context?.threadList ? "thread" : "message" }));
51446
+ return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null, EmptyStateIndicator2 && /* @__PURE__ */ import_react256.default.createElement(EmptyStateIndicator2, { listType: context?.threadList ? "thread" : "message" }));
51405
51447
  };
51406
51448
  var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51407
51449
  const {
@@ -51437,12 +51479,12 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51437
51479
  return customMessageRenderer(messageList, streamMessageIndex);
51438
51480
  }
51439
51481
  const message = messageList[streamMessageIndex];
51440
- if (!message) return /* @__PURE__ */ import_react255.default.createElement("div", { style: { height: "1px" } });
51482
+ if (!message) return /* @__PURE__ */ import_react256.default.createElement("div", { style: { height: "1px" } });
51441
51483
  if (isDateSeparatorMessage(message)) {
51442
- return DateSeparator2 ? /* @__PURE__ */ import_react255.default.createElement(DateSeparator2, { date: message.date, unread: message.unread }) : null;
51484
+ return DateSeparator2 ? /* @__PURE__ */ import_react256.default.createElement(DateSeparator2, { date: message.date, unread: message.unread }) : null;
51443
51485
  }
51444
51486
  if (message.type === "system") {
51445
- return MessageSystem ? /* @__PURE__ */ import_react255.default.createElement(MessageSystem, { message }) : null;
51487
+ return MessageSystem ? /* @__PURE__ */ import_react256.default.createElement(MessageSystem, { message }) : null;
51446
51488
  }
51447
51489
  const groupedByUser = shouldGroupByUser && streamMessageIndex > 0 && message.user?.id === messageList[streamMessageIndex - 1].user?.id;
51448
51490
  const maybePrevMessage = messageList[streamMessageIndex - 1];
@@ -51458,7 +51500,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51458
51500
  previousMessage: streamMessageIndex ? messageList[streamMessageIndex - 1] : void 0,
51459
51501
  unreadMessageCount
51460
51502
  });
51461
- return /* @__PURE__ */ import_react255.default.createElement(import_react255.default.Fragment, null, isFirstUnreadMessage && /* @__PURE__ */ import_react255.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react255.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })), /* @__PURE__ */ import_react255.default.createElement(
51503
+ return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null, isFirstUnreadMessage && /* @__PURE__ */ import_react256.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react256.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })), /* @__PURE__ */ import_react256.default.createElement(
51462
51504
  Message,
51463
51505
  {
51464
51506
  additionalMessageInputProps,
@@ -51485,12 +51527,12 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51485
51527
  };
51486
51528
 
51487
51529
  // src/context/VirtualizedMessageListContext.tsx
51488
- var import_react256 = __toESM(require("react"));
51489
- var VirtualizedMessageListContext = (0, import_react256.createContext)(void 0);
51530
+ var import_react257 = __toESM(require("react"));
51531
+ var VirtualizedMessageListContext = (0, import_react257.createContext)(void 0);
51490
51532
  var VirtualizedMessageListContextProvider = ({
51491
51533
  children,
51492
51534
  value
51493
- }) => /* @__PURE__ */ import_react256.default.createElement(
51535
+ }) => /* @__PURE__ */ import_react257.default.createElement(
51494
51536
  VirtualizedMessageListContext.Provider,
51495
51537
  {
51496
51538
  value
@@ -51505,7 +51547,7 @@ function captureResizeObserverExceededError(e2) {
51505
51547
  }
51506
51548
  }
51507
51549
  function useCaptureResizeObserverExceededError() {
51508
- (0, import_react257.useEffect)(() => {
51550
+ (0, import_react258.useEffect)(() => {
51509
51551
  window.addEventListener("error", captureResizeObserverExceededError);
51510
51552
  return () => {
51511
51553
  window.removeEventListener("error", captureResizeObserverExceededError);
@@ -51591,15 +51633,15 @@ var VirtualizedMessageListWithContext = (props) => {
51591
51633
  const { client, customClasses } = useChatContext(
51592
51634
  "VirtualizedMessageList"
51593
51635
  );
51594
- const virtuoso = (0, import_react257.useRef)(null);
51595
- const lastRead = (0, import_react257.useMemo)(() => channel.lastRead?.(), [channel]);
51636
+ const virtuoso = (0, import_react258.useRef)(null);
51637
+ const lastRead = (0, import_react258.useMemo)(() => channel.lastRead?.(), [channel]);
51596
51638
  const { show: showUnreadMessagesNotification, toggleShowUnreadMessagesNotification } = useUnreadMessagesNotificationVirtualized({
51597
51639
  lastRead: channelUnreadUiState?.last_read,
51598
51640
  showAlways: !!showUnreadNotificationAlways,
51599
51641
  unreadCount: channelUnreadUiState?.unread_messages ?? 0
51600
51642
  });
51601
51643
  const { giphyPreviewMessage, setGiphyPreviewMessage } = useGiphyPreview(separateGiphyPreview);
51602
- const processedMessages = (0, import_react257.useMemo)(() => {
51644
+ const processedMessages = (0, import_react258.useMemo)(() => {
51603
51645
  if (typeof messages === "undefined") {
51604
51646
  return [];
51605
51647
  }
@@ -51631,12 +51673,12 @@ var VirtualizedMessageListWithContext = (props) => {
51631
51673
  returnAllReadData,
51632
51674
  userID: client.userID
51633
51675
  });
51634
- const lastReceivedMessageId = (0, import_react257.useMemo)(
51676
+ const lastReceivedMessageId = (0, import_react258.useMemo)(
51635
51677
  () => getLastReceived(processedMessages),
51636
51678
  [processedMessages]
51637
51679
  );
51638
51680
  const groupStylesFn = groupStyles || getGroupStyles;
51639
- const messageGroupStyles = (0, import_react257.useMemo)(
51681
+ const messageGroupStyles = (0, import_react258.useMemo)(
51640
51682
  () => processedMessages.reduce((acc, message, i) => {
51641
51683
  const style = groupStylesFn(
51642
51684
  message,
@@ -51669,7 +51711,7 @@ var VirtualizedMessageListWithContext = (props) => {
51669
51711
  messageListIsThread: !!threadList,
51670
51712
  wasMarkedUnread: !!channelUnreadUiState?.first_unread_message_id
51671
51713
  });
51672
- const scrollToBottom = (0, import_react257.useCallback)(async () => {
51714
+ const scrollToBottom = (0, import_react258.useCallback)(async () => {
51673
51715
  if (hasMoreNewer) {
51674
51716
  await jumpToLatestMessage();
51675
51717
  return;
@@ -51701,7 +51743,7 @@ var VirtualizedMessageListWithContext = (props) => {
51701
51743
  processedMessages,
51702
51744
  client.userID
51703
51745
  );
51704
- const handleItemsRendered = (0, import_react257.useMemo)(
51746
+ const handleItemsRendered = (0, import_react258.useMemo)(
51705
51747
  () => makeItemsRenderedHandler([toggleShowUnreadMessagesNotification], processedMessages),
51706
51748
  [processedMessages, toggleShowUnreadMessagesNotification]
51707
51749
  );
@@ -51714,7 +51756,7 @@ var VirtualizedMessageListWithContext = (props) => {
51714
51756
  }
51715
51757
  return isAtBottom ? stickToBottomScrollBehavior : false;
51716
51758
  };
51717
- const computeItemKey2 = (0, import_react257.useCallback)(
51759
+ const computeItemKey2 = (0, import_react258.useCallback)(
51718
51760
  (index3, _, { numItemsPrepended: numItemsPrepended2, processedMessages: processedMessages2 }) => processedMessages2[calculateItemIndex(index3, numItemsPrepended2)].id,
51719
51761
  []
51720
51762
  );
@@ -51731,7 +51773,7 @@ var VirtualizedMessageListWithContext = (props) => {
51731
51773
  loadMore?.(messageLimit);
51732
51774
  }
51733
51775
  };
51734
- (0, import_react257.useEffect)(() => {
51776
+ (0, import_react258.useEffect)(() => {
51735
51777
  let scrollTimeout;
51736
51778
  if (highlightedMessageId) {
51737
51779
  const index3 = findMessageIndex(processedMessages, highlightedMessageId);
@@ -51747,17 +51789,17 @@ var VirtualizedMessageListWithContext = (props) => {
51747
51789
  }, [highlightedMessageId, processedMessages]);
51748
51790
  if (!processedMessages) return null;
51749
51791
  const dialogManagerId = threadList ? "virtualized-message-list-dialog-manager-thread" : "virtualized-message-list-dialog-manager";
51750
- return /* @__PURE__ */ import_react257.default.createElement(VirtualizedMessageListContextProvider, { value: { scrollToBottom } }, /* @__PURE__ */ import_react257.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react257.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react257.default.createElement(
51792
+ return /* @__PURE__ */ import_react258.default.createElement(VirtualizedMessageListContextProvider, { value: { scrollToBottom } }, /* @__PURE__ */ import_react258.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react258.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react258.default.createElement(
51751
51793
  UnreadMessagesNotification2,
51752
51794
  {
51753
51795
  unreadCount: channelUnreadUiState?.unread_messages
51754
51796
  }
51755
- ), /* @__PURE__ */ import_react257.default.createElement(
51797
+ ), /* @__PURE__ */ import_react258.default.createElement(
51756
51798
  "div",
51757
51799
  {
51758
51800
  className: customClasses?.virtualizedMessageList || "str-chat__virtual-list"
51759
51801
  },
51760
- /* @__PURE__ */ import_react257.default.createElement(
51802
+ /* @__PURE__ */ import_react258.default.createElement(
51761
51803
  import_react_virtuoso3.Virtuoso,
51762
51804
  {
51763
51805
  atBottomStateChange,
@@ -51823,7 +51865,7 @@ var VirtualizedMessageListWithContext = (props) => {
51823
51865
  ...defaultItemHeight ? { defaultItemHeight } : {}
51824
51866
  }
51825
51867
  )
51826
- )), TypingIndicator2 && /* @__PURE__ */ import_react257.default.createElement(TypingIndicator2, null)), /* @__PURE__ */ import_react257.default.createElement(
51868
+ )), TypingIndicator2 && /* @__PURE__ */ import_react258.default.createElement(TypingIndicator2, null)), /* @__PURE__ */ import_react258.default.createElement(
51827
51869
  MessageListNotifications2,
51828
51870
  {
51829
51871
  hasNewMessages: newMessagesNotification,
@@ -51835,7 +51877,7 @@ var VirtualizedMessageListWithContext = (props) => {
51835
51877
  threadList,
51836
51878
  unreadCount: threadList ? void 0 : channelUnreadUiState?.unread_messages
51837
51879
  }
51838
- ), giphyPreviewMessage && /* @__PURE__ */ import_react257.default.createElement(GiphyPreviewMessage2, { message: giphyPreviewMessage }));
51880
+ ), giphyPreviewMessage && /* @__PURE__ */ import_react258.default.createElement(GiphyPreviewMessage2, { message: giphyPreviewMessage }));
51839
51881
  };
51840
51882
  function VirtualizedMessageList(props) {
51841
51883
  const { jumpToLatestMessage, loadMore, loadMoreNewer } = useChannelActionContext("VirtualizedMessageList");
@@ -51853,7 +51895,7 @@ function VirtualizedMessageList(props) {
51853
51895
  suppressAutoscroll
51854
51896
  } = useChannelStateContext("VirtualizedMessageList");
51855
51897
  const messages = props.messages || contextMessages;
51856
- return /* @__PURE__ */ import_react257.default.createElement(
51898
+ return /* @__PURE__ */ import_react258.default.createElement(
51857
51899
  VirtualizedMessageListWithContext,
51858
51900
  {
51859
51901
  channel,
@@ -52059,7 +52101,7 @@ var ChannelContainer = ({
52059
52101
  customClasses
52060
52102
  });
52061
52103
  const className = (0, import_clsx65.default)(chatClass, theme, channelClass, additionalClassName);
52062
- return /* @__PURE__ */ import_react258.default.createElement("div", { id: CHANNEL_CONTAINER_ID, ...props, className }, children);
52104
+ return /* @__PURE__ */ import_react259.default.createElement("div", { id: CHANNEL_CONTAINER_ID, ...props, className }, children);
52063
52105
  };
52064
52106
  var UnMemoizedChannel = (props) => {
52065
52107
  const {
@@ -52071,15 +52113,15 @@ var UnMemoizedChannel = (props) => {
52071
52113
  const { channel: contextChannel, channelsQueryState } = useChatContext("Channel");
52072
52114
  const channel = propsChannel || contextChannel;
52073
52115
  if (channelsQueryState.queryInProgress === "reload" && LoadingIndicator2) {
52074
- return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react258.default.createElement(LoadingIndicator2, null));
52116
+ return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingIndicator2, null));
52075
52117
  }
52076
52118
  if (channelsQueryState.error && LoadingErrorIndicator2) {
52077
- return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react258.default.createElement(LoadingErrorIndicator2, { error: channelsQueryState.error }));
52119
+ return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingErrorIndicator2, { error: channelsQueryState.error }));
52078
52120
  }
52079
52121
  if (!channel?.cid) {
52080
- return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, EmptyPlaceholder2);
52122
+ return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, EmptyPlaceholder2);
52081
52123
  }
52082
- return /* @__PURE__ */ import_react258.default.createElement(ChannelInner, { ...props, channel, key: channel.cid });
52124
+ return /* @__PURE__ */ import_react259.default.createElement(ChannelInner, { ...props, channel, key: channel.cid });
52083
52125
  };
52084
52126
  var ChannelInner = (props) => {
52085
52127
  const {
@@ -52105,7 +52147,7 @@ var ChannelInner = (props) => {
52105
52147
  optionalMessageInputProps = {},
52106
52148
  skipMessageDataMemoization
52107
52149
  } = props;
52108
- const channelQueryOptions = (0, import_react258.useMemo)(
52150
+ const channelQueryOptions = (0, import_react259.useMemo)(
52109
52151
  () => (0, import_lodash23.default)(propChannelQueryOptions, {
52110
52152
  messages: { limit: DEFAULT_INITIAL_CHANNEL_PAGE_SIZE }
52111
52153
  }),
@@ -52116,13 +52158,13 @@ var ChannelInner = (props) => {
52116
52158
  const chatContainerClass = getChatContainerClass(customClasses?.chatContainer);
52117
52159
  const windowsEmojiClass = useImageFlagEmojisOnWindowsClass();
52118
52160
  const thread = useThreadContext();
52119
- const [channelConfig, setChannelConfig] = (0, import_react258.useState)(channel.getConfig());
52120
- const [notifications, setNotifications] = (0, import_react258.useState)([]);
52121
- const [quotedMessage, setQuotedMessage] = (0, import_react258.useState)();
52122
- const [channelUnreadUiState, _setChannelUnreadUiState] = (0, import_react258.useState)();
52123
- const notificationTimeouts = (0, import_react258.useRef)([]);
52124
- const channelReducer = (0, import_react258.useMemo)(() => makeChannelReducer(), []);
52125
- const [state, dispatch] = (0, import_react258.useReducer)(
52161
+ const [channelConfig, setChannelConfig] = (0, import_react259.useState)(channel.getConfig());
52162
+ const [notifications, setNotifications] = (0, import_react259.useState)([]);
52163
+ const [quotedMessage, setQuotedMessage] = (0, import_react259.useState)();
52164
+ const [channelUnreadUiState, _setChannelUnreadUiState] = (0, import_react259.useState)();
52165
+ const notificationTimeouts = (0, import_react259.useRef)([]);
52166
+ const channelReducer = (0, import_react259.useMemo)(() => makeChannelReducer(), []);
52167
+ const [state, dispatch] = (0, import_react259.useReducer)(
52126
52168
  channelReducer,
52127
52169
  // channel.initialized === false if client.channel().query() was not called, e.g. ChannelList is not used
52128
52170
  // => Channel will call channel.watch() in useLayoutEffect => state.loading is used to signal the watch() call state
@@ -52134,10 +52176,10 @@ var ChannelInner = (props) => {
52134
52176
  );
52135
52177
  const jumpToMessageFromSearch = useSearchFocusedMessage();
52136
52178
  const isMounted = useIsMounted();
52137
- const originalTitle = (0, import_react258.useRef)("");
52138
- const lastRead = (0, import_react258.useRef)(void 0);
52139
- const online = (0, import_react258.useRef)(true);
52140
- const clearHighlightedMessageTimeoutId = (0, import_react258.useRef)(
52179
+ const originalTitle = (0, import_react259.useRef)("");
52180
+ const lastRead = (0, import_react259.useRef)(void 0);
52181
+ const online = (0, import_react259.useRef)(true);
52182
+ const clearHighlightedMessageTimeoutId = (0, import_react259.useRef)(
52141
52183
  null
52142
52184
  );
52143
52185
  const channelCapabilitiesArray = channel.data?.own_capabilities;
@@ -52149,14 +52191,14 @@ var ChannelInner = (props) => {
52149
52191
  trailing: true
52150
52192
  }
52151
52193
  );
52152
- const setChannelUnreadUiState = (0, import_react258.useMemo)(
52194
+ const setChannelUnreadUiState = (0, import_react259.useMemo)(
52153
52195
  () => (0, import_lodash24.default)(_setChannelUnreadUiState, 200, {
52154
52196
  leading: true,
52155
52197
  trailing: false
52156
52198
  }),
52157
52199
  []
52158
52200
  );
52159
- const markRead = (0, import_react258.useMemo)(
52201
+ const markRead = (0, import_react259.useMemo)(
52160
52202
  () => (0, import_lodash24.default)(
52161
52203
  async (options) => {
52162
52204
  const { updateChannelUiUnreadState = true } = options ?? {};
@@ -52259,7 +52301,7 @@ var ChannelInner = (props) => {
52259
52301
  }
52260
52302
  throttledCopyStateFromChannel();
52261
52303
  };
52262
- (0, import_react258.useLayoutEffect)(() => {
52304
+ (0, import_react259.useLayoutEffect)(() => {
52263
52305
  let errored = false;
52264
52306
  let done = false;
52265
52307
  (async () => {
@@ -52325,12 +52367,12 @@ var ChannelInner = (props) => {
52325
52367
  channelConfig?.read_events,
52326
52368
  initializeOnMount
52327
52369
  ]);
52328
- (0, import_react258.useEffect)(() => {
52370
+ (0, import_react259.useEffect)(() => {
52329
52371
  if (!state.thread) return;
52330
52372
  const message = state.messages?.find((m) => m.id === state.thread?.id);
52331
52373
  if (message) dispatch({ message, type: "setThread" });
52332
52374
  }, [state.messages, state.thread]);
52333
- const handleHighlightedMessageChange = (0, import_react258.useCallback)(
52375
+ const handleHighlightedMessageChange = (0, import_react259.useCallback)(
52334
52376
  ({
52335
52377
  highlightDuration,
52336
52378
  highlightedMessageId
@@ -52353,15 +52395,15 @@ var ChannelInner = (props) => {
52353
52395
  },
52354
52396
  [channel, searchController]
52355
52397
  );
52356
- (0, import_react258.useEffect)(() => {
52398
+ (0, import_react259.useEffect)(() => {
52357
52399
  if (!jumpToMessageFromSearch?.id) return;
52358
52400
  handleHighlightedMessageChange({ highlightedMessageId: jumpToMessageFromSearch.id });
52359
52401
  }, [jumpToMessageFromSearch, handleHighlightedMessageChange]);
52360
- const addNotification = (0, import_react258.useMemo)(
52402
+ const addNotification = (0, import_react259.useMemo)(
52361
52403
  () => makeAddNotifications(setNotifications, notificationTimeouts.current),
52362
52404
  []
52363
52405
  );
52364
- const loadMoreFinished = (0, import_react258.useCallback)(
52406
+ const loadMoreFinished = (0, import_react259.useCallback)(
52365
52407
  (0, import_lodash22.default)(
52366
52408
  (hasMore, messages) => {
52367
52409
  if (!isMounted.current) return;
@@ -52422,7 +52464,7 @@ var ChannelInner = (props) => {
52422
52464
  });
52423
52465
  return queryResponse.messages.length;
52424
52466
  };
52425
- const jumpToMessage = (0, import_react258.useCallback)(
52467
+ const jumpToMessage = (0, import_react259.useCallback)(
52426
52468
  async (messageId, messageLimit = DEFAULT_JUMP_TO_PAGE_SIZE, highlightDuration = DEFAULT_HIGHLIGHT_DURATION) => {
52427
52469
  dispatch({ loadingMore: true, type: "setLoadingMore" });
52428
52470
  await channel.state.loadMessageIntoState(messageId, void 0, messageLimit);
@@ -52434,14 +52476,14 @@ var ChannelInner = (props) => {
52434
52476
  },
52435
52477
  [channel, handleHighlightedMessageChange, loadMoreFinished]
52436
52478
  );
52437
- const jumpToLatestMessage = (0, import_react258.useCallback)(async () => {
52479
+ const jumpToLatestMessage = (0, import_react259.useCallback)(async () => {
52438
52480
  await channel.state.loadMessageIntoState("latest");
52439
52481
  loadMoreFinished(channel.state.messagePagination.hasPrev, channel.state.messages);
52440
52482
  dispatch({
52441
52483
  type: "jumpToLatestMessage"
52442
52484
  });
52443
52485
  }, [channel, loadMoreFinished]);
52444
- const jumpToFirstUnreadMessage = (0, import_react258.useCallback)(
52486
+ const jumpToFirstUnreadMessage = (0, import_react259.useCallback)(
52445
52487
  async (queryMessageLimit = DEFAULT_JUMP_TO_PAGE_SIZE, highlightDuration = DEFAULT_HIGHLIGHT_DURATION) => {
52446
52488
  if (!channelUnreadUiState?.unread_messages) return;
52447
52489
  let lastReadMessageId = channelUnreadUiState?.last_read_message_id;
@@ -52564,7 +52606,7 @@ var ChannelInner = (props) => {
52564
52606
  channelUnreadUiState
52565
52607
  ]
52566
52608
  );
52567
- const deleteMessage = (0, import_react258.useCallback)(
52609
+ const deleteMessage = (0, import_react259.useCallback)(
52568
52610
  async (message) => {
52569
52611
  if (!message?.id) {
52570
52612
  throw new Error("Cannot delete a message - missing message ID.");
@@ -52721,7 +52763,7 @@ var ChannelInner = (props) => {
52721
52763
  event?.preventDefault();
52722
52764
  dispatch({ type: "closeThread" });
52723
52765
  };
52724
- const loadMoreThreadFinished = (0, import_react258.useCallback)(
52766
+ const loadMoreThreadFinished = (0, import_react259.useCallback)(
52725
52767
  (0, import_lodash22.default)(
52726
52768
  (threadHasMore, threadMessages) => {
52727
52769
  dispatch({
@@ -52785,7 +52827,7 @@ var ChannelInner = (props) => {
52785
52827
  videoAttachmentSizeHandler: props.videoAttachmentSizeHandler || getVideoAttachmentConfiguration,
52786
52828
  watcher_count: state.watcherCount
52787
52829
  });
52788
- const channelActionContextValue = (0, import_react258.useMemo)(
52830
+ const channelActionContextValue = (0, import_react259.useMemo)(
52789
52831
  () => ({
52790
52832
  addNotification,
52791
52833
  closeThread,
@@ -52826,7 +52868,7 @@ var ChannelInner = (props) => {
52826
52868
  setChannelUnreadUiState
52827
52869
  ]
52828
52870
  );
52829
- const componentContextValue = (0, import_react258.useMemo)(
52871
+ const componentContextValue = (0, import_react259.useMemo)(
52830
52872
  () => ({
52831
52873
  Attachment: props.Attachment,
52832
52874
  AttachmentPreviewList: props.AttachmentPreviewList,
@@ -52958,26 +53000,26 @@ var ChannelInner = (props) => {
52958
53000
  typing
52959
53001
  });
52960
53002
  if (state.error) {
52961
- return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react258.default.createElement(LoadingErrorIndicator2, { error: state.error }));
53003
+ return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingErrorIndicator2, { error: state.error }));
52962
53004
  }
52963
53005
  if (state.loading) {
52964
- return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react258.default.createElement(LoadingIndicator2, null));
53006
+ return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingIndicator2, null));
52965
53007
  }
52966
53008
  if (!channel.watch) {
52967
- return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react258.default.createElement("div", null, t2("Channel Missing")));
53009
+ return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement("div", null, t2("Channel Missing")));
52968
53010
  }
52969
- return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, { className: windowsEmojiClass }, /* @__PURE__ */ import_react258.default.createElement(ChannelStateProvider, { value: channelStateContextValue }, /* @__PURE__ */ import_react258.default.createElement(ChannelActionProvider, { value: channelActionContextValue }, /* @__PURE__ */ import_react258.default.createElement(WithComponents, { overrides: componentContextValue }, /* @__PURE__ */ import_react258.default.createElement(TypingProvider, { value: typingContextValue }, /* @__PURE__ */ import_react258.default.createElement("div", { className: `${chatContainerClass}` }, dragAndDropWindow && /* @__PURE__ */ import_react258.default.createElement(DropzoneProvider, { ...optionalMessageInputProps }, children), !dragAndDropWindow && /* @__PURE__ */ import_react258.default.createElement(import_react258.default.Fragment, null, children)))))));
53011
+ return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, { className: windowsEmojiClass }, /* @__PURE__ */ import_react259.default.createElement(ChannelStateProvider, { value: channelStateContextValue }, /* @__PURE__ */ import_react259.default.createElement(ChannelActionProvider, { value: channelActionContextValue }, /* @__PURE__ */ import_react259.default.createElement(WithComponents, { overrides: componentContextValue }, /* @__PURE__ */ import_react259.default.createElement(TypingProvider, { value: typingContextValue }, /* @__PURE__ */ import_react259.default.createElement("div", { className: `${chatContainerClass}` }, dragAndDropWindow && /* @__PURE__ */ import_react259.default.createElement(DropzoneProvider, { ...optionalMessageInputProps }, children), !dragAndDropWindow && /* @__PURE__ */ import_react259.default.createElement(import_react259.default.Fragment, null, children)))))));
52970
53012
  };
52971
- var Channel = import_react258.default.memo(UnMemoizedChannel);
53013
+ var Channel = import_react259.default.memo(UnMemoizedChannel);
52972
53014
 
52973
53015
  // src/components/ChannelHeader/ChannelHeader.tsx
52974
- var import_react260 = __toESM(require("react"));
53016
+ var import_react261 = __toESM(require("react"));
52975
53017
 
52976
53018
  // src/components/ChannelHeader/icons.tsx
52977
- var import_react259 = __toESM(require("react"));
53019
+ var import_react260 = __toESM(require("react"));
52978
53020
  var MenuIcon2 = ({ title }) => {
52979
53021
  const { t: t2 } = useTranslationContext("MenuIcon");
52980
- return /* @__PURE__ */ import_react259.default.createElement("svg", { "data-testid": "menu-icon", viewBox: "0 0 448 512", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react259.default.createElement("title", null, title ?? t2("Menu")), /* @__PURE__ */ import_react259.default.createElement(
53022
+ return /* @__PURE__ */ import_react260.default.createElement("svg", { "data-testid": "menu-icon", viewBox: "0 0 448 512", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react260.default.createElement("title", null, title ?? t2("Menu")), /* @__PURE__ */ import_react260.default.createElement(
52981
53023
  "path",
52982
53024
  {
52983
53025
  d: "M0 88C0 74.75 10.75 64 24 64H424C437.3 64 448 74.75 448 88C448 101.3 437.3 112 424 112H24C10.75 112 0 101.3 0 88zM0 248C0 234.7 10.75 224 24 224H424C437.3 224 448 234.7 448 248C448 261.3 437.3 272 424 272H24C10.75 272 0 261.3 0 248zM424 432H24C10.75 432 0 421.3 0 408C0 394.7 10.75 384 24 384H424C437.3 384 448 394.7 448 408C448 421.3 437.3 432 424 432z",
@@ -53004,15 +53046,15 @@ var ChannelHeader = (props) => {
53004
53046
  overrideTitle
53005
53047
  });
53006
53048
  const { member_count, subtitle } = channel?.data || {};
53007
- return /* @__PURE__ */ import_react260.default.createElement("div", { className: "str-chat__channel-header" }, /* @__PURE__ */ import_react260.default.createElement(
53049
+ return /* @__PURE__ */ import_react261.default.createElement("div", { className: "str-chat__channel-header" }, /* @__PURE__ */ import_react261.default.createElement(
53008
53050
  "button",
53009
53051
  {
53010
53052
  "aria-label": t2("aria/Menu"),
53011
53053
  className: "str-chat__header-hamburger",
53012
53054
  onClick: openMobileNav
53013
53055
  },
53014
- /* @__PURE__ */ import_react260.default.createElement(MenuIcon3, null)
53015
- ), /* @__PURE__ */ import_react260.default.createElement(
53056
+ /* @__PURE__ */ import_react261.default.createElement(MenuIcon3, null)
53057
+ ), /* @__PURE__ */ import_react261.default.createElement(
53016
53058
  Avatar2,
53017
53059
  {
53018
53060
  className: "str-chat__avatar--channel-header",
@@ -53020,36 +53062,36 @@ var ChannelHeader = (props) => {
53020
53062
  image: displayImage,
53021
53063
  name: displayTitle
53022
53064
  }
53023
- ), /* @__PURE__ */ import_react260.default.createElement("div", { className: "str-chat__channel-header-end" }, /* @__PURE__ */ import_react260.default.createElement("p", { className: "str-chat__channel-header-title" }, displayTitle, " ", live && /* @__PURE__ */ import_react260.default.createElement("span", { className: "str-chat__header-livestream-livelabel" }, t2("live"))), subtitle && /* @__PURE__ */ import_react260.default.createElement("p", { className: "str-chat__channel-header-subtitle" }, subtitle), /* @__PURE__ */ import_react260.default.createElement("p", { className: "str-chat__channel-header-info" }, !live && !!member_count && member_count > 0 && /* @__PURE__ */ import_react260.default.createElement(import_react260.default.Fragment, null, t2("{{ memberCount }} members", {
53065
+ ), /* @__PURE__ */ import_react261.default.createElement("div", { className: "str-chat__channel-header-end" }, /* @__PURE__ */ import_react261.default.createElement("p", { className: "str-chat__channel-header-title" }, displayTitle, " ", live && /* @__PURE__ */ import_react261.default.createElement("span", { className: "str-chat__header-livestream-livelabel" }, t2("live"))), subtitle && /* @__PURE__ */ import_react261.default.createElement("p", { className: "str-chat__channel-header-subtitle" }, subtitle), /* @__PURE__ */ import_react261.default.createElement("p", { className: "str-chat__channel-header-info" }, !live && !!member_count && member_count > 0 && /* @__PURE__ */ import_react261.default.createElement(import_react261.default.Fragment, null, t2("{{ memberCount }} members", {
53024
53066
  memberCount: member_count
53025
53067
  }), ",", " "), t2("{{ watcherCount }} online", { watcherCount: watcher_count }))));
53026
53068
  };
53027
53069
 
53028
53070
  // src/components/Chat/Chat.tsx
53029
- var import_react264 = __toESM(require("react"));
53071
+ var import_react265 = __toESM(require("react"));
53030
53072
  var import_stream_chat6 = require("stream-chat");
53031
53073
 
53032
53074
  // src/components/Chat/hooks/useChat.ts
53033
- var import_react261 = require("react");
53075
+ var import_react262 = require("react");
53034
53076
  var useChat = ({
53035
53077
  client,
53036
53078
  defaultLanguage = "en",
53037
53079
  i18nInstance,
53038
53080
  initialNavOpen
53039
53081
  }) => {
53040
- const [translators, setTranslators] = (0, import_react261.useState)({
53082
+ const [translators, setTranslators] = (0, import_react262.useState)({
53041
53083
  t: (key) => key,
53042
53084
  tDateTimeParser: defaultDateTimeParser,
53043
53085
  userLanguage: "en"
53044
53086
  });
53045
- const [channel, setChannel] = (0, import_react261.useState)();
53046
- const [mutes, setMutes] = (0, import_react261.useState)([]);
53047
- const [navOpen, setNavOpen] = (0, import_react261.useState)(initialNavOpen);
53048
- const [latestMessageDatesByChannels, setLatestMessageDatesByChannels] = (0, import_react261.useState)({});
53087
+ const [channel, setChannel] = (0, import_react262.useState)();
53088
+ const [mutes, setMutes] = (0, import_react262.useState)([]);
53089
+ const [navOpen, setNavOpen] = (0, import_react262.useState)(initialNavOpen);
53090
+ const [latestMessageDatesByChannels, setLatestMessageDatesByChannels] = (0, import_react262.useState)({});
53049
53091
  const clientMutes = client.user?.mutes || [];
53050
53092
  const closeMobileNav = () => setNavOpen(false);
53051
53093
  const openMobileNav = () => setTimeout(() => setNavOpen(true), 100);
53052
- const appSettings = (0, import_react261.useRef)(
53094
+ const appSettings = (0, import_react262.useRef)(
53053
53095
  null
53054
53096
  );
53055
53097
  const getAppSettings = () => {
@@ -53059,9 +53101,9 @@ var useChat = ({
53059
53101
  appSettings.current = client.getAppSettings();
53060
53102
  return appSettings.current;
53061
53103
  };
53062
- (0, import_react261.useEffect)(() => {
53104
+ (0, import_react262.useEffect)(() => {
53063
53105
  if (!client) return;
53064
- const version = "12.14.0";
53106
+ const version = "12.15.0";
53065
53107
  const userAgent = client.getUserAgent();
53066
53108
  if (!userAgent.includes("stream-chat-react")) {
53067
53109
  client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);
@@ -53073,7 +53115,7 @@ var useChat = ({
53073
53115
  client.polls.unregisterSubscriptions();
53074
53116
  };
53075
53117
  }, [client]);
53076
- (0, import_react261.useEffect)(() => {
53118
+ (0, import_react262.useEffect)(() => {
53077
53119
  setMutes(clientMutes);
53078
53120
  const handleEvent = (event) => {
53079
53121
  setMutes(event.me?.mutes || []);
@@ -53081,7 +53123,7 @@ var useChat = ({
53081
53123
  client.on("notification.mutes_updated", handleEvent);
53082
53124
  return () => client.off("notification.mutes_updated", handleEvent);
53083
53125
  }, [clientMutes?.length]);
53084
- (0, import_react261.useEffect)(() => {
53126
+ (0, import_react262.useEffect)(() => {
53085
53127
  let userLanguage = client.user?.language;
53086
53128
  if (!userLanguage) {
53087
53129
  const browserLanguage = window.navigator.language.slice(0, 2);
@@ -53098,7 +53140,7 @@ var useChat = ({
53098
53140
  });
53099
53141
  });
53100
53142
  }, [i18nInstance]);
53101
- const setActiveChannel = (0, import_react261.useCallback)(
53143
+ const setActiveChannel = (0, import_react262.useCallback)(
53102
53144
  async (activeChannel, watchers = {}, event) => {
53103
53145
  if (event && event.preventDefault) event.preventDefault();
53104
53146
  if (activeChannel && Object.keys(watchers).length) {
@@ -53109,7 +53151,7 @@ var useChat = ({
53109
53151
  },
53110
53152
  []
53111
53153
  );
53112
- (0, import_react261.useEffect)(() => {
53154
+ (0, import_react262.useEffect)(() => {
53113
53155
  setLatestMessageDatesByChannels({});
53114
53156
  }, [client.user?.id]);
53115
53157
  return {
@@ -53126,7 +53168,7 @@ var useChat = ({
53126
53168
  };
53127
53169
 
53128
53170
  // src/components/Chat/hooks/useCreateChatContext.ts
53129
- var import_react262 = require("react");
53171
+ var import_react263 = require("react");
53130
53172
  var useCreateChatContext = (value) => {
53131
53173
  const {
53132
53174
  channel,
@@ -53151,7 +53193,7 @@ var useCreateChatContext = (value) => {
53151
53193
  const clientValues = `${client.clientID}${Object.keys(client.activeChannels).length}${Object.keys(client.listeners).length}${client.mutedChannels.length}
53152
53194
  ${client.user?.id}`;
53153
53195
  const mutedUsersLength = mutes.length;
53154
- const chatContext = (0, import_react262.useMemo)(
53196
+ const chatContext = (0, import_react263.useMemo)(
53155
53197
  () => ({
53156
53198
  channel,
53157
53199
  channelsQueryState,
@@ -53186,10 +53228,10 @@ var useCreateChatContext = (value) => {
53186
53228
  };
53187
53229
 
53188
53230
  // src/components/Chat/hooks/useChannelsQueryState.ts
53189
- var import_react263 = require("react");
53231
+ var import_react264 = require("react");
53190
53232
  var useChannelsQueryState = () => {
53191
- const [error, setError] = (0, import_react263.useState)(null);
53192
- const [queryInProgress, setQueryInProgress] = (0, import_react263.useState)("uninitialized");
53233
+ const [error, setError] = (0, import_react264.useState)(null);
53234
+ const [queryInProgress, setQueryInProgress] = (0, import_react264.useState)("uninitialized");
53193
53235
  return {
53194
53236
  error,
53195
53237
  queryInProgress,
@@ -53224,7 +53266,7 @@ var Chat = (props) => {
53224
53266
  translators
53225
53267
  } = useChat({ client, defaultLanguage, i18nInstance, initialNavOpen });
53226
53268
  const channelsQueryState = useChannelsQueryState();
53227
- const searchController = (0, import_react264.useMemo)(
53269
+ const searchController = (0, import_react265.useMemo)(
53228
53270
  () => customChannelSearchController ?? new import_stream_chat6.SearchController({
53229
53271
  sources: [
53230
53272
  new import_stream_chat6.ChannelSearchSource(client),
@@ -53252,11 +53294,11 @@ var Chat = (props) => {
53252
53294
  useImageFlagEmojisOnWindows
53253
53295
  });
53254
53296
  if (!translators.t) return null;
53255
- return /* @__PURE__ */ import_react264.default.createElement(ChatProvider, { value: chatContextValue }, /* @__PURE__ */ import_react264.default.createElement(TranslationProvider, { value: translators }, children));
53297
+ return /* @__PURE__ */ import_react265.default.createElement(ChatProvider, { value: chatContextValue }, /* @__PURE__ */ import_react265.default.createElement(TranslationProvider, { value: translators }, children));
53256
53298
  };
53257
53299
 
53258
53300
  // src/components/Chat/hooks/useCreateChatClient.ts
53259
- var import_react265 = require("react");
53301
+ var import_react266 = require("react");
53260
53302
  var import_stream_chat7 = require("stream-chat");
53261
53303
  var useCreateChatClient = ({
53262
53304
  apiKey,
@@ -53264,13 +53306,13 @@ var useCreateChatClient = ({
53264
53306
  tokenOrProvider,
53265
53307
  userData
53266
53308
  }) => {
53267
- const [chatClient, setChatClient] = (0, import_react265.useState)(null);
53268
- const [cachedUserData, setCachedUserData] = (0, import_react265.useState)(userData);
53309
+ const [chatClient, setChatClient] = (0, import_react266.useState)(null);
53310
+ const [cachedUserData, setCachedUserData] = (0, import_react266.useState)(userData);
53269
53311
  if (userData.id !== cachedUserData.id) {
53270
53312
  setCachedUserData(userData);
53271
53313
  }
53272
- const [cachedOptions] = (0, import_react265.useState)(options);
53273
- (0, import_react265.useEffect)(() => {
53314
+ const [cachedOptions] = (0, import_react266.useState)(options);
53315
+ (0, import_react266.useEffect)(() => {
53274
53316
  const client = new import_stream_chat7.StreamChat(apiKey, void 0, cachedOptions);
53275
53317
  let didUserConnectInterrupt = false;
53276
53318
  const connectionPromise = client.connectUser(cachedUserData, tokenOrProvider).then(() => {
@@ -53288,17 +53330,17 @@ var useCreateChatClient = ({
53288
53330
  };
53289
53331
 
53290
53332
  // src/components/Thread/Thread.tsx
53291
- var import_react270 = __toESM(require("react"));
53333
+ var import_react271 = __toESM(require("react"));
53292
53334
  var import_clsx66 = __toESM(require("clsx"));
53293
53335
 
53294
53336
  // src/components/Thread/ThreadHeader.tsx
53295
- var import_react267 = __toESM(require("react"));
53337
+ var import_react268 = __toESM(require("react"));
53296
53338
 
53297
53339
  // src/components/Thread/icons.tsx
53298
- var import_react266 = __toESM(require("react"));
53340
+ var import_react267 = __toESM(require("react"));
53299
53341
  var CloseIcon3 = ({ title }) => {
53300
53342
  const { t: t2 } = useTranslationContext("CloseIcon");
53301
- return /* @__PURE__ */ import_react266.default.createElement(
53343
+ return /* @__PURE__ */ import_react267.default.createElement(
53302
53344
  "svg",
53303
53345
  {
53304
53346
  "data-testid": "close-no-outline",
@@ -53306,8 +53348,8 @@ var CloseIcon3 = ({ title }) => {
53306
53348
  viewBox: "0 0 24 24",
53307
53349
  xmlns: "http://www.w3.org/2000/svg"
53308
53350
  },
53309
- /* @__PURE__ */ import_react266.default.createElement("title", null, title ?? t2("Close")),
53310
- /* @__PURE__ */ import_react266.default.createElement(
53351
+ /* @__PURE__ */ import_react267.default.createElement("title", null, title ?? t2("Close")),
53352
+ /* @__PURE__ */ import_react267.default.createElement(
53311
53353
  "path",
53312
53354
  {
53313
53355
  d: "M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z",
@@ -53327,7 +53369,7 @@ var ThreadHeader = (props) => {
53327
53369
  overrideImage,
53328
53370
  overrideTitle
53329
53371
  });
53330
- return /* @__PURE__ */ import_react267.default.createElement("div", { className: "str-chat__thread-header" }, /* @__PURE__ */ import_react267.default.createElement("div", { className: "str-chat__thread-header-details" }, /* @__PURE__ */ import_react267.default.createElement("div", { className: "str-chat__thread-header-title" }, t2("Thread")), /* @__PURE__ */ import_react267.default.createElement("div", { className: "str-chat__thread-header-subtitle" }, displayTitle)), /* @__PURE__ */ import_react267.default.createElement(
53372
+ return /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header" }, /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header-details" }, /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header-title" }, t2("Thread")), /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header-subtitle" }, displayTitle)), /* @__PURE__ */ import_react268.default.createElement(
53331
53373
  "button",
53332
53374
  {
53333
53375
  "aria-label": t2("aria/Close thread"),
@@ -53335,26 +53377,26 @@ var ThreadHeader = (props) => {
53335
53377
  "data-testid": "close-button",
53336
53378
  onClick: closeThread
53337
53379
  },
53338
- /* @__PURE__ */ import_react267.default.createElement(CloseIcon3, null)
53380
+ /* @__PURE__ */ import_react268.default.createElement(CloseIcon3, null)
53339
53381
  ));
53340
53382
  };
53341
53383
 
53342
53384
  // src/components/Thread/ThreadHead.tsx
53343
- var import_react269 = __toESM(require("react"));
53385
+ var import_react270 = __toESM(require("react"));
53344
53386
 
53345
53387
  // src/components/Thread/ThreadStart.tsx
53346
- var import_react268 = __toESM(require("react"));
53388
+ var import_react269 = __toESM(require("react"));
53347
53389
  var ThreadStart = () => {
53348
53390
  const { thread } = useChannelStateContext("ThreadStart");
53349
53391
  const { t: t2 } = useTranslationContext("ThreadStart");
53350
53392
  if (!thread?.reply_count) return null;
53351
- return /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-start" }, t2("replyCount", { count: thread.reply_count }));
53393
+ return /* @__PURE__ */ import_react269.default.createElement("div", { className: "str-chat__thread-start" }, t2("replyCount", { count: thread.reply_count }));
53352
53394
  };
53353
53395
 
53354
53396
  // src/components/Thread/ThreadHead.tsx
53355
53397
  var ThreadHead = (props) => {
53356
53398
  const { ThreadStart: ThreadStart2 = ThreadStart } = useComponentContext("ThreadHead");
53357
- return /* @__PURE__ */ import_react269.default.createElement("div", { className: "str-chat__parent-message-li" }, /* @__PURE__ */ import_react269.default.createElement(Message, { initialMessage: true, threadList: true, ...props }), /* @__PURE__ */ import_react269.default.createElement(ThreadStart2, null));
53399
+ return /* @__PURE__ */ import_react270.default.createElement("div", { className: "str-chat__parent-message-li" }, /* @__PURE__ */ import_react270.default.createElement(Message, { initialMessage: true, threadList: true, ...props }), /* @__PURE__ */ import_react270.default.createElement(ThreadStart2, null));
53358
53400
  };
53359
53401
 
53360
53402
  // src/components/Thread/Thread.tsx
@@ -53364,7 +53406,7 @@ var Thread = (props) => {
53364
53406
  if (!thread && !threadInstance || channelConfig?.replies === false) return null;
53365
53407
  return (
53366
53408
  // FIXME: TS is having trouble here as at least one of the two would always be defined
53367
- /* @__PURE__ */ import_react270.default.createElement(
53409
+ /* @__PURE__ */ import_react271.default.createElement(
53368
53410
  ThreadInner,
53369
53411
  {
53370
53412
  ...props,
@@ -53415,7 +53457,7 @@ var ThreadInner = (props) => {
53415
53457
  const FallbackMessage = virtualized && VirtualMessage ? VirtualMessage : ContextMessage;
53416
53458
  const MessageUIComponent = ThreadMessage || FallbackMessage;
53417
53459
  const ThreadMessageList = virtualized ? VirtualizedMessageList : MessageList;
53418
- (0, import_react270.useEffect)(() => {
53460
+ (0, import_react271.useEffect)(() => {
53419
53461
  if (thread?.id && thread?.reply_count) {
53420
53462
  loadMoreThread();
53421
53463
  }
@@ -53437,7 +53479,7 @@ var ThreadInner = (props) => {
53437
53479
  const threadClass = customClasses?.thread || (0, import_clsx66.default)("str-chat__thread-container str-chat__thread", {
53438
53480
  "str-chat__thread--virtualized": virtualized
53439
53481
  });
53440
- const head = /* @__PURE__ */ import_react270.default.createElement(
53482
+ const head = /* @__PURE__ */ import_react271.default.createElement(
53441
53483
  ThreadHead2,
53442
53484
  {
53443
53485
  key: messageAsThread.id,
@@ -53446,7 +53488,7 @@ var ThreadInner = (props) => {
53446
53488
  ...additionalParentMessageProps
53447
53489
  }
53448
53490
  );
53449
- return /* @__PURE__ */ import_react270.default.createElement("div", { className: threadClass }, /* @__PURE__ */ import_react270.default.createElement(ThreadHeader2, { closeThread, thread: messageAsThread }), /* @__PURE__ */ import_react270.default.createElement(
53491
+ return /* @__PURE__ */ import_react271.default.createElement("div", { className: threadClass }, /* @__PURE__ */ import_react271.default.createElement(ThreadHeader2, { closeThread, thread: messageAsThread }), /* @__PURE__ */ import_react271.default.createElement(
53450
53492
  ThreadMessageList,
53451
53493
  {
53452
53494
  disableDateSeparator: !enableDateSeparator,
@@ -53458,7 +53500,7 @@ var ThreadInner = (props) => {
53458
53500
  ...threadProps,
53459
53501
  ...virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps
53460
53502
  }
53461
- ), /* @__PURE__ */ import_react270.default.createElement(
53503
+ ), /* @__PURE__ */ import_react271.default.createElement(
53462
53504
  MessageInput,
53463
53505
  {
53464
53506
  focus: autoFocus,
@@ -53472,12 +53514,12 @@ var ThreadInner = (props) => {
53472
53514
  };
53473
53515
 
53474
53516
  // src/components/Window/Window.tsx
53475
- var import_react271 = __toESM(require("react"));
53517
+ var import_react272 = __toESM(require("react"));
53476
53518
  var import_clsx67 = __toESM(require("clsx"));
53477
53519
  var UnMemoizedWindow = (props) => {
53478
53520
  const { children, thread: propThread } = props;
53479
53521
  const { thread: contextThread } = useChannelStateContext("Window");
53480
- return /* @__PURE__ */ import_react271.default.createElement(
53522
+ return /* @__PURE__ */ import_react272.default.createElement(
53481
53523
  "div",
53482
53524
  {
53483
53525
  className: (0, import_clsx67.default)("str-chat__main-panel", {
@@ -53487,7 +53529,7 @@ var UnMemoizedWindow = (props) => {
53487
53529
  children
53488
53530
  );
53489
53531
  };
53490
- var Window = import_react271.default.memo(UnMemoizedWindow);
53532
+ var Window = import_react272.default.memo(UnMemoizedWindow);
53491
53533
  /*! Bundled license information:
53492
53534
 
53493
53535
  is-buffer/index.js: