stream-chat-react 6.10.0 → 6.12.2

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 (123) hide show
  1. package/README.md +1 -1
  2. package/dist/browser.full-bundle.js +1785 -417
  3. package/dist/browser.full-bundle.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +4 -4
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/components/Attachment/Card.d.ts.map +1 -1
  7. package/dist/components/Attachment/Card.js +1 -3
  8. package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
  9. package/dist/components/AutoCompleteTextarea/Textarea.js +23 -13
  10. package/dist/components/Channel/Channel.d.ts +8 -3
  11. package/dist/components/Channel/Channel.d.ts.map +1 -1
  12. package/dist/components/Channel/Channel.js +15 -8
  13. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
  14. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +6 -5
  15. package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
  16. package/dist/components/ChannelList/ChannelList.js +4 -7
  17. package/dist/components/ChannelList/ChannelListMessenger.d.ts +2 -0
  18. package/dist/components/ChannelList/ChannelListMessenger.d.ts.map +1 -1
  19. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  20. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +1 -0
  21. package/dist/components/Chat/Chat.d.ts +1 -1
  22. package/dist/components/Chat/Chat.d.ts.map +1 -1
  23. package/dist/components/Chat/Chat.js +2 -1
  24. package/dist/components/Chat/hooks/useChat.d.ts +2 -1
  25. package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
  26. package/dist/components/Chat/hooks/useChat.js +13 -6
  27. package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  28. package/dist/components/Chat/hooks/useCreateChatContext.js +3 -2
  29. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
  30. package/dist/components/ChatAutoComplete/ChatAutoComplete.js +1 -1
  31. package/dist/components/Message/QuotedMessage.d.ts.map +1 -1
  32. package/dist/components/Message/QuotedMessage.js +4 -3
  33. package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  34. package/dist/components/Message/hooks/useReactionHandler.js +15 -12
  35. package/dist/components/Message/utils.d.ts.map +1 -1
  36. package/dist/components/Message/utils.js +8 -4
  37. package/dist/components/MessageInput/DropzoneProvider.d.ts +5 -0
  38. package/dist/components/MessageInput/DropzoneProvider.d.ts.map +1 -0
  39. package/dist/components/MessageInput/DropzoneProvider.js +31 -0
  40. package/dist/components/MessageInput/MessageInput.d.ts +4 -2
  41. package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
  42. package/dist/components/MessageInput/MessageInput.js +16 -6
  43. package/dist/components/MessageInput/hooks/useAttachments.d.ts +1 -1
  44. package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
  45. package/dist/components/MessageInput/hooks/useAttachments.js +3 -1
  46. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  47. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +6 -1
  48. package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts +1 -1
  49. package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts.map +1 -1
  50. package/dist/components/MessageInput/hooks/useEmojiPicker.js +12 -4
  51. package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
  52. package/dist/components/MessageInput/hooks/useFileUploads.js +29 -13
  53. package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
  54. package/dist/components/MessageInput/hooks/useImageUploads.js +29 -13
  55. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +14 -3
  56. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
  57. package/dist/components/MessageInput/hooks/useMessageInputState.js +14 -5
  58. package/dist/components/MessageInput/hooks/utils.d.ts +14 -1
  59. package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -1
  60. package/dist/components/MessageInput/hooks/utils.js +53 -0
  61. package/dist/components/MessageList/MessageList.d.ts +4 -9
  62. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  63. package/dist/components/MessageList/MessageList.js +4 -13
  64. package/dist/components/MessageList/MessageListNotifications.d.ts +11 -0
  65. package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -0
  66. package/dist/components/MessageList/MessageListNotifications.js +12 -0
  67. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  68. package/dist/components/MessageList/VirtualizedMessageList.js +12 -13
  69. package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts +1 -0
  70. package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts.map +1 -1
  71. package/dist/components/MessageList/hooks/useEnrichedMessages.js +3 -2
  72. package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +1 -1
  73. package/dist/components/MessageList/hooks/useMessageListElements.js +1 -1
  74. package/dist/components/MessageList/index.d.ts +1 -0
  75. package/dist/components/MessageList/index.d.ts.map +1 -1
  76. package/dist/components/MessageList/index.js +1 -0
  77. package/dist/components/TypingIndicator/TypingIndicator.d.ts +3 -3
  78. package/dist/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
  79. package/dist/components/TypingIndicator/TypingIndicator.js +6 -3
  80. package/dist/context/ChannelStateContext.d.ts +2 -1
  81. package/dist/context/ChannelStateContext.d.ts.map +1 -1
  82. package/dist/context/ChatContext.d.ts +3 -1
  83. package/dist/context/ChatContext.d.ts.map +1 -1
  84. package/dist/context/ComponentContext.d.ts +2 -2
  85. package/dist/context/ComponentContext.d.ts.map +1 -1
  86. package/dist/context/MessageInputContext.d.ts +2 -2
  87. package/dist/context/MessageInputContext.d.ts.map +1 -1
  88. package/dist/css/index.css +1 -1
  89. package/dist/i18n/Streami18n.d.ts +1 -0
  90. package/dist/i18n/Streami18n.d.ts.map +1 -1
  91. package/dist/i18n/Streami18n.js +5 -5
  92. package/dist/i18n/de.json +1 -0
  93. package/dist/i18n/en.json +1 -0
  94. package/dist/i18n/es.json +1 -0
  95. package/dist/i18n/fr.json +1 -0
  96. package/dist/i18n/hi.json +1 -0
  97. package/dist/i18n/it.json +1 -0
  98. package/dist/i18n/ja.json +1 -0
  99. package/dist/i18n/ko.json +1 -0
  100. package/dist/i18n/nl.json +1 -0
  101. package/dist/i18n/pt.json +1 -0
  102. package/dist/i18n/ru.json +1 -0
  103. package/dist/i18n/tr.json +1 -0
  104. package/dist/index.cjs.js +360 -201
  105. package/dist/index.cjs.js.map +1 -1
  106. package/dist/scss/Card.scss +10 -0
  107. package/dist/scss/ChannelListMessenger.scss +4 -0
  108. package/dist/scss/ChannelSearch.scss +1 -1
  109. package/dist/scss/EditMessageForm.scss +4 -0
  110. package/dist/scss/LoadMoreButton.scss +5 -0
  111. package/dist/scss/Message.scss +10 -5
  112. package/dist/scss/MessageActions.scss +12 -0
  113. package/dist/scss/MessageInput.scss +15 -0
  114. package/dist/scss/MessageInputFlat.scss +12 -1
  115. package/dist/scss/Modal.scss +7 -2
  116. package/dist/scss/_base.scss +14 -0
  117. package/dist/scss/_variables.scss +2 -0
  118. package/dist/types/types.d.ts +1 -0
  119. package/dist/types/types.d.ts.map +1 -1
  120. package/dist/utils.js +1 -1
  121. package/dist/version.d.ts +1 -1
  122. package/dist/version.js +1 -1
  123. package/package.json +14 -11
