stream-chat-react 10.4.0 → 10.5.0-alpha.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 (59) hide show
  1. package/CHANGELOG.md +2296 -0
  2. package/dist/assets/assets/EmojiOneColor.woff2 +0 -0
  3. package/dist/assets/assets/NotoColorEmoji-flags.woff2 +0 -0
  4. package/dist/assets/assets/Poweredby_100px-White_VertText.png +0 -0
  5. package/dist/assets/assets/str-chat__reaction-list-sprite@1x.png +0 -0
  6. package/dist/assets/assets/str-chat__reaction-list-sprite@2x.png +0 -0
  7. package/dist/assets/assets/str-chat__reaction-list-sprite@3x.png +0 -0
  8. package/dist/browser.full-bundle.js +511 -455
  9. package/dist/browser.full-bundle.js.map +1 -1
  10. package/dist/browser.full-bundle.min.js +4 -4
  11. package/dist/browser.full-bundle.min.js.map +1 -1
  12. package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -1
  13. package/dist/components/Attachment/AttachmentContainer.js +6 -6
  14. package/dist/components/Attachment/attachment-sizing.d.ts.map +1 -1
  15. package/dist/components/Attachment/attachment-sizing.js +17 -9
  16. package/dist/components/Channel/Channel.d.ts.map +1 -1
  17. package/dist/components/Channel/Channel.js +4 -0
  18. package/dist/components/Channel/channelState.d.ts +167 -1
  19. package/dist/components/Channel/channelState.d.ts.map +1 -1
  20. package/dist/components/Message/MessageSimple.d.ts.map +1 -1
  21. package/dist/components/Message/MessageSimple.js +7 -1
  22. package/dist/components/Message/MessageText.js +1 -1
  23. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
  24. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
  25. package/dist/components/MessageInput/hooks/useSubmitHandler.js +69 -28
  26. package/dist/context/ChannelActionContext.d.ts +2 -1
  27. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  28. package/dist/context/ChannelStateContext.d.ts +14 -1
  29. package/dist/context/ChannelStateContext.d.ts.map +1 -1
  30. package/dist/css/index.css +1 -1
  31. package/dist/css/index.css.map +1 -1
  32. package/dist/css/v2/index.css +5478 -1
  33. package/dist/css/v2/index.css.map +1 -1
  34. package/dist/css/v2/index.layout.css +1 -1
  35. package/dist/css/v2/index.layout.css.map +1 -1
  36. package/dist/index.cjs.js +101 -45
  37. package/dist/index.cjs.js.map +1 -1
  38. package/dist/scss/Attachment.scss +20 -45
  39. package/dist/scss/Audio.scss +0 -1
  40. package/dist/scss/ChannelList.scss +0 -14
  41. package/dist/scss/ChannelSearch.scss +8 -8
  42. package/dist/scss/Message.scss +41 -26
  43. package/dist/scss/MessageCommerce.scss +1 -1
  44. package/dist/scss/Thread.scss +2 -39
  45. package/dist/scss/VirtualMessage.scss +6 -2
  46. package/dist/scss/v2/AttachmentList/AttachmentList-layout.scss +18 -13
  47. package/dist/scss/v2/ChannelList/ChannelList-layout.scss +0 -14
  48. package/dist/scss/v2/ChannelSearch/ChannelSearch-layout.scss +51 -68
  49. package/dist/scss/v2/ChannelSearch/ChannelSearch-theme.scss +0 -48
  50. package/dist/scss/v2/MessageList/MessageList-layout.scss +4 -1
  51. package/dist/scss/v2/MessageList/VirtualizedMessageList-layout.scss +0 -21
  52. package/dist/scss/v2/MessageList/VirtualizedMessageList-theme.scss +0 -9
  53. package/dist/scss/v2/Notification/NotificationList-theme.scss +2 -2
  54. package/dist/scss/v2/Tooltip/Tooltip-layout.scss +1 -1
  55. package/dist/scss/v2/_utils.scss +8 -4
  56. package/dist/version.d.ts +1 -1
  57. package/dist/version.d.ts.map +1 -1
  58. package/dist/version.js +1 -1
  59. package/package.json +1 -1
package/dist/index.cjs.js CHANGED
@@ -28,10 +28,10 @@ require('dayjs/locale/tr');
28
28
  require('dayjs/locale/en');
29
29
  var ImageGallery = require('react-image-gallery');
30
30
  var reactFileUtils = require('react-file-utils');
31
+ var linkify = require('linkifyjs');
31
32
  var _defineProperty$2 = require('@babel/runtime/helpers/defineProperty');
