stream-chat-react 11.19.0 → 11.20.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 (34) hide show
  1. package/dist/{Window-8c5139ab.js → Window-06cc5899.js} +45 -36
  2. package/dist/browser.full-bundle.js +52 -41
  3. package/dist/browser.full-bundle.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +2 -2
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/components/Channel/Channel.d.ts.map +1 -1
  7. package/dist/components/Channel/Channel.js +10 -8
  8. package/dist/components/Emojis/index.cjs.js +1 -1
  9. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  10. package/dist/components/Gallery/Gallery.js +1 -1
  11. package/dist/components/Gallery/Image.js +1 -1
  12. package/dist/components/Message/MessageSimple.js +1 -1
  13. package/dist/components/Message/MessageStatus.d.ts +3 -0
  14. package/dist/components/Message/MessageStatus.d.ts.map +1 -1
  15. package/dist/components/Message/MessageStatus.js +21 -18
  16. package/dist/components/Message/utils.d.ts.map +1 -1
  17. package/dist/components/Message/utils.js +7 -4
  18. package/dist/components/MessageBounce/MessageBounceModal.js +1 -1
  19. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts +1 -1
  20. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -1
  21. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +5 -3
  22. package/dist/components/MessageList/renderMessages.js +1 -1
  23. package/dist/components/Modal/Modal.d.ts +3 -1
  24. package/dist/components/Modal/Modal.d.ts.map +1 -1
  25. package/dist/components/Modal/Modal.js +3 -2
  26. package/dist/components/Reactions/ReactionsListModal.d.ts.map +1 -1
  27. package/dist/components/Reactions/ReactionsListModal.js +1 -1
  28. package/dist/constants/limits.d.ts +1 -0
  29. package/dist/constants/limits.d.ts.map +1 -1
  30. package/dist/constants/limits.js +1 -0
  31. package/dist/index.cjs.js +8 -6
  32. package/dist/version.d.ts +1 -1
  33. package/dist/version.js +1 -1
  34. package/package.json +3 -3
@@ -1190,6 +1190,7 @@ var DEFAULT_JUMP_TO_PAGE_SIZE = 100;
1190
1190
  var DEFAULT_THREAD_PAGE_SIZE = 50;
1191
1191
  var DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD = 250;
1192
1192
  var DEFAULT_UPLOAD_SIZE_LIMIT_BYTES = 100 * 1024 * 1024; // 100 MB
1193
+ var DEFAULT_HIGHLIGHT_DURATION = 500;
1193
1194
 
1194
1195
  var accentsMap = {
1195
1196
  a: 'á|à|ã|â|À|Á|Ã|Â',
@@ -2825,7 +2826,7 @@ var CloseIconRound = function () { return (React__default["default"].createEleme
2825
2826
  React__default["default"].createElement("path", { clipRule: 'evenodd', d: 'M28 14C28 21.732 21.732 28 14 28C6.26801 28 0 21.732 0 14C0 6.26801 6.26801 0 14 0C21.732 0 28 6.26801 28 14ZM26 14C26 20.6274 20.6274 26 14 26C7.37258 26 2 20.6274 2 14C2 7.37258 7.37258 2 14 2C20.6274 2 26 7.37258 26 14ZM19.59 7L21 8.41L15.41 14L21 19.59L19.59 21L14 15.41L8.41 21L7 19.59L12.59 14L7 8.41L8.41 7L14 12.59L19.59 7Z', fill: 'white', fillRule: 'evenodd' }))); };
2826
2827
 
2827
2828
  var Modal = function (_a) {
2828
- var children = _a.children, onClose = _a.onClose, open = _a.open;
2829
+ var children = _a.children, className = _a.className, onClose = _a.onClose, open = _a.open;
2829
2830
  var t = useTranslationContext('Modal').t;
2830
2831
  var themeVersion = useChatContext('Modal').themeVersion;
2831
2832
  var innerRef = React.useRef(null);
@@ -2849,7 +2850,7 @@ var Modal = function (_a) {
2849
2850
  }, [onClose, open]);
2850
2851
  if (!open)
2851
2852
  return null;
