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
@@ -162,46 +162,6 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
162
162
  return a;
163
163
  }
164
164
 
165
- var dist$1 = {};
166
-
167
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};Object.defineProperty(dist$1, "__esModule", { value: true });
168
- var sanitizeUrl_1 = dist$1.sanitizeUrl = void 0;
169
- var invalidProtocolRegex = /^([^\w]*)(javascript|data|vbscript)/im;
170
- var htmlEntitiesRegex = /&#(\w+)(^\w|;)?/g;
171
- var ctrlCharactersRegex = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;
172
- var urlSchemeRegex = /^([^:]+):/gm;
173
- var relativeFirstCharacters = [".", "/"];
174
- function isRelativeUrlWithoutProtocol(url) {
175
- return relativeFirstCharacters.indexOf(url[0]) > -1;
176
- }
177
- // adapted from https://stackoverflow.com/a/29824550/2601552
178
- function decodeHtmlCharacters(str) {
179
- return str.replace(htmlEntitiesRegex, function (match, dec) {
180
- return String.fromCharCode(dec);
181
- });
182
- }
183
- function sanitizeUrl(url) {
184
- var sanitizedUrl = decodeHtmlCharacters(url || "")
185
- .replace(ctrlCharactersRegex, "")
186
- .trim();
187
- if (!sanitizedUrl) {
188
- return "about:blank";
189
- }
190
- if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {
191
- return sanitizedUrl;
192
- }
193
- var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);
194
- if (!urlSchemeParseResults) {
195
- return sanitizedUrl;
196
- }
197
- var urlScheme = urlSchemeParseResults[0];
198
- if (invalidProtocolRegex.test(urlScheme)) {
199
- return "about:blank";
200
- }
201
- return sanitizedUrl;
202
- }
203
- sanitizeUrl_1 = dist$1.sanitizeUrl = sanitizeUrl;
204
-
205
165
  var lib$1 = {};
206
166
 
207
167
  var players = {};
@@ -5810,6 +5770,46 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
5810
5770
  return (React__default["default"].createElement("span", { className: 'str-chat__message-attachment-file--item-size' }, prettyBytes(fileSize)));
5811
5771
  };
5812
5772
 
5773
+ var dist$1 = {};
5774
+
5775
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};Object.defineProperty(dist$1, "__esModule", { value: true });
5776
+ var sanitizeUrl_1 = dist$1.sanitizeUrl = void 0;
5777
+ var invalidProtocolRegex = /^([^\w]*)(javascript|data|vbscript)/im;
5778
+ var htmlEntitiesRegex = /&#(\w+)(^\w|;)?/g;
5779
+ var ctrlCharactersRegex = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;
5780
+ var urlSchemeRegex = /^([^:]+):/gm;
5781
+ var relativeFirstCharacters = [".", "/"];
5782
+ function isRelativeUrlWithoutProtocol(url) {
5783
+ return relativeFirstCharacters.indexOf(url[0]) > -1;
5784
+ }
5785
+ // adapted from https://stackoverflow.com/a/29824550/2601552
5786
+ function decodeHtmlCharacters(str) {
5787
+ return str.replace(htmlEntitiesRegex, function (match, dec) {
5788
+ return String.fromCharCode(dec);
5789
+ });
5790
+ }
5791
+ function sanitizeUrl(url) {
5792
+ var sanitizedUrl = decodeHtmlCharacters(url || "")
5793
+ .replace(ctrlCharactersRegex, "")
5794
+ .trim();
5795
+ if (!sanitizedUrl) {
5796
+ return "about:blank";
5797
+ }
5798
+ if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {
5799
+ return sanitizedUrl;
5800
+ }
5801
+ var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);
5802
+ if (!urlSchemeParseResults) {
5803
+ return sanitizedUrl;
5804
+ }
5805
+ var urlScheme = urlSchemeParseResults[0];
5806
+ if (invalidProtocolRegex.test(urlScheme)) {
5807
+ return "about:blank";
5808
+ }
5809
+ return sanitizedUrl;
5810
+ }
5811
+ sanitizeUrl_1 = dist$1.sanitizeUrl = sanitizeUrl;
5812
+
5813
5813
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedSafeAnchor = function (props) {
5814
5814
  var children = props.children, className = props.className, download = props.download, href = props.href, rel = props.rel, target = props.target;
5815
5815
  if (!href)
@@ -10834,7 +10834,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
10834
10834
  React__default["default"].createElement("p", null, t('{{ imageCount }} more', {
10835
10835
  imageCount: images.length - countImagesDisplayedInPreview,
10836
10836
  })))) : (React__default["default"].createElement("button", { className: 'str-chat__gallery-image', "data-testid": 'gallery-image', key: "gallery-image-".concat(i), onClick: function () { return toggleModal(i); } },
10837
- React__default["default"].createElement("img", __assign$8({ 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); } })))));
10837
+ React__default["default"].createElement("img", __assign$8({ alt: 'User uploaded content', src: sanitizeUrl_1(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); } })))));
10838
10838
  });