@@ -46,13 +46,16 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
46
46
  }
47
47
  };
48
48
  import { useCallback, useEffect } from 'react';
49
+ import { checkUploadPermissions } from './utils';
49
50
  import { useChannelActionContext } from '../../../context/ChannelActionContext';
50
51
  import { useChannelStateContext } from '../../../context/ChannelStateContext';
52
+ import { useChatContext } from '../../../context/ChatContext';
51
53
  import { useTranslationContext } from '../../../context/TranslationContext';
52
54
  export var useImageUploads = function (props, state, dispatch) {
53
55
  var doImageUploadRequest = props.doImageUploadRequest, errorHandler = props.errorHandler;
54
56
  var imageUploads = state.imageUploads;
55
57
  var channel = useChannelStateContext('useImageUploads').channel;
58
+ var getAppSettings = useChatContext('useImageUploads').getAppSettings;
56
59
  var addNotification = useChannelActionContext('useImageUploads').addNotification;
57
60
  var t = useTranslationContext('useImageUploads').t;
58
61
  var removeImage = useCallback(function (id) {
@@ -60,7 +63,7 @@ export var useImageUploads = function (props, state, dispatch) {
60
63
  // TODO: cancel upload if still uploading
61
64
  }, []);
62
65
  var uploadImage = useCallback(function (id) { return __awaiter(void 0, void 0, void 0, function () {
63
- var img, file, response, error_1, errorMessage, alreadyRemoved;
66
+ var img, file, canUpload, response, error_1, errorMessage, alreadyRemoved;
64
67
  return __generator(this, function (_a) {
65
68
  switch (_a.label) {
66
69
  case 0:
@@ -71,22 +74,35 @@ export var useImageUploads = function (props, state, dispatch) {
71
74
  if (img.state !== 'uploading') {
72
75
  dispatch({ id: id, state: 'uploading', type: 'setImageUpload' });
73
76
  }
74
- _a.label = 1;
77
+ return [4 /*yield*/, checkUploadPermissions({
78
+ addNotification: addNotification,
79
+ file: file,
80
+ getAppSettings: getAppSettings,
81
+ t: t,
82
+ uploadType: 'image',
83
+ })];
75
84
  case 1:
76
- _a.trys.push([1, 6, , 7]);
77
- if (!doImageUploadRequest) return [3 /*break*/, 3];
78
- return [4 /*yield*/, doImageUploadRequest(file, channel)];
85
+ canUpload = _a.sent();
86
+ if (!canUpload)
87
+ return [2 /*return*/, removeImage(id)];
88
+ _a.label = 2;
79
89
  case 2:
90
+ _a.trys.push([2, 7, , 8]);
91
+ if (!doImageUploadRequest) return [3 /*break*/, 4];
92
+ return [4 /*yield*/, doImageUploadRequest(file, channel)];
93
+ case 3:
80
94
  response = _a.sent();
81
- return [3 /*break*/, 5];
82
- case 3: return [4 /*yield*/, channel.sendImage(file)];
83
- case 4:
95
+ return [3 /*break*/, 6];
96
+ case 4: return [4 /*yield*/, channel.sendImage(file)];
97
+ case 5:
84
98
  response = _a.sent();
85
- _a.label = 5;
86
- case 5: return [3 /*break*/, 7];
87
- case 6:
99
+ _a.label = 6;
100
+ case 6: return [3 /*break*/, 8];
101
+ case 7:
88
102
  error_1 = _a.sent();
89
- errorMessage = typeof error_1.message === 'string' ? error_1.message : t('Error uploading image');
103
+ errorMessage = typeof error_1.message === 'string'
104
+ ? error_1.message
105
+ : t('Error uploading image');
90
106
  addNotification(errorMessage, 'error');
91
107
  alreadyRemoved = false;
92
108
  if (!imageUploads[id]) {
@@ -100,7 +116,7 @@ export var useImageUploads = function (props, state, dispatch) {
100
116
  errorHandler(error_1, 'upload-image', __assign(__assign({}, file), { id: id }));
101
117
  }
102
118
  return [2 /*return*/];
103
- case 7:
119
+ case 8:
104
120
  // If doImageUploadRequest returns any falsy value, then don't create the upload preview.
105
121
  // This is for the case if someone wants to handle failure on app level.
106
122
  if (!response) {
@@ -7,7 +7,9 @@ import type { CustomTrigger, DefaultAttachmentType, DefaultChannelType, DefaultM
7
7
  export declare type FileUpload = {
8
8
  file: {
9
9
  name: string;
10
- size?: number | string;
10
+ lastModified?: number;
11
+ lastModifiedDate?: Date;
12
+ size?: number;
11
13
  type?: string;
12
14
  uri?: string;
13
15
  };
@@ -17,8 +19,12 @@ export declare type FileUpload = {
17
19
  };
18
20
  export declare type ImageUpload = {
19
21
  file: {
22
+ name: string;
20
23
  height?: number;
21
- name?: string;
24
+ lastModified?: number;
25
+ lastModifiedDate?: Date;
26
+ size?: number;
27
+ type?: string;
22
28
  uri?: string;
23
29
  width?: number;
24
30
  };
@@ -108,9 +114,14 @@ export declare type CommandsListState = {
108
114
  openCommandsList: () => void;
109
115
  showCommandsList: boolean;
110
116
  };
117
+ export declare type MentionsListState = {
118
+ closeMentionsList: () => void;
119
+ openMentionsList: () => void;
120
+ showMentionsList: boolean;
121
+ };
111
122
  /**
112
123
  * hook for MessageInput state
113
124
  */
114
- export declare const useMessageInputState: <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>, V extends CustomTrigger = CustomTrigger>(props: MessageInputProps<At, Ch, Co, Ev, Me, Re, Us, V>) => MessageInputState<At, Us> & MessageInputHookProps<At, Me, Us> & CommandsListState;
125
+ export declare const useMessageInputState: <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>, V extends CustomTrigger = CustomTrigger>(props: MessageInputProps<At, Ch, Co, Ev, Me, Re, Us, V>) => MessageInputState<At, Us> & MessageInputHookProps<At, Me, Us> & CommandsListState & MentionsListState;
115
126
  export {};
116
127
  //# sourceMappingURL=useMessageInputState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMessageInputState.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMessageInputState.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputState.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ var initState = function (message) {
46
46
  var id = generateRandomId();
47
47
  acc[id] = {
48
48
  file: {
49
- name: attachment.fallback,
49
+ name: attachment.fallback || '',
50
50
  },
51
51
  id: id,
52
52
  state: 'finished',
@@ -153,11 +153,12 @@ var messageInputReducer = function (state, action) {
153
153
  * hook for MessageInput state
154
154
  */
155
155
  export var useMessageInputState = function (props) {
156
- var message = props.message;
156
+ var closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, message = props.message;
157
157
  var _a = useChannelStateContext('useMessageInputState'), _b = _a.channelCapabilities, channelCapabilities = _b === void 0 ? {} : _b, channelConfig = _a.channelConfig;
158
158
  var _c = useReducer(messageInputReducer, message, initState), state = _c[0], dispatch = _c[1];
159
159
  var _d = useMessageInputText(props, state, dispatch), handleChange = _d.handleChange, insertText = _d.insertText, textareaRef = _d.textareaRef;
160
160
  var _e = useState(false), showCommandsList = _e[0], setShowCommandsList = _e[1];
161
+ var _f = useState(false), showMentionsList = _f[0], setShowMentionsList = _f[1];
161
162
  var openCommandsList = function () {
162
163
  dispatch({
163
164
  getNewText: function () { return '/'; },
@@ -166,8 +167,16 @@ export var useMessageInputState = function (props) {
166
167
  setShowCommandsList(true);
167
168
  };
168
169
  var closeCommandsList = function () { return setShowCommandsList(false); };
169
- var _f = useEmojiPicker(state, dispatch, insertText), closeEmojiPicker = _f.closeEmojiPicker, emojiPickerRef = _f.emojiPickerRef, handleEmojiKeyDown = _f.handleEmojiKeyDown, onSelectEmoji = _f.onSelectEmoji, openEmojiPicker = _f.openEmojiPicker;
170
- var _g = useAttachments(props, state, dispatch), maxFilesLeft = _g.maxFilesLeft, numberOfUploads = _g.numberOfUploads, removeFile = _g.removeFile, removeImage = _g.removeImage, uploadFile = _g.uploadFile, uploadImage = _g.uploadImage, uploadNewFiles = _g.uploadNewFiles;
170
+ var openMentionsList = function () {
171
+ dispatch({
172
+ getNewText: function () { return '@'; },
173
+ type: 'setText',
174
+ });
175
+ setShowMentionsList(true);
176
+ };
177
+ var closeMentionsList = function () { return setShowMentionsList(false); };
178
+ var _g = useEmojiPicker(state, dispatch, insertText, textareaRef, closeEmojiPickerOnClick), closeEmojiPicker = _g.closeEmojiPicker, emojiPickerRef = _g.emojiPickerRef, handleEmojiKeyDown = _g.handleEmojiKeyDown, onSelectEmoji = _g.onSelectEmoji, openEmojiPicker = _g.openEmojiPicker;
179
+ var _h = useAttachments(props, state, dispatch, textareaRef), maxFilesLeft = _h.maxFilesLeft, numberOfUploads = _h.numberOfUploads, removeFile = _h.removeFile, removeImage = _h.removeImage, uploadFile = _h.uploadFile, uploadImage = _h.uploadImage, uploadNewFiles = _h.uploadNewFiles;
171
180
  var handleSubmit = useSubmitHandler(props, state, dispatch, numberOfUploads).handleSubmit;
172
181
  var onPaste = usePasteHandler(uploadNewFiles, insertText).onPaste;
173
182
  var isUploadEnabled = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.uploads) !== false && channelCapabilities['upload-file'] !== false;
@@ -182,5 +191,5 @@ export var useMessageInputState = function (props) {
182
191
  * TODO: fix the below at some point because this type casting is wrong
183
192
  * and just forced to not have warnings currently with the unknown casting
184
193
  */
185
- 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 });
194
+ closeEmojiPicker: closeEmojiPicker, closeMentionsList: closeMentionsList, 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, openMentionsList: openMentionsList, removeFile: removeFile, removeImage: removeImage, setText: setText, showCommandsList: showCommandsList, showMentionsList: showMentionsList, textareaRef: textareaRef, uploadFile: uploadFile, uploadImage: uploadImage, uploadNewFiles: uploadNewFiles });
186
195
  };
@@ -1,5 +1,9 @@
1
+ import type { ImageUpload } from 'react-file-utils';
1
2
  import type { UserResponse } from 'stream-chat';
2
- import type { DefaultUserType } from '../../../types/types';
3
+ import type { ChannelActionContextValue } from '../../../context/ChannelActionContext';
4
+ import type { ChatContextValue } from '../../../context/ChatContext';
5
+ import type { TranslationContextValue } from '../../../context/TranslationContext';
6
+ import type { DefaultAttachmentType, DefaultChannelType, DefaultCommandType, DefaultEventType, DefaultMessageType, DefaultReactionType, DefaultUserType } from '../../../types/types';
3
7
  export declare const accentsMap: {
4
8
  [key: string]: string;
5
9
  };
@@ -13,4 +17,13 @@ export declare type SearchLocalUserParams<Us extends DefaultUserType<Us> = Defau
13
17
  useMentionsTransliteration?: boolean;
14
18
  };
15
19
  export declare const searchLocalUsers: <Us extends DefaultUserType<Us> = DefaultUserType<import("../../../types/types").DefaultUserTypeInternal>>(params: SearchLocalUserParams<Us>) => UserResponse<Us>[];
20
+ declare type CheckUploadPermissionsParams<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> = {
21
+ addNotification: ChannelActionContextValue<At, Ch, Co, Ev, Me, Re, Us>['addNotification'];
22
+ file: ImageUpload['file'];
23
+ getAppSettings: ChatContextValue<At, Ch, Co, Ev, Me, Re, Us>['getAppSettings'];
24
+ t: TranslationContextValue['t'];
25
+ uploadType: 'image' | 'file';
26
+ };
27
+ export declare const checkUploadPermissions: <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: CheckUploadPermissionsParams<At, Ch, Co, Ev, Me, Re, Us>) => Promise<boolean>;
28
+ export {};
16
29
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +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,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,qKAsC5B,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAA4C,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,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,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,qKAsC5B,CAAC;AAEF,aAAK,4BAA4B,CAC/B,EAAE,SAAS,qBAAqB,GAAG,qBAAqB,EACxD,EAAE,SAAS,kBAAkB,GAAG,kBAAkB,EAClD,EAAE,SAAS,kBAAkB,GAAG,kBAAkB,EAClD,EAAE,SAAS,gBAAgB,GAAG,gBAAgB,EAC9C,EAAE,SAAS,kBAAkB,GAAG,kBAAkB,EAClD,EAAE,SAAS,mBAAmB,GAAG,mBAAmB,EACpD,EAAE,SAAS,eAAe,CAAC,EAAE,CAAC,GAAG,eAAe,IAC9C;IACF,eAAe,EAAE,yBAAyB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC1F,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,cAAc,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAChC,UAAU,EAAE,OAAO,GAAG,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,kpBA6ElC,CAAC"}
@@ -115,3 +115,56 @@ export var searchLocalUsers = function (params) {
115
115
  });
116
116
  return matchingUsers;
117
117
  };
118
+ export var checkUploadPermissions = function (params) { return __awaiter(void 0, void 0, void 0, function () {
119
+ var addNotification, file, getAppSettings, t, uploadType, appSettings, _a, allowed_file_extensions, allowed_mime_types, blocked_file_extensions, blocked_mime_types, sendErrorNotification, allowed, blocked, allowed, blocked;
120
+ var _b, _c;
121
+ return __generator(this, function (_d) {
122
+ switch (_d.label) {
123
+ case 0:
124
+ addNotification = params.addNotification, file = params.file, getAppSettings = params.getAppSettings, t = params.t, uploadType = params.uploadType;
125
+ appSettings = null;
126
+ return [4 /*yield*/, getAppSettings()];
127
+ case 1:
128
+ appSettings = _d.sent();
129
+ _a = (uploadType === 'image'
130
+ ? (_b = appSettings === null || appSettings === void 0 ? void 0 : appSettings.app) === null || _b === void 0 ? void 0 : _b.image_upload_config
131
+ : (_c = appSettings === null || appSettings === void 0 ? void 0 : appSettings.app) === null || _c === void 0 ? void 0 : _c.file_upload_config) || {}, allowed_file_extensions = _a.allowed_file_extensions, allowed_mime_types = _a.allowed_mime_types, blocked_file_extensions = _a.blocked_file_extensions, blocked_mime_types = _a.blocked_mime_types;
132
+ sendErrorNotification = function () {
133
+ return addNotification(t("Upload type: \"{{ type }}\" is not allowed", { type: file.type || 'unknown type' }), 'error');
134
+ };
135
+ if (allowed_file_extensions === null || allowed_file_extensions === void 0 ? void 0 : allowed_file_extensions.length) {
136
+ allowed = allowed_file_extensions.some(function (ext) {
137
+ return file.name.toLowerCase().endsWith(ext.toLowerCase());
138
+ });
139
+ if (!allowed) {
140
+ sendErrorNotification();
141
+ return [2 /*return*/, false];
142
+ }
143
+ }
144
+ if (blocked_file_extensions === null || blocked_file_extensions === void 0 ? void 0 : blocked_file_extensions.length) {
145
+ blocked = blocked_file_extensions.some(function (ext) {
146
+ return file.name.toLowerCase().endsWith(ext.toLowerCase());
147
+ });
148
+ if (blocked) {
149
+ sendErrorNotification();
150
+ return [2 /*return*/, false];
151
+ }
152
+ }
153
+ if (allowed_mime_types === null || allowed_mime_types === void 0 ? void 0 : allowed_mime_types.length) {
154
+ allowed = allowed_mime_types.some(function (type) { var _a; return type.toLowerCase() === ((_a = file.type) === null || _a === void 0 ? void 0 : _a.toLowerCase()); });
155
+ if (!allowed) {
156
+ sendErrorNotification();
157
+ return [2 /*return*/, false];
158
+ }
159
+ }
160
+ if (blocked_mime_types === null || blocked_mime_types === void 0 ? void 0 : blocked_mime_types.length) {
161
+ blocked = blocked_mime_types.some(function (type) { var _a; return type.toLowerCase() === ((_a = file.type) === null || _a === void 0 ? void 0 : _a.toLowerCase()); });
162
+ if (blocked) {
163
+ sendErrorNotification();
164
+ return [2 /*return*/, false];
165
+ }
166
+ }
167
+ return [2 /*return*/, true];
168
+ }
169
+ });
170
+ }); };
@@ -1,21 +1,16 @@
1
- import React from 'react';
2
- import { MessageNotificationProps } from './MessageNotification';
1
+ /// <reference types="react" />
3
2
  import { ChannelActionContextValue } from '../../context/ChannelActionContext';
4
- import { ChannelNotifications } from '../../context/ChannelStateContext';
5
3
  import { InfiniteScrollProps } from '../InfiniteScrollPaginator';
4
+ import type { GroupStyle } from './utils';
6
5
  import type { MessageProps } from '../Message/types';
7
6
  import type { StreamMessage } from '../../context/ChannelStateContext';
8
7
  import type { DefaultAttachmentType, DefaultChannelType, DefaultCommandType, DefaultEventType, DefaultMessageType, DefaultReactionType, DefaultUserType } from '../../types/types';
9
- export declare type MessageListNotificationsProps = {
10
- hasNewMessages: boolean;
11
- MessageNotification: React.ComponentType<MessageNotificationProps>;
12
- notifications: ChannelNotifications;
13
- scrollToBottom: () => void;
14
- };
15
8
  declare type PropsDrilledToMessage = 'additionalMessageInputProps' | 'closeReactionSelectorOnClick' | 'customMessageActions' | 'disableQuotedMessages' | 'formatDate' | 'getDeleteMessageErrorNotification' | 'getFlagMessageErrorNotification' | 'getFlagMessageSuccessNotification' | 'getMuteUserErrorNotification' | 'getMuteUserSuccessNotification' | 'getPinMessageErrorNotification' | 'Message' | 'messageActions' | 'onlySenderCanEdit' | 'onMentionsClick' | 'onMentionsHover' | 'onUserClick' | 'onUserHover' | 'openThread' | 'pinPermissions' | 'renderText' | 'retrySendMessage' | 'unsafeHTML';
16
9
  export declare type MessageListProps<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>, PropsDrilledToMessage>> & {
17
10
  /** Disables the injection of date separator components, defaults to `false` */
18
11
  disableDateSeparator?: boolean;
12
+ /** Callback function to set group styles for each message */
13
+ groupStyles?: (message: StreamMessage<At, Ch, Co, Ev, Me, Re, Us>, previousMessage: StreamMessage<At, Ch, Co, Ev, Me, Re, Us>, nextMessage: StreamMessage<At, Ch, Co, Ev, Me, Re, Us>, noGroupByUser: boolean) => GroupStyle;
19
14
  /** Whether or not the list has more items to load */
20
15
  hasMore?: boolean;
21
16
  /** Position to render HeaderComponent */
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"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"}
@@ -26,34 +26,24 @@ import { useEnrichedMessages } from './hooks/useEnrichedMessages';
26
26
  import { useMessageListElements } from './hooks/useMessageListElements';
27
27
  import { useScrollLocationLogic } from './hooks/useScrollLocationLogic';
28
28
  import { Center } from './Center';
29
- import { ConnectionStatus } from './ConnectionStatus';
30
- import { CustomNotification } from './CustomNotification';
31
- import { MessageNotification as DefaultMessageNotification, } from './MessageNotification';
29
+ import { MessageNotification as DefaultMessageNotification } from './MessageNotification';
30
+ import { MessageListNotifications as DefaultMessageListNotifications } from './MessageListNotifications';
32
31
  import { useChannelActionContext, } from '../../context/ChannelActionContext';
33
32
  import { useChannelStateContext, } from '../../context/ChannelStateContext';
34
33
  import { useChatContext } from '../../context/ChatContext';
35
34
  import { useComponentContext } from '../../context/ComponentContext';
36
- import { useTranslationContext } from '../../context/TranslationContext';
37
35
  import { EmptyStateIndicator as DefaultEmptyStateIndicator } from '../EmptyStateIndicator';
38
36
  import { InfiniteScroll } from '../InfiniteScrollPaginator';
39
37
  import { LoadingIndicator as DefaultLoadingIndicator } from '../Loading';
40
38
  import { defaultPinPermissions, MESSAGE_ACTIONS } from '../Message/utils';
41
39
  import { TypingIndicator as DefaultTypingIndicator } from '../TypingIndicator';
42
- var DefaultMessageListNotifications = function (props) {
43
- var hasNewMessages = props.hasNewMessages, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom;
44
- var t = useTranslationContext('DefaultMessageListNotifications').t;
45
- return (React.createElement("div", { className: 'str-chat__list-notifications' },
46
- notifications.map(function (notification) { return (React.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)); }),
47
- React.createElement(ConnectionStatus, null),
48
- React.createElement(MessageNotification, { onClick: scrollToBottom, showNotification: hasNewMessages }, t('New Messages!'))));
49
- };
50
40
  var useInternalInfiniteScrollProps = function (props) {
51
41
  var _a = useComponentContext('useInternalInfiniteScrollProps').LoadingIndicator, LoadingIndicator = _a === void 0 ? DefaultLoadingIndicator : _a;
52
42
  return __assign({ hasMore: props.hasMore, isLoading: props.loadingMore, loader: (React.createElement(Center, { key: 'loadingindicator' },
53
43
  React.createElement(LoadingIndicator, { size: 20 }))), loadMore: useCallLoadMore(props.loadMore, props.messageLimit || 100) }, props.internalInfiniteScrollProps);
54
44
  };
55
45
  var MessageListWithContext = function (props) {
56
- var channel = props.channel, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? false : _a, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, _e = props.messages, messages = _e === void 0 ? [] : _e, notifications = props.notifications, _f = props.noGroupByUser, noGroupByUser = _f === void 0 ? false : _f, _g = props.pinPermissions, pinPermissions = _g === void 0 ? defaultPinPermissions : _g, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
46
+ var channel = props.channel, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? false : _a, groupStyles = props.groupStyles, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, _e = props.messages, messages = _e === void 0 ? [] : _e, notifications = props.notifications, _f = props.noGroupByUser, noGroupByUser = _f === void 0 ? false : _f, _g = props.pinPermissions, pinPermissions = _g === void 0 ? defaultPinPermissions : _g, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
57
47
  _h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
58
48
  returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read;
59
49
  var customClasses = useChatContext('MessageList').customClasses;
@@ -65,6 +55,7 @@ var MessageListWithContext = function (props) {
65
55
  var _s = useEnrichedMessages({
66
56
  channel: channel,
67
57
  disableDateSeparator: disableDateSeparator,
58
+ groupStyles: groupStyles,
68
59
  headerPosition: headerPosition,
69
60
  hideDeletedMessages: hideDeletedMessages,
70
61
  hideNewMessageSeparator: hideNewMessageSeparator,
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { MessageNotificationProps } from './MessageNotification';
3
+ import type { ChannelNotifications } from '../../context/ChannelStateContext';
4
+ export declare type MessageListNotificationsProps = {
5
+ hasNewMessages: boolean;
6
+ MessageNotification: React.ComponentType<MessageNotificationProps>;
7
+ notifications: ChannelNotifications;
8
+ scrollToBottom: () => void;
9
+ };
10
+ export declare const MessageListNotifications: (props: MessageListNotificationsProps) => JSX.Element;
11
+ //# sourceMappingURL=MessageListNotifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageListNotifications.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageListNotifications.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,oBAAY,6BAA6B,GAAG;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACnE,aAAa,EAAE,oBAAoB,CAAC;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAW,6BAA6B,gBAkB5E,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { ConnectionStatus } from './ConnectionStatus';
3
+ import { CustomNotification } from './CustomNotification';
4
+ import { useTranslationContext } from '../../context/TranslationContext';
5
+ export var MessageListNotifications = function (props) {
6
+ var hasNewMessages = props.hasNewMessages, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom;
7
+ var t = useTranslationContext('MessageListNotifications').t;
8
+ return (React.createElement("div", { className: 'str-chat__list-notifications' },
9
+ notifications.map(function (notification) { return (React.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)); }),
10
+ React.createElement(ConnectionStatus, null),
11
+ React.createElement(MessageNotification, { onClick: scrollToBottom, showNotification: hasNewMessages }, t('New Messages!'))));
12
+ };
@@ -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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"}
@@ -17,6 +17,7 @@ import { useNewMessageNotification } from './hooks/useNewMessageNotification';
17
17
  import { usePrependedMessagesCount } from './hooks/usePrependMessagesCount';
18
18
  import { useShouldForceScrollToBottom } from './hooks/useShouldForceScrollToBottom';
19
19
  import { MessageNotification as DefaultMessageNotification } from './MessageNotification';
20
+ import { MessageListNotifications as DefaultMessageListNotifications } from './MessageListNotifications';
20
21
  import { processMessages } from './utils';
21
22
  import { DateSeparator as DefaultDateSeparator } from '../DateSeparator/DateSeparator';
22
23
  import { EmptyStateIndicator as DefaultEmptyStateIndicator } from '../EmptyStateIndicator/EmptyStateIndicator';
@@ -24,21 +25,20 @@ import { EventComponent } from '../EventComponent/EventComponent';
24
25
  import { LoadingIndicator as DefaultLoadingIndicator } from '../Loading/LoadingIndicator';
25
26
  import { Message, MessageSimple } from '../Message';
26
27
  import { useChannelActionContext, } from '../../context/ChannelActionContext';
27
- import { useChannelStateContext } from '../../context/ChannelStateContext';
28
+ import { useChannelStateContext, } from '../../context/ChannelStateContext';
28
29
  import { useChatContext } from '../../context/ChatContext';
29
30
  import { useComponentContext } from '../../context/ComponentContext';
30
- import { isDate, useTranslationContext } from '../../context/TranslationContext';
31
+ import { isDate } from '../../context/TranslationContext';
31
32
  var PREPEND_OFFSET = Math.pow(10, 7);
32
33
  var VirtualizedMessageListWithContext = function (props) {
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
+ 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, notifications = props.notifications, _e = props.overscan, overscan = _e === void 0 ? 0 : _e,
34
35
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
35
36
  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
- var _k = useComponentContext('VirtualizedMessageList'), _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;
37
- var _u = useChatContext('VirtualizedMessageList'), client = _u.client, customClasses = _u.customClasses;
38
- var t = useTranslationContext('VirtualizedMessageList').t;
37
+ var _k = useComponentContext('VirtualizedMessageList'), _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.MessageListNotifications, MessageListNotifications = _q === void 0 ? DefaultMessageListNotifications : _q, _r = _k.MessageNotification, MessageNotification = _r === void 0 ? DefaultMessageNotification : _r, _s = _k.MessageSystem, MessageSystem = _s === void 0 ? EventComponent : _s, _t = _k.TypingIndicator, TypingIndicator = _t === void 0 ? null : _t, _u = _k.VirtualMessage, contextMessage = _u === void 0 ? MessageSimple : _u;
38
+ var _v = useChatContext('VirtualizedMessageList'), client = _v.client, customClasses = _v.customClasses;
39
39
  var lastRead = useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
40
40
  var MessageUIComponent = propMessage || contextMessage;
41
- var _v = useGiphyPreview(separateGiphyPreview), giphyPreviewMessage = _v.giphyPreviewMessage, setGiphyPreviewMessage = _v.setGiphyPreviewMessage;
41
+ var _w = useGiphyPreview(separateGiphyPreview), giphyPreviewMessage = _w.giphyPreviewMessage, setGiphyPreviewMessage = _w.setGiphyPreviewMessage;
42
42
  var processedMessages = useMemo(function () {
43
43
  if (typeof messages === 'undefined') {
44
44
  return [];
@@ -69,7 +69,7 @@ var VirtualizedMessageListWithContext = function (props) {
69
69
  client.userID,
70
70
  ]);
71
71
  var virtuoso = useRef(null);
72
- var _w = useNewMessageNotification(processedMessages, client.userID), atBottom = _w.atBottom, newMessagesNotification = _w.newMessagesNotification, setNewMessagesNotification = _w.setNewMessagesNotification;
72
+ var _x = useNewMessageNotification(processedMessages, client.userID), atBottom = _x.atBottom, newMessagesNotification = _x.newMessagesNotification, setNewMessagesNotification = _x.setNewMessagesNotification;
73
73
  var scrollToBottom = useCallback(function () {
74
74
  if (virtuoso.current) {
75
75
  virtuoso.current.scrollToIndex(processedMessages.length - 1);
@@ -158,9 +158,8 @@ 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 }, additionalVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {}))),
162
- React.createElement("div", { className: 'str-chat__list-notifications' },
163
- React.createElement(MessageNotification, { onClick: scrollToBottom, showNotification: newMessagesNotification }, t('New Messages!')))),
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
+ React.createElement(MessageListNotifications, { hasNewMessages: newMessagesNotification, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottom }),
164
163
  giphyPreviewMessage && React.createElement(GiphyPreviewMessage, { message: giphyPreviewMessage })));
165
164
  };
166
165
  /**
@@ -171,7 +170,7 @@ var VirtualizedMessageListWithContext = function (props) {
171
170
  */
172
171
  export function VirtualizedMessageList(props) {
173
172
  var loadMore = useChannelActionContext('VirtualizedMessageList').loadMore;
174
- var _a = useChannelStateContext('VirtualizedMessageList'), channel = _a.channel, hasMore = _a.hasMore, loadingMore = _a.loadingMore, contextMessages = _a.messages;
173
+ var _a = useChannelStateContext('VirtualizedMessageList'), channel = _a.channel, hasMore = _a.hasMore, loadingMore = _a.loadingMore, contextMessages = _a.messages, notifications = _a.notifications;
175
174
  var messages = props.messages || contextMessages;
176
- return (React.createElement(VirtualizedMessageListWithContext, __assign({ channel: channel, hasMore: !!hasMore, loadingMore: !!loadingMore, loadMore: loadMore, messages: messages }, props)));
175
+ return (React.createElement(VirtualizedMessageListWithContext, __assign({ channel: channel, hasMore: !!hasMore, loadingMore: !!loadingMore, loadMore: loadMore, messages: messages, notifications: notifications }, props)));
177
176
  }
@@ -10,6 +10,7 @@ export declare const useEnrichedMessages: <At extends DefaultAttachmentType = De
10
10
  messages: StreamMessage<At, Ch, Co, Ev, Me, Re, Us>[];
11
11
  noGroupByUser: boolean;
12
12
  threadList: boolean;
13
+ groupStyles?: ((message: StreamMessage<At, Ch, Co, Ev, Me, Re, Us>, previousMessage: StreamMessage<At, Ch, Co, Ev, Me, Re, Us>, nextMessage: StreamMessage<At, Ch, Co, Ev, Me, Re, Us>, noGroupByUser: boolean) => GroupStyle) | undefined;
13
14
  headerPosition?: number | undefined;
14
15
  }) => {
15
16
  messageGroupStyles: Record<string, GroupStyle>;
@@ -1 +1 @@
1
- {"version":3,"file":"useEnrichedMessages.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useEnrichedMessages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,UAAU,EAAgC,MAAM,UAAU,CAAC;AAKpF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAGlB,kBAAkB,EAElB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,mBAAmB;;0BAUR,OAAO;yBACR,OAAO;6BACH,OAAO;;mBAEjB,OAAO;gBACV,OAAO;;;;;CAsDpB,CAAC"}
1
+ {"version":3,"file":"useEnrichedMessages.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useEnrichedMessages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,UAAU,EAAgC,MAAM,UAAU,CAAC;AAKpF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAGlB,kBAAkB,EAElB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,mBAAmB;;0BAUR,OAAO;yBACR,OAAO;6BACH,OAAO;;mBAEjB,OAAO;gBACV,OAAO;2MAKF,OAAO,KACnB,UAAU;;;;;CAwDhB,CAAC"}
@@ -3,7 +3,7 @@ import { getGroupStyles, insertIntro, processMessages } from '../utils';
3
3
  import { useChatContext } from '../../../context/ChatContext';
4
4
  import { useComponentContext } from '../../../context/ComponentContext';
5
5
  export var useEnrichedMessages = function (args) {
6
- var channel = args.channel, disableDateSeparator = args.disableDateSeparator, headerPosition = args.headerPosition, hideDeletedMessages = args.hideDeletedMessages, hideNewMessageSeparator = args.hideNewMessageSeparator, messages = args.messages, noGroupByUser = args.noGroupByUser, threadList = args.threadList;
6
+ var channel = args.channel, disableDateSeparator = args.disableDateSeparator, groupStyles = args.groupStyles, headerPosition = args.headerPosition, hideDeletedMessages = args.hideDeletedMessages, hideNewMessageSeparator = args.hideNewMessageSeparator, messages = args.messages, noGroupByUser = args.noGroupByUser, threadList = args.threadList;
7
7
  var client = useChatContext('useEnrichedMessages').client;
8
8
  var HeaderComponent = useComponentContext('useEnrichedMessages').HeaderComponent;
9
9
  var lastRead = useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
@@ -21,9 +21,10 @@ export var useEnrichedMessages = function (args) {
21
21
  if (HeaderComponent) {
22
22
  messagesWithDates = insertIntro(messagesWithDates, headerPosition);
23
23
  }
24
+ var groupStylesFn = groupStyles || getGroupStyles;
24
25
  var messageGroupStyles = useMemo(function () {
25
26
  return messagesWithDates.reduce(function (acc, message, i) {
26
- var style = getGroupStyles(message, messagesWithDates[i - 1], messagesWithDates[i + 1], noGroupByUser);
27
+ var style = groupStylesFn(message, messagesWithDates[i - 1], messagesWithDates[i + 1], noGroupByUser);
27
28
  if (style)
28
29
  acc[message.id] = style;
29
30
  return acc;
@@ -1 +1 @@
1
- {"version":3,"file":"useMessageListElements.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useMessageListElements.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAmB,UAAU,EAAE,MAAM,UAAU,CAAC;AAUvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,aAAK,kBAAkB,GACnB,SAAS,GACT,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,SAAS,GACT,QAAQ,GACR,YAAY,CAAC;AAEjB,aAAK,2BAA2B,CAC9B,EAAE,SAAS,qBAAqB,GAAG,qBAAqB,EACxD,EAAE,SAAS,kBAAkB,GAAG,kBAAkB,EAClD,EAAE,SAAS,kBAAkB,GAAG,kBAAkB,EAClD,EAAE,SAAS,gBAAgB,GAAG,gBAAgB,EAC9C,EAAE,SAAS,kBAAkB,GAAG,kBAAkB,EAClD,EAAE,SAAS,mBAAmB,GAAG,mBAAmB,EACpD,EAAE,SAAS,eAAe,CAAC,EAAE,CAAC,GAAG,eAAe,IAC9C;IACF,gBAAgB,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAC9D,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzF,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,qBAAqB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;IACnF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,sBAAsB,6oBA2GlC,CAAC"}
1
+ {"version":3,"file":"useMessageListElements.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useMessageListElements.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAmB,UAAU,EAAE,MAAM,UAAU,CAAC;AAUvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,aAAK,kBAAkB,GACnB,SAAS,GACT,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,SAAS,GACT,QAAQ,GACR,YAAY,CAAC;AAEjB,aAAK,2BAA2B,CAC9B,EAAE,SAAS,qBAAqB,GAAG,qBAAqB,EACxD,EAAE,SAAS,kBAAkB,GAAG,kBAAkB,EAClD,EAAE,SAAS,kBAAkB,GAAG,kBAAkB,EAClD,EAAE,SAAS,gBAAgB,GAAG,gBAAgB,EAC9C,EAAE,SAAS,kBAAkB,GAAG,kBAAkB,EAClD,EAAE,SAAS,mBAAmB,GAAG,mBAAmB,EACpD,EAAE,SAAS,eAAe,CAAC,EAAE,CAAC,GAAG,eAAe,IAC9C;IACF,gBAAgB,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAC9D,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzF,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,qBAAqB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;IACnF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,sBAAsB,6oBA4GlC,CAAC"}
@@ -50,7 +50,7 @@ export var useMessageListElements = function (props) {
50
50
  }
51
51
  var groupStyles = messageGroupStyles[message.id] || '';
52
52
  var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--" + groupStyles;
53
- return (React.createElement("li", { className: messageClass, key: message.id || message.created_at, onLoadCapture: onMessageLoadCaptured },
53
+ return (React.createElement("li", { className: messageClass, "data-testid": messageClass, key: message.id || message.created_at, onLoadCapture: onMessageLoadCaptured },
54
54
  React.createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [], threadList: threadList }, internalMessageProps))));
55
55
  });
56
56
  }, [
@@ -4,4 +4,5 @@ export * from './MessageList';
4
4
  export * from './MessageNotification';
5
5
  export * from './VirtualizedMessageList';
6
6
  export * from './hooks';
7
+ export * from './utils';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -4,3 +4,4 @@ export * from './MessageList';
4
4
  export * from './MessageNotification';
5
5
  export * from './VirtualizedMessageList';
6
6
  export * from './hooks';
7
+ export * from './utils';