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.
- package/dist/browser.full-bundle.js +9308 -12495
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +5 -5
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/AutoCompleteTextarea/Item.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Item.js +4 -3
- package/dist/components/AutoCompleteTextarea/List.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/List.js +10 -8
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.js +34 -24
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.js +1 -1
- package/dist/components/Channel/Channel.d.ts +4 -11
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +13 -28
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +8 -8
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
- package/dist/components/ChatAutoComplete/ChatAutoComplete.js +24 -14
- package/dist/components/DateSeparator/DateSeparator.js +1 -1
- package/dist/components/Emojis/EmojiPicker.d.ts +10 -0
- package/dist/components/Emojis/EmojiPicker.d.ts.map +1 -0
- package/dist/components/Emojis/EmojiPicker.js +57 -0
- package/dist/components/Emojis/index.cjs.js +89 -0
- package/dist/components/Emojis/index.d.ts +2 -0
- package/dist/components/Emojis/index.d.ts.map +1 -0
- package/dist/components/Emojis/index.js +1 -0
- package/dist/components/EventComponent/EventComponent.js +1 -1
- package/dist/components/Message/FixedHeightMessage.js +1 -1
- package/dist/components/Message/MessageText.js +2 -2
- package/dist/components/Message/index.d.ts +1 -0
- package/dist/components/Message/index.d.ts.map +1 -1
- package/dist/components/Message/index.js +1 -0
- package/dist/components/Message/renderText/Anchor.d.ts +4 -0
- package/dist/components/Message/renderText/Anchor.d.ts.map +1 -0
- package/dist/components/Message/renderText/Anchor.js +10 -0
- package/dist/components/Message/renderText/Emoji.d.ts +3 -0
- package/dist/components/Message/renderText/Emoji.d.ts.map +1 -0
- package/dist/components/Message/renderText/Emoji.js +5 -0
- package/dist/components/Message/renderText/Mention.d.ts +18 -0
- package/dist/components/Message/renderText/Mention.d.ts.map +1 -0
- package/dist/components/Message/renderText/Mention.js +5 -0
- package/dist/components/Message/renderText/index.d.ts +5 -0
- package/dist/components/Message/renderText/index.d.ts.map +1 -0
- package/dist/components/Message/renderText/index.js +3 -0
- package/dist/components/Message/renderText/regex.d.ts +5 -0
- package/dist/components/Message/renderText/regex.d.ts.map +1 -0
- package/dist/components/Message/renderText/regex.js +21 -0
- package/dist/components/Message/renderText/rehypePlugins.d.ts +7 -0
- package/dist/components/Message/renderText/rehypePlugins.d.ts.map +1 -0
- package/dist/components/Message/renderText/rehypePlugins.js +60 -0
- package/dist/components/Message/renderText/renderText.d.ts +21 -0
- package/dist/components/Message/renderText/renderText.d.ts.map +1 -0
- package/dist/components/Message/renderText/renderText.js +126 -0
- package/dist/components/Message/types.d.ts +1 -1
- package/dist/components/Message/types.d.ts.map +1 -1
- package/dist/components/Message/utils.d.ts +1 -0
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +8 -0
- package/dist/components/MessageInput/DefaultTriggerProvider.d.ts +2 -3
- package/dist/components/MessageInput/DefaultTriggerProvider.d.ts.map +1 -1
- package/dist/components/MessageInput/DefaultTriggerProvider.js +1 -1
- package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
- package/dist/components/MessageInput/EditMessageForm.js +4 -7
- package/dist/components/MessageInput/MessageInput.d.ts +17 -5
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInput.js +3 -1
- package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.js +12 -27
- package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputSmall.js +8 -11
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -9
- package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts +2 -2
- package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useEmojiTrigger.js +32 -12
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +1 -19
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.js +3 -15
- package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputText.js +1 -2
- package/dist/components/MessageInput/index.d.ts +0 -1
- package/dist/components/MessageInput/index.d.ts.map +1 -1
- package/dist/components/MessageInput/index.js +0 -1
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +1 -3
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +36 -6
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +39 -122
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +23 -0
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -0
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +70 -0
- package/dist/components/MessageList/hooks/MessageList/index.d.ts +5 -0
- package/dist/components/MessageList/hooks/MessageList/index.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/MessageList/index.js +4 -0
- package/dist/components/MessageList/hooks/{useEnrichedMessages.d.ts → MessageList/useEnrichedMessages.d.ts} +3 -3
- package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/{useEnrichedMessages.js → MessageList/useEnrichedMessages.js} +3 -3
- package/dist/components/MessageList/hooks/{useMessageListElements.d.ts → MessageList/useMessageListElements.d.ts} +4 -4
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/{useMessageListElements.js → MessageList/useMessageListElements.js} +9 -9
- package/dist/components/MessageList/hooks/{useMessageListScrollManager.d.ts → MessageList/useMessageListScrollManager.d.ts} +2 -2
- package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/{useMessageListScrollManager.js → MessageList/useMessageListScrollManager.js} +1 -1
- package/dist/components/MessageList/hooks/{useScrollLocationLogic.d.ts → MessageList/useScrollLocationLogic.d.ts} +2 -2
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts +7 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.js +6 -0
- package/dist/components/MessageList/hooks/{useGiphyPreview.d.ts → VirtualizedMessageList/useGiphyPreview.d.ts} +2 -2
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/{useGiphyPreview.js → VirtualizedMessageList/useGiphyPreview.js} +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts +10 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js +20 -0
- package/dist/components/MessageList/hooks/{useNewMessageNotification.d.ts → VirtualizedMessageList/useNewMessageNotification.d.ts} +2 -2
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/{usePrependMessagesCount.d.ts → VirtualizedMessageList/usePrependMessagesCount.d.ts} +2 -2
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts +12 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +28 -0
- package/dist/components/MessageList/hooks/{useShouldForceScrollToBottom.d.ts → VirtualizedMessageList/useShouldForceScrollToBottom.d.ts} +2 -2
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/index.d.ts +7 -7
- package/dist/components/MessageList/hooks/index.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/index.js +7 -7
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts +3 -1
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
- package/dist/context/ChannelStateContext.d.ts +1 -1
- package/dist/context/ChatContext.d.ts +1 -1
- package/dist/context/ComponentContext.d.ts +3 -2
- package/dist/context/ComponentContext.d.ts.map +1 -1
- package/dist/context/MessageContext.d.ts +1 -1
- package/dist/context/MessageContext.d.ts.map +1 -1
- package/dist/context/MessageInputContext.d.ts +1 -7
- package/dist/context/MessageInputContext.d.ts.map +1 -1
- package/dist/context/index.d.ts +0 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +0 -1
- package/dist/i18n/Streami18n.d.ts +0 -1
- package/dist/i18n/Streami18n.d.ts.map +1 -1
- package/dist/i18n/de.json +0 -1
- package/dist/i18n/en.json +0 -1
- package/dist/i18n/es.json +0 -1
- package/dist/i18n/fr.json +0 -1
- package/dist/i18n/hi.json +0 -1
- package/dist/i18n/it.json +0 -1
- package/dist/i18n/ja.json +0 -1
- package/dist/i18n/ko.json +0 -1
- package/dist/i18n/nl.json +0 -1
- package/dist/i18n/pt.json +0 -1
- package/dist/i18n/ru.json +0 -1
- package/dist/i18n/tr.json +0 -1
- package/dist/icons-0801b1e9.js +3133 -0
- package/dist/index.cjs.js +1470 -4591
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index_UMD.d.ts +7 -0
- package/dist/index_UMD.d.ts.map +1 -0
- package/dist/index_UMD.js +8 -0
- package/dist/utils/generateRandomId.d.ts +6 -0
- package/dist/utils/generateRandomId.d.ts.map +1 -0
- package/dist/utils/generateRandomId.js +5 -0
- package/dist/utils/getWholeChar.d.ts +2 -0
- package/dist/utils/getWholeChar.d.ts.map +1 -0
- package/dist/utils/getWholeChar.js +26 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +35 -8
- package/dist/components/Channel/emojiData.d.ts +0 -15
- package/dist/components/Channel/emojiData.d.ts.map +0 -1
- package/dist/components/Channel/emojiData.js +0 -23
- package/dist/components/MessageInput/EmojiPicker.d.ts +0 -6
- package/dist/components/MessageInput/EmojiPicker.d.ts.map +0 -1
- package/dist/components/MessageInput/EmojiPicker.js +0 -23
- package/dist/components/MessageInput/hooks/useEmojiIndex.d.ts +0 -3
- package/dist/components/MessageInput/hooks/useEmojiIndex.d.ts.map +0 -1
- package/dist/components/MessageInput/hooks/useEmojiIndex.js +0 -13
- package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts +0 -11
- package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts.map +0 -1
- package/dist/components/MessageInput/hooks/useEmojiPicker.js +0 -68
- package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useGiphyPreview.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useShouldForceScrollToBottom.d.ts.map +0 -1
- package/dist/context/DefaultEmoji.d.ts +0 -3
- package/dist/context/DefaultEmoji.d.ts.map +0 -1
- package/dist/context/DefaultEmoji.js +0 -3
- package/dist/context/DefaultEmojiPicker.d.ts +0 -3
- package/dist/context/DefaultEmojiPicker.d.ts.map +0 -1
- package/dist/context/DefaultEmojiPicker.js +0 -3
- package/dist/context/EmojiContext.d.ts +0 -48
- package/dist/context/EmojiContext.d.ts.map +0 -1
- package/dist/context/EmojiContext.js +0 -39
- package/dist/index.cjs.js.map +0 -1
- package/dist/stream-emoji.json +0 -1
- package/dist/utils.d.ts +0 -42
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -253
- /package/dist/components/MessageList/hooks/{useScrollLocationLogic.js → MessageList/useScrollLocationLogic.js} +0 -0
- /package/dist/components/MessageList/hooks/{useNewMessageNotification.js → VirtualizedMessageList/useNewMessageNotification.js} +0 -0
- /package/dist/components/MessageList/hooks/{usePrependMessagesCount.js → VirtualizedMessageList/usePrependMessagesCount.js} +0 -0
- /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 @@
|
|
|
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 '
|
|
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
|
|
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"}
|
|
@@ -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 @@
|
|
|
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,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
|
+
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,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 '
|
|
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;
|
|
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":"
|
|
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
|
|
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[] |
|
|
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,
|
|
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.
|
|
12
|
+
':': useEmojiTrigger(currentValue.emojiSearchIndex),
|
|
13
13
|
'@': useUserTrigger({
|
|
14
14
|
disableMentions: currentValue.disableMentions,
|
|
15
15
|
mentionAllAppUsers: currentValue.mentionAllAppUsers,
|