stream-chat-react 11.0.0-rc.1 → 11.0.0-rc.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 (212) hide show
  1. package/dist/browser.full-bundle.js +9308 -12495
  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/Item.d.ts.map +1 -1
  6. package/dist/components/AutoCompleteTextarea/Item.js +4 -3
  7. package/dist/components/AutoCompleteTextarea/List.d.ts.map +1 -1
  8. package/dist/components/AutoCompleteTextarea/List.js +10 -8
  9. package/dist/components/AutoCompleteTextarea/Textarea.d.ts +1 -1
  10. package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
  11. package/dist/components/AutoCompleteTextarea/Textarea.js +34 -24
  12. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  13. package/dist/components/Avatar/Avatar.js +1 -1
  14. package/dist/components/Channel/Channel.d.ts +4 -11
  15. package/dist/components/Channel/Channel.d.ts.map +1 -1
  16. package/dist/components/Channel/Channel.js +13 -28
  17. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +8 -8
  18. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
  19. package/dist/components/ChatAutoComplete/ChatAutoComplete.js +24 -14
  20. package/dist/components/DateSeparator/DateSeparator.js +1 -1
  21. package/dist/components/Emojis/EmojiPicker.d.ts +10 -0
  22. package/dist/components/Emojis/EmojiPicker.d.ts.map +1 -0
  23. package/dist/components/Emojis/EmojiPicker.js +57 -0
  24. package/dist/components/Emojis/index.cjs.js +89 -0
  25. package/dist/components/Emojis/index.d.ts +2 -0
  26. package/dist/components/Emojis/index.d.ts.map +1 -0
  27. package/dist/components/Emojis/index.js +1 -0
  28. package/dist/components/EventComponent/EventComponent.js +1 -1
  29. package/dist/components/Message/FixedHeightMessage.js +1 -1
  30. package/dist/components/Message/MessageText.js +2 -2
  31. package/dist/components/Message/index.d.ts +1 -0
  32. package/dist/components/Message/index.d.ts.map +1 -1
  33. package/dist/components/Message/index.js +1 -0
  34. package/dist/components/Message/renderText/Anchor.d.ts +4 -0
  35. package/dist/components/Message/renderText/Anchor.d.ts.map +1 -0
  36. package/dist/components/Message/renderText/Anchor.js +10 -0
  37. package/dist/components/Message/renderText/Emoji.d.ts +3 -0
  38. package/dist/components/Message/renderText/Emoji.d.ts.map +1 -0
  39. package/dist/components/Message/renderText/Emoji.js +5 -0
  40. package/dist/components/Message/renderText/Mention.d.ts +18 -0
  41. package/dist/components/Message/renderText/Mention.d.ts.map +1 -0
  42. package/dist/components/Message/renderText/Mention.js +5 -0
  43. package/dist/components/Message/renderText/index.d.ts +5 -0
  44. package/dist/components/Message/renderText/index.d.ts.map +1 -0
  45. package/dist/components/Message/renderText/index.js +3 -0
  46. package/dist/components/Message/renderText/regex.d.ts +5 -0
  47. package/dist/components/Message/renderText/regex.d.ts.map +1 -0
  48. package/dist/components/Message/renderText/regex.js +21 -0
  49. package/dist/components/Message/renderText/rehypePlugins.d.ts +7 -0
  50. package/dist/components/Message/renderText/rehypePlugins.d.ts.map +1 -0
  51. package/dist/components/Message/renderText/rehypePlugins.js +60 -0
  52. package/dist/components/Message/renderText/renderText.d.ts +21 -0
  53. package/dist/components/Message/renderText/renderText.d.ts.map +1 -0
  54. package/dist/components/Message/renderText/renderText.js +126 -0
  55. package/dist/components/Message/types.d.ts +1 -1
  56. package/dist/components/Message/types.d.ts.map +1 -1
  57. package/dist/components/Message/utils.d.ts +1 -0
  58. package/dist/components/Message/utils.d.ts.map +1 -1
  59. package/dist/components/Message/utils.js +8 -0
  60. package/dist/components/MessageInput/DefaultTriggerProvider.d.ts +2 -3
  61. package/dist/components/MessageInput/DefaultTriggerProvider.d.ts.map +1 -1
  62. package/dist/components/MessageInput/DefaultTriggerProvider.js +1 -1
  63. package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
  64. package/dist/components/MessageInput/EditMessageForm.js +4 -7
  65. package/dist/components/MessageInput/MessageInput.d.ts +17 -5
  66. package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
  67. package/dist/components/MessageInput/MessageInput.js +3 -1
  68. package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
  69. package/dist/components/MessageInput/MessageInputFlat.js +12 -27
  70. package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
  71. package/dist/components/MessageInput/MessageInputSmall.js +8 -11
  72. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  73. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -9
  74. package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts +2 -2
  75. package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts.map +1 -1
  76. package/dist/components/MessageInput/hooks/useEmojiTrigger.js +32 -12
  77. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +1 -19
  78. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
  79. package/dist/components/MessageInput/hooks/useMessageInputState.js +3 -15
  80. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
  81. package/dist/components/MessageInput/hooks/useMessageInputText.js +1 -2
  82. package/dist/components/MessageInput/index.d.ts +0 -1
  83. package/dist/components/MessageInput/index.d.ts.map +1 -1
  84. package/dist/components/MessageInput/index.js +0 -1
  85. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  86. package/dist/components/MessageList/MessageList.js +1 -3
  87. package/dist/components/MessageList/VirtualizedMessageList.d.ts +36 -6
  88. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  89. package/dist/components/MessageList/VirtualizedMessageList.js +39 -122
  90. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +23 -0
  91. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -0
  92. package/dist/components/MessageList/VirtualizedMessageListComponents.js +70 -0
  93. package/dist/components/MessageList/hooks/MessageList/index.d.ts +5 -0
  94. package/dist/components/MessageList/hooks/MessageList/index.d.ts.map +1 -0
  95. package/dist/components/MessageList/hooks/MessageList/index.js +4 -0
  96. package/dist/components/MessageList/hooks/{useEnrichedMessages.d.ts → MessageList/useEnrichedMessages.d.ts} +3 -3
  97. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -0
  98. package/dist/components/MessageList/hooks/{useEnrichedMessages.js → MessageList/useEnrichedMessages.js} +3 -3
  99. package/dist/components/MessageList/hooks/{useMessageListElements.d.ts → MessageList/useMessageListElements.d.ts} +4 -4
  100. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -0
  101. package/dist/components/MessageList/hooks/{useMessageListElements.js → MessageList/useMessageListElements.js} +9 -9
  102. package/dist/components/MessageList/hooks/{useMessageListScrollManager.d.ts → MessageList/useMessageListScrollManager.d.ts} +2 -2
  103. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -0
  104. package/dist/components/MessageList/hooks/{useMessageListScrollManager.js → MessageList/useMessageListScrollManager.js} +1 -1
  105. package/dist/components/MessageList/hooks/{useScrollLocationLogic.d.ts → MessageList/useScrollLocationLogic.d.ts} +2 -2
  106. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -0
  107. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts +7 -0
  108. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts.map +1 -0
  109. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.js +6 -0
  110. package/dist/components/MessageList/hooks/{useGiphyPreview.d.ts → VirtualizedMessageList/useGiphyPreview.d.ts} +2 -2
  111. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -0
  112. package/dist/components/MessageList/hooks/{useGiphyPreview.js → VirtualizedMessageList/useGiphyPreview.js} +1 -1
  113. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts +10 -0
  114. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts.map +1 -0
  115. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js +20 -0
  116. package/dist/components/MessageList/hooks/{useNewMessageNotification.d.ts → VirtualizedMessageList/useNewMessageNotification.d.ts} +2 -2
  117. package/dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts.map +1 -0
  118. package/dist/components/MessageList/hooks/{usePrependMessagesCount.d.ts → VirtualizedMessageList/usePrependMessagesCount.d.ts} +2 -2
  119. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -0
  120. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts +12 -0
  121. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -0
  122. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +28 -0
  123. package/dist/components/MessageList/hooks/{useShouldForceScrollToBottom.d.ts → VirtualizedMessageList/useShouldForceScrollToBottom.d.ts} +2 -2
  124. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts.map +1 -0
  125. package/dist/components/MessageList/hooks/index.d.ts +7 -7
  126. package/dist/components/MessageList/hooks/index.d.ts.map +1 -1
  127. package/dist/components/MessageList/hooks/index.js +7 -7
  128. package/dist/components/Reactions/hooks/useProcessReactions.d.ts +3 -1
  129. package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
  130. package/dist/context/ChannelStateContext.d.ts +1 -1
  131. package/dist/context/ChatContext.d.ts +1 -1
  132. package/dist/context/ComponentContext.d.ts +3 -2
  133. package/dist/context/ComponentContext.d.ts.map +1 -1
  134. package/dist/context/MessageContext.d.ts +1 -1
  135. package/dist/context/MessageContext.d.ts.map +1 -1
  136. package/dist/context/MessageInputContext.d.ts +1 -7
  137. package/dist/context/MessageInputContext.d.ts.map +1 -1
  138. package/dist/context/index.d.ts +0 -1
  139. package/dist/context/index.d.ts.map +1 -1
  140. package/dist/context/index.js +0 -1
  141. package/dist/i18n/Streami18n.d.ts +0 -1
  142. package/dist/i18n/Streami18n.d.ts.map +1 -1
  143. package/dist/i18n/de.json +0 -1
  144. package/dist/i18n/en.json +0 -1
  145. package/dist/i18n/es.json +0 -1
  146. package/dist/i18n/fr.json +0 -1
  147. package/dist/i18n/hi.json +0 -1
  148. package/dist/i18n/it.json +0 -1
  149. package/dist/i18n/ja.json +0 -1
  150. package/dist/i18n/ko.json +0 -1
  151. package/dist/i18n/nl.json +0 -1
  152. package/dist/i18n/pt.json +0 -1
  153. package/dist/i18n/ru.json +0 -1
  154. package/dist/i18n/tr.json +0 -1
  155. package/dist/icons-0801b1e9.js +3133 -0
  156. package/dist/index.cjs.js +1470 -4591
  157. package/dist/index.d.ts +0 -1
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +0 -2
  160. package/dist/index_UMD.d.ts +7 -0
  161. package/dist/index_UMD.d.ts.map +1 -0
  162. package/dist/index_UMD.js +8 -0
  163. package/dist/utils/generateRandomId.d.ts +6 -0
  164. package/dist/utils/generateRandomId.d.ts.map +1 -0
  165. package/dist/utils/generateRandomId.js +5 -0
  166. package/dist/utils/getWholeChar.d.ts +2 -0
  167. package/dist/utils/getWholeChar.d.ts.map +1 -0
  168. package/dist/utils/getWholeChar.js +26 -0
  169. package/dist/utils/index.d.ts +4 -0
  170. package/dist/utils/index.d.ts.map +1 -0
  171. package/dist/utils/index.js +3 -0
  172. package/dist/version.d.ts +1 -1
  173. package/dist/version.js +1 -1
  174. package/package.json +35 -8
  175. package/dist/components/Channel/emojiData.d.ts +0 -15
  176. package/dist/components/Channel/emojiData.d.ts.map +0 -1
  177. package/dist/components/Channel/emojiData.js +0 -23
  178. package/dist/components/MessageInput/EmojiPicker.d.ts +0 -6
  179. package/dist/components/MessageInput/EmojiPicker.d.ts.map +0 -1
  180. package/dist/components/MessageInput/EmojiPicker.js +0 -23
  181. package/dist/components/MessageInput/hooks/useEmojiIndex.d.ts +0 -3
  182. package/dist/components/MessageInput/hooks/useEmojiIndex.d.ts.map +0 -1
  183. package/dist/components/MessageInput/hooks/useEmojiIndex.js +0 -13
  184. package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts +0 -11
  185. package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts.map +0 -1
  186. package/dist/components/MessageInput/hooks/useEmojiPicker.js +0 -68
  187. package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts.map +0 -1
  188. package/dist/components/MessageList/hooks/useGiphyPreview.d.ts.map +0 -1
  189. package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +0 -1
  190. package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts.map +0 -1
  191. package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts.map +0 -1
  192. package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts.map +0 -1
  193. package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +0 -1
  194. package/dist/components/MessageList/hooks/useShouldForceScrollToBottom.d.ts.map +0 -1
  195. package/dist/context/DefaultEmoji.d.ts +0 -3
  196. package/dist/context/DefaultEmoji.d.ts.map +0 -1
  197. package/dist/context/DefaultEmoji.js +0 -3
  198. package/dist/context/DefaultEmojiPicker.d.ts +0 -3
  199. package/dist/context/DefaultEmojiPicker.d.ts.map +0 -1
  200. package/dist/context/DefaultEmojiPicker.js +0 -3
  201. package/dist/context/EmojiContext.d.ts +0 -48
  202. package/dist/context/EmojiContext.d.ts.map +0 -1
  203. package/dist/context/EmojiContext.js +0 -39
  204. package/dist/index.cjs.js.map +0 -1
  205. package/dist/stream-emoji.json +0 -1
  206. package/dist/utils.d.ts +0 -42
  207. package/dist/utils.d.ts.map +0 -1
  208. package/dist/utils.js +0 -253
  209. /package/dist/components/MessageList/hooks/{useScrollLocationLogic.js → MessageList/useScrollLocationLogic.js} +0 -0
  210. /package/dist/components/MessageList/hooks/{useNewMessageNotification.js → VirtualizedMessageList/useNewMessageNotification.js} +0 -0
  211. /package/dist/components/MessageList/hooks/{usePrependMessagesCount.js → VirtualizedMessageList/usePrependMessagesCount.js} +0 -0
  212. /package/dist/components/MessageList/hooks/{useShouldForceScrollToBottom.js → VirtualizedMessageList/useShouldForceScrollToBottom.js} +0 -0
