stream-chat-react 11.3.0 → 11.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/browser.full-bundle.js +423 -283
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +3 -3
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Attachment/Attachment.d.ts.map +1 -1
  6. package/dist/components/Attachment/Attachment.js +1 -0
  7. package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -1
  8. package/dist/components/Attachment/AttachmentContainer.js +1 -0
  9. package/dist/components/Attachment/hooks/useAudioController.d.ts.map +1 -1
  10. package/dist/components/Attachment/hooks/useAudioController.js +1 -0
  11. package/dist/components/Channel/Channel.d.ts.map +1 -1
  12. package/dist/components/Channel/Channel.js +34 -24
  13. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
  14. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +3 -1
  15. package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -1
  16. package/dist/components/Channel/hooks/useCreateTypingContext.js +3 -1
  17. package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
  18. package/dist/components/ChannelList/ChannelList.js +3 -0
  19. package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts.map +1 -1
  20. package/dist/components/ChannelList/hooks/useChannelDeletedListener.js +1 -0
  21. package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts.map +1 -1
  22. package/dist/components/ChannelList/hooks/useChannelHiddenListener.js +1 -0
  23. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
  24. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.js +1 -0
  25. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
  26. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +1 -0
  27. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts.map +1 -1
  28. package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +1 -0
  29. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
  30. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.js +1 -0
  31. package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts.map +1 -1
  32. package/dist/components/ChannelList/hooks/useMessageNewListener.js +1 -0
  33. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
  34. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +1 -0
  35. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
  36. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +1 -0
  37. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts.map +1 -1
  38. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js +1 -0
  39. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  40. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +2 -0
  41. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts.map +1 -1
  42. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.js +1 -0
  43. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  44. package/dist/components/ChannelPreview/ChannelPreview.js +2 -0
  45. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts.map +1 -1
  46. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js +1 -0
  47. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts.map +1 -1
  48. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.js +1 -0
  49. package/dist/components/ChannelSearch/SearchBar.d.ts.map +1 -1
  50. package/dist/components/ChannelSearch/SearchBar.js +2 -0
  51. package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
  52. package/dist/components/ChannelSearch/SearchResults.js +3 -1
  53. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
  54. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +7 -1
  55. package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
  56. package/dist/components/Chat/hooks/useChat.js +2 -0
  57. package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  58. package/dist/components/Chat/hooks/useCreateChatContext.js +3 -1
  59. package/dist/components/Gallery/ModalGallery.d.ts.map +1 -1
  60. package/dist/components/Gallery/ModalGallery.js +3 -1
  61. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
  62. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +1 -0
  63. package/dist/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
  64. package/dist/components/LoadMore/LoadMoreButton.js +1 -0
  65. package/dist/components/LoadMore/LoadMorePaginator.d.ts.map +1 -1
  66. package/dist/components/LoadMore/LoadMorePaginator.js +1 -0
  67. package/dist/components/Message/MessageText.d.ts.map +1 -1
  68. package/dist/components/Message/MessageText.js +1 -0
  69. package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  70. package/dist/components/Message/hooks/useReactionHandler.js +6 -2
  71. package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
  72. package/dist/components/MessageActions/MessageActions.js +11 -3
  73. package/dist/components/MessageActions/MessageActionsBox.d.ts +3 -2
  74. package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
  75. package/dist/components/MessageActions/MessageActionsBox.js +9 -24
  76. package/dist/components/MessageActions/hooks/index.d.ts +2 -0
  77. package/dist/components/MessageActions/hooks/index.d.ts.map +1 -0
  78. package/dist/components/MessageActions/hooks/index.js +1 -0
  79. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +18 -0
  80. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts.map +1 -0
  81. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.js +32 -0
  82. package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
  83. package/dist/components/MessageInput/MessageInputFlat.js +1 -0
  84. package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
  85. package/dist/components/MessageInput/MessageInputSmall.js +1 -0
  86. package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
  87. package/dist/components/MessageInput/hooks/useAttachments.js +3 -1
  88. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  89. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -1
  90. package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
  91. package/dist/components/MessageInput/hooks/useFileUploads.js +3 -0
  92. package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
  93. package/dist/components/MessageInput/hooks/useImageUploads.js +4 -1
  94. package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts.map +1 -1
  95. package/dist/components/MessageInput/hooks/useLinkPreviews.js +5 -1
  96. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
  97. package/dist/components/MessageInput/hooks/useMessageInputText.js +6 -2
  98. package/dist/components/MessageInput/hooks/usePasteHandler.d.ts.map +1 -1
  99. package/dist/components/MessageInput/hooks/usePasteHandler.js +3 -1
  100. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
  101. package/dist/components/MessageInput/hooks/useUserTrigger.js +1 -0
  102. package/dist/components/MessageList/MessageList.d.ts +3 -0
  103. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  104. package/dist/components/MessageList/MessageList.js +11 -8
  105. package/dist/components/MessageList/ScrollToBottomButton.d.ts.map +1 -1
  106. package/dist/components/MessageList/ScrollToBottomButton.js +1 -0
  107. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  108. package/dist/components/MessageList/VirtualizedMessageList.js +12 -14
  109. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -1
  110. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +3 -1
  111. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +3 -3
  112. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
  113. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +19 -30
  114. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -1
  115. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.js +1 -0
  116. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
  117. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js +1 -0
  118. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -1
  119. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +1 -0
  120. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -1
  121. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +1 -0
  122. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -1
  123. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +1 -0
  124. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts.map +1 -1
  125. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.js +1 -0
  126. package/dist/components/MessageList/index.d.ts +1 -0
  127. package/dist/components/MessageList/index.d.ts.map +1 -1
  128. package/dist/components/MessageList/index.js +1 -0
  129. package/dist/components/MessageList/renderMessages.d.ts +22 -0
  130. package/dist/components/MessageList/renderMessages.d.ts.map +1 -0
  131. package/dist/components/MessageList/renderMessages.js +30 -0
  132. package/dist/components/MessageList/utils.d.ts.map +1 -1
  133. package/dist/components/MessageList/utils.js +1 -1
  134. package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
  135. package/dist/components/Reactions/hooks/useProcessReactions.js +3 -0
  136. package/dist/components/Thread/Thread.js +1 -0
  137. package/dist/index.cjs.js +304 -166
  138. package/dist/version.d.ts +1 -1
  139. package/dist/version.js +1 -1
  140. package/package.json +2 -1
@@ -9863,6 +9863,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
9863
9863
  audioRef.current.play();
9864
9864
  return function () {
9865
9865
  var _a;
9866
+ // eslint-disable-next-line react-hooks/exhaustive-deps
9866
9867
  (_a = audioRef.current) === null || _a === void 0 ? void 0 : _a.pause();
9867
9868
  window.clearInterval(interval);
9868
9869
  };
@@ -10028,7 +10029,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
10028
10029
  source: imageSrc,
10029
10030
  };
10030
10031
  });
10031
- }, [images]);
10032
+ },
10033
+ // eslint-disable-next-line react-hooks/exhaustive-deps
10034
+ [images]);
10032
10035
  return (React__default["default"].createElement(ImageGallery, { items: formattedArray, renderItem: renderItem, showIndex: true, showPlayButton: false, showThumbnails: false, startIndex: index }));
10033
10036
  };
10034
10037
 
@@ -14648,6 +14651,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
14648
14651
  var config = videoAttachmentSizeHandler(attachment, videoElement.current, shouldGenerateVideoThumbnail);
14649
14652
  setAttachmentConfiguration(config);
14650
14653
  }
14654
+ // eslint-disable-next-line react-hooks/exhaustive-deps
14651
14655
  }, [videoElement, videoAttachmentSizeHandler, attachment]);
14652
14656
  var content = (React__default["default"].createElement("div", { className: 'str-chat__player-wrapper', "data-testid": 'video-wrapper', ref: videoElement, style: getCssDimensionsVariables(attachment.thumb_url || '') },
14653
14657
  React__default["default"].createElement(Media, { className: 'react-player', config: { file: { attributes: { poster: attachmentConfiguration === null || attachmentConfiguration === void 0 ? void 0 : attachmentConfiguration.thumbUrl } } }, controls: true, height: '100%', url: attachmentConfiguration === null || attachmentConfiguration === void 0 ? void 0 : attachmentConfiguration.url, width: '100%' })));
@@ -14683,6 +14687,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
14683
14687
  */
14684
14688
  var Attachment = function (props) {
14685
14689
  var attachments = props.attachments;
14690
+ // eslint-disable-next-line react-hooks/exhaustive-deps
14686
14691
  var groupedAttachments = React$2.useMemo(function () { return renderGroupedAttachments(props); }, [attachments]);
14687
14692
  return (React__default["default"].createElement("div", { className: 'str-chat__attachment-list' }, ATTACHMENT_GROUPS_ORDER.reduce(function (acc, groupName) { return __spreadArray(__spreadArray([], acc, true), groupedAttachments[groupName], true); }, [])));
14688
14693
  };
@@ -44761,7 +44766,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
44761
44766
  watcher_count: watcher_count,
44762
44767
  watcherCount: watcherCount,
44763
44768
  watchers: watchers,
44764
- }); }, [
44769
+ }); },
44770
+ // eslint-disable-next-line react-hooks/exhaustive-deps
44771
+ [
44765
44772
  channelId,
44766
44773
  debounceURLEnrichmentMs,
44767
44774
  enrichURLForPreview,
@@ -44798,7 +44805,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
44798
44805
  var typingValue = Object.keys(typing || {}).join();
44799
44806
  var typingContext = React$2.useMemo(function () { return ({
44800
44807
  typing: typing,
44801
- }); }, [typingValue]);
44808
+ }); },
44809
+ // eslint-disable-next-line react-hooks/exhaustive-deps
44810
+ [typingValue]);
44802
44811
  return typingContext;
44803
44812
  };
44804
44813
 
@@ -45316,29 +45325,15 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
45316
45325
  })));
45317
45326
  };
45318
45327
 
45319
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedMessageActionsBox = function (props) {
45320
- var getMessageActions = props.getMessageActions, handleDelete = props.handleDelete, handleEdit = props.handleEdit, handleFlag = props.handleFlag, handleMute = props.handleMute, handlePin = props.handlePin, isUserMuted = props.isUserMuted, mine = props.mine, _a = props.open, open = _a === void 0 ? false : _a;
45328
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedMessageActionsBox = React__default["default"].forwardRef(function (props, ref) {
45329
+ var getMessageActions = props.getMessageActions, handleDelete = props.handleDelete, handleEdit = props.handleEdit, handleFlag = props.handleFlag, handleMute = props.handleMute, handlePin = props.handlePin, isUserMuted = props.isUserMuted;
45330
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
45331
+ props.mine; var _a = props.open, open = _a === void 0 ? false : _a, restDivProps = __rest(props, ["getMessageActions", "handleDelete", "handleEdit", "handleFlag", "handleMute", "handlePin", "isUserMuted", "mine", "open"]);
45321
45332
  var _b = useComponentContext('MessageActionsBox').CustomMessageActionsList, CustomMessageActionsList$1 = _b === void 0 ? CustomMessageActionsList : _b;
45322
45333
  var setQuotedMessage = useChannelActionContext('MessageActionsBox').setQuotedMessage;
45323
- var _c = useMessageContext('MessageActionsBox'), customMessageActions = _c.customMessageActions, message = _c.message, messageListRect = _c.messageListRect;
45334
+ var _c = useMessageContext('MessageActionsBox'), customMessageActions = _c.customMessageActions, message = _c.message;
45324
45335
  var t = useTranslationContext('MessageActionsBox').t;
45325
- var _d = React$2.useState(false), reverse = _d[0], setReverse = _d[1];
45326
45336
  var messageActions = getMessageActions();
45327
- var checkIfReverse = React$2.useCallback(function (containerElement) {
45328
- if (!containerElement) {
45329
- setReverse(false);
45330
- return;
45331
- }
45332
- if (open) {
45333
- var containerRect = containerElement.getBoundingClientRect();
45334
- if (mine) {
45335
- setReverse(!!messageListRect && containerRect.left < messageListRect.left);
45336
- }
45337
- else {
45338
- setReverse(!!messageListRect && containerRect.right + 5 > messageListRect.right);
45339
- }
45340
- }
45341
- }, [messageListRect, mine, open]);
45342
45337
  var handleQuote = function () {
45343
45338
  setQuotedMessage(message);
45344
45339
  var elements = message.parent_id
@@ -45350,12 +45345,10 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
45350
45345
  }
45351
45346
  };
45352
45347
  var rootClassName = clsx('str-chat__message-actions-box', {
45353
- 'str-chat__message-actions-box--mine': mine,
45354
45348
  'str-chat__message-actions-box--open': open,
45355
- 'str-chat__message-actions-box--reverse': reverse,
45356
45349
  });
45357
45350
  var buttonClassName = 'str-chat__message-actions-list-item str-chat__message-actions-list-item-button';
45358
- return (React__default["default"].createElement("div", { className: rootClassName, "data-testid": 'message-actions-box', ref: checkIfReverse },
45351
+ return (React__default["default"].createElement("div", __assign({}, restDivProps, { className: rootClassName, "data-testid": 'message-actions-box', ref: ref }),
45359
45352
  React__default["default"].createElement("div", { "aria-label": 'Message Options', className: 'str-chat__message-actions-list', role: 'listbox' },
45360
45353
  React__default["default"].createElement(CustomMessageActionsList$1, { customMessageActions: customMessageActions, message: message }),
45361
45354
  messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 && (React__default["default"].createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleQuote, role: 'option' }, t('Reply'))),
@@ -45364,126 +45357,12 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
45364
45357
  messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (React__default["default"].createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleMute, role: 'option' }, isUserMuted() ? t('Unmute') : t('Mute'))),
45365
45358
  messageActions.indexOf(MESSAGE_ACTIONS.edit) > -1 && (React__default["default"].createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleEdit, role: 'option' }, t('Edit Message'))),
45366
45359
  messageActions.indexOf(MESSAGE_ACTIONS.delete) > -1 && (React__default["default"].createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleDelete, role: 'option' }, t('Delete'))))));
