stream-chat-react 12.14.0 → 12.15.1

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