@@ -0,0 +1,89 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var icons = require('../../icons-0801b1e9.js');
6
+ var React = require('react');
7
+ var data = require('@emoji-mart/data');
8
+ var Picker = require('@emoji-mart/react');
9
+ require('react-dom');
10
+ require('react-fast-compare');
11
+ require('crypto');
12
+ require('dayjs');
13
+ require('dayjs/plugin/calendar');
14
+ require('dayjs/plugin/localizedFormat');
15
+ require('i18next');
16
+ require('dayjs/plugin/updateLocale');
17
+ require('dayjs/plugin/localeData');
18
+ require('dayjs/plugin/relativeTime');
19
+ require('dayjs/plugin/utc');
20
+ require('dayjs/plugin/timezone');
21
+ require('dayjs/locale/de');
22
+ require('dayjs/locale/es');
23
+ require('dayjs/locale/fr');
24
+ require('dayjs/locale/hi');
25
+ require('dayjs/locale/it');
26
+ require('dayjs/locale/ja');
27
+ require('dayjs/locale/ko');
28
+ require('dayjs/locale/nl');
29
+ require('dayjs/locale/pt');
30
+ require('dayjs/locale/ru');
31
+ require('dayjs/locale/tr');
32
+ require('dayjs/locale/en');
33
+
34
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
35
+
36
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
37
+ var data__default = /*#__PURE__*/_interopDefaultLegacy(data);
38
+ var Picker__default = /*#__PURE__*/_interopDefaultLegacy(Picker);
39
+
40
+ var classNames = {
41
+ 1: {
42
+ buttonClassName: 'str-chat__input-flat-emojiselect',
43
+ emojiPickerContainerClassName: undefined,
44
+ wrapperClassName: 'str-chat__emojiselect-wrapper',
45
+ },
46
+ 2: {
47
+ buttonClassName: 'str-chat__emoji-picker-button',
48
+ emojiPickerContainerClassName: 'str-chat__message-textarea-emoji-picker-container',
49
+ wrapperClassName: 'str-chat__message-textarea-emoji-picker',
50
+ },
51
+ };
52
+ var EmojiPicker = function (props) {
53
+ var _a, _b, _c;
54
+ var themeVersion = icons.useChatContext('EmojiPicker').themeVersion;
55
+ var t = icons.useTranslationContext('EmojiPicker').t;
56
+ var _d = icons.useMessageInputContext('EmojiPicker'), insertText = _d.insertText, textareaRef = _d.textareaRef;
57
+ var _e = React.useState(false), displayPicker = _e[0], setDisplayPicker = _e[1];
58
+ var _f = React.useState(null), referenceElement = _f[0], setReferenceElement = _f[1];
59
+ var _g = React.useState(null), popperElement = _g[0], setPopperElement = _g[1];
60
+ var _h = icons.usePopper(referenceElement, popperElement, {
61
+ placement: themeVersion === '2' ? 'top-end' : 'top-start',
62
+ }), attributes = _h.attributes, styles = _h.styles;
63
+ var _j = classNames[themeVersion], buttonClassName = _j.buttonClassName, emojiPickerContainerClassName = _j.emojiPickerContainerClassName, wrapperClassName = _j.wrapperClassName;
64
+ var _k = props.ButtonIconComponent, ButtonIconComponent = _k === void 0 ? themeVersion === '2' ? icons.EmojiPickerIcon : icons.EmojiIconLarge : _k;
65
+ React.useEffect(function () {
66
+ if (!popperElement || !referenceElement)
67
+ return;
68
+ var handlePointerDown = function (e) {
69
+ var target = e.target;
70
+ if (popperElement.contains(target) || referenceElement.contains(target))
71
+ return;
72
+ setDisplayPicker(false);
73
+ };
74
+ window.addEventListener('pointerdown', handlePointerDown);
75
+ return function () { return window.removeEventListener('pointerdown', handlePointerDown); };
76
+ }, [referenceElement, popperElement]);
77
+ return (React__default["default"].createElement("div", { className: (_a = props.wrapperClassName) !== null && _a !== void 0 ? _a : wrapperClassName },
78
+ displayPicker && (React__default["default"].createElement("div", icons.__assign({ className: (_b = props.emojiPickerContainerClassName) !== null && _b !== void 0 ? _b : emojiPickerContainerClassName, style: styles.popper }, attributes.popper, { ref: setPopperElement }),
79
+ React__default["default"].createElement(Picker__default["default"], { data: data__default["default"], onEmojiSelect: function (e) {
80
+ var _a;
81
+ // @ts-ignore emoji-mart is missing types
82
+ insertText(e.native);
83
+ (_a = textareaRef.current) === null || _a === void 0 ? void 0 : _a.focus();
84
+ } }))),
85
+ themeVersion === '1' && (React__default["default"].createElement(icons.Tooltip, null, displayPicker ? t('Close emoji picker') : t('Open emoji picker'))),
86
+ React__default["default"].createElement("button", { "aria-label": 'Emoji picker', className: (_c = props.buttonClassName) !== null && _c !== void 0 ? _c : buttonClassName, onClick: function () { return setDisplayPicker(function (cv) { return !cv; }); }, ref: setReferenceElement, type: 'button' }, ButtonIconComponent && React__default["default"].createElement(ButtonIconComponent, null))));
87
+ };
88
+
89
+ exports.EmojiPicker = EmojiPicker;
@@ -0,0 +1,2 @@
1
+ export * from './EmojiPicker';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Emojis/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './EmojiPicker';
@@ -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":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAElF,oBAAY,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1F,oBAAY,YAAY,CACtB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,CAAC,SAAS,aAAa,GAAG,aAAa,IACrC;IACF,yBAAyB;IACzB,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC3C,wKAAwK;IACxK,2BAA2B,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IACvE,kMAAkM;IAClM,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,gGAAgG;IAChG,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,sBAAsB,CAAC,CAAC;IACvF,mFAAmF;IACnF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,4HAA4H;IAC5H,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6HAA6H;IAC7H,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qIAAqI;IACrI,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACpC,sGAAsG;IACtG,iCAAiC,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IAC3F,oGAAoG;IACpG,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IACzF,uGAAuG;IACvG,iCAAiC,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IAC3F,iGAAiG;IACjG,4BAA4B,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IAClF,oGAAoG;IACpG,8BAA8B,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IACpF,mGAAmG;IACnG,8BAA8B,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IACxF,4FAA4F;IAC5F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,4KAA4K;IAC5K,OAAO,CAAC,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/D,mKAAmK;IACnK,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,sDAAsD;IACtD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,4JAA4J;IAC5J,eAAe,CAAC,EAAE,yBAAyB,CAAC,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACnF,4JAA4J;IAC5J,eAAe,CAAC,EAAE,yBAAyB,CAAC,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACnF,kDAAkD;IAClD,WAAW,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACnD,kDAAkD;IAClD,WAAW,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACnD,0JAA0J;IAC1J,UAAU,CAAC,EAAE,yBAAyB,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,CAAC;IACzE,qHAAqH;IACrH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kDAAkD;IAClD,MAAM,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC5C,4KAA4K;IAC5K,UAAU,CAAC,EAAE,CACX,IAAI,CAAC,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,EAAE,EACpD,OAAO,CAAC,EAAE,iBAAiB,KACxB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,iKAAiK;IACjK,gBAAgB,CAAC,EAAE,yBAAyB,CAAC,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACrF,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,oBAAY,uBAAuB,CACjC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAErD,oBAAY,iBAAiB,CAC3B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC,CAAC,EAAE,SAAS,CAAC;CACf,CAAC"}
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,5 +1,4 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
- import type { EmojiData } from 'emoji-mart';
3
2
  import type { SuggestionCommand, SuggestionUser } from '../ChatAutoComplete/ChatAutoComplete';
