UNPKG

@sendbird/uikit-react

Version:

Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.

83 lines (79 loc) 5.83 kB
import React__default, { useContext } from 'react'; import { d as isFileMessage, e as isMultipleFilesMessage, i as isVoiceMessage, K as isImageMessage, u as isVideoMessage, L as isImageFileInfo, r as isThumbnailMessage, M as isAudioMessage, z as getClassName, v as isGifMessage, n as isUserMessage, o as getUIKitMessageType, U as UIKitMessageTypes } from '../chunks/bundle-vmZ9LoYK.js'; import Icon, { IconTypes, IconColors } from './Icon.js'; import { L as Label, a as LabelTypography, b as LabelColors } from '../chunks/bundle-viBng0Kh.js'; import { L as LocalizationContext } from '../chunks/bundle-Del33VzI.js'; import ImageRenderer from './ImageRenderer.js'; import { c as getMessageFirstFileThumbnailUrl, g as getMessageFirstFileUrl, a as getMessageFirstFileType, b as getMessageFirstFileName } from '../chunks/bundle-h6bAY7E9.js'; import '../chunks/bundle-yl5d1NoZ.js'; import '@sendbird/chat/groupChannel'; import '../utils/message/getOutgoingMessageState.js'; import '../chunks/bundle-DgosLQK9.js'; import '../chunks/bundle-DEuCwnTn.js'; import '../chunks/bundle-fdEQfX2s.js'; import '../chunks/bundle-CqLLOVG5.js'; import '../chunks/bundle-MlG9piGf.js'; import '../chunks/bundle-C1dqPUnT.js'; import '../chunks/bundle-BZGITC2g.js'; var componentClassname = 'sendbird-quote_message_input__avatar'; function QuoteMessageThumbnail(_a) { var _b; var message = _a.message; if (!isFileMessage(message) && !isMultipleFilesMessage(message) || isVoiceMessage(message)) { return React__default.createElement(React__default.Fragment, null); } var thumbnailUrl = getMessageFirstFileThumbnailUrl(message); if (!thumbnailUrl) { if (isImageMessage(message) || isVideoMessage(message)) { thumbnailUrl = getMessageFirstFileUrl(message); } else if (isMultipleFilesMessage(message) && isImageFileInfo((_b = message.fileInfoList) === null || _b === void 0 ? void 0 : _b[0])) { thumbnailUrl = message.fileInfoList[0].url; } } if (isVideoMessage(message) && thumbnailUrl) { return (React__default.createElement("div", { className: componentClassname }, React__default.createElement("video", { style: { width: '44px', height: '44px', }, src: thumbnailUrl }))); } else if ((isThumbnailMessage(message) || isMultipleFilesMessage(message)) && thumbnailUrl) { return (React__default.createElement(ImageRenderer, { className: componentClassname, url: thumbnailUrl, alt: getMessageFirstFileType(message), width: "44px", height: "44px", fixedSize: true })); } else if (isAudioMessage(message)) { return (React__default.createElement("div", { className: componentClassname }, React__default.createElement(Icon, { type: IconTypes.FILE_AUDIO, fillColor: IconColors.ON_BACKGROUND_2, width: "24px", height: "24px" }))); } else { return (React__default.createElement("div", { className: componentClassname }, React__default.createElement(Icon, { type: IconTypes.FILE_DOCUMENT, fillColor: IconColors.ON_BACKGROUND_2, width: "24px", height: "24px" }))); } } function QuoteMessageInput(_a) { var className = _a.className, replyingMessage = _a.replyingMessage, onClose = _a.onClose; var stringSet = useContext(LocalizationContext).stringSet; var fileMessage = replyingMessage; var sender = replyingMessage === null || replyingMessage === void 0 ? void 0 : replyingMessage.sender; var displayFileIcon = (isFileMessage(replyingMessage) || isMultipleFilesMessage(replyingMessage)) && !isVoiceMessage(replyingMessage); return (React__default.createElement("div", { className: getClassName(['sendbird-quote_message_input', className !== null && className !== void 0 ? className : '']) }, displayFileIcon && (React__default.createElement(QuoteMessageThumbnail, { message: fileMessage })), React__default.createElement("div", { className: "sendbird-quote_message_input__body", style: { width: "calc(100% - ".concat(displayFileIcon ? '164px' : '120px', ")"), left: displayFileIcon ? '92px' : '40px', } }, React__default.createElement(Label, { className: "sendbird-quote_message_input__body__sender-name", type: LabelTypography.CAPTION_1, color: LabelColors.ONBACKGROUND_1 }, "".concat(stringSet.QUOTE_MESSAGE_INPUT__REPLY_TO, " ").concat((sender && sender.nickname) ? sender.nickname : stringSet.NO_NAME)), React__default.createElement(Label, { className: "sendbird-quote_message_input__body__message-content", type: LabelTypography.BODY_2, color: LabelColors.ONBACKGROUND_3 }, isImageMessage(fileMessage) && !isGifMessage(fileMessage) && stringSet.QUOTE_MESSAGE_INPUT__FILE_TYPE_IMAGE, isVideoMessage(fileMessage) && stringSet.QUOTE_MESSAGE_INPUT__FILE_TYPE__VIDEO, isGifMessage(fileMessage) && stringSet.QUOTE_MESSAGE_INPUT__FILE_TYPE_GIF, isUserMessage(replyingMessage) && replyingMessage.message, getUIKitMessageType(replyingMessage) === UIKitMessageTypes.FILE && getMessageFirstFileName(fileMessage), isMultipleFilesMessage(replyingMessage) && "".concat(fileMessage.fileInfoList.length, " Photos"), isVoiceMessage(replyingMessage) && stringSet.VOICE_MESSAGE)), React__default.createElement(Icon, { className: "sendbird-quote_message_input__close-button", type: IconTypes.CLOSE, fillColor: IconColors.ON_BACKGROUND_2, width: "24px", height: "24px", onClick: function () { return onClose === null || onClose === void 0 ? void 0 : onClose(replyingMessage); } }))); } export { QuoteMessageInput as default }; //# sourceMappingURL=QuoteMessageInput.js.map