stream-chat-react 6.12.2 → 6.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.full-bundle.js +1780 -18800
- 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/Attachment/Audio.js +2 -2
- package/dist/components/AutoCompleteTextarea/Item.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Item.js +1 -1
- package/dist/components/AutoCompleteTextarea/List.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/List.js +0 -1
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts +7 -6
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.js +9 -22
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +10 -2
- package/dist/components/ChannelHeader/ChannelHeader.js +1 -1
- package/dist/components/ChannelList/ChannelListMessenger.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelListMessenger.js +1 -1
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +13 -1
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
- package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
- package/dist/components/ChannelSearch/SearchResults.js +6 -6
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +3 -1
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
- package/dist/components/ChatAutoComplete/ChatAutoComplete.js +16 -14
- package/dist/components/ChatDown/ChatDown.d.ts.map +1 -1
- package/dist/components/ChatDown/ChatDown.js +2 -2
- package/dist/components/EmptyStateIndicator/EmptyStateIndicator.js +1 -1
- package/dist/components/Gallery/Gallery.d.ts.map +1 -1
- package/dist/components/Gallery/Gallery.js +5 -3
- package/dist/components/Gallery/Image.d.ts.map +1 -1
- package/dist/components/Gallery/Image.js +4 -2
- package/dist/components/Gallery/ModalWrapper.d.ts +3 -6
- package/dist/components/Gallery/ModalWrapper.d.ts.map +1 -1
- package/dist/components/Gallery/ModalWrapper.js +4 -7
- package/dist/components/Gallery/index.d.ts +0 -1
- package/dist/components/Gallery/index.d.ts.map +1 -1
- package/dist/components/Gallery/index.js +0 -1
- package/dist/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
- package/dist/components/LoadMore/LoadMoreButton.js +1 -1
- package/dist/components/Message/MessageOptions.d.ts.map +1 -1
- package/dist/components/Message/MessageOptions.js +4 -4
- package/dist/components/Message/MessageSimple.d.ts.map +1 -1
- package/dist/components/Message/MessageSimple.js +2 -0
- package/dist/components/Message/hooks/useUserRole.js +1 -1
- package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActions.js +2 -1
- package/dist/components/MessageActions/MessageActionsBox.d.ts +1 -1
- package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActionsBox.js +12 -19
- package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
- package/dist/components/MessageInput/EditMessageForm.js +2 -2
- package/dist/components/MessageInput/MessageInput.d.ts +1 -1
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.js +4 -4
- package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputSmall.js +7 -5
- package/dist/components/MessageInput/QuotedMessagePreview.d.ts.map +1 -1
- package/dist/components/MessageInput/QuotedMessagePreview.js +4 -3
- package/dist/components/MessageInput/UploadsPreview.d.ts.map +1 -1
- package/dist/components/MessageInput/UploadsPreview.js +2 -1
- package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts +2 -2
- package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useEmojiPicker.js +2 -0
- package/dist/components/MessageInput/hooks/useMessageInputState.js +1 -1
- package/dist/components/MessageInput/hooks/utils.js +1 -1
- package/dist/components/MessageInput/icons.js +1 -1
- package/dist/components/MessageInput/index.d.ts +1 -0
- package/dist/components/MessageInput/index.d.ts.map +1 -1
- package/dist/components/MessageInput/index.js +1 -0
- package/dist/components/MessageList/CustomNotification.d.ts.map +1 -1
- package/dist/components/MessageList/CustomNotification.js +1 -1
- package/dist/components/MessageList/MessageNotification.d.ts.map +1 -1
- package/dist/components/MessageList/MessageNotification.js +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +2 -6
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +8 -4
- package/dist/components/Reactions/ReactionSelector.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionSelector.js +7 -6
- package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionsList.js +5 -4
- package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/SimpleReactionsList.js +1 -1
- package/dist/components/SafeAnchor/SafeAnchor.d.ts.map +1 -1
- package/dist/components/SafeAnchor/SafeAnchor.js +1 -1
- package/dist/components/Thread/Thread.js +1 -1
- package/dist/components/Window/Window.d.ts +1 -1
- package/dist/components/Window/Window.d.ts.map +1 -1
- package/dist/components/Window/Window.js +1 -4
- package/dist/css/index.css +1 -1
- package/dist/index.cjs.js +206 -200
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/ChannelSearch.scss +3 -0
- package/dist/scss/Gallery.scss +6 -0
- package/dist/scss/LoadMoreButton.scss +1 -0
- package/dist/scss/Message.scss +19 -0
- package/dist/scss/MessageActions.scss +9 -0
- package/dist/scss/MessageInput.scss +11 -0
- package/dist/scss/MessageInputFlat.scss +15 -0
- package/dist/scss/MessageTeam.scss +8 -0
- package/dist/scss/Modal.scss +4 -0
- package/dist/scss/ReactionList.scss +7 -0
- package/dist/scss/ReactionSelector.scss +7 -0
- package/dist/scss/SendButton.scss +5 -0
- package/dist/scss/SmallMessageInput.scss +12 -0
- package/dist/scss/Thread.scss +24 -0
- package/dist/scss/_base.scss +4 -12
- package/dist/scss/_variables.scss +4 -1
- package/dist/scss/index.scss +1 -1
- package/dist/scss/vendor/react-file-utils.scss +2 -0
- package/dist/scss/vendor/react-image-gallery.scss +224 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +24 -3
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +8 -5
- package/dist/components/Gallery/ModalImage.d.ts +0 -9
- package/dist/components/Gallery/ModalImage.d.ts.map +0 -1
- package/dist/components/Gallery/ModalImage.js +0 -6
- package/dist/scss/ModalImage.scss +0 -11
package/dist/index.cjs.js
CHANGED
|
@@ -10,7 +10,7 @@ var calendar = require('dayjs/plugin/calendar');
|
|
|
10
10
|
var localizedFormat = require('dayjs/plugin/localizedFormat');
|
|
11
11
|
var prettybytes = require('pretty-bytes');
|
|
12
12
|
var reactFileUtils = require('react-file-utils');
|
|
13
|
-
var
|
|
13
|
+
var ImageGallery = require('react-image-gallery');
|
|
14
14
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
15
15
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
16
16
|
var emojiRegex = require('emoji-regex');
|
|
@@ -84,7 +84,7 @@ var Dayjs__default = /*#__PURE__*/_interopDefaultLegacy(Dayjs);
|
|
|
84
84
|
var calendar__default = /*#__PURE__*/_interopDefaultLegacy(calendar);
|
|
85
85
|
var localizedFormat__default = /*#__PURE__*/_interopDefaultLegacy(localizedFormat);
|
|
86
86
|
var prettybytes__default = /*#__PURE__*/_interopDefaultLegacy(prettybytes);
|
|
87
|
-
var
|
|
87
|
+
var ImageGallery__default = /*#__PURE__*/_interopDefaultLegacy(ImageGallery);
|
|
88
88
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
89
89
|
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
90
90
|
var emojiRegex__default = /*#__PURE__*/_interopDefaultLegacy(emojiRegex);
|
|
@@ -251,9 +251,9 @@ var UnMemoizedAudio = function (props) {
|
|
|
251
251
|
React__default['default'].createElement("audio", { ref: audioRef },
|
|
252
252
|
React__default['default'].createElement("source", { "data-testid": 'audio-source', src: asset_url, type: 'audio/mp3' })),
|
|
253
253
|
React__default['default'].createElement("div", { className: 'str-chat__audio__image' },
|
|
254
|
-
React__default['default'].createElement("div", { className: 'str-chat__audio__image--overlay' }, !isPlaying ? (React__default['default'].createElement("
|
|
254
|
+
React__default['default'].createElement("div", { className: 'str-chat__audio__image--overlay' }, !isPlaying ? (React__default['default'].createElement("button", { className: 'str-chat__audio__image--button', "data-testid": 'play-audio', onClick: function () { return setIsPlaying(true); } },
|
|
255
255
|
React__default['default'].createElement("svg", { height: '40', viewBox: '0 0 64 64', width: '40', xmlns: 'http://www.w3.org/2000/svg' },
|
|
256
|
-
React__default['default'].createElement("path", { d: 'M32 58c14.36 0 26-11.64 26-26S46.36 6 32 6 6 17.64 6 32s11.64 26 26 26zm0 6C14.327 64 0 49.673 0 32 0 14.327 14.327 0 32 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32zm13.237-28.412L26.135 45.625a3.27 3.27 0 0 1-4.426-1.4 3.319 3.319 0 0 1-.372-1.47L21 23.36c-.032-1.823 1.41-3.327 3.222-3.358a3.263 3.263 0 0 1 1.473.322l19.438 9.36a3.311 3.311 0 0 1 .103 5.905z', fillRule: 'nonzero' })))) : (React__default['default'].createElement("
|
|
256
|
+
React__default['default'].createElement("path", { d: 'M32 58c14.36 0 26-11.64 26-26S46.36 6 32 6 6 17.64 6 32s11.64 26 26 26zm0 6C14.327 64 0 49.673 0 32 0 14.327 14.327 0 32 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32zm13.237-28.412L26.135 45.625a3.27 3.27 0 0 1-4.426-1.4 3.319 3.319 0 0 1-.372-1.47L21 23.36c-.032-1.823 1.41-3.327 3.222-3.358a3.263 3.263 0 0 1 1.473.322l19.438 9.36a3.311 3.311 0 0 1 .103 5.905z', fillRule: 'nonzero' })))) : (React__default['default'].createElement("button", { className: 'str-chat__audio__image--button', "data-testid": 'pause-audio', onClick: function () { return setIsPlaying(false); } },
|
|
257
257
|
React__default['default'].createElement("svg", { height: '40', viewBox: '0 0 64 64', width: '40', xmlns: 'http://www.w3.org/2000/svg' },
|
|
258
258
|
React__default['default'].createElement("path", { d: 'M32 58.215c14.478 0 26.215-11.737 26.215-26.215S46.478 5.785 32 5.785 5.785 17.522 5.785 32 17.522 58.215 32 58.215zM32 64C14.327 64 0 49.673 0 32 0 14.327 14.327 0 32 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32zm-7.412-45.56h2.892a2.17 2.17 0 0 1 2.17 2.17v23.865a2.17 2.17 0 0 1-2.17 2.17h-2.892a2.17 2.17 0 0 1-2.17-2.17V20.61a2.17 2.17 0 0 1 2.17-2.17zm12.293 0h2.893a2.17 2.17 0 0 1 2.17 2.17v23.865a2.17 2.17 0 0 1-2.17 2.17h-2.893a2.17 2.17 0 0 1-2.17-2.17V20.61a2.17 2.17 0 0 1 2.17-2.17z', fillRule: 'nonzero' }))))),
|
|
259
259
|
image_url && React__default['default'].createElement("img", { alt: "" + description, src: image_url })),
|
|
@@ -274,7 +274,7 @@ var UnMemoizedSafeAnchor = function (props) {
|
|
|
274
274
|
if (!href)
|
|
275
275
|
return null;
|
|
276
276
|
var sanitized = sanitizeUrl.sanitizeUrl(href);
|
|
277
|
-
return (React__default['default'].createElement("a", { className: className, download: download, href: sanitized, rel: rel, target: target }, children));
|
|
277
|
+
return (React__default['default'].createElement("a", { "aria-label": 'Attachment', className: className, download: download, href: sanitized, rel: rel, target: target }, children));
|
|
278
278
|
};
|
|
279
279
|
var SafeAnchor = React__default['default'].memo(UnMemoizedSafeAnchor);
|
|
280
280
|
|
|
@@ -366,19 +366,46 @@ var UnMemoizedFileAttachment = function (props) {
|
|
|
366
366
|
};
|
|
367
367
|
var FileAttachment = React__default['default'].memo(UnMemoizedFileAttachment);
|
|
368
368
|
|
|
369
|
-
var
|
|
370
|
-
var
|
|
371
|
-
|
|
372
|
-
|
|
369
|
+
var Modal = function (props) {
|
|
370
|
+
var children = props.children, onClose = props.onClose, open = props.open;
|
|
371
|
+
var t = useTranslationContext('Modal').t;
|
|
372
|
+
var innerRef = React.useRef(null);
|
|
373
|
+
var closeRef = React.useRef(null);
|
|
374
|
+
var handleClick = function (event) {
|
|
375
|
+
var _a, _b;
|
|
376
|
+
if ((event.target instanceof HTMLDivElement &&
|
|
377
|
+
!((_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)) &&
|
|
378
|
+
onClose) ||
|
|
379
|
+
(event.target instanceof HTMLButtonElement &&
|
|
380
|
+
((_b = closeRef.current) === null || _b === void 0 ? void 0 : _b.contains(event.target)) &&
|
|
381
|
+
onClose)) {
|
|
382
|
+
onClose();
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
React.useEffect(function () {
|
|
386
|
+
if (!open)
|
|
387
|
+
return function () { return null; };
|
|
388
|
+
var handleEscKey = function (event) {
|
|
389
|
+
if (event instanceof KeyboardEvent && event.key === 'Escape' && onClose) {
|
|
390
|
+
onClose();
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
document.addEventListener('keypress', handleEscKey);
|
|
394
|
+
return function () { return document.removeEventListener('keypress', handleEscKey); };
|
|
395
|
+
}, [onClose, open]);
|
|
396
|
+
var openClasses = open ? 'str-chat__modal--open' : 'str-chat__modal--closed';
|
|
397
|
+
return (React__default['default'].createElement("div", { className: "str-chat__modal " + openClasses, onClick: handleClick },
|
|
398
|
+
React__default['default'].createElement("button", { className: 'str-chat__modal__close-button', ref: closeRef, title: 'Close' },
|
|
399
|
+
t('Close'),
|
|
400
|
+
React__default['default'].createElement("svg", { height: '10', width: '10', xmlns: 'http://www.w3.org/2000/svg' },
|
|
401
|
+
React__default['default'].createElement("path", { d: 'M9.916 1.027L8.973.084 5 4.058 1.027.084l-.943.943L4.058 5 .084 8.973l.943.943L5 5.942l3.973 3.974.943-.943L5.942 5z', fillRule: 'evenodd' }))),
|
|
402
|
+
React__default['default'].createElement("div", { className: 'str-chat__modal__inner', ref: innerRef }, children)));
|
|
373
403
|
};
|
|
374
404
|
|
|
375
405
|
var ModalComponent = function (props) {
|
|
376
406
|
var images = props.images, index = props.index, modalIsOpen = props.modalIsOpen, toggleModal = props.toggleModal;
|
|
377
|
-
return (React__default['default'].createElement(
|
|
378
|
-
React__default['default'].createElement(
|
|
379
|
-
// @ts-expect-error
|
|
380
|
-
View: ModalImage,
|
|
381
|
-
}, currentIndex: index, views: images }))) : null));
|
|
407
|
+
return (React__default['default'].createElement(Modal, { onClose: toggleModal, open: modalIsOpen },
|
|
408
|
+
React__default['default'].createElement(ImageGallery__default['default'], { items: images, showIndex: true, showPlayButton: false, showThumbnails: false, startIndex: index })));
|
|
382
409
|
};
|
|
383
410
|
|
|
384
411
|
var UnMemoizedGallery = function (props) {
|
|
@@ -397,14 +424,16 @@ var UnMemoizedGallery = function (props) {
|
|
|
397
424
|
};
|
|
398
425
|
var formattedArray = React.useMemo(function () {
|
|
399
426
|
return images.map(function (image) { return ({
|
|
427
|
+
original: image.image_url || image.thumb_url || '',
|
|
428
|
+
originalAlt: 'User uploaded content',
|
|
400
429
|
source: image.image_url || image.thumb_url || '',
|
|
401
430
|
}); });
|
|
402
431
|
}, [images]);
|
|
403
|
-
var renderImages = images.slice(0, 3).map(function (image, i) { return (React__default['default'].createElement("
|
|
404
|
-
React__default['default'].createElement("img", { src: image.image_url || image.thumb_url }))); });
|
|
432
|
+
var renderImages = images.slice(0, 3).map(function (image, i) { return (React__default['default'].createElement("button", { className: 'str-chat__gallery-image', "data-testid": 'gallery-image', key: "gallery-image-" + i, onClick: function () { return toggleModal(i); } },
|
|
433
|
+
React__default['default'].createElement("img", { alt: 'User uploaded content', src: image.image_url || image.thumb_url }))); });
|
|
405
434
|
return (React__default['default'].createElement("div", { className: "str-chat__gallery " + (images.length > 3 ? 'str-chat__gallery--square' : '') },
|
|
406
435
|
renderImages,
|
|
407
|
-
images.length > 3 && (React__default['default'].createElement("
|
|
436
|
+
images.length > 3 && (React__default['default'].createElement("button", { className: 'str-chat__gallery-placeholder', onClick: function () { return toggleModal(3); }, style: {
|
|
408
437
|
backgroundImage: "url(" + images[3].image_url + ")",
|
|
409
438
|
} },
|
|
410
439
|
React__default['default'].createElement("p", null, t('{{ imageCount }} more', {
|
|
@@ -424,10 +453,12 @@ var ImageComponent = function (props) {
|
|
|
424
453
|
var _a = React.useState(false), modalIsOpen = _a[0], setModalIsOpen = _a[1];
|
|
425
454
|
var fallback = props.fallback, image_url = props.image_url, thumb_url = props.thumb_url;
|
|
426
455
|
var imageSrc = sanitizeUrl.sanitizeUrl(image_url || thumb_url);
|
|
427
|
-
var formattedArray = [
|
|
456
|
+
var formattedArray = [
|
|
457
|
+
{ original: imageSrc, originalAlt: 'User uploaded content', source: imageSrc },
|
|
458
|
+
];
|
|
428
459
|
var toggleModal = function () { return setModalIsOpen(!modalIsOpen); };
|
|
429
460
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
430
|
-
React__default['default'].createElement("img", { alt: fallback, className: 'str-chat__message-attachment--img', "data-testid": 'image-test', onClick: toggleModal, src: imageSrc }),
|
|
461
|
+
React__default['default'].createElement("img", { alt: fallback, className: 'str-chat__message-attachment--img', "data-testid": 'image-test', onClick: toggleModal, onKeyPress: toggleModal, src: imageSrc, tabIndex: 0 }),
|
|
431
462
|
React__default['default'].createElement(ModalComponent, { images: formattedArray, index: 0, modalIsOpen: modalIsOpen, toggleModal: toggleModal })));
|
|
432
463
|
};
|
|
433
464
|
|
|
@@ -600,14 +631,12 @@ var Item = /*#__PURE__*/React__default['default'].forwardRef(function Item(props
|
|
|
600
631
|
return /*#__PURE__*/React__default['default'].createElement("li", {
|
|
601
632
|
className: "rta__item ".concat(className || ''),
|
|
602
633
|
style: style
|
|
603
|
-
}, /*#__PURE__*/React__default['default'].createElement("
|
|
634
|
+
}, /*#__PURE__*/React__default['default'].createElement("button", {
|
|
604
635
|
className: "rta__entity ".concat(selected ? 'rta__entity--selected' : ''),
|
|
605
636
|
onClick: onClickHandler,
|
|
606
637
|
onFocus: selectItem,
|
|
607
638
|
onMouseEnter: selectItem,
|
|
608
|
-
ref: innerRef
|
|
609
|
-
role: "button",
|
|
610
|
-
tabIndex: 0
|
|
639
|
+
ref: innerRef
|
|
611
640
|
}, /*#__PURE__*/React__default['default'].createElement(Component, {
|
|
612
641
|
entity: item,
|
|
613
642
|
selected: selected
|
|
@@ -684,6 +713,23 @@ var messageCodeBlocks = function (message) {
|
|
|
684
713
|
var matches = message.match(codeRegex);
|
|
685
714
|
return matches || [];
|
|
686
715
|
};
|
|
716
|
+
var detectHttp = /(http(s?):\/\/)?(www\.)?/;
|
|
717
|
+
function formatUrlForDisplay(url) {
|
|
718
|
+
try {
|
|
719
|
+
return decodeURIComponent(url).replace(detectHttp, '');
|
|
720
|
+
}
|
|
721
|
+
catch (e) {
|
|
722
|
+
return url;
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
function encodeDecode(url) {
|
|
726
|
+
try {
|
|
727
|
+
return encodeURI(decodeURIComponent(url));
|
|
728
|
+
}
|
|
729
|
+
catch (error) {
|
|
730
|
+
return url;
|
|
731
|
+
}
|
|
732
|
+
}
|
|
687
733
|
var markDownRenderers = {
|
|
688
734
|
// eslint-disable-next-line react/display-name
|
|
689
735
|
link: function (props) {
|
|
@@ -748,7 +794,6 @@ var renderText = function (text, mentioned_users, options) {
|
|
|
748
794
|
var newText = text;
|
|
749
795
|
var markdownLinks = matchMarkdownLinks(newText);
|
|
750
796
|
var codeBlocks = messageCodeBlocks(newText);
|
|
751
|
-
var detectHttp = /(http(s?):\/\/)?(www\.)?/;
|
|
752
797
|
// extract all valid links/emails within text and replace it with proper markup
|
|
753
798
|
uniqBy__default['default'](linkify__namespace.find(newText), 'value').forEach(function (_a) {
|
|
754
799
|
var href = _a.href, type = _a.type, value = _a.value;
|
|
@@ -764,8 +809,12 @@ var renderText = function (text, mentioned_users, options) {
|
|
|
764
809
|
});
|
|
765
810
|
if (noParsingNeeded.length > 0 || linkIsInBlock)
|
|
766
811
|
return;
|
|
767
|
-
|
|
768
|
-
|
|
812
|
+
try {
|
|
813
|
+
var displayLink = type === 'email' ? value : formatUrlForDisplay(href);
|
|
814
|
+
newText = newText.replace(new RegExp(escapeRegExp(value), 'g'), "[" + displayLink + "](" + encodeDecode(href) + ")");
|
|
815
|
+
}
|
|
816
|
+
catch (e) {
|
|
817
|
+
}
|
|
769
818
|
});
|
|
770
819
|
var plugins = [emojiMarkdownPlugin];
|
|
771
820
|
if (mentioned_users === null || mentioned_users === void 0 ? void 0 : mentioned_users.length) {
|
|
@@ -1025,7 +1074,6 @@ var List = function List(props) {
|
|
|
1025
1074
|
|
|
1026
1075
|
if ((event.which === KEY_CODES.ENTER || event.which === KEY_CODES.TAB) && selectedItem !== undefined) {
|
|
1027
1076
|
handleClick(event);
|
|
1028
|
-
return setSelectedItem(undefined);
|
|
1029
1077
|
}
|
|
1030
1078
|
|
|
1031
1079
|
return null;
|
|
@@ -1534,13 +1582,6 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1534
1582
|
return data;
|
|
1535
1583
|
});
|
|
1536
1584
|
|
|
1537
|
-
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_createRegExp", function () {
|
|
1538
|
-
var trigger = _this.props.trigger; // negative lookahead to match only the trigger + the actual token = "bladhwd:adawd:word test" => ":word"
|
|
1539
|
-
// https://stackoverflow.com/a/8057827/2719917
|
|
1540
|
-
|
|
1541
|
-
_this.tokenRegExp = new RegExp("([".concat(Object.keys(trigger).join(''), "])(?:(?!\\1)[^\\s])*$"));
|
|
1542
|
-
});
|
|
1543
|
-
|
|
1544
1585
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_closeAutocomplete", function () {
|
|
1545
1586
|
_this.setState({
|
|
1546
1587
|
currentTrigger: null,
|
|
@@ -1759,8 +1800,6 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1759
1800
|
_value = _this$props6.value; // TODO: it would be better to have the parent control state...
|
|
1760
1801
|
// if (value) this.state.value = value;
|
|
1761
1802
|
|
|
1762
|
-
_this._createRegExp();
|
|
1763
|
-
|
|
1764
1803
|
if (!loadingComponent) {
|
|
1765
1804
|
throw new Error('RTA: loadingComponent is not defined');
|
|
1766
1805
|
}
|
|
@@ -1815,40 +1854,12 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1815
1854
|
});
|
|
1816
1855
|
Listeners.startListen();
|
|
1817
1856
|
}
|
|
1818
|
-
}, {
|
|
1819
|
-
key: "UNSAFE_componentWillReceiveProps",
|
|
1820
|
-
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
1821
|
-
this._update(nextProps);
|
|
1822
|
-
}
|
|
1823
1857
|
}, {
|
|
1824
1858
|
key: "componentWillUnmount",
|
|
1825
1859
|
value: function componentWillUnmount() {
|
|
1826
1860
|
Listeners.stopListen();
|
|
1827
1861
|
Listeners.remove(this.state.listenerIndex);
|
|
1828
1862
|
}
|
|
1829
|
-
}, {
|
|
1830
|
-
key: "_update",
|
|
1831
|
-
value: // TODO: This is an anti pattern in react, should come up with a better way
|
|
1832
|
-
function _update(_ref) {
|
|
1833
|
-
var trigger = _ref.trigger,
|
|
1834
|
-
value = _ref.value;
|
|
1835
|
-
var oldValue = this.state.value;
|
|
1836
|
-
var oldTrigger = this.props.trigger;
|
|
1837
|
-
if (value !== oldValue || !oldValue) this.setState({
|
|
1838
|
-
value: value
|
|
1839
|
-
});
|
|
1840
|
-
/**
|
|
1841
|
-
* check if trigger chars are changed, if so, change the regexp accordingly
|
|
1842
|
-
*/
|
|
1843
|
-
|
|
1844
|
-
if (Object.keys(trigger).join('') !== Object.keys(oldTrigger).join('')) {
|
|
1845
|
-
this._createRegExp();
|
|
1846
|
-
}
|
|
1847
|
-
}
|
|
1848
|
-
/**
|
|
1849
|
-
* Close autocomplete, also clean up trigger (to avoid slow promises)
|
|
1850
|
-
*/
|
|
1851
|
-
|
|
1852
1863
|
}, {
|
|
1853
1864
|
key: "renderSuggestionListContainer",
|
|
1854
1865
|
value: function renderSuggestionListContainer() {
|
|
@@ -1869,8 +1880,8 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1869
1880
|
if (triggerProps.values && triggerProps.currentTrigger && !(disableMentions && triggerProps.currentTrigger === '@')) {
|
|
1870
1881
|
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
1871
1882
|
className: "rta__autocomplete ".concat(dropdownClassName || ''),
|
|
1872
|
-
ref: function ref(
|
|
1873
|
-
_this3.dropdownRef =
|
|
1883
|
+
ref: function ref(_ref) {
|
|
1884
|
+
_this3.dropdownRef = _ref;
|
|
1874
1885
|
},
|
|
1875
1886
|
style: dropdownStyle
|
|
1876
1887
|
}, /*#__PURE__*/React__default['default'].createElement(SuggestionList, _extends__default['default']({
|
|
@@ -1912,14 +1923,34 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1912
1923
|
onFocus: this.props.onFocus,
|
|
1913
1924
|
onScroll: this._onScrollHandler,
|
|
1914
1925
|
onSelect: this._selectHandler,
|
|
1915
|
-
ref: function ref(
|
|
1916
|
-
if (_this4.props.innerRef) _this4.props.innerRef(
|
|
1917
|
-
_this4.textareaRef =
|
|
1926
|
+
ref: function ref(_ref2) {
|
|
1927
|
+
if (_this4.props.innerRef) _this4.props.innerRef(_ref2);
|
|
1928
|
+
_this4.textareaRef = _ref2;
|
|
1918
1929
|
},
|
|
1919
1930
|
style: style,
|
|
1920
1931
|
value: value
|
|
1921
1932
|
}, this.props.additionalTextareaProps)));
|
|
1922
1933
|
}
|
|
1934
|
+
}], [{
|
|
1935
|
+
key: "getDerivedStateFromProps",
|
|
1936
|
+
value:
|
|
1937
|
+
/**
|
|
1938
|
+
* setup to emulate the UNSAFE_componentWillReceiveProps
|
|
1939
|
+
*/
|
|
1940
|
+
function getDerivedStateFromProps(props, state) {
|
|
1941
|
+
if (props.value !== state.propsValue || !state.value) {
|
|
1942
|
+
return {
|
|
1943
|
+
propsValue: props.value,
|
|
1944
|
+
value: props.value
|
|
1945
|
+
};
|
|
1946
|
+
} else {
|
|
1947
|
+
return null;
|
|
1948
|
+
}
|
|
1949
|
+
}
|
|
1950
|
+
/**
|
|
1951
|
+
* Close autocomplete, also clean up trigger (to avoid slow promises)
|
|
1952
|
+
*/
|
|
1953
|
+
|
|
1923
1954
|
}]);
|
|
1924
1955
|
|
|
1925
1956
|
return ReactTextareaAutocomplete;
|
|
@@ -2322,7 +2353,7 @@ var useUserRole = function (message, onlySenderCanEdit, disableQuotedMessages) {
|
|
|
2322
2353
|
(isMyMessage && channelCapabilities['delete-own-message']);
|
|
2323
2354
|
var canFlag = !isMyMessage;
|
|
2324
2355
|
var canMute = !isMyMessage && (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.mutes);
|
|
2325
|
-
var canQuote = !disableQuotedMessages;
|
|
2356
|
+
var canQuote = !disableQuotedMessages && channelCapabilities['quote-message'];
|
|
2326
2357
|
var canReact = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.reactions) !== false && channelCapabilities['send-reaction'];
|
|
2327
2358
|
var canReply = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.replies) !== false && channelCapabilities['send-reply'];
|
|
2328
2359
|
return {
|
|
@@ -2718,8 +2749,7 @@ var CustomMessageActionsList = function (props) {
|
|
|
2718
2749
|
var customActionsArray = Object.keys(customMessageActions);
|
|
2719
2750
|
return (React__default['default'].createElement(React__default['default'].Fragment, null, customActionsArray.map(function (customAction) {
|
|
2720
2751
|
var customHandler = customMessageActions[customAction];
|
|
2721
|
-
return (React__default['default'].createElement("button", { key: customAction, onClick: function (event) { return customHandler(message, event); } },
|
|
2722
|
-
React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, customAction)));
|
|
2752
|
+
return (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', key: customAction, onClick: function (event) { return customHandler(message, event); }, role: 'option' }, customAction));
|
|
2723
2753
|
})));
|
|
2724
2754
|
};
|
|
2725
2755
|
var UnMemoizedMessageActionsBox = function (props) {
|
|
@@ -2746,32 +2776,26 @@ var UnMemoizedMessageActionsBox = function (props) {
|
|
|
2746
2776
|
}, [messageListRect, mine, open]);
|
|
2747
2777
|
var handleQuote = function () {
|
|
2748
2778
|
setQuotedMessage(message);
|
|
2749
|
-
var elements =
|
|
2779
|
+
var elements = message.parent_id
|
|
2780
|
+
? document.querySelectorAll('.str-chat__thread .str-chat__textarea__textarea')
|
|
2781
|
+
: document.getElementsByClassName('str-chat__textarea__textarea');
|
|
2750
2782
|
var textarea = elements.item(0);
|
|
2751
2783
|
if (textarea instanceof HTMLTextAreaElement) {
|
|
2752
2784
|
textarea.focus();
|
|
2753
2785
|
}
|
|
2754
2786
|
};
|
|
2755
2787
|
return (React__default['default'].createElement("div", { className: "str-chat__message-actions-box\n " + (open ? 'str-chat__message-actions-box--open' : '') + "\n " + (mine ? 'str-chat__message-actions-box--mine' : '') + "\n " + (reverse ? 'str-chat__message-actions-box--reverse' : '') + "\n ", "data-testid": 'message-actions-box', ref: checkIfReverse },
|
|
2756
|
-
React__default['default'].createElement("
|
|
2788
|
+
React__default['default'].createElement("div", { "aria-label": 'Message Options', className: 'str-chat__message-actions-list', role: 'listbox' },
|
|
2757
2789
|
customMessageActions && (React__default['default'].createElement(CustomMessageActionsList, { customMessageActions: customMessageActions, message: message })),
|
|
2758
|
-
messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 &&
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
messageActions.indexOf(MESSAGE_ACTIONS.
|
|
2763
|
-
|
|
2764
|
-
messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1 && (React__default['default'].createElement("button", { onClick: handleFlag },
|
|
2765
|
-
React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, t('Flag')))),
|
|
2766
|
-
messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (React__default['default'].createElement("button", { onClick: handleMute },
|
|
2767
|
-
React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, isUserMuted() ? t('Unmute') : t('Mute')))),
|
|
2768
|
-
messageActions.indexOf(MESSAGE_ACTIONS.edit) > -1 && (React__default['default'].createElement("button", { onClick: handleEdit },
|
|
2769
|
-
React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, t('Edit Message')))),
|
|
2770
|
-
messageActions.indexOf(MESSAGE_ACTIONS.delete) > -1 && (React__default['default'].createElement("button", { onClick: handleDelete },
|
|
2771
|
-
React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, t('Delete')))))));
|
|
2790
|
+
messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 && !message.quoted_message && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleQuote, role: 'option' }, t('Reply'))),
|
|
2791
|
+
messageActions.indexOf(MESSAGE_ACTIONS.pin) > -1 && !message.parent_id && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handlePin, role: 'option' }, !message.pinned ? t('Pin') : t('Unpin'))),
|
|
2792
|
+
messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleFlag, role: 'option' }, t('Flag'))),
|
|
2793
|
+
messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleMute, role: 'option' }, isUserMuted() ? t('Unmute') : t('Mute'))),
|
|
2794
|
+
messageActions.indexOf(MESSAGE_ACTIONS.edit) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleEdit, role: 'option' }, t('Edit Message'))),
|
|
2795
|
+
messageActions.indexOf(MESSAGE_ACTIONS.delete) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleDelete, role: 'option' }, t('Delete'))))));
|
|
2772
2796
|
};
|
|
2773
2797
|
/**
|
|
2774
|
-
* A popup box that displays the available actions on a message, such edit, delete, pin, etc.
|
|
2798
|
+
* A popup box that displays the available actions on a message, such as edit, delete, pin, etc.
|
|
2775
2799
|
*/
|
|
2776
2800
|
var MessageActionsBox = React__default['default'].memo(UnMemoizedMessageActionsBox);
|
|
2777
2801
|
|
|
@@ -2813,7 +2837,8 @@ var MessageActions = function (props) {
|
|
|
2813
2837
|
return null;
|
|
2814
2838
|
return (React__default['default'].createElement(MessageActionsWrapper, { customWrapperClass: customWrapperClass, inline: inline, setActionsBoxOpen: setActionsBoxOpen },
|
|
2815
2839
|
React__default['default'].createElement(MessageActionsBox, { getMessageActions: getMessageActions, handleDelete: handleDelete, handleEdit: setEditingState, handleFlag: handleFlag, handleMute: handleMute, handlePin: handlePin, isUserMuted: isMuted, mine: mine ? mine() : isMyMessage(), open: actionsBoxOpen }),
|
|
2816
|
-
React__default['default'].createElement(
|
|
2840
|
+
React__default['default'].createElement("button", { "aria-expanded": actionsBoxOpen, "aria-haspopup": 'true', "aria-label": 'Open Message Actions Menu' },
|
|
2841
|
+
React__default['default'].createElement(ActionsIcon$1, null))));
|
|
2817
2842
|
};
|
|
2818
2843
|
var MessageActionsWrapper = function (props) {
|
|
2819
2844
|
var children = props.children, customWrapperClass = props.customWrapperClass, inline = props.inline, setActionsBoxOpen = props.setActionsBoxOpen;
|
|
@@ -2853,15 +2878,15 @@ var UnMemoizedMessageOptions = function (props) {
|
|
|
2853
2878
|
if (isMyMessage() && displayLeft) {
|
|
2854
2879
|
return (React__default['default'].createElement("div", { className: "str-chat__message-" + theme + "__actions", "data-testid": 'message-options-left' },
|
|
2855
2880
|
showActionsBox && (React__default['default'].createElement(MessageActions, { ActionsIcon: ActionsIcon$1, messageWrapperRef: messageWrapperRef })),
|
|
2856
|
-
shouldShowReplies && (React__default['default'].createElement("
|
|
2881
|
+
shouldShowReplies && (React__default['default'].createElement("button", { "aria-label": 'Open Thread', className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--thread", "data-testid": 'thread-action', onClick: handleOpenThread },
|
|
2857
2882
|
React__default['default'].createElement(ThreadIcon$1, null))),
|
|
2858
|
-
shouldShowReactions && (React__default['default'].createElement("
|
|
2883
|
+
shouldShowReactions && (React__default['default'].createElement("button", { "aria-label": 'Open Reaction Selector', className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--reactions", "data-testid": 'message-reaction-action', onClick: onReactionListClick },
|
|
2859
2884
|
React__default['default'].createElement(ReactionIcon$1, null)))));
|
|
2860
2885
|
}
|
|
2861
2886
|
return (React__default['default'].createElement("div", { className: "str-chat__message-" + theme + "__actions", "data-testid": 'message-options' },
|
|
2862
|
-
shouldShowReactions && (React__default['default'].createElement("
|
|
2887
|
+
shouldShowReactions && (React__default['default'].createElement("button", { "aria-label": 'Open Reaction Selector', className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--reactions", "data-testid": 'message-reaction-action', onClick: onReactionListClick },
|
|
2863
2888
|
React__default['default'].createElement(ReactionIcon$1, null))),
|
|
2864
|
-
shouldShowReplies && (React__default['default'].createElement("
|
|
2889
|
+
shouldShowReplies && (React__default['default'].createElement("button", { "aria-label": 'Open Thread', className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--thread", "data-testid": 'thread-action', onClick: handleOpenThread },
|
|
2865
2890
|
React__default['default'].createElement(ThreadIcon$1, null))),
|
|
2866
2891
|
showActionsBox && (React__default['default'].createElement(MessageActions, { ActionsIcon: ActionsIcon$1, messageWrapperRef: messageWrapperRef }))));
|
|
2867
2892
|
};
|
|
@@ -3740,7 +3765,7 @@ var searchLocalUsers = function (params) {
|
|
|
3740
3765
|
var transliterate;
|
|
3741
3766
|
return __generator(this, function (_a) {
|
|
3742
3767
|
switch (_a.label) {
|
|
3743
|
-
case 0: return [4 /*yield*/, Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@
|
|
3768
|
+
case 0: return [4 /*yield*/, Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@stream-io/transliterate')); })];
|
|
3744
3769
|
case 1:
|
|
3745
3770
|
transliterate = (_a.sent()).default;
|
|
3746
3771
|
updatedName = transliterate(user.name || '').toLowerCase();
|
|
@@ -4103,7 +4128,7 @@ var FileUploadIconFlat = function () {
|
|
|
4103
4128
|
var SendButton = function (_a) {
|
|
4104
4129
|
var sendMessage = _a.sendMessage;
|
|
4105
4130
|
var t = useTranslationContext('SendButton').t;
|
|
4106
|
-
return (React__default['default'].createElement("button", { className: 'str-chat__send-button', onClick: sendMessage },
|
|
4131
|
+
return (React__default['default'].createElement("button", { "aria-label": 'Send', className: 'str-chat__send-button', onClick: sendMessage },
|
|
4107
4132
|
React__default['default'].createElement("svg", { height: '17', viewBox: '0 0 18 17', width: '18', xmlns: 'http://www.w3.org/2000/svg' },
|
|
4108
4133
|
React__default['default'].createElement("title", null, t('Send')),
|
|
4109
4134
|
React__default['default'].createElement("path", { d: 'M0 17.015l17.333-8.508L0 0v6.617l12.417 1.89L0 10.397z', fill: '#006cff', fillRule: 'evenodd' }))));
|
|
@@ -4129,7 +4154,8 @@ var UploadsPreview = function () {
|
|
|
4129
4154
|
}
|
|
4130
4155
|
}, [device, numberOfUploads, text]);
|
|
4131
4156
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
4132
|
-
imageOrder.length > 0 && (React__default['default'].createElement(reactFileUtils.ImagePreviewer, { disabled:
|
|
4157
|
+
imageOrder.length > 0 && (React__default['default'].createElement(reactFileUtils.ImagePreviewer, { disabled: !multipleUploads ||
|
|
4158
|
+
(maxNumberOfFiles !== undefined && numberOfUploads >= maxNumberOfFiles), handleFiles: uploadNewFiles, handleRemove: removeImage, handleRetry: uploadImage, imageUploads: imagesToPreview, multiple: multipleUploads })),
|
|
4133
4159
|
fileOrder.length > 0 && (React__default['default'].createElement(reactFileUtils.FilePreviewer, { handleFiles: uploadNewFiles, handleRemove: removeFile, handleRetry: uploadFile, uploads: filesToPreview }))));
|
|
4134
4160
|
};
|
|
4135
4161
|
|
|
@@ -4139,32 +4165,34 @@ var UnMemoizedChatAutoComplete = function (props) {
|
|
|
4139
4165
|
var messageInput = useMessageInputContext('ChatAutoComplete');
|
|
4140
4166
|
var cooldownRemaining = messageInput.cooldownRemaining, disabled = messageInput.disabled, emojiIndex = messageInput.emojiIndex, innerRef = messageInput.textareaRef;
|
|
4141
4167
|
var placeholder = props.placeholder || t('Type your message');
|
|
4142
|
-
var emojiReplace =
|
|
4143
|
-
var
|
|
4144
|
-
|
|
4145
|
-
.
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4168
|
+
var emojiReplace = props.wordReplace
|
|
4169
|
+
? function (word) { var _a; return (_a = props.wordReplace) === null || _a === void 0 ? void 0 : _a.call(props, word, emojiIndex); }
|
|
4170
|
+
: function (word) {
|
|
4171
|
+
var found = (emojiIndex === null || emojiIndex === void 0 ? void 0 : emojiIndex.search(word)) || [];
|
|
4172
|
+
var emoji = found
|
|
4173
|
+
.filter(Boolean)
|
|
4174
|
+
.slice(0, 10)
|
|
4175
|
+
.find(function (_a) {
|
|
4176
|
+
var emoticons = _a.emoticons;
|
|
4177
|
+
return !!(emoticons === null || emoticons === void 0 ? void 0 : emoticons.includes(word));
|
|
4178
|
+
});
|
|
4179
|
+
if (!emoji || !('native' in emoji))
|
|
4180
|
+
return null;
|
|
4181
|
+
return emoji.native;
|
|
4182
|
+
};
|
|
4155
4183
|
var updateInnerRef = React.useCallback(function (ref) {
|
|
4156
4184
|
if (innerRef) {
|
|
4157
4185
|
innerRef.current = ref;
|
|
4158
4186
|
}
|
|
4159
4187
|
}, [innerRef]);
|
|
4160
|
-
return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', keycodeSubmitKeys: messageInput.keycodeSubmitKeys, listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
|
|
4188
|
+
return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', keycodeSubmitKeys: messageInput.keycodeSubmitKeys, listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
|
|
4161
4189
|
};
|
|
4162
4190
|
var ChatAutoComplete = React__default['default'].memo(UnMemoizedChatAutoComplete);
|
|
4163
4191
|
|
|
4164
4192
|
var EditMessageForm = function () {
|
|
4165
4193
|
var _a = useChannelStateContext('EditMessageForm'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
|
|
4166
4194
|
var t = useTranslationContext('EditMessageForm').t;
|
|
4167
|
-
var _b = useMessageInputContext('EditMessageForm'), clearEditingState = _b.clearEditingState, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, uploadNewFiles = _b.uploadNewFiles;
|
|
4195
|
+
var _b = useMessageInputContext('EditMessageForm'), clearEditingState = _b.clearEditingState, closeEmojiPicker = _b.closeEmojiPicker, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, uploadNewFiles = _b.uploadNewFiles;
|
|
4168
4196
|
var _c = useComponentContext('EditMessageForm'), _d = _c.EmojiIcon, EmojiIcon = _d === void 0 ? EmojiIconSmall : _d, _e = _c.FileUploadIcon, FileUploadIcon$1 = _e === void 0 ? FileUploadIcon : _e;
|
|
4169
4197
|
React.useEffect(function () {
|
|
4170
4198
|
var onKeyDown = function (event) {
|
|
@@ -4182,7 +4210,7 @@ var EditMessageForm = function () {
|
|
|
4182
4210
|
React__default['default'].createElement(ChatAutoComplete, null),
|
|
4183
4211
|
React__default['default'].createElement("div", { className: 'str-chat__message-team-form-footer' },
|
|
4184
4212
|
React__default['default'].createElement("div", { className: 'str-chat__edit-message-form-options' },
|
|
4185
|
-
React__default['default'].createElement("
|
|
4213
|
+
React__default['default'].createElement("button", { "aria-label": 'Open Emoji Picker', className: 'str-chat__input-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker },
|
|
4186
4214
|
React__default['default'].createElement(EmojiIcon, null)),
|
|
4187
4215
|
isUploadEnabled && (React__default['default'].createElement("div", { className: 'str-chat__fileupload-wrapper', "data-testid": 'fileinput' },
|
|
4188
4216
|
React__default['default'].createElement(Tooltip, null, maxFilesLeft
|
|
@@ -4590,6 +4618,7 @@ var useMessageInputText = function (props, state, dispatch) {
|
|
|
4590
4618
|
var useEmojiPicker = function (state, dispatch, insertText, textareaRef, closeEmojiPickerOnClick) {
|
|
4591
4619
|
var emojiPickerRef = React.useRef(null);
|
|
4592
4620
|
var closeEmojiPicker = React.useCallback(function (event) {
|
|
4621
|
+
event.preventDefault();
|
|
4593
4622
|
if (emojiPickerRef.current && !emojiPickerRef.current.contains(event.target)) {
|
|
4594
4623
|
dispatch({
|
|
4595
4624
|
type: 'setEmojiPickerIsOpen',
|
|
@@ -4598,6 +4627,7 @@ var useEmojiPicker = function (state, dispatch, insertText, textareaRef, closeEm
|
|
|
4598
4627
|
}
|
|
4599
4628
|
}, [emojiPickerRef]);
|
|
4600
4629
|
var openEmojiPicker = React.useCallback(function (event) {
|
|
4630
|
+
event.preventDefault();
|
|
4601
4631
|
dispatch({
|
|
4602
4632
|
type: 'setEmojiPickerIsOpen',
|
|
4603
4633
|
value: true,
|
|
@@ -4981,7 +5011,7 @@ var useMessageInputState = function (props) {
|
|
|
4981
5011
|
var closeCommandsList = function () { return setShowCommandsList(false); };
|
|
4982
5012
|
var openMentionsList = function () {
|
|
4983
5013
|
dispatch({
|
|
4984
|
-
getNewText: function () { return '@'; },
|
|
5014
|
+
getNewText: function (currentText) { return currentText + '@'; },
|
|
4985
5015
|
type: 'setText',
|
|
4986
5016
|
});
|
|
4987
5017
|
setShowMentionsList(true);
|
|
@@ -5011,15 +5041,16 @@ var QuotedMessagePreviewHeader = function () {
|
|
|
5011
5041
|
var t = useTranslationContext('QuotedMessagePreview').t;
|
|
5012
5042
|
return (React__default['default'].createElement("div", { className: 'quoted-message-preview-header' },
|
|
5013
5043
|
React__default['default'].createElement("div", null, t('Reply to Message')),
|
|
5014
|
-
React__default['default'].createElement("button", { className: 'str-chat__square-button', onClick: function () { return setQuotedMessage(undefined); } },
|
|
5044
|
+
React__default['default'].createElement("button", { "aria-label": 'Cancel Reply', className: 'str-chat__square-button', onClick: function () { return setQuotedMessage(undefined); } },
|
|
5015
5045
|
React__default['default'].createElement("svg", { height: '10', width: '10', xmlns: 'http://www.w3.org/2000/svg' },
|
|
5016
5046
|
React__default['default'].createElement("path", { d: 'M9.916 1.027L8.973.084 5 4.058 1.027.084l-.943.943L4.058 5 .084 8.973l.943.943L5 5.942l3.973 3.974.943-.943L5.942 5z', fillRule: 'evenodd' })))));
|
|
5017
5047
|
};
|
|
5018
5048
|
var QuotedMessagePreview = function (props) {
|
|
5019
5049
|
var _a;
|
|
5020
5050
|
var quotedMessage = props.quotedMessage;
|
|
5021
|
-
var
|
|
5051
|
+
var _b = useComponentContext('QuotedMessagePreview'), Attachment = _b.Attachment, ContextAvatar = _b.Avatar;
|
|
5022
5052
|
var userLanguage = useTranslationContext('QuotedMessagePreview').userLanguage;
|
|
5053
|
+
var Avatar$1 = ContextAvatar || Avatar;
|
|
5023
5054
|
var quotedMessageText = ((_a = quotedMessage.i18n) === null || _a === void 0 ? void 0 : _a[userLanguage + "_text"]) ||
|
|
5024
5055
|
quotedMessage.text;
|
|
5025
5056
|
// @ts-expect-error
|
|
@@ -5032,7 +5063,7 @@ var QuotedMessagePreview = function (props) {
|
|
|
5032
5063
|
return (React__default['default'].createElement("div", { className: 'quoted-message-preview' },
|
|
5033
5064
|
React__default['default'].createElement(QuotedMessagePreviewHeader, null),
|
|
5034
5065
|
React__default['default'].createElement("div", { className: 'quoted-message-preview-content' },
|
|
5035
|
-
quotedMessage.user && (React__default['default'].createElement(Avatar, { image: quotedMessage.user.image, name: quotedMessage.user.name || quotedMessage.user.id, size: 20, user: quotedMessage.user })),
|
|
5066
|
+
quotedMessage.user && (React__default['default'].createElement(Avatar$1, { image: quotedMessage.user.image, name: quotedMessage.user.name || quotedMessage.user.id, size: 20, user: quotedMessage.user })),
|
|
5036
5067
|
React__default['default'].createElement("div", { className: 'quoted-message-preview-content-inner' },
|
|
5037
5068
|
quotedMessageAttachment && React__default['default'].createElement(Attachment, { attachments: [quotedMessageAttachment] }),
|
|
5038
5069
|
React__default['default'].createElement("div", null, quotedMessageText)))));
|
|
@@ -5041,17 +5072,17 @@ var QuotedMessagePreview = function (props) {
|
|
|
5041
5072
|
var MessageInputFlat = function () {
|
|
5042
5073
|
var _a = useChannelStateContext('MessageInputFlat'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
|
|
5043
5074
|
var t = useTranslationContext('MessageInputFlat').t;
|
|
5044
|
-
var _b = useMessageInputContext('MessageInputFlat'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen,
|
|
5075
|
+
var _b = useMessageInputContext('MessageInputFlat'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
5045
5076
|
var _c = useComponentContext('MessageInputFlat'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconLarge : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.QuotedMessagePreview, QuotedMessagePreview$1 = _g === void 0 ? QuotedMessagePreview : _g, _h = _c.SendButton, SendButton$1 = _h === void 0 ? SendButton : _h;
|
|
5046
|
-
return (React__default['default'].createElement("div", { className: "str-chat__input-flat " + (SendButton$1 ? 'str-chat__input-flat--send-button-active' : null) + " " + (quotedMessage ? 'str-chat__input-flat-quoted' : null) },
|
|
5077
|
+
return (React__default['default'].createElement("div", { className: "str-chat__input-flat " + (SendButton$1 ? 'str-chat__input-flat--send-button-active' : null) + " " + (quotedMessage && !quotedMessage.parent_id ? 'str-chat__input-flat-quoted' : null) },
|
|
5047
5078
|
React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
|
|
5048
|
-
quotedMessage && React__default['default'].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage }),
|
|
5079
|
+
quotedMessage && !quotedMessage.parent_id && (React__default['default'].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage })),
|
|
5049
5080
|
React__default['default'].createElement("div", { className: 'str-chat__input-flat-wrapper' },
|
|
5050
5081
|
React__default['default'].createElement("div", { className: 'str-chat__input-flat--textarea-wrapper' },
|
|
5051
5082
|
isUploadEnabled && React__default['default'].createElement(UploadsPreview, null),
|
|
5052
5083
|
React__default['default'].createElement("div", { className: 'str-chat__emojiselect-wrapper' },
|
|
5053
5084
|
React__default['default'].createElement(Tooltip, null, emojiPickerIsOpen ? t('Close emoji picker') : t('Open emoji picker')),
|
|
5054
|
-
React__default['default'].createElement("
|
|
5085
|
+
React__default['default'].createElement("button", { "aria-label": 'Emoji picker', className: 'str-chat__input-flat-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker }, cooldownRemaining ? (React__default['default'].createElement("div", { className: 'str-chat__input-flat-cooldown' },
|
|
5055
5086
|
React__default['default'].createElement(CooldownTimer$1, { cooldownInterval: cooldownInterval, setCooldownRemaining: setCooldownRemaining }))) : (React__default['default'].createElement(EmojiIcon, null)))),
|
|
5056
5087
|
React__default['default'].createElement(EmojiPicker, null),
|
|
5057
5088
|
React__default['default'].createElement(ChatAutoComplete, null),
|
|
@@ -5187,13 +5218,14 @@ var UnMemoizedMessageInput = function (props) {
|
|
|
5187
5218
|
var MessageInput = React__default['default'].memo(UnMemoizedMessageInput);
|
|
5188
5219
|
|
|
5189
5220
|
var MessageInputSmall = function () {
|
|
5190
|
-
var _a = useChannelStateContext('MessageInputSmall'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
|
|
5221
|
+
var _a = useChannelStateContext('MessageInputSmall'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
|
|
5191
5222
|
var t = useTranslationContext('MessageInputSmall').t;
|
|
5192
|
-
var _b = useMessageInputContext('MessageInputSmall'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen,
|
|
5193
|
-
var _c = useComponentContext('MessageInputSmall'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconSmall : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.SendButton, SendButton$1 = _g === void 0 ? SendButton : _g;
|
|
5223
|
+
var _b = useMessageInputContext('MessageInputSmall'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
5224
|
+
var _c = useComponentContext('MessageInputSmall'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconSmall : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.SendButton, SendButton$1 = _g === void 0 ? SendButton : _g, _h = _c.QuotedMessagePreview, QuotedMessagePreview$1 = _h === void 0 ? QuotedMessagePreview : _h;
|
|
5194
5225
|
return (React__default['default'].createElement("div", { className: 'str-chat__small-message-input__wrapper' },
|
|
5195
5226
|
React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
|
|
5196
|
-
React__default['default'].createElement("div", { className: "str-chat__small-message-input " + (SendButton$1 ? 'str-chat__small-message-input--send-button-active' : null) },
|
|
5227
|
+
React__default['default'].createElement("div", { className: "str-chat__small-message-input " + (SendButton$1 ? 'str-chat__small-message-input--send-button-active' : null) + " " + (quotedMessage && quotedMessage.parent_id ? 'str-chat__input-flat-quoted' : null) },
|
|
5228
|
+
quotedMessage && quotedMessage.parent_id && (React__default['default'].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage })),
|
|
5197
5229
|
React__default['default'].createElement("div", { className: 'str-chat__small-message-input--textarea-wrapper' },
|
|
5198
5230
|
isUploadEnabled && React__default['default'].createElement(UploadsPreview, null),
|
|
5199
5231
|
React__default['default'].createElement(ChatAutoComplete, null),
|
|
@@ -5208,7 +5240,7 @@ var MessageInputSmall = function () {
|
|
|
5208
5240
|
React__default['default'].createElement(FileUploadIcon, null))))),
|
|
5209
5241
|
React__default['default'].createElement("div", { className: 'str-chat__emojiselect-wrapper' },
|
|
5210
5242
|
React__default['default'].createElement(Tooltip, null, emojiPickerIsOpen ? t('Close emoji picker') : t('Open emoji picker')),
|
|
5211
|
-
React__default['default'].createElement("
|
|
5243
|
+
React__default['default'].createElement("button", { "aria-label": 'Emoji picker', className: 'str-chat__small-message-input-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker },
|
|
5212
5244
|
React__default['default'].createElement(EmojiIcon, null))))),
|
|
5213
5245
|
React__default['default'].createElement(EmojiPicker, { small: true })),
|
|
5214
5246
|
!cooldownRemaining && React__default['default'].createElement(SendButton$1, { sendMessage: handleSubmit })))));
|
|
@@ -5235,38 +5267,6 @@ var MML = function (props) {
|
|
|
5235
5267
|
React__default['default'].createElement(MMLReact, { className: "mml-align-" + align, Loading: null, onSubmit: actionHandler, source: source, Success: null, theme: (theme || '').replace(' ', '-') })));
|
|
5236
5268
|
};
|
|
5237
5269
|
|
|
5238
|
-
var Modal = function (props) {
|
|
5239
|
-
var children = props.children, onClose = props.onClose, open = props.open;
|
|
5240
|
-
var t = useTranslationContext('Modal').t;
|
|
5241
|
-
var innerRef = React.useRef(null);
|
|
5242
|
-
var handleClick = function (event) {
|
|
5243
|
-
var _a;
|
|
5244
|
-
if (event.target instanceof HTMLDivElement &&
|
|
5245
|
-
!((_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)) &&
|
|
5246
|
-
onClose) {
|
|
5247
|
-
onClose();
|
|
5248
|
-
}
|
|
5249
|
-
};
|
|
5250
|
-
React.useEffect(function () {
|
|
5251
|
-
if (!open)
|
|
5252
|
-
return function () { return null; };
|
|
5253
|
-
var handleEscKey = function (event) {
|
|
5254
|
-
if (event instanceof KeyboardEvent && event.key === 'Escape' && onClose) {
|
|
5255
|
-
onClose();
|
|
5256
|
-
}
|
|
5257
|
-
};
|
|
5258
|
-
document.addEventListener('keypress', handleEscKey);
|
|
5259
|
-
return function () { return document.removeEventListener('keypress', handleEscKey); };
|
|
5260
|
-
}, [onClose, open]);
|
|
5261
|
-
var openClasses = open ? 'str-chat__modal--open' : 'str-chat__modal--closed';
|
|
5262
|
-
return (React__default['default'].createElement("div", { className: "str-chat__modal " + openClasses, onClick: handleClick },
|
|
5263
|
-
React__default['default'].createElement("div", { className: 'str-chat__modal__close-button' },
|
|
5264
|
-
t('Close'),
|
|
5265
|
-
React__default['default'].createElement("svg", { height: '10', width: '10', xmlns: 'http://www.w3.org/2000/svg' },
|
|
5266
|
-
React__default['default'].createElement("path", { d: 'M9.916 1.027L8.973.084 5 4.058 1.027.084l-.943.943L4.058 5 .084 8.973l.943.943L5 5.942l3.973 3.974.943-.943L5.942 5z', fillRule: 'evenodd' }))),
|
|
5267
|
-
React__default['default'].createElement("div", { className: 'str-chat__modal__inner', ref: innerRef }, children)));
|
|
5268
|
-
};
|
|
5269
|
-
|
|
5270
5270
|
var isMutableRef = function (ref) {
|
|
5271
5271
|
if (ref) {
|
|
5272
5272
|
return ref.current !== undefined;
|
|
@@ -5344,12 +5344,13 @@ var UnMemoizedReactionSelector = React__default['default'].forwardRef(function (
|
|
|
5344
5344
|
React__default['default'].createElement("ul", { className: 'str-chat__message-reactions-list' }, reactionOptions.map(function (reactionOption) {
|
|
5345
5345
|
var latestUser = getLatestUserForReactionType(reactionOption.id);
|
|
5346
5346
|
var count = reactionCounts && reactionCounts[reactionOption.id];
|
|
5347
|
-
return (React__default['default'].createElement("li", {
|
|
5348
|
-
|
|
5349
|
-
|
|
5350
|
-
|
|
5351
|
-
React__default['default'].createElement(
|
|
5352
|
-
|
|
5347
|
+
return (React__default['default'].createElement("li", { key: "item-" + reactionOption.id },
|
|
5348
|
+
React__default['default'].createElement("button", { "aria-label": "Select Reaction: " + reactionOption.name, className: 'str-chat__message-reactions-list-item', "data-text": reactionOption.id, onClick: function (event) { return handleReaction(reactionOption.id, event); } },
|
|
5349
|
+
!!count && detailedView && (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
5350
|
+
React__default['default'].createElement("div", { className: 'latest-user', onClick: hideTooltip, onMouseEnter: function (e) { return showTooltip(e, reactionOption.id); }, onMouseLeave: hideTooltip }, latestUser ? (React__default['default'].createElement(Avatar$1, { image: latestUser.image, name: latestUser.name, size: 20, user: latestUser })) : (React__default['default'].createElement("div", { className: 'latest-user-not-found' }))))),
|
|
5351
|
+
React__default['default'].createElement(React.Suspense, { fallback: null },
|
|
5352
|
+
React__default['default'].createElement(Emoji, __assign({ data: emojiData, emoji: reactionOption, size: 20 }, (reactionsAreCustom ? additionalEmojiProps : emojiSetDef)))),
|
|
5353
|
+
Boolean(count) && detailedView && (React__default['default'].createElement("span", { className: 'str-chat__message-reactions-list-item__count' }, count || '')))));
|
|
5353
5354
|
}))));
|
|
5354
5355
|
});
|
|
5355
5356
|
/**
|
|
@@ -5399,14 +5400,15 @@ var UnMemoizedReactionsList = function (props) {
|
|
|
5399
5400
|
var supportedReactionsArePresent = messageReactionTypes.some(function (type) { return supportedReactionMap[type]; });
|
|
5400
5401
|
if (!supportedReactionsArePresent)
|
|
5401
5402
|
return null;
|
|
5402
|
-
return (React__default['default'].createElement("div", { className: "str-chat__reaction-list " + (reverse ? 'str-chat__reaction-list--reverse' : ''), "data-testid": 'reaction-list', onClick: onClick || onReactionListClick },
|
|
5403
|
+
return (React__default['default'].createElement("div", { "aria-label": 'Reaction list', className: "str-chat__reaction-list " + (reverse ? 'str-chat__reaction-list--reverse' : ''), "data-testid": 'reaction-list', onClick: onClick || onReactionListClick, onKeyPress: onClick || onReactionListClick, role: 'figure' },
|
|
5403
5404
|
React__default['default'].createElement("ul", null,
|
|
5404
5405
|
messageReactionTypes.map(function (reactionType) {
|
|
5405
5406
|
var emojiObject = getEmojiByReactionType(reactionType);
|
|
5406
5407
|
return emojiObject ? (React__default['default'].createElement("li", { key: emojiObject.id },
|
|
5407
|
-
React__default['default'].createElement(
|
|
5408
|
-
React__default['default'].createElement(
|
|
5409
|
-
|
|
5408
|
+
React__default['default'].createElement("button", { "aria-label": "Reactions: " + reactionType },
|
|
5409
|
+
React__default['default'].createElement(React.Suspense, { fallback: null },
|
|
5410
|
+
React__default['default'].createElement(Emoji, __assign({ data: emojiData, emoji: emojiObject, size: 16 }, (reactionsAreCustom ? additionalEmojiProps : emojiSetDef)))),
|
|
5411
|
+
"\u00A0"))) : null;
|
|
5410
5412
|
}),
|
|
5411
5413
|
React__default['default'].createElement("li", null,
|
|
5412
5414
|
React__default['default'].createElement("span", { className: 'str-chat__reaction-list--counter' }, getTotalReactionCount())))));
|
|
@@ -5475,7 +5477,7 @@ var UnMemoizedSimpleReactionsList = function (props) {
|
|
|
5475
5477
|
messageReactionTypes.map(function (reactionType, i) {
|
|
5476
5478
|
var _a;
|
|
5477
5479
|
var emojiObject = getEmojiByReactionType(reactionType);
|
|
5478
|
-
return emojiObject ? (React__default['default'].createElement("li", { className: 'str-chat__simple-reactions-list-item', key: emojiObject.id + "-" + i, onClick: function (event) { return handleReaction(reactionType, event); } },
|
|
5480
|
+
return emojiObject ? (React__default['default'].createElement("li", { className: 'str-chat__simple-reactions-list-item', key: emojiObject.id + "-" + i, onClick: function (event) { return handleReaction(reactionType, event); }, onKeyPress: function (event) { return handleReaction(reactionType, event); } },
|
|
5479
5481
|
React__default['default'].createElement("span", { onMouseEnter: function () { return setTooltipReactionType(reactionType); } },
|
|
5480
5482
|
React__default['default'].createElement(React.Suspense, { fallback: null },
|
|
5481
5483
|
React__default['default'].createElement(Emoji, __assign({ data: emojiData, emoji: emojiObject, size: 13 }, (reactionsAreCustom ? additionalEmojiProps : emojiSetDef)))),
|
|
@@ -5511,6 +5513,8 @@ var MessageSimpleWithContext = function (props) {
|
|
|
5511
5513
|
React__default['default'].createElement(MessageStatus$1, null),
|
|
5512
5514
|
message.user && (React__default['default'].createElement(Avatar$1, { image: message.user.image, name: message.user.name || message.user.id, onClick: onUserClick, onMouseOver: onUserHover, user: message.user })),
|
|
5513
5515
|
React__default['default'].createElement("div", { className: 'str-chat__message-inner', "data-testid": 'message-inner', onClick: message.status === 'failed' && message.errorStatusCode !== 403
|
|
5516
|
+
? function () { return handleRetry(message); }
|
|
5517
|
+
: undefined, onKeyPress: message.status === 'failed' && message.errorStatusCode !== 403
|
|
5514
5518
|
? function () { return handleRetry(message); }
|
|
5515
5519
|
: undefined },
|
|
5516
5520
|
React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
@@ -5830,7 +5834,7 @@ var ChannelInner = function (props) {
|
|
|
5830
5834
|
return id;
|
|
5831
5835
|
})
|
|
5832
5836
|
: mentioned_users;
|
|
5833
|
-
messageData = __assign({ attachments: attachments, id: id, mentioned_users: mentions, parent_id: parent_id, quoted_message_id: quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.id, text: text }, customMessageData);
|
|
5837
|
+
messageData = __assign({ attachments: attachments, id: id, mentioned_users: mentions, parent_id: parent_id, quoted_message_id: parent_id === (quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.parent_id) ? quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.id : undefined, text: text }, customMessageData);
|
|
5834
5838
|
_b.label = 1;
|
|
5835
5839
|
case 1:
|
|
5836
5840
|
_b.trys.push([1, 6, , 7]);
|
|
@@ -5849,7 +5853,7 @@ var ChannelInner = function (props) {
|
|
|
5849
5853
|
if (messageResponse === null || messageResponse === void 0 ? void 0 : messageResponse.message) {
|
|
5850
5854
|
updateMessage(__assign(__assign({}, messageResponse.message), { status: 'received' }));
|
|
5851
5855
|
}
|
|
5852
|
-
if (quotedMessage)
|
|
5856
|
+
if (quotedMessage && parent_id === (quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.parent_id))
|
|
5853
5857
|
setQuotedMessage(undefined);
|
|
5854
5858
|
return [3 /*break*/, 7];
|
|
5855
5859
|
case 6:
|
|
@@ -5907,6 +5911,14 @@ var ChannelInner = function (props) {
|
|
|
5907
5911
|
/** THREAD */
|
|
5908
5912
|
var openThread = function (message, event) {
|
|
5909
5913
|
event.preventDefault();
|
|
5914
|
+
setQuotedMessage(function (current) {
|
|
5915
|
+
if ((current === null || current === void 0 ? void 0 : current.parent_id) !== (message === null || message === void 0 ? void 0 : message.parent_id)) {
|
|
5916
|
+
return undefined;
|
|
5917
|
+
}
|
|
5918
|
+
else {
|
|
5919
|
+
return current;
|
|
5920
|
+
}
|
|
5921
|
+
});
|
|
5910
5922
|
dispatch({ channel: channel, message: message, type: 'openThread' });
|
|
5911
5923
|
};
|
|
5912
5924
|
var closeThread = function (event) {
|
|
@@ -6076,7 +6088,7 @@ var UnMemoizedChannelHeader = function (props) {
|
|
|
6076
6088
|
var _c = (channel === null || channel === void 0 ? void 0 : channel.data) || {}, channelImage = _c.image, member_count = _c.member_count, name = _c.name, subtitle = _c.subtitle;
|
|
6077
6089
|
var image = propImage || channelImage;
|
|
6078
6090
|
return (React__default['default'].createElement("div", { className: 'str-chat__header-livestream' },
|
|
6079
|
-
React__default['default'].createElement("
|
|
6091
|
+
React__default['default'].createElement("button", { "aria-label": 'Menu', className: 'str-chat__header-hamburger', onClick: openMobileNav },
|
|
6080
6092
|
React__default['default'].createElement("span", { className: 'str-chat__header-hamburger--line' }),
|
|
6081
6093
|
React__default['default'].createElement("span", { className: 'str-chat__header-hamburger--line' }),
|
|
6082
6094
|
React__default['default'].createElement("span", { className: 'str-chat__header-hamburger--line' })),
|
|
@@ -6109,9 +6121,9 @@ var UnMemoizedChatDown = function (props) {
|
|
|
6109
6121
|
return (React__default['default'].createElement("div", { className: 'str-chat__down' },
|
|
6110
6122
|
React__default['default'].createElement(LoadingChannels, null),
|
|
6111
6123
|
React__default['default'].createElement("div", { className: 'str-chat__down-main' },
|
|
6112
|
-
React__default['default'].createElement("img", { "data-testid": 'chatdown-img', src: image || img }),
|
|
6124
|
+
React__default['default'].createElement("img", { alt: 'Connection error', "data-testid": 'chatdown-img', src: image || img }),
|
|
6113
6125
|
React__default['default'].createElement("h1", null, type),
|
|
6114
|
-
React__default['default'].createElement("h3",
|
|
6126
|
+
React__default['default'].createElement("h3", { "aria-live": 'assertive' }, text || t('Error connecting to chat, refresh the page to try again.')))));
|
|
6115
6127
|
};
|
|
6116
6128
|
/**
|
|
6117
6129
|
* A simple indicator that chat functionality isn't available, triggered when the Chat API is unavailable or your network isn't working.
|
|
@@ -6130,7 +6142,7 @@ var ChannelListMessenger = function (props) {
|
|
|
6130
6142
|
return React__default['default'].createElement(LoadingIndicator, null);
|
|
6131
6143
|
}
|
|
6132
6144
|
return (React__default['default'].createElement("div", { className: 'str-chat__channel-list-messenger' },
|
|
6133
|
-
React__default['default'].createElement("div", { className: 'str-chat__channel-list-messenger__main' }, children)));
|
|
6145
|
+
React__default['default'].createElement("div", { "aria-label": 'Channel list', className: 'str-chat__channel-list-messenger__main', role: 'listbox' }, children)));
|
|
6134
6146
|
};
|
|
6135
6147
|
|
|
6136
6148
|
var useChannelDeletedListener = function (setChannels, customHandler) {
|
|
@@ -6207,10 +6219,11 @@ var useChannelUpdatedListener = function (setChannels, customHandler, forceUpdat
|
|
|
6207
6219
|
React.useEffect(function () {
|
|
6208
6220
|
var handleEvent = function (event) {
|
|
6209
6221
|
setChannels(function (channels) {
|
|
6222
|
+
var _a, _b, _c, _d, _e, _f;
|
|
6210
6223
|
var channelIndex = channels.findIndex(function (channel) { var _a; return channel.cid === ((_a = event.channel) === null || _a === void 0 ? void 0 : _a.cid); });
|
|
6211
6224
|
if (channelIndex > -1 && event.channel) {
|
|
6212
6225
|
var newChannels = channels;
|
|
6213
|
-
newChannels[channelIndex].data = event.channel;
|
|
6226
|
+
newChannels[channelIndex].data = __assign(__assign({}, event.channel), { hidden: (_b = (_a = event.channel) === null || _a === void 0 ? void 0 : _a.hidden) !== null && _b !== void 0 ? _b : (_c = newChannels[channelIndex].data) === null || _c === void 0 ? void 0 : _c.hidden, own_capabilities: (_e = (_d = event.channel) === null || _d === void 0 ? void 0 : _d.own_capabilities) !== null && _e !== void 0 ? _e : (_f = newChannels[channelIndex].data) === null || _f === void 0 ? void 0 : _f.own_capabilities });
|
|
6214
6227
|
return __spreadArray([], newChannels);
|
|
6215
6228
|
}
|
|
6216
6229
|
return channels;
|
|
@@ -6525,7 +6538,7 @@ var UnMemoizedChannelPreviewMessenger = function (props) {
|
|
|
6525
6538
|
channelPreviewButton.current.blur();
|
|
6526
6539
|
}
|
|
6527
6540
|
};
|
|
6528
|
-
return (React__default['default'].createElement("button", { className: "str-chat__channel-preview-messenger " + unreadClass + " " + activeClass, "data-testid": 'channel-preview-button', onClick: onSelectChannel, ref: channelPreviewButton },
|
|
6541
|
+
return (React__default['default'].createElement("button", { "aria-label": "Select Channel: " + (displayTitle || ''), "aria-selected": active, className: "str-chat__channel-preview-messenger " + unreadClass + " " + activeClass, "data-testid": 'channel-preview-button', onClick: onSelectChannel, ref: channelPreviewButton, role: 'option' },
|
|
6529
6542
|
React__default['default'].createElement("div", { className: 'str-chat__channel-preview-messenger--left' },
|
|
6530
6543
|
React__default['default'].createElement(Avatar$1, { image: displayImage, name: avatarName, size: 40 })),
|
|
6531
6544
|
React__default['default'].createElement("div", { className: 'str-chat__channel-preview-messenger--right' },
|
|
@@ -6668,20 +6681,20 @@ var isChannel = function (output) {
|
|
|
6668
6681
|
|
|
6669
6682
|
var DefaultDropdownContainer = function (props) {
|
|
6670
6683
|
var focusedUser = props.focusedUser, results = props.results, _a = props.SearchResultItem, SearchResultItem = _a === void 0 ? DefaultSearchResultItem : _a, selectResult = props.selectResult;
|
|
6671
|
-
return (React__default['default'].createElement(
|
|
6684
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null, results.map(function (result, index) { return (React__default['default'].createElement(SearchResultItem, { focusedUser: focusedUser, index: index, key: index, result: result, selectResult: selectResult })); })));
|
|
6672
6685
|
};
|
|
6673
6686
|
var DefaultSearchResultItem = function (props) {
|
|
6674
|
-
var _a;
|
|
6687
|
+
var _a, _b;
|
|
6675
6688
|
var focusedUser = props.focusedUser, index = props.index, result = props.result, selectResult = props.selectResult;
|
|
6676
6689
|
var focused = focusedUser === index;
|
|
6677
6690
|
if (isChannel(result)) {
|
|
6678
6691
|
var channel_1 = result;
|
|
6679
|
-
return (React__default['default'].createElement("
|
|
6692
|
+
return (React__default['default'].createElement("button", { "aria-label": "Select Channel: " + (((_a = channel_1.data) === null || _a === void 0 ? void 0 : _a.name) || ''), className: "str-chat__channel-search-result " + (focused ? 'focused' : ''), onClick: function () { return selectResult(channel_1); } },
|
|
6680
6693
|
React__default['default'].createElement("div", { className: 'result-hashtag' }, "#"),
|
|
6681
|
-
React__default['default'].createElement("p", { className: 'channel-search__result-text' }, (
|
|
6694
|
+
React__default['default'].createElement("p", { className: 'channel-search__result-text' }, (_b = channel_1.data) === null || _b === void 0 ? void 0 : _b.name)));
|
|
6682
6695
|
}
|
|
6683
6696
|
else {
|
|
6684
|
-
return (React__default['default'].createElement("
|
|
6697
|
+
return (React__default['default'].createElement("button", { "aria-label": "Select User Channel: " + (result.name || ''), className: "str-chat__channel-search-result " + (focused ? 'focused' : ''), onClick: function () { return selectResult(result); } },
|
|
6685
6698
|
React__default['default'].createElement(Avatar, { image: result.image, user: result }),
|
|
6686
6699
|
result.name || result.id));
|
|
6687
6700
|
}
|
|
@@ -6727,7 +6740,7 @@ var SearchResults = function (props) {
|
|
|
6727
6740
|
return (React__default['default'].createElement(ResultsContainer, null, SearchLoading ? (React__default['default'].createElement(SearchLoading, null)) : (React__default['default'].createElement("div", { className: 'str-chat__channel-search-container-searching' }, t('Searching...')))));
|
|
6728
6741
|
}
|
|
6729
6742
|
if (!results.length) {
|
|
6730
|
-
return (React__default['default'].createElement(ResultsContainer, null, SearchEmpty ? (React__default['default'].createElement(SearchEmpty, null)) : (React__default['default'].createElement("div", { className: 'str-chat__channel-search-container-empty' }, t('No results found')))));
|
|
6743
|
+
return (React__default['default'].createElement(ResultsContainer, null, SearchEmpty ? (React__default['default'].createElement(SearchEmpty, null)) : (React__default['default'].createElement("div", { "aria-live": 'polite', className: 'str-chat__channel-search-container-empty' }, t('No results found')))));
|
|
6731
6744
|
}
|
|
6732
6745
|
return (React__default['default'].createElement(ResultsContainer, null,
|
|
6733
6746
|
SearchResultsHeader && React__default['default'].createElement(SearchResultsHeader, null),
|
|
@@ -6852,7 +6865,7 @@ var UnMemoizedEmptyStateIndicator = function (props) {
|
|
|
6852
6865
|
var listType = props.listType;
|
|
6853
6866
|
var t = useTranslationContext('EmptyStateIndicator').t;
|
|
6854
6867
|
if (listType === 'channel')
|
|
6855
|
-
return React__default['default'].createElement("p",
|
|
6868
|
+
return React__default['default'].createElement("p", { role: 'listitem' }, t('You have no channels currently'));
|
|
6856
6869
|
if (listType === 'message')
|
|
6857
6870
|
return null;
|
|
6858
6871
|
return React__default['default'].createElement("p", null, "No items exist");
|
|
@@ -6862,7 +6875,7 @@ var EmptyStateIndicator = React__default['default'].memo(UnMemoizedEmptyStateInd
|
|
|
6862
6875
|
var UnMemoizedLoadMoreButton = function (props) {
|
|
6863
6876
|
var _a = props.children, children = _a === void 0 ? 'Load more' : _a, onClick = props.onClick, refreshing = props.refreshing;
|
|
6864
6877
|
return (React__default['default'].createElement("div", { className: 'str-chat__load-more-button' },
|
|
6865
|
-
React__default['default'].createElement("button", { className: 'str-chat__load-more-button__button', "data-testid": 'load-more-button', disabled: refreshing, onClick: onClick }, refreshing ? React__default['default'].createElement(reactFileUtils.LoadingIndicator, null) : children)));
|
|
6878
|
+
React__default['default'].createElement("button", { "aria-label": 'Load More Channels', className: 'str-chat__load-more-button__button', "data-testid": 'load-more-button', disabled: refreshing, onClick: onClick }, refreshing ? React__default['default'].createElement(reactFileUtils.LoadingIndicator, null) : children)));
|
|
6866
6879
|
};
|
|
6867
6880
|
var LoadMoreButton = React__default['default'].memo(UnMemoizedLoadMoreButton);
|
|
6868
6881
|
|
|
@@ -7606,7 +7619,7 @@ var Streami18n = /** @class */ (function () {
|
|
|
7606
7619
|
return Streami18n;
|
|
7607
7620
|
}());
|
|
7608
7621
|
|
|
7609
|
-
var version = '6.
|
|
7622
|
+
var version = '6.13.0';
|
|
7610
7623
|
|
|
7611
7624
|
var useChat = function (_a) {
|
|
7612
7625
|
var _b;
|
|
@@ -8341,7 +8354,7 @@ var UnMemoizedCustomNotification = function (props) {
|
|
|
8341
8354
|
var active = props.active, children = props.children, type = props.type;
|
|
8342
8355
|
if (!active)
|
|
8343
8356
|
return null;
|
|
8344
|
-
return (React__default['default'].createElement("div", { className: "str-chat__custom-notification notification-" + type, "data-testid": 'custom-notification' }, children));
|
|
8357
|
+
return (React__default['default'].createElement("div", { "aria-live": 'polite', className: "str-chat__custom-notification notification-" + type, "data-testid": 'custom-notification' }, children));
|
|
8345
8358
|
};
|
|
8346
8359
|
var CustomNotification = React__default['default'].memo(UnMemoizedCustomNotification);
|
|
8347
8360
|
|
|
@@ -8793,7 +8806,7 @@ var UnMemoizedMessageNotification = function (props) {
|
|
|
8793
8806
|
var children = props.children, onClick = props.onClick, _a = props.showNotification, showNotification = _a === void 0 ? true : _a;
|
|
8794
8807
|
if (!showNotification)
|
|
8795
8808
|
return null;
|
|
8796
|
-
return (React__default['default'].createElement("button", { className: 'str-chat__message-notification', "data-testid": 'message-notification', onClick: onClick }, children));
|
|
8809
|
+
return (React__default['default'].createElement("button", { "aria-live": 'polite', className: 'str-chat__message-notification', "data-testid": 'message-notification', onClick: onClick }, children));
|
|
8797
8810
|
};
|
|
8798
8811
|
var MessageNotification = React__default['default'].memo(UnMemoizedMessageNotification);
|
|
8799
8812
|
|
|
@@ -9126,12 +9139,8 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9126
9139
|
var groupedByUser = shouldGroupByUser &&
|
|
9127
9140
|
streamMessageIndex > 0 &&
|
|
9128
9141
|
((_a = message.user) === null || _a === void 0 ? void 0 : _a.id) === ((_b = messageList[streamMessageIndex - 1].user) === null || _b === void 0 ? void 0 : _b.id);
|
|
9129
|
-
var firstOfGroup = shouldGroupByUser &&
|
|
9130
|
-
|
|
9131
|
-
((_c = message.user) === null || _c === void 0 ? void 0 : _c.id) !== ((_e = (_d = messageList[streamMessageIndex - 1]) === null || _d === void 0 ? void 0 : _d.user) === null || _e === void 0 ? void 0 : _e.id);
|
|
9132
|
-
var endOfGroup = shouldGroupByUser &&
|
|
9133
|
-
streamMessageIndex > 0 &&
|
|
9134
|
-
((_f = message.user) === null || _f === void 0 ? void 0 : _f.id) !== ((_h = (_g = messageList[streamMessageIndex + 1]) === null || _g === void 0 ? void 0 : _g.user) === null || _h === void 0 ? void 0 : _h.id);
|
|
9142
|
+
var firstOfGroup = shouldGroupByUser && ((_c = message.user) === null || _c === void 0 ? void 0 : _c.id) !== ((_e = (_d = messageList[streamMessageIndex - 1]) === null || _d === void 0 ? void 0 : _d.user) === null || _e === void 0 ? void 0 : _e.id);
|
|
9143
|
+
var endOfGroup = shouldGroupByUser && ((_f = message.user) === null || _f === void 0 ? void 0 : _f.id) !== ((_h = (_g = messageList[streamMessageIndex + 1]) === null || _g === void 0 ? void 0 : _g.user) === null || _h === void 0 ? void 0 : _h.id);
|
|
9135
9144
|
return (React__default['default'].createElement(Message, { closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: props.customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, message: message, Message: MessageUIComponent, messageActions: props.messageActions }));
|
|
9136
9145
|
}, [customMessageRenderer, shouldGroupByUser, numItemsPrepended]);
|
|
9137
9146
|
var virtuosoComponents = React.useMemo(function () {
|
|
@@ -9212,7 +9221,7 @@ var DefaultThreadHeader = function (props) {
|
|
|
9212
9221
|
React__default['default'].createElement("div", { className: 'str-chat__thread-header-details' },
|
|
9213
9222
|
React__default['default'].createElement("strong", null, t('Thread')),
|
|
9214
9223
|
React__default['default'].createElement("small", null, getReplyCount())),
|
|
9215
|
-
React__default['default'].createElement("button", { className: 'str-chat__square-button', "data-testid": 'close-button', onClick: function (event) { return closeThread(event); } },
|
|
9224
|
+
React__default['default'].createElement("button", { "aria-label": 'Close thread', className: 'str-chat__square-button', "data-testid": 'close-button', onClick: function (event) { return closeThread(event); } },
|
|
9216
9225
|
React__default['default'].createElement("svg", { height: '10', width: '10', xmlns: 'http://www.w3.org/2000/svg' },
|
|
9217
9226
|
React__default['default'].createElement("path", { d: 'M9.916 1.027L8.973.084 5 4.058 1.027.084l-.943.943L4.058 5 .084 8.973l.943.943L5 5.942l3.973 3.974.943-.943L5.942 5z', fillRule: 'evenodd' })))));
|
|
9218
9227
|
};
|
|
@@ -9260,10 +9269,7 @@ var ThreadInner = function (props) {
|
|
|
9260
9269
|
var UnMemoizedWindow = function (props) {
|
|
9261
9270
|
var children = props.children, _a = props.hideOnThread, hideOnThread = _a === void 0 ? false : _a;
|
|
9262
9271
|
var thread = useChannelStateContext('Window').thread;
|
|
9263
|
-
|
|
9264
|
-
if (thread && hideOnThread)
|
|
9265
|
-
return null;
|
|
9266
|
-
return React__default['default'].createElement("div", { className: "str-chat__main-panel" }, children);
|
|
9272
|
+
return (React__default['default'].createElement("div", { className: "str-chat__main-panel " + (hideOnThread && thread ? 'str-chat__main-panel--hideOnThread' : '') }, children));
|
|
9267
9273
|
};
|
|
9268
9274
|
/**
|
|
9269
9275
|
* A UI component for conditionally displaying a Thread or Channel
|
|
@@ -9356,9 +9362,9 @@ exports.MessageText = MessageText;
|
|
|
9356
9362
|
exports.MessageTimestamp = MessageTimestamp;
|
|
9357
9363
|
exports.Modal = Modal;
|
|
9358
9364
|
exports.ModalComponent = ModalComponent;
|
|
9359
|
-
exports.ModalImage = ModalImage;
|
|
9360
9365
|
exports.PinIcon = PinIcon;
|
|
9361
9366
|
exports.PinIndicator = PinIndicator;
|
|
9367
|
+
exports.QuotedMessagePreview = QuotedMessagePreview;
|
|
9362
9368
|
exports.ReactionIcon = ReactionIcon;
|
|
9363
9369
|
exports.ReactionSelector = ReactionSelector;
|
|
9364
9370
|
exports.ReactionsList = ReactionsList;
|