45367
- };
45360
+ });
45368
45361
  /**
45369
45362
  * A popup box that displays the available actions on a message, such as edit, delete, pin, etc.
45370
45363
  */
45371
45364
  var MessageActionsBox = React__default["default"].memo(UnMemoizedMessageActionsBox);
45372
45365
 
45373
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var MessageActions = function (props) {
45374
- var _a = props.ActionsIcon, ActionsIcon$1 = _a === void 0 ? ActionsIcon : _a, _b = props.customWrapperClass, customWrapperClass = _b === void 0 ? '' : _b, propGetMessageActions = props.getMessageActions, propHandleDelete = props.handleDelete, propHandleFlag = props.handleFlag, propHandleMute = props.handleMute, propHandlePin = props.handlePin, inline = props.inline, propMessage = props.message, messageWrapperRef = props.messageWrapperRef, mine = props.mine;
45375
- var mutes = useChatContext('MessageActions').mutes;
45376
- var _c = useMessageContext('MessageActions'), customMessageActions = _c.customMessageActions, contextGetMessageActions = _c.getMessageActions, contextHandleDelete = _c.handleDelete, contextHandleFlag = _c.handleFlag, contextHandleMute = _c.handleMute, contextHandlePin = _c.handlePin, isMyMessage = _c.isMyMessage, contextMessage = _c.message, setEditingState = _c.setEditingState;
45377
- var getMessageActions = propGetMessageActions || contextGetMessageActions;
45378
- var handleDelete = propHandleDelete || contextHandleDelete;
45379
- var handleFlag = propHandleFlag || contextHandleFlag;
45380
- var handleMute = propHandleMute || contextHandleMute;
45381
- var handlePin = propHandlePin || contextHandlePin;
45382
- var message = propMessage || contextMessage;
45383
- var _d = React$2.useState(false), actionsBoxOpen = _d[0], setActionsBoxOpen = _d[1];
45384
- var isMuted = React$2.useCallback(function () { return isUserMuted(message, mutes); }, [message, mutes]);
45385
- var hideOptions = React$2.useCallback(function (event) {
45386
- if (event instanceof KeyboardEvent && event.key !== 'Escape') {
45387
- return;
45388
- }
45389
- setActionsBoxOpen(false);
45390
- }, []);
45391
- var messageActions = getMessageActions();
45392
- var messageDeletedAt = !!(message === null || message === void 0 ? void 0 : message.deleted_at);
45393
- React$2.useEffect(function () {
45394
- if (messageWrapperRef === null || messageWrapperRef === void 0 ? void 0 : messageWrapperRef.current) {
45395
- messageWrapperRef.current.addEventListener('mouseleave', hideOptions);
45396
- }
45397
- }, [hideOptions, messageWrapperRef]);
45398
- React$2.useEffect(function () {
45399
- if (messageDeletedAt) {
45400
- document.removeEventListener('click', hideOptions);
45401
- }
45402
- }, [hideOptions, messageDeletedAt]);
45403
- React$2.useEffect(function () {
45404
- if (!actionsBoxOpen)
45405
- return;
45406
- document.addEventListener('click', hideOptions);
45407
- document.addEventListener('keyup', hideOptions);
45408
- return function () {
45409
- document.removeEventListener('click', hideOptions);
45410
- document.removeEventListener('keyup', hideOptions);
45411
- };
45412
- }, [actionsBoxOpen, hideOptions]);
45413
- if (!messageActions.length && !customMessageActions)
45414
- return null;
45415
- return (React__default["default"].createElement(MessageActionsWrapper, { customWrapperClass: customWrapperClass, inline: inline, setActionsBoxOpen: setActionsBoxOpen },
45416
- React__default["default"].createElement(MessageActionsBox, { getMessageActions: getMessageActions, handleDelete: handleDelete, handleEdit: setEditingState, handleFlag: handleFlag, handleMute: handleMute, handlePin: handlePin, isUserMuted: isMuted, mine: mine ? mine() : isMyMessage(), open: actionsBoxOpen }),
45417
- React__default["default"].createElement("button", { "aria-expanded": actionsBoxOpen, "aria-haspopup": 'true', "aria-label": 'Open Message Actions Menu', className: 'str-chat__message-actions-box-button' },
45418
- React__default["default"].createElement(ActionsIcon$1, { className: 'str-chat__message-action-icon' }))));
45419
- };
45420
- var MessageActionsWrapper = function (props) {
45421
- var children = props.children, customWrapperClass = props.customWrapperClass, inline = props.inline, setActionsBoxOpen = props.setActionsBoxOpen;
45422
- var defaultWrapperClass = "\n str-chat__message-simple__actions__action\n str-chat__message-simple__actions__action--options\n str-chat__message-actions-container";
45423
- var wrapperClass = customWrapperClass || defaultWrapperClass;
45424
- var onClickOptionsAction = function (event) {
45425
- event.stopPropagation();
45426
- setActionsBoxOpen(function (prev) { return !prev; });
45427
- };
45428
- var wrapperProps = {
45429
- className: wrapperClass,
45430
- 'data-testid': 'message-actions',
45431
- onClick: onClickOptionsAction,
45432
- };
45433
- if (inline)
45434
- return React__default["default"].createElement("span", __assign({}, wrapperProps), children);
45435
- return React__default["default"].createElement("div", __assign({}, wrapperProps), children);
45436
- };
45437
-
45438
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
45439
-
45440
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedMessageOptions = function (props) {
45441
- var _a = props.ActionsIcon, ActionsIcon$1 = _a === void 0 ? ActionsIcon : _a, _b = props.displayReplies, displayReplies = _b === void 0 ? true : _b, propHandleOpenThread = props.handleOpenThread, messageWrapperRef = props.messageWrapperRef, _c = props.ReactionIcon, ReactionIcon$1 = _c === void 0 ? ReactionIcon : _c, _d = props.theme, theme = _d === void 0 ? 'simple' : _d, _e = props.ThreadIcon, ThreadIcon$1 = _e === void 0 ? ThreadIcon : _e;
45442
- var _f = useMessageContext('MessageOptions'), customMessageActions = _f.customMessageActions, getMessageActions = _f.getMessageActions, contextHandleOpenThread = _f.handleOpenThread, initialMessage = _f.initialMessage, message = _f.message, onReactionListClick = _f.onReactionListClick, threadList = _f.threadList;
45443
- var handleOpenThread = propHandleOpenThread || contextHandleOpenThread;
45444
- var messageActions = getMessageActions();
45445
- var showActionsBox = showMessageActionsBox(messageActions, threadList) || !!customMessageActions;
45446
- var shouldShowReactions = messageActions.indexOf(MESSAGE_ACTIONS.react) > -1;
45447
- var shouldShowReplies = messageActions.indexOf(MESSAGE_ACTIONS.reply) > -1 && displayReplies && !threadList;
45448
- if (!message.type ||
45449
- message.type === 'error' ||
45450
- message.type === 'system' ||
45451
- message.type === 'ephemeral' ||
45452
- message.status === 'failed' ||
45453
- message.status === 'sending' ||
45454
- initialMessage) {
45455
- return null;
45456
- }
45457
- var rootClassName = "str-chat__message-".concat(theme, "__actions str-chat__message-options");
45458
- return (React__default["default"].createElement("div", { className: rootClassName, "data-testid": 'message-options' },
45459
- showActionsBox && (React__default["default"].createElement(MessageActions, { ActionsIcon: ActionsIcon$1, messageWrapperRef: messageWrapperRef })),
45460
- shouldShowReplies && (React__default["default"].createElement("button", { "aria-label": 'Open Thread', className: "str-chat__message-".concat(theme, "__actions__action str-chat__message-").concat(theme, "__actions__action--thread str-chat__message-reply-in-thread-button"), "data-testid": 'thread-action', onClick: handleOpenThread },
45461
- React__default["default"].createElement(ThreadIcon$1, { className: 'str-chat__message-action-icon' }))),
45462
- shouldShowReactions && (React__default["default"].createElement("button", { "aria-label": 'Open Reaction Selector', className: "str-chat__message-".concat(theme, "__actions__action str-chat__message-").concat(theme, "__actions__action--reactions str-chat__message-reactions-button"), "data-testid": 'message-reaction-action', onClick: onReactionListClick },
45463
- React__default["default"].createElement(ReactionIcon$1, { className: 'str-chat__message-action-icon' })))));
45464
- };
45465
- var MessageOptions = React__default["default"].memo(UnMemoizedMessageOptions);
45466
-
45467
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedMessageRepliesCountButton = function (props) {
45468
- var labelPlural = props.labelPlural, labelSingle = props.labelSingle, onClick = props.onClick, _a = props.reply_count, reply_count = _a === void 0 ? 0 : _a;
45469
- var t = useTranslationContext('MessageRepliesCountButton').t;
45470
- var themeVersion = useChatContext('MessageRepliesCountButton').themeVersion;
45471
- if (!reply_count)
45472
- return null;
45473
- var replyCountText = t('replyCount', { count: reply_count });
45474
- if (labelPlural && reply_count > 1) {
45475
- replyCountText = "".concat(reply_count, " ").concat(labelPlural);
45476
- }
45477
- else if (labelSingle) {
45478
- replyCountText = "1 ".concat(labelSingle);
45479
- }
45480
- return (React__default["default"].createElement("div", { className: 'str-chat__message-simple-reply-button str-chat__message-replies-count-button-wrapper' },
45481
- React__default["default"].createElement("button", { className: 'str-chat__message-replies-count-button', "data-testid": 'replies-count-button', onClick: onClick },
45482
- themeVersion === '1' && React__default["default"].createElement(ReplyIcon, null),
45483
- replyCountText)));
45484
- };
45485
- var MessageRepliesCountButton = React__default["default"].memo(UnMemoizedMessageRepliesCountButton);
45486
-
45487
45366
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};React__namespace.createContext();
45488
45367
  React__namespace.createContext();
45489
45368
 
@@ -47418,6 +47297,160 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
47418
47297
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};// Public components
47419
47298
  // Public types
47420
47299
 
