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.
Files changed (104) hide show
  1. package/README.md +1 -1
  2. package/dist/browser.full-bundle.js +3989 -1360
  3. package/dist/browser.full-bundle.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +10 -3
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/components/AutoCompleteTextarea/Textarea.js +1 -1
  7. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  8. package/dist/components/Avatar/Avatar.js +3 -1
  9. package/dist/components/Channel/Channel.d.ts +4 -0
  10. package/dist/components/Channel/Channel.d.ts.map +1 -1
  11. package/dist/components/Channel/Channel.js +69 -94
  12. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts +15 -0
  13. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -0
  14. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +87 -0
  15. package/dist/components/Channel/hooks/useCreateTypingContext.d.ts +4 -0
  16. package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -0
  17. package/dist/components/Channel/hooks/useCreateTypingContext.js +9 -0
  18. package/dist/components/ChannelList/ChannelList.d.ts +3 -3
  19. package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
  20. package/dist/components/ChannelList/ChannelList.js +3 -3
  21. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts +1 -1
  22. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
  23. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +3 -2
  24. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts +1 -1
  25. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
  26. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +4 -6
  27. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +0 -1
  28. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  29. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +7 -15
  30. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  31. package/dist/components/ChannelPreview/ChannelPreview.js +10 -0
  32. package/dist/components/Chat/Chat.d.ts.map +1 -1
  33. package/dist/components/Chat/Chat.js +14 -12
  34. package/dist/components/Chat/hooks/useChat.js +1 -1
  35. package/dist/components/Chat/hooks/useCreateChatContext.d.ts +4 -0
  36. package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -0
  37. package/dist/components/Chat/hooks/useCreateChatContext.js +21 -0
  38. package/dist/components/Message/hooks/useReactionHandler.d.ts +1 -1
  39. package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  40. package/dist/components/Message/hooks/useReactionHandler.js +1 -5
  41. package/dist/components/MessageInput/DefaultTriggerProvider.d.ts.map +1 -1
  42. package/dist/components/MessageInput/DefaultTriggerProvider.js +1 -0
  43. package/dist/components/MessageInput/MessageInput.d.ts +3 -1
  44. package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
  45. package/dist/components/MessageInput/MessageInput.js +2 -1
  46. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts +4 -0
  47. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -0
  48. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +88 -0
  49. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +1 -0
  50. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
  51. package/dist/components/MessageInput/hooks/useMessageInputState.js +6 -1
  52. package/dist/components/MessageInput/hooks/useMessageInputText.js +1 -1
  53. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
  54. package/dist/components/MessageInput/hooks/useSubmitHandler.js +2 -1
  55. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +1 -0
  56. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
  57. package/dist/components/MessageInput/hooks/useUserTrigger.js +19 -13
  58. package/dist/components/MessageInput/hooks/utils.d.ts +15 -0
  59. package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -0
  60. package/dist/components/MessageInput/hooks/utils.js +114 -0
  61. package/dist/components/MessageList/VirtualizedMessageList.d.ts +4 -2
  62. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  63. package/dist/components/MessageList/VirtualizedMessageList.js +2 -2
  64. package/dist/css/index.css +1 -7329
  65. package/dist/index.cjs.js +449 -175
  66. package/dist/index.cjs.js.map +1 -1
  67. package/dist/scss/ActionsBox.scss +2 -0
  68. package/dist/scss/Attachment.scss +4 -0
  69. package/dist/scss/AttachmentActions.scss +1 -0
  70. package/dist/scss/Audio.scss +2 -0
  71. package/dist/scss/Avatar.scss +2 -0
  72. package/dist/scss/Card.scss +6 -2
  73. package/dist/scss/ChannelHeader.scss +22 -3
  74. package/dist/scss/ChannelList.scss +5 -6
  75. package/dist/scss/ChannelSearch.scss +2 -4
  76. package/dist/scss/ChatDown.scss +1 -0
  77. package/dist/scss/DateSeparator.scss +3 -0
  78. package/dist/scss/EditMessageForm.scss +4 -0
  79. package/dist/scss/EventComponent.scss +4 -0
  80. package/dist/scss/Gallery.scss +7 -1
  81. package/dist/scss/LoadMoreButton.scss +1 -0
  82. package/dist/scss/Message.scss +78 -2
  83. package/dist/scss/MessageInput.scss +3 -0
  84. package/dist/scss/MessageInputFlat.scss +8 -1
  85. package/dist/scss/MessageList.scss +10 -0
  86. package/dist/scss/MessageRepliesCountButton.scss +1 -0
  87. package/dist/scss/MessageTeam.scss +3 -7
  88. package/dist/scss/Modal.scss +3 -0
  89. package/dist/scss/ReactionList.scss +18 -18
  90. package/dist/scss/ReactionSelector.scss +4 -0
  91. package/dist/scss/SimpleReactionsList.scss +2 -1
  92. package/dist/scss/Thread.scss +19 -0
  93. package/dist/scss/TypingIndicator.scss +7 -0
  94. package/dist/scss/VirtualMessage.scss +8 -7
  95. package/dist/scss/_base.scss +17 -2
  96. package/dist/utils.d.ts +2 -2
  97. package/dist/utils.d.ts.map +1 -1
  98. package/dist/utils.js +22 -15
  99. package/dist/version.d.ts +1 -1
  100. package/dist/version.js +1 -1
  101. package/package.json +10 -29
  102. package/CHANGELOG.md +0 -1534
  103. package/dist/css/index.js +0 -1
  104. 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, publishTypingEvent = props.publishTypingEvent;
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;CAmGlC,CAAC"}
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({}, updatedMessage), { id: message.id }))];
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":"AAQA,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;CAC3D,CAAC;AAEF,eAAO,MAAM,cAAc,qnBAiJ1B,CAAC"}
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, _, onReady) {
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
- return data.filter(function (suggestion) { return mutes.some(function (mute) { return mute.target.id === suggestion.id; }); });
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 matchingUsers = users.filter(function (user) {
167
- if (user.id === client.userID)
168
- return false;
169
- if (!query)
170
- return true;
171
- if (user.name !== undefined && user.name.toLowerCase().includes(query.toLowerCase())) {
172
- return true;
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":"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"}
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 })));