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
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
11
11
  };
12
12
  import React from 'react';
13
13
  import ReactPlayer from 'react-player';
14
- import { v4 as uuidV4 } from 'uuid';
14
+ import { nanoid } from 'nanoid';
15
15
  import { AttachmentActions as DefaultAttachmentActions } from './AttachmentActions';
16
16
  import { Audio as DefaultAudio } from './Audio';
17
17
  import { Card as DefaultCard } from './Card';
@@ -44,7 +44,7 @@ export var renderAttachmentWithinContainer = function (props) {
44
44
  ? 'actions'
45
45
  : '';
46
46
  }
47
- return (React.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) || uuidV4()) + "-" + ((attachment === null || attachment === void 0 ? void 0 : attachment.type) || 'none') + " " }, children));
47
+ return (React.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()) + "-" + ((attachment === null || attachment === void 0 ? void 0 : attachment.type) || 'none') + " " }, children));
48
48
  };
49
49
  export var renderAttachmentActions = function (props) {
50
50
  var _a;
@@ -22,6 +22,7 @@ export class ReactTextareaAutocomplete extends React.Component<any, any, any> {
22
22
  getSelectedText: () => any;
23
23
  setCaretPosition: (position?: number) => void;
24
24
  getCaretPosition: () => number;
25
+ _defaultShouldSubmit: (event: any) => boolean;
25
26
  _handleKeyDown: (event: any) => void;
26
27
  _onEnter: (event: any) => void;
27
28
  _onSpace: () => void;
@@ -69,7 +70,6 @@ export namespace ReactTextareaAutocomplete {
69
70
  export const dropdownStyle: PropTypes.Requireable<object>;
70
71
  export const itemClassName: PropTypes.Requireable<string>;
71
72
  export const itemStyle: PropTypes.Requireable<object>;
72
- export const keycodeSubmitKeys: PropTypes.Requireable<any[]>;
73
73
  export const listClassName: PropTypes.Requireable<string>;
74
74
  export const listStyle: PropTypes.Requireable<object>;
75
75
  export const loaderClassName: PropTypes.Requireable<string>;
@@ -80,6 +80,7 @@ export namespace ReactTextareaAutocomplete {
80
80
  export const onCaretPositionChange: PropTypes.Requireable<(...args: any[]) => any>;
81
81
  export const onChange: PropTypes.Requireable<(...args: any[]) => any>;
82
82
  export const onSelect: PropTypes.Requireable<(...args: any[]) => any>;
83
+ export const shouldSubmit: PropTypes.Requireable<(...args: any[]) => any>;
83
84
  export const style: PropTypes.Requireable<object>;
84
85
  export const SuggestionList: PropTypes.Requireable<PropTypes.ReactComponentLike>;
85
86
  export { triggerPropsCheck as trigger };
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/AutoCompleteTextarea/Textarea.jsx"],"names":[],"mappings":"AAiBA;IACE;;;;;;;MAOE;IAwWF;;OAEG;IACH;;;aAMC;IA/WD,wBA6BC;IAED;;;aAOE;IAEF,2BAOE;IAEF,8CAKE;IAEF,+BAIE;IAEF,qCAME;IAEF,+BAwBE;IAEF,qBAQE;IAEF,yBA6BE;IAEF,mCAqEE;IAEF,qEAuBE;IAEF,sEA2DE;IAEF,uDAQE;IAEF,mCA0CE;IAEF,6CAQE;IAYF;;OAEG;IACH,+BAQE;IAEF;;MA6CE;IAEF,mCAQE;IAEF,iCA+EE;IAEF,iCASE;IAGF,yCAiBE;IAEF,6BAAmD;IAEnD,qCAiBE;IAEF;;;;;;;;MAoCE;IAEF,oDAyCC;IAlBS,+CAAsB;IAiDtB,oDAAsB;CASjC"}
1
+ {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/AutoCompleteTextarea/Textarea.jsx"],"names":[],"mappings":"AAiBA;IACE;;;;;;;MAOE;IA8VF;;OAEG;IACH;;;aAMC;IArWD,wBA2BC;IAED;;;aAOE;IAEF,2BAOE;IAEF,8CAKE;IAEF,+BAIE;IAEF,8CAA2E;IAE3E,qCAME;IAEF,+BAcE;IAEF,qBAQE;IAEF,yBA6BE;IAEF,mCAqEE;IAEF,qEAuBE;IAEF,sEA2DE;IAEF,uDAQE;IAEF,mCA0CE;IAEF,6CAQE;IAYF;;OAEG;IACH,+BAQE;IAEF;;MA6CE;IAEF,mCAME;IAEF,iCA+EE;IAEF,iCASE;IAGF,yCAiBE;IAEF,6BAAmD;IAEnD,qCAiBE;IAEF;;;;;;;;MAoCE;IAEF,oDAyCC;IAlBS,+CAAsB;IAqDtB,oDAAsB;CAUjC"}
@@ -65,9 +65,10 @@ var ReactTextareaAutocomplete = /** @class */ (function (_super) {
65
65
  return 0;
66
66
  return _this.textareaRef.selectionEnd;
67
67
  };
68
+ _this._defaultShouldSubmit = function (event) { return event.key === 'Enter' && !event.shiftKey; };
68
69
  _this._handleKeyDown = function (event) {
69
- var _a = _this.props.keycodeSubmitKeys, submitKeys = _a === void 0 ? [] : _a;
70
- if (event.key === 'Enter' || submitKeys.includes(event.key))
70
+ var _a = _this.props.shouldSubmit, shouldSubmit = _a === void 0 ? _this._defaultShouldSubmit : _a;
71
+ if (shouldSubmit === null || shouldSubmit === void 0 ? void 0 : shouldSubmit(event))
71
72
  return _this._onEnter(event);
72
73
  if (event.key === ' ')
73
74
  return _this._onSpace(event);
@@ -78,13 +79,6 @@ var ReactTextareaAutocomplete = /** @class */ (function (_super) {
78
79
  if (!_this.textareaRef)
79
80
  return;
80
81
  var trigger = _this.state.currentTrigger;
81
- var hasFocus = _this.textareaRef.matches(':focus');
82
- // Don't submit if the element doesn't have focus or the shift key is pressed, unless shift+Enter were provided as submit keys
83
- if (!hasFocus ||
84
- (event.shiftKey === true && !_this.keycodeSubmitShiftE) ||
85
- (event.shiftKey === true && !_this.props.keycodeSubmitKeys)) {
86
- return;
87
- }
88
82
  if (!trigger || !_this.state.data) {
89
83
  // trigger a submit
90
84
  _this._replaceWord();
@@ -315,7 +309,6 @@ var ReactTextareaAutocomplete = /** @class */ (function (_super) {
315
309
  'innerRef',
316
310
  'itemClassName',
317
311
  'itemStyle',
318
- 'keycodeSubmitKeys',
319
312
  'listClassName',
320
313
  'listStyle',
321
314
  'loaderClassName',
@@ -328,6 +321,7 @@ var ReactTextareaAutocomplete = /** @class */ (function (_super) {
328
321
  'ref',
329
322
  'replaceWord',
330
323
  'scrollToItem',
324
+ 'shouldSubmit',
331
325
  'showCommandsList',
332
326
  'showMentionsList',
333
327
  'SuggestionItem',
@@ -346,9 +340,7 @@ var ReactTextareaAutocomplete = /** @class */ (function (_super) {
346
340
  if (text[0] !== '/')
347
341
  return false;
348
342
  var tokens = text.split(' ');
349
- if (tokens.length > 1)
350
- return false;
351
- return true;
343
+ return tokens.length <= 1;
352
344
  };
353
345
  _this._changeHandler = function (e) {
354
346
  var _a = _this.props, minChar = _a.minChar, movePopupAsYouType = _a.movePopupAsYouType, onCaretPositionChange = _a.onCaretPositionChange, onChange = _a.onChange, trigger = _a.trigger;
@@ -499,9 +491,7 @@ var ReactTextareaAutocomplete = /** @class */ (function (_super) {
499
491
  currentTrigger: null,
500
492
  data: null,
501
493
  dataLoading: false,
502
- keycodeSubmitShiftE: false,
503
494
  left: null,
504
- listenerIndex: {},
505
495
  selectionEnd: 0,
506
496
  selectionStart: 0,
507
497
  top: null,
@@ -541,13 +531,16 @@ var ReactTextareaAutocomplete = /** @class */ (function (_super) {
541
531
  var _b = this.state, dataLoading = _b.dataLoading, value = _b.value;
542
532
  if (!this.props.grow)
543
533
  maxRows = 1;
534
+ // By setting defaultValue to undefined, avoid error:
535
+ // ForwardRef(TextareaAutosize) contains a textarea with both value and defaultValue props.
536
+ // Textarea elements must be either controlled or uncontrolled
544
537
  return (React.createElement("div", { className: "rta " + (dataLoading === true ? 'rta--loading' : '') + " " + (containerClassName || ''), style: containerStyle },
545
538
  this.renderSuggestionListContainer(),
546
539
  React.createElement(Textarea, __assign({ "data-testid": 'message-input' }, this._cleanUpProps(), { className: "rta__textarea " + (className || ''), maxRows: maxRows, onBlur: this._onClickAndBlurHandler, onChange: this._changeHandler, onClick: this._onClickAndBlurHandler, onFocus: this.props.onFocus, onKeyDown: this._handleKeyDown, onScroll: this._onScrollHandler, onSelect: this._selectHandler, ref: function (ref) {
547
540
  if (_this.props.innerRef)
548
541
  _this.props.innerRef(ref);
549
542
  _this.textareaRef = ref;
550
- }, style: style, value: value }, this.props.additionalTextareaProps))));
543
+ }, style: style, value: value }, this.props.additionalTextareaProps, { defaultValue: undefined }))));
551
544
  };
552
545
  ReactTextareaAutocomplete.defaultProps = {
553
546
  closeOnClickOutside: true,
@@ -570,7 +563,6 @@ ReactTextareaAutocomplete.propTypes = {
570
563
  dropdownStyle: PropTypes.object,
571
564
  itemClassName: PropTypes.string,
572
565
  itemStyle: PropTypes.object,
573
- keycodeSubmitKeys: PropTypes.array,
574
566
  listClassName: PropTypes.string,
575
567
  listStyle: PropTypes.object,
576
568
  loaderClassName: PropTypes.string,
@@ -581,6 +573,7 @@ ReactTextareaAutocomplete.propTypes = {
581
573
  onCaretPositionChange: PropTypes.func,
582
574
  onChange: PropTypes.func,
583
575
  onSelect: PropTypes.func,
576
+ shouldSubmit: PropTypes.func,
584
577
  style: PropTypes.object,
585
578
  SuggestionList: PropTypes.elementType,
586
579
  trigger: triggerPropsCheck,
@@ -60,7 +60,7 @@ import React, { useEffect, useLayoutEffect, useMemo, useReducer, useRef, useStat
60
60
  import debounce from 'lodash.debounce';
61
61
  import throttle from 'lodash.throttle';
62
62
  import { logChatPromiseExecution, } from 'stream-chat';
63
- import { v4 as uuidv4 } from 'uuid';
63
+ import { nanoid } from 'nanoid';
64
64
  import { channelReducer, initialState } from './channelState';
65
65
  import { commonEmoji, defaultMinimalEmojis, emojiSetDef } from './emojiData';
66
66
  import { useCreateChannelStateContext } from './hooks/useCreateChannelStateContext';
@@ -440,7 +440,7 @@ var ChannelInner = function (props) {
440
440
  });
441
441
  }); };
442
442
  var createMessagePreview = function (text, attachments, parent, mentioned_users) {
443
- var clientSideID = client.userID + "-" + uuidv4();
443
+ var clientSideID = client.userID + "-" + nanoid();
444
444
  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));
445
445
  };
446
446
  var sendMessage = function (_a, customMessageData) {
@@ -28,7 +28,7 @@ export var useCreateChannelStateContext = function (value) {
28
28
  return type;
29
29
  }).join() : '') + pinned + reply_count + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
30
30
  ? updated_at.toISOString()
31
- : updated_at || '') + (user === null || user === void 0 ? void 0 : user.image) + (user === null || user === void 0 ? void 0 : user.name);
31
+ : updated_at || '') + (user === null || user === void 0 ? void 0 : user.updated_at);
32
32
  })
33
33
  .join();
34
34
  var memoizedThreadMessageData = threadMessages
@@ -39,7 +39,7 @@ export var useCreateChannelStateContext = function (value) {
39
39
  return type;
40
40
  }).join() : '') + pinned + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
41
41
  ? updated_at.toISOString()
42
- : updated_at || '') + (user === null || user === void 0 ? void 0 : user.image) + (user === null || user === void 0 ? void 0 : user.name);
42
+ : updated_at || '') + (user === null || user === void 0 ? void 0 : user.updated_at);
43
43
  })
