stream-chat-react 9.4.1 → 9.5.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 (31) hide show
  1. package/dist/browser.full-bundle.js +65 -93
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +1 -1
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/AutoCompleteTextarea/Textarea.d.ts +7 -0
  6. package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
  7. package/dist/components/AutoCompleteTextarea/Textarea.js +10 -1
  8. package/dist/components/Channel/Channel.d.ts.map +1 -1
  9. package/dist/components/Channel/Channel.js +26 -24
  10. package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
  11. package/dist/components/MessageInput/hooks/useAttachments.js +8 -1
  12. package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
  13. package/dist/components/MessageInput/hooks/useImageUploads.js +17 -36
  14. package/dist/context/ChannelActionContext.d.ts +1 -1
  15. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  16. package/dist/context/DefaultEmoji.d.ts +3 -0
  17. package/dist/context/DefaultEmoji.d.ts.map +1 -0
  18. package/dist/context/DefaultEmoji.js +3 -0
  19. package/dist/context/DefaultEmojiPicker.d.ts +3 -0
  20. package/dist/context/DefaultEmojiPicker.d.ts.map +1 -0
  21. package/dist/context/DefaultEmojiPicker.js +3 -0
  22. package/dist/context/EmojiContext.d.ts.map +1 -1
  23. package/dist/context/EmojiContext.js +2 -58
  24. package/dist/css/index.css +1 -1
  25. package/dist/index.cjs.js +74 -86
  26. package/dist/index.cjs.js.map +1 -1
  27. package/dist/scss/Gallery.scss +6 -0
  28. package/dist/scss/Message.scss +67 -34
  29. package/dist/version.d.ts +1 -1
  30. package/dist/version.js +1 -1
  31. package/package.json +3 -3
@@ -35929,7 +35929,7 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
35929
35929
  });
35930
35930
 
35931
35931
  _defineProperty(_assertThisInitialized(_this), "_defaultShouldSubmit", function (event) {
35932
- return event.key === 'Enter' && !event.shiftKey;
35932
+ return event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing;
35933
35933
  });
35934
35934
 
