stream-chat-react 9.1.4 → 9.3.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.
- package/dist/browser.full-bundle.js +106 -80
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +5 -5
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +3 -6
- package/dist/components/Channel/channelState.d.ts.map +1 -1
- package/dist/components/Channel/channelState.js +2 -2
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +12 -1
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
- package/dist/components/Message/Message.d.ts.map +1 -1
- package/dist/components/Message/Message.js +1 -1
- package/dist/components/Message/MessageStatus.d.ts +2 -0
- package/dist/components/Message/MessageStatus.d.ts.map +1 -1
- package/dist/components/Message/MessageStatus.js +4 -4
- package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
- package/dist/components/Message/hooks/useUserRole.js +17 -3
- package/dist/components/Message/types.d.ts +2 -0
- package/dist/components/Message/types.d.ts.map +1 -1
- package/dist/components/Message/utils.d.ts +10 -1
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +13 -4
- package/dist/components/MessageActions/MessageActionsBox.js +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +0 -2
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +11 -8
- package/dist/context/MessageContext.d.ts +2 -0
- package/dist/context/MessageContext.d.ts.map +1 -1
- package/dist/css/index.css +1 -1
- package/dist/index.cjs.js +53 -29
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/Message.scss +1 -1
- package/dist/stories/hello.stories.js +1 -1
- package/dist/stories/message-status-readby-tooltip.stories.d.ts +4 -0
- package/dist/stories/message-status-readby-tooltip.stories.d.ts.map +1 -0
- package/dist/stories/message-status-readby-tooltip.stories.js +58 -0
- package/dist/stories/navigate-long-message-lists.stories.d.ts.map +1 -1
- package/dist/stories/navigate-long-message-lists.stories.js +22 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -5
package/dist/index.cjs.js
CHANGED
|
@@ -2547,7 +2547,7 @@ var channelReducer = function (state, action) {
|
|
|
2547
2547
|
}
|
|
2548
2548
|
case 'loadMoreFinished': {
|
|
2549
2549
|
var hasMore = action.hasMore, messages = action.messages;
|
|
2550
|
-
return __assign(__assign({}, state), { hasMore: hasMore, loadingMore: false, messages: messages });
|
|
2550
|
+
return __assign(__assign({}, state), { hasMore: hasMore, loadingMore: false, messages: messages, suppressAutoscroll: false });
|
|
2551
2551
|
}
|
|
2552
2552
|
case 'loadMoreNewerFinished': {
|
|
2553
2553
|
var hasMoreNewer = action.hasMoreNewer, messages = action.messages;
|
|
@@ -2568,7 +2568,7 @@ var channelReducer = function (state, action) {
|
|
|
2568
2568
|
case 'setLoadingMore': {
|
|
2569
2569
|
var loadingMore = action.loadingMore;
|
|
2570
2570
|
// suppress the autoscroll behavior
|
|
2571
|
-
return __assign(__assign({}, state), { loadingMore: loadingMore, suppressAutoscroll:
|
|
2571
|
+
return __assign(__assign({}, state), { loadingMore: loadingMore, suppressAutoscroll: loadingMore });
|
|
2572
2572
|
}
|
|
2573
2573
|
case 'setLoadingMoreNewer': {
|
|
2574
2574
|
var loadingMoreNewer = action.loadingMoreNewer;
|
|
@@ -2866,12 +2866,26 @@ var useUserRole = function (message, onlySenderCanEdit, disableQuotedMessages) {
|
|
|
2866
2866
|
var _a, _b, _c;
|
|
2867
2867
|
var _d = useChannelStateContext('useUserRole'), channel = _d.channel, _e = _d.channelCapabilities, channelCapabilities = _e === void 0 ? {} : _e, channelConfig = _d.channelConfig;
|
|
2868
2868
|
var client = useChatContext('useUserRole').client;
|
|
2869
|
+
/**
|
|
2870
|
+
* @deprecated as it relies on `membership.role` check which is already deprecated and shouldn't be used anymore.
|
|
2871
|
+
* `isAdmin` will be removed in future release. See `channelCapabilities`.
|
|
2872
|
+
*/
|
|
2869
2873
|
var isAdmin = ((_a = client.user) === null || _a === void 0 ? void 0 : _a.role) === 'admin' || channel.state.membership.role === 'admin';
|
|
2870
|
-
|
|
2874
|
+
/**
|
|
2875
|
+
* @deprecated as it relies on `membership.role` check which is already deprecated and shouldn't be used anymore.
|
|
2876
|
+
* `isOwner` will be removed in future release. See `channelCapabilities`.
|
|
2877
|
+
*/
|
|
2871
2878
|
var isOwner = channel.state.membership.role === 'owner';
|
|
2872
|
-
|
|
2879
|
+
/**
|
|
2880
|
+
* @deprecated as it relies on `membership.role` check which is already deprecated and shouldn't be used anymore.
|
|
2881
|
+
* `isModerator` will be removed in future release. See `channelCapabilities`.
|
|
2882
|
+
*/
|
|
2883
|
+
var isModerator = ((_b = client.user) === null || _b === void 0 ? void 0 : _b.role) === 'channel_moderator' ||
|
|
2873
2884
|
channel.state.membership.role === 'channel_moderator' ||
|
|
2874
|
-
channel.state.membership.role === 'moderator'
|
|
2885
|
+
channel.state.membership.role === 'moderator' ||
|
|
2886
|
+
channel.state.membership.is_moderator === true ||
|
|
2887
|
+
channel.state.membership.channel_role === 'channel_moderator';
|
|
2888
|
+
var isMyMessage = client.userID === ((_c = message.user) === null || _c === void 0 ? void 0 : _c.id);
|
|
2875
2889
|
var canEdit = (!onlySenderCanEdit && channelCapabilities['update-any-message']) ||
|
|
2876
2890
|
(isMyMessage && channelCapabilities['update-own-message']);
|
|
2877
2891
|
var canDelete = channelCapabilities['delete-any-message'] ||
|
|
@@ -3166,15 +3180,24 @@ var getNonImageAttachments = function (message) {
|
|
|
3166
3180
|
}
|
|
3167
3181
|
return message.attachments.filter(function (item) { return item.type !== 'image'; });
|
|
3168
3182
|
};
|
|
3169
|
-
|
|
3183
|
+
/**
|
|
3184
|
+
* Default Tooltip Username mapper implementation.
|
|
3185
|
+
*
|
|
3186
|
+
* @param user the user.
|
|
3187
|
+
*/
|
|
3188
|
+
var mapToUserNameOrId = function (user) { return user.name || user.id; };
|
|
3189
|
+
var getReadByTooltipText = function (users, t, client, tooltipUserNameMapper) {
|
|
3170
3190
|
var outStr = '';
|
|
3171
3191
|
if (!t) {
|
|
3172
|
-
throw new Error('
|
|
3192
|
+
throw new Error('getReadByTooltipText was called, but translation function is not available');
|
|
3193
|
+
}
|
|
3194
|
+
if (!tooltipUserNameMapper) {
|
|
3195
|
+
throw new Error('getReadByTooltipText was called, but tooltipUserNameMapper function is not available');
|
|
3173
3196
|
}
|
|
3174
3197
|
// first filter out client user, so restLength won't count it
|
|
3175
3198
|
var otherUsers = users
|
|
3176
3199
|
.filter(function (item) { return item && (client === null || client === void 0 ? void 0 : client.user) && item.id !== client.user.id; })
|
|
3177
|
-
.map(
|
|
3200
|
+
.map(tooltipUserNameMapper);
|
|
3178
3201
|
var slicedArr = otherUsers.slice(0, 5);
|
|
3179
3202
|
var restLength = otherUsers.length - slicedArr.length;
|
|
3180
3203
|
if (slicedArr.length === 1) {
|
|
@@ -3193,7 +3216,7 @@ var getReadByTooltipText = function (users, t, client) {
|
|
|
3193
3216
|
// example: "bob, joe, sam and 4 more"
|
|
3194
3217
|
if (restLength === 0) {
|
|
3195
3218
|
// mutate slicedArr to remove last user to display it separately
|
|
3196
|
-
var lastUser = slicedArr.splice(slicedArr.length -
|
|
3219
|
+
var lastUser = slicedArr.splice(slicedArr.length - 1, 1);
|
|
3197
3220
|
outStr = t('{{ commaSeparatedUsers }}, and {{ lastUser }}', {
|
|
3198
3221
|
commaSeparatedUsers: slicedArr.join(', '),
|
|
3199
3222
|
lastUser: lastUser,
|
|
@@ -3310,7 +3333,7 @@ var UnMemoizedMessageActionsBox = function (props) {
|
|
|
3310
3333
|
return (React__default['default'].createElement("div", { className: "str-chat__message-actions-box\n " + (open ? 'str-chat__message-actions-box--open' : '') + "\n " + (mine ? 'str-chat__message-actions-box--mine' : '') + "\n " + (reverse ? 'str-chat__message-actions-box--reverse' : '') + "\n ", "data-testid": 'message-actions-box', ref: checkIfReverse },
|
|
3311
3334
|
React__default['default'].createElement("div", { "aria-label": 'Message Options', className: 'str-chat__message-actions-list', role: 'listbox' },
|
|
3312
3335
|
customMessageActions && (React__default['default'].createElement(CustomMessageActionsList, { customMessageActions: customMessageActions, message: message })),
|
|
3313
|
-
messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 &&
|
|
3336
|
+
messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleQuote, role: 'option' }, t('Reply'))),
|
|
3314
3337
|
messageActions.indexOf(MESSAGE_ACTIONS.pin) > -1 && !message.parent_id && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handlePin, role: 'option' }, !message.pinned ? t('Pin') : t('Unpin'))),
|
|
3315
3338
|
messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleFlag, role: 'option' }, t('Flag'))),
|
|
3316
3339
|
messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleMute, role: 'option' }, isUserMuted() ? t('Unmute') : t('Mute'))),
|
|
@@ -3446,10 +3469,10 @@ var Tooltip = function (props) {
|
|
|
3446
3469
|
|
|
3447
3470
|
var UnMemoizedMessageStatus = function (props) {
|
|
3448
3471
|
var _a;
|
|
3449
|
-
var propAvatar = props.Avatar, _b = props.messageType, messageType = _b === void 0 ? 'simple' : _b;
|
|
3472
|
+
var propAvatar = props.Avatar, _b = props.messageType, messageType = _b === void 0 ? 'simple' : _b, _c = props.tooltipUserNameMapper, tooltipUserNameMapper = _c === void 0 ? mapToUserNameOrId : _c;
|
|
3450
3473
|
var client = useChatContext('MessageStatus').client;
|
|
3451
3474
|
var contextAvatar = useComponentContext('MessageStatus').Avatar;
|
|
3452
|
-
var
|
|
3475
|
+
var _d = useMessageContext('MessageStatus'), isMyMessage = _d.isMyMessage, lastReceivedId = _d.lastReceivedId, message = _d.message, readBy = _d.readBy, threadList = _d.threadList;
|
|
3453
3476
|
var t = useTranslationContext('MessageStatus').t;
|
|
3454
3477
|
var Avatar$1 = propAvatar || contextAvatar || Avatar;
|
|
3455
3478
|
if (!isMyMessage() || message.type === 'error') {
|
|
@@ -3464,7 +3487,7 @@ var UnMemoizedMessageStatus = function (props) {
|
|
|
3464
3487
|
if ((readBy === null || readBy === void 0 ? void 0 : readBy.length) && !threadList && !justReadByMe) {
|
|
3465
3488
|
var lastReadUser = readBy.filter(function (item) { var _a; return item.id !== ((_a = client.user) === null || _a === void 0 ? void 0 : _a.id); })[0];
|
|
3466
3489
|
return (React__default['default'].createElement("span", { className: "str-chat__message-" + messageType + "-status", "data-testid": 'message-status-read-by' },
|
|
3467
|
-
React__default['default'].createElement(Tooltip, null, getReadByTooltipText(readBy, t, client)),
|
|
3490
|
+
React__default['default'].createElement(Tooltip, null, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper)),
|
|
3468
3491
|
React__default['default'].createElement(Avatar$1, { image: lastReadUser.image, name: lastReadUser.name || lastReadUser.id, size: 15, user: lastReadUser }),
|
|
3469
3492
|
readBy.length > 2 && (React__default['default'].createElement("span", { className: "str-chat__message-" + messageType + "-status-number", "data-testid": 'message-status-read-by-many' }, readBy.length - 1))));
|
|
3470
3493
|
}
|
|
@@ -6525,19 +6548,16 @@ var ChannelInner = function (props) {
|
|
|
6525
6548
|
}
|
|
6526
6549
|
});
|
|
6527
6550
|
}); };
|
|
6528
|
-
var createMessagePreview = function (text, attachments, parent, mentioned_users) {
|
|
6529
|
-
var clientSideID = client.userID + "-" + nanoid.nanoid();
|
|
6530
|
-
return __assign({ __html: text, attachments: attachments, created_at: new Date(), html: text, id: clientSideID, mentioned_users: mentioned_users, reactions: [], status: 'sending', text: text, type: 'regular', user: client.user }, ((parent === null || parent === void 0 ? void 0 : parent.id) ? { parent_id: parent.id } : null));
|
|
6531
|
-
};
|
|
6532
6551
|
var sendMessage = function (_a, customMessageData) {
|
|
6533
|
-
var _b = _a.attachments, attachments = _b === void 0 ? [] : _b, _c = _a.mentioned_users, mentioned_users = _c === void 0 ? [] : _c,
|
|
6552
|
+
var _b = _a.attachments, attachments = _b === void 0 ? [] : _b, _c = _a.mentioned_users, mentioned_users = _c === void 0 ? [] : _c, parent = _a.parent, _d = _a.text, text = _d === void 0 ? '' : _d;
|
|
6534
6553
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
6535
6554
|
var messagePreview;
|
|
6555
|
+
var _e;
|
|
6536
6556
|
return __generator(this, function (_f) {
|
|
6537
6557
|
switch (_f.label) {
|
|
6538
6558
|
case 0:
|
|
6539
6559
|
channel.state.filterErrorMessages();
|
|
6540
|
-
messagePreview =
|
|
6560
|
+
messagePreview = __assign({ __html: text, attachments: attachments, created_at: new Date(), html: text, id: (_e = customMessageData === null || customMessageData === void 0 ? void 0 : customMessageData.id) !== null && _e !== void 0 ? _e : client.userID + "-" + nanoid.nanoid(), mentioned_users: mentioned_users, reactions: [], status: 'sending', text: text, type: 'regular', user: client.user }, ((parent === null || parent === void 0 ? void 0 : parent.id) ? { parent_id: parent.id } : null));
|
|
6541
6561
|
updateMessage(messagePreview);
|
|
6542
6562
|
return [4 /*yield*/, doSendMessage(messagePreview, customMessageData)];
|
|
6543
6563
|
case 1:
|
|
@@ -7671,7 +7691,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
7671
7691
|
*/
|
|
7672
7692
|
var ChannelList = React__default['default'].memo(UnMemoizedChannelList);
|
|
7673
7693
|
|
|
7674
|
-
var version = '9.
|
|
7694
|
+
var version = '9.3.0';
|
|
7675
7695
|
|
|
7676
7696
|
var useChat = function (_a) {
|
|
7677
7697
|
var _b, _c;
|
|
@@ -8122,7 +8142,7 @@ var Message = function (props) {
|
|
|
8122
8142
|
}), canPin = _d.canPin, handlePin = _d.handlePin;
|
|
8123
8143
|
var _e = useReactionClick(message, reactionSelectorRef, undefined, closeReactionSelectorOnClick), isReactionEnabled = _e.isReactionEnabled, onReactionListClick = _e.onReactionListClick, showDetailedReactions = _e.showDetailedReactions;
|
|
8124
8144
|
var highlighted = highlightedMessageId === message.id;
|
|
8125
|
-
return (React__default['default'].createElement(MemoizedMessage, { additionalMessageInputProps: props.additionalMessageInputProps, canPin: canPin, customMessageActions: props.customMessageActions, disableQuotedMessages: props.disableQuotedMessages, endOfGroup: props.endOfGroup, firstOfGroup: props.firstOfGroup, formatDate: props.formatDate, groupedByUser: props.groupedByUser, groupStyles: props.groupStyles, handleAction: handleAction, handleDelete: handleDelete, handleFlag: handleFlag, handleMute: handleMute, handleOpenThread: handleOpenThread, handlePin: handlePin, handleReaction: handleReaction, handleRetry: handleRetry, highlighted: highlighted, initialMessage: props.initialMessage, isReactionEnabled: isReactionEnabled, lastReceivedId: props.lastReceivedId, message: message, Message: props.Message, messageActions: props.messageActions, messageListRect: props.messageListRect, mutes: mutes, onMentionsClickMessage: onMentionsClick, onMentionsHoverMessage: onMentionsHover, onReactionListClick: onReactionListClick, onUserClick: props.onUserClick, onUserHover: props.onUserHover, pinPermissions: props.pinPermissions, reactionSelectorRef: reactionSelectorRef, readBy: props.readBy, renderText: props.renderText, showDetailedReactions: showDetailedReactions, threadList: props.threadList, unsafeHTML: props.unsafeHTML, userRoles: userRoles }));
|
|
8145
|
+
return (React__default['default'].createElement(MemoizedMessage, { additionalMessageInputProps: props.additionalMessageInputProps, autoscrollToBottom: props.autoscrollToBottom, canPin: canPin, customMessageActions: props.customMessageActions, disableQuotedMessages: props.disableQuotedMessages, endOfGroup: props.endOfGroup, firstOfGroup: props.firstOfGroup, formatDate: props.formatDate, groupedByUser: props.groupedByUser, groupStyles: props.groupStyles, handleAction: handleAction, handleDelete: handleDelete, handleFlag: handleFlag, handleMute: handleMute, handleOpenThread: handleOpenThread, handlePin: handlePin, handleReaction: handleReaction, handleRetry: handleRetry, highlighted: highlighted, initialMessage: props.initialMessage, isReactionEnabled: isReactionEnabled, lastReceivedId: props.lastReceivedId, message: message, Message: props.Message, messageActions: props.messageActions, messageListRect: props.messageListRect, mutes: mutes, onMentionsClickMessage: onMentionsClick, onMentionsHoverMessage: onMentionsHover, onReactionListClick: onReactionListClick, onUserClick: props.onUserClick, onUserHover: props.onUserHover, pinPermissions: props.pinPermissions, reactionSelectorRef: reactionSelectorRef, readBy: props.readBy, renderText: props.renderText, showDetailedReactions: showDetailedReactions, threadList: props.threadList, unsafeHTML: props.unsafeHTML, userRoles: userRoles }));
|
|
8126
8146
|
};
|
|
8127
8147
|
|
|
8128
8148
|
var MessageCommerceWithContext = function (props) {
|
|
@@ -9299,7 +9319,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9299
9319
|
return isAtBottom ? stickToBottomScrollBehavior : false;
|
|
9300
9320
|
};
|
|
9301
9321
|
var messageRenderer = React.useCallback(function (messageList, virtuosoIndex) {
|
|
9302
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
9322
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
9303
9323
|
var streamMessageIndex = virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;
|
|
9304
9324
|
// use custom renderer supplied by client if present and skip the rest
|
|
9305
9325
|
if (customMessageRenderer) {
|
|
@@ -9319,17 +9339,20 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9319
9339
|
((_a = message.user) === null || _a === void 0 ? void 0 : _a.id) === ((_b = messageList[streamMessageIndex - 1].user) === null || _b === void 0 ? void 0 : _b.id);
|
|
9320
9340
|
var firstOfGroup = shouldGroupByUser && ((_c = message.user) === null || _c === void 0 ? void 0 : _c.id) !== ((_e = (_d = messageList[streamMessageIndex - 1]) === null || _d === void 0 ? void 0 : _d.user) === null || _e === void 0 ? void 0 : _e.id);
|
|
9321
9341
|
var endOfGroup = shouldGroupByUser && ((_f = message.user) === null || _f === void 0 ? void 0 : _f.id) !== ((_h = (_g = messageList[streamMessageIndex + 1]) === null || _g === void 0 ? void 0 : _g.user) === null || _h === void 0 ? void 0 : _h.id);
|
|
9322
|
-
return (React__default['default'].createElement(Message, { closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: props.customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, message: message, Message: MessageUIComponent, messageActions: props.messageActions }));
|
|
9342
|
+
return (React__default['default'].createElement(Message, { autoscrollToBottom: (_j = virtuoso.current) === null || _j === void 0 ? void 0 : _j.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: props.customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, message: message, Message: MessageUIComponent, messageActions: props.messageActions }));
|
|
9323
9343
|
}, [customMessageRenderer, shouldGroupByUser, numItemsPrepended]);
|
|
9344
|
+
var Item = React.useMemo(function () {
|
|
9345
|
+
// using 'display: inline-block'
|
|
9346
|
+
// traps CSS margins of the item elements, preventing incorrect item measurements
|
|
9347
|
+
var Item = function (props) { return (React__default['default'].createElement("div", __assign({}, props, { className: (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualMessage) || 'str-chat__virtual-list-message-wrapper' }))); };
|
|
9348
|
+
return Item;
|
|
9349
|
+
}, [customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualMessage]);
|
|
9324
9350
|
var virtuosoComponents = React.useMemo(function () {
|
|
9325
9351
|
var EmptyPlaceholder = function () { return (React__default['default'].createElement(React__default['default'].Fragment, null, EmptyStateIndicator$1 && React__default['default'].createElement(EmptyStateIndicator$1, { listType: 'message' }))); };
|
|
9326
9352
|
var Header = function () {
|
|
9327
9353
|
return loadingMore ? (React__default['default'].createElement("div", { className: 'str-chat__virtual-list__loading' },
|
|
9328
9354
|
React__default['default'].createElement(LoadingIndicator$1, { size: 20 }))) : (React__default['default'].createElement(React__default['default'].Fragment, null));
|
|
9329
9355
|
};
|
|
9330
|
-
var virtualMessageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualMessage) || 'str-chat__virtual-list-message-wrapper';
|
|
9331
|
-
// using 'display: inline-block' traps CSS margins of the item elements, preventing incorrect item measurements
|
|
9332
|
-
var Item = function (props) { return React__default['default'].createElement("div", __assign({}, props, { className: virtualMessageClass })); };
|
|
9333
9356
|
var Footer = function () {
|
|
9334
9357
|
return TypingIndicator ? React__default['default'].createElement(TypingIndicator, { avatarSize: 24 }) : React__default['default'].createElement(React__default['default'].Fragment, null);
|
|
9335
9358
|
};
|
|
@@ -9369,15 +9392,15 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9369
9392
|
return null;
|
|
9370
9393
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
9371
9394
|
React__default['default'].createElement("div", { className: (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list' },
|
|
9372
|
-
React__default['default'].createElement(reactVirtuoso.Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents,
|
|
9395
|
+
React__default['default'].createElement(reactVirtuoso.Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, computeItemKey: function (index) {
|
|
9396
|
+
return processedMessages[numItemsPrepended + index - PREPEND_OFFSET].id;
|
|
9397
|
+
}, endReached: endReached, firstItemIndex: PREPEND_OFFSET - numItemsPrepended, followOutput: followOutput, increaseViewportBy: { bottom: 200, top: 0 }, initialTopMostItemIndex: calculateInitialTopMostItemIndex(processedMessages, highlightedMessageId), itemContent: function (i) { return messageRenderer(processedMessages, i); }, itemSize: fractionalItemSize, key: messageSetKey, overscan: overscan, ref: virtuoso, startReached: startReached, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, additionalVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {})))),
|
|
9373
9398
|
React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: newMessagesNotification, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom }),
|
|
9374
9399
|
giphyPreviewMessage && React__default['default'].createElement(GiphyPreviewMessage$1, { message: giphyPreviewMessage })));
|
|
9375
9400
|
};
|
|
9376
9401
|
/**
|
|
9377
9402
|
* The VirtualizedMessageList component renders a list of messages in a virtualized list.
|
|
9378
9403
|
* It is a consumer of the React contexts set in [Channel](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Channel/Channel.tsx).
|
|
9379
|
-
*
|
|
9380
|
-
* **Note**: It works well when there are thousands of messages in a channel, it has a shortcoming though - the message UI should have a fixed height.
|
|
9381
9404
|
*/
|
|
9382
9405
|
function VirtualizedMessageList(props) {
|
|
9383
9406
|
var _a = useChannelActionContext('VirtualizedMessageList'), jumpToLatestMessage = _a.jumpToLatestMessage, loadMore = _a.loadMore, loadMoreNewer = _a.loadMoreNewer;
|
|
@@ -9624,6 +9647,7 @@ exports.itTranslations = itTranslations;
|
|
|
9624
9647
|
exports.jaTranslations = jaTranslations;
|
|
9625
9648
|
exports.koTranslations = koTranslations;
|
|
9626
9649
|
exports.makeDateMessageId = makeDateMessageId;
|
|
9650
|
+
exports.mapToUserNameOrId = mapToUserNameOrId;
|
|
9627
9651
|
exports.markDownRenderers = markDownRenderers;
|
|
9628
9652
|
exports.matchMarkdownLinks = matchMarkdownLinks;
|
|
9629
9653
|
exports.mentionsMarkdownPlugin = mentionsMarkdownPlugin;
|