2852
- return (React__default["default"].createElement("div", { className: 'str-chat__modal str-chat__modal--open', onClick: handleClick },
2853
+ return (React__default["default"].createElement("div", { className: clsx('str-chat__modal str-chat__modal--open', className), onClick: handleClick },
2853
2854
  React__default["default"].createElement($9bf71ea28793e738$export$20e40289641fbbb6, { autoFocus: true, contain: true },
2854
2855
  React__default["default"].createElement("button", { className: 'str-chat__modal__close-button', ref: closeRef, title: t('Close') },
2855
2856
  themeVersion === '2' && React__default["default"].createElement(CloseIconRound, null),
@@ -2920,7 +2921,7 @@ var UnMemoizedGallery = function (props) {
2920
2921
  });
2921
2922
  return (React__default["default"].createElement("div", { className: className },
2922
2923
  renderImages,
2923
- React__default["default"].createElement(Modal, { onClose: function () { return setModalOpen(function (modalOpen) { return !modalOpen; }); }, open: modalOpen },
2924
+ React__default["default"].createElement(Modal, { className: 'str-chat__gallery-modal', onClose: function () { return setModalOpen(function (modalOpen) { return !modalOpen; }); }, open: modalOpen },
2924
2925
  React__default["default"].createElement(ModalGallery$1, { images: images, index: index }))));
2925
2926
  };
2926
2927
  /**
@@ -2939,7 +2940,7 @@ var ImageComponent = function (props) {
2939
2940
  var toggleModal = function () { return setModalIsOpen(function (modalIsOpen) { return !modalIsOpen; }); };
2940
2941
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
2941
2942
  React__default["default"].createElement(BaseImage$1, exports.__assign({ alt: fallback, className: 'str-chat__message-attachment--img', "data-testid": 'image-test', onClick: toggleModal, src: imageSrc, style: style, tabIndex: 0, title: fallback }, dimensions, (innerRef && { ref: innerRef }))),
2942
- React__default["default"].createElement(Modal, { onClose: toggleModal, open: modalIsOpen },
2943
+ React__default["default"].createElement(Modal, { className: 'str-chat__image-modal', onClose: toggleModal, open: modalIsOpen },
2943
2944
  React__default["default"].createElement(ModalGallery$1, { images: [props], index: 0 }))));
2944
2945
  };
2945
2946
 
@@ -36564,7 +36565,7 @@ var MessageErrorIcon = function () { return (React__default["default"].createEle
36564
36565
 
36565
36566
  function MessageBounceModal(_a) {
36566
36567
  var MessageBouncePrompt = _a.MessageBouncePrompt, modalProps = __rest(_a, ["MessageBouncePrompt"]);
36567
- return (React__default["default"].createElement(Modal, exports.__assign({}, modalProps),
36568
+ return (React__default["default"].createElement(Modal, exports.__assign({ className: 'str-chat__message-bounce-modal' }, modalProps),
36568
36569
  React__default["default"].createElement(MessageBounceProvider, null,
36569
36570
  React__default["default"].createElement(MessageBouncePrompt, { onClose: modalProps.onClose }))));
36570
36571
  }
@@ -36809,9 +36810,9 @@ var showMessageActionsBox = function (actions, inThread) {
36809
36810
  }
36810
36811
  return true;
36811
36812
  };
36812
- var areMessagesEqual = function (prevMessage, nextMessage) {
36813
+ function areMessagesEqual(prevMessage, nextMessage) {
36813
36814
  var _a, _b, _c, _d, _e, _f;
36814
- return prevMessage.deleted_at === nextMessage.deleted_at &&
36815
+ return (prevMessage.deleted_at === nextMessage.deleted_at &&
36815
36816
  ((_a = prevMessage.latest_reactions) === null || _a === void 0 ? void 0 : _a.length) === ((_b = nextMessage.latest_reactions) === null || _b === void 0 ? void 0 : _b.length) &&
36816
36817
  ((_c = prevMessage.own_reactions) === null || _c === void 0 ? void 0 : _c.length) === ((_d = nextMessage.own_reactions) === null || _d === void 0 ? void 0 : _d.length) &&
36817
36818
  prevMessage.pinned === nextMessage.pinned &&
@@ -36820,8 +36821,11 @@ var areMessagesEqual = function (prevMessage, nextMessage) {
36820
36821
  prevMessage.text === nextMessage.text &&
36821
36822
  prevMessage.type === nextMessage.type &&
36822
36823
  prevMessage.updated_at === nextMessage.updated_at &&
36823
- ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at);
36824
- };
36824
+ ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at) &&
36825
+ Boolean(prevMessage.quoted_message) === Boolean(nextMessage.quoted_message) &&
36826
+ (!prevMessage.quoted_message ||
36827
+ areMessagesEqual(prevMessage.quoted_message, nextMessage.quoted_message)));
36828
+ }
36825
36829
  var areMessagePropsEqual = function (prevProps, nextProps) {
36826
36830
  var prevMessage = prevProps.message, prevMessageUI = prevProps.Message;
36827
36831
  var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
@@ -39097,14 +39101,13 @@ var useEnterLeaveHandlers = function (_a) {
39097
39101
 
39098
39102
  var UnMemoizedMessageStatus = function (props) {
39099
39103
  var _a;
39100
- var propAvatar = props.Avatar, _b = props.messageType, messageType = _b === void 0 ? 'simple' : _b, _c = props.tooltipUserNameMapper, tooltipUserNameMapper = _c === void 0 ? mapToUserNameOrId : _c;
39104
+ var propAvatar = props.Avatar, MessageDeliveredStatus = props.MessageDeliveredStatus, MessageReadStatus = props.MessageReadStatus, MessageSendingStatus = props.MessageSendingStatus, _b = props.messageType, messageType = _b === void 0 ? 'simple' : _b, _c = props.tooltipUserNameMapper, tooltipUserNameMapper = _c === void 0 ? mapToUserNameOrId : _c;
39101
39105
  var _d = useEnterLeaveHandlers(), handleEnter = _d.handleEnter, handleLeave = _d.handleLeave, tooltipVisible = _d.tooltipVisible;
39102
- var client = useChatContext('MessageStatus').client;
39106
+ var _e = useChatContext('MessageStatus'), client = _e.client, themeVersion = _e.themeVersion;
39103
39107
  var contextAvatar = useComponentContext('MessageStatus').Avatar;
39104
- var _e = useMessageContext('MessageStatus'), isMyMessage = _e.isMyMessage, lastReceivedId = _e.lastReceivedId, message = _e.message, readBy = _e.readBy, threadList = _e.threadList;
39108
+ var _f = useMessageContext('MessageStatus'), isMyMessage = _f.isMyMessage, lastReceivedId = _f.lastReceivedId, message = _f.message, readBy = _f.readBy, threadList = _f.threadList;
39105
39109
  var t = useTranslationContext('MessageStatus').t;
39106
- var themeVersion = useChatContext('MessageStatus').themeVersion;
39107
- var _f = React.useState(null), referenceElement = _f[0], setReferenceElement = _f[1];
39110
+ var _g = React.useState(null), referenceElement = _g[0], setReferenceElement = _g[1];
39108
39111
  var Avatar$1 = propAvatar || contextAvatar || Avatar;
39109
39112
  if (!isMyMessage() || message.type === 'error')
39110
39113
  return null;
@@ -39121,19 +39124,23 @@ var UnMemoizedMessageStatus = function (props) {
39121
39124
  'message-status-received': delivered && !deliveredAndRead,
39122
39125
  'message-status-sending': sending,
39123
39126
  }), onMouseEnter: handleEnter, onMouseLeave: handleLeave, ref: setReferenceElement },
39124
- sending && (React__default["default"].createElement(React__default["default"].Fragment, null,
39125
- themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Sending...')),
39126
- themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Sending...'))),
39127
- React__default["default"].createElement(LoadingIndicator, null))),
39128
- delivered && !deliveredAndRead && (React__default["default"].createElement(React__default["default"].Fragment, null,
39129
- themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Delivered')),
39130
- themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Delivered'))),
39131
- themeVersion === '2' ? React__default["default"].createElement(MessageDeliveredIcon, null) : React__default["default"].createElement(DeliveredCheckIcon, null))),
39132
- deliveredAndRead && (React__default["default"].createElement(React__default["default"].Fragment, null,
39133
- themeVersion === '1' && (React__default["default"].createElement(Tooltip, null, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
39134
- themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
39135
- React__default["default"].createElement(Avatar$1, { image: lastReadUser.image, name: lastReadUser.name || lastReadUser.id, size: 15, user: lastReadUser }),
39136
- readBy.length > 2 && (React__default["default"].createElement("span", { className: "str-chat__message-".concat(messageType, "-status-number"), "data-testid": 'message-status-read-by-many' }, readBy.length - 1))))));
39127
+ sending &&
39128
+ (MessageSendingStatus ? (React__default["default"].createElement(MessageSendingStatus, null)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
39129
+ themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Sending...')),
39130
+ themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Sending...'))),
39131
+ React__default["default"].createElement(LoadingIndicator, null)))),
39132
+ delivered &&
39133
+ !deliveredAndRead &&
39134
+ (MessageDeliveredStatus ? (React__default["default"].createElement(MessageDeliveredStatus, null)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
39135
+ themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Delivered')),
39136
+ themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Delivered'))),
39137
+ themeVersion === '2' ? React__default["default"].createElement(MessageDeliveredIcon, null) : React__default["default"].createElement(DeliveredCheckIcon, null)))),
39138
+ deliveredAndRead &&
39139
+ (MessageReadStatus ? (React__default["default"].createElement(MessageReadStatus, null)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
39140
+ themeVersion === '1' && (React__default["default"].createElement(Tooltip, null, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
39141
+ themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
39142
+ React__default["default"].createElement(Avatar$1, { image: lastReadUser.image, name: lastReadUser.name || lastReadUser.id, size: 15, user: lastReadUser }),
39143
+ readBy.length > 2 && (React__default["default"].createElement("span", { className: "str-chat__message-".concat(messageType, "-status-number"), "data-testid": 'message-status-read-by-many' }, readBy.length - 1)))))));
39137
39144
  };
39138
39145
  var MessageStatus = React__default["default"].memo(UnMemoizedMessageStatus);
39139
39146
 
@@ -54838,7 +54845,7 @@ function ReactionsListModal(_a) {
54838
54845
  ? __spreadArray([], reactionDetails, true).sort(legacySortReactionDetails)
54839
54846
  : reactionDetails;
54840
54847
  }, [legacySortReactionDetails, reactionDetails]);
54841
- return (React__default["default"].createElement(Modal, exports.__assign({}, modalProps),
54848
+ return (React__default["default"].createElement(Modal, exports.__assign({}, modalProps, { className: clsx('str-chat__message-reactions-details-modal', modalProps.className) }),
54842
54849
  React__default["default"].createElement("div", { className: 'str-chat__message-reactions-details', "data-testid": 'reactions-list-modal' },
54843
54850
  React__default["default"].createElement("div", { className: 'str-chat__message-reactions-details-reaction-types' }, reactions.map(function (_a) {
54844
54851
  var EmojiComponent = _a.EmojiComponent, reactionCount = _a.reactionCount, reactionType = _a.reactionType;
@@ -55658,7 +55665,7 @@ var MessageSimpleWithContext = function (props) {
55658
55665
  'str-chat__virtual-message__wrapper--group': groupedByUser,
55659
55666
  });
55660
55667
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
55661
- editing && (React__default["default"].createElement(Modal, { onClose: clearEditingState, open: editing },
55668
+ editing && (React__default["default"].createElement(Modal, { className: 'str-chat__edit-message-modal', onClose: clearEditingState, open: editing },
55662
55669
  React__default["default"].createElement(MessageInput, exports.__assign({ clearEditingState: clearEditingState, grow: true, hideSendButton: true, Input: EditMessageInput, message: message }, additionalMessageInputProps)))),
55663
55670
  isBounceDialogOpen && (React__default["default"].createElement(MessageBounceModal, { MessageBouncePrompt: MessageBouncePrompt$1, onClose: function () { return setIsBounceDialogOpen(false); }, open: isBounceDialogOpen })),
55664
55671
  React__default["default"].createElement("div", { className: rootClassName, key: message.id },
@@ -57001,8 +57008,9 @@ var ChannelInner = function (props) {
57001
57008
  });
57002
57009
  };
57003
57010
  var clearHighlightedMessageTimeoutId = React.useRef(null);
57004
- var jumpToMessage = function (messageId, messageLimit) {
57011
+ var jumpToMessage = React.useCallback(function (messageId, messageLimit, highlightDuration) {
57005
57012
  if (messageLimit === void 0) { messageLimit = DEFAULT_JUMP_TO_PAGE_SIZE; }
57013
+ if (highlightDuration === void 0) { highlightDuration = DEFAULT_HIGHLIGHT_DURATION; }
57006
57014
  return __awaiter(void 0, void 0, void 0, function () {
57007
57015
  var indexOfMessage, hasMoreMessages;
57008
57016
  return __generator(this, function (_a) {
@@ -57026,13 +57034,13 @@ var ChannelInner = function (props) {
57026
57034
  clearHighlightedMessageTimeoutId.current = setTimeout(function () {
57027
57035
  clearHighlightedMessageTimeoutId.current = null;
57028
57036
  dispatch({ type: 'clearHighlightedMessage' });
57029
- }, 500);
57037
+ }, highlightDuration);
57030
57038
  return [2 /*return*/];
57031
57039
  }
57032
57040
  });
57033
57041
  });
