stream-chat-react 8.1.3-beta.1 → 9.0.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 (49) hide show
  1. package/dist/browser.full-bundle.js +178 -250
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +4 -4
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Attachment/utils.js +2 -2
  6. package/dist/components/AutoCompleteTextarea/Textarea.d.ts +2 -1
  7. package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
  8. package/dist/components/AutoCompleteTextarea/Textarea.js +10 -17
  9. package/dist/components/Channel/Channel.js +2 -2
  10. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +2 -2
  11. package/dist/components/Channel/utils.js +2 -2
  12. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  13. package/dist/components/ChannelPreview/ChannelPreview.js +20 -4
  14. package/dist/components/ChatAutoComplete/ChatAutoComplete.js +1 -1
  15. package/dist/components/Message/utils.d.ts.map +1 -1
  16. package/dist/components/Message/utils.js +5 -10
  17. package/dist/components/MessageInput/MessageInput.d.ts +12 -8
  18. package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
  19. package/dist/components/MessageInput/hooks/useAttachments.js +2 -2
  20. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +2 -2
  21. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
  22. package/dist/components/MessageInput/hooks/useMessageInputState.js +24 -27
  23. package/dist/components/MessageInput/hooks/usePasteHandler.d.ts +1 -1
  24. package/dist/components/MessageInput/hooks/usePasteHandler.d.ts.map +1 -1
  25. package/dist/components/MessageInput/hooks/usePasteHandler.js +3 -1
  26. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
  27. package/dist/components/MessageInput/hooks/useSubmitHandler.js +17 -15
  28. package/dist/components/MessageList/utils.js +3 -3
  29. package/dist/components/Thread/Thread.js +50 -10
  30. package/dist/index.cjs.js +116 -105
  31. package/dist/index.cjs.js.map +1 -1
  32. package/dist/stories/{connected-user.stories.d.ts → add-message.stories.d.ts} +1 -1
  33. package/dist/stories/add-message.stories.d.ts.map +1 -0
  34. package/dist/stories/{connected-user.stories.js → add-message.stories.js} +4 -3
  35. package/dist/stories/jump-to-message.stories.d.ts.map +1 -1
  36. package/dist/stories/jump-to-message.stories.js +0 -3
  37. package/dist/stories/mark-read.stories.d.ts.map +1 -1
  38. package/dist/stories/mark-read.stories.js +4 -25
  39. package/dist/stories/navigate-long-message-lists.stories.d.ts +4 -0
  40. package/dist/stories/navigate-long-message-lists.stories.d.ts.map +1 -0
  41. package/dist/stories/navigate-long-message-lists.stories.js +167 -0
  42. package/dist/utils.d.ts +5 -1
  43. package/dist/utils.d.ts.map +1 -1
  44. package/dist/utils.js +5 -8
  45. package/dist/version.d.ts +1 -1
  46. package/dist/version.d.ts.map +1 -1
  47. package/dist/version.js +1 -1
  48. package/package.json +6 -5
  49. package/dist/stories/connected-user.stories.d.ts.map +0 -1
package/dist/index.cjs.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
  var ReactPlayer = require('react-player');
7
- var uuid = require('uuid');
7
+ var nanoid = require('nanoid');
8
8
  var sanitizeUrl = require('@braintree/sanitize-url');
9
9
  var Dayjs = require('dayjs');
10
10
  var calendar = require('dayjs/plugin/calendar');
@@ -1148,7 +1148,7 @@ var renderAttachmentWithinContainer = function (props) {
1148
1148
  ? 'actions'
1149
1149
  : '';
1150
1150
  }
1151
- return (React__default['default'].createElement("div", { className: "str-chat__message-attachment str-chat__message-attachment--" + componentType + " str-chat__message-attachment--" + ((attachment === null || attachment === void 0 ? void 0 : attachment.type) || '') + " str-chat__message-attachment--" + componentType + "--" + extra, key: (isGalleryAttachmentType(attachment) ? '' : (attachment === null || attachment === void 0 ? void 0 : attachment.id) || uuid.v4()) + "-" + ((attachment === null || attachment === void 0 ? void 0 : attachment.type) || 'none') + " " }, children));
1151
+ return (React__default['default'].createElement("div", { className: "str-chat__message-attachment str-chat__message-attachment--" + componentType + " str-chat__message-attachment--" + ((attachment === null || attachment === void 0 ? void 0 : attachment.type) || '') + " str-chat__message-attachment--" + componentType + "--" + extra, key: (isGalleryAttachmentType(attachment) ? '' : (attachment === null || attachment === void 0 ? void 0 : attachment.id) || nanoid.nanoid()) + "-" + ((attachment === null || attachment === void 0 ? void 0 : attachment.type) || 'none') + " " }, children));
1152
1152
  };
