stream-chat-react 11.10.0 → 11.11.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.
@@ -0,0 +1,10 @@
1
+ import { DefaultGenerics, ExtendableGenerics, OwnUserResponse, StreamChat, TokenOrProvider, UserResponse } from 'stream-chat';
2
+ /**
3
+ * React hook to create, connect and return `StreamChat` client.
4
+ */
5
+ export declare const useCreateChatClient: <SCG extends ExtendableGenerics = DefaultGenerics>({ apiKey, tokenOrProvider, userData, }: {
6
+ apiKey: string;
7
+ tokenOrProvider: TokenOrProvider;
8
+ userData: OwnUserResponse<SCG> | UserResponse<SCG>;
9
+ }) => StreamChat<SCG> | null;
10
+ //# sourceMappingURL=useCreateChatClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreateChatClient.d.ts","sourceRoot":"","sources":["../../../../src/components/Chat/hooks/useCreateChatClient.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,eAAe,EACf,YAAY,EACb,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,eAAO,MAAM,mBAAmB;YAKtB,MAAM;qBACG,eAAe;;4BA8BjC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { StreamChat, } from 'stream-chat';
3
+ /**
4
+ * React hook to create, connect and return `StreamChat` client.
5
+ */
6
+ export var useCreateChatClient = function (_a) {
7
+ var apiKey = _a.apiKey, tokenOrProvider = _a.tokenOrProvider, userData = _a.userData;
8
+ var _b = useState(null), chatClient = _b[0], setChatClient = _b[1];
9
+ var _c = useState(userData), cachedUserData = _c[0], setCachedUserData = _c[1];
10
+ if (userData.id !== cachedUserData.id) {
11
+ setCachedUserData(userData);
12
+ }
13
+ useEffect(function () {
14
+ var client = new StreamChat(apiKey);
15
+ var didUserConnectInterrupt = false;
16
+ var connectionPromise = client.connectUser(cachedUserData, tokenOrProvider).then(function () {
17
+ if (!didUserConnectInterrupt)
18
+ setChatClient(client);
19
+ });
20
+ return function () {
21
+ didUserConnectInterrupt = true;
22
+ setChatClient(null);
23
+ connectionPromise
24
+ .then(function () { return client.disconnectUser(); })
25
+ .then(function () {
26
+ console.log("Connection for user \"".concat(cachedUserData.id, "\" has been closed"));
27
+ });
28
+ };
29
+ }, [apiKey, cachedUserData, tokenOrProvider]);
30
+ return chatClient;
31
+ };
@@ -1,4 +1,5 @@
1
1
  export * from './Chat';
2
2
  export * from './hooks/useChat';
3
3
  export * from './hooks/useCustomStyles';
4
+ export * from './hooks/useCreateChatClient';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './Chat';
2
2
  export * from './hooks/useChat';
3
3
  export * from './hooks/useCustomStyles';
4
+ export * from './hooks/useCreateChatClient';
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Window = require('../../Window-7d524c3b.js');
5
+ var Window = require('../../Window-194c5448.js');
6
6
  var React = require('react');
7
7
  var Picker = require('@emoji-mart/react');
8
8
  require('dayjs');