57034
- };
57035
- var jumpToLatestMessage = function () { return __awaiter(void 0, void 0, void 0, function () {
57042
+ }, [channel, loadMoreFinished]);
57043
+ var jumpToLatestMessage = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
57036
57044
  var hasMoreOlder;
57037
57045
  return __generator(this, function (_a) {
57038
57046
  switch (_a.label) {
@@ -57047,9 +57055,10 @@ var ChannelInner = function (props) {
57047
57055
  return [2 /*return*/];
57048
57056
  }
57049
57057
  });
57050
- }); };
57051
- var jumpToFirstUnreadMessage = React.useCallback(function (queryMessageLimit) {
57058
+ }); }, [channel, loadMoreFinished]);
57059
+ var jumpToFirstUnreadMessage = React.useCallback(function (queryMessageLimit, highlightDuration) {
57052
57060
  if (queryMessageLimit === void 0) { queryMessageLimit = DEFAULT_JUMP_TO_PAGE_SIZE; }
57061
+ if (highlightDuration === void 0) { highlightDuration = DEFAULT_HIGHLIGHT_DURATION; }
57053
57062
  return __awaiter(void 0, void 0, void 0, function () {
57054
57063
  var lastReadMessageId, firstUnreadMessageId, isInCurrentMessageSet, hasMoreMessages, result, result, lastReadTimestamp, _a, lastReadMessageIndex, lastReadMessage, messages, firstMessageWithCreationDate, firstMessageTimestamp, result, targetId_1, indexOfTarget;
57055
57064
  var _b, _c, _d, _e;
@@ -57164,7 +57173,7 @@ var ChannelInner = function (props) {
57164
57173
  clearHighlightedMessageTimeoutId.current = setTimeout(function () {
57165
57174
  clearHighlightedMessageTimeoutId.current = null;
57166
57175
  dispatch({ type: 'clearHighlightedMessage' });
57167
- }, 500);
57176
+ }, highlightDuration);
57168
57177
  return [2 /*return*/];
57169
57178
  }
57170
57179
  });