32
33
  var _slicedToArray$2 = require('@babel/runtime/helpers/slicedToArray');
33
34
  var emojiRegex = require('emoji-regex');
34
- var linkify = require('linkifyjs');
35
35
  var nanoid = require('nanoid');
36
36
  var uniqBy = require('lodash.uniqby');
37
37
  var PropTypes = require('prop-types');
@@ -89,10 +89,10 @@ var updateLocale__default = /*#__PURE__*/_interopDefaultLegacy(updateLocale);
89
89
  var localeData__default = /*#__PURE__*/_interopDefaultLegacy(localeData);
90
90
  var relativeTime__default = /*#__PURE__*/_interopDefaultLegacy(relativeTime);
91
91
  var ImageGallery__default = /*#__PURE__*/_interopDefaultLegacy(ImageGallery);
92
+ var linkify__namespace = /*#__PURE__*/_interopNamespace(linkify);
92
93
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty$2);
93
94
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray$2);
94
95
  var emojiRegex__default = /*#__PURE__*/_interopDefaultLegacy(emojiRegex);
95
- var linkify__namespace = /*#__PURE__*/_interopNamespace(linkify);
96
96
  var uniqBy__default = /*#__PURE__*/_interopDefaultLegacy(uniqBy);
97
97
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
98
98
  var ReactIs__default = /*#__PURE__*/_interopDefaultLegacy(ReactIs);
@@ -1746,12 +1746,11 @@ var AttachmentActionsContainer = function (_a) {
1746
1746
  return (React__default["default"].createElement(AttachmentActions$1, __assign({}, attachment, { actionHandler: actionHandler, actions: attachment.actions, id: attachment.id || '', text: attachment.text || '' })));
1747
1747
  };
