stream-chat-react 11.5.0 → 11.7.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 +80 -54
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +1 -1
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/ChannelList/ChannelList.d.ts +3 -0
- package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelList.js +2 -2
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +12 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +55 -43
- package/dist/components/Chat/hooks/useChannelsQueryState.d.ts +2 -2
- package/dist/components/Chat/hooks/useChannelsQueryState.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +4 -3
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js +0 -2
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts +2 -1
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js +19 -4
- package/dist/css/v2/index.css +1 -1
- package/dist/css/v2/index.layout.css +1 -1
- package/dist/index.cjs.js +80 -54
- package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +16 -8
- package/dist/scss/v2/Avatar/Avatar-theme.scss +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -2
|
@@ -51259,12 +51259,10 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
|
|
|
51259
51259
|
var _e = React$2.useState(true), isMessageListScrolledToBottom = _e[0], setIsMessageListScrolledToBottom = _e[1];
|
|
51260
51260
|
var closeToBottom = React$2.useRef(false);
|
|
51261
51261
|
var closeToTop = React$2.useRef(false);
|
|
51262
|
-
var scrollCounter = React$2.useRef({ autoScroll: 0, scroll: 0 });
|
|
51263
51262
|
var scrollToBottom = React$2.useCallback(function () {
|
|
51264
51263
|
if (!(listElement === null || listElement === void 0 ? void 0 : listElement.scrollTo) || hasMoreNewer || suppressAutoscroll) {
|
|
51265
51264
|
return;
|
|
51266
51265
|
}
|
|
51267
|
-
scrollCounter.current.autoScroll += 1;
|
|
51268
51266
|
listElement.scrollTo({
|
|
51269
51267
|
top: listElement.scrollHeight,
|
|
51270
51268
|
});
|
|
@@ -51343,9 +51341,10 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
|
|
|
51343
51341
|
return 0 <= targetMessageY && targetMessageY <= msgListHeight;
|
|
51344
51342
|
};
|
|
51345
51343
|
var useUnreadMessagesNotification = function (_a) {
|
|
51346
|
-
var unreadCount = _a.unreadCount;
|
|
51344
|
+
var isMessageListScrolledToBottom = _a.isMessageListScrolledToBottom, unreadCount = _a.unreadCount;
|
|
51347
51345
|
var messages = useChannelStateContext('UnreadMessagesNotification').messages;
|
|
51348
51346
|
var _b = React$2.useState(false), show = _b[0], setShow = _b[1];
|
|
51347
|
+
var isScrolledAboveTargetTop = React$2.useRef(false);
|
|
51349
51348
|
var intersectionObserverIsSupported = typeof IntersectionObserver !== 'undefined';
|
|
51350
51349
|
React$2.useEffect(function () {
|
|
51351
51350
|
if (!(unreadCount && intersectionObserverIsSupported)) {
|
|
@@ -51365,14 +51364,28 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
|
|
|
51365
51364
|
if (!elements.length)
|
|
51366
51365
|
return;
|
|
51367
51366
|
var _a = elements[0], boundingClientRect = _a.boundingClientRect, isIntersecting = _a.isIntersecting, rootBounds = _a.rootBounds;
|
|
51368
|
-
var
|
|
51369
|
-
|
|
51367
|
+
var isScrolledAboveTargetTopCurrent = !!(rootBounds &&
|
|
51368
|
+
boundingClientRect &&
|
|
51369
|
+
rootBounds.bottom < boundingClientRect.top);
|
|
51370
|
+
setShow(!isIntersecting && !isScrolledAboveTargetTopCurrent);
|
|
51371
|
+
isScrolledAboveTargetTop.current = isScrolledAboveTargetTopCurrent;
|
|
51370
51372
|
}, { root: msgListPanel });
|
|
51371
51373
|
observer.observe(observedTarget);
|
|
51372
51374
|
return function () {
|
|
51373
51375
|
observer.disconnect();
|
|
51374
51376
|
};
|
|
51375
51377
|
}, [intersectionObserverIsSupported, messages, unreadCount]);
|
|
51378
|
+
React$2.useEffect(function () {
|
|
51379
|
+
/**
|
|
51380
|
+
* Handle situation when scrollToBottom is called from another component when the msg list is scrolled above the observed target (unread separator).
|
|
51381
|
+
* The intersection observer is not triggered when Element.scrollTo() is called. So we end up in a situation when we are scrolled to the bottom
|
|
51382
|
+
* and at the same time scrolled above the observed target.
|
|
51383
|
+
*/
|
|
51384
|
+
if (unreadCount && isMessageListScrolledToBottom && isScrolledAboveTargetTop.current) {
|
|
51385
|
+
setShow(true);
|
|
51386
|
+
isScrolledAboveTargetTop.current = false;
|
|
51387
|
+
}
|
|
51388
|
+
}, [isMessageListScrolledToBottom, unreadCount]);
|
|
51376
51389
|
return { show: show && intersectionObserverIsSupported };
|
|
51377
51390
|
};
|
|
51378
51391
|
|
|
@@ -51708,9 +51721,6 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
|
|
|
51708
51721
|
var _u = useComponentContext('MessageList'), _v = _u.EmptyStateIndicator, EmptyStateIndicator$1 = _v === void 0 ? EmptyStateIndicator : _v, _w = _u.LoadingIndicator, LoadingIndicator$1 = _w === void 0 ? LoadingIndicator : _w, _x = _u.MessageListNotifications, MessageListNotifications$1 = _x === void 0 ? MessageListNotifications : _x, _y = _u.MessageNotification, MessageNotification$1 = _y === void 0 ? MessageNotification : _y, _z = _u.TypingIndicator, TypingIndicator$1 = _z === void 0 ? TypingIndicator : _z, _0 = _u.UnreadMessagesNotification, UnreadMessagesNotification$1 = _0 === void 0 ? UnreadMessagesNotification : _0;
|
|
51709
51722
|
var loadMoreScrollThreshold = (internalInfiniteScrollProps === null || internalInfiniteScrollProps === void 0 ? void 0 : internalInfiniteScrollProps.threshold) || 250;
|
|
51710
51723
|
var currentUserChannelReadState = client.user && (read === null || read === void 0 ? void 0 : read[client.user.id]);
|
|
51711
|
-
var showUnreadMessagesNotification = useUnreadMessagesNotification({
|
|
51712
|
-
unreadCount: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages,
|
|
51713
|
-
}).show;
|
|
51714
51724
|
var _1 = useScrollLocationLogic({
|
|
51715
51725
|
hasMoreNewer: hasMoreNewer,
|
|
51716
51726
|
listElement: listElement,
|
|
@@ -51719,6 +51729,10 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
|
|
|
51719
51729
|
scrolledUpThreshold: props.scrolledUpThreshold,
|
|
51720
51730
|
suppressAutoscroll: suppressAutoscroll,
|
|
51721
51731
|
}), hasNewMessages = _1.hasNewMessages, isMessageListScrolledToBottom = _1.isMessageListScrolledToBottom, onScroll = _1.onScroll, scrollToBottom = _1.scrollToBottom, wrapperRect = _1.wrapperRect;
|
|
51732
|
+
var showUnreadMessagesNotification = useUnreadMessagesNotification({
|
|
51733
|
+
isMessageListScrolledToBottom: isMessageListScrolledToBottom,
|
|
51734
|
+
unreadCount: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages,
|
|
51735
|
+
}).show;
|
|
51722
51736
|
useMarkRead({
|
|
51723
51737
|
isMessageListScrolledToBottom: isMessageListScrolledToBottom,
|
|
51724
51738
|
markReadOnScrolledToBottom: markReadOnScrolledToBottom,
|
|
@@ -55113,7 +55127,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
|
|
|
55113
55127
|
|
|
55114
55128
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var RECOVER_LOADED_CHANNELS_THROTTLE_INTERVAL_IN_MS = 5000;
|
|
55115
55129
|
var MIN_RECOVER_LOADED_CHANNELS_THROTTLE_INTERVAL_IN_MS = 2000;
|
|
55116
|
-
var usePaginatedChannels = function (client, filters, sort, options, activeChannelHandler, recoveryThrottleIntervalMs) {
|
|
55130
|
+
var usePaginatedChannels = function (client, filters, sort, options, activeChannelHandler, recoveryThrottleIntervalMs, customQueryChannels) {
|
|
55117
55131
|
if (recoveryThrottleIntervalMs === void 0) { recoveryThrottleIntervalMs = RECOVER_LOADED_CHANNELS_THROTTLE_INTERVAL_IN_MS; }
|
|
55118
55132
|
var _a = useChatContext('usePaginatedChannels').channelsQueryState, error = _a.error, setError = _a.setError, setQueryInProgress = _a.setQueryInProgress;
|
|
55119
55133
|
var _b = React$2.useState([]), channels = _b[0], setChannels = _b[1];
|
|
@@ -55128,49 +55142,61 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
|
|
|
55128
55142
|
var filterString = React$2.useMemo(function () { return JSON.stringify(filters); }, [filters]);
|
|
55129
55143
|
var sortString = React$2.useMemo(function () { return JSON.stringify(sort); }, [sort]);
|
|
55130
55144
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
55131
|
-
var queryChannels = function (queryType) {
|
|
55132
|
-
|
|
55133
|
-
|
|
55134
|
-
|
|
55135
|
-
|
|
55136
|
-
|
|
55137
|
-
|
|
55138
|
-
|
|
55139
|
-
|
|
55140
|
-
|
|
55141
|
-
|
|
55142
|
-
|
|
55143
|
-
setQueryInProgress(
|
|
55144
|
-
|
|
55145
|
-
|
|
55146
|
-
|
|
55147
|
-
|
|
55148
|
-
|
|
55149
|
-
|
|
55150
|
-
|
|
55151
|
-
|
|
55152
|
-
|
|
55153
|
-
|
|
55154
|
-
|
|
55155
|
-
|
|
55156
|
-
|
|
55157
|
-
|
|
55158
|
-
|
|
55159
|
-
|
|
55160
|
-
|
|
55161
|
-
|
|
55162
|
-
|
|
55163
|
-
|
|
55164
|
-
|
|
55165
|
-
|
|
55166
|
-
|
|
55167
|
-
|
|
55168
|
-
|
|
55169
|
-
|
|
55170
|
-
|
|
55171
|
-
|
|
55145
|
+
var queryChannels = function (queryType) {
|
|
55146
|
+
if (queryType === void 0) { queryType = 'load-more'; }
|
|
55147
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
55148
|
+
var offset, newOptions, channelQueryResponse, newChannels, err_1;
|
|
55149
|
+
var _a;
|
|
55150
|
+
return __generator(this, function (_b) {
|
|
55151
|
+
switch (_b.label) {
|
|
55152
|
+
case 0:
|
|
55153
|
+
setError(null);
|
|
55154
|
+
if (queryType === 'reload') {
|
|
55155
|
+
setChannels([]);
|
|
55156
|
+
}
|
|
55157
|
+
setQueryInProgress(queryType);
|
|
55158
|
+
_b.label = 1;
|
|
55159
|
+
case 1:
|
|
55160
|
+
_b.trys.push([1, 6, , 7]);
|
|
55161
|
+
if (!customQueryChannels) return [3 /*break*/, 3];
|
|
55162
|
+
return [4 /*yield*/, customQueryChannels({
|
|
55163
|
+
currentChannels: channels,
|
|
55164
|
+
queryType: queryType,
|
|
55165
|
+
setChannels: setChannels,
|
|
55166
|
+
setHasNextPage: setHasNextPage,
|
|
55167
|
+
})];
|
|
55168
|
+
case 2:
|
|
55169
|
+
_b.sent();
|
|
55170
|
+
return [3 /*break*/, 5];
|
|
55171
|
+
case 3:
|
|
55172
|
+
offset = queryType === 'reload' ? 0 : channels.length;
|
|
55173
|
+
newOptions = __assign({ limit: (_a = options === null || options === void 0 ? void 0 : options.limit) !== null && _a !== void 0 ? _a : MAX_QUERY_CHANNELS_LIMIT, offset: offset }, options);
|
|
55174
|
+
return [4 /*yield*/, client.queryChannels(filters, sort || {}, newOptions)];
|
|
55175
|
+
case 4:
|
|
55176
|
+
channelQueryResponse = _b.sent();
|
|
55177
|
+
newChannels = queryType === 'reload'
|
|
55178
|
+
? channelQueryResponse
|
|
55179
|
+
: uniqBy(__spreadArray(__spreadArray([], channels, true), channelQueryResponse, true), 'cid');
|
|
55180
|
+
setChannels(newChannels);
|
|
55181
|
+
setHasNextPage(channelQueryResponse.length >= newOptions.limit);
|
|
55182
|
+
// Set active channel only on load of first page
|
|
55183
|
+
if (!offset && activeChannelHandler) {
|
|
55184
|
+
activeChannelHandler(newChannels, setChannels);
|
|
55185
|
+
}
|
|
55186
|
+
_b.label = 5;
|
|
55187
|
+
case 5: return [3 /*break*/, 7];
|
|
55188
|
+
case 6:
|
|
55189
|
+
err_1 = _b.sent();
|
|
55190
|
+
console.warn(err_1);
|
|
55191
|
+
setError(err_1);
|
|
55192
|
+
return [3 /*break*/, 7];
|
|
55193
|
+
case 7:
|
|
55194
|
+
setQueryInProgress(null);
|
|
55195
|
+
return [2 /*return*/];
|
|
55196
|
+
}
|
|
55197
|
+
});
|
|
55172
55198
|
});
|
|
55173
|
-
}
|
|
55199
|
+
};
|
|
55174
55200
|
var throttleRecover = React$2.useCallback(function () {
|
|
55175
55201
|
var now = Date.now();
|
|
55176
55202
|
var isFirstRecovery = !lastRecoveryTimestamp.current;
|
|
@@ -55883,7 +55909,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
|
|
|
55883
55909
|
var DEFAULT_SORT = {};
|
|
55884
55910
|
var UnMemoizedChannelList = function (props) {
|
|
55885
55911
|
var _a, _b;
|
|
55886
|
-
var additionalChannelSearchProps = props.additionalChannelSearchProps, _c = props.Avatar, Avatar$1 = _c === void 0 ? Avatar : _c, allowNewMessagesFromUnfilteredChannels = props.allowNewMessagesFromUnfilteredChannels, channelRenderFilterFn = props.channelRenderFilterFn, _d = props.ChannelSearch, ChannelSearch$1 = _d === void 0 ? ChannelSearch : _d, customActiveChannel = props.customActiveChannel, _e = props.EmptyStateIndicator, EmptyStateIndicator$1 = _e === void 0 ? EmptyStateIndicator : _e, filters = props.filters, _f = props.LoadingErrorIndicator, LoadingErrorIndicator = _f === void 0 ? ChatDown : _f, _g = props.LoadingIndicator, LoadingIndicator = _g === void 0 ? LoadingChannels : _g, _h = props.List, List = _h === void 0 ? ChannelListMessenger : _h, lockChannelOrder = props.lockChannelOrder, onAddedToChannel = props.onAddedToChannel, onChannelDeleted = props.onChannelDeleted, onChannelHidden = props.onChannelHidden, onChannelTruncated = props.onChannelTruncated, onChannelUpdated = props.onChannelUpdated, onChannelVisible = props.onChannelVisible, onMessageNew = props.onMessageNew, onMessageNewHandler = props.onMessageNewHandler, onRemovedFromChannel = props.onRemovedFromChannel, options = props.options, _j = props.Paginator, Paginator = _j === void 0 ? LoadMorePaginator : _j, Preview = props.Preview, recoveryThrottleIntervalMs = props.recoveryThrottleIntervalMs, renderChannels = props.renderChannels, _k = props.sendChannelsToList, sendChannelsToList = _k === void 0 ? false : _k, _l = props.setActiveChannelOnMount, setActiveChannelOnMount = _l === void 0 ? true : _l, _m = props.showChannelSearch, showChannelSearch = _m === void 0 ? false : _m, _o = props.sort, sort = _o === void 0 ? DEFAULT_SORT : _o, _p = props.watchers, watchers = _p === void 0 ? {} : _p;
|
|
55912
|
+
var additionalChannelSearchProps = props.additionalChannelSearchProps, _c = props.Avatar, Avatar$1 = _c === void 0 ? Avatar : _c, allowNewMessagesFromUnfilteredChannels = props.allowNewMessagesFromUnfilteredChannels, channelRenderFilterFn = props.channelRenderFilterFn, _d = props.ChannelSearch, ChannelSearch$1 = _d === void 0 ? ChannelSearch : _d, customActiveChannel = props.customActiveChannel, customQueryChannels = props.customQueryChannels, _e = props.EmptyStateIndicator, EmptyStateIndicator$1 = _e === void 0 ? EmptyStateIndicator : _e, filters = props.filters, _f = props.LoadingErrorIndicator, LoadingErrorIndicator = _f === void 0 ? ChatDown : _f, _g = props.LoadingIndicator, LoadingIndicator = _g === void 0 ? LoadingChannels : _g, _h = props.List, List = _h === void 0 ? ChannelListMessenger : _h, lockChannelOrder = props.lockChannelOrder, onAddedToChannel = props.onAddedToChannel, onChannelDeleted = props.onChannelDeleted, onChannelHidden = props.onChannelHidden, onChannelTruncated = props.onChannelTruncated, onChannelUpdated = props.onChannelUpdated, onChannelVisible = props.onChannelVisible, onMessageNew = props.onMessageNew, onMessageNewHandler = props.onMessageNewHandler, onRemovedFromChannel = props.onRemovedFromChannel, options = props.options, _j = props.Paginator, Paginator = _j === void 0 ? LoadMorePaginator : _j, Preview = props.Preview, recoveryThrottleIntervalMs = props.recoveryThrottleIntervalMs, renderChannels = props.renderChannels, _k = props.sendChannelsToList, sendChannelsToList = _k === void 0 ? false : _k, _l = props.setActiveChannelOnMount, setActiveChannelOnMount = _l === void 0 ? true : _l, _m = props.showChannelSearch, showChannelSearch = _m === void 0 ? false : _m, _o = props.sort, sort = _o === void 0 ? DEFAULT_SORT : _o, _p = props.watchers, watchers = _p === void 0 ? {} : _p;
|
|
55887
55913
|
var _q = useChatContext('ChannelList'), channel = _q.channel, channelsQueryState = _q.channelsQueryState, client = _q.client, closeMobileNav = _q.closeMobileNav, customClasses = _q.customClasses, _r = _q.navOpen, navOpen = _r === void 0 ? false : _r, setActiveChannel = _q.setActiveChannel, theme = _q.theme, useImageFlagEmojisOnWindows = _q.useImageFlagEmojisOnWindows;
|
|
55888
55914
|
var channelListRef = React$2.useRef(null);
|
|
55889
55915
|
var _s = React$2.useState(0), channelUpdateCount = _s[0], setChannelUpdateCount = _s[1];
|
|
@@ -55949,7 +55975,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
|
|
|
55949
55975
|
(_a = additionalChannelSearchProps === null || additionalChannelSearchProps === void 0 ? void 0 : additionalChannelSearchProps.onSearchExit) === null || _a === void 0 ? void 0 : _a.call(additionalChannelSearchProps);
|
|
55950
55976
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
55951
55977
|
}, []);
|
|
55952
|
-
var _u = usePaginatedChannels(client, filters || DEFAULT_FILTERS, sort || DEFAULT_SORT, options || DEFAULT_OPTIONS, activeChannelHandler, recoveryThrottleIntervalMs), channels = _u.channels, hasNextPage = _u.hasNextPage, loadNextPage = _u.loadNextPage, setChannels = _u.setChannels;
|
|
55978
|
+
var _u = usePaginatedChannels(client, filters || DEFAULT_FILTERS, sort || DEFAULT_SORT, options || DEFAULT_OPTIONS, activeChannelHandler, recoveryThrottleIntervalMs, customQueryChannels), channels = _u.channels, hasNextPage = _u.hasNextPage, loadNextPage = _u.loadNextPage, setChannels = _u.setChannels;
|
|
55953
55979
|
var loadedChannels = channelRenderFilterFn ? channelRenderFilterFn(channels) : channels;
|
|
55954
55980
|
useMobileNavigation(channelListRef, navOpen, closeMobileNav);
|
|
55955
55981
|
useMessageNewListener(setChannels, onMessageNewHandler, lockChannelOrder, allowNewMessagesFromUnfilteredChannels);
|
|
@@ -56015,7 +56041,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, streamChat, React
|
|
|
56015
56041
|
|
|
56016
56042
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
|
|
56017
56043
|
|
|
56018
|
-
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '11.
|
|
56044
|
+
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '11.7.0';
|
|
56019
56045
|
|
|
56020
56046
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
|
|
56021
56047
|
var _b, _c;
|