stream-chat-react 8.1.1 → 8.1.3

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 (58) hide show
  1. package/dist/browser.full-bundle.js +86 -96
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +4 -4
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +2 -2
  6. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  7. package/dist/components/ChannelPreview/ChannelPreview.js +20 -4
  8. package/dist/components/ChatDown/ChatDown.d.ts +5 -5
  9. package/dist/components/ChatDown/ChatDown.d.ts.map +1 -1
  10. package/dist/components/ChatDown/ChatDown.js +4 -4
  11. package/dist/components/ChatDown/icons.d.ts +2 -0
  12. package/dist/components/ChatDown/icons.d.ts.map +1 -0
  13. package/dist/components/ChatDown/icons.js +7 -0
  14. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  15. package/dist/components/Gallery/Gallery.js +11 -8
  16. package/dist/components/Message/utils.d.ts.map +1 -1
  17. package/dist/components/Message/utils.js +5 -10
  18. package/dist/components/MessageInput/MessageInput.d.ts +2 -1
  19. package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
  20. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
  21. package/dist/components/MessageInput/hooks/useSubmitHandler.js +17 -15
  22. package/dist/components/Thread/Thread.js +50 -10
  23. package/dist/index.cjs.js +79 -54
  24. package/dist/index.cjs.js.map +1 -1
  25. package/dist/stories/{connected-user.stories.d.ts → add-message.stories.d.ts} +1 -1
  26. package/dist/stories/add-message.stories.d.ts.map +1 -0
  27. package/dist/stories/{connected-user.stories.js → add-message.stories.js} +6 -7
  28. package/dist/stories/hello.stories.d.ts.map +1 -1
  29. package/dist/stories/hello.stories.js +11 -35
  30. package/dist/stories/jump-to-message.stories.d.ts +2 -2
  31. package/dist/stories/jump-to-message.stories.d.ts.map +1 -1
  32. package/dist/stories/jump-to-message.stories.js +18 -51
  33. package/dist/stories/mark-read.stories.d.ts.map +1 -1
  34. package/dist/stories/mark-read.stories.js +4 -27
  35. package/dist/stories/navigate-long-message-lists.stories.d.ts +4 -0
  36. package/dist/stories/navigate-long-message-lists.stories.d.ts.map +1 -0
  37. package/dist/stories/navigate-long-message-lists.stories.js +167 -0
  38. package/dist/stories/utils.d.ts +2 -3
  39. package/dist/stories/utils.d.ts.map +1 -1
  40. package/dist/stories/utils.js +14 -14
  41. package/dist/version.d.ts +1 -1
  42. package/dist/version.js +1 -1
  43. package/package.json +7 -5
  44. package/dist/assets/str-chat__alert.svg +0 -1
  45. package/dist/assets/str-chat__connection-error.svg +0 -13
  46. package/dist/assets/str-chat__file-file.svg +0 -20
  47. package/dist/assets/str-chat__icon-chevron-down.svg +0 -1
  48. package/dist/assets/str-chat__icon-search.svg +0 -1
  49. package/dist/assets/str-chat__icon-send.svg +0 -1
  50. package/dist/assets/str-chat__icon-sprite.png +0 -0
  51. package/dist/assets/str-chat__icon-sprite@1x.png +0 -0
  52. package/dist/assets/str-chat__icon-sprite@2x.png +0 -0
  53. package/dist/assets/str-chat__icon-sprite@3x.png +0 -0
  54. package/dist/assets/str-chat__loading-indicator.svg +0 -23
  55. package/dist/assets/str-chat__reactions-sprite@1x.png +0 -0
  56. package/dist/assets/str-chat__reactions-sprite@2x.png +0 -0
  57. package/dist/assets/str-chat__reactions-sprite@3x.png +0 -0
  58. package/dist/stories/connected-user.stories.d.ts.map +0 -1
@@ -5522,7 +5522,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
5522
5522
  var Audio = React__default['default'].memo(UnMemoizedAudio);
5523
5523
 