1153
1153
  var renderAttachmentActions = function (props) {
1154
1154
  var _a;
@@ -1491,14 +1491,10 @@ var renderText = function (text, mentioned_users, options) {
1491
1491
  function escapeRegExp(text) {
1492
1492
  return text.replace(/[-[\]{}()*+?.,\\^$|#]/g, '\\$&');
1493
1493
  }
1494
- function S4() {
1495
- return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
1496
- }
1497
- // https://stackoverflow.com/a/6860916/2570866
1498
- function generateRandomId() {
1499
- // prettier-ignore
1500
- return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
1501
- }
1494
+ /**
1495
+ * @deprecated will be removed in the next major release
1496
+ */
1497
+ var generateRandomId = nanoid.nanoid;
1502
1498
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt#getting_whole_characters
1503
1499
  var getWholeChar = function (str, i) {
1504
1500
  var code = str.charCodeAt(i);
@@ -1871,10 +1867,14 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
1871
1867
  return _this.textareaRef.selectionEnd;
1872
1868
  });
1873
1869
 
1870
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_defaultShouldSubmit", function (event) {
1871
+ return event.key === 'Enter' && !event.shiftKey;
1872
+ });
1873
+
1874
1874
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_handleKeyDown", function (event) {
1875
- var _this$props$keycodeSu = _this.props.keycodeSubmitKeys,
1876
- submitKeys = _this$props$keycodeSu === void 0 ? [] : _this$props$keycodeSu;
1877
- if (event.key === 'Enter' || submitKeys.includes(event.key)) return _this._onEnter(event);
1875
+ var _this$props$shouldSub = _this.props.shouldSubmit,
1876
+ shouldSubmit = _this$props$shouldSub === void 0 ? _this._defaultShouldSubmit : _this$props$shouldSub;
1877
+ if (shouldSubmit !== null && shouldSubmit !== void 0 && shouldSubmit(event)) return _this._onEnter(event);
1878
1878
  if (event.key === ' ') return _this._onSpace(event);
1879
1879
  if (event.key === 'Escape') return _this._closeAutocomplete();
1880
1880
  });
@@ -1883,13 +1883,6 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
1883
1883
  if (!_this.textareaRef) return;
1884
1884
  var trigger = _this.state.currentTrigger;
1885
1885
 
1886
- var hasFocus = _this.textareaRef.matches(':focus'); // Don't submit if the element doesn't have focus or the shift key is pressed, unless shift+Enter were provided as submit keys
1887
-
1888
-
1889
- if (!hasFocus || event.shiftKey === true && !_this.keycodeSubmitShiftE || event.shiftKey === true && !_this.props.keycodeSubmitKeys) {
1890
- return;
1891
- }
1892
-
1893
1886
  if (!trigger || !_this.state.data) {
1894
1887
  // trigger a submit
1895
1888
  _this._replaceWord();
@@ -2156,7 +2149,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
2156
2149
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_cleanUpProps", function () {
2157
2150
  var props = _objectSpread({}, _this.props);
2158
2151
 
2159
- var notSafe = ['additionalTextareaProps', 'className', 'closeCommandsList', 'closeMentionsList', 'closeOnClickOutside', 'containerClassName', 'containerStyle', 'disableMentions', 'dropdownClassName', 'dropdownStyle', 'grow', 'handleSubmit', 'innerRef', 'itemClassName', 'itemStyle', 'keycodeSubmitKeys', 'listClassName', 'listStyle', 'loaderClassName', 'loaderStyle', 'loadingComponent', 'minChar', 'movePopupAsYouType', 'onCaretPositionChange', 'onChange', 'ref', 'replaceWord', 'scrollToItem', 'showCommandsList', 'showMentionsList', 'SuggestionItem', 'SuggestionList', 'trigger', 'value']; // eslint-disable-next-line
2152
+ var notSafe = ['additionalTextareaProps', 'className', 'closeCommandsList', 'closeMentionsList', 'closeOnClickOutside', 'containerClassName', 'containerStyle', 'disableMentions', 'dropdownClassName', 'dropdownStyle', 'grow', 'handleSubmit', 'innerRef', 'itemClassName', 'itemStyle', 'listClassName', 'listStyle', 'loaderClassName', 'loaderStyle', 'loadingComponent', 'minChar', 'movePopupAsYouType', 'onCaretPositionChange', 'onChange', 'ref', 'replaceWord', 'scrollToItem', 'shouldSubmit', 'showCommandsList', 'showMentionsList', 'SuggestionItem', 'SuggestionList', 'trigger', 'value']; // eslint-disable-next-line
2160
2153
 
2161
2154
  for (var prop in props) {
2162
2155
  if (notSafe.includes(prop)) delete props[prop];
@@ -2168,8 +2161,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
2168
2161
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_isCommand", function (text) {
2169
2162
  if (text[0] !== '/') return false;
2170
2163
  var tokens = text.split(' ');
2171
- if (tokens.length > 1) return false;
2172
- return true;
2164
+ return tokens.length <= 1;
2173
2165
  });
2174
2166
 
2175
2167
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_changeHandler", function (e) {
@@ -2375,9 +2367,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
2375
2367
  currentTrigger: null,
2376
2368
  data: null,
2377
2369
  dataLoading: false,
2378
- keycodeSubmitShiftE: false,
2379
2370
  left: null,
2380
- listenerIndex: {},
2381
2371
  selectionEnd: 0,
2382
2372
  selectionStart: 0,
2383
2373
  top: null,
@@ -2436,7 +2426,10 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
2436
2426
  var _this$state7 = this.state,
2437
2427
  dataLoading = _this$state7.dataLoading,
2438
2428
  value = _this$state7.value;
2439
- if (!this.props.grow) maxRows = 1;
2429
+ if (!this.props.grow) maxRows = 1; // By setting defaultValue to undefined, avoid error:
2430
+ // ForwardRef(TextareaAutosize) contains a textarea with both value and defaultValue props.
2431
+ // Textarea elements must be either controlled or uncontrolled
2432
+
2440
2433
  return /*#__PURE__*/React__default['default'].createElement("div", {
2441
2434
  className: "rta ".concat(dataLoading === true ? 'rta--loading' : '', " ").concat(containerClassName || ''),
2442
2435
  style: containerStyle
@@ -2458,7 +2451,9 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
2458
2451
  },
2459
2452
  style: style,
2460
2453
  value: value
2461
- }, this.props.additionalTextareaProps)));
2454
+ }, this.props.additionalTextareaProps, {
2455
+ defaultValue: undefined
2456
+ })));
2462
2457
  }
