stream-chat-react 9.1.2 → 9.1.5
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 +225 -162
- 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 +2 -5
- package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
- package/dist/components/Message/hooks/useUserRole.js +17 -3
- 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/MessageList/hooks/usePrependMessagesCount.d.ts +1 -1
- package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/usePrependMessagesCount.js +3 -2
- 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/css/index.css +1 -1
- package/dist/index.cjs.js +60 -50
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/Message.scss +1 -1
- package/dist/stories/hello.stories.d.ts +1 -0
- package/dist/stories/hello.stories.d.ts.map +1 -1
- package/dist/stories/hello.stories.js +10 -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 +6 -6
|
@@ -72,7 +72,7 @@ export declare type ChannelProps<StreamChatGenerics extends DefaultStreamChatGen
|
|
|
72
72
|
Message?: ComponentContextValue<StreamChatGenerics>['Message'];
|
|
73
73
|
/** Custom UI component for a deleted message, defaults to and accepts same props as: [MessageDeleted](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Message/MessageDeleted.tsx) */
|
|
74
74
|
MessageDeleted?: ComponentContextValue<StreamChatGenerics>['MessageDeleted'];
|
|
75
|
-
/** Custom UI component that displays message and connection status notifications in the `MessageList`, defaults to and accepts same props as [DefaultMessageListNotifications](https://github.com/GetStream/stream-chat-react/blob/master/src/components/MessageList/
|
|
75
|
+
/** Custom UI component that displays message and connection status notifications in the `MessageList`, defaults to and accepts same props as [DefaultMessageListNotifications](https://github.com/GetStream/stream-chat-react/blob/master/src/components/MessageList/MessageListNotifications.tsx) */
|
|
76
76
|
MessageListNotifications?: ComponentContextValue<StreamChatGenerics>['MessageListNotifications'];
|
|
77
77
|
/** Custom UI component to display a notification when scrolled up the list and new messages arrive, defaults to and accepts same props as [MessageNotification](https://github.com/GetStream/stream-chat-react/blob/master/src/components/MessageList/MessageNotification.tsx) */
|
|
78
78
|
MessageNotification?: ComponentContextValue<StreamChatGenerics>['MessageNotification'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../../src/components/Channel/Channel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,iBAAiB,EAOlB,MAAM,OAAO,CAAC;AAIf,OAAO,EAKL,OAAO,EACP,eAAe,EAEf,OAAO,IAAI,aAAa,EACxB,UAAU,EACV,cAAc,EAEf,MAAM,aAAa,CAAC;AASrB,OAAO,EAAE,eAAe,EAAuB,MAAM,6BAA6B,CAAC;AAGnF,OAAO,EAGL,0BAA0B,EAC3B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../../src/components/Channel/Channel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -445,19 +445,16 @@ var ChannelInner = function (props) {
|
|
|
445
445
|
}
|
|
446
446
|
});
|
|
447
447
|
}); };
|
|
448
|
-
var createMessagePreview = function (text, attachments, parent, mentioned_users) {
|
|
449
|
-
var clientSideID = client.userID + "-" + nanoid();
|
|
450
|
-
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));
|
|
451
|
-
};
|
|
452
448
|
var sendMessage = function (_a, customMessageData) {
|
|
453
|
-
var _b = _a.attachments, attachments = _b === void 0 ? [] : _b, _c = _a.mentioned_users, mentioned_users = _c === void 0 ? [] : _c,
|
|
449
|
+
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;
|
|
454
450
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
455
451
|
var messagePreview;
|
|
452
|
+
var _e;
|
|
456
453
|
return __generator(this, function (_f) {
|
|
457
454
|
switch (_f.label) {
|
|
458
455
|
case 0:
|
|
459
456
|
channel.state.filterErrorMessages();
|
|
460
|
-
messagePreview =
|
|
457
|
+
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(), 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));
|
|
461
458
|
updateMessage(messagePreview);
|
|
462
459
|
return [4 /*yield*/, doSendMessage(messagePreview, customMessageData)];
|
|
463
460
|
case 1:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../src/components/Message/Message.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../src/components/Message/Message.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAuHnE;;;GAGG;AACH,eAAO,MAAM,OAAO,uLAiHnB,CAAC"}
|
|
@@ -23,10 +23,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
23
23
|
import React, { useCallback, useRef } from 'react';
|
|
24
24
|
import { useActionHandler, useDeleteHandler, useEditHandler, useFlagHandler, useMentionsHandler, useMuteHandler, useOpenThreadHandler, usePinHandler, useReactionClick, useReactionHandler, useRetryHandler, useUserHandler, useUserRole, } from './hooks';
|
|
25
25
|
import { areMessagePropsEqual, getMessageActions, MESSAGE_ACTIONS } from './utils';
|
|
26
|
-
import { useChannelActionContext } from '../../context
|
|
27
|
-
import { useChannelStateContext } from '../../context/ChannelStateContext';
|
|
28
|
-
import { useComponentContext } from '../../context/ComponentContext';
|
|
29
|
-
import { MessageProvider } from '../../context/MessageContext';
|
|
26
|
+
import { MessageProvider, useChannelActionContext, useChannelStateContext, useComponentContext, } from '../../context';
|
|
30
27
|
var MessageWithContext = function (props) {
|
|
31
28
|
var canPin = props.canPin, groupedByUser = props.groupedByUser, propMessage = props.Message, message = props.message, _a = props.messageActions, messageActions = _a === void 0 ? Object.keys(MESSAGE_ACTIONS) : _a, propOnUserClick = props.onUserClick, propOnUserHover = props.onUserHover, userRoles = props.userRoles;
|
|
32
29
|
var contextMessage = useComponentContext('Message').Message;
|
|
@@ -49,7 +46,7 @@ var MessageWithContext = function (props) {
|
|
|
49
46
|
canReact: canReact,
|
|
50
47
|
canReply: canReply,
|
|
51
48
|
});
|
|
52
|
-
}, [canDelete, canEdit, canFlag, canMute, canPin, canQuote, canReact, canReply]);
|
|
49
|
+
}, [messageActions, canDelete, canEdit, canFlag, canMute, canPin, canQuote, canReact, canReply]);
|
|
53
50
|
var canPinPropToNotPass = props.canPin, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
54
51
|
messageActionsPropToNotPass = props.messageActions, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
55
52
|
onlySenderCanEditPropToNotPass = props.onlySenderCanEdit, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUserRole.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/hooks/useUserRole.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,sCAAsC,CAAC;AAG7F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,WAAW;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"useUserRole.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/hooks/useUserRole.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,sCAAsC,CAAC;AAG7F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,WAAW;;;;;;;;;;;;CAiEvB,CAAC"}
|
|
@@ -4,12 +4,26 @@ export var useUserRole = function (message, onlySenderCanEdit, disableQuotedMess
|
|
|
4
4
|
var _a, _b, _c;
|
|
5
5
|
var _d = useChannelStateContext('useUserRole'), channel = _d.channel, _e = _d.channelCapabilities, channelCapabilities = _e === void 0 ? {} : _e, channelConfig = _d.channelConfig;
|
|
6
6
|
var client = useChatContext('useUserRole').client;
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated as it relies on `membership.role` check which is already deprecated and shouldn't be used anymore.
|
|
9
|
+
* `isAdmin` will be removed in future release. See `channelCapabilities`.
|
|
10
|
+
*/
|
|
7
11
|
var isAdmin = ((_a = client.user) === null || _a === void 0 ? void 0 : _a.role) === 'admin' || channel.state.membership.role === 'admin';
|
|
8
|
-
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated as it relies on `membership.role` check which is already deprecated and shouldn't be used anymore.
|
|
14
|
+
* `isOwner` will be removed in future release. See `channelCapabilities`.
|
|
15
|
+
*/
|
|
9
16
|
var isOwner = channel.state.membership.role === 'owner';
|
|
10
|
-
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated as it relies on `membership.role` check which is already deprecated and shouldn't be used anymore.
|
|
19
|
+
* `isModerator` will be removed in future release. See `channelCapabilities`.
|
|
20
|
+
*/
|
|
21
|
+
var isModerator = ((_b = client.user) === null || _b === void 0 ? void 0 : _b.role) === 'channel_moderator' ||
|
|
11
22
|
channel.state.membership.role === 'channel_moderator' ||
|
|
12
|
-
channel.state.membership.role === 'moderator'
|
|
23
|
+
channel.state.membership.role === 'moderator' ||
|
|
24
|
+
channel.state.membership.is_moderator === true ||
|
|
25
|
+
channel.state.membership.channel_role === 'channel_moderator';
|
|
26
|
+
var isMyMessage = client.userID === ((_c = message.user) === null || _c === void 0 ? void 0 : _c.id);
|
|
13
27
|
var canEdit = (!onlySenderCanEdit && channelCapabilities['update-any-message']) ||
|
|
14
28
|
(isMyMessage && channelCapabilities['update-own-message']);
|
|
15
29
|
var canDelete = channelCapabilities['delete-any-message'] ||
|
|
@@ -2,8 +2,7 @@ import type { TFunction } from 'i18next';
|
|
|
2
2
|
import type { MessageResponse, Mute, StreamChat, UserResponse } from 'stream-chat';
|
|
3
3
|
import type { PinPermissions } from './hooks';
|
|
4
4
|
import type { MessageProps } from './types';
|
|
5
|
-
import type { StreamMessage } from '../../context
|
|
6
|
-
import type { MessageContextValue } from '../../context/MessageContext';
|
|
5
|
+
import type { MessageContextValue, StreamMessage } from '../../context';
|
|
7
6
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
8
7
|
/**
|
|
9
8
|
* Following function validates a function which returns notification message.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Message/utils.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Message/utils.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,8CACV,OAAO,2BAiB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,2LAUvB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CAS3B,CAAC;AAEF,oBAAY,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,KAAK,CAChE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAC9E,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,cAwDnC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,mBAAmB,GAAG,OAAO,kFAC0C,YAAY,gCA+C7F,CAAC;AAIF,eAAO,MAAM,qBAAqB,oDAErB,OAAO,GAAG,SAAS,YAsB/B,CAAC;AAmBF,eAAO,MAAM,oBAAoB;;;;;;aAsChC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;aA+BlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,wJAIqC,CAAC;AAEtE,eAAO,MAAM,qBAAqB,wJAIyB,CAAC;AAE5D,eAAO,MAAM,SAAS,yMASrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,yMASlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,mIAI5B,SAAS,mDA6Cb,CAAC"}
|
|
@@ -156,18 +156,9 @@ export var showMessageActionsBox = function (actions, inThread) {
|
|
|
156
156
|
}
|
|
157
157
|
return true;
|
|
158
158
|
};
|
|
159
|
-
|
|
159
|
+
var areMessagesEqual = function (prevMessage, nextMessage) {
|
|
160
160
|
var _a, _b, _c, _d, _e, _f;
|
|
161
|
-
|
|
162
|
-
var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
|
|
163
|
-
if (prevMessageUI !== nextMessageUI)
|
|
164
|
-
return false;
|
|
165
|
-
if (prevProps.endOfGroup !== nextProps.endOfGroup)
|
|
166
|
-
return false;
|
|
167
|
-
if (nextProps.showDetailedReactions !== prevProps.showDetailedReactions) {
|
|
168
|
-
return false;
|
|
169
|
-
}
|
|
170
|
-
var messagesAreEqual = prevMessage.deleted_at === nextMessage.deleted_at &&
|
|
161
|
+
return prevMessage.deleted_at === nextMessage.deleted_at &&
|
|
171
162
|
((_a = prevMessage.latest_reactions) === null || _a === void 0 ? void 0 : _a.length) === ((_b = nextMessage.latest_reactions) === null || _b === void 0 ? void 0 : _b.length) &&
|
|
172
163
|
((_c = prevMessage.own_reactions) === null || _c === void 0 ? void 0 : _c.length) === ((_d = nextMessage.own_reactions) === null || _d === void 0 ? void 0 : _d.length) &&
|
|
173
164
|
prevMessage.pinned === nextMessage.pinned &&
|
|
@@ -177,9 +168,22 @@ export var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
|
177
168
|
prevMessage.type === nextMessage.type &&
|
|
178
169
|
prevMessage.updated_at === nextMessage.updated_at &&
|
|
179
170
|
((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at);
|
|
171
|
+
};
|
|
172
|
+
export var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
173
|
+
var prevMessage = prevProps.message, prevMessageUI = prevProps.Message;
|
|
174
|
+
var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
|
|
175
|
+
if (prevMessageUI !== nextMessageUI)
|
|
176
|
+
return false;
|
|
177
|
+
if (prevProps.endOfGroup !== nextProps.endOfGroup)
|
|
178
|
+
return false;
|
|
179
|
+
if (nextProps.showDetailedReactions !== prevProps.showDetailedReactions) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
var messagesAreEqual = areMessagesEqual(prevMessage, nextMessage);
|
|
180
183
|
if (!messagesAreEqual)
|
|
181
184
|
return false;
|
|
182
|
-
var deepEqualProps = deepequal(nextProps.
|
|
185
|
+
var deepEqualProps = deepequal(nextProps.messageActions, prevProps.messageActions) &&
|
|
186
|
+
deepequal(nextProps.readBy, prevProps.readBy) &&
|
|
183
187
|
deepequal(nextProps.highlighted, prevProps.highlighted) &&
|
|
184
188
|
deepequal(nextProps.groupStyles, prevProps.groupStyles) && // last 3 messages can have different group styles
|
|
185
189
|
deepequal(nextProps.mutes, prevProps.mutes) &&
|
|
@@ -190,7 +194,7 @@ export var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
|
190
194
|
);
|
|
191
195
|
};
|
|
192
196
|
export var areMessageUIPropsEqual = function (prevProps, nextProps) {
|
|
193
|
-
var _a, _b, _c, _d
|
|
197
|
+
var _a, _b, _c, _d;
|
|
194
198
|
var prevLastReceivedId = prevProps.lastReceivedId, prevMessage = prevProps.message;
|
|
195
199
|
var nextLastReceivedId = nextProps.lastReceivedId, nextMessage = nextProps.message;
|
|
196
200
|
if (prevProps.editing !== nextProps.editing)
|
|
@@ -210,16 +214,7 @@ export var areMessageUIPropsEqual = function (prevProps, nextProps) {
|
|
|
210
214
|
prevLastReceivedId !== nextLastReceivedId) {
|
|
211
215
|
return false;
|
|
212
216
|
}
|
|
213
|
-
return (prevMessage
|
|
214
|
-
((_e = prevMessage.latest_reactions) === null || _e === void 0 ? void 0 : _e.length) === ((_f = nextMessage.latest_reactions) === null || _f === void 0 ? void 0 : _f.length) &&
|
|
215
|
-
((_g = prevMessage.own_reactions) === null || _g === void 0 ? void 0 : _g.length) === ((_h = nextMessage.own_reactions) === null || _h === void 0 ? void 0 : _h.length) &&
|
|
216
|
-
prevMessage.pinned === nextMessage.pinned &&
|
|
217
|
-
prevMessage.reply_count === nextMessage.reply_count &&
|
|
218
|
-
prevMessage.status === nextMessage.status &&
|
|
219
|
-
prevMessage.text === nextMessage.text &&
|
|
220
|
-
prevMessage.type === nextMessage.type &&
|
|
221
|
-
prevMessage.updated_at === nextMessage.updated_at &&
|
|
222
|
-
((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.updated_at) === ((_k = nextMessage.user) === null || _k === void 0 ? void 0 : _k.updated_at));
|
|
217
|
+
return areMessagesEqual(prevMessage, nextMessage);
|
|
223
218
|
};
|
|
224
219
|
export var messageHasReactions = function (message) { return !!(message === null || message === void 0 ? void 0 : message.latest_reactions) && !!message.latest_reactions.length; };
|
|
225
220
|
export var messageHasAttachments = function (message) { return !!(message === null || message === void 0 ? void 0 : message.attachments) && !!message.attachments.length; };
|
|
@@ -46,7 +46,7 @@ var UnMemoizedMessageActionsBox = function (props) {
|
|
|
46
46
|
return (React.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 },
|
|
47
47
|
React.createElement("div", { "aria-label": 'Message Options', className: 'str-chat__message-actions-list', role: 'listbox' },
|
|
48
48
|
customMessageActions && (React.createElement(CustomMessageActionsList, { customMessageActions: customMessageActions, message: message })),
|
|
49
|
-
messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 &&
|
|
49
|
+
messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 && (React.createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleQuote, role: 'option' }, t('Reply'))),
|
|
50
50
|
messageActions.indexOf(MESSAGE_ACTIONS.pin) > -1 && !message.parent_id && (React.createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handlePin, role: 'option' }, !message.pinned ? t('Pin') : t('Unpin'))),
|
|
51
51
|
messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1 && (React.createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleFlag, role: 'option' }, t('Flag'))),
|
|
52
52
|
messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (React.createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleMute, role: 'option' }, isUserMuted() ? t('Unmute') : t('Mute'))),
|
|
@@ -72,8 +72,6 @@ export declare type VirtualizedMessageListProps<StreamChatGenerics extends Defau
|
|
|
72
72
|
/**
|
|
73
73
|
* The VirtualizedMessageList component renders a list of messages in a virtualized list.
|
|
74
74
|
* 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).
|
|
75
|
-
*
|
|
76
|
-
* **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.
|
|
77
75
|
*/
|
|
78
76
|
export declare function VirtualizedMessageList<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: VirtualizedMessageListProps<StreamChatGenerics>): JSX.Element;
|
|
79
77
|
//# sourceMappingURL=VirtualizedMessageList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualizedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,EAEL,uBAAuB,EACvB,0BAA0B,EAG1B,aAAa,EACd,MAAM,gBAAgB,CAAC;AAgBxB,OAAO,EAAW,YAAY,EAAiB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE3F,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,aAAa,EAEd,MAAM,mCAAmC,CAAC;AAO3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"VirtualizedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -189,7 +189,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
189
189
|
window.removeEventListener('blur', resetNewMessagesReceivedInBackground);
|
|
190
190
|
};
|
|
191
191
|
}, [scrollToBottomIfConfigured]);
|
|
192
|
-
var numItemsPrepended = usePrependedMessagesCount(processedMessages);
|
|
192
|
+
var numItemsPrepended = usePrependedMessagesCount(processedMessages, !disableDateSeparator);
|
|
193
193
|
/**
|
|
194
194
|
* Logic to update the key of the virtuoso component when the list jumps to a new location.
|
|
195
195
|
*/
|
|
@@ -197,7 +197,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
197
197
|
var firstMessageId = useRef();
|
|
198
198
|
useEffect(function () {
|
|
199
199
|
var _a;
|
|
200
|
-
var continuousSet = messages
|
|
200
|
+
var continuousSet = messages === null || messages === void 0 ? void 0 : messages.find(function (message) { return message.id === firstMessageId.current; });
|
|
201
201
|
if (!continuousSet) {
|
|
202
202
|
setMessageSetKey(+new Date());
|
|
203
203
|
}
|
|
@@ -237,15 +237,18 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
237
237
|
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);
|
|
238
238
|
return (React.createElement(Message, { closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: props.customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, message: message, Message: MessageUIComponent, messageActions: props.messageActions }));
|
|
239
239
|
}, [customMessageRenderer, shouldGroupByUser, numItemsPrepended]);
|
|
240
|
+
var Item = useMemo(function () {
|
|
241
|
+
// using 'display: inline-block'
|
|
242
|
+
// traps CSS margins of the item elements, preventing incorrect item measurements
|
|
243
|
+
var Item = function (props) { return (React.createElement("div", __assign({}, props, { className: (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualMessage) || 'str-chat__virtual-list-message-wrapper' }))); };
|
|
244
|
+
return Item;
|
|
245
|
+
}, [customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualMessage]);
|
|
240
246
|
var virtuosoComponents = useMemo(function () {
|
|
241
247
|
var EmptyPlaceholder = function () { return (React.createElement(React.Fragment, null, EmptyStateIndicator && React.createElement(EmptyStateIndicator, { listType: 'message' }))); };
|
|
242
248
|
var Header = function () {
|
|
243
249
|
return loadingMore ? (React.createElement("div", { className: 'str-chat__virtual-list__loading' },
|
|
244
250
|
React.createElement(LoadingIndicator, { size: 20 }))) : (React.createElement(React.Fragment, null));
|
|
245
251
|
};
|
|
246
|
-
var virtualMessageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualMessage) || 'str-chat__virtual-list-message-wrapper';
|
|
247
|
-
// using 'display: inline-block' traps CSS margins of the item elements, preventing incorrect item measurements
|
|
248
|
-
var Item = function (props) { return React.createElement("div", __assign({}, props, { className: virtualMessageClass })); };
|
|
249
252
|
var Footer = function () {
|
|
250
253
|
return TypingIndicator ? React.createElement(TypingIndicator, { avatarSize: 24 }) : React.createElement(React.Fragment, null);
|
|
251
254
|
};
|
|
@@ -285,15 +288,15 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
285
288
|
return null;
|
|
286
289
|
return (React.createElement(React.Fragment, null,
|
|
287
290
|
React.createElement("div", { className: (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list' },
|
|
288
|
-
React.createElement(Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents,
|
|
291
|
+
React.createElement(Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, computeItemKey: function (index) {
|
|
292
|
+
return processedMessages[numItemsPrepended + index - PREPEND_OFFSET].id;
|
|
293
|
+
}, 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 } : {})))),
|
|
289
294
|
React.createElement(MessageListNotifications, { hasNewMessages: newMessagesNotification, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottom }),
|
|
290
295
|
giphyPreviewMessage && React.createElement(GiphyPreviewMessage, { message: giphyPreviewMessage })));
|
|
291
296
|
};
|
|
292
297
|
/**
|
|
293
298
|
* The VirtualizedMessageList component renders a list of messages in a virtualized list.
|
|
294
299
|
* 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).
|
|
295
|
-
*
|
|
296
|
-
* **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.
|
|
297
300
|
*/
|
|
298
301
|
export function VirtualizedMessageList(props) {
|
|
299
302
|
var _a = useChannelActionContext('VirtualizedMessageList'), jumpToLatestMessage = _a.jumpToLatestMessage, loadMore = _a.loadMore, loadMoreNewer = _a.loadMoreNewer;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { StreamMessage } from '../../../context/ChannelStateContext';
|
|
2
2
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
3
|
-
export declare function usePrependedMessagesCount<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(messages: StreamMessage<StreamChatGenerics>[]): number;
|
|
3
|
+
export declare function usePrependedMessagesCount<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(messages: StreamMessage<StreamChatGenerics>[], hasDateSeparator: boolean): number;
|
|
4
4
|
//# sourceMappingURL=usePrependMessagesCount.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePrependMessagesCount.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/usePrependMessagesCount.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,wBAAgB,yBAAyB,CACvC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"usePrependMessagesCount.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/usePrependMessagesCount.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,wBAAgB,yBAAyB,CACvC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,UAsCzE"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { useMemo, useRef } from 'react';
|
|
2
|
-
export function usePrependedMessagesCount(messages) {
|
|
2
|
+
export function usePrependedMessagesCount(messages, hasDateSeparator) {
|
|
3
3
|
var _a;
|
|
4
|
-
var
|
|
4
|
+
var firstRealMessageIndex = hasDateSeparator ? 1 : 0;
|
|
5
|
+
var currentFirstMessageId = (_a = messages === null || messages === void 0 ? void 0 : messages[firstRealMessageIndex]) === null || _a === void 0 ? void 0 : _a.id;
|
|
5
6
|
var firstMessageId = useRef(currentFirstMessageId);
|
|
6
7
|
var earliestMessageId = useRef(currentFirstMessageId);
|
|
7
8
|
var previousNumItemsPrepended = useRef(0);
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { VirtualizedMessageListProps } from '../MessageList
|
|
5
|
-
import { StreamMessage } from '../../context
|
|
6
|
-
import type { MessageProps, MessageUIComponentProps } from '../Message/types';
|
|
2
|
+
import type { MessageActionsArray, MessageProps, MessageUIComponentProps } from '../Message';
|
|
3
|
+
import { MessageInputProps } from '../MessageInput';
|
|
4
|
+
import { MessageListProps, VirtualizedMessageListProps } from '../MessageList';
|
|
5
|
+
import { StreamMessage } from '../../context';
|
|
7
6
|
import type { CustomTrigger, DefaultStreamChatGenerics } from '../../types/types';
|
|
8
7
|
export declare type ThreadProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger> = {
|
|
9
8
|
/** Additional props for `MessageInput` component: [available props](https://getstream.io/chat/docs/sdk/react/message-input-components/message_input/#props) */
|
|
@@ -24,6 +23,8 @@ export declare type ThreadProps<StreamChatGenerics extends DefaultStreamChatGene
|
|
|
24
23
|
Input?: React.ComponentType;
|
|
25
24
|
/** Custom thread message UI component used to override the default `Message` value stored in `ComponentContext` */
|
|
26
25
|
Message?: React.ComponentType<MessageUIComponentProps<StreamChatGenerics>>;
|
|
26
|
+
/** Array of allowed message actions (ex: ['edit', 'delete', 'flag', 'mute', 'pin', 'quote', 'react', 'reply']). To disable all actions, provide an empty array. */
|
|
27
|
+
messageActions?: MessageActionsArray;
|
|
27
28
|
/** If true, render the `VirtualizedMessageList` instead of the standard `MessageList` component */
|
|
28
29
|
virtualized?: boolean;
|
|
29
30
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thread.d.ts","sourceRoot":"","sources":["../../../src/components/Thread/Thread.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Thread.d.ts","sourceRoot":"","sources":["../../../src/components/Thread/Thread.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE7F,OAAO,EAAgB,iBAAiB,EAAqB,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAEL,gBAAgB,EAEhB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAEL,aAAa,EAMd,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAElF,oBAAY,WAAW,CACrB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,CAAC,SAAS,aAAa,GAAG,aAAa,IACrC;IACF,+JAA+J;IAC/J,2BAA2B,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IACvE,oJAAoJ;IACpJ,0BAA0B,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAClE,oKAAoK;IACpK,4BAA4B,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAChE,mKAAmK;IACnK,qCAAqC,CAAC,EAAE,2BAA2B,CAAC,kBAAkB,CAAC,CAAC;IACxF,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gKAAgK;IAChK,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6FAA6F;IAC7F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gQAAgQ;IAChQ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,mHAAmH;IACnH,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC3E,mKAAmK;IACnK,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,mGAAmG;IACnG,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,8LAYlB,CAAC;AAEF,oBAAY,iBAAiB,CAC3B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACvD,MAAM,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAC3C,CAAC"}
|
|
@@ -46,17 +46,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
48
|
import React, { useEffect, useRef } from 'react';
|
|
49
|
-
import { FixedHeightMessage } from '../Message
|
|
50
|
-
import {
|
|
51
|
-
import {
|
|
52
|
-
import {
|
|
53
|
-
import { MessageList } from '../MessageList/MessageList';
|
|
54
|
-
import { VirtualizedMessageList, } from '../MessageList/VirtualizedMessageList';
|
|
55
|
-
import { useChannelActionContext } from '../../context/ChannelActionContext';
|
|
56
|
-
import { useChannelStateContext } from '../../context/ChannelStateContext';
|
|
57
|
-
import { useChatContext } from '../../context/ChatContext';
|
|
58
|
-
import { useComponentContext } from '../../context/ComponentContext';
|
|
59
|
-
import { useTranslationContext } from '../../context/TranslationContext';
|
|
49
|
+
import { FixedHeightMessage, Message, MESSAGE_ACTIONS } from '../Message';
|
|
50
|
+
import { MessageInput, MessageInputSmall } from '../MessageInput';
|
|
51
|
+
import { MessageList, VirtualizedMessageList, } from '../MessageList';
|
|
52
|
+
import { useChannelActionContext, useChannelStateContext, useChatContext, useComponentContext, useTranslationContext, } from '../../context';
|
|
60
53
|
/**
|
|
61
54
|
* The Thread component renders a parent Message with a list of replies
|
|
62
55
|
*/
|
|
@@ -88,11 +81,11 @@ var DefaultThreadStart = function () {
|
|
|
88
81
|
return React.createElement("div", { className: 'str-chat__thread-start' }, t('Start of a new thread'));
|
|
89
82
|
};
|
|
90
83
|
var ThreadInner = function (props) {
|
|
91
|
-
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;
|
|
92
|
-
var
|
|
93
|
-
var
|
|
84
|
+
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;
|
|
85
|
+
var _e = useChannelStateContext('Thread'), thread = _e.thread, threadHasMore = _e.threadHasMore, threadLoadingMore = _e.threadLoadingMore, threadMessages = _e.threadMessages;
|
|
86
|
+
var _f = useChannelActionContext('Thread'), closeThread = _f.closeThread, loadMoreThread = _f.loadMoreThread, sendMessage = _f.sendMessage;
|
|
94
87
|
var customClasses = useChatContext('Thread').customClasses;
|
|
95
|
-
var
|
|
88
|
+
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;
|
|
96
89
|
var messageList = useRef(null);
|
|
97
90
|
var ThreadInput = PropInput || (additionalMessageInputProps === null || additionalMessageInputProps === void 0 ? void 0 : additionalMessageInputProps.Input) || ContextInput || MessageInputSmall;
|
|
98
91
|
var ThreadMessage = PropMessage || (additionalMessageListProps === null || additionalMessageListProps === void 0 ? void 0 : additionalMessageListProps.Message);
|
|
@@ -124,6 +117,6 @@ var ThreadInner = function (props) {
|
|
|
124
117
|
React.createElement("div", { className: 'str-chat__thread-list', ref: messageList },
|
|
125
118
|
React.createElement(Message, __assign({ initialMessage: true, message: thread, Message: ThreadMessage || FallbackMessage, threadList: true }, additionalParentMessageProps)),
|
|
126
119
|
React.createElement(ThreadStart, null),
|
|
127
|
-
React.createElement(ThreadMessageList, __assign({ disableDateSeparator: !enableDateSeparator, hasMore: threadHasMore, loadingMore: threadLoadingMore, loadMore: loadMoreThread, Message: ThreadMessage || FallbackMessage, messages: threadMessages || [], threadList: true }, (virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps)))),
|
|
120
|
+
React.createElement(ThreadMessageList, __assign({ disableDateSeparator: !enableDateSeparator, hasMore: threadHasMore, loadingMore: threadLoadingMore, loadMore: loadMoreThread, Message: ThreadMessage || FallbackMessage, messageActions: messageActions, messages: threadMessages || [], threadList: true }, (virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps)))),
|
|
128
121
|
React.createElement(MessageInput, __assign({ focus: autoFocus, Input: ThreadInput, overrideSubmitHandler: threadSubmitHandler, parent: thread, publishTypingEvent: false }, additionalMessageInputProps))));
|
|
129
122
|
};
|