1748
1748
  function getCssDimensionsVariables(url) {
1749
- var _a;
1750
- var cssVars = (_a = {},
1751
- _a['--original-height'] = 1000000,
1752
- _a['--original-width'] = 1000000,
1753
- _a);
1754
- if (url) {
1749
+ var cssVars = {
1750
+ '--original-height': 1000000,
1751
+ '--original-width': 1000000,
1752
+ };
1753
+ if (linkify__namespace.test(url, 'url')) {
1755
1754
  var urlParams = new URL(url).searchParams;
1756
1755
  var oh = Number(urlParams.get('oh'));
1757
1756
  var ow = Number(urlParams.get('ow'));
@@ -27865,7 +27864,7 @@ var UnMemoizedMessageTextComponent = function (props) {
27865
27864
  ? " str-chat__message-".concat(theme, "-text-inner--is-emoji")
27866
27865
  : '', "\n ").trim(), "data-testid": 'message-text-inner-wrapper', onClick: onMentionsClickMessage, onMouseOver: onMentionsHoverMessage },
27867
27866
  message.quoted_message && React__default["default"].createElement(QuotedMessage$1, null),
27868
- message.type === 'error' && (React__default["default"].createElement("div", { className: "str-chat__".concat(theme, "-message--error-message str-chat__message--error-message") }, t('Error · Unsent'))),
27867
+ message.type === 'error' && (React__default["default"].createElement("div", { className: "str-chat__".concat(theme, "-message--error-message str-chat__message--error-message") }, message.moderation_details ? 'Error - moderated' : t('Error · Unsent'))),
27869
27868
  message.status === 'failed' && (React__default["default"].createElement("div", { className: "str-chat__".concat(theme, "-message--error-message str-chat__message--error-message") }, message.errorStatusCode !== 403
27870
27869
  ? t('Message Failed · Click to try again')
27871
27870
  : t('Message Failed · Unauthorized'))),
@@ -30772,7 +30771,7 @@ var useSubmitHandler = function (props, state, dispatch, numberOfUploads) {
30772
30771
  var clearEditingState = props.clearEditingState, message = props.message, overrideSubmitHandler = props.overrideSubmitHandler, parent = props.parent, publishTypingEvent = props.publishTypingEvent;
30773
30772
  var attachments = state.attachments, fileOrder = state.fileOrder, fileUploads = state.fileUploads, imageOrder = state.imageOrder, imageUploads = state.imageUploads, mentioned_users = state.mentioned_users, text = state.text;
30774
30773
  var channel = useChannelStateContext('useSubmitHandler').channel;
30775
- var _a = useChannelActionContext('useSubmitHandler'), addNotification = _a.addNotification, editMessage = _a.editMessage, sendMessage = _a.sendMessage;
30774
+ var _a = useChannelActionContext('useSubmitHandler'), addNotification = _a.addNotification, editMessage = _a.editMessage, removeMessage = _a.removeMessage, sendMessage = _a.sendMessage;
30776
30775
  var t = useTranslationContext('useSubmitHandler').t;
30777
30776
  var textReference = React.useRef({ hasChanged: false, initialText: text });
30778
30777
  React.useEffect(function () {
@@ -30855,42 +30854,83 @@ var useSubmitHandler = function (props, state, dispatch, numberOfUploads) {
30855
30854
  mentioned_users: actualMentionedUsers,
30856
30855
  text: text,
30857
30856
  };
30858
- if (!message) return [3 /*break*/, 5];
30859
- delete message.i18n;
30857
+ if (!(message && message.moderation_details)) return [3 /*break*/, 11];
30860
30858
  _a.label = 1;
30861
30859
  case 1:
30862
- _a.trys.push([1, 3, , 4]);
30863
- return [4 /*yield*/, editMessage(__assign(__assign(__assign({}, message), updatedMessage), customMessageData))];
30860
+ _a.trys.push([1, 8, 9, 10]);
30861
+ removeMessage(message);
30862
+ dispatch({ type: 'clear' });
30863
+ if (!overrideSubmitHandler) return [3 /*break*/, 3];
30864
+ return [4 /*yield*/, overrideSubmitHandler(__assign(__assign({}, updatedMessage), { parent: parent }), channel.cid, customMessageData)];
30864
30865
  case 2:
30866
+ _a.sent();
30867
+ return [3 /*break*/, 5];
30868
+ case 3: return [4 /*yield*/, sendMessage(__assign(__assign({}, updatedMessage), { parent: parent }), customMessageData)];
30869
+ case 4:
30870
+ _a.sent();
30871
+ _a.label = 5;
30872
+ case 5:
30873
+ if (!publishTypingEvent) return [3 /*break*/, 7];
30874
+ return [4 /*yield*/, channel.stopTyping()];
30875
+ case 6:
30876
+ _a.sent();
30877
+ _a.label = 7;
30878
+ case 7: return [3 /*break*/, 10];
30879
+ case 8:
30880
+ _a.sent();
30881
+ dispatch({
30882
+ getNewText: function () { return text; },
30883
+ type: 'setText',
30884
+ });
30885
+ if (actualMentionedUsers.length) {
30886
+ actualMentionedUsers.forEach(function (user) {
30887
+ dispatch({ type: 'addMentionedUser', user: user });
30888
+ });
30889
+ }
30890
+ addNotification(t('Send message request failed'), 'error');
30891
+ return [3 /*break*/, 10];
30892
+ case 9:
30893
+ if (clearEditingState)
30894
+ clearEditingState();
30895
+ return [7 /*endfinally*/];
30896
+ case 10: return [3 /*break*/, 24];
30897
+ case 11:
30898
+ if (!message) return [3 /*break*/, 16];
30899
+ delete message.i18n;
30900
+ _a.label = 12;
30901
+ case 12:
30902
+ _a.trys.push([12, 14, , 15]);
30903
+ return [4 /*yield*/, editMessage(__assign(__assign(__assign({}, message), updatedMessage), customMessageData))];
30904
+ case 13:
30865
30905
  _a.sent();
30866
30906
  clearEditingState === null || clearEditingState === void 0 ? void 0 : clearEditingState();
30867
30907
  dispatch({ type: 'clear' });
30868
- return [3 /*break*/, 4];
30869
- case 3:
30908
+ return [3 /*break*/, 15];
30909
+ case 14:
30870
30910
  _a.sent();
30871
30911
  addNotification(t('Edit message request failed'), 'error');
30872
- return [3 /*break*/, 4];
30873
- case 4: return [3 /*break*/, 13];
30874
- case 5:
30875
- _a.trys.push([5, 12, , 13]);
30912
+ return [3 /*break*/, 15];
30913
+ case 15: return [3 /*break*/, 24];
30914
+ case 16:
30915
+ _a.trys.push([16, 23, , 24]);
30876
30916
  dispatch({ type: 'clear' });
30877
- if (!overrideSubmitHandler) return [3 /*break*/, 7];
30917
+ if (!overrideSubmitHandler) return [3 /*break*/, 18];
30878
30918
  return [4 /*yield*/, overrideSubmitHandler(__assign(__assign({}, updatedMessage), { parent: parent }), channel.cid, customMessageData)];
30879
- case 6:
30919
+ case 17:
30880
30920
  _a.sent();
30881
- return [3 /*break*/, 9];
30882
- case 7: return [4 /*yield*/, sendMessage(__assign(__assign({}, updatedMessage), { parent: parent }), customMessageData)];
30883
- case 8:
30921
+ return [3 /*break*/, 20];
30922
+ case 18: return [4 /*yield*/, sendMessage(__assign(__assign({}, updatedMessage), { parent: parent }), customMessageData)];
30923
+ case 19:
30884
30924
  _a.sent();
30885
- _a.label = 9;
30886
- case 9:
30887
- if (!publishTypingEvent) return [3 /*break*/, 11];
30925
+ _a.label = 20;
30926
+ case 20:
30927
+ if (!publishTypingEvent) return [3 /*break*/, 22];
30888
30928
  return [4 /*yield*/, channel.stopTyping()];
30889
- case 10:
30929
+ case 21:
30890
30930
  _a.sent();
30891
- _a.label = 11;
30892
- case 11: return [3 /*break*/, 13];
30893
- case 12:
30931
+ _a.label = 22;
30932
+ case 22: return [3 /*break*/, 24];
30933
+ case 23:
30894
30934
  _a.sent();
30895
30935
  dispatch({
30896
30936
  getNewText: function () { return text; },
@@ -30900,8 +30940,8 @@ var useSubmitHandler = function (props, state, dispatch, numberOfUploads) {
30900
30940
  dispatch({ type: 'addMentionedUser', user: user });
30901
30941
  });
30902
30942
  addNotification(t('Send message request failed'), 'error');
30903
- return [3 /*break*/, 13];
30904
- case 13: return [2 /*return*/];
30943
+ return [3 /*break*/, 24];
30944
+ case 24: return [2 /*return*/];
30905
30945
  }
30906
30946
  });
30907
30947
  }); };
