stream-chat-react 11.12.0 → 11.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/{Window-e8323a54.js → Window-44a85f63.js} +232 -96
  2. package/dist/browser.full-bundle.js +311 -140
  3. package/dist/browser.full-bundle.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +3 -3
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/components/AutoCompleteTextarea/Textarea.d.ts +2 -2
  7. package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
  8. package/dist/components/AutoCompleteTextarea/Textarea.js +23 -13
  9. package/dist/components/Channel/Channel.d.ts.map +1 -1
  10. package/dist/components/Channel/Channel.js +122 -47
  11. package/dist/components/Channel/utils.d.ts +27 -0
  12. package/dist/components/Channel/utils.d.ts.map +1 -1
  13. package/dist/components/Channel/utils.js +56 -0
  14. package/dist/components/Emojis/index.cjs.js +1 -1
  15. package/dist/components/MessageList/VirtualizedMessageList.d.ts +1 -0
  16. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  17. package/dist/components/MessageList/VirtualizedMessageList.js +1 -0
  18. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  19. package/dist/components/MessageList/VirtualizedMessageListComponents.js +20 -7
  20. package/dist/components/MessageList/hooks/useMarkRead.js +2 -3
  21. package/dist/components/MessageList/renderMessages.d.ts +5 -5
  22. package/dist/components/MessageList/renderMessages.d.ts.map +1 -1
  23. package/dist/components/MessageList/renderMessages.js +44 -22
  24. package/dist/components/MessageList/utils.d.ts +10 -1
  25. package/dist/components/MessageList/utils.d.ts.map +1 -1
  26. package/dist/components/MessageList/utils.js +3 -0
  27. package/dist/constants/limits.d.ts +1 -0
  28. package/dist/constants/limits.d.ts.map +1 -1
  29. package/dist/constants/limits.js +1 -0
  30. package/dist/css/v2/index.css +1 -1
  31. package/dist/css/v2/index.layout.css +1 -1
  32. package/dist/index.cjs.js +67 -31
  33. package/dist/scss/v2/Message/Message-layout.scss +1 -1
  34. package/dist/version.d.ts +1 -1
  35. package/dist/version.js +1 -1
  36. package/package.json +2 -2
@@ -1,35 +1,57 @@
1
1
  import { __assign } from "tslib";
2
2
  import React, { Fragment } from 'react';
3
- import { isDate } from '../../context';
3
+ import { isDateSeparatorMessage } from './utils';
4
+ import { Message } from '../Message';
4
5
  import { CUSTOM_MESSAGE_TYPE } from '../../constants/messageTypes';