@@ -9763,6 +9763,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
9763
9763
  var DEFAULT_THREAD_PAGE_SIZE = 50;
9764
9764
  var DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD = 250;
9765
9765
  var DEFAULT_UPLOAD_SIZE_LIMIT_BYTES = 100 * 1024 * 1024; // 100 MB
9766
+ var DEFAULT_HIGHLIGHT_DURATION = 500;
9766
9767
 
9767
9768
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var accentsMap = {
9768
9769
  a: 'á|à|ã|â|À|Á|Ã|Â',
@@ -11852,7 +11853,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
11852
11853
  React__default["default"].createElement("path", { clipRule: 'evenodd', d: 'M28 14C28 21.732 21.732 28 14 28C6.26801 28 0 21.732 0 14C0 6.26801 6.26801 0 14 0C21.732 0 28 6.26801 28 14ZM26 14C26 20.6274 20.6274 26 14 26C7.37258 26 2 20.6274 2 14C2 7.37258 7.37258 2 14 2C20.6274 2 26 7.37258 26 14ZM19.59 7L21 8.41L15.41 14L21 19.59L19.59 21L14 15.41L8.41 21L7 19.59L12.59 14L7 8.41L8.41 7L14 12.59L19.59 7Z', fill: 'white', fillRule: 'evenodd' }))); };
