stream-chat-react 10.14.0 → 10.15.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.
Files changed (117) hide show
  1. package/dist/browser.full-bundle.js +6528 -6421
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +5 -5
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/AutoCompleteTextarea/List.js +1 -1
  6. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  7. package/dist/components/Avatar/Avatar.js +1 -1
  8. package/dist/components/DateSeparator/DateSeparator.js +1 -1
  9. package/dist/components/EventComponent/EventComponent.js +1 -1
  10. package/dist/components/Message/FixedHeightMessage.js +1 -1
  11. package/dist/components/Message/MessageText.js +2 -2
  12. package/dist/components/Message/index.d.ts +1 -0
  13. package/dist/components/Message/index.d.ts.map +1 -1
  14. package/dist/components/Message/index.js +1 -0
  15. package/dist/components/Message/renderText/Anchor.d.ts +4 -0
  16. package/dist/components/Message/renderText/Anchor.d.ts.map +1 -0
  17. package/dist/components/Message/renderText/Anchor.js +10 -0
  18. package/dist/components/Message/renderText/Emoji.d.ts +3 -0
  19. package/dist/components/Message/renderText/Emoji.d.ts.map +1 -0
  20. package/dist/components/Message/renderText/Emoji.js +5 -0
  21. package/dist/components/Message/renderText/Mention.d.ts +18 -0
  22. package/dist/components/Message/renderText/Mention.d.ts.map +1 -0
  23. package/dist/components/Message/renderText/Mention.js +5 -0
  24. package/dist/components/Message/renderText/index.d.ts +5 -0
  25. package/dist/components/Message/renderText/index.d.ts.map +1 -0
  26. package/dist/components/Message/renderText/index.js +3 -0
  27. package/dist/components/Message/renderText/regex.d.ts +5 -0
  28. package/dist/components/Message/renderText/regex.d.ts.map +1 -0
  29. package/dist/components/Message/renderText/regex.js +21 -0
  30. package/dist/components/Message/renderText/rehypePlugins.d.ts +7 -0
  31. package/dist/components/Message/renderText/rehypePlugins.d.ts.map +1 -0
  32. package/dist/components/Message/renderText/rehypePlugins.js +60 -0
  33. package/dist/components/Message/renderText/renderText.d.ts +21 -0
  34. package/dist/components/Message/renderText/renderText.d.ts.map +1 -0
  35. package/dist/components/Message/renderText/renderText.js +126 -0
  36. package/dist/components/Message/types.d.ts +1 -1
  37. package/dist/components/Message/types.d.ts.map +1 -1
  38. package/dist/components/Message/utils.d.ts +1 -0
  39. package/dist/components/Message/utils.d.ts.map +1 -1
  40. package/dist/components/Message/utils.js +8 -0
  41. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  42. package/dist/components/MessageList/MessageList.js +1 -3
  43. package/dist/components/MessageList/VirtualizedMessageList.d.ts +36 -6
  44. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  45. package/dist/components/MessageList/VirtualizedMessageList.js +39 -122
  46. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +23 -0
  47. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -0
  48. package/dist/components/MessageList/VirtualizedMessageListComponents.js +70 -0
  49. package/dist/components/MessageList/hooks/MessageList/index.d.ts +5 -0
  50. package/dist/components/MessageList/hooks/MessageList/index.d.ts.map +1 -0
  51. package/dist/components/MessageList/hooks/MessageList/index.js +4 -0
  52. package/dist/components/MessageList/hooks/{useEnrichedMessages.d.ts → MessageList/useEnrichedMessages.d.ts} +3 -3
  53. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -0
  54. package/dist/components/MessageList/hooks/{useEnrichedMessages.js → MessageList/useEnrichedMessages.js} +3 -3
  55. package/dist/components/MessageList/hooks/{useMessageListElements.d.ts → MessageList/useMessageListElements.d.ts} +4 -4
  56. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -0
  57. package/dist/components/MessageList/hooks/{useMessageListElements.js → MessageList/useMessageListElements.js} +9 -9
  58. package/dist/components/MessageList/hooks/{useMessageListScrollManager.d.ts → MessageList/useMessageListScrollManager.d.ts} +2 -2
  59. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -0
  60. package/dist/components/MessageList/hooks/{useMessageListScrollManager.js → MessageList/useMessageListScrollManager.js} +1 -1
  61. package/dist/components/MessageList/hooks/{useScrollLocationLogic.d.ts → MessageList/useScrollLocationLogic.d.ts} +2 -2
  62. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -0
  63. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts +7 -0
  64. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts.map +1 -0
  65. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.js +6 -0
  66. package/dist/components/MessageList/hooks/{useGiphyPreview.d.ts → VirtualizedMessageList/useGiphyPreview.d.ts} +2 -2
  67. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -0
  68. package/dist/components/MessageList/hooks/{useGiphyPreview.js → VirtualizedMessageList/useGiphyPreview.js} +1 -1
  69. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts +10 -0
  70. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts.map +1 -0
  71. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js +20 -0
  72. package/dist/components/MessageList/hooks/{useNewMessageNotification.d.ts → VirtualizedMessageList/useNewMessageNotification.d.ts} +2 -2
  73. package/dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts.map +1 -0
  74. package/dist/components/MessageList/hooks/{usePrependMessagesCount.d.ts → VirtualizedMessageList/usePrependMessagesCount.d.ts} +2 -2
  75. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -0
  76. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts +12 -0
  77. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -0
  78. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +28 -0
  79. package/dist/components/MessageList/hooks/{useShouldForceScrollToBottom.d.ts → VirtualizedMessageList/useShouldForceScrollToBottom.d.ts} +2 -2
  80. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts.map +1 -0
  81. package/dist/components/MessageList/hooks/index.d.ts +7 -7
  82. package/dist/components/MessageList/hooks/index.d.ts.map +1 -1
  83. package/dist/components/MessageList/hooks/index.js +7 -7
  84. package/dist/context/MessageContext.d.ts +1 -1
  85. package/dist/context/MessageContext.d.ts.map +1 -1
  86. package/dist/index.cjs.js +627 -584
  87. package/dist/index.cjs.js.map +1 -1
  88. package/dist/index.d.ts +0 -1
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +0 -2
  91. package/dist/utils/generateRandomId.d.ts +6 -0
  92. package/dist/utils/generateRandomId.d.ts.map +1 -0
  93. package/dist/utils/generateRandomId.js +5 -0
  94. package/dist/utils/getWholeChar.d.ts +2 -0
  95. package/dist/utils/getWholeChar.d.ts.map +1 -0
  96. package/dist/utils/getWholeChar.js +26 -0
  97. package/dist/utils/index.d.ts +4 -0
  98. package/dist/utils/index.d.ts.map +1 -0
  99. package/dist/utils/index.js +3 -0
  100. package/dist/version.d.ts +1 -1
  101. package/dist/version.js +1 -1
  102. package/package.json +2 -2
  103. package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts.map +0 -1
  104. package/dist/components/MessageList/hooks/useGiphyPreview.d.ts.map +0 -1
  105. package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +0 -1
  106. package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts.map +0 -1
  107. package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts.map +0 -1
  108. package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts.map +0 -1
  109. package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +0 -1
  110. package/dist/components/MessageList/hooks/useShouldForceScrollToBottom.d.ts.map +0 -1
  111. package/dist/utils.d.ts +0 -42
  112. package/dist/utils.d.ts.map +0 -1
  113. package/dist/utils.js +0 -253
  114. /package/dist/components/MessageList/hooks/{useScrollLocationLogic.js → MessageList/useScrollLocationLogic.js} +0 -0
  115. /package/dist/components/MessageList/hooks/{useNewMessageNotification.js → VirtualizedMessageList/useNewMessageNotification.js} +0 -0
  116. /package/dist/components/MessageList/hooks/{usePrependMessagesCount.js → VirtualizedMessageList/usePrependMessagesCount.js} +0 -0
  117. /package/dist/components/MessageList/hooks/{useShouldForceScrollToBottom.js → VirtualizedMessageList/useShouldForceScrollToBottom.js} +0 -0
