stream-chat-react 6.7.0 → 6.9.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/README.md +1 -1
- package/dist/browser.full-bundle.js +3989 -1360
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +10 -3
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.js +1 -1
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.js +3 -1
- package/dist/components/Channel/Channel.d.ts +4 -0
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +69 -94
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts +15 -0
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -0
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +87 -0
- package/dist/components/Channel/hooks/useCreateTypingContext.d.ts +4 -0
- package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -0
- package/dist/components/Channel/hooks/useCreateTypingContext.js +9 -0
- package/dist/components/ChannelList/ChannelList.d.ts +3 -3
- package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelList.js +3 -3
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts +1 -1
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +3 -2
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts +1 -1
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +4 -6
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +0 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +7 -15
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +10 -0
- package/dist/components/Chat/Chat.d.ts.map +1 -1
- package/dist/components/Chat/Chat.js +14 -12
- package/dist/components/Chat/hooks/useChat.js +1 -1
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts +4 -0
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -0
- package/dist/components/Chat/hooks/useCreateChatContext.js +21 -0
- package/dist/components/Message/hooks/useReactionHandler.d.ts +1 -1
- package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useReactionHandler.js +1 -5
- package/dist/components/MessageInput/DefaultTriggerProvider.d.ts.map +1 -1
- package/dist/components/MessageInput/DefaultTriggerProvider.js +1 -0
- package/dist/components/MessageInput/MessageInput.d.ts +3 -1
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInput.js +2 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts +4 -0
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -0
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +88 -0
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +1 -0
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.js +6 -1
- package/dist/components/MessageInput/hooks/useMessageInputText.js +1 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.js +2 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +1 -0
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.js +19 -13
- package/dist/components/MessageInput/hooks/utils.d.ts +15 -0
- package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -0
- package/dist/components/MessageInput/hooks/utils.js +114 -0
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +4 -2
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +2 -2
- package/dist/css/index.css +1 -7329
- package/dist/index.cjs.js +449 -175
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/ActionsBox.scss +2 -0
- package/dist/scss/Attachment.scss +4 -0
- package/dist/scss/AttachmentActions.scss +1 -0
- package/dist/scss/Audio.scss +2 -0
- package/dist/scss/Avatar.scss +2 -0
- package/dist/scss/Card.scss +6 -2
- package/dist/scss/ChannelHeader.scss +22 -3
- package/dist/scss/ChannelList.scss +5 -6
- package/dist/scss/ChannelSearch.scss +2 -4
- package/dist/scss/ChatDown.scss +1 -0
- package/dist/scss/DateSeparator.scss +3 -0
- package/dist/scss/EditMessageForm.scss +4 -0
- package/dist/scss/EventComponent.scss +4 -0
- package/dist/scss/Gallery.scss +7 -1
- package/dist/scss/LoadMoreButton.scss +1 -0
- package/dist/scss/Message.scss +78 -2
- package/dist/scss/MessageInput.scss +3 -0
- package/dist/scss/MessageInputFlat.scss +8 -1
- package/dist/scss/MessageList.scss +10 -0
- package/dist/scss/MessageRepliesCountButton.scss +1 -0
- package/dist/scss/MessageTeam.scss +3 -7
- package/dist/scss/Modal.scss +3 -0
- package/dist/scss/ReactionList.scss +18 -18
- package/dist/scss/ReactionSelector.scss +4 -0
- package/dist/scss/SimpleReactionsList.scss +2 -1
- package/dist/scss/Thread.scss +19 -0
- package/dist/scss/TypingIndicator.scss +7 -0
- package/dist/scss/VirtualMessage.scss +8 -7
- package/dist/scss/_base.scss +17 -2
- package/dist/utils.d.ts +2 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +22 -15
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +10 -29
- package/CHANGELOG.md +0 -1534
- package/dist/css/index.js +0 -1
- package/dist/css/index.min.css +0 -1
|
@@ -34,6 +34,7 @@ var initState = function (message) {
|
|
|
34
34
|
imageOrder: [],
|
|
35
35
|
imageUploads: __assign({}, emptyImageUploads),
|
|
36
36
|
mentioned_users: [],
|
|
37
|
+
setText: function () { return null; },
|
|
37
38
|
text: '',
|
|
38
39
|
};
|
|
39
40
|
}
|
|
@@ -85,6 +86,7 @@ var initState = function (message) {
|
|
|
85
86
|
imageOrder: imageOrder,
|
|
86
87
|
imageUploads: imageUploads,
|
|
87
88
|
mentioned_users: mentioned_users,
|
|
89
|
+
setText: function () { return null; },
|
|
88
90
|
text: message.text || '',
|
|
89
91
|
};
|
|
90
92
|
};
|
|
@@ -173,10 +175,13 @@ export var useMessageInputState = function (props) {
|
|
|
173
175
|
var onSelectUser = useCallback(function (item) {
|
|
174
176
|
dispatch({ type: 'addMentionedUser', user: item });
|
|
175
177
|
}, []);
|
|
178
|
+
var setText = useCallback(function (text) {
|
|
179
|
+
dispatch({ getNewText: function () { return text; }, type: 'setText' });
|
|
180
|
+
}, []);
|
|
176
181
|
return __assign(__assign({}, state), { closeCommandsList: closeCommandsList,
|
|
177
182
|
/**
|
|
178
183
|
* TODO: fix the below at some point because this type casting is wrong
|
|
179
184
|
* and just forced to not have warnings currently with the unknown casting
|
|
180
185
|
*/
|
|
181
|
-
closeEmojiPicker: closeEmojiPicker, emojiIndex: useEmojiIndex(), emojiPickerRef: emojiPickerRef, handleChange: handleChange, handleEmojiKeyDown: handleEmojiKeyDown, handleSubmit: handleSubmit, insertText: insertText, isUploadEnabled: isUploadEnabled, maxFilesLeft: maxFilesLeft, numberOfUploads: numberOfUploads, onPaste: onPaste, onSelectEmoji: onSelectEmoji, onSelectUser: onSelectUser, openCommandsList: openCommandsList, openEmojiPicker: openEmojiPicker, removeFile: removeFile, removeImage: removeImage, showCommandsList: showCommandsList, textareaRef: textareaRef, uploadFile: uploadFile, uploadImage: uploadImage, uploadNewFiles: uploadNewFiles });
|
|
186
|
+
closeEmojiPicker: closeEmojiPicker, emojiIndex: useEmojiIndex(), emojiPickerRef: emojiPickerRef, handleChange: handleChange, handleEmojiKeyDown: handleEmojiKeyDown, handleSubmit: handleSubmit, insertText: insertText, isUploadEnabled: isUploadEnabled, maxFilesLeft: maxFilesLeft, numberOfUploads: numberOfUploads, onPaste: onPaste, onSelectEmoji: onSelectEmoji, onSelectUser: onSelectUser, openCommandsList: openCommandsList, openEmojiPicker: openEmojiPicker, removeFile: removeFile, removeImage: removeImage, setText: setText, showCommandsList: showCommandsList, textareaRef: textareaRef, uploadFile: uploadFile, uploadImage: uploadImage, uploadNewFiles: uploadNewFiles });
|
|
182
187
|
};
|
|
@@ -3,7 +3,7 @@ import { logChatPromiseExecution } from 'stream-chat';
|
|
|
3
3
|
import { useChannelStateContext } from '../../../context/ChannelStateContext';
|
|
4
4
|
export var useMessageInputText = function (props, state, dispatch) {
|
|
5
5
|
var channel = useChannelStateContext().channel;
|
|
6
|
-
var additionalTextareaProps = props.additionalTextareaProps, focus = props.focus, parent = props.parent,
|
|
6
|
+
var additionalTextareaProps = props.additionalTextareaProps, focus = props.focus, parent = props.parent, _a = props.publishTypingEvent, publishTypingEvent = _a === void 0 ? true : _a;
|
|
7
7
|
var text = state.text;
|
|
8
8
|
var textareaRef = useRef();
|
|
9
9
|
// Focus
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSubmitHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useSubmitHandler.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAc,OAAO,EAAkB,MAAM,aAAa,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAGlB,kBAAkB,EAElB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAQ9B,eAAO,MAAM,gBAAgB,qxBAaV,MAAM;0BAkEd,MAAM,kBAAkB;
|
|
1
|
+
{"version":3,"file":"useSubmitHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useSubmitHandler.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAc,OAAO,EAAkB,MAAM,aAAa,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAGlB,kBAAkB,EAElB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAQ9B,eAAO,MAAM,gBAAgB,qxBAaV,MAAM;0BAkEd,MAAM,kBAAkB;CAqGlC,CAAC"}
|
|
@@ -128,10 +128,11 @@ export var useSubmitHandler = function (props, state, dispatch, numberOfUploads)
|
|
|
128
128
|
text: text,
|
|
129
129
|
};
|
|
130
130
|
if (!message) return [3 /*break*/, 5];
|
|
131
|
+
delete message.i18n;
|
|
131
132
|
_a.label = 1;
|
|
132
133
|
case 1:
|
|
133
134
|
_a.trys.push([1, 3, , 4]);
|
|
134
|
-
return [4 /*yield*/, editMessage(__assign(__assign({},
|
|
135
|
+
return [4 /*yield*/, editMessage(__assign(__assign({}, message), updatedMessage))];
|
|
135
136
|
case 2:
|
|
136
137
|
_a.sent();
|
|
137
138
|
if (clearEditingState)
|
|
@@ -7,6 +7,7 @@ export declare type UserTriggerParams<Us extends DefaultUserType<Us> = DefaultUs
|
|
|
7
7
|
disableMentions?: boolean;
|
|
8
8
|
mentionAllAppUsers?: boolean;
|
|
9
9
|
mentionQueryParams?: SearchQueryParams<Us>['userFilters'];
|
|
10
|
+
useMentionsTransliteration?: boolean;
|
|
10
11
|
};
|
|
11
12
|
export declare const useUserTrigger: <At extends DefaultAttachmentType = DefaultAttachmentType, Ch extends DefaultChannelType = DefaultChannelType, Co extends import("stream-chat").LiteralStringForUnion = import("stream-chat").LiteralStringForUnion, Ev extends import("../../../types/types").UnknownType = import("../../../types/types").UnknownType, Me extends DefaultMessageType = DefaultMessageType, Re extends import("../../../types/types").UnknownType = import("../../../types/types").UnknownType, Us extends DefaultUserType<Us> = DefaultUserType<import("../../../types/types").DefaultUserTypeInternal>>(params: UserTriggerParams<Us>) => UserTriggerSetting<Us>;
|
|
12
13
|
//# sourceMappingURL=useUserTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUserTrigger.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useUserTrigger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useUserTrigger.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useUserTrigger.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAGlB,kBAAkB,EAElB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,oBAAY,iBAAiB,CAAC,EAAE,SAAS,eAAe,CAAC,EAAE,CAAC,GAAG,eAAe,IAAI;IAChF,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;IAC1D,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,cAAc,qnBA8J1B,CAAC"}
|
|
@@ -52,11 +52,12 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
|
52
52
|
};
|
|
53
53
|
import { useCallback, useState } from 'react';
|
|
54
54
|
import throttle from 'lodash.throttle';
|
|
55
|
+
import { searchLocalUsers } from './utils';
|
|
55
56
|
import { UserItem } from '../../UserItem/UserItem';
|
|
56
57
|
import { useChatContext } from '../../../context/ChatContext';
|
|
57
58
|
import { useChannelStateContext } from '../../../context/ChannelStateContext';
|
|
58
59
|
export var useUserTrigger = function (params) {
|
|
59
|
-
var disableMentions = params.disableMentions, mentionAllAppUsers = params.mentionAllAppUsers, _a = params.mentionQueryParams, mentionQueryParams = _a === void 0 ? {} : _a, onSelectUser = params.onSelectUser;
|
|
60
|
+
var disableMentions = params.disableMentions, mentionAllAppUsers = params.mentionAllAppUsers, _a = params.mentionQueryParams, mentionQueryParams = _a === void 0 ? {} : _a, onSelectUser = params.onSelectUser, useMentionsTransliteration = params.useMentionsTransliteration;
|
|
60
61
|
var _b = useState(false), searching = _b[0], setSearching = _b[1];
|
|
61
62
|
var _c = useChatContext(), client = _c.client, mutes = _c.mutes;
|
|
62
63
|
var channel = useChannelStateContext().channel;
|
|
@@ -140,14 +141,22 @@ export var useUserTrigger = function (params) {
|
|
|
140
141
|
return {
|
|
141
142
|
callback: function (item) { return onSelectUser(item); },
|
|
142
143
|
component: UserItem,
|
|
143
|
-
dataProvider: function (query,
|
|
144
|
+
dataProvider: function (query, text, onReady) {
|
|
144
145
|
var _a;
|
|
145
146
|
if (disableMentions)
|
|
146
147
|
return;
|
|
147
148
|
var filterMutes = function (data) {
|
|
149
|
+
if (text.includes('/unmute') && !mutes.length) {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
148
152
|
if (!mutes.length)
|
|
149
153
|
return data;
|
|
150
|
-
|
|
154
|
+
if (text.includes('/unmute')) {
|
|
155
|
+
return data.filter(function (suggestion) {
|
|
156
|
+
return mutes.some(function (mute) { return mute.target.id === suggestion.id; });
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
return data.filter(function (suggestion) { return mutes.every(function (mute) { return mute.target.id !== suggestion.id; }); });
|
|
151
160
|
};
|
|
152
161
|
if (mentionAllAppUsers) {
|
|
153
162
|
return queryUsersThrottled(query, function (data) {
|
|
@@ -163,16 +172,13 @@ export var useUserTrigger = function (params) {
|
|
|
163
172
|
*/
|
|
164
173
|
if (!query || Object.values(members || {}).length < 100) {
|
|
165
174
|
var users = getMembersAndWatchers();
|
|
166
|
-
var
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
return user.id.toLowerCase().includes(query.toLowerCase());
|
|
175
|
-
});
|
|
175
|
+
var params_1 = {
|
|
176
|
+
ownUserId: client.userID,
|
|
177
|
+
query: query,
|
|
178
|
+
useMentionsTransliteration: useMentionsTransliteration,
|
|
179
|
+
users: users,
|
|
180
|
+
};
|
|
181
|
+
var matchingUsers = searchLocalUsers(params_1);
|
|
176
182
|
var usersToShow = ((_a = mentionQueryParams.options) === null || _a === void 0 ? void 0 : _a.limit) || 10;
|
|
177
183
|
var data = matchingUsers.slice(0, usersToShow);
|
|
178
184
|
if (onReady)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { UserResponse } from 'stream-chat';
|
|
2
|
+
import type { DefaultUserType } from '../../../types/types';
|
|
3
|
+
export declare const accentsMap: {
|
|
4
|
+
[key: string]: string;
|
|
5
|
+
};
|
|
6
|
+
export declare const removeDiacritics: (text?: string | undefined) => string;
|
|
7
|
+
export declare const calculateLevenshtein: (query: string, name: string) => number;
|
|
8
|
+
export declare type SearchLocalUserParams<Us extends DefaultUserType<Us> = DefaultUserType> = {
|
|
9
|
+
ownUserId: string | undefined;
|
|
10
|
+
query: string;
|
|
11
|
+
users: UserResponse<Us>[];
|
|
12
|
+
useMentionsTransliteration?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare const searchLocalUsers: <Us extends DefaultUserType<Us> = DefaultUserType<import("../../../types/types").DefaultUserTypeInternal>>(params: SearchLocalUserParams<Us>) => UserResponse<Us>[];
|
|
15
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,eAAO,MAAM,UAAU,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAQ/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,uCAM5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAAW,MAAM,QAAQ,MAAM,WAiC/D,CAAC;AAEF,oBAAY,qBAAqB,CAAC,EAAE,SAAS,eAAe,CAAC,EAAE,CAAC,GAAG,eAAe,IAAI;IACpF,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,qKAkC5B,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (_) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
export var accentsMap = {
|
|
38
|
+
a: 'á|à|ã|â|À|Á|Ã|Â',
|
|
39
|
+
c: 'ç|Ç',
|
|
40
|
+
e: 'é|è|ê|É|È|Ê',
|
|
41
|
+
i: 'í|ì|î|Í|Ì|Î',
|
|
42
|
+
n: 'ñ|Ñ',
|
|
43
|
+
o: 'ó|ò|ô|õ|Ó|Ò|Ô|Õ',
|
|
44
|
+
u: 'ú|ù|û|ü|Ú|Ù|Û|Ü',
|
|
45
|
+
};
|
|
46
|
+
export var removeDiacritics = function (text) {
|
|
47
|
+
if (!text)
|
|
48
|
+
return '';
|
|
49
|
+
return Object.keys(accentsMap).reduce(function (acc, current) { return acc.replace(new RegExp(accentsMap[current], 'g'), current); }, text);
|
|
50
|
+
};
|
|
51
|
+
export var calculateLevenshtein = function (query, name) {
|
|
52
|
+
if (query.length === 0)
|
|
53
|
+
return name.length;
|
|
54
|
+
if (name.length === 0)
|
|
55
|
+
return query.length;
|
|
56
|
+
var matrix = [];
|
|
57
|
+
var i;
|
|
58
|
+
for (i = 0; i <= name.length; i++) {
|
|
59
|
+
matrix[i] = [i];
|
|
60
|
+
}
|
|
61
|
+
var j;
|
|
62
|
+
for (j = 0; j <= query.length; j++) {
|
|
63
|
+
matrix[0][j] = j;
|
|
64
|
+
}
|
|
65
|
+
for (i = 1; i <= name.length; i++) {
|
|
66
|
+
for (j = 1; j <= query.length; j++) {
|
|
67
|
+
if (name.charAt(i - 1) === query.charAt(j - 1)) {
|
|
68
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
72
|
+
Math.min(matrix[i][j - 1] + 1, // insertion
|
|
73
|
+
matrix[i - 1][j] + 1)); // deletion
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return matrix[name.length][query.length];
|
|
78
|
+
};
|
|
79
|
+
export var searchLocalUsers = function (params) {
|
|
80
|
+
var ownUserId = params.ownUserId, query = params.query, useMentionsTransliteration = params.useMentionsTransliteration, users = params.users;
|
|
81
|
+
var matchingUsers = users.filter(function (user) {
|
|
82
|
+
if (user.id === ownUserId)
|
|
83
|
+
return false;
|
|
84
|
+
if (!query)
|
|
85
|
+
return true;
|
|
86
|
+
var updatedId = removeDiacritics(user.id).toLowerCase();
|
|
87
|
+
var updatedName = removeDiacritics(user.name).toLowerCase();
|
|
88
|
+
var updatedQuery = removeDiacritics(query).toLowerCase();
|
|
89
|
+
if (useMentionsTransliteration) {
|
|
90
|
+
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
91
|
+
var transliterate;
|
|
92
|
+
return __generator(this, function (_a) {
|
|
93
|
+
switch (_a.label) {
|
|
94
|
+
case 0: return [4 /*yield*/, import('@sindresorhus/transliterate')];
|
|
95
|
+
case 1:
|
|
96
|
+
transliterate = (_a.sent()).default;
|
|
97
|
+
updatedName = transliterate(user.name || '').toLowerCase();
|
|
98
|
+
updatedQuery = transliterate(query).toLowerCase();
|
|
99
|
+
updatedId = transliterate(user.id).toLowerCase();
|
|
100
|
+
return [2 /*return*/];
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}); })();
|
|
104
|
+
}
|
|
105
|
+
if (updatedName) {
|
|
106
|
+
var levenshtein_1 = calculateLevenshtein(updatedQuery, updatedName);
|
|
107
|
+
if (updatedName.includes(updatedQuery) || levenshtein_1 <= 3)
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
var levenshtein = calculateLevenshtein(updatedQuery, updatedId);
|
|
111
|
+
return updatedId.includes(updatedQuery) || levenshtein <= 3;
|
|
112
|
+
});
|
|
113
|
+
return matchingUsers;
|
|
114
|
+
};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { ScrollSeekConfiguration, ScrollSeekPlaceholderProps } from 'react-virtuoso';
|
|
2
|
+
import { ScrollSeekConfiguration, ScrollSeekPlaceholderProps, VirtuosoProps } from 'react-virtuoso';
|
|
3
3
|
import { MessageProps, MessageUIComponentProps } from '../Message';
|
|
4
4
|
import { ChannelActionContextValue } from '../../context/ChannelActionContext';
|
|
5
5
|
import { StreamMessage } from '../../context/ChannelStateContext';
|
|
6
|
-
import type { DefaultAttachmentType, DefaultChannelType, DefaultCommandType, DefaultEventType, DefaultMessageType, DefaultReactionType, DefaultUserType } from '../../types/types';
|
|
6
|
+
import type { DefaultAttachmentType, DefaultChannelType, DefaultCommandType, DefaultEventType, DefaultMessageType, DefaultReactionType, DefaultUserType, UnknownType } from '../../types/types';
|
|
7
7
|
export declare type VirtualizedMessageListProps<At extends DefaultAttachmentType = DefaultAttachmentType, Ch extends DefaultChannelType = DefaultChannelType, Co extends DefaultCommandType = DefaultCommandType, Ev extends DefaultEventType = DefaultEventType, Me extends DefaultMessageType = DefaultMessageType, Re extends DefaultReactionType = DefaultReactionType, Us extends DefaultUserType<Us> = DefaultUserType> = Partial<Pick<MessageProps<At, Ch, Co, Ev, Me, Re, Us>, 'customMessageActions' | 'messageActions'>> & {
|
|
8
|
+
/** Additional props to be passed the underlying [`react-virtuoso` virtualized list dependency](https://virtuoso.dev/virtuoso-api-reference/) */
|
|
9
|
+
additionalVirtuosoProps?: VirtuosoProps<UnknownType>;
|
|
8
10
|
/** If true, picking a reaction from the `ReactionSelector` component will close the selector */
|
|
9
11
|
closeReactionSelectorOnClick?: boolean;
|
|
10
12
|
/** Custom render function, if passed, certain UI props are ignored */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualizedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAEL,uBAAuB,EACvB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"VirtualizedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ import { useComponentContext } from '../../context/ComponentContext';
|
|
|
30
30
|
import { isDate, useTranslationContext } from '../../context/TranslationContext';
|
|
31
31
|
var PREPEND_OFFSET = Math.pow(10, 7);
|
|
32
32
|
var VirtualizedMessageListWithContext = function (props) {
|
|
33
|
-
var channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? true : _a, hasMore = props.hasMore, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, loadingMore = props.loadingMore, loadMore = props.loadMore, propMessage = props.Message, _d = props.messageLimit, messageLimit = _d === void 0 ? 100 : _d, messages = props.messages, _e = props.overscan, overscan = _e === void 0 ? 0 : _e,
|
|
33
|
+
var additionalVirtuosoProps = props.additionalVirtuosoProps, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? true : _a, hasMore = props.hasMore, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, loadingMore = props.loadingMore, loadMore = props.loadMore, propMessage = props.Message, _d = props.messageLimit, messageLimit = _d === void 0 ? 100 : _d, messages = props.messages, _e = props.overscan, overscan = _e === void 0 ? 0 : _e,
|
|
34
34
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
35
35
|
scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _f = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _f === void 0 ? false : _f, _g = props.separateGiphyPreview, separateGiphyPreview = _g === void 0 ? false : _g, _h = props.shouldGroupByUser, shouldGroupByUser = _h === void 0 ? false : _h, _j = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _j === void 0 ? 'smooth' : _j;
|
|
36
36
|
var _k = useComponentContext(), _l = _k.DateSeparator, DateSeparator = _l === void 0 ? DefaultDateSeparator : _l, _m = _k.EmptyStateIndicator, EmptyStateIndicator = _m === void 0 ? DefaultEmptyStateIndicator : _m, _o = _k.GiphyPreviewMessage, GiphyPreviewMessage = _o === void 0 ? DefaultGiphyPreviewMessage : _o, _p = _k.LoadingIndicator, LoadingIndicator = _p === void 0 ? DefaultLoadingIndicator : _p, _q = _k.MessageNotification, MessageNotification = _q === void 0 ? DefaultMessageNotification : _q, _r = _k.MessageSystem, MessageSystem = _r === void 0 ? EventComponent : _r, _s = _k.TypingIndicator, TypingIndicator = _s === void 0 ? null : _s, _t = _k.VirtualMessage, contextMessage = _t === void 0 ? MessageSimple : _t;
|
|
@@ -158,7 +158,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
158
158
|
var virtualizedMessageListClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list';
|
|
159
159
|
return (React.createElement(React.Fragment, null,
|
|
160
160
|
React.createElement("div", { className: virtualizedMessageListClass },
|
|
161
|
-
React.createElement(Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, firstItemIndex: PREPEND_OFFSET - numItemsPrepended, followOutput: followOutput, initialTopMostItemIndex: processedMessages.length ? processedMessages.length - 1 : 0, itemContent: function (i) { return messageRenderer(processedMessages, i); }, overscan: overscan, ref: virtuoso, startReached: startReached, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {}))),
|
|
161
|
+
React.createElement(Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, firstItemIndex: PREPEND_OFFSET - numItemsPrepended, followOutput: followOutput, initialTopMostItemIndex: processedMessages.length ? processedMessages.length - 1 : 0, itemContent: function (i) { return messageRenderer(processedMessages, i); }, overscan: overscan, ref: virtuoso, startReached: startReached, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, additionalVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {}))),
|
|
162
162
|
React.createElement("div", { className: 'str-chat__list-notifications' },
|
|
163
163
|
React.createElement(MessageNotification, { onClick: scrollToBottom, showNotification: newMessagesNotification }, t('New Messages!')))),
|
|
164
164
|
giphyPreviewMessage && React.createElement(GiphyPreviewMessage, { message: giphyPreviewMessage })));
|