2463
2458
  }], [{
2464
2459
  key: "getDerivedStateFromProps",
@@ -2504,7 +2499,6 @@ ReactTextareaAutocomplete.propTypes = {
2504
2499
  dropdownStyle: PropTypes__default['default'].object,
2505
2500
  itemClassName: PropTypes__default['default'].string,
2506
2501
  itemStyle: PropTypes__default['default'].object,
2507
- keycodeSubmitKeys: PropTypes__default['default'].array,
2508
2502
  listClassName: PropTypes__default['default'].string,
2509
2503
  listStyle: PropTypes__default['default'].object,
2510
2504
  loaderClassName: PropTypes__default['default'].string,
@@ -2515,6 +2509,7 @@ ReactTextareaAutocomplete.propTypes = {
2515
2509
  onCaretPositionChange: PropTypes__default['default'].func,
2516
2510
  onChange: PropTypes__default['default'].func,
2517
2511
  onSelect: PropTypes__default['default'].func,
2512
+ shouldSubmit: PropTypes__default['default'].func,
2518
2513
  style: PropTypes__default['default'].object,
2519
2514
  SuggestionList: PropTypes__default['default'].elementType,
2520
2515
  trigger: triggerPropsCheck,
@@ -2673,7 +2668,7 @@ var useCreateChannelStateContext = function (value) {
2673
2668
  return type;
2674
2669
  }).join() : '') + pinned + reply_count + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
2675
2670
  ? updated_at.toISOString()
2676
- : updated_at || '') + (user === null || user === void 0 ? void 0 : user.image) + (user === null || user === void 0 ? void 0 : user.name);
2671
+ : updated_at || '') + (user === null || user === void 0 ? void 0 : user.updated_at);
2677
2672
  })
2678
2673
  .join();
2679
2674
  var memoizedThreadMessageData = threadMessages
@@ -2684,7 +2679,7 @@ var useCreateChannelStateContext = function (value) {
2684
2679
  return type;
2685
2680
  }).join() : '') + pinned + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
2686
2681
  ? updated_at.toISOString()
2687
- : updated_at || '') + (user === null || user === void 0 ? void 0 : user.image) + (user === null || user === void 0 ? void 0 : user.name);
2682
+ : updated_at || '') + (user === null || user === void 0 ? void 0 : user.updated_at);
2688
2683
  })
2689
2684
  .join();