10839
10839
  var className = clsx('str-chat__gallery', {
10840
10840
  'str-chat__gallery--square': images.length > lastImageIndexInPreview,
@@ -15290,6 +15290,18 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
15290
15290
  return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);
15291
15291
  }
15292
15292
 
15293
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnsupportedAttachment = function (_a) {
15294
+ var _b;
15295
+ var attachment = _a.attachment;
15296
+ return (React__default["default"].createElement("div", null,
15297
+ React__default["default"].createElement("div", null,
15298
+ "Unsupported attachment type ",
15299
+ React__default["default"].createElement("strong", null, (_b = attachment.type) !== null && _b !== void 0 ? _b : 'unknown')),
15300
+ React__default["default"].createElement("code", null, JSON.stringify(attachment, null, 4)),
15301
+ ";"));
15302
+ };
15303
+ var NullComponent = function () { return null; };
15304
+
15293
15305
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var AttachmentWithinContainer = function (_a) {
15294
15306
  var _b;
15295
15307
  var _c;
@@ -15427,12 +15439,18 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
15427
15439
  content,
15428
15440
  React__default["default"].createElement(AttachmentActionsContainer, __assign$8({}, props))))) : (React__default["default"].createElement(AttachmentWithinContainer, { attachment: attachment, componentType: componentType }, content));
15429
15441
  };
15442
+ var UnsupportedAttachmentContainer = function (_a) {
15443
+ var attachment = _a.attachment, _b = _a.UnsupportedAttachment, UnsupportedAttachment = _b === void 0 ? NullComponent : _b;
15444
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
15445
+ React__default["default"].createElement(UnsupportedAttachment, { attachment: attachment })));
15446
+ };
15430
15447
 
15431
15448
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var CONTAINER_MAP = {
15432
15449
  audio: AudioContainer,
15433
15450
  card: CardContainer,
15434
15451
  file: FileContainer,
15435
15452
  media: MediaContainer,
15453
+ unsupported: UnsupportedAttachmentContainer,
15436
15454
  };
15437
15455
  var ATTACHMENT_GROUPS_ORDER = [
15438
15456
  'card',
@@ -15441,6 +15459,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
15441
15459
  'media',
15442
15460
  'audio',
15443
15461
  'file',
15462
+ 'unsupported',
15444
15463
  ];
