stream-chat-react 10.5.0 → 10.7.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 (41) hide show
  1. package/dist/browser.full-bundle.js +93 -71
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +5 -5
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Attachment/Attachment.d.ts +4 -1
  6. package/dist/components/Attachment/Attachment.d.ts.map +1 -1
  7. package/dist/components/Attachment/Attachment.js +20 -18
  8. package/dist/components/Attachment/AttachmentContainer.d.ts +1 -0
  9. package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -1
  10. package/dist/components/Attachment/AttachmentContainer.js +6 -0
  11. package/dist/components/Attachment/UnsupportedAttachment.d.ts +8 -0
  12. package/dist/components/Attachment/UnsupportedAttachment.d.ts.map +1 -0
  13. package/dist/components/Attachment/UnsupportedAttachment.js +12 -0
  14. package/dist/components/Attachment/index.d.ts +1 -0
  15. package/dist/components/Attachment/index.d.ts.map +1 -1
  16. package/dist/components/Attachment/index.js +1 -0
  17. package/dist/components/Channel/Channel.js +2 -2
  18. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  19. package/dist/components/Gallery/Gallery.js +2 -1
  20. package/dist/components/MessageList/ConnectionStatus.d.ts.map +1 -1
  21. package/dist/components/MessageList/ConnectionStatus.js +1 -1
  22. package/dist/components/MessageList/CustomNotification.d.ts +1 -0
  23. package/dist/components/MessageList/CustomNotification.d.ts.map +1 -1
  24. package/dist/components/MessageList/CustomNotification.js +3 -2
  25. package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +1 -1
  26. package/dist/components/MessageList/hooks/useMessageListElements.js +1 -4
  27. package/dist/components/Thread/Thread.d.ts +1 -1
  28. package/dist/components/Thread/Thread.d.ts.map +1 -1
  29. package/dist/components/Thread/ThreadHeader.d.ts +1 -1
  30. package/dist/components/Thread/ThreadHeader.d.ts.map +1 -1
  31. package/dist/components/Thread/ThreadHeader.js +1 -1
  32. package/dist/components/Window/Window.d.ts +1 -1
  33. package/dist/components/Window/Window.d.ts.map +1 -1
  34. package/dist/components/Window/Window.js +6 -3
  35. package/dist/context/ChannelActionContext.d.ts +2 -2
  36. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  37. package/dist/index.cjs.js +54 -32
  38. package/dist/index.cjs.js.map +1 -1
  39. package/dist/version.d.ts +1 -1
  40. package/dist/version.js +1 -1
  41. package/package.json +2 -2
package/dist/index.cjs.js CHANGED
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var sanitizeUrl = require('@braintree/sanitize-url');
7
6
  var ReactPlayer = require('react-player');
8
7
  var prettybytes = require('pretty-bytes');
8
+ var sanitizeUrl = require('@braintree/sanitize-url');
9
9
  var DefaultEmojiIndex = require('emoji-mart/dist/utils/emoji-index/nimble-emoji-index.js');
10
10
  var Dayjs = require('dayjs');
11
11
  var calendar = require('dayjs/plugin/calendar');
@@ -1384,7 +1384,7 @@ var UnMemoizedGallery = function (props) {
1384
1384
  React__default["default"].createElement("p", null, t('{{ imageCount }} more', {
1385
1385
  imageCount: images.length - countImagesDisplayedInPreview,
1386
1386
  })))) : (React__default["default"].createElement("button", { className: 'str-chat__gallery-image', "data-testid": 'gallery-image', key: "gallery-image-".concat(i), onClick: function () { return toggleModal(i); } },
1387
- React__default["default"].createElement("img", __assign({ alt: 'User uploaded content', src: image.previewUrl || image.image_url || image.thumb_url, style: image.style }, ((innerRefs === null || innerRefs === void 0 ? void 0 : innerRefs.current) && { ref: function (r) { return (innerRefs.current[i] = r); } })))));
1387
+ React__default["default"].createElement("img", __assign({ alt: 'User uploaded content', src: sanitizeUrl.sanitizeUrl(image.previewUrl || image.image_url || image.thumb_url), style: image.style }, ((innerRefs === null || innerRefs === void 0 ? void 0 : innerRefs.current) && { ref: function (r) { return (innerRefs.current[i] = r); } })))));
1388
1388
  });