2690
2685
  var channelStateContext = React.useMemo(function () { return ({
@@ -3100,7 +3095,7 @@ var showMessageActionsBox = function (actions, inThread) {
3100
3095
  return true;
3101
3096
  };
3102
3097
  var areMessagePropsEqual = function (prevProps, nextProps) {
3103
- var _a, _b, _c, _d, _e, _f, _g, _h;
3098
+ var _a, _b, _c, _d, _e, _f;
3104
3099
  var prevMessage = prevProps.message, prevMessageUI = prevProps.Message;
3105
3100
  var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
3106
3101
  if (prevMessageUI !== nextMessageUI)
@@ -3119,8 +3114,7 @@ var areMessagePropsEqual = function (prevProps, nextProps) {
3119
3114
  prevMessage.text === nextMessage.text &&
3120
3115
  prevMessage.type === nextMessage.type &&
3121
3116
  prevMessage.updated_at === nextMessage.updated_at &&
3122
- ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.image) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.image) &&
3123
- ((_g = prevMessage.user) === null || _g === void 0 ? void 0 : _g.name) === ((_h = nextMessage.user) === null || _h === void 0 ? void 0 : _h.name);
3117
+ ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at);
3124
3118
  if (!messagesAreEqual)
3125
3119
  return false;
3126
3120
  var deepEqualProps = deepequal__default['default'](nextProps.readBy, prevProps.readBy) &&
@@ -3134,7 +3128,7 @@ var areMessagePropsEqual = function (prevProps, nextProps) {
3134
3128
  );
3135
3129
  };
3136
3130
  var areMessageUIPropsEqual = function (prevProps, nextProps) {
3137
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
3131
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
3138
3132
  var prevLastReceivedId = prevProps.lastReceivedId, prevMessage = prevProps.message;
3139
3133
  var nextLastReceivedId = nextProps.lastReceivedId, nextMessage = nextProps.message;
3140
3134
  if (prevProps.editing !== nextProps.editing)
@@ -3154,7 +3148,7 @@ var areMessageUIPropsEqual = function (prevProps, nextProps) {
3154
3148
  prevLastReceivedId !== nextLastReceivedId) {
3155
3149
  return false;
3156
3150
  }
3157
- var messagesAreEqual = prevMessage.deleted_at === nextMessage.deleted_at &&
3151
+ return (prevMessage.deleted_at === nextMessage.deleted_at &&
3158
3152
  ((_e = prevMessage.latest_reactions) === null || _e === void 0 ? void 0 : _e.length) === ((_f = nextMessage.latest_reactions) === null || _f === void 0 ? void 0 : _f.length) &&
3159
3153
  ((_g = prevMessage.own_reactions) === null || _g === void 0 ? void 0 : _g.length) === ((_h = nextMessage.own_reactions) === null || _h === void 0 ? void 0 : _h.length) &&
3160
3154
  prevMessage.pinned === nextMessage.pinned &&
@@ -3163,11 +3157,7 @@ var areMessageUIPropsEqual = function (prevProps, nextProps) {
3163
3157
  prevMessage.text === nextMessage.text &&
3164
3158
  prevMessage.type === nextMessage.type &&
3165
3159
  prevMessage.updated_at === nextMessage.updated_at &&
3166
- ((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.image) === ((_k = nextMessage.user) === null || _k === void 0 ? void 0 : _k.image) &&
3167
- ((_l = prevMessage.user) === null || _l === void 0 ? void 0 : _l.name) === ((_m = nextMessage.user) === null || _m === void 0 ? void 0 : _m.name);
3168
- if (!messagesAreEqual)
3169
- return false;
3170
- return true;
3160
+ ((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.updated_at) === ((_k = nextMessage.user) === null || _k === void 0 ? void 0 : _k.updated_at));
3171
3161
  };
3172
3162
  var messageHasReactions = function (message) { return !!(message === null || message === void 0 ? void 0 : message.latest_reactions) && !!message.latest_reactions.length; };
3173
3163
  var messageHasAttachments = function (message) { return !!(message === null || message === void 0 ? void 0 : message.attachments) && !!message.attachments.length; };
@@ -4746,7 +4736,7 @@ var UnMemoizedChatAutoComplete = function (props) {
4746
4736
  innerRef.current = ref;
4747
4737
  }
4748
4738
  }, [innerRef]);
4749
- return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', keycodeSubmitKeys: messageInput.keycodeSubmitKeys, listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onBlur: props.onBlur, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
4739
+ return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onBlur: props.onBlur, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, shouldSubmit: messageInput.shouldSubmit, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
4750
4740
  };
4751
4741
  var ChatAutoComplete = React__default['default'].memo(UnMemoizedChatAutoComplete);
4752
4742
 
@@ -5074,7 +5064,7 @@ var useAttachments = function (props, state, dispatch, textareaRef) {
5074
5064
  Array.from(files)
5075
5065
  .slice(0, maxFilesLeft)
5076
5066
  .forEach(function (file) {
5077
- var id = generateRandomId();
5067
+ var id = nanoid.nanoid();
5078
5068
  if (file.type.startsWith('image/') &&
5079
5069
  !file.type.endsWith('.photoshop') // photoshop files begin with 'image/'
5080
5070
  ) {
@@ -5325,25 +5315,27 @@ var useSubmitHandler = function (props, state, dispatch, numberOfUploads) {
5325
5315
  _a.sent();
5326
5316
  addNotification(t('Edit message request failed'), 'error');
5327
5317
  return [3 /*break*/, 4];
5328
- case 4: return [3 /*break*/, 12];
5318
+ case 4: return [3 /*break*/, 13];
5329
5319
  case 5:
5330
- _a.trys.push([5, 11, , 12]);
5320
+ _a.trys.push([5, 12, , 13]);
5331
5321
  dispatch({ type: 'clear' });
5332
- if (!overrideSubmitHandler) return [3 /*break*/, 6];
5333
- overrideSubmitHandler(__assign(__assign({}, updatedMessage), { parent: parent }), channel.cid);
5334
- return [3 /*break*/, 8];
5335
- case 6: return [4 /*yield*/, sendMessage(__assign(__assign({}, updatedMessage), { parent: parent }), customMessageData)];
5336
- case 7:
5322
+ if (!overrideSubmitHandler) return [3 /*break*/, 7];
5323
+ return [4 /*yield*/, overrideSubmitHandler(__assign(__assign({}, updatedMessage), { parent: parent }), channel.cid, customMessageData)];
5324
+ case 6:
5337
5325
  _a.sent();
5338
- _a.label = 8;
5326
+ return [3 /*break*/, 9];
5327
+ case 7: return [4 /*yield*/, sendMessage(__assign(__assign({}, updatedMessage), { parent: parent }), customMessageData)];
5339
5328
  case 8:
5340
- if (!publishTypingEvent) return [3 /*break*/, 10];
5341
- return [4 /*yield*/, channel.stopTyping()];
5329
+ _a.sent();
5330
+ _a.label = 9;
5342
5331
  case 9:
5332
+ if (!publishTypingEvent) return [3 /*break*/, 11];
5333
+ return [4 /*yield*/, channel.stopTyping()];
5334
+ case 10:
5343
5335
  _a.sent();
5344
- _a.label = 10;
5345
- case 10: return [3 /*break*/, 12];
5346
- case 11:
5336
+ _a.label = 11;
5337
+ case 11: return [3 /*break*/, 13];
5338
+ case 12:
5347
5339
  _a.sent();
5348
5340
  dispatch({
5349
5341
  getNewText: function () { return text; },
@@ -5355,16 +5347,18 @@ var useSubmitHandler = function (props, state, dispatch, numberOfUploads) {
5355
5347
  });
5356
5348
  }
5357
5349
  addNotification(t('Send message request failed'), 'error');
5358
- return [3 /*break*/, 12];
5359
- case 12: return [2 /*return*/];
5350
+ return [3 /*break*/, 13];
5351
+ case 13: return [2 /*return*/];
5360
5352
  }
5361
5353
  });
5362
5354
  }); };
5363
5355
  return { handleSubmit: handleSubmit };
5364
5356
  };
5365
5357
 