15445
15464
  /**
15446
15465
  * A component used for rendering message attachments. By default, the component supports: AttachmentActions, Audio, Card, File, Gallery, Image, and Video
@@ -15452,26 +15471,27 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
15452
15471
  };
15453
15472
  var renderGroupedAttachments = function (_a) {
15454
15473
  var attachments = _a.attachments, rest = __rest$4(_a, ["attachments"]);
15455
- var uploadedImages = [];
15456
- var containers = attachments.reduce(function (acc, attachment) {
15457
- if (isUploadedImage(attachment)) {
15458
- uploadedImages.push(__assign$8(__assign$8({}, attachment), { image_url: sanitizeUrl_1(attachment.image_url), thumb_url: sanitizeUrl_1(attachment.thumb_url) }));
15459
- }
15460
- else {
15461
- var attachmentType = getAttachmentType(attachment);
15462
- if (attachmentType) {
15463
- var Container = CONTAINER_MAP[attachmentType];
15464
- acc[attachmentType].push(React__default["default"].createElement(Container, __assign$8({ key: "".concat(attachmentType, "-").concat(acc[attachmentType].length) }, rest, { attachment: attachment })));
15465
- }
15466
- }
15467
- return acc;
15474
+ var uploadedImages = attachments.filter(function (attachment) {
15475
+ return isUploadedImage(attachment);
15476
+ });
15477
+ var containers = attachments
15478
+ .filter(function (attachment) { return !isUploadedImage(attachment); })
15479
+ .reduce(function (typeMap, attachment) {
15480
+ var attachmentType = getAttachmentType(attachment);
15481
+ var Container = CONTAINER_MAP[attachmentType];
15482
+ typeMap[attachmentType].push(React__default["default"].createElement(Container, __assign$8({ key: "".concat(attachmentType, "-").concat(typeMap[attachmentType].length) }, rest, { attachment: attachment })));
15483
+ return typeMap;
15468
15484
  }, {
15469
15485
  audio: [],
15470
15486
  card: [],
15471
15487
  file: [],
15472
- gallery: [],
15473
- image: [],
15474
15488
  media: [],
15489
+ unsupported: [],
15490
+ // not used in reduce
15491
+ // eslint-disable-next-line sort-keys
15492
+ image: [],
15493
+ // eslint-disable-next-line sort-keys
15494
+ gallery: [],
15475
15495
  });
15476
15496
  if (uploadedImages.length > 1) {
15477
15497
  containers['gallery'] = [
@@ -15501,7 +15521,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
15501
15521
  else if (isFileAttachment(attachment)) {
15502
15522
  return 'file';
15503
15523
  }
15504
- return null;
15524
+ return 'unsupported';
15505
15525
  };
15506
15526
 
15507
15527
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
@@ -47108,7 +47128,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
47108
47128
  };
47109
47129
  /** THREAD */
47110
47130
  var openThread = function (message, event) {
47111
- event.preventDefault();
47131
+ event === null || event === void 0 ? void 0 : event.preventDefault();
47112
47132
  setQuotedMessage(function (current) {
47113
47133
  if ((current === null || current === void 0 ? void 0 : current.parent_id) !== (message === null || message === void 0 ? void 0 : message.parent_id)) {
47114
47134
  return undefined;
@@ -47120,7 +47140,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
47120
47140
  dispatch({ channel: channel, message: message, type: 'openThread' });
47121
47141
  };
47122
47142
  var closeThread = function (event) {
47123
- event.preventDefault();
47143
+ event === null || event === void 0 ? void 0 : event.preventDefault();
47124
47144
  dispatch({ type: 'closeThread' });
47125
47145
  };
47126
47146
  var loadMoreThreadFinished = lodash_debounce(function (threadHasMore, threadMessages) {
@@ -48456,7 +48476,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48456
48476
 
48457
48477
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
48458
48478
 
48459
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.5.0';
48479
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.7.0';
48460
48480
 
48461
48481
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
48462
48482
  var _b, _c;
@@ -49486,10 +49506,10 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49486
49506
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
49487
49507
 
49488
49508
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedCustomNotification = function (props) {
49489
- var active = props.active, children = props.children, type = props.type;
49509
+ var active = props.active, children = props.children, className = props.className, type = props.type;
49490
49510
  if (!active)
49491
49511
  return null;
49492
- 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));
49512
+ 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));
49493
49513
  };
49494
49514
  var CustomNotification = React__default["default"].memo(UnMemoizedCustomNotification);
49495
49515
 
@@ -49507,7 +49527,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49507
49527
  client.on('connection.changed', connectionChanged);
49508
49528
  return function () { return client.off('connection.changed', connectionChanged); };
49509
49529
  }, [client, online]);
49510
- return (React__default["default"].createElement(CustomNotification, { active: !online, type: 'error' }, t('Connection failure, reconnecting now...')));
49530
+ return (React__default["default"].createElement(CustomNotification, { active: !online, className: 'str-chat__connection-status-notification', type: 'error' }, t('Connection failure, reconnecting now...')));
49511
49531
  };