5
- import { Message } from '../Message/Message';
6
6
  export function defaultRenderMessages(_a) {
7
7
  var channelUnreadUiState = _a.channelUnreadUiState, components = _a.components, customClasses = _a.customClasses, lastReceivedId = _a.lastReceivedMessageId, messageGroupStyles = _a.messageGroupStyles, messages = _a.messages, readData = _a.readData, messageProps = _a.sharedMessageProps;
8
8
  var DateSeparator = components.DateSeparator, HeaderComponent = components.HeaderComponent, MessageSystem = components.MessageSystem, UnreadMessagesSeparator = components.UnreadMessagesSeparator;
9
- return messages.map(function (message, index) {
10
- if (message.customType === CUSTOM_MESSAGE_TYPE.date && message.date && isDate(message.date)) {
11
- return (React.createElement("li", { key: "".concat(message.date.toISOString(), "-i") },
9
+ var renderedMessages = [];
10
+ var firstMessage;
11
+ for (var index = 0; index < messages.length; index++) {
12
+ var message = messages[index];
13
+ if (isDateSeparatorMessage(message)) {
14
+ renderedMessages.push(React.createElement("li", { key: "".concat(message.date.toISOString(), "-i") },
12
15
  React.createElement(DateSeparator, { date: message.date, formatDate: messageProps.formatDate, unread: message.unread })));
13
16
  }
14
- if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
15
- return (React.createElement("li", { key: 'intro' },
17
+ else if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
18
+ renderedMessages.push(React.createElement("li", { key: 'intro' },
16
19
  React.createElement(HeaderComponent, null)));
17
20
  }
18
- if (message.type === 'system') {
19
- return (React.createElement("li", { key: message.id || message.created_at },
21
+ else if (message.type === 'system') {
22
+ renderedMessages.push(React.createElement("li", { key: message.id || message.created_at },
20
23
  React.createElement(MessageSystem, { message: message })));
21
24
  }
22
- var groupStyles = messageGroupStyles[message.id] || '';
23
- var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
24
- var isNewestMessage = index === messages.length - 1;
25
- var isLastReadMessage = (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id) === message.id;
26
- var showUnreadSeparator = isLastReadMessage &&
27
- !isNewestMessage &&
28
- ((channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id) || (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) > 0); // unread count can be 0 if the user marks unread only own messages
29
- return (React.createElement(Fragment, { key: message.id || message.created_at },
30
- React.createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass },
31
- React.createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [] }, messageProps))),
32
- showUnreadSeparator && UnreadMessagesSeparator && (React.createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
33
- React.createElement(UnreadMessagesSeparator, { unreadCount: channelUnreadUiState.unread_messages })))));
34
- });
25
+ else {
26
+ if (!firstMessage) {
27
+ firstMessage = message;
28
+ }
29
+ var groupStyles = messageGroupStyles[message.id] || '';
30
+ var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
31
+ var createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
32
+ var lastReadTimestamp = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read.getTime();
33
+ var isFirstMessage = (firstMessage === null || firstMessage === void 0 ? void 0 : firstMessage.id) && firstMessage.id === message.id;
34
+ var isNewestMessage = index === messages.length - 1;
35
+ var isLastReadMessage = (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id) === message.id ||
36
+ (!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) && createdAtTimestamp === lastReadTimestamp);
37
+ var isFirstUnreadMessage = (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id) === message.id ||
38
+ (!!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) &&
39
+ !!createdAtTimestamp &&
40
+ !!lastReadTimestamp &&
41
+ createdAtTimestamp > lastReadTimestamp &&
42
+ isFirstMessage);
43
+ var showUnreadSeparatorAbove = !(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id) && isFirstUnreadMessage;
44
+ var showUnreadSeparatorBelow = isLastReadMessage &&
45
+ !isNewestMessage &&
46
+ ((channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id) || !!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages)); // this part has to be here as we do not mark channel read when sending a message
47
+ renderedMessages.push(React.createElement(Fragment, { key: message.id || message.created_at },
48
+ showUnreadSeparatorAbove && UnreadMessagesSeparator && (React.createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
49
+ React.createElement(UnreadMessagesSeparator, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages }))),
50
+ React.createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass },
51
+ React.createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [] }, messageProps))),
52
+ showUnreadSeparatorBelow && UnreadMessagesSeparator && (React.createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
53
+ React.createElement(UnreadMessagesSeparator, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })))));
54
+ }
55
+ }
56
+ return renderedMessages;
35
57
  }
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
- import type { UserResponse } from 'stream-chat';
2
+ import { CUSTOM_MESSAGE_TYPE } from '../../constants/messageTypes';
3
+ import type { MessageLabel, UserResponse } from 'stream-chat';
3
4
  import type { DefaultStreamChatGenerics } from '../../types/types';
4
5
  import type { StreamMessage } from '../../context/ChannelStateContext';
5
6
  type ProcessMessagesParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
@@ -44,5 +45,13 @@ export type GroupStyle = '' | 'middle' | 'top' | 'bottom' | 'single';
44
45
  export declare const getGroupStyles: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(message: StreamMessage<StreamChatGenerics>, previousMessage: StreamMessage<StreamChatGenerics>, nextMessage: StreamMessage<StreamChatGenerics>, noGroupByUser: boolean) => GroupStyle;
45
46
  export declare const hasMoreMessagesProbably: (returnedCountMessages: number, limit: number) => boolean;
46
47
  export declare const hasNotMoreMessages: (returnedCountMessages: number, limit: number) => boolean;
