stream-chat-react 10.4.2 → 10.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/browser.full-bundle.js +27 -18
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +2 -2
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Chat/Chat.d.ts.map +1 -1
  6. package/dist/components/Chat/Chat.js +6 -3
  7. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +0 -1
  8. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
  9. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +9 -7
  10. package/dist/components/MessageList/MessageList.d.ts +5 -1
  11. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  12. package/dist/components/MessageList/MessageList.js +4 -2
  13. package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts +1 -0
  14. package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts.map +1 -1
  15. package/dist/components/MessageList/hooks/useMessageListScrollManager.js +6 -5
  16. package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts +1 -1
  17. package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +1 -1
  18. package/dist/components/MessageList/hooks/useScrollLocationLogic.js +2 -1
  19. package/dist/css/index.css +1 -1
  20. package/dist/index.cjs.js +26 -17
  21. package/dist/index.cjs.js.map +1 -1
  22. package/dist/scss/Card.scss +1 -1
  23. package/dist/scss/ChannelHeader.scss +1 -1
  24. package/dist/scss/MessageInput.scss +1 -1
  25. package/dist/scss/TypingIndicator.scss +1 -1
  26. package/dist/scss/_variables.scss +1 -1
  27. package/dist/version.d.ts +1 -1
  28. package/dist/version.js +1 -1
  29. package/package.json +5 -5
@@ -48132,7 +48132,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48132
48132
 
48133
48133
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
48134
48134
 
48135
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.4.2';
48135
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.4.3';
48136
48136
 
48137
48137
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
48138
48138
  var _b, _c;
@@ -48318,9 +48318,12 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48318
48318
  var children = props.children, client = props.client, customClasses = props.customClasses, customStyles = props.customStyles, _a = props.darkMode, darkMode = _a === void 0 ? false : _a, defaultLanguage = props.defaultLanguage, i18nInstance = props.i18nInstance, _b = props.initialNavOpen, initialNavOpen = _b === void 0 ? true : _b, _c = props.theme, theme = _c === void 0 ? 'messaging light' : _c, _d = props.useImageFlagEmojisOnWindows, useImageFlagEmojisOnWindows = _d === void 0 ? false : _d;
48319
48319
  var _e = useChat({ client: client, defaultLanguage: defaultLanguage, i18nInstance: i18nInstance, initialNavOpen: initialNavOpen }), channel = _e.channel, closeMobileNav = _e.closeMobileNav, getAppSettings = _e.getAppSettings, latestMessageDatesByChannels = _e.latestMessageDatesByChannels, mutes = _e.mutes, navOpen = _e.navOpen, openMobileNav = _e.openMobileNav, setActiveChannel = _e.setActiveChannel, translators = _e.translators;
48320
48320
  var channelsQueryState = useChannelsQueryState();
48321
- var themeVersion = (getComputedStyle(document.documentElement)
48322
- .getPropertyValue('--str-chat__theme-version')
48323
- .replace(' ', '') || '1');
48321
+ var themeVersion = typeof window !== 'undefined'
48322
+ ? (window
48323
+ .getComputedStyle(document.documentElement)
48324
+ .getPropertyValue('--str-chat__theme-version')
48325
+ .replace(' ', '') || '1')
48326
+ : '1';
48324
48327
  useCustomStyles(darkMode ? darkModeTheme : customStyles);