49512
49532
  var ConnectionStatus = React__default["default"].memo(UnMemoizedConnectionStatus);
49513
49533
 
@@ -49572,7 +49592,6 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49572
49592
  var lastReceivedId = React$2.useMemo(function () { return getLastReceived(enrichedMessages); }, [enrichedMessages]);
49573
49593
  var elements = React$2.useMemo(function () {
49574
49594
  return enrichedMessages.map(function (message) {
49575
- var _a;
49576
49595
  if (message.customType === CUSTOM_MESSAGE_TYPE.date &&
49577
49596
  message.date &&
49578
49597
  isDate(message.date)) {
@@ -49584,9 +49603,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49584
49603
  React__default["default"].createElement(HeaderComponent, null)));
49585
49604
  }
49586
49605
  if (message.type === 'system') {
49587
- return (React__default["default"].createElement("li", { key: ((_a = message.event) === null || _a === void 0 ? void 0 : _a.created_at) ||
49588
- message.created_at ||
49589
- '' },
49606
+ return (React__default["default"].createElement("li", { key: message.id || message.created_at },
49590
49607
  React__default["default"].createElement(MessageSystem, { message: message })));
49591
49608
  }
49592
49609
  var groupStyles = messageGroupStyles[message.id] || '';
@@ -51638,7 +51655,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
51638
51655
  React__default["default"].createElement("div", { className: 'str-chat__thread-header-details' },
51639
51656
  React__default["default"].createElement("div", { className: 'str-chat__thread-header-title' }, t('Thread')),
51640
51657
  React__default["default"].createElement("div", { className: 'str-chat__thread-header-subtitle' }, displayTitle)),
51641
- 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); } },
51658
+ 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 },
51642
51659
  React__default["default"].createElement(CloseIcon, null))));
51643
51660
  };
51644
51661
 
@@ -51703,9 +51720,11 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
51703
51720
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
51704
51721
 
51705
51722
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedWindow = function (props) {
51706
- var children = props.children, _a = props.hideOnThread, hideOnThread = _a === void 0 ? false : _a;
51707
- var thread = useChannelStateContext('Window').thread;
51708
- return (React__default["default"].createElement("div", { className: "str-chat__main-panel ".concat(hideOnThread && thread ? 'str-chat__main-panel--hideOnThread' : '') }, children));
51723
+ var children = props.children, _a = props.hideOnThread, hideOnThread = _a === void 0 ? false : _a, propThread = props.thread;
51724
+ var contextThread = useChannelStateContext('Window').thread;
51725
+ return (React__default["default"].createElement("div", { className: clsx('str-chat__main-panel', {
51726
+ 'str-chat__main-panel--hideOnThread': hideOnThread && (contextThread || propThread),
51727
+ }) }, children));
51709
51728
  };
51710
51729
  /**
51711
51730
  * A UI component for conditionally displaying a Thread or Channel
@@ -78527,6 +78546,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
78527
78546
  exports.MessageTimestamp = MessageTimestamp;
78528
78547
  exports.Modal = Modal;
78529
78548
  exports.ModalGallery = ModalGallery;
78549
+ exports.NullComponent = NullComponent;
78530
78550
  exports.PinIcon = PinIcon;
78531
78551
  exports.PinIndicator = PinIndicator;
78532
78552
  exports.PlayButton = PlayButton;
@@ -78562,6 +78582,8 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
78562
78582
  exports.TypingIndicator = TypingIndicator;
78563
78583
  exports.TypingProvider = TypingProvider;
78564
78584
  exports.UnMemoizedLoadMorePaginator = UnMemoizedLoadMorePaginator;
78585
+ exports.UnsupportedAttachment = UnsupportedAttachment;
78586
+ exports.UnsupportedAttachmentContainer = UnsupportedAttachmentContainer;
78565
78587
  exports.UploadIcon = UploadIcon;
78566
78588
  exports.UploadsPreview = UploadsPreview;
78567
78589
  exports.UserItem = UserItem;