stream-chat-react 6.7.2 → 6.8.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/README.md +1 -1
- package/dist/browser.full-bundle.js +2711 -259
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +10 -3
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Channel/Channel.d.ts +2 -0
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +8 -3
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +10 -0
- package/dist/components/MessageInput/DefaultTriggerProvider.d.ts.map +1 -1
- package/dist/components/MessageInput/DefaultTriggerProvider.js +1 -0
- package/dist/components/MessageInput/MessageInput.d.ts +2 -0
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +1 -0
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.js +6 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +1 -0
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.js +9 -11
- package/dist/components/MessageInput/hooks/utils.d.ts +15 -0
- package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -0
- package/dist/components/MessageInput/hooks/utils.js +114 -0
- package/dist/css/index.css +1 -7329
- package/dist/index.cjs.js +113 -16
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/ActionsBox.scss +2 -0
- package/dist/scss/Attachment.scss +4 -0
- package/dist/scss/AttachmentActions.scss +1 -0
- package/dist/scss/Audio.scss +2 -0
- package/dist/scss/Avatar.scss +2 -0
- package/dist/scss/Card.scss +6 -2
- package/dist/scss/ChannelHeader.scss +22 -3
- package/dist/scss/ChannelList.scss +5 -6
- package/dist/scss/ChannelSearch.scss +2 -4
- package/dist/scss/ChatDown.scss +1 -0
- package/dist/scss/DateSeparator.scss +3 -0
- package/dist/scss/EditMessageForm.scss +4 -0
- package/dist/scss/EventComponent.scss +4 -0
- package/dist/scss/Gallery.scss +7 -1
- package/dist/scss/LoadMoreButton.scss +1 -0
- package/dist/scss/Message.scss +78 -2
- package/dist/scss/MessageInput.scss +3 -0
- package/dist/scss/MessageInputFlat.scss +8 -1
- package/dist/scss/MessageList.scss +10 -0
- package/dist/scss/MessageRepliesCountButton.scss +1 -0
- package/dist/scss/MessageTeam.scss +3 -7
- package/dist/scss/Modal.scss +3 -0
- package/dist/scss/ReactionList.scss +18 -18
- package/dist/scss/ReactionSelector.scss +4 -0
- package/dist/scss/SimpleReactionsList.scss +2 -1
- package/dist/scss/Thread.scss +19 -0
- package/dist/scss/TypingIndicator.scss +7 -0
- package/dist/scss/VirtualMessage.scss +8 -7
- package/dist/scss/_base.scss +17 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +9 -28
- package/dist/css/index.js +0 -1
- package/dist/css/index.min.css +0 -1
package/dist/index.cjs.js
CHANGED
|
@@ -3512,6 +3512,85 @@ var useEmojiTrigger = function (emojiIndex) { return ({
|
|
|
3512
3512
|
}); },
|
|
3513
3513
|
}); };
|
|
3514
3514
|
|
|
3515
|
+
var accentsMap = {
|
|
3516
|
+
a: 'á|à|ã|â|À|Á|Ã|Â',
|
|
3517
|
+
c: 'ç|Ç',
|
|
3518
|
+
e: 'é|è|ê|É|È|Ê',
|
|
3519
|
+
i: 'í|ì|î|Í|Ì|Î',
|
|
3520
|
+
n: 'ñ|Ñ',
|
|
3521
|
+
o: 'ó|ò|ô|õ|Ó|Ò|Ô|Õ',
|
|
3522
|
+
u: 'ú|ù|û|ü|Ú|Ù|Û|Ü',
|
|
3523
|
+
};
|
|
3524
|
+
var removeDiacritics = function (text) {
|
|
3525
|
+
if (!text)
|
|
3526
|
+
return '';
|
|
3527
|
+
return Object.keys(accentsMap).reduce(function (acc, current) { return acc.replace(new RegExp(accentsMap[current], 'g'), current); }, text);
|
|
3528
|
+
};
|
|
3529
|
+
var calculateLevenshtein = function (query, name) {
|
|
3530
|
+
if (query.length === 0)
|
|
3531
|
+
return name.length;
|
|
3532
|
+
if (name.length === 0)
|
|
3533
|
+
return query.length;
|
|
3534
|
+
var matrix = [];
|
|
3535
|
+
var i;
|
|
3536
|
+
for (i = 0; i <= name.length; i++) {
|
|
3537
|
+
matrix[i] = [i];
|
|
3538
|
+
}
|
|
3539
|
+
var j;
|
|
3540
|
+
for (j = 0; j <= query.length; j++) {
|
|
3541
|
+
matrix[0][j] = j;
|
|
3542
|
+
}
|
|
3543
|
+
for (i = 1; i <= name.length; i++) {
|
|
3544
|
+
for (j = 1; j <= query.length; j++) {
|
|
3545
|
+
if (name.charAt(i - 1) === query.charAt(j - 1)) {
|
|
3546
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
3547
|
+
}
|
|
3548
|
+
else {
|
|
3549
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
3550
|
+
Math.min(matrix[i][j - 1] + 1, // insertion
|
|
3551
|
+
matrix[i - 1][j] + 1)); // deletion
|
|
3552
|
+
}
|
|
3553
|
+
}
|
|
3554
|
+
}
|
|
3555
|
+
return matrix[name.length][query.length];
|
|
3556
|
+
};
|
|
3557
|
+
var searchLocalUsers = function (params) {
|
|
3558
|
+
var ownUserId = params.ownUserId, query = params.query, useMentionsTransliteration = params.useMentionsTransliteration, users = params.users;
|
|
3559
|
+
var matchingUsers = users.filter(function (user) {
|
|
3560
|
+
if (user.id === ownUserId)
|
|
3561
|
+
return false;
|
|
3562
|
+
if (!query)
|
|
3563
|
+
return true;
|
|
3564
|
+
var updatedId = removeDiacritics(user.id).toLowerCase();
|
|
3565
|
+
var updatedName = removeDiacritics(user.name).toLowerCase();
|
|
3566
|
+
var updatedQuery = removeDiacritics(query).toLowerCase();
|
|
3567
|
+
if (useMentionsTransliteration) {
|
|
3568
|
+
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
3569
|
+
var transliterate;
|
|
3570
|
+
return __generator(this, function (_a) {
|
|
3571
|
+
switch (_a.label) {
|
|
3572
|
+
case 0: return [4 /*yield*/, Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@sindresorhus/transliterate')); })];
|
|
3573
|
+
case 1:
|
|
3574
|
+
transliterate = (_a.sent()).default;
|
|
3575
|
+
updatedName = transliterate(user.name || '').toLowerCase();
|
|
3576
|
+
updatedQuery = transliterate(query).toLowerCase();
|
|
3577
|
+
updatedId = transliterate(user.id).toLowerCase();
|
|
3578
|
+
return [2 /*return*/];
|
|
3579
|
+
}
|
|
3580
|
+
});
|
|
3581
|
+
}); })();
|
|
3582
|
+
}
|
|
3583
|
+
if (updatedName) {
|
|
3584
|
+
var levenshtein_1 = calculateLevenshtein(updatedQuery, updatedName);
|
|
3585
|
+
if (updatedName.includes(updatedQuery) || levenshtein_1 <= 3)
|
|
3586
|
+
return true;
|
|
3587
|
+
}
|
|
3588
|
+
var levenshtein = calculateLevenshtein(updatedQuery, updatedId);
|
|
3589
|
+
return updatedId.includes(updatedQuery) || levenshtein <= 3;
|
|
3590
|
+
});
|
|
3591
|
+
return matchingUsers;
|
|
3592
|
+
};
|
|
3593
|
+
|
|
3515
3594
|
/**
|
|
3516
3595
|
* UI component for mentions rendered in suggestion list
|
|
3517
3596
|
*/
|
|
@@ -3534,7 +3613,7 @@ var UnMemoizedUserItem = function (props) {
|
|
|
3534
3613
|
var UserItem = React__default['default'].memo(UnMemoizedUserItem);
|
|
3535
3614
|
|
|
3536
3615
|
var useUserTrigger = function (params) {
|
|
3537
|
-
var disableMentions = params.disableMentions, mentionAllAppUsers = params.mentionAllAppUsers, _a = params.mentionQueryParams, mentionQueryParams = _a === void 0 ? {} : _a, onSelectUser = params.onSelectUser;
|
|
3616
|
+
var disableMentions = params.disableMentions, mentionAllAppUsers = params.mentionAllAppUsers, _a = params.mentionQueryParams, mentionQueryParams = _a === void 0 ? {} : _a, onSelectUser = params.onSelectUser, useMentionsTransliteration = params.useMentionsTransliteration;
|
|
3538
3617
|
var _b = React.useState(false), searching = _b[0], setSearching = _b[1];
|
|
3539
3618
|
var _c = useChatContext(), client = _c.client, mutes = _c.mutes;
|
|
3540
3619
|
var channel = useChannelStateContext().channel;
|
|
@@ -3649,16 +3728,13 @@ var useUserTrigger = function (params) {
|
|
|
3649
3728
|
*/
|
|
3650
3729
|
if (!query || Object.values(members || {}).length < 100) {
|
|
3651
3730
|
var users = getMembersAndWatchers();
|
|
3652
|
-
var
|
|
3653
|
-
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
}
|
|
3660
|
-
return user.id.toLowerCase().includes(query.toLowerCase());
|
|
3661
|
-
});
|
|
3731
|
+
var params_1 = {
|
|
3732
|
+
ownUserId: client.userID,
|
|
3733
|
+
query: query,
|
|
3734
|
+
useMentionsTransliteration: useMentionsTransliteration,
|
|
3735
|
+
users: users,
|
|
3736
|
+
};
|
|
3737
|
+
var matchingUsers = searchLocalUsers(params_1);
|
|
3662
3738
|
var usersToShow = ((_a = mentionQueryParams.options) === null || _a === void 0 ? void 0 : _a.limit) || 10;
|
|
3663
3739
|
var data = matchingUsers.slice(0, usersToShow);
|
|
3664
3740
|
if (onReady)
|
|
@@ -3705,6 +3781,7 @@ var DefaultTriggerProvider = function (_a) {
|
|
|
3705
3781
|
mentionAllAppUsers: currentValue.mentionAllAppUsers,
|
|
3706
3782
|
mentionQueryParams: currentValue.mentionQueryParams,
|
|
3707
3783
|
onSelectUser: currentValue.onSelectUser,
|
|
3784
|
+
useMentionsTransliteration: currentValue.useMentionsTransliteration,
|
|
3708
3785
|
}),
|
|
3709
3786
|
};
|
|
3710
3787
|
var newValue = __assign(__assign({}, currentValue), { autocompleteTriggers: defaultAutocompleteTriggers });
|
|
@@ -4521,6 +4598,7 @@ var initState = function (message) {
|
|
|
4521
4598
|
imageOrder: [],
|
|
4522
4599
|
imageUploads: __assign({}, emptyImageUploads),
|
|
4523
4600
|
mentioned_users: [],
|
|
4601
|
+
setText: function () { return null; },
|
|
4524
4602
|
text: '',
|
|
4525
4603
|
};
|
|
4526
4604
|
}
|
|
@@ -4572,6 +4650,7 @@ var initState = function (message) {
|
|
|
4572
4650
|
imageOrder: imageOrder,
|
|
4573
4651
|
imageUploads: imageUploads,
|
|
4574
4652
|
mentioned_users: mentioned_users,
|
|
4653
|
+
setText: function () { return null; },
|
|
4575
4654
|
text: message.text || '',
|
|
4576
4655
|
};
|
|
4577
4656
|
};
|
|
@@ -4660,12 +4739,15 @@ var useMessageInputState = function (props) {
|
|
|
4660
4739
|
var onSelectUser = React.useCallback(function (item) {
|
|
4661
4740
|
dispatch({ type: 'addMentionedUser', user: item });
|
|
4662
4741
|
}, []);
|
|
4742
|
+
var setText = React.useCallback(function (text) {
|
|
4743
|
+
dispatch({ getNewText: function () { return text; }, type: 'setText' });
|
|
4744
|
+
}, []);
|
|
4663
4745
|
return __assign(__assign({}, state), { closeCommandsList: closeCommandsList,
|
|
4664
4746
|
/**
|
|
4665
4747
|
* TODO: fix the below at some point because this type casting is wrong
|
|
4666
4748
|
* and just forced to not have warnings currently with the unknown casting
|
|
4667
4749
|
*/
|
|
4668
|
-
closeEmojiPicker: closeEmojiPicker, emojiIndex: useEmojiIndex(), emojiPickerRef: emojiPickerRef, handleChange: handleChange, handleEmojiKeyDown: handleEmojiKeyDown, handleSubmit: handleSubmit, insertText: insertText, isUploadEnabled: isUploadEnabled, maxFilesLeft: maxFilesLeft, numberOfUploads: numberOfUploads, onPaste: onPaste, onSelectEmoji: onSelectEmoji, onSelectUser: onSelectUser, openCommandsList: openCommandsList, openEmojiPicker: openEmojiPicker, removeFile: removeFile, removeImage: removeImage, showCommandsList: showCommandsList, textareaRef: textareaRef, uploadFile: uploadFile, uploadImage: uploadImage, uploadNewFiles: uploadNewFiles });
|
|
4750
|
+
closeEmojiPicker: closeEmojiPicker, emojiIndex: useEmojiIndex(), emojiPickerRef: emojiPickerRef, handleChange: handleChange, handleEmojiKeyDown: handleEmojiKeyDown, handleSubmit: handleSubmit, insertText: insertText, isUploadEnabled: isUploadEnabled, maxFilesLeft: maxFilesLeft, numberOfUploads: numberOfUploads, onPaste: onPaste, onSelectEmoji: onSelectEmoji, onSelectUser: onSelectUser, openCommandsList: openCommandsList, openEmojiPicker: openEmojiPicker, removeFile: removeFile, removeImage: removeImage, setText: setText, showCommandsList: showCommandsList, textareaRef: textareaRef, uploadFile: uploadFile, uploadImage: uploadImage, uploadNewFiles: uploadNewFiles });
|
|
4669
4751
|
};
|
|
4670
4752
|
|
|
4671
4753
|
var QuotedMessagePreviewHeader = function () {
|
|
@@ -5125,7 +5207,7 @@ var UnMemoizedChannel = function (props) {
|
|
|
5125
5207
|
return React__default['default'].createElement(ChannelInner, __assign({}, props, { channel: channel, key: channel.cid }));
|
|
5126
5208
|
};
|
|
5127
5209
|
var ChannelInner = function (props) {
|
|
5128
|
-
var acceptedFiles = props.acceptedFiles, channel = props.channel, children = props.children, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _a = props.emojiData, emojiData = _a === void 0 ? defaultEmojiData : _a, _b = props.LoadingErrorIndicator, LoadingErrorIndicator$1 = _b === void 0 ? LoadingErrorIndicator : _b, _c = props.LoadingIndicator, LoadingIndicator$1 = _c === void 0 ? LoadingIndicator : _c, maxNumberOfFiles = props.maxNumberOfFiles, _d = props.multipleUploads, multipleUploads = _d === void 0 ? true : _d, onMentionsClick = props.onMentionsClick, onMentionsHover = props.onMentionsHover;
|
|
5210
|
+
var acceptedFiles = props.acceptedFiles, activeUnreadHandler = props.activeUnreadHandler, channel = props.channel, children = props.children, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _a = props.emojiData, emojiData = _a === void 0 ? defaultEmojiData : _a, _b = props.LoadingErrorIndicator, LoadingErrorIndicator$1 = _b === void 0 ? LoadingErrorIndicator : _b, _c = props.LoadingIndicator, LoadingIndicator$1 = _c === void 0 ? LoadingIndicator : _c, maxNumberOfFiles = props.maxNumberOfFiles, _d = props.multipleUploads, multipleUploads = _d === void 0 ? true : _d, onMentionsClick = props.onMentionsClick, onMentionsHover = props.onMentionsHover;
|
|
5129
5211
|
var _e = useChatContext(), client = _e.client, customClasses = _e.customClasses, mutes = _e.mutes, theme = _e.theme, useImageFlagEmojisOnWindows = _e.useImageFlagEmojisOnWindows;
|
|
5130
5212
|
var t = useTranslationContext().t;
|
|
5131
5213
|
var _f = React.useState([]), notifications = _f[0], setNotifications = _f[1];
|
|
@@ -5195,7 +5277,12 @@ var ChannelInner = function (props) {
|
|
|
5195
5277
|
}
|
|
5196
5278
|
else if (((_e = channel.getConfig()) === null || _e === void 0 ? void 0 : _e.read_events) && !channel.muteStatus().muted) {
|
|
5197
5279
|
var unread = channel.countUnread(lastRead.current);
|
|
5198
|
-
|
|
5280
|
+
if (activeUnreadHandler) {
|
|
5281
|
+
activeUnreadHandler(unread, originalTitle.current);
|
|
5282
|
+
}
|
|
5283
|
+
else {
|
|
5284
|
+
document.title = "(" + unread + ") " + originalTitle.current;
|
|
5285
|
+
}
|
|
5199
5286
|
}
|
|
5200
5287
|
}
|
|
5201
5288
|
}
|
|
@@ -5582,7 +5669,7 @@ var ChannelInner = function (props) {
|
|
|
5582
5669
|
var chatClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.chat) || 'str-chat';
|
|
5583
5670
|
var channelClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.channel) || 'str-chat-channel';
|
|
5584
5671
|
var windowsEmojiClass = useImageFlagEmojisOnWindows && navigator.userAgent.match(/Win/)
|
|
5585
|
-
? '
|
|
5672
|
+
? 'str-chat--windows-flags'
|
|
5586
5673
|
: '';
|
|
5587
5674
|
if (state.error) {
|
|
5588
5675
|
return (React__default['default'].createElement("div", { className: chatClass + " " + channelClass + " " + theme },
|
|
@@ -6164,6 +6251,16 @@ var ChannelPreview = function (props) {
|
|
|
6164
6251
|
var _e = React.useState(0), unread = _e[0], setUnread = _e[1];
|
|
6165
6252
|
var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
|
|
6166
6253
|
var muted = useIsChannelMuted(channel).muted;
|
|
6254
|
+
React.useEffect(function () {
|
|
6255
|
+
var handleEvent = function (event) {
|
|
6256
|
+
if (!event.cid)
|
|
6257
|
+
return setUnread(0);
|
|
6258
|
+
if (channel.cid === event.cid)
|
|
6259
|
+
setUnread(0);
|
|
6260
|
+
};
|
|
6261
|
+
client.on('notification.mark_read', handleEvent);
|
|
6262
|
+
return function () { return client.off('notification.mark_read', handleEvent); };
|
|
6263
|
+
}, []);
|
|
6167
6264
|
React.useEffect(function () {
|
|
6168
6265
|
if (isActive || muted) {
|
|
6169
6266
|
setUnread(0);
|
|
@@ -7155,7 +7252,7 @@ var Streami18n = /** @class */ (function () {
|
|
|
7155
7252
|
return Streami18n;
|
|
7156
7253
|
}());
|
|
7157
7254
|
|
|
7158
|
-
var version = '6.
|
|
7255
|
+
var version = '6.8.0';
|
|
7159
7256
|
|
|
7160
7257
|
var useChat = function (_a) {
|
|
7161
7258
|
var _b;
|