48325
48328
  var chatContextValue = useCreateChatContext({
48326
48329
  channel: channel,
@@ -48439,6 +48442,8 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48439
48442
  if (listenToScroll) {
48440
48443
  listenToScroll(offset, reverseOffset, threshold);
48441
48444
  }
48445
+ if (isLoading)
48446
+ return;
48442
48447
  if (reverseOffset < Number(threshold) &&
48443
48448
  typeof loadPreviousPageFn === 'function' &&
48444
48449
  hasPreviousPageFlag) {
@@ -48450,10 +48455,11 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48450
48455
  }, [
48451
48456
  hasPreviousPageFlag,
48452
48457
  hasNextPageFlag,
48453
- threshold,
48458
+ isLoading,
48454
48459
  listenToScroll,
48455
48460
  loadPreviousPageFn,
48456
48461
  loadNextPageFn,
48462
+ threshold,
48457
48463
  ]);
48458
48464
  React$2.useEffect(function () {
48459
48465
  deprecationAndReplacementWarning([
@@ -48463,19 +48469,18 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48463
48469
  [{ loadMore: loadMore }, { loadPreviousPage: loadPreviousPage }],
48464
48470
  ], 'InfiniteScroll');
48465
48471
  }, []);
48466
- React$2.useEffect(function () {
48472
+ React$2.useLayoutEffect(function () {
48467
48473
  var _a;
48468
48474
  var scrollElement = (_a = scrollComponent.current) === null || _a === void 0 ? void 0 : _a.parentNode;
48469
- if (isLoading || !scrollElement) {
48470
- return function () { return undefined; };
48471
- }
48475
+ if (!scrollElement)
48476
+ return;
48472
48477
  scrollElement.addEventListener('scroll', scrollListener, useCapture);
48473
48478
  scrollElement.addEventListener('resize', scrollListener, useCapture);
48474
48479
  return function () {
48475
48480
  scrollElement.removeEventListener('scroll', scrollListener, useCapture);
48476
48481
  scrollElement.removeEventListener('resize', scrollListener, useCapture);
48477
48482
  };
48478
- }, [initialLoad, isLoading, scrollListener, useCapture]);
48483
+ }, [initialLoad, scrollListener, useCapture]);
48479
48484
  React$2.useEffect(function () {
48480
48485
  var _a;
48481
48486
  var scrollElement = (_a = scrollComponent.current) === null || _a === void 0 ? void 0 : _a.parentNode;
@@ -49276,8 +49281,9 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49276
49281
  return elements;
49277
49282
  };
49278
49283
 
49279
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};function useMessageListScrollManager(params) {
49280
- var onScrollBy = params.onScrollBy, scrollContainerMeasures = params.scrollContainerMeasures, scrolledUpThreshold = params.scrolledUpThreshold, scrollToBottom = params.scrollToBottom, showNewMessages = params.showNewMessages;
49284
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};// FIXME: change this generic name to something like useAdjustScrollPositionToListSize
49285
+ function useMessageListScrollManager(params) {
49286
+ var loadMoreScrollThreshold = params.loadMoreScrollThreshold, onScrollBy = params.onScrollBy, scrollContainerMeasures = params.scrollContainerMeasures, scrolledUpThreshold = params.scrolledUpThreshold, scrollToBottom = params.scrollToBottom, showNewMessages = params.showNewMessages;
49281
49287
  var client = useChatContext('useMessageListScrollManager').client;
49282
49288
  var measures = React$2.useRef({
49283
49289
  offsetHeight: 0,
@@ -49285,7 +49291,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49285
49291
  });
49286
49292
  var messages = React$2.useRef();
49287
49293
  var scrollTop = React$2.useRef(0);
49288
- React$2.useEffect(function () {
49294
+ React$2.useLayoutEffect(function () {
49289
49295
  var _a, _b, _c;
49290
49296
  var prevMeasures = measures.current;
49291
49297
  var prevMessages = messages.current;
@@ -49299,8 +49305,8 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49299
49305
  if (prevMessages.length < newMessages.length) {
49300
49306
  // messages added to the top
49301
49307
  if ((lastPrevMessage === null || lastPrevMessage === void 0 ? void 0 : lastPrevMessage.id) === lastNewMessage.id) {
49302
- var listHeightDelta = newMeasures.scrollHeight - prevMeasures.scrollHeight;
49303
- if (scrollTop.current === 0) {
49308
+ if (scrollTop.current < loadMoreScrollThreshold) {
49309
+ var listHeightDelta = newMeasures.scrollHeight - prevMeasures.scrollHeight;
49304
49310
  onScrollBy(listHeightDelta);
49305
49311
  }
49306
49312
  }
@@ -49333,7 +49339,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49333
49339
  }
49334
49340
 
49335
49341
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useScrollLocationLogic = function (params) {
49336
- 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;
49342
+ var loadMoreScrollThreshold = params.loadMoreScrollThreshold, _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;
49337
49343
  var _c = React$2.useState(false), hasNewMessages = _c[0], setHasNewMessages = _c[1];
49338
49344
  var _d = React$2.useState(), wrapperRect = _d[0], setWrapperRect = _d[1];
49339
49345
  var _e = React$2.useState(true), isMessageListScrolledToBottom = _e[0], setIsMessageListScrolledToBottom = _e[1];
@@ -49357,6 +49363,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49357
49363
  }
49358
49364
  }, [listElement, hasMoreNewer]);
49359
49365
  var updateScrollTop = useMessageListScrollManager({
49366
+ loadMoreScrollThreshold: loadMoreScrollThreshold,
49360
49367
  messages: messages,
49361
49368
  onScrollBy: function (scrollBy) {
49362
49369
  listElement === null || listElement === void 0 ? void 0 : listElement.scrollBy({ top: scrollBy });
@@ -49507,16 +49514,18 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49507
49514
  };
49508
49515
 
49509
49516
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var MessageListWithContext = function (props) {
49510
- 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
49517
+ 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, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _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
49511
49518
  _h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
49512
49519
  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;
49513
49520
  var _p = React__default["default"].useState(null), listElement = _p[0], setListElement = _p[1];
49514
49521
  var _q = React__default["default"].useState(null), ulElement = _q[0], setUlElement = _q[1];
49515
49522
  var customClasses = useChatContext('MessageList').customClasses;
49516
49523
  var _r = useComponentContext('MessageList'), _s = _r.EmptyStateIndicator, EmptyStateIndicator$1 = _s === void 0 ? EmptyStateIndicator : _s, _t = _r.LoadingIndicator, LoadingIndicator$1 = _t === void 0 ? LoadingIndicator : _t, _u = _r.MessageListNotifications, MessageListNotifications$1 = _u === void 0 ? MessageListNotifications : _u, _v = _r.MessageNotification, MessageNotification$1 = _v === void 0 ? MessageNotification : _v, _w = _r.TypingIndicator, TypingIndicator$1 = _w === void 0 ? TypingIndicator : _w;
49524
+ var loadMoreScrollThreshold = (internalInfiniteScrollProps === null || internalInfiniteScrollProps === void 0 ? void 0 : internalInfiniteScrollProps.threshold) || 250;
49517
49525
  var _x = useScrollLocationLogic({
49518
49526
  hasMoreNewer: hasMoreNewer,
49519
49527
  listElement: listElement,
49528
+ loadMoreScrollThreshold: loadMoreScrollThreshold,
49520
49529
  messages: messages,
49521
49530
  scrolledUpThreshold: props.scrolledUpThreshold,
49522
49531
  suppressAutoscroll: suppressAutoscroll,
@@ -49603,7 +49612,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
49603
49612
  var showEmptyStateIndicator = elements.length === 0 && !threadList;
49604
49613
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
49605
49614
  React__default["default"].createElement(MessageListMainPanel, null,
49606
- React__default["default"].createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React__default["default"].createElement(EmptyStateIndicator$1, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React__default["default"].createElement(InfiniteScroll, __assign$8({ className: 'str-chat__reverse-infinite-scroll str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React__default["default"].createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React__default["default"].createElement(LoadingIndicator$1, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore }, props.internalInfiniteScrollProps),
49615
+ React__default["default"].createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React__default["default"].createElement(EmptyStateIndicator$1, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React__default["default"].createElement(InfiniteScroll, __assign$8({ className: 'str-chat__reverse-infinite-scroll str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React__default["default"].createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React__default["default"].createElement(LoadingIndicator$1, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore }, props.internalInfiniteScrollProps, { threshold: loadMoreScrollThreshold }),
49607
49616
  React__default["default"].createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
49608
49617
  React__default["default"].createElement(TypingIndicator$1, { threadList: threadList }),
49609
49618
  React__default["default"].createElement("div", { key: 'bottom' }))))),