@@ -1 +1 @@
1
- {"version":3,"file":"InfiniteScroll.d.ts","sourceRoot":"","sources":["../../../src/components/InfiniteScrollPaginator/InfiniteScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAsC,MAAM,OAAO,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAaxD,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mHAAmH;IACnH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,kBAAkB,mBAAmB,CAAC,uEAqH3E,CAAC"}
1
+ {"version":3,"file":"InfiniteScroll.d.ts","sourceRoot":"","sources":["../../../src/components/InfiniteScrollPaginator/InfiniteScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAsC,MAAM,OAAO,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAcxD,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mHAAmH;IACnH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,kBAAkB,mBAAmB,CAAC,uEAqH3E,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { __assign, __rest } from "tslib";
2
2
  import React, { useEffect, useLayoutEffect, useRef } from 'react';
3
3
  import { deprecationAndReplacementWarning } from '../../utils/deprecationWarning';
4
+ import { DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD } from '../../constants/limits';
4
5
  /**
5
6
  * Prevents Chrome hangups
6
7
  * See: https://stackoverflow.com/questions/47524205/random-high-content-download-time-in-chrome/47684257#47684257
@@ -11,7 +12,7 @@ var mousewheelListener = function (event) {
11
12
  }
12
13
  };
13
14
  export var InfiniteScroll = function (props) {
14
- var children = props.children, _a = props.element, element = _a === void 0 ? 'div' : _a, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, hasNextPage = props.hasNextPage, hasPreviousPage = props.hasPreviousPage, head = props.head, _b = props.initialLoad, initialLoad = _b === void 0 ? true : _b, isLoading = props.isLoading, listenToScroll = props.listenToScroll, loader = props.loader, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, loadNextPage = props.loadNextPage, loadPreviousPage = props.loadPreviousPage, _c = props.threshold, threshold = _c === void 0 ? 250 : _c, _d = props.useCapture, useCapture = _d === void 0 ? false : _d, elementProps = __rest(props, ["children", "element", "hasMore", "hasMoreNewer", "hasNextPage", "hasPreviousPage", "head", "initialLoad", "isLoading", "listenToScroll", "loader", "loadMore", "loadMoreNewer", "loadNextPage", "loadPreviousPage", "threshold", "useCapture"]);
15
+ var children = props.children, _a = props.element, element = _a === void 0 ? 'div' : _a, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, hasNextPage = props.hasNextPage, hasPreviousPage = props.hasPreviousPage, head = props.head, _b = props.initialLoad, initialLoad = _b === void 0 ? true : _b, isLoading = props.isLoading, listenToScroll = props.listenToScroll, loader = props.loader, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, loadNextPage = props.loadNextPage, loadPreviousPage = props.loadPreviousPage, _c = props.threshold, threshold = _c === void 0 ? DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD : _c, _d = props.useCapture, useCapture = _d === void 0 ? false : _d, elementProps = __rest(props, ["children", "element", "hasMore", "hasMoreNewer", "hasNextPage", "hasPreviousPage", "head", "initialLoad", "isLoading", "listenToScroll", "loader", "loadMore", "loadMoreNewer", "loadNextPage", "loadPreviousPage", "threshold", "useCapture"]);
15
16
  var loadNextPageFn = loadNextPage || loadMoreNewer;
16
17
  var loadPreviousPageFn = loadPreviousPage || loadMore;
17
18
  var hasNextPageFlag = hasNextPage || hasMoreNewer;
@@ -23,7 +23,7 @@ export type MessageListProps<StreamChatGenerics extends DefaultStreamChatGeneric
23
23
  /** Hides the DateSeparator component when new messages are received in a channel that's watched but not active, defaults to false */
24
24
  hideNewMessageSeparator?: boolean;
25
25
  /** Overrides the default props passed to [InfiniteScroll](https://github.com/GetStream/stream-chat-react/blob/master/src/components/InfiniteScrollPaginator/InfiniteScroll.tsx) */
26
- internalInfiniteScrollProps?: InfiniteScrollProps;
26
+ internalInfiniteScrollProps?: Partial<InfiniteScrollProps>;
27
27
  /** Function called when latest messages should be loaded, after the list has jumped at an earlier message set */
28
28
  jumpToLatestMessage?: () => Promise<void>;
29
29
  /** Whether or not the list is currently loading more items */
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"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"}
@@ -17,25 +17,24 @@ import { defaultPinPermissions, MESSAGE_ACTIONS } from '../Message/utils';
17
17
  import { TypingIndicator as DefaultTypingIndicator } from '../TypingIndicator';
18
18
  import { MessageListMainPanel } from './MessageListMainPanel';
19
19
  import { defaultRenderMessages } from './renderMessages';
20
- import { DEFAULT_NEXT_CHANNEL_PAGE_SIZE } from '../../constants/limits';
20
+ import { DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD, DEFAULT_NEXT_CHANNEL_PAGE_SIZE, } from '../../constants/limits';
21
21
  var MessageListWithContext = function (props) {
22
22
  var _a;
23
- var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _e = props.messageActions, messageActions = _e === void 0 ? Object.keys(MESSAGE_ACTIONS) : _e, _f = props.messages, messages = _f === void 0 ? [] : _f, notifications = props.notifications, _g = props.noGroupByUser, noGroupByUser = _g === void 0 ? false : _g, _h = props.pinPermissions, pinPermissions = _h === void 0 ? defaultPinPermissions : _h, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
24
- _j = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
25
- returnAllReadData = _j === void 0 ? false : _j, _k = props.threadList, threadList = _k === void 0 ? false : _k, _l = props.unsafeHTML, unsafeHTML = _l === void 0 ? false : _l, headerPosition = props.headerPosition, read = props.read, _m = props.renderMessages, renderMessages = _m === void 0 ? defaultRenderMessages : _m, _o = props.messageLimit, messageLimit = _o === void 0 ? DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _o, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _p = props.hasMoreNewer, hasMoreNewer = _p === void 0 ? false : _p, showUnreadNotificationAlways = props.showUnreadNotificationAlways, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _q = props.jumpToLatestMessage, jumpToLatestMessage = _q === void 0 ? function () { return Promise.resolve(); } : _q;
26
- var _r = React.useState(null), listElement = _r[0], setListElement = _r[1];
27
- var _s = React.useState(null), ulElement = _s[0], setUlElement = _s[1];
23
+ var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, _e = props.internalInfiniteScrollProps, _f = _e === void 0 ? {} : _e, _g = _f.threshold, loadMoreScrollThreshold = _g === void 0 ? DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD : _g, restInternalInfiniteScrollProps = __rest(_f, ["threshold"]), _h = props.messageActions, messageActions = _h === void 0 ? Object.keys(MESSAGE_ACTIONS) : _h, _j = props.messages, messages = _j === void 0 ? [] : _j, notifications = props.notifications, _k = props.noGroupByUser, noGroupByUser = _k === void 0 ? false : _k, _l = props.pinPermissions, pinPermissions = _l === void 0 ? defaultPinPermissions : _l, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
24
+ _m = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
25
+ returnAllReadData = _m === void 0 ? false : _m, _o = props.threadList, threadList = _o === void 0 ? false : _o, _p = props.unsafeHTML, unsafeHTML = _p === void 0 ? false : _p, headerPosition = props.headerPosition, read = props.read, _q = props.renderMessages, renderMessages = _q === void 0 ? defaultRenderMessages : _q, _r = props.messageLimit, messageLimit = _r === void 0 ? DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _r, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _s = props.hasMoreNewer, hasMoreNewer = _s === void 0 ? false : _s, showUnreadNotificationAlways = props.showUnreadNotificationAlways, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _t = props.jumpToLatestMessage, jumpToLatestMessage = _t === void 0 ? function () { return Promise.resolve(); } : _t;
26
+ var _u = React.useState(null), listElement = _u[0], setListElement = _u[1];
27
+ var _v = React.useState(null), ulElement = _v[0], setUlElement = _v[1];
28
28
  var customClasses = useChatContext('MessageList').customClasses;
29
- var _t = useComponentContext('MessageList'), _u = _t.EmptyStateIndicator, EmptyStateIndicator = _u === void 0 ? DefaultEmptyStateIndicator : _u, _v = _t.LoadingIndicator, LoadingIndicator = _v === void 0 ? DefaultLoadingIndicator : _v, _w = _t.MessageListNotifications, MessageListNotifications = _w === void 0 ? DefaultMessageListNotifications : _w, _x = _t.MessageNotification, MessageNotification = _x === void 0 ? DefaultMessageNotification : _x, _y = _t.TypingIndicator, TypingIndicator = _y === void 0 ? DefaultTypingIndicator : _y, _z = _t.UnreadMessagesNotification, UnreadMessagesNotification = _z === void 0 ? DefaultUnreadMessagesNotification : _z;
30
- var loadMoreScrollThreshold = (internalInfiniteScrollProps === null || internalInfiniteScrollProps === void 0 ? void 0 : internalInfiniteScrollProps.threshold) || 250;
31
- var _0 = useScrollLocationLogic({
29
+ var _w = useComponentContext('MessageList'), _x = _w.EmptyStateIndicator, EmptyStateIndicator = _x === void 0 ? DefaultEmptyStateIndicator : _x, _y = _w.LoadingIndicator, LoadingIndicator = _y === void 0 ? DefaultLoadingIndicator : _y, _z = _w.MessageListNotifications, MessageListNotifications = _z === void 0 ? DefaultMessageListNotifications : _z, _0 = _w.MessageNotification, MessageNotification = _0 === void 0 ? DefaultMessageNotification : _0, _1 = _w.TypingIndicator, TypingIndicator = _1 === void 0 ? DefaultTypingIndicator : _1, _2 = _w.UnreadMessagesNotification, UnreadMessagesNotification = _2 === void 0 ? DefaultUnreadMessagesNotification : _2;
30
+ var _3 = useScrollLocationLogic({
32
31
  hasMoreNewer: hasMoreNewer,
33
32
  listElement: listElement,
34
33
  loadMoreScrollThreshold: loadMoreScrollThreshold,
35
34
  messages: messages,
36
35
  scrolledUpThreshold: props.scrolledUpThreshold,
37
36
  suppressAutoscroll: suppressAutoscroll,
38
- }), hasNewMessages = _0.hasNewMessages, isMessageListScrolledToBottom = _0.isMessageListScrolledToBottom, onScroll = _0.onScroll, scrollToBottom = _0.scrollToBottom, wrapperRect = _0.wrapperRect;
37
+ }), hasNewMessages = _3.hasNewMessages, isMessageListScrolledToBottom = _3.isMessageListScrolledToBottom, onScroll = _3.onScroll, scrollToBottom = _3.scrollToBottom, wrapperRect = _3.wrapperRect;
39
38
  var showUnreadMessagesNotification = useUnreadMessagesNotification({
40
39
  isMessageListScrolledToBottom: isMessageListScrolledToBottom,
41
40
  showAlways: !!showUnreadNotificationAlways,
@@ -47,7 +46,7 @@ var MessageListWithContext = function (props) {
47
46
  unreadCount: (_a = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) !== null && _a !== void 0 ? _a : 0,
48
47
  wasMarkedUnread: !!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id),
49
48
  });
50
- var _1 = useEnrichedMessages({
49
+ var _4 = useEnrichedMessages({
51
50
  channel: channel,
52
51
  disableDateSeparator: disableDateSeparator,
53
52
  groupStyles: groupStyles,
@@ -56,7 +55,7 @@ var MessageListWithContext = function (props) {
56
55
  hideNewMessageSeparator: hideNewMessageSeparator,
57
56
  messages: messages,
58
57
  noGroupByUser: noGroupByUser,
59
- }), messageGroupStyles = _1.messageGroupStyles, enrichedMessages = _1.messages;
58
+ }), messageGroupStyles = _4.messageGroupStyles, enrichedMessages = _4.messages;
60
59
  var elements = useMessageListElements({
61
60
  channelUnreadUiState: channelUnreadUiState,
62
61
  enrichedMessages: enrichedMessages,
@@ -135,7 +134,7 @@ var MessageListWithContext = function (props) {
135
134
  return (React.createElement(MessageListContextProvider, { value: { listElement: listElement, scrollToBottom: scrollToBottom } },
136
135
  React.createElement(MessageListMainPanel, null,
137
136
  !threadList && showUnreadMessagesNotification && (React.createElement(UnreadMessagesNotification, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })),
138
- React.createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React.createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React.createElement(InfiniteScroll, __assign({ 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.createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React.createElement(LoadingIndicator, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore }, props.internalInfiniteScrollProps, { threshold: loadMoreScrollThreshold }),
137
+ React.createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React.createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React.createElement(InfiniteScroll, __assign({ 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.createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React.createElement(LoadingIndicator, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore, threshold: loadMoreScrollThreshold }, restInternalInfiniteScrollProps),
139
138
  React.createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
140
139
  React.createElement(TypingIndicator, { threadList: threadList }),
141
140
  React.createElement("div", { key: 'bottom' }))))),
@@ -1,4 +1,5 @@
1
1
  export declare const DEFAULT_INITIAL_CHANNEL_PAGE_SIZE = 25;
2
2
  export declare const DEFAULT_NEXT_CHANNEL_PAGE_SIZE = 100;
3
3
  export declare const DEFAULT_THREAD_PAGE_SIZE = 50;
4
+ export declare const DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD = 250;
4
5
  //# sourceMappingURL=limits.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,wBAAwB,KAAK,CAAC"}
1
+ {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,kCAAkC,MAAM,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export var DEFAULT_INITIAL_CHANNEL_PAGE_SIZE = 25;
2
2
  export var DEFAULT_NEXT_CHANNEL_PAGE_SIZE = 100;
3
3
  export var DEFAULT_THREAD_PAGE_SIZE = 50;
4
+ export var DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD = 250;
package/dist/index.cjs.js CHANGED
@@ -2,8 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Window = require('./Window-7d524c3b.js');
5
+ var Window = require('./Window-194c5448.js');
6
6
  var React = require('react');
7
+ var streamChat = require('stream-chat');
7
8
  var reactVirtuoso = require('react-virtuoso');
8
9
  var throttle = require('lodash.throttle');
9
10
  require('emoji-regex');
@@ -13,7 +14,6 @@ require('@braintree/sanitize-url');
13
14
  require('react-image-gallery');
14
15
  require('react-dom');
15
16
  require('react-fast-compare');
16
- require('stream-chat');
17
17
  require('lodash.debounce');
18
18
  require('dayjs');
19
19
  require('dayjs/plugin/calendar');
@@ -521,7 +521,7 @@ var mousewheelListener = function (event) {
521
521
  }
522
522
  };
523
523
  var InfiniteScroll = function (props) {
524
- var children = props.children, _a = props.element, element = _a === void 0 ? 'div' : _a, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, hasNextPage = props.hasNextPage, hasPreviousPage = props.hasPreviousPage, head = props.head, _b = props.initialLoad, initialLoad = _b === void 0 ? true : _b, isLoading = props.isLoading, listenToScroll = props.listenToScroll, loader = props.loader, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, loadNextPage = props.loadNextPage, loadPreviousPage = props.loadPreviousPage, _c = props.threshold, threshold = _c === void 0 ? 250 : _c, _d = props.useCapture, useCapture = _d === void 0 ? false : _d, elementProps = Window.__rest(props, ["children", "element", "hasMore", "hasMoreNewer", "hasNextPage", "hasPreviousPage", "head", "initialLoad", "isLoading", "listenToScroll", "loader", "loadMore", "loadMoreNewer", "loadNextPage", "loadPreviousPage", "threshold", "useCapture"]);
524
+ var children = props.children, _a = props.element, element = _a === void 0 ? 'div' : _a, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, hasNextPage = props.hasNextPage, hasPreviousPage = props.hasPreviousPage, head = props.head, _b = props.initialLoad, initialLoad = _b === void 0 ? true : _b, isLoading = props.isLoading, listenToScroll = props.listenToScroll, loader = props.loader, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, loadNextPage = props.loadNextPage, loadPreviousPage = props.loadPreviousPage, _c = props.threshold, threshold = _c === void 0 ? Window.DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD : _c, _d = props.useCapture, useCapture = _d === void 0 ? false : _d, elementProps = Window.__rest(props, ["children", "element", "hasMore", "hasMoreNewer", "hasNextPage", "hasPreviousPage", "head", "initialLoad", "isLoading", "listenToScroll", "loader", "loadMore", "loadMoreNewer", "loadNextPage", "loadPreviousPage", "threshold", "useCapture"]);
525
525
  var loadNextPageFn = loadNextPage || loadMoreNewer;
526
526
  var loadPreviousPageFn = loadPreviousPage || loadMore;
527
527
  var hasNextPageFlag = hasNextPage || hasMoreNewer;
@@ -630,22 +630,21 @@ function defaultRenderMessages(_a) {
630
630
 
631
631
  var MessageListWithContext = function (props) {
632
632
  var _a;
633
- var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _e = props.messageActions, messageActions = _e === void 0 ? Object.keys(Window.MESSAGE_ACTIONS) : _e, _f = props.messages, messages = _f === void 0 ? [] : _f, notifications = props.notifications, _g = props.noGroupByUser, noGroupByUser = _g === void 0 ? false : _g, _h = props.pinPermissions, pinPermissions = _h === void 0 ? Window.defaultPinPermissions : _h, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
634
- _j = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
635
- returnAllReadData = _j === void 0 ? false : _j, _k = props.threadList, threadList = _k === void 0 ? false : _k, _l = props.unsafeHTML, unsafeHTML = _l === void 0 ? false : _l, headerPosition = props.headerPosition, read = props.read, _m = props.renderMessages, renderMessages = _m === void 0 ? defaultRenderMessages : _m, _o = props.messageLimit, messageLimit = _o === void 0 ? Window.DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _o, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _p = props.hasMoreNewer, hasMoreNewer = _p === void 0 ? false : _p, showUnreadNotificationAlways = props.showUnreadNotificationAlways, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _q = props.jumpToLatestMessage, jumpToLatestMessage = _q === void 0 ? function () { return Promise.resolve(); } : _q;
636
- var _r = React__default["default"].useState(null), listElement = _r[0], setListElement = _r[1];
637
- var _s = React__default["default"].useState(null), ulElement = _s[0], setUlElement = _s[1];
633
+ var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, _e = props.internalInfiniteScrollProps, _f = _e === void 0 ? {} : _e, _g = _f.threshold, loadMoreScrollThreshold = _g === void 0 ? Window.DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD : _g, restInternalInfiniteScrollProps = Window.__rest(_f, ["threshold"]), _h = props.messageActions, messageActions = _h === void 0 ? Object.keys(Window.MESSAGE_ACTIONS) : _h, _j = props.messages, messages = _j === void 0 ? [] : _j, notifications = props.notifications, _k = props.noGroupByUser, noGroupByUser = _k === void 0 ? false : _k, _l = props.pinPermissions, pinPermissions = _l === void 0 ? Window.defaultPinPermissions : _l, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
634
+ _m = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
635
+ returnAllReadData = _m === void 0 ? false : _m, _o = props.threadList, threadList = _o === void 0 ? false : _o, _p = props.unsafeHTML, unsafeHTML = _p === void 0 ? false : _p, headerPosition = props.headerPosition, read = props.read, _q = props.renderMessages, renderMessages = _q === void 0 ? defaultRenderMessages : _q, _r = props.messageLimit, messageLimit = _r === void 0 ? Window.DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _r, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _s = props.hasMoreNewer, hasMoreNewer = _s === void 0 ? false : _s, showUnreadNotificationAlways = props.showUnreadNotificationAlways, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _t = props.jumpToLatestMessage, jumpToLatestMessage = _t === void 0 ? function () { return Promise.resolve(); } : _t;
636
+ var _u = React__default["default"].useState(null), listElement = _u[0], setListElement = _u[1];
637
+ var _v = React__default["default"].useState(null), ulElement = _v[0], setUlElement = _v[1];
638
638
  var customClasses = Window.useChatContext('MessageList').customClasses;
639
- var _t = Window.useComponentContext('MessageList'), _u = _t.EmptyStateIndicator, EmptyStateIndicator = _u === void 0 ? Window.EmptyStateIndicator : _u, _v = _t.LoadingIndicator, LoadingIndicator = _v === void 0 ? Window.LoadingIndicator : _v, _w = _t.MessageListNotifications, MessageListNotifications$1 = _w === void 0 ? MessageListNotifications : _w, _x = _t.MessageNotification, MessageNotification = _x === void 0 ? Window.MessageNotification : _x, _y = _t.TypingIndicator, TypingIndicator = _y === void 0 ? Window.TypingIndicator : _y, _z = _t.UnreadMessagesNotification, UnreadMessagesNotification$1 = _z === void 0 ? UnreadMessagesNotification : _z;
640
- var loadMoreScrollThreshold = (internalInfiniteScrollProps === null || internalInfiniteScrollProps === void 0 ? void 0 : internalInfiniteScrollProps.threshold) || 250;
641
- var _0 = useScrollLocationLogic({
639
+ var _w = Window.useComponentContext('MessageList'), _x = _w.EmptyStateIndicator, EmptyStateIndicator = _x === void 0 ? Window.EmptyStateIndicator : _x, _y = _w.LoadingIndicator, LoadingIndicator = _y === void 0 ? Window.LoadingIndicator : _y, _z = _w.MessageListNotifications, MessageListNotifications$1 = _z === void 0 ? MessageListNotifications : _z, _0 = _w.MessageNotification, MessageNotification = _0 === void 0 ? Window.MessageNotification : _0, _1 = _w.TypingIndicator, TypingIndicator = _1 === void 0 ? Window.TypingIndicator : _1, _2 = _w.UnreadMessagesNotification, UnreadMessagesNotification$1 = _2 === void 0 ? UnreadMessagesNotification : _2;
640
+ var _3 = useScrollLocationLogic({
642
641
  hasMoreNewer: hasMoreNewer,
643
642
  listElement: listElement,
644
643
  loadMoreScrollThreshold: loadMoreScrollThreshold,
645
644
  messages: messages,
646
645
  scrolledUpThreshold: props.scrolledUpThreshold,
647
646
  suppressAutoscroll: suppressAutoscroll,
648
- }), hasNewMessages = _0.hasNewMessages, isMessageListScrolledToBottom = _0.isMessageListScrolledToBottom, onScroll = _0.onScroll, scrollToBottom = _0.scrollToBottom, wrapperRect = _0.wrapperRect;
647
+ }), hasNewMessages = _3.hasNewMessages, isMessageListScrolledToBottom = _3.isMessageListScrolledToBottom, onScroll = _3.onScroll, scrollToBottom = _3.scrollToBottom, wrapperRect = _3.wrapperRect;
649
648
  var showUnreadMessagesNotification = useUnreadMessagesNotification({
650
649
  isMessageListScrolledToBottom: isMessageListScrolledToBottom,
651
650
  showAlways: !!showUnreadNotificationAlways,
@@ -657,7 +656,7 @@ var MessageListWithContext = function (props) {
657
656
  unreadCount: (_a = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) !== null && _a !== void 0 ? _a : 0,
658
657
  wasMarkedUnread: !!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id),
659
658
  });
660
- var _1 = useEnrichedMessages({
659
+ var _4 = useEnrichedMessages({
661
660
  channel: channel,
662
661
  disableDateSeparator: disableDateSeparator,
663
662
  groupStyles: groupStyles,
@@ -666,7 +665,7 @@ var MessageListWithContext = function (props) {
666
665
  hideNewMessageSeparator: hideNewMessageSeparator,
667
666
  messages: messages,
668
667
  noGroupByUser: noGroupByUser,
669
- }), messageGroupStyles = _1.messageGroupStyles, enrichedMessages = _1.messages;
668
+ }), messageGroupStyles = _4.messageGroupStyles, enrichedMessages = _4.messages;
670
669
  var elements = useMessageListElements({
671
670
  channelUnreadUiState: channelUnreadUiState,
672
671
  enrichedMessages: enrichedMessages,
@@ -745,7 +744,7 @@ var MessageListWithContext = function (props) {
745
744
  return (React__default["default"].createElement(Window.MessageListContextProvider, { value: { listElement: listElement, scrollToBottom: scrollToBottom } },
746
745
  React__default["default"].createElement(MessageListMainPanel, null,
747
746
  !threadList && showUnreadMessagesNotification && (React__default["default"].createElement(UnreadMessagesNotification$1, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })),
748
- React__default["default"].createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React__default["default"].createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React__default["default"].createElement(InfiniteScroll, Window.__assign({ 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, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore }, props.internalInfiniteScrollProps, { threshold: loadMoreScrollThreshold }),
747
+ React__default["default"].createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React__default["default"].createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React__default["default"].createElement(InfiniteScroll, Window.__assign({ 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, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore, threshold: loadMoreScrollThreshold }, restInternalInfiniteScrollProps),
749
748
  React__default["default"].createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
750
749
  React__default["default"].createElement(TypingIndicator, { threadList: threadList }),
751
750
  React__default["default"].createElement("div", { key: 'bottom' }))))),
@@ -1306,7 +1305,7 @@ function VirtualizedMessageList(props) {
1306
1305
  return (React__default["default"].createElement(VirtualizedMessageListWithContext, Window.__assign({ channel: channel, channelUnreadUiState: channelUnreadUiState, hasMore: !!hasMore, hasMoreNewer: !!hasMoreNewer, highlightedMessageId: highlightedMessageId, jumpToLatestMessage: jumpToLatestMessage, loadingMore: !!loadingMore, loadingMoreNewer: !!loadingMoreNewer, loadMore: loadMore, loadMoreNewer: loadMoreNewer, messages: messages, notifications: notifications, read: read, suppressAutoscroll: suppressAutoscroll }, props)));
1307
1306
  }
1308
1307
 
1309
- var version = '11.10.0';
1308
+ var version = '11.11.0';
1310
1309
 
1311
1310
  var useChat = function (_a) {
1312
1311
  var _b, _c;
@@ -1525,6 +1524,36 @@ var Chat = function (props) {
1525
1524
  React__default["default"].createElement(Window.TranslationProvider, { value: translators }, children)));
1526
1525
  };
1527
1526
 
1527
+ /**
1528
+ * React hook to create, connect and return `StreamChat` client.
1529
+ */
1530
+ var useCreateChatClient = function (_a) {
1531
+ var apiKey = _a.apiKey, tokenOrProvider = _a.tokenOrProvider, userData = _a.userData;
1532
+ var _b = React.useState(null), chatClient = _b[0], setChatClient = _b[1];
1533
+ var _c = React.useState(userData), cachedUserData = _c[0], setCachedUserData = _c[1];
1534
+ if (userData.id !== cachedUserData.id) {
1535
+ setCachedUserData(userData);
1536
+ }
1537
+ React.useEffect(function () {
1538
+ var client = new streamChat.StreamChat(apiKey);
1539
+ var didUserConnectInterrupt = false;
1540
+ var connectionPromise = client.connectUser(cachedUserData, tokenOrProvider).then(function () {
1541
+ if (!didUserConnectInterrupt)
1542
+ setChatClient(client);
1543
+ });
1544
+ return function () {
1545
+ didUserConnectInterrupt = true;
1546
+ setChatClient(null);
1547
+ connectionPromise
1548
+ .then(function () { return client.disconnectUser(); })
1549
+ .then(function () {
1550
+ console.log("Connection for user \"".concat(cachedUserData.id, "\" has been closed"));
1551
+ });
1552
+ };
1553
+ }, [apiKey, cachedUserData, tokenOrProvider]);
1554
+ return chatClient;
1555
+ };
1556
+
1528
1557
  var CloseIcon = function (_a) {
1529
1558
  var title = _a.title;
1530
1559
  var t = Window.useTranslationContext('CloseIcon').t;
@@ -1912,6 +1941,7 @@ exports.VirtualizedMessageList = VirtualizedMessageList;
1912
1941
  exports.darkModeTheme = darkModeTheme;
1913
1942
  exports.defaultRenderMessages = defaultRenderMessages;
1914
1943
  exports.useChat = useChat;
1944
+ exports.useCreateChatClient = useCreateChatClient;
1915
1945
  exports.useCustomStyles = useCustomStyles;
1916
1946
  exports.useEnrichedMessages = useEnrichedMessages;
1917
1947
  exports.useLastReadData = useLastReadData;
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "11.10.0";
1
+ export declare const version = "11.11.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export var version = '11.10.0';
1
+ export var version = '11.11.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stream-chat-react",
3
- "version": "11.10.0",
3
+ "version": "11.11.0",
4
4
  "description": "React components to create chat conversations or livestream style chat",
5
5
  "author": "GetStream",
6
6
  "homepage": "https://getstream.io/chat/",
@@ -258,8 +258,8 @@
258
258
  "e2e": "playwright test",
259
259
  "e2e-fixtures": "node e2e/fixtures/fixtures.mjs",
260
260
  "e2e-container": "./e2e/scripts/run_in_container.sh",
261
- "docs-copy-css-docs": "scripts/merge-stream-chat-css-docs.sh node_modules/@stream-io/stream-chat-css/docs",
262
- "docs-run": "yarn docs-copy-css-docs && stream-chat-docusaurus -s"
261
+ "docs:copy-css-docs": "scripts/merge-stream-chat-css-docs.sh node_modules/@stream-io/stream-chat-css/docs",
262
+ "docs:run": "yarn docs:copy-css-docs && stream-chat-docusaurus -s"
263
263
  },
264
264
  "resolutions": {
265
265
  "ast-types": "^0.14.0",