1389
1389
  var className = clsx('str-chat__gallery', {
1390
1390
  'str-chat__gallery--square': images.length > lastImageIndexInPreview,
@@ -1715,6 +1715,18 @@ var renderMedia = function (props) {
1715
1715
  });
1716
1716
  };
1717
1717
 
1718
+ var UnsupportedAttachment = function (_a) {
1719
+ var _b;
1720
+ var attachment = _a.attachment;
1721
+ return (React__default["default"].createElement("div", null,
1722
+ React__default["default"].createElement("div", null,
1723
+ "Unsupported attachment type ",
1724
+ React__default["default"].createElement("strong", null, (_b = attachment.type) !== null && _b !== void 0 ? _b : 'unknown')),
1725
+ React__default["default"].createElement("code", null, JSON.stringify(attachment, null, 4)),
1726
+ ";"));
1727
+ };
1728
+ var NullComponent = function () { return null; };
1729
+
1718
1730
  var AttachmentWithinContainer = function (_a) {
1719
1731
  var _b;
1720
1732
  var _c;
@@ -1852,12 +1864,18 @@ var MediaContainer = function (props) {
1852
1864
  content,
1853
1865
  React__default["default"].createElement(AttachmentActionsContainer, __assign({}, props))))) : (React__default["default"].createElement(AttachmentWithinContainer, { attachment: attachment, componentType: componentType }, content));
1854
1866
  };
1867
+ var UnsupportedAttachmentContainer = function (_a) {
1868
+ var attachment = _a.attachment, _b = _a.UnsupportedAttachment, UnsupportedAttachment = _b === void 0 ? NullComponent : _b;
1869
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1870
+ React__default["default"].createElement(UnsupportedAttachment, { attachment: attachment })));
1871
+ };
1855
1872
 
1856
1873
  var CONTAINER_MAP = {
1857
1874
  audio: AudioContainer,
1858
1875
  card: CardContainer,
1859
1876
  file: FileContainer,
1860
1877
  media: MediaContainer,
1878
+ unsupported: UnsupportedAttachmentContainer,
1861
1879
  };
