stream-chat-react 9.1.0-alpha.0 → 9.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.full-bundle.js +796 -305
- 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/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +9 -3
- package/dist/components/Channel/channelState.js +1 -1
- package/dist/components/ChannelList/ChannelList.d.ts +2 -0
- package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelList.js +6 -4
- package/dist/components/ChannelList/ChannelListMessenger.d.ts +2 -2
- package/dist/components/ChannelList/ChannelListMessenger.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelListMessenger.js +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +0 -5
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +10 -15
- package/dist/components/Chat/Chat.d.ts.map +1 -1
- package/dist/components/Chat/Chat.js +3 -0
- package/dist/components/Chat/hooks/useChannelsQueryState.d.ts +12 -0
- package/dist/components/Chat/hooks/useChannelsQueryState.d.ts.map +1 -0
- package/dist/components/Chat/hooks/useChannelsQueryState.js +11 -0
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useCreateChatContext.js +13 -2
- package/dist/components/ChatDown/ChatDown.d.ts.map +1 -1
- package/dist/components/ChatDown/ChatDown.js +0 -2
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +1 -7
- package/dist/components/Message/MessageSimple.d.ts +0 -1
- package/dist/components/Message/MessageSimple.d.ts.map +1 -1
- package/dist/components/Message/MessageSimple.js +8 -17
- package/dist/components/Message/MessageText.d.ts.map +1 -1
- package/dist/components/Message/MessageText.js +6 -9
- package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
- package/dist/components/MessageInput/EditMessageForm.js +3 -7
- package/dist/components/MessageInput/UploadsPreview.d.ts.map +1 -1
- package/dist/components/MessageInput/UploadsPreview.js +3 -1
- package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useAttachments.js +4 -4
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +2 -2
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.js +24 -19
- package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.js +75 -93
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +13 -13
- package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useMessageListScrollManager.js +0 -3
- package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts +3 -1
- package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useScrollLocationLogic.js +43 -28
- package/dist/components/Modal/Modal.d.ts +1 -1
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +12 -15
- package/dist/context/ChannelActionContext.d.ts +3 -3
- package/dist/context/ChannelActionContext.d.ts.map +1 -1
- package/dist/context/ChatContext.d.ts +2 -0
- package/dist/context/ChatContext.d.ts.map +1 -1
- package/dist/css/index.css +1 -9436
- package/dist/i18n/Streami18n.d.ts +0 -4
- package/dist/i18n/Streami18n.d.ts.map +1 -1
- package/dist/i18n/de.json +0 -4
- package/dist/i18n/en.json +0 -4
- package/dist/i18n/es.json +0 -4
- package/dist/i18n/fr.json +0 -4
- package/dist/i18n/hi.json +0 -4
- package/dist/i18n/it.json +0 -4
- package/dist/i18n/ja.json +0 -4
- package/dist/i18n/ko.json +0 -4
- package/dist/i18n/nl.json +0 -4
- package/dist/i18n/pt.json +0 -4
- package/dist/i18n/ru.json +0 -4
- package/dist/i18n/tr.json +0 -4
- package/dist/index.cjs.js +241 -255
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/MessageActions.scss +19 -0
- package/dist/scss/MessageList.scss +16 -7
- package/dist/scss/Modal.scss +1 -2
- package/dist/scss/Thread.scss +0 -1
- package/dist/scss/_variables.scss +2 -0
- package/dist/stories/edit-message.stories.d.ts +3 -0
- package/dist/stories/edit-message.stories.d.ts.map +1 -0
- package/dist/stories/edit-message.stories.js +54 -0
- package/dist/stories/navigate-long-message-lists.stories.d.ts.map +1 -1
- package/dist/stories/navigate-long-message-lists.stories.js +5 -3
- package/dist/types/types.d.ts +2 -12
- package/dist/types/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -6
- package/CHANGELOG.md +0 -1795
|
@@ -17,7 +17,7 @@ export declare type FileUpload = {
|
|
|
17
17
|
state: 'finished' | 'failed' | 'uploading';
|
|
18
18
|
url?: string;
|
|
19
19
|
};
|
|
20
|
-
export declare type ImageUpload = {
|
|
20
|
+
export declare type ImageUpload<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
21
21
|
file: {
|
|
22
22
|
name: string;
|
|
23
23
|
height?: number;
|
|
@@ -32,7 +32,7 @@ export declare type ImageUpload = {
|
|
|
32
32
|
state: 'finished' | 'failed' | 'uploading';
|
|
33
33
|
previewUri?: string;
|
|
34
34
|
url?: string;
|
|
35
|
-
}
|
|
35
|
+
} & Pick<Attachment<StreamChatGenerics>, 'og_scrape_url' | 'title' | 'title_link' | 'author_name' | 'text'>;
|
|
36
36
|
export declare type MessageInputState<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
37
37
|
attachments: Attachment<StreamChatGenerics>[];
|
|
38
38
|
emojiPickerIsOpen: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessageInputState.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAY1E,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAErF,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,IAAI,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,oBAAY,WAAW,GAAG;
|
|
1
|
+
{"version":3,"file":"useMessageInputState.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputState.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,15 +18,13 @@ import { useMessageInputText } from './useMessageInputText';
|
|
|
18
18
|
import { useEmojiPicker } from './useEmojiPicker';
|
|
19
19
|
import { useSubmitHandler } from './useSubmitHandler';
|
|
20
20
|
import { usePasteHandler } from './usePasteHandler';
|
|
21
|
-
var emptyFileUploads = {};
|
|
22
|
-
var emptyImageUploads = {};
|
|
23
21
|
var makeEmptyMessageInputState = function () { return ({
|
|
24
22
|
attachments: [],
|
|
25
23
|
emojiPickerIsOpen: false,
|
|
26
24
|
fileOrder: [],
|
|
27
|
-
fileUploads:
|
|
25
|
+
fileUploads: {},
|
|
28
26
|
imageOrder: [],
|
|
29
|
-
imageUploads:
|
|
27
|
+
imageUploads: {},
|
|
30
28
|
mentioned_users: [],
|
|
31
29
|
setText: function () { return null; },
|
|
32
30
|
text: '',
|
|
@@ -35,46 +33,53 @@ var makeEmptyMessageInputState = function () { return ({
|
|
|
35
33
|
* Initializes the state. Empty if the message prop is falsy.
|
|
36
34
|
*/
|
|
37
35
|
var initState = function (message) {
|
|
38
|
-
var _a, _b, _c;
|
|
36
|
+
var _a, _b, _c, _d, _e;
|
|
39
37
|
if (!message) {
|
|
40
38
|
return makeEmptyMessageInputState();
|
|
41
39
|
}
|
|
42
40
|
// if message prop is defined, get image uploads, file uploads, text, etc.
|
|
43
|
-
var imageUploads = ((_a = message.attachments) === null || _a === void 0 ? void 0 : _a.filter(function (_a) {
|
|
41
|
+
var imageUploads = (_b = (_a = message.attachments) === null || _a === void 0 ? void 0 : _a.filter(function (_a) {
|
|
44
42
|
var type = _a.type;
|
|
45
43
|
return type === 'image';
|
|
46
|
-
}).reduce(function (acc,
|
|
44
|
+
}).reduce(function (acc, _a) {
|
|
45
|
+
var author_name = _a.author_name, _b = _a.fallback, fallback = _b === void 0 ? '' : _b, image_url = _a.image_url, og_scrape_url = _a.og_scrape_url, text = _a.text, title = _a.title, title_link = _a.title_link;
|
|
47
46
|
var id = nanoid();
|
|
48
47
|
acc[id] = {
|
|
48
|
+
author_name: author_name,
|
|
49
49
|
file: {
|
|
50
|
-
name:
|
|
50
|
+
name: fallback,
|
|
51
51
|
},
|
|
52
52
|
id: id,
|
|
53
|
+
og_scrape_url: og_scrape_url,
|
|
53
54
|
state: 'finished',
|
|
54
|
-
|
|
55
|
+
text: text,
|
|
56
|
+
title: title,
|
|
57
|
+
title_link: title_link,
|
|
58
|
+
url: image_url,
|
|
55
59
|
};
|
|
56
60
|
return acc;
|
|
57
|
-
}, {}))
|
|
58
|
-
var
|
|
59
|
-
var fileUploads = ((_b = message.attachments) === null || _b === void 0 ? void 0 : _b.filter(function (_a) {
|
|
61
|
+
}, {})) !== null && _b !== void 0 ? _b : {};
|
|
62
|
+
var fileUploads = (_d = (_c = message.attachments) === null || _c === void 0 ? void 0 : _c.filter(function (_a) {
|
|
60
63
|
var type = _a.type;
|
|
61
64
|
return type === 'file';
|
|
62
|
-
}).reduce(function (acc,
|
|
65
|
+
}).reduce(function (acc, _a) {
|
|
66
|
+
var asset_url = _a.asset_url, file_size = _a.file_size, mime_type = _a.mime_type, _b = _a.title, title = _b === void 0 ? '' : _b;
|
|
63
67
|
var id = nanoid();
|
|
64
68
|
acc[id] = {
|
|
65
69
|
file: {
|
|
66
|
-
name:
|
|
67
|
-
size:
|
|
68
|
-
type:
|
|
70
|
+
name: title,
|
|
71
|
+
size: file_size,
|
|
72
|
+
type: mime_type,
|
|
69
73
|
},
|
|
70
74
|
id: id,
|
|
71
75
|
state: 'finished',
|
|
72
|
-
url:
|
|
76
|
+
url: asset_url,
|
|
73
77
|
};
|
|
74
78
|
return acc;
|
|
75
|
-
}, {}))
|
|
79
|
+
}, {})) !== null && _d !== void 0 ? _d : {};
|
|
80
|
+
var imageOrder = Object.keys(imageUploads);
|
|
76
81
|
var fileOrder = Object.keys(fileUploads);
|
|
77
|
-
var attachments = ((
|
|
82
|
+
var attachments = ((_e = message.attachments) === null || _e === void 0 ? void 0 : _e.filter(function (_a) {
|
|
78
83
|
var type = _a.type;
|
|
79
84
|
return type !== 'file' && type !== 'image';
|
|
80
85
|
})) || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSubmitHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useSubmitHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSubmitHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useSubmitHandler.ts"],"names":[],"mappings":"AAKA,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;0BA4Ed,MAAM,kBAAkB;CAoGlC,CAAC"}
|
|
@@ -45,11 +45,23 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
45
45
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
49
|
+
var t = {};
|
|
50
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
51
|
+
t[p] = s[p];
|
|
52
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
53
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
54
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
55
|
+
t[p[i]] = s[p[i]];
|
|
56
|
+
}
|
|
57
|
+
return t;
|
|
58
|
+
};
|
|
48
59
|
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
49
60
|
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
50
61
|
to[j] = from[i];
|
|
51
62
|
return to;
|
|
52
63
|
};
|
|
64
|
+
import { useEffect, useRef } from 'react';
|
|
53
65
|
import { useChannelActionContext } from '../../../context/ChannelActionContext';
|
|
54
66
|
import { useChannelStateContext } from '../../../context/ChannelStateContext';
|
|
55
67
|
import { useTranslationContext } from '../../../context/TranslationContext';
|
|
@@ -64,8 +76,16 @@ export var useSubmitHandler = function (props, state, dispatch, numberOfUploads)
|
|
|
64
76
|
var clearEditingState = props.clearEditingState, message = props.message, overrideSubmitHandler = props.overrideSubmitHandler, parent = props.parent, publishTypingEvent = props.publishTypingEvent;
|
|
65
77
|
var attachments = state.attachments, fileOrder = state.fileOrder, fileUploads = state.fileUploads, imageOrder = state.imageOrder, imageUploads = state.imageUploads, mentioned_users = state.mentioned_users, text = state.text;
|
|
66
78
|
var channel = useChannelStateContext('useSubmitHandler').channel;
|
|
67
|
-
var _a = useChannelActionContext('useSubmitHandler'), addNotification = _a.addNotification, editMessage = _a.editMessage,
|
|
79
|
+
var _a = useChannelActionContext('useSubmitHandler'), addNotification = _a.addNotification, editMessage = _a.editMessage, sendMessage = _a.sendMessage;
|
|
68
80
|
var t = useTranslationContext('useSubmitHandler').t;
|
|
81
|
+
var textReference = useRef({ hasChanged: false, initialText: text });
|
|
82
|
+
useEffect(function () {
|
|
83
|
+
if (!textReference.current.initialText.length) {
|
|
84
|
+
textReference.current.initialText = text;
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
textReference.current.hasChanged = text !== textReference.current.initialText;
|
|
88
|
+
}, [text]);
|
|
69
89
|
var getAttachmentsFromUploads = function () {
|
|
70
90
|
var imageAttachments = imageOrder
|
|
71
91
|
.map(function (id) { return imageUploads[id]; })
|
|
@@ -74,29 +94,40 @@ export var useSubmitHandler = function (props, state, dispatch, numberOfUploads)
|
|
|
74
94
|
var id = _a.id, url = _a.url;
|
|
75
95
|
return self.every(function (upload) { return upload.id === id || upload.url !== url; });
|
|
76
96
|
})
|
|
77
|
-
.
|
|
97
|
+
.filter(function (upload) {
|
|
98
|
+
// keep the OG attachments in case the text has not changed as the BE
|
|
99
|
+
// won't re-enrich the message when only attachments have changed
|
|
100
|
+
if (!textReference.current.hasChanged)
|
|
101
|
+
return true;
|
|
102
|
+
return !upload.og_scrape_url;
|
|
103
|
+
})
|
|
104
|
+
.map(function (_a) {
|
|
105
|
+
var name = _a.file.name, url = _a.url, rest = __rest(_a, ["file", "url"]);
|
|
78
106
|
return ({
|
|
79
|
-
|
|
80
|
-
|
|
107
|
+
author_name: rest.author_name,
|
|
108
|
+
fallback: name,
|
|
109
|
+
image_url: url,
|
|
110
|
+
og_scrape_url: rest.og_scrape_url,
|
|
111
|
+
text: rest.text,
|
|
112
|
+
title: rest.title,
|
|
113
|
+
title_link: rest.title_link,
|
|
81
114
|
type: 'image',
|
|
82
115
|
});
|
|
83
116
|
});
|
|
84
117
|
var fileAttachments = fileOrder
|
|
85
118
|
.map(function (id) { return fileUploads[id]; })
|
|
86
119
|
.filter(function (upload) { return upload.state !== 'failed'; })
|
|
87
|
-
.map(function (upload) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
});
|
|
95
|
-
});
|
|
120
|
+
.map(function (upload) { return ({
|
|
121
|
+
asset_url: upload.url,
|
|
122
|
+
file_size: upload.file.size,
|
|
123
|
+
mime_type: upload.file.type,
|
|
124
|
+
title: upload.file.name,
|
|
125
|
+
type: getAttachmentTypeFromMime(upload.file.type || ''),
|
|
126
|
+
}); });
|
|
96
127
|
return __spreadArray(__spreadArray(__spreadArray([], attachments), imageAttachments), fileAttachments);
|
|
97
128
|
};
|
|
98
129
|
var handleSubmit = function (event, customMessageData) { return __awaiter(void 0, void 0, void 0, function () {
|
|
99
|
-
var trimmedMessage, isEmptyMessage, someAttachmentsUploading, newAttachments, actualMentionedUsers, updatedMessage, err_1, err_2
|
|
130
|
+
var trimmedMessage, isEmptyMessage, someAttachmentsUploading, newAttachments, actualMentionedUsers, updatedMessage, err_1, err_2;
|
|
100
131
|
return __generator(this, function (_a) {
|
|
101
132
|
switch (_a.label) {
|
|
102
133
|
case 0:
|
|
@@ -127,102 +158,53 @@ export var useSubmitHandler = function (props, state, dispatch, numberOfUploads)
|
|
|
127
158
|
mentioned_users: actualMentionedUsers,
|
|
128
159
|
text: text,
|
|
129
160
|
};
|
|
130
|
-
if (!
|
|
161
|
+
if (!message) return [3 /*break*/, 5];
|
|
162
|
+
delete message.i18n;
|
|
131
163
|
_a.label = 1;
|
|
132
164
|
case 1:
|
|
133
|
-
_a.trys.push([1,
|
|
134
|
-
removeMessage(message);
|
|
135
|
-
dispatch({ type: 'clear' });
|
|
136
|
-
if (!overrideSubmitHandler) return [3 /*break*/, 3];
|
|
137
|
-
return [4 /*yield*/, overrideSubmitHandler(__assign(__assign({}, updatedMessage), { parent: parent }), channel.cid, customMessageData)];
|
|
138
|
-
case 2:
|
|
139
|
-
_a.sent();
|
|
140
|
-
return [3 /*break*/, 5];
|
|
141
|
-
case 3: return [4 /*yield*/, sendMessage(__assign(__assign({}, updatedMessage), { parent: parent }), customMessageData)];
|
|
142
|
-
case 4:
|
|
143
|
-
_a.sent();
|
|
144
|
-
_a.label = 5;
|
|
145
|
-
case 5:
|
|
146
|
-
if (!publishTypingEvent) return [3 /*break*/, 7];
|
|
147
|
-
return [4 /*yield*/, channel.stopTyping()];
|
|
148
|
-
case 6:
|
|
149
|
-
_a.sent();
|
|
150
|
-
_a.label = 7;
|
|
151
|
-
case 7: return [3 /*break*/, 10];
|
|
152
|
-
case 8:
|
|
153
|
-
err_1 = _a.sent();
|
|
154
|
-
dispatch({
|
|
155
|
-
getNewText: function () { return text; },
|
|
156
|
-
type: 'setText',
|
|
157
|
-
});
|
|
158
|
-
if (actualMentionedUsers.length) {
|
|
159
|
-
actualMentionedUsers.forEach(function (user) {
|
|
160
|
-
dispatch({ type: 'addMentionedUser', user: user });
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
addNotification(t('Send message request failed'), 'error');
|
|
164
|
-
return [3 /*break*/, 10];
|
|
165
|
-
case 9:
|
|
166
|
-
if (clearEditingState)
|
|
167
|
-
clearEditingState();
|
|
168
|
-
return [7 /*endfinally*/];
|
|
169
|
-
case 10: return [3 /*break*/, 24];
|
|
170
|
-
case 11:
|
|
171
|
-
if (!(message && message.status === 'received')) return [3 /*break*/, 16];
|
|
172
|
-
delete message.i18n;
|
|
173
|
-
_a.label = 12;
|
|
174
|
-
case 12:
|
|
175
|
-
_a.trys.push([12, 14, , 15]);
|
|
165
|
+
_a.trys.push([1, 3, , 4]);
|
|
176
166
|
return [4 /*yield*/, editMessage(__assign(__assign({}, message), updatedMessage))];
|
|
177
|
-
case
|
|
167
|
+
case 2:
|
|
178
168
|
_a.sent();
|
|
179
|
-
|
|
180
|
-
clearEditingState();
|
|
169
|
+
clearEditingState === null || clearEditingState === void 0 ? void 0 : clearEditingState();
|
|
181
170
|
dispatch({ type: 'clear' });
|
|
182
|
-
return [3 /*break*/,
|
|
183
|
-
case
|
|
184
|
-
|
|
185
|
-
// if we don't do that, the user can't see the error message.
|
|
186
|
-
// it's still not great, because in that way, we lose the edit state.
|
|
187
|
-
// this needs to be retought.
|
|
188
|
-
if (clearEditingState)
|
|
189
|
-
clearEditingState();
|
|
171
|
+
return [3 /*break*/, 4];
|
|
172
|
+
case 3:
|
|
173
|
+
err_1 = _a.sent();
|
|
190
174
|
addNotification(t('Edit message request failed'), 'error');
|
|
191
|
-
return [3 /*break*/,
|
|
192
|
-
case
|
|
193
|
-
case
|
|
194
|
-
_a.trys.push([
|
|
175
|
+
return [3 /*break*/, 4];
|
|
176
|
+
case 4: return [3 /*break*/, 13];
|
|
177
|
+
case 5:
|
|
178
|
+
_a.trys.push([5, 12, , 13]);
|
|
195
179
|
dispatch({ type: 'clear' });
|
|
196
|
-
if (!overrideSubmitHandler) return [3 /*break*/,
|
|
180
|
+
if (!overrideSubmitHandler) return [3 /*break*/, 7];
|
|
197
181
|
return [4 /*yield*/, overrideSubmitHandler(__assign(__assign({}, updatedMessage), { parent: parent }), channel.cid, customMessageData)];
|
|
198
|
-
case
|
|
182
|
+
case 6:
|
|
199
183
|
_a.sent();
|
|
200
|
-
return [3 /*break*/,
|
|
201
|
-
case
|
|
202
|
-
case
|
|
184
|
+
return [3 /*break*/, 9];
|
|
185
|
+
case 7: return [4 /*yield*/, sendMessage(__assign(__assign({}, updatedMessage), { parent: parent }), customMessageData)];
|
|
186
|
+
case 8:
|
|
203
187
|
_a.sent();
|
|
204
|
-
_a.label =
|
|
205
|
-
case
|
|
206
|
-
if (!publishTypingEvent) return [3 /*break*/,
|
|
188
|
+
_a.label = 9;
|
|
189
|
+
case 9:
|
|
190
|
+
if (!publishTypingEvent) return [3 /*break*/, 11];
|
|
207
191
|
return [4 /*yield*/, channel.stopTyping()];
|
|
208
|
-
case
|
|
192
|
+
case 10:
|
|
209
193
|
_a.sent();
|
|
210
|
-
_a.label =
|
|
211
|
-
case
|
|
212
|
-
case
|
|
213
|
-
|
|
194
|
+
_a.label = 11;
|
|
195
|
+
case 11: return [3 /*break*/, 13];
|
|
196
|
+
case 12:
|
|
197
|
+
err_2 = _a.sent();
|
|
214
198
|
dispatch({
|
|
215
199
|
getNewText: function () { return text; },
|
|
216
200
|
type: 'setText',
|
|
217
201
|
});
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
});
|
|
222
|
-
}
|
|
202
|
+
actualMentionedUsers === null || actualMentionedUsers === void 0 ? void 0 : actualMentionedUsers.forEach(function (user) {
|
|
203
|
+
dispatch({ type: 'addMentionedUser', user: user });
|
|
204
|
+
});
|
|
223
205
|
addNotification(t('Send message request failed'), 'error');
|
|
224
|
-
return [3 /*break*/,
|
|
225
|
-
case
|
|
206
|
+
return [3 /*break*/, 13];
|
|
207
|
+
case 13: return [2 /*return*/];
|
|
226
208
|
}
|
|
227
209
|
});
|
|
228
210
|
}); };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AASA,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAKhG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA6LnE,aAAK,qBAAqB,GACtB,6BAA6B,GAC7B,8BAA8B,GAC9B,sBAAsB,GACtB,uBAAuB,GACvB,YAAY,GACZ,mCAAmC,GACnC,iCAAiC,GACjC,mCAAmC,GACnC,8BAA8B,GAC9B,gCAAgC,GAChC,gCAAgC,GAChC,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,YAAY,GACZ,kBAAkB,GAClB,YAAY,CAAC;AAEjB,oBAAY,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG;IAC3E,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAClD,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC9C,aAAa,EAAE,OAAO,KACnB,UAAU,CAAC;IAChB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qIAAqI;IACrI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mLAAmL;IACnL,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;IAClD,iHAAiH;IACjH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,6LAA6L;IAC7L,aAAa,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yKAAyK;IACzK,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qHAAqH;IACrH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6GAA6G;IAC7G,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gJA2BvB,CAAC"}
|
|
@@ -60,7 +60,6 @@ import React from 'react';
|
|
|
60
60
|
import { useEnrichedMessages } from './hooks/useEnrichedMessages';
|
|
61
61
|
import { useMessageListElements } from './hooks/useMessageListElements';
|
|
62
62
|
import { useScrollLocationLogic } from './hooks/useScrollLocationLogic';
|
|
63
|
-
import { Center } from './Center';
|
|
64
63
|
import { MessageNotification as DefaultMessageNotification } from './MessageNotification';
|
|
65
64
|
import { MessageListNotifications as DefaultMessageListNotifications } from './MessageListNotifications';
|
|
66
65
|
import { useChannelActionContext, } from '../../context/ChannelActionContext';
|
|
@@ -76,15 +75,19 @@ var MessageListWithContext = function (props) {
|
|
|
76
75
|
var channel = props.channel, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? false : _a, groupStyles = props.groupStyles, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, _e = props.messages, messages = _e === void 0 ? [] : _e, notifications = props.notifications, _f = props.noGroupByUser, noGroupByUser = _f === void 0 ? false : _f, _g = props.pinPermissions, pinPermissions = _g === void 0 ? defaultPinPermissions : _g, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
77
76
|
_h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
78
77
|
returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read, _l = props.messageLimit, messageLimit = _l === void 0 ? 100 : _l, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _m = props.hasMoreNewer, hasMoreNewer = _m === void 0 ? false : _m, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _o = props.jumpToLatestMessage, jumpToLatestMessage = _o === void 0 ? function () { return Promise.resolve(); } : _o;
|
|
78
|
+
var _p = React.useState(null), listElement = _p[0], setListElement = _p[1];
|
|
79
|
+
var _q = React.useState(null), ulElement = _q[0], setUlElement = _q[1];
|
|
79
80
|
var customClasses = useChatContext('MessageList').customClasses;
|
|
80
|
-
var
|
|
81
|
-
var
|
|
81
|
+
var _r = useComponentContext('MessageList'), _s = _r.EmptyStateIndicator, EmptyStateIndicator = _s === void 0 ? DefaultEmptyStateIndicator : _s, _t = _r.MessageListNotifications, MessageListNotifications = _t === void 0 ? DefaultMessageListNotifications : _t, _u = _r.MessageNotification, MessageNotification = _u === void 0 ? DefaultMessageNotification : _u, _v = _r.TypingIndicator, TypingIndicator = _v === void 0 ? DefaultTypingIndicator : _v;
|
|
82
|
+
var _w = useScrollLocationLogic({
|
|
82
83
|
hasMoreNewer: hasMoreNewer,
|
|
84
|
+
listElement: listElement,
|
|
83
85
|
messages: messages,
|
|
84
86
|
scrolledUpThreshold: props.scrolledUpThreshold,
|
|
85
87
|
suppressAutoscroll: suppressAutoscroll,
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
ulElement: ulElement,
|
|
89
|
+
}), hasNewMessages = _w.hasNewMessages, onMessageLoadCaptured = _w.onMessageLoadCaptured, onScroll = _w.onScroll, scrollToBottom = _w.scrollToBottom, wrapperRect = _w.wrapperRect;
|
|
90
|
+
var _x = useEnrichedMessages({
|
|
88
91
|
channel: channel,
|
|
89
92
|
disableDateSeparator: disableDateSeparator,
|
|
90
93
|
groupStyles: groupStyles,
|
|
@@ -93,7 +96,7 @@ var MessageListWithContext = function (props) {
|
|
|
93
96
|
hideNewMessageSeparator: hideNewMessageSeparator,
|
|
94
97
|
messages: messages,
|
|
95
98
|
noGroupByUser: noGroupByUser,
|
|
96
|
-
}), messageGroupStyles =
|
|
99
|
+
}), messageGroupStyles = _x.messageGroupStyles, enrichedMessages = _x.messages;
|
|
97
100
|
var elements = useMessageListElements({
|
|
98
101
|
enrichedMessages: enrichedMessages,
|
|
99
102
|
internalMessageProps: {
|
|
@@ -128,7 +131,7 @@ var MessageListWithContext = function (props) {
|
|
|
128
131
|
returnAllReadData: returnAllReadData,
|
|
129
132
|
threadList: threadList,
|
|
130
133
|
});
|
|
131
|
-
var
|
|
134
|
+
var _y = useComponentContext('useInternalInfiniteScrollProps').LoadingIndicator, LoadingIndicator = _y === void 0 ? DefaultLoadingIndicator : _y;
|
|
132
135
|
var messageListClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.messageList) || 'str-chat__list';
|
|
133
136
|
var threadListClass = threadList ? (customClasses === null || customClasses === void 0 ? void 0 : customClasses.threadList) || 'str-chat__list--thread' : '';
|
|
134
137
|
var loadMore = React.useCallback(function () {
|
|
@@ -157,18 +160,15 @@ var MessageListWithContext = function (props) {
|
|
|
157
160
|
}
|
|
158
161
|
});
|
|
159
162
|
}); }, [scrollToBottom, hasMoreNewer]);
|
|
160
|
-
var ulRef = React.useRef(null);
|
|
161
163
|
React.useLayoutEffect(function () {
|
|
162
|
-
var _a;
|
|
163
164
|
if (highlightedMessageId) {
|
|
164
|
-
var element =
|
|
165
|
+
var element = ulElement === null || ulElement === void 0 ? void 0 : ulElement.querySelector("[data-message-id='" + highlightedMessageId + "']");
|
|
165
166
|
element === null || element === void 0 ? void 0 : element.scrollIntoView({ block: 'center' });
|
|
166
167
|
}
|
|
167
168
|
}, [highlightedMessageId]);
|
|
168
169
|
return (React.createElement(React.Fragment, null,
|
|
169
|
-
React.createElement("div", { className: messageListClass + " " + threadListClass, onScroll: onScroll, ref:
|
|
170
|
-
|
|
171
|
-
React.createElement("ul", { className: 'str-chat__ul', ref: ulRef }, elements),
|
|
170
|
+
React.createElement("div", { className: messageListClass + " " + threadListClass, onScroll: onScroll, ref: setListElement, tabIndex: 0 }, !elements.length ? (React.createElement(EmptyStateIndicator, { listType: 'message' })) : (React.createElement(InfiniteScroll, __assign({ className: 'str-chat__reverse-infinite-scroll', "data-testid": 'reverse-infinite-scroll', hasMore: props.hasMore, hasMoreNewer: props.hasMoreNewer, isLoading: props.loadingMore, loader: React.createElement("div", { className: 'str-chat__list__loading', key: 'loadingindicator' }, props.loadingMore && React.createElement(LoadingIndicator, { size: 20 })), loadMore: loadMore, loadMoreNewer: loadMoreNewer }, props.internalInfiniteScrollProps),
|
|
171
|
+
React.createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
|
|
172
172
|
React.createElement(TypingIndicator, { threadList: threadList }),
|
|
173
173
|
React.createElement("div", { key: 'bottom' })))),
|
|
174
174
|
React.createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottomFromNotification })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessageListScrollManager.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useMessageListScrollManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oBAAY,iCAAiC,CAC3C,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC9C,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;IACjD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,MAAM,EAAE,iCAAiC,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"useMessageListScrollManager.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useMessageListScrollManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oBAAY,iCAAiC,CAC3C,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC9C,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;IACjD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,MAAM,EAAE,iCAAiC,CAAC,kBAAkB,CAAC,oBAiErC,MAAM,UAG/B"}
|
|
@@ -9,9 +9,6 @@ export function useMessageListScrollManager(params) {
|
|
|
9
9
|
});
|
|
10
10
|
var messages = useRef();
|
|
11
11
|
var scrollTop = useRef(0);
|
|
12
|
-
useEffect(function () {
|
|
13
|
-
scrollToBottom();
|
|
14
|
-
}, []);
|
|
15
12
|
useEffect(function () {
|
|
16
13
|
var _a, _b, _c;
|
|
17
14
|
var prevMeasures = measures.current;
|
|
@@ -3,14 +3,16 @@ import type { StreamMessage } from '../../../context/ChannelStateContext';
|
|
|
3
3
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
4
4
|
export declare type UseScrollLocationLogicParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
5
5
|
hasMoreNewer: boolean;
|
|
6
|
+
listElement: HTMLDivElement | null;
|
|
6
7
|
suppressAutoscroll: boolean;
|
|
8
|
+
ulElement: HTMLUListElement | null;
|
|
7
9
|
currentUserId?: string;
|
|
8
10
|
messages?: StreamMessage<StreamChatGenerics>[];
|
|
9
11
|
scrolledUpThreshold?: number;
|
|
10
12
|
};
|
|
11
13
|
export declare const useScrollLocationLogic: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(params: UseScrollLocationLogicParams<StreamChatGenerics>) => {
|
|
12
14
|
hasNewMessages: boolean;
|
|
13
|
-
|
|
15
|
+
listElement: HTMLDivElement | null;
|
|
14
16
|
onMessageLoadCaptured: () => void;
|
|
15
17
|
onScroll: (event: React.UIEvent<HTMLDivElement>) => void;
|
|
16
18
|
scrollToBottom: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScrollLocationLogic.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useScrollLocationLogic.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"useScrollLocationLogic.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useScrollLocationLogic.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoE,MAAM,OAAO,CAAC;AAKzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAKtE,oBAAY,4BAA4B,CACtC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;sBAoFvB,aAAa,CAAC,cAAc,CAAC;;;CAqCxC,CAAC"}
|
|
@@ -1,48 +1,63 @@
|
|
|
1
|
-
import { useCallback, useLayoutEffect, useRef, useState } from 'react';
|
|
1
|
+
import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
|
2
|
+
import { ResizeObserver as Polyfill } from '@juggle/resize-observer';
|
|
2
3
|
import { useMessageListScrollManager } from './useMessageListScrollManager';
|
|
4
|
+
var isBrowser = typeof window !== 'undefined';
|
|
5
|
+
var ResizeObserver = (isBrowser && window.ResizeObserver) || Polyfill;
|
|
3
6
|
export var useScrollLocationLogic = function (params) {
|
|
4
|
-
var _a = params.messages, messages = _a === void 0 ? [] : _a, _b = params.scrolledUpThreshold, scrolledUpThreshold = _b === void 0 ? 200 : _b, hasMoreNewer = params.hasMoreNewer, suppressAutoscroll = params.suppressAutoscroll;
|
|
7
|
+
var _a = params.messages, messages = _a === void 0 ? [] : _a, _b = params.scrolledUpThreshold, scrolledUpThreshold = _b === void 0 ? 200 : _b, hasMoreNewer = params.hasMoreNewer, suppressAutoscroll = params.suppressAutoscroll, listElement = params.listElement, ulElement = params.ulElement;
|
|
5
8
|
var _c = useState(false), hasNewMessages = _c[0], setHasNewMessages = _c[1];
|
|
6
9
|
var _d = useState(), wrapperRect = _d[0], setWrapperRect = _d[1];
|
|
7
10
|
var closeToBottom = useRef(false);
|
|
8
11
|
var closeToTop = useRef(false);
|
|
9
|
-
var
|
|
12
|
+
var scrollCounter = useRef({ autoScroll: 0, scroll: 0 });
|
|
10
13
|
var scrollToBottom = useCallback(function () {
|
|
11
|
-
|
|
12
|
-
if (!((_a = listRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo) || hasMoreNewer || suppressAutoscroll) {
|
|
14
|
+
if (!(listElement === null || listElement === void 0 ? void 0 : listElement.scrollTo) || hasMoreNewer || suppressAutoscroll) {
|
|
13
15
|
return;
|
|
14
16
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
scrollCounter.current.autoScroll += 1;
|
|
18
|
+
listElement.scrollTo({
|
|
19
|
+
top: listElement.scrollHeight,
|
|
17
20
|
});
|
|
18
21
|
setHasNewMessages(false);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
}, [listElement, hasMoreNewer, suppressAutoscroll]);
|
|
23
|
+
useEffect(function () {
|
|
24
|
+
if (!listElement)
|
|
25
|
+
return;
|
|
26
|
+
var observer = new ResizeObserver(scrollToBottom);
|
|
27
|
+
var cancelObserverOnUserScroll = function () {
|
|
28
|
+
scrollCounter.current.scroll += 1;
|
|
29
|
+
var userScrolled = scrollCounter.current.autoScroll < scrollCounter.current.scroll;
|
|
30
|
+
if (ulElement && userScrolled) {
|
|
31
|
+
observer.unobserve(ulElement);
|
|
32
|
+
listElement === null || listElement === void 0 ? void 0 : listElement.removeEventListener('scroll', cancelObserverOnUserScroll);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
if (ulElement) {
|
|
36
|
+
observer.observe(ulElement);
|
|
37
|
+
}
|
|
38
|
+
listElement.addEventListener('scroll', cancelObserverOnUserScroll);
|
|
39
|
+
return function () {
|
|
40
|
+
observer.disconnect();
|
|
41
|
+
if (listElement) {
|
|
42
|
+
listElement.removeEventListener('scroll', cancelObserverOnUserScroll);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}, [ulElement, scrollToBottom]);
|
|
27
46
|
useLayoutEffect(function () {
|
|
28
|
-
if (
|
|
29
|
-
setWrapperRect(
|
|
47
|
+
if (listElement) {
|
|
48
|
+
setWrapperRect(listElement.getBoundingClientRect());
|
|
30
49
|
scrollToBottom();
|
|
31
50
|
}
|
|
32
|
-
}, [
|
|
51
|
+
}, [listElement, hasMoreNewer]);
|
|
33
52
|
var updateScrollTop = useMessageListScrollManager({
|
|
34
53
|
messages: messages,
|
|
35
54
|
onScrollBy: function (scrollBy) {
|
|
36
|
-
|
|
37
|
-
(_a = listRef.current) === null || _a === void 0 ? void 0 : _a.scrollBy({ top: scrollBy });
|
|
38
|
-
},
|
|
39
|
-
scrollContainerMeasures: function () {
|
|
40
|
-
var _a, _b;
|
|
41
|
-
return ({
|
|
42
|
-
offsetHeight: ((_a = listRef.current) === null || _a === void 0 ? void 0 : _a.offsetHeight) || 0,
|
|
43
|
-
scrollHeight: ((_b = listRef.current) === null || _b === void 0 ? void 0 : _b.scrollHeight) || 0,
|
|
44
|
-
});
|
|
55
|
+
listElement === null || listElement === void 0 ? void 0 : listElement.scrollBy({ top: scrollBy });
|
|
45
56
|
},
|
|
57
|
+
scrollContainerMeasures: function () { return ({
|
|
58
|
+
offsetHeight: (listElement === null || listElement === void 0 ? void 0 : listElement.offsetHeight) || 0,
|
|
59
|
+
scrollHeight: (listElement === null || listElement === void 0 ? void 0 : listElement.scrollHeight) || 0,
|
|
60
|
+
}); },
|
|
46
61
|
scrolledUpThreshold: scrolledUpThreshold,
|
|
47
62
|
scrollToBottom: scrollToBottom,
|
|
48
63
|
showNewMessages: function () { return setHasNewMessages(true); },
|
|
@@ -70,7 +85,7 @@ export var useScrollLocationLogic = function (params) {
|
|
|
70
85
|
}, [closeToTop, closeToBottom, scrollToBottom]);
|
|
71
86
|
return {
|
|
72
87
|
hasNewMessages: hasNewMessages,
|
|
73
|
-
|
|
88
|
+
listElement: listElement,
|
|
74
89
|
onMessageLoadCaptured: onMessageLoadCaptured,
|
|
75
90
|
onScroll: onScroll,
|
|
76
91
|
scrollToBottom: scrollToBottom,
|
|
@@ -5,5 +5,5 @@ export declare type ModalProps = {
|
|
|
5
5
|
/** Callback handler for closing of modal. */
|
|
6
6
|
onClose?: () => void | ((event?: React.BaseSyntheticEvent) => void);
|
|
7
7
|
};
|
|
8
|
-
export declare const Modal: (props: PropsWithChildren<ModalProps>) => JSX.Element;
|
|
8
|
+
export declare const Modal: (props: PropsWithChildren<ModalProps>) => JSX.Element | null;
|
|
9
9
|
//# sourceMappingURL=Modal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAqB,MAAM,OAAO,CAAC;AAIpE,oBAAY,UAAU,GAAG;IACvB,2CAA2C;IAC3C,IAAI,EAAE,OAAO,CAAC;IACd,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC;CACrE,CAAC;AAEF,eAAO,MAAM,KAAK,UAAW,kBAAkB,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAqB,MAAM,OAAO,CAAC;AAIpE,oBAAY,UAAU,GAAG;IACvB,2CAA2C;IAC3C,IAAI,EAAE,OAAO,CAAC;IACd,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC;CACrE,CAAC;AAEF,eAAO,MAAM,KAAK,UAAW,kBAAkB,UAAU,CAAC,uBA8CzD,CAAC"}
|