47300
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};function useMessageActionsBoxPopper(_a) {
47301
+ var open = _a.open, placement = _a.placement, referenceElement = _a.referenceElement;
47302
+ var popperElementRef = React$2.useRef(null);
47303
+ var _b = usePopper(referenceElement, popperElementRef.current, {
47304
+ modifiers: [
47305
+ {
47306
+ name: 'eventListeners',
47307
+ options: {
47308
+ // It's not safe to update popper position on resize and scroll, since popper's
47309
+ // reference element might not be visible at the time.
47310
+ resize: false,
47311
+ scroll: false,
47312
+ },
47313
+ },
47314
+ ],
47315
+ placement: placement,
47316
+ }), attributes = _b.attributes, styles = _b.styles, update = _b.update;
47317
+ React$2.useEffect(function () {
47318
+ if (open) {
47319
+ // Since the popper's reference element might not be (and usually is not) visible
47320
+ // all the time, it's safer to force popper update before showing it.
47321
+ update === null || update === void 0 ? void 0 : update();
47322
+ }
47323
+ }, [open, update]);
47324
+ return {
47325
+ attributes: attributes,
47326
+ popperElementRef: popperElementRef,
47327
+ styles: styles,
47328
+ };
47329
+ }
47330
+
47331
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
47332
+
47333
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var MessageActions = function (props) {
47334
+ var _a = props.ActionsIcon, ActionsIcon$1 = _a === void 0 ? ActionsIcon : _a, _b = props.customWrapperClass, customWrapperClass = _b === void 0 ? '' : _b, propGetMessageActions = props.getMessageActions, propHandleDelete = props.handleDelete, propHandleFlag = props.handleFlag, propHandleMute = props.handleMute, propHandlePin = props.handlePin, inline = props.inline, propMessage = props.message, messageWrapperRef = props.messageWrapperRef, mine = props.mine;
47335
+ var mutes = useChatContext('MessageActions').mutes;
47336
+ var _c = useMessageContext('MessageActions'), customMessageActions = _c.customMessageActions, contextGetMessageActions = _c.getMessageActions, contextHandleDelete = _c.handleDelete, contextHandleFlag = _c.handleFlag, contextHandleMute = _c.handleMute, contextHandlePin = _c.handlePin, isMyMessage = _c.isMyMessage, contextMessage = _c.message, setEditingState = _c.setEditingState;
47337
+ var getMessageActions = propGetMessageActions || contextGetMessageActions;
47338
+ var handleDelete = propHandleDelete || contextHandleDelete;
47339
+ var handleFlag = propHandleFlag || contextHandleFlag;
47340
+ var handleMute = propHandleMute || contextHandleMute;
47341
+ var handlePin = propHandlePin || contextHandlePin;
47342
+ var message = propMessage || contextMessage;
47343
+ var isMine = mine ? mine() : isMyMessage();
47344
+ var _d = React$2.useState(false), actionsBoxOpen = _d[0], setActionsBoxOpen = _d[1];
47345
+ var isMuted = React$2.useCallback(function () { return isUserMuted(message, mutes); }, [message, mutes]);
47346
+ var hideOptions = React$2.useCallback(function (event) {
47347
+ if (event instanceof KeyboardEvent && event.key !== 'Escape') {
47348
+ return;
47349
+ }
47350
+ setActionsBoxOpen(false);
47351
+ }, []);
47352
+ var messageActions = getMessageActions();
47353
+ var messageDeletedAt = !!(message === null || message === void 0 ? void 0 : message.deleted_at);
47354
+ React$2.useEffect(function () {
47355
+ if (messageWrapperRef === null || messageWrapperRef === void 0 ? void 0 : messageWrapperRef.current) {
47356
+ messageWrapperRef.current.addEventListener('mouseleave', hideOptions);
47357
+ }
47358
+ }, [hideOptions, messageWrapperRef]);
47359
+ React$2.useEffect(function () {
47360
+ if (messageDeletedAt) {
47361
+ document.removeEventListener('click', hideOptions);
47362
+ }
47363
+ }, [hideOptions, messageDeletedAt]);
47364
+ React$2.useEffect(function () {
47365
+ if (!actionsBoxOpen)
47366
+ return;
47367
+ document.addEventListener('click', hideOptions);
47368
+ document.addEventListener('keyup', hideOptions);
47369
+ return function () {
47370
+ document.removeEventListener('click', hideOptions);
47371
+ document.removeEventListener('keyup', hideOptions);
47372
+ };
47373
+ }, [actionsBoxOpen, hideOptions]);
47374
+ var actionsBoxButtonRef = React$2.useRef(null);
47375
+ var _e = useMessageActionsBoxPopper({
47376
+ open: actionsBoxOpen,
47377
+ placement: isMine ? 'top-end' : 'top-start',
47378
+ referenceElement: actionsBoxButtonRef.current,
47379
+ }), attributes = _e.attributes, popperElementRef = _e.popperElementRef, styles = _e.styles;
47380
+ if (!messageActions.length && !customMessageActions)
47381
+ return null;
47382
+ return (React__default["default"].createElement(MessageActionsWrapper, { customWrapperClass: customWrapperClass, inline: inline, setActionsBoxOpen: setActionsBoxOpen },
47383
+ React__default["default"].createElement(MessageActionsBox, __assign({}, attributes.popper, { getMessageActions: getMessageActions, handleDelete: handleDelete, handleEdit: setEditingState, handleFlag: handleFlag, handleMute: handleMute, handlePin: handlePin, isUserMuted: isMuted, mine: isMine, open: actionsBoxOpen, ref: popperElementRef, style: styles.popper })),
47384
+ React__default["default"].createElement("button", { "aria-expanded": actionsBoxOpen, "aria-haspopup": 'true', "aria-label": 'Open Message Actions Menu', className: 'str-chat__message-actions-box-button', ref: actionsBoxButtonRef },
47385
+ React__default["default"].createElement(ActionsIcon$1, { className: 'str-chat__message-action-icon' }))));
47386
+ };
47387
+ var MessageActionsWrapper = function (props) {
47388
+ var children = props.children, customWrapperClass = props.customWrapperClass, inline = props.inline, setActionsBoxOpen = props.setActionsBoxOpen;
47389
+ var defaultWrapperClass = "\n str-chat__message-simple__actions__action\n str-chat__message-simple__actions__action--options\n str-chat__message-actions-container";
47390
+ var wrapperClass = customWrapperClass || defaultWrapperClass;
47391
+ var onClickOptionsAction = function (event) {
47392
+ event.stopPropagation();
47393
+ setActionsBoxOpen(function (prev) { return !prev; });
47394
+ };
47395
+ var wrapperProps = {
47396
+ className: wrapperClass,
47397
+ 'data-testid': 'message-actions',
47398
+ onClick: onClickOptionsAction,
47399
+ };
47400
+ if (inline)
47401
+ return React__default["default"].createElement("span", __assign({}, wrapperProps), children);
47402
+ return React__default["default"].createElement("div", __assign({}, wrapperProps), children);
47403
+ };
47404
+
47405
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
47406
+
47407
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedMessageOptions = function (props) {
47408
+ var _a = props.ActionsIcon, ActionsIcon$1 = _a === void 0 ? ActionsIcon : _a, _b = props.displayReplies, displayReplies = _b === void 0 ? true : _b, propHandleOpenThread = props.handleOpenThread, messageWrapperRef = props.messageWrapperRef, _c = props.ReactionIcon, ReactionIcon$1 = _c === void 0 ? ReactionIcon : _c, _d = props.theme, theme = _d === void 0 ? 'simple' : _d, _e = props.ThreadIcon, ThreadIcon$1 = _e === void 0 ? ThreadIcon : _e;
47409
+ var _f = useMessageContext('MessageOptions'), customMessageActions = _f.customMessageActions, getMessageActions = _f.getMessageActions, contextHandleOpenThread = _f.handleOpenThread, initialMessage = _f.initialMessage, message = _f.message, onReactionListClick = _f.onReactionListClick, threadList = _f.threadList;
47410
+ var handleOpenThread = propHandleOpenThread || contextHandleOpenThread;
47411
+ var messageActions = getMessageActions();
47412
+ var showActionsBox = showMessageActionsBox(messageActions, threadList) || !!customMessageActions;
47413
+ var shouldShowReactions = messageActions.indexOf(MESSAGE_ACTIONS.react) > -1;
47414
+ var shouldShowReplies = messageActions.indexOf(MESSAGE_ACTIONS.reply) > -1 && displayReplies && !threadList;
47415
+ if (!message.type ||
47416
+ message.type === 'error' ||
47417
+ message.type === 'system' ||
47418
+ message.type === 'ephemeral' ||
47419
+ message.status === 'failed' ||
47420
+ message.status === 'sending' ||
47421
+ initialMessage) {
47422
+ return null;
47423
+ }
47424
+ var rootClassName = "str-chat__message-".concat(theme, "__actions str-chat__message-options");
47425
+ return (React__default["default"].createElement("div", { className: rootClassName, "data-testid": 'message-options' },
47426
+ showActionsBox && (React__default["default"].createElement(MessageActions, { ActionsIcon: ActionsIcon$1, messageWrapperRef: messageWrapperRef })),
47427
+ shouldShowReplies && (React__default["default"].createElement("button", { "aria-label": 'Open Thread', className: "str-chat__message-".concat(theme, "__actions__action str-chat__message-").concat(theme, "__actions__action--thread str-chat__message-reply-in-thread-button"), "data-testid": 'thread-action', onClick: handleOpenThread },
47428
+ React__default["default"].createElement(ThreadIcon$1, { className: 'str-chat__message-action-icon' }))),
47429
+ shouldShowReactions && (React__default["default"].createElement("button", { "aria-label": 'Open Reaction Selector', className: "str-chat__message-".concat(theme, "__actions__action str-chat__message-").concat(theme, "__actions__action--reactions str-chat__message-reactions-button"), "data-testid": 'message-reaction-action', onClick: onReactionListClick },
47430
+ React__default["default"].createElement(ReactionIcon$1, { className: 'str-chat__message-action-icon' })))));
47431
+ };
47432
+ var MessageOptions = React__default["default"].memo(UnMemoizedMessageOptions);
47433
+
47434
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedMessageRepliesCountButton = function (props) {
47435
+ var labelPlural = props.labelPlural, labelSingle = props.labelSingle, onClick = props.onClick, _a = props.reply_count, reply_count = _a === void 0 ? 0 : _a;
47436
+ var t = useTranslationContext('MessageRepliesCountButton').t;
47437
+ var themeVersion = useChatContext('MessageRepliesCountButton').themeVersion;
47438
+ if (!reply_count)
47439
+ return null;
47440
+ var replyCountText = t('replyCount', { count: reply_count });
47441
+ if (labelPlural && reply_count > 1) {
47442
+ replyCountText = "".concat(reply_count, " ").concat(labelPlural);
47443
+ }
47444
+ else if (labelSingle) {
47445
+ replyCountText = "1 ".concat(labelSingle);
47446
+ }
47447
+ return (React__default["default"].createElement("div", { className: 'str-chat__message-simple-reply-button str-chat__message-replies-count-button-wrapper' },
47448
+ React__default["default"].createElement("button", { className: 'str-chat__message-replies-count-button', "data-testid": 'replies-count-button', onClick: onClick },
47449
+ themeVersion === '1' && React__default["default"].createElement(ReplyIcon, null),
47450
+ replyCountText)));
47451
+ };
47452
+ var MessageRepliesCountButton = React__default["default"].memo(UnMemoizedMessageRepliesCountButton);
47453
+
47421
47454
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var Tooltip = function (_a) {
47422
47455
  var children = _a.children, rest = __rest(_a, ["children"]);
47423
47456
  return (React__default["default"].createElement("div", __assign({ className: 'str-chat__tooltip' }, rest), children));
@@ -47544,6 +47577,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
47544
47577
  var message = propMessage || contextMessage;
47545
47578
  var hasAttachment = messageHasAttachments(message);
47546
47579
  var messageTextToRender = ((_b = message.i18n) === null || _b === void 0 ? void 0 : _b["".concat(userLanguage, "_text")]) || message.text;
47580
+ // eslint-disable-next-line react-hooks/exhaustive-deps
47547
47581
  var messageText = React$2.useMemo(function () { return renderText$1(messageTextToRender, message.mentioned_users); }, [
47548
47582
  message.mentioned_users,
47549
47583
  messageTextToRender,
@@ -48063,6 +48097,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
48063
48097
  });
48064
48098
  return Object.values(uniqueUsers);
48065
48099
  }, [members, watchers]);