4
3
  import type { CommandItemProps } from '../CommandItem/CommandItem';
5
4
  import type { EmoticonItemProps } from '../EmoticonItem/EmoticonItem';
@@ -14,11 +13,11 @@ export declare type AutocompleteMinimalData = {
14
13
  name: string;
15
14
  });
16
15
  export declare type CommandTriggerSetting<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = TriggerSetting<CommandItemProps, SuggestionCommand<StreamChatGenerics>>;
17
- export declare type EmojiTriggerSetting = TriggerSetting<EmoticonItemProps, EmojiData>;
16
+ export declare type EmojiTriggerSetting = TriggerSetting<EmoticonItemProps>;
18
17
  export declare type UserTriggerSetting<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = TriggerSetting<UserItemProps, SuggestionUser<StreamChatGenerics>>;
19
18
  export declare type TriggerSetting<T extends UnknownType = UnknownType, U = UnknownType> = {
20
19
  component: string | React.ComponentType<T>;
21
- dataProvider: (query: string, text: string, onReady: (data: (U & AutocompleteMinimalData)[], token: string) => void) => U[] | Promise<void> | void;
20
+ dataProvider: (query: string, text: string, onReady: (data: (U & AutocompleteMinimalData)[], token: string) => void) => U[] | PromiseLike<void> | void;
22
21
  output: (entity: U) => {
23
22
  caretPosition: 'start' | 'end' | 'next' | number;
24
23
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultTriggerProvider.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/DefaultTriggerProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAWjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE/F,oBAAY,uBAAuB,GAAG;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExC,oBAAY,qBAAqB,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,cAAc,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAE5E,oBAAY,mBAAmB,GAAG,cAAc,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;AAE/E,oBAAY,kBAAkB,CAC5B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEtE,oBAAY,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,CAAC,GAAG,WAAW,IAAI;IACjF,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3C,YAAY,EAAE,CACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,KACpE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,CACN,MAAM,EAAE,CAAC,KAEP;QACE,aAAa,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;QACjD,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GACD,MAAM,GACN,IAAI,CAAC;IACT,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;CAC9B,CAAC;AAEF,oBAAY,eAAe,CACzB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,CAAC,SAAS,aAAa,GAAG,aAAa,IAErC;KACG,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;CAC3E,GACD;IACE,GAAG,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAC/C,GAAG,EAAE,mBAAmB,CAAC;IACzB,GAAG,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;CAC7C,CAAC;AAEN,eAAO,MAAM,sBAAsB,6IAKhC,kBAAkB,OAAO,MAAM,EAAE,OAAO,CAAC,CAAC,gBAqB5C,CAAC"}
1
+ {"version":3,"file":"DefaultTriggerProvider.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/DefaultTriggerProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAWjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE/F,oBAAY,uBAAuB,GAAG;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExC,oBAAY,qBAAqB,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,cAAc,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAE5E,oBAAY,mBAAmB,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;AAEpE,oBAAY,kBAAkB,CAC5B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEtE,oBAAY,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,CAAC,GAAG,WAAW,IAAI;IACjF,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3C,YAAY,EAAE,CACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,KACpE,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpC,MAAM,EAAE,CACN,MAAM,EAAE,CAAC,KAEP;QACE,aAAa,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;QACjD,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GACD,MAAM,GACN,IAAI,CAAC;IACT,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;CAC9B,CAAC;AAEF,oBAAY,eAAe,CACzB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,CAAC,SAAS,aAAa,GAAG,aAAa,IAErC;KACG,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;CAC3E,GACD;IACE,GAAG,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAC/C,GAAG,EAAE,mBAAmB,CAAC;IACzB,GAAG,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;CAC7C,CAAC;AAEN,eAAO,MAAM,sBAAsB,6IAKhC,kBAAkB,OAAO,MAAM,EAAE,OAAO,CAAC,CAAC,gBAqB5C,CAAC"}
@@ -9,7 +9,7 @@ export var DefaultTriggerProvider = function (_a) {
9
9
  var currentValue = useMessageInputContext('DefaultTriggerProvider');
10
10
  var defaultAutocompleteTriggers = {
11
11
  '/': useCommandTrigger(),
12
- ':': useEmojiTrigger(currentValue.emojiIndex),
12
+ ':': useEmojiTrigger(currentValue.emojiSearchIndex),
13
13
  '@': useUserTrigger({
14
14
  disableMentions: currentValue.disableMentions,
15
15
  mentionAllAppUsers: currentValue.mentionAllAppUsers,