11853
11854
 
11854
11855
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var Modal = function (_a) {
11855
- var children = _a.children, onClose = _a.onClose, open = _a.open;
11856
+ var children = _a.children, className = _a.className, onClose = _a.onClose, open = _a.open;
11856
11857
  var t = useTranslationContext('Modal').t;
11857
11858
  var themeVersion = useChatContext('Modal').themeVersion;
11858
11859
  var innerRef = React$2.useRef(null);
@@ -11876,7 +11877,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
11876
11877
  }, [onClose, open]);
11877
11878
  if (!open)
11878
11879
  return null;
11879
- return (React__default["default"].createElement("div", { className: 'str-chat__modal str-chat__modal--open', onClick: handleClick },
11880
+ return (React__default["default"].createElement("div", { className: clsx('str-chat__modal str-chat__modal--open', className), onClick: handleClick },
11880
11881
  React__default["default"].createElement($9bf71ea28793e738$export$20e40289641fbbb6, { autoFocus: true, contain: true },
11881
11882
  React__default["default"].createElement("button", { className: 'str-chat__modal__close-button', ref: closeRef, title: t('Close') },
11882
11883
  themeVersion === '2' && React__default["default"].createElement(CloseIconRound, null),
@@ -11958,7 +11959,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
11958
11959
  });
11959
11960
  return (React__default["default"].createElement("div", { className: className },
11960
11961
  renderImages,
11961
- React__default["default"].createElement(Modal, { onClose: function () { return setModalOpen(function (modalOpen) { return !modalOpen; }); }, open: modalOpen },
11962
+ React__default["default"].createElement(Modal, { className: 'str-chat__gallery-modal', onClose: function () { return setModalOpen(function (modalOpen) { return !modalOpen; }); }, open: modalOpen },
11962
11963
  React__default["default"].createElement(ModalGallery$1, { images: images, index: index }))));
11963
11964
  };
11964
11965
  /**
@@ -11977,7 +11978,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
11977
11978
  var toggleModal = function () { return setModalIsOpen(function (modalIsOpen) { return !modalIsOpen; }); };
11978
11979
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
11979
11980
  React__default["default"].createElement(BaseImage$1, __assign({ alt: fallback, className: 'str-chat__message-attachment--img', "data-testid": 'image-test', onClick: toggleModal, src: imageSrc, style: style, tabIndex: 0, title: fallback }, dimensions, (innerRef && { ref: innerRef }))),
11980
- React__default["default"].createElement(Modal, { onClose: toggleModal, open: modalIsOpen },
11981
+ React__default["default"].createElement(Modal, { className: 'str-chat__image-modal', onClose: toggleModal, open: modalIsOpen },
11981
11982
  React__default["default"].createElement(ModalGallery$1, { images: [props], index: 0 }))));
11982
11983
  };
11983
11984
 
@@ -48571,7 +48572,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
48571
48572
 
48572
48573
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};function MessageBounceModal(_a) {
48573
48574
  var MessageBouncePrompt = _a.MessageBouncePrompt, modalProps = __rest(_a, ["MessageBouncePrompt"]);
48574
- return (React__default["default"].createElement(Modal, __assign({}, modalProps),
48575
+ return (React__default["default"].createElement(Modal, __assign({ className: 'str-chat__message-bounce-modal' }, modalProps),
48575
48576
  React__default["default"].createElement(MessageBounceProvider, null,
48576
48577
  React__default["default"].createElement(MessageBouncePrompt, { onClose: modalProps.onClose }))));
48577
48578
  }
@@ -48818,9 +48819,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
48818
48819
  }
48819
48820
  return true;
48820
48821
  };
48821
- var areMessagesEqual = function (prevMessage, nextMessage) {
48822
+ function areMessagesEqual(prevMessage, nextMessage) {
48822
48823
  var _a, _b, _c, _d, _e, _f;
48823
- return prevMessage.deleted_at === nextMessage.deleted_at &&
48824
+ return (prevMessage.deleted_at === nextMessage.deleted_at &&
48824
48825
  ((_a = prevMessage.latest_reactions) === null || _a === void 0 ? void 0 : _a.length) === ((_b = nextMessage.latest_reactions) === null || _b === void 0 ? void 0 : _b.length) &&
48825
48826
  ((_c = prevMessage.own_reactions) === null || _c === void 0 ? void 0 : _c.length) === ((_d = nextMessage.own_reactions) === null || _d === void 0 ? void 0 : _d.length) &&
48826
48827
  prevMessage.pinned === nextMessage.pinned &&
@@ -48829,8 +48830,11 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
48829
48830
  prevMessage.text === nextMessage.text &&
48830
48831
  prevMessage.type === nextMessage.type &&
48831
48832
  prevMessage.updated_at === nextMessage.updated_at &&
48832
- ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at);
48833
- };
48833
+ ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at) &&
48834
+ Boolean(prevMessage.quoted_message) === Boolean(nextMessage.quoted_message) &&
48835
+ (!prevMessage.quoted_message ||
48836
+ areMessagesEqual(prevMessage.quoted_message, nextMessage.quoted_message)));
48837
+ }
48834
48838
  var areMessagePropsEqual = function (prevProps, nextProps) {
48835
48839
  var prevMessage = prevProps.message, prevMessageUI = prevProps.Message;
48836
48840
  var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
@@ -51142,14 +51146,13 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
51142
51146
 
51143
51147
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedMessageStatus = function (props) {
51144
51148
  var _a;
51145
- var propAvatar = props.Avatar, _b = props.messageType, messageType = _b === void 0 ? 'simple' : _b, _c = props.tooltipUserNameMapper, tooltipUserNameMapper = _c === void 0 ? mapToUserNameOrId : _c;
51149
+ var propAvatar = props.Avatar, MessageDeliveredStatus = props.MessageDeliveredStatus, MessageReadStatus = props.MessageReadStatus, MessageSendingStatus = props.MessageSendingStatus, _b = props.messageType, messageType = _b === void 0 ? 'simple' : _b, _c = props.tooltipUserNameMapper, tooltipUserNameMapper = _c === void 0 ? mapToUserNameOrId : _c;
51146
51150
  var _d = useEnterLeaveHandlers(), handleEnter = _d.handleEnter, handleLeave = _d.handleLeave, tooltipVisible = _d.tooltipVisible;
51147
- var client = useChatContext('MessageStatus').client;
51151
+ var _e = useChatContext('MessageStatus'), client = _e.client, themeVersion = _e.themeVersion;
51148
51152
  var contextAvatar = useComponentContext('MessageStatus').Avatar;
51149
- var _e = useMessageContext('MessageStatus'), isMyMessage = _e.isMyMessage, lastReceivedId = _e.lastReceivedId, message = _e.message, readBy = _e.readBy, threadList = _e.threadList;
51153
+ var _f = useMessageContext('MessageStatus'), isMyMessage = _f.isMyMessage, lastReceivedId = _f.lastReceivedId, message = _f.message, readBy = _f.readBy, threadList = _f.threadList;
51150
51154
  var t = useTranslationContext('MessageStatus').t;
51151
- var themeVersion = useChatContext('MessageStatus').themeVersion;
51152
- var _f = React$2.useState(null), referenceElement = _f[0], setReferenceElement = _f[1];
51155
+ var _g = React$2.useState(null), referenceElement = _g[0], setReferenceElement = _g[1];
51153
51156
  var Avatar$1 = propAvatar || contextAvatar || Avatar;
51154
51157
  if (!isMyMessage() || message.type === 'error')
51155
51158
  return null;
@@ -51166,19 +51169,23 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
51166
51169
  'message-status-received': delivered && !deliveredAndRead,
51167
51170
  'message-status-sending': sending,
51168
51171
  }), onMouseEnter: handleEnter, onMouseLeave: handleLeave, ref: setReferenceElement },
51169
- sending && (React__default["default"].createElement(React__default["default"].Fragment, null,
51170
- themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Sending...')),
51171
- themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Sending...'))),
51172
- React__default["default"].createElement(LoadingIndicator, null))),
51173
- delivered && !deliveredAndRead && (React__default["default"].createElement(React__default["default"].Fragment, null,
51174
- themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Delivered')),
51175
- themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Delivered'))),
51176
- themeVersion === '2' ? React__default["default"].createElement(MessageDeliveredIcon, null) : React__default["default"].createElement(DeliveredCheckIcon, null))),
51177
- deliveredAndRead && (React__default["default"].createElement(React__default["default"].Fragment, null,
51178
- themeVersion === '1' && (React__default["default"].createElement(Tooltip, null, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
51179
- themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
51180
- React__default["default"].createElement(Avatar$1, { image: lastReadUser.image, name: lastReadUser.name || lastReadUser.id, size: 15, user: lastReadUser }),
51181
- readBy.length > 2 && (React__default["default"].createElement("span", { className: "str-chat__message-".concat(messageType, "-status-number"), "data-testid": 'message-status-read-by-many' }, readBy.length - 1))))));
51172
+ sending &&
51173
+ (MessageSendingStatus ? (React__default["default"].createElement(MessageSendingStatus, null)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
51174
+ themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Sending...')),
51175
+ themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Sending...'))),
51176
+ React__default["default"].createElement(LoadingIndicator, null)))),
51177
+ delivered &&
51178
+ !deliveredAndRead &&
51179
+ (MessageDeliveredStatus ? (React__default["default"].createElement(MessageDeliveredStatus, null)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
51180
+ themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Delivered')),
51181
+ themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Delivered'))),
51182
+ themeVersion === '2' ? React__default["default"].createElement(MessageDeliveredIcon, null) : React__default["default"].createElement(DeliveredCheckIcon, null)))),
51183
+ deliveredAndRead &&
51184
+ (MessageReadStatus ? (React__default["default"].createElement(MessageReadStatus, null)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
51185
+ themeVersion === '1' && (React__default["default"].createElement(Tooltip, null, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
51186
+ themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
51187
+ React__default["default"].createElement(Avatar$1, { image: lastReadUser.image, name: lastReadUser.name || lastReadUser.id, size: 15, user: lastReadUser }),
51188
+ readBy.length > 2 && (React__default["default"].createElement("span", { className: "str-chat__message-".concat(messageType, "-status-number"), "data-testid": 'message-status-read-by-many' }, readBy.length - 1)))))));
51182
51189
  };
51183
51190
  var MessageStatus = React__default["default"].memo(UnMemoizedMessageStatus);
51184
51191
 
@@ -66961,7 +66968,7 @@ bitsperframe: %d
66961
66968
  ? __spreadArray([], reactionDetails, true).sort(legacySortReactionDetails)
66962
66969
  : reactionDetails;
66963
66970
  }, [legacySortReactionDetails, reactionDetails]);
66964
- return (React__default["default"].createElement(Modal, __assign({}, modalProps),
66971
+ return (React__default["default"].createElement(Modal, __assign({}, modalProps, { className: clsx('str-chat__message-reactions-details-modal', modalProps.className) }),
66965
66972
  React__default["default"].createElement("div", { className: 'str-chat__message-reactions-details', "data-testid": 'reactions-list-modal' },
66966
66973
  React__default["default"].createElement("div", { className: 'str-chat__message-reactions-details-reaction-types' }, reactions.map(function (_a) {
66967
66974
  var EmojiComponent = _a.EmojiComponent, reactionCount = _a.reactionCount, reactionType = _a.reactionType;
@@ -67785,7 +67792,7 @@ bitsperframe: %d
67785
67792
  'str-chat__virtual-message__wrapper--group': groupedByUser,
67786
67793
  });
67787
67794
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
67788
- editing && (React__default["default"].createElement(Modal, { onClose: clearEditingState, open: editing },
67795
+ editing && (React__default["default"].createElement(Modal, { className: 'str-chat__edit-message-modal', onClose: clearEditingState, open: editing },
67789
67796
  React__default["default"].createElement(MessageInput, __assign({ clearEditingState: clearEditingState, grow: true, hideSendButton: true, Input: EditMessageInput, message: message }, additionalMessageInputProps)))),
67790
67797
  isBounceDialogOpen && (React__default["default"].createElement(MessageBounceModal, { MessageBouncePrompt: MessageBouncePrompt$1, onClose: function () { return setIsBounceDialogOpen(false); }, open: isBounceDialogOpen })),
67791
67798
  React__default["default"].createElement("div", { className: rootClassName, key: message.id },
@@ -68929,7 +68936,7 @@ bitsperframe: %d
68929
68936
  React__default["default"].createElement(HeaderComponent, null)));
68930
68937
  }
68931
68938
  else if (message.type === 'system') {
68932
- renderedMessages.push(React__default["default"].createElement("li", { key: message.id || message.created_at },
68939
+ renderedMessages.push(React__default["default"].createElement("li", { "data-message-id": message.id, key: message.id || message.created_at },
68933
68940
  React__default["default"].createElement(MessageSystem, { message: message })));
68934
68941
  }
68935
68942
  else {
@@ -70499,9 +70506,11 @@ bitsperframe: %d
70499
70506
  if (separateGiphyPreview)
70500
70507
  client.on('message.new', handleEvent);
70501
70508
  return function () { return client.off('message.new', handleEvent); };
70502
- // eslint-disable-next-line react-hooks/exhaustive-deps
70503
- }, [separateGiphyPreview]);
70504
- return { giphyPreviewMessage: giphyPreviewMessage, setGiphyPreviewMessage: setGiphyPreviewMessage };
70509
+ }, [client, separateGiphyPreview]);
70510
+ return {
70511
+ giphyPreviewMessage: giphyPreviewMessage,
70512
+ setGiphyPreviewMessage: separateGiphyPreview ? setGiphyPreviewMessage : undefined,
70513
+ };
70505
70514
  };
70506
70515
 
70507
70516
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useMessageSetKey = function (_a) {
@@ -71591,8 +71600,9 @@ bitsperframe: %d
71591
71600
  });
71592
71601
  };
71593
71602
  var clearHighlightedMessageTimeoutId = React$2.useRef(null);
71594
- var jumpToMessage = function (messageId, messageLimit) {
71603
+ var jumpToMessage = React$2.useCallback(function (messageId, messageLimit, highlightDuration) {
71595
71604
  if (messageLimit === void 0) { messageLimit = DEFAULT_JUMP_TO_PAGE_SIZE; }
71605
+ if (highlightDuration === void 0) { highlightDuration = DEFAULT_HIGHLIGHT_DURATION; }
71596
71606
  return __awaiter(void 0, void 0, void 0, function () {
71597
71607
  var indexOfMessage, hasMoreMessages;
71598
71608
  return __generator(this, function (_a) {
@@ -71616,13 +71626,13 @@ bitsperframe: %d
71616
71626
  clearHighlightedMessageTimeoutId.current = setTimeout(function () {
71617
71627
  clearHighlightedMessageTimeoutId.current = null;
71618
71628
  dispatch({ type: 'clearHighlightedMessage' });
71619
- }, 500);
71629
+ }, highlightDuration);
71620
71630
  return [2 /*return*/];
71621
71631
  }
71622
71632
  });
