stream-chat-react 10.1.0 → 10.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/browser.full-bundle.js +170 -164
  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/ChannelPreview/ChannelPreview.d.ts +0 -2
  6. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  7. package/dist/components/ChannelPreview/hooks/index.d.ts +2 -0
  8. package/dist/components/ChannelPreview/hooks/index.d.ts.map +1 -0
  9. package/dist/components/ChannelPreview/hooks/index.js +1 -0
  10. package/dist/components/ChannelPreview/index.d.ts +1 -0
  11. package/dist/components/ChannelPreview/index.d.ts.map +1 -1
  12. package/dist/components/ChannelPreview/index.js +1 -0
  13. package/dist/components/LoadMore/LoadMorePaginator.d.ts +4 -1
  14. package/dist/components/LoadMore/LoadMorePaginator.d.ts.map +1 -1
  15. package/dist/components/Message/hooks/usePinHandler.d.ts.map +1 -1
  16. package/dist/components/Message/hooks/usePinHandler.js +3 -5
  17. package/dist/components/MessageInput/index.d.ts +2 -1
  18. package/dist/components/MessageInput/index.d.ts.map +1 -1
  19. package/dist/components/MessageInput/index.js +2 -1
  20. package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts.map +1 -1
  21. package/dist/components/MessageList/hooks/usePrependMessagesCount.js +7 -5
  22. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  23. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  24. package/dist/components/TypingIndicator/TypingIndicator.d.ts +1 -1
  25. package/dist/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
  26. package/dist/components/index.d.ts +2 -2
  27. package/dist/components/index.d.ts.map +1 -1
  28. package/dist/components/index.js +2 -2
  29. package/dist/css/index.css +1 -1
  30. package/dist/css/index.css.map +1 -1
  31. package/dist/index.cjs.js +166 -164
  32. package/dist/index.cjs.js.map +1 -1
  33. package/dist/scss/Attachment.scss +5 -3
  34. package/dist/scss/Message.scss +16 -30
  35. package/dist/scss/MessageCommerce.scss +1 -1
  36. package/dist/scss/Thread.scss +39 -2
  37. package/dist/scss/VirtualMessage.scss +2 -6
  38. package/dist/stories/edit-message.stories.d.ts.map +1 -1
  39. package/dist/stories/edit-message.stories.js +0 -4
  40. package/dist/stories/pin-message.stories.d.ts +2 -0
  41. package/dist/stories/pin-message.stories.d.ts.map +1 -0
  42. package/dist/stories/pin-message.stories.js +98 -0
  43. package/dist/stories/utils.d.ts +1 -1
  44. package/dist/stories/utils.d.ts.map +1 -1
  45. package/dist/stories/utils.js +30 -19
  46. package/dist/version.d.ts +1 -1
  47. package/dist/version.js +1 -1
  48. package/package.json +2 -2
  49. package/dist/components/MessageList/Center.d.ts +0 -3
  50. package/dist/components/MessageList/Center.d.ts.map +0 -1
  51. package/dist/components/MessageList/Center.js +0 -6
package/dist/index.cjs.js CHANGED
@@ -6832,6 +6832,159 @@ var CUSTOM_MESSAGE_TYPE = {
6832
6832
  intro: 'channel.intro',
6833
6833
  };
6834
6834
 
