stream-chat-react 9.1.3 → 9.2.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 +111 -100
- 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 +1 -1
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +3 -6
- package/dist/components/Message/Message.d.ts.map +1 -1
- package/dist/components/Message/Message.js +3 -6
- 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 +1 -2
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +18 -23
- 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/components/Thread/Thread.d.ts +6 -5
- package/dist/components/Thread/Thread.d.ts.map +1 -1
- package/dist/components/Thread/Thread.js +9 -16
- 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 +58 -49
- 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/toggle-message-actions.stories.d.ts +3 -0
- package/dist/stories/toggle-message-actions.stories.d.ts.map +1 -0
- package/dist/stories/toggle-message-actions.stories.js +36 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -5
package/dist/index.cjs.js
CHANGED
|
@@ -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'] ||
|
|
@@ -3092,18 +3106,9 @@ var showMessageActionsBox = function (actions, inThread) {
|
|
|
3092
3106
|
}
|
|
3093
3107
|
return true;
|
|
3094
3108
|
};
|
|
3095
|
-
var
|
|
3109
|
+
var areMessagesEqual = function (prevMessage, nextMessage) {
|
|
3096
3110
|
var _a, _b, _c, _d, _e, _f;
|
|
3097
|
-
|
|
3098
|
-
var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
|
|
3099
|
-
if (prevMessageUI !== nextMessageUI)
|
|
3100
|
-
return false;
|
|
3101
|
-
if (prevProps.endOfGroup !== nextProps.endOfGroup)
|
|
3102
|
-
return false;
|
|
3103
|
-
if (nextProps.showDetailedReactions !== prevProps.showDetailedReactions) {
|
|
3104
|
-
return false;
|
|
3105
|
-
}
|
|
3106
|
-
var messagesAreEqual = prevMessage.deleted_at === nextMessage.deleted_at &&
|
|
3111
|
+
return prevMessage.deleted_at === nextMessage.deleted_at &&
|
|
3107
3112
|
((_a = prevMessage.latest_reactions) === null || _a === void 0 ? void 0 : _a.length) === ((_b = nextMessage.latest_reactions) === null || _b === void 0 ? void 0 : _b.length) &&
|
|
3108
3113
|
((_c = prevMessage.own_reactions) === null || _c === void 0 ? void 0 : _c.length) === ((_d = nextMessage.own_reactions) === null || _d === void 0 ? void 0 : _d.length) &&
|
|
3109
3114
|
prevMessage.pinned === nextMessage.pinned &&
|
|
@@ -3113,9 +3118,22 @@ var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
|
3113
3118
|
prevMessage.type === nextMessage.type &&
|
|
3114
3119
|
prevMessage.updated_at === nextMessage.updated_at &&
|
|
3115
3120
|
((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at);
|
|
3121
|
+
};
|
|
3122
|
+
var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
3123
|
+
var prevMessage = prevProps.message, prevMessageUI = prevProps.Message;
|
|
3124
|
+
var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
|
|
3125
|
+
if (prevMessageUI !== nextMessageUI)
|
|
3126
|
+
return false;
|
|
3127
|
+
if (prevProps.endOfGroup !== nextProps.endOfGroup)
|
|
3128
|
+
return false;
|
|
3129
|
+
if (nextProps.showDetailedReactions !== prevProps.showDetailedReactions) {
|
|
3130
|
+
return false;
|
|
3131
|
+
}
|
|
3132
|
+
var messagesAreEqual = areMessagesEqual(prevMessage, nextMessage);
|
|
3116
3133
|
if (!messagesAreEqual)
|
|
3117
3134
|
return false;
|
|
3118
|
-
var deepEqualProps = deepequal__default['default'](nextProps.
|
|
3135
|
+
var deepEqualProps = deepequal__default['default'](nextProps.messageActions, prevProps.messageActions) &&
|
|
3136
|
+
deepequal__default['default'](nextProps.readBy, prevProps.readBy) &&
|
|
3119
3137
|
deepequal__default['default'](nextProps.highlighted, prevProps.highlighted) &&
|
|
3120
3138
|
deepequal__default['default'](nextProps.groupStyles, prevProps.groupStyles) && // last 3 messages can have different group styles
|
|
3121
3139
|
deepequal__default['default'](nextProps.mutes, prevProps.mutes) &&
|
|
@@ -3126,7 +3144,7 @@ var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
|
3126
3144
|
);
|
|
3127
3145
|
};
|
|
3128
3146
|
var areMessageUIPropsEqual = function (prevProps, nextProps) {
|
|
3129
|
-
var _a, _b, _c, _d
|
|
3147
|
+
var _a, _b, _c, _d;
|
|
3130
3148
|
var prevLastReceivedId = prevProps.lastReceivedId, prevMessage = prevProps.message;
|
|
3131
3149
|
var nextLastReceivedId = nextProps.lastReceivedId, nextMessage = nextProps.message;
|
|
3132
3150
|
if (prevProps.editing !== nextProps.editing)
|
|
@@ -3146,16 +3164,7 @@ var areMessageUIPropsEqual = function (prevProps, nextProps) {
|
|
|
3146
3164
|
prevLastReceivedId !== nextLastReceivedId) {
|
|
3147
3165
|
return false;
|
|
3148
3166
|
}
|
|
3149
|
-
return (prevMessage
|
|
3150
|
-
((_e = prevMessage.latest_reactions) === null || _e === void 0 ? void 0 : _e.length) === ((_f = nextMessage.latest_reactions) === null || _f === void 0 ? void 0 : _f.length) &&
|
|
3151
|
-
((_g = prevMessage.own_reactions) === null || _g === void 0 ? void 0 : _g.length) === ((_h = nextMessage.own_reactions) === null || _h === void 0 ? void 0 : _h.length) &&
|
|
3152
|
-
prevMessage.pinned === nextMessage.pinned &&
|
|
3153
|
-
prevMessage.reply_count === nextMessage.reply_count &&
|
|
3154
|
-
prevMessage.status === nextMessage.status &&
|
|
3155
|
-
prevMessage.text === nextMessage.text &&
|
|
3156
|
-
prevMessage.type === nextMessage.type &&
|
|
3157
|
-
prevMessage.updated_at === nextMessage.updated_at &&
|
|
3158
|
-
((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.updated_at) === ((_k = nextMessage.user) === null || _k === void 0 ? void 0 : _k.updated_at));
|
|
3167
|
+
return areMessagesEqual(prevMessage, nextMessage);
|
|
3159
3168
|
};
|
|
3160
3169
|
var messageHasReactions = function (message) { return !!(message === null || message === void 0 ? void 0 : message.latest_reactions) && !!message.latest_reactions.length; };
|
|
3161
3170
|
var messageHasAttachments = function (message) { return !!(message === null || message === void 0 ? void 0 : message.attachments) && !!message.attachments.length; };
|
|
@@ -3315,7 +3324,7 @@ var UnMemoizedMessageActionsBox = function (props) {
|
|
|
3315
3324
|
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 },
|
|
3316
3325
|
React__default['default'].createElement("div", { "aria-label": 'Message Options', className: 'str-chat__message-actions-list', role: 'listbox' },
|
|
3317
3326
|
customMessageActions && (React__default['default'].createElement(CustomMessageActionsList, { customMessageActions: customMessageActions, message: message })),
|
|
3318
|
-
messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 &&
|
|
3327
|
+
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'))),
|
|
3319
3328
|
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'))),
|
|
3320
3329
|
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'))),
|
|
3321
3330
|
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'))),
|
|
@@ -6530,19 +6539,16 @@ var ChannelInner = function (props) {
|
|
|
6530
6539
|
}
|
|
6531
6540
|
});
|
|
6532
6541
|
}); };
|
|
6533
|
-
var createMessagePreview = function (text, attachments, parent, mentioned_users) {
|
|
6534
|
-
var clientSideID = client.userID + "-" + nanoid.nanoid();
|
|
6535
|
-
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));
|
|
6536
|
-
};
|
|
6537
6542
|
var sendMessage = function (_a, customMessageData) {
|
|
6538
|
-
var _b = _a.attachments, attachments = _b === void 0 ? [] : _b, _c = _a.mentioned_users, mentioned_users = _c === void 0 ? [] : _c,
|
|
6543
|
+
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;
|
|
6539
6544
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
6540
6545
|
var messagePreview;
|
|
6546
|
+
var _e;
|
|
6541
6547
|
return __generator(this, function (_f) {
|
|
6542
6548
|
switch (_f.label) {
|
|
6543
6549
|
case 0:
|
|
6544
6550
|
channel.state.filterErrorMessages();
|
|
6545
|
-
messagePreview =
|
|
6551
|
+
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));
|
|
6546
6552
|
updateMessage(messagePreview);
|
|
6547
6553
|
return [4 /*yield*/, doSendMessage(messagePreview, customMessageData)];
|
|
6548
6554
|
case 1:
|
|
@@ -7676,7 +7682,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
7676
7682
|
*/
|
|
7677
7683
|
var ChannelList = React__default['default'].memo(UnMemoizedChannelList);
|
|
7678
7684
|
|
|
7679
|
-
var version = '9.
|
|
7685
|
+
var version = '9.2.0';
|
|
7680
7686
|
|
|
7681
7687
|
var useChat = function (_a) {
|
|
7682
7688
|
var _b, _c;
|
|
@@ -8076,7 +8082,7 @@ var MessageWithContext = function (props) {
|
|
|
8076
8082
|
canReact: canReact,
|
|
8077
8083
|
canReply: canReply,
|
|
8078
8084
|
});
|
|
8079
|
-
}, [canDelete, canEdit, canFlag, canMute, canPin, canQuote, canReact, canReply]);
|
|
8085
|
+
}, [messageActions, canDelete, canEdit, canFlag, canMute, canPin, canQuote, canReact, canReply]);
|
|
8080
8086
|
props.canPin; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8081
8087
|
props.messageActions; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8082
8088
|
props.onlySenderCanEdit; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
@@ -8127,7 +8133,7 @@ var Message = function (props) {
|
|
|
8127
8133
|
}), canPin = _d.canPin, handlePin = _d.handlePin;
|
|
8128
8134
|
var _e = useReactionClick(message, reactionSelectorRef, undefined, closeReactionSelectorOnClick), isReactionEnabled = _e.isReactionEnabled, onReactionListClick = _e.onReactionListClick, showDetailedReactions = _e.showDetailedReactions;
|
|
8129
8135
|
var highlighted = highlightedMessageId === message.id;
|
|
8130
|
-
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 }));
|
|
8136
|
+
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 }));
|
|
8131
8137
|
};
|
|
8132
8138
|
|
|
8133
8139
|
var MessageCommerceWithContext = function (props) {
|
|
@@ -9304,7 +9310,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9304
9310
|
return isAtBottom ? stickToBottomScrollBehavior : false;
|
|
9305
9311
|
};
|
|
9306
9312
|
var messageRenderer = React.useCallback(function (messageList, virtuosoIndex) {
|
|
9307
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
9313
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
9308
9314
|
var streamMessageIndex = virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;
|
|
9309
9315
|
// use custom renderer supplied by client if present and skip the rest
|
|
9310
9316
|
if (customMessageRenderer) {
|
|
@@ -9324,17 +9330,20 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9324
9330
|
((_a = message.user) === null || _a === void 0 ? void 0 : _a.id) === ((_b = messageList[streamMessageIndex - 1].user) === null || _b === void 0 ? void 0 : _b.id);
|
|
9325
9331
|
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);
|
|
9326
9332
|
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);
|
|
9327
|
-
return (React__default['default'].createElement(Message, { closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: props.customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, message: message, Message: MessageUIComponent, messageActions: props.messageActions }));
|
|
9333
|
+
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 }));
|
|
9328
9334
|
}, [customMessageRenderer, shouldGroupByUser, numItemsPrepended]);
|
|
9335
|
+
var Item = React.useMemo(function () {
|
|
9336
|
+
// using 'display: inline-block'
|
|
9337
|
+
// traps CSS margins of the item elements, preventing incorrect item measurements
|
|
9338
|
+
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' }))); };
|
|
9339
|
+
return Item;
|
|
9340
|
+
}, [customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualMessage]);
|
|
9329
9341
|
var virtuosoComponents = React.useMemo(function () {
|
|
9330
9342
|
var EmptyPlaceholder = function () { return (React__default['default'].createElement(React__default['default'].Fragment, null, EmptyStateIndicator$1 && React__default['default'].createElement(EmptyStateIndicator$1, { listType: 'message' }))); };
|
|
9331
9343
|
var Header = function () {
|
|
9332
9344
|
return loadingMore ? (React__default['default'].createElement("div", { className: 'str-chat__virtual-list__loading' },
|
|
9333
9345
|
React__default['default'].createElement(LoadingIndicator$1, { size: 20 }))) : (React__default['default'].createElement(React__default['default'].Fragment, null));
|
|
9334
9346
|
};
|
|
9335
|
-
var virtualMessageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualMessage) || 'str-chat__virtual-list-message-wrapper';
|
|
9336
|
-
// using 'display: inline-block' traps CSS margins of the item elements, preventing incorrect item measurements
|
|
9337
|
-
var Item = function (props) { return React__default['default'].createElement("div", __assign({}, props, { className: virtualMessageClass })); };
|
|
9338
9347
|
var Footer = function () {
|
|
9339
9348
|
return TypingIndicator ? React__default['default'].createElement(TypingIndicator, { avatarSize: 24 }) : React__default['default'].createElement(React__default['default'].Fragment, null);
|
|
9340
9349
|
};
|
|
@@ -9374,15 +9383,15 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9374
9383
|
return null;
|
|
9375
9384
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
9376
9385
|
React__default['default'].createElement("div", { className: (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list' },
|
|
9377
|
-
React__default['default'].createElement(reactVirtuoso.Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents,
|
|
9386
|
+
React__default['default'].createElement(reactVirtuoso.Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, computeItemKey: function (index) {
|
|
9387
|
+
return processedMessages[numItemsPrepended + index - PREPEND_OFFSET].id;
|
|
9388
|
+
}, 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 } : {})))),
|
|
9378
9389
|
React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: newMessagesNotification, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom }),
|
|
9379
9390
|
giphyPreviewMessage && React__default['default'].createElement(GiphyPreviewMessage$1, { message: giphyPreviewMessage })));
|
|
9380
9391
|
};
|
|
9381
9392
|
/**
|
|
9382
9393
|
* The VirtualizedMessageList component renders a list of messages in a virtualized list.
|
|
9383
9394
|
* 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).
|
|
9384
|
-
*
|
|
9385
|
-
* **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.
|
|
9386
9395
|
*/
|
|
9387
9396
|
function VirtualizedMessageList(props) {
|
|
9388
9397
|
var _a = useChannelActionContext('VirtualizedMessageList'), jumpToLatestMessage = _a.jumpToLatestMessage, loadMore = _a.loadMore, loadMoreNewer = _a.loadMoreNewer;
|
|
@@ -9422,11 +9431,11 @@ var DefaultThreadStart = function () {
|
|
|
9422
9431
|
return React__default['default'].createElement("div", { className: 'str-chat__thread-start' }, t('Start of a new thread'));
|
|
9423
9432
|
};
|
|
9424
9433
|
var ThreadInner = function (props) {
|
|
9425
|
-
var additionalMessageInputProps = props.additionalMessageInputProps, additionalMessageListProps = props.additionalMessageListProps, additionalParentMessageProps = props.additionalParentMessageProps, additionalVirtualizedMessageListProps = props.additionalVirtualizedMessageListProps, _a = props.autoFocus, autoFocus = _a === void 0 ? true : _a, _b = props.enableDateSeparator, enableDateSeparator = _b === void 0 ? false : _b, _c = props.fullWidth, fullWidth = _c === void 0 ? false : _c, PropInput = props.Input, PropMessage = props.Message, virtualized = props.virtualized;
|
|
9426
|
-
var
|
|
9427
|
-
var
|
|
9434
|
+
var additionalMessageInputProps = props.additionalMessageInputProps, additionalMessageListProps = props.additionalMessageListProps, additionalParentMessageProps = props.additionalParentMessageProps, additionalVirtualizedMessageListProps = props.additionalVirtualizedMessageListProps, _a = props.autoFocus, autoFocus = _a === void 0 ? true : _a, _b = props.enableDateSeparator, enableDateSeparator = _b === void 0 ? false : _b, _c = props.fullWidth, fullWidth = _c === void 0 ? false : _c, PropInput = props.Input, PropMessage = props.Message, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, virtualized = props.virtualized;
|
|
9435
|
+
var _e = useChannelStateContext('Thread'), thread = _e.thread, threadHasMore = _e.threadHasMore, threadLoadingMore = _e.threadLoadingMore, threadMessages = _e.threadMessages;
|
|
9436
|
+
var _f = useChannelActionContext('Thread'), closeThread = _f.closeThread, loadMoreThread = _f.loadMoreThread, sendMessage = _f.sendMessage;
|
|
9428
9437
|
var customClasses = useChatContext('Thread').customClasses;
|
|
9429
|
-
var
|
|
9438
|
+
var _g = useComponentContext('Thread'), ContextInput = _g.ThreadInput, ContextMessage = _g.Message, _h = _g.ThreadHeader, ThreadHeader = _h === void 0 ? DefaultThreadHeader : _h, _j = _g.ThreadStart, ThreadStart = _j === void 0 ? DefaultThreadStart : _j, _k = _g.VirtualMessage, VirtualMessage = _k === void 0 ? FixedHeightMessage : _k;
|
|
9430
9439
|
var messageList = React.useRef(null);
|
|
9431
9440
|
var ThreadInput = PropInput || (additionalMessageInputProps === null || additionalMessageInputProps === void 0 ? void 0 : additionalMessageInputProps.Input) || ContextInput || MessageInputSmall;
|
|
9432
9441
|
var ThreadMessage = PropMessage || (additionalMessageListProps === null || additionalMessageListProps === void 0 ? void 0 : additionalMessageListProps.Message);
|
|
@@ -9458,7 +9467,7 @@ var ThreadInner = function (props) {
|
|
|
9458
9467
|
React__default['default'].createElement("div", { className: 'str-chat__thread-list', ref: messageList },
|
|
9459
9468
|
React__default['default'].createElement(Message, __assign({ initialMessage: true, message: thread, Message: ThreadMessage || FallbackMessage, threadList: true }, additionalParentMessageProps)),
|
|
9460
9469
|
React__default['default'].createElement(ThreadStart, null),
|
|
9461
|
-
React__default['default'].createElement(ThreadMessageList, __assign({ disableDateSeparator: !enableDateSeparator, hasMore: threadHasMore, loadingMore: threadLoadingMore, loadMore: loadMoreThread, Message: ThreadMessage || FallbackMessage, messages: threadMessages || [], threadList: true }, (virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps)))),
|
|
9470
|
+
React__default['default'].createElement(ThreadMessageList, __assign({ disableDateSeparator: !enableDateSeparator, hasMore: threadHasMore, loadingMore: threadLoadingMore, loadMore: loadMoreThread, Message: ThreadMessage || FallbackMessage, messageActions: messageActions, messages: threadMessages || [], threadList: true }, (virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps)))),
|
|
9462
9471
|
React__default['default'].createElement(MessageInput, __assign({ focus: autoFocus, Input: ThreadInput, overrideSubmitHandler: threadSubmitHandler, parent: thread, publishTypingEvent: false }, additionalMessageInputProps))));
|
|
9463
9472
|
};
|
|
9464
9473
|
|