48
+ type DateSeparatorMessage = {
49
+ customType: typeof CUSTOM_MESSAGE_TYPE.date;
50
+ date: Date;
51
+ id: string;
52
+ type: MessageLabel;
53
+ unread: boolean;
54
+ };
55
+ export declare function isDateSeparatorMessage<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(message: StreamMessage<StreamChatGenerics>): message is DateSeparatorMessage;
47
56
  export {};
48
57
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/utils.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGvE,KAAK,qBAAqB,CACxB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kEAAkE;IAClE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,+FAA+F;IAC/F,sBAAsB,CAAC,EAAE,KAAK,CAAC,QAAQ,CACrC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC,CACpE,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,8KAuF3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,GAAG,IAAI,WAQrD,CAAC;AAGF,eAAO,MAAM,eAAe,oJAY3B,CAAC;AAEF,eAAO,MAAM,aAAa;eAIU,IAAI;;mCACnB,OAAO,uDAqC3B,CAAC;AAEF,eAAO,MAAM,WAAW,qJAIL,MAAM,wCAgDxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErE,eAAO,MAAM,cAAc,oPAMV,OAAO,KACrB,UA2CF,CAAC;AAOF,eAAO,MAAM,uBAAuB,0BAA2B,MAAM,SAAS,MAAM,YACpD,CAAC;AAGjC,eAAO,MAAM,kBAAkB,0BAA2B,MAAM,SAAS,MAAM,YAChD,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/utils.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAInE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGvE,KAAK,qBAAqB,CACxB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kEAAkE;IAClE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,+FAA+F;IAC/F,sBAAsB,CAAC,EAAE,KAAK,CAAC,QAAQ,CACrC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC,CACpE,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,8KAuF3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,GAAG,IAAI,WAQrD,CAAC;AAGF,eAAO,MAAM,eAAe,oJAY3B,CAAC;AAEF,eAAO,MAAM,aAAa;eAIU,IAAI;;mCACnB,OAAO,uDAqC3B,CAAC;AAEF,eAAO,MAAM,WAAW,qJAIL,MAAM,wCAgDxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErE,eAAO,MAAM,cAAc,oPAMV,OAAO,KACrB,UA2CF,CAAC;AAOF,eAAO,MAAM,uBAAuB,0BAA2B,MAAM,SAAS,MAAM,YACpD,CAAC;AAGjC,eAAO,MAAM,kBAAkB,0BAA2B,MAAM,SAAS,MAAM,YAChD,CAAC;AAEhC,KAAK,oBAAoB,GAAG;IAC1B,UAAU,EAAE,OAAO,mBAAmB,CAAC,IAAI,CAAC;IAC5C,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,OAAO,IAAI,oBAAoB,CAE7E"}
@@ -226,3 +226,6 @@ export var hasMoreMessagesProbably = function (returnedCountMessages, limit) {
226
226
  export var hasNotMoreMessages = function (returnedCountMessages, limit) {
227
227
  return returnedCountMessages < limit;
228
228
  };
229
+ export function isDateSeparatorMessage(message) {
230
+ return message.customType === CUSTOM_MESSAGE_TYPE.date && !!message.date && isDate(message.date);
231
+ }
@@ -1,5 +1,6 @@
1
1
  export declare const DEFAULT_INITIAL_CHANNEL_PAGE_SIZE = 25;
2
2
  export declare const DEFAULT_NEXT_CHANNEL_PAGE_SIZE = 100;
3
+ export declare const DEFAULT_JUMP_TO_PAGE_SIZE = 100;
3
4
  export declare const DEFAULT_THREAD_PAGE_SIZE = 50;
4
5
  export declare const DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD = 250;
5
6
  //# 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;AAC3C,eAAO,MAAM,kCAAkC,MAAM,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,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,kCAAkC,MAAM,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export var DEFAULT_INITIAL_CHANNEL_PAGE_SIZE = 25;
2
2
  export var DEFAULT_NEXT_CHANNEL_PAGE_SIZE = 100;
3
+ export var DEFAULT_JUMP_TO_PAGE_SIZE = 100;
3
4
  export var DEFAULT_THREAD_PAGE_SIZE = 50;
4
5
  export var DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD = 250;