@@ -31606,8 +31646,9 @@ var SimpleReactionsList = React__default["default"].memo(UnMemoizedSimpleReactio
31606
31646
 
31607
31647
  var MessageSimpleWithContext = function (props) {
31608
31648
  var _a;
31609
- var additionalMessageInputProps = props.additionalMessageInputProps, clearEditingState = props.clearEditingState, editing = props.editing, endOfGroup = props.endOfGroup, firstOfGroup = props.firstOfGroup, groupedByUser = props.groupedByUser, handleAction = props.handleAction, handleOpenThread = props.handleOpenThread, handleRetry = props.handleRetry, highlighted = props.highlighted, isMyMessage = props.isMyMessage, isReactionEnabled = props.isReactionEnabled, message = props.message, onUserClick = props.onUserClick, onUserHover = props.onUserHover, reactionSelectorRef = props.reactionSelectorRef, renderText = props.renderText, showDetailedReactions = props.showDetailedReactions, threadList = props.threadList;
31649
+ var additionalMessageInputProps = props.additionalMessageInputProps, clearEditingState = props.clearEditingState, editing = props.editing, endOfGroup = props.endOfGroup, firstOfGroup = props.firstOfGroup, groupedByUser = props.groupedByUser, handleAction = props.handleAction, handleOpenThread = props.handleOpenThread, handleRetry = props.handleRetry, highlighted = props.highlighted, isMyMessage = props.isMyMessage, isReactionEnabled = props.isReactionEnabled, message = props.message, onUserClick = props.onUserClick, onUserHover = props.onUserHover, reactionSelectorRef = props.reactionSelectorRef, renderText = props.renderText, setEditingState = props.setEditingState, showDetailedReactions = props.showDetailedReactions, threadList = props.threadList;
31610
31650
  var _b = useComponentContext('MessageSimple'), Attachment = _b.Attachment, _c = _b.Avatar, Avatar$1 = _c === void 0 ? Avatar : _c, _d = _b.EditMessageInput, EditMessageInput = _d === void 0 ? EditMessageForm : _d, _e = _b.MessageDeleted, MessageDeleted$1 = _e === void 0 ? MessageDeleted : _e, _f = _b.MessageOptions, MessageOptions$1 = _f === void 0 ? MessageOptions : _f, _g = _b.MessageRepliesCountButton, MessageRepliesCountButton$1 = _g === void 0 ? MessageRepliesCountButton : _g, _h = _b.MessageStatus, MessageStatus$1 = _h === void 0 ? MessageStatus : _h, _j = _b.MessageTimestamp, MessageTimestamp$1 = _j === void 0 ? MessageTimestamp : _j, _k = _b.ReactionSelector, ReactionSelector$1 = _k === void 0 ? ReactionSelector : _k, _l = _b.ReactionsList, ReactionsList$1 = _l === void 0 ? ReactionsList : _l;
31651
+ var removeMessage = useChannelActionContext('useSubmitHandler').removeMessage;
31611
31652
  var themeVersion = useChatContext('MessageSimple').themeVersion;
31612
31653
  var hasAttachment = messageHasAttachments(message);
31613
31654
  var hasReactions = messageHasReactions(message);
@@ -31658,6 +31699,10 @@ var MessageSimpleWithContext = function (props) {
31658
31699
  showMetadata && themeVersion === '2' && (React__default["default"].createElement("div", { className: 'str-chat__message-data str-chat__message-simple-data str-chat__message-metadata' },
31659
31700
  React__default["default"].createElement(MessageStatus$1, null),
31660
31701
  !isMyMessage() && !!message.user && (React__default["default"].createElement("span", { className: 'str-chat__message-simple-name' }, message.user.name || message.user.id)),
31702
+ message.moderation_details && (React__default["default"].createElement("div", { className: 'str-chat__message-moderation-error-actions-box' },
31703
+ React__default["default"].createElement("button", { onClick: function () { return removeMessage(message); } }, 'Remove'),
31704
+ React__default["default"].createElement("button", { onClick: function () { return handleRetry(message); } }, 'Send anyway'),
31705
+ React__default["default"].createElement("button", { className: 'str-chat__message-moderation-error-actions-box--primary', onClick: function (e) { return setEditingState(e); } }, 'Edit'))),
31661
31706
  React__default["default"].createElement(MessageTimestamp$1, { calendar: true, customClass: 'str-chat__message-simple-timestamp' }))))));