48100
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48066
48101
  var queryMembersThrottled = React$2.useCallback(lodash_throttle(function (query, onReady) { return __awaiter(void 0, void 0, void 0, function () {
48067
48102
  var response, users, error_1;
48068
48103
  return __generator(this, function (_a) {
@@ -48372,6 +48407,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
48372
48407
  channel === null || channel === void 0 ? void 0 : channel.off('message.deleted', handleQuotedMessageUpdate);
48373
48408
  channel === null || channel === void 0 ? void 0 : channel.off('message.updated', handleQuotedMessageUpdate);
48374
48409
  };
48410
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48375
48411
  }, [channel, quotedMessage]);
48376
48412
  return themeVersion === '2' ? (React__default["default"].createElement(MessageInputV2, null)) : (React__default["default"].createElement(MessageInputV1, null));
48377
48413
  };
@@ -48539,6 +48575,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
48539
48575
  var removeImage = React$2.useCallback(function (id) {
48540
48576
  dispatch({ id: id, type: 'removeImageUpload' });
48541
48577
  // TODO: cancel upload if still uploading
48578
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48542
48579
  }, []);
48543
48580
  var uploadImage = React$2.useCallback(function (id) { return __awaiter(void 0, void 0, void 0, function () {
48544
48581
  var img, file, canUpload, response, error_1, errorMessage, alreadyRemoved;
@@ -48614,7 +48651,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
48614
48651
  return [2 /*return*/];
48615
48652
  }
48616
48653
  });
48617
- }); }, [imageUploads, channel, doImageUploadRequest, errorHandler, removeImage]);
48654
+ }); },
48655
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48656
+ [imageUploads, channel, doImageUploadRequest, errorHandler, removeImage]);
48618
48657
  React$2.useEffect(function () {
48619
48658
  var upload = Object.values(imageUploads).find(function (imageUpload) { return imageUpload.state === 'uploading' && imageUpload.file; });
48620
48659
  if (!upload)
@@ -48636,10 +48675,12 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
48636
48675
  var t = useTranslationContext('useFileUploads').t;
48637
48676
  var uploadFile = React$2.useCallback(function (id) {
48638
48677
  dispatch({ id: id, state: 'uploading', type: 'setFileUpload' });
48678
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48639
48679
  }, []);
48640
48680
  var removeFile = React$2.useCallback(function (id) {
48641
48681
  // TODO: cancel upload if still uploading
48642
48682
  dispatch({ id: id, type: 'removeFileUpload' });
48683
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48643
48684
  }, []);
48644
48685
  React$2.useEffect(function () {
48645
48686
  (function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -48711,6 +48752,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
48711
48752
  }
48712
48753
  });
48713
48754
  }); })();
48755
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48714
48756
  }, [fileUploads, channel, doFileUploadRequest, errorHandler, removeFile]);
48715
48757
  return {
48716
48758
  removeFile: removeFile,
@@ -48762,7 +48804,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
48762
48804
  }
48763
48805
  });
48764
48806
  (_a = textareaRef === null || textareaRef === void 0 ? void 0 : textareaRef.current) === null || _a === void 0 ? void 0 : _a.focus();
48765
- }, [maxFilesLeft, noFiles]);
48807
+ },
48808
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48809
+ [maxFilesLeft, noFiles]);
48766
48810
  return {
48767
48811
  maxFilesLeft: maxFilesLeft,
48768
48812
  numberOfUploads: numberOfUploads,
@@ -48813,7 +48857,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
48813
48857
  },
48814
48858
  type: 'setText',
48815
48859
  });
48816
- }, [additionalTextareaProps, newCursorPosition, textareaRef]);
48860
+ },
48861
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48862
+ [additionalTextareaProps, newCursorPosition, textareaRef]);
48817
48863
  React$2.useEffect(function () {
48818
48864
  var textareaElement = textareaRef.current;
48819
48865
  if (textareaElement && newCursorPosition.current !== undefined) {
@@ -48836,7 +48882,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
48836
48882
  if (publishTypingEvent && newText && channel) {
48837
48883
  streamChat.logChatPromiseExecution(channel.keystroke(parent === null || parent === void 0 ? void 0 : parent.id), 'start typing event');
48838
48884
  }
48839
- }, [channel, findAndEnqueueURLsToEnrich, parent, publishTypingEvent]);
48885
+ },
48886
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48887
+ [channel, findAndEnqueueURLsToEnrich, parent, publishTypingEvent]);
48840
48888
  return {
48841
48889
  handleChange: handleChange,
48842
48890
  insertText: insertText,
@@ -49070,7 +49118,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
49070
49118
  }
49071
49119
  });
49072
49120
  }); })(clipboardEvent);
49073
- }, [insertText, uploadNewFiles]);
49121
+ },
49122
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49123
+ [insertText, uploadNewFiles]);
49074
49124
  return { onPaste: onPaste };
49075
49125
  };
49076
49126
 
@@ -49094,7 +49144,10 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
49094
49144
  mode: exports.SetLinkPreviewMode.UPSERT,
49095
49145
  type: 'setLinkPreviews',
49096
49146
  });
49097
- }, [onLinkPreviewDismissed]);
49147
+ },
49148
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49149
+ [onLinkPreviewDismissed]);
49150
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49098
49151
  var findAndEnqueueURLsToEnrich = React$2.useCallback(lodash_debounce(function (text, mode) {
49099
49152
  if (mode === void 0) { mode = exports.SetLinkPreviewMode.SET; }
49100
49153
  var urls = findURLFn
@@ -49160,6 +49213,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
49160
49213
  });
49161
49214
  });
49162
49215
  });
49216
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49163
49217
  }, [shouldDiscardEnrichQueries, linkPreviews]);
49164
49218
  return {
49165
49219
  cancelURLEnrichment: cancelURLEnrichment,
@@ -49453,7 +49507,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
49453
49507
  uploadImage: uploadImage,
49454
49508
  uploadNewFiles: uploadNewFiles,
49455
49509
  useMentionsTransliteration: useMentionsTransliteration,
49456
- }); }, [
49510
+ }); },
49511
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49512
+ [
49457
49513
  cancelURLEnrichment,
49458
49514
  cooldownInterval,
49459
49515
  cooldownRemaining,
@@ -49536,6 +49592,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
49536
49592
  channel === null || channel === void 0 ? void 0 : channel.off('message.deleted', handleQuotedMessageUpdate);
49537
49593
  channel === null || channel === void 0 ? void 0 : channel.off('message.updated', handleQuotedMessageUpdate);
49538
49594
  };
49595
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49539
49596
  }, [channel, quotedMessage]);