6835
+ var useFileState = function (file) {
6836
+ return React.useMemo(function () { return ({
6837
+ failed: file.state === 'failed',
6838
+ finished: file.state === 'finished',
6839
+ uploading: file.state === 'uploading',
6840
+ }); }, [file.state]);
6841
+ };
6842
+
6843
+ var EmojiIconLarge = function () {
6844
+ var t = useTranslationContext('EmojiIconLarge').t;
6845
+ return (React__default["default"].createElement("svg", { height: '28', width: '28', xmlns: 'http://www.w3.org/2000/svg' },
6846
+ React__default["default"].createElement("title", null, t('Open emoji picker')),
6847
+ React__default["default"].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
6848
+ React__default["default"].createElement("path", { d: 'M14 4.4C8.6 4.4 4.4 8.6 4.4 14c0 5.4 4.2 9.6 9.6 9.6c5.4 0 9.6-4.2 9.6-9.6c0-5.4-4.2-9.6-9.6-9.6zM2 14c0-6.6 5.4-12 12-12s12 5.4 12 12s-5.4 12-12 12s-12-5.4-12-12zM12.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM18.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM8.6 15.4c.6-.4 1.2-.2 1.6.2c.6.8 1.6 1.8 3 2c1.2.4 2.8.2 4.8-2c.4-.4 1.2-.6 1.6 0c.4.4.6 1.2 0 1.6c-2.2 2.6-4.8 3.4-7 3c-2-.4-3.6-1.8-4.4-3c-.4-.6-.2-1.2.4-1.8z' }))));
6849
+ };
6850
+ var EmojiIconSmall = function () {
6851
+ var t = useTranslationContext('EmojiIconSmall').t;
6852
+ return (React__default["default"].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
6853
+ React__default["default"].createElement("title", null, t('Open emoji picker')),
6854
+ React__default["default"].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
6855
+ React__default["default"].createElement("path", { d: 'M6.7 1.42C3.73 1.42 1.42 3.73 1.42 6.7c0 2.97 2.31 5.28 5.28 5.28c2.97 0 5.28-2.31 5.28-5.28c0-2.97-2.31-5.28-5.28-5.28zM.1 6.7c0-3.63 2.97-6.6 6.6-6.6s6.6 2.97 6.6 6.6s-2.97 6.6-6.6 6.6s-6.6-2.97-6.6-6.6zM6.04 5.05c0 .55-.44.99-.99.99s-.99-.44-.99-.99s.44-.99.99-.99s.99.44.99.99zM9.34 5.05c0 .55-.44.99-.99.99s-.99-.44-.99-.99s.44-.99.99-.99s.99.44.99.99zM3.73 7.47c.33-.22.66-.11.88.11c.33.44.88.99 1.65 1.1c.66.22 1.54.11 2.64-1.1c.22-.22.66-.33.88 0c.22.22.33.66 0 .88c-1.21 1.43-2.64 1.87-3.85 1.65c-1.1-.22-1.98-.99-2.42-1.65c-.22-.33-.11-.66.22-.99z' }))));
6856
+ };
6857
+ // ThemingV2 icon
6858
+ var EmojiPickerIcon = function () { return (React__default["default"].createElement("svg", { preserveAspectRatio: 'xMinYMin', viewBox: '0 0 28 28', width: '100%', xmlns: 'http://www.w3.org/2000/svg' },
6859
+ React__default["default"].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
6860
+ React__default["default"].createElement("path", { d: 'M14 4.4C8.6 4.4 4.4 8.6 4.4 14c0 5.4 4.2 9.6 9.6 9.6c5.4 0 9.6-4.2 9.6-9.6c0-5.4-4.2-9.6-9.6-9.6zM2 14c0-6.6 5.4-12 12-12s12 5.4 12 12s-5.4 12-12 12s-12-5.4-12-12zM12.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM18.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM8.6 15.4c.6-.4 1.2-.2 1.6.2c.6.8 1.6 1.8 3 2c1.2.4 2.8.2 4.8-2c.4-.4 1.2-.6 1.6 0c.4.4.6 1.2 0 1.6c-2.2 2.6-4.8 3.4-7 3c-2-.4-3.6-1.8-4.4-3c-.4-.6-.2-1.2.4-1.8z' })))); };
6861
+ var FileUploadIcon = function () {
6862
+ var t = useTranslationContext('FileUploadIcon').t;
6863
+ return (React__default["default"].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
6864
+ React__default["default"].createElement("title", null, t('Attach files')),
6865
+ React__default["default"].createElement("path", { d: 'M7 .5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5S.5 10.59.5 7 3.41.5 7 .5zm0 12c3.031 0 5.5-2.469 5.5-5.5S10.031 1.5 7 1.5A5.506 5.506 0 0 0 1.5 7c0 3.034 2.469 5.5 5.5 5.5zM7.506 3v3.494H11v1.05H7.506V11h-1.05V7.544H3v-1.05h3.456V3h1.05z', fillRule: 'nonzero' })));
6866
+ };
6867
+ var FileUploadIconFlat = function () {
6868
+ var t = useTranslationContext('FileUploadIconFlat').t;
6869
+ return (React__default["default"].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
6870
+ React__default["default"].createElement("title", null, t('Attach files')),
6871
+ React__default["default"].createElement("path", { d: 'M1.667.333h10.666c.737 0 1.334.597 1.334 1.334v10.666c0 .737-.597 1.334-1.334 1.334H1.667a1.333 1.333 0 0 1-1.334-1.334V1.667C.333.93.93.333 1.667.333zm2 1.334a1.667 1.667 0 1 0 0 3.333 1.667 1.667 0 0 0 0-3.333zm-2 9.333v1.333h10.666v-4l-2-2-4 4-2-2L1.667 11z', fillRule: 'nonzero' })));
6872
+ };
6873
+ var LoadingIndicatorIcon = function (_a) {
6874
+ var _b = _a.size, size = _b === void 0 ? 20 : _b;
6875
+ var id = React.useMemo(function () { return nanoid.nanoid(); }, []);
6876
+ return (React__default["default"].createElement("div", { className: 'str-chat__loading-indicator' },
6877
+ React__default["default"].createElement("svg", { "data-testid": 'loading-indicator', height: size, viewBox: '0 0 30 30', width: size, xmlns: 'http://www.w3.org/2000/svg' },
6878
+ React__default["default"].createElement("defs", null,
6879
+ React__default["default"].createElement("linearGradient", { id: "".concat(id, "-linear-gradient"), x1: '50%', x2: '50%', y1: '0%', y2: '100%' },
6880
+ React__default["default"].createElement("stop", { offset: '0%', stopColor: '#FFF', stopOpacity: '0' }),
6881
+ React__default["default"].createElement("stop", { "data-testid": 'stop-color', offset: '100%', stopOpacity: '1' }))),
6882
+ React__default["default"].createElement("path", { d: 'M2.518 23.321l1.664-1.11A12.988 12.988 0 0 0 15 28c7.18 0 13-5.82 13-13S22.18 2 15 2V0c8.284 0 15 6.716 15 15 0 8.284-6.716 15-15 15-5.206 0-9.792-2.652-12.482-6.679z', fill: "url(#".concat(id, "-linear-gradient)"), fillRule: 'evenodd' }))));
6883
+ };
6884
+ // ThemingV2 icon
6885
+ var UploadIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'attach', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
6886
+ React__default["default"].createElement("g", { clipPath: 'url(#clip0_10878_5)' },
6887
+ React__default["default"].createElement("path", { d: 'M12.9997 6.99993L10.9997 6.99993L10.9997 10.9999L6.99972 10.9999L6.99972 12.9999L10.9997 12.9999L10.9997 16.9999L12.9997 16.9999L12.9997 12.9999L16.9997 12.9999L16.9997 10.9999L12.9997 10.9999L12.9997 6.99993ZM11.9997 1.99992C6.47972 1.99992 1.99972 6.47993 1.99972 11.9999C1.99972 17.5199 6.47972 21.9999 11.9997 21.9999C17.5197 21.9999 21.9997 17.5199 21.9997 11.9999C21.9997 6.47993 17.5197 1.99992 11.9997 1.99992ZM11.9997 19.9999C7.58972 19.9999 3.99972 16.4099 3.99972 11.9999C3.99972 7.58993 7.58972 3.99993 11.9997 3.99993C16.4097 3.99993 19.9997 7.58993 19.9997 11.9999C19.9997 16.4099 16.4097 19.9999 11.9997 19.9999Z', fill: 'black' })),
6888
+ React__default["default"].createElement("defs", null,
6889
+ React__default["default"].createElement("clipPath", { id: 'clip0_10878_5' },
6890
+ React__default["default"].createElement("rect", { fill: 'white', height: '24', width: '24' }))))); };
6891
+ var CloseIcon$1 = function () { return (React__default["default"].createElement("svg", { "data-testid": 'close-no-outline', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
6892
+ React__default["default"].createElement("path", { d: 'M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z', fill: 'black' }))); };
6893
+ var RetryIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'retry', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
6894
+ React__default["default"].createElement("path", { d: 'M17.6449 6.35C16.1949 4.9 14.2049 4 11.9949 4C7.57488 4 4.00488 7.58 4.00488 12C4.00488 16.42 7.57488 20 11.9949 20C15.7249 20 18.8349 17.45 19.7249 14H17.6449C16.8249 16.33 14.6049 18 11.9949 18C8.68488 18 5.99488 15.31 5.99488 12C5.99488 8.69 8.68488 6 11.9949 6C13.6549 6 15.1349 6.69 16.2149 7.78L12.9949 11H19.9949V4L17.6449 6.35Z', fill: 'black' }))); };
6895
+ var DownloadIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'download', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
6896
+ React__default["default"].createElement("path", { d: 'M19.35 10.04C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.04C2.34 8.36 0 10.91 0 14C0 17.31 2.69 20 6 20H19C21.76 20 24 17.76 24 15C24 12.36 21.95 10.22 19.35 10.04ZM19 18H6C3.79 18 2 16.21 2 14C2 11.95 3.53 10.24 5.56 10.03L6.63 9.92L7.13 8.97C8.08 7.14 9.94 6 12 6C14.62 6 16.88 7.86 17.39 10.43L17.69 11.93L19.22 12.04C20.78 12.14 22 13.45 22 15C22 16.65 20.65 18 19 18ZM13.45 10H10.55V13H8L12 17L16 13H13.45V10Z', fill: 'black' }))); };
6897
+ var SendIconV1 = function () {
6898
+ var t = useTranslationContext('SendButton').t;
6899
+ return (React__default["default"].createElement("svg", { height: '17', viewBox: '0 0 18 17', width: '18', xmlns: 'http://www.w3.org/2000/svg' },
6900
+ React__default["default"].createElement("title", null, t('Send')),
6901
+ React__default["default"].createElement("path", { d: 'M0 17.015l17.333-8.508L0 0v6.617l12.417 1.89L0 10.397z', fill: '#006cff', fillRule: 'evenodd' })));
6902
+ };
6903
+ var SendIconV2 = function () {
6904
+ var t = useTranslationContext('SendButton').t;
6905
+ return (React__default["default"].createElement("svg", { "data-testid": 'send', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
6906
+ React__default["default"].createElement("title", null, t('Send')),
6907
+ React__default["default"].createElement("path", { d: 'M4.00952 22L24 12L4.00952 2L4 9.77778L18.2857 12L4 14.2222L4.00952 22Z', fill: 'black' })));
6908
+ };
6909
+ var SendButton = function (_a) {
6910
+ var sendMessage = _a.sendMessage, rest = __rest(_a, ["sendMessage"]);
6911
+ var themeVersion = useChatContext('SendButton').themeVersion;
6912
+ return (React__default["default"].createElement("button", __assign({ "aria-label": 'Send', className: 'str-chat__send-button', "data-testid": 'send-button', onClick: sendMessage, type: 'button' }, rest), themeVersion === '2' ? React__default["default"].createElement(SendIconV2, null) : React__default["default"].createElement(SendIconV1, null)));
6913
+ };
6914
+
6915
+ var AttachmentPreviewList = function () {
6916
+ var _a = useMessageInputContext('AttachmentPreviewList'), fileOrder = _a.fileOrder, imageOrder = _a.imageOrder;
6917
+ return (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-list' },
6918
+ React__default["default"].createElement("div", { className: 'str-chat__attachment-list-scroll-container', "data-testid": 'attachment-list-scroll-container' },
6919
+ imageOrder.map(function (id) { return (React__default["default"].createElement(ImagePreviewItem, { id: id, key: id })); }),
6920
+ fileOrder.map(function (id) { return (React__default["default"].createElement(FilePreviewItem, { id: id, key: id })); }))));
6921
+ };
6922
+ var ImagePreviewItem = function (_a) {
6923
+ var _b;
6924
+ var id = _a.id;
6925
+ var _c = useMessageInputContext('ImagePreviewItem'), imageUploads = _c.imageUploads, removeImage = _c.removeImage, uploadImage = _c.uploadImage;
6926
+ var handleRemove = React.useCallback(function (e) {
6927
+ e.stopPropagation();
6928
+ removeImage(id);
6929
+ }, [removeImage, id]);
6930
+ var handleRetry = React.useCallback(function () { return uploadImage(id); }, [uploadImage, id]);
6931
+ var image = imageUploads[id];
6932
+ var state = useFileState(image);
6933
+ // do not display scraped attachments
6934
+ if (!image || image.og_scrape_url)
6935
+ return null;
6936
+ return (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-image', "data-testid": 'attachment-preview-image' },
6937
+ React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-delete', "data-testid": 'image-preview-item-delete-button', disabled: state.uploading, onClick: handleRemove },
6938
+ React__default["default"].createElement(CloseIcon$1, null)),
6939
+ state.failed && (React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-error str-chat__attachment-preview-error-image', "data-testid": 'image-preview-item-retry-button', onClick: handleRetry },
6940
+ React__default["default"].createElement(RetryIcon, null))),
6941
+ state.uploading && (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-image-loading' },
6942
+ React__default["default"].createElement(LoadingIndicatorIcon, { size: 17 }))),
6943
+ (image.previewUri || image.url) && (React__default["default"].createElement("img", { alt: image.file.name, className: 'str-chat__attachment-preview-thumbnail', src: (_b = image.previewUri) !== null && _b !== void 0 ? _b : image.url }))));
6944
+ };
6945
+ var FilePreviewItem = function (_a) {
6946
+ var id = _a.id;
6947
+ var _b = useMessageInputContext('FilePreviewItem'), fileUploads = _b.fileUploads, removeFile = _b.removeFile, uploadFile = _b.uploadFile;
6948
+ var handleRemove = React.useCallback(function (e) {
6949
+ e.stopPropagation();
6950
+ removeFile(id);
6951
+ }, [removeFile, id]);
6952
+ var handleRetry = React.useCallback(function () { return uploadFile(id); }, [uploadFile, id]);
6953
+ var file = fileUploads[id];
6954
+ var state = useFileState(file);
6955
+ if (!file)
6956
+ return null;
6957
+ return (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-file', "data-testid": 'attachment-preview-file' },
6958
+ React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-file-icon' },
6959
+ React__default["default"].createElement(reactFileUtils.FileIcon, { filename: file.file.name, mimeType: file.file.type, version: '2' })),
6960
+ React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-delete', "data-testid": 'file-preview-item-delete-button', disabled: state.uploading, onClick: handleRemove },
6961
+ React__default["default"].createElement(CloseIcon$1, null)),
6962
+ state.failed && (React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-error str-chat__attachment-preview-error-file', "data-testid": 'file-preview-item-retry-button', onClick: handleRetry },
6963
+ React__default["default"].createElement(RetryIcon, null))),
6964
+ React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-file-end' },
6965
+ React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-file-name' }, file.file.name),
6966
+ state.finished && (React__default["default"].createElement("a", { className: 'str-chat__attachment-preview-file-download', download: true, href: file.url, rel: 'noreferrer', target: '_blank' },
6967
+ React__default["default"].createElement(DownloadIcon, null))),
6968
+ state.uploading && React__default["default"].createElement(LoadingIndicatorIcon, { size: 17 }))));
6969
+ };
6970
+
6971
+ var CooldownTimer = function (_a) {
6972
+ var cooldownInterval = _a.cooldownInterval, setCooldownRemaining = _a.setCooldownRemaining;
6973
+ var _b = React.useState(cooldownInterval), seconds = _b[0], setSeconds = _b[1];
6974
+ React.useEffect(function () {
6975
+ var countdownInterval = setInterval(function () {
6976
+ if (seconds > 0) {
6977
+ setSeconds(seconds - 1);
6978
+ }
6979
+ else {
6980
+ setCooldownRemaining(0);
6981
+ }
6982
+ }, 1000);
6983
+ return function () { return clearInterval(countdownInterval); };
6984
+ });
6985
+ return (React__default["default"].createElement("div", { className: 'str-chat__message-input-cooldown', "data-testid": 'cooldown-timer' }, seconds === 0 ? null : seconds));
6986
+ };
6987
+
6835
6988
  var useCommandTrigger = function () {
6836
6989
  var themeVersion = useChatContext('useCommandTrigger').themeVersion;
6837
6990
  var channelConfig = useChannelStateContext('useCommandTrigger').channelConfig;
@@ -7236,78 +7389,6 @@ var EmojiPicker = function (_a) {
7236
7389
  React__default["default"].createElement(EmojiPickerComponent, { color: '#006CFF', data: emojiData, emoji: 'point_up', emojisToShowFilter: filterEmoji, native: true, onSelect: onSelectEmoji, set: 'facebook', showPreview: false, showSkinTones: false, title: t('Pick your emoji'), useButton: true }))));