@@ -3,9 +3,9 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
3
3
  import clsx from 'clsx';
4
4
  import { useComponentContext } from '../../context/ComponentContext';
5
5
  import { useChatContext } from '../../context/ChatContext';
6
- import { escapeRegExp } from '../../utils';
7
6
  import { Item } from './Item';
8
7
  import { DefaultSuggestionListHeader } from './Header';
8
+ import { escapeRegExp } from '../Message/renderText';
9
9
  export var List = function (_a) {
10
10
  var className = _a.className, component = _a.component, currentTrigger = _a.currentTrigger, dropdownScroll = _a.dropdownScroll, getSelectedItem = _a.getSelectedItem, getTextToReplace = _a.getTextToReplace, PropHeader = _a.Header, itemClassName = _a.itemClassName, itemStyle = _a.itemStyle, onSelect = _a.onSelect, selectionEnd = _a.selectionEnd, style = _a.style, PropSuggestionItem = _a.SuggestionItem, propValue = _a.value, values = _a.values;
11
11
  var _b = useComponentContext('SuggestionList'), AutocompleteSuggestionHeader = _b.AutocompleteSuggestionHeader, AutocompleteSuggestionItem = _b.AutocompleteSuggestionItem;
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,oBAAY,WAAW,CACrB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACpD,8BAA8B;IAC9B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACxC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,2IA8DlB,CAAC"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,oBAAY,WAAW,CACrB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACpD,8BAA8B;IAC9B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACxC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,2IA8DlB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useState } from 'react';
2
- import { getWholeChar } from '../../utils';
2
+ import { getWholeChar } from '../../utils/getWholeChar';
3
3
  /**
4
4
  * A round avatar image with fallback to username's first letter
5
5
  */
@@ -10,7 +10,7 @@ var UnMemoizedDateSeparator = function (props) {
10
10
  messageCreatedAt: messageCreatedAt,
11
11
  tDateTimeParser: tDateTimeParser,
12
12
  });