5524
5524
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
5525
- var dist$2 = createCommonjsModule$1(function (module, exports) {
5525
+ var dist$1 = createCommonjsModule$1(function (module, exports) {
5526
5526
  Object.defineProperty(exports, "__esModule", { value: true });
5527
5527
  exports.sanitizeUrl = void 0;
5528
5528
  var invalidProtocolRegex = /^([^\w]*)(javascript|data|vbscript)/im;
@@ -5562,14 +5562,14 @@ var StreamChatReact = (function (exports, React, streamChat) {
5562
5562
  exports.sanitizeUrl = sanitizeUrl;
5563
5563
  });
5564
5564
 
5565
- unwrapExports(dist$2);
5566
- var dist_1$1 = dist$2.sanitizeUrl;
5565
+ unwrapExports(dist$1);
5566
+ var dist_1 = dist$1.sanitizeUrl;
5567
5567
 
5568
5568
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedSafeAnchor = function (props) {
5569
5569
  var children = props.children, className = props.className, download = props.download, href = props.href, rel = props.rel, target = props.target;
5570
5570
  if (!href)
5571
5571
  return null;
5572
- var sanitized = dist_1$1(href);
5572
+ var sanitized = dist_1(href);
5573
5573
  return (React__default['default'].createElement("a", { "aria-label": 'Attachment', className: className, download: download, href: sanitized, rel: rel, target: target }, children));
5574
5574
  };
5575
5575
  var SafeAnchor = React__default['default'].memo(UnMemoizedSafeAnchor);
@@ -7729,6 +7729,8 @@ var StreamChatReact = (function (exports, React, streamChat) {
7729
7729
  var _a = React.useState(0), index = _a[0], setIndex = _a[1];
7730
7730
  var _b = React.useState(false), modalOpen = _b[0], setModalOpen = _b[1];
7731
7731
  var t = useTranslationContext('Gallery').t;
7732
+ var countImagesDisplayedInPreview = 4;
7733
+ var lastImageIndexInPreview = countImagesDisplayedInPreview - 1;
7732
7734
  var toggleModal = function (selectedIndex) {
7733
7735
  if (modalOpen) {
7734
7736
  setModalOpen(false);
@@ -7745,16 +7747,17 @@ var StreamChatReact = (function (exports, React, streamChat) {
7745
7747
  source: image.image_url || image.thumb_url || '',
7746
7748
  }); });
7747
7749
  }, [images]);
7748
- var renderImages = images.slice(0, 3).map(function (image, i) { return (React__default['default'].createElement("button", { className: 'str-chat__gallery-image', "data-testid": 'gallery-image', key: "gallery-image-" + i, onClick: function () { return toggleModal(i); } },
7749
- React__default['default'].createElement("img", { alt: 'User uploaded content', src: image.image_url || image.thumb_url }))); });
7750
- return (React__default['default'].createElement("div", { className: "str-chat__gallery " + (images.length > 3 ? 'str-chat__gallery--square' : '') },
7751
- renderImages,
7752
- images.length > 3 && (React__default['default'].createElement("button", { className: 'str-chat__gallery-placeholder', onClick: function () { return toggleModal(3); }, style: {
7753
- backgroundImage: "url(" + images[3].image_url + ")",
7750
+ var renderImages = images.slice(0, countImagesDisplayedInPreview).map(function (image, i) {
7751
+ return i === lastImageIndexInPreview && images.length > countImagesDisplayedInPreview ? (React__default['default'].createElement("button", { className: 'str-chat__gallery-placeholder', key: "gallery-image-" + i, onClick: function () { return toggleModal(i); }, style: {
7752
+ backgroundImage: "url(" + images[lastImageIndexInPreview].image_url + ")",
7754
7753
  } },
7755
7754
  React__default['default'].createElement("p", null, t('{{ imageCount }} more', {
7756
- imageCount: images.length - 3,
7757
- })))),
7755
+ imageCount: images.length - countImagesDisplayedInPreview,
7756
+ })))) : (React__default['default'].createElement("button", { className: 'str-chat__gallery-image', "data-testid": 'gallery-image', key: "gallery-image-" + i, onClick: function () { return toggleModal(i); } },
7757
+ React__default['default'].createElement("img", { alt: 'User uploaded content', src: image.image_url || image.thumb_url })));
7758
+ });
7759
+ return (React__default['default'].createElement("div", { className: "str-chat__gallery " + (images.length > lastImageIndexInPreview ? 'str-chat__gallery--square' : '') },
7760
+ renderImages,
7758
7761
  React__default['default'].createElement(ModalComponent, { images: formattedArray, index: index, modalIsOpen: modalOpen, toggleModal: function () { return setModalOpen(!modalOpen); } })));
7759
7762
  };
7760
7763
  /**
@@ -7768,7 +7771,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
7768
7771
  var ImageComponent = function (props) {
7769
7772
  var _a = React.useState(false), modalIsOpen = _a[0], setModalIsOpen = _a[1];
7770
7773
  var fallback = props.fallback, image_url = props.image_url, thumb_url = props.thumb_url;
7771
- var imageSrc = dist_1$1(image_url || thumb_url);
7774
+ var imageSrc = dist_1(image_url || thumb_url);
7772
7775
  var formattedArray = [
7773
7776
  { original: imageSrc, originalAlt: 'User uploaded content', source: imageSrc },
7774
7777
  ];
@@ -19133,7 +19136,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
19133
19136
  var postprocess_1 = postprocess;
19134
19137
 
19135
19138
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
19136
- var dist$1 = fromMarkdown;
19139
+ var dist = fromMarkdown;
19137
19140
 
19138
19141
  // These three are compiled away in the `dist/`
19139
19142
 
@@ -19952,7 +19955,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
19952
19955
  }
19953
19956
 
19954
19957
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
19955
- var mdastUtilFromMarkdown = dist$1;
19958
+ var mdastUtilFromMarkdown = dist;
19956
19959
 
19957
19960
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
19958
19961
  var remarkParse = parse;
@@ -35562,7 +35565,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
35562
35565
  return type;
35563
35566
  }).join() : '') + pinned + reply_count + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
35564
35567
  ? updated_at.toISOString()
35565
- : updated_at || '') + (user === null || user === void 0 ? void 0 : user.image) + (user === null || user === void 0 ? void 0 : user.name);
35568
+ : updated_at || '') + (user === null || user === void 0 ? void 0 : user.updated_at);
35566
35569
  })
35567
35570
  .join();
35568
35571
  var memoizedThreadMessageData = threadMessages
@@ -35573,7 +35576,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
35573
35576
  return type;
35574
35577
  }).join() : '') + pinned + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
35575
35578
  ? updated_at.toISOString()
35576
- : updated_at || '') + (user === null || user === void 0 ? void 0 : user.image) + (user === null || user === void 0 ? void 0 : user.name);
35579
+ : updated_at || '') + (user === null || user === void 0 ? void 0 : user.updated_at);
35577
35580
  })
35578
35581
  .join();
35579
35582
  var channelStateContext = React.useMemo(function () { return ({
@@ -35988,7 +35991,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
35988
35991
  return true;
35989
35992
  };
35990
35993
  var areMessagePropsEqual = function (prevProps, nextProps) {
35991
- var _a, _b, _c, _d, _e, _f, _g, _h;
35994
+ var _a, _b, _c, _d, _e, _f;
35992
35995
  var prevMessage = prevProps.message, prevMessageUI = prevProps.Message;
35993
35996
  var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
35994
35997
  if (prevMessageUI !== nextMessageUI)
@@ -36007,8 +36010,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
36007
36010
  prevMessage.text === nextMessage.text &&
36008
36011
  prevMessage.type === nextMessage.type &&
36009
36012
  prevMessage.updated_at === nextMessage.updated_at &&
36010
- ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.image) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.image) &&
36011
- ((_g = prevMessage.user) === null || _g === void 0 ? void 0 : _g.name) === ((_h = nextMessage.user) === null || _h === void 0 ? void 0 : _h.name);
36013
+ ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at);
36012
36014
  if (!messagesAreEqual)
36013
36015
  return false;
36014
36016
  var deepEqualProps = reactFastCompare(nextProps.readBy, prevProps.readBy) &&
@@ -36022,7 +36024,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
36022
36024
  );
36023
36025
  };
36024
36026
  var areMessageUIPropsEqual = function (prevProps, nextProps) {
36025
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
36027
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
36026
36028
  var prevLastReceivedId = prevProps.lastReceivedId, prevMessage = prevProps.message;
36027
36029
  var nextLastReceivedId = nextProps.lastReceivedId, nextMessage = nextProps.message;
36028
36030
  if (prevProps.editing !== nextProps.editing)
@@ -36042,7 +36044,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
36042
36044
  prevLastReceivedId !== nextLastReceivedId) {
36043
36045
  return false;
36044
36046
  }
36045
- var messagesAreEqual = prevMessage.deleted_at === nextMessage.deleted_at &&
36047
+ return (prevMessage.deleted_at === nextMessage.deleted_at &&
36046
36048
  ((_e = prevMessage.latest_reactions) === null || _e === void 0 ? void 0 : _e.length) === ((_f = nextMessage.latest_reactions) === null || _f === void 0 ? void 0 : _f.length) &&
36047
36049
  ((_g = prevMessage.own_reactions) === null || _g === void 0 ? void 0 : _g.length) === ((_h = nextMessage.own_reactions) === null || _h === void 0 ? void 0 : _h.length) &&
36048
36050
  prevMessage.pinned === nextMessage.pinned &&
@@ -36051,11 +36053,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
36051
36053
  prevMessage.text === nextMessage.text &&
36052
36054
  prevMessage.type === nextMessage.type &&
36053
36055
  prevMessage.updated_at === nextMessage.updated_at &&
36054
- ((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.image) === ((_k = nextMessage.user) === null || _k === void 0 ? void 0 : _k.image) &&
36055
- ((_l = prevMessage.user) === null || _l === void 0 ? void 0 : _l.name) === ((_m = nextMessage.user) === null || _m === void 0 ? void 0 : _m.name);
36056
- if (!messagesAreEqual)
36057
- return false;
36058
- return true;
36056
+ ((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.updated_at) === ((_k = nextMessage.user) === null || _k === void 0 ? void 0 : _k.updated_at));
36059
36057
  };
36060
36058
  var messageHasReactions = function (message) { return !!(message === null || message === void 0 ? void 0 : message.latest_reactions) && !!message.latest_reactions.length; };
36061
36059
  var messageHasAttachments = function (message) { return !!(message === null || message === void 0 ? void 0 : message.attachments) && !!message.attachments.length; };
@@ -38986,25 +38984,27 @@ var StreamChatReact = (function (exports, React, streamChat) {
38986
38984
  _a.sent();
38987
38985
  addNotification(t('Edit message request failed'), 'error');
38988
38986
  return [3 /*break*/, 4];
38989
- case 4: return [3 /*break*/, 12];
38987
+ case 4: return [3 /*break*/, 13];
38990
38988
  case 5:
38991
- _a.trys.push([5, 11, , 12]);
38989
+ _a.trys.push([5, 12, , 13]);
38992
38990
  dispatch({ type: 'clear' });
38993
- if (!overrideSubmitHandler) return [3 /*break*/, 6];
38994
- overrideSubmitHandler(__assign$2(__assign$2({}, updatedMessage), { parent: parent }), channel.cid);
38995
- return [3 /*break*/, 8];
38996
- case 6: return [4 /*yield*/, sendMessage(__assign$2(__assign$2({}, updatedMessage), { parent: parent }), customMessageData)];
38997
- case 7:
38991
+ if (!overrideSubmitHandler) return [3 /*break*/, 7];
38992
+ return [4 /*yield*/, overrideSubmitHandler(__assign$2(__assign$2({}, updatedMessage), { parent: parent }), channel.cid, customMessageData)];
38993
+ case 6:
38998
38994
  _a.sent();
38999
- _a.label = 8;
38995
+ return [3 /*break*/, 9];
38996
+ case 7: return [4 /*yield*/, sendMessage(__assign$2(__assign$2({}, updatedMessage), { parent: parent }), customMessageData)];
39000
38997
  case 8:
39001
- if (!publishTypingEvent) return [3 /*break*/, 10];
39002
- return [4 /*yield*/, channel.stopTyping()];
38998
+ _a.sent();
38999
+ _a.label = 9;
39003
39000
  case 9:
39001
+ if (!publishTypingEvent) return [3 /*break*/, 11];
39002
+ return [4 /*yield*/, channel.stopTyping()];
39003
+ case 10:
39004
39004
  _a.sent();
39005
- _a.label = 10;
39006
- case 10: return [3 /*break*/, 12];
39007
- case 11:
39005
+ _a.label = 11;
39006
+ case 11: return [3 /*break*/, 13];
39007
+ case 12:
39008
39008
  _a.sent();
39009
39009
  dispatch({
39010
39010
  getNewText: function () { return text; },
@@ -39016,8 +39016,8 @@ var StreamChatReact = (function (exports, React, streamChat) {
39016
39016
  });
39017
39017
  }
39018
39018
  addNotification(t('Send message request failed'), 'error');
39019
- return [3 /*break*/, 12];
39020
- case 12: return [2 /*return*/];
39019
+ return [3 /*break*/, 13];
39020
+ case 13: return [2 /*return*/];
39021
39021
  }
39022
39022
  });
39023
39023
  }); };