49540
49597
  return (React__default["default"].createElement("div", { className: 'str-chat__small-message-input__wrapper' },
49541
49598
  React__default["default"].createElement(ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
@@ -49698,8 +49755,11 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
49698
49755
  var message = useMessageContext('useProcessReactions').message;
49699
49756
  var contextReactionOptions = useComponentContext('useProcessReactions').reactionOptions;
49700
49757
  var reactionOptions = propReactionOptions !== null && propReactionOptions !== void 0 ? propReactionOptions : contextReactionOptions;
49758
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49701
49759
  var latestReactions = propReactions || message.latest_reactions || [];
49760
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49702
49761
  var ownReactions = propOwnReactions || (message === null || message === void 0 ? void 0 : message.own_reactions) || [];
49762
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49703
49763
  var reactionCounts = propReactionCounts || message.reaction_counts || {};
49704
49764
  var iHaveReactedWithReaction = React$2.useCallback(function (reactionType) { return ownReactions.find(function (reaction) { return reaction.type === reactionType; }); }, [ownReactions]);
49705
49765
  var getEmojiByReactionType = React$2.useCallback(function (reactionType) { return reactionOptions.find(function (_a) {
@@ -50211,7 +50271,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
50211
50271
  // The MessageList should have configurable the limit for performing the requests.
50212
50272
  // This parameter would then be used within these functions
50213
50273
  var hasMoreMessagesProbably = function (returnedCountMessages, limit) {
50214
- return returnedCountMessages === limit;
50274
+ return returnedCountMessages >= limit;
50215
50275
  };
50216
50276
  // @deprecated
50217
50277
  var hasNotMoreMessages = function (returnedCountMessages, limit) {
@@ -50385,7 +50445,65 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
50385
50445
  url.searchParams.set('w', resizeDimensions.width.toString());
50386
50446
  };
50387
50447
 
50388
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=streamChat.logChatPromiseExecution;window.StreamChat.Channel=Channel$1;window.ICAL=window.ICAL||{};var UnMemoizedChannel = function (props) {
50448
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};/**
50449
+ * Component to display system and channel event messages
50450
+ */
50451
+ var UnMemoizedEventComponent = function (props) {
50452
+ var _a, _b, _c;
50453
+ var _d = props.Avatar, Avatar$1 = _d === void 0 ? Avatar : _d, message = props.message;
50454
+ var tDateTimeParser = useTranslationContext('EventComponent').tDateTimeParser;
50455
+ var _e = message.created_at, created_at = _e === void 0 ? '' : _e, event = message.event, text = message.text, type = message.type;
50456
+ var getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser: tDateTimeParser };
50457
+ if (type === 'system')
50458
+ return (React__default["default"].createElement("div", { className: 'str-chat__message--system', "data-testid": 'message-system' },
50459
+ React__default["default"].createElement("div", { className: 'str-chat__message--system__text' },
50460
+ React__default["default"].createElement("div", { className: 'str-chat__message--system__line' }),
50461
+ React__default["default"].createElement("p", null, text),
50462
+ React__default["default"].createElement("div", { className: 'str-chat__message--system__line' })),
50463
+ React__default["default"].createElement("div", { className: 'str-chat__message--system__date' },
50464
+ React__default["default"].createElement("strong", null,
50465
+ getDateString(__assign(__assign({}, getDateOptions), { format: 'dddd' })),
50466
+ " "),
50467
+ "at ",
50468
+ getDateString(__assign(__assign({}, getDateOptions), { format: 'hh:mm A' })))));
50469
+ if ((event === null || event === void 0 ? void 0 : event.type) === 'member.removed' || (event === null || event === void 0 ? void 0 : event.type) === 'member.added') {
50470
+ var name_1 = ((_a = event.user) === null || _a === void 0 ? void 0 : _a.name) || ((_b = event.user) === null || _b === void 0 ? void 0 : _b.id);
50471
+ var sentence = "".concat(name_1, " ").concat(event.type === 'member.added' ? 'has joined the chat' : 'was removed from the chat');
50472
+ return (React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event' },
50473
+ React__default["default"].createElement(Avatar$1, { image: (_c = event.user) === null || _c === void 0 ? void 0 : _c.image, name: name_1, user: event.user }),
50474
+ React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event__content' },
50475
+ React__default["default"].createElement("em", { className: 'str-chat__event-component__channel-event__sentence' }, sentence),
50476
+ React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event__date' }, getDateString(__assign(__assign({}, getDateOptions), { format: 'LT' }))))));
50477
+ }
50478
+ return null;
50479
+ };
50480
+ var EventComponent = React__default["default"].memo(UnMemoizedEventComponent);
50481
+
50482
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
50483
+
50484
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedDateSeparator = function (props) {
50485
+ var messageCreatedAt = props.date, formatDate = props.formatDate, _a = props.position, position = _a === void 0 ? 'right' : _a, unread = props.unread;
50486
+ var _b = useTranslationContext('DateSeparator'), t = _b.t, tDateTimeParser = _b.tDateTimeParser;
50487
+ var formattedDate = getDateString({
50488
+ calendar: true,
50489
+ formatDate: formatDate,
50490
+ messageCreatedAt: messageCreatedAt,
50491
+ tDateTimeParser: tDateTimeParser,
50492
+ });
50493
+ return (React__default["default"].createElement("div", { className: 'str-chat__date-separator', "data-testid": 'date-separator' },
50494
+ (position === 'right' || position === 'center') && (React__default["default"].createElement("hr", { className: 'str-chat__date-separator-line' })),
50495
+ React__default["default"].createElement("div", { className: 'str-chat__date-separator-date' }, unread ? "".concat(t('New'), " - ").concat(formattedDate) : formattedDate),
50496
+ (position === 'left' || position === 'center') && (React__default["default"].createElement("hr", { className: 'str-chat__date-separator-line' }))));
50497
+ };
50498
+ /**
50499
+ * A simple date separator between messages.
50500
+ */
50501
+ var DateSeparator = React__default["default"].memo(UnMemoizedDateSeparator);
50502
+
50503
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
50504
+
50505
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=streamChat.logChatPromiseExecution;window.StreamChat.Channel=Channel$1;window.ICAL=window.ICAL||{};var isUserResponseArray = function (output) { var _a; return ((_a = output[0]) === null || _a === void 0 ? void 0 : _a.id) != null; };
50506
+ var UnMemoizedChannel = function (props) {
50389
50507
  var propsChannel = props.channel, _a = props.EmptyPlaceholder, EmptyPlaceholder = _a === void 0 ? null : _a, LoadingErrorIndicator = props.LoadingErrorIndicator, _b = props.LoadingIndicator, LoadingIndicator = _b === void 0 ? LoadingChannel : _b;
50390
50508
  var _c = useChatContext('Channel'), contextChannel = _c.channel, channelsQueryState = _c.channelsQueryState, customClasses = _c.customClasses, theme = _c.theme;
50391
50509
  var _d = useChannelContainerClasses({
@@ -50606,6 +50724,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
50606
50724
  client.off('user.deleted', handleEvent);
50607
50725
  notificationTimeouts.forEach(clearTimeout);
50608
50726
  };
50727
+ // eslint-disable-next-line react-hooks/exhaustive-deps
50609
50728
  }, [
50610
50729
  channel.cid,
50611
50730
  channelQueryOptions,
@@ -50624,14 +50743,12 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
50624
50743
  /** MESSAGE */
50625
50744
  // Adds a temporary notification to message list, will be removed after 5 seconds
50626
50745
  var addNotification = makeAddNotifications(setNotifications, notificationTimeouts);
50627
- var loadMoreFinished = lodash_debounce(function (hasMore, messages) {
50746
+ // eslint-disable-next-line react-hooks/exhaustive-deps
50747
+ var loadMoreFinished = React$2.useCallback(lodash_debounce(function (hasMore, messages) {
50628
50748
  if (!isMounted.current)
50629
50749
  return;
50630
50750
  dispatch({ hasMore: hasMore, messages: messages, type: 'loadMoreFinished' });
50631
- }, 2000, {
50632
- leading: true,
50633
- trailing: true,
50634
- });
50751
+ }, 2000, { leading: true, trailing: true }), []);
50635
50752
  var loadMore = function (limit) {
50636
50753
  if (limit === void 0) { limit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE; }
50637
50754
  return __awaiter(void 0, void 0, void 0, function () {
@@ -50675,12 +50792,12 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
50675
50792
  var loadMoreNewer = function (limit) {
50676
50793
  if (limit === void 0) { limit = 100; }
50677
50794
  return __awaiter(void 0, void 0, void 0, function () {
50678
- var newestMessage, newestId, perPage, queryResponse, e_3, hasMoreNewer;
50795
+ var newestMessage, newestId, perPage, queryResponse, e_3, hasMoreNewerMessages;
50679
50796
  var _a, _b;
50680
50797
  return __generator(this, function (_c) {
50681
50798
  switch (_c.label) {
50682
50799
  case 0:
50683
- if (!online.current || !window.navigator.onLine)
50800
+ if (!online.current || !window.navigator.onLine || !state.hasMoreNewer)
50684
50801
  return [2 /*return*/, 0];
50685
50802
  newestMessage = (_a = state === null || state === void 0 ? void 0 : state.messages) === null || _a === void 0 ? void 0 : _a[((_b = state === null || state === void 0 ? void 0 : state.messages) === null || _b === void 0 ? void 0 : _b.length) - 1];
50686
50803
  if (state.loadingMore || state.loadingMoreNewer)
@@ -50704,8 +50821,12 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
50704
50821
  dispatch({ loadingMoreNewer: false, type: 'setLoadingMoreNewer' });
50705
50822
  return [2 /*return*/, 0];
50706
50823
  case 4:
50707
- hasMoreNewer = channel.state.messages !== channel.state.latestMessages;
50708
- dispatch({ hasMoreNewer: hasMoreNewer, messages: channel.state.messages, type: 'loadMoreNewerFinished' });
50824
+ hasMoreNewerMessages = channel.state.messages !== channel.state.latestMessages;
50825
+ dispatch({
50826
+ hasMoreNewer: hasMoreNewerMessages,
50827
+ messages: channel.state.messages,
50828
+ type: 'loadMoreNewerFinished',
50829
+ });
50709
50830
  return [2 /*return*/, queryResponse.messages.length];
50710
50831
  }
50711
50832
  });
@@ -50790,7 +50911,6 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
50790
50911
  type: 'copyMessagesFromChannel',
50791
50912
  });
50792
50913
  };
50793
- var isUserResponseArray = function (output) { var _a; return ((_a = output[0]) === null || _a === void 0 ? void 0 : _a.id) != null; };
50794
50914
  var doSendMessage = function (message, customMessageData, options) { return __awaiter(void 0, void 0, void 0, function () {
50795
50915
  var attachments, id, _a, mentioned_users, parent_id, text, mentions, messageData, messageResponse, existingMessage, i, msg, responseTimestamp, existingMessageTimestamp, responseIsTheNewest, error_1, stringError, parsedError;
50796
50916
  var _b, _c;
@@ -50910,17 +51030,18 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
50910
51030
  event === null || event === void 0 ? void 0 : event.preventDefault();
50911
51031
  dispatch({ type: 'closeThread' });
50912
51032
  };
50913
- var loadMoreThreadFinished = lodash_debounce(function (threadHasMore, threadMessages) {
51033
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51034
+ var loadMoreThreadFinished = React$2.useCallback(lodash_debounce(function (threadHasMore, threadMessages) {
50914
51035
  dispatch({
50915
51036
  threadHasMore: threadHasMore,
50916
51037
  threadMessages: threadMessages,
50917
51038
  type: 'loadMoreThreadFinished',
50918
51039
  });
50919
- }, 2000, { leading: true, trailing: true });
51040
+ }, 2000, { leading: true, trailing: true }), []);
50920
51041
  var loadMoreThread = function (limit) {
50921
51042
  if (limit === void 0) { limit = DEFAULT_THREAD_PAGE_SIZE; }
50922
51043
  return __awaiter(void 0, void 0, void 0, function () {
50923
- var parentID, oldMessages, oldestMessageID, queryResponse, threadHasMoreMessages, newThreadMessages;
51044
+ var parentId, oldMessages, oldestMessageId, queryResponse, threadHasMoreMessages, newThreadMessages;
50924
51045
  var _a;
50925
51046
  return __generator(this, function (_b) {
50926
51047
  switch (_b.label) {
@@ -50929,23 +51050,23 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
50929
51050
  if (state.threadLoadingMore || !state.thread)
50930
51051
  return [2 /*return*/];
50931
51052
  dispatch({ type: 'startLoadingThread' });
50932
- parentID = state.thread.id;
50933
- if (!parentID) {
51053
+ parentId = state.thread.id;
51054
+ if (!parentId) {
50934
51055
  return [2 /*return*/, dispatch({ type: 'closeThread' })];
50935
51056
  }
50936
- oldMessages = channel.state.threads[parentID] || [];
50937
- oldestMessageID = (_a = oldMessages[0]) === null || _a === void 0 ? void 0 : _a.id;
51057
+ oldMessages = channel.state.threads[parentId] || [];
51058
+ oldestMessageId = (_a = oldMessages[0]) === null || _a === void 0 ? void 0 : _a.id;
50938
51059
  _b.label = 1;
50939
51060
  case 1:
50940
51061
  _b.trys.push([1, 3, , 4]);
50941
- return [4 /*yield*/, channel.getReplies(parentID, {
50942
- id_lt: oldestMessageID,
51062
+ return [4 /*yield*/, channel.getReplies(parentId, {
51063
+ id_lt: oldestMessageId,
50943
51064
  limit: limit,
50944
51065
  })];
50945
51066
  case 2:
50946
51067
  queryResponse = _b.sent();
50947
51068
  threadHasMoreMessages = hasMoreMessagesProbably(queryResponse.messages.length, limit);
50948
- newThreadMessages = channel.state.threads[parentID] || [];
51069
+ newThreadMessages = channel.state.threads[parentId] || [];
50949
51070
  // next set loadingMore to false so we can start asking for more data
50950
51071
  loadMoreThreadFinished(threadHasMoreMessages, newThreadMessages);
50951
51072
  return [3 /*break*/, 4];
@@ -50982,7 +51103,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
50982
51103
  setQuotedMessage: setQuotedMessage,
50983
51104
  skipMessageDataMemoization: skipMessageDataMemoization,
50984
51105
  updateMessage: updateMessage,
50985
- }); }, [
51106
+ }); },
51107
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51108
+ [
50986
51109
  channel.cid,
50987
51110
  deleteMessage,
50988
51111
  enrichURLForPreviewConfig === null || enrichURLForPreviewConfig === void 0 ? void 0 : enrichURLForPreviewConfig.findURLFn,
@@ -51005,7 +51128,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51005
51128
  BaseImage: props.BaseImage,
51006
51129
  CooldownTimer: props.CooldownTimer,
51007
51130
  CustomMessageActionsList: props.CustomMessageActionsList,
51008
- DateSeparator: props.DateSeparator,
51131
+ DateSeparator: props.DateSeparator || DateSeparator,
51009
51132
  EditMessageInput: props.EditMessageInput,
51010
51133
  EmojiPicker: props.EmojiPicker,
51011
51134
  emojiSearchIndex: props.emojiSearchIndex,
@@ -51023,7 +51146,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51023
51146
  MessageOptions: props.MessageOptions,
51024
51147
  MessageRepliesCountButton: props.MessageRepliesCountButton,
51025
51148
  MessageStatus: props.MessageStatus,
51026
- MessageSystem: props.MessageSystem,
51149
+ MessageSystem: props.MessageSystem || EventComponent,
51027
51150
  MessageTimestamp: props.MessageTimestamp,
51028
51151
  ModalGallery: props.ModalGallery,
51029
51152
  PinIndicator: props.PinIndicator,
@@ -51040,7 +51163,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51040
51163
  TypingIndicator: props.TypingIndicator,
51041
51164
  VirtualMessage: props.VirtualMessage,
51042
51165
  });
51043
- }, [props.reactionOptions]);
51166
+ },
51167
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51168
+ [props.reactionOptions]);
51044
51169
  var typingContextValue = useCreateTypingContext({
51045
51170
  typing: typing,
51046
51171
  });
@@ -51156,6 +51281,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51156
51281
  return function () {
51157
51282
  client.off('user.updated', handleEvent);
51158
51283
  };
51284
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51159
51285
  }, []);
51160
51286
  return {
51161
51287
  displayImage: overrideImage || displayImage,
@@ -51258,6 +51384,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51258
51384
  return function () {
51259
51385
  client.off('channel.deleted', handleEvent);
51260
51386
  };
51387
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51261
51388
  }, [customHandler]);
51262
51389
  };
51263
51390
 
@@ -51283,6 +51410,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51283
51410
  return function () {
51284
51411
  client.off('channel.hidden', handleEvent);
51285
51412
  };
51413
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51286
51414
  }, [customHandler]);
51287
51415
  };
51288
51416
 
@@ -51302,6 +51430,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51302
51430
  return function () {
51303
51431
  client.off('channel.truncated', handleEvent);
51304
51432
  };
51433
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51305
51434
  }, [customHandler]);
51306
51435
  };
51307
51436
 
@@ -51330,6 +51459,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51330
51459
  return function () {
51331
51460
  client.off('channel.updated', handleEvent);
51332
51461
  };
51462
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51333
51463
  }, [customHandler]);
51334
51464
  };
51335
51465
 
@@ -51363,6 +51493,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51363
51493
  return function () {
51364
51494
  client.off('channel.visible', handleEvent);
51365
51495
  };
51496
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51366
51497
  }, [customHandler]);
51367
51498
  };
51368
51499
 
@@ -51378,6 +51509,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51378
51509
  return function () {
51379
51510
  client.off('connection.recovered', handleEvent);
51380
51511
  };
51512
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51381
51513
  }, []);
51382
51514
  };
51383
51515
 
@@ -51419,6 +51551,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51419
51551
  return function () {
51420
51552
  client.off('message.new', handleEvent);
51421
51553
  };
51554
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51422
51555
  }, [lockChannelOrder]);
51423
51556
  };
51424
51557
 
@@ -51479,6 +51612,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51479
51612
  return function () {
51480
51613
  client.off('notification.added_to_channel', handleEvent);
51481
51614
  };
51615
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51482
51616
  }, [customHandler]);
51483
51617
  };
51484
51618
 
@@ -51514,6 +51648,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51514
51648
  return function () {
51515
51649
  client.off('notification.message_new', handleEvent);
51516
51650
  };
51651
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51517
51652
  }, [customHandler]);
51518
51653
  };
51519
51654
 
@@ -51532,6 +51667,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51532
51667
  return function () {
51533
51668
  client.off('notification.removed_from_channel', handleEvent);
51534
51669
  };
51670
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51535
51671
  }, [customHandler]);
