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.
- package/dist/browser.full-bundle.js +178 -250
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +4 -4
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Attachment/utils.js +2 -2
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts +2 -1
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.js +10 -17
- package/dist/components/Channel/Channel.js +2 -2
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +2 -2
- package/dist/components/Channel/utils.js +2 -2
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +20 -4
- package/dist/components/ChatAutoComplete/ChatAutoComplete.js +1 -1
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +5 -10
- package/dist/components/MessageInput/MessageInput.d.ts +12 -8
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useAttachments.js +2 -2
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +2 -2
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.js +24 -27
- package/dist/components/MessageInput/hooks/usePasteHandler.d.ts +1 -1
- package/dist/components/MessageInput/hooks/usePasteHandler.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/usePasteHandler.js +3 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.js +17 -15
- package/dist/components/MessageList/utils.js +3 -3
- package/dist/components/Thread/Thread.js +50 -10
- package/dist/index.cjs.js +116 -105
- package/dist/index.cjs.js.map +1 -1
- package/dist/stories/{connected-user.stories.d.ts → add-message.stories.d.ts} +1 -1
- package/dist/stories/add-message.stories.d.ts.map +1 -0
- package/dist/stories/{connected-user.stories.js → add-message.stories.js} +4 -3
- package/dist/stories/jump-to-message.stories.d.ts.map +1 -1
- package/dist/stories/jump-to-message.stories.js +0 -3
- package/dist/stories/mark-read.stories.d.ts.map +1 -1
- package/dist/stories/mark-read.stories.js +4 -25
- package/dist/stories/navigate-long-message-lists.stories.d.ts +4 -0
- package/dist/stories/navigate-long-message-lists.stories.d.ts.map +1 -0
- package/dist/stories/navigate-long-message-lists.stories.js +167 -0
- package/dist/utils.d.ts +5 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +5 -8
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -5
- 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 {
|
|
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) ||
|
|
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;
|
|
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.
|
|
70
|
-
if (
|
|
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
|
-
|
|
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 {
|
|
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 + "-" +
|
|
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.
|
|
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.
|
|
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 {
|
|
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 =
|
|
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,
|
|
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.
|
|
23
|
-
var _e = useState(
|
|
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',
|
|
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;;;;;;
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
|
|
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.
|
|
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":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;
|
|
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 =
|
|
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,
|
|
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 =
|
|
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 =
|
|
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
|
|
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;
|
|
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;
|
|
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"}
|