13
- return (React.createElement("div", { className: 'str-chat__date-separator' },
13
+ return (React.createElement("div", { className: 'str-chat__date-separator', "data-testid": 'date-separator' },
14
14
  (position === 'right' || position === 'center') && (React.createElement("hr", { className: 'str-chat__date-separator-line' })),
15
15
  React.createElement("div", { className: 'str-chat__date-separator-date' }, unread ? "".concat(t('New'), " - ").concat(formattedDate) : formattedDate),
16
16
  (position === 'left' || position === 'center') && (React.createElement("hr", { className: 'str-chat__date-separator-line' }))));
@@ -13,7 +13,7 @@ var UnMemoizedEventComponent = function (props) {
13
13
  var _e = message.created_at, created_at = _e === void 0 ? '' : _e, event = message.event, text = message.text, type = message.type;
14
14
  var getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser: tDateTimeParser };
15
15
  if (type === 'system')
16
- return (React.createElement("div", { className: 'str-chat__message--system' },
16
+ return (React.createElement("div", { className: 'str-chat__message--system', "data-testid": 'message-system' },
17
17
  React.createElement("div", { className: 'str-chat__message--system__text' },
18
18
  React.createElement("div", { className: 'str-chat__message--system__line' }),
19
19
  React.createElement("p", null, text),
@@ -11,7 +11,7 @@ import { useChatContext } from '../../context/ChatContext';
11
11
  import { useComponentContext } from '../../context/ComponentContext';
12
12
  import { useMessageContext } from '../../context/MessageContext';
13
13
  import { useTranslationContext } from '../../context/TranslationContext';
14
- import { renderText } from '../../utils';
14
+ import { renderText } from './renderText';
15
15
  var selectColor = function (number, dark) {
16
16
  var hue = number * 137.508; // use golden angle approximation
17
17
  return "hsl(".concat(hue, ",").concat(dark ? '50%' : '85%', ", ").concat(dark ? '75%' : '55%', ")");
@@ -1,8 +1,8 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import { QuotedMessage as DefaultQuotedMessage } from './QuotedMessage';
3
- import { messageHasAttachments } from './utils';
3
+ import { isOnlyEmojis, messageHasAttachments } from './utils';
4
4
  import { useComponentContext, useMessageContext, useTranslationContext } from '../../context';
5
- import { renderText as defaultRenderText, isOnlyEmojis } from '../../utils';
5
+ import { renderText as defaultRenderText } from './renderText';
6
6
  var UnMemoizedMessageTextComponent = function (props) {
7
7
  var _a, _b;
8
8
  var customInnerClass = props.customInnerClass, _c = props.customWrapperClass, customWrapperClass = _c === void 0 ? '' : _c, propMessage = props.message, propsRenderText = props.renderText, _d = props.theme, theme = _d === void 0 ? 'simple' : _d;
@@ -10,6 +10,7 @@ export * from './MessageStatus';
10
10
  export * from './MessageText';
11
11
  export * from './MessageTimestamp';
12
12
  export * from './QuotedMessage';
13
+ export * from './renderText';
13
14
  export * from './types';
14
15
  export * from './utils';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Message/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Message/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -10,5 +10,6 @@ export * from './MessageStatus';
10
10
  export * from './MessageText';
11
11
  export * from './MessageTimestamp';
12
12
  export * from './QuotedMessage';
13
+ export * from './renderText';
13
14
  export * from './types';
14
15
  export * from './utils';
@@ -0,0 +1,4 @@
1
+ import { ComponentProps } from 'react';
2
+ import { ReactMarkdownProps } from 'react-markdown/lib/complex-types';
3
+ export declare const Anchor: ({ children, href }: ComponentProps<'a'> & ReactMarkdownProps) => JSX.Element;
4
+ //# sourceMappingURL=Anchor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Anchor.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/renderText/Anchor.tsx"],"names":[],"mappings":"AACA,OAAc,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,eAAO,MAAM,MAAM,uBAAwB,eAAe,GAAG,CAAC,GAAG,kBAAkB,gBAgBlF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import clsx from 'clsx';
2
+ import React from 'react';
3
+ export var Anchor = function (_a) {
4
+ var children = _a.children, href = _a.href;
5
+ var isEmail = href === null || href === void 0 ? void 0 : href.startsWith('mailto:');
6
+ var isUrl = href === null || href === void 0 ? void 0 : href.startsWith('http');
7
+ if (!href || (!isEmail && !isUrl))
8
+ return React.createElement(React.Fragment, null, children);
9
+ return (React.createElement("a", { className: clsx({ 'str-chat__message-url-link': isUrl }), href: href, rel: 'nofollow noreferrer noopener', target: '_blank' }, children));
10
+ };
@@ -0,0 +1,3 @@
1
+ import { ReactMarkdownProps } from 'react-markdown/lib/complex-types';
2
+ export declare const Emoji: ({ children }: ReactMarkdownProps) => JSX.Element;
3
+ //# sourceMappingURL=Emoji.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Emoji.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/renderText/Emoji.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,eAAO,MAAM,KAAK,iBAAkB,kBAAkB,gBAIrD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export var Emoji = function (_a) {
3
+ var children = _a.children;
4
+ return (React.createElement("span", { className: 'inline-text-emoji', "data-testid": 'inline-text-emoji' }, children));
5
+ };
@@ -0,0 +1,18 @@
1
+ import type { ReactMarkdownProps } from 'react-markdown/lib/complex-types';
2
+ import type { UserResponse } from 'stream-chat';
3
+ import type { DefaultStreamChatGenerics } from '../../../types/types';
4
+ export declare type MentionProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = ReactMarkdownProps & {
5
+ /**
6
+ * @deprecated will be removed in the next major release, transition to using `node.mentionedUser` instead
7
+ */
8
+ mentioned_user: UserResponse<StreamChatGenerics>;
9
+ node: {
10
+ /**
11
+ * @deprecated will be removed in the next major release, transition to using `node.mentionedUser` instead
12
+ */
13
+ mentioned_user: UserResponse<StreamChatGenerics>;
14
+ mentionedUser: UserResponse<StreamChatGenerics>;
15
+ };
16
+ };
17
+ export declare const Mention: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ children, node: { mentionedUser }, }: MentionProps<StreamChatGenerics>) => JSX.Element;
18
+ //# sourceMappingURL=Mention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mention.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/renderText/Mention.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,YAAY,CACtB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,kBAAkB,GAAG;IACvB;;OAEG;IACH,cAAc,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,EAAE;QACJ;;WAEG;QACH,cAAc,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACjD,aAAa,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;KACjD,CAAC;CACH,CAAC;AACF,eAAO,MAAM,OAAO,6KASnB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export var Mention = function (_a) {
3
+ var children = _a.children, mentionedUser = _a.node.mentionedUser;
4
+ return (React.createElement("span", { className: 'str-chat__message-mention', "data-user-id": mentionedUser.id }, children));
5
+ };
@@ -0,0 +1,5 @@
1
+ export { MentionProps } from './Mention';
2
+ export { emojiMarkdownPlugin, mentionsMarkdownPlugin } from './rehypePlugins';
3
+ export { escapeRegExp, matchMarkdownLinks, messageCodeBlocks } from './regex';
4
+ export * from './renderText';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/renderText/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC9E,cAAc,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { emojiMarkdownPlugin, mentionsMarkdownPlugin } from './rehypePlugins';
2
+ export { escapeRegExp, matchMarkdownLinks, messageCodeBlocks } from './regex';
3
+ export * from './renderText';
@@ -0,0 +1,5 @@
1
+ export declare function escapeRegExp(text: string): string;
2
+ export declare const detectHttp: RegExp;
3
+ export declare const messageCodeBlocks: (message: string) => RegExpMatchArray;
4
+ export declare const matchMarkdownLinks: (message: string) => (string | null)[];
5
+ //# sourceMappingURL=regex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/renderText/regex.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,UAExC;AAED,eAAO,MAAM,UAAU,QAA6B,CAAC;AAErD,eAAO,MAAM,iBAAiB,YAAa,MAAM,qBAIhD,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAAa,MAAM,sBAajD,CAAC"}
@@ -0,0 +1,21 @@
1
+ export function escapeRegExp(text) {
2
+ return text.replace(/[-[\]{}()*+?.,/\\^$|#]/g, '\\$&');
3
+ }
4
+ export var detectHttp = /(http(s?):\/\/)?(www\.)?/;
5
+ export var messageCodeBlocks = function (message) {
6
+ var codeRegex = /```[a-z]*\n[\s\S]*?\n```|`[a-z]*[\s\S]*?`/gm;
7
+ var matches = message.match(codeRegex);
8
+ return matches || [];
9
+ };
10
+ export var matchMarkdownLinks = function (message) {
11
+ var regexMdLinks = /\[([^[]+)\](\(.*\))/gm;
12
+ var matches = message.match(regexMdLinks);
13
+ var singleMatch = /\[([^[]+)\]\((.*)\)/;
14
+ var links = matches
15
+ ? matches.map(function (match) {
16
+ var i = singleMatch.exec(match);
17
+ return i && [i[1], i[2]];
18
+ })
19
+ : [];
20
+ return links.flat();
21
+ };
@@ -0,0 +1,7 @@
1
+ import type { Content, Root } from 'hast';
2
+ import type { UserResponse } from 'stream-chat';
3
+ import type { DefaultStreamChatGenerics } from '../../../types/types';
4
+ export declare type HNode = Content | Root;
5
+ export declare const mentionsMarkdownPlugin: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(mentioned_users: UserResponse<StreamChatGenerics>[]) => () => (tree: HNode) => HNode;
6
+ export declare const emojiMarkdownPlugin: () => (node: HNode) => import("hast-util-find-and-replace/lib").Node;
7
+ //# sourceMappingURL=rehypePlugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehypePlugins.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/renderText/rehypePlugins.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC;AACnC,eAAO,MAAM,sBAAsB,0JAuBR,KAAK,KAAG,KAoClC,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAIL,KAAK,kDAG/B,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { findAndReplace } from 'hast-util-find-and-replace';
2
+ import { u } from 'unist-builder';
3
+ import { visit } from 'unist-util-visit';
4
+ import emojiRegex from 'emoji-regex';
5
+ import { escapeRegExp } from './regex';
6
+ export var mentionsMarkdownPlugin = function (mentioned_users) { return function () {
7
+ var mentioned_usernames = mentioned_users
8
+ .map(function (user) { return user.name || user.id; })
9
+ .filter(Boolean)
10
+ .map(escapeRegExp);
11
+ var mentionedUsersRegex = new RegExp(mentioned_usernames.map(function (username) { return "@".concat(username); }).join('|'), 'g');
12
+ var replace = function (match) {
13
+ var usernameOrId = match.replace('@', '');
14
+ var user = mentioned_users.find(function (_a) {
15
+ var id = _a.id, name = _a.name;
16
+ return name === usernameOrId || id === usernameOrId;
17
+ });
18
+ return u('element', { mentionedUser: user, tagName: 'mention' }, [u('text', match)]);
19
+ };
20
+ var transform = function (tree) {
21
+ if (!mentioned_usernames.length)
22
+ return tree;
23
+ // handles special cases of mentions where user.name is an e-mail
24
+ // Remark GFM translates all e-mail-like text nodes to links creating
25
+ // two separate child nodes "@" and "your.name@as.email" instead of
26
+ // keeping it as one text node with value "@your.name@as.email"
27
+ // this piece finds these two separated nodes and merges them together
28
+ // before "replace" function takes over
29
+ visit(tree, function (node, index, parent) {
30
+ var _a;
31
+ if (index === null)
32
+ return;
33
+ if (!parent)
34
+ return;
35
+ var nextChild = parent.children.at(index + 1);
36
+ var nextChildHref = (_a = nextChild === null || nextChild === void 0 ? void 0 : nextChild.properties) === null || _a === void 0 ? void 0 : _a.href;
37
+ if (node.type === 'text' &&
38
+ // text value has to have @ sign at the end of the string
39
+ // and no other characters except whitespace can precede it
40
+ // valid cases: "text @", "@", " @"
41
+ // invalid cases: "text@", "@text",
42
+ /.?\s?@$|^@$/.test(node.value) &&
43
+ (nextChildHref === null || nextChildHref === void 0 ? void 0 : nextChildHref.startsWith('mailto:'))) {
44
+ var newTextValue = node.value.replace(/@$/, '');
45
+ var username = nextChildHref.replace('mailto:', '');
46
+ parent.children[index] = u('text', newTextValue);
47
+ parent.children[index + 1] = u('text', "@".concat(username));
48
+ }
49
+ });
50
+ return findAndReplace(tree, mentionedUsersRegex, replace);
51
+ };
52
+ return transform;
53
+ }; };
54
+ export var emojiMarkdownPlugin = function () {
55
+ var replace = function (match) {
56
+ return u('element', { tagName: 'emoji' }, [u('text', match)]);
57
+ };
58
+ var transform = function (node) { return findAndReplace(node, emojiRegex(), replace); };
59
+ return transform;
60
+ };
@@ -0,0 +1,21 @@
1
+ import { ComponentType } from 'react';
2
+ import { Options } from 'react-markdown';
3
+ import { MentionProps } from './Mention';
4
+ import type { ReactMarkdownProps } from 'react-markdown/lib/complex-types';
5
+ import type { PluggableList } from 'react-markdown/lib/react-markdown';
6
+ import type { UserResponse } from 'stream-chat';
7
+ import type { DefaultStreamChatGenerics } from '../../../types/types';
8
+ export declare type RenderTextPluginConfigurator = (defaultPlugins: PluggableList) => PluggableList;
9
+ export declare const defaultAllowedTagNames: Array<keyof JSX.IntrinsicElements | 'emoji' | 'mention'>;
10
+ export declare const markDownRenderers: RenderTextOptions['customMarkDownRenderers'];
11
+ export declare type RenderTextOptions<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
12
+ allowedTagNames?: Array<keyof JSX.IntrinsicElements | 'emoji' | 'mention' | (string & {})>;
13
+ customMarkDownRenderers?: Options['components'] & Partial<{
14
+ emoji: ComponentType<ReactMarkdownProps>;
15
+ mention: ComponentType<MentionProps<StreamChatGenerics>>;
16
+ }>;
17
+ getRehypePlugins?: RenderTextPluginConfigurator;
18
+ getRemarkPlugins?: RenderTextPluginConfigurator;
19
+ };
20
+ export declare const renderText: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(text?: string, mentionedUsers?: UserResponse<StreamChatGenerics>[] | undefined, { allowedTagNames, customMarkDownRenderers, getRehypePlugins, getRemarkPlugins, }?: RenderTextOptions) => JSX.Element | null;
21
+ //# sourceMappingURL=renderText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderText.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/renderText/renderText.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAsB,EAAE,OAAO,EAAkB,MAAM,gBAAgB,CAAC;AAOxE,OAAO,EAAW,YAAY,EAAE,MAAM,WAAW,CAAC;AAIlD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,4BAA4B,GAAG,CAAC,cAAc,EAAE,aAAa,KAAK,aAAa,CAAC;AAE5F,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,iBAAiB,GAAG,OAAO,GAAG,SAAS,CAkB3F,CAAC;AAsBF,eAAO,MAAM,iBAAiB,EAAE,iBAAiB,CAAC,yBAAyB,CAI1E,CAAC;AAEF,oBAAY,iBAAiB,CAC3B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IAEF,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3F,uBAAuB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC7C,OAAO,CAAC;QACN,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACzC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAC1D,CAAC,CAAC;IACL,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;IAChD,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;CACjD,CAAC;AAEF,eAAO,MAAM,UAAU,4FAGd,MAAM,uJAOV,iBAAiB,uBAsGrB,CAAC"}
@@ -0,0 +1,126 @@
1
+ import { __assign, __rest, __spreadArray } from "tslib";
2
+ import React from 'react';
3
+ import ReactMarkdown, { uriTransformer } from 'react-markdown';
4
+ import { find } from 'linkifyjs';
5
+ import uniqBy from 'lodash.uniqby';
6
+ import remarkGfm from 'remark-gfm';
7
+ import { Emoji } from './Emoji';
8
+ import { Anchor } from './Anchor';
9
+ import { Mention } from './Mention';
10
+ import { detectHttp, escapeRegExp, matchMarkdownLinks, messageCodeBlocks } from './regex';
11
+ import { emojiMarkdownPlugin, mentionsMarkdownPlugin } from './rehypePlugins';
12
+ export var defaultAllowedTagNames = [
13
+ 'html',
14
+ 'text',
15
+ 'br',
16
+ 'p',
17
+ 'em',
18
+ 'strong',
19
+ 'a',
20
+ 'ol',
21
+ 'ul',
22
+ 'li',
23
+ 'code',
24
+ 'pre',
25
+ 'blockquote',
26
+ 'del',
27
+ // custom types (tagNames)
28
+ 'emoji',
29
+ 'mention',
30
+ ];
31
+ function formatUrlForDisplay(url) {
32
+ try {
33
+ return decodeURIComponent(url).replace(detectHttp, '');
34
+ }
35
+ catch (e) {
36
+ return url;
37
+ }
38
+ }
39
+ function encodeDecode(url) {
40
+ try {
41
+ return encodeURI(decodeURIComponent(url));
42
+ }
43
+ catch (error) {
44
+ return url;
45
+ }
46
+ }
47
+ var transformLinkUri = function (uri) { return (uri.startsWith('app://') ? uri : uriTransformer(uri)); };
48
+ var getPluginsForward = function (plugins) { return plugins; };
49
+ export var markDownRenderers = {
50
+ a: Anchor,
51
+ emoji: Emoji,
52
+ mention: Mention,
53
+ };
54
+ export var renderText = function (text, mentionedUsers, _a) {
55
+ var _b = _a === void 0 ? {} : _a, _c = _b.allowedTagNames, allowedTagNames = _c === void 0 ? defaultAllowedTagNames : _c, customMarkDownRenderers = _b.customMarkDownRenderers, _d = _b.getRehypePlugins, getRehypePlugins = _d === void 0 ? getPluginsForward : _d, _e = _b.getRemarkPlugins, getRemarkPlugins = _e === void 0 ? getPluginsForward : _e;
56
+ // take the @ mentions and turn them into markdown?
57
+ // translate links
58
+ if (!text)
59
+ return null;
60
+ if (text.trim().length === 1)
61
+ return React.createElement(React.Fragment, null, text);
62
+ var newText = text;
63
+ var markdownLinks = matchMarkdownLinks(newText);
64
+ var codeBlocks = messageCodeBlocks(newText);
65
+ // extract all valid links/emails within text and replace it with proper markup
66
+ uniqBy(__spreadArray(__spreadArray([], find(newText, 'email'), true), find(newText, 'url'), true), 'value').forEach(function (_a) {
67
+ var href = _a.href, type = _a.type, value = _a.value;
68
+ var linkIsInBlock = codeBlocks.some(function (block) { return block === null || block === void 0 ? void 0 : block.includes(value); });
69
+ // check if message is already markdown
70
+ var noParsingNeeded = markdownLinks &&
71
+ markdownLinks.filter(function (text) {
72
+ var strippedHref = href === null || href === void 0 ? void 0 : href.replace(detectHttp, '');
73
+ var strippedText = text === null || text === void 0 ? void 0 : text.replace(detectHttp, '');
74
+ if (!strippedHref || !strippedText)
75
+ return false;
76
+ return strippedHref.includes(strippedText) || strippedText.includes(strippedHref);
77
+ });
78
+ if (noParsingNeeded.length > 0 || linkIsInBlock)
79
+ return;
80
+ try {
81
+ // special case for mentions:
82
+ // it could happen that a user's name matches with an e-mail format pattern.
83
+ // in that case, we check whether the found e-mail is actually a mention
84
+ // by naively checking for an existence of @ sign in front of it.
85
+ if (type === 'email' && mentionedUsers) {
86
+ var emailMatchesWithName = mentionedUsers.some(function (u) { return u.name === value; });
87
+ if (emailMatchesWithName) {
88
+ newText = newText.replace(new RegExp(escapeRegExp(value), 'g'), function (match, position) {
89
+ var isMention = newText.charAt(position - 1) === '@';
90
+ // in case of mention, we leave the match in its original form,
91
+ // and we let `mentionsMarkdownPlugin` to do its job
92
+ return isMention ? match : "[".concat(match, "](").concat(encodeDecode(href), ")");
93
+ });
94
+ return;
95
+ }
96
+ }
97
+ var displayLink = type === 'email' ? value : formatUrlForDisplay(href);
98
+ newText = newText.replace(new RegExp(escapeRegExp(value), 'g'), "[".concat(displayLink, "](").concat(encodeDecode(href), ")"));
99
+ }
100
+ catch (e) {
101
+ void e;
102
+ }
103
+ });
104
+ var remarkPlugins = [[remarkGfm, { singleTilde: false }]];
105
+ var rehypePlugins = [emojiMarkdownPlugin];
106
+ if (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) {
107
+ rehypePlugins.push(mentionsMarkdownPlugin(mentionedUsers));
108
+ }
109
+ // TODO: remove in the next major release
110
+ if (customMarkDownRenderers === null || customMarkDownRenderers === void 0 ? void 0 : customMarkDownRenderers.mention) {
111
+ var MentionComponent_1 = customMarkDownRenderers['mention'];
112
+ // eslint-disable-next-line react/display-name
113
+ customMarkDownRenderers['mention'] = function (_a) {
114
+ var node = _a.node, rest = __rest(_a, ["node"]);
115
+ return (React.createElement(MentionComponent_1
116
+ // @ts-ignore
117
+ , __assign({
118
+ // @ts-ignore
119
+ mentioned_user: node.mentionedUser,
120
+ // @ts-ignore
121
+ node: __assign({ mentioned_user: node.mentionedUser }, node) }, rest)));
122
+ };
123
+ }
124
+ var rehypeComponents = __assign(__assign({}, markDownRenderers), customMarkDownRenderers);
125
+ return (React.createElement(ReactMarkdown, { allowedElements: allowedTagNames, components: rehypeComponents, rehypePlugins: getRehypePlugins(rehypePlugins), remarkPlugins: getRemarkPlugins(remarkPlugins), skipHtml: true, transformLinkUri: transformLinkUri, unwrapDisallowed: true }, newText));
126
+ };
@@ -9,7 +9,7 @@ import type { ChannelActionContextValue } from '../../context/ChannelActionConte
9
9
  import type { StreamMessage } from '../../context/ChannelStateContext';
10
10
  import type { ComponentContextValue } from '../../context/ComponentContext';
11
11
  import type { MessageContextValue } from '../../context/MessageContext';
12
- import type { RenderTextOptions } from '../../utils';
12
+ import type { RenderTextOptions } from './renderText';
13
13
  import type { CustomTrigger, DefaultStreamChatGenerics } from '../../types/types';
14
14
  export declare type ReactEventHandler = (event: React.BaseSyntheticEvent) => Promise<void> | void;
15
15
  export declare type MessageProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger> = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Message/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Message/types.ts"],"names":[],"mappings":"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"}
@@ -63,4 +63,5 @@ export interface TooltipUsernameMapper {
63
63
  */
64
64
  export declare const mapToUserNameOrId: TooltipUsernameMapper;
65
65
  export declare const getReadByTooltipText: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(users: UserResponse<StreamChatGenerics>[], t: TFunction, client: StreamChat<StreamChatGenerics>, tooltipUserNameMapper: TooltipUsernameMapper) => string;
66
+ export declare const isOnlyEmojis: (text?: string) => boolean;
66
67
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Message/utils.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,8CACV,OAAO,2BAiB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,2LAUvB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CAS3B,CAAC;AAEF,oBAAY,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,KAAK,CAChE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAC9E,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,cAwDnC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,mBAAmB,GAAG,OAAO,kFAC0C,YAAY,gCA+C7F,CAAC;AAIF,eAAO,MAAM,qBAAqB,oDAErB,OAAO,GAAG,SAAS,YAsB/B,CAAC;AAmBF,eAAO,MAAM,oBAAoB;;;;;;aAsChC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;aA+BlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,wJAIqC,CAAC;AAEtE,eAAO,MAAM,qBAAqB,wJAIyB,CAAC;AAE5D,eAAO,MAAM,SAAS,yMASrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,yMASlC,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,CAAC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAC/E,IAAI,EAAE,YAAY,CAAC,kBAAkB,CAAC,GACrC,MAAM,CAAC;CACX;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,qBAAsD,CAAC;AAEvF,eAAO,MAAM,oBAAoB,mIAI5B,SAAS,iEAEW,qBAAqB,WAiD7C,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Message/utils.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,8CACV,OAAO,2BAiB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,2LAUvB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CAS3B,CAAC;AAEF,oBAAY,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,KAAK,CAChE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAC9E,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,cAwDnC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,mBAAmB,GAAG,OAAO,kFAC0C,YAAY,gCA+C7F,CAAC;AAIF,eAAO,MAAM,qBAAqB,oDAErB,OAAO,GAAG,SAAS,YAsB/B,CAAC;AAmBF,eAAO,MAAM,oBAAoB;;;;;;aAsChC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;aA+BlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,wJAIqC,CAAC;AAEtE,eAAO,MAAM,qBAAqB,wJAIyB,CAAC;AAE5D,eAAO,MAAM,SAAS,yMASrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,yMASlC,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,CAAC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAC/E,IAAI,EAAE,YAAY,CAAC,kBAAkB,CAAC,GACrC,MAAM,CAAC;CACX;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,qBAAsD,CAAC;AAEvF,eAAO,MAAM,oBAAoB,mIAI5B,SAAS,iEAEW,qBAAqB,WAiD7C,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,MAAM,YAOzC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { __spreadArray } from "tslib";
2
2
  import deepequal from 'react-fast-compare';
3
+ import emojiRegex from 'emoji-regex';
3
4
  /**
4
5
  * Following function validates a function which returns notification message.
5
6
  * It validates if the first parameter is function and also if return value of function is string or no.
@@ -277,3 +278,10 @@ export var getReadByTooltipText = function (users, t, client, tooltipUserNameMap
277
278
  }
278
279
  return outStr;
279
280
  };
281
+ export var isOnlyEmojis = function (text) {
282
+ if (!text)
283
+ return false;
284
+ var noEmojis = text.replace(emojiRegex(), '');
285
+ var noSpace = noEmojis.replace(/[\s\n]/gm, '');
286
+ return !noSpace;
287
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAMhG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA0MnE,aAAK,qBAAqB,GACtB,6BAA6B,GAC7B,8BAA8B,GAC9B,sBAAsB,GACtB,uBAAuB,GACvB,YAAY,GACZ,mCAAmC,GACnC,iCAAiC,GACjC,mCAAmC,GACnC,8BAA8B,GAC9B,gCAAgC,GAChC,gCAAgC,GAChC,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,YAAY,GACZ,kBAAkB,GAClB,YAAY,CAAC;AAEjB,oBAAY,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG;IAC3E,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAClD,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC9C,aAAa,EAAE,OAAO,KACnB,UAAU,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iIAAiI;IACjI,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qIAAqI;IACrI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mLAAmL;IACnL,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;IAClD,iHAAiH;IACjH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,6LAA6L;IAC7L,aAAa,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yKAAyK;IACzK,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qHAAqH;IACrH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gJA2BvB,CAAC"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAMhG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA0MnE,aAAK,qBAAqB,GACtB,6BAA6B,GAC7B,8BAA8B,GAC9B,sBAAsB,GACtB,uBAAuB,GACvB,YAAY,GACZ,mCAAmC,GACnC,iCAAiC,GACjC,mCAAmC,GACnC,8BAA8B,GAC9B,gCAAgC,GAChC,gCAAgC,GAChC,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,YAAY,GACZ,kBAAkB,GAClB,YAAY,CAAC;AAEjB,oBAAY,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG;IAC3E,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAClD,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC9C,aAAa,EAAE,OAAO,KACnB,UAAU,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iIAAiI;IACjI,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qIAAqI;IACrI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mLAAmL;IACnL,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;IAClD,iHAAiH;IACjH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,6LAA6L;IAC7L,aAAa,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yKAAyK;IACzK,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qHAAqH;IACrH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gJA2BvB,CAAC"}
@@ -1,8 +1,6 @@
1
1
  import { __assign, __awaiter, __generator, __rest } from "tslib";
2
2
  import React from 'react';
3
- import { useEnrichedMessages } from './hooks/useEnrichedMessages';
4
- import { useMessageListElements } from './hooks/useMessageListElements';
5
- import { useScrollLocationLogic } from './hooks/useScrollLocationLogic';
3
+ import { useEnrichedMessages, useMessageListElements, useScrollLocationLogic, } from './hooks/MessageList';
6
4
  import { MessageNotification as DefaultMessageNotification } from './MessageNotification';
7
5
  import { MessageListNotifications as DefaultMessageListNotifications } from './MessageListNotifications';
8
6
  import { useChannelActionContext, } from '../../context/ChannelActionContext';
@@ -1,19 +1,42 @@
1
- import React from 'react';
2
- import { ScrollSeekConfiguration, ScrollSeekPlaceholderProps, VirtuosoProps } from 'react-virtuoso';
1
+ import React, { RefObject } from 'react';
2
+ import { ScrollSeekConfiguration, ScrollSeekPlaceholderProps, VirtuosoHandle, VirtuosoProps } from 'react-virtuoso';
3
3
  import { GroupStyle } from './utils';
4
4
  import { MessageProps, MessageUIComponentProps } from '../Message';
5
5
  import { ChannelActionContextValue } from '../../context/ChannelActionContext';
6
6
  import { StreamMessage } from '../../context/ChannelStateContext';
7
+ import { ChatContextValue } from '../../context/ChatContext';
8
+ import { ComponentContextValue } from '../../context/ComponentContext';
9
+ import type { UserResponse } from 'stream-chat';
7
10
  import type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';
11
+ declare type VirtualizedMessageListPropsForContext = 'additionalMessageInputProps' | 'closeReactionSelectorOnClick' | 'customMessageActions' | 'customMessageRenderer' | 'head' | 'loadingMore' | 'Message' | 'messageActions' | 'shouldGroupByUser' | 'threadList';
12
+ /**
13
+ * Context object provided to some Virtuoso props that are functions (components rendered by Virtuoso and other functions)
14
+ */
15
+ export declare type VirtuosoContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Required<Pick<ComponentContextValue<StreamChatGenerics>, 'DateSeparator' | 'MessageSystem'>> & Pick<VirtualizedMessageListProps<StreamChatGenerics>, VirtualizedMessageListPropsForContext> & Pick<ChatContextValue<StreamChatGenerics>, 'customClasses'> & {
16
+ /** Latest received message id in the current channel */
17
+ lastReceivedMessageId: string | null | undefined;
18
+ /** Object mapping between the message ID and a string representing the position in the group of a sequence of messages posted by the same user. */
19
+ messageGroupStyles: Record<string, GroupStyle>;
20
+ /** Number of messages prepended before the first page of messages. This is needed to calculate the virtual position in the virtual list. */
21
+ numItemsPrepended: number;
22
+ /** Mapping of message ID of own messages to the array of users, who read the given message */
23
+ ownMessagesReadByOthers: Record<string, UserResponse<StreamChatGenerics>[]>;
24
+ /** The original message list enriched with date separators, omitted deleted messages or giphy previews. */
25
+ processedMessages: StreamMessage<StreamChatGenerics>[];
26
+ /** Instance of VirtuosoHandle object providing the API to navigate in the virtualized list by various scroll actions. */
27
+ virtuosoRef: RefObject<VirtuosoHandle>;
28
+ };
8
29
  declare type PropsDrilledToMessage = 'additionalMessageInputProps' | 'customMessageActions' | 'messageActions';
9
30
  export declare type VirtualizedMessageListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Pick<MessageProps<StreamChatGenerics>, PropsDrilledToMessage>> & {
10
31
  /** Additional props to be passed the underlying [`react-virtuoso` virtualized list dependency](https://virtuoso.dev/virtuoso-api-reference/) */
11
- additionalVirtuosoProps?: VirtuosoProps<UnknownType, unknown>;
32
+ additionalVirtuosoProps?: VirtuosoProps<UnknownType, VirtuosoContext<StreamChatGenerics>>;
12
33
  /** If true, picking a reaction from the `ReactionSelector` component will close the selector */
13
34
  closeReactionSelectorOnClick?: boolean;
14
35
  /** Custom render function, if passed, certain UI props are ignored */
15
36
  customMessageRenderer?: (messageList: StreamMessage<StreamChatGenerics>[], index: number) => React.ReactElement;
16
- /** If set, the default item height is used for the calculation of the total list height. Use if you expect messages with a lot of height variance */
37
+ /** @deprecated Use additionalVirtuosoProps.defaultItemHeight instead. Will be removed with next major release - `v11.0.0`.
38
+ * If set, the default item height is used for the calculation of the total list height. Use if you expect messages with a lot of height variance
39
+ * */
17
40
  defaultItemHeight?: number;
18
41
  /** Disables the injection of date separator components in MessageList, defaults to `true` */
19
42
  disableDateSeparator?: boolean;
@@ -23,7 +46,10 @@ export declare type VirtualizedMessageListProps<StreamChatGenerics extends Defau
23
46
  hasMore?: boolean;
24
47
  /** Whether or not the list has newer items to load */
25
48
  hasMoreNewer?: boolean;
26
- /** Element to be rendered at the top of the thread message list. By default, these are the Message and ThreadStart components */
49
+ /**
50
+ * @deprecated Use additionalVirtuosoProps.components.Header to override default component rendered above the list ove messages.
51
+ * Element to be rendered at the top of the thread message list. By default, these are the Message and ThreadStart components
52
+ */
27
53
  head?: React.ReactElement;
28
54
  /** Hides the `MessageDeleted` components from the list, defaults to `false` */
29
55
  hideDeletedMessages?: boolean;
@@ -45,11 +71,15 @@ export declare type VirtualizedMessageListProps<StreamChatGenerics extends Defau
45
71
  messageLimit?: number;
46
72
  /** Optional prop to override the messages available from [ChannelStateContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_state_context/) */
47
73
  messages?: StreamMessage<StreamChatGenerics>[];
48
- /** The amount of extra content the list should render in addition to what's necessary to fill in the viewport */
74
+ /**
75
+ * @deprecated Use additionalVirtuosoProps.overscan instead. Will be removed with next major release - `v11.0.0`.
76
+ * The amount of extra content the list should render in addition to what's necessary to fill in the viewport
77
+ */
49
78
  overscan?: number;
50
79
  /** Keep track of read receipts for each message sent by the user. When disabled, only the last own message delivery / read status is rendered. */
51
80
  returnAllReadData?: boolean;
52
81
  /**
82
+ * @deprecated Pass additionalVirtuosoProps.scrollSeekConfiguration and specify the placeholder in additionalVirtuosoProps.components.ScrollSeekPlaceholder instead. Will be removed with next major release - `v11.0.0`.
53
83
  * Performance improvement by showing placeholders if user scrolls fast through list.
54
84
  * it can be used like this:
55
85
  * ```