51536
51672
  };
51537
51673
 
@@ -51551,6 +51687,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51551
51687
  // memoize props
51552
51688
  var filterString = React$2.useMemo(function () { return JSON.stringify(filters); }, [filters]);
51553
51689
  var sortString = React$2.useMemo(function () { return JSON.stringify(sort); }, [sort]);
51690
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51554
51691
  var queryChannels = function (queryType) { return __awaiter(void 0, void 0, void 0, function () {
51555
51692
  var offset, newOptions, channelQueryResponse, newChannels, err_1;
51556
51693
  var _a;
@@ -51619,6 +51756,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51619
51756
  }, [client, throttleRecover]);
51620
51757
  React$2.useEffect(function () {
51621
51758
  queryChannels('reload');
51759
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51622
51760
  }, [filterString, sortString]);
51623
51761
  return {
51624
51762
  channels: channels,
@@ -51649,6 +51787,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51649
51787
  return function () {
51650
51788
  client.off('user.presence.changed', handleEvent);
51651
51789
  };
51790
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51652
51791
  }, []);
51653
51792
  };
51654
51793
 
@@ -51691,6 +51830,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51691
51830
  var handleEvent = function () { return setMuted(channel.muteStatus()); };
51692
51831
  client.on('notification.channel_mutes_updated', handleEvent);
51693
51832
  return function () { return client.off('notification.channel_mutes_updated', handleEvent); };
51833
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51694
51834
  }, [muted]);
51695
51835
  return muted;
51696
51836
  };
@@ -51774,6 +51914,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51774
51914
  };
51775
51915
  client.on('notification.mark_read', handleEvent);
51776
51916
  return function () { return client.off('notification.mark_read', handleEvent); };
51917
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51777
51918
  }, []);
51778
51919
  var refreshUnreadCount = React$2.useCallback(function () {
51779
51920
  if (isActive || muted) {
@@ -51798,6 +51939,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51798
51939
  channel.off('message.updated', handleEvent);
51799
51940
  channel.off('message.deleted', handleEvent);
51800
51941
  };
51942
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51801
51943
  }, [refreshUnreadCount, channelUpdateCount]);
51802
51944
  if (!Preview)
51803
51945
  return null;
@@ -51854,6 +51996,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51854
51996
  };
51855
51997
  document.addEventListener('click', clickListener);
51856
51998
  return function () { return document.removeEventListener('click', clickListener); };
51999
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51857
52000
  }, [disabled, inputIsFocused, query, exitSearch, clearSearchOnClickOutside]);
51858
52001
  React$2.useEffect(function () {
51859
52002
  if (!inputRef.current || disabled)
@@ -51865,8 +52008,10 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51865
52008
  inputRef.current.addEventListener('keydown', handleKeyDown);
51866
52009
  return function () {
51867
52010
  var _a;
52011
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51868
52012
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('keydown', handleKeyDown);
51869
52013
  };
52014
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51870
52015
  }, [disabled]);
51871
52016
  var selectResult = React$2.useCallback(function (result) { return __awaiter(void 0, void 0, void 0, function () {
51872
52017
  var selectedChannel, newChannel;
@@ -51905,7 +52050,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51905
52050
  return [2 /*return*/];
51906
52051
  }
51907
52052
  });
51908
- }); }, [clearSearchOnClickOutside, client, exitSearch, onSelectResult, setActiveChannel, setChannels]);
52053
+ }); },
52054
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52055
+ [clearSearchOnClickOutside, client, exitSearch, onSelectResult, setActiveChannel, setChannels]);
51909
52056
  var getChannels = React$2.useCallback(function (text) { return __awaiter(void 0, void 0, void 0, function () {
51910
52057
  var results, userQueryPromise, users, channelQueryPromise, _a, channels, users, error_1;
51911
52058
  var _b, _c, _d, _e, _f, _g;
@@ -51953,6 +52100,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
51953
52100
  }
51954
52101
  });
51955
52102
  }); }, [client, searchForChannels, searchQueryParams]);
52103
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51956
52104
  var scheduleGetChannels = React$2.useCallback(lodash_debounce(getChannels, searchDebounceIntervalMs), [
51957
52105
  getChannels,
51958
52106
  searchDebounceIntervalMs,
@@ -52060,11 +52208,13 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52060
52208
  (_a = props.inputRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('focus', handleFocus);
52061
52209
  (_b = props.inputRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener('blur', handleBlur);
52062
52210
  };
52211
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52063
52212
  }, []);
52064
52213
  var handleClearClick = React$2.useCallback(function () {
52065
52214
  var _a;
52066
52215
  exitSearch();
52067
52216
  (_a = inputProps.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
52217
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52068
52218
  }, []);
52069
52219
  var closeAppMenu = React$2.useCallback(function () { return setMenuIsOpen(false); }, []);
52070
52220
  return (React__default["default"].createElement("div", { className: 'str-chat__channel-search-bar', "data-testid": 'search-bar', ref: searchBarRef },
@@ -52150,7 +52300,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52150
52300
  return setFocusedResult(undefined);
52151
52301
  }
52152
52302
  }
52153
- }, [focusedResult]);
52303
+ },
52304
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52305
+ [focusedResult]);
52154
52306
  React$2.useEffect(function () {
52155
52307
  document.addEventListener('keydown', handleKeyDown, false);
52156
52308
  return function () { return document.removeEventListener('keydown', handleKeyDown); };
@@ -52233,6 +52385,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52233
52385
  var loading = typeof isLoading !== 'undefined' ? isLoading : refreshing;
52234
52386
  React$2.useEffect(function () {
52235
52387
  deprecationAndReplacementWarning([[{ refreshing: refreshing }, { isLoading: isLoading }]], 'LoadMoreButton');
52388
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52236
52389
  }, []);
52237
52390
  return (React__default["default"].createElement("div", { className: 'str-chat__load-more-button' },
52238
52391
  React__default["default"].createElement("button", { "aria-label": 'Load More Channels', className: 'str-chat__load-more-button__button str-chat__cta-button', "data-testid": 'load-more-button', disabled: loading, onClick: onClick }, loading ? React__default["default"].createElement(LoadingIndicator, null) : childrenOrDefaultString)));
@@ -52244,6 +52397,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52244
52397
  var loadingState = typeof isLoading !== 'undefined' ? isLoading : refreshing;
52245
52398
  React$2.useEffect(function () {
52246
52399
  deprecationAndReplacementWarning([[{ refreshing: refreshing }, { isLoading: isLoading }]], 'LoadMorePaginator');
52400
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52247
52401
  }, []);
52248
52402
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
52249
52403
  !reverse && children,
@@ -52315,11 +52469,13 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52315
52469
  setSearchActive(true);
52316
52470
  }
52317
52471
  (_a = additionalChannelSearchProps === null || additionalChannelSearchProps === void 0 ? void 0 : additionalChannelSearchProps.onSearch) === null || _a === void 0 ? void 0 : _a.call(additionalChannelSearchProps, event);
52472
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52318
52473
  }, []);
52319
52474
  var onSearchExit = React$2.useCallback(function () {
52320
52475
  var _a;
52321
52476
  setSearchActive(false);
52322
52477
  (_a = additionalChannelSearchProps === null || additionalChannelSearchProps === void 0 ? void 0 : additionalChannelSearchProps.onSearchExit) === null || _a === void 0 ? void 0 : _a.call(additionalChannelSearchProps);
52478
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52323
52479
  }, []);
52324
52480
  var _u = usePaginatedChannels(client, filters || DEFAULT_FILTERS, sort || DEFAULT_SORT, options || DEFAULT_OPTIONS, activeChannelHandler, recoveryThrottleIntervalMs), channels = _u.channels, hasNextPage = _u.hasNextPage, loadNextPage = _u.loadNextPage, setChannels = _u.setChannels;
52325
52481
  var loadedChannels = channelRenderFilterFn ? channelRenderFilterFn(channels) : channels;
@@ -52347,6 +52503,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52347
52503
  client.off('channel.deleted', handleEvent);
52348
52504
  client.off('channel.hidden', handleEvent);
52349
52505
  };
52506
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52350
52507
  }, [channel === null || channel === void 0 ? void 0 : channel.cid]);
52351
52508
  var renderChannel = function (item) {
52352
52509
  var previewProps = {
@@ -52386,7 +52543,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52386
52543
 
52387
52544
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
52388
52545
 
52389
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '11.3.0';
52546
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '11.4.0';
52390
52547
 
52391
52548
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
52392
52549
  var _b, _c;
@@ -52428,6 +52585,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52428
52585
  };
52429
52586
  client.on('notification.mutes_updated', handleEvent);
52430
52587
  return function () { return client.off('notification.mutes_updated', handleEvent); };
52588
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52431
52589
  }, [clientMutes === null || clientMutes === void 0 ? void 0 : clientMutes.length]);
52432
52590
  React$2.useEffect(function () {
52433
52591
  var _a;
@@ -52443,6 +52601,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52443
52601
  streami18n.getTranslators().then(function (translator) {
52444
52602
  setTranslators(__assign(__assign({}, translator), { userLanguage: userLanguage || defaultLanguage }));
52445
52603
  });
52604
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52446
52605
  }, [i18nInstance]);
52447
52606
  var setActiveChannel = React$2.useCallback(function (activeChannel, watchers, event) {
52448
52607
  if (watchers === void 0) { watchers = {}; }
@@ -52504,7 +52663,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52504
52663
  theme: theme,
52505
52664
  themeVersion: themeVersion,
52506
52665
  useImageFlagEmojisOnWindows: useImageFlagEmojisOnWindows,
52507
- }); }, [
52666
+ }); },
52667
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52668
+ [
52508
52669
  channelCid,
52509
52670
  channelsQueryError,
52510
52671
  channelsQueryInProgress,
@@ -52607,63 +52768,6 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52607
52768
 
52608
52769
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
52609
52770
 
52610
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedDateSeparator = function (props) {
52611
- var messageCreatedAt = props.date, formatDate = props.formatDate, _a = props.position, position = _a === void 0 ? 'right' : _a, unread = props.unread;
52612
- var _b = useTranslationContext('DateSeparator'), t = _b.t, tDateTimeParser = _b.tDateTimeParser;
52613
- var formattedDate = getDateString({
52614
- calendar: true,
52615
- formatDate: formatDate,
52616
- messageCreatedAt: messageCreatedAt,
52617
- tDateTimeParser: tDateTimeParser,
52618
- });
52619
- return (React__default["default"].createElement("div", { className: 'str-chat__date-separator', "data-testid": 'date-separator' },
52620
- (position === 'right' || position === 'center') && (React__default["default"].createElement("hr", { className: 'str-chat__date-separator-line' })),
52621
- React__default["default"].createElement("div", { className: 'str-chat__date-separator-date' }, unread ? "".concat(t('New'), " - ").concat(formattedDate) : formattedDate),
52622
- (position === 'left' || position === 'center') && (React__default["default"].createElement("hr", { className: 'str-chat__date-separator-line' }))));
52623
- };
52624
- /**
52625
- * A simple date separator between messages.
52626
- */
52627
- var DateSeparator = React__default["default"].memo(UnMemoizedDateSeparator);
52628
-
52629
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
52630
-
52631
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
52632
-
52633
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};/**
52634
- * Component to display system and channel event messages
52635
- */
52636
- var UnMemoizedEventComponent = function (props) {
52637
- var _a, _b, _c;
52638
- var _d = props.Avatar, Avatar$1 = _d === void 0 ? Avatar : _d, message = props.message;
52639
- var tDateTimeParser = useTranslationContext('EventComponent').tDateTimeParser;
52640
- var _e = message.created_at, created_at = _e === void 0 ? '' : _e, event = message.event, text = message.text, type = message.type;
52641
- var getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser: tDateTimeParser };
52642
- if (type === 'system')
52643
- return (React__default["default"].createElement("div", { className: 'str-chat__message--system', "data-testid": 'message-system' },
52644
- React__default["default"].createElement("div", { className: 'str-chat__message--system__text' },
52645
- React__default["default"].createElement("div", { className: 'str-chat__message--system__line' }),
52646
- React__default["default"].createElement("p", null, text),
52647
- React__default["default"].createElement("div", { className: 'str-chat__message--system__line' })),
52648
- React__default["default"].createElement("div", { className: 'str-chat__message--system__date' },
52649
- React__default["default"].createElement("strong", null,
52650
- getDateString(__assign(__assign({}, getDateOptions), { format: 'dddd' })),
52651
- " "),
52652
- "at ",
52653
- getDateString(__assign(__assign({}, getDateOptions), { format: 'hh:mm A' })))));
52654
- if ((event === null || event === void 0 ? void 0 : event.type) === 'member.removed' || (event === null || event === void 0 ? void 0 : event.type) === 'member.added') {
52655
- var name_1 = ((_a = event.user) === null || _a === void 0 ? void 0 : _a.name) || ((_b = event.user) === null || _b === void 0 ? void 0 : _b.id);
52656
- var sentence = "".concat(name_1, " ").concat(event.type === 'member.added' ? 'has joined the chat' : 'was removed from the chat');
52657
- return (React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event' },
52658
- React__default["default"].createElement(Avatar$1, { image: (_c = event.user) === null || _c === void 0 ? void 0 : _c.image, name: name_1, user: event.user }),
52659
- React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event__content' },
52660
- React__default["default"].createElement("em", { className: 'str-chat__event-component__channel-event__sentence' }, sentence),
52661
- React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event__date' }, getDateString(__assign(__assign({}, getDateOptions), { format: 'LT' }))))));
52662
- }
52663
- return null;
52664
- };
52665
- var EventComponent = React__default["default"].memo(UnMemoizedEventComponent);
52666
-
52667
52771
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
52668
52772
 