5366
- var usePasteHandler = function (uploadNewFiles, insertText) {
5358
+ var usePasteHandler = function (uploadNewFiles, insertText, isUploadEnabled) {
5367
5359
  var onPaste = React.useCallback(function (clipboardEvent) {
5360
+ if (!isUploadEnabled)
5361
+ return;
5368
5362
  (function (event) { return __awaiter(void 0, void 0, void 0, function () {
5369
5363
  var items, plainTextPromise, _loop_1, i, state_1, fileLikes, pastedText;
5370
5364
  return __generator(this, function (_a) {
@@ -5414,30 +5408,31 @@ var usePasteHandler = function (uploadNewFiles, insertText) {
5414
5408
 
5415
5409
  var emptyFileUploads = {};
5416
5410
  var emptyImageUploads = {};
5411
+ var makeEmptyMessageInputState = function () { return ({
5412
+ attachments: [],
5413
+ emojiPickerIsOpen: false,
5414
+ fileOrder: [],
5415
+ fileUploads: __assign({}, emptyFileUploads),
5416
+ imageOrder: [],
5417
+ imageUploads: __assign({}, emptyImageUploads),
5418
+ mentioned_users: [],
5419
+ setText: function () { return null; },
5420
+ text: '',
5421
+ }); };
5417
5422
  /**
5418
5423
  * Initializes the state. Empty if the message prop is falsy.
5419
5424
  */
5420
5425
  var initState = function (message) {
5421
5426
  var _a, _b, _c;
5422
5427
  if (!message) {
5423
- return {
5424
- attachments: [],
5425
- emojiPickerIsOpen: false,
5426
- fileOrder: [],
5427
- fileUploads: __assign({}, emptyFileUploads),
5428
- imageOrder: [],
5429
- imageUploads: __assign({}, emptyImageUploads),
5430
- mentioned_users: [],
5431
- setText: function () { return null; },
5432
- text: '',
5433
- };
5428
+ return makeEmptyMessageInputState();
5434
5429
  }
5435
5430
  // if message prop is defined, get image uploads, file uploads, text, etc.
5436
5431
  var imageUploads = ((_a = message.attachments) === null || _a === void 0 ? void 0 : _a.filter(function (_a) {
5437
5432
  var type = _a.type;
5438
5433
  return type === 'image';
5439
5434
  }).reduce(function (acc, attachment) {
5440
- var id = generateRandomId();
5435
+ var id = nanoid.nanoid();
5441
5436
  acc[id] = {
5442
5437
  file: {
5443
5438
  name: attachment.fallback || '',
@@ -5453,7 +5448,7 @@ var initState = function (message) {
5453
5448
  var type = _a.type;
5454
5449
  return type === 'file';
5455
5450
  }).reduce(function (acc, attachment) {
5456
- var id = generateRandomId();
5451
+ var id = nanoid.nanoid();
5457
5452
  acc[id] = {
5458
5453
  file: {
5459
5454
  name: attachment.title || '',
@@ -5495,16 +5490,7 @@ var messageInputReducer = function (state, action) {
5495
5490
  case 'setText':
5496
5491
  return __assign(__assign({}, state), { text: action.getNewText(state.text) });
5497
5492
  case 'clear':
5498
- return {
5499
- attachments: [],
5500
- emojiPickerIsOpen: false,
5501
- fileOrder: [],
5502
- fileUploads: __assign({}, emptyFileUploads),
5503
- imageOrder: [],
5504
- imageUploads: __assign({}, emptyImageUploads),
5505
- mentioned_users: [],
5506
- text: '',
5507
- };
5493
+ return makeEmptyMessageInputState();
5508
5494
  case 'setImageUpload': {
5509
5495
  var imageAlreadyExists = state.imageUploads[action.id];
5510
5496
  if (!imageAlreadyExists && !action.file)
@@ -5547,9 +5533,14 @@ var messageInputReducer = function (state, action) {
5547
5533
  * hook for MessageInput state
5548
5534
  */
5549
5535
  var useMessageInputState = function (props) {
5550
- var closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, message = props.message;
5536
+ var additionalTextareaProps = props.additionalTextareaProps, closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, message = props.message;
5551
5537
  var _a = useChannelStateContext('useMessageInputState'), _b = _a.channelCapabilities, channelCapabilities = _b === void 0 ? {} : _b, channelConfig = _a.channelConfig;
5552
- var _c = React.useReducer(messageInputReducer, message, initState), state = _c[0], dispatch = _c[1];
5538
+ var defaultValue = additionalTextareaProps === null || additionalTextareaProps === void 0 ? void 0 : additionalTextareaProps.defaultValue;
5539
+ var initialStateValue = message ||
5540
+ (Array.isArray(defaultValue)
5541
+ ? { text: defaultValue.join('') }
5542
+ : { text: defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.toString() });
5543
+ var _c = React.useReducer(messageInputReducer, initialStateValue, initState), state = _c[0], dispatch = _c[1];
5553
5544
  var _d = useMessageInputText(props, state, dispatch), handleChange = _d.handleChange, insertText = _d.insertText, textareaRef = _d.textareaRef;
5554
5545
  var _e = React.useState(false), showCommandsList = _e[0], setShowCommandsList = _e[1];
5555
5546
  var _f = React.useState(false), showMentionsList = _f[0], setShowMentionsList = _f[1];
@@ -5572,8 +5563,8 @@ var useMessageInputState = function (props) {
5572
5563
  var _g = useEmojiPicker(state, dispatch, insertText, textareaRef, closeEmojiPickerOnClick), closeEmojiPicker = _g.closeEmojiPicker, emojiPickerRef = _g.emojiPickerRef, handleEmojiKeyDown = _g.handleEmojiKeyDown, onSelectEmoji = _g.onSelectEmoji, openEmojiPicker = _g.openEmojiPicker;
5573
5564
  var _h = useAttachments(props, state, dispatch, textareaRef), maxFilesLeft = _h.maxFilesLeft, numberOfUploads = _h.numberOfUploads, removeFile = _h.removeFile, removeImage = _h.removeImage, uploadFile = _h.uploadFile, uploadImage = _h.uploadImage, uploadNewFiles = _h.uploadNewFiles;
5574
5565
  var handleSubmit = useSubmitHandler(props, state, dispatch, numberOfUploads).handleSubmit;
5575
- var onPaste = usePasteHandler(uploadNewFiles, insertText).onPaste;
5576
5566
  var isUploadEnabled = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.uploads) !== false && channelCapabilities['upload-file'] !== false;
5567
+ var onPaste = usePasteHandler(uploadNewFiles, insertText, isUploadEnabled).onPaste;
5577
5568
  var onSelectUser = React.useCallback(function (item) {
5578
5569
  dispatch({ type: 'addMentionedUser', user: item });
5579
5570
  }, []);
@@ -5669,7 +5660,7 @@ var MessageInputFlat = function () {
5669
5660
  };
5670
5661
 
5671
5662
  var useCreateMessageInputContext = function (value) {
5672
- var additionalTextareaProps = value.additionalTextareaProps, attachments = value.attachments, autocompleteTriggers = value.autocompleteTriggers, clearEditingState = value.clearEditingState, closeCommandsList = value.closeCommandsList, closeEmojiPicker = value.closeEmojiPicker, closeMentionsList = value.closeMentionsList, cooldownInterval = value.cooldownInterval, cooldownRemaining = value.cooldownRemaining, disabled = value.disabled, disableMentions = value.disableMentions, doFileUploadRequest = value.doFileUploadRequest, doImageUploadRequest = value.doImageUploadRequest, emojiIndex = value.emojiIndex, emojiPickerIsOpen = value.emojiPickerIsOpen, emojiPickerRef = value.emojiPickerRef, errorHandler = value.errorHandler, fileOrder = value.fileOrder, fileUploads = value.fileUploads, focus = value.focus, grow = value.grow, handleChange = value.handleChange, handleEmojiKeyDown = value.handleEmojiKeyDown, handleSubmit = value.handleSubmit, imageOrder = value.imageOrder, imageUploads = value.imageUploads, insertText = value.insertText, isUploadEnabled = value.isUploadEnabled, keycodeSubmitKeys = value.keycodeSubmitKeys, maxFilesLeft = value.maxFilesLeft, maxRows = value.maxRows, mentionAllAppUsers = value.mentionAllAppUsers, mentioned_users = value.mentioned_users, mentionQueryParams = value.mentionQueryParams, message = value.message, noFiles = value.noFiles, numberOfUploads = value.numberOfUploads, onPaste = value.onPaste, onSelectEmoji = value.onSelectEmoji, onSelectUser = value.onSelectUser, openCommandsList = value.openCommandsList, openEmojiPicker = value.openEmojiPicker, openMentionsList = value.openMentionsList, overrideSubmitHandler = value.overrideSubmitHandler, parent = value.parent, publishTypingEvent = value.publishTypingEvent, removeFile = value.removeFile, removeImage = value.removeImage, setCooldownRemaining = value.setCooldownRemaining, setText = value.setText, showCommandsList = value.showCommandsList, showMentionsList = value.showMentionsList, text = value.text, textareaRef = value.textareaRef, uploadFile = value.uploadFile, uploadImage = value.uploadImage, uploadNewFiles = value.uploadNewFiles, useMentionsTransliteration = value.useMentionsTransliteration;
5663
+ var additionalTextareaProps = value.additionalTextareaProps, attachments = value.attachments, autocompleteTriggers = value.autocompleteTriggers, clearEditingState = value.clearEditingState, closeCommandsList = value.closeCommandsList, closeEmojiPicker = value.closeEmojiPicker, closeMentionsList = value.closeMentionsList, cooldownInterval = value.cooldownInterval, cooldownRemaining = value.cooldownRemaining, disabled = value.disabled, disableMentions = value.disableMentions, doFileUploadRequest = value.doFileUploadRequest, doImageUploadRequest = value.doImageUploadRequest, emojiIndex = value.emojiIndex, emojiPickerIsOpen = value.emojiPickerIsOpen, emojiPickerRef = value.emojiPickerRef, errorHandler = value.errorHandler, fileOrder = value.fileOrder, fileUploads = value.fileUploads, focus = value.focus, grow = value.grow, handleChange = value.handleChange, handleEmojiKeyDown = value.handleEmojiKeyDown, handleSubmit = value.handleSubmit, imageOrder = value.imageOrder, imageUploads = value.imageUploads, insertText = value.insertText, isUploadEnabled = value.isUploadEnabled, maxFilesLeft = value.maxFilesLeft, maxRows = value.maxRows, mentionAllAppUsers = value.mentionAllAppUsers, mentioned_users = value.mentioned_users, mentionQueryParams = value.mentionQueryParams, message = value.message, noFiles = value.noFiles, numberOfUploads = value.numberOfUploads, onPaste = value.onPaste, onSelectEmoji = value.onSelectEmoji, onSelectUser = value.onSelectUser, openCommandsList = value.openCommandsList, openEmojiPicker = value.openEmojiPicker, openMentionsList = value.openMentionsList, overrideSubmitHandler = value.overrideSubmitHandler, parent = value.parent, publishTypingEvent = value.publishTypingEvent, removeFile = value.removeFile, removeImage = value.removeImage, setCooldownRemaining = value.setCooldownRemaining, setText = value.setText, shouldSubmit = value.shouldSubmit, showCommandsList = value.showCommandsList, showMentionsList = value.showMentionsList, text = value.text, textareaRef = value.textareaRef, uploadFile = value.uploadFile, uploadImage = value.uploadImage, uploadNewFiles = value.uploadNewFiles, useMentionsTransliteration = value.useMentionsTransliteration;
5673
5664
  var editing = message === null || message === void 0 ? void 0 : message.editing;
5674
5665
  var fileUploadsValue = Object.entries(fileUploads)
5675
5666
  // eslint-disable-next-line
@@ -5716,7 +5707,6 @@ var useCreateMessageInputContext = function (value) {
5716
5707
  imageUploads: imageUploads,
5717
5708
  insertText: insertText,
5718
5709
  isUploadEnabled: isUploadEnabled,
5719
- keycodeSubmitKeys: keycodeSubmitKeys,
5720
5710
  maxFilesLeft: maxFilesLeft,
5721
5711
  maxRows: maxRows,
5722
5712
  mentionAllAppUsers: mentionAllAppUsers,
@@ -5738,6 +5728,7 @@ var useCreateMessageInputContext = function (value) {
5738
5728
  removeImage: removeImage,
5739
5729
  setCooldownRemaining: setCooldownRemaining,
5740
5730
  setText: setText,
5731
+ shouldSubmit: shouldSubmit,
5741
5732
  showCommandsList: showCommandsList,
5742
5733
  showMentionsList: showMentionsList,
5743
5734
  text: text,
@@ -6148,7 +6139,7 @@ var makeAddNotifications = function (setNotifications, notificationTimeouts) { r
6148
6139
  if (typeof text !== 'string' || (type !== 'success' && type !== 'error')) {
6149
6140
  return;
6150
6141
  }
6151
- var id = uuid.v4();
6142
+ var id = nanoid.nanoid();
6152
6143
  setNotifications(function (prevNotifications) { return __spreadArray(__spreadArray([], prevNotifications), [{ id: id, text: text, type: type }]); });
6153
6144
  var timeout = setTimeout(function () {
6154
6145
  return setNotifications(function (prevNotifications) {
@@ -6517,7 +6508,7 @@ var ChannelInner = function (props) {
6517
6508
  });
6518
6509
  }); };
6519
6510
  var createMessagePreview = function (text, attachments, parent, mentioned_users) {
6520
- var clientSideID = client.userID + "-" + uuid.v4();
6511
+ var clientSideID = client.userID + "-" + nanoid.nanoid();
6521
6512
  return __assign({ __html: text, attachments: attachments, created_at: new Date(), html: text, id: clientSideID, mentioned_users: mentioned_users, reactions: [], status: 'sending', text: text, type: 'regular', user: client.user }, ((parent === null || parent === void 0 ? void 0 : parent.id) ? { parent_id: parent.id } : null));
6522
6513
  };
6523
6514
  var sendMessage = function (_a, customMessageData) {
@@ -7277,8 +7268,10 @@ var ChannelPreview = function (props) {
7277
7268
  var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a, channelUpdateCount = props.channelUpdateCount;
7278
7269
  var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
7279
7270
  var _c = useTranslationContext('ChannelPreview'), t = _c.t, userLanguage = _c.userLanguage;
7280
- var _d = React.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _d[0], setLastMessage = _d[1];
7281
- var _e = React.useState(0), unread = _e[0], setUnread = _e[1];
7271
+ var _d = React.useState(getDisplayTitle(channel, client.user)), displayTitle = _d[0], setDisplayTitle = _d[1];
7272
+ var _e = React.useState(getDisplayImage(channel, client.user)), displayImage = _e[0], setDisplayImage = _e[1];
7273
+ var _f = React.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _f[0], setLastMessage = _f[1];
7274
+ var _g = React.useState(0), unread = _g[0], setUnread = _g[1];
7282
7275
  var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
7283
7276
  var muted = useIsChannelMuted(channel).muted;
7284
7277
  React.useEffect(function () {
@@ -7315,10 +7308,24 @@ var ChannelPreview = function (props) {
7315
7308
  channel.off('message.deleted', handleEvent);
7316
7309
  };
7317
7310
  }, [refreshUnreadCount, channelUpdateCount]);
7311
+ React.useEffect(function () {
7312
+ var handleEvent = function () {
7313
+ setDisplayTitle(function (displayTitle) {
7314
+ var newDisplayTitle = getDisplayTitle(channel, client.user);
7315
+ return displayTitle !== newDisplayTitle ? newDisplayTitle : displayTitle;
7316
+ });
7317
+ setDisplayImage(function (displayImage) {
7318
+ var newDisplayImage = getDisplayImage(channel, client.user);
7319
+ return displayImage !== newDisplayImage ? newDisplayImage : displayImage;
7320
+ });
7321
+ };
7322
+ client.on('user.updated', handleEvent);
7323
+ return function () {
7324
+ client.off('user.updated', handleEvent);
7325
+ };
7326
+ }, []);
7318
7327
  if (!Preview)
7319
7328
  return null;
7320
- var displayImage = getDisplayImage(channel, client.user);
7321
- var displayTitle = getDisplayTitle(channel, client.user);
7322
7329
  var latestMessage = getLatestMessagePreview(channel, t, userLanguage);
7323
7330
  return (React__default['default'].createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, setActiveChannel: setActiveChannel, unread: unread })));
7324
7331
  };
@@ -7651,7 +7658,7 @@ var UnMemoizedChannelList = function (props) {
7651
7658
  */
7652
7659
  var ChannelList = React__default['default'].memo(UnMemoizedChannelList);
7653
7660
 
7654
- var version = '8.1.3-beta.1';
7661
+ var version = '9.0.0';
7655
7662
 
7656
7663
  var useChat = function (_a) {
7657
7664
  var _b, _c;
@@ -8460,10 +8467,10 @@ var processMessages = function (params) {
8460
8467
  var makeDateMessageId = function (date) {
8461
8468
  var idSuffix;
8462
8469
  try {
8463
- idSuffix = !date ? uuid.v4() : date instanceof Date ? date.toISOString() : date;
8470
+ idSuffix = !date ? nanoid.nanoid() : date instanceof Date ? date.toISOString() : date;
8464
8471
  }
8465
8472
  catch (e) {
8466
- idSuffix = uuid.v4();
8473
+ idSuffix = nanoid.nanoid();
8467
8474
  }
8468
8475
  return CUSTOM_MESSAGE_TYPE.date + "-" + idSuffix;
8469
8476
  };
@@ -9374,7 +9381,7 @@ var DefaultThreadStart = function () {
9374
9381
  var ThreadInner = function (props) {
9375
9382
  var additionalMessageInputProps = props.additionalMessageInputProps, additionalMessageListProps = props.additionalMessageListProps, additionalParentMessageProps = props.additionalParentMessageProps, additionalVirtualizedMessageListProps = props.additionalVirtualizedMessageListProps, _a = props.autoFocus, autoFocus = _a === void 0 ? true : _a, _b = props.enableDateSeparator, enableDateSeparator = _b === void 0 ? false : _b, _c = props.fullWidth, fullWidth = _c === void 0 ? false : _c, PropInput = props.Input, PropMessage = props.Message, virtualized = props.virtualized;
9376
9383
  var _d = useChannelStateContext('Thread'), thread = _d.thread, threadHasMore = _d.threadHasMore, threadLoadingMore = _d.threadLoadingMore, threadMessages = _d.threadMessages;
9377
- var _e = useChannelActionContext('Thread'), closeThread = _e.closeThread, loadMoreThread = _e.loadMoreThread;
9384
+ var _e = useChannelActionContext('Thread'), closeThread = _e.closeThread, loadMoreThread = _e.loadMoreThread, sendMessage = _e.sendMessage;
9378
9385
  var customClasses = useChatContext('Thread').customClasses;
9379
9386
  var _f = useComponentContext('Thread'), ContextInput = _f.ThreadInput, ContextMessage = _f.Message, _g = _f.ThreadHeader, ThreadHeader = _g === void 0 ? DefaultThreadHeader : _g, _h = _f.ThreadStart, ThreadStart = _h === void 0 ? DefaultThreadStart : _h, _j = _f.VirtualMessage, VirtualMessage = _j === void 0 ? FixedHeightMessage : _j;
9380
9387
  var messageList = React.useRef(null);
@@ -9387,15 +9394,19 @@ var ThreadInner = function (props) {
9387
9394
  loadMoreThread();
9388
9395
  }
9389
9396
  }, []);
9390
- React.useEffect(function () {
9391
- if (messageList.current && (threadMessages === null || threadMessages === void 0 ? void 0 : threadMessages.length)) {
9392
- var _a = messageList.current, clientHeight = _a.clientHeight, scrollHeight = _a.scrollHeight, scrollTop = _a.scrollTop;
9393
- var scrollDown = clientHeight + scrollTop !== scrollHeight;
9394
- if (scrollDown) {
9395
- messageList.current.scrollTop = scrollHeight - clientHeight;
9397
+ var threadSubmitHandler = function (message, _, customMessageData) { return __awaiter(void 0, void 0, void 0, function () {
9398
+ return __generator(this, function (_a) {
9399
+ switch (_a.label) {
9400
+ case 0: return [4 /*yield*/, sendMessage(message, customMessageData)];
9401
+ case 1:
9402
+ _a.sent();
9403
+ if (messageList.current) {
9404
+ messageList.current.scrollTop = messageList.current.scrollHeight;
9405
+ }
9406
+ return [2 /*return*/];
9396
9407
  }
9397
- }
9398
- }, [threadMessages === null || threadMessages === void 0 ? void 0 : threadMessages.length]);
9408
+ });
9409
+ }); };
9399
9410
  if (!thread)
9400
9411
  return null;
9401
9412
  var threadClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.thread) || 'str-chat__thread';
@@ -9405,7 +9416,7 @@ var ThreadInner = function (props) {
9405
9416
  React__default['default'].createElement(Message, __assign({ initialMessage: true, message: thread, Message: ThreadMessage || FallbackMessage, threadList: true }, additionalParentMessageProps)),
9406
9417
  React__default['default'].createElement(ThreadStart, null),
9407
9418
  React__default['default'].createElement(ThreadMessageList, __assign({ disableDateSeparator: !enableDateSeparator, hasMore: threadHasMore, loadingMore: threadLoadingMore, loadMore: loadMoreThread, Message: ThreadMessage || FallbackMessage, messages: threadMessages || [], threadList: true }, (virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps)))),
9408
- React__default['default'].createElement(MessageInput, __assign({ focus: autoFocus, Input: ThreadInput, parent: thread, publishTypingEvent: false }, additionalMessageInputProps))));
9419
+ React__default['default'].createElement(MessageInput, __assign({ focus: autoFocus, Input: ThreadInput, overrideSubmitHandler: threadSubmitHandler, parent: thread, publishTypingEvent: false }, additionalMessageInputProps))));
9409
9420
  };
9410
9421
 
9411
9422
  var UnMemoizedWindow = function (props) {