44
44
  .join();
45
45
  var channelStateContext = useMemo(function () { return ({
@@ -3,12 +3,12 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
3
3
  to[j] = from[i];
4
4
  return to;
5
5
  };
6
- import { v4 as uuidv4 } from 'uuid';
6
+ import { nanoid } from 'nanoid';
7
7
  export var makeAddNotifications = function (setNotifications, notificationTimeouts) { return function (text, type) {
8
8
  if (typeof text !== 'string' || (type !== 'success' && type !== 'error')) {
9
9
  return;
10
10
  }
11
- var id = uuidv4();
11
+ var id = nanoid();
12
12
  setNotifications(function (prevNotifications) { return __spreadArray(__spreadArray([], prevNotifications), [{ id: id, text: text, type: type }]); });
13
13
  var timeout = setTimeout(function () {
14
14
  return setNotifications(function (prevNotifications) {
@@ -1 +1 @@
1
- {"version":3,"file":"ChannelPreview.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelPreview/ChannelPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAMhE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,2BAA2B,CAAC;AAG7E,OAAO,KAAK,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,oBAAY,8BAA8B,CACxC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,mBAAmB,CAAC,kBAAkB,CAAC,GAAG;IAC5C,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAChD,8FAA8F;IAC9F,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACrC,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,mBAAmB,CAC7B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,6MAA6M;IAC7M,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,sCAAsC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,+LAA+L;IAC/L,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6PAA6P;IAC7P,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClF,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC5E,2CAA2C;IAC3C,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,cAAc,0JA2E1B,CAAC"}
1
+ {"version":3,"file":"ChannelPreview.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelPreview/ChannelPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAMhE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,2BAA2B,CAAC;AAG7E,OAAO,KAAK,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,oBAAY,8BAA8B,CACxC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,mBAAmB,CAAC,kBAAkB,CAAC,GAAG;IAC5C,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAChD,8FAA8F;IAC9F,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACrC,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,mBAAmB,CAC7B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,6MAA6M;IAC7M,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,sCAAsC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,+LAA+L;IAC/L,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6PAA6P;IAC7P,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClF,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC5E,2CAA2C;IAC3C,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,cAAc,0JA4F1B,CAAC"}
@@ -19,8 +19,10 @@ export var ChannelPreview = function (props) {
19
19
  var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a, channelUpdateCount = props.channelUpdateCount;
20
20
  var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
21
21
  var _c = useTranslationContext('ChannelPreview'), t = _c.t, userLanguage = _c.userLanguage;
22
- var _d = useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _d[0], setLastMessage = _d[1];
23
- var _e = useState(0), unread = _e[0], setUnread = _e[1];
22
+ var _d = useState(getDisplayTitle(channel, client.user)), displayTitle = _d[0], setDisplayTitle = _d[1];
23
+ var _e = useState(getDisplayImage(channel, client.user)), displayImage = _e[0], setDisplayImage = _e[1];
24
+ var _f = useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _f[0], setLastMessage = _f[1];
25
+ var _g = useState(0), unread = _g[0], setUnread = _g[1];
24
26
  var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
25
27
  var muted = useIsChannelMuted(channel).muted;
26
28
  useEffect(function () {
@@ -57,10 +59,24 @@ export var ChannelPreview = function (props) {
57
59
  channel.off('message.deleted', handleEvent);
58
60
  };
59
61
  }, [refreshUnreadCount, channelUpdateCount]);
62
+ useEffect(function () {
63
+ var handleEvent = function () {
64
+ setDisplayTitle(function (displayTitle) {
65
+ var newDisplayTitle = getDisplayTitle(channel, client.user);
66
+ return displayTitle !== newDisplayTitle ? newDisplayTitle : displayTitle;
67
+ });
68
+ setDisplayImage(function (displayImage) {
69
+ var newDisplayImage = getDisplayImage(channel, client.user);
70
+ return displayImage !== newDisplayImage ? newDisplayImage : displayImage;
71
+ });
72
+ };
73
+ client.on('user.updated', handleEvent);
74
+ return function () {
75
+ client.off('user.updated', handleEvent);
76
+ };
77
+ }, []);
60
78
  if (!Preview)
61
79
  return null;
62
- var displayImage = getDisplayImage(channel, client.user);
63
- var displayTitle = getDisplayTitle(channel, client.user);
64
80
  var latestMessage = getLatestMessagePreview(channel, t, userLanguage);
65
81
  return (React.createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, setActiveChannel: setActiveChannel, unread: unread })));
66
82
  };
@@ -30,6 +30,6 @@ var UnMemoizedChatAutoComplete = function (props) {
30
30
  innerRef.current = ref;
31
31
  }
32
32
  }, [innerRef]);
33
- return (React.createElement(AutoCompleteTextarea, { 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 }));
33
+ return (React.createElement(AutoCompleteTextarea, { 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 }));
34
34
  };
35
35
  export var ChatAutoComplete = React.memo(UnMemoizedChatAutoComplete);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Message/utils.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,8CACV,OAAO,2BAiB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,2LAUvB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CAS3B,CAAC;AAEF,oBAAY,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,KAAK,CAChE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAC9E,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,cAwDnC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,mBAAmB,GAAG,OAAO,kFAC0C,YAAY,gCA+C7F,CAAC;AAIF,eAAO,MAAM,qBAAqB,oDAErB,OAAO,GAAG,SAAS,YAsB/B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;aAiDhC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;aA8ClC,CAAC;AAEF,eAAO,MAAM,mBAAmB,wJAIqC,CAAC;AAEtE,eAAO,MAAM,qBAAqB,wJAIyB,CAAC;AAE5D,eAAO,MAAM,SAAS,yMASrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,yMASlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,mIAI5B,SAAS,mDA6Cb,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Message/utils.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,8CACV,OAAO,2BAiB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,2LAUvB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CAS3B,CAAC;AAEF,oBAAY,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,KAAK,CAChE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAC9E,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,cAwDnC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,mBAAmB,GAAG,OAAO,kFAC0C,YAAY,gCA+C7F,CAAC;AAIF,eAAO,MAAM,qBAAqB,oDAErB,OAAO,GAAG,SAAS,YAsB/B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;aAgDhC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;aA0ClC,CAAC;AAEF,eAAO,MAAM,mBAAmB,wJAIqC,CAAC;AAEtE,eAAO,MAAM,qBAAqB,wJAIyB,CAAC;AAE5D,eAAO,MAAM,SAAS,yMASrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,yMASlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,mIAI5B,SAAS,mDA6Cb,CAAC"}
@@ -157,7 +157,7 @@ export var showMessageActionsBox = function (actions, inThread) {
157
157
  return true;
158
158
  };
159
159
  export var areMessagePropsEqual = function (prevProps, nextProps) {
160
- var _a, _b, _c, _d, _e, _f, _g, _h;
160
+ var _a, _b, _c, _d, _e, _f;
161
161
  var prevMessage = prevProps.message, prevMessageUI = prevProps.Message;
162
162
  var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
163
163
  if (prevMessageUI !== nextMessageUI)
@@ -176,8 +176,7 @@ export var areMessagePropsEqual = function (prevProps, nextProps) {
176
176
  prevMessage.text === nextMessage.text &&
177
177
  prevMessage.type === nextMessage.type &&
178
178
  prevMessage.updated_at === nextMessage.updated_at &&
179
- ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.image) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.image) &&
180
- ((_g = prevMessage.user) === null || _g === void 0 ? void 0 : _g.name) === ((_h = nextMessage.user) === null || _h === void 0 ? void 0 : _h.name);
179
+ ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at);
181
180
  if (!messagesAreEqual)
182
181
  return false;
183
182
  var deepEqualProps = deepequal(nextProps.readBy, prevProps.readBy) &&
@@ -191,7 +190,7 @@ export var areMessagePropsEqual = function (prevProps, nextProps) {
191
190
  );
192
191
  };
193
192
  export var areMessageUIPropsEqual = function (prevProps, nextProps) {
194
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
193
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
195
194
  var prevLastReceivedId = prevProps.lastReceivedId, prevMessage = prevProps.message;
196
195
  var nextLastReceivedId = nextProps.lastReceivedId, nextMessage = nextProps.message;
197
196
  if (prevProps.editing !== nextProps.editing)
@@ -211,7 +210,7 @@ export var areMessageUIPropsEqual = function (prevProps, nextProps) {
211
210
  prevLastReceivedId !== nextLastReceivedId) {
212
211
  return false;
213
212
  }
214
- var messagesAreEqual = prevMessage.deleted_at === nextMessage.deleted_at &&
213
+ return (prevMessage.deleted_at === nextMessage.deleted_at &&
215
214
  ((_e = prevMessage.latest_reactions) === null || _e === void 0 ? void 0 : _e.length) === ((_f = nextMessage.latest_reactions) === null || _f === void 0 ? void 0 : _f.length) &&
216
215
  ((_g = prevMessage.own_reactions) === null || _g === void 0 ? void 0 : _g.length) === ((_h = nextMessage.own_reactions) === null || _h === void 0 ? void 0 : _h.length) &&
217
216
  prevMessage.pinned === nextMessage.pinned &&
@@ -220,11 +219,7 @@ export var areMessageUIPropsEqual = function (prevProps, nextProps) {
220
219
  prevMessage.text === nextMessage.text &&
221
220
  prevMessage.type === nextMessage.type &&
222
221
  prevMessage.updated_at === nextMessage.updated_at &&
223
- ((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.image) === ((_k = nextMessage.user) === null || _k === void 0 ? void 0 : _k.image) &&
224
- ((_l = prevMessage.user) === null || _l === void 0 ? void 0 : _l.name) === ((_m = nextMessage.user) === null || _m === void 0 ? void 0 : _m.name);
225
- if (!messagesAreEqual)
226
- return false;
227
- return true;
222
+ ((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.updated_at) === ((_k = nextMessage.user) === null || _k === void 0 ? void 0 : _k.updated_at));
228
223
  };
229
224
  export var messageHasReactions = function (message) { return !!(message === null || message === void 0 ? void 0 : message.latest_reactions) && !!message.latest_reactions.length; };
230
225
  export var messageHasAttachments = function (message) { return !!(message === null || message === void 0 ? void 0 : message.attachments) && !!message.attachments.length; };
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import type { Message } from 'stream-chat';
2
3
  import { FileUpload, ImageUpload } from './hooks/useMessageInputState';
3
4
  import { StreamMessage } from '../../context/ChannelStateContext';
4
5
  import type { Channel, SendFileAPIResponse } from 'stream-chat';
@@ -30,13 +31,6 @@ export declare type MessageInputProps<StreamChatGenerics extends DefaultStreamCh
30
31
  grow?: boolean;
31
32
  /** Custom UI component handling how the message input is rendered, defaults to and accepts the same props as [MessageInputFlat](https://github.com/GetStream/stream-chat-react/blob/master/src/components/MessageInput/MessageInputFlat.tsx) */
32
33
  Input?: React.ComponentType<MessageInputProps<StreamChatGenerics, V>>;
33
- /**
34
- * Currently, Enter is the default submission key and Shift+Enter is the default for new line.
35
- * If provided, this array of keycode numbers will override the default Enter for submission, and Enter will then only create a new line.
36
- * Shift + Enter will still always create a new line, unless Shift+Enter [16, 13] is included in the override.
37
- * e.g.: [[16,13], [57], [48]] - submission keys would then be Shift+Enter, 9, and 0.
38
- * */
39
- keycodeSubmitKeys?: Array<number[]>;
40
34
  /** Max number of rows the underlying `textarea` component is allowed to grow */
41
35
  maxRows?: number;
42
36
  /** If true, the suggestion list will search all app users for an @mention, not just current channel members/watchers. Default: false. */
@@ -48,12 +42,22 @@ export declare type MessageInputProps<StreamChatGenerics extends DefaultStreamCh
48
42
  /** If true, disables file uploads for all attachments except for those with type 'image'. Default: false */
49
43
  noFiles?: boolean;
50
44
  /** Function to override the default submit handler */
51
- overrideSubmitHandler?: (message: MessageToSend<StreamChatGenerics>, channelCid: string) => void;
45
+ overrideSubmitHandler?: (message: MessageToSend<StreamChatGenerics>, channelCid: string, customMessageData?: Partial<Message<StreamChatGenerics>>) => Promise<void> | void;
52
46
  /** When replying in a thread, the parent message object */
53
47
  parent?: StreamMessage<StreamChatGenerics>;
54
48
  /** If true, triggers typing events on text input keystroke */
55
49
  publishTypingEvent?: boolean;
56
50
  /** If true, will use an optional dependency to support transliteration in the input for mentions, default is false. See: https://github.com/getstream/transliterate */
51
+ /**
52
+ * Currently, `Enter` is the default submission key and `Shift`+`Enter` is the default combination for the new line.
53
+ * If specified, this function overrides the default behavior specified previously.
54
+ *
55
+ * Example of default behaviour:
56
+ * ```tsx
57
+ * const defaultShouldSubmit = (event) => event.key === "Enter" && !event.shiftKey;
58
+ * ```
59
+ */
60
+ shouldSubmit?: (event: KeyboardEvent) => boolean;
57
61
  useMentionsTransliteration?: boolean;
58
62
  };
59
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MessageInput.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageInput.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { useCallback } from 'react';
2
+ import { nanoid } from 'nanoid';
2
3
  import { useImageUploads } from './useImageUploads';
3
4
  import { useFileUploads } from './useFileUploads';
4
5
  import { useChannelStateContext } from '../../../context/ChannelStateContext';
5
- import { generateRandomId } from '../../../utils';
6
6
  var apiMaxNumberOfFiles = 10;
7
7
  export var useAttachments = function (props, state, dispatch, textareaRef) {
8
8
  var noFiles = props.noFiles;
@@ -29,7 +29,7 @@ export var useAttachments = function (props, state, dispatch, textareaRef) {
29
29
  Array.from(files)
30
30
  .slice(0, maxFilesLeft)
31
31
  .forEach(function (file) {
32
- var id = generateRandomId();
32
+ var id = nanoid();
33
33
  if (file.type.startsWith('image/') &&
34
34
  !file.type.endsWith('.photoshop') // photoshop files begin with 'image/'
35
35
  ) {
@@ -1,6 +1,6 @@
1
1
  import { useMemo } from 'react';
2
2
  export var useCreateMessageInputContext = function (value) {
3
- 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;
3
+ 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;
4
4
  var editing = message === null || message === void 0 ? void 0 : message.editing;
5
5
  var fileUploadsValue = Object.entries(fileUploads)
6
6
  // eslint-disable-next-line
@@ -47,7 +47,6 @@ export var useCreateMessageInputContext = function (value) {
47
47
  imageUploads: imageUploads,
48
48
  insertText: insertText,
49
49
  isUploadEnabled: isUploadEnabled,
50
- keycodeSubmitKeys: keycodeSubmitKeys,
51
50
  maxFilesLeft: maxFilesLeft,
52
51
  maxRows: maxRows,
53
52
  mentionAllAppUsers: mentionAllAppUsers,
@@ -69,6 +68,7 @@ export var useCreateMessageInputContext = function (value) {
69
68
  removeImage: removeImage,
70
69
  setCooldownRemaining: setCooldownRemaining,
71
70
  setText: setText,
71
+ shouldSubmit: shouldSubmit,
72
72
  showCommandsList: showCommandsList,
73
73
  showMentionsList: showMentionsList,
74
74
  text: text,
@@ -1 +1 @@
1
- {"version":3,"file":"useMessageInputState.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMessageInputState.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputState.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,8 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { useCallback, useReducer, useState } from 'react';
13
+ import { nanoid } from 'nanoid';
13
14
  import { useChannelStateContext } from '../../../context/ChannelStateContext';
14
- import { generateRandomId } from '../../../utils';
15
15
  import { useEmojiIndex } from './useEmojiIndex';
16
16
  import { useAttachments } from './useAttachments';
17
17
  import { useMessageInputText } from './useMessageInputText';
@@ -20,30 +20,31 @@ import { useSubmitHandler } from './useSubmitHandler';
20
20
  import { usePasteHandler } from './usePasteHandler';
21
21
  var emptyFileUploads = {};
22
22
  var emptyImageUploads = {};
23
+ var makeEmptyMessageInputState = function () { return ({
24
+ attachments: [],
25
+ emojiPickerIsOpen: false,
26
+ fileOrder: [],
27
+ fileUploads: __assign({}, emptyFileUploads),
28
+ imageOrder: [],
29
+ imageUploads: __assign({}, emptyImageUploads),
30
+ mentioned_users: [],
31
+ setText: function () { return null; },
32
+ text: '',
33
+ }); };
23
34
  /**
24
35
  * Initializes the state. Empty if the message prop is falsy.
25
36
  */
26
37
  var initState = function (message) {
27
38
  var _a, _b, _c;
28
39
  if (!message) {
29
- return {
30
- attachments: [],
31
- emojiPickerIsOpen: false,
32
- fileOrder: [],
33
- fileUploads: __assign({}, emptyFileUploads),
34
- imageOrder: [],
35
- imageUploads: __assign({}, emptyImageUploads),
36
- mentioned_users: [],
37
- setText: function () { return null; },
38
- text: '',
39
- };
40
+ return makeEmptyMessageInputState();
40
41
  }
41
42
  // if message prop is defined, get image uploads, file uploads, text, etc.
42
43
  var imageUploads = ((_a = message.attachments) === null || _a === void 0 ? void 0 : _a.filter(function (_a) {
43
44
  var type = _a.type;
44
45
  return type === 'image';
45
46
  }).reduce(function (acc, attachment) {
46
- var id = generateRandomId();
47
+ var id = nanoid();
47
48
  acc[id] = {
48
49
  file: {
49
50
  name: attachment.fallback || '',
@@ -59,7 +60,7 @@ var initState = function (message) {
59
60
  var type = _a.type;
60
61
  return type === 'file';
61
62
  }).reduce(function (acc, attachment) {
62
- var id = generateRandomId();
63
+ var id = nanoid();
63
64
  acc[id] = {
64
65
  file: {
65
66
  name: attachment.title || '',
@@ -101,16 +102,7 @@ var messageInputReducer = function (state, action) {
101
102
  case 'setText':
102
103
  return __assign(__assign({}, state), { text: action.getNewText(state.text) });
103
104
  case 'clear':
104
- return {
105
- attachments: [],
106
- emojiPickerIsOpen: false,
107
- fileOrder: [],
108
- fileUploads: __assign({}, emptyFileUploads),
109
- imageOrder: [],
110
- imageUploads: __assign({}, emptyImageUploads),
111
- mentioned_users: [],
112
- text: '',
113
- };
105
+ return makeEmptyMessageInputState();
114
106
  case 'setImageUpload': {
115
107
  var imageAlreadyExists = state.imageUploads[action.id];
116
108
  if (!imageAlreadyExists && !action.file)
@@ -153,9 +145,14 @@ var messageInputReducer = function (state, action) {
153
145
  * hook for MessageInput state
154
146
  */
155
147
  export var useMessageInputState = function (props) {
156
- var closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, message = props.message;
148
+ var additionalTextareaProps = props.additionalTextareaProps, closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, message = props.message;
157
149
  var _a = useChannelStateContext('useMessageInputState'), _b = _a.channelCapabilities, channelCapabilities = _b === void 0 ? {} : _b, channelConfig = _a.channelConfig;
158
- var _c = useReducer(messageInputReducer, message, initState), state = _c[0], dispatch = _c[1];
150
+ var defaultValue = additionalTextareaProps === null || additionalTextareaProps === void 0 ? void 0 : additionalTextareaProps.defaultValue;
151
+ var initialStateValue = message ||
152
+ (Array.isArray(defaultValue)
153
+ ? { text: defaultValue.join('') }
154
+ : { text: defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.toString() });
155
+ var _c = useReducer(messageInputReducer, initialStateValue, initState), state = _c[0], dispatch = _c[1];
159
156
  var _d = useMessageInputText(props, state, dispatch), handleChange = _d.handleChange, insertText = _d.insertText, textareaRef = _d.textareaRef;
160
157
  var _e = useState(false), showCommandsList = _e[0], setShowCommandsList = _e[1];
161
158
  var _f = useState(false), showMentionsList = _f[0], setShowMentionsList = _f[1];
@@ -178,8 +175,8 @@ export var useMessageInputState = function (props) {
178
175
  var _g = useEmojiPicker(state, dispatch, insertText, textareaRef, closeEmojiPickerOnClick), closeEmojiPicker = _g.closeEmojiPicker, emojiPickerRef = _g.emojiPickerRef, handleEmojiKeyDown = _g.handleEmojiKeyDown, onSelectEmoji = _g.onSelectEmoji, openEmojiPicker = _g.openEmojiPicker;
179
176
  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;
180
177
  var handleSubmit = useSubmitHandler(props, state, dispatch, numberOfUploads).handleSubmit;
181
- var onPaste = usePasteHandler(uploadNewFiles, insertText).onPaste;
182
178
  var isUploadEnabled = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.uploads) !== false && channelCapabilities['upload-file'] !== false;
179
+ var onPaste = usePasteHandler(uploadNewFiles, insertText, isUploadEnabled).onPaste;
183
180
  var onSelectUser = useCallback(function (item) {
184
181
  dispatch({ type: 'addMentionedUser', user: item });
185
182
  }, []);
@@ -1,5 +1,5 @@
1
1
  import { FileLike } from 'react-file-utils';
2
- export declare const usePasteHandler: (uploadNewFiles: (files: FileList | FileLike[] | File[]) => void, insertText: (textToInsert: string) => void) => {
2
+ export declare const usePasteHandler: (uploadNewFiles: (files: FileList | FileLike[] | File[]) => void, insertText: (textToInsert: string) => void, isUploadEnabled: boolean) => {
3
3
  onPaste: (clipboardEvent: React.ClipboardEvent<HTMLTextAreaElement>) => void;
4
4
  };
5
5
  //# sourceMappingURL=usePasteHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePasteHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/usePasteHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAElG,eAAO,MAAM,eAAe,2BACF,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,KAAK,IAAI,6BACpC,MAAM,KAAK,IAAI;8BAGvB,oBAAoB,CAAC,mBAAmB,CAAC;CAwC7D,CAAC"}
1
+ {"version":3,"file":"usePasteHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/usePasteHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAElG,eAAO,MAAM,eAAe,2BACF,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,KAAK,IAAI,6BACpC,MAAM,KAAK,IAAI,mBACzB,OAAO;8BAGL,oBAAoB,CAAC,mBAAmB,CAAC;CAyC7D,CAAC"}
@@ -36,8 +36,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  };
37
37
  import { useCallback } from 'react';
38
38
  import { dataTransferItemsHaveFiles, dataTransferItemsToFiles } from 'react-file-utils';
39
- export var usePasteHandler = function (uploadNewFiles, insertText) {
39
+ export var usePasteHandler = function (uploadNewFiles, insertText, isUploadEnabled) {
40
40
  var onPaste = useCallback(function (clipboardEvent) {
41
+ if (!isUploadEnabled)
42
+ return;
41
43
  (function (event) { return __awaiter(void 0, void 0, void 0, function () {
42
44
  var items, plainTextPromise, _loop_1, i, state_1, fileLikes, pastedText;
43
45
  return __generator(this, function (_a) {
@@ -1 +1 @@
1
- {"version":3,"file":"useSubmitHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useSubmitHandler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,OAAO,EAAkB,MAAM,aAAa,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAQrF,eAAO,MAAM,gBAAgB,iUAOV,MAAM;0BA4Dd,MAAM,kBAAkB;CAqGlC,CAAC"}
1
+ {"version":3,"file":"useSubmitHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useSubmitHandler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,OAAO,EAAkB,MAAM,aAAa,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAQrF,eAAO,MAAM,gBAAgB,iUAOV,MAAM;0BA4Dd,MAAM,kBAAkB;CAsGlC,CAAC"}