52669
52773
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};/**
@@ -52721,6 +52825,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
52721
52825
  [{ hasMore: hasMore }, { hasPreviousPage: hasPreviousPage }],
52722
52826
  [{ loadMore: loadMore }, { loadPreviousPage: loadPreviousPage }],
52723
52827
  ], 'InfiniteScroll');
52828
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52724
52829
  }, []);
52725
52830
  React$2.useLayoutEffect(function () {
52726
52831
  var _a;
@@ -53078,7 +53183,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53078
53183
  var newOwnReactions = add
53079
53184
  ? __spreadArray([reaction], ((message === null || message === void 0 ? void 0 : message.own_reactions) || []), true) : (_b = message === null || message === void 0 ? void 0 : message.own_reactions) === null || _b === void 0 ? void 0 : _b.filter(function (item) { return item.type !== reaction.type; });
53080
53185
  return __assign(__assign({}, message), { latest_reactions: newReactions || message.latest_reactions, own_reactions: newOwnReactions, reaction_counts: newReactionCounts, reaction_scores: newReactionCounts });
53081
- }, [client.user, client.userID]);
53186
+ },
53187
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53188
+ [client.user, client.userID]);
53082
53189
  var createReactionPreview = function (type) {
53083
53190
  var _a;
53084
53191
  return ({
@@ -53184,7 +53291,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53184
53291
  return;
53185
53292
  }
53186
53293
  setShowDetailedReactions(false);
53187
- }, [setShowDetailedReactions, reactionSelectorRef]);
53294
+ },
53295
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53296
+ [setShowDetailedReactions, reactionSelectorRef]);
53188
53297
  React$2.useEffect(function () {
53189
53298
  var messageWrapper = messageWrapperRef === null || messageWrapperRef === void 0 ? void 0 : messageWrapperRef.current;
53190
53299
  if (showDetailedReactions && !hasListener.current) {
@@ -53469,7 +53578,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53469
53578
  acc[message.id] = style;
53470
53579
  return acc;
53471
53580
  }, {});
53472
- }, [messagesWithDates, noGroupByUser]);
53581
+ },
53582
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53583
+ [messagesWithDates, noGroupByUser]);
53473
53584
  return { messageGroupStyles: messageGroupStyles, messages: messagesWithDates };
53474
53585
  };
53475
53586
 
@@ -53484,9 +53595,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53484
53595
  };
53485
53596
 
53486
53597
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useMessageListElements = function (props) {
53487
- var enrichedMessages = props.enrichedMessages, internalMessageProps = props.internalMessageProps, messageGroupStyles = props.messageGroupStyles, read = props.read, returnAllReadData = props.returnAllReadData, threadList = props.threadList;
53598
+ var enrichedMessages = props.enrichedMessages, internalMessageProps = props.internalMessageProps, messageGroupStyles = props.messageGroupStyles, read = props.read, renderMessages = props.renderMessages, returnAllReadData = props.returnAllReadData, threadList = props.threadList;
53488
53599
  var _a = useChatContext('useMessageListElements'), client = _a.client, customClasses = _a.customClasses;
53489
- var _b = useComponentContext('useMessageListElements'), _c = _b.DateSeparator, DateSeparator$1 = _c === void 0 ? DateSeparator : _c, HeaderComponent = _b.HeaderComponent, _d = _b.MessageSystem, MessageSystem = _d === void 0 ? EventComponent : _d;
53600
+ var components = useComponentContext('useMessageListElements');
53490
53601
  // get the readData, but only for messages submitted by the user themselves
53491
53602
  var readData = useLastReadData({
53492
53603
  messages: enrichedMessages,
@@ -53494,34 +53605,28 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53494
53605
  returnAllReadData: returnAllReadData,
53495
53606
  userID: client.userID,
53496
53607
  });
53497
- var lastReceivedId = React$2.useMemo(function () { return getLastReceived(enrichedMessages); }, [enrichedMessages]);
53608
+ var lastReceivedMessageId = React$2.useMemo(function () { return getLastReceived(enrichedMessages); }, [
53609
+ enrichedMessages,
53610
+ ]);
53498
53611
  var elements = React$2.useMemo(function () {
53499
- return enrichedMessages.map(function (message) {
53500
- if (message.customType === CUSTOM_MESSAGE_TYPE.date &&
53501
- message.date &&
53502
- isDate(message.date)) {
53503
- return (React__default["default"].createElement("li", { key: "".concat(message.date.toISOString(), "-i") },
53504
- React__default["default"].createElement(DateSeparator$1, { date: message.date, formatDate: internalMessageProps.formatDate, unread: message.unread })));
53505
- }
53506
- if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
53507
- return (React__default["default"].createElement("li", { key: 'intro' },
53508
- React__default["default"].createElement(HeaderComponent, null)));
53509
- }
53510
- if (message.type === 'system') {
53511
- return (React__default["default"].createElement("li", { key: message.id || message.created_at },
53512
- React__default["default"].createElement(MessageSystem, { message: message })));
53513
- }
53514
- var groupStyles = messageGroupStyles[message.id] || '';
53515
- var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
53516
- return (React__default["default"].createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass, key: message.id || message.created_at },
53517
- React__default["default"].createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [], threadList: threadList }, internalMessageProps))));
53612
+ return renderMessages({
53613
+ components: components,
53614
+ customClasses: customClasses,
53615
+ lastReceivedMessageId: lastReceivedMessageId,
53616
+ messageGroupStyles: messageGroupStyles,
53617
+ messages: enrichedMessages,
53618
+ readData: readData,
53619
+ sharedMessageProps: __assign(__assign({}, internalMessageProps), { threadList: threadList }),
53518
53620
  });
53519
- }, [
53621
+ },
53622
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53623
+ [
53520
53624
  enrichedMessages,
53521
53625
  internalMessageProps,
53522
- lastReceivedId,
53626
+ lastReceivedMessageId,
53523
53627
  messageGroupStyles,
53524
53628
  readData,
53629
+ renderMessages,
53525
53630
  threadList,
53526
53631
  ]);
53527
53632
  return elements;
@@ -53578,6 +53683,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53578
53683
  }
53579
53684
  messages.current = newMessages;
53580
53685
  measures.current = newMeasures;
53686
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53581
53687
  }, [measures, messages, params.messages]);
53582
53688
  return function (scrollTopValue) {
53583
53689
  scrollTop.current = scrollTopValue;
@@ -53607,6 +53713,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53607
53713
  setWrapperRect(listElement.getBoundingClientRect());
53608
53714
  scrollToBottom();
53609
53715
  }
53716
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53610
53717
  }, [listElement, hasMoreNewer]);
53611
53718
  var updateScrollTop = useMessageListScrollManager({
53612
53719
  loadMoreScrollThreshold: loadMoreScrollThreshold,
@@ -53761,24 +53868,50 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53761
53868
  return React__default["default"].createElement(React__default["default"].Fragment, null, children);
53762
53869
  };
53763
53870
 
53871
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};function defaultRenderMessages(_a) {
53872
+ var components = _a.components, customClasses = _a.customClasses, lastReceivedId = _a.lastReceivedMessageId, messageGroupStyles = _a.messageGroupStyles, messages = _a.messages, readData = _a.readData, messageProps = _a.sharedMessageProps;
53873
+ var DateSeparator = components.DateSeparator, HeaderComponent = components.HeaderComponent, MessageSystem = components.MessageSystem;
53874
+ return messages.map(function (message) {
53875
+ if (message.customType === CUSTOM_MESSAGE_TYPE.date &&
53876
+ message.date &&
53877
+ isDate(message.date) &&
53878
+ DateSeparator) {
53879
+ return (React__default["default"].createElement("li", { key: "".concat(message.date.toISOString(), "-i") },
53880
+ React__default["default"].createElement(DateSeparator, { date: message.date, formatDate: messageProps.formatDate, unread: message.unread })));
53881
+ }
53882
+ if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
53883
+ return (React__default["default"].createElement("li", { key: 'intro' },
53884
+ React__default["default"].createElement(HeaderComponent, null)));
53885
+ }
53886
+ if (message.type === 'system' && MessageSystem) {
53887
+ return (React__default["default"].createElement("li", { key: message.id || message.created_at },
53888
+ React__default["default"].createElement(MessageSystem, { message: message })));
53889
+ }
53890
+ var groupStyles = messageGroupStyles[message.id] || '';
53891
+ var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
53892
+ return (React__default["default"].createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass, key: message.id || message.created_at },
53893
+ React__default["default"].createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [] }, messageProps))));
53894
+ });
53895
+ }
53896
+
53764
53897
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var MessageListWithContext = function (props) {
53765
53898
  var channel = props.channel, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? false : _a, groupStyles = props.groupStyles, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, _e = props.messages, messages = _e === void 0 ? [] : _e, notifications = props.notifications, _f = props.noGroupByUser, noGroupByUser = _f === void 0 ? false : _f, _g = props.pinPermissions, pinPermissions = _g === void 0 ? defaultPinPermissions : _g, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
53766
53899
  _h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
53767
- returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read, _l = props.messageLimit, messageLimit = _l === void 0 ? 100 : _l, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _m = props.hasMoreNewer, hasMoreNewer = _m === void 0 ? false : _m, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _o = props.jumpToLatestMessage, jumpToLatestMessage = _o === void 0 ? function () { return Promise.resolve(); } : _o;
53768
- var _p = React__default["default"].useState(null), listElement = _p[0], setListElement = _p[1];
53769
- var _q = React__default["default"].useState(null), ulElement = _q[0], setUlElement = _q[1];
53900
+ returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read, _l = props.renderMessages, renderMessages = _l === void 0 ? defaultRenderMessages : _l, _m = props.messageLimit, messageLimit = _m === void 0 ? 100 : _m, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _o = props.hasMoreNewer, hasMoreNewer = _o === void 0 ? false : _o, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _p = props.jumpToLatestMessage, jumpToLatestMessage = _p === void 0 ? function () { return Promise.resolve(); } : _p;
53901
+ var _q = React__default["default"].useState(null), listElement = _q[0], setListElement = _q[1];
53902
+ var _r = React__default["default"].useState(null), ulElement = _r[0], setUlElement = _r[1];
53770
53903
  var customClasses = useChatContext('MessageList').customClasses;
53771
- var _r = useComponentContext('MessageList'), _s = _r.EmptyStateIndicator, EmptyStateIndicator$1 = _s === void 0 ? EmptyStateIndicator : _s, _t = _r.LoadingIndicator, LoadingIndicator$1 = _t === void 0 ? LoadingIndicator : _t, _u = _r.MessageListNotifications, MessageListNotifications$1 = _u === void 0 ? MessageListNotifications : _u, _v = _r.MessageNotification, MessageNotification$1 = _v === void 0 ? MessageNotification : _v, _w = _r.TypingIndicator, TypingIndicator$1 = _w === void 0 ? TypingIndicator : _w;
53904
+ var _s = useComponentContext('MessageList'), _t = _s.EmptyStateIndicator, EmptyStateIndicator$1 = _t === void 0 ? EmptyStateIndicator : _t, _u = _s.LoadingIndicator, LoadingIndicator$1 = _u === void 0 ? LoadingIndicator : _u, _v = _s.MessageListNotifications, MessageListNotifications$1 = _v === void 0 ? MessageListNotifications : _v, _w = _s.MessageNotification, MessageNotification$1 = _w === void 0 ? MessageNotification : _w, _x = _s.TypingIndicator, TypingIndicator$1 = _x === void 0 ? TypingIndicator : _x;
53772
53905
  var loadMoreScrollThreshold = (internalInfiniteScrollProps === null || internalInfiniteScrollProps === void 0 ? void 0 : internalInfiniteScrollProps.threshold) || 250;
53773
- var _x = useScrollLocationLogic({
53906
+ var _y = useScrollLocationLogic({
53774
53907
  hasMoreNewer: hasMoreNewer,
53775
53908
  listElement: listElement,
53776
53909
  loadMoreScrollThreshold: loadMoreScrollThreshold,
53777
53910
  messages: messages,
53778
53911
  scrolledUpThreshold: props.scrolledUpThreshold,
53779
53912
  suppressAutoscroll: suppressAutoscroll,
53780
- }), hasNewMessages = _x.hasNewMessages, isMessageListScrolledToBottom = _x.isMessageListScrolledToBottom, onScroll = _x.onScroll, scrollToBottom = _x.scrollToBottom, wrapperRect = _x.wrapperRect;
53781
- var _y = useEnrichedMessages({
53913
+ }), hasNewMessages = _y.hasNewMessages, isMessageListScrolledToBottom = _y.isMessageListScrolledToBottom, onScroll = _y.onScroll, scrollToBottom = _y.scrollToBottom, wrapperRect = _y.wrapperRect;
53914
+ var _z = useEnrichedMessages({
53782
53915
  channel: channel,
53783
53916
  disableDateSeparator: disableDateSeparator,
53784
53917
  groupStyles: groupStyles,
@@ -53787,7 +53920,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53787
53920
  hideNewMessageSeparator: hideNewMessageSeparator,
53788
53921
  messages: messages,
53789
53922
  noGroupByUser: noGroupByUser,
53790
- }), messageGroupStyles = _y.messageGroupStyles, enrichedMessages = _y.messages;
53923
+ }), messageGroupStyles = _z.messageGroupStyles, enrichedMessages = _z.messages;
53791
53924
  var elements = useMessageListElements({
53792
53925
  enrichedMessages: enrichedMessages,
53793
53926
  internalMessageProps: {
@@ -53818,6 +53951,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53818
53951
  },
53819
53952
  messageGroupStyles: messageGroupStyles,
53820
53953
  read: read,
53954
+ renderMessages: renderMessages,
53821
53955
  returnAllReadData: returnAllReadData,
53822
53956
  threadList: threadList,
53823
53957
  });
@@ -53856,6 +53990,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53856
53990
  var element = ulElement === null || ulElement === void 0 ? void 0 : ulElement.querySelector("[data-message-id='".concat(highlightedMessageId, "']"));
53857
53991
  element === null || element === void 0 ? void 0 : element.scrollIntoView({ block: 'center' });
53858
53992
  }
53993
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53859
53994
  }, [highlightedMessageId]);
53860
53995
  var showEmptyStateIndicator = elements.length === 0 && !threadList;
53861
53996
  return (React__default["default"].createElement(MessageListContextProvider, { value: { listElement: listElement, scrollToBottom: scrollToBottom } },
@@ -53923,6 +54058,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
53923
54058
  return function () {
53924
54059
  client.off(observedEvent, handleEvent);
53925
54060
  };
54061
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53926
54062
  }, [activeChannel, isMessageListScrolledToBottom, observedEvent, replyCount, thread]);
53927
54063
  React$2.useEffect(function () {
53928
54064
  if (isMessageListScrolledToBottom) {
@@ -55233,6 +55369,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55233
55369
  return 0;
55234
55370
  // TODO: there's a bug here, the messages prop is the same array instance (something mutates it)
55235
55371
  // that's why the second dependency is necessary
55372
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55236
55373
  }, [firstRealMessageIndex, messages, messages === null || messages === void 0 ? void 0 : messages.length]);
55237
55374
  return numItemsPrepended;
55238
55375
  }
@@ -55257,6 +55394,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55257
55394
  initialFocusRegistered.current = true;
55258
55395
  recheckForNewOwnMessage();
55259
55396
  }
55397
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55260
55398
  }, [messages, messages === null || messages === void 0 ? void 0 : messages.length]);
55261
55399
  return recheckForNewOwnMessage;
55262
55400
  }
@@ -55276,6 +55414,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55276
55414
  if (separateGiphyPreview)
55277
55415
  client.on('message.new', handleEvent);
55278
55416
  return function () { return client.off('message.new', handleEvent); };
55417
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55279
55418
  }, [separateGiphyPreview]);
55280
55419
  return { giphyPreviewMessage: giphyPreviewMessage, setGiphyPreviewMessage: setGiphyPreviewMessage };
55281
55420
  };
@@ -55325,6 +55464,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55325
55464
  window.removeEventListener('focus', scrollToBottomIfConfigured);
55326
55465
  window.removeEventListener('blur', resetNewMessagesReceivedInBackground);
55327
55466
  };
55467
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55328
55468
  }, [scrollToBottomIfConfigured]);
55329
55469
  };
55330
55470
 
@@ -55423,7 +55563,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55423
55563
  return messages.length - 1;
55424
55564
  }
55425
55565
  var VirtualizedMessageListWithContext = function (props) {
55426
- var additionalMessageInputProps = props.additionalMessageInputProps, _a = props.additionalVirtuosoProps, additionalVirtuosoProps = _a === void 0 ? {} : _a, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? true : _b, groupStyles = props.groupStyles, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, head = props.head, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _e = props.messageLimit, messageLimit = _e === void 0 ? 100 : _e, messages = props.messages, notifications = props.notifications,
55566
+ var additionalMessageInputProps = props.additionalMessageInputProps, _a = props.additionalVirtuosoProps, additionalVirtuosoProps = _a === void 0 ? {} : _a, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? true : _b, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _e = props.messageLimit, messageLimit = _e === void 0 ? 100 : _e, messages = props.messages, notifications = props.notifications,
55427
55567
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
55428
55568
  _f = props.overscan,
55429
55569
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
@@ -55457,6 +55597,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55457
55597
  setGiphyPreviewMessage: setGiphyPreviewMessage,
55458
55598
  userId: client.userID || '',
55459
55599
  });
55600
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55460
55601
  }, [
55461
55602
  disableDateSeparator,
55462
55603
  hideDeletedMessages,
@@ -55486,6 +55627,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55486
55627
  }, {});
55487
55628
  },
55488
55629
  // processedMessages were incorrectly rebuilt with a new object identity at some point, hence the .length usage
55630
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55489
55631
  [processedMessages.length, shouldGroupByUser, groupStylesFn]);
55490
55632
  var _w = useNewMessageNotification(processedMessages, client.userID, hasMoreNewer), atBottom = _w.atBottom, isMessageListScrolledToBottom = _w.isMessageListScrolledToBottom, newMessagesNotification = _w.newMessagesNotification, setIsMessageListScrolledToBottom = _w.setIsMessageListScrolledToBottom, setNewMessagesNotification = _w.setNewMessagesNotification;
55491
55633
  var scrollToBottom = React$2.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -55535,19 +55677,14 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55535
55677
  var atBottomStateChange = function (isAtBottom) {
55536
55678
  atBottom.current = isAtBottom;
55537
55679
  setIsMessageListScrolledToBottom(isAtBottom);
55538
- if (isAtBottom && newMessagesNotification) {
55539
- setNewMessagesNotification(false);
55680
+ if (isAtBottom) {
55681
+ loadMoreNewer === null || loadMoreNewer === void 0 ? void 0 : loadMoreNewer(messageLimit);
55682
+ setNewMessagesNotification === null || setNewMessagesNotification === void 0 ? void 0 : setNewMessagesNotification(false);
55540
55683
  }
55541
55684
  };
55542
- var startReached = function () {
55543
- if (hasMore && loadMore) {
55544
- loadMore(messageLimit);
55545
- }
55546
- };
55547
- var endReached = function () {
55548
- if (hasMoreNewer && loadMoreNewer) {
55549
- loadMoreNewer(messageLimit);
55550
- }
55685
+ var atTopStateChange = function (isAtTop) {
55686
+ if (isAtTop)
55687
+ loadMore === null || loadMore === void 0 ? void 0 : loadMore(messageLimit);
55551
55688
  };
55552
55689
  React$2.useEffect(function () {
55553
55690
  var _a;
@@ -55557,13 +55694,14 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55557
55694
  (_a = virtuoso.current) === null || _a === void 0 ? void 0 : _a.scrollToIndex({ align: 'center', index: index });
55558
55695
  }
55559
55696
  }
55697
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55560
55698
  }, [highlightedMessageId]);
55561
55699
  if (!processedMessages)
55562
55700
  return null;
55563
55701
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
55564
55702
  React__default["default"].createElement(MessageListMainPanel, null,
55565
55703
  React__default["default"].createElement("div", { className: (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list' },
55566
- React__default["default"].createElement(on$1, __assign({ atBottomStateChange: atBottomStateChange, atBottomThreshold: 200, className: 'str-chat__message-list-scroll', components: __assign({ EmptyPlaceholder: EmptyPlaceholder, Footer: Footer, Header: Header, Item: Item$1 }, virtuosoComponentsFromProps), computeItemKey: computeItemKey, context: {
55704
+ React__default["default"].createElement(on$1, __assign({ atBottomStateChange: atBottomStateChange, atBottomThreshold: 100, atTopStateChange: atTopStateChange, atTopThreshold: 100, className: 'str-chat__message-list-scroll', components: __assign({ EmptyPlaceholder: EmptyPlaceholder, Footer: Footer, Header: Header, Item: Item$1 }, virtuosoComponentsFromProps), computeItemKey: computeItemKey, context: {
55567
55705
  additionalMessageInputProps: additionalMessageInputProps,
55568
55706
  closeReactionSelectorOnClick: closeReactionSelectorOnClick,
55569
55707
  customClasses: customClasses,
@@ -55583,7 +55721,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55583
55721
  shouldGroupByUser: shouldGroupByUser,
55584
55722
  threadList: threadList,
55585
55723
  virtuosoRef: virtuoso,
55586
- }, endReached: endReached, firstItemIndex: calculateFirstItemIndex(numItemsPrepended), followOutput: followOutput, increaseViewportBy: { bottom: 200, top: 0 }, initialTopMostItemIndex: calculateInitialTopMostItemIndex(processedMessages, highlightedMessageId), itemContent: messageRenderer, itemSize: fractionalItemSize, key: messageSetKey, overscan: overscan, ref: virtuoso, startReached: startReached, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, overridingVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {}))))),
55724
+ }, firstItemIndex: calculateFirstItemIndex(numItemsPrepended), followOutput: followOutput, increaseViewportBy: { bottom: 200, top: 0 }, initialTopMostItemIndex: calculateInitialTopMostItemIndex(processedMessages, highlightedMessageId), itemContent: messageRenderer, itemSize: fractionalItemSize, key: messageSetKey, overscan: overscan, ref: virtuoso, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, overridingVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {}))))),
55587
55725
  React__default["default"].createElement(MessageListNotifications$1, { hasNewMessages: newMessagesNotification, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom, threadList: threadList }),
55588
55726
  giphyPreviewMessage && React__default["default"].createElement(GiphyPreviewMessage$1, { message: giphyPreviewMessage })));
55589
55727
  };
@@ -55667,6 +55805,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
55667
55805
  // FIXME: integrators can customize channel query options but cannot customize channel.getReplies() options
55668
55806
  loadMoreThread();
55669
55807
  }
55808
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55670
55809
  }, []);
55671
55810
  if (!thread)
55672
55811
  return null;
@@ -79973,6 +80112,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
79973
80112
  exports.defaultDateTimeParser = defaultDateTimeParser;
79974
80113
  exports.defaultPinPermissions = defaultPinPermissions;
79975
80114
  exports.defaultReactionOptions = defaultReactionOptions;
80115
+ exports.defaultRenderMessages = defaultRenderMessages;
79976
80116
  exports.defaultScrollToItem = defaultScrollToItem;
79977
80117
  exports.defaultTimestampFormat = defaultTimestampFormat;
79978
80118
  exports.defaultTranslatorFunction = defaultTranslatorFunction;