71623
71633
  });
71624
- };
71625
- var jumpToLatestMessage = function () { return __awaiter(void 0, void 0, void 0, function () {
71634
+ }, [channel, loadMoreFinished]);
71635
+ var jumpToLatestMessage = React$2.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
71626
71636
  var hasMoreOlder;
71627
71637
  return __generator(this, function (_a) {
71628
71638
  switch (_a.label) {
@@ -71637,9 +71647,10 @@ bitsperframe: %d
71637
71647
  return [2 /*return*/];
71638
71648
  }
71639
71649
  });
71640
- }); };
71641
- var jumpToFirstUnreadMessage = React$2.useCallback(function (queryMessageLimit) {
71650
+ }); }, [channel, loadMoreFinished]);
71651
+ var jumpToFirstUnreadMessage = React$2.useCallback(function (queryMessageLimit, highlightDuration) {
71642
71652
  if (queryMessageLimit === void 0) { queryMessageLimit = DEFAULT_JUMP_TO_PAGE_SIZE; }
71653
+ if (highlightDuration === void 0) { highlightDuration = DEFAULT_HIGHLIGHT_DURATION; }
71643
71654
  return __awaiter(void 0, void 0, void 0, function () {
71644
71655
  var lastReadMessageId, firstUnreadMessageId, isInCurrentMessageSet, hasMoreMessages, result, result, lastReadTimestamp, _a, lastReadMessageIndex, lastReadMessage, messages, firstMessageWithCreationDate, firstMessageTimestamp, result, targetId_1, indexOfTarget;
71645
71656
  var _b, _c, _d, _e;
@@ -71754,7 +71765,7 @@ bitsperframe: %d
71754
71765
  clearHighlightedMessageTimeoutId.current = setTimeout(function () {
71755
71766
  clearHighlightedMessageTimeoutId.current = null;
71756
71767
  dispatch({ type: 'clearHighlightedMessage' });
71757
- }, 500);
71768
+ }, highlightDuration);
71758
71769
  return [2 /*return*/];
71759
71770
  }
71760
71771
  });
@@ -73438,7 +73449,7 @@ bitsperframe: %d
73438
73449
 
73439
73450
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
73440
73451
 
73441
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '11.19.0';
73452
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '11.20.0';
73442
73453
 
73443
73454
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
73444
73455
  var _b, _c;