1862
1880
  var ATTACHMENT_GROUPS_ORDER = [
1863
1881
  'card',
@@ -1866,6 +1884,7 @@ var ATTACHMENT_GROUPS_ORDER = [
1866
1884
  'media',
1867
1885
  'audio',
1868
1886
  'file',
1887
+ 'unsupported',
1869
1888
  ];
1870
1889
  /**
1871
1890
  * A component used for rendering message attachments. By default, the component supports: AttachmentActions, Audio, Card, File, Gallery, Image, and Video
@@ -1877,26 +1896,27 @@ var Attachment = function (props) {
1877
1896
  };
1878
1897
  var renderGroupedAttachments = function (_a) {
1879
1898
  var attachments = _a.attachments, rest = __rest(_a, ["attachments"]);
1880
- var uploadedImages = [];
1881
- var containers = attachments.reduce(function (acc, attachment) {
1882
- if (isUploadedImage(attachment)) {
1883
- uploadedImages.push(__assign(__assign({}, attachment), { image_url: sanitizeUrl.sanitizeUrl(attachment.image_url), thumb_url: sanitizeUrl.sanitizeUrl(attachment.thumb_url) }));
1884
- }
1885
- else {
1886
- var attachmentType = getAttachmentType(attachment);
1887
- if (attachmentType) {
1888
- var Container = CONTAINER_MAP[attachmentType];
1889
- acc[attachmentType].push(React__default["default"].createElement(Container, __assign({ key: "".concat(attachmentType, "-").concat(acc[attachmentType].length) }, rest, { attachment: attachment })));
1890
- }
1891
- }
1892
- return acc;
1899
+ var uploadedImages = attachments.filter(function (attachment) {
1900
+ return isUploadedImage(attachment);
1901
+ });
1902
+ var containers = attachments
1903
+ .filter(function (attachment) { return !isUploadedImage(attachment); })
1904
+ .reduce(function (typeMap, attachment) {
1905
+ var attachmentType = getAttachmentType(attachment);
1906
+ var Container = CONTAINER_MAP[attachmentType];
1907
+ typeMap[attachmentType].push(React__default["default"].createElement(Container, __assign({ key: "".concat(attachmentType, "-").concat(typeMap[attachmentType].length) }, rest, { attachment: attachment })));
1908
+ return typeMap;
1893
1909
  }, {
1894
1910
  audio: [],
1895
1911
  card: [],
1896
1912
  file: [],
1897
- gallery: [],
1898
- image: [],
1899
1913
  media: [],
1914
+ unsupported: [],
1915
+ // not used in reduce
1916
+ // eslint-disable-next-line sort-keys
1917
+ image: [],
1918
+ // eslint-disable-next-line sort-keys
1919
+ gallery: [],
1900
1920
  });
1901
1921
  if (uploadedImages.length > 1) {
1902
1922
  containers['gallery'] = [
@@ -1926,7 +1946,7 @@ var getAttachmentType = function (attachment) {
1926
1946
  else if (isFileAttachment(attachment)) {
1927
1947
  return 'file';
1928
1948
  }
1929
- return null;
1949
+ return 'unsupported';
1930
1950
  };
1931
1951
 
1932
1952
  var Item = /*#__PURE__*/React__default["default"].forwardRef(function Item(props, innerRef) {
@@ -32446,7 +32466,7 @@ var ChannelInner = function (props) {
32446
32466
  };
32447
32467
  /** THREAD */
32448
32468
  var openThread = function (message, event) {
32449
- event.preventDefault();
32469
+ event === null || event === void 0 ? void 0 : event.preventDefault();
32450
32470
  setQuotedMessage(function (current) {
32451
32471
  if ((current === null || current === void 0 ? void 0 : current.parent_id) !== (message === null || message === void 0 ? void 0 : message.parent_id)) {
32452
32472
  return undefined;
@@ -32458,7 +32478,7 @@ var ChannelInner = function (props) {
32458
32478
  dispatch({ channel: channel, message: message, type: 'openThread' });
32459
32479
  };
32460
32480
  var closeThread = function (event) {
32461
- event.preventDefault();
32481
+ event === null || event === void 0 ? void 0 : event.preventDefault();
32462
32482
  dispatch({ type: 'closeThread' });
32463
32483
  };
32464
32484
  var loadMoreThreadFinished = debounce__default["default"](function (threadHasMore, threadMessages) {
@@ -33778,7 +33798,7 @@ var UnMemoizedChannelList = function (props) {
33778
33798
  */
33779
33799
  var ChannelList = React__default["default"].memo(UnMemoizedChannelList);
33780
33800
 
33781
- var version = '10.5.0';
33801
+ var version = '10.7.0';
33782
33802
 
33783
33803
  var useChat = function (_a) {
33784
33804
  var _b, _c;
@@ -34784,10 +34804,10 @@ var Message = function (props) {
34784
34804
  };
34785
34805
 
34786
34806
  var UnMemoizedCustomNotification = function (props) {
34787
- var active = props.active, children = props.children, type = props.type;
34807
+ var active = props.active, children = props.children, className = props.className, type = props.type;
34788
34808
  if (!active)
34789
34809
  return null;
34790
- return (React__default["default"].createElement("div", { "aria-live": 'polite', className: "str-chat__custom-notification notification-".concat(type, " str-chat__notification"), "data-testid": 'custom-notification' }, children));
34810
+ return (React__default["default"].createElement("div", { "aria-live": 'polite', className: clsx("str-chat__custom-notification notification-".concat(type), "str-chat__notification", className), "data-testid": 'custom-notification' }, children));
34791
34811
  };
34792
34812
  var CustomNotification = React__default["default"].memo(UnMemoizedCustomNotification);
34793
34813
 
@@ -34805,7 +34825,7 @@ var UnMemoizedConnectionStatus = function () {
34805
34825
  client.on('connection.changed', connectionChanged);
34806
34826
  return function () { return client.off('connection.changed', connectionChanged); };
34807
34827
  }, [client, online]);
34808
- return (React__default["default"].createElement(CustomNotification, { active: !online, type: 'error' }, t('Connection failure, reconnecting now...')));
34828
+ return (React__default["default"].createElement(CustomNotification, { active: !online, className: 'str-chat__connection-status-notification', type: 'error' }, t('Connection failure, reconnecting now...')));
34809
34829
  };
34810
34830
  var ConnectionStatus = React__default["default"].memo(UnMemoizedConnectionStatus);
34811
34831
 
@@ -34870,7 +34890,6 @@ var useMessageListElements = function (props) {
34870
34890
  var lastReceivedId = React.useMemo(function () { return getLastReceived(enrichedMessages); }, [enrichedMessages]);
34871
34891
  var elements = React.useMemo(function () {
34872
34892
  return enrichedMessages.map(function (message) {
34873
- var _a;
34874
34893
  if (message.customType === CUSTOM_MESSAGE_TYPE.date &&
34875
34894
  message.date &&
34876
34895
  isDate(message.date)) {
@@ -34882,9 +34901,7 @@ var useMessageListElements = function (props) {
34882
34901
  React__default["default"].createElement(HeaderComponent, null)));
34883
34902
  }
34884
34903
  if (message.type === 'system') {
34885
- return (React__default["default"].createElement("li", { key: ((_a = message.event) === null || _a === void 0 ? void 0 : _a.created_at) ||
34886
- message.created_at ||
34887
- '' },
34904
+ return (React__default["default"].createElement("li", { key: message.id || message.created_at },
34888
34905
  React__default["default"].createElement(MessageSystem, { message: message })));
34889
34906
  }
34890
34907
  var groupStyles = messageGroupStyles[message.id] || '';
@@ -35721,7 +35738,7 @@ var ThreadHeader = function (props) {
35721
35738
  React__default["default"].createElement("div", { className: 'str-chat__thread-header-details' },
35722
35739
  React__default["default"].createElement("div", { className: 'str-chat__thread-header-title' }, t('Thread')),
35723
35740
  React__default["default"].createElement("div", { className: 'str-chat__thread-header-subtitle' }, displayTitle)),
35724
- React__default["default"].createElement("button", { "aria-label": 'Close thread', className: 'str-chat__square-button str-chat__close-thread-button', "data-testid": 'close-button', onClick: function (event) { return closeThread(event); } },
35741
+ React__default["default"].createElement("button", { "aria-label": 'Close thread', className: 'str-chat__square-button str-chat__close-thread-button', "data-testid": 'close-button', onClick: closeThread },
35725
35742
  React__default["default"].createElement(CloseIcon, null))));
35726
35743
  };
35727
35744
 
@@ -35782,9 +35799,11 @@ var ThreadInner = function (props) {
35782
35799
  };
35783
35800
 
35784
35801
  var UnMemoizedWindow = function (props) {
35785
- var children = props.children, _a = props.hideOnThread, hideOnThread = _a === void 0 ? false : _a;
35786
- var thread = useChannelStateContext('Window').thread;
35787
- return (React__default["default"].createElement("div", { className: "str-chat__main-panel ".concat(hideOnThread && thread ? 'str-chat__main-panel--hideOnThread' : '') }, children));
35802
+ var children = props.children, _a = props.hideOnThread, hideOnThread = _a === void 0 ? false : _a, propThread = props.thread;
35803
+ var contextThread = useChannelStateContext('Window').thread;
35804
+ return (React__default["default"].createElement("div", { className: clsx('str-chat__main-panel', {
35805
+ 'str-chat__main-panel--hideOnThread': hideOnThread && (contextThread || propThread),
35806
+ }) }, children));
35788
35807
  };
35789
35808
  /**
35790
35809
  * A UI component for conditionally displaying a Thread or Channel
@@ -35903,6 +35922,7 @@ exports.MessageText = MessageText;
35903
35922
  exports.MessageTimestamp = MessageTimestamp;
35904
35923
  exports.Modal = Modal;
35905
35924
  exports.ModalGallery = ModalGallery;
35925
+ exports.NullComponent = NullComponent;
35906
35926
  exports.PinIcon = PinIcon;
35907
35927
  exports.PinIndicator = PinIndicator;
35908
35928
  exports.PlayButton = PlayButton;
@@ -35938,6 +35958,8 @@ exports.TypingContext = TypingContext;
35938
35958
  exports.TypingIndicator = TypingIndicator;
35939
35959
  exports.TypingProvider = TypingProvider;
35940
35960
  exports.UnMemoizedLoadMorePaginator = UnMemoizedLoadMorePaginator;
35961
+ exports.UnsupportedAttachment = UnsupportedAttachment;
35962
+ exports.UnsupportedAttachmentContainer = UnsupportedAttachmentContainer;
35941
35963
  exports.UploadIcon = UploadIcon;
35942
35964
  exports.UploadsPreview = UploadsPreview;
35943
35965
  exports.UserItem = UserItem;