31662
31707
  };
31663
31708
  var MemoizedMessageSimple = React__default["default"].memo(MessageSimpleWithContext, areMessageUIPropsEqual);
@@ -31940,21 +31985,28 @@ var useChannelContainerClasses = function (_a) {
31940
31985
  };
31941
31986
 
31942
31987
  var getImageAttachmentConfiguration = function (attachment, element) {
31943
- var url = new URL((attachment.image_url || attachment.thumb_url || ''));
31944
- var resizeDimensions = getSizingRestrictions(url, element);
31945
- if (resizeDimensions) {
31946
- // Apply 2x for retina displays
31947
- resizeDimensions.height *= 2;
31948
- resizeDimensions.width *= 2;
31949
- addResizingParamsToUrl(resizeDimensions, url);
31988
+ var newUrl = undefined;
31989
+ var urlToTest = attachment.image_url || attachment.thumb_url || '';
31990
+ if (linkify__namespace.test(urlToTest, 'url')) {
31991
+ var url = new URL(urlToTest);
31992
+ var resizeDimensions = getSizingRestrictions(url, element);
31993
+ if (resizeDimensions) {
31994
+ // Apply 2x for retina displays
31995
+ resizeDimensions.height *= 2;
31996
+ resizeDimensions.width *= 2;
31997
+ addResizingParamsToUrl(resizeDimensions, url);
31998
+ }
31999
+ newUrl = url.href;
31950
32000
  }
31951
32001
  return {
31952
- url: url.href,
32002
+ url: newUrl || '',
31953
32003
  };
31954
32004
  };
31955
32005
  var getVideoAttachmentConfiguration = function (attachment, element, shouldGenerateVideoThumbnail) {
31956
32006
  var thumbUrl = undefined;
31957
- if (attachment.thumb_url && shouldGenerateVideoThumbnail) {
32007
+ if (attachment.thumb_url &&
32008
+ shouldGenerateVideoThumbnail &&
32009
+ linkify__namespace.test(attachment.thumb_url, 'url')) {
31958
32010
  var url = new URL(attachment.thumb_url);
31959
32011
  var resizeDimensions = getSizingRestrictions(url, element);
31960
32012
  if (resizeDimensions) {
@@ -32339,6 +32391,10 @@ var ChannelInner = function (props) {
32339
32391
  });
32340
32392
  }); };
32341
32393
  var updateMessage = function (updatedMessage) {
32394
+ var _a;
32395
+ if (updatedMessage.moderation_details) {
32396
+ updatedMessage.text = (_a = updatedMessage.moderation_details) === null || _a === void 0 ? void 0 : _a.original_text;
32397
+ }
32342
32398
  // add the message to the local channel state
32343
32399
  channel.state.addMessageSorted(updatedMessage, true);
32344
32400
  dispatch({
@@ -33765,7 +33821,7 @@ var UnMemoizedChannelList = function (props) {
33765
33821
  */
33766
33822
  var ChannelList = React__default["default"].memo(UnMemoizedChannelList);
33767
33823
 
33768
- var version = '10.4.0';
33824
+ var version = '10.5.0-alpha.0';
33769
33825
 
33770
33826
  var useChat = function (_a) {
33771
33827
  var _b, _c;