35935
35935
  _defineProperty(_assertThisInitialized(_this), "_handleKeyDown", function (event) {
@@ -39813,32 +39813,12 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
39813
39813
 
39814
39814
  var DefaultEmojiIndex = unwrapExports(nimbleEmojiIndex);
39815
39815
 
39816
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var DefaultEmoji = React__default['default'].lazy(function () { return __awaiter$1(void 0, void 0, void 0, function () {
39817
- var emoji;
39818
- return __generator$1(this, function (_a) {
39819
- switch (_a.label) {
39820
- case 0: return [4 /*yield*/, Promise.resolve().then(function () { return nimbleEmoji$2; })];
39821
- case 1:
39822
- emoji = _a.sent();
39823
- return [2 /*return*/, { default: emoji.default }];
39824
- }
39825
- });
39826
- }); });
39827
- var DefaultEmojiPicker = React__default['default'].lazy(function () { return __awaiter$1(void 0, void 0, void 0, function () {
39828
- var emojiPicker;
39829
- return __generator$1(this, function (_a) {
39830
- switch (_a.label) {
39831
- case 0: return [4 /*yield*/, Promise.resolve().then(function () { return nimblePicker$2; })];
39832
- case 1:
39833
- emojiPicker = _a.sent();
39834
- return [2 /*return*/, { default: emojiPicker.default }];
39835
- }
39836
- });
39837
- }); });
39816
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var DefaultEmoji$1 = React__default['default'].lazy(function () { return Promise.resolve().then(function () { return DefaultEmoji; }); });
39817
+ var DefaultEmojiPicker$1 = React__default['default'].lazy(function () { return Promise.resolve().then(function () { return DefaultEmojiPicker; }); });
39838
39818
  var EmojiContext = React__default['default'].createContext(undefined);
39839
39819
  var EmojiProvider = function (_a) {
39840
39820
  var children = _a.children, value = _a.value;
39841
- var _b = value.Emoji, Emoji = _b === void 0 ? DefaultEmoji : _b, emojiConfig = value.emojiConfig, _c = value.EmojiIndex, EmojiIndex = _c === void 0 ? DefaultEmojiIndex : _c, _d = value.EmojiPicker, EmojiPicker = _d === void 0 ? DefaultEmojiPicker : _d;
39821
+ var _b = value.Emoji, Emoji = _b === void 0 ? DefaultEmoji$1 : _b, emojiConfig = value.emojiConfig, _c = value.EmojiIndex, EmojiIndex = _c === void 0 ? DefaultEmojiIndex : _c, _d = value.EmojiPicker, EmojiPicker = _d === void 0 ? DefaultEmojiPicker$1 : _d;
39842
39822
  var emojiContextValue = {
39843
39823
  Emoji: Emoji,
39844
39824
  emojiConfig: emojiConfig,
@@ -40553,8 +40533,9 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
40553
40533
  }, []);
40554
40534
  var uploadImage = React.useCallback(function (id) { return __awaiter$1(void 0, void 0, void 0, function () {
40555
40535
  var img, file, canUpload, response, error_1, errorMessage, alreadyRemoved;
40556
- return __generator$1(this, function (_a) {
40557
- switch (_a.label) {
40536
+ var _a;
40537
+ return __generator$1(this, function (_b) {
40538
+ switch (_b.label) {
40558
40539
  case 0:
40559
40540
  img = imageUploads[id];
40560
40541
  if (!img)
@@ -40571,24 +40552,24 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
40571
40552
  uploadType: 'image',
40572
40553
  })];
40573
40554
  case 1:
40574
- canUpload = _a.sent();
40555
+ canUpload = _b.sent();
40575
40556
  if (!canUpload)
40576
40557
  return [2 /*return*/, removeImage(id)];
40577
- _a.label = 2;
40558
+ _b.label = 2;
40578
40559
  case 2:
40579
- _a.trys.push([2, 7, , 8]);
40560
+ _b.trys.push([2, 7, , 8]);
40580
40561
  if (!doImageUploadRequest) return [3 /*break*/, 4];
40581
40562
  return [4 /*yield*/, doImageUploadRequest(file, channel)];
40582
40563
  case 3:
40583
- response = _a.sent();
40564
+ response = _b.sent();
40584
40565
  return [3 /*break*/, 6];
40585
40566
  case 4: return [4 /*yield*/, channel.sendImage(file)];
40586
40567
  case 5:
40587
- response = _a.sent();
40588
- _a.label = 6;
40568
+ response = _b.sent();
40569
+ _b.label = 6;
40589
40570
  case 6: return [3 /*break*/, 8];
40590
40571
  case 7:
40591
- error_1 = _a.sent();
40572
+ error_1 = _b.sent();
40592
40573
  errorMessage = typeof error_1.message === 'string'
40593
40574
  ? error_1.message
40594
40575
  : t('Error uploading image');
@@ -40612,8 +40593,11 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
40612
40593
  removeImage(id);
40613
40594
  return [2 /*return*/];
40614
40595
  }
40596
+ if (img.previewUri)
40597
+ (_a = URL.revokeObjectURL) === null || _a === void 0 ? void 0 : _a.call(URL, img.previewUri);
40615
40598
  dispatch({
40616
40599
  id: id,
40600
+ previewUri: undefined,
40617
40601
  state: 'finished',
40618
40602
  type: 'setImageUpload',
40619
40603
  url: response.file,
@@ -40623,33 +40607,10 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
40623
40607
  });
40624
40608
  }); }, [imageUploads, channel, doImageUploadRequest, errorHandler, removeImage]);
40625
40609
  React.useEffect(function () {
40626
- if (FileReader) {
40627
- var upload = Object.values(imageUploads).find(function (imageUpload) {
40628
- return imageUpload.state === 'uploading' && !!imageUpload.file && !imageUpload.previewUri;
40629
- });
40630
- if (upload) {
40631
- var file = upload.file, id_1 = upload.id;
40632
- // TODO: Possibly use URL.createObjectURL instead. However, then we need
40633
- // to release the previews when not used anymore though.
40634
- var reader_1 = new FileReader();
40635
- reader_1.onload = function (event) {
40636
- var _a;
40637
- if (typeof ((_a = event.target) === null || _a === void 0 ? void 0 : _a.result) !== 'string')
40638
- return;
40639
- dispatch({
40640
- id: id_1,
40641
- previewUri: event.target.result,
40642
- type: 'setImageUpload',
40643
- });
40644
- };
40645
- reader_1.readAsDataURL(file);
40646
- uploadImage(id_1);
40647
- return function () {
40648
- reader_1.onload = null;
40649
- };
40650
- }
40651
- }
40652
- return;
40610
+ var upload = Object.values(imageUploads).find(function (imageUpload) { return imageUpload.state === 'uploading' && imageUpload.file; });
40611
+ if (!upload)
40612
+ return;
40613
+ uploadImage(upload.id);
40653
40614
  }, [imageUploads, uploadImage]);
40654
40615
  return {
40655
40616
  removeImage: removeImage,
@@ -40773,11 +40734,18 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
40773
40734
  Array.from(files)
40774
40735
  .slice(0, maxFilesLeft)
40775
40736
  .forEach(function (file) {
40737
+ var _a;
40776
40738
  var id = nanoid();
40777
40739
  if (file.type.startsWith('image/') &&
40778
40740
  !file.type.endsWith('.photoshop') // photoshop files begin with 'image/'
40779
40741
  ) {
40780
- dispatch({ file: file, id: id, state: 'uploading', type: 'setImageUpload' });
40742
+ dispatch({
40743
+ file: file,
40744
+ id: id,
40745
+ previewUri: (_a = URL.createObjectURL) === null || _a === void 0 ? void 0 : _a.call(URL, file),
40746
+ state: 'uploading',
40747
+ type: 'setImageUpload',
40748
+ });
40781
40749
  }
40782
40750
  else if (file instanceof File && !noFiles) {
40783
40751
  dispatch({ file: file, id: id, state: 'uploading', type: 'setFileUpload' });
@@ -41887,8 +41855,7 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
41887
41855
  notificationTimeouts.push(timeout);
41888
41856
  }; };
41889
41857
 
41890
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=streamChat.logChatPromiseExecution;window.StreamChat.Channel=Channel$1;window.ICAL=window.ICAL||{};var JUMP_MESSAGE_PAGE_SIZE = 25;
41891
- var UnMemoizedChannel = function (props) {
41858
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=streamChat.logChatPromiseExecution;window.StreamChat.Channel=Channel$1;window.ICAL=window.ICAL||{};var UnMemoizedChannel = function (props) {
41892
41859
  var propsChannel = props.channel, _a = props.EmptyPlaceholder, EmptyPlaceholder = _a === void 0 ? null : _a, LoadingErrorIndicator = props.LoadingErrorIndicator, LoadingIndicator = props.LoadingIndicator;
41893
41860
  var _b = useChatContext('Channel'), contextChannel = _b.channel, channelsQueryState = _b.channelsQueryState;
41894
41861
  var channel = propsChannel || contextChannel;
@@ -42157,30 +42124,33 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
42157
42124
  });
42158
42125
  });
42159
42126
  };
42160
- var jumpToMessage = function (messageId) { return __awaiter$1(void 0, void 0, void 0, function () {
42161
- var indexOfMessage, hasMoreMessages;
42162
- return __generator$1(this, function (_a) {
42163
- switch (_a.label) {
42164
- case 0:
42165
- dispatch({ loadingMore: true, type: 'setLoadingMore' });
42166
- return [4 /*yield*/, channel.state.loadMessageIntoState(messageId)];
42167
- case 1:
42168
- _a.sent();
42169
- indexOfMessage = channel.state.messages.findIndex(function (message) { return message.id === messageId; });
42170
- hasMoreMessages = indexOfMessage >= Math.floor(JUMP_MESSAGE_PAGE_SIZE / 2);
42171
- loadMoreFinished(hasMoreMessages, channel.state.messages);
42172
- dispatch({
42173
- hasMoreNewer: channel.state.messages !== channel.state.latestMessages,
42174
- highlightedMessageId: messageId,
42175
- type: 'jumpToMessageFinished',
42176
- });
42177
- setTimeout(function () {
42178
- dispatch({ type: 'clearHighlightedMessage' });
42179
- }, 500);
42180
- return [2 /*return*/];
42181
- }
42127
+ var jumpToMessage = function (messageId, messageLimit) {
42128
+ if (messageLimit === void 0) { messageLimit = 100; }
42129
+ return __awaiter$1(void 0, void 0, void 0, function () {
42130
+ var indexOfMessage, hasMoreMessages;
42131
+ return __generator$1(this, function (_a) {
42132
+ switch (_a.label) {
42133
+ case 0:
42134
+ dispatch({ loadingMore: true, type: 'setLoadingMore' });
42135
+ return [4 /*yield*/, channel.state.loadMessageIntoState(messageId, undefined, messageLimit)];
42136
+ case 1:
42137
+ _a.sent();
42138
+ indexOfMessage = channel.state.messages.findIndex(function (message) { return message.id === messageId; });
42139
+ hasMoreMessages = indexOfMessage >= Math.floor(messageLimit / 2);
42140
+ loadMoreFinished(hasMoreMessages, channel.state.messages);
42141
+ dispatch({
42142
+ hasMoreNewer: channel.state.messages !== channel.state.latestMessages,
42143
+ highlightedMessageId: messageId,
42144
+ type: 'jumpToMessageFinished',
42145
+ });
42146
+ setTimeout(function () {
42147
+ dispatch({ type: 'clearHighlightedMessage' });
42148
+ }, 500);
42149
+ return [2 /*return*/];
42150
+ }
42151
+ });
42182
42152
  });
42183
- }); };
42153
+ };
42184
42154
  var jumpToLatestMessage = function () { return __awaiter$1(void 0, void 0, void 0, function () {
42185
42155
  var hasMoreOlder;
42186
42156
  return __generator$1(this, function (_a) {
@@ -43408,7 +43378,7 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
43408
43378
 
43409
43379
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
43410
43380
 
43411
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version = '9.4.1';
43381
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version = '9.5.0';
43412
43382
 
43413
43383
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
43414
43384
  var _b, _c;
@@ -47353,10 +47323,11 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
47353
47323
 
47354
47324
  var nimbleEmoji$1 = unwrapExports(nimbleEmoji);
47355
47325
 
47356
- var nimbleEmoji$2 = /*#__PURE__*/Object.freeze({
47326
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};// @ts-expect-error
47327
+
47328
+ var DefaultEmoji = /*#__PURE__*/Object.freeze({
47357
47329
  __proto__: null,
47358
- 'default': nimbleEmoji$1,
47359
- __moduleExports: nimbleEmoji
47330
+ 'default': nimbleEmoji$1
47360
47331
  });
47361
47332
 
47362
47333
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
@@ -49538,10 +49509,11 @@ var StreamChatReact = (function (exports, React, streamChat, reactDom) {
49538
49509
 
49539
49510
  var nimblePicker$1 = unwrapExports(nimblePicker);
49540
49511
 
49541
- var nimblePicker$2 = /*#__PURE__*/Object.freeze({
49512
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};// @ts-expect-error
49513
+
49514
+ var DefaultEmojiPicker = /*#__PURE__*/Object.freeze({
49542
49515
  __proto__: null,
49543
- 'default': nimblePicker$1,
49544
- __moduleExports: nimblePicker
49516
+ 'default': nimblePicker$1
49545
49517
  });
49546
49518
 
49547
49519
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};