@@ -40478,15 +40478,20 @@ var StreamChatReact = (function (exports, React, streamChat) {
40478
40478
 
40479
40479
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
40480
40480
 
40481
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var img = "data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e%3csvg width='78px' height='78px' viewBox='0 0 78 78' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3c!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch --%3e %3ctitle%3eCombined Shape%3c/title%3e %3cdesc%3eCreated with Sketch.%3c/desc%3e %3cg id='Interactions' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cg id='Connection-Error-_-Connectivity' transform='translate(-270.000000%2c -30.000000)' fill='%23CF1F25'%3e %3cg id='109-network-connection' transform='translate(270.000000%2c 30.000000)'%3e %3cpath d='M66.4609744%2c11.414231 C81.6225232%2c26.5757798 81.6225232%2c51.157545 66.4609744%2c66.3188467 C51.2994256%2c81.4803954 26.7176604%2c81.4803954 11.5563587%2c66.3188467 C-3.60519004%2c51.1572979 -3.60519004%2c26.5755327 11.5563587%2c11.414231 C26.7179075%2c-3.74731776 51.2996727%2c-3.74731776 66.4609744%2c11.414231 Z M54.7853215%2c45.8823776 L54.7853215%2c40.5882574 C54.7853215%2c39.613638 53.9952341%2c38.8235506 53.0206147%2c38.8235506 L44.9576695%2c38.8235506 L41.428256%2c42.3529641 L51.255555%2c42.3529641 L51.255555%2c45.8823776 L54.7853215%2c45.8823776 Z M40.6659027%2c43.1153174 L37.8988425%2c45.8823776 L40.6659027%2c45.8823776 L40.6659027%2c43.1153174 Z M51.1764962%2c56.4702653 L58.2353232%2c56.4702653 C59.2099355%2c56.4702653 60.00003%2c55.6801708 60.00003%2c54.7055585 L60.00003%2c51.176145 C60.00003%2c50.2015327 59.2099355%2c49.4114382 58.2353232%2c49.4114382 L51.1764962%2c49.4114382 C50.2018839%2c49.4114382 49.4117894%2c50.2015327 49.4117894%2c51.176145 L49.4117894%2c54.7055585 C49.4117894%2c55.6801708 50.2018839%2c56.4702653 51.1764962%2c56.4702653 Z M35.2941353%2c56.4702653 L42.3529624%2c56.4702653 C43.3275746%2c56.4702653 44.1176691%2c55.6801708 44.1176691%2c54.7055585 L44.1176691%2c51.176145 C44.1176691%2c50.2015327 43.3275746%2c49.4114382 42.3529624%2c49.4114382 L35.2941353%2c49.4114382 C34.319523%2c49.4114382 33.5294285%2c50.2015327 33.5294285%2c51.176145 L33.5294285%2c54.7055585 C33.5294285%2c55.6801708 34.319523%2c56.4702653 35.2941353%2c56.4702653 Z M56.6964989%2c19.0874231 C56.007381%2c18.3985134 54.8903216%2c18.3985134 54.2012036%2c19.087423 L45.882376%2c27.4062507 L45.882376%2c19.4117761 C45.882376%2c18.4371568 45.0922885%2c17.6470693 44.1176692%2c17.6470693 L33.5294286%2c17.6470693 C32.5548092%2c17.6470694 31.7647218%2c18.4371568 31.7647218%2c19.4117761 L31.7647218%2c30.0000167 C31.7647219%2c30.9746363 32.5548092%2c31.7647237 33.5294285%2c31.7647237 L41.5239031%2c31.7647237 L34.4650761%2c38.8235508 L24.7058947%2c38.8235508 C23.7312753%2c38.8235508 22.9411879%2c39.6136382 22.9411879%2c40.5882575 L22.9411879%2c45.8823778 L26.4706014%2c45.8823778 L26.4706014%2c42.3529643 L30.9356624%2c42.3529643 L23.8768354%2c49.4117914 L19.4117743%2c49.4117914 C18.4371549%2c49.4117914 17.6470675%2c50.2018788 17.6470675%2c51.1764981 L17.6470675%2c54.7059117 C17.6504049%2c54.9674302 17.7129076%2c55.2248042 17.8298886%2c55.4587302 L16.4456526%2c56.8429662 C15.7446193%2c57.5200453 15.7252005%2c58.6372282 16.4022825%2c59.3382615 C17.0793616%2c60.0392948 18.1965445%2c60.0587136 18.8975778%2c59.3816316 C18.9122847%2c59.3674273 18.9267436%2c59.3529684 18.940948%2c59.3382615 L56.6964963%2c21.5830662 C57.3856425%2c20.8939094 57.3856425%2c19.7765747 56.6964963%2c19.0874179 Z' id='Combined-Shape'%3e%3c/path%3e %3c/g%3e %3c/g%3e %3c/g%3e%3c/svg%3e";
40481
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var ConnectionErrorIcon = function () { return (React__default['default'].createElement("svg", { height: '78px', version: '1.1', viewBox: '0 0 78 78', width: '78px', xmlns: 'http://www.w3.org/2000/svg' },
40482
+ React__default['default'].createElement("title", null, "Connection Error"),
40483
+ React__default['default'].createElement("g", { fill: 'none', fillRule: 'evenodd', id: 'Interactions', stroke: 'none', strokeWidth: '1' },
40484
+ React__default['default'].createElement("g", { fill: '#CF1F25', id: 'Connection-Error-_-Connectivity', transform: 'translate(-270.000000, -30.000000)' },
40485
+ React__default['default'].createElement("g", { id: '109-network-connection', transform: 'translate(270.000000, 30.000000)' },
40486
+ React__default['default'].createElement("path", { d: 'M66.4609744,11.414231 C81.6225232,26.5757798 81.6225232,51.157545 66.4609744,66.3188467 C51.2994256,81.4803954 26.7176604,81.4803954 11.5563587,66.3188467 C-3.60519004,51.1572979 -3.60519004,26.5755327 11.5563587,11.414231 C26.7179075,-3.74731776 51.2996727,-3.74731776 66.4609744,11.414231 Z M54.7853215,45.8823776 L54.7853215,40.5882574 C54.7853215,39.613638 53.9952341,38.8235506 53.0206147,38.8235506 L44.9576695,38.8235506 L41.428256,42.3529641 L51.255555,42.3529641 L51.255555,45.8823776 L54.7853215,45.8823776 Z M40.6659027,43.1153174 L37.8988425,45.8823776 L40.6659027,45.8823776 L40.6659027,43.1153174 Z M51.1764962,56.4702653 L58.2353232,56.4702653 C59.2099355,56.4702653 60.00003,55.6801708 60.00003,54.7055585 L60.00003,51.176145 C60.00003,50.2015327 59.2099355,49.4114382 58.2353232,49.4114382 L51.1764962,49.4114382 C50.2018839,49.4114382 49.4117894,50.2015327 49.4117894,51.176145 L49.4117894,54.7055585 C49.4117894,55.6801708 50.2018839,56.4702653 51.1764962,56.4702653 Z M35.2941353,56.4702653 L42.3529624,56.4702653 C43.3275746,56.4702653 44.1176691,55.6801708 44.1176691,54.7055585 L44.1176691,51.176145 C44.1176691,50.2015327 43.3275746,49.4114382 42.3529624,49.4114382 L35.2941353,49.4114382 C34.319523,49.4114382 33.5294285,50.2015327 33.5294285,51.176145 L33.5294285,54.7055585 C33.5294285,55.6801708 34.319523,56.4702653 35.2941353,56.4702653 Z M56.6964989,19.0874231 C56.007381,18.3985134 54.8903216,18.3985134 54.2012036,19.087423 L45.882376,27.4062507 L45.882376,19.4117761 C45.882376,18.4371568 45.0922885,17.6470693 44.1176692,17.6470693 L33.5294286,17.6470693 C32.5548092,17.6470694 31.7647218,18.4371568 31.7647218,19.4117761 L31.7647218,30.0000167 C31.7647219,30.9746363 32.5548092,31.7647237 33.5294285,31.7647237 L41.5239031,31.7647237 L34.4650761,38.8235508 L24.7058947,38.8235508 C23.7312753,38.8235508 22.9411879,39.6136382 22.9411879,40.5882575 L22.9411879,45.8823778 L26.4706014,45.8823778 L26.4706014,42.3529643 L30.9356624,42.3529643 L23.8768354,49.4117914 L19.4117743,49.4117914 C18.4371549,49.4117914 17.6470675,50.2018788 17.6470675,51.1764981 L17.6470675,54.7059117 C17.6504049,54.9674302 17.7129076,55.2248042 17.8298886,55.4587302 L16.4456526,56.8429662 C15.7446193,57.5200453 15.7252005,58.6372282 16.4022825,59.3382615 C17.0793616,60.0392948 18.1965445,60.0587136 18.8975778,59.3816316 C18.9122847,59.3674273 18.9267436,59.3529684 18.940948,59.3382615 L56.6964963,21.5830662 C57.3856425,20.8939094 57.3856425,19.7765747 56.6964963,19.0874179 Z', id: 'Combined-Shape' })))))); };
40482
40487
 
40483
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedChatDown = function (props) {
40484
- var image = props.image, text = props.text, _a = props.type, type = _a === void 0 ? 'Error' : _a;
40488
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedChatDown = function (_a) {
40489
+ var _b = _a.image, image = _b === void 0 ? React__default['default'].createElement(ConnectionErrorIcon, null) : _b, text = _a.text, _c = _a.type, type = _c === void 0 ? 'Error' : _c;
40485
40490
  var t = useTranslationContext('ChatDown').t;
40486
40491
  return (React__default['default'].createElement("div", { className: 'str-chat__down' },
40487
40492
  React__default['default'].createElement(LoadingChannels, null),
40488
40493
  React__default['default'].createElement("div", { className: 'str-chat__down-main' },
40489
- React__default['default'].createElement("img", { alt: 'Connection error', "data-testid": 'chatdown-img', src: image || img }),
40494
+ typeof image === 'string' ? (React__default['default'].createElement("img", { alt: 'Connection error', "data-testid": 'chatdown-img', src: image })) : (image),
40490
40495
  React__default['default'].createElement("h1", null, type),
40491
40496
  React__default['default'].createElement("h3", { "aria-live": 'assertive' }, text || t('Error connecting to chat, refresh the page to try again.')))));
40492
40497
  };
@@ -40982,8 +40987,10 @@ var StreamChatReact = (function (exports, React, streamChat) {
40982
40987
  var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a, channelUpdateCount = props.channelUpdateCount;
40983
40988
  var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
40984
40989
  var _c = useTranslationContext('ChannelPreview'), t = _c.t, userLanguage = _c.userLanguage;
40985
- var _d = React.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _d[0], setLastMessage = _d[1];
40986
- var _e = React.useState(0), unread = _e[0], setUnread = _e[1];
40990
+ var _d = React.useState(getDisplayTitle(channel, client.user)), displayTitle = _d[0], setDisplayTitle = _d[1];
40991
+ var _e = React.useState(getDisplayImage(channel, client.user)), displayImage = _e[0], setDisplayImage = _e[1];
40992
+ var _f = React.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _f[0], setLastMessage = _f[1];
40993
+ var _g = React.useState(0), unread = _g[0], setUnread = _g[1];
40987
40994
  var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
40988
40995
  var muted = useIsChannelMuted(channel).muted;
40989
40996
  React.useEffect(function () {
@@ -41020,10 +41027,24 @@ var StreamChatReact = (function (exports, React, streamChat) {
41020
41027
  channel.off('message.deleted', handleEvent);
41021
41028
  };
41022
41029
  }, [refreshUnreadCount, channelUpdateCount]);
41030
+ React.useEffect(function () {
41031
+ var handleEvent = function () {
41032
+ setDisplayTitle(function (displayTitle) {
41033
+ var newDisplayTitle = getDisplayTitle(channel, client.user);
41034
+ return displayTitle !== newDisplayTitle ? newDisplayTitle : displayTitle;
41035
+ });
41036
+ setDisplayImage(function (displayImage) {
41037
+ var newDisplayImage = getDisplayImage(channel, client.user);
41038
+ return displayImage !== newDisplayImage ? newDisplayImage : displayImage;
41039
+ });
41040
+ };
41041
+ client.on('user.updated', handleEvent);
41042
+ return function () {
41043
+ client.off('user.updated', handleEvent);
41044
+ };
41045
+ }, []);
41023
41046
  if (!Preview)
41024
41047
  return null;
41025
- var displayImage = getDisplayImage(channel, client.user);
41026
- var displayTitle = getDisplayTitle(channel, client.user);
41027
41048
  var latestMessage = getLatestMessagePreview(channel, t, userLanguage);
41028
41049
  return (React__default['default'].createElement(Preview, __assign$2({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, setActiveChannel: setActiveChannel, unread: unread })));
41029
41050
  };
@@ -44946,7 +44967,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
44946
44967
 
44947
44968
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
44948
44969
 
44949
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version = '8.1.1';
44970
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version = '8.1.3';
44950
44971
 
44951
44972
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
44952
44973
  var _b, _c;
@@ -47910,7 +47931,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
47910
47931
  var ThreadInner = function (props) {
47911
47932
  var additionalMessageInputProps = props.additionalMessageInputProps, additionalMessageListProps = props.additionalMessageListProps, additionalParentMessageProps = props.additionalParentMessageProps, additionalVirtualizedMessageListProps = props.additionalVirtualizedMessageListProps, _a = props.autoFocus, autoFocus = _a === void 0 ? true : _a, _b = props.enableDateSeparator, enableDateSeparator = _b === void 0 ? false : _b, _c = props.fullWidth, fullWidth = _c === void 0 ? false : _c, PropInput = props.Input, PropMessage = props.Message, virtualized = props.virtualized;
47912
47933
  var _d = useChannelStateContext('Thread'), thread = _d.thread, threadHasMore = _d.threadHasMore, threadLoadingMore = _d.threadLoadingMore, threadMessages = _d.threadMessages;
47913
- var _e = useChannelActionContext('Thread'), closeThread = _e.closeThread, loadMoreThread = _e.loadMoreThread;
47934
+ var _e = useChannelActionContext('Thread'), closeThread = _e.closeThread, loadMoreThread = _e.loadMoreThread, sendMessage = _e.sendMessage;
47914
47935
  var customClasses = useChatContext('Thread').customClasses;
47915
47936
  var _f = useComponentContext('Thread'), ContextInput = _f.ThreadInput, ContextMessage = _f.Message, _g = _f.ThreadHeader, ThreadHeader = _g === void 0 ? DefaultThreadHeader : _g, _h = _f.ThreadStart, ThreadStart = _h === void 0 ? DefaultThreadStart : _h, _j = _f.VirtualMessage, VirtualMessage = _j === void 0 ? FixedHeightMessage : _j;
47916
47937
  var messageList = React.useRef(null);
@@ -47923,15 +47944,19 @@ var StreamChatReact = (function (exports, React, streamChat) {
47923
47944
  loadMoreThread();
47924
47945
  }
47925
47946
  }, []);
47926
- React.useEffect(function () {
47927
- if (messageList.current && (threadMessages === null || threadMessages === void 0 ? void 0 : threadMessages.length)) {
47928
- var _a = messageList.current, clientHeight = _a.clientHeight, scrollHeight = _a.scrollHeight, scrollTop = _a.scrollTop;
47929
- var scrollDown = clientHeight + scrollTop !== scrollHeight;
47930
- if (scrollDown) {
47931
- messageList.current.scrollTop = scrollHeight - clientHeight;
47947
+ var threadSubmitHandler = function (message, _, customMessageData) { return __awaiter$1(void 0, void 0, void 0, function () {
47948
+ return __generator$1(this, function (_a) {
47949
+ switch (_a.label) {
47950
+ case 0: return [4 /*yield*/, sendMessage(message, customMessageData)];
47951
+ case 1:
47952
+ _a.sent();
47953
+ if (messageList.current) {
47954
+ messageList.current.scrollTop = messageList.current.scrollHeight;
47955
+ }
47956
+ return [2 /*return*/];
47932
47957
  }
47933
- }
47934
- }, [threadMessages === null || threadMessages === void 0 ? void 0 : threadMessages.length]);
47958
+ });
47959
+ }); };
47935
47960
  if (!thread)
47936
47961
  return null;
47937
47962
  var threadClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.thread) || 'str-chat__thread';
@@ -47941,7 +47966,7 @@ var StreamChatReact = (function (exports, React, streamChat) {
47941
47966
  React__default['default'].createElement(Message, __assign$2({ initialMessage: true, message: thread, Message: ThreadMessage || FallbackMessage, threadList: true }, additionalParentMessageProps)),
47942
47967
  React__default['default'].createElement(ThreadStart, null),
47943
47968
  React__default['default'].createElement(ThreadMessageList, __assign$2({ disableDateSeparator: !enableDateSeparator, hasMore: threadHasMore, loadingMore: threadLoadingMore, loadMore: loadMoreThread, Message: ThreadMessage || FallbackMessage, messages: threadMessages || [], threadList: true }, (virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps)))),
47944
- React__default['default'].createElement(MessageInput, __assign$2({ focus: autoFocus, Input: ThreadInput, parent: thread, publishTypingEvent: false }, additionalMessageInputProps))));
47969
+ React__default['default'].createElement(MessageInput, __assign$2({ focus: autoFocus, Input: ThreadInput, overrideSubmitHandler: threadSubmitHandler, parent: thread, publishTypingEvent: false }, additionalMessageInputProps))));
47945
47970
  };
47946
47971
 
47947
47972
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
@@ -52626,41 +52651,6 @@ var StreamChatReact = (function (exports, React, streamChat) {
52626
52651
 
52627
52652
  var src = parseXml;
52628
52653
 
52629
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
52630
- var dist = createCommonjsModule$1(function (module, exports) {
52631
- Object.defineProperty(exports, "__esModule", { value: true });
52632
- exports.sanitizeUrl = void 0;
52633
- var invalidProtocolRegex = /^(%20|\s)*(javascript|data|vbscript)/im;
52634
- var ctrlCharactersRegex = /[^\x20-\x7EÀ-ž]/gim;
52635
- var urlSchemeRegex = /^([^:]+):/gm;
52636
- var relativeFirstCharacters = [".", "/"];
52637
- function isRelativeUrlWithoutProtocol(url) {
52638
- return relativeFirstCharacters.indexOf(url[0]) > -1;
52639
- }
52640
- function sanitizeUrl(url) {
52641
- if (!url) {
52642
- return "about:blank";
52643
- }
52644
- var sanitizedUrl = url.replace(ctrlCharactersRegex, "").trim();
52645
- if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {
52646
- return sanitizedUrl;
52647
- }
52648
- var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);
52649
- if (!urlSchemeParseResults) {
52650
- return sanitizedUrl;
52651
- }
52652
- var urlScheme = urlSchemeParseResults[0];
52653
- if (invalidProtocolRegex.test(urlScheme)) {
52654
- return "about:blank";
52655
- }
52656
- return sanitizedUrl;
52657
- }
52658
- exports.sanitizeUrl = sanitizeUrl;
52659
- });
52660
-
52661
- unwrapExports(dist);
52662
- var dist_1 = dist.sanitizeUrl;
52663
-
52664
52654
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
52665
52655
  var ical = createCommonjsModule$1(function (module) {
52666
52656
  /* This Source Code Form is subject to the terms of the Mozilla Public