7237
7390
  };
7238
7391
 
7239
- var EmojiIconLarge = function () {
7240
- var t = useTranslationContext('EmojiIconLarge').t;
7241
- return (React__default["default"].createElement("svg", { height: '28', width: '28', xmlns: 'http://www.w3.org/2000/svg' },
7242
- React__default["default"].createElement("title", null, t('Open emoji picker')),
7243
- React__default["default"].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
7244
- React__default["default"].createElement("path", { d: 'M14 4.4C8.6 4.4 4.4 8.6 4.4 14c0 5.4 4.2 9.6 9.6 9.6c5.4 0 9.6-4.2 9.6-9.6c0-5.4-4.2-9.6-9.6-9.6zM2 14c0-6.6 5.4-12 12-12s12 5.4 12 12s-5.4 12-12 12s-12-5.4-12-12zM12.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM18.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM8.6 15.4c.6-.4 1.2-.2 1.6.2c.6.8 1.6 1.8 3 2c1.2.4 2.8.2 4.8-2c.4-.4 1.2-.6 1.6 0c.4.4.6 1.2 0 1.6c-2.2 2.6-4.8 3.4-7 3c-2-.4-3.6-1.8-4.4-3c-.4-.6-.2-1.2.4-1.8z' }))));
7245
- };
7246
- var EmojiIconSmall = function () {
7247
- var t = useTranslationContext('EmojiIconSmall').t;
7248
- return (React__default["default"].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
7249
- React__default["default"].createElement("title", null, t('Open emoji picker')),
7250
- React__default["default"].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
7251
- React__default["default"].createElement("path", { d: 'M6.7 1.42C3.73 1.42 1.42 3.73 1.42 6.7c0 2.97 2.31 5.28 5.28 5.28c2.97 0 5.28-2.31 5.28-5.28c0-2.97-2.31-5.28-5.28-5.28zM.1 6.7c0-3.63 2.97-6.6 6.6-6.6s6.6 2.97 6.6 6.6s-2.97 6.6-6.6 6.6s-6.6-2.97-6.6-6.6zM6.04 5.05c0 .55-.44.99-.99.99s-.99-.44-.99-.99s.44-.99.99-.99s.99.44.99.99zM9.34 5.05c0 .55-.44.99-.99.99s-.99-.44-.99-.99s.44-.99.99-.99s.99.44.99.99zM3.73 7.47c.33-.22.66-.11.88.11c.33.44.88.99 1.65 1.1c.66.22 1.54.11 2.64-1.1c.22-.22.66-.33.88 0c.22.22.33.66 0 .88c-1.21 1.43-2.64 1.87-3.85 1.65c-1.1-.22-1.98-.99-2.42-1.65c-.22-.33-.11-.66.22-.99z' }))));
7252
- };
7253
- // ThemingV2 icon
7254
- var EmojiPickerIcon = function () { return (React__default["default"].createElement("svg", { preserveAspectRatio: 'xMinYMin', viewBox: '0 0 28 28', width: '100%', xmlns: 'http://www.w3.org/2000/svg' },
7255
- React__default["default"].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
7256
- React__default["default"].createElement("path", { d: 'M14 4.4C8.6 4.4 4.4 8.6 4.4 14c0 5.4 4.2 9.6 9.6 9.6c5.4 0 9.6-4.2 9.6-9.6c0-5.4-4.2-9.6-9.6-9.6zM2 14c0-6.6 5.4-12 12-12s12 5.4 12 12s-5.4 12-12 12s-12-5.4-12-12zM12.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM18.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM8.6 15.4c.6-.4 1.2-.2 1.6.2c.6.8 1.6 1.8 3 2c1.2.4 2.8.2 4.8-2c.4-.4 1.2-.6 1.6 0c.4.4.6 1.2 0 1.6c-2.2 2.6-4.8 3.4-7 3c-2-.4-3.6-1.8-4.4-3c-.4-.6-.2-1.2.4-1.8z' })))); };
7257
- var FileUploadIcon = function () {
7258
- var t = useTranslationContext('FileUploadIcon').t;
7259
- return (React__default["default"].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
7260
- React__default["default"].createElement("title", null, t('Attach files')),
7261
- React__default["default"].createElement("path", { d: 'M7 .5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5S.5 10.59.5 7 3.41.5 7 .5zm0 12c3.031 0 5.5-2.469 5.5-5.5S10.031 1.5 7 1.5A5.506 5.506 0 0 0 1.5 7c0 3.034 2.469 5.5 5.5 5.5zM7.506 3v3.494H11v1.05H7.506V11h-1.05V7.544H3v-1.05h3.456V3h1.05z', fillRule: 'nonzero' })));
7262
- };
7263
- var FileUploadIconFlat = function () {
7264
- var t = useTranslationContext('FileUploadIconFlat').t;
7265
- return (React__default["default"].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
7266
- React__default["default"].createElement("title", null, t('Attach files')),
7267
- React__default["default"].createElement("path", { d: 'M1.667.333h10.666c.737 0 1.334.597 1.334 1.334v10.666c0 .737-.597 1.334-1.334 1.334H1.667a1.333 1.333 0 0 1-1.334-1.334V1.667C.333.93.93.333 1.667.333zm2 1.334a1.667 1.667 0 1 0 0 3.333 1.667 1.667 0 0 0 0-3.333zm-2 9.333v1.333h10.666v-4l-2-2-4 4-2-2L1.667 11z', fillRule: 'nonzero' })));
7268
- };
7269
- var LoadingIndicatorIcon = function (_a) {
7270
- var _b = _a.size, size = _b === void 0 ? 20 : _b;
7271
- var id = React.useMemo(function () { return nanoid.nanoid(); }, []);
7272
- return (React__default["default"].createElement("div", { className: 'str-chat__loading-indicator' },
7273
- React__default["default"].createElement("svg", { "data-testid": 'loading-indicator', height: size, viewBox: '0 0 30 30', width: size, xmlns: 'http://www.w3.org/2000/svg' },
7274
- React__default["default"].createElement("defs", null,
7275
- React__default["default"].createElement("linearGradient", { id: "".concat(id, "-linear-gradient"), x1: '50%', x2: '50%', y1: '0%', y2: '100%' },
7276
- React__default["default"].createElement("stop", { offset: '0%', stopColor: '#FFF', stopOpacity: '0' }),
7277
- React__default["default"].createElement("stop", { "data-testid": 'stop-color', offset: '100%', stopOpacity: '1' }))),
7278
- React__default["default"].createElement("path", { d: 'M2.518 23.321l1.664-1.11A12.988 12.988 0 0 0 15 28c7.18 0 13-5.82 13-13S22.18 2 15 2V0c8.284 0 15 6.716 15 15 0 8.284-6.716 15-15 15-5.206 0-9.792-2.652-12.482-6.679z', fill: "url(#".concat(id, "-linear-gradient)"), fillRule: 'evenodd' }))));
7279
- };
7280
- // ThemingV2 icon
7281
- var UploadIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'attach', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
7282
- React__default["default"].createElement("g", { clipPath: 'url(#clip0_10878_5)' },
7283
- React__default["default"].createElement("path", { d: 'M12.9997 6.99993L10.9997 6.99993L10.9997 10.9999L6.99972 10.9999L6.99972 12.9999L10.9997 12.9999L10.9997 16.9999L12.9997 16.9999L12.9997 12.9999L16.9997 12.9999L16.9997 10.9999L12.9997 10.9999L12.9997 6.99993ZM11.9997 1.99992C6.47972 1.99992 1.99972 6.47993 1.99972 11.9999C1.99972 17.5199 6.47972 21.9999 11.9997 21.9999C17.5197 21.9999 21.9997 17.5199 21.9997 11.9999C21.9997 6.47993 17.5197 1.99992 11.9997 1.99992ZM11.9997 19.9999C7.58972 19.9999 3.99972 16.4099 3.99972 11.9999C3.99972 7.58993 7.58972 3.99993 11.9997 3.99993C16.4097 3.99993 19.9997 7.58993 19.9997 11.9999C19.9997 16.4099 16.4097 19.9999 11.9997 19.9999Z', fill: 'black' })),
7284
- React__default["default"].createElement("defs", null,
7285
- React__default["default"].createElement("clipPath", { id: 'clip0_10878_5' },
7286
- React__default["default"].createElement("rect", { fill: 'white', height: '24', width: '24' }))))); };
7287
- var CloseIcon$1 = function () { return (React__default["default"].createElement("svg", { "data-testid": 'close-no-outline', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
7288
- React__default["default"].createElement("path", { d: 'M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z', fill: 'black' }))); };
7289
- var RetryIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'retry', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
7290
- React__default["default"].createElement("path", { d: 'M17.6449 6.35C16.1949 4.9 14.2049 4 11.9949 4C7.57488 4 4.00488 7.58 4.00488 12C4.00488 16.42 7.57488 20 11.9949 20C15.7249 20 18.8349 17.45 19.7249 14H17.6449C16.8249 16.33 14.6049 18 11.9949 18C8.68488 18 5.99488 15.31 5.99488 12C5.99488 8.69 8.68488 6 11.9949 6C13.6549 6 15.1349 6.69 16.2149 7.78L12.9949 11H19.9949V4L17.6449 6.35Z', fill: 'black' }))); };
7291
- var DownloadIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'download', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
7292
- React__default["default"].createElement("path", { d: 'M19.35 10.04C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.04C2.34 8.36 0 10.91 0 14C0 17.31 2.69 20 6 20H19C21.76 20 24 17.76 24 15C24 12.36 21.95 10.22 19.35 10.04ZM19 18H6C3.79 18 2 16.21 2 14C2 11.95 3.53 10.24 5.56 10.03L6.63 9.92L7.13 8.97C8.08 7.14 9.94 6 12 6C14.62 6 16.88 7.86 17.39 10.43L17.69 11.93L19.22 12.04C20.78 12.14 22 13.45 22 15C22 16.65 20.65 18 19 18ZM13.45 10H10.55V13H8L12 17L16 13H13.45V10Z', fill: 'black' }))); };
7293
- var SendIconV1 = function () {
7294
- var t = useTranslationContext('SendButton').t;
7295
- return (React__default["default"].createElement("svg", { height: '17', viewBox: '0 0 18 17', width: '18', xmlns: 'http://www.w3.org/2000/svg' },
7296
- React__default["default"].createElement("title", null, t('Send')),
7297
- React__default["default"].createElement("path", { d: 'M0 17.015l17.333-8.508L0 0v6.617l12.417 1.89L0 10.397z', fill: '#006cff', fillRule: 'evenodd' })));
7298
- };
7299
- var SendIconV2 = function () {
7300
- var t = useTranslationContext('SendButton').t;
7301
- return (React__default["default"].createElement("svg", { "data-testid": 'send', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
7302
- React__default["default"].createElement("title", null, t('Send')),
7303
- React__default["default"].createElement("path", { d: 'M4.00952 22L24 12L4.00952 2L4 9.77778L18.2857 12L4 14.2222L4.00952 22Z', fill: 'black' })));
7304
- };
7305
- var SendButton = function (_a) {
7306
- var sendMessage = _a.sendMessage, rest = __rest(_a, ["sendMessage"]);
7307
- var themeVersion = useChatContext('SendButton').themeVersion;
7308
- return (React__default["default"].createElement("button", __assign({ "aria-label": 'Send', className: 'str-chat__send-button', "data-testid": 'send-button', onClick: sendMessage, type: 'button' }, rest), themeVersion === '2' ? React__default["default"].createElement(SendIconV2, null) : React__default["default"].createElement(SendIconV1, null)));
7309
- };
7310
-
7311
7392
  /**
7312
7393
  * @deprecated This component has been deprecated in favor of `AttachmentPreviewList` as this component
7313
7394
  * utilises outdated components from the package [`react-file-utils`](https://github.com/GetStream/react-file-utils)
@@ -9109,87 +9190,6 @@ var QuotedMessagePreview = function (_a) {
9109
9190
  themeVersion === '1' && React__default["default"].createElement(React__default["default"].Fragment, null, quotedMessageText))))));
9110
9191
  };
9111
9192
 
9112
- var useFileState = function (file) {
9113
- return React.useMemo(function () { return ({
9114
- failed: file.state === 'failed',
9115
- finished: file.state === 'finished',
9116
- uploading: file.state === 'uploading',
9117
- }); }, [file.state]);
9118
- };
9119
-
9120
- var AttachmentPreviewList = function () {
9121
- var _a = useMessageInputContext('AttachmentPreviewList'), fileOrder = _a.fileOrder, imageOrder = _a.imageOrder;
9122
- return (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-list' },
9123
- React__default["default"].createElement("div", { className: 'str-chat__attachment-list-scroll-container', "data-testid": 'attachment-list-scroll-container' },
9124
- imageOrder.map(function (id) { return (React__default["default"].createElement(ImagePreviewItem, { id: id, key: id })); }),
9125
- fileOrder.map(function (id) { return (React__default["default"].createElement(FilePreviewItem, { id: id, key: id })); }))));
9126
- };
9127
- var ImagePreviewItem = function (_a) {
9128
- var _b;
9129
- var id = _a.id;
9130
- var _c = useMessageInputContext('ImagePreviewItem'), imageUploads = _c.imageUploads, removeImage = _c.removeImage, uploadImage = _c.uploadImage;
9131
- var handleRemove = React.useCallback(function (e) {
9132
- e.stopPropagation();
9133
- removeImage(id);
9134
- }, [removeImage, id]);
9135
- var handleRetry = React.useCallback(function () { return uploadImage(id); }, [uploadImage, id]);
9136
- var image = imageUploads[id];
9137
- var state = useFileState(image);
9138
- // do not display scraped attachments
9139
- if (!image || image.og_scrape_url)
9140
- return null;
9141
- return (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-image', "data-testid": 'attachment-preview-image' },
9142
- React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-delete', "data-testid": 'image-preview-item-delete-button', disabled: state.uploading, onClick: handleRemove },
9143
- React__default["default"].createElement(CloseIcon$1, null)),
9144
- state.failed && (React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-error str-chat__attachment-preview-error-image', "data-testid": 'image-preview-item-retry-button', onClick: handleRetry },
9145
- React__default["default"].createElement(RetryIcon, null))),
9146
- state.uploading && (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-image-loading' },
9147
- React__default["default"].createElement(LoadingIndicatorIcon, { size: 17 }))),
9148
- (image.previewUri || image.url) && (React__default["default"].createElement("img", { alt: image.file.name, className: 'str-chat__attachment-preview-thumbnail', src: (_b = image.previewUri) !== null && _b !== void 0 ? _b : image.url }))));
9149
- };
9150
- var FilePreviewItem = function (_a) {
9151
- var id = _a.id;
9152
- var _b = useMessageInputContext('FilePreviewItem'), fileUploads = _b.fileUploads, removeFile = _b.removeFile, uploadFile = _b.uploadFile;
9153
- var handleRemove = React.useCallback(function (e) {
9154
- e.stopPropagation();
9155
- removeFile(id);
9156
- }, [removeFile, id]);
9157
- var handleRetry = React.useCallback(function () { return uploadFile(id); }, [uploadFile, id]);
9158
- var file = fileUploads[id];
9159
- var state = useFileState(file);
9160
- if (!file)
9161
- return null;
9162
- return (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-file', "data-testid": 'attachment-preview-file' },
9163
- React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-file-icon' },
9164
- React__default["default"].createElement(reactFileUtils.FileIcon, { filename: file.file.name, mimeType: file.file.type, version: '2' })),
9165
- React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-delete', "data-testid": 'file-preview-item-delete-button', disabled: state.uploading, onClick: handleRemove },
9166
- React__default["default"].createElement(CloseIcon$1, null)),
9167
- state.failed && (React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-error str-chat__attachment-preview-error-file', "data-testid": 'file-preview-item-retry-button', onClick: handleRetry },
9168
- React__default["default"].createElement(RetryIcon, null))),
9169
- React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-file-end' },
9170
- React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-file-name' }, file.file.name),
9171
- state.finished && (React__default["default"].createElement("a", { className: 'str-chat__attachment-preview-file-download', download: true, href: file.url, rel: 'noreferrer', target: '_blank' },
9172
- React__default["default"].createElement(DownloadIcon, null))),
9173
- state.uploading && React__default["default"].createElement(LoadingIndicatorIcon, { size: 17 }))));
9174
- };
9175
-
9176
- var CooldownTimer = function (_a) {
9177
- var cooldownInterval = _a.cooldownInterval, setCooldownRemaining = _a.setCooldownRemaining;
9178
- var _b = React.useState(cooldownInterval), seconds = _b[0], setSeconds = _b[1];
9179
- React.useEffect(function () {
9180
- var countdownInterval = setInterval(function () {
9181
- if (seconds > 0) {
9182
- setSeconds(seconds - 1);
9183
- }
9184
- else {
9185
- setCooldownRemaining(0);
9186
- }
9187
- }, 1000);
9188
- return function () { return clearInterval(countdownInterval); };
9189
- });
9190
- return (React__default["default"].createElement("div", { className: 'str-chat__message-input-cooldown', "data-testid": 'cooldown-timer' }, seconds === 0 ? null : seconds));
9191
- };
9192
-
9193
9193
  var MessageInputFlat = function () {
9194
9194
  var quotedMessage = useChannelStateContext('MessageInputFlat').quotedMessage;
9195
9195
  var setQuotedMessage = useChannelActionContext('MessageInputFlat').setQuotedMessage;
@@ -12648,7 +12648,7 @@ var UnMemoizedChannelList = function (props) {
12648
12648
  */
12649
12649
  var ChannelList = React__default["default"].memo(UnMemoizedChannelList);
12650
12650
 
12651
- var version = '10.1.0';
12651
+ var version = '10.1.2';
12652
12652
 
12653
12653
  var useChat = function (_a) {
12654
12654
  var _b, _c;
@@ -13224,7 +13224,7 @@ notifications) {
13224
13224
  var t = useTranslationContext('usePinHandler').t;
13225
13225
  var canPin = !!channelCapabilities['pin-message'];
13226
13226
  var handlePin = function (event) { return __awaiter$1(void 0, void 0, void 0, function () {
13227
- var optimisticMessage, messageResponse, errorMessage, optimisticMessage, messageResponse, errorMessage;
13227
+ var optimisticMessage, errorMessage, optimisticMessage, errorMessage;
13228
13228
  return __generator$1(this, function (_a) {
13229
13229
  switch (_a.label) {
13230
13230
  case 0:
@@ -13239,8 +13239,7 @@ notifications) {
13239
13239
  updateMessage(optimisticMessage);
13240
13240
  return [4 /*yield*/, client.pinMessage(message)];
13241
13241
  case 2:
13242
- messageResponse = _a.sent();
13243
- updateMessage(messageResponse.message);
13242
+ _a.sent();
13244
13243
  return [3 /*break*/, 4];
13245
13244
  case 3:
13246
13245
  _a.sent();
@@ -13256,8 +13255,7 @@ notifications) {
13256
13255
  updateMessage(optimisticMessage);
13257
13256
  return [4 /*yield*/, client.unpinMessage(message)];
13258
13257
  case 6:
13259
- messageResponse = _a.sent();
13260
- updateMessage(messageResponse.message);
13258
+ _a.sent();
13261
13259
  return [3 /*break*/, 8];
13262
13260
  case 7:
13263
13261
  _a.sent();
@@ -14226,16 +14224,17 @@ function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
14226
14224
  }
14227
14225
 
14228
14226
  function usePrependedMessagesCount(messages, hasDateSeparator) {
14229
- var _a;
14230
14227
  var firstRealMessageIndex = hasDateSeparator ? 1 : 0;
14231
- var currentFirstMessageId = (_a = messages === null || messages === void 0 ? void 0 : messages[firstRealMessageIndex]) === null || _a === void 0 ? void 0 : _a.id;
14232
- var firstMessageId = React.useRef(currentFirstMessageId);
14233
- var earliestMessageId = React.useRef(currentFirstMessageId);
14228
+ var firstMessageId = React.useRef();
14229
+ var earliestMessageId = React.useRef();
14234
14230
  var previousNumItemsPrepended = React.useRef(0);
14235
14231
  var numItemsPrepended = React.useMemo(function () {
14232
+ var _a;
14236
14233
  if (!messages || !messages.length) {
14234
+ previousNumItemsPrepended.current = 0;
14237
14235
  return 0;
14238
14236
  }
14237
+ var currentFirstMessageId = (_a = messages === null || messages === void 0 ? void 0 : messages[firstRealMessageIndex]) === null || _a === void 0 ? void 0 : _a.id;
14239
14238
  // if no new messages were prepended, return early (same amount as before)
14240
14239
  if (currentFirstMessageId === earliestMessageId.current) {
14241
14240
  return previousNumItemsPrepended.current;
@@ -14252,8 +14251,9 @@ function usePrependedMessagesCount(messages, hasDateSeparator) {
14252
14251
  return i;
14253
14252
  }
14254
14253
  }
14255
- // if no match has found, we have jumped
14254
+ // if no match has found, we have jumped - reset the prepend item count.
14256
14255
  firstMessageId.current = currentFirstMessageId;
14256
+ previousNumItemsPrepended.current = 0;
14257
14257
  return 0;
14258
14258
  // TODO: there's a bug here, the messages prop is the same array instance (something mutates it)
14259
14259
  // that's why the second dependency is necessary
@@ -14659,6 +14659,7 @@ exports.ActionsIcon = ActionsIcon;
14659
14659
  exports.Attachment = Attachment;
14660
14660
  exports.AttachmentActions = AttachmentActions;
14661
14661
  exports.AttachmentActionsContainer = AttachmentActionsContainer;
14662
+ exports.AttachmentPreviewList = AttachmentPreviewList;
14662
14663
  exports.AttachmentWithinContainer = AttachmentWithinContainer;
14663
14664
  exports.Audio = Audio;
14664
14665
  exports.AudioContainer = AudioContainer;
@@ -14873,6 +14874,7 @@ exports.useChannelDeletedListener = useChannelDeletedListener;
14873
14874
  exports.useChannelEditMessageHandler = useEditMessageHandler;
14874
14875
  exports.useChannelHiddenListener = useChannelHiddenListener;
14875
14876
  exports.useChannelMentionsHandler = useMentionsHandlers;
14877
+ exports.useChannelPreviewInfo = useChannelPreviewInfo;
14876
14878
  exports.useChannelStateContext = useChannelStateContext;
14877
14879
  exports.useChannelTruncatedListener = useChannelTruncatedListener;
14878
14880
  exports.useChannelUpdatedListener = useChannelUpdatedListener;