diff --git a/.DS_Store b/.DS_Store
index c7a5be3..25c5734 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fba3947
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,20 @@
+# See https://help.github.com/ignore-files/ for more about ignoring files.
+
+# dependencies
+node_modules
+
+# builds
+build
+.rpt2_cache
+
+# misc
+.DS_Store
+.env
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/README.md b/README.md
index 4165590..d436cfa 100644
--- a/README.md
+++ b/README.md
@@ -4,13 +4,18 @@

[](https://www.npmjs.com/package/sendbird)
+## Note
+
+v2.0.0-alpha.x is still under QA. Please donot use it for production
+Try it only if you want to test OpenChannel
+
## Table of contents
1. [Introduction](#introduction)
1. [Before getting started](#before-getting-started)
1. [Getting started](#getting-started)
- 1. [UIKit at a glance](#uikit-at-a-glance)
- 1. [Appendix](#appendix)
+ 1. [UIKit at a glance](#uikit-at-a-glance)
+ 1. [Appendix](#appendix)
diff --git a/dist/cjs/App.js b/dist/cjs/App.js
new file mode 100644
index 0000000..29b0732
--- /dev/null
+++ b/dist/cjs/App.js
@@ -0,0 +1,150 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var SendbirdProvider = require('./SendbirdProvider.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+var PropTypes = _interopDefault(require('prop-types'));
+require('sendbird');
+require('./actionTypes-920b541f.js');
+require('css-vars-ponyfill');
+require('./index-49d966e1.js');
+var ChannelList = require('./ChannelList.js');
+require('./utils-6aedec02.js');
+require('./index-994f886d.js');
+require('./LeaveChannel-4cf3cd9c.js');
+require('date-fns/isToday');
+require('date-fns/format');
+require('date-fns/isYesterday');
+require('./type-c7a3bee7.js');
+require('./utils-a8277ca2.js');
+require('react-dom');
+require('./index-21269166.js');
+var Channel = require('./Channel.js');
+require('./index-6e58a4a2.js');
+require('date-fns/isSameDay');
+require('./utils-c8e36c68.js');
+require('date-fns/formatDistanceToNowStrict');
+var ChannelSettings = require('./ChannelSettings.js');
+require('./index-63161cb1.js');
+
+function App(props) {
+ var appId = props.appId,
+ userId = props.userId,
+ accessToken = props.accessToken,
+ theme = props.theme,
+ userListQuery = props.userListQuery,
+ nickname = props.nickname,
+ profileUrl = props.profileUrl,
+ _props$config = props.config,
+ config = _props$config === void 0 ? {} : _props$config,
+ useReaction = props.useReaction,
+ useMessageGrouping = props.useMessageGrouping,
+ colorSet = props.colorSet,
+ stringSet = props.stringSet,
+ allowProfileEdit = props.allowProfileEdit,
+ disableUserProfile = props.disableUserProfile,
+ renderUserProfile = props.renderUserProfile,
+ onProfileEditSuccess = props.onProfileEditSuccess;
+
+ var _useState = React.useState(null),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ currentChannelUrl = _useState2[0],
+ setCurrentChannelUrl = _useState2[1];
+
+ var _useState3 = React.useState(false),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ showSettings = _useState4[0],
+ setShowSettings = _useState4[1];
+
+ return React__default.createElement(SendbirdProvider, {
+ stringSet: stringSet,
+ appId: appId,
+ userId: userId,
+ accessToken: accessToken,
+ theme: theme,
+ nickname: nickname,
+ profileUrl: profileUrl,
+ userListQuery: userListQuery,
+ config: config,
+ colorSet: colorSet,
+ disableUserProfile: disableUserProfile,
+ renderUserProfile: renderUserProfile
+ }, React__default.createElement("div", {
+ className: "sendbird-app__wrap"
+ }, React__default.createElement("div", {
+ className: "sendbird-app__channellist-wrap"
+ }, React__default.createElement(ChannelList, {
+ allowProfileEdit: allowProfileEdit,
+ onProfileEditSuccess: onProfileEditSuccess,
+ onChannelSelect: function onChannelSelect(channel) {
+ if (channel && channel.url) {
+ setCurrentChannelUrl(channel.url);
+ } else {
+ setCurrentChannelUrl('');
+ }
+ }
+ })), React__default.createElement("div", {
+ className: "\n ".concat(showSettings ? 'sendbird-app__conversation--settings-open' : '', "\n sendbird-app__conversation-wrap\n ")
+ }, React__default.createElement(Channel.default, {
+ channelUrl: currentChannelUrl,
+ onChatHeaderActionClick: function onChatHeaderActionClick() {
+ if (showSettings) {
+ setShowSettings(false);
+ } else {
+ setShowSettings(true);
+ }
+ },
+ useReaction: useReaction,
+ useMessageGrouping: useMessageGrouping
+ })), showSettings && React__default.createElement("div", {
+ className: "sendbird-app__settingspanel-wrap"
+ }, React__default.createElement(ChannelSettings, {
+ channelUrl: currentChannelUrl,
+ onCloseClick: function onCloseClick() {
+ setShowSettings(false);
+ }
+ }))));
+}
+App.propTypes = {
+ appId: PropTypes.string.isRequired,
+ userId: PropTypes.string.isRequired,
+ accessToken: PropTypes.string,
+ theme: PropTypes.string,
+ userListQuery: PropTypes.func,
+ nickname: PropTypes.string,
+ profileUrl: PropTypes.string,
+ allowProfileEdit: PropTypes.bool,
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ onProfileEditSuccess: PropTypes.func,
+ config: PropTypes.shape({
+ // None Error Warning Info 'All/Debug'
+ logLevel: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+ }),
+ useReaction: PropTypes.bool,
+ useMessageGrouping: PropTypes.bool,
+ stringSet: PropTypes.objectOf(PropTypes.string),
+ colorSet: PropTypes.objectOf(PropTypes.string)
+};
+App.defaultProps = {
+ accessToken: '',
+ theme: 'light',
+ nickname: '',
+ profileUrl: '',
+ userListQuery: null,
+ allowProfileEdit: false,
+ onProfileEditSuccess: null,
+ disableUserProfile: false,
+ renderUserProfile: null,
+ config: {},
+ useReaction: true,
+ useMessageGrouping: true,
+ stringSet: null,
+ colorSet: null
+};
+
+module.exports = App;
+//# sourceMappingURL=App.js.map
diff --git a/dist/cjs/App.js.map b/dist/cjs/App.js.map
new file mode 100644
index 0000000..31acb4b
--- /dev/null
+++ b/dist/cjs/App.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"App.js","sources":["../../../src/smart-components/App/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Sendbird from '../../lib/Sendbird';\n\nimport ChannelList from '../ChannelList';\nimport Conversation from '../Conversation';\nimport ChannelSettings from '../ChannelSettings';\n\nimport './index.scss';\n\nexport default function App(props) {\n const {\n appId,\n userId,\n accessToken,\n theme,\n userListQuery,\n nickname,\n profileUrl,\n config = {},\n useReaction,\n useMessageGrouping,\n colorSet,\n stringSet,\n allowProfileEdit,\n disableUserProfile,\n renderUserProfile,\n onProfileEditSuccess,\n } = props;\n const [currentChannelUrl, setCurrentChannelUrl] = useState(null);\n const [showSettings, setShowSettings] = useState(false);\n return (\n \n \n
\n {\n if (channel && channel.url) {\n setCurrentChannelUrl(channel.url);\n } else {\n setCurrentChannelUrl('');\n }\n }}\n />\n
\n
\n {\n if (showSettings) {\n setShowSettings(false);\n } else {\n setShowSettings(true);\n }\n }}\n useReaction={useReaction}\n useMessageGrouping={useMessageGrouping}\n />\n
\n {showSettings && (\n
\n { setShowSettings(false); }}\n />\n
\n )}\n
\n \n );\n}\n\nApp.propTypes = {\n appId: PropTypes.string.isRequired,\n userId: PropTypes.string.isRequired,\n accessToken: PropTypes.string,\n theme: PropTypes.string,\n userListQuery: PropTypes.func,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n allowProfileEdit: PropTypes.bool,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n onProfileEditSuccess: PropTypes.func,\n config: PropTypes.shape({\n // None Error Warning Info 'All/Debug'\n logLevel: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n }),\n useReaction: PropTypes.bool,\n useMessageGrouping: PropTypes.bool,\n stringSet: PropTypes.objectOf(PropTypes.string),\n colorSet: PropTypes.objectOf(PropTypes.string),\n};\n\nApp.defaultProps = {\n accessToken: '',\n theme: 'light',\n nickname: '',\n profileUrl: '',\n userListQuery: null,\n allowProfileEdit: false,\n onProfileEditSuccess: null,\n disableUserProfile: false,\n renderUserProfile: null,\n config: {},\n useReaction: true,\n useMessageGrouping: true,\n stringSet: null,\n colorSet: null,\n};\n"],"names":["App","props","appId","userId","accessToken","theme","userListQuery","nickname","profileUrl","config","useReaction","useMessageGrouping","colorSet","stringSet","allowProfileEdit","disableUserProfile","renderUserProfile","onProfileEditSuccess","useState","currentChannelUrl","setCurrentChannelUrl","showSettings","setShowSettings","React","Sendbird","channel","url","Conversation","propTypes","PropTypes","string","isRequired","func","bool","shape","logLevel","oneOfType","arrayOf","objectOf","defaultProps"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/cjs/Channel.js b/dist/cjs/Channel.js
new file mode 100644
index 0000000..fd897b1
--- /dev/null
+++ b/dist/cjs/Channel.js
@@ -0,0 +1,5558 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+var PropTypes = _interopDefault(require('prop-types'));
+var index = require('./index-49d966e1.js');
+var utils = require('./utils-6aedec02.js');
+var index$1 = require('./index-994f886d.js');
+var format = _interopDefault(require('date-fns/format'));
+var type = require('./type-c7a3bee7.js');
+var utils$1 = require('./utils-a8277ca2.js');
+require('react-dom');
+var index$2 = require('./index-6e58a4a2.js');
+var isSameDay = _interopDefault(require('date-fns/isSameDay'));
+var utils$2 = require('./utils-c8e36c68.js');
+var formatDistanceToNowStrict = _interopDefault(require('date-fns/formatDistanceToNowStrict'));
+
+var RESET_MESSAGES = 'RESET_MESSAGES';
+var RESET_STATE = 'RESET_STATE';
+var CLEAR_SENT_MESSAGES = 'CLEAR_SENT_MESSAGES';
+var GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';
+var GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';
+var SEND_MESSAGEGE_START = 'SEND_MESSAGEGE_START';
+var SEND_MESSAGEGE_SUCESS = 'SEND_MESSAGEGE_SUCESS';
+var SEND_MESSAGEGE_FAILURE = 'SEND_MESSAGEGE_FAILURE';
+var RESEND_MESSAGEGE_START = 'RESEND_MESSAGEGE_START';
+var ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';
+var ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';
+var ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';
+var ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';
+var SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';
+var SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';
+var MARK_AS_READ = 'MARK_AS_READ';
+var ON_REACTION_UPDATED = 'ON_REACTION_UPDATED';
+var SET_EMOJI_CONTAINER = 'SET_EMOJI_CONTAINER';
+var SET_READ_STATUS = 'SET_READ_STATUS';
+
+var MessageTypes = {
+ ADMIN: 'ADMIN',
+ USER: 'USER',
+ FILE: 'FILE',
+ THUMBNAIL: 'THUMBNAIL',
+ OG: 'OG'
+};
+var SendingMessageStatus = {
+ NONE: 'none',
+ SUCCEEDED: 'succeeded',
+ FAILED: 'failed',
+ PENDING: 'pending'
+};
+var getMessageType = function getMessageType(message) {
+ if (message.isUserMessage && message.isUserMessage() || message.messageType === 'user') {
+ return message.ogMetaData ? MessageTypes.OG : MessageTypes.USER;
+ }
+
+ if (message.isAdminMessage && message.isAdminMessage()) {
+ return MessageTypes.ADMIN;
+ }
+
+ if (message.isFileMessage && message.isFileMessage() || message.messageType === 'file') {
+ return index$2.isImage(message.type) || index$2.isVideo(message.type) ? MessageTypes.THUMBNAIL : MessageTypes.FILE;
+ }
+
+ return '';
+};
+
+var UNDEFINED = 'undefined';
+var SUCCEEDED = SendingMessageStatus.SUCCEEDED,
+ FAILED = SendingMessageStatus.FAILED,
+ PENDING = SendingMessageStatus.PENDING;
+var scrollIntoLast = function scrollIntoLast(selector) {
+ var intialTry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+ var MAX_TRIES = 10;
+ var currentTry = intialTry;
+
+ if (currentTry > MAX_TRIES) {
+ return;
+ }
+
+ try {
+ var nodes = document.querySelectorAll(selector);
+ var last = nodes[nodes.length - 1];
+ last.scrollIntoView(false);
+ /** alignToTop: false */
+ } catch (error) {
+ setTimeout(function () {
+ scrollIntoLast(selector, currentTry + 1);
+ }, 500 * currentTry);
+ }
+};
+var pubSubHandleRemover = function pubSubHandleRemover(subscriber) {
+ subscriber.forEach(function (s) {
+ try {
+ s.remove();
+ } catch (_unused) {//
+ }
+ });
+};
+var pubSubHandler = function pubSubHandler(channelUrl, pubSub, dispatcher) {
+ var subscriber = new Map();
+ if (!pubSub || !pubSub.subscribe) return subscriber;
+ subscriber.set(index.SEND_USER_MESSAGE, pubSub.subscribe(index.SEND_USER_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+ scrollIntoLast('.sendbird-msg--scroll-ref');
+
+ if (channel && channelUrl === channel.url) {
+ dispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(index.SEND_MESSAGE_START, pubSub.subscribe(index.SEND_MESSAGE_START, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+
+ if (channel && channelUrl === channel.url) {
+ dispatcher({
+ type: SEND_MESSAGEGE_START,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(index.SEND_FILE_MESSAGE, pubSub.subscribe(index.SEND_FILE_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+ scrollIntoLast('.sendbird-msg--scroll-ref');
+
+ if (channel && channelUrl === channel.url) {
+ dispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(index.UPDATE_USER_MESSAGE, pubSub.subscribe(index.UPDATE_USER_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message,
+ fromSelector = msg.fromSelector;
+
+ if (fromSelector && channel && channelUrl === channel.url) {
+ dispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ }
+ }));
+ subscriber.set(index.DELETE_MESSAGE, pubSub.subscribe(index.DELETE_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ messageId = msg.messageId;
+
+ if (channel && channelUrl === channel.url) {
+ dispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: messageId
+ });
+ }
+ }));
+ return subscriber;
+};
+var getParsedStatus = function getParsedStatus(message, currentGroupChannel) {
+ if (message.requestState === FAILED) {
+ return type.MessageStatusType.FAILED;
+ }
+
+ if (message.requestState === PENDING) {
+ return type.MessageStatusType.PENDING;
+ }
+
+ if (message.requestState === SUCCEEDED) {
+ if (!currentGroupChannel) {
+ return type.MessageStatusType.SENT;
+ }
+
+ var unreadCount = currentGroupChannel.getReadReceipt(message);
+
+ if (unreadCount === 0) {
+ return type.MessageStatusType.READ;
+ }
+
+ var isDelivered = currentGroupChannel.getDeliveryReceipt(message) === 0;
+
+ if (isDelivered) {
+ return type.MessageStatusType.DELIVERED;
+ }
+
+ return type.MessageStatusType.SENT;
+ }
+
+ return null;
+};
+var isOperator = function isOperator() {
+ var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var myRole = groupChannel.myRole;
+ return myRole === 'operator';
+};
+var isDisabledBecauseFrozen = function isDisabledBecauseFrozen() {
+ var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var isFrozen = groupChannel.isFrozen;
+ return isFrozen && !isOperator(groupChannel);
+};
+var isDisabledBecauseMuted = function isDisabledBecauseMuted() {
+ var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var myMutedState = groupChannel.myMutedState;
+ return myMutedState === 'muted';
+};
+var getEmojiCategoriesFromEmojiContainer = function getEmojiCategoriesFromEmojiContainer() {
+ var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ return emojiContainer.emojiCategories ? emojiContainer.emojiCategories : [];
+};
+var getAllEmojisFromEmojiContainer = function getAllEmojisFromEmojiContainer() {
+ var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var _emojiContainer$emoji = emojiContainer.emojiCategories,
+ emojiCategories = _emojiContainer$emoji === void 0 ? [] : _emojiContainer$emoji;
+ var allEmojis = [];
+
+ for (var categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {
+ var emojis = emojiCategories[categoryIndex].emojis;
+
+ for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {
+ allEmojis.push(emojis[emojiIndex]);
+ }
+ }
+
+ return allEmojis;
+};
+var getEmojisFromEmojiContainer = function getEmojisFromEmojiContainer() {
+ var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var emojiCategoryId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
+ return emojiContainer.emojiCategories ? emojiContainer.emojiCategories.filter(function (emojiCategory) {
+ return emojiCategory.id === emojiCategoryId;
+ })[0].emojis : [];
+};
+var getAllEmojisMapFromEmojiContainer = function getAllEmojisMapFromEmojiContainer() {
+ var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var _emojiContainer$emoji2 = emojiContainer.emojiCategories,
+ emojiCategories = _emojiContainer$emoji2 === void 0 ? [] : _emojiContainer$emoji2;
+ var allEmojisMap = new Map();
+
+ for (var categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {
+ var emojis = emojiCategories[categoryIndex].emojis;
+
+ for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {
+ var _emojis$emojiIndex = emojis[emojiIndex],
+ key = _emojis$emojiIndex.key,
+ url = _emojis$emojiIndex.url;
+ allEmojisMap.set(key, url);
+ }
+ }
+
+ return allEmojisMap;
+};
+var getNicknamesMapFromMembers = function getNicknamesMapFromMembers() {
+ var members = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var nicknamesMap = new Map();
+
+ for (var memberIndex = 0; memberIndex < members.length; memberIndex += 1) {
+ var _members$memberIndex = members[memberIndex],
+ userId = _members$memberIndex.userId,
+ nickname = _members$memberIndex.nickname;
+ nicknamesMap.set(userId, nickname);
+ }
+
+ return nicknamesMap;
+};
+var getMessageCreatedAt = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+var isSameGroup = function isSameGroup(message, comparingMessage) {
+ if (!message || !comparingMessage || !message.sender || !comparingMessage.sender || !message.createdAt || !comparingMessage.createdAt || !message.sender.userId || !comparingMessage.sender.userId) {
+ return false;
+ }
+
+ return message.sendingStatus === comparingMessage.sendingStatus && message.sender.userId === comparingMessage.sender.userId && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage);
+};
+var compareMessagesForGrouping = function compareMessagesForGrouping(prevMessage, currMessage, nextMessage) {
+ return [isSameGroup(prevMessage, currMessage), isSameGroup(currMessage, nextMessage)];
+};
+var passUnsuccessfullMessages = function passUnsuccessfullMessages(allMessages, newMessage) {
+ var _newMessage$sendingSt = newMessage.sendingStatus,
+ sendingStatus = _newMessage$sendingSt === void 0 ? UNDEFINED : _newMessage$sendingSt;
+
+ if (sendingStatus === SUCCEEDED || sendingStatus === PENDING) {
+ var lastIndexOfSucceededMessage = allMessages.map(function (message) {
+ return message.sendingStatus || (message.isAdminMessage && message.isAdminMessage() ? SUCCEEDED : UNDEFINED);
+ }).lastIndexOf(SUCCEEDED);
+
+ if (lastIndexOfSucceededMessage + 1 < allMessages.length) {
+ var messages = LocalizationContext._toConsumableArray(allMessages);
+
+ messages.splice(lastIndexOfSucceededMessage + 1, 0, newMessage);
+ return messages;
+ }
+ }
+
+ return [].concat(LocalizationContext._toConsumableArray(allMessages), [newMessage]);
+};
+
+var messagesInitialState = {
+ initialized: false,
+ loading: false,
+ allMessages: [],
+ currentGroupChannel: {
+ members: []
+ },
+ hasMore: false,
+ lastMessageTimeStamp: 0,
+ emojiContainer: {},
+ readStatus: {},
+ unreadCount: 0,
+ unreadSince: null,
+ isInvalid: false
+};
+
+var SUCCEEDED$1 = SendingMessageStatus.SUCCEEDED,
+ FAILED$1 = SendingMessageStatus.FAILED,
+ PENDING$1 = SendingMessageStatus.PENDING;
+function reducer(state, action) {
+ switch (action.type) {
+ case RESET_STATE:
+ return messagesInitialState;
+
+ case RESET_MESSAGES:
+ return LocalizationContext._objectSpread2({}, state, {
+ // when user switches channel, if the previous channel `hasMore`
+ // the onScroll gets called twice, setting hasMore false prevents this
+ hasMore: false,
+ allMessages: []
+ });
+
+ case GET_PREV_MESSAGES_START:
+ return LocalizationContext._objectSpread2({}, state, {
+ loading: true
+ });
+
+ case CLEAR_SENT_MESSAGES:
+ return LocalizationContext._objectSpread2({}, state, {
+ allMessages: LocalizationContext._toConsumableArray(state.allMessages.filter(function (m) {
+ return m.sendingStatus !== SUCCEEDED$1;
+ }))
+ });
+
+ case GET_PREV_MESSAGES_SUCESS:
+ {
+ var receivedMessages = action.payload.messages || [];
+ var _action$payload$curre = action.payload.currentGroupChannel,
+ currentGroupChannel = _action$payload$curre === void 0 ? {} : _action$payload$curre;
+ var stateChannel = state.currentGroupChannel || {};
+ var stateChannelUrl = stateChannel.url;
+ var actionChannelUrl = currentGroupChannel.url;
+
+ if (actionChannelUrl !== stateChannelUrl) {
+ return state;
+ } // remove duplicate messages
+
+
+ var filteredAllMessages = state.allMessages.filter(function (msg) {
+ return !receivedMessages.find(function (_ref) {
+ var messageId = _ref.messageId;
+ return index$2.compareIds(messageId, msg.messageId);
+ });
+ });
+ return LocalizationContext._objectSpread2({}, state, {
+ loading: false,
+ initialized: true,
+ hasMore: action.payload.hasMore,
+ lastMessageTimeStamp: action.payload.lastMessageTimeStamp,
+ allMessages: [].concat(LocalizationContext._toConsumableArray(receivedMessages), LocalizationContext._toConsumableArray(filteredAllMessages))
+ });
+ }
+
+ case SEND_MESSAGEGE_START:
+ return LocalizationContext._objectSpread2({}, state, {
+ allMessages: [].concat(LocalizationContext._toConsumableArray(state.allMessages), [LocalizationContext._objectSpread2({}, action.payload)])
+ });
+
+ case SEND_MESSAGEGE_SUCESS:
+ {
+ var newMessages = state.allMessages.map(function (m) {
+ return index$2.compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
+ });
+
+ LocalizationContext._toConsumableArray(newMessages).sort(function (a, b) {
+ return a.sendingStatus && b.sendingStatus && a.sendingStatus === SUCCEEDED$1 && (b.sendingStatus === PENDING$1 || b.sendingStatus === FAILED$1) ? -1 : 1;
+ });
+
+ return LocalizationContext._objectSpread2({}, state, {
+ allMessages: newMessages
+ });
+ }
+
+ case SEND_MESSAGEGE_FAILURE:
+ {
+ // eslint-disable-next-line no-param-reassign
+ action.payload.failed = true;
+ return LocalizationContext._objectSpread2({}, state, {
+ allMessages: state.allMessages.map(function (m) {
+ return index$2.compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
+ })
+ });
+ }
+
+ case SET_CURRENT_CHANNEL:
+ {
+ return LocalizationContext._objectSpread2({}, state, {
+ currentGroupChannel: action.payload,
+ isInvalid: false
+ });
+ }
+
+ case SET_CHANNEL_INVALID:
+ {
+ return LocalizationContext._objectSpread2({}, state, {
+ isInvalid: true
+ });
+ }
+
+ case ON_MESSAGE_RECEIVED:
+ {
+ var _action$payload = action.payload,
+ channel = _action$payload.channel,
+ message = _action$payload.message;
+
+ var _state$currentGroupCh = state.currentGroupChannel,
+ _currentGroupChannel = _state$currentGroupCh === void 0 ? {} : _state$currentGroupCh,
+ unreadCount = state.unreadCount,
+ unreadSince = state.unreadSince;
+
+ var currentGroupChannelUrl = _currentGroupChannel.url;
+
+ if (!index$2.compareIds(channel.url, currentGroupChannelUrl)) {
+ return state;
+ } // Excluded overlapping messages
+
+
+ if (!(state.allMessages.map(function (msg) {
+ return msg.messageId;
+ }).indexOf(message.messageId) < 0)) {
+ return state;
+ }
+
+ if (message.isAdminMessage && message.isAdminMessage()) {
+ return LocalizationContext._objectSpread2({}, state, {
+ allMessages: passUnsuccessfullMessages(state.allMessages, message)
+ });
+ }
+
+ return LocalizationContext._objectSpread2({}, state, {
+ unreadCount: unreadCount + 1,
+ unreadSince: unreadCount === 0 ? format(new Date(), 'p MMM dd') : unreadSince,
+ allMessages: passUnsuccessfullMessages(state.allMessages, message)
+ });
+ }
+
+ case ON_MESSAGE_UPDATED:
+ return LocalizationContext._objectSpread2({}, state, {
+ allMessages: state.allMessages.map(function (m) {
+ return index$2.compareIds(m.messageId, action.payload.message.messageId) ? action.payload.message : m;
+ })
+ });
+
+ case RESEND_MESSAGEGE_START:
+ return LocalizationContext._objectSpread2({}, state, {
+ allMessages: state.allMessages.map(function (m) {
+ return index$2.compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
+ })
+ });
+
+ case MARK_AS_READ:
+ return LocalizationContext._objectSpread2({}, state, {
+ unreadCount: 0,
+ unreadSince: null
+ });
+
+ case ON_MESSAGE_DELETED:
+ return LocalizationContext._objectSpread2({}, state, {
+ allMessages: state.allMessages.filter(function (m) {
+ return !index$2.compareIds(m.messageId, action.payload);
+ })
+ });
+
+ case ON_MESSAGE_DELETED_BY_REQ_ID:
+ return LocalizationContext._objectSpread2({}, state, {
+ allMessages: state.allMessages.filter(function (m) {
+ return !index$2.compareIds(m.reqId, action.payload);
+ })
+ });
+
+ case SET_EMOJI_CONTAINER:
+ {
+ return LocalizationContext._objectSpread2({}, state, {
+ emojiContainer: action.payload
+ });
+ }
+
+ case SET_READ_STATUS:
+ {
+ return LocalizationContext._objectSpread2({}, state, {
+ readStatus: action.payload
+ });
+ }
+
+ case ON_REACTION_UPDATED:
+ {
+ return LocalizationContext._objectSpread2({}, state, {
+ allMessages: state.allMessages.map(function (m) {
+ if (index$2.compareIds(m.messageId, action.payload.messageId)) {
+ if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {
+ m.applyReactionEvent(action.payload);
+ }
+
+ return m;
+ }
+
+ return m;
+ })
+ });
+ }
+
+ default:
+ return state;
+ }
+}
+
+/**
+ * Handles ChannelEvents and send values to dispatcher using messagesDispatcher
+ * messagesDispatcher: Dispatcher
+ * sdk: sdkInstance
+ * logger: loggerInstance
+ * channelUrl: string
+ * sdkInit: bool
+ */
+
+function useHandleChannelEvents(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ sdkInit = _ref.sdkInit;
+ var messagesDispatcher = _ref2.messagesDispatcher,
+ sdk = _ref2.sdk,
+ logger = _ref2.logger;
+ var channelUrl = currentGroupChannel && currentGroupChannel.url;
+ React.useEffect(function () {
+ var messageReceiverId = LocalizationContext.uuidv4$1();
+
+ if (channelUrl && sdk && sdk.ChannelHandler) {
+ var ChannelHandler = new sdk.ChannelHandler();
+ logger.info('Channel | useHandleChannelEvents: Setup event handler', messageReceiverId);
+
+ ChannelHandler.onMessageReceived = function (channel, message) {
+ if (index$2.compareIds(channel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_RECEIVED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ }
+ };
+
+ ChannelHandler.onMessageUpdated = function (channel, message) {
+ logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ };
+
+ ChannelHandler.onMessageDeleted = function (_, messageId) {
+ logger.info('Channel | useHandleChannelEvents: onMessageDeleted', messageId);
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: messageId
+ });
+ };
+
+ ChannelHandler.onReactionUpdated = function (_, reactionEvent) {
+ logger.info('Channel | useHandleChannelEvents: onReactionUpdated', reactionEvent);
+ messagesDispatcher({
+ type: ON_REACTION_UPDATED,
+ payload: reactionEvent
+ });
+ };
+
+ ChannelHandler.onChannelChanged = function (groupChannel) {
+ if (index$2.compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onChannelChanged', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onChannelFrozen = function (groupChannel) {
+ if (index$2.compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onChannelFrozen', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onChannelUnfrozen = function (groupChannel) {
+ if (index$2.compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onUserMuted = function (groupChannel) {
+ if (index$2.compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onUserMuted', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onUserUnmuted = function (groupChannel) {
+ if (index$2.compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onUserUnmuted', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onUserBanned = function (groupChannel) {
+ if (index$2.compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onUserBanned', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onOperatorUpdated = function (groupChannel) {
+ if (index$2.compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ }; // Add this channel event handler to the SendBird object.
+
+
+ sdk.addChannelHandler(messageReceiverId, ChannelHandler);
+ }
+
+ return function () {
+ if (sdk && sdk.removeChannelHandler) {
+ logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', messageReceiverId);
+ sdk.removeChannelHandler(messageReceiverId);
+ }
+ };
+ }, [channelUrl, sdkInit]);
+}
+
+function useSetChannel(_ref, _ref2) {
+ var channelUrl = _ref.channelUrl,
+ sdkInit = _ref.sdkInit;
+ var messagesDispatcher = _ref2.messagesDispatcher,
+ sdk = _ref2.sdk,
+ logger = _ref2.logger;
+ React.useEffect(function () {
+ if (channelUrl && sdkInit && sdk && sdk.GroupChannel) {
+ logger.info('Channel | useSetChannel fetching channel', channelUrl);
+ sdk.GroupChannel.getChannel(channelUrl).then(function (groupChannel) {
+ logger.info('Channel | useSetChannel fetched channel', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ logger.info('Channel: Mark as read', groupChannel); // this order is important - this mark as read should update the event handler up above
+
+ groupChannel.markAsRead();
+ }).catch(function (e) {
+ logger.warning('Channel | useSetChannel fetch channel failed', {
+ channelUrl: channelUrl,
+ e: e
+ });
+ messagesDispatcher({
+ type: SET_CHANNEL_INVALID
+ });
+ });
+ sdk.getAllEmoji(function (emojiContainer_, err) {
+ if (err) {
+ logger.error('Channel: Getting emojis failed', err);
+ return;
+ }
+
+ logger.info('Channel: Getting emojis success', emojiContainer_);
+ messagesDispatcher({
+ type: SET_EMOJI_CONTAINER,
+ payload: emojiContainer_
+ });
+ });
+ }
+ }, [channelUrl, sdkInit]);
+}
+
+function useInitialMessagesFetch(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ userFilledMessageListQuery = _ref.userFilledMessageListQuery;
+ var sdk = _ref2.sdk,
+ logger = _ref2.logger,
+ messagesDispatcher = _ref2.messagesDispatcher;
+ var channelUrl = currentGroupChannel && currentGroupChannel.url;
+ React.useEffect(function () {
+ logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);
+ messagesDispatcher({
+ type: RESET_MESSAGES
+ });
+
+ if (sdk && sdk.MessageListParams && currentGroupChannel && currentGroupChannel.getMessagesByMessageId) {
+ var messageListParams = new sdk.MessageListParams();
+ messageListParams.prevResultSize = 30;
+ messageListParams.isInclusive = true;
+ messageListParams.includeReplies = false;
+ messageListParams.includeReaction = true;
+
+ if (userFilledMessageListQuery) {
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
+ messageListParams[key] = userFilledMessageListQuery[key];
+ });
+ }
+
+ logger.info('Channel: Fetching messages', {
+ currentGroupChannel: currentGroupChannel,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ });
+ currentGroupChannel.getMessagesByTimestamp(new Date().getTime(), messageListParams).then(function (messages) {
+ var hasMore = messages && messages.length > 0;
+ var lastMessageTimeStamp = hasMore ? messages[0].createdAt : null;
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ messages: messages,
+ hasMore: hasMore,
+ lastMessageTimeStamp: lastMessageTimeStamp,
+ currentGroupChannel: currentGroupChannel
+ }
+ });
+ }).catch(function (error) {
+ logger.error('Channel: Fetching messages failed', error);
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ messages: [],
+ hasMore: false,
+ lastMessageTimeStamp: 0,
+ currentGroupChannel: currentGroupChannel
+ }
+ });
+ }).finally(function () {
+ currentGroupChannel.markAsRead();
+ setTimeout(function () {
+ return scrollIntoLast('.sendbird-msg--scroll-ref');
+ });
+ });
+ }
+ }, [channelUrl, userFilledMessageListQuery]);
+}
+
+function useHandleReconnect(_ref, _ref2) {
+ var isOnline = _ref.isOnline;
+ var logger = _ref2.logger,
+ sdk = _ref2.sdk,
+ currentGroupChannel = _ref2.currentGroupChannel,
+ messagesDispatcher = _ref2.messagesDispatcher,
+ userFilledMessageListQuery = _ref2.userFilledMessageListQuery;
+ React.useEffect(function () {
+ var wasOffline = !isOnline;
+ return function () {
+ // state changed from offline to online
+ if (wasOffline) {
+ logger.info('Refreshing conversation state');
+ var _sdk$appInfo = sdk.appInfo,
+ appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
+ var useReaction = appInfo.isUsingReaction || false;
+ var messageListParams = new sdk.MessageListParams();
+ messageListParams.prevResultSize = 30;
+ messageListParams.includeReplies = false;
+ messageListParams.includeReaction = useReaction;
+
+ if (userFilledMessageListQuery) {
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
+ messageListParams[key] = userFilledMessageListQuery[key];
+ });
+ }
+
+ logger.info('Channel: Fetching messages', {
+ currentGroupChannel: currentGroupChannel,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ });
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_START
+ });
+ sdk.GroupChannel.getChannel(currentGroupChannel.url).then(function (groupChannel) {
+ var lastMessageTime = new Date().getTime();
+ groupChannel.getMessagesByTimestamp(lastMessageTime, messageListParams).then(function (messages) {
+ messagesDispatcher({
+ type: CLEAR_SENT_MESSAGES
+ });
+ var hasMore = messages && messages.length > 0;
+ var lastMessageTimeStamp = hasMore ? messages[0].createdAt : null;
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ messages: messages,
+ hasMore: hasMore,
+ lastMessageTimeStamp: lastMessageTimeStamp,
+ currentGroupChannel: currentGroupChannel
+ }
+ });
+ setTimeout(function () {
+ return scrollIntoLast('.sendbird-msg--scroll-ref');
+ });
+ }).catch(function (error) {
+ logger.error('Channel: Fetching messages failed', error);
+ }).finally(function () {
+ currentGroupChannel.markAsRead();
+ });
+ });
+ }
+ };
+ }, [isOnline]);
+}
+
+function useScrollCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ lastMessageTimeStamp = _ref.lastMessageTimeStamp,
+ userFilledMessageListQuery = _ref.userFilledMessageListQuery;
+ var hasMore = _ref2.hasMore,
+ logger = _ref2.logger,
+ messagesDispatcher = _ref2.messagesDispatcher,
+ sdk = _ref2.sdk;
+ return React.useCallback(function (cb) {
+ if (!hasMore) {
+ return;
+ }
+
+ var messageListParams = new sdk.MessageListParams();
+ messageListParams.prevResultSize = 30;
+ messageListParams.includeReplies = false;
+ messageListParams.includeReaction = true;
+
+ if (userFilledMessageListQuery) {
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
+ messageListParams[key] = userFilledMessageListQuery[key];
+ });
+ }
+
+ logger.info('Channel: Fetching messages', {
+ currentGroupChannel: currentGroupChannel,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ });
+ currentGroupChannel.getMessagesByTimestamp(lastMessageTimeStamp || new Date().getTime(), messageListParams).then(function (messages) {
+ var hasMoreMessages = messages && messages.length > 0;
+ var lastMessageTs = hasMoreMessages ? messages[0].createdAt : null;
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ messages: messages,
+ hasMore: hasMoreMessages,
+ lastMessageTimeStamp: lastMessageTs,
+ currentGroupChannel: currentGroupChannel
+ }
+ });
+ cb([messages, null]);
+ }).catch(function (error) {
+ logger.error('Channel: Fetching messages failed', error);
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ messages: [],
+ hasMore: false,
+ lastMessageTimeStamp: 0,
+ currentGroupChannel: currentGroupChannel
+ }
+ });
+ cb([null, error]);
+ }).finally(function () {
+ currentGroupChannel.markAsRead();
+ });
+ }, [currentGroupChannel, lastMessageTimeStamp]);
+}
+
+function useDeleteMessageCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ messagesDispatcher = _ref.messagesDispatcher;
+ var logger = _ref2.logger;
+ return React.useCallback(function (message, cb) {
+ logger.info('Channel | useDeleteMessageCallback: Deleting message', message);
+ var requestState = message.requestState;
+ logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', requestState); // Message is only on local
+
+ if (requestState === 'failed' || requestState === 'pending') {
+ logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED_BY_REQ_ID,
+ payload: message.reqId
+ });
+
+ if (cb) {
+ cb();
+ }
+
+ return;
+ } // Message is on server
+
+
+ currentGroupChannel.deleteMessage(message, function (err) {
+ logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', requestState);
+
+ if (cb) {
+ cb(err);
+ }
+
+ if (!err) {
+ logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: message.messageId
+ });
+ } else {
+ logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);
+ }
+ });
+ }, [currentGroupChannel, messagesDispatcher]);
+}
+
+function useUpdateMessageCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ messagesDispatcher = _ref.messagesDispatcher,
+ onBeforeUpdateUserMessage = _ref.onBeforeUpdateUserMessage;
+ var logger = _ref2.logger,
+ pubSub = _ref2.pubSub,
+ sdk = _ref2.sdk;
+ return React.useCallback(function (messageId, text, cb) {
+ var createParamsDefault = function createParamsDefault(txt) {
+ var params = new sdk.UserMessageParams();
+ params.message = txt;
+ return params;
+ };
+
+ var createCustomPrams = onBeforeUpdateUserMessage && typeof onBeforeUpdateUserMessage === 'function';
+
+ if (createCustomPrams) {
+ logger.info('Channel: creating params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);
+ }
+
+ var params = onBeforeUpdateUserMessage ? onBeforeUpdateUserMessage(text) : createParamsDefault(text);
+ currentGroupChannel.updateUserMessage(messageId, params, function (r, e) {
+ logger.info('Channel: Updating message!', params);
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = r;
+ var err = e;
+
+ if (swapParams) {
+ message = e;
+ err = r;
+ }
+
+ if (cb) {
+ cb(err, message);
+ }
+
+ if (!err) {
+ logger.info('Channel: Updating message success!', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: currentGroupChannel,
+ message: message
+ }
+ });
+ pubSub.publish(index.UPDATE_USER_MESSAGE, {
+ message: message,
+ channel: currentGroupChannel
+ });
+ } else {
+ logger.warning('Channel: Updating message failed!', err);
+ }
+ });
+ }, [currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);
+}
+
+function useResendMessageCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ messagesDispatcher = _ref.messagesDispatcher;
+ var logger = _ref2.logger;
+ return React.useCallback(function (failedMessage) {
+ logger.info('Channel: Resending message has started', failedMessage);
+ var messageType = failedMessage.messageType,
+ file = failedMessage.file;
+
+ if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable()) {
+ // eslint-disable-next-line no-param-reassign
+ failedMessage.requestState = 'pending';
+ messagesDispatcher({
+ type: RESEND_MESSAGEGE_START,
+ payload: failedMessage
+ }); // userMessage
+
+ if (messageType === 'user') {
+ currentGroupChannel.resendUserMessage(failedMessage).then(function (message) {
+ logger.info('Channel: Resending message success!', {
+ message: message
+ });
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ }).catch(function (e) {
+ logger.warning('Channel: Resending message failed!', {
+ e: e
+ }); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'failed';
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_FAILURE,
+ payload: failedMessage
+ });
+ }); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'pending';
+ messagesDispatcher({
+ type: RESEND_MESSAGEGE_START,
+ payload: failedMessage
+ });
+ return;
+ }
+
+ if (messageType === 'file') {
+ currentGroupChannel.resendFileMessage(failedMessage, file).then(function (message) {
+ logger.info('Channel: Resending file message success!', {
+ message: message
+ });
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ }).catch(function (e) {
+ logger.warning('Channel: Resending file message failed!', {
+ e: e
+ }); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'failed';
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_FAILURE,
+ payload: failedMessage
+ });
+ }); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'pending';
+ messagesDispatcher({
+ type: RESEND_MESSAGEGE_START,
+ payload: failedMessage
+ });
+ }
+ } else {
+ // to alert user on console
+ // eslint-disable-next-line no-console
+ console.error('Message is not resendable');
+ logger.warning('Message is not resendable', failedMessage);
+ }
+ }, [currentGroupChannel, messagesDispatcher]);
+}
+
+function useSendMessageCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ onBeforeSendUserMessage = _ref.onBeforeSendUserMessage;
+ var sdk = _ref2.sdk,
+ logger = _ref2.logger,
+ pubSub = _ref2.pubSub,
+ messagesDispatcher = _ref2.messagesDispatcher;
+ var messageInputRef = React.useRef(null);
+ var sendMessage = React.useCallback(function () {
+ var text = messageInputRef.current.value;
+
+ var createParamsDefault = function createParamsDefault(txt) {
+ var message = typeof txt === 'string' ? txt.trim() : txt;
+ var params = new sdk.UserMessageParams();
+ params.message = message;
+ return params;
+ };
+
+ var createCustomPrams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
+
+ if (createCustomPrams) {
+ logger.info('Channel: creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);
+ }
+
+ var params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);
+ logger.info('Channel: Sending message has started', params);
+ var pendingMsg = currentGroupChannel.sendUserMessage(params, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ } // sending params instead of pending message
+ // to make sure that we can resend the message once it fails
+
+
+ if (error) {
+ logger.warning('Channel: Sending message failed!', {
+ message: message
+ });
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_FAILURE,
+ payload: message
+ });
+ return;
+ }
+
+ logger.info('Channel: Sending message success!', message);
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ });
+ pubSub.publish(index.SEND_MESSAGE_START, {
+ /* pubSub is used instead of messagesDispatcher
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
+ message: pendingMsg,
+ channel: currentGroupChannel
+ });
+ setTimeout(function () {
+ return scrollIntoLast('.sendbird-msg--scroll-ref');
+ });
+ }, [currentGroupChannel, onBeforeSendUserMessage]);
+ return [messageInputRef, sendMessage];
+}
+
+function useSendFileMessageCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ onBeforeSendFileMessage = _ref.onBeforeSendFileMessage;
+ var sdk = _ref2.sdk,
+ logger = _ref2.logger,
+ pubSub = _ref2.pubSub,
+ messagesDispatcher = _ref2.messagesDispatcher;
+ var sendMessage = React.useCallback(function (file) {
+ var createParamsDefault = function createParamsDefault(file_) {
+ var params = new sdk.FileMessageParams();
+ params.file = file_;
+ return params;
+ };
+
+ var createCustomPrams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';
+
+ if (createCustomPrams) {
+ logger.info('Channel: creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
+ }
+
+ var params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file) : createParamsDefault(file);
+ logger.info('Channel: Uploading file message start!', params);
+ var pendingMsg = currentGroupChannel.sendFileMessage(params, function (response, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = response;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = response;
+ }
+
+ if (error) {
+ // sending params instead of pending message
+ // to make sure that we can resend the message once it fails
+ logger.error('Channel: Sending file message failed!', message);
+ message.localUrl = URL.createObjectURL(file);
+ message.file = file;
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_FAILURE,
+ payload: message
+ });
+ return;
+ }
+
+ logger.info('Channel: Sending message success!', message);
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ });
+ pubSub.publish(index.SEND_MESSAGE_START, {
+ /* pubSub is used instead of messagesDispatcher
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
+ message: LocalizationContext._objectSpread2({}, pendingMsg, {
+ url: URL.createObjectURL(file),
+ // pending thumbnail message seems to be failed
+ requestState: 'pending'
+ }),
+ channel: currentGroupChannel
+ });
+ setTimeout(function () {
+ return scrollIntoLast('.sendbird-msg--scroll-ref');
+ }, 1000);
+ }, [currentGroupChannel, onBeforeSendFileMessage]);
+ return [sendMessage];
+}
+
+function useSetReadStatus(_ref, _ref2) {
+ var allMessages = _ref.allMessages,
+ currentGroupChannel = _ref.currentGroupChannel;
+ var messagesDispatcher = _ref2.messagesDispatcher,
+ sdk = _ref2.sdk,
+ logger = _ref2.logger;
+ React.useEffect(function () {
+ if (!sdk.ChannelHandler || !currentGroupChannel.url) {
+ return function () {};
+ } // todo: move to reducer?
+
+
+ var setReadStatus = function setReadStatus() {
+ var allReadStatus = allMessages.reduce(function (accumulator, msg) {
+ if (msg.messageId !== 0) {
+ return LocalizationContext._objectSpread2({}, accumulator, LocalizationContext._defineProperty({}, msg.messageId, getParsedStatus(msg, currentGroupChannel)));
+ }
+
+ return accumulator;
+ }, {});
+ messagesDispatcher({
+ type: SET_READ_STATUS,
+ payload: allReadStatus
+ });
+ };
+
+ if (allMessages.length > 0) {
+ setReadStatus();
+ }
+
+ var channelUrl = currentGroupChannel.url;
+ var handler = new sdk.ChannelHandler();
+
+ var handleMessageStatus = function handleMessageStatus(c) {
+ if (channelUrl === c.url) {
+ setReadStatus();
+ }
+ };
+
+ handler.onDeliveryReceiptUpdated = handleMessageStatus;
+ handler.onReadReceiptUpdated = handleMessageStatus; // Add this channel event handler to the SendBird object.
+
+ var handlerId = LocalizationContext.uuidv4$1();
+ logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);
+ sdk.addChannelHandler(handlerId, handler);
+ return function () {
+ if (sdk && sdk.removeChannelHandler) {
+ logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);
+ sdk.removeChannelHandler(handlerId);
+ }
+ };
+ }, [allMessages, currentGroupChannel]);
+}
+
+var ReactionButton = React__default.forwardRef(function (props, ref) {
+ var children = props.children,
+ width = props.width,
+ height = props.height,
+ _onClick = props.onClick,
+ selected = props.selected,
+ className = props.className;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React__default.createElement("div", {
+ ref: ref,
+ className: "sendbird-reaction-button".concat(selected ? '--selected' : '', " ").concat(injectingClassName.join(' ')),
+ style: {
+ width: typeof width === 'string' ? "".concat(width.slice(0, -2) - 2, "px") : "".concat(width - 2, "px"),
+ height: typeof height === 'string' ? "".concat(height.slice(0, -2) - 2, "px") : "".concat(height - 2, "px")
+ },
+ onClick: function onClick(e) {
+ return _onClick(e);
+ },
+ role: "button",
+ onKeyDown: function onKeyDown(e) {
+ return _onClick(e);
+ },
+ tabIndex: 0
+ }, React__default.createElement("div", {
+ className: "sendbird-reaction-button__inner"
+ }, children));
+});
+ReactionButton.propTypes = {
+ children: PropTypes.element.isRequired,
+ onClick: PropTypes.func,
+ selected: PropTypes.bool,
+ width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+ height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+ReactionButton.defaultProps = {
+ selected: false,
+ width: '36px',
+ height: '36px',
+ onClick: function onClick() {},
+ className: ''
+};
+
+function useMemoizedEmojiListItems(_ref, _ref2) {
+ var emojiContainer = _ref.emojiContainer,
+ toggleReaction = _ref.toggleReaction;
+ var useReaction = _ref2.useReaction,
+ logger = _ref2.logger,
+ userId = _ref2.userId,
+ emojiAllList = _ref2.emojiAllList;
+ return React.useMemo(function () {
+ return function (_ref3) {
+ var parentRef = _ref3.parentRef,
+ parentContainRef = _ref3.parentContainRef,
+ message = _ref3.message,
+ closeDropdown = _ref3.closeDropdown,
+ _ref3$spaceFromTrigge = _ref3.spaceFromTrigger,
+ spaceFromTrigger = _ref3$spaceFromTrigge === void 0 ? {} : _ref3$spaceFromTrigge;
+
+ if (!useReaction || !(parentRef || parentContainRef || message || closeDropdown)) {
+ logger.warning('Channel: Invalid Params in memoizedEmojiListItems');
+ return null;
+ }
+
+ return React__default.createElement(index.EmojiListItems, {
+ parentRef: parentRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: spaceFromTrigger
+ }, emojiAllList.map(function (emoji) {
+ var reactedReaction = message.reactions.filter(function (reaction) {
+ return reaction.key === emoji.key;
+ })[0];
+ var isReacted = reactedReaction ? !(reactedReaction.userIds.indexOf(userId) < 0) : false;
+ return React__default.createElement(ReactionButton, {
+ key: emoji.key,
+ width: "36px",
+ height: "36px",
+ selected: isReacted,
+ onClick: function onClick() {
+ closeDropdown();
+ toggleReaction(message, emoji.key, isReacted);
+ }
+ }, React__default.createElement(index.ImageRenderer, {
+ url: emoji.url,
+ width: "28px",
+ height: "28px",
+ defaultComponent: React__default.createElement(index.Icon, {
+ width: "28px",
+ height: "28px",
+ type: index.IconTypes.EMOJI_FAILED
+ })
+ }));
+ }));
+ };
+ }, [emojiContainer, toggleReaction]);
+}
+
+function useToggleReactionCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel;
+ var logger = _ref2.logger;
+ return React.useCallback(function (message, key, isReacted) {
+ if (isReacted) {
+ currentGroupChannel.deleteReaction(message, key).then(function (res) {
+ logger.info('Delete reaction success', res);
+ }).catch(function (err) {
+ logger.warning('Delete reaction failed', err);
+ });
+ return;
+ }
+
+ currentGroupChannel.addReaction(message, key).then(function (res) {
+ logger.info('Add reaction success', res);
+ }).catch(function (err) {
+ logger.warning('Add reaction failed', err);
+ });
+ }, [currentGroupChannel]);
+}
+
+function MessageStatus(_ref) {
+ var message = _ref.message,
+ status = _ref.status,
+ className = _ref.className;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+
+ var label = function label() {
+ switch (status) {
+ case type.MessageStatusType.FAILED:
+ case type.MessageStatusType.PENDING:
+ {
+ return null;
+ }
+
+ case type.MessageStatusType.SENT:
+ case type.MessageStatusType.DELIVERED:
+ case type.MessageStatusType.READ:
+ {
+ return React__default.createElement(index.Label, {
+ className: "sendbird-message-status__text",
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, utils.getMessageCreatedAt(message));
+ }
+
+ default:
+ return null;
+ }
+ };
+
+ var icon = {
+ PENDING: React__default.createElement(index.Loader, {
+ className: "sendbird-message-status__icon",
+ width: "16px",
+ height: "16px"
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.SPINNER,
+ width: "16px",
+ height: "16px"
+ })),
+ SENT: React__default.createElement(index.Icon, {
+ className: "sendbird-message-status__icon",
+ width: "16px",
+ height: "16px",
+ type: index.IconTypes.SENT,
+ fillColor: index.IconColors.SENT
+ }),
+ DELIVERED: React__default.createElement(index.Icon, {
+ className: "sendbird-message-status__icon",
+ width: "16px",
+ height: "16px",
+ type: index.IconTypes.DELIVERED,
+ fillColor: index.IconColors.SENT
+ }),
+ READ: React__default.createElement(index.Icon, {
+ className: "sendbird-message-status__icon",
+ width: "16px",
+ height: "16px",
+ type: index.IconTypes.READ,
+ fillColor: index.IconColors.READ
+ }),
+ FAILED: React__default.createElement(index.Icon, {
+ className: "sendbird-message-status__icon",
+ width: "16px",
+ height: "16px",
+ type: index.IconTypes.ERROR
+ })
+ };
+ return React__default.createElement("div", {
+ className: [].concat(LocalizationContext._toConsumableArray(injectingClassName), ['sendbird-message-status']).join(' ')
+ }, icon[status], React__default.createElement("br", null), label());
+}
+MessageStatus.propTypes = {
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ status: PropTypes.string,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+MessageStatus.defaultProps = {
+ message: null,
+ status: '',
+ className: ''
+};
+
+var ReactionBadge = React__default.forwardRef(function (props, ref) {
+ var className = props.className,
+ children = props.children,
+ count = props.count,
+ selected = props.selected,
+ isAdd = props.isAdd,
+ onClick = props.onClick;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+
+ if (selected && !isAdd) {
+ injectingClassName.unshift('sendbird-reaction-badge--selected');
+ } else if (isAdd) {
+ injectingClassName.push('sendbird-reaction-badge--is-add');
+ } else {
+ injectingClassName.unshift('sendbird-reaction-badge');
+ }
+
+ return React__default.createElement("div", {
+ ref: ref,
+ tabIndex: 0,
+ role: "button",
+ className: injectingClassName.join(' '),
+ onClick: onClick,
+ onKeyDown: onClick
+ }, React__default.createElement("div", {
+ className: "sendbird-reaction-badge__inner"
+ }, React__default.createElement("div", {
+ className: "sendbird-reaction-badge__inner__icon"
+ }, children), React__default.createElement(index.Label, {
+ className: children && count ? 'sendbird-reaction-badge__inner__count' : '',
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, count)));
+});
+ReactionBadge.propTypes = {
+ children: PropTypes.element.isRequired,
+ count: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+ selected: PropTypes.bool,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ isAdd: PropTypes.bool,
+ onClick: PropTypes.func
+};
+ReactionBadge.defaultProps = {
+ className: '',
+ count: '',
+ selected: false,
+ isAdd: false,
+ onClick: function onClick() {}
+};
+
+var CLASS_NAME = 'sendbird-tooltip';
+function Tooltip(_ref) {
+ var className = _ref.className,
+ children = _ref.children;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift(CLASS_NAME);
+ return React__default.createElement("div", {
+ className: injectingClassName.join(' ')
+ }, React__default.createElement(index.Label, {
+ className: "".concat(CLASS_NAME, "__text")
+ }, children));
+}
+Tooltip.propTypes = {
+ className: PropTypes.string,
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.string), PropTypes.string])
+};
+Tooltip.defaultProps = {
+ className: '',
+ children: ''
+};
+
+var CLASS_NAME$1 = 'sendbird-tooltip-wrapper';
+var SPACE_FROM_TRIGGER = 8;
+function TooltipWrapper(_ref) {
+ var className = _ref.className,
+ children = _ref.children,
+ hoverTooltip = _ref.hoverTooltip;
+ var injectingClassName = Array.isArray(className) ? [CLASS_NAME$1].concat(LocalizationContext._toConsumableArray(className)) : [CLASS_NAME$1, className];
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ showHoverTooltip = _useState2[0],
+ setShowHoverTooltip = _useState2[1];
+
+ var childrenRef = React.useRef(null);
+ return React__default.createElement("div", {
+ className: injectingClassName.join(' '),
+ onMouseOver: function onMouseOver() {
+ setShowHoverTooltip(true);
+ },
+ onFocus: function onFocus() {
+ setShowHoverTooltip(true);
+ },
+ onMouseOut: function onMouseOut() {
+ setShowHoverTooltip(false);
+ },
+ onBlur: function onBlur() {
+ setShowHoverTooltip(false);
+ }
+ }, React__default.createElement("div", {
+ className: "".concat(CLASS_NAME$1, "__children"),
+ ref: childrenRef
+ }, children), showHoverTooltip && React__default.createElement("div", {
+ className: "".concat(CLASS_NAME$1, "__hover-tooltip"),
+ style: {
+ bottom: "calc(100% + ".concat(SPACE_FROM_TRIGGER, "px)")
+ }
+ }, React__default.createElement("div", {
+ className: "".concat(CLASS_NAME$1, "__hover-tooltip__inner")
+ }, React__default.createElement("div", {
+ className: "".concat(CLASS_NAME$1, "__hover-tooltip__inner__tooltip-container"),
+ style: {
+ left: childrenRef.current && "calc(".concat(childrenRef.current.offsetWidth / 2, "px - 50%)")
+ }
+ }, hoverTooltip))));
+}
+TooltipWrapper.propTypes = {
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ children: PropTypes.element.isRequired,
+ hoverTooltip: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired
+};
+TooltipWrapper.defaultProps = {
+ className: ''
+};
+
+function EmojiReactions(_ref) {
+ var className = _ref.className,
+ userId = _ref.userId,
+ message = _ref.message,
+ emojiAllMap = _ref.emojiAllMap,
+ membersMap = _ref.membersMap,
+ toggleReaction = _ref.toggleReaction,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift('sendbird-emoji-reactions');
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var imageWidth = '20px';
+ var imageHeight = '20px';
+ var emojiReactionAddRef = React.useRef(null);
+ var _message$reactions = message.reactions,
+ reactions = _message$reactions === void 0 ? [] : _message$reactions;
+ var messageReactions = reactions;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React__default.createElement("div", {
+ className: injectingClassName.join(' ')
+ }, React__default.createElement("div", {
+ className: "sendbird-emoji-reactions--inner"
+ }, messageReactions && messageReactions.map(function (reaction) {
+ var _reaction$userIds = reaction.userIds,
+ userIds = _reaction$userIds === void 0 ? [] : _reaction$userIds;
+ var emojiUrl = emojiAllMap.get(reaction.key) || '';
+ var reactedUserCount = userIds.length;
+ var reactedByMe = !(userIds.indexOf(userId) < 0);
+ var nicknames = userIds.filter(function (currentUserId) {
+ return currentUserId !== userId;
+ }).map(function (currentUserId) {
+ return membersMap.get(currentUserId) || stringSet.TOOLTIP__UNKOWN_USER;
+ });
+ var stringSetForMe = nicknames.length > 0 ? stringSet.TOOLTIP__AND_YOU : stringSet.TOOLTIP__YOU;
+ return React__default.createElement(TooltipWrapper, {
+ className: "sendbird-emoji-reactions__emoji-reaction",
+ key: reaction.key,
+ hoverTooltip: userIds.length > 0 && React__default.createElement(Tooltip, null, React__default.createElement(React__default.Fragment, null, "".concat(nicknames.join(', ')).concat(reactedByMe ? stringSetForMe : '')))
+ }, React__default.createElement(ReactionBadge, {
+ count: reactedUserCount,
+ selected: reactedByMe,
+ onClick: function onClick() {
+ return toggleReaction(message, reaction.key, reactedByMe);
+ }
+ }, React__default.createElement(index.ImageRenderer, {
+ circle: true,
+ url: emojiUrl,
+ width: imageWidth,
+ height: imageHeight,
+ defaultComponent: React__default.createElement(index.Icon, {
+ width: imageWidth,
+ height: imageHeight,
+ type: index.IconTypes.EMOJI_FAILED
+ })
+ })));
+ }), messageReactions.length < emojiAllMap.size && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(ReactionBadge, {
+ isAdd: true,
+ onClick: toggleDropdown,
+ className: "sendbird-emoji-reactions__emoji-reaction-add",
+ ref: emojiReactionAddRef
+ }, React__default.createElement(index.Icon, {
+ width: imageWidth,
+ height: imageHeight,
+ fillColor: index.IconColors.ON_BACKGROUND_3,
+ type: index.IconTypes.EMOJI_REACTIONS_ADD
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: emojiReactionAddRef,
+ parentContainRef: emojiReactionAddRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 4
+ }
+ });
+ }
+ })));
+}
+EmojiReactions.propTypes = {
+ userId: PropTypes.string,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ message: PropTypes.shape({
+ reactions: PropTypes.arrayOf(PropTypes.shape({}))
+ }).isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func
+};
+EmojiReactions.defaultProps = {
+ className: '',
+ membersMap: new Map(),
+ userId: '',
+ toggleReaction: function toggleReaction() {},
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+
+var WORD_TYPOGRAPHY = index.LabelTypography.BODY_1;
+var EDITED_COLOR = index.LabelColors.ONBACKGROUND_2;
+function useMemoizedMessageText(_ref) {
+ var message = _ref.message,
+ updatedAt = _ref.updatedAt,
+ className = _ref.className;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.useMemo(function () {
+ return function () {
+ var splitMessage = message.split(/\r/);
+ var matchedMessage = splitMessage.map(function (word) {
+ return word !== '' ? word : React__default.createElement("br", null);
+ });
+
+ if (updatedAt > 0) {
+ matchedMessage.push(React__default.createElement(index.Label, {
+ key: LocalizationContext.uuidv4$1(),
+ className: className,
+ type: WORD_TYPOGRAPHY,
+ color: EDITED_COLOR
+ }, " ".concat(stringSet.MESSAGE_EDITED, " ")));
+ }
+
+ return matchedMessage;
+ };
+ }, [message, updatedAt, className]);
+}
+
+var MOUSE_ENTER = 'mouseenter';
+var MOUSE_LEAVE = 'mouseleave';
+
+var useMouseHover = function useMouseHover(_ref) {
+ var ref = _ref.ref,
+ setHover = _ref.setHover;
+
+ var handleMouseOver = function handleMouseOver() {
+ if (ref.current) {
+ setHover(true);
+ }
+ };
+
+ var handleMouseOut = function handleMouseOut() {
+ if (ref.current) {
+ setHover(false);
+ }
+ };
+
+ React.useEffect(function () {
+ var current = ref.current;
+ current.addEventListener(MOUSE_ENTER, handleMouseOver);
+ current.addEventListener(MOUSE_LEAVE, handleMouseOut);
+ return function () {
+ current.removeEventListener(MOUSE_ENTER, handleMouseOver);
+ current.removeEventListener(MOUSE_LEAVE, handleMouseOut);
+ };
+ });
+};
+
+var noop = function noop() {};
+
+var GROUPING_PADDING = '1px';
+var NORMAL_PADDING = '8px';
+function Message(props) {
+ var isByMe = props.isByMe,
+ userId = props.userId,
+ message = props.message,
+ className = props.className,
+ resendMessage = props.resendMessage,
+ disabled = props.disabled,
+ showEdit = props.showEdit,
+ showRemove = props.showRemove,
+ status = props.status,
+ useReaction = props.useReaction,
+ emojiAllMap = props.emojiAllMap,
+ membersMap = props.membersMap,
+ toggleReaction = props.toggleReaction,
+ memoizedEmojiListItems = props.memoizedEmojiListItems,
+ chainTop = props.chainTop,
+ chainBottom = props.chainBottom;
+ if (!message) return null;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push("sendbird-message".concat(isByMe ? '--outgoing' : '--incoming'));
+ var memoizedMessageText = useMemoizedMessageText({
+ message: message.message,
+ updatedAt: message.updatedAt,
+ className: 'sendbird-user-message-word'
+ });
+ return React__default.createElement("div", {
+ className: [].concat(LocalizationContext._toConsumableArray(injectingClassName), ['sendbird-message']).join(' ')
+ }, isByMe ? React__default.createElement(OutgoingUserMessage, {
+ userId: userId,
+ message: message,
+ resendMessage: resendMessage,
+ disabled: disabled,
+ showEdit: showEdit,
+ showRemove: showRemove,
+ status: status,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedMessageText: memoizedMessageText,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }) : React__default.createElement(IncomingUserMessage, {
+ userId: userId,
+ message: message,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedMessageText: memoizedMessageText,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }));
+}
+Message.propTypes = {
+ isByMe: PropTypes.bool,
+ disabled: PropTypes.bool,
+ userId: PropTypes.string,
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])).isRequired,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ showEdit: PropTypes.func,
+ status: PropTypes.string,
+ showRemove: PropTypes.func,
+ resendMessage: PropTypes.func,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool,
+ chainBottom: PropTypes.bool
+};
+Message.defaultProps = {
+ isByMe: false,
+ disabled: false,
+ userId: '',
+ resendMessage: noop,
+ className: '',
+ showEdit: noop,
+ showRemove: noop,
+ status: '',
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ },
+ chainTop: false,
+ chainBottom: false
+};
+
+function OutgoingUserMessage(_ref) {
+ var userId = _ref.userId,
+ message = _ref.message,
+ showEdit = _ref.showEdit,
+ disabled = _ref.disabled,
+ showRemove = _ref.showRemove,
+ status = _ref.status,
+ resendMessage = _ref.resendMessage,
+ useReaction = _ref.useReaction,
+ emojiAllMap = _ref.emojiAllMap,
+ membersMap = _ref.membersMap,
+ toggleReaction = _ref.toggleReaction,
+ memoizedMessageText = _ref.memoizedMessageText,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems,
+ chainTop = _ref.chainTop,
+ chainBottom = _ref.chainBottom;
+ var MemoizedMessageText = memoizedMessageText;
+ var MemoizedEmojiListItems = memoizedEmojiListItems; // TODO: when message.requestState is succeeded, consider if it's SENT or DELIVERED
+
+ var messageRef = React.useRef(null);
+ var parentRefReactions = React.useRef(null);
+ var parentRefMenus = React.useRef(null);
+ var parentContainRef = React.useRef(null);
+ var isMessageSent = utils$2.getIsSentFromStatus(status);
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ mousehover = _useState2[0],
+ setMousehover = _useState2[1];
+
+ var _useState3 = React.useState(false),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ moreActive = _useState4[0],
+ setMoreActive = _useState4[1];
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React__default.createElement("div", {
+ className: "sendbird-user-message--outgoing",
+ ref: messageRef,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING : NORMAL_PADDING,
+ paddingBottom: chainBottom ? GROUPING_PADDING : NORMAL_PADDING
+ }
+ }, React__default.createElement("div", {
+ className: "sendbird-user-message--inner"
+ }, React__default.createElement("div", {
+ className: "sendbird-user-message__left-padding"
+ }, React__default.createElement("div", {
+ className: "sendbird-user-message__more",
+ ref: parentContainRef
+ }, React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ className: "sendbird-user-message__more__menu",
+ ref: parentRefMenus,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.MORE,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: parentRefMenus // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: parentContainRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isMessageSent && React__default.createElement(index.MenuItem, {
+ className: "sendbird-user-message--copy",
+ onClick: function onClick() {
+ utils$2.copyToClipboard(message.message);
+ closeDropdown();
+ }
+ }, "Copy"), isMessageSent && React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showEdit(true);
+ closeDropdown();
+ }
+ }, "Edit"), message && message.isResendable && message.isResendable() && React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, "Resend"), React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, "Delete"));
+ }
+ }), isMessageSent && useReaction && emojiAllMap.size > 0 && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ className: "sendbird-user-message__more__add-reaction",
+ ref: parentRefReactions,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: parentRefReactions,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React__default.createElement("div", {
+ className: "sendbird-user-message__status"
+ }, React__default.createElement(MessageStatus, {
+ message: message,
+ status: status // onDelete={() => { showRemove(true); }}
+ // onResend={() => resendMessage(message)}
+ // duplicated and should replace to more
+
+ }))), React__default.createElement("div", {
+ className: "sendbird-user-message__text-balloon"
+ }, React__default.createElement("div", {
+ className: "sendbird-user-message__text-balloon__inner"
+ }, React__default.createElement("div", {
+ className: "sendbird-user-message__text-balloon__inner__text-place"
+ }, React__default.createElement(index.Label, {
+ className: "sendbird-user-message__text-balloon__inner__text-place__text",
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, React__default.createElement(MemoizedMessageText, null))), useReaction && message.reactions && message.reactions.length > 0 && React__default.createElement(EmojiReactions, {
+ className: "sendbird-user-message__text-balloon__inner__emoji-reactions",
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ })))));
+}
+
+function IncomingUserMessage(_ref2) {
+ var userId = _ref2.userId,
+ message = _ref2.message,
+ useReaction = _ref2.useReaction,
+ emojiAllMap = _ref2.emojiAllMap,
+ membersMap = _ref2.membersMap,
+ toggleReaction = _ref2.toggleReaction,
+ memoizedMessageText = _ref2.memoizedMessageText,
+ memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
+ chainTop = _ref2.chainTop,
+ chainBottom = _ref2.chainBottom;
+ var MemoizedMessageText = memoizedMessageText;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var messageRef = React.useRef(null);
+ var parentRefReactions = React.useRef(null);
+ var parentRefMenus = React.useRef(null);
+ var parentContainRef = React.useRef(null);
+ var avatarRef = React.useRef(null);
+
+ var _React$useContext = React__default.useContext(index.UserProfileContext),
+ disableUserProfile = _React$useContext.disableUserProfile,
+ renderUserProfile = _React$useContext.renderUserProfile;
+
+ var _useState5 = React.useState(false),
+ _useState6 = LocalizationContext._slicedToArray(_useState5, 2),
+ mousehover = _useState6[0],
+ setMousehover = _useState6[1];
+
+ var _useState7 = React.useState(false),
+ _useState8 = LocalizationContext._slicedToArray(_useState7, 2),
+ moreActive = _useState8[0],
+ setMoreActive = _useState8[1];
+
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+ var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React__default.createElement("div", {
+ ref: messageRef,
+ className: "sendbird-user-message--incoming",
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING : NORMAL_PADDING,
+ paddingBottom: chainBottom ? GROUPING_PADDING : NORMAL_PADDING
+ }
+ }, React__default.createElement("div", {
+ className: "sendbird-user-message--inner"
+ }, React__default.createElement("div", {
+ className: "sendbird-user-message--body"
+ }, !chainBottom && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.Avatar, {
+ ref: avatarRef,
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ className: "sendbird-user-message__avatar",
+ src: utils$2.getSenderProfileUrl(message),
+ width: "28px",
+ height: "28px"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: message.sender,
+ close: closeDropdown
+ }) : React__default.createElement(index.UserProfile, {
+ user: message.sender,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), !chainTop && React__default.createElement(index.Label, {
+ className: "sendbird-user-message__sender-name",
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, utils$2.getSenderName(message)), React__default.createElement("div", {
+ className: "sendbird-user-message__text-balloon"
+ }, React__default.createElement("div", {
+ className: "sendbird-user-message__text-balloon__inner"
+ }, React__default.createElement("div", {
+ className: "sendbird-user-message__text-balloon__inner__text-place"
+ }, React__default.createElement(index.Label, {
+ className: "sendbird-user-message__text-balloon__inner__text-place__text",
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, React__default.createElement(MemoizedMessageText, null))), showEmojiReactions && React__default.createElement(EmojiReactions, {
+ className: "sendbird-user-message__text-balloon__inner__emoji-reactions",
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ })))), React__default.createElement("div", {
+ className: "sendbird-user-message__right-padding"
+ }, React__default.createElement("div", {
+ className: "sendbird-user-message__more",
+ ref: parentContainRef
+ }, showReactionAddButton && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: parentRefReactions,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(MemoizedEmojiListItems, {
+ parentRef: parentRefReactions,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ message: message,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ }), React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: parentRefMenus,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.MORE,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: parentRefMenus,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown
+ }, React__default.createElement(index.MenuItem, {
+ className: "sendbird-user-message--copy",
+ onClick: function onClick() {
+ utils$2.copyToClipboard(message.message);
+ closeDropdown();
+ }
+ }, "Copy"));
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React__default.createElement(index.Label, {
+ className: "sendbird-user-message__sent-at",
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, utils$2.getMessageCreatedAt(message)))));
+}
+
+IncomingUserMessage.propTypes = {
+ userId: PropTypes.string.isRequired,
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedMessageText: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+IncomingUserMessage.defaultProps = {
+ message: {},
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+OutgoingUserMessage.propTypes = {
+ userId: PropTypes.string.isRequired,
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ showEdit: PropTypes.func,
+ showRemove: PropTypes.func,
+ disabled: PropTypes.bool,
+ resendMessage: PropTypes.func,
+ status: PropTypes.string.isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedMessageText: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+OutgoingUserMessage.defaultProps = {
+ message: {},
+ resendMessage: noop,
+ showEdit: noop,
+ showRemove: noop,
+ disabled: false,
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+
+function AdminMessage(_ref) {
+ var className = _ref.className,
+ message = _ref.message;
+
+ if (!message.messageType || message.messageType !== 'admin') {
+ // change to use message.isAdminMessage()
+ return null;
+ }
+
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React__default.createElement("div", {
+ className: [].concat(LocalizationContext._toConsumableArray(injectingClassName), ['sendbird-admin-message']).join(' ')
+ }, React__default.createElement(index.Label, {
+ className: "sendbird-admin-message__text",
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, message.message));
+}
+AdminMessage.propTypes = {
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+AdminMessage.defaultProps = {
+ message: {},
+ className: ''
+};
+
+var getMessageCreatedAt$1 = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+var getIsSentFromStatus = function getIsSentFromStatus(status) {
+ return status === type.MessageStatusType.SENT || status === type.MessageStatusType.DELIVERED || status === type.MessageStatusType.READ;
+};
+
+var noop$1 = function noop() {};
+
+var OUTGOING_THUMBNAIL_MESSAGE = 'sendbird-outgoing-thumbnail-message';
+var INCOMING_THUMBNAIL_MESSAGE = 'sendbird-incoming-thumbnail-message';
+var GROUPING_PADDING$1 = '1px';
+var NORMAL_PADDING$1 = '8px';
+function ThumbnailMessage(_ref) {
+ var _ref$message = _ref.message,
+ message = _ref$message === void 0 ? {} : _ref$message,
+ userId = _ref.userId,
+ disabled = _ref.disabled,
+ isByMe = _ref.isByMe,
+ onClick = _ref.onClick,
+ showRemove = _ref.showRemove,
+ status = _ref.status,
+ resendMessage = _ref.resendMessage,
+ useReaction = _ref.useReaction,
+ emojiAllMap = _ref.emojiAllMap,
+ membersMap = _ref.membersMap,
+ toggleReaction = _ref.toggleReaction,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems,
+ chainTop = _ref.chainTop,
+ chainBottom = _ref.chainBottom;
+ return isByMe ? React__default.createElement(OutgoingThumbnailMessage, {
+ userId: userId,
+ status: status,
+ message: message,
+ onClick: onClick,
+ disabled: disabled,
+ chainTop: chainTop,
+ showRemove: showRemove,
+ membersMap: membersMap,
+ chainBottom: chainBottom,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ resendMessage: resendMessage,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }) : React__default.createElement(IncomingThumbnailMessage, {
+ userId: userId,
+ status: status,
+ message: message,
+ onClick: onClick,
+ chainTop: chainTop,
+ membersMap: membersMap,
+ chainBottom: chainBottom,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ });
+}
+function OutgoingThumbnailMessage(_ref2) {
+ var _ref2$message = _ref2.message,
+ message = _ref2$message === void 0 ? {} : _ref2$message,
+ userId = _ref2.userId,
+ disabled = _ref2.disabled,
+ onClick = _ref2.onClick,
+ showRemove = _ref2.showRemove,
+ status = _ref2.status,
+ resendMessage = _ref2.resendMessage,
+ useReaction = _ref2.useReaction,
+ emojiAllMap = _ref2.emojiAllMap,
+ membersMap = _ref2.membersMap,
+ toggleReaction = _ref2.toggleReaction,
+ memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
+ chainTop = _ref2.chainTop,
+ chainBottom = _ref2.chainBottom;
+ var type = message.type,
+ url = message.url,
+ localUrl = message.localUrl;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var messageRef = React.useRef(null);
+ var parentContainRef = React.useRef(null);
+ var menuRef = React.useRef(null);
+ var reactionAddRef = React.useRef(null);
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ mousehover = _useState2[0],
+ setMousehover = _useState2[1];
+
+ var _useState3 = React.useState(false),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ moreActive = _useState4[0],
+ setMoreActive = _useState4[1];
+
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var isMessageSent = getIsSentFromStatus(status);
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React__default.createElement("div", {
+ className: OUTGOING_THUMBNAIL_MESSAGE,
+ ref: messageRef,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$1 : NORMAL_PADDING$1,
+ paddingBottom: chainBottom ? GROUPING_PADDING$1 : NORMAL_PADDING$1
+ }
+ }, React__default.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "--inner")
+ }, React__default.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "__left-padding")
+ }, React__default.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-left-padding__more"),
+ ref: parentContainRef
+ }, React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: menuRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.MORE,
+ color: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: menuRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, message && message.isResendable && message.isResendable() && React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ }), isMessageSent && showReactionAddButton && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: reactionAddRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.EMOJI_REACTIONS_ADD,
+ color: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: reactionAddRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React__default.createElement(MessageStatus, {
+ message: message,
+ status: status,
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-left-padding__status")
+ })), React__default.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "__body")
+ }, React__default.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap")
+ }, React__default.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap--inner"),
+ onClick: isMessageSent ? function () {
+ return onClick(true);
+ } : function () {},
+ onKeyDown: isMessageSent ? function () {
+ return onClick(true);
+ } : function () {},
+ tabIndex: 0,
+ role: "button"
+ }, index$2.isVideo(type) && React__default.createElement(React__default.Fragment, null, React__default.createElement("video", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__video")
+ }, React__default.createElement("source", {
+ src: url || localUrl,
+ type: type
+ })), React__default.createElement(index.Icon, {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__video-icon"),
+ width: "56px",
+ height: "56px",
+ type: index.IconTypes.PLAY
+ })), index$2.isImage(type) && React__default.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__img"),
+ style: {
+ backgroundImage: "url(".concat(url || localUrl, ")"),
+ height: '280px',
+ width: '404px',
+ backgroundSize: 'cover',
+ backgroundRepeat: 'no-repeat',
+ backgroundPosition: 'center'
+ }
+ }), index$2.unSupported(type) && React__default.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__other")
+ }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React__default.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap__overlay")
+ })), useReaction && message.reactions && message.reactions.length > 0 && React__default.createElement(EmojiReactions, {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap__emoji-reactions"),
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ })))));
+}
+function IncomingThumbnailMessage(_ref3) {
+ var _ref3$message = _ref3.message,
+ message = _ref3$message === void 0 ? {} : _ref3$message,
+ userId = _ref3.userId,
+ onClick = _ref3.onClick,
+ status = _ref3.status,
+ useReaction = _ref3.useReaction,
+ emojiAllMap = _ref3.emojiAllMap,
+ membersMap = _ref3.membersMap,
+ toggleReaction = _ref3.toggleReaction,
+ memoizedEmojiListItems = _ref3.memoizedEmojiListItems,
+ chainTop = _ref3.chainTop,
+ chainBottom = _ref3.chainBottom;
+ var type = message.type,
+ url = message.url,
+ localUrl = message.localUrl;
+
+ var _React$useContext = React__default.useContext(index.UserProfileContext),
+ disableUserProfile = _React$useContext.disableUserProfile,
+ renderUserProfile = _React$useContext.renderUserProfile;
+
+ var _useContext2 = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext2.stringSet;
+
+ var messageRef = React.useRef(null);
+ var parentContainRef = React.useRef(null);
+ var reactionAddRef = React.useRef(null);
+ var avatarRef = React.useRef(null);
+
+ var _useState5 = React.useState(false),
+ _useState6 = LocalizationContext._slicedToArray(_useState5, 2),
+ mousehover = _useState6[0],
+ setMousehover = _useState6[1];
+
+ var _useState7 = React.useState(false),
+ _useState8 = LocalizationContext._slicedToArray(_useState7, 2),
+ moreActive = _useState8[0],
+ setMoreActive = _useState8[1];
+
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var isMessageSent = getIsSentFromStatus(status);
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React__default.createElement("div", {
+ className: INCOMING_THUMBNAIL_MESSAGE,
+ ref: messageRef,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$1 : NORMAL_PADDING$1,
+ paddingBottom: chainBottom ? GROUPING_PADDING$1 : NORMAL_PADDING$1
+ }
+ }, !chainTop && React__default.createElement(index.Label, {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__sender-name"),
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, utils.getSenderName(message) || ''), React__default.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "--inner")
+ }, React__default.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__body")
+ }, React__default.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap")
+ }, !chainBottom && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.Avatar, {
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__avatar"),
+ src: utils.getSenderProfileUrl(message),
+ width: "28px",
+ height: "28px"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: message.sender,
+ close: closeDropdown
+ }) : React__default.createElement(index.UserProfile, {
+ user: message.sender,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), React__default.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap--inner"),
+ role: "button",
+ tabIndex: 0,
+ onClick: isMessageSent ? function () {
+ return onClick(true);
+ } : function () {},
+ onKeyDown: isMessageSent ? function () {
+ return onClick(true);
+ } : function () {}
+ }, index$2.isVideo(type) && React__default.createElement(React__default.Fragment, null, React__default.createElement("video", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__video")
+ }, React__default.createElement("source", {
+ src: url || localUrl,
+ type: type
+ })), React__default.createElement(index.Icon, {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__video-icon"),
+ width: "56px",
+ height: "56px",
+ type: index.IconTypes.PLAY
+ })), index$2.isImage(type) && React__default.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__img"),
+ style: {
+ backgroundImage: "url(".concat(url || localUrl, ")"),
+ height: '280px',
+ width: '404px',
+ backgroundSize: 'cover',
+ backgroundRepeat: 'no-repeat',
+ backgroundPosition: 'center'
+ }
+ }), index$2.unSupported(type) && React__default.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__other")
+ }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React__default.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap-overlay")
+ })), useReaction && message.reactions && message.reactions.length > 0 && React__default.createElement(EmojiReactions, {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__wrap__emoji-reactions"),
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }))), React__default.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__right-padding")
+ }, !chainBottom && !(mousehover || moreActive) && React__default.createElement(index.Label, {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__sent-at"),
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, getMessageCreatedAt$1(message)), React__default.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__more"),
+ ref: parentContainRef
+ }, showReactionAddButton && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: reactionAddRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.EMOJI_REACTIONS_ADD,
+ color: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: reactionAddRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })))));
+}
+ThumbnailMessage.propTypes = {
+ message: PropTypes.shape({
+ type: PropTypes.string,
+ url: PropTypes.string,
+ localUrl: PropTypes.string
+ }).isRequired,
+ userId: PropTypes.string,
+ resendMessage: PropTypes.func,
+ status: PropTypes.string,
+ isByMe: PropTypes.bool,
+ disabled: PropTypes.bool,
+ onClick: PropTypes.func,
+ showRemove: PropTypes.func,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool,
+ chainBottom: PropTypes.bool
+};
+ThumbnailMessage.defaultProps = {
+ isByMe: false,
+ disabled: false,
+ resendMessage: noop$1,
+ onClick: noop$1,
+ showRemove: noop$1,
+ status: '',
+ userId: '',
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop$1,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ },
+ chainTop: false,
+ chainBottom: false
+};
+OutgoingThumbnailMessage.propTypes = {
+ message: PropTypes.shape({
+ type: PropTypes.string,
+ url: PropTypes.string,
+ localUrl: PropTypes.string
+ }).isRequired,
+ userId: PropTypes.string.isRequired,
+ disabled: PropTypes.bool.isRequired,
+ resendMessage: PropTypes.func.isRequired,
+ status: PropTypes.string,
+ onClick: PropTypes.func.isRequired,
+ showRemove: PropTypes.func.isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ membersMap: PropTypes.instanceOf(Map).isRequired,
+ toggleReaction: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func.isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+OutgoingThumbnailMessage.defaultProps = {
+ status: ''
+};
+IncomingThumbnailMessage.propTypes = {
+ message: PropTypes.shape({
+ type: PropTypes.string,
+ url: PropTypes.string,
+ localUrl: PropTypes.string
+ }).isRequired,
+ userId: PropTypes.string.isRequired,
+ onClick: PropTypes.func.isRequired,
+ status: PropTypes.string,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ membersMap: PropTypes.instanceOf(Map).isRequired,
+ toggleReaction: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func.isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+IncomingThumbnailMessage.defaultProps = {
+ status: ''
+};
+
+var MAX_TRUNCATE_LENGTH = 40;
+var GROUPAING_PADDING = '1px';
+var NORMAL_PADDING$2 = '8px';
+
+var noop$2 = function noop() {};
+
+function checkFileType(fileUrl) {
+ var result = null;
+ var imageFile = /(\.gif|\.jpg|\.jpeg|\.txt|\.pdf)$/i;
+ var audioFile = /(\.mp3)$/i;
+
+ if (imageFile.test(fileUrl)) {
+ result = index.IconTypes.FILE_DOCUMENT;
+ } else if (audioFile.test(fileUrl)) {
+ result = index.IconTypes.FILE_AUDIO;
+ }
+
+ return result;
+}
+
+function OutgoingFileMessage(_ref) {
+ var message = _ref.message,
+ userId = _ref.userId,
+ status = _ref.status,
+ showRemove = _ref.showRemove,
+ disabled = _ref.disabled,
+ resendMessage = _ref.resendMessage,
+ useReaction = _ref.useReaction,
+ emojiAllMap = _ref.emojiAllMap,
+ membersMap = _ref.membersMap,
+ toggleReaction = _ref.toggleReaction,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems,
+ chainTop = _ref.chainTop,
+ chainBottom = _ref.chainBottom;
+ var url = message.url;
+
+ var openFileUrl = function openFileUrl() {
+ window.open(url);
+ };
+
+ var messageRef = React.useRef(null);
+ var parentContainRef = React.useRef(null);
+ var menuRef = React.useRef(null);
+ var reactionAddButtonRef = React.useRef(null);
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ mousehover = _useState2[0],
+ setMousehover = _useState2[1];
+
+ var _useState3 = React.useState(false),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ moreActive = _useState4[0],
+ setMoreActive = _useState4[1];
+
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var isMessageSent = utils$1.getIsSentFromStatus(status);
+ var showEmojiReactions = isMessageSent && useReaction && message.reactions && message.reactions.length > 0;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React__default.createElement("div", {
+ className: "sendbird-file-message__outgoing",
+ ref: messageRef,
+ style: {
+ paddingTop: chainTop ? GROUPAING_PADDING : NORMAL_PADDING$2,
+ paddingBottom: chainBottom ? GROUPAING_PADDING : NORMAL_PADDING$2
+ }
+ }, React__default.createElement("div", {
+ className: "sendbird-file-message--inner"
+ }, React__default.createElement("div", {
+ className: "sendbird-file-message__left-padding"
+ }, React__default.createElement("div", {
+ className: "sendbird-file-message__more",
+ ref: parentContainRef
+ }, React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: menuRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.MORE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: menuRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, message && message.isResendable && message.isResendable() && React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, "Resend"), React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, "Delete"));
+ }
+ }), showReactionAddButton && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: reactionAddButtonRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: reactionAddButtonRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React__default.createElement("div", {
+ className: "sendbird-file-message__status"
+ }, React__default.createElement(MessageStatus, {
+ message: message,
+ status: status
+ }))), React__default.createElement("div", {
+ className: "sendbird-file-message__tooltip"
+ }, React__default.createElement("div", {
+ className: "sendbird-file-message__tooltip__inner"
+ }, checkFileType(url) ? React__default.createElement(index.Icon, {
+ className: "sendbird-file-message__tooltip__icon",
+ width: "28px",
+ height: "28px",
+ type: checkFileType(url)
+ }) : null, React__default.createElement(index.TextButton, {
+ className: "sendbird-file-message__tooltip__text",
+ onClick: openFileUrl
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, utils$1.truncate(message.url, MAX_TRUNCATE_LENGTH)))), showEmojiReactions && React__default.createElement(EmojiReactions, {
+ className: "sendbird-file-message__tooltip__emoji-reactions",
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }))));
+}
+function IncomingFileMessage(_ref2) {
+ var message = _ref2.message,
+ userId = _ref2.userId,
+ useReaction = _ref2.useReaction,
+ emojiAllMap = _ref2.emojiAllMap,
+ membersMap = _ref2.membersMap,
+ toggleReaction = _ref2.toggleReaction,
+ memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
+ chainTop = _ref2.chainTop,
+ chainBottom = _ref2.chainBottom;
+
+ var openFileUrl = function openFileUrl() {
+ window.open(message.url);
+ };
+
+ var messageRef = React.useRef(null);
+
+ var _React$useContext = React__default.useContext(index.UserProfileContext),
+ disableUserProfile = _React$useContext.disableUserProfile,
+ renderUserProfile = _React$useContext.renderUserProfile;
+
+ var parentContainRef = React.useRef(null);
+ var avatarRef = React.useRef(null);
+ var reactionAddButtonRef = React.useRef(null);
+
+ var _useState5 = React.useState(false),
+ _useState6 = LocalizationContext._slicedToArray(_useState5, 2),
+ mousehover = _useState6[0],
+ setMousehover = _useState6[1];
+
+ var _useState7 = React.useState(false),
+ _useState8 = LocalizationContext._slicedToArray(_useState7, 2),
+ moreActive = _useState8[0],
+ setMoreActive = _useState8[1];
+
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React__default.createElement("div", {
+ className: "sendbird-file-message__incoming",
+ ref: messageRef,
+ style: {
+ paddingTop: chainTop ? GROUPAING_PADDING : NORMAL_PADDING$2,
+ paddingBottom: chainBottom ? GROUPAING_PADDING : NORMAL_PADDING$2
+ }
+ }, React__default.createElement("div", {
+ className: "sendbird-file-message--inner"
+ }, React__default.createElement("div", {
+ className: "sendbird-file-message__body"
+ }, !chainBottom && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.Avatar, {
+ ref: avatarRef,
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ className: "sendbird-file-message__avatar",
+ src: utils.getSenderProfileUrl(message),
+ width: "28px",
+ height: "28px"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: message.sender,
+ close: closeDropdown
+ }) : React__default.createElement(index.UserProfile, {
+ user: message.sender,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), !chainTop && React__default.createElement(index.Label, {
+ className: "sendbird-file-message__sender-name",
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, utils.getSenderName(message)), React__default.createElement("div", {
+ className: "sendbird-file-message__tooltip"
+ }, React__default.createElement("div", {
+ className: "sendbird-file-message__tooltip__inner"
+ }, checkFileType(message.url) ? React__default.createElement(index.Icon, {
+ className: "sendbird-file-message__tooltip__icon",
+ width: "28px",
+ height: "28px",
+ type: checkFileType(message.url)
+ }) : null, React__default.createElement(index.TextButton, {
+ className: "sendbird-file-message__tooltip__text",
+ onClick: openFileUrl
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, utils$1.truncate(message.url, MAX_TRUNCATE_LENGTH)))), useReaction && message.reactions && message.reactions.length > 0 && React__default.createElement(EmojiReactions, {
+ className: "sendbird-file-message__tooltip__emoji-reactions",
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }))), React__default.createElement("div", {
+ className: "sendbird-file-message__right-padding"
+ }, React__default.createElement("div", {
+ className: "sendbird-file-message__more",
+ ref: parentContainRef
+ }, showReactionAddButton && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: reactionAddButtonRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: reactionAddButtonRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React__default.createElement(index.Label, {
+ className: "sendbird-file-message__sent-at",
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, utils.getMessageCreatedAt(message)))));
+}
+OutgoingFileMessage.propTypes = {
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ userId: PropTypes.string,
+ status: PropTypes.string,
+ showRemove: PropTypes.func,
+ resendMessage: PropTypes.func,
+ useReaction: PropTypes.bool.isRequired,
+ disabled: PropTypes.bool,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+OutgoingFileMessage.defaultProps = {
+ status: '',
+ showRemove: noop$2,
+ resendMessage: noop$2,
+ message: {},
+ userId: '',
+ disabled: false,
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop$2,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+IncomingFileMessage.propTypes = {
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ userId: PropTypes.string,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+IncomingFileMessage.defaultProps = {
+ message: {},
+ userId: '',
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop$2,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+
+var MessageSwitch = function MessageSwitch(_ref3) {
+ var message = _ref3.message,
+ userId = _ref3.userId,
+ disabled = _ref3.disabled,
+ isByMe = _ref3.isByMe,
+ showRemove = _ref3.showRemove,
+ status = _ref3.status,
+ resendMessage = _ref3.resendMessage,
+ useReaction = _ref3.useReaction,
+ emojiAllMap = _ref3.emojiAllMap,
+ membersMap = _ref3.membersMap,
+ toggleReaction = _ref3.toggleReaction,
+ memoizedEmojiListItems = _ref3.memoizedEmojiListItems,
+ chainTop = _ref3.chainTop,
+ chainBottom = _ref3.chainBottom;
+ return React__default.createElement("div", {
+ className: "sendbird-file-message".concat(isByMe ? '--outgoing' : '--incoming')
+ }, isByMe ? React__default.createElement(OutgoingFileMessage, {
+ message: message,
+ userId: userId,
+ disabled: disabled,
+ showRemove: showRemove,
+ status: status,
+ resendMessage: resendMessage,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }) : React__default.createElement(IncomingFileMessage, {
+ userId: userId,
+ message: message,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }));
+};
+
+MessageSwitch.propTypes = {
+ message: PropTypes.shape({}),
+ userId: PropTypes.string,
+ isByMe: PropTypes.bool,
+ disabled: PropTypes.bool,
+ showRemove: PropTypes.func,
+ resendMessage: PropTypes.func,
+ status: PropTypes.string.isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool,
+ chainBottom: PropTypes.bool
+};
+MessageSwitch.defaultProps = {
+ message: {},
+ isByMe: false,
+ disabled: false,
+ showRemove: noop$2,
+ resendMessage: noop$2,
+ userId: '',
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop$2,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ },
+ chainTop: false,
+ chainBottom: false
+};
+
+var RemoveMessage = function RemoveMessage(props) {
+ var onCloseModal = props.onCloseModal,
+ onDeleteMessage = props.onDeleteMessage;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React__default.createElement(index.Modal, {
+ onCancel: onCloseModal,
+ onSubmit: onDeleteMessage,
+ submitText: "Delete",
+ titleText: stringSet.MODAL__DELETE_MESSAGE__TITLE
+ });
+};
+
+RemoveMessage.propTypes = {
+ onCloseModal: PropTypes.func.isRequired,
+ onDeleteMessage: PropTypes.func.isRequired
+};
+
+var getMessageCreatedAt$2 = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+
+var CLASS_NAME$2 = 'sendbird-unknown-message';
+var GROUPING_PADDING$2 = '1px';
+var NORMAL_PADDING$3 = '8px';
+function UnknownMessage(_ref) {
+ var message = _ref.message,
+ isByMe = _ref.isByMe,
+ status = _ref.status,
+ className = _ref.className,
+ showRemove = _ref.showRemove,
+ chainTop = _ref.chainTop,
+ chainBottom = _ref.chainBottom;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift(CLASS_NAME$2);
+ injectingClassName.push("".concat(CLASS_NAME$2).concat(isByMe ? '--outgoing' : '--incoming'));
+ return React__default.createElement("div", {
+ className: injectingClassName.join(' ')
+ }, isByMe ? React__default.createElement(OutgoingUnknownMessage, {
+ status: status,
+ message: message,
+ chainTop: chainTop,
+ showRemove: showRemove,
+ chainBottom: chainBottom
+ }) : React__default.createElement(IncomingUnknownMessage, {
+ message: message,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }));
+}
+UnknownMessage.propTypes = {
+ message: PropTypes.shape({}).isRequired,
+ isByMe: PropTypes.bool,
+ status: PropTypes.string,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ showRemove: PropTypes.func,
+ chainTop: PropTypes.bool,
+ chainBottom: PropTypes.bool
+};
+UnknownMessage.defaultProps = {
+ isByMe: false,
+ status: '',
+ className: '',
+ showRemove: function showRemove() {},
+ chainTop: false,
+ chainBottom: false
+};
+
+function OutgoingUnknownMessage(_ref2) {
+ var message = _ref2.message,
+ status = _ref2.status,
+ showRemove = _ref2.showRemove,
+ chainTop = _ref2.chainTop,
+ chainBottom = _ref2.chainBottom;
+ var className = 'sendbird-outgoing-unknown-message';
+ var messageRef = React.useRef(null);
+ var parentContainRef = React.useRef(null);
+ var menuRef = React.useRef(null);
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ mousehover = _useState2[0],
+ setMousehover = _useState2[1];
+
+ var _useState3 = React.useState(false),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ moreActive = _useState4[0],
+ setMoreActive = _useState4[1];
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React__default.createElement("div", {
+ ref: messageRef,
+ className: className,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$2 : NORMAL_PADDING$3,
+ paddingBottom: chainBottom ? GROUPING_PADDING$2 : NORMAL_PADDING$3
+ }
+ }, React__default.createElement("div", {
+ className: "".concat(className, "--inner")
+ }, React__default.createElement("div", {
+ className: "".concat(className, "--left-padding")
+ }, React__default.createElement("div", {
+ className: "".concat(className, "__more"),
+ ref: parentContainRef
+ }, React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ className: "".concat(className, "__more__menu"),
+ ref: menuRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.MORE,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: menuRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: parentContainRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ showRemove(true);
+ closeDropdown();
+ }
+ }, "Delete"));
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React__default.createElement("div", {
+ className: "".concat(className, "__message-status")
+ }, React__default.createElement(MessageStatus, {
+ message: message,
+ status: status
+ }))), React__default.createElement("div", {
+ className: "".concat(className, "__body")
+ }, React__default.createElement("div", {
+ className: "".concat(className, "__body__text-balloon")
+ }, React__default.createElement(index.Label, {
+ className: "".concat(className, "__body__text-balloon__header"),
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React__default.createElement(index.Label, {
+ className: "".concat(className, "__body__text-balloon__description"),
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, stringSet.UNKNOWN__CANNOT_READ_MESSAGE)))));
+}
+
+function IncomingUnknownMessage(_ref3) {
+ var message = _ref3.message,
+ chainTop = _ref3.chainTop,
+ chainBottom = _ref3.chainBottom;
+ var className = 'sendbird-incoming-unknown-message';
+ var sender = message.sender;
+ var avatarRef = React.useRef(null);
+
+ var _useContext2 = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext2.stringSet;
+
+ var _React$useContext = React__default.useContext(index.UserProfileContext),
+ disableUserProfile = _React$useContext.disableUserProfile,
+ renderUserProfile = _React$useContext.renderUserProfile;
+
+ return React__default.createElement("div", {
+ className: className,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$2 : NORMAL_PADDING$3,
+ paddingBottom: chainBottom ? GROUPING_PADDING$2 : NORMAL_PADDING$3
+ }
+ }, React__default.createElement("div", {
+ className: "".concat(className, "--inner")
+ }, React__default.createElement("div", {
+ className: "".concat(className, "__left")
+ }, !chainBottom && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.Avatar, {
+ ref: avatarRef,
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ className: "".concat(className, "__left__sender-profile-image"),
+ src: sender.profileUrl,
+ width: "28px",
+ height: "28px",
+ alt: "sender-profile-image"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: message.sender,
+ close: closeDropdown
+ }) : React__default.createElement(index.UserProfile, {
+ user: message.sender,
+ onSuccess: closeDropdown
+ }));
+ }
+ })), React__default.createElement("div", {
+ className: "".concat(className, "__body")
+ }, !chainTop && React__default.createElement(index.Label, {
+ className: "".concat(className, "__body__sender-name"),
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, sender.nickname || stringSet.NO_NAME), React__default.createElement("div", {
+ className: "".concat(className, "__body__text-balloon")
+ }, React__default.createElement(index.Label, {
+ className: "".concat(className, "__body__text-balloon__header"),
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React__default.createElement(index.Label, {
+ className: "".concat(className, "__body__text-balloon__description"),
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, stringSet.UNKNOWN__CANNOT_READ_MESSAGE))), React__default.createElement("div", {
+ className: "".concat(className, "--right-padding")
+ }, !chainBottom && React__default.createElement(index.Label, {
+ className: "".concat(className, "__sent-at"),
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, getMessageCreatedAt$2(message)))));
+}
+
+OutgoingUnknownMessage.propTypes = {
+ message: PropTypes.shape({}).isRequired,
+ status: PropTypes.string.isRequired,
+ showRemove: PropTypes.func,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+OutgoingUnknownMessage.defaultProps = {
+ showRemove: function showRemove() {}
+};
+IncomingUnknownMessage.propTypes = {
+ message: PropTypes.shape({
+ sender: PropTypes.shape({
+ nickname: PropTypes.string,
+ profileUrl: PropTypes.string
+ })
+ }).isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+
+var URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;
+var OG_MESSAGE = 'sendbird-og-message';
+var OUTGOING_OG_MESSAGE = 'sendbird-outgoing-og-message';
+var INCOMING_OG_MESSAGE = 'sendbird-incoming-og-message';
+
+var createUrlTester = function createUrlTester(regexp) {
+ return function (text) {
+ return regexp.test(text);
+ };
+};
+var getIsSentFromStatus$1 = function getIsSentFromStatus(status) {
+ return status === type.MessageStatusType.SENT || status === type.MessageStatusType.DELIVERED || status === type.MessageStatusType.READ;
+};
+var copyToClipboard = function copyToClipboard(text) {
+ try {
+ if (window.clipboardData && window.clipboardData.setData) {
+ // Internet Explorer-specific code path
+ // to prevent textarea being shown while dialog is visible.
+ return window.clipboardData.setData('Text', text);
+ }
+
+ if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
+ var textarea = document.createElement('textarea');
+ textarea.textContent = text;
+ textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.
+
+ document.body.appendChild(textarea);
+ textarea.select();
+
+ try {
+ return document.execCommand('copy'); // Security exception may be thrown by some browsers.
+ } catch (ex) {
+ return false;
+ } finally {
+ document.body.removeChild(textarea);
+ }
+ }
+
+ return false;
+ } catch (err) {
+ return err;
+ }
+};
+var getSenderProfileUrl = function getSenderProfileUrl(message) {
+ return message.sender && message.sender.profileUrl;
+};
+var getSenderName = function getSenderName(message) {
+ return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
+};
+var getMessageCreatedAt$3 = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+var checkOGIsEnalbed = function checkOGIsEnalbed(message) {
+ var ogMetaData = message.ogMetaData;
+
+ if (!ogMetaData) {
+ return false;
+ }
+
+ var url = ogMetaData.url;
+
+ if (!url) {
+ return false;
+ }
+
+ return true;
+};
+
+var WORD_TYPOGRAPHY$1 = index.LabelTypography.BODY_1;
+var WORD_COLOR = index.LabelColors.ONBACKGROUND_1;
+var EDITED_COLOR$1 = index.LabelColors.ONBACKGROUND_2;
+var isUrl = createUrlTester(URL_REG);
+function useMemoizedMessageText$1(_ref) {
+ var message = _ref.message,
+ updatedAt = _ref.updatedAt,
+ className = _ref.className;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.useMemo(function () {
+ return function () {
+ var splitMessage = message.split(' ');
+ var matchedMessage = splitMessage.map(function (word) {
+ return isUrl(word) ? React__default.createElement(index$2.LinkLabel, {
+ key: LocalizationContext.uuidv4$1(),
+ className: className,
+ src: word,
+ type: WORD_TYPOGRAPHY$1,
+ color: WORD_COLOR
+ }, word) : React__default.createElement(index.Label, {
+ key: LocalizationContext.uuidv4$1(),
+ className: className,
+ type: WORD_TYPOGRAPHY$1,
+ color: WORD_COLOR
+ }, word);
+ });
+
+ if (updatedAt > 0) {
+ matchedMessage.push(React__default.createElement(index.Label, {
+ key: LocalizationContext.uuidv4$1(),
+ className: className,
+ type: WORD_TYPOGRAPHY$1,
+ color: EDITED_COLOR$1
+ }, stringSet.MESSAGE_EDITED));
+ }
+
+ return matchedMessage;
+ };
+ }, [message, updatedAt, className]);
+}
+
+var GROUPING_PADDING$3 = '1px';
+var NORAML_PADDING = '8px';
+
+var OGMessageSwitch = function OGMessageSwitch(_ref) {
+ var isByMe = _ref.isByMe,
+ userId = _ref.userId,
+ status = _ref.status,
+ message = _ref.message,
+ disabled = _ref.disabled,
+ showEdit = _ref.showEdit,
+ chainTop = _ref.chainTop,
+ className = _ref.className,
+ membersMap = _ref.membersMap,
+ showRemove = _ref.showRemove,
+ useReaction = _ref.useReaction,
+ emojiAllMap = _ref.emojiAllMap,
+ chainBottom = _ref.chainBottom,
+ resendMessage = _ref.resendMessage,
+ toggleReaction = _ref.toggleReaction,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems;
+ var ogMetaData = message.ogMetaData;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ var memoizedMessageText = useMemoizedMessageText$1({
+ message: message.message,
+ updatedAt: message.updatedAt,
+ className: 'sendbird-og-message-word'
+ });
+
+ var openLink = function openLink() {
+ if (checkOGIsEnalbed(message)) {
+ var url = ogMetaData.url;
+ window.open(url);
+ }
+ };
+
+ return React__default.createElement("div", {
+ className: "".concat(OG_MESSAGE, " ").concat(OG_MESSAGE).concat(isByMe ? '--outgoing' : '--incoming', " ").concat(injectingClassName.join(' '))
+ }, isByMe ? React__default.createElement(OutgoingOGMessage, {
+ status: status,
+ userId: userId,
+ message: message,
+ disabled: disabled,
+ openLink: openLink,
+ showEdit: showEdit,
+ chainTop: chainTop,
+ showRemove: showRemove,
+ membersMap: membersMap,
+ chainBottom: chainBottom,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ resendMessage: resendMessage,
+ toggleReaction: toggleReaction,
+ memoizedMessageText: memoizedMessageText,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }) : React__default.createElement(IncomingOGMessage, {
+ userId: userId,
+ message: message,
+ openLink: openLink,
+ chainTop: chainTop,
+ membersMap: membersMap,
+ chainBottom: chainBottom,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ toggleReaction: toggleReaction,
+ memoizedMessageText: memoizedMessageText,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }));
+};
+
+function OutgoingOGMessage(props) {
+ var status = props.status,
+ userId = props.userId,
+ message = props.message,
+ disabled = props.disabled,
+ openLink = props.openLink,
+ showEdit = props.showEdit,
+ chainTop = props.chainTop,
+ showRemove = props.showRemove,
+ membersMap = props.membersMap,
+ chainBottom = props.chainBottom,
+ emojiAllMap = props.emojiAllMap,
+ useReaction = props.useReaction,
+ resendMessage = props.resendMessage,
+ toggleReaction = props.toggleReaction,
+ memoizedMessageText = props.memoizedMessageText,
+ memoizedEmojiListItems = props.memoizedEmojiListItems;
+ var ogMetaData = message.ogMetaData;
+ var defaultImage = ogMetaData.defaultImage;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var MemoizedMessageText = memoizedMessageText;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var messageRef = React.useRef(null);
+ var parentRefReactions = React.useRef(null);
+ var parentRefMenus = React.useRef(null);
+ var parentContainRef = React.useRef(null);
+ var isMessageSent = getIsSentFromStatus$1(status);
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ mousehover = _useState2[0],
+ setMousehover = _useState2[1];
+
+ var _useState3 = React.useState(false),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ moreActive = _useState4[0],
+ setMoreActive = _useState4[1];
+
+ var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React__default.createElement("div", {
+ ref: messageRef,
+ className: OUTGOING_OG_MESSAGE,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$3 : NORAML_PADDING,
+ paddingBottom: chainBottom ? GROUPING_PADDING$3 : NORAML_PADDING
+ }
+ }, React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "--inner")
+ }, React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "--left-padding")
+ }, React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__more"),
+ ref: parentContainRef
+ }, React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__more__menu"),
+ ref: parentRefMenus,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.MORE,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: parentRefMenus // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: parentContainRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isMessageSent && React__default.createElement(index.MenuItem, {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__more__menu__copy"),
+ onClick: function onClick() {
+ copyToClipboard(message.message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__COPY), isMessageSent && React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showEdit(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__EDIT), message && message.isResendable && message.isResendable() && React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ }), isMessageSent && useReaction && emojiAllMap.size > 0 && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__more__add-reaction"),
+ ref: parentRefReactions,
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: parentRefReactions,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__message-status")
+ }, React__default.createElement(MessageStatus, {
+ message: message,
+ status: status
+ }))), React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "--body")
+ }, React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__text-balloon")
+ }, React__default.createElement(MemoizedMessageText, null)), React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail ").concat(checkOGIsEnalbed(message) ? '' : "".concat(OUTGOING_OG_MESSAGE, "__thumbnail--disabled")),
+ onClick: openLink,
+ onKeyDown: openLink,
+ role: "button",
+ tabIndex: 0
+ }, defaultImage && React__default.createElement(index.ImageRenderer, {
+ url: defaultImage.url || '',
+ alt: defaultImage.alt,
+ className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail__image"),
+ width: "320px",
+ height: "180px",
+ defaultComponent: React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail__image__placeholder")
+ }, React__default.createElement(index.Icon, {
+ width: "56px",
+ height: "56px",
+ type: index.IconTypes.NO_THUMBNAIL
+ }))
+ })), React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag ").concat(checkOGIsEnalbed(message) ? '' : "".concat(OUTGOING_OG_MESSAGE, "__og-tag--disabled")),
+ onClick: openLink,
+ onKeyDown: openLink,
+ role: "button",
+ tabIndex: 0
+ }, ogMetaData.title && React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__title")
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.SUBTITLE_2,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, ogMetaData.title)), ogMetaData.description && React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__description")
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.BODY_2,
+ color: index.LabelColors.ONBACKGROUND_1,
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__description__label")
+ }, ogMetaData.description)), ogMetaData.url && React__default.createElement(index.Label, {
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_2,
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__url")
+ }, ogMetaData.url), showEmojiReactions && React__default.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__emoji-reactions--wrapper"),
+ onClick: function onClick(event) {
+ return event.stopPropagation();
+ },
+ onKeyDown: function onKeyDown(event) {
+ return event.stopPropagation();
+ },
+ role: "button",
+ tabIndex: 0
+ }, React__default.createElement(EmojiReactions, {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__emoji-reactions"),
+ userId: userId,
+ message: message,
+ membersMap: membersMap,
+ emojiAllMap: emojiAllMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }))))));
+}
+
+function IncomingOGMessage(props) {
+ var userId = props.userId,
+ message = props.message,
+ openLink = props.openLink,
+ chainTop = props.chainTop,
+ membersMap = props.membersMap,
+ chainBottom = props.chainBottom,
+ useReaction = props.useReaction,
+ emojiAllMap = props.emojiAllMap,
+ toggleReaction = props.toggleReaction,
+ memoizedMessageText = props.memoizedMessageText,
+ memoizedEmojiListItems = props.memoizedEmojiListItems;
+ var ogMetaData = message.ogMetaData;
+ var defaultImage = ogMetaData.defaultImage;
+
+ var _useContext2 = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext2.stringSet;
+
+ var MemoizedMessageText = memoizedMessageText;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var messageRef = React.useRef(null);
+ var avatarRef = React.useRef(null);
+ var parentRefReactions = React.useRef(null);
+ var parentRefMenus = React.useRef(null);
+ var parentContainRef = React.useRef(null);
+
+ var _React$useContext = React__default.useContext(index.UserProfileContext),
+ disableUserProfile = _React$useContext.disableUserProfile,
+ renderUserProfile = _React$useContext.renderUserProfile;
+
+ var _useState5 = React.useState(false),
+ _useState6 = LocalizationContext._slicedToArray(_useState5, 2),
+ mousehover = _useState6[0],
+ setMousehover = _useState6[1];
+
+ var _useState7 = React.useState(false),
+ _useState8 = LocalizationContext._slicedToArray(_useState7, 2),
+ moreActive = _useState8[0],
+ setMoreActive = _useState8[1];
+
+ var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React__default.createElement("div", {
+ ref: messageRef,
+ className: INCOMING_OG_MESSAGE,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$3 : NORAML_PADDING,
+ paddingBottom: chainBottom ? GROUPING_PADDING$3 : NORAML_PADDING
+ }
+ }, React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "--inner")
+ }, React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "--body")
+ }, !chainBottom && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.Avatar, {
+ ref: avatarRef,
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ className: "".concat(INCOMING_OG_MESSAGE, "__avatar"),
+ src: getSenderProfileUrl(message),
+ width: "28px",
+ height: "28px",
+ alt: "sender-profile-image"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: message.sender,
+ close: closeDropdown
+ }) : React__default.createElement(index.UserProfile, {
+ user: message.sender,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), !chainTop && React__default.createElement(index.Label, {
+ className: "".concat(INCOMING_OG_MESSAGE, "__sender-name"),
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, getSenderName(message)), React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__text-balloon")
+ }, React__default.createElement(MemoizedMessageText, null)), React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail ").concat(checkOGIsEnalbed(message) ? '' : "".concat(INCOMING_OG_MESSAGE, "__thumbnail--disabled")),
+ onClick: openLink,
+ onKeyDown: openLink,
+ role: "button",
+ tabIndex: 0
+ }, defaultImage && React__default.createElement(index.ImageRenderer, {
+ url: defaultImage.url || '',
+ alt: defaultImage.alt || '',
+ className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail__image"),
+ width: "320px",
+ height: "180px",
+ defaultComponent: React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail__image__placeholder")
+ }, React__default.createElement(index.Icon, {
+ width: "56px",
+ height: "56px",
+ type: index.IconTypes.NO_THUMBNAIL
+ }))
+ })), React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag ").concat(checkOGIsEnalbed(message) ? '' : "".concat(INCOMING_OG_MESSAGE, "__og-tag--disabled")),
+ onClick: openLink,
+ onKeyDown: openLink,
+ role: "button",
+ tabIndex: 0
+ }, ogMetaData.title && React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__title")
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.SUBTITLE_2,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, ogMetaData.title)), ogMetaData.description && React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__description")
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.BODY_2,
+ color: index.LabelColors.ONBACKGROUND_1,
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__description__label")
+ }, ogMetaData.description)), ogMetaData.url && React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__url")
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_2,
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__url__label")
+ }, ogMetaData.url)), showEmojiReactions && React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__emoji-reactions--wrapper"),
+ onClick: function onClick(event) {
+ return event.stopPropagation();
+ },
+ onKeyDown: function onKeyDown(event) {
+ return event.stopPropagation();
+ },
+ role: "button",
+ tabIndex: 0
+ }, React__default.createElement(EmojiReactions, {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__emoji-reactions"),
+ userId: userId,
+ message: message,
+ membersMap: membersMap,
+ emojiAllMap: emojiAllMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ })))), React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "--right-padding")
+ }, !chainBottom && !(mousehover || moreActive) && React__default.createElement(index.Label, {
+ className: "".concat(INCOMING_OG_MESSAGE, "__sent-at"),
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, getMessageCreatedAt$3(message)), React__default.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__more"),
+ ref: parentContainRef
+ }, showReactionAddButton && React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: parentRefReactions,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(MemoizedEmojiListItems, {
+ parentRef: parentRefReactions,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ message: message,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ }), React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: parentRefMenus,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.MORE,
+ fillColor: index.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: parentRefMenus,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown
+ }, React__default.createElement(index.MenuItem, {
+ className: "".concat(INCOMING_OG_MESSAGE, "__more__menu__copy"),
+ onClick: function onClick() {
+ copyToClipboard(message.message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__COPY));
+ }
+ })))));
+}
+
+var noop$3 = function noop() {};
+
+OGMessageSwitch.propTypes = {
+ isByMe: PropTypes.bool.isRequired,
+ userId: PropTypes.string.isRequired,
+ message: PropTypes.shape({
+ message: PropTypes.string,
+ sender: PropTypes.shape({}),
+ ogMetaData: PropTypes.shape({
+ title: PropTypes.string,
+ description: PropTypes.string,
+ url: PropTypes.string,
+ defaultImage: PropTypes.shape({
+ url: PropTypes.string,
+ alt: PropTypes.string
+ })
+ }),
+ reactions: PropTypes.array,
+ updatedAt: PropTypes.number
+ }).isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ status: PropTypes.string,
+ disabled: PropTypes.bool,
+ showEdit: PropTypes.func,
+ showRemove: PropTypes.func,
+ resendMessage: PropTypes.func,
+ toggleReaction: PropTypes.func,
+ membersMap: PropTypes.instanceOf(Map),
+ emojiAllMap: PropTypes.instanceOf(Map),
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool,
+ chainBottom: PropTypes.bool
+};
+OGMessageSwitch.defaultProps = {
+ className: '',
+ status: '',
+ disabled: false,
+ showEdit: noop$3,
+ showRemove: noop$3,
+ resendMessage: noop$3,
+ toggleReaction: noop$3,
+ membersMap: new Map(),
+ emojiAllMap: new Map(),
+ memoizedEmojiListItems: noop$3,
+ chainTop: false,
+ chainBottom: false
+};
+OutgoingOGMessage.propTypes = {
+ status: PropTypes.string,
+ userId: PropTypes.string.isRequired,
+ message: PropTypes.shape({
+ message: PropTypes.string,
+ ogMetaData: PropTypes.shape({
+ title: PropTypes.string,
+ description: PropTypes.string,
+ url: PropTypes.string,
+ defaultImage: PropTypes.shape({
+ url: PropTypes.string,
+ alt: PropTypes.string
+ })
+ }),
+ reactions: PropTypes.array,
+ updatedAt: PropTypes.number,
+ isResendable: PropTypes.func,
+ errorCode: PropTypes.number
+ }).isRequired,
+ disabled: PropTypes.bool.isRequired,
+ openLink: PropTypes.func.isRequired,
+ showEdit: PropTypes.func.isRequired,
+ showRemove: PropTypes.func.isRequired,
+ membersMap: PropTypes.instanceOf(Map).isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ resendMessage: PropTypes.func.isRequired,
+ toggleReaction: PropTypes.func.isRequired,
+ memoizedMessageText: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func.isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+OutgoingOGMessage.defaultProps = {
+ status: ''
+};
+IncomingOGMessage.propTypes = {
+ userId: PropTypes.string.isRequired,
+ message: PropTypes.shape({
+ message: PropTypes.string,
+ sender: PropTypes.shape({}),
+ ogMetaData: PropTypes.shape({
+ title: PropTypes.string,
+ description: PropTypes.string,
+ url: PropTypes.string,
+ defaultImage: PropTypes.shape({
+ url: PropTypes.string,
+ alt: PropTypes.string
+ })
+ }),
+ reactions: PropTypes.array,
+ updatedAt: PropTypes.number
+ }).isRequired,
+ openLink: PropTypes.func.isRequired,
+ membersMap: PropTypes.instanceOf(Map).isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ toggleReaction: PropTypes.func.isRequired,
+ memoizedMessageText: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func.isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+
+function MessageHoc(_ref) {
+ var _MessageTypes$ADMIN$M;
+
+ var message = _ref.message,
+ userId = _ref.userId,
+ disabled = _ref.disabled,
+ editDisabled = _ref.editDisabled,
+ hasSeperator = _ref.hasSeperator,
+ deleteMessage = _ref.deleteMessage,
+ updateMessage = _ref.updateMessage,
+ status = _ref.status,
+ resendMessage = _ref.resendMessage,
+ useReaction = _ref.useReaction,
+ chainTop = _ref.chainTop,
+ chainBottom = _ref.chainBottom,
+ emojiAllMap = _ref.emojiAllMap,
+ membersMap = _ref.membersMap,
+ toggleReaction = _ref.toggleReaction,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems,
+ renderCustomMessage = _ref.renderCustomMessage,
+ currentGroupChannel = _ref.currentGroupChannel;
+ var _message$sender = message.sender,
+ sender = _message$sender === void 0 ? {} : _message$sender;
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ showEdit = _useState2[0],
+ setShowEdit = _useState2[1];
+
+ var _useState3 = React.useState(false),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ showRemove = _useState4[0],
+ setShowRemove = _useState4[1];
+
+ var _useState5 = React.useState(false),
+ _useState6 = LocalizationContext._slicedToArray(_useState5, 2),
+ showFileViewer = _useState6[0],
+ setShowFileViewer = _useState6[1];
+
+ var editMessageInputRef = React.useRef(null);
+ var RenderedMessage = React.useMemo(function () {
+ if (renderCustomMessage) {
+ return renderCustomMessage(message, currentGroupChannel);
+ }
+
+ return null;
+ }, [message, message.message, renderCustomMessage]);
+ var isByMe = userId === sender.userId || message.requestState === 'pending' || message.requestState === 'failed';
+
+ if (RenderedMessage) {
+ return React__default.createElement("div", {
+ className: "sendbird-msg-hoc sendbird-msg--scroll-ref"
+ }, hasSeperator && React__default.createElement(index$2.DateSeparator, null, React__default.createElement(index.Label, {
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, format(message.createdAt, 'MMMM dd, yyyy'))), React__default.createElement(RenderedMessage, {
+ message: message
+ }));
+ }
+
+ if (showEdit) {
+ return React__default.createElement(index$2.MessageInput, {
+ isEdit: true,
+ disabled: editDisabled,
+ ref: editMessageInputRef,
+ name: message.messageId,
+ onSendMessage: updateMessage,
+ onCancelEdit: function onCancelEdit() {
+ setShowEdit(false);
+ },
+ value: message.message
+ });
+ }
+
+ return React__default.createElement("div", {
+ className: "sendbird-msg-hoc sendbird-msg--scroll-ref"
+ }, hasSeperator && React__default.createElement(index$2.DateSeparator, null, React__default.createElement(index.Label, {
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, format(message.createdAt, 'MMMM dd, yyyy'))), (_MessageTypes$ADMIN$M = {}, LocalizationContext._defineProperty(_MessageTypes$ADMIN$M, MessageTypes.ADMIN, React__default.createElement(AdminMessage, {
+ message: message
+ })), LocalizationContext._defineProperty(_MessageTypes$ADMIN$M, MessageTypes.FILE, React__default.createElement(MessageSwitch, {
+ message: message,
+ userId: userId,
+ disabled: disabled,
+ isByMe: isByMe,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ status: status,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ })), LocalizationContext._defineProperty(_MessageTypes$ADMIN$M, MessageTypes.OG, React__default.createElement(OGMessageSwitch, {
+ message: message,
+ status: status,
+ isByMe: isByMe,
+ userId: userId,
+ showEdit: setShowEdit,
+ disabled: disabled,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ })), LocalizationContext._defineProperty(_MessageTypes$ADMIN$M, MessageTypes.THUMBNAIL, React__default.createElement(ThumbnailMessage, {
+ disabled: disabled,
+ message: message,
+ userId: userId,
+ isByMe: isByMe,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ onClick: setShowFileViewer,
+ status: status,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ })), LocalizationContext._defineProperty(_MessageTypes$ADMIN$M, MessageTypes.USER, React__default.createElement(Message, {
+ message: message,
+ disabled: disabled,
+ isByMe: isByMe,
+ userId: userId,
+ showEdit: setShowEdit,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ status: status,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ })), _MessageTypes$ADMIN$M)[getMessageType(message)], showRemove && React__default.createElement(RemoveMessage, {
+ onCloseModal: function onCloseModal() {
+ return setShowRemove(false);
+ },
+ onDeleteMessage: function onDeleteMessage() {
+ deleteMessage(message);
+ }
+ }), showFileViewer && React__default.createElement(index$2.FileViewer, {
+ onClose: function onClose() {
+ return setShowFileViewer(false);
+ },
+ message: message,
+ onDelete: function onDelete() {
+ deleteMessage(message, function () {
+ setShowFileViewer(false);
+ });
+ },
+ isByMe: isByMe
+ }), !(message.isFileMessage && message.isFileMessage() || message.messageType === 'file') && !(message.isAdminMessage && message.isAdminMessage()) && !(message.isUserMessage && message.isUserMessage() || message.messageType === 'user') && !showFileViewer && React__default.createElement(UnknownMessage, {
+ message: message,
+ status: status,
+ isByMe: isByMe,
+ showRemove: setShowRemove,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }));
+}
+MessageHoc.propTypes = {
+ userId: PropTypes.string,
+ message: PropTypes.shape({
+ isFileMessage: PropTypes.func,
+ isAdminMessage: PropTypes.func,
+ isUserMessage: PropTypes.func,
+ isDateSeperator: PropTypes.func,
+ // should be a number, but there's a bug in SDK shich returns string
+ messageId: PropTypes.number,
+ type: PropTypes.string,
+ createdAt: PropTypes.number,
+ message: PropTypes.string,
+ requestState: PropTypes.string,
+ messageType: PropTypes.string,
+ sender: PropTypes.shape({
+ userId: PropTypes.string
+ }),
+ ogMetaData: PropTypes.shape({})
+ }),
+ renderCustomMessage: PropTypes.func,
+ currentGroupChannel: PropTypes.shape,
+ hasSeperator: PropTypes.bool,
+ disabled: PropTypes.bool,
+ editDisabled: PropTypes.bool,
+ deleteMessage: PropTypes.func.isRequired,
+ updateMessage: PropTypes.func.isRequired,
+ resendMessage: PropTypes.func.isRequired,
+ status: PropTypes.string,
+ useReaction: PropTypes.bool.isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ membersMap: PropTypes.instanceOf(Map).isRequired,
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func
+};
+MessageHoc.defaultProps = {
+ userId: '',
+ editDisabled: false,
+ renderCustomMessage: null,
+ currentGroupChannel: {},
+ message: {},
+ hasSeperator: false,
+ disabled: false,
+ status: '',
+ toggleReaction: function toggleReaction() {},
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+
+var ConversationScroll =
+/*#__PURE__*/
+function (_Component) {
+ LocalizationContext._inherits(ConversationScroll, _Component);
+
+ function ConversationScroll() {
+ var _getPrototypeOf2;
+
+ var _this;
+
+ LocalizationContext._classCallCheck(this, ConversationScroll);
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ _this = LocalizationContext._possibleConstructorReturn(this, (_getPrototypeOf2 = LocalizationContext._getPrototypeOf(ConversationScroll)).call.apply(_getPrototypeOf2, [this].concat(args)));
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "onScroll", function (e) {
+ var _this$props = _this.props,
+ scrollRef = _this$props.scrollRef,
+ hasMore = _this$props.hasMore,
+ messagesDispatcher = _this$props.messagesDispatcher,
+ onScroll = _this$props.onScroll,
+ currentGroupChannel = _this$props.currentGroupChannel;
+ var element = e.target;
+ var scrollTop = element.scrollTop,
+ clientHeight = element.clientHeight,
+ scrollHeight = element.scrollHeight;
+
+ if (scrollTop === 0) {
+ if (!hasMore) {
+ return;
+ }
+
+ var nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');
+ var first = nodes[0];
+ onScroll(function (_ref) {
+ var _ref2 = LocalizationContext._slicedToArray(_ref, 1),
+ messages = _ref2[0];
+
+ if (messages) {
+ // https://github.com/scabbiaza/react-scroll-position-on-updating-dom
+ first.scrollIntoView();
+ }
+ });
+ }
+
+ setTimeout(function () {
+ // mark as read if scroll is at end
+ if (clientHeight + scrollTop === scrollHeight) {
+ messagesDispatcher({
+ type: MARK_AS_READ
+ });
+ currentGroupChannel.markAsRead();
+ }
+ }, 500);
+ });
+
+ return _this;
+ }
+
+ LocalizationContext._createClass(ConversationScroll, [{
+ key: "render",
+ value: function render() {
+ var _this$props2 = this.props,
+ userId = _this$props2.userId,
+ disabled = _this$props2.disabled,
+ scrollRef = _this$props2.scrollRef,
+ readStatus = _this$props2.readStatus,
+ membersMap = _this$props2.membersMap,
+ initialized = _this$props2.initialized,
+ allMessages = _this$props2.allMessages,
+ useReaction = _this$props2.useReaction,
+ emojiAllMap = _this$props2.emojiAllMap,
+ editDisabled = _this$props2.editDisabled,
+ deleteMessage = _this$props2.deleteMessage,
+ updateMessage = _this$props2.updateMessage,
+ resendMessage = _this$props2.resendMessage,
+ renderCustomMessage = _this$props2.renderCustomMessage,
+ renderChatItem = _this$props2.renderChatItem,
+ emojiContainer = _this$props2.emojiContainer,
+ toggleReaction = _this$props2.toggleReaction,
+ useMessageGrouping = _this$props2.useMessageGrouping,
+ currentGroupChannel = _this$props2.currentGroupChannel,
+ memoizedEmojiListItems = _this$props2.memoizedEmojiListItems;
+ return React__default.createElement("div", {
+ className: "sendbird-conversation__messages"
+ }, React__default.createElement("div", {
+ ref: scrollRef,
+ className: "sendbird-conversation__scroll-container",
+ onScroll: this.onScroll
+ }, React__default.createElement("div", {
+ className: "sendbird-conversation__padding"
+ }), React__default.createElement("div", {
+ className: "sendbird-conversation__messages-padding"
+ }, initialized && allMessages.map(function (m, idx) {
+ var previousMessage = allMessages[idx - 1];
+ var nextMessage = allMessages[idx + 1];
+
+ var _ref3 = useMessageGrouping ? compareMessagesForGrouping(previousMessage, m, nextMessage) : [false, false],
+ _ref4 = LocalizationContext._slicedToArray(_ref3, 2),
+ chainTop = _ref4[0],
+ chainBottom = _ref4[1];
+
+ var previousMessageCreatedAt = previousMessage && previousMessage.createdAt;
+ var currentCreatedAt = m.createdAt; // https://stackoverflow.com/a/41855608
+
+ var hasSeperator = !(previousMessageCreatedAt && isSameDay(currentCreatedAt, previousMessageCreatedAt));
+
+ if (renderChatItem) {
+ return React__default.createElement("div", {
+ key: m.messageId || m.reqId,
+ className: "sendbird-msg--scroll-ref"
+ }, renderChatItem({
+ message: m,
+ channel: currentGroupChannel,
+ onDeleteMessage: deleteMessage,
+ onUpdateMessage: updateMessage,
+ onResendMessage: resendMessage,
+ emojiContainer: emojiContainer
+ }));
+ }
+
+ return React__default.createElement(MessageHoc, {
+ renderCustomMessage: renderCustomMessage,
+ key: m.messageId || m.reqId,
+ userId: userId,
+ status: readStatus[m.messageId] || getParsedStatus(m, currentGroupChannel) // show status for pending/failed messages
+ ,
+ message: m,
+ currentGroupChannel: currentGroupChannel,
+ disabled: disabled,
+ membersMap: membersMap,
+ chainTop: chainTop,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ editDisabled: editDisabled,
+ hasSeperator: hasSeperator,
+ chainBottom: chainBottom,
+ updateMessage: updateMessage,
+ deleteMessage: deleteMessage,
+ resendMessage: resendMessage,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ });
+ }))));
+ }
+ }]);
+
+ return ConversationScroll;
+}(React.Component);
+ConversationScroll.propTypes = {
+ // https://stackoverflow.com/a/52646941
+ scrollRef: PropTypes.shape({
+ current: PropTypes.oneOfType([PropTypes.element, PropTypes.shape({})])
+ }).isRequired,
+ hasMore: PropTypes.bool,
+ messagesDispatcher: PropTypes.func.isRequired,
+ onScroll: PropTypes.func,
+ initialized: PropTypes.bool,
+ editDisabled: PropTypes.bool,
+ disabled: PropTypes.bool,
+ userId: PropTypes.string,
+ allMessages: PropTypes.arrayOf(PropTypes.shape({
+ createdAt: PropTypes.number
+ })).isRequired,
+ deleteMessage: PropTypes.func.isRequired,
+ resendMessage: PropTypes.func.isRequired,
+ updateMessage: PropTypes.func.isRequired,
+ readStatus: PropTypes.shape({}).isRequired,
+ currentGroupChannel: PropTypes.shape({
+ markAsRead: PropTypes.func,
+ members: PropTypes.arrayOf(PropTypes.shape({}))
+ }).isRequired,
+ renderChatItem: PropTypes.element,
+ renderCustomMessage: PropTypes.func,
+ useReaction: PropTypes.bool,
+ emojiContainer: PropTypes.shape({}),
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ useMessageGrouping: PropTypes.bool,
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func
+};
+ConversationScroll.defaultProps = {
+ hasMore: false,
+ editDisabled: false,
+ disabled: false,
+ initialized: false,
+ userId: '',
+ renderCustomMessage: null,
+ renderChatItem: null,
+ onScroll: null,
+ useReaction: true,
+ emojiContainer: {},
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ useMessageGrouping: true,
+ toggleReaction: function toggleReaction() {},
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+
+function Notification(_ref) {
+ var count = _ref.count,
+ time = _ref.time,
+ onClick = _ref.onClick;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var timeArray = time.split(' ');
+ timeArray.splice(-2, 0, stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__ON);
+ return (// eslint-disable-next-line
+ React__default.createElement("div", {
+ className: "sendbird-notification",
+ onClick: onClick
+ }, React__default.createElement(index.Label, {
+ className: "sendbird-notification__text",
+ color: index.LabelColors.ONCONTENT_1,
+ type: index.LabelTypography.CAPTION_2
+ }, "".concat(count, " "), stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE, " ".concat(timeArray.join(' '))), React__default.createElement(index.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index.IconTypes.SHEVRON_DOWN,
+ fillColor: index.IconColors.CONTENT
+ }))
+ );
+}
+Notification.propTypes = {
+ count: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ time: PropTypes.string,
+ onClick: PropTypes.func.isRequired
+};
+Notification.defaultProps = {
+ count: 0,
+ time: ''
+};
+
+var FrozenNotification = function FrozenNotification() {
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ return React__default.createElement("div", {
+ className: "sendbird-notification sendbird-notification--frozen"
+ }, React__default.createElement(index.Label, {
+ className: "sendbird-notification__text",
+ type: index.LabelTypography.CAPTION_2
+ }, stringSet.CHANNEL_FROZEN));
+};
+
+var TypingIndicatorText = function TypingIndicatorText(_ref) {
+ var members = _ref.members;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ if (!members || members.length === 0) {
+ return '';
+ }
+
+ if (members && members.length === 1) {
+ return "".concat(members[0].nickname, " ").concat(stringSet.TYPING_INDICATOR__IS_TYPING);
+ }
+
+ if (members && members.length === 2) {
+ return "".concat(members[0].nickname, " ").concat(stringSet.TYPING_INDICATOR__AND, " ").concat(members[1].nickname, " ").concat(stringSet.TYPING_INDICATOR__ARE_TYPING);
+ }
+
+ return stringSet.TYPING_INDICATOR__MULTIPLE_TYPING;
+};
+
+function TypingIndicator(_ref2) {
+ var channelUrl = _ref2.channelUrl,
+ sb = _ref2.sb,
+ logger = _ref2.logger;
+
+ var _useState = React.useState(LocalizationContext.uuidv4$1()),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ handlerId = _useState2[0],
+ setHandlerId = _useState2[1];
+
+ var _useState3 = React.useState([]),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ typingMembers = _useState4[0],
+ setTypingMembers = _useState4[1];
+
+ React.useEffect(function () {
+ if (sb && sb.ChannelHandler) {
+ sb.removeChannelHandler(handlerId);
+ var newHandlerId = LocalizationContext.uuidv4$1();
+ var handler = new sb.ChannelHandler(); // there is a possible warning in here - setState called after unmount
+
+ handler.onTypingStatusUpdated = function (groupChannel) {
+ logger.info('Channel > Typing Indicator: onTypingStatusUpdated', groupChannel);
+ var members = groupChannel.getTypingMembers();
+
+ if (groupChannel.url === channelUrl) {
+ setTypingMembers(members);
+ }
+ };
+
+ sb.addChannelHandler(newHandlerId, handler);
+ setHandlerId(newHandlerId);
+ }
+
+ return function () {
+ setTypingMembers([]);
+
+ if (sb && sb.removeChannelHandler) {
+ sb.removeChannelHandler(handlerId);
+ }
+ };
+ }, [channelUrl]);
+ return React__default.createElement(index.Label, {
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, React__default.createElement(TypingIndicatorText, {
+ members: typingMembers
+ }));
+}
+
+TypingIndicator.propTypes = {
+ channelUrl: PropTypes.string.isRequired,
+ sb: PropTypes.shape({
+ ChannelHandler: PropTypes.func,
+ removeChannelHandler: PropTypes.func,
+ addChannelHandler: PropTypes.func
+ }).isRequired,
+ logger: PropTypes.shape({
+ info: PropTypes.func
+ }).isRequired
+};
+
+// Logic required to handle message input rendering
+
+var MessageInputWrapper = function MessageInputWrapper(_a, ref) {
+ var channel = _a.channel,
+ user = _a.user,
+ onSendMessage = _a.onSendMessage,
+ onFileUpload = _a.onFileUpload,
+ renderMessageInput = _a.renderMessageInput,
+ isOnline = _a.isOnline,
+ initialized = _a.initialized;
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ var disabled = !initialized || isDisabledBecauseFrozen(channel) || isDisabledBecauseMuted(channel) || !isOnline;
+ var isOperator$1 = isOperator(channel);
+ var isBroadcast = channel.isBroadcast; // custom message
+
+ if (renderMessageInput) {
+ return renderMessageInput({
+ channel: channel,
+ user: user,
+ disabled: disabled
+ });
+ } // broadcast channel + not operator
+
+
+ if (isBroadcast && !isOperator$1) {
+ return null;
+ } // other conditions
+
+
+ return React__default.createElement(index$2.MessageInput, {
+ placeholder: isDisabledBecauseFrozen(channel) && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED || isDisabledBecauseMuted(channel) && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED,
+ ref: ref,
+ disabled: disabled,
+ onStartTyping: function onStartTyping() {
+ channel.startTyping();
+ },
+ onSendMessage: onSendMessage,
+ onFileUpload: onFileUpload
+ });
+};
+
+var MessageInputWrapper$1 = React__default.forwardRef(MessageInputWrapper);
+
+function ConnectionStatus() {
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React__default.createElement("div", {
+ className: "sendbird-conversation__connection-status"
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.BODY_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, stringSet.TRYING_TO_CONNECT), React__default.createElement(index.Icon, {
+ type: index.IconTypes.DISCONNECTED,
+ fillColor: index.IconColors.SENT,
+ height: "14px",
+ width: "14px"
+ }));
+}
+
+var prettyDate = function prettyDate(date) {
+ return formatDistanceToNowStrict(date, {
+ addSuffix: true
+ });
+};
+var getOthersLastSeenAt = function getOthersLastSeenAt(channel) {
+ if (!channel || !channel.getReadStatus || !channel.members || channel.members.length !== 2) {
+ return '';
+ }
+
+ var lastSeenList = LocalizationContext._toConsumableArray(Object.values(channel.getReadStatus()));
+
+ var lastSeenAt = lastSeenList.length > 0 ? lastSeenList[0].last_seen_at : 0;
+
+ if (lastSeenAt === 0) {
+ return '';
+ }
+
+ return prettyDate(lastSeenAt);
+};
+var getChannelTitle = function getChannelTitle() {
+ var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var currentUserId = arguments.length > 1 ? arguments[1] : undefined;
+ var stringSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : index.LabelStringSet;
+
+ if (!channel || !channel.name && !channel.members) {
+ return stringSet.NO_TITLE;
+ }
+
+ if (channel.name && channel.name !== 'Group Channel') {
+ return channel.name;
+ }
+
+ if (channel.members.length === 1) {
+ return stringSet.NO_MEMBERS;
+ }
+
+ return channel.members.filter(function (_ref) {
+ var userId = _ref.userId;
+ return userId !== currentUserId;
+ }).map(function (_ref2) {
+ var nickname = _ref2.nickname;
+ return nickname || stringSet.NO_NAME;
+ }).join(', ');
+};
+
+function AutoRefresh(_ref) {
+ var repeatFunc = _ref.repeatFunc;
+
+ var _useState = React.useState(repeatFunc()),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ label = _useState2[0],
+ setLabel = _useState2[1];
+
+ React.useEffect(function () {
+ var interval = setInterval(function () {
+ if (label !== repeatFunc()) {
+ setLabel(repeatFunc());
+ }
+ }, 10000);
+ return function () {
+ clearInterval(interval);
+ };
+ }, []);
+ return React__default.createElement("div", {
+ className: "sendbird-repeat-text"
+ }, label);
+}
+AutoRefresh.propTypes = {
+ repeatFunc: PropTypes.func.isRequired
+};
+
+function ChatHeader(props) {
+ var currentGroupChannel = props.currentGroupChannel,
+ currentUser = props.currentUser,
+ title = props.title,
+ subTitle = props.subTitle,
+ isActive = props.isActive,
+ isMuted = props.isMuted,
+ onActionClick = props.onActionClick,
+ theme = props.theme;
+ var userId = currentUser.userId;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React__default.createElement("div", {
+ className: "sendbird-chat-header"
+ }, React__default.createElement("div", {
+ className: "sendbird-chat-header__left"
+ }, React__default.createElement(index$1.ChannelAvatar, {
+ theme: theme,
+ channel: currentGroupChannel,
+ userId: userId,
+ height: 32,
+ width: 32
+ }), React__default.createElement(index.Label, {
+ className: "sendbird-chat-header__title",
+ type: index.LabelTypography.H_2,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, title || getChannelTitle(currentGroupChannel, userId, stringSet)), typeof isActive === 'string' && isActive === 'true' || typeof isActive === 'boolean' && isActive ? React__default.createElement("div", {
+ className: "sendbird-chat-header__active"
+ }) : null, React__default.createElement(index.Label, {
+ className: "sendbird-chat-header__subtitle",
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, subTitle || React__default.createElement(AutoRefresh, {
+ repeatFunc: function repeatFunc() {
+ return getOthersLastSeenAt(currentGroupChannel);
+ }
+ }))), React__default.createElement("div", {
+ className: "sendbird-chat-header__right"
+ }, typeof isMuted === 'string' && isMuted === 'true' || typeof isMuted === 'boolean' && isMuted ? React__default.createElement(index.Icon, {
+ className: "sendbird-chat-header__mute",
+ type: index.IconTypes.MUTE,
+ width: "24px",
+ height: "24px"
+ }) : null, React__default.createElement(index.IconButton, {
+ className: "sendbird-chat-header__info",
+ width: "32px",
+ height: "32px",
+ onClick: onActionClick
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.INFO,
+ fillColor: index.IconColors.PRIMARY,
+ width: "24px",
+ height: "24px"
+ }))));
+}
+ChatHeader.propTypes = {
+ currentGroupChannel: PropTypes.shape({
+ members: PropTypes.arrayOf(PropTypes.shape({})),
+ coverUrl: PropTypes.string
+ }),
+ theme: PropTypes.string,
+ currentUser: PropTypes.shape({
+ userId: PropTypes.string
+ }),
+ title: PropTypes.string,
+ subTitle: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
+ isActive: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
+ isMuted: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
+ onActionClick: PropTypes.func
+};
+ChatHeader.defaultProps = {
+ currentGroupChannel: {},
+ title: '',
+ theme: 'light',
+ subTitle: '',
+ isActive: false,
+ isMuted: false,
+ currentUser: {},
+ onActionClick: function onActionClick() {}
+};
+
+var noop$4 = function noop() {};
+
+var ConversationPanel = function ConversationPanel(props) {
+ var channelUrl = props.channelUrl,
+ _props$stores = props.stores,
+ sdkStore = _props$stores.sdkStore,
+ userStore = _props$stores.userStore,
+ _props$config = props.config,
+ userId = _props$config.userId,
+ logger = _props$config.logger,
+ pubSub = _props$config.pubSub,
+ isOnline = _props$config.isOnline,
+ theme = _props$config.theme,
+ reconnect = props.dispatchers.reconnect,
+ _props$queries = props.queries,
+ queries = _props$queries === void 0 ? {} : _props$queries,
+ useReaction = props.useReaction,
+ renderChatItem = props.renderChatItem,
+ renderChatHeader = props.renderChatHeader,
+ renderCustomMessage = props.renderCustomMessage,
+ renderUserProfile = props.renderUserProfile,
+ disableUserProfile = props.disableUserProfile,
+ renderMessageInput = props.renderMessageInput,
+ useMessageGrouping = props.useMessageGrouping,
+ onChatHeaderActionClick = props.onChatHeaderActionClick,
+ onBeforeSendUserMessage = props.onBeforeSendUserMessage,
+ onBeforeSendFileMessage = props.onBeforeSendFileMessage,
+ onBeforeUpdateUserMessage = props.onBeforeUpdateUserMessage;
+ var sdk = sdkStore.sdk;
+ var config = props.config;
+ var sdkError = sdkStore.error;
+ var sdkInit = sdkStore.initialized;
+ var user = userStore.user;
+
+ if (queries.messageListQuery) {
+ // eslint-disable-next-line no-console
+ console.warn('messageListQuery will be deprecared in v1.3.0, please use messageListParams instead');
+ }
+
+ var userFilledMessageListQuery = queries.messageListParams || queries.messageListQuery;
+
+ var _useReducer = React.useReducer(reducer, messagesInitialState),
+ _useReducer2 = LocalizationContext._slicedToArray(_useReducer, 2),
+ messagesStore = _useReducer2[0],
+ messagesDispatcher = _useReducer2[1];
+
+ var scrollRef = React.useRef(null);
+ var allMessages = messagesStore.allMessages,
+ loading = messagesStore.loading,
+ hasMore = messagesStore.hasMore,
+ initialized = messagesStore.initialized,
+ unreadCount = messagesStore.unreadCount,
+ unreadSince = messagesStore.unreadSince,
+ isInvalid = messagesStore.isInvalid,
+ _messagesStore$curren = messagesStore.currentGroupChannel,
+ currentGroupChannel = _messagesStore$curren === void 0 ? {} : _messagesStore$curren,
+ lastMessageTimeStamp = messagesStore.lastMessageTimeStamp,
+ emojiContainer = messagesStore.emojiContainer,
+ readStatus = messagesStore.readStatus;
+ var isFrozen = currentGroupChannel.isFrozen,
+ isBroadcast = currentGroupChannel.isBroadcast;
+ var _sdk$appInfo = sdk.appInfo,
+ appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
+ var usingReaction = appInfo.isUsingReaction && !isBroadcast || useReaction || false;
+ var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
+ var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
+ var emojiAllMap = React.useMemo(function () {
+ return usingReaction ? getAllEmojisMapFromEmojiContainer(emojiContainer) : new Map();
+ }, [emojiContainer]);
+ var emojiAllList = React.useMemo(function () {
+ return usingReaction ? getAllEmojisFromEmojiContainer(emojiContainer) : [];
+ }, [emojiContainer]);
+ var nicknamesMap = React.useMemo(function () {
+ return usingReaction ? getNicknamesMapFromMembers(currentGroupChannel.members) : new Map();
+ }, [currentGroupChannel.members]);
+ var onScrollCallback = useScrollCallback({
+ currentGroupChannel: currentGroupChannel,
+ lastMessageTimeStamp: lastMessageTimeStamp,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ }, {
+ hasMore: hasMore,
+ logger: logger,
+ messagesDispatcher: messagesDispatcher,
+ sdk: sdk
+ });
+ var toggleReaction = useToggleReactionCallback({
+ currentGroupChannel: currentGroupChannel
+ }, {
+ logger: logger
+ });
+ var memoizedEmojiListItems = useMemoizedEmojiListItems({
+ emojiContainer: emojiContainer,
+ toggleReaction: toggleReaction
+ }, {
+ useReaction: usingReaction,
+ logger: logger,
+ userId: userId,
+ emojiAllList: emojiAllList
+ }); // to create message-datasource
+
+ useSetChannel({
+ channelUrl: channelUrl,
+ sdkInit: sdkInit
+ }, {
+ messagesDispatcher: messagesDispatcher,
+ sdk: sdk,
+ logger: logger
+ }); // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher
+
+ useHandleChannelEvents({
+ currentGroupChannel: currentGroupChannel,
+ sdkInit: sdkInit,
+ userId: userId
+ }, {
+ messagesDispatcher: messagesDispatcher,
+ sdk: sdk,
+ logger: logger
+ });
+ useInitialMessagesFetch({
+ currentGroupChannel: currentGroupChannel,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ }, {
+ sdk: sdk,
+ logger: logger,
+ messagesDispatcher: messagesDispatcher
+ }); // handles API calls from withSendbird
+
+ React.useEffect(function () {
+ var subScriber = pubSubHandler(channelUrl, pubSub, messagesDispatcher);
+ return function () {
+ pubSubHandleRemover(subScriber);
+ };
+ }, [channelUrl, sdkInit]); // to create initial read status
+
+ useSetReadStatus({
+ allMessages: allMessages,
+ currentGroupChannel: currentGroupChannel
+ }, {
+ messagesDispatcher: messagesDispatcher,
+ sdk: sdk,
+ logger: logger
+ }); // handling connection breaks
+
+ useHandleReconnect({
+ isOnline: isOnline
+ }, {
+ logger: logger,
+ sdk: sdk,
+ currentGroupChannel: currentGroupChannel,
+ messagesDispatcher: messagesDispatcher,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ });
+ var deleteMessage = useDeleteMessageCallback({
+ currentGroupChannel: currentGroupChannel,
+ messagesDispatcher: messagesDispatcher
+ }, {
+ logger: logger
+ });
+ var updateMessage = useUpdateMessageCallback({
+ currentGroupChannel: currentGroupChannel,
+ messagesDispatcher: messagesDispatcher,
+ onBeforeUpdateUserMessage: onBeforeUpdateUserMessage
+ }, {
+ logger: logger,
+ sdk: sdk,
+ pubSub: pubSub
+ });
+ var resendMessage = useResendMessageCallback({
+ currentGroupChannel: currentGroupChannel,
+ messagesDispatcher: messagesDispatcher
+ }, {
+ logger: logger
+ });
+
+ var _useSendMessageCallba = useSendMessageCallback({
+ currentGroupChannel: currentGroupChannel,
+ onBeforeSendUserMessage: onBeforeSendUserMessage
+ }, {
+ sdk: sdk,
+ logger: logger,
+ pubSub: pubSub,
+ messagesDispatcher: messagesDispatcher
+ }),
+ _useSendMessageCallba2 = LocalizationContext._slicedToArray(_useSendMessageCallba, 2),
+ messageInputRef = _useSendMessageCallba2[0],
+ onSendMessage = _useSendMessageCallba2[1];
+
+ var _useSendFileMessageCa = useSendFileMessageCallback({
+ currentGroupChannel: currentGroupChannel,
+ onBeforeSendFileMessage: onBeforeSendFileMessage
+ }, {
+ sdk: sdk,
+ logger: logger,
+ pubSub: pubSub,
+ messagesDispatcher: messagesDispatcher
+ }),
+ _useSendFileMessageCa2 = LocalizationContext._slicedToArray(_useSendFileMessageCa, 1),
+ onSendFileMessage = _useSendFileMessageCa2[0];
+
+ if (sdkError) {
+ return React__default.createElement("div", {
+ className: "sendbird-conversation"
+ }, React__default.createElement(index.PlaceHolder, {
+ type: index.PlaceHolderTypes$1.WRONG,
+ retryToConnect: function retryToConnect() {
+ logger.info('Channel: reconnecting');
+ reconnect();
+ }
+ }));
+ }
+
+ if (!channelUrl) {
+ return React__default.createElement("div", {
+ className: "sendbird-conversation"
+ }, React__default.createElement(index.PlaceHolder, {
+ type: index.PlaceHolderTypes$1.NO_CHANNELS
+ }));
+ }
+
+ if (loading) {
+ return React__default.createElement("div", {
+ className: "sendbird-conversation"
+ }, React__default.createElement(index.PlaceHolder, {
+ type: index.PlaceHolderTypes$1.LOADING
+ }));
+ }
+
+ if (isInvalid) {
+ return React__default.createElement("div", {
+ className: "sendbird-conversation"
+ }, React__default.createElement(index.PlaceHolder, {
+ type: index.PlaceHolderTypes$1.WRONG
+ }));
+ }
+
+ return React__default.createElement(index.UserProfileProvider, {
+ className: "sendbird-conversation",
+ disableUserProfile: userDefinedDisableUserProfile,
+ renderUserProfile: userDefinedRenderProfile
+ }, renderChatHeader ? renderChatHeader({
+ channel: currentGroupChannel,
+ user: user
+ }) : React__default.createElement(ChatHeader, {
+ theme: theme,
+ currentGroupChannel: currentGroupChannel,
+ currentUser: user,
+ onActionClick: onChatHeaderActionClick,
+ subTitle: currentGroupChannel.members && currentGroupChannel.members.length !== 2,
+ isActive: false,
+ isMuted: false
+ }), isFrozen && React__default.createElement(FrozenNotification, null), unreadCount > 0 && React__default.createElement(Notification, {
+ count: unreadCount,
+ onClick: function onClick() {
+ scrollIntoLast('.sendbird-msg--scroll-ref'); // there is no scroll
+
+ if (scrollRef.current.scrollTop === 0) {
+ currentGroupChannel.markAsRead();
+ messagesDispatcher({
+ type: MARK_AS_READ
+ });
+ }
+ },
+ time: unreadSince
+ }), React__default.createElement(ConversationScroll, {
+ swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
+ userId: userId,
+ hasMore: hasMore,
+ disabled: !isOnline,
+ onScroll: onScrollCallback,
+ scrollRef: scrollRef,
+ readStatus: readStatus,
+ initialized: initialized,
+ useReaction: usingReaction,
+ allMessages: allMessages,
+ emojiAllMap: emojiAllMap,
+ membersMap: nicknamesMap,
+ editDisabled: isDisabledBecauseFrozen(currentGroupChannel),
+ deleteMessage: deleteMessage,
+ updateMessage: updateMessage,
+ resendMessage: resendMessage,
+ toggleReaction: toggleReaction,
+ emojiContainer: emojiContainer,
+ renderChatItem: renderChatItem,
+ renderCustomMessage: renderCustomMessage,
+ useMessageGrouping: useMessageGrouping,
+ messagesDispatcher: messagesDispatcher,
+ currentGroupChannel: currentGroupChannel,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }), React__default.createElement("div", {
+ className: "sendbird-conversation__footer"
+ }, React__default.createElement(MessageInputWrapper$1, {
+ channel: currentGroupChannel,
+ user: user,
+ ref: messageInputRef,
+ onSendMessage: onSendMessage,
+ onFileUpload: onSendFileMessage,
+ renderMessageInput: renderMessageInput,
+ isOnline: isOnline,
+ initialized: initialized
+ }), React__default.createElement("div", {
+ className: "sendbird-conversation__typing-indicator"
+ }, React__default.createElement(TypingIndicator, {
+ channelUrl: channelUrl,
+ sb: sdk,
+ logger: logger
+ })), !isOnline && React__default.createElement(ConnectionStatus, {
+ sdkInit: sdkInit,
+ sb: sdk,
+ logger: logger
+ })));
+};
+ConversationPanel.propTypes = {
+ channelUrl: PropTypes.string,
+ stores: PropTypes.shape({
+ sdkStore: PropTypes.shape({
+ initialized: PropTypes.bool,
+ sdk: PropTypes.shape({
+ getErrorFirstCallback: PropTypes.func,
+ removeChannelHandler: PropTypes.func,
+ GroupChannel: PropTypes.any,
+ ChannelHandler: PropTypes.any,
+ addChannelHandler: PropTypes.func,
+ UserMessageParams: PropTypes.any,
+ FileMessageParams: PropTypes.any,
+ getAllEmoji: PropTypes.func,
+ appInfo: PropTypes.shape({})
+ }),
+ error: PropTypes.bool
+ }),
+ userStore: PropTypes.shape({
+ user: PropTypes.shape({})
+ })
+ }).isRequired,
+ dispatchers: PropTypes.shape({
+ reconnect: PropTypes.func
+ }).isRequired,
+ config: PropTypes.shape({
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ userId: PropTypes.string.isRequired,
+ isOnline: PropTypes.bool.isRequired,
+ theme: PropTypes.string,
+ logger: PropTypes.shape({
+ info: PropTypes.func,
+ error: PropTypes.func,
+ warning: PropTypes.func
+ }),
+ pubSub: PropTypes.shape({
+ subscribe: PropTypes.func,
+ publish: PropTypes.func
+ })
+ }).isRequired,
+ queries: PropTypes.shape({
+ messageListParams: PropTypes.shape({
+ includeMetaArray: PropTypes.bool,
+ includeParentMessageText: PropTypes.bool,
+ includeReaction: PropTypes.bool,
+ includeReplies: PropTypes.bool,
+ includeThreadInfo: PropTypes.bool,
+ limit: PropTypes.number,
+ reverse: PropTypes.bool,
+ senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string)
+ }),
+ // deprecate in v1.3
+ messageListQuery: PropTypes.shape({
+ includeMetaArray: PropTypes.bool,
+ includeParentMessageText: PropTypes.bool,
+ includeReaction: PropTypes.bool,
+ includeReplies: PropTypes.bool,
+ includeThreadInfo: PropTypes.bool,
+ limit: PropTypes.number,
+ reverse: PropTypes.bool,
+ senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string)
+ })
+ }),
+ onBeforeSendUserMessage: PropTypes.func,
+ // onBeforeSendUserMessage(text)
+ onBeforeSendFileMessage: PropTypes.func,
+ // onBeforeSendFileMessage(File)
+ onBeforeUpdateUserMessage: PropTypes.func,
+ renderChatItem: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ renderCustomMessage: PropTypes.func,
+ renderMessageInput: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ renderChatHeader: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ onChatHeaderActionClick: PropTypes.func,
+ useReaction: PropTypes.bool,
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ useMessageGrouping: PropTypes.bool
+};
+ConversationPanel.defaultProps = {
+ channelUrl: null,
+ queries: {},
+ onBeforeSendUserMessage: null,
+ onBeforeSendFileMessage: null,
+ onBeforeUpdateUserMessage: null,
+ renderChatItem: null,
+ renderCustomMessage: null,
+ renderMessageInput: null,
+ renderChatHeader: null,
+ useReaction: true,
+ disableUserProfile: false,
+ renderUserProfile: null,
+ useMessageGrouping: true,
+ onChatHeaderActionClick: noop$4
+};
+var getEmojiCategoriesFromEmojiContainer$1 = getEmojiCategoriesFromEmojiContainer,
+ getAllEmojisFromEmojiContainer$1 = getAllEmojisFromEmojiContainer,
+ getEmojisFromEmojiContainer$1 = getEmojisFromEmojiContainer;
+var Conversation = LocalizationContext.withSendbirdContext(ConversationPanel);
+
+exports.ConversationPanel = ConversationPanel;
+exports.default = Conversation;
+exports.getAllEmojisFromEmojiContainer = getAllEmojisFromEmojiContainer$1;
+exports.getEmojiCategoriesFromEmojiContainer = getEmojiCategoriesFromEmojiContainer$1;
+exports.getEmojisFromEmojiContainer = getEmojisFromEmojiContainer$1;
+//# sourceMappingURL=Channel.js.map
diff --git a/dist/cjs/Channel.js.map b/dist/cjs/Channel.js.map
new file mode 100644
index 0000000..fe857d1
--- /dev/null
+++ b/dist/cjs/Channel.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Channel.js","sources":["../../../src/smart-components/Conversation/dux/actionTypes.js","../../../src/smart-components/Conversation/types.js","../../../src/smart-components/Conversation/utils.js","../../../src/smart-components/Conversation/dux/initialState.js","../../../src/smart-components/Conversation/dux/reducers.js","../../../src/smart-components/Conversation/hooks/useHandleChannelEvents.js","../../../src/smart-components/Conversation/hooks/useGetChannel.js","../../../src/smart-components/Conversation/hooks/useInitialMessagesFetch.js","../../../src/smart-components/Conversation/hooks/useHandleReconnect.js","../../../src/smart-components/Conversation/hooks/useScrollCallback.js","../../../src/smart-components/Conversation/hooks/useDeleteMessageCallback.js","../../../src/smart-components/Conversation/hooks/useUpdateMessageCallback.js","../../../src/smart-components/Conversation/hooks/useResendMessageCallback.js","../../../src/smart-components/Conversation/hooks/useSendMessageCallback.js","../../../src/smart-components/Conversation/hooks/useSendFileMessageCallback.js","../../../src/smart-components/Conversation/hooks/useSetReadStatus.js","../../../src/ui/ReactionButton/index.jsx","../../../src/smart-components/Conversation/hooks/useMemoizedEmojiListItems.jsx","../../../src/smart-components/Conversation/hooks/useToggleReactionCallback.js","../../../src/ui/MessageStatus/index.jsx","../../../src/ui/ReactionBadge/index.jsx","../../../src/ui/Tooltip/index.jsx","../../../src/ui/TooltipWrapper/index.jsx","../../../src/ui/EmojiReactions/index.jsx","../../../src/ui/Message/memoizedMessageText.jsx","../../../src/hooks/onMouseHover.jsx","../../../src/ui/Message/index.jsx","../../../src/ui/AdminMessage/index.jsx","../../../src/ui/ThumbnailMessage/util.js","../../../src/ui/ThumbnailMessage/index.jsx","../../../src/ui/FileMessage/index.jsx","../../../src/smart-components/Conversation/components/RemoveMessage.jsx","../../../src/ui/UnknownMessage/utils.js","../../../src/ui/UnknownMessage/index.jsx","../../../src/ui/OGMessage/const.js","../../../src/ui/OGMessage/utils.js","../../../src/ui/OGMessage/memoizedMessageText.jsx","../../../src/ui/OGMessage/index.jsx","../../../src/smart-components/Conversation/components/MessageHOC.jsx","../../../src/smart-components/Conversation/components/ConversationScroll.jsx","../../../src/smart-components/Conversation/components/Notification.jsx","../../../src/smart-components/Conversation/components/FrozenNotification.tsx","../../../src/smart-components/Conversation/components/TypingIndicator.jsx","../../../src/smart-components/Conversation/components/MessageInputWrapper.tsx","../../../src/ui/ConnectionStatus/index.jsx","../../../src/ui/ChatHeader/utils.js","../../../src/ui/AutoRefresh/index.jsx","../../../src/ui/ChatHeader/index.jsx","../../../src/smart-components/Conversation/index.jsx"],"sourcesContent":["export const RESET_MESSAGES = 'RESET_MESSAGES';\nexport const RESET_STATE = 'RESET_STATE';\nexport const CLEAR_SENT_MESSAGES = 'CLEAR_SENT_MESSAGES';\nexport const GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';\nexport const GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';\nexport const GET_PREV_MESSAGES_FAILURE = 'GET_PREV_MESSAGES_FAILURE';\n\nexport const SEND_MESSAGEGE_START = 'SEND_MESSAGEGE_START';\nexport const SEND_MESSAGEGE_SUCESS = 'SEND_MESSAGEGE_SUCESS';\nexport const SEND_MESSAGEGE_FAILURE = 'SEND_MESSAGEGE_FAILURE';\n\nexport const RESEND_MESSAGEGE_START = 'RESEND_MESSAGEGE_START';\n\nexport const ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';\nexport const ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';\nexport const ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';\nexport const ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';\n\nexport const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\nexport const SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';\nexport const MARK_AS_READ = 'MARK_AS_READ';\n\nexport const ON_REACTION_UPDATED = 'ON_REACTION_UPDATED';\nexport const SET_EMOJI_CONTAINER = 'SET_EMOJI_CONTAINER';\nexport const SET_READ_STATUS = 'SET_READ_STATUS';\n","import { isImage, isVideo } from '../../ui/FileViewer/types';\n\nexport const MessageTypes = {\n ADMIN: 'ADMIN',\n USER: 'USER',\n FILE: 'FILE',\n THUMBNAIL: 'THUMBNAIL',\n OG: 'OG',\n};\n\nexport const SendingMessageStatus = {\n NONE: 'none',\n SUCCEEDED: 'succeeded',\n FAILED: 'failed',\n PENDING: 'pending',\n};\n\nexport const getMessageType = (message) => {\n if ((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user') {\n return (message.ogMetaData)\n ? MessageTypes.OG\n : MessageTypes.USER;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return MessageTypes.ADMIN;\n }\n if ((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file') {\n return (isImage(message.type) || isVideo(message.type))\n ? MessageTypes.THUMBNAIL\n : MessageTypes.FILE;\n }\n return '';\n};\n\nexport default {\n MessageTypes,\n SendingMessageStatus,\n getMessageType,\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../../ui/MessageStatus/type';\nimport * as channelActions from './dux/actionTypes';\nimport * as topics from '../../lib/pubSub/topics';\n\nimport { SendingMessageStatus } from './types';\n\nconst UNDEFINED = 'undefined';\nconst { SUCCEEDED, FAILED, PENDING } = SendingMessageStatus;\n\nexport const scrollIntoLast = (selector, intialTry = 0) => {\n const MAX_TRIES = 10;\n const currentTry = intialTry;\n if (currentTry > MAX_TRIES) {\n return;\n }\n try {\n const nodes = document.querySelectorAll(selector);\n const last = nodes[nodes.length - 1];\n last.scrollIntoView(false); /** alignToTop: false */\n } catch (error) {\n setTimeout(() => {\n scrollIntoLast(selector, currentTry + 1);\n }, 500 * currentTry);\n }\n};\n\nexport const pubSubHandleRemover = (subscriber) => {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n};\n\nexport const pubSubHandler = (channelUrl, pubSub, dispatcher) => {\n const subscriber = new Map();\n if (!pubSub || !pubSub.subscribe) return subscriber;\n subscriber.set(topics.SEND_USER_MESSAGE, pubSub.subscribe(topics.SEND_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel, message } = msg;\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_START,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message, fromSelector } = msg;\n if (fromSelector && channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n }\n }));\n subscriber.set(topics.DELETE_MESSAGE, pubSub.subscribe(topics.DELETE_MESSAGE, (msg) => {\n const { channel, messageId } = msg;\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n }\n }));\n\n return subscriber;\n};\n\nexport const getParsedStatus = (message, currentGroupChannel) => {\n if (message.requestState === FAILED) {\n return MessageStatusType.FAILED;\n }\n\n if (message.requestState === PENDING) {\n return MessageStatusType.PENDING;\n }\n\n if (message.requestState === SUCCEEDED) {\n if (!currentGroupChannel) {\n return MessageStatusType.SENT;\n }\n\n const unreadCount = currentGroupChannel.getReadReceipt(message);\n if (unreadCount === 0) {\n return MessageStatusType.READ;\n }\n\n const isDelivered = currentGroupChannel.getDeliveryReceipt(message) === 0;\n if (isDelivered) {\n return MessageStatusType.DELIVERED;\n }\n\n return MessageStatusType.SENT;\n }\n\n return null;\n};\n\nexport const isOperator = (groupChannel = {}) => {\n const { myRole } = groupChannel;\n return myRole === 'operator';\n};\n\nexport const isDisabledBecauseFrozen = (groupChannel = {}) => {\n const { isFrozen } = groupChannel;\n return isFrozen && !isOperator(groupChannel);\n};\n\nexport const isDisabledBecauseMuted = (groupChannel = {}) => {\n const { myMutedState } = groupChannel;\n return myMutedState === 'muted';\n};\n\nexport const getEmojiCategoriesFromEmojiContainer = (emojiContainer = {}) => (\n emojiContainer.emojiCategories ? emojiContainer.emojiCategories : []\n);\n\nexport const getAllEmojisFromEmojiContainer = (emojiContainer = {}) => {\n const { emojiCategories = [] } = emojiContainer;\n const allEmojis = [];\n\n for (let categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {\n const { emojis } = emojiCategories[categoryIndex];\n for (let emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {\n allEmojis.push(emojis[emojiIndex]);\n }\n }\n return allEmojis;\n};\n\nexport const getEmojisFromEmojiContainer = (emojiContainer = {}, emojiCategoryId = '') => (\n emojiContainer.emojiCategories\n ? emojiContainer.emojiCategories\n .filter((emojiCategory) => emojiCategory.id === emojiCategoryId)[0].emojis\n : []\n);\n\nexport const getAllEmojisMapFromEmojiContainer = (emojiContainer = {}) => {\n const { emojiCategories = [] } = emojiContainer;\n const allEmojisMap = new Map();\n\n for (let categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {\n const { emojis } = emojiCategories[categoryIndex];\n for (let emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {\n const { key, url } = emojis[emojiIndex];\n allEmojisMap.set(key, url);\n }\n }\n return allEmojisMap;\n};\n\nexport const getNicknamesMapFromMembers = (members = []) => {\n const nicknamesMap = new Map();\n for (let memberIndex = 0; memberIndex < members.length; memberIndex += 1) {\n const { userId, nickname } = members[memberIndex];\n nicknamesMap.set(userId, nickname);\n }\n return nicknamesMap;\n};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const isSameGroup = (message, comparingMessage) => {\n if (\n !message\n || !comparingMessage\n || !message.sender\n || !comparingMessage.sender\n || !message.createdAt\n || !comparingMessage.createdAt\n || !message.sender.userId\n || !comparingMessage.sender.userId\n ) {\n return false;\n }\n return (\n message.sendingStatus === comparingMessage.sendingStatus\n && message.sender.userId === comparingMessage.sender.userId\n && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage)\n );\n};\n\nexport const compareMessagesForGrouping = (\n prevMessage,\n currMessage,\n nextMessage,\n) => (\n [\n isSameGroup(prevMessage, currMessage),\n isSameGroup(currMessage, nextMessage),\n ]\n);\n\nexport const passUnsuccessfullMessages = (allMessages, newMessage) => {\n const { sendingStatus = UNDEFINED } = newMessage;\n if (sendingStatus === SUCCEEDED || sendingStatus === PENDING) {\n const lastIndexOfSucceededMessage = allMessages\n .map((message) => (\n message.sendingStatus\n || ((message.isAdminMessage && message.isAdminMessage()) ? SUCCEEDED : UNDEFINED)\n ))\n .lastIndexOf(SUCCEEDED);\n if (lastIndexOfSucceededMessage + 1 < allMessages.length) {\n const messages = [...allMessages];\n messages.splice(lastIndexOfSucceededMessage + 1, 0, newMessage);\n return messages;\n }\n }\n return [\n ...allMessages,\n newMessage,\n ];\n};\n\nexport default getParsedStatus;\n","export default {\n initialized: false,\n loading: false,\n allMessages: [],\n currentGroupChannel: { members: [] },\n hasMore: false,\n lastMessageTimeStamp: 0,\n emojiContainer: {},\n readStatus: {},\n unreadCount: 0,\n unreadSince: null,\n isInvalid: false,\n};\n","import format from 'date-fns/format';\n\nimport * as actionTypes from './actionTypes';\nimport initialState from './initialState';\n\nimport compareIds from '../../../utils/compareIds';\nimport { passUnsuccessfullMessages } from '../utils';\nimport { SendingMessageStatus } from '../types';\n\nconst {\n SUCCEEDED,\n FAILED,\n PENDING,\n} = SendingMessageStatus;\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actionTypes.RESET_STATE:\n return initialState;\n case actionTypes.RESET_MESSAGES:\n return {\n ...state,\n // when user switches channel, if the previous channel `hasMore`\n // the onScroll gets called twice, setting hasMore false prevents this\n hasMore: false,\n allMessages: [],\n };\n case actionTypes.GET_PREV_MESSAGES_START:\n return {\n ...state,\n loading: true,\n };\n case actionTypes.CLEAR_SENT_MESSAGES:\n return {\n ...state,\n allMessages: [\n ...state.allMessages.filter((m) => (\n m.sendingStatus !== SUCCEEDED\n )),\n ],\n };\n case actionTypes.GET_PREV_MESSAGES_SUCESS: {\n const receivedMessages = action.payload.messages || [];\n const { currentGroupChannel = {} } = action.payload;\n\n const stateChannel = state.currentGroupChannel || {};\n const stateChannelUrl = stateChannel.url;\n const actionChannelUrl = currentGroupChannel.url;\n if (actionChannelUrl !== stateChannelUrl) {\n return state;\n }\n\n // remove duplicate messages\n const filteredAllMessages = state.allMessages.filter((msg) => (\n !(receivedMessages.find(({ messageId }) => compareIds(messageId, msg.messageId)))\n ));\n return {\n ...state,\n loading: false,\n initialized: true,\n hasMore: action.payload.hasMore,\n lastMessageTimeStamp: action.payload.lastMessageTimeStamp,\n allMessages: [\n ...receivedMessages,\n ...filteredAllMessages,\n ],\n };\n }\n case actionTypes.SEND_MESSAGEGE_START:\n return {\n ...state,\n allMessages: [\n ...state.allMessages,\n { ...action.payload },\n ],\n };\n case actionTypes.SEND_MESSAGEGE_SUCESS: {\n const newMessages = state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId) ? action.payload : m\n ));\n [...newMessages].sort((a, b) => (\n (\n a.sendingStatus\n && b.sendingStatus\n && a.sendingStatus === SUCCEEDED\n && (\n b.sendingStatus === PENDING\n || b.sendingStatus === FAILED\n )\n ) ? -1 : 1\n ));\n return {\n ...state,\n allMessages: newMessages,\n };\n }\n case actionTypes.SEND_MESSAGEGE_FAILURE: {\n // eslint-disable-next-line no-param-reassign\n action.payload.failed = true;\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId)\n ? action.payload\n : m\n )),\n };\n }\n case actionTypes.SET_CURRENT_CHANNEL: {\n return {\n ...state,\n currentGroupChannel: action.payload,\n isInvalid: false,\n };\n }\n case actionTypes.SET_CHANNEL_INVALID: {\n return {\n ...state,\n isInvalid: true,\n };\n }\n case actionTypes.ON_MESSAGE_RECEIVED: {\n const { channel, message } = action.payload;\n const { currentGroupChannel = {}, unreadCount, unreadSince } = state;\n const currentGroupChannelUrl = currentGroupChannel.url;\n if (!compareIds(channel.url, currentGroupChannelUrl)) {\n return state;\n }\n // Excluded overlapping messages\n if (!(state.allMessages.map((msg) => msg.messageId).indexOf(message.messageId) < 0)) {\n return state;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return {\n ...state,\n allMessages: passUnsuccessfullMessages(state.allMessages, message),\n };\n }\n return {\n ...state,\n unreadCount: unreadCount + 1,\n unreadSince: (unreadCount === 0)\n ? format(new Date(), 'p MMM dd')\n : unreadSince,\n allMessages: passUnsuccessfullMessages(state.allMessages, message),\n };\n }\n case actionTypes.ON_MESSAGE_UPDATED:\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.messageId, action.payload.message.messageId)\n ? action.payload.message\n : m\n )),\n };\n case actionTypes.RESEND_MESSAGEGE_START:\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId)\n ? action.payload\n : m\n )),\n };\n case actionTypes.MARK_AS_READ:\n return {\n ...state,\n unreadCount: 0,\n unreadSince: null,\n };\n case actionTypes.ON_MESSAGE_DELETED:\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.messageId, action.payload)\n )),\n };\n case actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID:\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.reqId, action.payload)\n )),\n };\n case actionTypes.SET_EMOJI_CONTAINER: {\n return {\n ...state,\n emojiContainer: action.payload,\n };\n }\n case actionTypes.SET_READ_STATUS: {\n return {\n ...state,\n readStatus: action.payload,\n };\n }\n case actionTypes.ON_REACTION_UPDATED: {\n return {\n ...state,\n allMessages: state.allMessages.map((m) => {\n if (compareIds(m.messageId, action.payload.messageId)) {\n if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {\n m.applyReactionEvent(action.payload);\n }\n return m;\n }\n return m;\n }),\n };\n }\n default:\n return state;\n }\n}\n","import { useEffect } from 'react';\n\nimport * as messageActions from '../dux/actionTypes';\nimport { uuidv4 } from '../../../utils/uuid';\nimport compareIds from '../../../utils/compareIds';\n\n/**\n * Handles ChannelEvents and send values to dispatcher using messagesDispatcher\n * messagesDispatcher: Dispatcher\n * sdk: sdkInstance\n * logger: loggerInstance\n * channelUrl: string\n * sdkInit: bool\n */\nfunction useHandleChannelEvents({ currentGroupChannel, sdkInit }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n const channelUrl = currentGroupChannel && currentGroupChannel.url;\n useEffect(() => {\n const messageReceiverId = uuidv4();\n if (channelUrl && sdk && sdk.ChannelHandler) {\n const ChannelHandler = new sdk.ChannelHandler();\n logger.info('Channel | useHandleChannelEvents: Setup event handler', messageReceiverId);\n ChannelHandler.onMessageReceived = (channel, message) => {\n if (compareIds(channel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_RECEIVED,\n payload: { channel, message },\n });\n }\n };\n\n ChannelHandler.onMessageUpdated = (channel, message) => {\n logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n };\n\n ChannelHandler.onMessageDeleted = (_, messageId) => {\n logger.info('Channel | useHandleChannelEvents: onMessageDeleted', messageId);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n };\n\n ChannelHandler.onReactionUpdated = (_, reactionEvent) => {\n logger.info('Channel | useHandleChannelEvents: onReactionUpdated', reactionEvent);\n messagesDispatcher({\n type: messageActions.ON_REACTION_UPDATED,\n payload: reactionEvent,\n });\n };\n\n ChannelHandler.onChannelChanged = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelChanged', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onChannelFrozen = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelFrozen', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onChannelUnfrozen = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserMuted = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserMuted', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserUnmuted = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserUnmuted', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserBanned = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserBanned', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onOperatorUpdated = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n // Add this channel event handler to the SendBird object.\n sdk.addChannelHandler(messageReceiverId, ChannelHandler);\n }\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', messageReceiverId);\n sdk.removeChannelHandler(messageReceiverId);\n }\n };\n }, [channelUrl, sdkInit]);\n}\n\nexport default useHandleChannelEvents;\n","import { useEffect } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useSetChannel({ channelUrl, sdkInit }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n useEffect(() => {\n if (channelUrl && sdkInit && sdk && sdk.GroupChannel) {\n logger.info('Channel | useSetChannel fetching channel', channelUrl);\n sdk.GroupChannel.getChannel(channelUrl)\n .then((groupChannel) => {\n logger.info('Channel | useSetChannel fetched channel', groupChannel);\n messagesDispatcher({\n type: messageActionTypes.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n\n logger.info('Channel: Mark as read', groupChannel);\n // this order is important - this mark as read should update the event handler up above\n groupChannel.markAsRead();\n })\n .catch((e) => {\n logger.warning('Channel | useSetChannel fetch channel failed', { channelUrl, e });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n });\n });\n sdk.getAllEmoji((emojiContainer_, err) => {\n if (err) {\n logger.error('Channel: Getting emojis failed', err);\n return;\n }\n logger.info('Channel: Getting emojis success', emojiContainer_);\n messagesDispatcher({\n type: messageActionTypes.SET_EMOJI_CONTAINER,\n payload: emojiContainer_,\n });\n });\n }\n }, [channelUrl, sdkInit]);\n}\n\nexport default useSetChannel;\n","import { useEffect } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\nfunction useInitialMessagesFetch({ currentGroupChannel, userFilledMessageListQuery }, {\n sdk,\n logger,\n messagesDispatcher,\n}) {\n const channelUrl = currentGroupChannel && currentGroupChannel.url;\n useEffect(() => {\n logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);\n\n messagesDispatcher({\n type: messageActionTypes.RESET_MESSAGES,\n });\n\n if (sdk && sdk.MessageListParams\n && currentGroupChannel && currentGroupChannel.getMessagesByMessageId) {\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.isInclusive = true;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = true;\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n\n currentGroupChannel.getMessagesByTimestamp(\n new Date().getTime(),\n messageListParams,\n )\n .then((messages) => {\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimeStamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore,\n lastMessageTimeStamp,\n currentGroupChannel,\n },\n });\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages: [],\n hasMore: false,\n lastMessageTimeStamp: 0,\n currentGroupChannel,\n },\n });\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n });\n }\n }, [channelUrl, userFilledMessageListQuery]);\n}\n\nexport default useInitialMessagesFetch;\n","import { useEffect } from 'react';\n\nimport * as utils from '../utils';\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useHandleReconnect({ isOnline }, {\n logger,\n sdk,\n currentGroupChannel,\n messagesDispatcher,\n userFilledMessageListQuery,\n}) {\n useEffect(() => {\n const wasOffline = !isOnline;\n return () => {\n // state changed from offline to online\n if (wasOffline) {\n logger.info('Refreshing conversation state');\n const { appInfo = {} } = sdk;\n const useReaction = appInfo.isUsingReaction || false;\n\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = useReaction;\n\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_START,\n });\n\n sdk.GroupChannel.getChannel(currentGroupChannel.url)\n .then((groupChannel) => {\n const lastMessageTime = new Date().getTime();\n\n groupChannel.getMessagesByTimestamp(\n lastMessageTime,\n messageListParams,\n )\n .then((messages) => {\n messagesDispatcher({\n type: messageActionTypes.CLEAR_SENT_MESSAGES,\n });\n\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimeStamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore,\n lastMessageTimeStamp,\n currentGroupChannel,\n },\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n });\n });\n }\n };\n }, [isOnline]);\n}\n\nexport default useHandleReconnect;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useScrollCallback({\n currentGroupChannel,\n lastMessageTimeStamp,\n userFilledMessageListQuery,\n}, {\n hasMore,\n logger,\n messagesDispatcher,\n sdk,\n}) {\n return useCallback((cb) => {\n if (!hasMore) { return; }\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = true;\n\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n\n currentGroupChannel.getMessagesByTimestamp(\n lastMessageTimeStamp || new Date().getTime(),\n messageListParams,\n )\n .then((messages) => {\n const hasMoreMessages = (messages && messages.length > 0);\n const lastMessageTs = hasMoreMessages\n ? messages[0].createdAt\n : null;\n\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore: hasMoreMessages,\n lastMessageTimeStamp: lastMessageTs,\n currentGroupChannel,\n },\n });\n cb([messages, null]);\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages: [],\n hasMore: false,\n lastMessageTimeStamp: 0,\n currentGroupChannel,\n },\n });\n cb([null, error]);\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n });\n }, [currentGroupChannel, lastMessageTimeStamp]);\n}\n\nexport default useScrollCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useDeleteMessageCallback({ currentGroupChannel, messagesDispatcher }, { logger }) {\n return useCallback((message, cb) => {\n logger.info('Channel | useDeleteMessageCallback: Deleting message', message);\n const { requestState } = message;\n logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', requestState);\n\n // Message is only on local\n if (requestState === 'failed' || requestState === 'pending') {\n logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,\n payload: message.reqId,\n });\n if (cb) { cb(); }\n return;\n }\n\n // Message is on server\n currentGroupChannel.deleteMessage(message, (err) => {\n logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', requestState);\n if (cb) { cb(err); }\n if (!err) {\n logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: message.messageId,\n });\n } else {\n logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);\n }\n });\n }, [currentGroupChannel, messagesDispatcher]);\n}\n\nexport default useDeleteMessageCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as topics from '../../../lib/pubSub/topics';\n\nfunction useUpdateMessageCallback({\n currentGroupChannel,\n messagesDispatcher,\n onBeforeUpdateUserMessage,\n}, {\n logger,\n pubSub,\n sdk,\n}) {\n return useCallback((messageId, text, cb) => {\n const createParamsDefault = (txt) => {\n const params = new sdk.UserMessageParams();\n params.message = txt;\n return params;\n };\n\n const createCustomPrams = onBeforeUpdateUserMessage\n && typeof onBeforeUpdateUserMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creating params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);\n }\n\n const params = onBeforeUpdateUserMessage\n ? onBeforeUpdateUserMessage(text)\n : createParamsDefault(text);\n\n currentGroupChannel.updateUserMessage(messageId, params, (r, e) => {\n logger.info('Channel: Updating message!', params);\n const swapParams = sdk.getErrorFirstCallback();\n let message = r;\n let err = e;\n if (swapParams) {\n message = e;\n err = r;\n }\n if (cb) {\n cb(err, message);\n }\n if (!err) {\n logger.info('Channel: Updating message success!', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: {\n channel: currentGroupChannel,\n message,\n },\n });\n pubSub.publish(\n topics.UPDATE_USER_MESSAGE,\n {\n message,\n channel: currentGroupChannel,\n },\n );\n } else {\n logger.warning('Channel: Updating message failed!', err);\n }\n });\n }, [currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);\n}\n\nexport default useUpdateMessageCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useResendMessageCallback({\n currentGroupChannel,\n messagesDispatcher,\n}, {\n logger,\n}) {\n return useCallback((failedMessage) => {\n logger.info('Channel: Resending message has started', failedMessage);\n const { messageType, file } = failedMessage;\n if (failedMessage && typeof failedMessage.isResendable === 'function'\n && failedMessage.isResendable()\n ) {\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n\n // userMessage\n if (messageType === 'user') {\n currentGroupChannel\n .resendUserMessage(failedMessage)\n .then((message) => {\n logger.info('Channel: Resending message success!', { message });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n })\n .catch((e) => {\n logger.warning('Channel: Resending message failed!', { e });\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: failedMessage,\n });\n });\n\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n return;\n }\n\n if (messageType === 'file') {\n currentGroupChannel\n .resendFileMessage(failedMessage, file)\n .then((message) => {\n logger.info('Channel: Resending file message success!', { message });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n })\n .catch((e) => {\n logger.warning('Channel: Resending file message failed!', { e });\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: failedMessage,\n });\n });\n\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n }\n } else {\n // to alert user on console\n // eslint-disable-next-line no-console\n console.error('Message is not resendable');\n logger.warning('Message is not resendable', failedMessage);\n }\n }, [currentGroupChannel, messagesDispatcher]);\n}\n\nexport default useResendMessageCallback;\n","import { useRef, useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\nimport * as topics from '../../../lib/pubSub/topics';\n\nexport default function useSendMessageCallback({ currentGroupChannel, onBeforeSendUserMessage }, {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n}) {\n const messageInputRef = useRef(null);\n\n const sendMessage = useCallback(\n () => {\n const text = messageInputRef.current.value;\n const createParamsDefault = (txt) => {\n const message = (typeof txt === 'string') ? txt.trim() : txt;\n const params = new sdk.UserMessageParams();\n params.message = message;\n return params;\n };\n\n const createCustomPrams = onBeforeSendUserMessage\n && typeof onBeforeSendUserMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);\n }\n\n const params = onBeforeSendUserMessage\n ? onBeforeSendUserMessage(text)\n : createParamsDefault(text);\n\n logger.info('Channel: Sending message has started', params);\n const pendingMsg = currentGroupChannel.sendUserMessage(params, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n // sending params instead of pending message\n // to make sure that we can resend the message once it fails\n if (error) {\n logger.warning('Channel: Sending message failed!', {\n message,\n });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: message,\n });\n return;\n }\n logger.info('Channel: Sending message success!', message);\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n });\n pubSub.publish(topics.SEND_MESSAGE_START, {\n /* pubSub is used instead of messagesDispatcher\n to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */\n message: pendingMsg,\n channel: currentGroupChannel,\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n },\n [currentGroupChannel, onBeforeSendUserMessage],\n );\n\n return [messageInputRef, sendMessage];\n}\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\nimport * as topics from '../../../lib/pubSub/topics';\n\nexport default function useSendFileMessageCallback({\n currentGroupChannel, onBeforeSendFileMessage,\n}, {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n}) {\n const sendMessage = useCallback((file) => {\n const createParamsDefault = (file_) => {\n const params = new sdk.FileMessageParams();\n params.file = file_;\n return params;\n };\n\n const createCustomPrams = onBeforeSendFileMessage\n && typeof onBeforeSendFileMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n\n const params = onBeforeSendFileMessage\n ? onBeforeSendFileMessage(file)\n : createParamsDefault(file);\n\n logger.info('Channel: Uploading file message start!', params);\n const pendingMsg = currentGroupChannel.sendFileMessage(params, (response, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = response;\n let error = err;\n if (swapParams) {\n message = err;\n error = response;\n }\n if (error) {\n // sending params instead of pending message\n // to make sure that we can resend the message once it fails\n logger.error('Channel: Sending file message failed!', message);\n message.localUrl = URL.createObjectURL(file);\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: message,\n });\n return;\n }\n logger.info('Channel: Sending message success!', message);\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n });\n pubSub.publish(topics.SEND_MESSAGE_START, {\n /* pubSub is used instead of messagesDispatcher\n to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */\n message: {\n ...pendingMsg,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentGroupChannel,\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'), 1000);\n }, [currentGroupChannel, onBeforeSendFileMessage]);\n return [sendMessage];\n}\n","import { useEffect } from 'react';\n\nimport * as utils from '../utils';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { uuidv4 } from '../../../utils/uuid';\n\nexport default function useSetReadStatus({ allMessages, currentGroupChannel }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n useEffect(() => {\n if (!sdk.ChannelHandler || !currentGroupChannel.url) {\n return () => {};\n }\n // todo: move to reducer?\n const setReadStatus = () => {\n const allReadStatus = allMessages.reduce((accumulator, msg) => {\n if (msg.messageId !== 0) {\n return {\n ...accumulator,\n [msg.messageId]: utils.getParsedStatus(msg, currentGroupChannel),\n };\n }\n return accumulator;\n }, {});\n messagesDispatcher({\n type: messageActionTypes.SET_READ_STATUS,\n payload: allReadStatus,\n });\n };\n if (allMessages.length > 0) {\n setReadStatus();\n }\n\n const channelUrl = currentGroupChannel.url;\n const handler = new sdk.ChannelHandler();\n const handleMessageStatus = (c) => {\n if (channelUrl === c.url) {\n setReadStatus();\n }\n };\n handler.onDeliveryReceiptUpdated = handleMessageStatus;\n handler.onReadReceiptUpdated = handleMessageStatus;\n // Add this channel event handler to the SendBird object.\n const handlerId = uuidv4();\n logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);\n sdk.addChannelHandler(handlerId, handler);\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);\n sdk.removeChannelHandler(handlerId);\n }\n };\n }, [allMessages, currentGroupChannel]);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst ReactionButton = React.forwardRef((props, ref) => {\n const {\n children,\n width,\n height,\n onClick,\n selected,\n className,\n } = props;\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n return (\n
onClick(e)}\n role=\"button\"\n onKeyDown={(e) => onClick(e)}\n tabIndex={0}\n >\n
\n {children}\n
\n
\n );\n});\n\nReactionButton.propTypes = {\n children: PropTypes.element.isRequired,\n onClick: PropTypes.func,\n selected: PropTypes.bool,\n width: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nReactionButton.defaultProps = {\n selected: false,\n width: '36px',\n height: '36px',\n onClick: () => { },\n className: '',\n};\n\nexport default ReactionButton;\n","import React, { useMemo } from 'react';\n\nimport { EmojiListItems } from '../../../ui/ContextMenu';\nimport ReactionButton from '../../../ui/ReactionButton';\nimport ImageRenderer from '../../../ui/ImageRenderer';\nimport Icon, { IconTypes } from '../../../ui/Icon';\n\nexport default function useMemoizedEmojiListItems({\n emojiContainer, toggleReaction,\n}, {\n useReaction,\n logger,\n userId,\n emojiAllList,\n}) {\n return useMemo(() => ({\n parentRef,\n parentContainRef,\n message,\n closeDropdown,\n spaceFromTrigger = {},\n }) => {\n if (!useReaction || !(parentRef || parentContainRef || message || closeDropdown)) {\n logger.warning('Channel: Invalid Params in memoizedEmojiListItems');\n return null;\n }\n\n return (\n \n {\n emojiAllList.map((emoji) => {\n const reactedReaction = message.reactions\n .filter((reaction) => reaction.key === emoji.key)[0];\n const isReacted = reactedReaction\n ? !(reactedReaction.userIds.indexOf(userId) < 0)\n : false;\n return (\n {\n closeDropdown();\n toggleReaction(message, emoji.key, isReacted);\n }}\n >\n \n }\n />\n \n );\n })\n }\n \n );\n }, [emojiContainer, toggleReaction]);\n}\n","import { useCallback } from 'react';\n\nexport default function useToggleReactionCallback({ currentGroupChannel }, { logger }) {\n return useCallback((message, key, isReacted) => {\n if (isReacted) {\n currentGroupChannel.deleteReaction(message, key)\n .then((res) => {\n logger.info('Delete reaction success', res);\n })\n .catch((err) => {\n logger.warning('Delete reaction failed', err);\n });\n return;\n }\n currentGroupChannel.addReaction(message, key)\n .then((res) => {\n logger.info('Add reaction success', res);\n })\n .catch((err) => {\n logger.warning('Add reaction failed', err);\n });\n }, [currentGroupChannel]);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport Loader from '../Loader';\nimport MessageStatusType from './type';\n\nimport { getMessageCreatedAt } from '../../utils/utils';\n\nconst MessageStatusTypes = MessageStatusType;\nexport { MessageStatusTypes };\nexport default function MessageStatus({\n message,\n status,\n className,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n const label = () => {\n switch (status) {\n case MessageStatusType.FAILED:\n case MessageStatusType.PENDING: {\n return null;\n }\n case MessageStatusType.SENT:\n case MessageStatusType.DELIVERED:\n case MessageStatusType.READ: {\n return (\n \n {getMessageCreatedAt(message)}\n \n );\n }\n default: return null;\n }\n };\n\n const icon = {\n PENDING: (\n \n \n \n ),\n SENT: ,\n DELIVERED: ,\n READ: ,\n FAILED: ,\n };\n\n return (\n \n {icon[status]}\n \n {label(status)}\n
\n );\n}\n\nMessageStatus.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n status: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nMessageStatus.defaultProps = {\n message: null,\n status: '',\n className: '',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport './index.scss';\n\nconst ReactionBadge = React.forwardRef((props, ref) => {\n const {\n className,\n children,\n count,\n selected,\n isAdd,\n onClick,\n } = props;\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n if (selected && !isAdd) {\n injectingClassName.unshift('sendbird-reaction-badge--selected');\n } else if (isAdd) {\n injectingClassName.push('sendbird-reaction-badge--is-add');\n } else {\n injectingClassName.unshift('sendbird-reaction-badge');\n }\n\n return (\n \n
\n
\n {children}\n
\n
\n {count}\n \n
\n
\n );\n});\n\nReactionBadge.propTypes = {\n children: PropTypes.element.isRequired,\n count: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n selected: PropTypes.bool,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n isAdd: PropTypes.bool,\n onClick: PropTypes.func,\n};\n\nReactionBadge.defaultProps = {\n className: '',\n count: '',\n selected: false,\n isAdd: false,\n onClick: () => { },\n};\n\nexport default ReactionBadge;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport Label from '../Label';\n\nconst CLASS_NAME = 'sendbird-tooltip';\n\nexport default function Tooltip({\n className,\n children,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n\n return (\n \n \n {children}\n \n
\n );\n}\n\nTooltip.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.string,\n ]),\n};\n\nTooltip.defaultProps = {\n className: '',\n children: '',\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst CLASS_NAME = 'sendbird-tooltip-wrapper';\nconst SPACE_FROM_TRIGGER = 8;\n\nexport default function TooltipWrapper({\n className,\n children,\n hoverTooltip,\n // clickTooltip can be added later\n}) {\n const injectingClassName = Array.isArray(className)\n ? [CLASS_NAME, ...className]\n : [CLASS_NAME, className];\n const [showHoverTooltip, setShowHoverTooltip] = useState(false);\n const childrenRef = useRef(null);\n\n return (\n { setShowHoverTooltip(true); }}\n onFocus={() => { setShowHoverTooltip(true); }}\n onMouseOut={() => { setShowHoverTooltip(false); }}\n onBlur={() => { setShowHoverTooltip(false); }}\n >\n
\n {children}\n
\n {\n showHoverTooltip && (\n
\n
\n
\n {hoverTooltip}\n
\n
\n
\n )\n }\n
\n );\n}\n\nTooltipWrapper.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.element.isRequired,\n hoverTooltip: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]).isRequired,\n};\nTooltipWrapper.defaultProps = {\n className: '',\n};\n","import React, { useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport ReactionBadge from '../ReactionBadge';\nimport ImageRenderer from '../ImageRenderer';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport ContextMenu from '../ContextMenu';\nimport Tooltip from '../Tooltip';\nimport TooltipWrapper from '../TooltipWrapper';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nexport default function EmojiReactions({\n className,\n userId,\n message,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift('sendbird-emoji-reactions');\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const imageWidth = '20px';\n const imageHeight = '20px';\n const emojiReactionAddRef = useRef(null);\n const { reactions = [] } = message;\n const messageReactions = reactions;\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n
\n {\n messageReactions && (\n messageReactions.map((reaction) => {\n const { userIds = [] } = reaction;\n const emojiUrl = emojiAllMap.get(reaction.key) || '';\n const reactedUserCount = userIds.length;\n const reactedByMe = !(userIds.indexOf(userId) < 0);\n const nicknames = userIds\n .filter((currentUserId) => currentUserId !== userId)\n .map((currentUserId) => (\n membersMap.get(currentUserId) || stringSet.TOOLTIP__UNKOWN_USER\n ));\n const stringSetForMe = (nicknames.length > 0)\n ? stringSet.TOOLTIP__AND_YOU : stringSet.TOOLTIP__YOU;\n return (\n 0 && (\n \n <>\n {\n `${(\n nicknames.join(', ')\n )}${(\n reactedByMe\n ? stringSetForMe\n : ''\n )}`\n }\n >\n \n )\n }\n >\n toggleReaction(message, reaction.key, reactedByMe)}\n >\n \n )}\n />\n \n \n );\n })\n )\n }\n {\n (messageReactions.length < emojiAllMap.size)\n && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n
\n );\n}\n\nEmojiReactions.propTypes = {\n userId: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n message: PropTypes.shape({\n reactions: PropTypes.arrayOf(PropTypes.shape({})),\n }).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\nEmojiReactions.defaultProps = {\n className: '',\n membersMap: new Map(),\n userId: '',\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import React, { useMemo, useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport uuidv4 from '../../utils/uuid';\n\nconst WORD_TYPOGRAPHY = LabelTypography.BODY_1;\nconst EDITED_COLOR = LabelColors.ONBACKGROUND_2;\n\nexport default function useMemoizedMessageText({\n message,\n updatedAt,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return useMemo(() => () => {\n const splitMessage = message.split(/\\r/);\n const matchedMessage = splitMessage\n .map((word) => (word !== '' ? word : ));\n if (updatedAt > 0) {\n matchedMessage.push(\n \n {` ${stringSet.MESSAGE_EDITED} `}\n ,\n );\n }\n return matchedMessage;\n }, [message, updatedAt, className]);\n}\n","import { useEffect } from 'react';\n\nconst MOUSE_ENTER = 'mouseenter';\nconst MOUSE_LEAVE = 'mouseleave';\n\nconst useMouseHover = ({\n ref,\n setHover,\n}) => {\n const handleMouseOver = () => {\n if (ref.current) {\n setHover(true);\n }\n };\n const handleMouseOut = () => {\n if (ref.current) {\n setHover(false);\n }\n };\n\n useEffect(() => {\n const { current } = ref;\n current.addEventListener(MOUSE_ENTER, handleMouseOver);\n current.addEventListener(MOUSE_LEAVE, handleMouseOut);\n return () => {\n current.removeEventListener(MOUSE_ENTER, handleMouseOver);\n current.removeEventListener(MOUSE_LEAVE, handleMouseOut);\n };\n });\n};\n\nexport default useMouseHover;\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport './index.scss';\nimport UserProfile from '../UserProfile';\nimport Avatar from '../Avatar/index';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport MessageStatus from '../MessageStatus';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport EmojiReactions from '../EmojiReactions';\nimport {\n copyToClipboard,\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n getIsSentFromStatus,\n} from './utils';\nimport useMemoizedMessageText from './memoizedMessageText';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst noop = () => { };\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function Message(props) {\n const {\n isByMe,\n userId,\n message,\n className,\n resendMessage,\n disabled,\n showEdit,\n showRemove,\n status,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n } = props;\n\n if (!message) return null;\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n injectingClassName.push(`sendbird-message${isByMe ? '--outgoing' : '--incoming'}`);\n const memoizedMessageText = useMemoizedMessageText({\n message: message.message,\n updatedAt: message.updatedAt,\n className: 'sendbird-user-message-word',\n });\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n}\n\nMessage.propTypes = {\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n userId: PropTypes.string,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n showEdit: PropTypes.func,\n status: PropTypes.string,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nMessage.defaultProps = {\n isByMe: false,\n disabled: false,\n userId: '',\n resendMessage: noop,\n className: '',\n showEdit: noop,\n showRemove: noop,\n status: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nfunction OutgoingUserMessage({\n userId,\n message,\n showEdit,\n disabled,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n // TODO: when message.requestState is succeeded, consider if it's SENT or DELIVERED\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n const isMessageSent = getIsSentFromStatus(status);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n isMessageSent && (\n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n )\n }\n {\n isMessageSent && (\n {\n if (disabled) { return; }\n showEdit(true);\n closeDropdown();\n }}\n >\n Edit\n \n )\n }\n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n (isMessageSent && useReaction && (emojiAllMap.size > 0))\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n { showRemove(true); }}\n // onResend={() => resendMessage(message)}\n // duplicated and should replace to more\n />\n
\n )\n }\n
\n
\n
\n
\n \n \n \n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n
\n )\n }\n
\n
\n
\n
\n );\n}\n\nfunction IncomingUserMessage({\n userId,\n message,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n const avatarRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n {\n // showProfile && (
)\n }\n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className=\"sendbird-user-message__avatar\"\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n
\n
\n \n \n \n
\n {\n showEmojiReactions && (\n
\n )\n }\n
\n
\n \n
\n
\n {\n showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n \n )}\n />\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nIncomingUserMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nIncomingUserMessage.defaultProps = {\n message: {},\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nOutgoingUserMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n showEdit: PropTypes.func,\n showRemove: PropTypes.func,\n disabled: PropTypes.bool,\n resendMessage: PropTypes.func,\n status: PropTypes.string.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingUserMessage.defaultProps = {\n message: {},\n resendMessage: noop,\n showEdit: noop,\n showRemove: noop,\n disabled: false,\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelColors, LabelTypography } from '../Label';\n\nexport default function AdminMessage({\n className,\n message,\n}) {\n if (!message.messageType || message.messageType !== 'admin') { // change to use message.isAdminMessage()\n return null;\n }\n\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n \n {message.message}\n \n
\n );\n}\n\nAdminMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nAdminMessage.defaultProps = {\n message: {},\n className: '',\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport default {\n getMessageCreatedAt,\n getIsSentFromStatus,\n};\n","import React, { useContext, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport {\n getMessageCreatedAt,\n getIsSentFromStatus,\n} from './util';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport Avatar from '../Avatar/index';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport MessageStatus from '../MessageStatus';\nimport EmojiReactions from '../EmojiReactions';\nimport {\n isImage,\n isVideo,\n unSupported,\n} from '../FileViewer/types';\nimport {\n getSenderName,\n getSenderProfileUrl,\n} from '../../utils/utils';\nimport useMouseHover from '../../hooks/onMouseHover';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nconst noop = () => { };\n\nconst OUTGOING_THUMBNAIL_MESSAGE = 'sendbird-outgoing-thumbnail-message';\nconst INCOMING_THUMBNAIL_MESSAGE = 'sendbird-incoming-thumbnail-message';\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function ThumbnailMessage({\n message = {},\n userId,\n disabled,\n isByMe,\n onClick,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n return (\n isByMe\n ? (\n \n )\n : (\n \n )\n );\n}\n\nexport function OutgoingThumbnailMessage({\n message = {},\n userId,\n disabled,\n onClick,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n type,\n url,\n localUrl,\n } = message;\n const { stringSet } = useContext(LocalizationContext);\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const reactionAddRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showReactionAddButton = (useReaction && emojiAllMap && emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n \n )}\n />\n {\n isMessageSent && showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n )\n }\n
\n
\n
\n
onClick(true) : () => { }}\n onKeyDown={isMessageSent ? () => onClick(true) : () => { }}\n tabIndex={0}\n role=\"button\"\n >\n {\n isVideo(type) && (\n <>\n {/* eslint-disable-next-line jsx-a11y/media-has-caption */}\n
\n \n \n
\n >\n )\n }\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n
\n )\n }\n
\n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n
\n )\n }\n
\n
\n
\n
\n );\n}\n\nexport function IncomingThumbnailMessage({\n message = {},\n userId,\n onClick,\n status,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n type,\n url,\n localUrl,\n } = message;\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const reactionAddRef = useRef(null);\n const avatarRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showReactionAddButton = (useReaction && emojiAllMap && emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n {\n !chainTop && (\n
\n {getSenderName(message) || ''}\n \n )\n }\n
\n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${INCOMING_THUMBNAIL_MESSAGE}__avatar`}\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n onClick(true) : () => { }}\n onKeyDown={isMessageSent ? () => onClick(true) : () => { }}\n >\n {\n isVideo(type) && (\n <>\n {/* eslint-disable-next-line jsx-a11y/media-has-caption */}\n
\n \n \n
\n >\n )\n }\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n
\n )\n }\n
\n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n \n )\n }\n \n
\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n
\n
\n
\n );\n}\n\nThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string,\n resendMessage: PropTypes.func,\n status: PropTypes.string,\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n showRemove: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\nThumbnailMessage.defaultProps = {\n isByMe: false,\n disabled: false,\n resendMessage: noop,\n onClick: noop,\n showRemove: noop,\n status: '',\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nOutgoingThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n resendMessage: PropTypes.func.isRequired,\n status: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n showRemove: PropTypes.func.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\nOutgoingThumbnailMessage.defaultProps = {\n status: '',\n};\n\nIncomingThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n status: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\nIncomingThumbnailMessage.defaultProps = {\n status: '',\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport './index.scss';\nimport Avatar from '../Avatar/index';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport TextButton from '../TextButton';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport MessageStatus from '../MessageStatus';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport EmojiReactions from '../EmojiReactions';\n\nimport { getSenderProfileUrl, getSenderName, getMessageCreatedAt } from '../../utils/utils';\nimport {\n truncate,\n getIsSentFromStatus,\n} from './utils';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst MAX_TRUNCATE_LENGTH = 40;\nconst GROUPAING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\nconst noop = () => { };\n\nfunction checkFileType(fileUrl) {\n let result = null;\n const imageFile = /(\\.gif|\\.jpg|\\.jpeg|\\.txt|\\.pdf)$/i;\n const audioFile = /(\\.mp3)$/i;\n if (imageFile.test(fileUrl)) {\n result = IconTypes.FILE_DOCUMENT;\n } else if (audioFile.test(fileUrl)) {\n result = IconTypes.FILE_AUDIO;\n }\n return result;\n}\n\nexport function OutgoingFileMessage({\n message,\n userId,\n status,\n showRemove,\n disabled,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n url,\n } = message;\n const openFileUrl = () => { window.open(url); };\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const reactionAddButtonRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n const showEmojiReactions = isMessageSent && useReaction && message.reactions\n && (message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n {\n checkFileType(url)\n ? (\n \n )\n : null\n }\n \n \n {truncate(message.url, MAX_TRUNCATE_LENGTH)}\n \n \n
\n {\n showEmojiReactions && (\n
\n )\n }\n
\n
\n
\n );\n}\n\nexport function IncomingFileMessage({\n message,\n userId,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const openFileUrl = () => { window.open(message.url); };\n const messageRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const parentContainRef = useRef(null);\n const avatarRef = useRef(null);\n const reactionAddButtonRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className=\"sendbird-file-message__avatar\"\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n
\n {\n checkFileType(message.url)\n ? (\n \n )\n : null\n }\n \n \n {truncate(message.url, MAX_TRUNCATE_LENGTH)}\n \n \n
\n {\n (useReaction && message.reactions && (message.reactions.length > 0)) && (\n
\n )\n }\n
\n \n
\n
\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nOutgoingFileMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n userId: PropTypes.string,\n status: PropTypes.string,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n disabled: PropTypes.bool,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingFileMessage.defaultProps = {\n status: '',\n showRemove: noop,\n resendMessage: noop,\n message: {},\n userId: '',\n disabled: false,\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nIncomingFileMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n userId: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nIncomingFileMessage.defaultProps = {\n message: {},\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nconst MessageSwitch = ({\n message,\n userId,\n disabled,\n isByMe,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) => (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n);\n\n\nMessageSwitch.propTypes = {\n message: PropTypes.shape({}),\n userId: PropTypes.string,\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n status: PropTypes.string.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nMessageSwitch.defaultProps = {\n message: {},\n isByMe: false,\n disabled: false,\n showRemove: noop,\n resendMessage: noop,\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nexport default MessageSwitch;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../../ui/Modal';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\nconst RemoveMessage = (props) => {\n const {\n onCloseModal,\n onDeleteMessage,\n } = props;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n );\n};\n\nRemoveMessage.propTypes = {\n onCloseModal: PropTypes.func.isRequired,\n onDeleteMessage: PropTypes.func.isRequired,\n};\n\nexport default RemoveMessage;\n","import format from 'date-fns/format';\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport default {\n getMessageCreatedAt,\n};\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Avatar from '../Avatar/index';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport MessageStatus from '../MessageStatus';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport IconButton from '../IconButton';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst CLASS_NAME = 'sendbird-unknown-message';\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function UnknownMessage({\n message,\n isByMe,\n status,\n className,\n showRemove,\n chainTop,\n chainBottom,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n injectingClassName.push(`${CLASS_NAME}${isByMe ? '--outgoing' : '--incoming'}`);\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n}\n\nUnknownMessage.propTypes = {\n message: PropTypes.shape({}).isRequired,\n isByMe: PropTypes.bool,\n status: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n showRemove: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nUnknownMessage.defaultProps = {\n isByMe: false,\n status: '',\n className: '',\n showRemove: () => { },\n chainTop: false,\n chainBottom: false,\n};\n\nfunction OutgoingUnknownMessage({\n message,\n status,\n showRemove,\n chainTop,\n chainBottom,\n}) {\n const className = 'sendbird-outgoing-unknown-message';\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { showRemove(true); closeDropdown(); }}\n >\n Delete\n \n \n )}\n />\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n \n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n \n \n {stringSet.UNKNOWN__CANNOT_READ_MESSAGE}\n \n
\n
\n
\n
\n );\n}\n\nfunction IncomingUnknownMessage({\n message,\n chainTop,\n chainBottom,\n}) {\n const className = 'sendbird-incoming-unknown-message';\n const { sender } = message;\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${className}__left__sender-profile-image`}\n src={sender.profileUrl}\n width=\"28px\"\n height=\"28px\"\n alt=\"sender-profile-image\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n {sender.nickname || stringSet.NO_NAME}\n \n )\n }\n
\n \n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n \n \n {stringSet.UNKNOWN__CANNOT_READ_MESSAGE}\n \n
\n
\n
\n {\n !chainBottom && (\n \n {utils.getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nOutgoingUnknownMessage.propTypes = {\n message: PropTypes.shape({}).isRequired,\n status: PropTypes.string.isRequired,\n showRemove: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingUnknownMessage.defaultProps = {\n showRemove: () => { },\n};\n\nIncomingUnknownMessage.propTypes = {\n message: PropTypes.shape({\n sender: PropTypes.shape({\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n }),\n }).isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n","export const URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;\nexport const OG_MESSAGE = 'sendbird-og-message';\nexport const OUTGOING_OG_MESSAGE = 'sendbird-outgoing-og-message';\nexport const INCOMING_OG_MESSAGE = 'sendbird-incoming-og-message';\nexport const generateMockMessage = (process) => {\n const message = {\n message: 'go to this link sendbird.com it will be usefull to you!!',\n ogMetaData: {\n title: 'This is the TITLE',\n description: 'I\\'m description I\\'m description I\\'m description I\\'m description ',\n url: 'https://sendbird.com/',\n defaultImage: {\n url: 'https://static.sendbird.com/sample/profiles/profile_12_512px.png',\n alt: 'test',\n },\n },\n sender: {\n profileUrl: 'https://static.sendbird.com/sample/profiles/profile_12_512px.png',\n nickname: 'Hoonying',\n },\n createdAt: 2000000,\n };\n if (process && typeof process === 'function') {\n return process(message);\n }\n return message;\n};\n\nexport default {\n URL_REG,\n OG_MESSAGE,\n OUTGOING_OG_MESSAGE,\n INCOMING_OG_MESSAGE,\n generateMockMessage,\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const createUrlTester = (regexp) => (text) => regexp.test(text);\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport const copyToClipboard = (text) => {\n try {\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path\n // to prevent textarea being shown while dialog is visible.\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n } catch (err) {\n return err;\n }\n};\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const checkOGIsEnalbed = (message) => {\n const { ogMetaData } = message;\n if (!ogMetaData) {\n return false;\n }\n const { url } = ogMetaData;\n if (!url) {\n return false;\n }\n return true;\n};\n\nexport default {\n getSenderName,\n createUrlTester,\n copyToClipboard,\n checkOGIsEnalbed,\n getMessageCreatedAt,\n getIsSentFromStatus,\n getSenderProfileUrl,\n};\n","import React, { useMemo, useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport LinkLabel from '../LinkLabel';\nimport uuidv4 from '../../utils/uuid';\nimport { createUrlTester } from './utils';\nimport { URL_REG } from './const';\n\nconst WORD_TYPOGRAPHY = LabelTypography.BODY_1;\nconst WORD_COLOR = LabelColors.ONBACKGROUND_1;\nconst EDITED_COLOR = LabelColors.ONBACKGROUND_2;\nconst isUrl = createUrlTester(URL_REG);\n\nexport default function useMemoizedMessageText({\n message,\n updatedAt,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return useMemo(() => () => {\n const splitMessage = message.split(' ');\n const matchedMessage = splitMessage\n .map((word) => (\n isUrl(word)\n ? (\n \n {word}\n \n )\n : (\n \n {word}\n \n )\n ));\n if (updatedAt > 0) {\n matchedMessage.push(\n \n {stringSet.MESSAGE_EDITED}\n ,\n );\n }\n return matchedMessage;\n }, [message, updatedAt, className]);\n}\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n OG_MESSAGE,\n OUTGOING_OG_MESSAGE,\n INCOMING_OG_MESSAGE,\n} from './const';\nimport {\n getSenderName,\n copyToClipboard,\n checkOGIsEnalbed,\n getMessageCreatedAt,\n getIsSentFromStatus,\n getSenderProfileUrl,\n} from './utils';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport useMemoizedMessageText from './memoizedMessageText';\nimport './index.scss';\n\nimport UserProfile from '../UserProfile';\nimport IconButton from '../IconButton';\nimport ImageRenderer from '../ImageRenderer';\nimport MessageStatus from '../MessageStatus';\nimport EmojiReactions from '../EmojiReactions';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport Avatar from '../Avatar/index';\n\nimport useMouseHover from '../../hooks/onMouseHover';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nconst GROUPING_PADDING = '1px';\nconst NORAML_PADDING = '8px';\n\nconst OGMessageSwitch = ({\n isByMe,\n userId,\n status,\n message,\n disabled,\n showEdit,\n chainTop,\n className,\n membersMap,\n showRemove,\n useReaction,\n emojiAllMap,\n chainBottom,\n resendMessage,\n toggleReaction,\n memoizedEmojiListItems,\n}) => {\n const { ogMetaData } = message;\n const injectingClassName = Array.isArray(className) ? className : [className];\n\n const memoizedMessageText = useMemoizedMessageText({\n message: message.message,\n updatedAt: message.updatedAt,\n className: 'sendbird-og-message-word',\n });\n const openLink = () => {\n if (checkOGIsEnalbed(message)) {\n const { url } = ogMetaData;\n window.open(url);\n }\n };\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n};\n\nfunction OutgoingOGMessage(props) {\n const {\n status,\n userId,\n message,\n disabled,\n openLink,\n showEdit,\n chainTop,\n showRemove,\n membersMap,\n chainBottom,\n emojiAllMap,\n useReaction,\n resendMessage,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n } = props;\n const {\n ogMetaData,\n } = message;\n const {\n defaultImage,\n } = ogMetaData;\n const { stringSet } = useContext(LocalizationContext);\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n\n const isMessageSent = getIsSentFromStatus(status);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n isMessageSent && (\n { copyToClipboard(message.message); closeDropdown(); }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__COPY}\n \n )\n }\n {\n isMessageSent && (\n {\n if (disabled) { return; }\n showEdit(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__EDIT}\n \n )\n }\n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n \n )}\n />\n {\n (isMessageSent && useReaction && (emojiAllMap.size > 0))\n && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n \n
\n
\n {\n defaultImage && (\n \n \n
\n )}\n />\n )\n }\n
\n
\n {\n ogMetaData.title && (\n
\n \n {ogMetaData.title}\n \n
\n )\n }\n {\n ogMetaData.description && (\n
\n \n {ogMetaData.description}\n \n
\n )\n }\n {\n ogMetaData.url && (\n
\n {ogMetaData.url}\n \n )\n }\n {\n showEmojiReactions\n && (\n
event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"button\"\n tabIndex={0}\n >\n \n
\n )\n }\n
\n
\n
\n \n );\n}\n\nfunction IncomingOGMessage(props) {\n const {\n userId,\n message,\n openLink,\n chainTop,\n membersMap,\n chainBottom,\n useReaction,\n emojiAllMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n } = props;\n const {\n ogMetaData,\n } = message;\n const {\n defaultImage,\n } = ogMetaData;\n const { stringSet } = useContext(LocalizationContext);\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n\n const messageRef = useRef(null);\n const avatarRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${INCOMING_OG_MESSAGE}__avatar`}\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n alt=\"sender-profile-image\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n \n
\n \n {\n defaultImage && (\n \n \n
\n )}\n />\n )\n }\n \n
\n {\n ogMetaData.title && (\n
\n\n \n {ogMetaData.title}\n \n
\n )\n }\n {\n ogMetaData.description && (\n
\n \n {ogMetaData.description}\n \n
\n )\n }\n {\n ogMetaData.url && (\n
\n \n {ogMetaData.url}\n \n
\n )\n }\n {\n showEmojiReactions\n && (\n
event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"button\"\n tabIndex={0}\n >\n \n
\n )\n }\n
\n
\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n {\n showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { copyToClipboard(message.message); closeDropdown(); }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__COPY}\n \n \n )}\n />\n
\n
\n
\n \n );\n}\n\nexport default OGMessageSwitch;\n\nconst noop = () => { };\n\nOGMessageSwitch.propTypes = {\n isByMe: PropTypes.bool.isRequired,\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n sender: PropTypes.shape({}),\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n }).isRequired,\n useReaction: PropTypes.bool.isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n status: PropTypes.string,\n disabled: PropTypes.bool,\n showEdit: PropTypes.func,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n toggleReaction: PropTypes.func,\n membersMap: PropTypes.instanceOf(Map),\n emojiAllMap: PropTypes.instanceOf(Map),\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nOGMessageSwitch.defaultProps = {\n className: '',\n status: '',\n disabled: false,\n showEdit: noop,\n showRemove: noop,\n resendMessage: noop,\n toggleReaction: noop,\n membersMap: new Map(),\n emojiAllMap: new Map(),\n memoizedEmojiListItems: noop,\n chainTop: false,\n chainBottom: false,\n};\n\nOutgoingOGMessage.propTypes = {\n status: PropTypes.string,\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n isResendable: PropTypes.func,\n errorCode: PropTypes.number,\n }).isRequired,\n disabled: PropTypes.bool.isRequired,\n openLink: PropTypes.func.isRequired,\n showEdit: PropTypes.func.isRequired,\n showRemove: PropTypes.func.isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n useReaction: PropTypes.bool.isRequired,\n resendMessage: PropTypes.func.isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingOGMessage.defaultProps = {\n status: '',\n};\n\nIncomingOGMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n sender: PropTypes.shape({}),\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n }).isRequired,\n openLink: PropTypes.func.isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n useReaction: PropTypes.bool.isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n","import React, { useState, useRef, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport format from 'date-fns/format';\n\nimport Message from '../../../ui/Message';\nimport AdminMessage from '../../../ui/AdminMessage';\nimport ThumbnailMessage from '../../../ui/ThumbnailMessage';\nimport FileMessage from '../../../ui/FileMessage';\nimport DateSeparator from '../../../ui/DateSeparator';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport MessageInput from '../../../ui/MessageInput';\nimport FileViewer from '../../../ui/FileViewer';\nimport RemoveMessageModal from './RemoveMessage';\nimport UnknownMessage from '../../../ui/UnknownMessage';\nimport OGMessage from '../../../ui/OGMessage';\n\nimport { MessageTypes, getMessageType } from '../types';\n\nexport default function MessageHoc({\n message,\n userId,\n disabled,\n editDisabled,\n hasSeperator,\n deleteMessage,\n updateMessage,\n status,\n resendMessage,\n useReaction,\n chainTop,\n chainBottom,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n renderCustomMessage,\n currentGroupChannel,\n}) {\n const { sender = {} } = message;\n const [showEdit, setShowEdit] = useState(false);\n const [showRemove, setShowRemove] = useState(false);\n const [showFileViewer, setShowFileViewer] = useState(false);\n const editMessageInputRef = useRef(null);\n\n const RenderedMessage = useMemo(() => {\n if (renderCustomMessage) {\n return renderCustomMessage(message, currentGroupChannel);\n }\n return null;\n }, [message, message.message, renderCustomMessage]);\n\n const isByMe = (userId === sender.userId)\n || (message.requestState === 'pending')\n || (message.requestState === 'failed');\n\n if (RenderedMessage) {\n return (\n \n {/* date-seperator */}\n {\n hasSeperator && (\n \n \n {format(message.createdAt, 'MMMM dd, yyyy')}\n \n \n )\n }\n \n
\n );\n }\n\n if (showEdit) {\n return (\n { setShowEdit(false); }}\n value={message.message}\n />\n );\n }\n\n return (\n \n {/* date-seperator */}\n {\n hasSeperator && (\n
\n \n {format(message.createdAt, 'MMMM dd, yyyy')}\n \n \n )\n }\n {/* Message */}\n {\n {\n [MessageTypes.ADMIN]:
,\n [MessageTypes.FILE]: (\n
\n ),\n [MessageTypes.OG]: (\n
\n ),\n [MessageTypes.THUMBNAIL]: (\n
\n ),\n [MessageTypes.USER]: (\n
\n ),\n }[getMessageType(message)]\n }\n {/* Modal */}\n {\n showRemove && (\n
setShowRemove(false)}\n onDeleteMessage={() => {\n deleteMessage(message);\n }}\n />\n )\n }\n {\n showFileViewer && (\n setShowFileViewer(false)}\n message={message}\n onDelete={() => {\n deleteMessage(message, () => {\n setShowFileViewer(false);\n });\n }}\n isByMe={isByMe}\n />\n )\n }\n {\n !((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file')\n && !(message.isAdminMessage && message.isAdminMessage())\n && !(((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user'))\n && !(showFileViewer)\n && (\n \n )\n }\n \n );\n}\n\nMessageHoc.propTypes = {\n userId: PropTypes.string,\n message: PropTypes.shape({\n isFileMessage: PropTypes.func,\n isAdminMessage: PropTypes.func,\n isUserMessage: PropTypes.func,\n isDateSeperator: PropTypes.func,\n // should be a number, but there's a bug in SDK shich returns string\n messageId: PropTypes.number,\n type: PropTypes.string,\n createdAt: PropTypes.number,\n message: PropTypes.string,\n requestState: PropTypes.string,\n messageType: PropTypes.string,\n sender: PropTypes.shape({ userId: PropTypes.string }),\n ogMetaData: PropTypes.shape({}),\n }),\n renderCustomMessage: PropTypes.func,\n currentGroupChannel: PropTypes.shape,\n hasSeperator: PropTypes.bool,\n disabled: PropTypes.bool,\n editDisabled: PropTypes.bool,\n deleteMessage: PropTypes.func.isRequired,\n updateMessage: PropTypes.func.isRequired,\n resendMessage: PropTypes.func.isRequired,\n status: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\n\nMessageHoc.defaultProps = {\n userId: '',\n editDisabled: false,\n renderCustomMessage: null,\n currentGroupChannel: {},\n message: {},\n hasSeperator: false,\n disabled: false,\n status: '',\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport isSameDay from 'date-fns/isSameDay';\n\nimport './conversation-scroll.scss';\nimport * as messageActionTypes from '../dux/actionTypes';\n\nimport MessageHOC from './MessageHOC';\nimport {\n getParsedStatus,\n compareMessagesForGrouping,\n} from '../utils';\n\nexport default class ConversationScroll extends Component {\n onScroll = (e) => {\n const {\n scrollRef,\n hasMore,\n messagesDispatcher,\n onScroll,\n currentGroupChannel,\n } = this.props;\n\n const element = e.target;\n const {\n scrollTop,\n clientHeight,\n scrollHeight,\n } = element;\n if (scrollTop === 0) {\n if (!hasMore) {\n return;\n }\n const nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');\n const first = nodes[0];\n onScroll(([messages]) => {\n if (messages) {\n // https://github.com/scabbiaza/react-scroll-position-on-updating-dom\n first.scrollIntoView();\n }\n });\n }\n\n setTimeout(() => {\n // mark as read if scroll is at end\n if (clientHeight + scrollTop === scrollHeight) {\n messagesDispatcher({\n type: messageActionTypes.MARK_AS_READ,\n });\n currentGroupChannel.markAsRead();\n }\n }, 500);\n }\n\n render() {\n const {\n userId,\n disabled,\n scrollRef,\n readStatus,\n membersMap,\n initialized,\n allMessages,\n useReaction,\n emojiAllMap,\n editDisabled,\n deleteMessage,\n updateMessage,\n resendMessage,\n renderCustomMessage,\n renderChatItem,\n emojiContainer,\n toggleReaction,\n useMessageGrouping,\n currentGroupChannel,\n memoizedEmojiListItems,\n } = this.props;\n return (\n \n
\n
\n {/*\n To do: Implement windowing\n Implement windowing if you are dealing with large number of messages/channels\n https://github.com/bvaughn/react-window -> recommendation\n We hesitate to bring one more dependency to our library,\n we are planning to implement it inside the library\n */}\n
\n {\n initialized\n && allMessages.map(\n (m, idx) => {\n const previousMessage = allMessages[idx - 1];\n const nextMessage = allMessages[idx + 1];\n const [chainTop, chainBottom] = useMessageGrouping\n ? compareMessagesForGrouping(previousMessage, m, nextMessage)\n : [false, false];\n const previousMessageCreatedAt = previousMessage && previousMessage.createdAt;\n const currentCreatedAt = m.createdAt;\n // https://stackoverflow.com/a/41855608\n const hasSeperator = !(previousMessageCreatedAt && (\n isSameDay(currentCreatedAt, previousMessageCreatedAt)\n ));\n if (renderChatItem) {\n return (\n
\n {\n renderChatItem({\n message: m,\n channel: currentGroupChannel,\n onDeleteMessage: deleteMessage,\n onUpdateMessage: updateMessage,\n onResendMessage: resendMessage,\n emojiContainer,\n })\n }\n
\n );\n }\n\n return (\n
\n );\n },\n )\n }\n
\n
\n
\n );\n }\n}\n\nConversationScroll.propTypes = {\n // https://stackoverflow.com/a/52646941\n scrollRef: PropTypes.shape({\n current: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.shape({}),\n ]),\n }).isRequired,\n hasMore: PropTypes.bool,\n messagesDispatcher: PropTypes.func.isRequired,\n onScroll: PropTypes.func,\n initialized: PropTypes.bool,\n editDisabled: PropTypes.bool,\n disabled: PropTypes.bool,\n userId: PropTypes.string,\n allMessages: PropTypes.arrayOf(PropTypes.shape({\n createdAt: PropTypes.number,\n })).isRequired,\n deleteMessage: PropTypes.func.isRequired,\n resendMessage: PropTypes.func.isRequired,\n updateMessage: PropTypes.func.isRequired,\n readStatus: PropTypes.shape({}).isRequired,\n currentGroupChannel: PropTypes.shape({\n markAsRead: PropTypes.func,\n members: PropTypes.arrayOf(PropTypes.shape({})),\n }).isRequired,\n renderChatItem: PropTypes.element,\n renderCustomMessage: PropTypes.func,\n useReaction: PropTypes.bool,\n emojiContainer: PropTypes.shape({}),\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n useMessageGrouping: PropTypes.bool,\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\n\nConversationScroll.defaultProps = {\n hasMore: false,\n editDisabled: false,\n disabled: false,\n initialized: false,\n userId: '',\n renderCustomMessage: null,\n renderChatItem: null,\n onScroll: null,\n useReaction: true,\n emojiContainer: {},\n emojiAllMap: new Map(),\n membersMap: new Map(),\n useMessageGrouping: true,\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './notification.scss';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\n\nexport default function Notification({\n count,\n time,\n onClick,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const timeArray = time.split(' ');\n timeArray.splice(-2, 0, stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__ON);\n return (\n // eslint-disable-next-line\n \n \n {`${count} `}\n {stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE}\n {` ${timeArray.join(' ')}`}\n \n \n
\n );\n}\n\nNotification.propTypes = {\n count: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n time: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n};\n\nNotification.defaultProps = {\n count: 0,\n time: '',\n};\n","import React, { useContext } from 'react';\n\nimport './notification.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography } from '../../../ui/Label';\n\nconst FrozenNotification = (): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n {stringSet.CHANNEL_FROZEN}\n \n
\n );\n}\n\nexport default FrozenNotification;\n","import React, { useEffect, useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { uuidv4 } from '../../../utils/uuid';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\n\nconst TypingIndicatorText = ({ members }) => {\n const { stringSet } = useContext(LocalizationContext);\n if (!members || members.length === 0) {\n return '';\n }\n\n if (members && members.length === 1) {\n return `${members[0].nickname} ${stringSet.TYPING_INDICATOR__IS_TYPING}`;\n }\n\n if (members && members.length === 2) {\n return `${members[0].nickname} ${stringSet.TYPING_INDICATOR__AND} ${members[1].nickname} ${stringSet.TYPING_INDICATOR__ARE_TYPING}`;\n }\n\n return stringSet.TYPING_INDICATOR__MULTIPLE_TYPING;\n};\n\nfunction TypingIndicator({ channelUrl, sb, logger }) {\n const [handlerId, setHandlerId] = useState(uuidv4());\n const [typingMembers, setTypingMembers] = useState([]);\n\n useEffect(() => {\n if (sb && sb.ChannelHandler) {\n sb.removeChannelHandler(handlerId);\n const newHandlerId = uuidv4();\n const handler = new sb.ChannelHandler();\n // there is a possible warning in here - setState called after unmount\n handler.onTypingStatusUpdated = (groupChannel) => {\n logger.info('Channel > Typing Indicator: onTypingStatusUpdated', groupChannel);\n const members = groupChannel.getTypingMembers();\n if (groupChannel.url === channelUrl) {\n setTypingMembers(members);\n }\n };\n sb.addChannelHandler(newHandlerId, handler);\n setHandlerId(newHandlerId);\n }\n\n return () => {\n setTypingMembers([]);\n if (sb && sb.removeChannelHandler) {\n sb.removeChannelHandler(handlerId);\n }\n };\n }, [channelUrl]);\n\n return (\n \n \n \n );\n}\n\nTypingIndicator.propTypes = {\n channelUrl: PropTypes.string.isRequired,\n sb: PropTypes.shape({\n ChannelHandler: PropTypes.func,\n removeChannelHandler: PropTypes.func,\n addChannelHandler: PropTypes.func,\n }).isRequired,\n logger: PropTypes.shape({\n info: PropTypes.func,\n }).isRequired,\n};\n\nexport default TypingIndicator;\n","// Logic required to handle message input rendering\n\nimport React, { useContext } from 'react';\nimport Sendbird from 'sendbird';\n\nimport { RenderMessageInputProps } from '../../../index';\nimport * as utils from '../utils.js';\n\nimport MessageInput from '../../../ui/MessageInput';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n channel: Sendbird.GroupChannel;\n user: Sendbird.User;\n isOnline: boolean;\n initialized: boolean;\n onSendMessage(): void;\n onFileUpload(): void;\n renderMessageInput(renderProps: RenderMessageInputProps): JSX.Element;\n}\n\nconst MessageInputWrapper = ({\n channel,\n user,\n onSendMessage,\n onFileUpload,\n renderMessageInput,\n isOnline,\n initialized,\n}: Props, ref: React.RefObject): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n const disabled = !initialized\n || utils.isDisabledBecauseFrozen(channel)\n || utils.isDisabledBecauseMuted(channel)\n || !isOnline;\n\n const isOperator = utils.isOperator(channel);\n const { isBroadcast } = channel;\n\n // custom message\n if (renderMessageInput) {\n return renderMessageInput({ channel, user, disabled });\n }\n\n // broadcast channel + not operator\n if (isBroadcast && !isOperator) {\n return null;\n }\n\n // other conditions\n return (\n {\n channel.startTyping();\n }}\n onSendMessage={onSendMessage}\n onFileUpload={onFileUpload}\n />\n );\n}\n\nexport default React.forwardRef(MessageInputWrapper);\n","import React, { useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, {\n LabelTypography,\n LabelColors,\n} from '../Label';\nimport Icon, { IconTypes, IconColors } from '../Icon';\n\nimport './index.scss';\n\nfunction ConnectionStatus() {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n { stringSet.TRYING_TO_CONNECT }\n \n \n
\n );\n}\n\nexport default ConnectionStatus;\n","import formatDistanceToNowStrict from 'date-fns/formatDistanceToNowStrict';\nimport { LabelStringSet } from '../Label';\n\nexport const prettyDate = (date) => formatDistanceToNowStrict(date, { addSuffix: true });\n\nexport const getOthersLastSeenAt = (channel) => {\n if (!channel || !channel.getReadStatus || !channel.members || channel.members.length !== 2) {\n return '';\n }\n const lastSeenList = [...Object.values(channel.getReadStatus())];\n const lastSeenAt = lastSeenList.length > 0\n ? lastSeenList[0].last_seen_at\n : 0;\n if (lastSeenAt === 0) {\n return '';\n }\n return prettyDate(lastSeenAt);\n};\n\nexport const getChannelTitle = (channel = {}, currentUserId, stringSet = LabelStringSet) => {\n if (!channel || (!channel.name && !channel.members)) {\n return stringSet.NO_TITLE;\n }\n if (channel.name && channel.name !== 'Group Channel') {\n return channel.name;\n }\n\n if (channel.members.length === 1) {\n return stringSet.NO_MEMBERS;\n }\n\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => (nickname || stringSet.NO_NAME))\n .join(', ');\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default function AutoRefresh({\n repeatFunc,\n}) {\n const [label, setLabel] = useState(repeatFunc());\n\n useEffect(() => {\n const interval = setInterval(() => {\n if (label !== repeatFunc()) {\n setLabel(repeatFunc());\n }\n }, 10000);\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return ({label}
);\n}\n\nAutoRefresh.propTypes = {\n repeatFunc: PropTypes.func.isRequired,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport AutoRefresh from '../AutoRefresh';\nimport ChannelAvatar from '../ChannelAvatar/index';\n\nexport default function ChatHeader(props) {\n const {\n currentGroupChannel,\n currentUser,\n title,\n subTitle,\n isActive,\n isMuted,\n onActionClick,\n theme,\n } = props;\n const { userId } = currentUser;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
\n
\n {title || utils.getChannelTitle(currentGroupChannel, userId, stringSet)}\n \n {\n (typeof isActive === 'string' && isActive === 'true') || (typeof isActive === 'boolean' && isActive)\n ?
\n : null\n }\n
\n {\n subTitle\n || utils.getOthersLastSeenAt(currentGroupChannel)} />\n }\n \n
\n
\n {\n (typeof isMuted === 'string' && isMuted === 'true') || (typeof isMuted === 'boolean' && isMuted)\n ? \n : null\n }\n \n \n \n
\n
\n );\n}\n\nChatHeader.propTypes = {\n currentGroupChannel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n coverUrl: PropTypes.string,\n }),\n theme: PropTypes.string,\n currentUser: PropTypes.shape({\n userId: PropTypes.string,\n }),\n title: PropTypes.string,\n subTitle: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n isActive: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n isMuted: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n onActionClick: PropTypes.func,\n};\n\nChatHeader.defaultProps = {\n currentGroupChannel: {},\n title: '',\n theme: 'light',\n subTitle: '',\n isActive: false,\n isMuted: false,\n currentUser: {},\n onActionClick: () => { },\n};\n","import React, {\n useEffect,\n useRef,\n useReducer,\n useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport * as messageActionTypes from './dux/actionTypes';\nimport messagesInitialState from './dux/initialState';\nimport messagesReducer from './dux/reducers';\n\nimport useHandleChannelEvents from './hooks/useHandleChannelEvents';\nimport useGetChannel from './hooks/useGetChannel';\nimport useInitialMessagesFetch from './hooks/useInitialMessagesFetch';\nimport useHandleReconnect from './hooks/useHandleReconnect';\nimport useScrollCallback from './hooks/useScrollCallback';\nimport useDeleteMessageCallback from './hooks/useDeleteMessageCallback';\nimport useUpdateMessageCallback from './hooks/useUpdateMessageCallback';\nimport useResendMessageCallback from './hooks/useResendMessageCallback';\nimport useSendMessageCallback from './hooks/useSendMessageCallback';\nimport useSendFileMessageCallback from './hooks/useSendFileMessageCallback';\nimport useSetReadStatus from './hooks/useSetReadStatus';\nimport useMemoizedEmojiListItems from './hooks/useMemoizedEmojiListItems';\nimport useToggleReactionCallback from './hooks/useToggleReactionCallback';\n\nimport ConversationScroll from './components/ConversationScroll';\nimport Notification from './components/Notification';\nimport FrozenNotification from './components/FrozenNotification';\nimport TypingIndicator from './components/TypingIndicator';\nimport MessageInputWrapper from './components/MessageInputWrapper';\nimport ConnectionStatus from '../../ui/ConnectionStatus';\nimport ChatHeader from '../../ui/ChatHeader';\nimport PlaceHolder, { PlaceHolderTypes } from '../../ui/PlaceHolder';\n\nconst noop = () => { };\n\nexport const ConversationPanel = (props) => {\n const {\n channelUrl,\n stores: { sdkStore, userStore },\n config: {\n userId,\n logger,\n pubSub,\n isOnline,\n theme,\n },\n dispatchers: {\n reconnect,\n },\n queries = {},\n useReaction,\n renderChatItem,\n renderChatHeader,\n renderCustomMessage,\n renderUserProfile,\n disableUserProfile,\n renderMessageInput,\n useMessageGrouping,\n onChatHeaderActionClick,\n onBeforeSendUserMessage,\n onBeforeSendFileMessage,\n onBeforeUpdateUserMessage,\n } = props;\n const { sdk } = sdkStore;\n const { config } = props;\n const sdkError = sdkStore.error;\n const sdkInit = sdkStore.initialized;\n const { user } = userStore;\n\n if (queries.messageListQuery) {\n // eslint-disable-next-line no-console\n console.warn('messageListQuery will be deprecared in v1.3.0, please use messageListParams instead');\n }\n\n const userFilledMessageListQuery = queries.messageListParams || queries.messageListQuery;\n\n const [messagesStore, messagesDispatcher] = useReducer(messagesReducer, messagesInitialState);\n const scrollRef = useRef(null);\n\n const {\n allMessages,\n loading,\n hasMore,\n initialized,\n unreadCount,\n unreadSince,\n isInvalid,\n currentGroupChannel = {},\n lastMessageTimeStamp,\n emojiContainer,\n readStatus,\n } = messagesStore;\n const { isFrozen, isBroadcast } = currentGroupChannel;\n const { appInfo = {} } = sdk;\n const usingReaction = (\n (appInfo.isUsingReaction && !isBroadcast) || useReaction || false\n );\n\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n const emojiAllMap = useMemo(() => (\n usingReaction\n ? utils.getAllEmojisMapFromEmojiContainer(emojiContainer)\n : new Map()\n ), [emojiContainer]);\n\n const emojiAllList = useMemo(() => (\n usingReaction\n ? utils.getAllEmojisFromEmojiContainer(emojiContainer)\n : []\n ), [emojiContainer]);\n\n const nicknamesMap = useMemo(() => (\n usingReaction\n ? utils.getNicknamesMapFromMembers(currentGroupChannel.members)\n : new Map()\n ), [currentGroupChannel.members]);\n\n const onScrollCallback = useScrollCallback({\n currentGroupChannel, lastMessageTimeStamp, userFilledMessageListQuery,\n }, {\n hasMore,\n logger,\n messagesDispatcher,\n sdk,\n });\n\n const toggleReaction = useToggleReactionCallback({ currentGroupChannel }, { logger });\n\n const memoizedEmojiListItems = useMemoizedEmojiListItems({\n emojiContainer, toggleReaction,\n }, {\n useReaction: usingReaction,\n logger,\n userId,\n emojiAllList,\n });\n\n // to create message-datasource\n useGetChannel(\n { channelUrl, sdkInit },\n { messagesDispatcher, sdk, logger },\n );\n\n // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher\n useHandleChannelEvents(\n { currentGroupChannel, sdkInit, userId },\n { messagesDispatcher, sdk, logger },\n );\n\n useInitialMessagesFetch({ currentGroupChannel, userFilledMessageListQuery }, {\n sdk,\n logger,\n messagesDispatcher,\n });\n\n // handles API calls from withSendbird\n useEffect(() => {\n const subScriber = utils.pubSubHandler(channelUrl, pubSub, messagesDispatcher);\n return () => {\n utils.pubSubHandleRemover(subScriber);\n };\n }, [channelUrl, sdkInit]);\n\n // to create initial read status\n useSetReadStatus(\n { allMessages, currentGroupChannel },\n { messagesDispatcher, sdk, logger },\n );\n\n // handling connection breaks\n useHandleReconnect({ isOnline }, {\n logger,\n sdk,\n currentGroupChannel,\n messagesDispatcher,\n userFilledMessageListQuery,\n });\n\n const deleteMessage = useDeleteMessageCallback({ currentGroupChannel, messagesDispatcher },\n { logger });\n const updateMessage = useUpdateMessageCallback(\n { currentGroupChannel, messagesDispatcher, onBeforeUpdateUserMessage },\n { logger, sdk, pubSub },\n );\n const resendMessage = useResendMessageCallback(\n { currentGroupChannel, messagesDispatcher },\n { logger },\n );\n const [messageInputRef, onSendMessage] = useSendMessageCallback(\n { currentGroupChannel, onBeforeSendUserMessage },\n {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n },\n );\n const [onSendFileMessage] = useSendFileMessageCallback(\n { currentGroupChannel, onBeforeSendFileMessage },\n {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n },\n );\n\n if (sdkError) {\n return (\n \n
{\n logger.info('Channel: reconnecting');\n reconnect();\n }}\n />\n \n );\n }\n if (!channelUrl) {\n return ();\n }\n if (loading) {\n return ();\n }\n if (isInvalid) {\n return ();\n }\n return (\n \n {\n renderChatHeader\n ? renderChatHeader({ channel: currentGroupChannel, user })\n : (\n \n )\n }\n {\n isFrozen && (\n \n )\n }\n {\n unreadCount > 0 && (\n {\n utils.scrollIntoLast('.sendbird-msg--scroll-ref');\n // there is no scroll\n if (scrollRef.current.scrollTop === 0) {\n currentGroupChannel.markAsRead();\n messagesDispatcher({\n type: messageActionTypes.MARK_AS_READ,\n });\n }\n }}\n time={unreadSince}\n />\n )\n }\n \n \n
\n
\n \n
\n {\n !isOnline && (\n
\n )\n }\n
\n \n );\n};\n\nConversationPanel.propTypes = {\n channelUrl: PropTypes.string,\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n initialized: PropTypes.bool,\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n removeChannelHandler: PropTypes.func,\n GroupChannel: PropTypes.any,\n ChannelHandler: PropTypes.any,\n addChannelHandler: PropTypes.func,\n UserMessageParams: PropTypes.any,\n FileMessageParams: PropTypes.any,\n getAllEmoji: PropTypes.func,\n appInfo: PropTypes.shape({}),\n }),\n error: PropTypes.bool,\n }),\n userStore: PropTypes.shape({\n user: PropTypes.shape({}),\n }),\n }).isRequired,\n dispatchers: PropTypes.shape({\n reconnect: PropTypes.func,\n }).isRequired,\n config: PropTypes.shape({\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n userId: PropTypes.string.isRequired,\n isOnline: PropTypes.bool.isRequired,\n theme: PropTypes.string,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }).isRequired,\n queries: PropTypes.shape({\n messageListParams: PropTypes.shape({\n includeMetaArray: PropTypes.bool,\n includeParentMessageText: PropTypes.bool,\n includeReaction: PropTypes.bool,\n includeReplies: PropTypes.bool,\n includeThreadInfo: PropTypes.bool,\n limit: PropTypes.number,\n reverse: PropTypes.bool,\n senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n // deprecate in v1.3\n messageListQuery: PropTypes.shape({\n includeMetaArray: PropTypes.bool,\n includeParentMessageText: PropTypes.bool,\n includeReaction: PropTypes.bool,\n includeReplies: PropTypes.bool,\n includeThreadInfo: PropTypes.bool,\n limit: PropTypes.number,\n reverse: PropTypes.bool,\n senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n onBeforeSendUserMessage: PropTypes.func, // onBeforeSendUserMessage(text)\n onBeforeSendFileMessage: PropTypes.func, // onBeforeSendFileMessage(File)\n onBeforeUpdateUserMessage: PropTypes.func,\n renderChatItem: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n renderCustomMessage: PropTypes.func,\n renderMessageInput: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n renderChatHeader: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n onChatHeaderActionClick: PropTypes.func,\n useReaction: PropTypes.bool,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n useMessageGrouping: PropTypes.bool,\n};\n\nConversationPanel.defaultProps = {\n channelUrl: null,\n queries: {},\n onBeforeSendUserMessage: null,\n onBeforeSendFileMessage: null,\n onBeforeUpdateUserMessage: null,\n renderChatItem: null,\n renderCustomMessage: null,\n renderMessageInput: null,\n renderChatHeader: null,\n useReaction: true,\n disableUserProfile: false,\n renderUserProfile: null,\n useMessageGrouping: true,\n onChatHeaderActionClick: noop,\n};\n\nexport const {\n getEmojiCategoriesFromEmojiContainer,\n getAllEmojisFromEmojiContainer,\n getEmojisFromEmojiContainer,\n} = utils;\n\nexport default withSendbirdContext(ConversationPanel);\n"],"names":["RESET_MESSAGES","RESET_STATE","CLEAR_SENT_MESSAGES","GET_PREV_MESSAGES_START","GET_PREV_MESSAGES_SUCESS","SEND_MESSAGEGE_START","SEND_MESSAGEGE_SUCESS","SEND_MESSAGEGE_FAILURE","RESEND_MESSAGEGE_START","ON_MESSAGE_RECEIVED","ON_MESSAGE_UPDATED","ON_MESSAGE_DELETED","ON_MESSAGE_DELETED_BY_REQ_ID","SET_CURRENT_CHANNEL","SET_CHANNEL_INVALID","MARK_AS_READ","ON_REACTION_UPDATED","SET_EMOJI_CONTAINER","SET_READ_STATUS","MessageTypes","ADMIN","USER","FILE","THUMBNAIL","OG","SendingMessageStatus","NONE","SUCCEEDED","FAILED","PENDING","getMessageType","message","isUserMessage","messageType","ogMetaData","isAdminMessage","isFileMessage","isImage","type","isVideo","UNDEFINED","scrollIntoLast","selector","intialTry","MAX_TRIES","currentTry","nodes","document","querySelectorAll","last","length","scrollIntoView","error","setTimeout","pubSubHandleRemover","subscriber","forEach","s","remove","pubSubHandler","channelUrl","pubSub","dispatcher","Map","subscribe","set","topics","msg","channel","url","channelActions","payload","fromSelector","messageId","getParsedStatus","currentGroupChannel","requestState","MessageStatusType","SENT","unreadCount","getReadReceipt","READ","isDelivered","getDeliveryReceipt","DELIVERED","isOperator","groupChannel","myRole","isDisabledBecauseFrozen","isFrozen","isDisabledBecauseMuted","myMutedState","getEmojiCategoriesFromEmojiContainer","emojiContainer","emojiCategories","getAllEmojisFromEmojiContainer","allEmojis","categoryIndex","emojis","emojiIndex","push","getEmojisFromEmojiContainer","emojiCategoryId","filter","emojiCategory","id","getAllEmojisMapFromEmojiContainer","allEmojisMap","key","getNicknamesMapFromMembers","members","nicknamesMap","memberIndex","userId","nickname","getMessageCreatedAt","format","createdAt","isSameGroup","comparingMessage","sender","sendingStatus","compareMessagesForGrouping","prevMessage","currMessage","nextMessage","passUnsuccessfullMessages","allMessages","newMessage","lastIndexOfSucceededMessage","map","lastIndexOf","messages","splice","initialized","loading","hasMore","lastMessageTimeStamp","readStatus","unreadSince","isInvalid","reducer","state","action","actionTypes","initialState","m","receivedMessages","stateChannel","stateChannelUrl","actionChannelUrl","filteredAllMessages","find","compareIds","newMessages","reqId","sort","a","b","failed","currentGroupChannelUrl","indexOf","Date","applyReactionEvent","useHandleChannelEvents","sdkInit","messagesDispatcher","sdk","logger","useEffect","messageReceiverId","uuidv4","ChannelHandler","info","onMessageReceived","messageActions","onMessageUpdated","onMessageDeleted","_","onReactionUpdated","reactionEvent","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onUserMuted","onUserUnmuted","onUserBanned","onOperatorUpdated","addChannelHandler","removeChannelHandler","useSetChannel","GroupChannel","getChannel","then","messageActionTypes","markAsRead","catch","e","warning","getAllEmoji","emojiContainer_","err","useInitialMessagesFetch","userFilledMessageListQuery","MessageListParams","getMessagesByMessageId","messageListParams","prevResultSize","isInclusive","includeReplies","includeReaction","Object","keys","getMessagesByTimestamp","getTime","finally","utils","useHandleReconnect","isOnline","wasOffline","appInfo","useReaction","isUsingReaction","lastMessageTime","useScrollCallback","useCallback","cb","hasMoreMessages","lastMessageTs","useDeleteMessageCallback","deleteMessage","useUpdateMessageCallback","onBeforeUpdateUserMessage","text","createParamsDefault","txt","params","UserMessageParams","createCustomPrams","updateUserMessage","r","swapParams","getErrorFirstCallback","publish","useResendMessageCallback","failedMessage","file","isResendable","resendUserMessage","resendFileMessage","console","useSendMessageCallback","onBeforeSendUserMessage","messageInputRef","useRef","sendMessage","current","value","trim","pendingMsg","sendUserMessage","res","useSendFileMessageCallback","onBeforeSendFileMessage","file_","FileMessageParams","sendFileMessage","response","localUrl","URL","createObjectURL","useSetReadStatus","setReadStatus","allReadStatus","reduce","accumulator","handler","handleMessageStatus","c","onDeliveryReceiptUpdated","onReadReceiptUpdated","handlerId","ReactionButton","React","forwardRef","props","ref","children","width","height","onClick","selected","className","injectingClassName","Array","isArray","join","slice","propTypes","PropTypes","element","isRequired","func","bool","oneOfType","number","string","arrayOf","defaultProps","useMemoizedEmojiListItems","toggleReaction","emojiAllList","useMemo","parentRef","parentContainRef","closeDropdown","spaceFromTrigger","EmojiListItems","emoji","reactedReaction","reactions","reaction","isReacted","userIds","ImageRenderer","Icon","IconTypes","EMOJI_FAILED","useToggleReactionCallback","deleteReaction","addReaction","MessageStatus","status","label","Label","LabelTypography","CAPTION_3","LabelColors","ONBACKGROUND_2","icon","Loader","SPINNER","IconColors","ERROR","objectOf","array","object","ReactionBadge","count","isAdd","unshift","ONBACKGROUND_1","CLASS_NAME","Tooltip","SPACE_FROM_TRIGGER","TooltipWrapper","hoverTooltip","useState","showHoverTooltip","setShowHoverTooltip","childrenRef","bottom","left","offsetWidth","EmojiReactions","emojiAllMap","membersMap","memoizedEmojiListItems","MemoizedEmojiListItems","imageWidth","imageHeight","emojiReactionAddRef","messageReactions","useContext","LocalizationContext","stringSet","emojiUrl","get","reactedUserCount","reactedByMe","nicknames","currentUserId","TOOLTIP__UNKOWN_USER","stringSetForMe","TOOLTIP__AND_YOU","TOOLTIP__YOU","size","ContextMenu","toggleDropdown","ON_BACKGROUND_3","EMOJI_REACTIONS_ADD","y","shape","instanceOf","WORD_TYPOGRAPHY","BODY_1","EDITED_COLOR","useMemoizedMessageText","updatedAt","splitMessage","split","matchedMessage","word","MESSAGE_EDITED","MOUSE_ENTER","MOUSE_LEAVE","useMouseHover","setHover","handleMouseOver","handleMouseOut","addEventListener","removeEventListener","noop","GROUPING_PADDING","NORMAL_PADDING","Message","isByMe","resendMessage","disabled","showEdit","showRemove","chainTop","chainBottom","memoizedMessageText","OutgoingUserMessage","MemoizedMessageText","messageRef","parentRefReactions","parentRefMenus","isMessageSent","getIsSentFromStatus","mousehover","setMousehover","moreActive","setMoreActive","handleMoreIconClick","handleMoreIconBlur","paddingTop","paddingBottom","IconButton","MORE","CONTENT_INVERSE","MenuItems","MenuItem","copyToClipboard","IncomingUserMessage","avatarRef","UserProfileContext","disableUserProfile","renderUserProfile","showReactionAddButton","showEmojiReactions","Avatar","getSenderProfileUrl","user","close","UserProfile","CAPTION_2","getSenderName","AdminMessage","OUTGOING_THUMBNAIL_MESSAGE","INCOMING_THUMBNAIL_MESSAGE","ThumbnailMessage","OutgoingThumbnailMessage","menuRef","reactionAddRef","CONTEXT_MENU_DROPDOWN__RESEND","CONTEXT_MENU_DROPDOWN__DELETE","PLAY","backgroundImage","backgroundSize","backgroundRepeat","backgroundPosition","unSupported","UNKNOWN__UNKNOWN_MESSAGE_TYPE","IncomingThumbnailMessage","MAX_TRUNCATE_LENGTH","GROUPAING_PADDING","checkFileType","fileUrl","result","imageFile","audioFile","test","FILE_DOCUMENT","FILE_AUDIO","OutgoingFileMessage","openFileUrl","window","open","reactionAddButtonRef","TextButton","truncate","IncomingFileMessage","MessageSwitch","RemoveMessage","onCloseModal","onDeleteMessage","Modal","MODAL__DELETE_MESSAGE__TITLE","UnknownMessage","OutgoingUnknownMessage","UNKNOWN__CANNOT_READ_MESSAGE","IncomingUnknownMessage","profileUrl","NO_NAME","URL_REG","OG_MESSAGE","OUTGOING_OG_MESSAGE","INCOMING_OG_MESSAGE","createUrlTester","regexp","clipboardData","setData","queryCommandSupported","textarea","createElement","textContent","style","position","body","appendChild","select","execCommand","ex","removeChild","friendName","checkOGIsEnalbed","WORD_COLOR","isUrl","LinkLabel","NORAML_PADDING","OGMessageSwitch","openLink","OutgoingOGMessage","defaultImage","CONTEXT_MENU_DROPDOWN__COPY","CONTEXT_MENU_DROPDOWN__EDIT","alt","NO_THUMBNAIL","title","SUBTITLE_2","description","BODY_2","event","stopPropagation","IncomingOGMessage","errorCode","MessageHoc","editDisabled","hasSeperator","updateMessage","renderCustomMessage","setShowEdit","setShowRemove","showFileViewer","setShowFileViewer","editMessageInputRef","RenderedMessage","DateSeparator","MessageInput","FileMessage","OGMessage","RemoveMessageModal","FileViewer","isDateSeperator","ConversationScroll","scrollRef","onScroll","target","scrollTop","clientHeight","scrollHeight","first","renderChatItem","useMessageGrouping","idx","previousMessage","previousMessageCreatedAt","currentCreatedAt","isSameDay","onUpdateMessage","onResendMessage","MessageHOC","Component","Notification","time","timeArray","CHANNEL__MESSAGE_LIST__NOTIFICATION__ON","ONCONTENT_1","CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE","SHEVRON_DOWN","CONTENT","FrozenNotification","CHANNEL_FROZEN","TypingIndicatorText","TYPING_INDICATOR__IS_TYPING","TYPING_INDICATOR__AND","TYPING_INDICATOR__ARE_TYPING","TYPING_INDICATOR__MULTIPLE_TYPING","TypingIndicator","sb","setHandlerId","typingMembers","setTypingMembers","newHandlerId","onTypingStatusUpdated","getTypingMembers","MessageInputWrapper","_a","onSendMessage","onFileUpload","renderMessageInput","isBroadcast","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED","startTyping","ConnectionStatus","TRYING_TO_CONNECT","DISCONNECTED","prettyDate","date","formatDistanceToNowStrict","addSuffix","getOthersLastSeenAt","getReadStatus","lastSeenList","values","lastSeenAt","last_seen_at","getChannelTitle","LabelStringSet","name","NO_TITLE","NO_MEMBERS","AutoRefresh","repeatFunc","setLabel","interval","setInterval","clearInterval","ChatHeader","currentUser","subTitle","isActive","isMuted","onActionClick","theme","ChannelAvatar","H_2","MUTE","INFO","PRIMARY","coverUrl","ConversationPanel","stores","sdkStore","userStore","config","reconnect","dispatchers","queries","renderChatHeader","onChatHeaderActionClick","sdkError","messageListQuery","warn","useReducer","messagesReducer","messagesInitialState","messagesStore","usingReaction","userDefinedDisableUserProfile","userDefinedRenderProfile","onScrollCallback","useGetChannel","subScriber","onSendFileMessage","PlaceHolder","PlaceHolderTypes","WRONG","NO_CHANNELS","LOADING","UserProfileProvider","any","includeMetaArray","includeParentMessageText","includeThreadInfo","limit","reverse","senderUserIdsFilter","withSendbirdContext"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/cjs/ChannelList.js b/dist/cjs/ChannelList.js
new file mode 100644
index 0000000..97faa86
--- /dev/null
+++ b/dist/cjs/ChannelList.js
@@ -0,0 +1,1498 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+var PropTypes = _interopDefault(require('prop-types'));
+var actionTypes = require('./actionTypes-920b541f.js');
+var index = require('./index-49d966e1.js');
+var utils = require('./utils-6aedec02.js');
+var index$1 = require('./index-994f886d.js');
+var LeaveChannel = require('./LeaveChannel-4cf3cd9c.js');
+var isToday = _interopDefault(require('date-fns/isToday'));
+var format = _interopDefault(require('date-fns/format'));
+var isYesterday = _interopDefault(require('date-fns/isYesterday'));
+require('./type-c7a3bee7.js');
+var utils$1 = require('./utils-a8277ca2.js');
+require('react-dom');
+var index$2 = require('./index-21269166.js');
+
+var RESET_CHANNEL_LIST = 'RESET_CHANNEL_LIST';
+var CREATE_CHANNEL = 'CREATE_CHANNEL';
+var LEAVE_CHANNEL_SUCCESS = 'LEAVE_CHANNEL_SUCCESS';
+var SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';
+var SHOW_CHANNEL_SETTINGS = 'SHOW_CHANNEL_SETTINGS';
+var HIDE_CHANNEL_SETTINGS = 'HIDE_CHANNEL_SETTINGS';
+var FETCH_CHANNELS_START = 'FETCH_CHANNELS_START';
+var FETCH_CHANNELS_SUCCESS = 'FETCH_CHANNELS_SUCCESS';
+var FETCH_CHANNELS_FAILURE = 'FETCH_CHANNELS_FAILURE';
+var INIT_CHANNELS_START = 'INIT_CHANNELS_START';
+var INIT_CHANNELS_SUCCESS = 'INIT_CHANNELS_SUCCESS';
+var INIT_CHANNELS_FAILURE = 'INIT_CHANNELS_FAILURE';
+var ON_USER_JOINED = 'ON_USER_JOINED';
+var ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';
+var ON_LAST_MESSAGE_UPDATED = 'ON_LAST_MESSAGE_UPDATED';
+var ON_USER_LEFT = 'ON_USER_LEFT';
+var ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';
+var ON_CHANNEL_ARCHIVED = 'ON_CHANNEL_ARCHIVED';
+var ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';
+var ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';
+var ON_READ_RECEIPT_UPDATED = 'ON_READ_RECEIPT_UPDATED';
+var ON_DELIVERY_RECEIPT_UPDATED = 'ON_DELIVERY_RECEIPT_UPDATED';
+var CHANNEL_REPLACED_TO_TOP = 'CHANNEL_REPLACED_TO_TOP';
+
+var channelListInitialState = {
+ // we might not need this initialized state -> should remove
+ initialized: false,
+ loading: false,
+ allChannels: [],
+ currentChannel: null,
+ showSettings: false
+};
+
+function reducer(state, action) {
+ switch (action.type) {
+ case INIT_CHANNELS_START:
+ return LocalizationContext._objectSpread2({}, state, {
+ loading: true
+ });
+
+ case RESET_CHANNEL_LIST:
+ return channelListInitialState;
+
+ case INIT_CHANNELS_SUCCESS:
+ return LocalizationContext._objectSpread2({}, state, {
+ initialized: true,
+ loading: false,
+ allChannels: action.payload,
+ currentChannel: action.payload && action.payload.length && action.payload.length > 0 ? action.payload[0].url : null
+ });
+
+ case FETCH_CHANNELS_SUCCESS:
+ {
+ var currentChannels = state.allChannels.map(function (c) {
+ return c.url;
+ });
+ var filteredChannels = action.payload.filter(function (_ref) {
+ var url = _ref.url;
+ return !currentChannels.find(function (c) {
+ return c === url;
+ });
+ });
+ return LocalizationContext._objectSpread2({}, state, {
+ allChannels: [].concat(LocalizationContext._toConsumableArray(state.allChannels), LocalizationContext._toConsumableArray(filteredChannels))
+ });
+ }
+
+ case CREATE_CHANNEL:
+ {
+ return LocalizationContext._objectSpread2({}, state, {
+ allChannels: [action.payload].concat(LocalizationContext._toConsumableArray(state.allChannels.filter(function (channel) {
+ return channel.url !== action.payload.url;
+ }))),
+ currentChannel: action.payload.url
+ });
+ }
+
+ case ON_CHANNEL_ARCHIVED:
+ case LEAVE_CHANNEL_SUCCESS:
+ case ON_CHANNEL_DELETED:
+ {
+ var channelUrl = action.payload;
+ var leftCurrentChannel = state.currentChannel === channelUrl;
+ var newAllChannels = state.allChannels.filter(function (_ref2) {
+ var url = _ref2.url;
+ return url !== channelUrl;
+ });
+ var currentChannel = leftCurrentChannel ? function () {
+ return newAllChannels.length > 0 ? newAllChannels[0].url : '';
+ }() : state.currentChannel;
+ return LocalizationContext._objectSpread2({}, state, {
+ currentChannel: currentChannel,
+ allChannels: newAllChannels
+ });
+ }
+
+ case ON_USER_LEFT:
+ {
+ var _action$payload = action.payload,
+ channel = _action$payload.channel,
+ isMe = _action$payload.isMe;
+ var url = channel.url;
+
+ if (isMe) {
+ var _leftCurrentChannel = url === state.currentChannel;
+
+ var _newAllChannels2 = state.allChannels.filter(function (c) {
+ return c.url !== url;
+ });
+
+ var _currentChannel = _leftCurrentChannel ? function () {
+ return _newAllChannels2.length > 0 ? _newAllChannels2[0].url : '';
+ }() : state.currentChannel;
+
+ return LocalizationContext._objectSpread2({}, state, {
+ currentChannel: _currentChannel,
+ allChannels: _newAllChannels2
+ });
+ } // other user left
+
+
+ var _newAllChannels = state.allChannels.map(function (c) {
+ return c.url === url ? channel : c;
+ });
+
+ return LocalizationContext._objectSpread2({}, state, {
+ allChannels: _newAllChannels
+ });
+ }
+
+ case ON_USER_JOINED:
+ case ON_CHANNEL_CHANGED:
+ case ON_READ_RECEIPT_UPDATED:
+ case ON_DELIVERY_RECEIPT_UPDATED:
+ {
+ var _state$allChannels = state.allChannels,
+ allChannels = _state$allChannels === void 0 ? [] : _state$allChannels;
+ var unreadMessageCount = action.payload.unreadMessageCount;
+ var _channel = action.payload;
+
+ if (!_channel.lastMessage) {
+ return state;
+ } // if its only an unread message count change, dont push to top
+
+
+ if (unreadMessageCount === 0) {
+ var _currentChannel2 = allChannels.find(function (_ref3) {
+ var url = _ref3.url;
+ return url === _channel.url;
+ });
+
+ var currentUnReadCount = _currentChannel2 && _currentChannel2.unreadMessageCount;
+
+ if (currentUnReadCount === 0) {
+ return LocalizationContext._objectSpread2({}, state, {
+ allChannels: allChannels.map(function (c) {
+ if (c.url === _channel.url) {
+ return _channel;
+ }
+
+ return c;
+ })
+ });
+ }
+ }
+
+ return LocalizationContext._objectSpread2({}, state, {
+ allChannels: [action.payload].concat(LocalizationContext._toConsumableArray(state.allChannels.filter(function (_ref4) {
+ var url = _ref4.url;
+ return url !== action.payload.url;
+ })))
+ });
+ }
+
+ case SET_CURRENT_CHANNEL:
+ return LocalizationContext._objectSpread2({}, state, {
+ currentChannel: action.payload
+ });
+
+ case SHOW_CHANNEL_SETTINGS:
+ return LocalizationContext._objectSpread2({}, state, {
+ showSettings: true
+ });
+
+ case HIDE_CHANNEL_SETTINGS:
+ return LocalizationContext._objectSpread2({}, state, {
+ showSettings: false
+ });
+
+ case ON_LAST_MESSAGE_UPDATED:
+ return LocalizationContext._objectSpread2({}, state, {
+ allChannels: state.allChannels.map(function (channel) {
+ if (channel.url === action.payload.url) {
+ return action.payload;
+ }
+
+ return channel;
+ })
+ });
+
+ case ON_CHANNEL_FROZEN:
+ return LocalizationContext._objectSpread2({}, state, {
+ allChannels: state.allChannels.map(function (channel) {
+ if (channel.url === action.payload.url) {
+ // eslint-disable-next-line no-param-reassign
+ channel.isFrozen = true;
+ return channel;
+ }
+
+ return channel;
+ })
+ });
+
+ case ON_CHANNEL_UNFROZEN:
+ return LocalizationContext._objectSpread2({}, state, {
+ allChannels: state.allChannels.map(function (channel) {
+ if (channel.url === action.payload.url) {
+ // eslint-disable-next-line no-param-reassign
+ channel.isFrozen = false;
+ return channel;
+ }
+
+ return channel;
+ })
+ });
+
+ case CHANNEL_REPLACED_TO_TOP:
+ return LocalizationContext._objectSpread2({}, state, {
+ allChannels: [action.payload].concat(LocalizationContext._toConsumableArray(state.allChannels.filter(function (channel) {
+ return channel.url !== action.payload.url;
+ })))
+ });
+
+ default:
+ return state;
+ }
+}
+
+var getChannelTitle = function getChannelTitle() {
+ var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var currentUserId = arguments.length > 1 ? arguments[1] : undefined;
+ var stringSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : index.LabelStringSet;
+
+ if (!channel || !channel.name && !channel.members) {
+ return stringSet.NO_TITLE;
+ }
+
+ if (channel.name && channel.name !== 'Group Channel') {
+ return channel.name;
+ }
+
+ if (channel.members.length === 1) {
+ return stringSet.NO_MEMBERS;
+ }
+
+ return channel.members.filter(function (_ref) {
+ var userId = _ref.userId;
+ return userId !== currentUserId;
+ }).map(function (_ref2) {
+ var nickname = _ref2.nickname;
+ return nickname || stringSet.NO_NAME;
+ }).join(', ');
+};
+var getLastMessageCreatedAt = function getLastMessageCreatedAt(channel) {
+ if (!channel || !channel.lastMessage) {
+ return '';
+ }
+
+ var date = channel.lastMessage.createdAt;
+
+ if (isToday(date)) {
+ return format(date, 'p');
+ }
+
+ if (isYesterday(date)) {
+ return 'Yesterday';
+ }
+
+ return format(date, 'MMM dd');
+};
+var getTotalMembers = function getTotalMembers(channel) {
+ return channel && channel.memberCount ? channel.memberCount : 0;
+};
+
+var getPrettyLastMessage = function getPrettyLastMessage() {
+ var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var MAXLEN = 30;
+ var messageType = message.messageType,
+ name = message.name;
+
+ if (messageType === 'file') {
+ return utils$1.truncate(name, MAXLEN);
+ }
+
+ return message.message;
+};
+
+var getLastMessage = function getLastMessage(channel) {
+ return channel && channel.lastMessage ? getPrettyLastMessage(channel.lastMessage) : '';
+};
+var getChannelUnreadMessageCount = function getChannelUnreadMessageCount(channel) {
+ return channel && channel.unreadMessageCount ? channel.unreadMessageCount : 0;
+};
+
+function ChannelPreview(_ref) {
+ var channel = _ref.channel,
+ isActive = _ref.isActive,
+ ChannelAction = _ref.ChannelAction,
+ theme = _ref.theme,
+ onClick = _ref.onClick,
+ tabIndex = _ref.tabIndex,
+ currentUser = _ref.currentUser;
+ var userId = currentUser.userId;
+ var isBroadcast = channel.isBroadcast,
+ isFrozen = channel.isFrozen;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React__default.createElement("div", {
+ role: "link",
+ tabIndex: tabIndex,
+ onClick: onClick,
+ onKeyPress: onClick,
+ className: "\n sendbird-channel-preview\n ".concat(isActive ? 'sendbird-channel-preview--active' : null, "\n ")
+ }, React__default.createElement("div", {
+ className: "sendbird-channel-preview__avatar"
+ }, React__default.createElement(index$1.ChannelAvatar, {
+ channel: channel,
+ userId: userId,
+ theme: theme
+ })), React__default.createElement("div", {
+ className: "sendbird-channel-preview__content"
+ }, React__default.createElement("div", {
+ className: "sendbird-channel-preview__content__upper"
+ }, React__default.createElement("div", {
+ className: "sendbird-channel-preview__content__upper__header"
+ }, isBroadcast && React__default.createElement("div", {
+ className: "sendbird-channel-preview__broadcast-icon"
+ }, React__default.createElement(index.Icon, {
+ type: theme === 'dark' ? index.IconTypes.BROADCAST_DARK : index.IconTypes.BROADCAST_LIGHT,
+ height: 12,
+ width: 12
+ })), React__default.createElement(index.Label, {
+ className: "sendbird-channel-preview__content__upper__header__channel-name",
+ type: index.LabelTypography.SUBTITLE_2,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, getChannelTitle(channel, userId, stringSet)), React__default.createElement(index.Label, {
+ className: "sendbird-channel-preview__content__upper__header__total-members",
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, getTotalMembers(channel)), isFrozen && React__default.createElement("div", {
+ title: "Frozen",
+ className: "sendbird-channel-preview__frozen-icon"
+ }, React__default.createElement(index.Icon, {
+ type: theme === 'dark' ? index.IconTypes.FROZEN_DARK : index.IconTypes.FROZEN_LIGHT,
+ height: 12,
+ width: 12
+ }))), React__default.createElement(index.Label, {
+ className: "sendbird-channel-preview__content__upper__last-message-at",
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, getLastMessageCreatedAt(channel))), React__default.createElement("div", {
+ className: "sendbird-channel-preview__content__lower"
+ }, React__default.createElement(index.Label, {
+ className: "sendbird-channel-preview__content__lower__last-message",
+ type: index.LabelTypography.BODY_2,
+ color: index.LabelColors.ONBACKGROUND_3
+ }, getLastMessage(channel)), React__default.createElement("div", {
+ className: "sendbird-channel-preview__content__lower__unread-message-count"
+ }, getChannelUnreadMessageCount(channel) ? React__default.createElement(LeaveChannel.Badge, {
+ count: getChannelUnreadMessageCount(channel)
+ }) : null))), React__default.createElement("div", {
+ className: "sendbird-channel-preview__action"
+ }, ChannelAction));
+}
+ChannelPreview.propTypes = {
+ isActive: PropTypes.bool,
+ theme: PropTypes.string,
+ channel: PropTypes.shape({
+ members: PropTypes.arrayOf(PropTypes.shape({})),
+ coverUrl: PropTypes.string,
+ isBroadcast: PropTypes.bool,
+ isFrozen: PropTypes.bool
+ }),
+ ChannelAction: PropTypes.element.isRequired,
+ onClick: PropTypes.func,
+ tabIndex: PropTypes.number,
+ currentUser: PropTypes.shape({
+ userId: PropTypes.string
+ })
+};
+ChannelPreview.defaultProps = {
+ channel: {},
+ isActive: false,
+ theme: 'light',
+ onClick: function onClick() {},
+ tabIndex: 0,
+ currentUser: {}
+};
+
+function ChannelHeader(_ref) {
+ var user = _ref.user,
+ iconButton = _ref.iconButton,
+ onEdit = _ref.onEdit,
+ renderHeader = _ref.renderHeader,
+ allowProfileEdit = _ref.allowProfileEdit;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React__default.createElement("div", {
+ className: "\n ".concat(allowProfileEdit && 'sendbird-channel-header--allow-edit', "\n sendbird-channel-header\n ")
+ }, renderHeader ? renderHeader() : React__default.createElement("div", {
+ className: "sendbird-channel-header__title",
+ role: "button",
+ onKeyDown: onEdit,
+ onClick: onEdit,
+ tabIndex: "0"
+ }, React__default.createElement("div", {
+ className: "sendbird-channel-header__title--left"
+ }, React__default.createElement(index.Avatar, {
+ height: "32px",
+ width: "32px",
+ src: user.profileUrl,
+ alt: user.nickname
+ })), React__default.createElement("div", {
+ className: "sendbird-channel-header__title--right"
+ }, React__default.createElement(index.Label, {
+ className: "sendbird-channel-header__title--name",
+ type: index.LabelTypography.SUBTITLE_2,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, user.nickname || stringSet.NO_NAME), React__default.createElement(index.Label, {
+ className: "sendbird-channel-header__title--user-id",
+ type: index.LabelTypography.BODY_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, user.userId))), React__default.createElement("div", {
+ className: "sendbird-channel-header__right-icon"
+ }, iconButton));
+}
+ChannelHeader.propTypes = {
+ user: PropTypes.shape({
+ profileUrl: PropTypes.string,
+ nickname: PropTypes.string,
+ userId: PropTypes.string
+ }),
+ renderHeader: PropTypes.func,
+ allowProfileEdit: PropTypes.bool,
+ onEdit: PropTypes.func.isRequired,
+ iconButton: PropTypes.oneOfType([PropTypes.element, PropTypes.instanceOf(index.IconButton)])
+};
+ChannelHeader.defaultProps = {
+ user: {},
+ renderHeader: null,
+ allowProfileEdit: false,
+ iconButton: null
+};
+
+function EditUserProfile(_a) {
+ var user = _a.user,
+ onCancel = _a.onCancel,
+ _onSubmit = _a.onSubmit,
+ _b = _a.onThemeChange,
+ onThemeChange = _b === void 0 ? null : _b,
+ _c = _a.theme,
+ theme = _c === void 0 ? 'light' : _c,
+ _d = _a.changeTheme,
+ changeTheme = _d === void 0 ? utils.noop : _d;
+ var hiddenInputRef = React.useRef(null);
+ var inputRef = React.useRef(null);
+ var formRef = React.useRef(null);
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+
+ var _e = React.useState(null),
+ currentImg = _e[0],
+ setCurrentImg = _e[1];
+
+ var _f = React.useState(null),
+ newFile = _f[0],
+ setNewFile = _f[1];
+
+ return React__default.createElement(index.Modal, {
+ titleText: stringSet.EDIT_PROFILE__TITLE,
+ submitText: stringSet.BUTTON__SAVE,
+ onCancel: onCancel,
+ onSubmit: function onSubmit() {
+ if (user.nickname !== '' && !inputRef.current.value) {
+ if (formRef.current.reportValidity) {
+ // might not work in explorer
+ formRef.current.reportValidity();
+ }
+
+ return;
+ }
+
+ _onSubmit(inputRef.current.value, newFile);
+
+ onCancel();
+ },
+ type: index.Type.PRIMARY
+ }, React__default.createElement("form", {
+ className: "sendbird__edit-user-profile",
+ ref: formRef,
+ onSubmit: function onSubmit(e) {
+ e.preventDefault();
+ }
+ }, React__default.createElement("section", {
+ className: "sendbird__edit-user-profile__img"
+ }, React__default.createElement(index$2.InputLabel, null, stringSet.EDIT_PROFILE__IMAGE_LABEL), React__default.createElement("div", {
+ className: "sendbird__edit-user__avatar"
+ }, React__default.createElement(index.Avatar, {
+ height: "80px",
+ width: "80px",
+ src: currentImg || user.profileUrl
+ })), React__default.createElement("input", {
+ ref: hiddenInputRef,
+ type: "file",
+ accept: "image/gif, image/jpeg, image/png",
+ style: {
+ display: 'none'
+ },
+ onChange: function onChange(e) {
+ setCurrentImg(URL.createObjectURL(e.target.files[0]));
+ setNewFile(e.target.files[0]);
+ hiddenInputRef.current.value = '';
+ }
+ }), React__default.createElement(index.TextButton, {
+ className: "sendbird__edit-user__avatar-button",
+ onClick: function onClick() {
+ return hiddenInputRef.current.click();
+ },
+ notUnderline: true
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.BUTTON_1,
+ color: index.LabelColors.PRIMARY
+ }, stringSet.EDIT_PROFILE__IMAGE_UPLOAD))), React__default.createElement("section", {
+ className: "sendbird__edit-user__name"
+ }, React__default.createElement(index$2.InputLabel, null, stringSet.EDIT_PROFILE__NICKNAME_LABEL), React__default.createElement(index$2.Input, {
+ required: user.nickname !== '',
+ name: "sendbird__edit-user__name",
+ ref: inputRef,
+ value: user.nickname,
+ placeHolder: stringSet.EDIT_PROFILE__NICKNAME_PLACEHOLDER
+ })), React__default.createElement("section", {
+ className: "sendbird__edit-user__userid"
+ }, React__default.createElement(index$2.InputLabel, null, stringSet.EDIT_PROFILE__USERID_LABEL), React__default.createElement(index$2.Input, {
+ disabled: true,
+ name: "sendbird__edit-user__userid",
+ value: user.userId
+ })), React__default.createElement("section", {
+ className: "sendbird__edit-user__theme"
+ }, React__default.createElement(index$2.InputLabel, null, stringSet.EDIT_PROFILE__THEME_LABEL), React__default.createElement("div", {
+ className: "sendbird__edit-user__theme-icon"
+ }, theme === 'dark' ? React__default.createElement(index.Icon, {
+ onClick: function onClick() {
+ changeTheme('light');
+
+ if (onThemeChange && typeof onThemeChange === 'function') {
+ onThemeChange('light');
+ }
+ },
+ type: index.IconTypes.TOGGLE_ON,
+ width: 44,
+ height: 24
+ }) : React__default.createElement(index.Icon, {
+ onClick: function onClick() {
+ changeTheme('dark');
+
+ if (onThemeChange && typeof onThemeChange === 'function') {
+ onThemeChange('dark');
+ }
+ },
+ type: index.IconTypes.TOGGLE_OFF,
+ width: 44,
+ height: 24
+ })))));
+}
+
+var mapStoreToProps = function mapStoreToProps(store) {
+ return {
+ theme: store.config.theme,
+ changeTheme: store.config.setCurrenttheme
+ };
+};
+
+var ConnectedEditUserProfile = LocalizationContext.withSendbirdContext(EditUserProfile, mapStoreToProps);
+
+function AddChannel(_ref) {
+ var sdk = _ref.sdk,
+ disabled = _ref.disabled,
+ channelListDispatcher = _ref.channelListDispatcher,
+ onBeforeCreateChannel = _ref.onBeforeCreateChannel,
+ userId = _ref.userId,
+ userFilledApplicationUserListQuery = _ref.userFilledApplicationUserListQuery,
+ userListQuery = _ref.userListQuery;
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ showModal = _useState2[0],
+ setShowModal = _useState2[1];
+
+ var _useState3 = React.useState(0),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ step = _useState4[0],
+ setStep = _useState4[1];
+
+ var _useState5 = React.useState('group'),
+ _useState6 = LocalizationContext._slicedToArray(_useState5, 2),
+ type = _useState6[0],
+ setType = _useState6[1];
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ if (!sdk || !sdk.createApplicationUserListQuery) {
+ return null;
+ }
+
+ var isBroadcastAvailable = LeaveChannel.isBroadcastChannelEnabled(sdk);
+ var isSupergroupAvailable = LeaveChannel.isSuperGroupChannelEnabled(sdk);
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(index.IconButton, {
+ height: "32px",
+ width: "32px",
+ onClick: function onClick() {
+ setShowModal(true);
+ },
+ disabled: disabled
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.CREATE,
+ fillColor: index.IconColors.PRIMARY,
+ width: "24px",
+ height: "24px"
+ })), showModal && step === 0 && React__default.createElement(index.Modal, {
+ titleText: "New channel",
+ hideFooter: true,
+ onCancel: function onCancel() {
+ setShowModal(false);
+ },
+ onSubmit: function onSubmit() {}
+ }, React__default.createElement("div", {
+ className: "sendbird-add-channel__rectangle-wrap"
+ }, React__default.createElement("div", {
+ className: "sendbird-add-channel__rectangle",
+ onClick: function onClick() {
+ setType('group');
+ setStep(1);
+ },
+ role: "button",
+ tabIndex: 0,
+ onKeyDown: function onKeyDown() {
+ setType('group');
+ setStep(1);
+ }
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.CHAT
+ }), React__default.createElement(index.Label, {
+ type: index.LabelTypography.SUBTITLE_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, "Group")), isSupergroupAvailable && React__default.createElement("div", {
+ className: "sendbird-add-channel__rectangle",
+ onClick: function onClick() {
+ setType('supergroup');
+ setStep(1);
+ },
+ role: "button",
+ tabIndex: 0,
+ onKeyDown: function onKeyDown() {
+ setType('supergroup');
+ setStep(1);
+ }
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.SUPER_GROUP
+ }), React__default.createElement(index.Label, {
+ type: index.LabelTypography.SUBTITLE_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, "Super group")), isBroadcastAvailable && React__default.createElement("div", {
+ className: "sendbird-add-channel__rectangle",
+ onClick: function onClick() {
+ setType('broadcast');
+ setStep(1);
+ },
+ role: "button",
+ tabIndex: 0,
+ onKeyDown: function onKeyDown() {
+ setType('broadcast');
+ setStep(1);
+ }
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.BROADCAST
+ }), React__default.createElement(index.Label, {
+ type: index.LabelTypography.SUBTITLE_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, "Broadcast")))), showModal && step === 1 && React__default.createElement(LeaveChannel.InviteMembers, {
+ swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
+ titleText: stringSet.MODAL__CREATE_CHANNEL__TITLE,
+ submitText: stringSet.BUTTON__CREATE,
+ closeModal: function closeModal() {
+ setStep(0);
+ setShowModal(false);
+ },
+ idsToFilter: [userId],
+ userQueryCreator: function userQueryCreator() {
+ return userListQuery && typeof userListQuery === 'function' ? userListQuery() : LeaveChannel.createDefaultUserListQuery({
+ sdk: sdk,
+ userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
+ });
+ },
+ onSubmit: function onSubmit(selectedUsers) {
+ return LeaveChannel.createChannel(sdk, selectedUsers, onBeforeCreateChannel, userId, type).then(function (channel) {
+ // maybe - do this in event listener
+ channelListDispatcher({
+ type: CREATE_CHANNEL,
+ payload: channel
+ });
+ });
+ }
+ }));
+}
+AddChannel.propTypes = {
+ sdk: PropTypes.shape({
+ getErrorFirstCallback: PropTypes.func,
+ createApplicationUserListQuery: PropTypes.func
+ }).isRequired,
+ disabled: PropTypes.bool,
+ channelListDispatcher: PropTypes.func.isRequired,
+ userFilledApplicationUserListQuery: PropTypes.shape({}),
+ onBeforeCreateChannel: PropTypes.func,
+ userId: PropTypes.string.isRequired,
+ userListQuery: PropTypes.func
+};
+AddChannel.defaultProps = {
+ disabled: false,
+ userFilledApplicationUserListQuery: {},
+ onBeforeCreateChannel: null,
+ userListQuery: null
+};
+
+function ChannelPreviewAction(_ref) {
+ var disabled = _ref.disabled,
+ onLeaveChannel = _ref.onLeaveChannel;
+ var parentRef = React.useRef(null);
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ showModal = _useState2[0],
+ setShowModal = _useState2[1];
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React__default.createElement("div", {
+ role: "button",
+ style: {
+ display: 'inline-block'
+ },
+ onKeyDown: function onKeyDown(e) {
+ e.stopPropagation();
+ },
+ tabIndex: 0,
+ onClick: function onClick(e) {
+ e.stopPropagation();
+ }
+ }, React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.IconButton, {
+ ref: parentRef,
+ onClick: toggleDropdown,
+ height: "32px",
+ width: "32px"
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.MORE,
+ fillColor: index.IconColors.PRIMARY,
+ width: "24px",
+ height: "24px"
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ parentRef: parentRef,
+ parentContainRef: parentRef,
+ closeDropdown: closeDropdown
+ }, React__default.createElement(index.MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ setShowModal(true);
+ closeDropdown();
+ }
+ }, stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE));
+ }
+ }), showModal && React__default.createElement(LeaveChannel.LeaveChannelModal, {
+ onCloseModal: function onCloseModal() {
+ return setShowModal(false);
+ },
+ onLeaveChannel: onLeaveChannel
+ }));
+}
+ChannelPreviewAction.propTypes = {
+ disabled: PropTypes.bool,
+ onLeaveChannel: PropTypes.func.isRequired
+};
+ChannelPreviewAction.defaultProps = {
+ disabled: false
+};
+
+function ChannelsPlaceholder(_ref) {
+ var type = _ref.type;
+ return React__default.createElement("div", {
+ className: "sendbird-channel-list"
+ }, React__default.createElement(index.PlaceHolder, {
+ type: type
+ }));
+}
+ChannelsPlaceholder.propTypes = {
+ type: PropTypes.string.isRequired
+};
+
+var createEventHandler = function createEventHandler(_ref) {
+ var sdk = _ref.sdk,
+ sdkChannelHandlerId = _ref.sdkChannelHandlerId,
+ channelListDispatcher = _ref.channelListDispatcher,
+ logger = _ref.logger;
+ var ChannelHandler = new sdk.ChannelHandler();
+
+ ChannelHandler.onChannelChanged = function (channel) {
+ logger.info('ChannelList: onChannelChanged', channel);
+ channelListDispatcher({
+ type: ON_CHANNEL_CHANGED,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onChannelDeleted = function (channelUrl) {
+ logger.info('ChannelList: onChannelDeleted', channelUrl);
+ channelListDispatcher({
+ type: ON_CHANNEL_DELETED,
+ payload: channelUrl
+ });
+ };
+
+ ChannelHandler.onUserJoined = function (channel) {
+ logger.info('ChannelList: onUserJoined', channel);
+
+ if (channel.lastMessage) {
+ channelListDispatcher({
+ type: ON_USER_JOINED,
+ payload: channel
+ });
+ }
+ };
+
+ ChannelHandler.onUserBanned = function (channel, user) {
+ var currentUser = sdk.currentUser;
+ logger.info('Channel | useHandleChannelEvents: onUserBanned', channel);
+
+ if (user.userId === currentUser.userId) {
+ channelListDispatcher({
+ type: ON_USER_LEFT,
+ payload: {
+ channel: channel,
+ isMe: true
+ }
+ });
+ } else {
+ channelListDispatcher({
+ type: ON_USER_LEFT,
+ payload: {
+ channel: channel,
+ isMe: false
+ }
+ });
+ }
+ };
+
+ ChannelHandler.onUserLeft = function (channel, leftUser) {
+ var currentUser = sdk.currentUser;
+ var isMe = currentUser.userId === leftUser.userId;
+ logger.info('ChannelList: onUserLeft', channel);
+ channelListDispatcher({
+ type: ON_USER_LEFT,
+ payload: {
+ channel: channel,
+ isMe: isMe
+ }
+ });
+ };
+
+ ChannelHandler.onReadStatus = function (channel) {
+ logger.info('ChannelList: onReadStatus', channel);
+ channelListDispatcher({
+ type: ON_READ_RECEIPT_UPDATED,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onDeliveryReceiptUpdated = function (channel) {
+ logger.info('ChannelList: onDeliveryReceiptUpdated', channel);
+
+ if (channel.lastMessage) {
+ channelListDispatcher({
+ type: ON_DELIVERY_RECEIPT_UPDATED,
+ payload: channel
+ });
+ }
+ };
+
+ ChannelHandler.onMessageUpdated = function (channel, message) {
+ if (channel.lastMessage.isEqual(message)) {
+ logger.info('ChannelList: onMessageUpdated', channel);
+ channelListDispatcher({
+ type: ON_LAST_MESSAGE_UPDATED,
+ payload: channel
+ });
+ }
+ };
+
+ ChannelHandler.onChannelHidden = function (channel) {
+ logger.info('ChannelList: onChannelHidden', channel);
+ channelListDispatcher({
+ type: ON_CHANNEL_ARCHIVED,
+ payload: channel.url
+ });
+ };
+
+ ChannelHandler.onChannelFrozen = function (channel) {
+ logger.info('ChannelList: onChannelFrozen', channel);
+ channelListDispatcher({
+ type: ON_CHANNEL_FROZEN,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onChannelUnfrozen = function (channel) {
+ logger.info('ChannelList: onChannelUnfrozen', channel);
+ channelListDispatcher({
+ type: ON_CHANNEL_UNFROZEN,
+ payload: channel
+ });
+ };
+
+ logger.info('ChannelList: Added channelHandler');
+ sdk.addChannelHandler(sdkChannelHandlerId, ChannelHandler);
+};
+
+var createApplicationUserListQuery = function createApplicationUserListQuery(_ref2) {
+ var sdk = _ref2.sdk,
+ _ref2$userFilledChann = _ref2.userFilledChannelListQuery,
+ userFilledChannelListQuery = _ref2$userFilledChann === void 0 ? {} : _ref2$userFilledChann;
+ var channelListQuery = sdk.GroupChannel.createMyGroupChannelListQuery();
+ channelListQuery.includeEmpty = false;
+ channelListQuery.order = 'latest_last_message'; // 'chronological', 'latest_last_message', 'channel_name_alphabetical', and 'metadata_value_alphabetical'
+
+ channelListQuery.limit = 20; // The value of pagination limit could be set up to 100.
+
+ if (userFilledChannelListQuery) {
+ Object.keys(userFilledChannelListQuery).forEach(function (key) {
+ channelListQuery[key] = userFilledChannelListQuery[key];
+ });
+ }
+
+ return channelListQuery;
+};
+/**
+ * Setup event listener
+ * create channel source query
+ * addloading screen
+ */
+
+
+function setupChannelList(_ref3) {
+ var sdk = _ref3.sdk,
+ sdkChannelHandlerId = _ref3.sdkChannelHandlerId,
+ channelListDispatcher = _ref3.channelListDispatcher,
+ setChannelSource = _ref3.setChannelSource,
+ onChannelSelect = _ref3.onChannelSelect,
+ userFilledChannelListQuery = _ref3.userFilledChannelListQuery,
+ logger = _ref3.logger,
+ sortChannelList = _ref3.sortChannelList;
+ createEventHandler({
+ sdk: sdk,
+ channelListDispatcher: channelListDispatcher,
+ sdkChannelHandlerId: sdkChannelHandlerId,
+ logger: logger
+ });
+ logger.info('ChannelList - creating query', {
+ userFilledChannelListQuery: userFilledChannelListQuery
+ });
+ var channelListQuery = createApplicationUserListQuery({
+ sdk: sdk,
+ userFilledChannelListQuery: userFilledChannelListQuery
+ });
+ logger.info('ChannelList - created query', channelListQuery);
+ setChannelSource(channelListQuery);
+ channelListDispatcher({
+ type: INIT_CHANNELS_START
+ });
+ logger.info('ChannelList - fetching channels');
+
+ if (channelListQuery.hasNext) {
+ channelListQuery.next(function (response, error) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var channelList = response;
+ var err = error;
+
+ if (swapParams) {
+ channelList = error;
+ err = response;
+ }
+
+ logger.info('ChannelList - fetched channels', channelList);
+
+ if (err) {
+ logger.error('ChannelList - couldnt fetch channels', err);
+ channelListDispatcher({
+ type: INIT_CHANNELS_FAILURE
+ });
+ return;
+ } // select first channel
+
+
+ logger.info('ChannelList - highlight channel', channelList[0]);
+ var sorted = channelList;
+
+ if (sortChannelList && typeof sortChannelList === 'function') {
+ sorted = sortChannelList(channelList);
+ logger.info('ChannelList - channel list sorted', sorted);
+ }
+
+ onChannelSelect(sorted[0]);
+ channelListDispatcher({
+ type: INIT_CHANNELS_SUCCESS,
+ payload: sorted
+ });
+
+ if (channelList && typeof channelList.forEach === 'function') {
+ logger.info('ChannelList - mark all channels as delivered');
+ channelList.forEach(function (c) {
+ return c.markAsDelivered();
+ });
+ }
+ });
+ } else {
+ logger.warning('ChannelList - there are no more channels');
+ }
+}
+
+var pubSubHandleRemover = function pubSubHandleRemover(subscriber) {
+ subscriber.forEach(function (s) {
+ try {
+ s.remove();
+ } catch (_unused) {//
+ }
+ });
+};
+var pubSubHandler = function pubSubHandler(pubSub, channelListDispatcher) {
+ var subScriber = new Map();
+ if (!pubSub) return subScriber;
+ subScriber.set(index.CREATE_CHANNEL, pubSub.subscribe(index.CREATE_CHANNEL, function (msg) {
+ var channel = msg.channel;
+ channelListDispatcher({
+ type: 'CREATE_CHANNEL',
+ payload: channel
+ });
+ }));
+ subScriber.set(index.UPDATE_USER_MESSAGE, pubSub.subscribe(index.UPDATE_USER_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+ var updatedChannel = channel;
+ updatedChannel.lastMessage = message;
+
+ if (channel) {
+ channelListDispatcher({
+ type: ON_LAST_MESSAGE_UPDATED,
+ payload: updatedChannel
+ });
+ }
+ }));
+ subScriber.set(index.LEAVE_CHANNEL, pubSub.subscribe(index.LEAVE_CHANNEL, function (msg) {
+ var channel = msg.channel;
+ channelListDispatcher({
+ type: LEAVE_CHANNEL_SUCCESS,
+ payload: channel.url
+ });
+ }));
+ subScriber.set(index.SEND_MESSAGE_START, pubSub.subscribe(index.SEND_MESSAGE_START, function (msg) {
+ var channel = msg.channel;
+ channelListDispatcher({
+ type: CHANNEL_REPLACED_TO_TOP,
+ payload: channel
+ });
+ }));
+ return subScriber;
+};
+
+var noop = function noop() {};
+
+function ChannelList(props) {
+ var _props$stores = props.stores,
+ _props$stores$sdkStor = _props$stores.sdkStore,
+ sdkStore = _props$stores$sdkStor === void 0 ? {} : _props$stores$sdkStor,
+ _props$stores$userSto = _props$stores.userStore,
+ userStore = _props$stores$userSto === void 0 ? {} : _props$stores$userSto,
+ _props$config = props.config,
+ userId = _props$config.userId,
+ isOnline = _props$config.isOnline,
+ userListQuery = _props$config.userListQuery,
+ logger = _props$config.logger,
+ pubSub = _props$config.pubSub,
+ theme = _props$config.theme,
+ userDispatcher = props.dispatchers.userDispatcher,
+ _props$queries = props.queries,
+ queries = _props$queries === void 0 ? {} : _props$queries,
+ renderChannelPreview = props.renderChannelPreview,
+ renderHeader = props.renderHeader,
+ renderUserProfile = props.renderUserProfile,
+ disableUserProfile = props.disableUserProfile,
+ allowProfileEdit = props.allowProfileEdit,
+ sortChannelList = props.sortChannelList,
+ onProfileEditSuccess = props.onProfileEditSuccess,
+ onThemeChange = props.onThemeChange,
+ onBeforeCreateChannel = props.onBeforeCreateChannel,
+ onChannelSelect = props.onChannelSelect;
+ var _props$config2 = props.config,
+ config = _props$config2 === void 0 ? {} : _props$config2; // enable if it is true atleast once(both are flase by default)
+
+ var enableEditProfile = allowProfileEdit || config.allowProfileEdit;
+ var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
+ var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
+ var _sdkStore$sdk = sdkStore.sdk,
+ sdk = _sdkStore$sdk === void 0 ? {} : _sdkStore$sdk;
+ var userFilledChannelListQuery = queries.channelListQuery;
+ var userFilledApplicationUserListQuery = queries.applicationUserListQuery;
+ var sdkError = sdkStore.error;
+
+ var _useState = React.useState({}),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ user = _useState2[0],
+ setUser = _useState2[1];
+
+ React.useEffect(function () {
+ setUser(userStore.user);
+ }, [userStore.user]);
+ var sdkIntialized = sdkStore.initialized;
+
+ var _useReducer = React.useReducer(reducer, channelListInitialState),
+ _useReducer2 = LocalizationContext._slicedToArray(_useReducer, 2),
+ channelListStore = _useReducer2[0],
+ channelListDispatcher = _useReducer2[1];
+
+ var _useState3 = React.useState({}),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ channelSource = _useState4[0],
+ setChannelSource = _useState4[1];
+
+ var _useState5 = React.useState(null),
+ _useState6 = LocalizationContext._slicedToArray(_useState5, 2),
+ sdkChannelHandlerId = _useState6[0],
+ setSdkChannelHandlerId = _useState6[1];
+
+ var _useState7 = React.useState(false),
+ _useState8 = LocalizationContext._slicedToArray(_useState7, 2),
+ showProfileEdit = _useState8[0],
+ setShowProfileEdit = _useState8[1];
+
+ var loading = channelListStore.loading,
+ currentChannel = channelListStore.currentChannel;
+ React.useEffect(function () {
+ var subscriber = pubSubHandler(pubSub, channelListDispatcher);
+ return function () {
+ pubSubHandleRemover(subscriber);
+ };
+ }, [sdkIntialized]);
+ React.useEffect(function () {
+ setSdkChannelHandlerId(LocalizationContext.uuidv4);
+
+ if (sdkIntialized) {
+ logger.info('ChannelList: Setup channelHandlers');
+ setupChannelList({
+ sdk: sdk,
+ sdkChannelHandlerId: sdkChannelHandlerId,
+ channelListDispatcher: channelListDispatcher,
+ setChannelSource: setChannelSource,
+ onChannelSelect: onChannelSelect,
+ userFilledChannelListQuery: userFilledChannelListQuery,
+ logger: logger,
+ sortChannelList: sortChannelList
+ });
+ } else {
+ logger.info('ChannelList: Removing channelHandlers'); // remove previous channelHandlers
+
+ if (sdk && sdk.removeChannelHandler) {
+ sdk.removeChannelHandler(sdkChannelHandlerId);
+ } // remove channelSource
+
+
+ setChannelSource({}); // cleanup
+
+ channelListDispatcher({
+ type: RESET_CHANNEL_LIST
+ });
+ }
+
+ return function () {
+ logger.info('ChannelList: Removing channelHandlers');
+
+ if (sdk && sdk.removeChannelHandler) {
+ sdk.removeChannelHandler(sdkChannelHandlerId);
+ }
+ };
+ }, [sdkIntialized, userFilledChannelListQuery, sortChannelList]);
+ var allChannels = channelListStore.allChannels;
+ var sortedChannels = sortChannelList && typeof sortChannelList === 'function' ? sortChannelList(allChannels) : allChannels;
+
+ if (sortedChannels.length !== allChannels.length) {
+ var warning = "ChannelList: You have removed/added extra channels on sortChannelList\n this could cause unexpected problems"; // eslint-disable-next-line no-console
+
+ console.warn(warning, {
+ before: allChannels,
+ after: sortedChannels
+ });
+ logger.warning(warning, {
+ before: allChannels,
+ after: sortedChannels
+ });
+ }
+
+ React.useEffect(function () {
+ if (!sdk || !sdk.GroupChannel) {
+ return;
+ }
+
+ sdk.GroupChannel.getChannel(currentChannel, function (groupChannel) {
+ if (groupChannel) {
+ onChannelSelect(groupChannel);
+ } else {
+ onChannelSelect(null);
+ }
+ });
+ }, [currentChannel]);
+ return React__default.createElement(index.UserProfileProvider, {
+ disableUserProfile: userDefinedDisableUserProfile,
+ renderUserProfile: userDefinedRenderProfile,
+ className: "sendbird-channel-list"
+ }, React__default.createElement("div", {
+ className: "sendbird-channel-list__header"
+ }, React__default.createElement(ChannelHeader, {
+ renderHeader: renderHeader,
+ user: user,
+ onEdit: function onEdit() {
+ if (enableEditProfile) {
+ setShowProfileEdit(true);
+ }
+ },
+ allowProfileEdit: enableEditProfile,
+ iconButton: React__default.createElement(AddChannel, {
+ disabled: !isOnline,
+ userListQuery: userListQuery,
+ sdk: sdk,
+ channelListDispatcher: channelListDispatcher,
+ userId: userId,
+ userFilledApplicationUserListQuery: userFilledApplicationUserListQuery,
+ onBeforeCreateChannel: onBeforeCreateChannel
+ })
+ })), showProfileEdit && React__default.createElement(ConnectedEditUserProfile, {
+ onThemeChange: onThemeChange,
+ user: user,
+ onCancel: function onCancel() {
+ setShowProfileEdit(false);
+ },
+ onSubmit: function onSubmit(newName, newFile) {
+ sdk.updateCurrentUserInfoWithProfileImage(newName, newFile, function (updatedUser) {
+ userDispatcher({
+ type: actionTypes.UPDATE_USER_INFO,
+ payload: updatedUser
+ });
+
+ if (onProfileEditSuccess && typeof onProfileEditSuccess === 'function') {
+ onProfileEditSuccess(updatedUser);
+ }
+ });
+ }
+ }), React__default.createElement("div", {
+ className: "sendbird-channel-list__body",
+ onScroll: function onScroll(e) {
+ var fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;
+
+ if (fetchMore && channelSource.hasNext) {
+ logger.info('ChannelList: Fetching more channels');
+ channelListDispatcher({
+ type: FETCH_CHANNELS_START
+ });
+ channelSource.next(function (response, error) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var channelList = response;
+ var err = error;
+
+ if (swapParams) {
+ channelList = error;
+ err = response;
+ }
+
+ if (err) {
+ logger.info('ChannelList: Fetching channels failed', err);
+ channelListDispatcher({
+ type: FETCH_CHANNELS_FAILURE,
+ payload: channelList
+ });
+ return;
+ }
+
+ logger.info('ChannelList: Fetching channels successful', channelList);
+ channelListDispatcher({
+ type: FETCH_CHANNELS_SUCCESS,
+ payload: channelList
+ });
+
+ if (channelList && typeof channelList.forEach === 'function') {
+ logger.info('ChannelList: Marking all channels as read');
+ channelList.forEach(function (c) {
+ return c.markAsDelivered();
+ });
+ }
+ });
+ }
+ }
+ }, sdkError && React__default.createElement(ChannelsPlaceholder, {
+ type: index.PlaceHolderTypes.WRONG
+ }), React__default.createElement("div", null, sortedChannels && sortedChannels.map(function (channel, idx) {
+ var _onLeaveChannel = function onLeaveChannel(c, cb) {
+ logger.info('ChannelList: Leaving channel', c);
+ c.leave().then(function (res) {
+ logger.info('ChannelList: Leaving channel success', res);
+
+ if (cb && typeof cb === 'function') {
+ cb(res, null);
+ }
+
+ channelListDispatcher({
+ type: LEAVE_CHANNEL_SUCCESS,
+ payload: channel.url
+ });
+ }).catch(function (err) {
+ logger.error('ChannelList: Leaving channel failed', err);
+
+ if (cb && typeof cb === 'function') {
+ cb(null, err);
+ }
+ });
+ };
+
+ var onClick = function onClick() {
+ if (!isOnline) {
+ return;
+ }
+
+ logger.info('ChannelList: Clicked on channel:', channel);
+ channelListDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: channel.url
+ });
+ };
+
+ return renderChannelPreview ? // eslint-disable-next-line
+ React__default.createElement("div", {
+ key: channel.url,
+ onClick: onClick
+ }, renderChannelPreview({
+ channel: channel,
+ onLeaveChannel: _onLeaveChannel
+ })) : React__default.createElement(ChannelPreview, {
+ key: channel.url,
+ tabIndex: idx,
+ onClick: onClick,
+ channel: channel,
+ currentUser: user,
+ theme: theme,
+ isActive: channel.url === currentChannel // todo - potential performance hit refactor
+ ,
+ ChannelAction: React__default.createElement(ChannelPreviewAction, {
+ disabled: !isOnline,
+ onLeaveChannel: function onLeaveChannel() {
+ return _onLeaveChannel(channel);
+ }
+ })
+ });
+ })), (!sdkIntialized || loading) && React__default.createElement(ChannelsPlaceholder, {
+ type: index.PlaceHolderTypes.LOADING
+ }), // placeholder
+ (!allChannels || allChannels.length === 0) && React__default.createElement(ChannelsPlaceholder, {
+ type: index.PlaceHolderTypes.NO_CHANNELS
+ })));
+}
+
+ChannelList.propTypes = {
+ stores: PropTypes.shape({
+ sdkStore: PropTypes.shape({
+ initialized: PropTypes.bool
+ }),
+ userStore: PropTypes.shape({
+ user: PropTypes.shape({})
+ })
+ }).isRequired,
+ dispatchers: PropTypes.shape({
+ userDispatcher: PropTypes.func
+ }).isRequired,
+ config: PropTypes.shape({
+ userId: PropTypes.string.isRequired,
+ userListQuery: PropTypes.func,
+ theme: PropTypes.string,
+ isOnline: PropTypes.bool,
+ logger: PropTypes.shape({
+ info: PropTypes.func,
+ error: PropTypes.func,
+ warning: PropTypes.func
+ }),
+ pubSub: PropTypes.shape({
+ subscribe: PropTypes.func,
+ publish: PropTypes.func
+ })
+ }).isRequired,
+ queries: PropTypes.shape({
+ channelListQuery: PropTypes.shape({
+ channelNameContainsFilter: PropTypes.string,
+ channelUrlsFilter: PropTypes.arrayOf(PropTypes.string),
+ customTypesFilter: PropTypes.arrayOf(PropTypes.string),
+ customTypeStartsWithFilter: PropTypes.string,
+ hiddenChannelFilter: PropTypes.string,
+ includeEmpty: PropTypes.bool,
+ limit: PropTypes.number,
+ memberStateFilter: PropTypes.string,
+ metadataOrderKeyFilter: PropTypes.string,
+ nicknameContainsFilter: PropTypes.string,
+ order: PropTypes.string,
+ publicChannelFilter: PropTypes.string,
+ superChannelFilter: PropTypes.string,
+ unreadChannelFilter: PropTypes.string,
+ userIdsExactFilter: PropTypes.arrayOf(PropTypes.string),
+ userIdsIncludeFilter: PropTypes.arrayOf(PropTypes.string),
+ userIdsIncludeFilterQueryType: PropTypes.string
+ }),
+ applicationUserListQuery: PropTypes.shape({
+ limit: PropTypes.number,
+ userIdsFilter: PropTypes.arrayOf(PropTypes.string),
+ metaDataKeyFilter: PropTypes.string,
+ metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string)
+ })
+ }),
+ onBeforeCreateChannel: PropTypes.func,
+ renderChannelPreview: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ allowProfileEdit: PropTypes.bool,
+ sortChannelList: PropTypes.func,
+ onThemeChange: PropTypes.func,
+ onProfileEditSuccess: PropTypes.func,
+ renderHeader: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ onChannelSelect: PropTypes.func
+};
+ChannelList.defaultProps = {
+ onBeforeCreateChannel: null,
+ renderChannelPreview: null,
+ renderHeader: null,
+ disableUserProfile: false,
+ renderUserProfile: null,
+ allowProfileEdit: false,
+ onThemeChange: null,
+ sortChannelList: null,
+ onProfileEditSuccess: null,
+ queries: {},
+ onChannelSelect: noop
+};
+var ChannelList$1 = LocalizationContext.withSendbirdContext(ChannelList);
+
+module.exports = ChannelList$1;
+//# sourceMappingURL=ChannelList.js.map
diff --git a/dist/cjs/ChannelList.js.map b/dist/cjs/ChannelList.js.map
new file mode 100644
index 0000000..3d68197
--- /dev/null
+++ b/dist/cjs/ChannelList.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ChannelList.js","sources":["../../../src/smart-components/ChannelList/dux/actionTypes.js","../../../src/smart-components/ChannelList/dux/initialState.js","../../../src/smart-components/ChannelList/dux/reducers.js","../../../src/ui/ChannelPreview/utils.js","../../../src/ui/ChannelPreview/index.jsx","../../../src/ui/ChannelHeader/index.jsx","../../../src/ui/EditUserProfile/index.tsx","../../../src/smart-components/ChannelList/components/AddChannel.jsx","../../../src/smart-components/ChannelList/components/ChannelPreviewAction.jsx","../../../src/smart-components/ChannelList/components/Placeholder.jsx","../../../src/smart-components/ChannelList/utils.js","../../../src/smart-components/ChannelList/index.jsx"],"sourcesContent":["export const RESET_CHANNEL_LIST = 'RESET_CHANNEL_LIST';\nexport const CREATE_CHANNEL = 'CREATE_CHANNEL';\nexport const UNLOAD_CHANNELS = 'UNLOAD_CHANNELS';\nexport const SET_CHANNEL_LOADING = 'SET_CHANNEL_LOADING';\nexport const LEAVE_CHANNEL_SUCCESS = 'LEAVE_CHANNEL_SUCCESS';\n\nexport const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\n\nexport const SHOW_CHANNEL_SETTINGS = 'SHOW_CHANNEL_SETTINGS';\nexport const HIDE_CHANNEL_SETTINGS = 'HIDE_CHANNEL_SETTINGS';\n\nexport const FETCH_CHANNELS_START = 'FETCH_CHANNELS_START';\nexport const FETCH_CHANNELS_SUCCESS = 'FETCH_CHANNELS_SUCCESS';\nexport const FETCH_CHANNELS_FAILURE = 'FETCH_CHANNELS_FAILURE';\n\nexport const INIT_CHANNELS_START = 'INIT_CHANNELS_START';\nexport const INIT_CHANNELS_SUCCESS = 'INIT_CHANNELS_SUCCESS';\nexport const INIT_CHANNELS_FAILURE = 'INIT_CHANNELS_FAILURE';\n\nexport const INVITE_MEMBERS_SUCESS = 'INVITE_MEMBERS_SUCESS';\n\nexport const ON_USER_JOINED = 'ON_USER_JOINED';\nexport const ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';\nexport const ON_LAST_MESSAGE_UPDATED = 'ON_LAST_MESSAGE_UPDATED';\nexport const ON_USER_LEFT = 'ON_USER_LEFT';\nexport const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';\nexport const ON_CHANNEL_ARCHIVED = 'ON_CHANNEL_ARCHIVED';\nexport const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';\nexport const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';\n\nexport const ON_READ_RECEIPT_UPDATED = 'ON_READ_RECEIPT_UPDATED';\nexport const ON_DELIVERY_RECEIPT_UPDATED = 'ON_DELIVERY_RECEIPT_UPDATED';\n\nexport const CHANNEL_REPLACED_TO_TOP = 'CHANNEL_REPLACED_TO_TOP';\n","export default {\n // we might not need this initialized state -> should remove\n initialized: false,\n loading: false,\n allChannels: [],\n currentChannel: null,\n showSettings: false,\n};\n","import * as actions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actions.INIT_CHANNELS_START:\n return {\n ...state,\n loading: true,\n };\n case actions.RESET_CHANNEL_LIST:\n return initialState;\n case actions.INIT_CHANNELS_SUCCESS:\n return {\n ...state,\n initialized: true,\n loading: false,\n allChannels: action.payload,\n currentChannel: (action.payload && action.payload.length && action.payload.length > 0)\n ? action.payload[0].url\n : null,\n };\n case actions.FETCH_CHANNELS_SUCCESS: {\n const currentChannels = state.allChannels.map((c) => c.url);\n const filteredChannels = action.payload.filter(\n ({ url }) => !(currentChannels.find((c) => c === url)),\n );\n return {\n ...state,\n allChannels: [\n ...state.allChannels,\n ...filteredChannels,\n ],\n };\n }\n case actions.CREATE_CHANNEL: {\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter(\n (channel) => channel.url !== action.payload.url,\n )],\n currentChannel: action.payload.url,\n };\n }\n case actions.ON_CHANNEL_ARCHIVED:\n case actions.LEAVE_CHANNEL_SUCCESS:\n case actions.ON_CHANNEL_DELETED: {\n const channelUrl = action.payload;\n const leftCurrentChannel = (state.currentChannel === channelUrl);\n const newAllChannels = state.allChannels.filter(({ url }) => url !== channelUrl);\n const currentChannel = leftCurrentChannel\n ? (() => (\n (newAllChannels.length > 0)\n ? newAllChannels[0].url\n : ''\n ))()\n : state.currentChannel;\n\n return {\n ...state,\n currentChannel,\n allChannels: newAllChannels,\n };\n }\n case actions.ON_USER_LEFT: {\n const { channel, isMe } = action.payload;\n const { url } = channel;\n if (isMe) {\n const leftCurrentChannel = (url === state.currentChannel);\n const newAllChannels = state.allChannels.filter((c) => (c.url !== url));\n const currentChannel = leftCurrentChannel\n ? (() => (\n (newAllChannels.length > 0)\n ? newAllChannels[0].url\n : ''\n ))()\n : state.currentChannel;\n\n return {\n ...state,\n currentChannel,\n allChannels: newAllChannels,\n };\n }\n // other user left\n const newAllChannels = state.allChannels.map((c) => ((c.url === url) ? channel : c));\n return {\n ...state,\n allChannels: newAllChannels,\n };\n }\n case actions.ON_USER_JOINED:\n case actions.ON_CHANNEL_CHANGED:\n case actions.ON_READ_RECEIPT_UPDATED:\n case actions.ON_DELIVERY_RECEIPT_UPDATED: {\n const { allChannels = [] } = state;\n const { unreadMessageCount } = action.payload;\n const channel = action.payload;\n if (!channel.lastMessage) {\n return state;\n }\n // if its only an unread message count change, dont push to top\n if (unreadMessageCount === 0) {\n const currentChannel = allChannels.find(({ url }) => url === channel.url);\n const currentUnReadCount = currentChannel && currentChannel.unreadMessageCount;\n if (currentUnReadCount === 0) {\n return {\n ...state,\n allChannels: allChannels.map((c) => {\n if (c.url === channel.url) {\n return channel;\n }\n return c;\n }),\n };\n }\n }\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter(({ url }) => url !== action.payload.url),\n ],\n };\n }\n case actions.SET_CURRENT_CHANNEL:\n return {\n ...state,\n currentChannel: action.payload,\n };\n case actions.SHOW_CHANNEL_SETTINGS:\n return {\n ...state,\n showSettings: true,\n };\n case actions.HIDE_CHANNEL_SETTINGS:\n return {\n ...state,\n showSettings: false,\n };\n case actions.ON_LAST_MESSAGE_UPDATED:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n return action.payload;\n }\n return channel;\n }),\n };\n case actions.ON_CHANNEL_FROZEN:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n // eslint-disable-next-line no-param-reassign\n channel.isFrozen = true;\n return channel;\n }\n return channel;\n }),\n };\n case actions.ON_CHANNEL_UNFROZEN:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n // eslint-disable-next-line no-param-reassign\n channel.isFrozen = false;\n return channel;\n }\n return channel;\n }),\n };\n case actions.CHANNEL_REPLACED_TO_TOP:\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter((channel) => channel.url !== action.payload.url),\n ],\n };\n default:\n return state;\n }\n}\n","import isToday from 'date-fns/isToday';\nimport format from 'date-fns/format';\nimport isYesterday from 'date-fns/isYesterday';\n\nimport { truncate } from '../FileMessage/utils';\nimport { LabelStringSet } from '../Label';\n\nexport const getChannelTitle = (channel = {}, currentUserId, stringSet = LabelStringSet) => {\n if (!channel || (!channel.name && !channel.members)) {\n return stringSet.NO_TITLE;\n }\n if (channel.name && channel.name !== 'Group Channel') {\n return channel.name;\n }\n if (channel.members.length === 1) {\n return stringSet.NO_MEMBERS;\n }\n\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => (nickname || stringSet.NO_NAME))\n .join(', ');\n};\n\nexport const getLastMessageCreatedAt = (channel) => {\n if (!channel || !channel.lastMessage) {\n return '';\n }\n const date = channel.lastMessage.createdAt;\n if (isToday(date)) {\n return format(date, 'p');\n }\n\n if (isYesterday(date)) {\n return 'Yesterday';\n }\n\n return format(date, 'MMM dd');\n};\n\nexport const getTotalMembers = (channel) => (\n channel && channel.memberCount\n ? channel.memberCount\n : 0\n);\n\nconst getPrettyLastMessage = (message = {}) => {\n const MAXLEN = 30;\n const { messageType, name } = message;\n if (messageType === 'file') {\n return truncate(name, MAXLEN);\n }\n return message.message;\n};\n\nexport const getLastMessage = (channel) => (\n channel && channel.lastMessage\n ? getPrettyLastMessage(channel.lastMessage)\n : ''\n);\n\nexport const getChannelUnreadMessageCount = (channel) => (\n (channel && channel.unreadMessageCount)\n ? channel.unreadMessageCount\n : 0\n);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport ChannelAvatar from '../ChannelAvatar/index';\nimport Badge from '../Badge';\nimport Icon, { IconTypes } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport * as utils from './utils';\n\nexport default function ChannelPreview({\n channel,\n isActive,\n ChannelAction,\n theme,\n onClick,\n tabIndex,\n currentUser,\n}) {\n const {\n userId,\n } = currentUser;\n const { isBroadcast, isFrozen } = channel;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n \n
\n
\n
\n
\n {\n isBroadcast\n && (\n
\n \n
\n )\n }\n
\n {utils.getChannelTitle(channel, userId, stringSet)}\n \n
\n {utils.getTotalMembers(channel)}\n \n {\n isFrozen\n && (\n
\n \n
\n )\n }\n
\n
\n {utils.getLastMessageCreatedAt(channel)}\n \n
\n\n
\n
\n {utils.getLastMessage(channel)}\n \n
\n {\n utils.getChannelUnreadMessageCount(channel)\n ? \n : null\n }\n
\n
\n
\n
\n {ChannelAction}\n
\n
\n );\n}\n\nChannelPreview.propTypes = {\n isActive: PropTypes.bool,\n theme: PropTypes.string,\n channel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n coverUrl: PropTypes.string,\n isBroadcast: PropTypes.bool,\n isFrozen: PropTypes.bool,\n }),\n ChannelAction: PropTypes.element.isRequired,\n onClick: PropTypes.func,\n tabIndex: PropTypes.number,\n currentUser: PropTypes.shape({\n userId: PropTypes.string,\n }),\n};\n\nChannelPreview.defaultProps = {\n channel: {},\n isActive: false,\n theme: 'light',\n onClick: () => { },\n tabIndex: 0,\n currentUser: {},\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport IconButton from '../IconButton';\n\nimport './index.scss';\nimport Avatar from '../Avatar/index';\n\nexport default function ChannelHeader({\n user,\n iconButton,\n onEdit,\n renderHeader,\n allowProfileEdit,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n {\n renderHeader\n ? renderHeader()\n : (\n
\n
\n
\n \n {user.nickname || stringSet.NO_NAME}\n \n \n {user.userId}\n \n
\n
\n )\n }\n
\n {iconButton}\n
\n
\n );\n}\n\nChannelHeader.propTypes = {\n user: PropTypes.shape({\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n userId: PropTypes.string,\n }),\n renderHeader: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n onEdit: PropTypes.func.isRequired,\n iconButton: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.instanceOf(IconButton),\n ]),\n};\n\nChannelHeader.defaultProps = {\n user: {},\n renderHeader: null,\n allowProfileEdit: false,\n iconButton: null,\n};\n","import React, {\n ReactElement,\n useRef,\n useState,\n useContext,\n} from 'react';\nimport './index.scss';\n\nimport Modal from '../Modal';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport Input, { InputLabel } from '../Input';\nimport Avatar from '../Avatar';\nimport Icon, { IconTypes } from '../Icon';\nimport { Type as ButtonType } from '../Button/type';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport TextButton from '../TextButton';\nimport { SendbirdTypes } from '../../types';\nimport { noop } from '../../utils/utils';\n\ninterface Props {\n user: SendbirdTypes['User'];\n onCancel(): void;\n onSubmit(newFile: File, newNickname: string): void;\n onThemeChange?(theme: string): void;\n theme?: string;\n changeTheme?(theme: string): void;\n}\n\nexport function EditUserProfile({\n user,\n onCancel,\n onSubmit,\n onThemeChange = null,\n theme = 'light',\n changeTheme = noop,\n}: Props): ReactElement {\n const hiddenInputRef = useRef(null);\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n\n return (\n {\n if (user.nickname !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(inputRef.current.value, newFile);\n onCancel();\n }}\n type={ButtonType.PRIMARY}\n >\n \n \n );\n}\n\nconst mapStoreToProps = (store) => {\n return {\n theme: store.config.theme,\n changeTheme: store.config.setCurrenttheme,\n };\n};\n\ninterface ConnectedEditUserProfileProps {\n user: SendbirdTypes['User'];\n onCancel(): void;\n onSubmit(newFile: File, newNickname: string): void;\n onThemeChange?(theme: string): void;\n}\n\nconst ConnectedEditUserProfile: (\n props: ConnectedEditUserProfileProps\n) => React.Component = withSendbirdContext(EditUserProfile, mapStoreToProps);\n\nexport default ConnectedEditUserProfile;\n","import './add-channel.scss';\n\nimport React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport IconButton from '../../../ui/IconButton';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport InviteMembers from '../../InviteMembers';\n\nimport {\n createChannel,\n createDefaultUserListQuery,\n isBroadcastChannelEnabled,\n isSuperGroupChannelEnabled,\n} from './utils';\nimport { CREATE_CHANNEL } from '../dux/actionTypes';\nimport Modal from '../../../ui/Modal';\n\nexport default function AddChannel({\n sdk,\n disabled,\n channelListDispatcher,\n onBeforeCreateChannel,\n userId,\n userFilledApplicationUserListQuery,\n userListQuery,\n}) {\n const [showModal, setShowModal] = useState(false);\n const [step, setStep] = useState(0);\n const [type, setType] = useState('group');\n const { stringSet } = useContext(LocalizationContext);\n\n if (!sdk || !sdk.createApplicationUserListQuery) {\n return null;\n }\n\n const isBroadcastAvailable = isBroadcastChannelEnabled(sdk);\n const isSupergroupAvailable = isSuperGroupChannelEnabled(sdk);\n\n return (\n <>\n {\n setShowModal(true);\n }}\n disabled={disabled}\n >\n \n \n {\n showModal && step === 0 && (\n { setShowModal(false); }}\n onSubmit={() => {}}\n >\n \n
{\n setType('group');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('group');\n setStep(1);\n }}\n >\n \n \n Group\n \n
\n {\n isSupergroupAvailable && (\n
{\n setType('supergroup');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('supergroup');\n setStep(1);\n }}\n >\n \n \n Super group\n \n
\n )\n }\n {\n isBroadcastAvailable && (\n
{\n setType('broadcast');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('broadcast');\n setStep(1);\n }}\n >\n \n \n Broadcast\n \n
\n )\n }\n
\n \n )\n }\n {\n showModal && step === 1 && (\n {\n setStep(0);\n setShowModal(false);\n }}\n idsToFilter={[userId]}\n userQueryCreator={() => ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )}\n onSubmit={(selectedUsers) => createChannel(\n sdk,\n selectedUsers,\n onBeforeCreateChannel,\n userId,\n type,\n ).then((channel) => {\n // maybe - do this in event listener\n channelListDispatcher({\n type: CREATE_CHANNEL,\n payload: channel,\n });\n })}\n />\n )\n }\n >\n );\n}\n\nAddChannel.propTypes = {\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n createApplicationUserListQuery: PropTypes.func,\n }).isRequired,\n disabled: PropTypes.bool,\n channelListDispatcher: PropTypes.func.isRequired,\n userFilledApplicationUserListQuery: PropTypes.shape({}),\n onBeforeCreateChannel: PropTypes.func,\n userId: PropTypes.string.isRequired,\n userListQuery: PropTypes.func,\n};\n\nAddChannel.defaultProps = {\n disabled: false,\n userFilledApplicationUserListQuery: {},\n onBeforeCreateChannel: null,\n userListQuery: null,\n};\n","import React, {\n useState,\n useRef,\n useContext,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../ui/ContextMenu';\nimport IconButton from '../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport LeaveChannelModal from '../../ChannelSettings/components/LeaveChannel';\n\nexport default function ChannelPreviewAction({ disabled, onLeaveChannel }) {\n const parentRef = useRef(null);\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n { e.stopPropagation(); }}\n tabIndex={0}\n onClick={(e) => { e.stopPropagation(); }}\n >\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if (disabled) { return; }\n setShowModal(true);\n closeDropdown();\n }}\n >\n {stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE}\n \n \n )}\n />\n {\n showModal && (\n setShowModal(false)}\n onLeaveChannel={onLeaveChannel}\n />\n )\n }\n
\n );\n}\n\nChannelPreviewAction.propTypes = {\n disabled: PropTypes.bool,\n onLeaveChannel: PropTypes.func.isRequired,\n};\n\nChannelPreviewAction.defaultProps = {\n disabled: false,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Placeholder from '../../../ui/PlaceHolder';\n\nexport default function ChannelsPlaceholder({\n type,\n}) {\n return (\n \n );\n}\n\nChannelsPlaceholder.propTypes = {\n type: PropTypes.string.isRequired,\n};\n","import * as channelActions from './dux/actionTypes';\nimport * as topics from '../../lib/pubSub/topics';\n\nconst createEventHandler = ({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n logger,\n}) => {\n const ChannelHandler = new sdk.ChannelHandler();\n\n ChannelHandler.onChannelChanged = (channel) => {\n logger.info('ChannelList: onChannelChanged', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_CHANGED,\n payload: channel,\n });\n };\n ChannelHandler.onChannelDeleted = (channelUrl) => {\n logger.info('ChannelList: onChannelDeleted', channelUrl);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_DELETED,\n payload: channelUrl,\n });\n };\n ChannelHandler.onUserJoined = (channel) => {\n logger.info('ChannelList: onUserJoined', channel);\n if (channel.lastMessage) {\n channelListDispatcher({\n type: channelActions.ON_USER_JOINED,\n payload: channel,\n });\n }\n };\n ChannelHandler.onUserBanned = (channel, user) => {\n const { currentUser } = sdk;\n logger.info('Channel | useHandleChannelEvents: onUserBanned', channel);\n if (user.userId === currentUser.userId) {\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe: true,\n },\n });\n } else {\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe: false,\n },\n });\n }\n };\n ChannelHandler.onUserLeft = (channel, leftUser) => {\n const { currentUser } = sdk;\n const isMe = (currentUser.userId === leftUser.userId);\n logger.info('ChannelList: onUserLeft', channel);\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe,\n },\n });\n };\n\n ChannelHandler.onReadStatus = (channel) => {\n logger.info('ChannelList: onReadStatus', channel);\n channelListDispatcher({\n type: channelActions.ON_READ_RECEIPT_UPDATED,\n payload: channel,\n });\n };\n\n ChannelHandler.onDeliveryReceiptUpdated = (channel) => {\n logger.info('ChannelList: onDeliveryReceiptUpdated', channel);\n if (channel.lastMessage) {\n channelListDispatcher({\n type: channelActions.ON_DELIVERY_RECEIPT_UPDATED,\n payload: channel,\n });\n }\n };\n\n ChannelHandler.onMessageUpdated = (channel, message) => {\n if (channel.lastMessage.isEqual(message)) {\n logger.info('ChannelList: onMessageUpdated', channel);\n channelListDispatcher({\n type: channelActions.ON_LAST_MESSAGE_UPDATED,\n payload: channel,\n });\n }\n };\n\n ChannelHandler.onChannelHidden = (channel) => {\n logger.info('ChannelList: onChannelHidden', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_ARCHIVED,\n payload: channel.url,\n });\n };\n\n ChannelHandler.onChannelFrozen = (channel) => {\n logger.info('ChannelList: onChannelFrozen', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_FROZEN,\n payload: channel,\n });\n };\n\n ChannelHandler.onChannelUnfrozen = (channel) => {\n logger.info('ChannelList: onChannelUnfrozen', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_UNFROZEN,\n payload: channel,\n });\n };\n\n logger.info('ChannelList: Added channelHandler');\n sdk.addChannelHandler(sdkChannelHandlerId, ChannelHandler);\n};\n\nconst createApplicationUserListQuery = ({ sdk, userFilledChannelListQuery = {} }) => {\n const channelListQuery = sdk.GroupChannel.createMyGroupChannelListQuery();\n channelListQuery.includeEmpty = false;\n channelListQuery.order = 'latest_last_message'; // 'chronological', 'latest_last_message', 'channel_name_alphabetical', and 'metadata_value_alphabetical'\n channelListQuery.limit = 20; // The value of pagination limit could be set up to 100.\n\n if (userFilledChannelListQuery) {\n Object.keys(userFilledChannelListQuery).forEach((key) => {\n channelListQuery[key] = userFilledChannelListQuery[key];\n });\n }\n\n return channelListQuery;\n};\n\n/**\n * Setup event listener\n * create channel source query\n * addloading screen\n */\nfunction setupChannelList({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n setChannelSource,\n onChannelSelect,\n userFilledChannelListQuery,\n logger,\n sortChannelList,\n}) {\n createEventHandler({\n sdk,\n channelListDispatcher,\n sdkChannelHandlerId,\n logger,\n });\n\n logger.info('ChannelList - creating query', { userFilledChannelListQuery });\n const channelListQuery = createApplicationUserListQuery({ sdk, userFilledChannelListQuery });\n logger.info('ChannelList - created query', channelListQuery);\n\n setChannelSource(channelListQuery);\n\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_START,\n });\n\n logger.info('ChannelList - fetching channels');\n if (channelListQuery.hasNext) {\n channelListQuery.next((response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let channelList = response;\n let err = error;\n if (swapParams) {\n channelList = error;\n err = response;\n }\n logger.info('ChannelList - fetched channels', channelList);\n if (err) {\n logger.error('ChannelList - couldnt fetch channels', err);\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_FAILURE,\n });\n return;\n }\n // select first channel\n logger.info('ChannelList - highlight channel', channelList[0]);\n let sorted = channelList;\n if (sortChannelList && typeof sortChannelList === 'function') {\n sorted = sortChannelList(channelList);\n logger.info('ChannelList - channel list sorted', sorted);\n }\n onChannelSelect(sorted[0]);\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_SUCCESS,\n payload: sorted,\n });\n if (channelList && typeof channelList.forEach === 'function') {\n logger.info('ChannelList - mark all channels as delivered');\n channelList.forEach((c) => c.markAsDelivered());\n }\n });\n } else {\n logger.warning('ChannelList - there are no more channels');\n }\n}\n\nexport const pubSubHandleRemover = (subscriber) => {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n};\n\nexport const pubSubHandler = (pubSub, channelListDispatcher) => {\n const subScriber = new Map();\n if (!pubSub) return subScriber;\n subScriber.set(topics.CREATE_CHANNEL, pubSub.subscribe(topics.CREATE_CHANNEL, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: 'CREATE_CHANNEL',\n payload: channel,\n });\n }));\n\n subScriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n const updatedChannel = channel;\n updatedChannel.lastMessage = message;\n if (channel) {\n channelListDispatcher({\n type: channelActions.ON_LAST_MESSAGE_UPDATED,\n payload: updatedChannel,\n });\n }\n }));\n\n subScriber.set(topics.LEAVE_CHANNEL, pubSub.subscribe(topics.LEAVE_CHANNEL, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: channelActions.LEAVE_CHANNEL_SUCCESS,\n payload: channel.url,\n });\n }));\n\n subScriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: channelActions.CHANNEL_REPLACED_TO_TOP,\n payload: channel,\n });\n }));\n\n return subScriber;\n};\n\nexport default setupChannelList;\n","import React, { useEffect, useState, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport * as userActions from '../../lib/dux/user/actionTypes';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\n\nimport * as channelListActions from './dux/actionTypes';\nimport channelListInitialState from './dux/initialState';\nimport channelListReducers from './dux/reducers';\n\nimport ChannelPreview from '../../ui/ChannelPreview';\nimport ChannelHeader from '../../ui/ChannelHeader';\nimport EditUserProfile from '../../ui/EditUserProfile';\nimport PlaceholderTypes from '../../ui/PlaceHolder/type';\n\nimport AddChannel from './components/AddChannel';\nimport ChannelPreviewAction from './components/ChannelPreviewAction';\nimport PlaceHolder from './components/Placeholder';\n\nimport setupChannelList, {\n pubSubHandler,\n pubSubHandleRemover,\n} from './utils';\nimport { uuidv4 } from '../../utils/uuid';\n\nimport './index.scss';\n\nconst noop = () => { };\n\nfunction ChannelList(props) {\n const {\n stores: { sdkStore = {}, userStore = {} },\n config: {\n userId,\n isOnline,\n userListQuery,\n logger,\n pubSub,\n theme,\n },\n dispatchers: {\n userDispatcher,\n },\n queries = {},\n renderChannelPreview,\n renderHeader,\n renderUserProfile,\n disableUserProfile,\n allowProfileEdit,\n sortChannelList,\n onProfileEditSuccess,\n onThemeChange,\n onBeforeCreateChannel,\n onChannelSelect,\n } = props;\n const { config = {} } = props;\n // enable if it is true atleast once(both are flase by default)\n const enableEditProfile = allowProfileEdit || config.allowProfileEdit;\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n const { sdk = {} } = sdkStore;\n const userFilledChannelListQuery = queries.channelListQuery;\n const userFilledApplicationUserListQuery = queries.applicationUserListQuery;\n\n const sdkError = sdkStore.error;\n\n const [user, setUser] = useState({});\n\n useEffect(() => {\n setUser(userStore.user);\n }, [userStore.user]);\n\n\n const sdkIntialized = sdkStore.initialized;\n const [channelListStore, channelListDispatcher] = useReducer(\n channelListReducers,\n channelListInitialState,\n );\n const [channelSource, setChannelSource] = useState({});\n const [sdkChannelHandlerId, setSdkChannelHandlerId] = useState(null);\n const [showProfileEdit, setShowProfileEdit] = useState(false);\n\n const { loading, currentChannel } = channelListStore;\n\n useEffect(() => {\n const subscriber = pubSubHandler(pubSub, channelListDispatcher);\n return () => {\n pubSubHandleRemover(subscriber);\n };\n }, [sdkIntialized]);\n\n useEffect(() => {\n setSdkChannelHandlerId(uuidv4);\n if (sdkIntialized) {\n logger.info('ChannelList: Setup channelHandlers');\n setupChannelList({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n setChannelSource,\n onChannelSelect,\n userFilledChannelListQuery,\n logger,\n sortChannelList,\n });\n } else {\n logger.info('ChannelList: Removing channelHandlers');\n // remove previous channelHandlers\n if (sdk && sdk.removeChannelHandler) {\n sdk.removeChannelHandler(sdkChannelHandlerId);\n }\n // remove channelSource\n setChannelSource({});\n // cleanup\n channelListDispatcher({\n type: channelListActions.RESET_CHANNEL_LIST,\n });\n }\n return () => {\n logger.info('ChannelList: Removing channelHandlers');\n if (sdk && sdk.removeChannelHandler) {\n sdk.removeChannelHandler(sdkChannelHandlerId);\n }\n };\n }, [sdkIntialized, userFilledChannelListQuery, sortChannelList]);\n\n const { allChannels } = channelListStore;\n const sortedChannels = (sortChannelList && typeof sortChannelList === 'function')\n ? sortChannelList(allChannels)\n : allChannels;\n\n if (sortedChannels.length !== allChannels.length) {\n const warning = `ChannelList: You have removed/added extra channels on sortChannelList\n this could cause unexpected problems`;\n // eslint-disable-next-line no-console\n console.warn(warning, { before: allChannels, after: sortedChannels });\n logger.warning(warning, { before: allChannels, after: sortedChannels });\n }\n\n useEffect(() => {\n if (!sdk || !sdk.GroupChannel) { return; }\n sdk.GroupChannel.getChannel(currentChannel, (groupChannel) => {\n if (groupChannel) {\n onChannelSelect(groupChannel);\n } else {\n onChannelSelect(null);\n }\n });\n }, [currentChannel]);\n\n return (\n \n \n
{\n if (enableEditProfile) {\n setShowProfileEdit(true);\n }\n }}\n allowProfileEdit={enableEditProfile}\n iconButton={(\n \n )}\n />\n \n {\n showProfileEdit && (\n { setShowProfileEdit(false); }}\n onSubmit={(newName, newFile) => {\n sdk.updateCurrentUserInfoWithProfileImage(newName, newFile, (updatedUser) => {\n userDispatcher({ type: userActions.UPDATE_USER_INFO, payload: updatedUser });\n if (onProfileEditSuccess && typeof onProfileEditSuccess === 'function') {\n onProfileEditSuccess(updatedUser);\n }\n });\n }}\n />\n )\n }\n {\n const fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;\n if (fetchMore && channelSource.hasNext) {\n logger.info('ChannelList: Fetching more channels');\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_START,\n });\n channelSource.next((response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let channelList = response;\n let err = error;\n if (swapParams) {\n channelList = error;\n err = response;\n }\n if (err) {\n logger.info('ChannelList: Fetching channels failed', err);\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_FAILURE,\n payload: channelList,\n });\n return;\n }\n logger.info('ChannelList: Fetching channels successful', channelList);\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_SUCCESS,\n payload: channelList,\n });\n if (channelList && typeof channelList.forEach === 'function') {\n logger.info('ChannelList: Marking all channels as read');\n channelList.forEach((c) => c.markAsDelivered());\n }\n });\n }\n }}\n >\n {\n (sdkError) && (\n
\n )\n }\n {/*\n To do: Implement windowing\n Implement windowing if you are dealing with large number of messages/channels\n https://github.com/bvaughn/react-window -> recommendation\n We hesitate to bring one more dependency to our library,\n we are planning to implement it inside the library\n */}\n
\n {\n sortedChannels && sortedChannels.map((channel, idx) => {\n const onLeaveChannel = (c, cb) => {\n logger.info('ChannelList: Leaving channel', c);\n c.leave()\n .then((res) => {\n logger.info('ChannelList: Leaving channel success', res);\n if (cb && typeof cb === 'function') {\n cb(res, null);\n }\n channelListDispatcher({\n type: channelListActions.LEAVE_CHANNEL_SUCCESS,\n payload: channel.url,\n });\n })\n .catch((err) => {\n logger.error('ChannelList: Leaving channel failed', err);\n if (cb && typeof cb === 'function') {\n cb(null, err);\n }\n });\n };\n\n const onClick = () => {\n if (!isOnline) { return; }\n logger.info('ChannelList: Clicked on channel:', channel);\n channelListDispatcher({\n type: channelListActions.SET_CURRENT_CHANNEL,\n payload: channel.url,\n });\n };\n\n return (\n (renderChannelPreview)\n ? (\n // eslint-disable-next-line\n
\n {renderChannelPreview({ channel, onLeaveChannel })}\n
\n )\n : (\n
onLeaveChannel(channel)}\n />\n )}\n />\n )\n );\n })\n }\n \n {\n (!sdkIntialized || loading) && (\n
\n )\n }\n {\n // placeholder\n (!allChannels || allChannels.length === 0) && (\n
\n )\n }\n
\n \n );\n}\n\nChannelList.propTypes = {\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n initialized: PropTypes.bool,\n }),\n userStore: PropTypes.shape({\n user: PropTypes.shape({}),\n }),\n }).isRequired,\n dispatchers: PropTypes.shape({\n userDispatcher: PropTypes.func,\n }).isRequired,\n config: PropTypes.shape({\n userId: PropTypes.string.isRequired,\n userListQuery: PropTypes.func,\n theme: PropTypes.string,\n isOnline: PropTypes.bool,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }).isRequired,\n queries: PropTypes.shape({\n channelListQuery: PropTypes.shape({\n channelNameContainsFilter: PropTypes.string,\n channelUrlsFilter: PropTypes.arrayOf(PropTypes.string),\n customTypesFilter: PropTypes.arrayOf(PropTypes.string),\n customTypeStartsWithFilter: PropTypes.string,\n hiddenChannelFilter: PropTypes.string,\n includeEmpty: PropTypes.bool,\n limit: PropTypes.number,\n memberStateFilter: PropTypes.string,\n metadataOrderKeyFilter: PropTypes.string,\n nicknameContainsFilter: PropTypes.string,\n order: PropTypes.string,\n publicChannelFilter: PropTypes.string,\n superChannelFilter: PropTypes.string,\n unreadChannelFilter: PropTypes.string,\n userIdsExactFilter: PropTypes.arrayOf(PropTypes.string),\n userIdsIncludeFilter: PropTypes.arrayOf(PropTypes.string),\n userIdsIncludeFilterQueryType: PropTypes.string,\n }),\n applicationUserListQuery: PropTypes.shape({\n limit: PropTypes.number,\n userIdsFilter: PropTypes.arrayOf(PropTypes.string),\n metaDataKeyFilter: PropTypes.string,\n metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n onBeforeCreateChannel: PropTypes.func,\n renderChannelPreview: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n sortChannelList: PropTypes.func,\n onThemeChange: PropTypes.func,\n onProfileEditSuccess: PropTypes.func,\n renderHeader: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n onChannelSelect: PropTypes.func,\n};\n\nChannelList.defaultProps = {\n onBeforeCreateChannel: null,\n renderChannelPreview: null,\n renderHeader: null,\n disableUserProfile: false,\n renderUserProfile: null,\n allowProfileEdit: false,\n onThemeChange: null,\n sortChannelList: null,\n onProfileEditSuccess: null,\n queries: {},\n onChannelSelect: noop,\n};\n\nexport default withSendbirdContext(ChannelList);\n"],"names":["RESET_CHANNEL_LIST","CREATE_CHANNEL","LEAVE_CHANNEL_SUCCESS","SET_CURRENT_CHANNEL","SHOW_CHANNEL_SETTINGS","HIDE_CHANNEL_SETTINGS","FETCH_CHANNELS_START","FETCH_CHANNELS_SUCCESS","FETCH_CHANNELS_FAILURE","INIT_CHANNELS_START","INIT_CHANNELS_SUCCESS","INIT_CHANNELS_FAILURE","ON_USER_JOINED","ON_CHANNEL_DELETED","ON_LAST_MESSAGE_UPDATED","ON_USER_LEFT","ON_CHANNEL_CHANGED","ON_CHANNEL_ARCHIVED","ON_CHANNEL_FROZEN","ON_CHANNEL_UNFROZEN","ON_READ_RECEIPT_UPDATED","ON_DELIVERY_RECEIPT_UPDATED","CHANNEL_REPLACED_TO_TOP","initialized","loading","allChannels","currentChannel","showSettings","reducer","state","action","type","actions","initialState","payload","length","url","currentChannels","map","c","filteredChannels","filter","find","channel","channelUrl","leftCurrentChannel","newAllChannels","isMe","unreadMessageCount","lastMessage","currentUnReadCount","isFrozen","getChannelTitle","currentUserId","stringSet","LabelStringSet","name","members","NO_TITLE","NO_MEMBERS","userId","nickname","NO_NAME","join","getLastMessageCreatedAt","date","createdAt","isToday","format","isYesterday","getTotalMembers","memberCount","getPrettyLastMessage","message","MAXLEN","messageType","truncate","getLastMessage","getChannelUnreadMessageCount","ChannelPreview","isActive","ChannelAction","theme","onClick","tabIndex","currentUser","isBroadcast","useContext","LocalizationContext","React","ChannelAvatar","Icon","IconTypes","BROADCAST_DARK","BROADCAST_LIGHT","Label","LabelTypography","SUBTITLE_2","LabelColors","ONBACKGROUND_1","utils","CAPTION_2","ONBACKGROUND_2","FROZEN_DARK","FROZEN_LIGHT","CAPTION_3","BODY_2","ONBACKGROUND_3","Badge","propTypes","PropTypes","bool","string","shape","arrayOf","coverUrl","element","isRequired","func","number","defaultProps","ChannelHeader","user","iconButton","onEdit","renderHeader","allowProfileEdit","Avatar","profileUrl","oneOfType","instanceOf","IconButton","EditUserProfile","_a","onCancel","onSubmit","_b","onThemeChange","_c","_d","changeTheme","noop","hiddenInputRef","useRef","inputRef","formRef","_e","useState","currentImg","setCurrentImg","_f","newFile","setNewFile","Modal","EDIT_PROFILE__TITLE","BUTTON__SAVE","current","value","reportValidity","ButtonType","PRIMARY","e","preventDefault","InputLabel","EDIT_PROFILE__IMAGE_LABEL","display","URL","createObjectURL","target","files","TextButton","click","BUTTON_1","EDIT_PROFILE__IMAGE_UPLOAD","EDIT_PROFILE__NICKNAME_LABEL","Input","EDIT_PROFILE__NICKNAME_PLACEHOLDER","EDIT_PROFILE__USERID_LABEL","EDIT_PROFILE__THEME_LABEL","TOGGLE_ON","TOGGLE_OFF","mapStoreToProps","store","config","setCurrenttheme","ConnectedEditUserProfile","withSendbirdContext","AddChannel","sdk","disabled","channelListDispatcher","onBeforeCreateChannel","userFilledApplicationUserListQuery","userListQuery","showModal","setShowModal","step","setStep","setType","createApplicationUserListQuery","isBroadcastAvailable","isBroadcastChannelEnabled","isSupergroupAvailable","isSuperGroupChannelEnabled","CREATE","IconColors","CHAT","SUBTITLE_1","SUPER_GROUP","BROADCAST","InviteMembers","getErrorFirstCallback","MODAL__CREATE_CHANNEL__TITLE","BUTTON__CREATE","createDefaultUserListQuery","selectedUsers","createChannel","then","ChannelPreviewAction","onLeaveChannel","parentRef","stopPropagation","ContextMenu","toggleDropdown","MORE","closeDropdown","MenuItems","MenuItem","CHANNEL_SETTING__LEAVE_CHANNEL__TITLE","LeaveChannelModal","ChannelsPlaceholder","Placeholder","createEventHandler","sdkChannelHandlerId","logger","ChannelHandler","onChannelChanged","info","channelActions","onChannelDeleted","onUserJoined","onUserBanned","onUserLeft","leftUser","onReadStatus","onDeliveryReceiptUpdated","onMessageUpdated","isEqual","onChannelHidden","onChannelFrozen","onChannelUnfrozen","addChannelHandler","userFilledChannelListQuery","channelListQuery","GroupChannel","createMyGroupChannelListQuery","includeEmpty","order","limit","Object","keys","forEach","key","setupChannelList","setChannelSource","onChannelSelect","sortChannelList","hasNext","next","response","error","swapParams","channelList","err","sorted","markAsDelivered","warning","pubSubHandleRemover","subscriber","s","remove","pubSubHandler","pubSub","subScriber","Map","set","topics","subscribe","msg","updatedChannel","ChannelList","props","stores","sdkStore","userStore","isOnline","userDispatcher","dispatchers","queries","renderChannelPreview","renderUserProfile","disableUserProfile","onProfileEditSuccess","enableEditProfile","userDefinedDisableUserProfile","userDefinedRenderProfile","applicationUserListQuery","sdkError","setUser","useEffect","sdkIntialized","useReducer","channelListReducers","channelListInitialState","channelListStore","channelSource","setSdkChannelHandlerId","showProfileEdit","setShowProfileEdit","uuidv4","removeChannelHandler","channelListActions","sortedChannels","console","warn","before","after","getChannel","groupChannel","UserProfileProvider","newName","updateCurrentUserInfoWithProfileImage","updatedUser","userActions","fetchMore","clientHeight","scrollTop","scrollHeight","PlaceHolder","PlaceholderTypes","WRONG","idx","cb","leave","res","catch","LOADING","NO_CHANNELS","publish","channelNameContainsFilter","channelUrlsFilter","customTypesFilter","customTypeStartsWithFilter","hiddenChannelFilter","memberStateFilter","metadataOrderKeyFilter","nicknameContainsFilter","publicChannelFilter","superChannelFilter","unreadChannelFilter","userIdsExactFilter","userIdsIncludeFilter","userIdsIncludeFilterQueryType","userIdsFilter","metaDataKeyFilter","metaDataValuesFilter"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/cjs/ChannelSettings.js b/dist/cjs/ChannelSettings.js
new file mode 100644
index 0000000..d40ac86
--- /dev/null
+++ b/dist/cjs/ChannelSettings.js
@@ -0,0 +1,2069 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+var PropTypes = _interopDefault(require('prop-types'));
+var index$1 = require('./index-49d966e1.js');
+var utils = require('./utils-6aedec02.js');
+var index$1$1 = require('./index-994f886d.js');
+var LeaveChannel = require('./LeaveChannel-4cf3cd9c.js');
+require('date-fns/format');
+require('react-dom');
+var index$2 = require('./index-21269166.js');
+var index$3 = require('./index-63161cb1.js');
+
+var EditDetails = function EditDetails(props) {
+ var _onSubmit = props.onSubmit,
+ onCancel = props.onCancel,
+ channel = props.channel,
+ userId = props.userId,
+ theme = props.theme;
+ var inputRef = React.useRef(null);
+ var formRef = React.useRef(null);
+ var hiddenInputRef = React.useRef(null);
+
+ var _useState = React.useState(null),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ currentImg = _useState2[0],
+ setCurrentImg = _useState2[1];
+
+ var _useState3 = React.useState(null),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ newFile = _useState4[0],
+ setNewFile = _useState4[1];
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var title = channel.name;
+ return React__default.createElement(index$1.Modal, {
+ titleText: stringSet.MODAL__CHANNEL_INFORMATION__TITLE,
+ submitText: stringSet.BUTTON__SAVE,
+ onCancel: onCancel,
+ onSubmit: function onSubmit() {
+ if (title !== '' && !inputRef.current.value) {
+ if (formRef.current.reportValidity) {
+ // might not work in explorer
+ formRef.current.reportValidity();
+ }
+
+ return;
+ }
+
+ _onSubmit(newFile, inputRef.current.value);
+
+ onCancel();
+ },
+ type: index$1.Type.PRIMARY
+ }, React__default.createElement("form", {
+ className: "channel-profile-form",
+ ref: formRef,
+ onSubmit: function onSubmit(e) {
+ e.preventDefault();
+ }
+ }, React__default.createElement("div", {
+ className: "channel-profile-form__img-section"
+ }, React__default.createElement(index$2.InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE), React__default.createElement("div", {
+ className: "channel-profile-form__avatar"
+ }, currentImg ? React__default.createElement(index$1.Avatar, {
+ height: "80px",
+ width: "80px",
+ src: currentImg
+ }) : React__default.createElement(index$1$1.ChannelAvatar, {
+ height: 80,
+ width: 80,
+ channel: channel,
+ userId: userId,
+ theme: theme
+ })), React__default.createElement("input", {
+ ref: hiddenInputRef,
+ type: "file",
+ accept: "image/gif, image/jpeg, image/png",
+ style: {
+ display: 'none'
+ },
+ onChange: function onChange(e) {
+ setCurrentImg(URL.createObjectURL(e.target.files[0]));
+ setNewFile(e.target.files[0]);
+ hiddenInputRef.current.value = '';
+ }
+ }), React__default.createElement(index$1.TextButton, {
+ className: "channel-profile-form__avatar-button",
+ onClick: function onClick() {
+ return hiddenInputRef.current.click();
+ },
+ notUnderline: true
+ }, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.BUTTON_1,
+ color: index$1.LabelColors.PRIMARY
+ }, stringSet.MODAL__CHANNEL_INFORMATION__UPLOAD))), React__default.createElement("div", {
+ className: "channel-profile-form__name-section"
+ }, React__default.createElement(index$2.InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_NAME), React__default.createElement(index$2.Input, {
+ required: title !== '',
+ name: "channel-profile-form__name",
+ ref: inputRef,
+ value: title,
+ placeHolder: stringSet.MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER
+ }))));
+};
+
+EditDetails.propTypes = {
+ onSubmit: PropTypes.func.isRequired,
+ onCancel: PropTypes.func.isRequired,
+ channel: PropTypes.shape({
+ name: PropTypes.string
+ }).isRequired,
+ userId: PropTypes.string.isRequired,
+ theme: PropTypes.string.isRequired
+};
+
+var ChannelProfile = function ChannelProfile(props) {
+ var disabled = props.disabled,
+ channel = props.channel,
+ userId = props.userId,
+ theme = props.theme,
+ onChannelInfoChange = props.onChannelInfoChange;
+ var title = channel.name;
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ showModal = _useState2[0],
+ setShowModal = _useState2[1];
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React__default.createElement("div", {
+ className: "sendbird-channel-profile"
+ }, React__default.createElement("div", {
+ className: "sendbird-channel-profile--inner"
+ }, React__default.createElement("div", {
+ className: "sendbird-channel-profile__avatar"
+ }, React__default.createElement(index$1$1.ChannelAvatar, {
+ channel: channel,
+ userId: userId,
+ theme: theme
+ })), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_2,
+ color: index$1.LabelColors.ONBACKGROUND_1,
+ className: "sendbird-channel-profile__title"
+ }, title), React__default.createElement(index$1.TextButton, {
+ disabled: disabled,
+ className: "sendbird-channel-profile__edit",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ setShowModal(true);
+ },
+ notUnderline: true
+ }, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.BUTTON_1,
+ color: disabled ? index$1.LabelColors.ONBACKGROUND_2 : index$1.LabelColors.PRIMARY
+ }, stringSet.CHANNEL_SETTING__PROFILE__EDIT)), showModal && React__default.createElement(EditDetails, {
+ onCancel: function onCancel() {
+ return setShowModal(false);
+ },
+ onSubmit: onChannelInfoChange,
+ channel: channel,
+ userId: userId,
+ theme: theme
+ })));
+};
+
+ChannelProfile.propTypes = {
+ channel: PropTypes.shape({
+ name: PropTypes.string
+ }).isRequired,
+ userId: PropTypes.string.isRequired,
+ theme: PropTypes.string,
+ disabled: PropTypes.bool,
+ onChannelInfoChange: PropTypes.func
+};
+ChannelProfile.defaultProps = {
+ theme: 'light',
+ disabled: false,
+ onChannelInfoChange: function onChannelInfoChange() {}
+};
+
+function MembersModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel,
+ currentUser = _a.currentUser;
+
+ var _b = React.useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = React.useState(null),
+ memberQuery = _c[0],
+ setMemberQuery = _c[1];
+
+ React.useEffect(function () {
+ var memberListQuery = channel.createMemberListQuery();
+ memberListQuery.limit = 20;
+ memberListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ });
+ setMemberQuery(memberListQuery);
+ }, []);
+ return React__default.createElement("div", null, React__default.createElement(index$1.Modal, {
+ hideFooter: true,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: utils.noop,
+ titleText: "All Members"
+ }, React__default.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = memberQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ memberQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(LocalizationContext.__spreadArrays(members, o));
+ });
+ }
+ }
+ }, members.map(function (member) {
+ return React__default.createElement(index$2.UserListItem, {
+ user: member,
+ key: member.userId,
+ currentUser: currentUser,
+ action: function action(_a) {
+ var parentRef = _a.parentRef,
+ actionRef = _a.actionRef;
+ return React__default.createElement(React__default.Fragment, null, channel.myRole === 'operator' && React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ if (member.role !== 'operator') {
+ channel.addOperators([member.userId], function () {
+ setMembers(members.map(function (m) {
+ if (m.userId === member.userId) {
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, member), {
+ role: 'operator'
+ });
+ }
+
+ return m;
+ }));
+ closeDropdown();
+ });
+ } else {
+ channel.removeOperators([member.userId], function () {
+ setMembers(members.map(function (m) {
+ if (m.userId === member.userId) {
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, member), {
+ role: ''
+ });
+ }
+
+ return m;
+ }));
+ closeDropdown();
+ });
+ }
+ }
+ }, member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'), // No muted members in broadcast channel
+ !channel.isBroadcast && React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ if (member.isMuted) {
+ channel.unmuteUser(member, function () {
+ setMembers(members.map(function (m) {
+ if (m.userId === member.userId) {
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, member), {
+ isMuted: false
+ });
+ }
+
+ return m;
+ }));
+ closeDropdown();
+ });
+ } else {
+ channel.muteUser(member, function () {
+ setMembers(members.map(function (m) {
+ if (m.userId === member.userId) {
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, member), {
+ isMuted: true
+ });
+ }
+
+ return m;
+ }));
+ closeDropdown();
+ });
+ }
+ }
+ }, member.isMuted ? 'Unmute' : 'Mute'), React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ channel.banUser(member, -1, '', function () {
+ setMembers(members.filter(function (_a) {
+ var userId = _a.userId;
+ return userId !== member.userId;
+ }));
+ });
+ }
+ }, "Ban"));
+ }
+ }));
+ }
+ });
+ }))));
+}
+
+var SHOWN_MEMBER_MAX = 10;
+
+var UserListItem = function UserListItem(_ref) {
+ var _ref$member = _ref.member,
+ member = _ref$member === void 0 ? {} : _ref$member,
+ _ref$currentUser = _ref.currentUser,
+ currentUser = _ref$currentUser === void 0 ? '' : _ref$currentUser;
+ var avatarRef = React.useRef(null);
+
+ var _useContext = React.useContext(index$1.UserProfileContext),
+ disableUserProfile = _useContext.disableUserProfile,
+ renderUserProfile = _useContext.renderUserProfile;
+
+ var _useContext2 = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext2.stringSet;
+
+ return React__default.createElement("div", {
+ className: "sendbird-members-accordion__member"
+ }, React__default.createElement("div", {
+ className: "sendbird-members-accordion__member-avatar"
+ }, React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.Avatar, {
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ ref: avatarRef,
+ src: member.profileUrl,
+ width: 24,
+ height: 24
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ openLeft: true,
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: member,
+ currentUserId: currentUser,
+ close: closeDropdown
+ }) : React__default.createElement(index$1.UserProfile, {
+ user: member,
+ currentUserId: currentUser,
+ onSuccess: closeDropdown
+ }));
+ }
+ })), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_2,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, member.nickname || stringSet.NO_NAME, currentUser === member.userId && ' (You)'));
+};
+
+UserListItem.propTypes = {
+ member: PropTypes.shape({
+ userId: PropTypes.string,
+ profileUrl: PropTypes.string,
+ nickname: PropTypes.string
+ }).isRequired,
+ currentUser: PropTypes.string.isRequired
+};
+
+var MemebersAccordion = function MemebersAccordion(_ref2) {
+ var channel = _ref2.channel,
+ disabled = _ref2.disabled,
+ currentUser = _ref2.currentUser,
+ userQueryCreator = _ref2.userQueryCreator,
+ onInviteMemebers = _ref2.onInviteMemebers,
+ swapParams = _ref2.swapParams;
+ var members = channel.members || [];
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ showMoreModal = _useState2[0],
+ setShowMoreModal = _useState2[1];
+
+ var _useState3 = React.useState(false),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ showAddUserModal = _useState4[0],
+ setShowAddUserModal = _useState4[1];
+
+ var _useContext3 = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext3.stringSet;
+
+ return React__default.createElement("div", {
+ className: "sendbird-members-accordion"
+ }, React__default.createElement("div", {
+ className: "sendbird-members-accordion__list"
+ }, members.slice(0, SHOWN_MEMBER_MAX).map(function (member) {
+ return React__default.createElement(UserListItem, {
+ member: member,
+ currentUser: currentUser,
+ key: member.userId
+ });
+ })), React__default.createElement("div", {
+ className: "sendbird-members-accordion__footer"
+ }, members.length >= SHOWN_MEMBER_MAX && React__default.createElement(index$1.Button, {
+ className: "sendbird-members-accordion__footer__all-members",
+ type: index$1.Type.SECONDARY,
+ size: index$1.Size.SMALL,
+ onClick: function onClick() {
+ return setShowMoreModal(true);
+ }
+ }, stringSet.CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS), members.length >= SHOWN_MEMBER_MAX && showMoreModal && React__default.createElement(MembersModal, {
+ currentUser: currentUser,
+ hideModal: function hideModal() {
+ setShowMoreModal(false);
+ },
+ channel: channel
+ }), React__default.createElement(index$1.Button, {
+ className: "sendbird-members-accordion__footer__invite-users",
+ type: index$1.Type.SECONDARY,
+ size: index$1.Size.SMALL,
+ disabled: disabled,
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ setShowAddUserModal(true);
+ }
+ }, stringSet.CHANNEL_SETTING__MEMBERS__INVITE_MEMBER), showAddUserModal && React__default.createElement(LeaveChannel.InviteMembers, {
+ swapParams: swapParams,
+ titleText: stringSet.MODAL__INVITE_MEMBER__TITLE,
+ submitText: stringSet.BUTTON__INVITE,
+ closeModal: function closeModal() {
+ return setShowAddUserModal(false);
+ },
+ idsToFilter: members.map(function (member) {
+ return member.userId;
+ }),
+ userQueryCreator: userQueryCreator,
+ onSubmit: onInviteMemebers
+ })));
+};
+
+MemebersAccordion.propTypes = {
+ swapParams: PropTypes.bool,
+ disabled: PropTypes.bool,
+ channel: PropTypes.shape({
+ members: PropTypes.arrayOf(PropTypes.shape({}))
+ }),
+ currentUser: PropTypes.string,
+ userQueryCreator: PropTypes.func.isRequired,
+ onInviteMemebers: PropTypes.func.isRequired
+};
+MemebersAccordion.defaultProps = {
+ swapParams: false,
+ currentUser: '',
+ disabled: false,
+ channel: {}
+};
+
+// might move to reusable/UI
+var COMPONENT_NAME = 'sendbird-user-list-item--small';
+
+var UserListItem$1 = function UserListItem(_a) {
+ var user = _a.user,
+ className = _a.className,
+ currentUser = _a.currentUser,
+ action = _a.action;
+ var actionRef = React.useRef(null);
+ var parentRef = React.useRef(null);
+ var avatarRef = React.useRef(null);
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+
+ var _b = React.useContext(index$1.UserProfileContext),
+ disableUserProfile = _b.disableUserProfile,
+ renderUserProfile = _b.renderUserProfile;
+
+ var injectingClassNames = Array.isArray(className) ? className : [className];
+ return React__default.createElement("div", {
+ ref: parentRef,
+ className: LocalizationContext.__spreadArrays([COMPONENT_NAME], injectingClassNames).join(' ')
+ }, user.isMuted && React__default.createElement(index$2.MutedAvatarOverlay, null), React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.Avatar, {
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ ref: avatarRef,
+ className: COMPONENT_NAME + "__avatar",
+ src: user.profileUrl,
+ width: 24,
+ height: 24
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ openLeft: true,
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: user,
+ currentUserId: currentUser,
+ close: closeDropdown
+ }) : React__default.createElement(index$1.UserProfile, {
+ user: user,
+ currentUserId: currentUser,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), React__default.createElement(index$1.Label, {
+ className: COMPONENT_NAME + "__title",
+ type: index$1.LabelTypography.SUBTITLE_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, user.nickname || stringSet.NO_NAME, currentUser === user.userId && " (You)"), !user.nickname && React__default.createElement(index$1.Label, {
+ className: COMPONENT_NAME + "__subtitle",
+ type: index$1.LabelTypography.CAPTION_3,
+ color: index$1.LabelColors.ONBACKGROUND_2
+ }, user.userId), user.role === 'operator' && React__default.createElement(index$1.Label, {
+ className: COMPONENT_NAME + "__operator",
+ type: index$1.LabelTypography.SUBTITLE_2,
+ color: index$1.LabelColors.ONBACKGROUND_2
+ }, "Operator"), action && React__default.createElement("div", {
+ ref: actionRef,
+ className: COMPONENT_NAME + "__action"
+ }, action({
+ actionRef: actionRef,
+ parentRef: parentRef
+ })));
+};
+
+function OperatorsModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel,
+ currentUser = _a.currentUser;
+
+ var _b = React.useState([]),
+ operators = _b[0],
+ setOperators = _b[1];
+
+ var _c = React.useState(null),
+ operatorQuery = _c[0],
+ setOperatorQuery = _c[1];
+
+ React.useEffect(function () {
+ var operatorListQuery = channel.createOperatorListQuery();
+ operatorListQuery.limit = 20;
+ operatorListQuery.next(function (operators, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(operators);
+ });
+ setOperatorQuery(operatorListQuery);
+ }, []);
+ return React__default.createElement("div", null, React__default.createElement(index$1.Modal, {
+ hideFooter: true,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: utils.noop,
+ titleText: "All operators"
+ }, React__default.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = operatorQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ operatorQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(LocalizationContext.__spreadArrays(operators, o));
+ });
+ }
+ }
+ }, operators.map(function (member) {
+ return React__default.createElement(index$2.UserListItem, {
+ currentUser: currentUser,
+ user: member,
+ key: member.userId,
+ action: function action(_a) {
+ var parentRef = _a.parentRef,
+ actionRef = _a.actionRef;
+ return React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ channel.removeOperators([member.userId], function (response, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(operators.filter(function (_a) {
+ var userId = _a.userId;
+ return userId !== member.userId;
+ }));
+ });
+ closeDropdown();
+ }
+ }, "Dismiss operator"));
+ }
+ });
+ }
+ });
+ }))));
+}
+
+function AddOperatorsModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel,
+ _onSubmit = _a.onSubmit;
+
+ var _b = React.useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = React.useState({}),
+ selectedMembers = _c[0],
+ setSelectedMembers = _c[1];
+
+ var _d = React.useState(null),
+ memberQuery = _d[0],
+ setMemberQuery = _d[1];
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ React.useEffect(function () {
+ var memberListQuery = channel.createMemberListQuery();
+ memberListQuery.limit = 20;
+ memberListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ });
+ setMemberQuery(memberListQuery);
+ }, []);
+ var selectedCount = Object.keys(selectedMembers).filter(function (m) {
+ return selectedMembers[m];
+ }).length;
+ return React__default.createElement("div", null, React__default.createElement(index$1.Modal, {
+ type: index$1.Type.PRIMARY,
+ submitText: "Add",
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: function onSubmit() {
+ var members = Object.keys(selectedMembers).filter(function (m) {
+ return selectedMembers[m];
+ });
+
+ _onSubmit(members);
+ },
+ titleText: "Select members"
+ }, React__default.createElement(index$1.Label, {
+ color: selectedCount > 0 ? index$1.LabelColors.PRIMARY : index$1.LabelColors.ONBACKGROUND_3,
+ type: index$1.LabelTypography.CAPTION_1
+ }, selectedCount + " " + stringSet.MODAL__INVITE_MEMBER__SELECTEC), React__default.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = memberQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ memberQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(LocalizationContext.__spreadArrays(members, o));
+ });
+ }
+ }
+ }, members.map(function (member) {
+ return React__default.createElement(index$2.UserListItem, {
+ checkBox: true,
+ checked: selectedMembers[member.userId],
+ onChange: function onChange(event) {
+ var _a;
+
+ var modifiedSelectedMembers = LocalizationContext.__assign(LocalizationContext.__assign({}, selectedMembers), (_a = {}, _a[event.target.id] = event.target.checked, _a));
+
+ if (!event.target.checked) {
+ delete modifiedSelectedMembers[event.target.id];
+ }
+
+ setSelectedMembers(modifiedSelectedMembers);
+ },
+ user: member,
+ key: member.userId
+ });
+ }))));
+}
+
+var OperatorList = function OperatorList(_a) {
+ var sdk = _a.sdk,
+ channel = _a.channel;
+
+ var _b = React.useState([]),
+ operators = _b[0],
+ setOperators = _b[1];
+
+ var _c = React.useState(false),
+ showMore = _c[0],
+ setShowMore = _c[1];
+
+ var _d = React.useState(false),
+ showAdd = _d[0],
+ setShowAdd = _d[1];
+
+ var _e = React.useState(false),
+ hasNext = _e[0],
+ setHasNext = _e[1];
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ React.useEffect(function () {
+ if (!channel) {
+ setOperators([]);
+ return;
+ }
+
+ var operatorListQuery = channel.createOperatorListQuery();
+ operatorListQuery.limit = 10;
+ operatorListQuery.next(function (operators, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(operators);
+ setHasNext(operatorListQuery.hasNext);
+ });
+ }, [channel]);
+ var refershList = React.useCallback(function () {
+ if (!channel) {
+ setOperators([]);
+ return;
+ }
+
+ var operatorListQuery = channel.createOperatorListQuery();
+ operatorListQuery.limit = 10;
+ operatorListQuery.next(function (operators, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(operators);
+ setHasNext(operatorListQuery.hasNext);
+ });
+ }, [channel]);
+ return React__default.createElement(React__default.Fragment, null, operators.map(function (operator) {
+ return React__default.createElement(UserListItem$1, {
+ key: operator.userId,
+ user: operator,
+ currentUser: sdk.currentUser.userId,
+ action: function action(_a) {
+ var actionRef = _a.actionRef,
+ parentRef = _a.parentRef;
+ return React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ channel.removeOperators([operator.userId], function (response, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(operators.filter(function (_a) {
+ var userId = _a.userId;
+ return userId !== operator.userId;
+ }));
+ });
+ closeDropdown();
+ }
+ }, "Dismiss operator"));
+ }
+ });
+ }
+ });
+ }), hasNext && React__default.createElement("div", {
+ className: "sendbird-channel-settings-accordion__footer"
+ }, React__default.createElement(index$1.Button, {
+ type: index$1.Type.SECONDARY,
+ size: index$1.Size.SMALL,
+ onClick: function onClick() {
+ setShowMore(true);
+ }
+ }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ALL), React__default.createElement(index$1.Button, {
+ type: index$1.Type.SECONDARY,
+ size: index$1.Size.SMALL,
+ onClick: function onClick() {
+ setShowAdd(true);
+ }
+ }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ADD)), showMore && React__default.createElement(OperatorsModal, {
+ currentUser: sdk.currentUser.userId,
+ hideModal: function hideModal() {
+ setShowMore(false);
+ refershList();
+ },
+ channel: channel
+ }), showAdd && React__default.createElement(AddOperatorsModal, {
+ hideModal: function hideModal() {
+ return setShowAdd(false);
+ },
+ channel: channel,
+ onSubmit: function onSubmit(members) {
+ setShowAdd(false);
+ channel.addOperators(members, function () {
+ refershList();
+ });
+ }
+ }));
+};
+
+var mapStoreToProps = function mapStoreToProps(store) {
+ return {
+ sdk: index$1.getSdk(store)
+ };
+};
+
+var OperatorList$1 = LocalizationContext.withSendbirdContext(OperatorList, mapStoreToProps);
+
+function InviteMembers(_a) {
+ var hideModal = _a.hideModal,
+ userQueryCreator = _a.userQueryCreator,
+ _onSubmit = _a.onSubmit;
+
+ var _b = React.useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = React.useState({}),
+ selectedMembers = _c[0],
+ setSelectedMembers = _c[1];
+
+ var _d = React.useState(null),
+ userQuery = _d[0],
+ setUserQuery = _d[1];
+
+ React.useEffect(function () {
+ var userListQuery = userQueryCreator();
+ userListQuery.limit = 20;
+ userListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ });
+ setUserQuery(userListQuery);
+ }, []);
+ return React__default.createElement("div", null, React__default.createElement(index$1.Modal, {
+ disabled: Object.keys(selectedMembers).length === 0,
+ submitText: "Invite",
+ type: index$1.Type.PRIMARY,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: function onSubmit() {
+ var members = Object.keys(selectedMembers).filter(function (m) {
+ return selectedMembers[m];
+ });
+
+ _onSubmit(members);
+ },
+ titleText: "Select members"
+ }, React__default.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = userQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ userQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(LocalizationContext.__spreadArrays(members, o));
+ });
+ }
+ }
+ }, members.map(function (member) {
+ return React__default.createElement(index$2.UserListItem, {
+ checkBox: true,
+ checked: selectedMembers[member.userId],
+ onChange: function onChange(event) {
+ var _a;
+
+ var modifiedSelectedMembers = LocalizationContext.__assign(LocalizationContext.__assign({}, selectedMembers), (_a = {}, _a[event.target.id] = event.target.checked, _a));
+
+ if (!event.target.checked) {
+ delete modifiedSelectedMembers[event.target.id];
+ }
+
+ setSelectedMembers(modifiedSelectedMembers);
+ },
+ user: member,
+ key: member.userId
+ });
+ }))));
+}
+
+var MemberList = function MemberList(_a) {
+ var sdk = _a.sdk,
+ channel = _a.channel,
+ userQueryCreator = _a.userQueryCreator;
+
+ var _b = React.useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = React.useState(false),
+ hasNext = _c[0],
+ setHasNext = _c[1];
+
+ var _d = React.useState(false),
+ showAllMembers = _d[0],
+ setShowAllMembers = _d[1];
+
+ var _e = React.useState(false),
+ showInviteMembers = _e[0],
+ setShowInviteMembers = _e[1];
+
+ React.useEffect(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var memberUserListQuery = channel.createMemberListQuery();
+ memberUserListQuery.limit = 10;
+ memberUserListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ setHasNext(memberUserListQuery.hasNext);
+ });
+ }, [channel]);
+ var refershList = React.useCallback(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var memberUserListQuery = channel.createMemberListQuery();
+ memberUserListQuery.limit = 10;
+ memberUserListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ setHasNext(memberUserListQuery.hasNext);
+ });
+ }, [channel]);
+ return React__default.createElement(React__default.Fragment, null, members.map(function (member) {
+ return React__default.createElement(UserListItem$1, {
+ key: member.userId,
+ user: member,
+ currentUser: sdk.currentUser.userId,
+ action: function action(_a) {
+ var actionRef = _a.actionRef,
+ parentRef = _a.parentRef;
+ return React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ if (member.role !== 'operator') {
+ channel.addOperators([member.userId], function () {
+ refershList();
+ closeDropdown();
+ });
+ } else {
+ channel.removeOperators([member.userId], function () {
+ refershList();
+ closeDropdown();
+ });
+ }
+ }
+ }, member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'), // No muted members in broadcast channel
+ !channel.isBroadcast && React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ if (member.isMuted) {
+ channel.unmuteUser(member, function () {
+ refershList();
+ closeDropdown();
+ });
+ } else {
+ channel.muteUser(member, function () {
+ refershList();
+ closeDropdown();
+ });
+ }
+ }
+ }, member.isMuted ? 'Unmute' : 'Mute'), React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ channel.banUser(member, -1, '', function () {
+ refershList();
+ closeDropdown();
+ });
+ }
+ }, "Ban"));
+ }
+ });
+ }
+ });
+ }), React__default.createElement("div", {
+ className: "sendbird-channel-settings-accordion__footer"
+ }, hasNext && React__default.createElement(index$1.Button, {
+ type: index$1.Type.SECONDARY,
+ size: index$1.Size.SMALL,
+ onClick: function onClick() {
+ return setShowAllMembers(true);
+ }
+ }, "All members"), React__default.createElement(index$1.Button, {
+ type: index$1.Type.SECONDARY,
+ size: index$1.Size.SMALL,
+ onClick: function onClick() {
+ return setShowInviteMembers(true);
+ }
+ }, "Invite members")), showAllMembers && React__default.createElement(MembersModal, {
+ currentUser: sdk.currentUser.userId,
+ channel: channel,
+ hideModal: function hideModal() {
+ setShowAllMembers(false);
+ refershList();
+ }
+ }), showInviteMembers && React__default.createElement(InviteMembers, {
+ userQueryCreator: userQueryCreator,
+ onSubmit: function onSubmit(selectedMemebers) {
+ channel.inviteWithUserIds(selectedMemebers, function () {
+ setShowInviteMembers(false);
+ refershList();
+ });
+ },
+ channel: channel,
+ hideModal: function hideModal() {
+ return setShowInviteMembers(false);
+ }
+ }));
+};
+
+var mapStoreToProps$1 = function mapStoreToProps(store) {
+ return {
+ sdk: index$1.getSdk(store)
+ };
+};
+
+var MemberList$1 = LocalizationContext.withSendbirdContext(MemberList, mapStoreToProps$1);
+
+function BannedMembersModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel;
+
+ var _b = React.useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = React.useState(null),
+ memberQuery = _c[0],
+ setMemberQuery = _c[1];
+
+ React.useEffect(function () {
+ var bannedUserListQuery = channel.createBannedUserListQuery();
+ bannedUserListQuery.next(function (users, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(users);
+ });
+ setMemberQuery(bannedUserListQuery);
+ }, []);
+ return React__default.createElement("div", null, React__default.createElement(index$1.Modal, {
+ hideFooter: true,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: utils.noop,
+ titleText: "Muted members"
+ }, React__default.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = memberQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ memberQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(LocalizationContext.__spreadArrays(members, o));
+ });
+ }
+ }
+ }, members.map(function (member) {
+ return React__default.createElement(index$2.UserListItem, {
+ user: member,
+ key: member.userId,
+ action: function action(_a) {
+ var parentRef = _a.parentRef,
+ actionRef = _a.actionRef;
+ return React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ channel.unbanUser(member, function () {
+ closeDropdown();
+ setMembers(members.filter(function (m) {
+ return m.userId !== member.userId;
+ }));
+ });
+ }
+ }, "Unban"));
+ }
+ });
+ }
+ });
+ }))));
+}
+
+var BannedMemberList = function BannedMemberList(_a) {
+ var channel = _a.channel;
+
+ var _b = React.useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = React.useState(false),
+ hasNext = _c[0],
+ setHasNext = _c[1];
+
+ var _d = React.useState(false),
+ showModal = _d[0],
+ setShowModal = _d[1];
+
+ React.useEffect(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var bannedUserListQuery = channel.createBannedUserListQuery();
+ bannedUserListQuery.next(function (users, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(users);
+ setHasNext(bannedUserListQuery.hasNext);
+ });
+ }, [channel]);
+ var refreshList = React.useCallback(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var bannedUserListQuery = channel.createBannedUserListQuery();
+ bannedUserListQuery.next(function (users, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(users);
+ setHasNext(bannedUserListQuery.hasNext);
+ });
+ }, [channel]);
+ return React__default.createElement(React__default.Fragment, null, members.map(function (member) {
+ return React__default.createElement(UserListItem$1, {
+ key: member.userId,
+ user: member,
+ action: function action(_a) {
+ var actionRef = _a.actionRef,
+ parentRef = _a.parentRef;
+ return React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ channel.unbanUser(member, function () {
+ closeDropdown();
+ refreshList();
+ });
+ }
+ }, "Unban"));
+ }
+ });
+ }
+ });
+ }), members && members.length === 0 && React__default.createElement(index$1.Label, {
+ className: "sendbird-channel-settings__empty-list",
+ type: index$1.LabelTypography.SUBTITLE_2,
+ color: index$1.LabelColors.ONBACKGROUND_3
+ }, "No banned members yet"), hasNext && React__default.createElement("div", {
+ className: "sendbird-channel-settings-accordion__footer"
+ }, React__default.createElement(index$1.Button, {
+ type: index$1.Type.SECONDARY,
+ size: index$1.Size.SMALL,
+ onClick: function onClick() {
+ setShowModal(true);
+ }
+ }, "All banned members")), showModal && React__default.createElement(BannedMembersModal, {
+ channel: channel,
+ hideModal: function hideModal() {
+ setShowModal(false);
+ refreshList();
+ }
+ }));
+};
+
+var mapStoreToProps$2 = function mapStoreToProps(store) {
+ return {
+ sdk: index$1.getSdk(store)
+ };
+};
+
+var BannedMemberList$1 = LocalizationContext.withSendbirdContext(BannedMemberList, mapStoreToProps$2);
+
+function MutedMembersModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel,
+ currentUser = _a.currentUser;
+
+ var _b = React.useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = React.useState(null),
+ memberQuery = _c[0],
+ setMemberQuery = _c[1];
+
+ React.useEffect(function () {
+ var memberUserListQuery = channel.createMemberListQuery();
+ memberUserListQuery.limit = 10;
+ memberUserListQuery.mutedMemberFilter = 'muted';
+ memberUserListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ });
+ setMemberQuery(memberUserListQuery);
+ }, []);
+ return React__default.createElement("div", null, React__default.createElement(index$1.Modal, {
+ hideFooter: true,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: utils.noop,
+ titleText: "Muted members"
+ }, React__default.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = memberQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ memberQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(LocalizationContext.__spreadArrays(members, o));
+ });
+ }
+ }
+ }, members.map(function (member) {
+ return React__default.createElement(index$2.UserListItem, {
+ currentUser: currentUser,
+ user: member,
+ key: member.userId,
+ action: function action(_a) {
+ var actionRef = _a.actionRef,
+ parentRef = _a.parentRef;
+ return React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ channel.unmuteUser(member, function () {
+ closeDropdown();
+ setMembers(members.filter(function (m) {
+ return m.userId !== member.userId;
+ }));
+ });
+ }
+ }, "Unmute"));
+ }
+ });
+ }
+ });
+ }))));
+}
+
+var MutedMemberList = function MutedMemberList(_a) {
+ var sdk = _a.sdk,
+ channel = _a.channel;
+
+ var _b = React.useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = React.useState(false),
+ hasNext = _c[0],
+ setHasNext = _c[1];
+
+ var _d = React.useState(false),
+ showModal = _d[0],
+ setShowModal = _d[1];
+
+ React.useEffect(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var memberUserListQuery = channel.createMemberListQuery();
+ memberUserListQuery.limit = 10;
+ memberUserListQuery.mutedMemberFilter = 'muted';
+ memberUserListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ setHasNext(memberUserListQuery.hasNext);
+ });
+ }, [channel]);
+ var refreshList = React.useCallback(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var memberUserListQuery = channel.createMemberListQuery();
+ memberUserListQuery.limit = 10;
+ memberUserListQuery.mutedMemberFilter = 'muted';
+ memberUserListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ setHasNext(memberUserListQuery.hasNext);
+ });
+ }, [channel]);
+ return React__default.createElement(React__default.Fragment, null, members.map(function (member) {
+ return React__default.createElement(UserListItem$1, {
+ key: member.userId,
+ user: member,
+ currentUser: sdk.currentUser.userId,
+ action: function action(_a) {
+ var actionRef = _a.actionRef,
+ parentRef = _a.parentRef;
+ return React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ closeDropdown: closeDropdown,
+ openLeft: true,
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+
+ }, React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ channel.unmuteUser(member, function () {
+ refreshList();
+ closeDropdown();
+ });
+ }
+ }, "Unmute"));
+ }
+ });
+ }
+ });
+ }), members && members.length === 0 && React__default.createElement(index$1.Label, {
+ className: "sendbird-channel-settings__empty-list",
+ type: index$1.LabelTypography.SUBTITLE_2,
+ color: index$1.LabelColors.ONBACKGROUND_3
+ }, "No muted members yet"), hasNext && React__default.createElement("div", {
+ className: "sendbird-channel-settings-accordion__footer"
+ }, React__default.createElement(index$1.Button, {
+ type: index$1.Type.SECONDARY,
+ size: index$1.Size.SMALL,
+ onClick: function onClick() {
+ setShowModal(true);
+ }
+ }, "All muted members")), showModal && React__default.createElement(MutedMembersModal, {
+ currentUser: sdk.currentUser.userId,
+ channel: channel,
+ hideModal: function hideModal() {
+ setShowModal(false);
+ refreshList();
+ }
+ }));
+};
+
+var mapStoreToProps$3 = function mapStoreToProps(store) {
+ return {
+ sdk: index$1.getSdk(store)
+ };
+};
+
+var MutedMemberList$1 = LocalizationContext.withSendbirdContext(MutedMemberList, mapStoreToProps$3);
+
+var kFormatter = function kFormatter(num) {
+ return Math.abs(num) > 999 ? (Math.abs(num) / 1000).toFixed(1) + "K" : num;
+};
+
+function index(_a) {
+ var userQueryCreator = _a.userQueryCreator,
+ channel = _a.channel;
+
+ var _b = React.useState(false),
+ frozen = _b[0],
+ setFrozen = _b[1]; // work around for
+ // https://sendbird.slack.com/archives/G01290GCDCN/p1595922832000900
+ // SDK bug - after frozen/unfrozen myRole becomes "none"
+
+
+ React.useEffect(function () {
+ setFrozen(channel.isFrozen);
+ }, [channel]);
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ return React__default.createElement(index$3.AccordionGroup, {
+ className: "sendbird-channel-settings__operator"
+ }, React__default.createElement(index$3.Accordion, {
+ className: "sendbird-channel-settings__operators-list",
+ id: "operators",
+ renderTitle: function renderTitle() {
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.ICON_OPERATOR,
+ fillColor: index$1.IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-channel-settings__accordion-icon"
+ }), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE));
+ },
+ renderContent: function renderContent() {
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(OperatorList$1, {
+ channel: channel
+ }));
+ }
+ }), React__default.createElement(index$3.Accordion, {
+ className: "sendbird-channel-settings__members-list",
+ id: "members",
+ renderTitle: function renderTitle() {
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.MEMBERS,
+ fillColor: index$1.IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-channel-settings__accordion-icon"
+ }), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__MEMBERS__TITLE), React__default.createElement(LeaveChannel.Badge, {
+ count: kFormatter(channel.memberCount)
+ }));
+ },
+ renderContent: function renderContent() {
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(MemberList$1, {
+ userQueryCreator: userQueryCreator,
+ channel: channel
+ }));
+ }
+ }), // No muted members in broadcast channel
+ !channel.isBroadcast && React__default.createElement(index$3.Accordion, {
+ id: "mutedMembers",
+ className: "sendbird-channel-settings__muted-members-list",
+ renderTitle: function renderTitle() {
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.ICON_MUTED,
+ fillColor: index$1.IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-channel-settings__accordion-icon"
+ }), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__MUTED_MEMBERS__TITLE));
+ },
+ renderContent: function renderContent() {
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(MutedMemberList$1, {
+ channel: channel
+ }));
+ }
+ }), React__default.createElement(index$3.Accordion, {
+ className: "sendbird-channel-settings__banned-members-list",
+ id: "bannedMembers",
+ renderTitle: function renderTitle() {
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.ICON_BANNED,
+ fillColor: index$1.IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-channel-settings__accordion-icon"
+ }), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__BANNED_MEMBERS__TITLE));
+ },
+ renderContent: function renderContent() {
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(BannedMemberList$1, {
+ channel: channel
+ }));
+ }
+ }), // cannot frozen broadcast channel
+ !channel.isBroadcast && React__default.createElement("div", {
+ className: "sendbird-channel-settings__freeze"
+ }, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.FROZEN_LIGHT,
+ fillColor: index$1.IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-channel-settings__accordion-icon"
+ }), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__FREEZE_CHANNEL), React__default.createElement("div", {
+ className: "sendbird-channel-settings__frozen-icon"
+ }, frozen ? React__default.createElement(index$1.Icon, {
+ onClick: function onClick() {
+ channel.unfreeze(function () {
+ setFrozen(false);
+ });
+ },
+ type: index$1.IconTypes.TOGGLE_ON,
+ width: 44,
+ height: 24
+ }) : React__default.createElement(index$1.Icon, {
+ onClick: function onClick() {
+ channel.freeze(function () {
+ setFrozen(true);
+ });
+ },
+ type: index$1.IconTypes.TOGGLE_OFF,
+ width: 44,
+ height: 24
+ }))));
+}
+
+var kFormatter$1 = function kFormatter(num) {
+ return Math.abs(num) > 999 ? "".concat((Math.abs(num) / 1000).toFixed(1), "K") : num;
+};
+
+function ChannelSettings(props) {
+ var onCloseClick = props.onCloseClick,
+ channelUrl = props.channelUrl,
+ disableUserProfile = props.disableUserProfile,
+ renderUserProfile = props.renderUserProfile,
+ _onChannelModified = props.onChannelModified,
+ renderChannelProfile = props.renderChannelProfile,
+ onBeforeUpdateChannel = props.onBeforeUpdateChannel;
+ var sdkStore = props.stores.sdkStore,
+ _props$config = props.config,
+ userListQuery = _props$config.userListQuery,
+ theme = _props$config.theme,
+ userId = _props$config.userId,
+ logger = _props$config.logger,
+ isOnline = _props$config.isOnline,
+ _props$queries = props.queries,
+ queries = _props$queries === void 0 ? {} : _props$queries;
+ var _props$config2 = props.config,
+ config = _props$config2 === void 0 ? {} : _props$config2;
+ var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
+ var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
+ var userFilledApplicationUserListQuery = queries.applicationUserListQuery;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var sdk = sdkStore.sdk,
+ initialized = sdkStore.initialized; // hack to kepp track of channel updates by triggering useEffect
+
+ var _useState = React.useState(LocalizationContext.uuidv4()),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ channelUpdateId = _useState2[0],
+ setChannelUpdateId = _useState2[1];
+
+ var _useState3 = React.useState(null),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ channel = _useState4[0],
+ setChannel = _useState4[1];
+
+ var _useState5 = React.useState(false),
+ _useState6 = LocalizationContext._slicedToArray(_useState5, 2),
+ invalidChannel = _useState6[0],
+ setInvalidChannel = _useState6[1];
+
+ var _useState7 = React.useState(false),
+ _useState8 = LocalizationContext._slicedToArray(_useState7, 2),
+ showAccordion = _useState8[0],
+ setShowAccordion = _useState8[1];
+
+ var _useState9 = React.useState(false),
+ _useState10 = LocalizationContext._slicedToArray(_useState9, 2),
+ showLeaveChannelModal = _useState10[0],
+ setShowLeaveChannelModal = _useState10[1];
+
+ React.useEffect(function () {
+ logger.info('ChannelSettings: Setting up');
+
+ if (!channelUrl || !initialized || !sdk) {
+ logger.warning('ChannelSettings: Setting up failed', 'No channelUrl or sdk uninitialized');
+ setInvalidChannel(false);
+ } else {
+ if (!sdk || !sdk.GroupChannel) {
+ logger.warning('ChannelSettings: No GroupChannel');
+ return;
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl, function (groupChannel) {
+ if (!groupChannel) {
+ logger.warning('ChannelSettings: Channel not found');
+ setInvalidChannel(true);
+ } else {
+ logger.info('ChannelSettings: Fetched group channel', groupChannel);
+ setInvalidChannel(false);
+ setChannel(groupChannel);
+ }
+ });
+ }
+ }, [channelUrl, initialized, channelUpdateId]);
+
+ if (!channel || invalidChannel) {
+ return React__default.createElement("div", {
+ className: "sendbird-channel-settings"
+ }, React__default.createElement("div", {
+ className: "sendbird-channel-settings__header"
+ }, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.H_2,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.CLOSE,
+ className: "sendbird-channel-settings__close-icon",
+ height: "24px",
+ width: "24px",
+ onClick: function onClick() {
+ logger.info('ChannelSettings: Click close');
+ onCloseClick();
+ }
+ })), React__default.createElement("div", null, React__default.createElement(index$1.PlaceHolder, {
+ type: index$1.PlaceHolderTypes.WRONG
+ })));
+ }
+
+ return React__default.createElement(index$1.UserProfileProvider, {
+ disableUserProfile: userDefinedDisableUserProfile,
+ renderUserProfile: userDefinedRenderProfile,
+ className: "sendbird-channel-settings"
+ }, React__default.createElement("div", {
+ className: "sendbird-channel-settings__header"
+ }, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.H_2,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React__default.createElement("div", {
+ className: "sendbird-channel-settings__header-icon"
+ }, React__default.createElement(index$1.IconButton, {
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ logger.info('ChannelSettings: Click close');
+ onCloseClick();
+ }
+ }, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.CLOSE,
+ className: "sendbird-channel-settings__close-icon",
+ height: "24px",
+ width: "24px"
+ })))), React__default.createElement("div", {
+ className: "sendbird-channel-settings__scroll-area"
+ }, renderChannelProfile ? renderChannelProfile({
+ channel: channel
+ }) : React__default.createElement(ChannelProfile, {
+ disabled: !isOnline,
+ channel: channel,
+ userId: userId,
+ theme: theme,
+ onChannelInfoChange: function onChannelInfoChange(currentImg, currentTitle) {
+ logger.info('ChannelSettings: Channel information being updated');
+ var swapParams = sdk.getErrorFirstCallback();
+
+ if (onBeforeUpdateChannel) {
+ var params = onBeforeUpdateChannel(currentTitle, currentImg, channel.data); // swapParams
+
+ channel.updateChannel(params, function (response, error) {
+ var groupChannel = response;
+
+ if (swapParams) {
+ groupChannel = error;
+ }
+
+ _onChannelModified(groupChannel);
+
+ setChannelUpdateId(LocalizationContext.uuidv4());
+ });
+ return;
+ }
+
+ channel.updateChannel(currentTitle, currentImg, channel.data, function (response, error) {
+ var groupChannel = response;
+
+ if (swapParams) {
+ groupChannel = error;
+ }
+
+ logger.info('ChannelSettings: Channel information updated', groupChannel);
+
+ _onChannelModified(groupChannel);
+
+ setChannelUpdateId(LocalizationContext.uuidv4());
+ });
+ }
+ }), channel.myRole === 'operator' ? React__default.createElement(index, {
+ channel: channel,
+ onChannelModified: function onChannelModified(groupChannel) {
+ // setChannelUpdateId(uuidv4());
+ _onChannelModified(groupChannel);
+ },
+ userQueryCreator: function userQueryCreator() {
+ return userListQuery && typeof userListQuery === 'function' ? userListQuery() : LeaveChannel.createDefaultUserListQuery({
+ sdk: sdk,
+ userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
+ });
+ }
+ }) : React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
+ role: "switch",
+ "aria-checked": showAccordion,
+ tabIndex: 0,
+ onKeyDown: function onKeyDown() {
+ return setShowAccordion(!showAccordion);
+ },
+ className: "\n sendbird-channel-settings__panel-item\n sendbird-channel-settings__members\n ",
+ onClick: function onClick() {
+ return setShowAccordion(!showAccordion);
+ }
+ }, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.MEMBERS,
+ className: "sendbird-channel-settings__panel-icon-left",
+ height: "24px",
+ width: "24px",
+ fillColor: index$1.IconColors.PRIMARY
+ }), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, "".concat(stringSet.CHANNEL_SETTING__MEMBERS__TITLE), React__default.createElement(LeaveChannel.Badge, {
+ count: kFormatter$1(channel.memberCount)
+ })), React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.SHEVRON,
+ className: ['sendbird-channel-settings__panel-icon-right', 'sendbird-channel-settings__panel-icon--chevron', showAccordion ? 'sendbird-channel-settings__panel-icon--open' : ''].join(' '),
+ height: "24px",
+ width: "24px"
+ })), showAccordion && React__default.createElement(MemebersAccordion, {
+ currentUser: userId,
+ disabled: !isOnline // eslint-disable-next-line
+ ,
+ userQueryCreator: function userQueryCreator() {
+ return userListQuery && typeof userListQuery === 'function' ? userListQuery() : LeaveChannel.createDefaultUserListQuery({
+ sdk: sdk,
+ userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
+ });
+ },
+ swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
+ channel: channel,
+ members: channel.members,
+ onInviteMemebers: function onInviteMemebers(selectedMemebers) {
+ logger.info('ChannelSettings: Inviting new users');
+ channel.inviteWithUserIds(selectedMemebers).then(function (res) {
+ _onChannelModified(res);
+
+ setChannelUpdateId(LocalizationContext.uuidv4());
+ logger.info('ChannelSettings: Inviting new users success!', res);
+ });
+ }
+ })), React__default.createElement("div", {
+ className: "sendbird-channel-settings__panel-item\n sendbird-channel-settings__leave-channel\n ".concat(!isOnline ? 'sendbird-channel-settings__panel-item__disabled' : ''),
+ role: "button",
+ tabIndex: 0,
+ disabled: true,
+ onKeyDown: function onKeyDown() {
+ if (!isOnline) {
+ return;
+ }
+
+ setShowLeaveChannelModal(true);
+ },
+ onClick: function onClick() {
+ if (!isOnline) {
+ return;
+ }
+
+ setShowLeaveChannelModal(true);
+ }
+ }, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.LEAVE,
+ className: ['sendbird-channel-settings__panel-icon-left', 'sendbird-channel-settings__panel-icon__leave'].join(' '),
+ height: "24px",
+ width: "24px"
+ }), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE)), showLeaveChannelModal && React__default.createElement(LeaveChannel.LeaveChannelModal, {
+ onCloseModal: function onCloseModal() {
+ return setShowLeaveChannelModal(false);
+ },
+ onLeaveChannel: function onLeaveChannel() {
+ logger.info('ChannelSettings: Leaving channel', channel);
+ channel.leave().then(function () {
+ logger.info('ChannelSettings: Leaving channel successful!', channel);
+ onCloseClick();
+ });
+ }
+ })));
+}
+
+ChannelSettings.propTypes = {
+ onCloseClick: PropTypes.func,
+ onChannelModified: PropTypes.func,
+ onBeforeUpdateChannel: PropTypes.func,
+ renderChannelProfile: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ channelUrl: PropTypes.string.isRequired,
+ queries: PropTypes.shape({
+ applicationUserListQuery: PropTypes.shape({
+ limit: PropTypes.number,
+ userIdsFilter: PropTypes.arrayOf(PropTypes.string),
+ metaDataKeyFilter: PropTypes.string,
+ metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string)
+ })
+ }),
+ // from withSendbirdContext
+ stores: PropTypes.shape({
+ sdkStore: PropTypes.shape({
+ sdk: PropTypes.shape({
+ getErrorFirstCallback: PropTypes.func,
+ GroupChannel: PropTypes.oneOfType([PropTypes.shape({
+ getChannel: PropTypes.func
+ }), PropTypes.func]),
+ createApplicationUserListQuery: PropTypes.any
+ }),
+ initialized: PropTypes.bool
+ })
+ }).isRequired,
+ config: PropTypes.shape({
+ userId: PropTypes.string,
+ theme: PropTypes.string,
+ userListQuery: PropTypes.func,
+ isOnline: PropTypes.bool,
+ logger: PropTypes.shape({
+ info: PropTypes.func,
+ error: PropTypes.func,
+ warning: PropTypes.func
+ })
+ }).isRequired
+};
+ChannelSettings.defaultProps = {
+ onBeforeUpdateChannel: null,
+ queries: {},
+ disableUserProfile: false,
+ renderUserProfile: null,
+ renderChannelProfile: null,
+ onCloseClick: function onCloseClick() {},
+ onChannelModified: function onChannelModified() {}
+};
+var ChannelSettings$1 = LocalizationContext.withSendbirdContext(ChannelSettings);
+
+module.exports = ChannelSettings$1;
+//# sourceMappingURL=ChannelSettings.js.map
diff --git a/dist/cjs/ChannelSettings.js.map b/dist/cjs/ChannelSettings.js.map
new file mode 100644
index 0000000..65ef3bc
--- /dev/null
+++ b/dist/cjs/ChannelSettings.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ChannelSettings.js","sources":["../../../src/smart-components/ChannelSettings/components/EditDetails.jsx","../../../src/smart-components/ChannelSettings/components/ChannelProfile.jsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/MembersModal.tsx","../../../src/smart-components/ChannelSettings/components/MemebersAccordion.jsx","../../../src/smart-components/ChannelSettings/components/UserListItem.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/OperatorsModal.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/AddOperatorsModal.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/OperatorList.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/InviteMembersModal.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/MemberList.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/BannedMembersModal.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/BannedMemberList.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/MutedMembersModal.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/MutedMemberList.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/index.tsx","../../../src/smart-components/ChannelSettings/index.jsx"],"sourcesContent":["import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Modal from '../../../ui/Modal';\nimport Input, { InputLabel } from '../../../ui/Input';\nimport Avatar from '../../../ui/Avatar/index';\nimport { Type as ButtonType } from '../../../ui/Button/type';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport TextButton from '../../../ui/TextButton';\nimport ChannelAvatar from '../../../ui/ChannelAvatar/index';\n\nconst EditDetails = (props) => {\n const {\n onSubmit,\n onCancel,\n channel,\n userId,\n theme,\n } = props;\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const hiddenInputRef = useRef(null);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n const title = channel.name;\n return (\n {\n if (title !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(newFile, inputRef.current.value);\n onCancel();\n }}\n type={ButtonType.PRIMARY}\n >\n \n \n );\n};\n\nEditDetails.propTypes = {\n onSubmit: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n channel: PropTypes.shape({\n name: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n theme: PropTypes.string.isRequired,\n};\n\nexport default EditDetails;\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './channel-profile.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport EditDetailsModal from './EditDetails';\nimport TextButton from '../../../ui/TextButton';\nimport ChannelAvatar from '../../../ui/ChannelAvatar/index';\n\nconst ChannelProfile = (props) => {\n const {\n disabled,\n channel,\n userId,\n theme,\n onChannelInfoChange,\n } = props;\n const title = channel.name;\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n
\n
\n \n
\n
\n {title}\n \n
{\n if (disabled) { return; }\n setShowModal(true);\n }}\n notUnderline\n >\n \n {stringSet.CHANNEL_SETTING__PROFILE__EDIT}\n \n \n {\n showModal && (\n
setShowModal(false)}\n onSubmit={onChannelInfoChange}\n channel={channel}\n userId={userId}\n theme={theme}\n />\n )\n }\n \n
\n );\n};\n\nChannelProfile.propTypes = {\n channel: PropTypes.shape({\n name: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n theme: PropTypes.string,\n disabled: PropTypes.bool,\n onChannelInfoChange: PropTypes.func,\n};\n\nChannelProfile.defaultProps = {\n theme: 'light',\n disabled: false,\n onChannelInfoChange: () => { },\n};\n\nexport default ChannelProfile;\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n currentUser?: string;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function MembersModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const memberListQuery = channel.createMemberListQuery();\n memberListQuery.limit = 20;\n memberListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"All Members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n <>\n {channel.myRole === 'operator' && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if ((member.role !== 'operator')) {\n channel.addOperators([member.userId], () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n role: 'operator',\n };\n }\n return m;\n }));\n closeDropdown();\n });\n } else {\n channel.removeOperators([member.userId], () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n role: '',\n };\n }\n return m;\n }));\n closeDropdown();\n });\n }\n }}\n >\n { member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'}\n \n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n {\n if (member.isMuted) {\n channel.unmuteUser(member, () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n isMuted: false,\n };\n }\n return m;\n }));\n closeDropdown();\n })\n } else {\n channel.muteUser(member, () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n isMuted: true,\n };\n }\n return m;\n }));\n closeDropdown();\n });\n }\n }}\n >\n { member.isMuted ? 'Unmute' : 'Mute' }\n \n )\n }\n {\n channel.banUser(member, -1, '', () => {\n setMembers(members.filter(({ userId }) => {\n return userId !== member.userId;\n }));\n });\n }}\n >\n Ban\n \n \n )}\n />\n )}\n >\n )}\n />\n ))}\n
\n \n
\n );\n}\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './members-accordion.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { UserProfileContext } from '../../../lib/UserProfileContext';\nimport Button from '../../../ui/Button';\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../ui/Button/type';\nimport Avatar from '../../../ui/Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport InviteMembers from '../../InviteMembers';\nimport MembersModal from './AdminPanel/MembersModal';\nimport UserProfile from '../../../ui/UserProfile';\nimport ContextMenu, { MenuItems } from '../../../ui/ContextMenu';\n\nconst SHOWN_MEMBER_MAX = 10;\n\nconst UserListItem = ({ member = {}, currentUser = '' }) => {\n const avatarRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n src={member.profileUrl}\n width={24}\n height={24}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: member,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n
\n {member.nickname || stringSet.NO_NAME}\n {\n (currentUser === member.userId) && (\n ' (You)'\n )\n }\n \n
\n );\n};\n\nUserListItem.propTypes = {\n member: PropTypes.shape({\n userId: PropTypes.string,\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n }).isRequired,\n currentUser: PropTypes.string.isRequired,\n};\n\nconst MemebersAccordion = ({\n channel,\n disabled,\n currentUser,\n userQueryCreator,\n onInviteMemebers,\n swapParams,\n}) => {\n const members = channel.members || [];\n const [showMoreModal, setShowMoreModal] = useState(false);\n const [showAddUserModal, setShowAddUserModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n {\n members.slice(0, SHOWN_MEMBER_MAX).map((member) => (\n \n ))\n }\n
\n
\n {\n members.length >= SHOWN_MEMBER_MAX && (\n setShowMoreModal(true)}\n >\n {stringSet.CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS}\n \n )\n }\n {\n members.length >= SHOWN_MEMBER_MAX && showMoreModal && (\n {\n setShowMoreModal(false);\n }}\n channel={channel}\n />\n )\n }\n {\n if (disabled) { return; }\n setShowAddUserModal(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__MEMBERS__INVITE_MEMBER}\n \n {\n showAddUserModal && (\n setShowAddUserModal(false)}\n idsToFilter={members.map((member) => (member.userId))}\n userQueryCreator={userQueryCreator}\n onSubmit={onInviteMemebers}\n />\n )\n }\n
\n
\n );\n};\n\nMemebersAccordion.propTypes = {\n swapParams: PropTypes.bool,\n disabled: PropTypes.bool,\n channel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n }),\n currentUser: PropTypes.string,\n userQueryCreator: PropTypes.func.isRequired,\n onInviteMemebers: PropTypes.func.isRequired,\n};\n\nMemebersAccordion.defaultProps = {\n swapParams: false,\n currentUser: '',\n disabled: false,\n channel: {},\n};\n\nexport default MemebersAccordion;\n","// might move to reusable/UI\n\nimport React, { ReactElement, useRef, useContext } from 'react';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { UserProfileContext } from '../../../lib/UserProfileContext';\nimport Avatar from '../../../ui/Avatar/index';\nimport MutedAvatarOverlay from '../../../ui/Avatar/MutedAvatarOverlay';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport UserProfile from '../../../ui/UserProfile';\nimport ContextMenu, { MenuItems } from '../../../ui/ContextMenu';\n\nimport './user-list-item.scss';\nimport { SendbirdTypes } from '../../../types';\n\nconst COMPONENT_NAME = 'sendbird-user-list-item--small';\n\ninterface ActionProps {\n actionRef: React.RefObject;\n parentRef: React.RefObject;\n}\n\ntype CustomUser = SendbirdTypes['User'] & {\n isMuted: boolean;\n role: string;\n};\n\ninterface Props {\n user: CustomUser;\n currentUser?: string;\n className?: string;\n action?(props: ActionProps): ReactElement;\n}\n\nconst UserListItem = ({\n user,\n className,\n currentUser,\n action,\n}: Props): ReactElement => {\n const actionRef = useRef(null);\n const parentRef = useRef(null);\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const injectingClassNames = Array.isArray(className) ? className : [className];\n return (\n \n {\n user.isMuted && (\n
\n )\n }\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n className={`${COMPONENT_NAME}__avatar`}\n src={user.profileUrl}\n width={24}\n height={24}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n {user.nickname || stringSet.NO_NAME}\n {\n (currentUser === user.userId) && (\n \" (You)\"\n )\n }\n \n { // if there is now nickname, display userId\n !user.nickname && (\n \n {user.userId}\n \n )\n }\n {\n user.role === 'operator' && (\n \n Operator\n \n )\n }\n {\n action && (\n \n { action({ actionRef, parentRef }) }\n
\n )\n }\n \n );\n}\n\nexport default UserListItem;\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n currentUser?: string;\n}\n\nexport default function OperatorsModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [operators, setOperators] = useState([]);\n const [operatorQuery, setOperatorQuery] = useState(null);\n\n useEffect(() => {\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 20;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n });\n setOperatorQuery(operatorListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"All operators\"\n >\n {\n const { hasNext } = operatorQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n operatorQuery.next((o, error) => {\n if (error) {\n return;\n }\n setOperators([\n ...operators,\n ...o,\n ])\n });\n }\n }}\n >\n { operators.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.removeOperators([member.userId], (response, error) => {\n if (error) {\n return;\n }\n setOperators(operators.filter(({ userId }) => {\n return userId !== member.userId;\n }));\n });\n closeDropdown();\n }}\n >\n Dismiss operator\n \n \n )}\n />\n )}\n />\n ))}\n
\n \n
\n )\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useContext,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport Modal from '../../../../ui/Modal';\nimport Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport { Type as ButtonType } from '../../../../ui/Button/type';\nimport UserListItem from '../../../../ui/UserListItem';\n\ninterface Props {\n hideModal(): void;\n onSubmit(members: string[]): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function AddOperatorsModal({\n hideModal,\n channel,\n onSubmit,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [selectedMembers, setSelectedMembers] = useState({});\n const [memberQuery, setMemberQuery] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n\n useEffect(() => {\n const memberListQuery = channel.createMemberListQuery();\n memberListQuery.limit = 20;\n memberListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberListQuery);\n }, [])\n\n const selectedCount = Object.keys(selectedMembers).filter((m) => selectedMembers[m]).length;\n return (\n \n
hideModal()}\n onSubmit={() => {\n const members = Object.keys(selectedMembers).filter((m) => selectedMembers[m]);\n onSubmit(members);\n }}\n titleText=\"Select members\"\n >\n 0) ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3}\n type={LabelTypography.CAPTION_1}\n >\n {`${selectedCount} ${stringSet.MODAL__INVITE_MEMBER__SELECTEC}`}\n \n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n {\n const modifiedSelectedMembers = {\n ...selectedMembers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedMembers[event.target.id];\n }\n setSelectedMembers(modifiedSelectedMembers);\n }\n }\n user={member}\n key={member.userId}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n useContext,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport OperatorsModal from './OperatorsModal';\nimport AddOperatorsModal from './AddOperatorsModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const OperatorList = ({ sdk, channel }: Props): ReactElement => {\n const [operators, setOperators] = useState([]);\n const [showMore, setShowMore] = useState(false);\n const [showAdd, setShowAdd] = useState(false);\n const [hasNext, setHasNext] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n useEffect(() => {\n if (!channel) {\n setOperators([]);\n return;\n }\n\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 10;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n setHasNext(operatorListQuery.hasNext);\n });\n }, [channel]);\n\n const refershList = useCallback(\n () => {\n if (!channel) {\n setOperators([]);\n return;\n }\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 10;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n setHasNext(operatorListQuery.hasNext);\n });\n },\n [channel],\n );\n\n return (\n <>\n {\n operators.map((operator) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.removeOperators([operator.userId], (response, error) => {\n if (error) {\n return;\n }\n setOperators(operators.filter(({ userId }) => {\n return userId !== operator.userId;\n }))\n });\n closeDropdown();\n }}\n >\n Dismiss operator\n \n \n )}\n />\n );\n }}\n />\n ))\n }\n {\n hasNext && (\n \n {\n setShowMore(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ALL}\n \n {\n setShowAdd(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ADD}\n \n
\n )\n }\n {\n showMore && (\n {\n setShowMore(false);\n refershList();\n }}\n channel={channel}\n />\n )\n }\n {\n showAdd && (\n setShowAdd(false)}\n channel={channel}\n onSubmit={(members) => {\n setShowAdd(false);\n channel.addOperators(members, () => {\n refershList();\n });\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(OperatorList, mapStoreToProps);\n","import React, { ReactElement, useEffect, useState } from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport { Type as ButtonType } from '../../../../ui/Button/type';\nimport UserListItem from '../../../../ui/UserListItem';\n\ninterface Props {\n hideModal(): void;\n onSubmit(members: string[]): void;\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport default function InviteMembers({\n hideModal,\n userQueryCreator,\n onSubmit,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [selectedMembers, setSelectedMembers] = useState({});\n const [userQuery, setUserQuery] = useState(null);\n\n useEffect(() => {\n const userListQuery = userQueryCreator();\n userListQuery.limit = 20;\n userListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setUserQuery(userListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={() => {\n const members = Object.keys(selectedMembers).filter((m) => selectedMembers[m]);\n onSubmit(members);\n }}\n titleText=\"Select members\"\n >\n {\n const { hasNext } = userQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n userQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n {\n const modifiedSelectedMembers = {\n ...selectedMembers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedMembers[event.target.id];\n }\n setSelectedMembers(modifiedSelectedMembers);\n }\n }\n user={member}\n key={member.userId}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport MembersModal from './MembersModal';\nimport InviteMembers from './InviteMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes['SendBirdInstance'];\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport const MemberList = ({ sdk, channel, userQueryCreator }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showAllMembers, setShowAllMembers] = useState(false);\n const [showInviteMembers, setShowInviteMembers] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refershList = useCallback(\n () => {\n if (!channel) {\n setMembers([]);\n return;\n }\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n },\n [channel],\n );\n\n return (\n <>\n {\n members.map((member) => (\n {\n return ( (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if ((member.role !== 'operator')) {\n channel.addOperators([member.userId], () => {\n refershList();\n closeDropdown();\n });\n } else {\n channel.removeOperators([member.userId], () => {\n refershList();\n closeDropdown();\n });\n }\n }}\n >\n { member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'}\n \n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n {\n if (member.isMuted) {\n channel.unmuteUser(member, () => {\n refershList();\n closeDropdown();\n })\n } else {\n channel.muteUser(member, () => {\n refershList();\n closeDropdown();\n });\n }\n }}\n >\n { member.isMuted ? 'Unmute' : 'Mute' }\n \n )\n }\n {\n channel.banUser(member, -1, '', () => {\n refershList();\n closeDropdown();\n });\n }}\n >\n Ban\n \n \n )}\n />)}\n }\n />\n ))\n }\n \n {\n hasNext && (\n setShowAllMembers(true)}\n >\n All members\n \n )\n }\n setShowInviteMembers(true)}\n >\n Invite members\n \n
\n {\n showAllMembers && (\n {\n setShowAllMembers(false);\n refershList();\n }}\n />\n )\n }\n {\n showInviteMembers && (\n {\n channel.inviteWithUserIds(selectedMemebers, () => {\n setShowInviteMembers(false);\n refershList();\n });\n }}\n channel={channel}\n hideModal={() => setShowInviteMembers(false)}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(MemberList, mapStoreToProps);\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function BannedMembersModal({\n hideModal,\n channel,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next((users, error) => {\n if (error) {\n return;\n }\n setMembers(users);\n });\n setMemberQuery(bannedUserListQuery);\n }, []);\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"Muted members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unbanUser(member, () => {\n closeDropdown();\n setMembers(members.filter(m => {\n return (m.userId !== member.userId);\n }));\n })\n }}\n >\n Unban\n \n \n )}\n />\n )\n }\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport BannedMembersModal from './BannedMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const BannedMemberList = ({ channel }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next((users, error) => {\n if (error) {\n return;\n }\n setMembers(users);\n setHasNext(bannedUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refreshList = useCallback(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next(function(users, error) {\n if (error) {\n return;\n }\n setMembers(users);\n setHasNext(bannedUserListQuery.hasNext);\n });\n }, [channel]);\n return (\n <>\n {\n members.map((member) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unbanUser(member, () => {\n closeDropdown();\n refreshList();\n })\n }}\n >\n Unban\n \n \n )}\n />\n )\n }}\n />\n ))\n }\n {\n members && members.length === 0 && (\n \n No banned members yet\n \n )\n }\n {\n hasNext && (\n \n {\n setShowModal(true);\n }}\n >\n All banned members\n \n
\n )\n }\n {\n showModal && (\n {\n setShowModal(false);\n refreshList();\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(BannedMemberList, mapStoreToProps);\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n currentUser?: string;\n}\n\nexport default function MutedMembersModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberUserListQuery);\n }, []);\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"Muted members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unmuteUser(member, () => {\n closeDropdown();\n setMembers(members.filter(m => {\n return (m.userId !== member.userId);\n }));\n })\n }}\n >\n Unmute\n \n \n )}\n />\n )}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport MutedMembersModal from './MutedMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const MutedMemberList = ({ sdk, channel }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refreshList = useCallback(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n return (\n <>\n {\n members.map((member) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unmuteUser(member, () => {\n refreshList();\n closeDropdown();\n })\n }}\n >\n Unmute\n \n \n )}\n />\n );\n }\n }\n />\n ))\n }\n {\n members && members.length === 0 && (\n \n No muted members yet\n \n )\n }\n {\n hasNext && (\n \n {\n setShowModal(true);\n }}\n >\n All muted members\n \n
\n )\n }\n {\n showModal && (\n {\n setShowModal(false);\n refreshList();\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(MutedMemberList, mapStoreToProps);\n","import './index.scss';\nimport React, {\n ReactElement,\n useEffect,\n useState,\n useContext,\n} from 'react';\nimport { SendbirdTypes } from '../../../../types';\n\nimport Accordion, { AccordionGroup } from '../../../../ui/Accordion';\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport Badge from '../../../../ui/Badge';\n\nimport OperatorList from './OperatorList';\nimport MemberList from './MemberList';\nimport BannedMemberList from './BannedMemberList';\nimport MutedMemberList from './MutedMemberList';\n\nconst kFormatter = (num: number): string|number => {\n return Math.abs(num) > 999\n ? `${(Math.abs(num)/1000).toFixed(1)}K`\n : num;\n}\n\ninterface Props {\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport default function index({\n userQueryCreator,\n channel,\n}: Props): ReactElement {\n const [frozen, setFrozen] = useState(false);\n\n // work around for\n // https://sendbird.slack.com/archives/G01290GCDCN/p1595922832000900\n // SDK bug - after frozen/unfrozen myRole becomes \"none\"\n useEffect(() => {\n setFrozen(channel.isFrozen);\n }, [channel]);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__MEMBERS__TITLE}\n \n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__MUTED_MEMBERS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n )\n }\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__BANNED_MEMBERS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n {\n // cannot frozen broadcast channel\n !channel.isBroadcast && (\n \n
\n
\n {stringSet.CHANNEL_SETTING__FREEZE_CHANNEL}\n \n
\n {\n frozen\n ? (\n {\n channel.unfreeze(() => {\n setFrozen(false);\n });\n }}\n type={IconTypes.TOGGLE_ON}\n width={44}\n height={24}\n />\n )\n : (\n {\n channel.freeze(() => {\n setFrozen(true);\n });\n }}\n type={IconTypes.TOGGLE_OFF}\n width={44}\n height={24}\n />\n )\n }\n
\n
\n )\n }\n \n );\n}\n","import React, { useEffect, useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport './index.scss';\nimport Badge from '../../ui/Badge';\nimport Label, { LabelTypography, LabelColors } from '../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../ui/Icon';\nimport IconButton from '../../ui/IconButton';\n\nimport ChannelProfile from './components/ChannelProfile';\nimport MemebersAccordion from './components/MemebersAccordion';\nimport LeaveChannelModal from './components/LeaveChannel';\nimport AdminPanel from './components/AdminPanel';\nimport PlaceHolder from '../../ui/PlaceHolder';\nimport PlaceHolderTypes from '../../ui/PlaceHolder/type';\nimport { uuidv4 } from '../../utils/uuid';\nimport { createDefaultUserListQuery } from '../ChannelList/components/utils';\n\n\nconst kFormatter = (num) => (\n Math.abs(num) > 999\n ? `${(Math.abs(num) / 1000).toFixed(1)}K`\n : num\n);\n\nfunction ChannelSettings(props) {\n const {\n onCloseClick,\n channelUrl,\n disableUserProfile,\n renderUserProfile,\n onChannelModified,\n renderChannelProfile,\n onBeforeUpdateChannel,\n } = props;\n\n const {\n stores: { sdkStore },\n config: {\n userListQuery,\n theme,\n userId,\n logger,\n isOnline,\n },\n queries = {},\n } = props;\n\n const { config = {} } = props;\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n const userFilledApplicationUserListQuery = queries.applicationUserListQuery;\n const { stringSet } = useContext(LocalizationContext);\n\n const { sdk, initialized } = sdkStore;\n\n // hack to kepp track of channel updates by triggering useEffect\n const [channelUpdateId, setChannelUpdateId] = useState(uuidv4());\n const [channel, setChannel] = useState(null);\n const [invalidChannel, setInvalidChannel] = useState(false);\n const [showAccordion, setShowAccordion] = useState(false);\n const [showLeaveChannelModal, setShowLeaveChannelModal] = useState(false);\n\n useEffect(() => {\n logger.info('ChannelSettings: Setting up');\n if (!channelUrl || !initialized || !sdk) {\n logger.warning('ChannelSettings: Setting up failed', 'No channelUrl or sdk uninitialized');\n setInvalidChannel(false);\n } else {\n if (!sdk || !sdk.GroupChannel) {\n logger.warning('ChannelSettings: No GroupChannel');\n return;\n }\n sdk.GroupChannel.getChannel(channelUrl, (groupChannel) => {\n if (!groupChannel) {\n logger.warning('ChannelSettings: Channel not found');\n setInvalidChannel(true);\n } else {\n logger.info('ChannelSettings: Fetched group channel', groupChannel);\n setInvalidChannel(false);\n setChannel(groupChannel);\n }\n });\n }\n }, [channelUrl, initialized, channelUpdateId]);\n\n if (!channel || invalidChannel) {\n return (\n \n
\n \n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n {\n logger.info('ChannelSettings: Click close');\n onCloseClick();\n }}\n />\n
\n
\n
\n );\n }\n\n return (\n \n \n
\n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n
\n {\n logger.info('ChannelSettings: Click close');\n onCloseClick();\n }}\n >\n \n \n
\n
\n \n {\n renderChannelProfile\n ? renderChannelProfile({ channel })\n : (\n
{\n logger.info('ChannelSettings: Channel information being updated');\n const swapParams = sdk.getErrorFirstCallback();\n if (onBeforeUpdateChannel) {\n const params = onBeforeUpdateChannel(currentTitle, currentImg, channel.data);\n // swapParams\n channel.updateChannel(params, (response, error) => {\n let groupChannel = response;\n if (swapParams) {\n groupChannel = error;\n }\n\n onChannelModified(groupChannel);\n setChannelUpdateId(uuidv4());\n });\n return;\n }\n channel.updateChannel(\n currentTitle,\n currentImg,\n channel.data,\n (response, error) => {\n let groupChannel = response;\n if (swapParams) {\n groupChannel = error;\n }\n logger.info('ChannelSettings: Channel information updated', groupChannel);\n onChannelModified(groupChannel);\n setChannelUpdateId(uuidv4());\n },\n );\n }}\n />\n )\n }\n {\n channel.myRole === 'operator'\n ? (\n {\n // setChannelUpdateId(uuidv4());\n onChannelModified(groupChannel);\n }}\n userQueryCreator={\n () => ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )\n }\n />\n )\n : (\n <>\n {/* Move to different file */}\n setShowAccordion(!showAccordion)}\n className={`\n sendbird-channel-settings__panel-item\n sendbird-channel-settings__members\n `}\n onClick={() => setShowAccordion(!showAccordion)}\n >\n \n \n {`${stringSet.CHANNEL_SETTING__MEMBERS__TITLE}`}\n \n \n \n
\n {\n showAccordion && (\n ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )\n }\n swapParams={\n sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback()\n }\n channel={channel}\n members={channel.members}\n onInviteMemebers={(selectedMemebers) => {\n logger.info('ChannelSettings: Inviting new users');\n channel.inviteWithUserIds(selectedMemebers)\n .then((res) => {\n onChannelModified(res);\n setChannelUpdateId(uuidv4());\n logger.info('ChannelSettings: Inviting new users success!', res);\n });\n }}\n />\n )\n }\n >\n )\n }\n\n {\n if (!isOnline) { return; }\n setShowLeaveChannelModal(true);\n }}\n onClick={() => {\n if (!isOnline) { return; }\n setShowLeaveChannelModal(true);\n }}\n >\n \n \n {stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE}\n \n
\n {\n showLeaveChannelModal && (\n setShowLeaveChannelModal(false)}\n onLeaveChannel={() => {\n logger.info('ChannelSettings: Leaving channel', channel);\n channel.leave()\n .then(() => {\n logger.info('ChannelSettings: Leaving channel successful!', channel);\n onCloseClick();\n });\n }}\n />\n )\n }\n \n \n );\n}\n\nChannelSettings.propTypes = {\n onCloseClick: PropTypes.func,\n onChannelModified: PropTypes.func,\n onBeforeUpdateChannel: PropTypes.func,\n renderChannelProfile: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n channelUrl: PropTypes.string.isRequired,\n queries: PropTypes.shape({\n applicationUserListQuery: PropTypes.shape({\n limit: PropTypes.number,\n userIdsFilter: PropTypes.arrayOf(PropTypes.string),\n metaDataKeyFilter: PropTypes.string,\n metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n // from withSendbirdContext\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n GroupChannel: PropTypes.oneOfType([\n PropTypes.shape({\n getChannel: PropTypes.func,\n }),\n PropTypes.func,\n ]),\n createApplicationUserListQuery: PropTypes.any,\n }),\n initialized: PropTypes.bool,\n }),\n }).isRequired,\n config: PropTypes.shape({\n userId: PropTypes.string,\n theme: PropTypes.string,\n userListQuery: PropTypes.func,\n isOnline: PropTypes.bool,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n }).isRequired,\n};\n\nChannelSettings.defaultProps = {\n onBeforeUpdateChannel: null,\n queries: {},\n disableUserProfile: false,\n renderUserProfile: null,\n renderChannelProfile: null,\n onCloseClick: () => { },\n onChannelModified: () => { },\n};\n\nexport default withSendbirdContext(ChannelSettings);\n"],"names":["EditDetails","props","onSubmit","onCancel","channel","userId","theme","inputRef","useRef","formRef","hiddenInputRef","useState","currentImg","setCurrentImg","newFile","setNewFile","useContext","LocalizationContext","stringSet","title","name","React","Modal","MODAL__CHANNEL_INFORMATION__TITLE","BUTTON__SAVE","current","value","reportValidity","ButtonType","PRIMARY","e","preventDefault","InputLabel","MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE","Avatar","ChannelAvatar","display","URL","createObjectURL","target","files","TextButton","click","Label","LabelTypography","BUTTON_1","LabelColors","MODAL__CHANNEL_INFORMATION__UPLOAD","MODAL__CHANNEL_INFORMATION__CHANNEL_NAME","Input","MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER","propTypes","PropTypes","func","isRequired","shape","string","ChannelProfile","disabled","onChannelInfoChange","showModal","setShowModal","SUBTITLE_2","ONBACKGROUND_1","ONBACKGROUND_2","CHANNEL_SETTING__PROFILE__EDIT","EditDetailsModal","bool","defaultProps","MembersModal","_a","hideModal","currentUser","_b","members","setMembers","_c","memberQuery","setMemberQuery","useEffect","memberListQuery","createMemberListQuery","limit","next","error","noop","hasNext","fetchMore","clientHeight","scrollTop","scrollHeight","o","map","member","UserListItem","parentRef","actionRef","myRole","ContextMenu","toggleDropdown","IconButton","Icon","IconTypes","MORE","IconColors","CONTENT_INVERSE","closeDropdown","MenuItems","MenuItem","role","addOperators","m","removeOperators","isBroadcast","isMuted","unmuteUser","muteUser","banUser","filter","SHOWN_MEMBER_MAX","avatarRef","UserProfileContext","disableUserProfile","renderUserProfile","profileUrl","paddingTop","paddingBottom","user","currentUserId","close","UserProfile","nickname","NO_NAME","MemebersAccordion","userQueryCreator","onInviteMemebers","swapParams","showMoreModal","setShowMoreModal","showAddUserModal","setShowAddUserModal","slice","length","Button","ButtonTypes","SECONDARY","ButtonSizes","SMALL","CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS","CHANNEL_SETTING__MEMBERS__INVITE_MEMBER","InviteMembers","MODAL__INVITE_MEMBER__TITLE","BUTTON__INVITE","arrayOf","COMPONENT_NAME","className","action","injectingClassNames","Array","isArray","__spreadArrays","join","MutedAvatarOverlay","SUBTITLE_1","CAPTION_3","OperatorsModal","operators","setOperators","operatorQuery","setOperatorQuery","operatorListQuery","createOperatorListQuery","response","AddOperatorsModal","selectedMembers","setSelectedMembers","_d","selectedCount","Object","keys","ONBACKGROUND_3","CAPTION_1","MODAL__INVITE_MEMBER__SELECTEC","event","modifiedSelectedMembers","id","checked","OperatorList","sdk","showMore","setShowMore","showAdd","setShowAdd","_e","setHasNext","refershList","useCallback","operator","CHANNEL_SETTING__OPERATORS__TITLE_ALL","CHANNEL_SETTING__OPERATORS__TITLE_ADD","mapStoreToProps","store","getSdk","withSendbirdContext","userQuery","setUserQuery","userListQuery","MemberList","showAllMembers","setShowAllMembers","showInviteMembers","setShowInviteMembers","memberUserListQuery","selectedMemebers","inviteWithUserIds","BannedMembersModal","bannedUserListQuery","createBannedUserListQuery","users","unbanUser","BannedMemberList","refreshList","MutedMembersModal","mutedMemberFilter","MutedMemberList","kFormatter","num","Math","abs","toFixed","index","frozen","setFrozen","isFrozen","AccordionGroup","Accordion","ICON_OPERATOR","CHANNEL_SETTING__OPERATORS__TITLE","MEMBERS","CHANNEL_SETTING__MEMBERS__TITLE","Badge","memberCount","ICON_MUTED","CHANNEL_SETTING__MUTED_MEMBERS__TITLE","ICON_BANNED","CHANNEL_SETTING__BANNED_MEMBERS__TITLE","FROZEN_LIGHT","CHANNEL_SETTING__FREEZE_CHANNEL","unfreeze","TOGGLE_ON","freeze","TOGGLE_OFF","ChannelSettings","onCloseClick","channelUrl","onChannelModified","renderChannelProfile","onBeforeUpdateChannel","sdkStore","stores","config","logger","isOnline","queries","userDefinedDisableUserProfile","userDefinedRenderProfile","userFilledApplicationUserListQuery","applicationUserListQuery","initialized","uuidv4","channelUpdateId","setChannelUpdateId","setChannel","invalidChannel","setInvalidChannel","showAccordion","setShowAccordion","showLeaveChannelModal","setShowLeaveChannelModal","info","warning","GroupChannel","getChannel","groupChannel","H_2","CHANNEL_SETTING__HEADER__TITLE","CLOSE","PlaceHolder","PlaceHolderTypes","WRONG","UserProfileProvider","currentTitle","getErrorFirstCallback","params","data","updateChannel","AdminPanel","createDefaultUserListQuery","SHEVRON","then","res","LEAVE","CHANNEL_SETTING__LEAVE_CHANNEL__TITLE","LeaveChannelModal","leave","oneOfType","element","number","userIdsFilter","metaDataKeyFilter","metaDataValuesFilter","createApplicationUserListQuery","any"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/cjs/LeaveChannel-4cf3cd9c.js b/dist/cjs/LeaveChannel-4cf3cd9c.js
new file mode 100644
index 0000000..da731e6
--- /dev/null
+++ b/dist/cjs/LeaveChannel-4cf3cd9c.js
@@ -0,0 +1,301 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+var PropTypes = _interopDefault(require('prop-types'));
+var index = require('./index-49d966e1.js');
+var index$2 = require('./index-21269166.js');
+
+function Badge(_ref) {
+ var count = _ref.count,
+ maxLevel = _ref.maxLevel,
+ className = _ref.className;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var maximumNumber = parseInt('9'.repeat(maxLevel > 6 ? 6 : maxLevel), 10);
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React__default.createElement("div", {
+ className: [].concat(LocalizationContext._toConsumableArray(injectingClassName), ['sendbird-badge']).join(' ')
+ }, React__default.createElement("div", {
+ className: "sendbird-badge__text"
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONCONTENT_1
+ }, count > maximumNumber ? "".concat(maximumNumber).concat(stringSet.BADGE__OVER) : count)));
+}
+Badge.propTypes = {
+ count: PropTypes.number.isRequired,
+ maxLevel: PropTypes.number,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+Badge.defaultProps = {
+ maxLevel: 2,
+ className: []
+};
+
+var filterUser = function filterUser(idsToFilter) {
+ return function (currentId) {
+ return idsToFilter.includes(currentId);
+ };
+};
+
+var InviteMembers = function InviteMembers(props) {
+ var userQueryCreator = props.userQueryCreator,
+ closeModal = props.closeModal,
+ _onSubmit = props.onSubmit,
+ submitText = props.submitText,
+ titleText = props.titleText,
+ idsToFilter = props.idsToFilter,
+ swapParams = props.swapParams;
+
+ var _useState = React.useState([]),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ users = _useState2[0],
+ setUsers = _useState2[1];
+
+ var _useState3 = React.useState({}),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ selectedUsers = _useState4[0],
+ setSelectedUsers = _useState4[1];
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var _useState5 = React.useState({}),
+ _useState6 = LocalizationContext._slicedToArray(_useState5, 2),
+ usersDataSource = _useState6[0],
+ setUsersDataSource = _useState6[1];
+
+ var selectedCount = Object.keys(selectedUsers).length;
+ React.useEffect(function () {
+ var applicationUserListQuery = userQueryCreator();
+ setUsersDataSource(applicationUserListQuery);
+ applicationUserListQuery.next(function (res, err) {
+ // eslint-disable-next-line no-underscore-dangle
+ var users_ = res;
+ var error = err;
+
+ if (swapParams) {
+ users_ = err;
+ error = users_;
+ }
+
+ if (error) {
+ return;
+ }
+
+ setUsers(users_);
+ });
+ }, []);
+ return React__default.createElement(index.Modal, {
+ onCancel: closeModal,
+ onSubmit: function onSubmit() {
+ var selectedUserList = Object.keys(selectedUsers);
+
+ if (selectedUserList.length > 0) {
+ _onSubmit(selectedUserList);
+
+ closeModal();
+ }
+ },
+ submitText: submitText,
+ titleText: titleText,
+ type: index.Type.PRIMARY
+ }, React__default.createElement("div", null, React__default.createElement(index.Label, {
+ color: selectedCount > 0 ? index.LabelColors.PRIMARY : index.LabelColors.ONBACKGROUND_3,
+ type: index.LabelTypography.CAPTION_1
+ }, "".concat(selectedCount, " ").concat(stringSet.MODAL__INVITE_MEMBER__SELECTEC)), React__default.createElement("div", {
+ className: "sendbird-create-channel--scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = usersDataSource.hasNext;
+ var fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ usersDataSource.next(function (usersBatch, error) {
+ if (error) {
+ return;
+ }
+
+ setUsers([].concat(LocalizationContext._toConsumableArray(users), LocalizationContext._toConsumableArray(usersBatch)));
+ });
+ }
+ }
+ }, users.map(function (user) {
+ return !filterUser(idsToFilter)(user.userId) && React__default.createElement(index$2.UserListItem, {
+ key: user.userId,
+ user: user,
+ checkBox: true,
+ checked: selectedUsers[user.userId],
+ onChange: function onChange(event) {
+ var modifiedSelectedUsers = LocalizationContext._objectSpread2({}, selectedUsers, LocalizationContext._defineProperty({}, event.target.id, event.target.checked));
+
+ if (!event.target.checked) {
+ delete modifiedSelectedUsers[event.target.id];
+ }
+
+ setSelectedUsers(modifiedSelectedUsers);
+ }
+ });
+ }))));
+};
+
+InviteMembers.propTypes = {
+ idsToFilter: PropTypes.arrayOf(PropTypes.string),
+ swapParams: PropTypes.bool,
+ userQueryCreator: PropTypes.func.isRequired,
+ closeModal: PropTypes.func.isRequired,
+ onSubmit: PropTypes.func.isRequired,
+ submitText: PropTypes.string,
+ titleText: PropTypes.string
+};
+InviteMembers.defaultProps = {
+ swapParams: false,
+ submitText: 'create',
+ titleText: 'Create new channel',
+ idsToFilter: []
+};
+
+var createDefaultUserListQuery = function createDefaultUserListQuery(_ref) {
+ var sdk = _ref.sdk,
+ _ref$userFilledApplic = _ref.userFilledApplicationUserListQuery,
+ userFilledApplicationUserListQuery = _ref$userFilledApplic === void 0 ? {} : _ref$userFilledApplic;
+ var params = sdk.createApplicationUserListQuery();
+
+ if (userFilledApplicationUserListQuery) {
+ Object.keys(userFilledApplicationUserListQuery).forEach(function (key) {
+ params[key] = userFilledApplicationUserListQuery[key];
+ });
+ }
+
+ return params;
+};
+
+var getApplicationAttributes = function getApplicationAttributes() {
+ var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var _sdk$appInfo = sdk.appInfo,
+ appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
+ var _appInfo$applicationA = appInfo.applicationAttributes,
+ applicationAttributes = _appInfo$applicationA === void 0 ? [] : _appInfo$applicationA;
+ return applicationAttributes;
+};
+
+var isBroadcastChannelEnabled = function isBroadcastChannelEnabled() {
+ var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var ALLOW_BROADCAST_CHANNEL = 'allow_broadcast_channel';
+ var applicationAttributes = getApplicationAttributes(sdk);
+
+ if (Array.isArray(applicationAttributes)) {
+ return applicationAttributes.includes(ALLOW_BROADCAST_CHANNEL);
+ }
+
+ return false;
+};
+var isSuperGroupChannelEnabled = function isSuperGroupChannelEnabled() {
+ var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var ALLOW_SUPER_GROUP_CHANNEL = 'allow_super_group_channel';
+ var applicationAttributes = getApplicationAttributes(sdk);
+
+ if (Array.isArray(applicationAttributes)) {
+ return applicationAttributes.includes(ALLOW_SUPER_GROUP_CHANNEL);
+ }
+
+ return false;
+};
+var setChannelType = function setChannelType(params, type) {
+ if (type === 'broadcast') {
+ // eslint-disable-next-line no-param-reassign
+ params.isBroadcast = true;
+ }
+
+ if (type === 'supergroup') {
+ // eslint-disable-next-line no-param-reassign
+ params.isSuper = true;
+ }
+
+ return params;
+};
+var createChannel = function createChannel(sdk, selectedUsers, onBeforeCreateChannel, userId) {
+ var type = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'group';
+ return new Promise(function (resolve, reject) {
+ // have custom params
+ if (onBeforeCreateChannel) {
+ var _params = onBeforeCreateChannel(selectedUsers);
+
+ setChannelType(_params, type);
+ sdk.GroupChannel.createChannel(_params, function (response, error) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var groupChannel = response;
+ var err = error;
+
+ if (swapParams) {
+ groupChannel = error;
+ err = response;
+ }
+
+ if (err) {
+ reject(err);
+ }
+
+ resolve(groupChannel);
+ });
+ return;
+ }
+
+ var params = new sdk.GroupChannelParams();
+ params.addUserIds(selectedUsers);
+ params.isDistinct = false;
+
+ if (userId) {
+ params.operatorUserIds = [userId];
+ }
+
+ setChannelType(params, type); // do not have custom params
+
+ sdk.GroupChannel.createChannel(params, function (response, error) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var groupChannel = response;
+ var err = error;
+
+ if (swapParams) {
+ groupChannel = error;
+ err = response;
+ }
+
+ if (err) {
+ reject(err);
+ }
+
+ resolve(groupChannel);
+ });
+ });
+};
+
+var LeaveChannel = function LeaveChannel(props) {
+ var onCloseModal = props.onCloseModal,
+ onLeaveChannel = props.onLeaveChannel;
+ return React__default.createElement(index.Modal, {
+ onCancel: onCloseModal,
+ onSubmit: onLeaveChannel,
+ submitText: "Leave",
+ titleText: "Leave this channel?"
+ });
+};
+
+LeaveChannel.propTypes = {
+ onCloseModal: PropTypes.func.isRequired,
+ onLeaveChannel: PropTypes.func.isRequired
+};
+
+exports.Badge = Badge;
+exports.InviteMembers = InviteMembers;
+exports.LeaveChannelModal = LeaveChannel;
+exports.createChannel = createChannel;
+exports.createDefaultUserListQuery = createDefaultUserListQuery;
+exports.isBroadcastChannelEnabled = isBroadcastChannelEnabled;
+exports.isSuperGroupChannelEnabled = isSuperGroupChannelEnabled;
+//# sourceMappingURL=LeaveChannel-4cf3cd9c.js.map
diff --git a/dist/cjs/LeaveChannel-4cf3cd9c.js.map b/dist/cjs/LeaveChannel-4cf3cd9c.js.map
new file mode 100644
index 0000000..2a43e0c
--- /dev/null
+++ b/dist/cjs/LeaveChannel-4cf3cd9c.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"LeaveChannel-da8b5d0b.js","sources":["../../../src/ui/Badge/index.jsx","../../../src/smart-components/InviteMembers/index.jsx","../../../src/smart-components/ChannelList/components/utils.js","../../../src/smart-components/ChannelSettings/components/LeaveChannel.jsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nexport default function Badge({\n count,\n maxLevel,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const maximumNumber = parseInt('9'.repeat((maxLevel > 6) ? 6 : maxLevel), 10);\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n
\n \n {\n (count > maximumNumber)\n ? `${maximumNumber}${stringSet.BADGE__OVER}`\n : count\n }\n \n
\n
\n );\n}\n\nBadge.propTypes = {\n count: PropTypes.number.isRequired,\n maxLevel: PropTypes.number,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nBadge.defaultProps = {\n maxLevel: 2,\n className: [],\n};\n","import React, { useState, useEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../../ui/Label';\nimport Modal from '../../ui/Modal';\nimport { Type as ButtonTypes } from '../../ui/Button/type';\nimport UserListItem from '../../ui/UserListItem';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nconst filterUser = (idsToFilter) => (currentId) => idsToFilter.includes(currentId);\n\nconst InviteMembers = (props) => {\n const {\n userQueryCreator,\n closeModal,\n onSubmit,\n submitText,\n titleText,\n idsToFilter,\n swapParams,\n } = props;\n\n const [users, setUsers] = useState([]);\n const [selectedUsers, setSelectedUsers] = useState({});\n const { stringSet } = useContext(LocalizationContext);\n const [usersDataSource, setUsersDataSource] = useState({});\n const selectedCount = Object.keys(selectedUsers).length;\n\n useEffect(() => {\n const applicationUserListQuery = userQueryCreator();\n setUsersDataSource(applicationUserListQuery);\n applicationUserListQuery.next((res, err) => {\n // eslint-disable-next-line no-underscore-dangle\n let users_ = res;\n let error = err;\n if (swapParams) {\n users_ = err;\n error = users_;\n }\n if (error) {\n return;\n }\n setUsers(users_);\n });\n }, []);\n\n return (\n {\n const selectedUserList = Object.keys(selectedUsers);\n if (selectedUserList.length > 0) {\n onSubmit(selectedUserList);\n closeModal();\n }\n }}\n submitText={submitText}\n titleText={titleText}\n type={ButtonTypes.PRIMARY}\n >\n \n
0) ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3}\n type={LabelTypography.CAPTION_1}\n >\n {`${selectedCount} ${stringSet.MODAL__INVITE_MEMBER__SELECTEC}`}\n \n
{\n const { hasNext } = usersDataSource;\n const fetchMore = (\n e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n usersDataSource.next((usersBatch, error) => {\n if (error) {\n return;\n }\n setUsers([\n ...users,\n ...usersBatch,\n ]);\n });\n }\n }}\n >\n {\n users.map((user) => (!filterUser(idsToFilter)(user.userId)) && (\n {\n const modifiedSelectedUsers = {\n ...selectedUsers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedUsers[event.target.id];\n }\n setSelectedUsers(modifiedSelectedUsers);\n }\n }\n />\n ))\n }\n
\n
\n \n );\n};\n\nInviteMembers.propTypes = {\n idsToFilter: PropTypes.arrayOf(PropTypes.string),\n swapParams: PropTypes.bool,\n userQueryCreator: PropTypes.func.isRequired,\n closeModal: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n submitText: PropTypes.string,\n titleText: PropTypes.string,\n};\nInviteMembers.defaultProps = {\n swapParams: false,\n submitText: 'create',\n titleText: 'Create new channel',\n idsToFilter: [],\n};\n\nexport default InviteMembers;\n","export const createDefaultUserListQuery = ({ sdk, userFilledApplicationUserListQuery = {} }) => {\n const params = sdk.createApplicationUserListQuery();\n if (userFilledApplicationUserListQuery) {\n Object.keys(userFilledApplicationUserListQuery).forEach((key) => {\n params[key] = userFilledApplicationUserListQuery[key];\n });\n }\n return params;\n};\n\nconst getApplicationAttributes = (sdk = {}) => {\n const { appInfo = {} } = sdk;\n const { applicationAttributes = [] } = appInfo;\n return applicationAttributes;\n};\n\nexport const isBroadcastChannelEnabled = (sdk = {}) => {\n const ALLOW_BROADCAST_CHANNEL = 'allow_broadcast_channel';\n const applicationAttributes = getApplicationAttributes(sdk);\n\n if (Array.isArray(applicationAttributes)) {\n return applicationAttributes.includes(ALLOW_BROADCAST_CHANNEL);\n }\n\n return false;\n};\nexport const isSuperGroupChannelEnabled = (sdk = {}) => {\n const ALLOW_SUPER_GROUP_CHANNEL = 'allow_super_group_channel';\n const applicationAttributes = getApplicationAttributes(sdk);\n\n if (Array.isArray(applicationAttributes)) {\n return applicationAttributes.includes(ALLOW_SUPER_GROUP_CHANNEL);\n }\n\n return false;\n};\n\nexport const setChannelType = (params, type) => {\n if (type === 'broadcast') {\n // eslint-disable-next-line no-param-reassign\n params.isBroadcast = true;\n }\n if (type === 'supergroup') {\n // eslint-disable-next-line no-param-reassign\n params.isSuper = true;\n }\n return params;\n};\n\nexport const createChannel = (\n sdk,\n selectedUsers,\n onBeforeCreateChannel,\n userId,\n type = 'group',\n) => new Promise((resolve, reject) => {\n // have custom params\n if (onBeforeCreateChannel) {\n const params = onBeforeCreateChannel(selectedUsers);\n setChannelType(params, type);\n sdk.GroupChannel.createChannel(params, (response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let groupChannel = response;\n let err = error;\n if (swapParams) {\n groupChannel = error;\n err = response;\n }\n if (err) {\n reject(err);\n }\n resolve(groupChannel);\n });\n return;\n }\n\n const params = new sdk.GroupChannelParams();\n params.addUserIds(selectedUsers);\n params.isDistinct = false;\n\n if (userId) {\n params.operatorUserIds = [userId];\n }\n setChannelType(params, type);\n // do not have custom params\n sdk.GroupChannel.createChannel(\n params,\n (response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let groupChannel = response;\n let err = error;\n if (swapParams) {\n groupChannel = error;\n err = response;\n }\n if (err) {\n reject(err);\n }\n resolve(groupChannel);\n },\n );\n});\n\nexport default createChannel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../../ui/Modal';\n\nconst LeaveChannel = (props) => {\n const {\n onCloseModal,\n onLeaveChannel,\n } = props;\n return (\n \n );\n};\n\nLeaveChannel.propTypes = {\n onCloseModal: PropTypes.func.isRequired,\n onLeaveChannel: PropTypes.func.isRequired,\n};\n\nexport default LeaveChannel;\n"],"names":["Badge","count","maxLevel","className","useContext","LocalizationContext","stringSet","maximumNumber","parseInt","repeat","injectingClassName","Array","isArray","React","join","Label","LabelTypography","CAPTION_2","LabelColors","ONCONTENT_1","BADGE__OVER","propTypes","PropTypes","number","isRequired","oneOfType","string","arrayOf","defaultProps","filterUser","idsToFilter","currentId","includes","InviteMembers","props","userQueryCreator","closeModal","onSubmit","submitText","titleText","swapParams","useState","users","setUsers","selectedUsers","setSelectedUsers","usersDataSource","setUsersDataSource","selectedCount","Object","keys","length","useEffect","applicationUserListQuery","next","res","err","users_","error","Modal","selectedUserList","ButtonTypes","PRIMARY","ONBACKGROUND_3","CAPTION_1","MODAL__INVITE_MEMBER__SELECTEC","e","hasNext","fetchMore","target","clientHeight","scrollTop","scrollHeight","usersBatch","map","user","userId","UserListItem","event","modifiedSelectedUsers","id","checked","bool","func","createDefaultUserListQuery","sdk","userFilledApplicationUserListQuery","params","createApplicationUserListQuery","forEach","key","getApplicationAttributes","appInfo","applicationAttributes","isBroadcastChannelEnabled","ALLOW_BROADCAST_CHANNEL","isSuperGroupChannelEnabled","ALLOW_SUPER_GROUP_CHANNEL","setChannelType","type","isBroadcast","isSuper","createChannel","onBeforeCreateChannel","Promise","resolve","reject","GroupChannel","response","getErrorFirstCallback","groupChannel","GroupChannelParams","addUserIds","isDistinct","operatorUserIds","LeaveChannel","onCloseModal","onLeaveChannel"],"mappings":";;;;;;;;;;;AAOe,SAASA,KAAT,OAIZ;AAAA,MAHDC,KAGC,QAHDA,KAGC;AAAA,MAFDC,QAEC,QAFDA,QAEC;AAAA,MADDC,SACC,QADDA,SACC;;AAAA,oBACqBC,gBAAU,CAACC,uCAAD,CAD/B;AAAA,MACOC,SADP,eACOA,SADP;;AAED,MAAMC,aAAa,GAAGC,QAAQ,CAAC,IAAIC,MAAJ,CAAYP,QAAQ,GAAG,CAAZ,GAAiB,CAAjB,GAAqBA,QAAhC,CAAD,EAA4C,EAA5C,CAA9B;AACA,MAAMQ,kBAAkB,GAAIC,KAAK,CAACC,OAAN,CAAcT,SAAd,CAAD,GAA6BA,SAA7B,GAAyC,CAACA,SAAD,CAApE;AACA,SACEU;AAAK,IAAA,SAAS,EAAE,iDAAIH,kBAAJ,IAAwB,gBAAxB,GAA0CI,IAA1C,CAA+C,GAA/C;AAAhB,KACED;AAAK,IAAA,SAAS,EAAC;AAAf,KACEA,6BAACE,WAAD;AAAO,IAAA,IAAI,EAAEC,qBAAe,CAACC,SAA7B;AAAwC,IAAA,KAAK,EAAEC,iBAAW,CAACC;AAA3D,KAEKlB,KAAK,GAAGM,aAAT,aACOA,aADP,SACuBD,SAAS,CAACc,WADjC,IAEInB,KAJR,CADF,CADF,CADF;AAaD;AAEDD,KAAK,CAACqB,SAAN,GAAkB;AAChBpB,EAAAA,KAAK,EAAEqB,SAAS,CAACC,MAAV,CAAiBC,UADR;AAEhBtB,EAAAA,QAAQ,EAAEoB,SAAS,CAACC,MAFJ;AAGhBpB,EAAAA,SAAS,EAAEmB,SAAS,CAACG,SAAV,CAAoB,CAC7BH,SAAS,CAACI,MADmB,EAE7BJ,SAAS,CAACK,OAAV,CAAkBL,SAAS,CAACI,MAA5B,CAF6B,CAApB;AAHK,CAAlB;AASA1B,KAAK,CAAC4B,YAAN,GAAqB;AACnB1B,EAAAA,QAAQ,EAAE,CADS;AAEnBC,EAAAA,SAAS,EAAE;AAFQ,CAArB;;AC7BA,IAAM0B,UAAU,GAAG,SAAbA,UAAa,CAACC,WAAD;AAAA,SAAiB,UAACC,SAAD;AAAA,WAAeD,WAAW,CAACE,QAAZ,CAAqBD,SAArB,CAAf;AAAA,GAAjB;AAAA,CAAnB;;AAEA,IAAME,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAW;AAAA,MAE7BC,gBAF6B,GAS3BD,KAT2B,CAE7BC,gBAF6B;AAAA,MAG7BC,UAH6B,GAS3BF,KAT2B,CAG7BE,UAH6B;AAAA,MAI7BC,SAJ6B,GAS3BH,KAT2B,CAI7BG,QAJ6B;AAAA,MAK7BC,UAL6B,GAS3BJ,KAT2B,CAK7BI,UAL6B;AAAA,MAM7BC,SAN6B,GAS3BL,KAT2B,CAM7BK,SAN6B;AAAA,MAO7BT,WAP6B,GAS3BI,KAT2B,CAO7BJ,WAP6B;AAAA,MAQ7BU,UAR6B,GAS3BN,KAT2B,CAQ7BM,UAR6B;;AAAA,kBAWLC,cAAQ,CAAC,EAAD,CAXH;AAAA;AAAA,MAWxBC,KAXwB;AAAA,MAWjBC,QAXiB;;AAAA,mBAYWF,cAAQ,CAAC,EAAD,CAZnB;AAAA;AAAA,MAYxBG,aAZwB;AAAA,MAYTC,gBAZS;;AAAA,oBAaTzC,gBAAU,CAACC,uCAAD,CAbD;AAAA,MAavBC,SAbuB,eAavBA,SAbuB;;AAAA,mBAcemC,cAAQ,CAAC,EAAD,CAdvB;AAAA;AAAA,MAcxBK,eAdwB;AAAA,MAcPC,kBAdO;;AAe/B,MAAMC,aAAa,GAAGC,MAAM,CAACC,IAAP,CAAYN,aAAZ,EAA2BO,MAAjD;AAEAC,EAAAA,eAAS,CAAC,YAAM;AACd,QAAMC,wBAAwB,GAAGlB,gBAAgB,EAAjD;AACAY,IAAAA,kBAAkB,CAACM,wBAAD,CAAlB;AACAA,IAAAA,wBAAwB,CAACC,IAAzB,CAA8B,UAACC,GAAD,EAAMC,GAAN,EAAc;AAC1C;AACA,UAAIC,MAAM,GAAGF,GAAb;AACA,UAAIG,KAAK,GAAGF,GAAZ;;AACA,UAAIhB,UAAJ,EAAgB;AACdiB,QAAAA,MAAM,GAAGD,GAAT;AACAE,QAAAA,KAAK,GAAGD,MAAR;AACD;;AACD,UAAIC,KAAJ,EAAW;AACT;AACD;;AACDf,MAAAA,QAAQ,CAACc,MAAD,CAAR;AACD,KAZD;AAaD,GAhBQ,EAgBN,EAhBM,CAAT;AAkBA,SACE5C,6BAAC8C,WAAD;AACE,IAAA,QAAQ,EAAEvB,UADZ;AAEE,IAAA,QAAQ,EAAE,oBAAM;AACd,UAAMwB,gBAAgB,GAAGX,MAAM,CAACC,IAAP,CAAYN,aAAZ,CAAzB;;AACA,UAAIgB,gBAAgB,CAACT,MAAjB,GAA0B,CAA9B,EAAiC;AAC/Bd,QAAAA,SAAQ,CAACuB,gBAAD,CAAR;;AACAxB,QAAAA,UAAU;AACX;AACF,KARH;AASE,IAAA,UAAU,EAAEE,UATd;AAUE,IAAA,SAAS,EAAEC,SAVb;AAWE,IAAA,IAAI,EAAEsB,UAAW,CAACC;AAXpB,KAaEjD,0CACEA,6BAACE,WAAD;AACE,IAAA,KAAK,EAAGiC,aAAa,GAAG,CAAjB,GAAsB9B,iBAAW,CAAC4C,OAAlC,GAA4C5C,iBAAW,CAAC6C,cADjE;AAEE,IAAA,IAAI,EAAE/C,qBAAe,CAACgD;AAFxB,eAIMhB,aAJN,cAIuB1C,SAAS,CAAC2D,8BAJjC,EADF,EAOEpD;AACE,IAAA,SAAS,EAAC,iCADZ;AAEE,IAAA,QAAQ,EAAE,kBAACqD,CAAD,EAAO;AAAA,UACPC,OADO,GACKrB,eADL,CACPqB,OADO;AAEf,UAAMC,SAAS,GACbF,CAAC,CAACG,MAAF,CAASC,YAAT,GAAwBJ,CAAC,CAACG,MAAF,CAASE,SAAjC,KAA+CL,CAAC,CAACG,MAAF,CAASG,YAD1D;;AAIA,UAAIL,OAAO,IAAIC,SAAf,EAA0B;AACxBtB,QAAAA,eAAe,CAACQ,IAAhB,CAAqB,UAACmB,UAAD,EAAaf,KAAb,EAAuB;AAC1C,cAAIA,KAAJ,EAAW;AACT;AACD;;AACDf,UAAAA,QAAQ,kDACHD,KADG,0CAEH+B,UAFG,GAAR;AAID,SARD;AASD;AACF;AAnBH,KAsBI/B,KAAK,CAACgC,GAAN,CAAU,UAACC,IAAD;AAAA,WAAW,CAAC9C,UAAU,CAACC,WAAD,CAAV,CAAwB6C,IAAI,CAACC,MAA7B,CAAF,IAClB/D,6BAACgE,oBAAD;AACE,MAAA,GAAG,EAAEF,IAAI,CAACC,MADZ;AAEE,MAAA,IAAI,EAAED,IAFR;AAGE,MAAA,QAAQ,MAHV;AAIE,MAAA,OAAO,EAAE/B,aAAa,CAAC+B,IAAI,CAACC,MAAN,CAJxB;AAKE,MAAA,QAAQ,EACN,kBAACE,KAAD,EAAW;AACT,YAAMC,qBAAqB,0CACtBnC,aADsB,0CAExBkC,KAAK,CAACT,MAAN,CAAaW,EAFW,EAENF,KAAK,CAACT,MAAN,CAAaY,OAFP,EAA3B;;AAIA,YAAI,CAACH,KAAK,CAACT,MAAN,CAAaY,OAAlB,EAA2B;AACzB,iBAAOF,qBAAqB,CAACD,KAAK,CAACT,MAAN,CAAaW,EAAd,CAA5B;AACD;;AACDnC,QAAAA,gBAAgB,CAACkC,qBAAD,CAAhB;AACD;AAfL,MADQ;AAAA,GAAV,CAtBJ,CAPF,CAbF,CADF;AAoED,CAvGD;;AAyGA9C,aAAa,CAACZ,SAAd,GAA0B;AACxBS,EAAAA,WAAW,EAAER,SAAS,CAACK,OAAV,CAAkBL,SAAS,CAACI,MAA5B,CADW;AAExBc,EAAAA,UAAU,EAAElB,SAAS,CAAC4D,IAFE;AAGxB/C,EAAAA,gBAAgB,EAAEb,SAAS,CAAC6D,IAAV,CAAe3D,UAHT;AAIxBY,EAAAA,UAAU,EAAEd,SAAS,CAAC6D,IAAV,CAAe3D,UAJH;AAKxBa,EAAAA,QAAQ,EAAEf,SAAS,CAAC6D,IAAV,CAAe3D,UALD;AAMxBc,EAAAA,UAAU,EAAEhB,SAAS,CAACI,MANE;AAOxBa,EAAAA,SAAS,EAAEjB,SAAS,CAACI;AAPG,CAA1B;AASAO,aAAa,CAACL,YAAd,GAA6B;AAC3BY,EAAAA,UAAU,EAAE,KADe;AAE3BF,EAAAA,UAAU,EAAE,QAFe;AAG3BC,EAAAA,SAAS,EAAE,oBAHgB;AAI3BT,EAAAA,WAAW,EAAE;AAJc,CAA7B;;IC9HasD,0BAA0B,GAAG,SAA7BA,0BAA6B,OAAsD;AAAA,MAAnDC,GAAmD,QAAnDA,GAAmD;AAAA,mCAA9CC,kCAA8C;AAAA,MAA9CA,kCAA8C,sCAAT,EAAS;AAC9F,MAAMC,MAAM,GAAGF,GAAG,CAACG,8BAAJ,EAAf;;AACA,MAAIF,kCAAJ,EAAwC;AACtCrC,IAAAA,MAAM,CAACC,IAAP,CAAYoC,kCAAZ,EAAgDG,OAAhD,CAAwD,UAACC,GAAD,EAAS;AAC/DH,MAAAA,MAAM,CAACG,GAAD,CAAN,GAAcJ,kCAAkC,CAACI,GAAD,CAAhD;AACD,KAFD;AAGD;;AACD,SAAOH,MAAP;AACD,CARM;;AAUP,IAAMI,wBAAwB,GAAG,SAA3BA,wBAA2B,GAAc;AAAA,MAAbN,GAAa,uEAAP,EAAO;AAAA,qBACpBA,GADoB,CACrCO,OADqC;AAAA,MACrCA,OADqC,6BAC3B,EAD2B;AAAA,8BAENA,OAFM,CAErCC,qBAFqC;AAAA,MAErCA,qBAFqC,sCAEb,EAFa;AAG7C,SAAOA,qBAAP;AACD,CAJD;;AAMA,IAAaC,yBAAyB,GAAG,SAA5BA,yBAA4B,GAAc;AAAA,MAAbT,GAAa,uEAAP,EAAO;AACrD,MAAMU,uBAAuB,GAAG,yBAAhC;AACA,MAAMF,qBAAqB,GAAGF,wBAAwB,CAACN,GAAD,CAAtD;;AAEA,MAAI1E,KAAK,CAACC,OAAN,CAAciF,qBAAd,CAAJ,EAA0C;AACxC,WAAOA,qBAAqB,CAAC7D,QAAtB,CAA+B+D,uBAA/B,CAAP;AACD;;AAED,SAAO,KAAP;AACD,CATM;AAUP,IAAaC,0BAA0B,GAAG,SAA7BA,0BAA6B,GAAc;AAAA,MAAbX,GAAa,uEAAP,EAAO;AACtD,MAAMY,yBAAyB,GAAG,2BAAlC;AACA,MAAMJ,qBAAqB,GAAGF,wBAAwB,CAACN,GAAD,CAAtD;;AAEA,MAAI1E,KAAK,CAACC,OAAN,CAAciF,qBAAd,CAAJ,EAA0C;AACxC,WAAOA,qBAAqB,CAAC7D,QAAtB,CAA+BiE,yBAA/B,CAAP;AACD;;AAED,SAAO,KAAP;AACD,CATM;AAWP,AAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACX,MAAD,EAASY,IAAT,EAAkB;AAC9C,MAAIA,IAAI,KAAK,WAAb,EAA0B;AACxB;AACAZ,IAAAA,MAAM,CAACa,WAAP,GAAqB,IAArB;AACD;;AACD,MAAID,IAAI,KAAK,YAAb,EAA2B;AACzB;AACAZ,IAAAA,MAAM,CAACc,OAAP,GAAiB,IAAjB;AACD;;AACD,SAAOd,MAAP;AACD,CAVM;AAYP,IAAae,aAAa,GAAG,SAAhBA,aAAgB,CAC3BjB,GAD2B,EAE3BzC,aAF2B,EAG3B2D,qBAH2B,EAI3B3B,MAJ2B;AAAA,MAK3BuB,IAL2B,uEAKpB,OALoB;AAAA,SAMxB,IAAIK,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACpC;AACA,QAAIH,qBAAJ,EAA2B;AACzB,UAAMhB,OAAM,GAAGgB,qBAAqB,CAAC3D,aAAD,CAApC;;AACAsD,MAAAA,cAAc,CAACX,OAAD,EAASY,IAAT,CAAd;AACAd,MAAAA,GAAG,CAACsB,YAAJ,CAAiBL,aAAjB,CAA+Bf,OAA/B,EAAuC,UAACqB,QAAD,EAAWlD,KAAX,EAAqB;AAC1D,YAAMlB,UAAU,GAAG6C,GAAG,CAACwB,qBAAJ,EAAnB;AACA,YAAIC,YAAY,GAAGF,QAAnB;AACA,YAAIpD,GAAG,GAAGE,KAAV;;AACA,YAAIlB,UAAJ,EAAgB;AACdsE,UAAAA,YAAY,GAAGpD,KAAf;AACAF,UAAAA,GAAG,GAAGoD,QAAN;AACD;;AACD,YAAIpD,GAAJ,EAAS;AACPkD,UAAAA,MAAM,CAAClD,GAAD,CAAN;AACD;;AACDiD,QAAAA,OAAO,CAACK,YAAD,CAAP;AACD,OAZD;AAaA;AACD;;AAED,QAAMvB,MAAM,GAAG,IAAIF,GAAG,CAAC0B,kBAAR,EAAf;AACAxB,IAAAA,MAAM,CAACyB,UAAP,CAAkBpE,aAAlB;AACA2C,IAAAA,MAAM,CAAC0B,UAAP,GAAoB,KAApB;;AAEA,QAAIrC,MAAJ,EAAY;AACVW,MAAAA,MAAM,CAAC2B,eAAP,GAAyB,CAACtC,MAAD,CAAzB;AACD;;AACDsB,IAAAA,cAAc,CAACX,MAAD,EAASY,IAAT,CAAd,CA5BoC;;AA8BpCd,IAAAA,GAAG,CAACsB,YAAJ,CAAiBL,aAAjB,CACEf,MADF,EAEE,UAACqB,QAAD,EAAWlD,KAAX,EAAqB;AACnB,UAAMlB,UAAU,GAAG6C,GAAG,CAACwB,qBAAJ,EAAnB;AACA,UAAIC,YAAY,GAAGF,QAAnB;AACA,UAAIpD,GAAG,GAAGE,KAAV;;AACA,UAAIlB,UAAJ,EAAgB;AACdsE,QAAAA,YAAY,GAAGpD,KAAf;AACAF,QAAAA,GAAG,GAAGoD,QAAN;AACD;;AACD,UAAIpD,GAAJ,EAAS;AACPkD,QAAAA,MAAM,CAAClD,GAAD,CAAN;AACD;;AACDiD,MAAAA,OAAO,CAACK,YAAD,CAAP;AACD,KAdH;AAgBD,GA9CI,CANwB;AAAA,CAAtB;;AC5CP,IAAMK,YAAY,GAAG,SAAfA,YAAe,CAACjF,KAAD,EAAW;AAAA,MAE5BkF,YAF4B,GAI1BlF,KAJ0B,CAE5BkF,YAF4B;AAAA,MAG5BC,cAH4B,GAI1BnF,KAJ0B,CAG5BmF,cAH4B;AAK9B,SACExG,6BAAC8C,WAAD;AACE,IAAA,QAAQ,EAAEyD,YADZ;AAEE,IAAA,QAAQ,EAAEC,cAFZ;AAGE,IAAA,UAAU,EAAC,OAHb;AAIE,IAAA,SAAS,EAAC;AAJZ,IADF;AAQD,CAbD;;AAeAF,YAAY,CAAC9F,SAAb,GAAyB;AACvB+F,EAAAA,YAAY,EAAE9F,SAAS,CAAC6D,IAAV,CAAe3D,UADN;AAEvB6F,EAAAA,cAAc,EAAE/F,SAAS,CAAC6D,IAAV,CAAe3D;AAFR,CAAzB;;;;;;;;;;"}
\ No newline at end of file
diff --git a/dist/cjs/LocalizationContext-7c9df62c.js b/dist/cjs/LocalizationContext-7c9df62c.js
new file mode 100644
index 0000000..3a72a28
--- /dev/null
+++ b/dist/cjs/LocalizationContext-7c9df62c.js
@@ -0,0 +1,383 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var React = require('react');
+var React__default = _interopDefault(React);
+
+function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+}
+
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+}
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+
+ return obj;
+}
+
+function ownKeys(object, enumerableOnly) {
+ var keys = Object.keys(object);
+
+ if (Object.getOwnPropertySymbols) {
+ var symbols = Object.getOwnPropertySymbols(object);
+ if (enumerableOnly) symbols = symbols.filter(function (sym) {
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+ });
+ keys.push.apply(keys, symbols);
+ }
+
+ return keys;
+}
+
+function _objectSpread2(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? arguments[i] : {};
+
+ if (i % 2) {
+ ownKeys(Object(source), true).forEach(function (key) {
+ _defineProperty(target, key, source[key]);
+ });
+ } else if (Object.getOwnPropertyDescriptors) {
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+ } else {
+ ownKeys(Object(source)).forEach(function (key) {
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+ });
+ }
+ }
+
+ return target;
+}
+
+function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) _setPrototypeOf(subClass, superClass);
+}
+
+function _getPrototypeOf(o) {
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+ return o.__proto__ || Object.getPrototypeOf(o);
+ };
+ return _getPrototypeOf(o);
+}
+
+function _setPrototypeOf(o, p) {
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+
+ return _setPrototypeOf(o, p);
+}
+
+function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return self;
+}
+
+function _possibleConstructorReturn(self, call) {
+ if (call && (typeof call === "object" || typeof call === "function")) {
+ return call;
+ }
+
+ return _assertThisInitialized(self);
+}
+
+function _slicedToArray(arr, i) {
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
+}
+
+function _toConsumableArray(arr) {
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+}
+
+function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ }
+}
+
+function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+}
+
+function _iterableToArray(iter) {
+ if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+}
+
+function _iterableToArrayLimit(arr, i) {
+ if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
+ return;
+ }
+
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+ var _e = undefined;
+
+ try {
+ for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+}
+
+function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
+}
+
+function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance");
+}
+
+var SendbirdSdkContext = React__default.createContext();
+
+var withSendbirdContext = function withSendbirdContext(OriginalComponent, mapStoreToProps) {
+ var ContextAwareComponent = function ContextAwareComponent(props) {
+ return React__default.createElement(SendbirdSdkContext.Consumer, null, function (context) {
+ if (mapStoreToProps && typeof mapStoreToProps !== 'function') {
+ // eslint-disable-next-line no-console
+ console.warn('Second parameter to withSendbirdContext must be a pure function');
+ } // todo - memoize
+
+
+ var mergedProps = mapStoreToProps && typeof mapStoreToProps === 'function' ? _objectSpread2({}, mapStoreToProps(context), {}, props) : _objectSpread2({}, context, {}, props); // eslint-disable-next-line react/jsx-props-no-spreading
+
+ return React__default.createElement(OriginalComponent, mergedProps);
+ });
+ };
+
+ var componentName = OriginalComponent.displayName || OriginalComponent.name || 'Component';
+ ContextAwareComponent.displayName = "SendbirdAware".concat(componentName);
+ return ContextAwareComponent;
+};
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+exports.__assign = function() {
+ exports.__assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
+ };
+ return exports.__assign.apply(this, arguments);
+};
+
+function __spreadArrays() {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+ r[k] = a[j];
+ return r;
+}
+
+/* eslint-disable no-bitwise */
+
+/* eslint-disable eqeqeq */
+
+/* eslint-disable no-mixed-operators */
+// https://stackoverflow.com/a/2117523
+// used mainly for dom key generation
+var uuidv4 = function uuidv4() {
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+ var r = Math.random() * 16 | 0;
+ var v = c === 'x' ? r : r & 0x3 | 0x8;
+ return v.toString(16);
+ });
+};
+
+var getStringSet = function getStringSet() {
+ var lang = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
+ var stringSet = {
+ en: {
+ OPEN_CHANNEL_SETTINGS__OPERATOR_TITLE: 'Channel Information',
+ OPEN_CHANNEL_SETTINGS__OPERATOR_URL: 'URL',
+ OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE: 'Participants',
+ OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL: 'Delete channel',
+ OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE: 'Delete this channel',
+ OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT: 'Delete',
+ OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE: 'Participants',
+ OPEN_CHANNEL_SETTINGS__EMPTY_LIST: 'No participants yet',
+ OPEN_CHANNEL_SETTINGS__SEE_ALL: 'See all participants',
+ OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE: 'All participants',
+ OPEN_CHANNEL_SETTINGS__NO_TITLE: '(No title)',
+ OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS: 'participants',
+ TRYING_TO_CONNECT: 'Trying to connect…',
+ USER_PROFILE__MESSAGE: 'Message',
+ USER_PROFILE__USER_ID: 'User ID',
+ EDIT_PROFILE__TITLE: 'My profile',
+ EDIT_PROFILE__IMAGE_LABEL: 'Profile image',
+ EDIT_PROFILE__IMAGE_UPLOAD: 'Upload',
+ EDIT_PROFILE__NICKNAME_LABEL: 'Nickname',
+ EDIT_PROFILE__NICKNAME_PLACEHOLDER: 'Enter your nickname',
+ EDIT_PROFILE__USERID_LABEL: 'User ID',
+ EDIT_PROFILE__THEME_LABEL: 'Dark theme',
+ CHANNEL_LIST__TITLE: 'Channels',
+ CHANNEL__MESSAGE_INPUT__PLACE_HOLDER: 'Enter message',
+ CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED: 'Chat is unavailable in this channel',
+ CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED: 'Chat is unavailable because you are being muted',
+ CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE: 'new message(s) since',
+ CHANNEL__MESSAGE_LIST__NOTIFICATION__ON: 'on',
+ CHANNEL_SETTING__HEADER__TITLE: 'Channel information',
+ CHANNEL_SETTING__PROFILE__EDIT: 'Edit',
+ CHANNEL_SETTING__MEMBERS__TITLE: 'Members',
+ CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS: 'All members',
+ CHANNEL_SETTING__MEMBERS__INVITE_MEMBER: 'Invite users',
+ CHANNEL_SETTING__LEAVE_CHANNEL__TITLE: 'Leave channel',
+ CHANNEL_SETTING__OPERATORS__TITLE: 'Operators',
+ CHANNEL_SETTING__OPERATORS__TITLE_ALL: 'All operators',
+ CHANNEL_SETTING__OPERATORS__TITLE_ADD: 'Add operator',
+ CHANNEL_SETTING__MUTED_MEMBERS__TITLE: 'Muted members',
+ CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL: 'All muted members',
+ CHANNEL_SETTING__BANNED_MEMBERS__TITLE: 'Banned members',
+ CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL: 'All banned members',
+ CHANNEL_SETTING__FREEZE_CHANNEL: 'Freeze Channel',
+ BUTTON__CANCEL: 'Cancel',
+ BUTTON__DELETE: 'Delete',
+ BUTTON__SAVE: 'Save',
+ BUTTON__CREATE: 'Create',
+ BUTTON__INVITE: 'Invite',
+ BUTTON__CLOSE: 'Close',
+ BADGE__OVER: '+',
+ MODAL__DELETE_MESSAGE__TITLE: 'Delete this message?',
+ MODAL__CHANNEL_INFORMATION__TITLE: 'Edit channel information',
+ MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE: 'Channel image',
+ MODAL__CHANNEL_INFORMATION__UPLOAD: 'Upload',
+ MODAL__CHANNEL_INFORMATION__CHANNEL_NAME: 'Channel name',
+ MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER: 'Enter name',
+ MODAL__INVITE_MEMBER__TITLE: 'Invite member',
+ MODAL__INVITE_MEMBER__SELECTEC: 'selected',
+ MODAL__CREATE_CHANNEL__TITLE: 'New channel',
+ MODAL__CREATE_CHANNEL__SELECTED: 'selected',
+ MODAL__USER_LIST__TITLE: 'members',
+ TYPING_INDICATOR__IS_TYPING: 'is typing...',
+ TYPING_INDICATOR__AND: 'and',
+ TYPING_INDICATOR__ARE_TYPING: 'are typing...',
+ TYPING_INDICATOR__MULTIPLE_TYPING: 'Several people are typing...',
+ MESSAGE_STATUS__SENDING_FAILED: 'Couldn\'t send message.',
+ MESSAGE_STATUS__TRY_AGAIN: 'Try again',
+ MESSAGE_STATUS__OR: 'or',
+ MESSAGE_STATUS__DELETE: 'delete',
+ PLACE_HOLDER__NO_CHANNEL: 'No channels',
+ CHANNEL_FROZEN: 'Channel frozen',
+ MUTED_PL: 'Channel frozen',
+ PLACE_HOLDER__WRONG: 'Something went wrong',
+ PLACE_HOLDER__RETRY_TO_CONNECT: 'Retry',
+ NO_TITLE: 'No title',
+ NO_NAME: '(No name)',
+ NO_MEMBERS: '(No members)',
+ TOOLTIP__AND_YOU: ', and you',
+ TOOLTIP__YOU: 'you',
+ TOOLTIP__UNKOWN_USER: '(no name)',
+ UNKNOWN__UNKNOWN_MESSAGE_TYPE: '(Unknown message type)',
+ UNKNOWN__CANNOT_READ_MESSAGE: 'Cannot read this message.',
+ MESSAGE_EDITED: '(edited)',
+ CONTEXT_MENU_DROPDOWN__COPY: 'Copy',
+ CONTEXT_MENU_DROPDOWN__EDIT: 'Edit',
+ CONTEXT_MENU_DROPDOWN__RESEND: 'Resend',
+ CONTEXT_MENU_DROPDOWN__DELETE: 'Delete'
+ }
+ };
+ return stringSet[lang];
+};
+
+var LocalizationContext = React__default.createContext({
+ stringSet: getStringSet('en')
+});
+
+var LocalizationProvider = function LocalizationProvider(props) {
+ var children = props.children;
+ return React__default.createElement(LocalizationContext.Provider, {
+ value: props
+ }, children);
+};
+
+exports.LocalizationContext = LocalizationContext;
+exports.LocalizationProvider = LocalizationProvider;
+exports.SendbirdSdkContext = SendbirdSdkContext;
+exports.__spreadArrays = __spreadArrays;
+exports._assertThisInitialized = _assertThisInitialized;
+exports._classCallCheck = _classCallCheck;
+exports._createClass = _createClass;
+exports._defineProperty = _defineProperty;
+exports._getPrototypeOf = _getPrototypeOf;
+exports._inherits = _inherits;
+exports._objectSpread2 = _objectSpread2;
+exports._possibleConstructorReturn = _possibleConstructorReturn;
+exports._slicedToArray = _slicedToArray;
+exports._toConsumableArray = _toConsumableArray;
+exports.getStringSet = getStringSet;
+exports.uuidv4 = uuidv4;
+exports.uuidv4$1 = uuidv4;
+exports.withSendbirdContext = withSendbirdContext;
+//# sourceMappingURL=LocalizationContext-7c9df62c.js.map
diff --git a/dist/cjs/LocalizationContext-7c9df62c.js.map b/dist/cjs/LocalizationContext-7c9df62c.js.map
new file mode 100644
index 0000000..d58f756
--- /dev/null
+++ b/dist/cjs/LocalizationContext-7c9df62c.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"LocalizationContext-619bafba.js","sources":["../../../src/lib/SendbirdSdkContext.jsx","../../../node_modules/tslib/tslib.es6.js","../../../src/utils/uuid.ts","../../../src/ui/Label/stringSet.js","../../../src/lib/LocalizationContext.tsx"],"sourcesContent":["import React from 'react';\n\nexport const SendbirdSdkContext = React.createContext();\n\nconst withSendbirdContext = (OriginalComponent, mapStoreToProps) => {\n const ContextAwareComponent = (props) => (\n \n {(context) => {\n if (mapStoreToProps && typeof mapStoreToProps !== 'function') {\n // eslint-disable-next-line no-console\n console.warn('Second parameter to withSendbirdContext must be a pure function');\n }\n // todo - memoize\n const mergedProps = (mapStoreToProps && typeof mapStoreToProps === 'function')\n ? { ...mapStoreToProps(context), ...props }\n : { ...context, ...props };\n // eslint-disable-next-line react/jsx-props-no-spreading\n return ;\n }}\n \n );\n\n const componentName = OriginalComponent.displayName || OriginalComponent.name || 'Component';\n ContextAwareComponent.displayName = `SendbirdAware${componentName}`;\n\n return ContextAwareComponent;\n};\n\nexport default withSendbirdContext;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* eslint-disable no-bitwise */\n/* eslint-disable eqeqeq */\n/* eslint-disable no-mixed-operators */\n// https://stackoverflow.com/a/2117523\n// used mainly for dom key generation\nexport const uuidv4 = (): string => 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n});\n\nexport default uuidv4;\n","const getStringSet = (lang = 'en') => {\n const stringSet = {\n en: {\n OPEN_CHANNEL_SETTINGS__OPERATOR_TITLE: 'Channel Information',\n OPEN_CHANNEL_SETTINGS__OPERATOR_URL: 'URL',\n OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE: 'Participants',\n OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL: 'Delete channel',\n OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE: 'Delete this channel',\n OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT: 'Delete',\n OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE: 'Participants',\n OPEN_CHANNEL_SETTINGS__EMPTY_LIST: 'No participants yet',\n OPEN_CHANNEL_SETTINGS__SEE_ALL: 'See all participants',\n OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE: 'All participants',\n OPEN_CHANNEL_SETTINGS__NO_TITLE: '(No title)',\n OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS: 'participants',\n TRYING_TO_CONNECT: 'Trying to connect…',\n USER_PROFILE__MESSAGE: 'Message',\n USER_PROFILE__USER_ID: 'User ID',\n EDIT_PROFILE__TITLE: 'My profile',\n EDIT_PROFILE__IMAGE_LABEL: 'Profile image',\n EDIT_PROFILE__IMAGE_UPLOAD: 'Upload',\n EDIT_PROFILE__NICKNAME_LABEL: 'Nickname',\n EDIT_PROFILE__NICKNAME_PLACEHOLDER: 'Enter your nickname',\n EDIT_PROFILE__USERID_LABEL: 'User ID',\n EDIT_PROFILE__THEME_LABEL: 'Dark theme',\n CHANNEL_LIST__TITLE: 'Channels',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER: 'Enter message',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED: 'Chat is unavailable in this channel',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED: 'Chat is unavailable because you are being muted',\n CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE: 'new message(s) since',\n CHANNEL__MESSAGE_LIST__NOTIFICATION__ON: 'on',\n CHANNEL_SETTING__HEADER__TITLE: 'Channel information',\n CHANNEL_SETTING__PROFILE__EDIT: 'Edit',\n CHANNEL_SETTING__MEMBERS__TITLE: 'Members',\n CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS: 'All members',\n CHANNEL_SETTING__MEMBERS__INVITE_MEMBER: 'Invite users',\n CHANNEL_SETTING__LEAVE_CHANNEL__TITLE: 'Leave channel',\n CHANNEL_SETTING__OPERATORS__TITLE: 'Operators',\n CHANNEL_SETTING__OPERATORS__TITLE_ALL: 'All operators',\n CHANNEL_SETTING__OPERATORS__TITLE_ADD: 'Add operator',\n CHANNEL_SETTING__MUTED_MEMBERS__TITLE: 'Muted members',\n CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL: 'All muted members',\n CHANNEL_SETTING__BANNED_MEMBERS__TITLE: 'Banned members',\n CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL: 'All banned members',\n CHANNEL_SETTING__FREEZE_CHANNEL: 'Freeze Channel',\n BUTTON__CANCEL: 'Cancel',\n BUTTON__DELETE: 'Delete',\n BUTTON__SAVE: 'Save',\n BUTTON__CREATE: 'Create',\n BUTTON__INVITE: 'Invite',\n BUTTON__CLOSE: 'Close',\n BADGE__OVER: '+',\n MODAL__DELETE_MESSAGE__TITLE: 'Delete this message?',\n MODAL__CHANNEL_INFORMATION__TITLE: 'Edit channel information',\n MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE: 'Channel image',\n MODAL__CHANNEL_INFORMATION__UPLOAD: 'Upload',\n MODAL__CHANNEL_INFORMATION__CHANNEL_NAME: 'Channel name',\n MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER: 'Enter name',\n MODAL__INVITE_MEMBER__TITLE: 'Invite member',\n MODAL__INVITE_MEMBER__SELECTEC: 'selected',\n MODAL__CREATE_CHANNEL__TITLE: 'New channel',\n MODAL__CREATE_CHANNEL__SELECTED: 'selected',\n MODAL__USER_LIST__TITLE: 'members',\n TYPING_INDICATOR__IS_TYPING: 'is typing...',\n TYPING_INDICATOR__AND: 'and',\n TYPING_INDICATOR__ARE_TYPING: 'are typing...',\n TYPING_INDICATOR__MULTIPLE_TYPING: 'Several people are typing...',\n MESSAGE_STATUS__SENDING_FAILED: 'Couldn\\'t send message.',\n MESSAGE_STATUS__TRY_AGAIN: 'Try again',\n MESSAGE_STATUS__OR: 'or',\n MESSAGE_STATUS__DELETE: 'delete',\n PLACE_HOLDER__NO_CHANNEL: 'No channels',\n CHANNEL_FROZEN: 'Channel frozen',\n MUTED_PL: 'Channel frozen',\n PLACE_HOLDER__WRONG: 'Something went wrong',\n PLACE_HOLDER__RETRY_TO_CONNECT: 'Retry',\n NO_TITLE: 'No title',\n NO_NAME: '(No name)',\n NO_MEMBERS: '(No members)',\n TOOLTIP__AND_YOU: ', and you',\n TOOLTIP__YOU: 'you',\n TOOLTIP__UNKOWN_USER: '(no name)',\n UNKNOWN__UNKNOWN_MESSAGE_TYPE: '(Unknown message type)',\n UNKNOWN__CANNOT_READ_MESSAGE: 'Cannot read this message.',\n MESSAGE_EDITED: '(edited)',\n CONTEXT_MENU_DROPDOWN__COPY: 'Copy',\n CONTEXT_MENU_DROPDOWN__EDIT: 'Edit',\n CONTEXT_MENU_DROPDOWN__RESEND: 'Resend',\n CONTEXT_MENU_DROPDOWN__DELETE: 'Delete',\n },\n };\n return stringSet[lang];\n};\n\nexport default getStringSet;\n","import React from 'react';\n\nimport getStringSet from '../ui/Label/stringSet';\n\nconst LocalizationContext = React.createContext({\n stringSet: getStringSet('en'),\n});\n\ninterface LocalizationProviderProps {\n stringSet: Record;\n children: React.Component;\n}\n\nconst LocalizationProvider = (props: LocalizationProviderProps): React.ReactNode => {\n const { children } = props;\n return (\n \n {children}\n \n );\n};\n\nexport { LocalizationContext, LocalizationProvider };\n"],"names":["SendbirdSdkContext","React","createContext","withSendbirdContext","OriginalComponent","mapStoreToProps","ContextAwareComponent","props","context","console","warn","mergedProps","componentName","displayName","name","__assign","uuidv4","replace","c","r","Math","random","v","toString","getStringSet","lang","stringSet","en","OPEN_CHANNEL_SETTINGS__OPERATOR_TITLE","OPEN_CHANNEL_SETTINGS__OPERATOR_URL","OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT","OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE","OPEN_CHANNEL_SETTINGS__EMPTY_LIST","OPEN_CHANNEL_SETTINGS__SEE_ALL","OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE","OPEN_CHANNEL_SETTINGS__NO_TITLE","OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS","TRYING_TO_CONNECT","USER_PROFILE__MESSAGE","USER_PROFILE__USER_ID","EDIT_PROFILE__TITLE","EDIT_PROFILE__IMAGE_LABEL","EDIT_PROFILE__IMAGE_UPLOAD","EDIT_PROFILE__NICKNAME_LABEL","EDIT_PROFILE__NICKNAME_PLACEHOLDER","EDIT_PROFILE__USERID_LABEL","EDIT_PROFILE__THEME_LABEL","CHANNEL_LIST__TITLE","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED","CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE","CHANNEL__MESSAGE_LIST__NOTIFICATION__ON","CHANNEL_SETTING__HEADER__TITLE","CHANNEL_SETTING__PROFILE__EDIT","CHANNEL_SETTING__MEMBERS__TITLE","CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS","CHANNEL_SETTING__MEMBERS__INVITE_MEMBER","CHANNEL_SETTING__LEAVE_CHANNEL__TITLE","CHANNEL_SETTING__OPERATORS__TITLE","CHANNEL_SETTING__OPERATORS__TITLE_ALL","CHANNEL_SETTING__OPERATORS__TITLE_ADD","CHANNEL_SETTING__MUTED_MEMBERS__TITLE","CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL","CHANNEL_SETTING__BANNED_MEMBERS__TITLE","CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL","CHANNEL_SETTING__FREEZE_CHANNEL","BUTTON__CANCEL","BUTTON__DELETE","BUTTON__SAVE","BUTTON__CREATE","BUTTON__INVITE","BUTTON__CLOSE","BADGE__OVER","MODAL__DELETE_MESSAGE__TITLE","MODAL__CHANNEL_INFORMATION__TITLE","MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE","MODAL__CHANNEL_INFORMATION__UPLOAD","MODAL__CHANNEL_INFORMATION__CHANNEL_NAME","MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER","MODAL__INVITE_MEMBER__TITLE","MODAL__INVITE_MEMBER__SELECTEC","MODAL__CREATE_CHANNEL__TITLE","MODAL__CREATE_CHANNEL__SELECTED","MODAL__USER_LIST__TITLE","TYPING_INDICATOR__IS_TYPING","TYPING_INDICATOR__AND","TYPING_INDICATOR__ARE_TYPING","TYPING_INDICATOR__MULTIPLE_TYPING","MESSAGE_STATUS__SENDING_FAILED","MESSAGE_STATUS__TRY_AGAIN","MESSAGE_STATUS__OR","MESSAGE_STATUS__DELETE","PLACE_HOLDER__NO_CHANNEL","CHANNEL_FROZEN","MUTED_PL","PLACE_HOLDER__WRONG","PLACE_HOLDER__RETRY_TO_CONNECT","NO_TITLE","NO_NAME","NO_MEMBERS","TOOLTIP__AND_YOU","TOOLTIP__YOU","TOOLTIP__UNKOWN_USER","UNKNOWN__UNKNOWN_MESSAGE_TYPE","UNKNOWN__CANNOT_READ_MESSAGE","MESSAGE_EDITED","CONTEXT_MENU_DROPDOWN__COPY","CONTEXT_MENU_DROPDOWN__EDIT","CONTEXT_MENU_DROPDOWN__RESEND","CONTEXT_MENU_DROPDOWN__DELETE","LocalizationContext","LocalizationProvider","children"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/cjs/OpenChannel.js b/dist/cjs/OpenChannel.js
new file mode 100644
index 0000000..080430f
--- /dev/null
+++ b/dist/cjs/OpenChannel.js
@@ -0,0 +1,2848 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+require('prop-types');
+var index$1 = require('./index-49d966e1.js');
+var format = _interopDefault(require('date-fns/format'));
+require('react-dom');
+var index$2$1 = require('./index-6e58a4a2.js');
+var isSameDay = _interopDefault(require('date-fns/isSameDay'));
+
+var getMessageCreatedAt = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+var scrollIntoLast = function scrollIntoLast(selector, intialTry) {
+ if (intialTry === void 0) {
+ intialTry = 0;
+ }
+
+ var MAX_TRIES = 10;
+ var currentTry = intialTry;
+
+ if (currentTry > MAX_TRIES) {
+ return;
+ }
+
+ try {
+ var nodes = document.querySelectorAll(selector);
+ var last = nodes[nodes.length - 1];
+ last.scrollIntoView(false);
+ /** alignToTop: false */
+ } catch (error) {
+ setTimeout(function () {
+ scrollIntoLast(selector, currentTry + 1);
+ }, 500 * currentTry);
+ }
+};
+var isSameGroup = function isSameGroup(message, comparingMessage) {
+ if (!message || !comparingMessage || message.messageType === 'admin' || comparingMessage.messageType === 'admin') {
+ return false;
+ }
+
+ return message.sendingStatus === comparingMessage.sendingStatus && message.sender.userId === comparingMessage.sender.userId && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage);
+};
+var compareMessagesForGrouping = function compareMessagesForGrouping(prevMessage, currMessage, nextMessage) {
+ return [isSameGroup(prevMessage, currMessage), isSameGroup(currMessage, nextMessage)];
+};
+var kFormatter = function kFormatter(num) {
+ if (Math.abs(num) > 999999) {
+ return (Math.abs(num) / 1000000).toFixed(1) + "M";
+ }
+
+ if (Math.abs(num) > 999) {
+ return (Math.abs(num) / 1000).toFixed(1) + "K";
+ }
+
+ return "" + num;
+};
+var isOperator = function isOperator(openChannel, userId) {
+ var operators = openChannel.operators;
+
+ if (operators.map(function (operator) {
+ return operator.userId;
+ }).indexOf(userId) < 0) {
+ return false;
+ }
+
+ return true;
+};
+var isDisabledBecauseFrozen = function isDisabledBecauseFrozen(openChannel, userId) {
+ var isFrozen = openChannel.isFrozen;
+ return isFrozen && !isOperator(openChannel, userId);
+};
+
+var MessageInputWrapper = function MessageInputWrapper(_a, ref) {
+ var channel = _a.channel,
+ user = _a.user,
+ disabled = _a.disabled,
+ onSendMessage = _a.onSendMessage,
+ onFileUpload = _a.onFileUpload,
+ renderMessageInput = _a.renderMessageInput;
+
+ if (!channel) {
+ return;
+ }
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+
+ if (renderMessageInput) {
+ return renderMessageInput({
+ channel: channel,
+ user: user,
+ disabled: disabled
+ });
+ }
+
+ return React__default.createElement("div", {
+ className: "sendbird-openchannel-footer"
+ }, React__default.createElement(index$2$1.MessageInput, {
+ ref: ref,
+ disabled: disabled,
+ onSendMessage: onSendMessage,
+ onFileUpload: onFileUpload,
+ placeholder: disabled && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED // add disabled because of muted state
+
+ }));
+};
+
+var MessageInputWrapper$1 = React__default.forwardRef(MessageInputWrapper);
+
+var FrozenNotification = function FrozenNotification() {
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ return React__default.createElement("div", {
+ className: "sendbird-frozen-channel-notification"
+ }, React__default.createElement(index$1.Label, {
+ className: "sendbird-frozen-channel-notification__text",
+ type: index$1.LabelTypography.CAPTION_2
+ }, stringSet.CHANNEL_FROZEN));
+};
+
+var COMPONENT_CLASS_NAME = 'sendbird-openchannel-conversation-header';
+function OpenchannelConversationHeader(_a) {
+ var coverImage = _a.coverImage,
+ _b = _a.title,
+ title = _b === void 0 ? index$1.LabelStringSet.NO_TITLE : _b,
+ _c = _a.subTitle,
+ subTitle = _c === void 0 ? index$1.LabelStringSet.NO_TITLE : _c,
+ onActionClick = _a.onActionClick;
+ return React__default.createElement("div", {
+ className: COMPONENT_CLASS_NAME
+ }, React__default.createElement("div", {
+ className: COMPONENT_CLASS_NAME + "__left"
+ }, coverImage ? React__default.createElement(index$1.Avatar, {
+ className: COMPONENT_CLASS_NAME + "__left__cover-image",
+ src: coverImage,
+ alt: "channel cover image",
+ width: "32px",
+ height: "32px"
+ }) : React__default.createElement(index$1.Icon, {
+ className: COMPONENT_CLASS_NAME + "__left__cover-image--icon",
+ width: "32px",
+ height: "32px",
+ type: index$1.IconTypes.AVATAR_NO_IMAGE,
+ fillColor: index$1.IconColors.BACKGROUND_3
+ }), React__default.createElement(index$1.Label, {
+ className: COMPONENT_CLASS_NAME + "__left__title",
+ type: index$1.LabelTypography.H_2,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, title), React__default.createElement(index$1.Label, {
+ className: COMPONENT_CLASS_NAME + "__left__sub-title",
+ type: index$1.LabelTypography.BODY_2,
+ color: index$1.LabelColors.ONBACKGROUND_2
+ }, subTitle)), React__default.createElement("div", {
+ className: COMPONENT_CLASS_NAME + "__right"
+ }, React__default.createElement(index$1.IconButton, {
+ className: COMPONENT_CLASS_NAME + "__right__trigger",
+ width: "32px",
+ height: "32px",
+ onClick: onActionClick
+ }, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.INFO,
+ fillColor: index$1.IconColors.PRIMARY,
+ width: "24px",
+ height: "24px"
+ }))));
+}
+
+var copyToClipboard = function copyToClipboard(text) {
+ // @ts-ignore: Unreachable code error
+ if (window.clipboardData && window.clipboardData.setData) {
+ // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.
+ // @ts-ignore: Unreachable code error
+ return window.clipboardData.setData('Text', text);
+ }
+
+ if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
+ var textarea = document.createElement('textarea');
+ textarea.textContent = text;
+ textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.
+
+ document.body.appendChild(textarea);
+ textarea.select();
+
+ try {
+ return document.execCommand('copy'); // Security exception may be thrown by some browsers.
+ } catch (ex) {
+ return false;
+ } finally {
+ document.body.removeChild(textarea);
+ }
+ }
+
+ return false;
+};
+
+var OpenChannelMessageStatusTypes = {
+ NONE: 'none',
+ PENDING: 'pending',
+ FAILED: 'failed',
+ CANCELED: 'canceled',
+ SUCCEEDED: 'succeeded'
+};
+var getSenderFromMessage = function getSenderFromMessage(message) {
+ return message.sender || message._sender;
+};
+var checkIsSent = function checkIsSent(status) {
+ return status === OpenChannelMessageStatusTypes.SUCCEEDED;
+};
+var checkIsByMe = function checkIsByMe(message, userId) {
+ return getSenderFromMessage(message).userId === userId;
+};
+var isFineCopy = function isFineCopy(_a) {
+ var message = _a.message;
+ return message.messageType === 'user' && message.message.length > 0;
+};
+var isFineResend = function isFineResend(_a) {
+ var message = _a.message,
+ status = _a.status,
+ userId = _a.userId;
+ return checkIsByMe(message, userId) && !checkIsSent(status) && message.isResendable && message.isResendable();
+};
+var isFineEdit = function isFineEdit(_a) {
+ var message = _a.message,
+ status = _a.status,
+ userId = _a.userId;
+ return checkIsByMe(message, userId) && checkIsSent(status);
+};
+var isFineDelete = function isFineDelete(_a) {
+ var message = _a.message,
+ userId = _a.userId;
+ return checkIsByMe(message, userId);
+};
+var showMenuTrigger = function showMenuTrigger(props) {
+ var message = props.message,
+ status = props.status,
+ userId = props.userId;
+
+ if (message.messageType === 'user') {
+ return isFineDelete({
+ message: message,
+ status: status,
+ userId: userId
+ }) || isFineEdit({
+ message: message,
+ status: status,
+ userId: userId
+ }) || isFineCopy({
+ message: message,
+ status: status,
+ userId: userId
+ }) || isFineResend({
+ message: message,
+ status: status,
+ userId: userId
+ });
+ } else {
+ return isFineDelete({
+ message: message,
+ status: status,
+ userId: userId
+ }) || isFineResend({
+ message: message,
+ status: status,
+ userId: userId
+ });
+ }
+};
+
+function OpenchannelUserMessage(_a) {
+ var message = _a.message,
+ className = _a.className,
+ userId = _a.userId,
+ resendMessage = _a.resendMessage,
+ disabled = _a.disabled,
+ showEdit = _a.showEdit,
+ showRemove = _a.showRemove,
+ chainTop = _a.chainTop,
+ status = _a.status;
+
+ if (!message || message.messageType !== 'user') {
+ return null;
+ } // hooks
+
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+
+ var _b = React.useContext(index$1.UserProfileContext),
+ disableUserProfile = _b.disableUserProfile,
+ renderUserProfile = _b.renderUserProfile;
+
+ var messageRef = React.useRef(null);
+ var avatarRef = React.useRef(null);
+ var contextMenuRef = React.useRef(null);
+
+ var _c = React.useState({}),
+ contextStyle = _c[0],
+ setContextStyle = _c[1]; // consts
+
+
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push("sendbird-openchannel-user-message");
+ var isByMe = checkIsByMe(message, userId);
+ var sender = getSenderFromMessage(message);
+ var MemoizedMessageText = React.useMemo(function () {
+ return function () {
+ var splitMessage = message.message.split(/\r/);
+ var matchedMessage = splitMessage.map(function (word) {
+ return word !== '' ? word : React__default.createElement("br", null);
+ });
+
+ if (message.updatedAt > 0) {
+ matchedMessage.push(React__default.createElement(index$1.Label, {
+ key: LocalizationContext.uuidv4$1(),
+ type: index$1.LabelTypography.BODY_1,
+ color: index$1.LabelColors.ONBACKGROUND_2,
+ calssName: "sendbird-openchannel-user-message-word"
+ }, " " + stringSet.MESSAGE_EDITED + " "));
+ }
+
+ return matchedMessage;
+ };
+ }, [message, message.updatedAt]); // place context menu top depending clientHeight of message component
+
+ React.useEffect(function () {
+ if (messageRef.current.clientHeight > 36) {
+ setContextStyle({
+ top: '8px '
+ });
+ } else {
+ setContextStyle({
+ top: '2px'
+ });
+ }
+ }, [window.innerWidth]);
+ return React__default.createElement("div", {
+ className: injectingClassName.join(' '),
+ ref: messageRef
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-user-message__left"
+ }, !chainTop && React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.Avatar, {
+ className: "sendbird-openchannel-user-message__left__avatar",
+ src: sender.profileUrl || '',
+ ref: avatarRef,
+ width: "28px",
+ height: "28px",
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ }
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentRef: avatarRef,
+ parentContainRef: avatarRef,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: sender,
+ close: closeDropdown
+ }) : React__default.createElement(index$1.UserProfile, {
+ user: sender,
+ onSuccess: closeDropdown,
+ disableMessaging: true
+ }));
+ }
+ })), React__default.createElement("div", {
+ className: "sendbird-openchannel-user-message__right"
+ }, !chainTop && React__default.createElement("div", {
+ className: "sendbird-openchannel-user-message__right__top"
+ }, React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-user-message__right__top__sender-name",
+ type: index$1.LabelTypography.CAPTION_2,
+ color: isByMe ? index$1.LabelColors.SECONDARY_3 : index$1.LabelColors.ONBACKGROUND_2
+ }, sender && (sender.friendName || sender.nickname || sender.userId)), React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-user-message__right__top__sent-at",
+ type: index$1.LabelTypography.CAPTION_3,
+ color: index$1.LabelColors.ONBACKGROUND_3
+ }, message.createdAt && format(message.createdAt, 'p'))), React__default.createElement("div", {
+ className: "sendbird-openchannel-user-message__right__bottom"
+ }, React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-user-message__right__bottom__message",
+ type: index$1.LabelTypography.BODY_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, MemoizedMessageText()))), React__default.createElement("div", {
+ className: "sendbird-openchannel-user-message__context-menu",
+ ref: contextMenuRef,
+ style: contextStyle
+ }, React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return showMenuTrigger({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.IconButton, {
+ className: "sendbird-openchannel-user-message__context-menu--icon",
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ }
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentRef: contextMenuRef,
+ parentContainRef: contextMenuRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isFineCopy({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ className: "sendbird-openchannel-user-message__context-menu__copy",
+ onClick: function onClick() {
+ copyToClipboard(message.message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__COPY), isFineEdit({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ className: "sendbird-openchannel-user-message__context-menu__edit",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showEdit(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__EDIT), isFineResend({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ className: "sendbird-openchannel-user-message__context-menu__resend",
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), isFineDelete({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ className: "sendbird-openchannel-user-message__context-menu__delete",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ })));
+}
+
+function OpenChannelAdminMessage(_a) {
+ var message = _a.message,
+ className = _a.className;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push('sendbird-openchannel-admin-message');
+ return React__default.createElement("div", {
+ className: LocalizationContext.__spreadArrays(injectingClassName).join(' ')
+ }, React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-admin-message__text",
+ type: index$1.LabelTypography.CAPTION_2,
+ color: index$1.LabelColors.ONBACKGROUND_2
+ }, message.message || ''));
+}
+
+var URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;
+var createUrlTester = function createUrlTester(regexp) {
+ return function (text) {
+ return regexp.test(text);
+ };
+};
+var checkOGIsEnalbed = function checkOGIsEnalbed(message) {
+ var ogMetaData = message.ogMetaData;
+
+ if (!ogMetaData) {
+ return false;
+ }
+
+ var url = ogMetaData.url;
+
+ if (!url) {
+ return false;
+ }
+
+ return true;
+};
+
+function OpenchannelOGMessage(_a) {
+ var message = _a.message,
+ className = _a.className,
+ disabled = _a.disabled,
+ showEdit = _a.showEdit,
+ showRemove = _a.showRemove,
+ resendMessage = _a.resendMessage,
+ chainTop = _a.chainTop,
+ status = _a.status,
+ userId = _a.userId;
+
+ if (!message || message.messageType !== 'user') {
+ return null;
+ }
+
+ var ogMetaData = message.ogMetaData;
+ var defaultImage = ogMetaData.defaultImage;
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+
+ var _b = React.useContext(index$1.UserProfileContext),
+ disableUserProfile = _b.disableUserProfile,
+ renderUserProfile = _b.renderUserProfile;
+
+ var _c = React.useState({}),
+ contextStyle = _c[0],
+ setContextStyle = _c[1];
+
+ var messageComponentRef = React.useRef(null);
+ var contextMenuRef = React.useRef(null);
+ var avatarRef = React.useRef(null);
+ var isUrl = createUrlTester(URL_REG);
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push('sendbird-openchannel-og-message');
+ var isByMe = checkIsByMe(message, userId);
+ var sender = getSenderFromMessage(message);
+ var MemoizedMessageText = React.useMemo(function () {
+ return function () {
+ var wordClassName = 'sendbird-openchannel-og-message--word';
+ var splitMessage = message.message.split(' ');
+ var matchedMessage = splitMessage.map(function (word) {
+ return isUrl(word) ? React__default.createElement(index$2$1.LinkLabel, {
+ key: LocalizationContext.uuidv4$1(),
+ className: [wordClassName, 'sendbird-openchannel-og-message--word--link'],
+ src: word,
+ type: index$1.LabelTypography.BODY_1,
+ color: index$1.LabelColors.PRIMARY
+ }, word) : React__default.createElement(index$1.Label, {
+ key: LocalizationContext.uuidv4$1(),
+ className: wordClassName,
+ type: index$1.LabelTypography.BODY_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, word);
+ });
+
+ if (message.updatedAt > 0) {
+ matchedMessage.push(React__default.createElement(index$1.Label, {
+ key: LocalizationContext.uuidv4$1(),
+ className: wordClassName,
+ type: index$1.LabelTypography.BODY_1,
+ color: index$1.LabelColors.ONBACKGROUND_2
+ }, stringSet.MESSAGE_EDITED));
+ }
+
+ return matchedMessage;
+ };
+ }, [message, message.updatedAt]);
+
+ var openLink = function openLink() {
+ if (checkOGIsEnalbed(message)) {
+ var url = ogMetaData.url;
+ window.open(url);
+ }
+ }; // place conxt menu top depending clientHeight of message component
+
+
+ React.useEffect(function () {
+ if (messageComponentRef.current.clientHeight > 36) {
+ setContextStyle({
+ top: '8px '
+ });
+ } else {
+ setContextStyle({
+ top: '2px'
+ });
+ }
+ }, [window.innerWidth]);
+ return React__default.createElement("div", {
+ className: injectingClassName.join(' '),
+ ref: messageComponentRef
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-og-message__top"
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-og-message__top__left"
+ }, !chainTop && React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.Avatar, {
+ className: "sendbird-openchannel-og-message__top__left__avatar",
+ src: sender.profileUrl || '',
+ ref: avatarRef,
+ width: "28px",
+ height: "28px",
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ }
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentRef: avatarRef,
+ parentContainRef: avatarRef,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: sender,
+ close: closeDropdown
+ }) : React__default.createElement(index$1.UserProfile, {
+ user: sender,
+ onSuccess: closeDropdown,
+ disableMessaging: true
+ }));
+ }
+ })), React__default.createElement("div", {
+ className: "sendbird-openchannel-og-message__top__right"
+ }, !chainTop && React__default.createElement("div", {
+ className: "sendbird-openchannel-og-message__top__right__title"
+ }, React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-og-message__top__right__title__sender-name",
+ type: index$1.LabelTypography.CAPTION_2,
+ color: isByMe ? index$1.LabelColors.SECONDARY_3 : index$1.LabelColors.ONBACKGROUND_2
+ }, sender && (sender.friendName || sender.nickname || sender.userId)), React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-og-message__top__right__title__sent-at",
+ type: index$1.LabelTypography.CAPTION_3,
+ color: index$1.LabelColors.ONBACKGROUND_3
+ }, message.createdAt && format(message.createdAt, 'p'))), React__default.createElement("div", {
+ className: "sendbird-openchannel-og-message__top__right__description"
+ }, React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-og-message__top__right__description__message",
+ type: index$1.LabelTypography.BODY_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, MemoizedMessageText()))), React__default.createElement("div", {
+ className: "sendbird-openchannel-og-message__top__context-menu",
+ ref: contextMenuRef,
+ style: contextStyle
+ }, React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return showMenuTrigger({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.IconButton, {
+ className: "sendbird-openchannel-og-message__top__context-menu--icon",
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ }
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentRef: contextMenuRef,
+ parentContainRef: contextMenuRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isFineCopy({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ className: "sendbird-openchannel-og-message__top__context-menu__copy",
+ onClick: function onClick() {
+ copyToClipboard(message.message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__COPY), isFineEdit({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ className: "sendbird-openchannel-og-message__top__context-menu__edit",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showEdit(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__EDIT), isFineResend({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ className: "sendbird-openchannel-og-message__top__context-menu__resend",
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), isFineDelete({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ className: "sendbird-openchannel-og-message__top__context-menu__delete",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ }))), React__default.createElement("div", {
+ className: "sendbird-openchannel-og-message__bottom"
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-og-message__bottom__og-tag"
+ }, ogMetaData.url && React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-og-message__bottom__og-tag__url",
+ type: index$1.LabelTypography.CAPTION_3,
+ color: index$1.LabelColors.ONBACKGROUND_2
+ }, ogMetaData.url), ogMetaData.title && React__default.createElement(index$2$1.LinkLabel, {
+ className: "sendbird-openchannel-og-message__bottom__og-tag__title",
+ type: index$1.LabelTypography.SUBTITLE_2,
+ color: index$1.LabelColors.PRIMARY,
+ src: ogMetaData.url
+ }, ogMetaData.title), ogMetaData.description && React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-og-message__bottom__og-tag__description",
+ type: index$1.LabelTypography.BODY_2,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, ogMetaData.description), ogMetaData.url && React__default.createElement("div", {
+ className: "sendbird-openchannel-og-message__bottom__og-tag__thumbnail",
+ onClick: openLink,
+ onKeyDown: openLink,
+ role: "button",
+ tabIndex: 0
+ }, defaultImage && React__default.createElement(index$1.ImageRenderer, {
+ url: defaultImage.url || '',
+ alt: defaultImage.alt || '',
+ className: "sendbird-openchannel-og-message__bottom__og-tag__thumbnail__image",
+ height: "189px",
+ defaultComponent: React__default.createElement("div", {
+ className: "sendbird-openchannel-og-message__bottom__og-tag__thumbnail__image--placeholder"
+ }, React__default.createElement(index$1.Icon, {
+ width: "56px",
+ height: "56px",
+ type: index$1.IconTypes.NO_THUMBNAIL
+ }))
+ })))));
+}
+
+var SUPPORTING_TYPES = {
+ IMAGE: 'IMAGE',
+ VIDEO: 'VIDEO',
+ UNSUPPORTED: 'UNSUPPORTED'
+};
+var SUPPORTED_MIMES = {
+ IMAGE: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp'],
+ VIDEO: ['video/mpeg', 'video/ogg', 'video/webm', 'video/mp4']
+};
+var getSupportingFileType = function getSupportingFileType(type) {
+ if (SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0) {
+ return SUPPORTING_TYPES.IMAGE;
+ }
+
+ if (SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0) {
+ return SUPPORTING_TYPES.VIDEO;
+ }
+
+ return SUPPORTING_TYPES.UNSUPPORTED;
+};
+
+function OpenchannelThumbnailMessage(_a) {
+ var _b;
+
+ var message = _a.message,
+ className = _a.className,
+ disabled = _a.disabled,
+ userId = _a.userId,
+ status = _a.status,
+ chainTop = _a.chainTop,
+ _onClick = _a.onClick,
+ showRemove = _a.showRemove,
+ resendMessage = _a.resendMessage;
+ var type = message.type,
+ url = message.url,
+ localUrl = message.localUrl;
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+
+ var _c = React.useContext(index$1.UserProfileContext),
+ disableUserProfile = _c.disableUserProfile,
+ renderUserProfile = _c.renderUserProfile;
+
+ var contextMenuRef = React.useRef(null);
+ var avatarRef = React.useRef(null);
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push('sendbird-openchannel-thumbnail-message');
+ var isByMe = checkIsByMe(message, userId);
+ var isMessageSent = checkIsSent(status);
+ var sender = getSenderFromMessage(message);
+ return React__default.createElement("div", {
+ className: injectingClassName.join(' ')
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__left"
+ }, !chainTop && React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.Avatar, {
+ className: "sendbird-openchannel-thumbnail-message__left__avatar",
+ src: sender.profileUrl || '',
+ ref: avatarRef,
+ width: "28px",
+ height: "28px",
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ }
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentRef: avatarRef,
+ parentContainRef: avatarRef,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: sender,
+ close: closeDropdown
+ }) : React__default.createElement(index$1.UserProfile, {
+ user: sender,
+ onSuccess: closeDropdown,
+ disableMessaging: true
+ }));
+ }
+ })), React__default.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right"
+ }, !chainTop && React__default.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right__title"
+ }, React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-thumbnail-message__right__title__sender-name",
+ type: index$1.LabelTypography.CAPTION_2,
+ color: isByMe ? index$1.LabelColors.SECONDARY_3 : index$1.LabelColors.ONBACKGROUND_2
+ }, sender && (sender.friendName || sender.nickname || sender.userId)), React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-thumbnail-message__right__title__sent-at",
+ type: index$1.LabelTypography.CAPTION_3,
+ color: index$1.LabelColors.ONBACKGROUND_3
+ }, message.createdAt && format(message.createdAt, 'p'))), React__default.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right__body"
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap",
+ onClick: function onClick() {
+ if (isMessageSent) {
+ _onClick(true);
+ }
+ },
+ onKeyDown: function onKeyDown() {
+ if (isMessageSent) {
+ _onClick(true);
+ }
+ },
+ tabIndex: 0,
+ role: "button"
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__overlay"
+ }), (_b = {}, _b[SUPPORTING_TYPES.VIDEO] = url || localUrl ? React__default.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__video"
+ }, React__default.createElement("video", {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__video__video"
+ }, React__default.createElement("source", {
+ src: url || localUrl,
+ type: type
+ })), React__default.createElement(index$1.Icon, {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__video__icon",
+ width: "56px",
+ height: "56px",
+ type: index$1.IconTypes.PLAY
+ })) : React__default.createElement(index$1.Icon, {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__video--icon",
+ width: "56px",
+ height: "56px",
+ type: index$1.IconTypes.PHOTO,
+ fillColor: index$1.IconColors.ON_BACKGROUND_2
+ }), _b[SUPPORTING_TYPES.IMAGE] = url || localUrl ? React__default.createElement(index$1.ImageRenderer, {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__image",
+ height: "270px",
+ url: url || localUrl,
+ alt: "image"
+ }) : React__default.createElement(index$1.Icon, {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__image--icon",
+ width: "56px",
+ height: "56px",
+ type: index$1.IconTypes.PHOTO,
+ fillColor: index$1.IconColors.ON_BACKGROUND_2
+ }), _b[SUPPORTING_TYPES.UNSUPPORTED] = React__default.createElement(index$1.Icon, {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__unknown",
+ width: "56px",
+ height: "56px",
+ type: index$1.IconTypes.PHOTO,
+ fillColor: index$1.IconColors.ON_BACKGROUND_2
+ }), _b)[getSupportingFileType(type)]))), React__default.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__context-menu",
+ ref: contextMenuRef
+ }, React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return showMenuTrigger({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.IconButton, {
+ className: "sendbird-openchannel-thumbnail-message__context-menu--icon",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.MORE,
+ fillColor: index$1.IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentRef: contextMenuRef,
+ parentContainRef: contextMenuRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isFineResend({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), isFineDelete({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ })));
+}
+
+var checkFileType = function checkFileType(fileUrl) {
+ var result = null;
+ var imageFile = /(\.gif|\.jpg|\.jpeg|\.txt|\.pdf)$/i;
+ var audioFile = /(\.mp3)$/i;
+
+ if (imageFile.test(fileUrl)) {
+ result = index$1.IconTypes.FILE_DOCUMENT;
+ } else if (audioFile.test(fileUrl)) {
+ result = index$1.IconTypes.FILE_AUDIO;
+ }
+
+ return result;
+};
+var truncate = function truncate(fullStr, strLen) {
+ if (fullStr === null || fullStr === undefined) return '';
+ if (fullStr.length <= strLen) return fullStr;
+ var separator = '...';
+ var sepLen = separator.length;
+ var charsToShow = strLen - sepLen;
+ var frontChars = Math.ceil(charsToShow / 2);
+ var backChars = Math.floor(charsToShow / 2);
+ return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);
+};
+
+function OpenchannelFileMessage(_a) {
+ var message = _a.message,
+ className = _a.className,
+ userId = _a.userId,
+ disabled = _a.disabled,
+ chainTop = _a.chainTop,
+ status = _a.status,
+ showRemove = _a.showRemove,
+ resendMessage = _a.resendMessage;
+ var contextMenuRef = React.useRef(null);
+ var avatarRef = React.useRef(null);
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+
+ var _b = React.useContext(index$1.UserProfileContext),
+ disableUserProfile = _b.disableUserProfile,
+ renderUserProfile = _b.renderUserProfile;
+
+ var openFileUrl = function openFileUrl() {
+ window.open(message.url);
+ };
+
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push('sendbird-openchannel-file-message');
+ var isByMe = checkIsByMe(message, userId);
+ var sender = getSenderFromMessage(message);
+ return React__default.createElement("div", {
+ className: injectingClassName.join(' ')
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-file-message__left"
+ }, !chainTop && React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.Avatar, {
+ className: "sendbird-openchannel-file-message__left__avatar",
+ src: sender.profileUrl || '',
+ ref: avatarRef,
+ width: "28px",
+ height: "28px",
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ }
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentRef: avatarRef,
+ parentContainRef: avatarRef,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: sender,
+ close: closeDropdown
+ }) : React__default.createElement(index$1.UserProfile, {
+ user: sender,
+ onSuccess: closeDropdown,
+ disableMessaging: true
+ }));
+ }
+ })), React__default.createElement("div", {
+ className: "sendbird-openchannel-file-message__right"
+ }, !chainTop && React__default.createElement("div", {
+ className: "sendbird-openchannel-file-message__right__title"
+ }, React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-file-message__right__title__sender-name",
+ type: index$1.LabelTypography.CAPTION_2,
+ color: isByMe ? index$1.LabelColors.SECONDARY_3 : index$1.LabelColors.ONBACKGROUND_2
+ }, sender && (sender.friendName || sender.nickname || sender.userId)), React__default.createElement(index$1.Label, {
+ className: "sendbird-openchannel-file-message__right__title__sent-at",
+ type: index$1.LabelTypography.CAPTION_3,
+ color: index$1.LabelColors.ONBACKGROUND_3
+ }, message.createdAt && format(message.createdAt, 'p'))), React__default.createElement("div", {
+ className: "sendbird-openchannel-file-message__right__body"
+ }, checkFileType(message.url) && React__default.createElement(index$1.Icon, {
+ className: "sendbird-openchannel-file-message__right__body__icon",
+ width: "48px",
+ height: "48px",
+ type: checkFileType(message.url),
+ color: index$1.IconColors.PRIMARY
+ }), React__default.createElement(index$1.TextButton, {
+ className: "sendbird-openchannel-file-message__right__body__file-name",
+ onClick: openFileUrl
+ }, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.BODY_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, truncate(message.url, 40))))), React__default.createElement("div", {
+ className: "sendbird-openchannel-file-message__context-menu",
+ ref: contextMenuRef
+ }, React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return showMenuTrigger({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.IconButton, {
+ className: "sendbird-openchannel-file-message__context-menu__icon",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.MORE,
+ width: "24px",
+ height: "24px"
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ parentRef: contextMenuRef,
+ parentContainRef: contextMenuRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isFineResend({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), isFineDelete({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React__default.createElement(index$1.MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ })));
+}
+
+function RemoveMessageModal(_a) {
+ var onCloseModal = _a.onCloseModal,
+ onDeleteMessage = _a.onDeleteMessage;
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ return React__default.createElement(index$1.Modal, {
+ onCancel: onCloseModal,
+ onSubmit: onDeleteMessage,
+ submitText: "Delete",
+ titleText: stringSet.MODAL__DELETE_MESSAGE__TITLE
+ });
+}
+
+var MessageTypes = {
+ ADMIN: 'ADMIN',
+ USER: 'USER',
+ FILE: 'FILE',
+ THUMBNAIL: 'THUMBNAIL',
+ OG: 'OG',
+ UNKNOWN: 'UNKNOWN'
+};
+var SendingMessageStatus = {
+ NONE: 'none',
+ SUCCEEDED: 'succeeded',
+ FAILED: 'failed',
+ PENDING: 'pending'
+};
+var getMessageType = function getMessageType(message) {
+ if (message.isUserMessage && message.isUserMessage() || message.messageType === 'user') {
+ return message.ogMetaData ? MessageTypes.OG : MessageTypes.USER;
+ }
+
+ if (message.isAdminMessage && message.isAdminMessage()) {
+ return MessageTypes.ADMIN;
+ }
+
+ if (message.messageType === 'file') {
+ return index$2$1.isImage(message.type) || index$2$1.isVideo(message.type) ? MessageTypes.THUMBNAIL : MessageTypes.FILE;
+ }
+
+ return MessageTypes.UNKNOWN;
+};
+
+function MessageHoc(_a) {
+ var _b;
+
+ var message = _a.message,
+ userId = _a.userId,
+ disabled = _a.disabled,
+ editDisabled = _a.editDisabled,
+ hasSeperator = _a.hasSeperator,
+ channel = _a.channel,
+ renderCustomMessage = _a.renderCustomMessage,
+ deleteMessage = _a.deleteMessage,
+ updateMessage = _a.updateMessage,
+ resendMessage = _a.resendMessage,
+ status = _a.status,
+ chainTop = _a.chainTop,
+ chainBottom = _a.chainBottom;
+ var sender = null;
+
+ if (message.messageType !== 'admin') {
+ sender = message.sender;
+ }
+
+ var RenderedMessage = React.useMemo(function () {
+ if (renderCustomMessage) {
+ return renderCustomMessage(message, channel);
+ }
+
+ return null;
+ }, [message, renderCustomMessage]);
+
+ var _c = React.useState(false),
+ showEdit = _c[0],
+ setShowEdit = _c[1];
+
+ var _d = React.useState(false),
+ showRemove = _d[0],
+ setShowRemove = _d[1];
+
+ var _e = React.useState(false),
+ showFileViewer = _e[0],
+ setShowFileViewer = _e[1];
+
+ var editMessageInputRef = React.useRef(null);
+ var isByMe = false;
+
+ if (sender && message.messageType !== 'admin') {
+ // pending and failed messages are by me
+ isByMe = userId === sender.userId || message.requestState === SendingMessageStatus.PENDING || message.requestState === SendingMessageStatus.FAILED;
+ }
+
+ if (RenderedMessage) {
+ return React__default.createElement("div", {
+ className: "sendbird-msg-hoc sendbird-msg--scroll-ref"
+ }, React__default.createElement(RenderedMessage, {
+ message: message
+ }));
+ }
+
+ if (message.messageType === 'user' && showEdit) {
+ return React__default.createElement(index$2$1.MessageInput, {
+ isEdit: true,
+ disabled: editDisabled,
+ ref: editMessageInputRef,
+ name: message.messageId,
+ onSendMessage: updateMessage,
+ onCancelEdit: function onCancelEdit() {
+ setShowEdit(false);
+ },
+ value: message.message
+ });
+ }
+
+ return React__default.createElement("div", {
+ className: "sendbird-msg-hoc sendbird-msg--scroll-ref"
+ }, hasSeperator && React__default.createElement(index$2$1.DateSeparator, null, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.CAPTION_2,
+ color: index$1.LabelColors.ONBACKGROUND_2
+ }, format(message.createdAt, 'MMMM dd, yyyy'))), (_b = {}, _b[MessageTypes.ADMIN] = function () {
+ if (message.messageType === 'admin') {
+ return React__default.createElement(OpenChannelAdminMessage, {
+ message: message
+ });
+ }
+ }(), _b[MessageTypes.FILE] = function () {
+ if (message.messageType === 'file') {
+ return React__default.createElement(OpenchannelFileMessage, {
+ message: message,
+ disabled: disabled,
+ userId: userId,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ status: status,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ });
+ }
+
+ return;
+ }(), _b[MessageTypes.OG] = function () {
+ if (message.messageType === 'user') {
+ return React__default.createElement(OpenchannelOGMessage, {
+ message: message,
+ status: status,
+ userId: userId,
+ showEdit: setShowEdit,
+ disabled: disabled,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ });
+ }
+
+ return;
+ }(), _b[MessageTypes.THUMBNAIL] = function () {
+ if (message.messageType === 'file') {
+ return React__default.createElement(OpenchannelThumbnailMessage, {
+ message: message,
+ disabled: disabled,
+ userId: userId,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ onClick: setShowFileViewer,
+ status: status,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ });
+ }
+
+ return;
+ }(), _b[MessageTypes.USER] = function () {
+ if (message.messageType === 'user') {
+ return React__default.createElement(OpenchannelUserMessage, {
+ message: message,
+ userId: userId,
+ disabled: disabled,
+ showEdit: setShowEdit,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ status: status,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ });
+ }
+
+ return;
+ }(), _b[MessageTypes.UNKNOWN] = function () {
+ return; // return (
+ //
+ // );
+ }(), _b)[getMessageType(message)], showRemove && React__default.createElement(RemoveMessageModal, {
+ onCloseModal: function onCloseModal() {
+ return setShowRemove(false);
+ },
+ onDeleteMessage: function onDeleteMessage() {
+ if (message.messageType !== 'admin') {
+ deleteMessage(message);
+ }
+ }
+ }), showFileViewer && React__default.createElement(index$2$1.FileViewer, {
+ onClose: function onClose() {
+ return setShowFileViewer(false);
+ },
+ message: message,
+ onDelete: deleteMessage,
+ isByMe: isByMe
+ }));
+}
+
+function OpenchannelConversationScroll(_a) {
+ var _b = _a.useMessageGrouping,
+ useMessageGrouping = _b === void 0 ? true : _b,
+ openchannel = _a.openchannel,
+ user = _a.user,
+ allMessages = _a.allMessages,
+ _c = _a.isOnline,
+ isOnline = _c === void 0 ? true : _c,
+ hasMore = _a.hasMore,
+ onScroll = _a.onScroll,
+ scrollDownPromise = _a.scrollDownPromise,
+ renderCustomMessage = _a.renderCustomMessage,
+ showScrollDownButton = _a.showScrollDownButton,
+ updateMessage = _a.updateMessage,
+ deleteMessage = _a.deleteMessage,
+ resendMessage = _a.resendMessage;
+ var scrollRef = React.useRef(null);
+
+ var handleOnScroll = function handleOnScroll(e) {
+ var element = e.target;
+ var scrollTop = element.scrollTop,
+ scrollHeight = element.scrollHeight,
+ clientHeight = element.clientHeight;
+
+ if (showScrollDownButton) {
+ if (scrollHeight > scrollTop + clientHeight) {
+ showScrollDownButton(true);
+ } else {
+ showScrollDownButton(false);
+ }
+ }
+
+ if (scrollTop === 0) {
+ if (!hasMore) {
+ return;
+ }
+
+ var nodes_1 = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');
+ onScroll(function () {
+ var first = nodes_1[0];
+ first.scrollIntoView();
+ });
+ }
+ };
+
+ React.useEffect(function () {
+ // This promise is created in everytime when user click the scroll to bottom button
+ // This scope waits when user click the button and scrolls to the bottom of conversation
+ if (scrollDownPromise && scrollRef && scrollRef.current) {
+ scrollDownPromise.then(function () {
+ scrollRef.current.scrollTo(0, scrollRef.current.scrollHeight);
+
+ if (showScrollDownButton) {
+ showScrollDownButton(false);
+ }
+ });
+ }
+
+ return;
+ }, [scrollDownPromise]);
+ return React__default.createElement("div", {
+ className: "sendbird-openchannel-conversation-scroll",
+ onScroll: handleOnScroll,
+ ref: scrollRef
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-conversation-scroll__container"
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-conversation-scroll__container__padding"
+ }), React__default.createElement("div", {
+ className: "sendbird-openchannel-conversation-scroll__container__item-container"
+ }, allMessages.map(function (message, index) {
+ var status;
+
+ if (message.messageType !== 'admin') {
+ status = message.sendingStatus;
+ }
+
+ var previousMessage = allMessages[index - 1];
+ var nextMessage = allMessages[index - 1];
+ var previousMessageCreatedAt = previousMessage && previousMessage.createdAt;
+ var currentCreatedAt = message.createdAt; // https://stackoverflow.com/a/41855608
+
+ var hasSeperator = !(previousMessageCreatedAt && isSameDay(currentCreatedAt, previousMessageCreatedAt));
+
+ var _a = useMessageGrouping ? compareMessagesForGrouping(previousMessage, message, nextMessage) : [false, false],
+ chainTop = _a[0],
+ chainBottom = _a[1];
+
+ return React__default.createElement(MessageHoc, {
+ renderCustomMessage: renderCustomMessage,
+ channel: openchannel,
+ key: message.messageId,
+ message: message,
+ status: status,
+ userId: user.userId,
+ disabled: !isOnline,
+ editDisabled: openchannel.isFrozen,
+ hasSeperator: hasSeperator,
+ chainTop: chainTop,
+ chainBottom: chainBottom,
+ deleteMessage: deleteMessage,
+ updateMessage: updateMessage,
+ resendMessage: resendMessage
+ });
+ }))));
+}
+
+var SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';
+var SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';
+var RESET_MESSAGES = 'RESET_MESSAGES';
+var GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';
+var GET_PREV_MESSAGES_FAIL = 'GET_PREV_MESSAGES_FAIL';
+var SENDING_MESSAGE_FAILED = 'SENDING_MESSAGE_FAILED';
+var SENDING_MESSAGE_SUCCEEDED = 'SENDING_MESSAGE_SUCCEEDED';
+var SENDING_MESSAGE_START = 'SENDING_MESSAGE_START';
+var RESENDING_MESSAGE_START = 'RESENDING_MESSAGE_START'; // event handlers
+
+var ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';
+var ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';
+var ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';
+var ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';
+var ON_OPERATOR_UPDATED = 'ON_OPERATOR_UPDATED';
+var ON_USER_ENTERED = 'ON_USER_ENTERED';
+var ON_USER_EXITED = 'ON_USER_EXITED';
+var ON_USER_MUTED = 'ON_USER_MUTED';
+var ON_USER_UNMUTED = 'ON_USER_UNMUTED';
+var ON_USER_BANNED = 'ON_USER_BANNED';
+var ON_USER_UNBANNED = 'ON_USER_UNBANNED';
+var ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';
+var ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';
+var ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';
+var ON_META_DATA_CREATED = 'ON_META_DATA_CREATED';
+var ON_META_DATA_UPDATED = 'ON_META_DATA_UPDATED';
+var ON_META_DATA_DELETED = 'ON_META_DATA_DELETED';
+var ON_META_COUNTERS_CREATED = 'ON_META_COUNTERS_CREATED';
+var ON_META_COUNTERS_UPDATED = 'ON_META_COUNTERS_UPDATED';
+var ON_META_COUNTERS_DELETED = 'ON_META_COUNTERS_DELETED';
+var ON_MENTION_RECEIVED = 'ON_MENTION_RECEIVED';
+
+function reducer(state, action) {
+ switch (action.type) {
+ case RESET_MESSAGES:
+ {
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ allMessages: []
+ });
+ }
+
+ case SET_CURRENT_CHANNEL:
+ {
+ var currentChannel = action.payload;
+ var operators = currentChannel.operators;
+
+ if (!state.isInvalid && state.currentOpenChannel && state.currentOpenChannel.url && state.currentOpenChannel.url === currentChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ currentOpenChannel: currentChannel,
+ isInvalid: false,
+ operators: operators,
+ participants: operators
+ });
+ }
+
+ case SET_CHANNEL_INVALID:
+ {
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ isInvalid: true
+ });
+ }
+
+ case GET_PREV_MESSAGES_SUCESS:
+ case GET_PREV_MESSAGES_FAIL:
+ {
+ var isFailed = action.type === GET_PREV_MESSAGES_FAIL;
+ var _a = action.payload,
+ _b = _a.currentOpenChannel,
+ currentOpenChannel = _b === void 0 ? {} : _b,
+ _c = _a.messages,
+ messages = _c === void 0 ? [] : _c,
+ hasMore = _a.hasMore,
+ lastMessageTimestamp = _a.lastMessageTimestamp;
+ var actionChannelUrl = currentOpenChannel.url;
+ var receivedMessages_1 = isFailed ? [] : messages;
+
+ var _hasMore = isFailed ? false : hasMore;
+
+ var _lastMessageTimestamp = isFailed ? 0 : lastMessageTimestamp;
+
+ var stateChannel = state.currentOpenChannel;
+ var stateChannelUrl = stateChannel.url;
+
+ if (actionChannelUrl !== stateChannelUrl) {
+ return state;
+ }
+
+ var filteredAllMessages = state.allMessages.filter(function (message) {
+ return !receivedMessages_1.find(function (_a) {
+ var messageId = _a.messageId;
+ return index$2$1.compareIds(messageId, message.messageId);
+ });
+ });
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ loading: false,
+ initialized: true,
+ hasMore: _hasMore,
+ lastMessageTimestamp: _lastMessageTimestamp,
+ allMessages: LocalizationContext.__spreadArrays(receivedMessages_1, filteredAllMessages)
+ });
+ }
+
+ case SENDING_MESSAGE_START:
+ {
+ var _d = action.payload,
+ message = _d.message,
+ channel = _d.channel;
+
+ if (channel.url !== state.currentOpenChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ allMessages: LocalizationContext.__spreadArrays(state.allMessages, [LocalizationContext.__assign({}, message)])
+ });
+ }
+
+ case SENDING_MESSAGE_SUCCEEDED:
+ {
+ var sentMessage_1 = action.payload;
+ var newMessages = state.allMessages.map(function (m) {
+ return index$2$1.compareIds(m.reqId, sentMessage_1.reqId) ? sentMessage_1 : m;
+ });
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ allMessages: newMessages
+ });
+ }
+
+ case SENDING_MESSAGE_FAILED:
+ {
+ var sentMessage_2 = action.payload;
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ allMessages: state.allMessages.map(function (m) {
+ return index$2$1.compareIds(m.reqId, sentMessage_2.reqId) ? sentMessage_2 : m;
+ })
+ });
+ }
+
+ case RESENDING_MESSAGE_START:
+ {
+ var eventedChannel = action.payload.channel;
+ var resentMessage_1 = action.payload.message;
+
+ if (eventedChannel.url !== state.currentOpenChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ allMessages: state.allMessages.map(function (m) {
+ return index$2$1.compareIds(m.reqId, resentMessage_1.reqId) ? resentMessage_1 : m;
+ })
+ });
+ }
+
+ case ON_MESSAGE_RECEIVED:
+ {
+ var eventedChannel = action.payload.channel;
+ var receivedMessage = action.payload.message;
+ var currentOpenChannel = state.currentOpenChannel;
+
+ if (!index$2$1.compareIds(eventedChannel.url, currentOpenChannel.url) || !(state.allMessages.map(function (message) {
+ return message.messageId;
+ }).indexOf(receivedMessage.messageId) < 0)) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ allMessages: LocalizationContext.__spreadArrays(state.allMessages, [receivedMessage])
+ });
+ }
+
+ case ON_MESSAGE_UPDATED:
+ {
+ var eventedChannel = action.payload.channel;
+ var updatedMessage_1 = action.payload.message;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ allMessages: state.allMessages.map(function (message) {
+ return message.isIdentical(updatedMessage_1) ? updatedMessage_1 : message;
+ })
+ });
+ }
+
+ case ON_MESSAGE_DELETED:
+ {
+ var eventedChannel = action.payload.channel;
+ var deletedMessageId_1 = action.payload.messageId;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ allMessages: state.allMessages.filter(function (message) {
+ return !index$2$1.compareIds(message.messageId, deletedMessageId_1);
+ })
+ });
+ }
+
+ case ON_MESSAGE_DELETED_BY_REQ_ID:
+ {
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ allMessages: state.allMessages.filter(function (m) {
+ return !index$2$1.compareIds(m.reqId, action.payload);
+ })
+ });
+ }
+
+ case ON_OPERATOR_UPDATED:
+ {
+ var eventedChannel = action.payload.channel;
+ var updatedOperators = action.payload.operators;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ currentOpenChannel: LocalizationContext.__assign(LocalizationContext.__assign({}, state.currentOpenChannel), {
+ operators: updatedOperators
+ }),
+ operators: updatedOperators
+ });
+ }
+
+ case ON_USER_ENTERED:
+ {
+ var eventedChannel = action.payload.channel;
+ var enteredUser = action.payload.user;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ participants: LocalizationContext.__spreadArrays(state.participants, [enteredUser])
+ });
+ }
+
+ case ON_USER_EXITED:
+ {
+ var eventedChannel = action.payload.channel;
+ var exitedUser_1 = action.payload.user;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ participants: state.participants.filter(function (participant) {
+ return !index$2$1.compareIds(participant.userId, exitedUser_1.userId);
+ })
+ });
+ }
+
+ case ON_USER_MUTED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const mutedUser = action.payload.user;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_USER_UNMUTED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const unmutedUser = action.payload.user;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_USER_BANNED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const bannedUser = action.payload.user;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_USER_UNBANNED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const unbannedUser = action.payload.user;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_CHANNEL_FROZEN:
+ {
+ var frozenChannel = action.payload;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== frozenChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ frozen: true
+ });
+ }
+
+ case ON_CHANNEL_UNFROZEN:
+ {
+ var unfrozenChannel = action.payload;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== unfrozenChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ frozen: false
+ });
+ }
+
+ case ON_CHANNEL_CHANGED:
+ {
+ var changedChannel = action.payload;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== changedChannel.url) {
+ return state;
+ }
+
+ return LocalizationContext.__assign(LocalizationContext.__assign({}, state), {
+ currentOpenChannel: changedChannel
+ });
+ }
+
+ case ON_META_DATA_CREATED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const createdMetaData = action.payload.metaData;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_META_DATA_UPDATED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const updatedMetaData = action.payload.metaData;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_META_DATA_DELETED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const deletedMetaDataKeys = action.payload.metaDataKeys;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_META_COUNTERS_CREATED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const createdMetaCounter = action.payload.metaCounter;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_META_COUNTERS_UPDATED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const updatedMetaCounter = action.payload.metaCounter;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_META_COUNTERS_DELETED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const deletedMetaCounterKeys = action.payload.metaCounterKeys;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_MENTION_RECEIVED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const mentionedMessage = action.payload.message;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ default:
+ return state;
+ }
+}
+
+var initialState = {
+ allMessages: [],
+ loading: false,
+ initialized: false,
+ currentOpenChannel: null,
+ isInvalid: false,
+ hasMore: false,
+ lastMessageTimestamp: 0,
+ frozen: false,
+ operators: [],
+ participants: []
+};
+
+var COMPONENT_CLASS_NAME$1 = 'sendbird-openchannel-conversation';
+var OpenchannelConversation = function OpenchannelConversation(props) {
+ // props
+ var useMessageGrouping = props.useMessageGrouping,
+ channelUrl = props.channelUrl,
+ stores = props.stores,
+ config = props.config,
+ _a = props.queries,
+ queries = _a === void 0 ? {} : _a,
+ disableUserProfile = props.disableUserProfile,
+ renderCustomMessage = props.renderCustomMessage,
+ renderUserProfile = props.renderUserProfile,
+ renderChannelTitle = props.renderChannelTitle,
+ renderMessageInput = props.renderMessageInput,
+ onBeforeSendUserMessage = props.onBeforeSendUserMessage,
+ onBeforeSendFileMessage = props.onBeforeSendFileMessage,
+ onChatHeaderActionClick = props.onChatHeaderActionClick;
+ var sdkStore = stores.sdkStore,
+ userStore = stores.userStore;
+ var userId = config.userId,
+ isOnline = config.isOnline,
+ logger = config.logger,
+ pubSub = config.pubSub;
+ var sdk = sdkStore.sdk;
+ var user = userStore.user; // hook variables
+
+ var _b = React.useReducer(reducer, initialState),
+ messagesStore = _b[0],
+ messagesDispatcher = _b[1];
+
+ var allMessages = messagesStore.allMessages,
+ loading = messagesStore.loading,
+ initialized = messagesStore.initialized,
+ currentOpenChannel = messagesStore.currentOpenChannel,
+ isInvalid = messagesStore.isInvalid,
+ hasMore = messagesStore.hasMore,
+ lastMessageTimestamp = messagesStore.lastMessageTimestamp; // ref
+
+ var messageInputRef = React.useRef(null); // useSendMessageCallback
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+
+ var _c = React.useState(null),
+ scrollDownPromise = _c[0],
+ setScrollDownPromise = _c[1];
+
+ var _d = React.useState(false),
+ showScrollDownButton = _d[0],
+ setShowScrollDownButton = _d[1]; // const
+
+
+ var sdkInit = sdkStore.initialized;
+ var userFilledMessageListParams = queries ? queries.messageListParams : null;
+ var disabled = !initialized || !isOnline || isDisabledBecauseFrozen(currentOpenChannel, userId); // || utils.isDisabledBecauseMuted(mutedParticipantIds, userId)
+
+ var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
+ var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile; // useSetChannel
+
+ React.useEffect(function () {
+ if (channelUrl && sdkInit && sdk && sdk.OpenChannel) {
+ logger.info('OpenChannel | useSetChannel fetching channel', channelUrl);
+ sdk.OpenChannel.getChannel(channelUrl, function (openChannel, error) {
+ if (!error) {
+ logger.info('OpenChannel | useSetChannel fetched channel', openChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: openChannel
+ });
+ openChannel.enter(function (error) {
+ if (error) {
+ logger.warning('OpenChannel | useSetChannel enter channel failed', {
+ channelUrl: channelUrl,
+ error: error
+ });
+ messagesDispatcher({
+ type: SET_CHANNEL_INVALID
+ });
+ }
+ });
+ } else {
+ logger.warning('OpenChannel | useSetChannel fetch channel failed', {
+ channelUrl: channelUrl,
+ error: error
+ });
+ messagesDispatcher({
+ type: SET_CHANNEL_INVALID
+ });
+ }
+ }); // .then((openChannel) => {
+ // logger.info('OpenChannel | useSetChannel fetched channel', openChannel);
+ // messagesDispatcher({
+ // type: messageActionTypes.SET_CURRENT_CHANNEL,
+ // payload: openChannel,
+ // });
+ // })
+ // .catch((error) => {
+ // logger.warning('OpenChannel | useSetChannel fetch channel failed', { channelUrl, error });
+ // messagesDispatcher({
+ // type: messageActionTypes.SET_CHANNEL_INVALID,
+ // });
+ // });
+ }
+ }, [channelUrl, sdkInit]); // handles API calls from withSendbird
+
+ React.useEffect(function () {
+ var subscriber = new Map();
+
+ if (!pubSub || !pubSub.subscribe) {
+ return;
+ }
+
+ subscriber.set(index$1.SEND_USER_MESSAGE, pubSub.subscribe(index$1.SEND_USER_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+ scrollIntoLast('.sendbird-msg--scroll-ref');
+
+ if (channel && channelUrl === channel.url) {
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(index$1.SEND_MESSAGE_START, pubSub.subscribe(index$1.SEND_MESSAGE_START, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+
+ if (channel && channelUrl === channel.url) {
+ messagesDispatcher({
+ type: SENDING_MESSAGE_START,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(index$1.SEND_FILE_MESSAGE, pubSub.subscribe(index$1.SEND_FILE_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+ scrollIntoLast('.sendbird-msg--scroll-ref');
+
+ if (channel && channelUrl === channel.url) {
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(index$1.UPDATE_USER_MESSAGE, pubSub.subscribe(index$1.UPDATE_USER_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message,
+ fromSelector = msg.fromSelector;
+
+ if (fromSelector && channel && channelUrl === channel.url) {
+ messagesDispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ }
+ }));
+ subscriber.set(index$1.DELETE_MESSAGE, pubSub.subscribe(index$1.DELETE_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ messageId = msg.messageId;
+
+ if (channel && channelUrl === channel.url) {
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: messageId
+ });
+ }
+ }));
+ return function () {
+ if (subscriber) {
+ subscriber.forEach(function (s) {
+ try {
+ s.remove();
+ } catch (_a) {//
+ }
+ });
+ }
+ };
+ }, [channelUrl, sdkInit]); // useHandleChannelEvents
+
+ React.useEffect(function () {
+ var messageReceiverId = LocalizationContext.uuidv4$1();
+
+ if (currentOpenChannel && currentOpenChannel.url && sdk && sdk.ChannelHandler) {
+ var ChannelHandler = new sdk.ChannelHandler();
+ logger.info('OpenChannel | useHandleChannelEvents: Setup event handler', messageReceiverId);
+
+ ChannelHandler.onMessageReceived = function (channel, message) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMessageReceived', {
+ channelUrl: channelUrl,
+ message: message
+ });
+ messagesDispatcher({
+ type: ON_MESSAGE_RECEIVED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ };
+
+ ChannelHandler.onMessageUpdated = function (channel, message) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMessageUpdated', {
+ channelUrl: channelUrl,
+ message: message
+ });
+ messagesDispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ };
+
+ ChannelHandler.onMessageDeleted = function (channel, messageId) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMessageDeleted', {
+ channelUrl: channelUrl,
+ messageId: messageId
+ });
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: {
+ channel: channel,
+ messageId: messageId
+ }
+ });
+ };
+
+ ChannelHandler.onOperatorUpdated = function (channel, operators) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onOperatorUpdated', {
+ channelUrl: channelUrl,
+ operators: operators
+ });
+ messagesDispatcher({
+ type: ON_OPERATOR_UPDATED,
+ payload: {
+ channel: channel,
+ operators: operators
+ }
+ });
+ };
+
+ ChannelHandler.onUserEntered = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserEntered', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_ENTERED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onUserExited = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserExited', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_EXITED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onUserMuted = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserMuted', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_MUTED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onUserUnmuted = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserUnmuted', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_UNMUTED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onUserBanned = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserBanned', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_BANNED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onUserUnbanned = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserUnbanned', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_UNBANNED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onChannelFrozen = function (channel) {
+ logger.info('OpenChannel | useHandleChannelEvents: onChannelFrozen', channel);
+ messagesDispatcher({
+ type: ON_CHANNEL_FROZEN,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onChannelUnfrozen = function (channel) {
+ logger.info('OpenChannel | useHandleChannelEvents: onChannelUnfrozen', channel);
+ messagesDispatcher({
+ type: ON_CHANNEL_UNFROZEN,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onChannelChanged = function (channel) {
+ logger.info('OpenChannel | useHandleChannelEvents: onChannelChanged', channel);
+ messagesDispatcher({
+ type: ON_CHANNEL_CHANGED,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onMetaDataCreated = function (channel, metaData) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaDataCreated', {
+ channelUrl: channelUrl,
+ metaData: metaData
+ });
+ messagesDispatcher({
+ type: ON_META_DATA_CREATED,
+ payload: {
+ channel: channel,
+ metaData: metaData
+ }
+ });
+ };
+
+ ChannelHandler.onMetaDataUpdated = function (channel, metaData) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaDataUpdated', {
+ channelUrl: channelUrl,
+ metaData: metaData
+ });
+ messagesDispatcher({
+ type: ON_META_DATA_UPDATED,
+ payload: {
+ channel: channel,
+ metaData: metaData
+ }
+ });
+ };
+
+ ChannelHandler.onMetaDataDeleted = function (channel, metaDataKeys) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaDataDeleted', {
+ channelUrl: channelUrl,
+ metaDataKeys: metaDataKeys
+ });
+ messagesDispatcher({
+ type: ON_META_DATA_DELETED,
+ payload: {
+ channel: channel,
+ metaDataKeys: metaDataKeys
+ }
+ });
+ };
+
+ ChannelHandler.onMetaCountersCreated = function (channel, metaCounter) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersCreated', {
+ channelUrl: channelUrl,
+ metaCounter: metaCounter
+ });
+ messagesDispatcher({
+ type: ON_META_COUNTERS_CREATED,
+ payload: {
+ channel: channel,
+ metaCounter: metaCounter
+ }
+ });
+ };
+
+ ChannelHandler.onMetaCountersUpdated = function (channel, metaCounter) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersUpdated', {
+ channelUrl: channelUrl,
+ metaCounter: metaCounter
+ });
+ messagesDispatcher({
+ type: ON_META_COUNTERS_UPDATED,
+ payload: {
+ channel: channel,
+ metaCounter: metaCounter
+ }
+ });
+ };
+
+ ChannelHandler.onMetaCountersDeleted = function (channel, metaCounterKeys) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersDeleted', {
+ channelUrl: channelUrl,
+ metaCounterKeys: metaCounterKeys
+ });
+ messagesDispatcher({
+ type: ON_META_COUNTERS_DELETED,
+ payload: {
+ channel: channel,
+ metaCounterKeys: metaCounterKeys
+ }
+ });
+ };
+
+ ChannelHandler.onMentionReceived = function (channel, message) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMentionReceived', {
+ channelUrl: channelUrl,
+ message: message
+ });
+ messagesDispatcher({
+ type: ON_MENTION_RECEIVED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ };
+
+ sdk.addChannelHandler(messageReceiverId, ChannelHandler);
+ }
+
+ return function () {
+ if (sdk && sdk.removeChannelHandler) {
+ logger.info('OpenChannel | useHandleChannelEvents: Removing message receiver handler', messageReceiverId);
+ sdk.removeChannelHandler(messageReceiverId);
+ }
+ };
+ }, [currentOpenChannel]); // useInitialMessagesFetch
+
+ React.useEffect(function () {
+ logger.info('OpenChannel | useInitialMessagesFetch: Setup started', currentOpenChannel);
+ messagesDispatcher({
+ type: RESET_MESSAGES
+ });
+
+ if (sdk && sdk.MessageListParams && currentOpenChannel && currentOpenChannel.getMessagesByTimestamp) {
+ var messageListParams_1 = new sdk.MessageListParams();
+ messageListParams_1.prevResultSize = 30;
+ messageListParams_1.isInclusive = true;
+ messageListParams_1.includeReplies = false;
+ messageListParams_1.includeReactions = false;
+
+ if (userFilledMessageListParams) {
+ Object.keys(userFilledMessageListParams).forEach(function (key) {
+ messageListParams_1[key] = userFilledMessageListParams[key];
+ });
+ logger.info('OpenChannel | Used customizedMessageListParams');
+ }
+
+ logger.info('OpenChannel | Fetching messages', {
+ currentOpenChannel: currentOpenChannel,
+ messageListParams: messageListParams_1
+ });
+ currentOpenChannel.getMessagesByTimestamp(new Date().getTime(), messageListParams_1, function (messages, error) {
+ if (!error) {
+ logger.info('OpenChannel | Fetching messages succeeded', messages);
+ var hasMore_1 = messages && messages.length > 0;
+ var lastMessageTimestamp_1 = hasMore_1 ? messages[0].createdAt : null;
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ currentOpenChannel: currentOpenChannel,
+ messages: messages,
+ hasMore: hasMore_1,
+ lastMessageTimestamp: lastMessageTimestamp_1
+ }
+ });
+ setTimeout(function () {
+ scrollIntoLast('.sendbird-msg--scroll-ref');
+ });
+ } else {
+ logger.error('OpenChannel | Fetching messages failed', error);
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_FAIL,
+ payload: {
+ currentOpenChannel: currentOpenChannel,
+ messages: [],
+ hasMore: false,
+ lastMessageTimestamp: 0
+ }
+ });
+ }
+ }); // todo: use promise after CoreSDK adds required TS methods
+ // .then((messages) => {
+ // console.log('get messages via getMessagesByTimestamp', messages);
+ // const hasMore = (messages && messages.length > 0);
+ // const lastMessageTimestamp = hasMore
+ // ? messages[0].createdAt
+ // : null;
+ // messagesDispatcher({
+ // type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,
+ // payload: {
+ // currentOpenChannel,
+ // messages,
+ // hasMore,
+ // lastMessageTimestamp,
+ // },
+ // });
+ // })
+ // .catch((error: Error): void => {
+ // logger.error('OpenChannel | Fetching messages failed', error);
+ // messagesDispatcher({
+ // type: messageActionTypes.GET_PREV_MESSAGES_FAIL,
+ // payload: {
+ // currentOpenChannel,
+ // messages: [],
+ // hasMore: false,
+ // lastMessageTimestamp: 0,
+ // }
+ // });
+ // });
+ }
+ }, [currentOpenChannel]); // useScrollCallback
+
+ var onScroll = React.useCallback(function (callback) {
+ if (!hasMore) {
+ return;
+ }
+
+ var messageListParams = new sdk.MessageListParams();
+ messageListParams.prevResultSize = 30;
+ messageListParams.includeReplies = false;
+ messageListParams.includeReactions = false;
+
+ if (userFilledMessageListParams) {
+ Object.keys(userFilledMessageListParams).forEach(function (key) {
+ messageListParams[key] = userFilledMessageListParams[key];
+ });
+ logger.info('OpenChannel: Used userFilledMessageListParams');
+ }
+
+ logger.info('OpenChannel: Fetching messages', {
+ currentOpenChannel: currentOpenChannel,
+ messageListParams: messageListParams
+ });
+ currentOpenChannel.getMessagesByTimestamp(lastMessageTimestamp || new Date().getTime(), messageListParams, function (messages, error) {
+ if (!error) {
+ logger.info('OpenChannel | Fetching messages succeeded', messages);
+ var hasMore_2 = messages && messages.length > 0;
+ var lastMessageTimestamp_2 = hasMore_2 ? messages[0].createdAt : null;
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ currentOpenChannel: currentOpenChannel,
+ messages: messages,
+ hasMore: hasMore_2,
+ lastMessageTimestamp: lastMessageTimestamp_2
+ }
+ });
+ setTimeout(function () {
+ callback();
+ });
+ } else {
+ logger.error('OpenChannel | Fetching messages failed', error);
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_FAIL,
+ payload: {
+ currentOpenChannel: currentOpenChannel,
+ messages: [],
+ hasMore: false,
+ lastMessageTimestamp: 0
+ }
+ });
+ }
+ });
+ }, [currentOpenChannel, lastMessageTimestamp]); // useSendMessageCallback
+
+ var handleSendMessage = React.useCallback(function () {
+ var text = messageInputRef.current.value;
+
+ function createParamsDefualt(txt) {
+ var message = typeof txt === 'string' ? txt.trim() : txt.toString(10).trim();
+ var params = new sdk.UserMessageParams();
+ params.message = message;
+ return params;
+ }
+
+ var createCustomParams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
+
+ if (createCustomParams) {
+ logger.info('OpenChannel | Creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);
+ }
+
+ var params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefualt(text);
+ logger.info('OpenChannel | Sending message has started', params);
+ var pendingMessage = currentOpenChannel.sendUserMessage(params, function (message, error) {
+ if (error) {
+ logger.warning('OpenChannel | Sending message failed', {
+ message: message
+ });
+ messagesDispatcher({
+ type: SENDING_MESSAGE_FAILED,
+ payload: message
+ });
+ return;
+ }
+
+ logger.info('OpenChannel | Sending message succeeded', {
+ message: message
+ });
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ });
+ messagesDispatcher({
+ type: SENDING_MESSAGE_START,
+ payload: {
+ message: pendingMessage,
+ channel: currentOpenChannel
+ }
+ });
+ }, [currentOpenChannel, onBeforeSendUserMessage]); // useFileUploadCallback
+
+ var handleFileUpload = React.useCallback(function (file) {
+ function createParamsDefualt(file_) {
+ var params = new sdk.FileMessageParams();
+ params.file = file_;
+ return params;
+ }
+
+ var createCustomParams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';
+
+ if (createCustomParams) {
+ logger.info('OpenChannel | Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
+ }
+
+ var params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file) : createParamsDefualt(file);
+ logger.info('OpenChannel | Uploading file message start', params);
+ var pendingMessage = currentOpenChannel.sendFileMessage(params, function (message, error) {
+ if (error) {
+ logger.error('OpenChannel | Sending file message failed', {
+ message: message,
+ error: error
+ });
+ message.localUrl = URL.createObjectURL(file);
+ message.file = file;
+ messagesDispatcher({
+ type: SENDING_MESSAGE_FAILED,
+ payload: message
+ });
+ return;
+ }
+
+ logger.info('OpenChannel | Sending message succeeded', message);
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ });
+ messagesDispatcher({
+ type: SENDING_MESSAGE_START,
+ payload: {
+ message: LocalizationContext.__assign(LocalizationContext.__assign({}, pendingMessage), {
+ url: URL.createObjectURL(file),
+ // pending thumbnail message seems to be failed
+ requestState: 'pending'
+ }),
+ channel: currentOpenChannel
+ }
+ });
+ }, [currentOpenChannel, onBeforeSendFileMessage]); // useUpdateMessageCallback
+
+ var updateMessage = React.useCallback(function (messageId, text, callback) {
+ function createParamsDefualt(txt) {
+ var params = new sdk.UserMessageParams();
+ params.message = txt;
+ return params;
+ }
+
+ if (onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function') {
+ logger.info('OpenChannel | Creating params using onBeforeUpdateUserMessage');
+ }
+
+ var params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefualt(text);
+ currentOpenChannel.updateUserMessage(messageId, params, function (message, error) {
+ if (callback) {
+ callback();
+ }
+
+ if (!error) {
+ logger.info('OpenChannel | Updating message succeeded', {
+ message: message,
+ params: params
+ });
+ messagesDispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: currentOpenChannel,
+ message: message
+ }
+ });
+ } else {
+ logger.warning('OpenChannel | Updating message failed', error);
+ }
+ });
+ }, [currentOpenChannel, messagesDispatcher, onBeforeSendUserMessage]); // useDeleteMessageCallback
+
+ var deleteMessage = React.useCallback(function (message, callback) {
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message', message);
+ var requestState = message.requestState;
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message requestState: ', requestState);
+
+ if (requestState === 'failed' || requestState === 'pending') {
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleted message from local: ', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED_BY_REQ_ID,
+ payload: message.reqId
+ });
+
+ if (callback) {
+ callback();
+ }
+
+ return;
+ }
+
+ currentOpenChannel.deleteMessage(message, function (error) {
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message from remote: ', requestState);
+
+ if (callback) {
+ callback();
+ }
+
+ if (!error) {
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message succeeded', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: {
+ channel: currentOpenChannel,
+ messageId: message.messageId
+ }
+ });
+ } else {
+ logger.warning('OpenChannel | useDeleteMessageCallback: Deleting message failed', error);
+ }
+ });
+ }, [currentOpenChannel, messagesDispatcher]); // useResendMessageCallback
+
+ var resendMessage = React.useCallback(function (failedMessage) {
+ logger.info('OpenChannel | Reseding message has started', failedMessage);
+ var messageType = failedMessage.messageType,
+ file = failedMessage.file;
+
+ if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable()) {
+ // eslint-disable-next-line no-param-reassign
+ failedMessage.requestState = 'pending';
+ messagesDispatcher({
+ type: RESENDING_MESSAGE_START,
+ payload: {
+ channel: currentOpenChannel,
+ message: failedMessage
+ }
+ }); // userMessage
+
+ if (messageType === 'user' && failedMessage.messageType === 'user') {
+ currentOpenChannel.resendUserMessage(failedMessage, function (message, error) {
+ if (!error) {
+ logger.info('OpenChannel | Reseding message succeeded', message);
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ } else {
+ logger.warning('OpenChannel | Resending message failed', error); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'failed';
+ messagesDispatcher({
+ type: SENDING_MESSAGE_FAILED,
+ payload: failedMessage
+ });
+ }
+ });
+ return;
+ } // fileMessage
+
+
+ if (messageType === 'file' && failedMessage.messageType === 'file') {
+ currentOpenChannel.resendFileMessage(failedMessage, file, function (message, error) {
+ if (!error) {
+ logger.info('OpenChannel | Resending file message succeeded', message);
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ } else {
+ logger.warning('OpenChannel | Resending file message failed', error); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'failed';
+ messagesDispatcher({
+ type: SENDING_MESSAGE_FAILED,
+ payload: failedMessage
+ });
+ }
+ });
+ }
+ } else {
+ // to alert user on console
+ // eslint-disable-next-line no-console
+ console.error('OpenChannel | Message is not resendable');
+ logger.warning('OpenChannel | Message is not resendable', failedMessage);
+ }
+ }, [currentOpenChannel, messagesDispatcher]);
+
+ var handleClickScrollDownButton = function handleClickScrollDownButton() {
+ var promise = new Promise(function (resolve) {
+ resolve();
+ });
+ setScrollDownPromise(promise);
+ };
+
+ if (!currentOpenChannel || !currentOpenChannel.url) {
+ return React__default.createElement("div", {
+ className: COMPONENT_CLASS_NAME$1
+ }, React__default.createElement(index$1.PlaceHolder, {
+ type: index$1.PlaceHolderTypes$1.NO_CHANNELS
+ }));
+ }
+
+ if (loading) {
+ return React__default.createElement("div", {
+ className: COMPONENT_CLASS_NAME$1
+ }, React__default.createElement(index$1.PlaceHolder, {
+ type: index$1.PlaceHolderTypes$1.LOADING
+ }));
+ }
+
+ if (isInvalid) {
+ return React__default.createElement("div", {
+ className: COMPONENT_CLASS_NAME$1
+ }, React__default.createElement(index$1.PlaceHolder, {
+ type: index$1.PlaceHolderTypes$1.WRONG
+ }));
+ }
+
+ return React__default.createElement(index$1.UserProfileProvider, {
+ className: COMPONENT_CLASS_NAME$1,
+ disableUserProfile: userDefinedDisableUserProfile,
+ renderUserProfile: userDefinedRenderProfile
+ }, showScrollDownButton && React__default.createElement("div", {
+ className: COMPONENT_CLASS_NAME$1 + "__go-to-bottom",
+ onClick: handleClickScrollDownButton,
+ onKeyDown: handleClickScrollDownButton,
+ tabIndex: 0,
+ role: "button"
+ }, React__default.createElement(index$1.Icon, {
+ width: "24px",
+ height: "24px",
+ type: index$1.IconTypes.SHEVRON_DOWN,
+ fillColor: index$1.IconColors.CONTENT
+ })), renderChannelTitle ? renderChannelTitle({
+ channel: currentOpenChannel,
+ user: user
+ }) : React__default.createElement(OpenchannelConversationHeader, {
+ title: currentOpenChannel.name,
+ subTitle: kFormatter(currentOpenChannel.participantCount) + " " + stringSet.OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS,
+ coverImage: currentOpenChannel.coverUrl,
+ onActionClick: onChatHeaderActionClick
+ }), currentOpenChannel.isFrozen && React__default.createElement(FrozenNotification, null), React__default.createElement(OpenchannelConversationScroll, {
+ renderCustomMessage: renderCustomMessage,
+ openchannel: currentOpenChannel,
+ user: user,
+ useMessageGrouping: useMessageGrouping,
+ isOnline: isOnline,
+ allMessages: allMessages,
+ onScroll: onScroll,
+ hasMore: hasMore,
+ scrollDownPromise: scrollDownPromise,
+ showScrollDownButton: setShowScrollDownButton,
+ updateMessage: updateMessage,
+ deleteMessage: deleteMessage,
+ resendMessage: resendMessage
+ }), renderMessageInput ? renderMessageInput({
+ channel: currentOpenChannel,
+ user: user,
+ disabled: disabled
+ }) : React__default.createElement(MessageInputWrapper$1, {
+ channel: currentOpenChannel,
+ user: user,
+ ref: messageInputRef,
+ disabled: disabled,
+ onSendMessage: handleSendMessage,
+ onFileUpload: handleFileUpload,
+ renderMessageInput: renderMessageInput
+ }));
+};
+var index = LocalizationContext.withSendbirdContext(OpenchannelConversation);
+
+exports.OpenchannelConversation = OpenchannelConversation;
+exports.default = index;
+//# sourceMappingURL=OpenChannel.js.map
diff --git a/dist/cjs/OpenChannel.js.map b/dist/cjs/OpenChannel.js.map
new file mode 100644
index 0000000..65cbc4b
--- /dev/null
+++ b/dist/cjs/OpenChannel.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"OpenChannel.js","sources":["../../../src/smart-components/OpenchannelConversation/utils.ts","../../../src/smart-components/OpenchannelConversation/components/MessageInpuetWrapper.tsx","../../../src/smart-components/OpenchannelConversation/components/FrozenNotification.tsx","../../../src/ui/OpenchannelConversationHeader/index.tsx","../../../src/ui/OpenchannelUserMessage/utils.ts","../../../src/utils/openChannelUtils.ts","../../../src/ui/OpenchannelUserMessage/index.tsx","../../../src/ui/OpenChannelAdminMessage/index.tsx","../../../src/ui/OpenchannelOGMessage/utils.ts","../../../src/ui/OpenchannelOGMessage/index.tsx","../../../src/ui/OpenchannelThumbnailMessage/utils.ts","../../../src/ui/OpenchannelThumbnailMessage/index.tsx","../../../src/ui/OpenchannelFileMessage/utils.ts","../../../src/ui/OpenchannelFileMessage/index.tsx","../../../src/smart-components/OpenchannelConversation/components/RemoveMessageModal.tsx","../../../src/smart-components/OpenchannelConversation/components/types.ts","../../../src/smart-components/OpenchannelConversation/components/MessageHOC.tsx","../../../src/smart-components/OpenchannelConversation/components/OpenchannelConversationScroll.tsx","../../../src/smart-components/OpenchannelConversation/dux/actionTypes.ts","../../../src/smart-components/OpenchannelConversation/dux/reducers.ts","../../../src/smart-components/OpenchannelConversation/dux/initialState.ts","../../../src/smart-components/OpenchannelConversation/index.tsx"],"sourcesContent":["import format from 'date-fns/format';\nimport Sendbird from 'sendbird';\nimport SendbirdUIKit from '../../index';\n\nexport const getMessageCreatedAt = (message: SendbirdUIKit.EveryMessage): string => format(message.createdAt, 'p');\n\nexport const scrollIntoLast = (selector: string, intialTry = 0): void => {\n const MAX_TRIES = 10;\n const currentTry = intialTry;\n if (currentTry > MAX_TRIES) {\n return;\n }\n try {\n const nodes = document.querySelectorAll(selector);\n const last = nodes[nodes.length - 1];\n last.scrollIntoView(false); /** alignToTop: false */\n } catch (error) {\n setTimeout(() => {\n scrollIntoLast(selector, currentTry + 1);\n }, 500 * currentTry);\n }\n};\n\n\nexport const isSameGroup = (\n message: SendbirdUIKit.EveryMessage,\n comparingMessage: SendbirdUIKit.EveryMessage,\n): boolean => {\n if (\n !message\n || !comparingMessage\n || message.messageType === 'admin'\n || comparingMessage.messageType === 'admin'\n ) {\n return false\n }\n\n return (\n message.sendingStatus === comparingMessage.sendingStatus\n && message.sender.userId === comparingMessage.sender.userId\n && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage)\n );\n};\n\nexport const compareMessagesForGrouping = (\n prevMessage: SendbirdUIKit.EveryMessage,\n currMessage: SendbirdUIKit.EveryMessage,\n nextMessage: SendbirdUIKit.EveryMessage,\n): [boolean, boolean] => (\n [\n isSameGroup(prevMessage, currMessage),\n isSameGroup(currMessage, nextMessage),\n ]\n );\n\nexport const kFormatter = (num: number): string => {\n if (Math.abs(num) > 999999) {\n return `${(Math.abs(num) / 1000000).toFixed(1)}M`;\n }\n\n if (Math.abs(num) > 999) {\n return `${(Math.abs(num) / 1000).toFixed(1)}K`;\n }\n\n return `${num}`;\n};\n\nexport const isOperator = (openChannel: Sendbird.OpenChannel, userId: string): boolean => {\n const { operators } = openChannel;\n if (operators.map(operator => operator.userId).indexOf(userId) < 0) {\n return false;\n }\n return true;\n};\n\nexport const isDisabledBecauseFrozen = (openChannel: Sendbird.OpenChannel, userId: string): boolean => {\n const { isFrozen } = openChannel;\n return isFrozen && !isOperator(openChannel, userId);\n};\n\nexport const isDisabledBecauseMuted = (mutedParticipantIds: string[], userId: string): boolean => {\n return mutedParticipantIds.indexOf(userId) < 0;\n};\n","import React, { useContext } from 'react';\nimport Sendbird from 'sendbird';\nimport { RenderMessageInputProps } from '../../../index';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport MessageInput from '../../../ui/MessageInput';\n\ninterface Props {\n channel: Sendbird.OpenChannel;\n user: Sendbird.User;\n disabled: boolean;\n onSendMessage(): void;\n onFileUpload(file_: File): void;\n renderMessageInput?(renderProps: RenderMessageInputProps): JSX.Element;\n}\n\nconst MessageInputWrapper = ({\n channel,\n user,\n disabled,\n onSendMessage,\n onFileUpload,\n renderMessageInput,\n}: Props, ref: React.RefObject): JSX.Element => {\n if (!channel) {\n return;\n }\n\n const { stringSet } = useContext(LocalizationContext);\n\n if (renderMessageInput) {\n return renderMessageInput({ channel, user, disabled });\n }\n\n return (\n \n \n
\n );\n};\n\nexport default React.forwardRef(MessageInputWrapper);\n","import React, { useContext } from 'react';\n\nimport './frozen-notification.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography } from '../../../ui/Label';\n\nconst FrozenNotification = (): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n {stringSet.CHANNEL_FROZEN}\n \n
\n );\n}\n\nexport default FrozenNotification;\n","import React, { ReactElement } from 'react';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport IconButton from '../IconButton';\nimport Label, {\n LabelTypography,\n LabelColors,\n LabelStringSet,\n} from '../Label';\n\nconst COMPONENT_CLASS_NAME = 'sendbird-openchannel-conversation-header';\n\ninterface Props {\n coverImage?: string;\n title?: string;\n subTitle?: string;\n onActionClick?(): void;\n}\n\nexport default function OpenchannelConversationHeader({\n coverImage,\n title = LabelStringSet.NO_TITLE,\n subTitle = LabelStringSet.NO_TITLE,\n onActionClick,\n}: Props): ReactElement {\n return (\n\n \n
\n {\n coverImage ? (\n
\n ) : (\n
\n )\n }\n
\n {title}\n \n
\n {subTitle}\n \n
\n
\n \n \n \n
\n
\n );\n}\n","export const copyToClipboard = (text: string): boolean => {\n // @ts-ignore: Unreachable code error\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.\n // @ts-ignore: Unreachable code error\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n};\n\nexport default { copyToClipboard };\n","import Sendbird from 'sendbird';\nimport { ClientUserMessage, ClientFileMessage } from '../index';\n\nconst OpenChannelMessageStatusTypes = {\n NONE: 'none',\n PENDING: 'pending',\n FAILED: 'failed',\n CANCELED: 'canceled',\n SUCCEEDED: 'succeeded'\n};\n\nexport const getSenderFromMessage = (message: ClientUserMessage | ClientFileMessage): Sendbird.User => {\n return message.sender || message._sender;\n};\n\nexport const checkIsSent = (status: string): boolean => (status === OpenChannelMessageStatusTypes.SUCCEEDED);\n\nexport const checkIsByMe = (message: ClientFileMessage | ClientUserMessage, userId: string): boolean => (getSenderFromMessage(message).userId === userId);\n\ninterface isFineCopyParams {\n message: ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineCopy = ({ message }: isFineCopyParams): boolean => {\n return (message.messageType === 'user' && message.message.length > 0);\n};\n\ninterface isFineResendParams {\n message: ClientFileMessage | ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineResend = ({ message, status, userId }: isFineResendParams): boolean => {\n return checkIsByMe(message, userId)\n && !checkIsSent(status)\n && message.isResendable\n && message.isResendable();\n};\n\ninterface isFineEditParams {\n message: ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineEdit = ({ message, status, userId }: isFineEditParams): boolean => {\n return checkIsByMe(message, userId) && checkIsSent(status);\n};\n\ninterface isFineDeleteParams {\n message: ClientFileMessage | ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineDelete = ({ message, userId }: isFineDeleteParams): boolean => {\n return checkIsByMe(message, userId);\n};\n\ninterface showMenuTriggerParams {\n message: ClientUserMessage | ClientFileMessage;\n status: string;\n userId: string;\n}\nexport const showMenuTrigger = (props: showMenuTriggerParams): boolean => {\n const { message, status, userId } = props;\n if (message.messageType === 'user') {\n return (\n isFineDelete({ message, status, userId })\n || isFineEdit({ message, status, userId })\n || isFineCopy({ message, status, userId })\n || isFineResend({ message, status, userId })\n );\n } else {\n return (\n isFineDelete({ message, status, userId })\n || isFineResend({ message, status, userId })\n );\n }\n};\n","import React, {\n useMemo,\n useContext,\n useRef,\n useState,\n ReactElement,\n useEffect,\n} from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { copyToClipboard } from './utils';\nimport uuidv4 from '../../utils/uuid';\nimport { ClientUserMessage } from '../../index';\nimport {\n checkIsByMe,\n isFineCopy,\n isFineEdit,\n isFineResend,\n isFineDelete,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n message: ClientUserMessage;\n userId: string;\n className?: string | string[];\n disabled?: boolean;\n showEdit(bool: boolean): void;\n showRemove(bool: boolean): void;\n resendMessage(message: ClientUserMessage): void;\n chainTop?: boolean;\n chainBottom?: boolean;\n status: string;\n}\n\nexport default function OpenchannelUserMessage({\n message,\n className,\n userId,\n resendMessage,\n disabled,\n showEdit,\n showRemove,\n chainTop,\n status,\n}: Props): ReactElement {\n if (!message || message.messageType !== 'user') {\n return null;\n }\n\n // hooks\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n const messageRef = useRef(null);\n const avatarRef = useRef(null);\n const contextMenuRef = useRef(null);\n const [contextStyle, setContextStyle] = useState({});\n\n // consts\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.push(`sendbird-openchannel-user-message`);\n const isByMe = checkIsByMe(message, userId);\n const sender = getSenderFromMessage(message);\n\n const MemoizedMessageText = useMemo(() => () => {\n const splitMessage = message.message.split(/\\r/);\n const matchedMessage = splitMessage.map((word) => (word !== '' ? word : ));\n if (message.updatedAt > 0) {\n matchedMessage.push(\n \n {` ${stringSet.MESSAGE_EDITED} `}\n ,\n );\n }\n return matchedMessage;\n }, [message, message.updatedAt]);\n\n // place context menu top depending clientHeight of message component\n useEffect(() => {\n if (messageRef.current.clientHeight > 36) {\n setContextStyle({ top: '8px ' });\n } else {\n setContextStyle({ top: '2px' });\n }\n }, [window.innerWidth]);\n\n return (\n \n
\n {\n !chainTop && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n \n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n \n \n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n \n
\n )\n }\n
\n \n {MemoizedMessageText()}\n \n
\n
\n {\n
\n (\n showMenuTrigger({ message: message, userId: userId, status: status}) && (\n {\n toggleDropdown();\n }}\n >\n \n \n )\n )}\n menuItems={(closeDropdown) => (\n \n {\n isFineCopy({ message: message, userId: userId, status: status }) && (\n {\n copyToClipboard(message.message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__COPY}\n \n )\n }\n {\n isFineEdit({ message: message, userId: userId, status: status }) && (\n {\n if (disabled) {\n return;\n }\n showEdit(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__EDIT}\n \n )\n }\n {\n isFineResend({ message: message, userId: userId, status: status }) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n isFineDelete({ message: message, userId: userId, status: status }) && (\n {\n if (disabled) {\n return;\n }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n )\n }\n \n )}\n />\n
\n }\n
\n );\n}\n","import React, { ReactElement } from 'react';\nimport { ClientAdminMessage } from '../../index';\nimport './index.scss';\n\nimport Label, { LabelColors, LabelTypography } from '../Label';\n\ninterface Props {\n message: ClientAdminMessage;\n className?: string | string[];\n}\n\nexport default function OpenChannelAdminMessage({\n message,\n className,\n}: Props): ReactElement {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.push('sendbird-openchannel-admin-message');\n\n return (\n \n \n {message.message || ''}\n \n
\n );\n}\n","import Sendbird from 'sendbird';\n\nexport const URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;\nexport const createUrlTester = (regexp: RegExp) => (text: string): boolean => regexp.test(text);\nexport const checkOGIsEnalbed = (message: Sendbird.UserMessage): boolean => {\n const { ogMetaData } = message;\n if (!ogMetaData) {\n return false;\n }\n const { url } = ogMetaData;\n if (!url) {\n return false;\n }\n return true;\n};\n","import React, { useState, useContext, useMemo, useRef, useEffect } from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport ImageRenderer from '../ImageRenderer';\nimport LinkLabel from '../LinkLabel';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\n\nimport uuidv4 from '../../utils/uuid';\nimport { copyToClipboard } from '../OpenchannelUserMessage/utils';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { checkOGIsEnalbed, createUrlTester, URL_REG } from './utils';\nimport { ClientUserMessage } from '../../index';\nimport {\n checkIsByMe,\n isFineCopy,\n isFineEdit,\n isFineResend,\n isFineDelete,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n message: ClientUserMessage;\n className?: string | string[];\n disabled?: boolean;\n showEdit(bool: boolean): void;\n showRemove(bool: boolean): void;\n resendMessage(message: ClientUserMessage): void;\n chainTop?: boolean;\n chainBottom?: boolean;\n status: string;\n userId: string;\n}\n\nexport default function OpenchannelOGMessage({\n message,\n className,\n disabled,\n showEdit,\n showRemove,\n resendMessage,\n chainTop,\n status,\n userId,\n}: Props): JSX.Element {\n if (!message || message.messageType !== 'user') {\n return null;\n }\n\n const { ogMetaData } = message;\n const { defaultImage } = ogMetaData;\n\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n const [contextStyle, setContextStyle] = useState({});\n const messageComponentRef = useRef(null);\n const contextMenuRef = useRef(null);\n const avatarRef = useRef(null);\n\n const isUrl = createUrlTester(URL_REG);\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.push('sendbird-openchannel-og-message');\n const isByMe = checkIsByMe(message, userId);\n const sender = getSenderFromMessage(message);\n\n const MemoizedMessageText = useMemo(() => () => {\n const wordClassName = 'sendbird-openchannel-og-message--word';\n const splitMessage = message.message.split(' ');\n const matchedMessage = splitMessage\n .map((word) => (\n isUrl(word)\n ? (\n \n {word}\n \n )\n : (\n \n {word}\n \n )\n ));\n\n if (message.updatedAt > 0) {\n matchedMessage.push(\n \n {stringSet.MESSAGE_EDITED}\n ,\n );\n }\n\n return matchedMessage;\n }, [message, message.updatedAt]);\n\n const openLink = () => {\n if (checkOGIsEnalbed(message)) {\n const { url } = ogMetaData;\n window.open(url);\n }\n };\n\n // place conxt menu top depending clientHeight of message component\n useEffect(() => {\n if (messageComponentRef.current.clientHeight > 36) {\n setContextStyle({ top: '8px ' });\n } else {\n setContextStyle({ top: '2px' });\n }\n }, [window.innerWidth]);\n\n return (\n \n
\n
\n {\n !chainTop && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n \n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n \n \n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n \n
\n )\n }\n
\n \n {MemoizedMessageText()}\n \n
\n
\n {\n
\n (\n showMenuTrigger({ message: message, userId: userId, status: status }) && (\n {\n toggleDropdown();\n }}\n >\n \n \n )\n )}\n menuItems={(closeDropdown) => (\n \n {\n isFineCopy({ message, userId, status }) && (\n {\n copyToClipboard(message.message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__COPY}\n \n )\n }\n {\n isFineEdit({ message, userId, status }) && (\n {\n if (disabled) {\n return;\n }\n showEdit(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__EDIT}\n \n )\n }\n {\n isFineResend({ message, userId, status }) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n isFineDelete({ message, userId, status }) && (\n {\n if (disabled) {\n return;\n }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n )\n }\n \n )}\n />\n
\n }\n
\n
\n
\n {\n ogMetaData.url && (\n
\n {ogMetaData.url}\n \n )\n }\n {\n ogMetaData.title && (\n
\n {\n ogMetaData.title\n }\n \n )\n }\n {\n ogMetaData.description && (\n
\n {ogMetaData.description}\n \n )\n }\n {\n ogMetaData.url && (\n
\n {\n defaultImage && (\n \n \n
\n )}\n />\n )\n }\n
\n )\n }\n
\n
\n \n );\n}\n","export const SUPPORTING_TYPES = {\n IMAGE: 'IMAGE',\n VIDEO: 'VIDEO',\n UNSUPPORTED: 'UNSUPPORTED',\n};\n\nconst SUPPORTED_MIMES = {\n IMAGE: [\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n ],\n VIDEO: [\n 'video/mpeg',\n 'video/ogg',\n 'video/webm',\n 'video/mp4',\n ],\n};\n\nexport const getSupportingFileType = (type: string): string => {\n if (SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0) {\n return SUPPORTING_TYPES.IMAGE;\n }\n if (SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0) {\n return SUPPORTING_TYPES.VIDEO;\n }\n return SUPPORTING_TYPES.UNSUPPORTED;\n}\n","import React, { useContext, useRef } from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\nimport { SUPPORTING_TYPES, getSupportingFileType } from './utils';\nimport { ClientFileMessage } from '../../index';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport ImageRenderer from '../ImageRenderer';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport {\n checkIsByMe,\n checkIsSent,\n isFineResend,\n isFineDelete,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n message: ClientFileMessage;\n className?: string | string[];\n disabled: boolean;\n userId: string;\n status: string;\n chainTop: boolean;\n chainBottom: boolean;\n onClick(bool: boolean): void,\n showRemove(bool: boolean): void,\n resendMessage(message: ClientFileMessage): void;\n}\n\nexport default function OpenchannelThumbnailMessage({\n message,\n className,\n disabled,\n userId,\n status,\n chainTop,\n onClick,\n showRemove,\n resendMessage,\n}: Props): JSX.Element {\n const {\n type,\n url,\n localUrl,\n } = message;\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n const contextMenuRef = useRef(null);\n const avatarRef = useRef(null);\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.push('sendbird-openchannel-thumbnail-message');\n const isByMe = checkIsByMe(message, userId);\n const isMessageSent = checkIsSent(status);\n const sender = getSenderFromMessage(message);\n\n return (\n \n
\n {\n !chainTop && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n \n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n \n \n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n \n
\n )\n }\n
\n
{\n if (isMessageSent) {\n onClick(true);\n }\n }}\n onKeyDown={() => {\n if (isMessageSent) {\n onClick(true);\n }\n }}\n tabIndex={0}\n role=\"button\"\n >\n
\n {\n {\n [SUPPORTING_TYPES.VIDEO]: (\n (url || localUrl)\n ? (\n
\n \n \n \n \n
\n )\n : (\n
\n )\n ),\n [SUPPORTING_TYPES.IMAGE]: (\n (url || localUrl)\n ? (\n
\n )\n : (\n
\n )\n ),\n [SUPPORTING_TYPES.UNSUPPORTED]: (\n
\n ),\n }[getSupportingFileType(type)]\n }\n
\n
\n
\n
\n (\n showMenuTrigger({ message, userId, status }) && (\n \n \n \n )\n )}\n menuItems={(closeDropdown) => (\n \n {\n isFineResend({ message, userId, status }) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n isFineDelete({ message, userId, status }) && (\n {\n if (disabled) {\n return;\n }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n )\n }\n \n )}\n />\n
\n
\n );\n}\n","import { IconTypes } from '../Icon';\n\nexport const checkFileType = (fileUrl: string): string => {\n let result = null;\n const imageFile = /(\\.gif|\\.jpg|\\.jpeg|\\.txt|\\.pdf)$/i;\n const audioFile = /(\\.mp3)$/i;\n if (imageFile.test(fileUrl)) {\n result = IconTypes.FILE_DOCUMENT;\n } else if (audioFile.test(fileUrl)) {\n result = IconTypes.FILE_AUDIO;\n }\n return result;\n}\n\nexport const truncate = (fullStr:string, strLen: number): string => {\n if (fullStr === null || fullStr === undefined) return '';\n if (fullStr.length <= strLen) return fullStr;\n const separator = '...';\n const sepLen = separator.length;\n const charsToShow = strLen - sepLen;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n};\n","import React, { useContext, useRef } from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport TextButton from '../TextButton';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { checkFileType, truncate } from './utils';\nimport { ClientFileMessage } from '../../index';\nimport {\n checkIsByMe,\n isFineDelete,\n isFineResend,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n message: ClientFileMessage;\n className?: string | string[];\n userId: string;\n disabled?: boolean;\n chainTop?: boolean;\n chainBottom?: boolean;\n status: string;\n\n showRemove(bool: boolean): void;\n resendMessage(message: ClientFileMessage): void;\n}\n\nexport default function OpenchannelFileMessage({\n message,\n className,\n userId,\n disabled,\n chainTop,\n status,\n showRemove,\n resendMessage,\n}: Props): JSX.Element {\n const contextMenuRef = useRef(null);\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n\n const openFileUrl = () => { window.open(message.url); };\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.push('sendbird-openchannel-file-message');\n const isByMe = checkIsByMe(message, userId);\n const sender = getSenderFromMessage(message);\n\n return (\n \n
\n {\n !chainTop && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n \n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n \n \n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n \n
\n )\n }\n
\n {\n checkFileType(message.url) && (\n \n )\n }\n \n \n {truncate(message.url, 40)}\n \n \n
\n
\n
\n {\n (\n showMenuTrigger({ message, userId, status }) && (\n \n \n \n )\n )}\n menuItems={(closeDropdown) => (\n \n {\n isFineResend({ message, userId, status }) && (\n {\n if (disabled) { return; }\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n isFineDelete({ message, userId, status }) && (\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n )\n }\n \n )}\n />\n }\n
\n
\n );\n}\n","import React, { useContext } from 'react'\nimport { ClientFileMessage, ClientUserMessage } from '../../..'\nimport Modal from '../../../ui/Modal';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n onCloseModal(): void;\n onDeleteMessage(message: ClientUserMessage | ClientFileMessage, callback?: () => void): void;\n}\n\nexport default function RemoveMessageModal({\n onCloseModal,\n onDeleteMessage,\n}: Props): JSX.Element {\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n );\n}\n","import { EveryMessage } from '../../..';\nimport { isImage, isVideo } from '../../../ui/FileViewer/types';\n\nexport const MessageTypes = {\n ADMIN: 'ADMIN',\n USER: 'USER',\n FILE: 'FILE',\n THUMBNAIL: 'THUMBNAIL',\n OG: 'OG',\n UNKNOWN: 'UNKNOWN',\n};\n\nexport const SendingMessageStatus = {\n NONE: 'none',\n SUCCEEDED: 'succeeded',\n FAILED: 'failed',\n PENDING: 'pending',\n};\n\nexport const getMessageType = (message: EveryMessage): string => {\n if ((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user') {\n return (message.ogMetaData)\n ? MessageTypes.OG\n : MessageTypes.USER;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return MessageTypes.ADMIN;\n }\n if (message.messageType === 'file') {\n return (isImage(message.type) || isVideo(message.type))\n ? MessageTypes.THUMBNAIL\n : MessageTypes.FILE;\n }\n return MessageTypes.UNKNOWN;\n};\n\nexport default {\n MessageTypes,\n SendingMessageStatus,\n getMessageType,\n};\n","import React, {\n useState,\n useRef,\n ReactElement,\n useMemo,\n} from 'react';\n\nimport format from 'date-fns/format';\nimport {\n ClientFileMessage,\n ClientUserMessage,\n EveryMessage,\n RenderCustomMessage,\n} from '../../../index';\n\nimport OpenChannelUserMessage from '../../../ui/OpenchannelUserMessage';\nimport OpenChannelAdminMessage from '../../../ui/OpenChannelAdminMessage';\nimport OpenChannelOGMessage from '../../../ui/OpenchannelOGMessage';\nimport OpenChannelThumbnailMessage from '../../../ui/OpenchannelThumbnailMessage';\nimport OpenChannelFileMessage from '../../../ui/OpenchannelFileMessage';\n// import UnknownMessage from '../../../ui/UnknownMessage';\n\nimport DateSeparator from '../../../ui/DateSeparator';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport MessageInput from '../../../ui/MessageInput';\nimport FileViewer from '../../../ui/FileViewer';\n\nimport RemoveMessageModal from './RemoveMessageModal';\nimport {\n MessageTypes,\n SendingMessageStatus,\n getMessageType,\n} from './types';\nimport { OpenChannel } from 'sendbird';\n\ninterface Props {\n message: EveryMessage;\n userId: string;\n disabled: boolean;\n editDisabled: boolean;\n hasSeperator: boolean;\n channel: OpenChannel;\n renderCustomMessage?: RenderCustomMessage,\n deleteMessage(message: ClientUserMessage | ClientFileMessage, callback?: () => void): void;\n updateMessage(messageId: number, text: string, callback?: () => void): void;\n resendMessage(failedMessage: ClientUserMessage | ClientFileMessage): void;\n status?: string;\n chainTop: boolean;\n chainBottom: boolean;\n}\n\nexport default function MessageHoc({\n message,\n userId,\n disabled,\n editDisabled,\n hasSeperator,\n channel,\n renderCustomMessage,\n deleteMessage,\n updateMessage,\n resendMessage,\n status,\n chainTop,\n chainBottom,\n}: Props): ReactElement {\n let sender: SendBird.User = null;\n if (message.messageType !== 'admin') {\n sender = message.sender;\n }\n\n const RenderedMessage = useMemo(() => {\n if (renderCustomMessage) {\n return renderCustomMessage(message, channel);\n }\n return null;\n }, [message, renderCustomMessage]);\n\n const [showEdit, setShowEdit] = useState(false);\n const [showRemove, setShowRemove] = useState(false);\n const [showFileViewer, setShowFileViewer] = useState(false);\n const editMessageInputRef = useRef(null);\n\n let isByMe = false;\n\n if (sender && message.messageType !== 'admin') {\n // pending and failed messages are by me\n isByMe = (userId === sender.userId)\n || (message.requestState === SendingMessageStatus.PENDING)\n || (message.requestState === SendingMessageStatus.FAILED);\n }\n\n if(RenderedMessage) {\n return (\n \n \n
\n );\n }\n\n if (message.messageType === 'user' && showEdit) {\n return (\n { setShowEdit(false); }}\n value={message.message}\n />\n );\n }\n\n return (\n \n {/* date-seperator */}\n {\n hasSeperator && (\n \n \n {format(message.createdAt, 'MMMM dd, yyyy')}\n \n \n )\n }\n {/* Message */}\n {\n {\n [MessageTypes.ADMIN]: (() => {\n if (message.messageType === 'admin') {\n return (\n \n )\n }\n })(),\n [MessageTypes.FILE]: (() => {\n if (message.messageType === 'file') {\n return (\n \n );\n }\n return;\n })(),\n [MessageTypes.OG]: (() => {\n if (message.messageType === 'user') {\n return (\n \n );\n }\n return;\n })(),\n [MessageTypes.THUMBNAIL]: (() => {\n if (message.messageType === 'file') {\n return (\n \n );\n }\n return;\n })(),\n [MessageTypes.USER]: (() => {\n if (message.messageType === 'user') {\n return (\n \n );\n }\n return;\n })(),\n [MessageTypes.UNKNOWN]: (() => {\n return;\n // return (\n // \n // );\n })(),\n }[getMessageType(message)]\n }\n {/* Modal */}\n {\n showRemove && (\n setShowRemove(false)}\n onDeleteMessage={() => {\n if (message.messageType !== 'admin') {\n deleteMessage(message);\n }\n }}\n />\n )\n }\n {\n showFileViewer && (\n setShowFileViewer(false)}\n message={message}\n onDelete={deleteMessage}\n isByMe={isByMe}\n />\n )\n }\n {/* {\n !((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file')\n && !(message.isAdminMessage && message.isAdminMessage())\n && !(((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user'))\n && !(showFileViewer)\n && (\n \n )\n } */}\n
\n );\n}\n","import React, { ReactElement, useRef, useEffect } from 'react';\nimport isSameDay from 'date-fns/isSameDay';\nimport {\n ClientFileMessage,\n ClientUserMessage,\n EveryMessage,\n RenderCustomMessage,\n} from '../../../index';\nimport MessageHoc from './MessageHOC';\n\nimport './openchannel-conversation-scroll.scss';\nimport { compareMessagesForGrouping } from '../utils';\n\ninterface Props {\n openchannel: SendBird.OpenChannel;\n user: SendBird.User;\n allMessages: EveryMessage[];\n useMessageGrouping: boolean;\n isOnline: boolean;\n hasMore: boolean;\n renderCustomMessage?: RenderCustomMessage;\n onScroll(callback?: () => void): void;\n scrollDownPromise: PromiseLike;\n showScrollDownButton?(bool: boolean): void;\n updateMessage(messageId: number, text: string, callback?: () => void ): void;\n deleteMessage(message: ClientUserMessage | ClientFileMessage, callback?: () => void ): void;\n resendMessage(failedMessage: ClientUserMessage | ClientFileMessage): void;\n}\n\nexport default function OpenchannelConversationScroll(\n {\n useMessageGrouping = true,\n openchannel,\n user,\n allMessages,\n isOnline = true,\n hasMore,\n onScroll,\n scrollDownPromise,\n renderCustomMessage,\n showScrollDownButton,\n updateMessage,\n deleteMessage,\n resendMessage,\n }: Props\n): ReactElement {\n const scrollRef = useRef(null);\n\n const handleOnScroll = (e) => {\n const element = e.target;\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n } = element;\n if (showScrollDownButton) {\n if (scrollHeight > scrollTop + clientHeight) {\n showScrollDownButton(true);\n } else {\n showScrollDownButton(false);\n }\n }\n\n if (scrollTop === 0) {\n if (!hasMore) {\n return;\n }\n const nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');\n onScroll(() => {\n const first = nodes[0];\n first.scrollIntoView();\n });\n }\n };\n\n useEffect(() => {\n // This promise is created in everytime when user click the scroll to bottom button\n // This scope waits when user click the button and scrolls to the bottom of conversation\n if (scrollDownPromise && scrollRef && scrollRef.current) {\n scrollDownPromise.then(() => {\n scrollRef.current.scrollTo(0, scrollRef.current.scrollHeight);\n if (showScrollDownButton) {\n showScrollDownButton(false);\n }\n });\n }\n return;\n }, [scrollDownPromise]);\n\n return (\n \n
\n
\n
\n {\n allMessages.map((message, index) => {\n let status: string;\n\n if (message.messageType !== 'admin') {\n status = message.sendingStatus;\n }\n\n const previousMessage = allMessages[index - 1];\n const nextMessage = allMessages[index - 1];\n\n const previousMessageCreatedAt = previousMessage && previousMessage.createdAt;\n const currentCreatedAt = message.createdAt;\n // https://stackoverflow.com/a/41855608\n const hasSeperator = !(previousMessageCreatedAt && (\n isSameDay(currentCreatedAt, previousMessageCreatedAt)\n ));\n\n const [chainTop, chainBottom] = useMessageGrouping\n ? compareMessagesForGrouping(previousMessage, message, nextMessage)\n : [false, false];\n return (\n \n )\n })\n }\n
\n
\n
\n );\n}\n","export const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\nexport const SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';\nexport const RESET_MESSAGES = 'RESET_MESSAGES';\nexport const GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';\nexport const GET_PREV_MESSAGES_FAIL = 'GET_PREV_MESSAGES_FAIL';\nexport const SENDING_MESSAGE_FAILED = 'SENDING_MESSAGE_FAILED';\nexport const SENDING_MESSAGE_SUCCEEDED = 'SENDING_MESSAGE_SUCCEEDED';\nexport const SENDING_MESSAGE_START = 'SENDING_MESSAGE_START';\nexport const RESENDING_MESSAGE_START = 'RESENDING_MESSAGE_START';\n\n// event handlers\nexport const ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';\nexport const ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';\nexport const ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';\nexport const ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';\nexport const ON_OPERATOR_UPDATED = 'ON_OPERATOR_UPDATED';\nexport const ON_USER_ENTERED = 'ON_USER_ENTERED';\nexport const ON_USER_EXITED = 'ON_USER_EXITED';\nexport const ON_USER_MUTED = 'ON_USER_MUTED';\nexport const ON_USER_UNMUTED = 'ON_USER_UNMUTED';\nexport const ON_USER_BANNED = 'ON_USER_BANNED';\nexport const ON_USER_UNBANNED = 'ON_USER_UNBANNED';\nexport const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';\nexport const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';\nexport const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';\nexport const ON_META_DATA_CREATED = 'ON_META_DATA_CREATED';\nexport const ON_META_DATA_UPDATED = 'ON_META_DATA_UPDATED';\nexport const ON_META_DATA_DELETED = 'ON_META_DATA_DELETED';\nexport const ON_META_COUNTERS_CREATED = 'ON_META_COUNTERS_CREATED';\nexport const ON_META_COUNTERS_UPDATED = 'ON_META_COUNTERS_UPDATED';\nexport const ON_META_COUNTERS_DELETED = 'ON_META_COUNTERS_DELETED';\nexport const ON_MENTION_RECEIVED = 'ON_MENTION_RECEIVED';\n","import { State as initialStateInterface } from './initialState';\nimport * as actionTypes from './actionTypes';\n\nimport compareIds from '../../../utils/compareIds.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// @ts-ignore: Unreachable code error\ninterface ActionInterface {\n type: string;\n payload?: any;\n}\n\nexport default function reducer(\n state: initialStateInterface,\n action: ActionInterface,\n): initialStateInterface {\n switch (action.type) {\n case actionTypes.RESET_MESSAGES: {\n return {\n ...state,\n allMessages: [],\n };\n }\n\n case actionTypes.SET_CURRENT_CHANNEL: {\n const currentChannel = action.payload;\n const operators = currentChannel.operators;\n if (\n !state.isInvalid\n && state.currentOpenChannel\n && state.currentOpenChannel.url\n && (state.currentOpenChannel.url === currentChannel.url)\n ) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: currentChannel,\n isInvalid: false,\n operators: operators,\n participants: operators,\n };\n }\n case actionTypes.SET_CHANNEL_INVALID: {\n return {\n ...state,\n isInvalid: true,\n };\n }\n case actionTypes.GET_PREV_MESSAGES_SUCESS:\n case actionTypes.GET_PREV_MESSAGES_FAIL: {\n const isFailed = (action.type === actionTypes.GET_PREV_MESSAGES_FAIL);\n const {\n currentOpenChannel = {},\n messages = [],\n hasMore,\n lastMessageTimestamp,\n } = action.payload;\n const actionChannelUrl = currentOpenChannel.url;\n const receivedMessages = isFailed ? [] : messages;\n const _hasMore = isFailed ? false : hasMore;\n const _lastMessageTimestamp = isFailed ? 0 : lastMessageTimestamp;\n\n const stateChannel = state.currentOpenChannel;\n const stateChannelUrl = stateChannel.url;\n\n if (actionChannelUrl !== stateChannelUrl) {\n return state;\n }\n\n const filteredAllMessages = state.allMessages.filter((message) => (\n !(receivedMessages.find(({ messageId }) => compareIds(messageId, message.messageId)))\n ));\n return {\n ...state,\n loading: false,\n initialized: true,\n hasMore: _hasMore,\n lastMessageTimestamp: _lastMessageTimestamp,\n allMessages: [\n ...receivedMessages,\n ...filteredAllMessages,\n ],\n };\n }\n case actionTypes.SENDING_MESSAGE_START: {\n const {\n message,\n channel,\n } = action.payload;\n if (channel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n allMessages: [\n ...state.allMessages,\n { ...message },\n ],\n };\n }\n case actionTypes.SENDING_MESSAGE_SUCCEEDED: {\n const sentMessage = action.payload;\n const newMessages = state.allMessages.map((m) => (\n compareIds(m.reqId, sentMessage.reqId) ? sentMessage : m\n ));\n return {\n ...state,\n allMessages: newMessages,\n };\n }\n case actionTypes.SENDING_MESSAGE_FAILED: {\n const sentMessage = action.payload;\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, sentMessage.reqId) ? sentMessage : m\n )),\n };\n }\n case actionTypes.RESENDING_MESSAGE_START: {\n const eventedChannel = action.payload.channel;\n const resentMessage = action.payload.message;\n if (eventedChannel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, resentMessage.reqId) ? resentMessage : m\n )),\n };\n }\n case actionTypes.ON_MESSAGE_RECEIVED: {\n const eventedChannel = action.payload.channel;\n const receivedMessage = action.payload.message;\n const {\n currentOpenChannel\n } = state;\n\n if (\n !compareIds(eventedChannel.url, currentOpenChannel.url)\n || (\n !(state.allMessages.map(\n (message) => message.messageId).indexOf(receivedMessage.messageId) < 0\n ))\n ) {\n return state;\n }\n\n return {\n ...state,\n allMessages: [...state.allMessages, receivedMessage],\n };\n }\n case actionTypes.ON_MESSAGE_UPDATED: {\n const eventedChannel = action.payload.channel;\n const updatedMessage = action.payload.message;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.map((message) => (\n message.isIdentical(updatedMessage)\n ? updatedMessage\n : message\n )),\n };\n }\n case actionTypes.ON_MESSAGE_DELETED: {\n const eventedChannel = action.payload.channel;\n const deletedMessageId = action.payload.messageId;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.filter((message) => (\n !compareIds(message.messageId, deletedMessageId)\n )),\n };\n }\n case actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID: {\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.reqId, action.payload)\n )),\n };\n }\n case actionTypes.ON_OPERATOR_UPDATED: {\n const eventedChannel = action.payload.channel;\n const updatedOperators = action.payload.operators;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: {\n ...state.currentOpenChannel,\n operators: updatedOperators,\n },\n operators: updatedOperators,\n };\n }\n case actionTypes.ON_USER_ENTERED: {\n const eventedChannel = action.payload.channel;\n const enteredUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n participants: [...state.participants, enteredUser],\n };\n }\n case actionTypes.ON_USER_EXITED: {\n const eventedChannel = action.payload.channel;\n const exitedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n participants: state.participants.filter((participant) => (\n !compareIds(participant.userId, exitedUser.userId)\n )),\n };\n }\n case actionTypes.ON_USER_MUTED: {\n // const eventedChannel = action.payload.channel;\n // const mutedUser = action.payload.user;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_USER_UNMUTED: {\n // const eventedChannel = action.payload.channel;\n // const unmutedUser = action.payload.user;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_USER_BANNED: {\n // const eventedChannel = action.payload.channel;\n // const bannedUser = action.payload.user;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_USER_UNBANNED: {\n // const eventedChannel = action.payload.channel;\n // const unbannedUser = action.payload.user;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_CHANNEL_FROZEN: {\n const frozenChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== frozenChannel.url)) {\n return state;\n }\n return {\n ...state,\n frozen: true,\n };\n }\n case actionTypes.ON_CHANNEL_UNFROZEN: {\n const unfrozenChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== unfrozenChannel.url)) {\n return state;\n }\n return {\n ...state,\n frozen: false,\n };\n }\n case actionTypes.ON_CHANNEL_CHANGED: {\n const changedChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== changedChannel.url)) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: changedChannel,\n };\n }\n case actionTypes.ON_META_DATA_CREATED: {\n // const eventedChannel = action.payload.channel;\n // const createdMetaData = action.payload.metaData;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_DATA_UPDATED: {\n // const eventedChannel = action.payload.channel;\n // const updatedMetaData = action.payload.metaData;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_DATA_DELETED: {\n // const eventedChannel = action.payload.channel;\n // const deletedMetaDataKeys = action.payload.metaDataKeys;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_CREATED: {\n // const eventedChannel = action.payload.channel;\n // const createdMetaCounter = action.payload.metaCounter;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_UPDATED: {\n // const eventedChannel = action.payload.channel;\n // const updatedMetaCounter = action.payload.metaCounter;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_DELETED: {\n // const eventedChannel = action.payload.channel;\n // const deletedMetaCounterKeys = action.payload.metaCounterKeys;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_MENTION_RECEIVED: {\n // const eventedChannel = action.payload.channel;\n // const mentionedMessage = action.payload.message;\n // return {\n // ...state\n // };\n return state;\n }\n default:\n return state;\n }\n}\n","import Sendbird from 'sendbird';\nimport { EveryMessage } from '../../../index';\n\nexport interface State {\n allMessages: EveryMessage[];\n loading: boolean;\n initialized: boolean;\n currentOpenChannel: Sendbird.OpenChannel;\n isInvalid: boolean;\n hasMore: boolean;\n lastMessageTimestamp: number;\n frozen: boolean;\n operators: Sendbird.User[];\n participants: Sendbird.User[];\n // add banned participant ids\n // add muted participant ids\n}\n\nconst initialState: State = {\n allMessages: [],\n loading: false,\n initialized: false,\n currentOpenChannel: null,\n isInvalid: false,\n hasMore: false,\n lastMessageTimestamp: 0,\n frozen: false,\n operators: [],\n participants: [],\n // bannedParticipantIds\n // mutedParticipantIds\n};\n\nexport default initialState;\n","import React, {\n useRef,\n useCallback,\n useEffect,\n useReducer,\n useContext,\n useState,\n ReactElement,\n} from 'react';\nimport Sendbird from 'sendbird';\nimport * as utils from './utils';\nimport './index.scss';\n\nimport MessageInputWrapper from './components/MessageInpuetWrapper';\nimport FrozenChannelNotification from './components/FrozenNotification';\nimport OpenchannelConversationHeader from '../../ui/OpenchannelConversationHeader';\nimport OpenchannelConversationScroll from './components/OpenchannelConversationScroll';\nimport Icon, { IconColors, IconTypes } from '../../ui/Icon';\nimport PlaceHolder, { PlaceHolderTypes } from '../../ui/PlaceHolder';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\n\nimport {\n EveryMessage,\n ClientUserMessage,\n ClientFileMessage,\n OpenChannelProps,\n} from '../../index';\nimport messagesReducer from './dux/reducers';\nimport messagesInitialState from './dux/initialState';\nimport * as messageActionTypes from './dux/actionTypes';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext.jsx';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { scrollIntoLast } from './utils';\nimport * as topics from '../../lib/pubSub/topics';\nimport uuidv4 from '../../utils/uuid';\n\nconst COMPONENT_CLASS_NAME = 'sendbird-openchannel-conversation';\n\ninterface Props extends OpenChannelProps {\n stores: {\n sdkStore?: SendbirdUIKit.SdkStore,\n userStore?: {\n user: Sendbird.User,\n },\n };\n config: {\n userId: string,\n isOnline: boolean,\n logger?: SendbirdUIKit.Logger,\n theme?: string,\n // @ts-ignore: Unreachable code error\n pubSub: any;\n disableUserProfile?: boolean;\n renderUserProfile?(): JSX.Element;\n };\n}\n\nexport const OpenchannelConversation = (props: Props): JSX.Element => {\n // props\n const {\n useMessageGrouping,\n channelUrl,\n stores,\n config,\n queries = {},\n disableUserProfile,\n renderCustomMessage,\n renderUserProfile,\n renderChannelTitle,\n renderMessageInput,\n onBeforeSendUserMessage,\n onBeforeSendFileMessage,\n onChatHeaderActionClick\n } = props;\n\n const {\n sdkStore,\n userStore,\n } = stores;\n const {\n userId,\n isOnline,\n logger,\n pubSub,\n } = config;\n\n const {\n sdk\n } = sdkStore;\n const {\n user\n } = userStore;\n\n // hook variables\n const [messagesStore, messagesDispatcher] = useReducer(messagesReducer, messagesInitialState);\n const {\n allMessages,\n loading,\n initialized,\n currentOpenChannel,\n isInvalid,\n hasMore,\n lastMessageTimestamp,\n } = messagesStore;\n // ref\n const messageInputRef = useRef(null); // useSendMessageCallback\n const { stringSet } = useContext(LocalizationContext);\n const [scrollDownPromise, setScrollDownPromise] = useState(null);\n const [showScrollDownButton, setShowScrollDownButton] = useState(false);\n\n // const\n const sdkInit = sdkStore.initialized;\n const userFilledMessageListParams = queries ? queries.messageListParams: null;\n const disabled = !initialized\n || !isOnline\n || utils.isDisabledBecauseFrozen(currentOpenChannel, userId);\n // || utils.isDisabledBecauseMuted(mutedParticipantIds, userId)\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n // useSetChannel\n useEffect(() => {\n if (channelUrl && sdkInit && sdk && sdk.OpenChannel) {\n logger.info('OpenChannel | useSetChannel fetching channel', channelUrl);\n sdk.OpenChannel.getChannel(channelUrl, (openChannel, error) => {\n if (!error) {\n logger.info('OpenChannel | useSetChannel fetched channel', openChannel);\n messagesDispatcher({\n type: messageActionTypes.SET_CURRENT_CHANNEL,\n payload: openChannel,\n });\n openChannel.enter((error) => {\n if (error) {\n logger.warning('OpenChannel | useSetChannel enter channel failed', { channelUrl, error });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n });\n }\n });\n } else {\n logger.warning('OpenChannel | useSetChannel fetch channel failed', { channelUrl, error });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n });\n }\n });\n // .then((openChannel) => {\n // logger.info('OpenChannel | useSetChannel fetched channel', openChannel);\n // messagesDispatcher({\n // type: messageActionTypes.SET_CURRENT_CHANNEL,\n // payload: openChannel,\n // });\n // })\n // .catch((error) => {\n // logger.warning('OpenChannel | useSetChannel fetch channel failed', { channelUrl, error });\n // messagesDispatcher({\n // type: messageActionTypes.SET_CHANNEL_INVALID,\n // });\n // });\n }\n }, [channelUrl, sdkInit]);\n\n // handles API calls from withSendbird\n useEffect(() => {\n const subscriber = new Map();\n if (!pubSub || !pubSub.subscribe) {\n return;\n }\n subscriber.set(topics.SEND_USER_MESSAGE, pubSub.subscribe(topics.SEND_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel, message } = msg;\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message, fromSelector } = msg;\n if (fromSelector && channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n }\n }));\n subscriber.set(topics.DELETE_MESSAGE, pubSub.subscribe(topics.DELETE_MESSAGE, (msg) => {\n const { channel, messageId } = msg;\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n }\n }));\n\n return () => {\n if (subscriber) {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n }\n };\n }, [channelUrl, sdkInit]);\n\n // useHandleChannelEvents\n useEffect(() => {\n const messageReceiverId = uuidv4();\n if (currentOpenChannel && currentOpenChannel.url && sdk && sdk.ChannelHandler) {\n const ChannelHandler = new sdk.ChannelHandler();\n logger.info('OpenChannel | useHandleChannelEvents: Setup event handler', messageReceiverId);\n\n ChannelHandler.onMessageReceived = (channel, message) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageReceived', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_RECEIVED,\n payload: { channel, message },\n });\n };\n ChannelHandler.onMessageUpdated = (channel, message) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageUpdated', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n };\n ChannelHandler.onMessageDeleted = (channel, messageId) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageDeleted', { channelUrl, messageId });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: { channel, messageId },\n });\n };\n ChannelHandler.onOperatorUpdated = (channel, operators) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onOperatorUpdated', { channelUrl, operators });\n messagesDispatcher({\n type: messageActionTypes.ON_OPERATOR_UPDATED,\n payload: { channel, operators },\n });\n };\n ChannelHandler.onUserEntered = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserEntered', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_ENTERED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserExited = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserExited', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_EXITED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserMuted = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserMuted', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_MUTED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserUnmuted = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserUnmuted', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_UNMUTED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserBanned = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserBanned', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_BANNED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserUnbanned = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserUnbanned', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_UNBANNED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onChannelFrozen = (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelFrozen', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_FROZEN,\n payload: channel,\n });\n };\n ChannelHandler.onChannelUnfrozen = (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelUnfrozen', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_UNFROZEN,\n payload: channel,\n });\n };\n ChannelHandler.onChannelChanged = (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelChanged', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_CHANGED,\n payload: channel,\n });\n };\n ChannelHandler.onMetaDataCreated = (channel, metaData) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataCreated', { channelUrl, metaData });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_CREATED,\n payload: { channel, metaData },\n });\n };\n ChannelHandler.onMetaDataUpdated = (channel, metaData) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataUpdated', { channelUrl, metaData });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_UPDATED,\n payload: { channel, metaData },\n });\n };\n ChannelHandler.onMetaDataDeleted = (channel, metaDataKeys) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataDeleted', { channelUrl, metaDataKeys });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_DELETED,\n payload: { channel, metaDataKeys },\n });\n };\n ChannelHandler.onMetaCountersCreated = (channel, metaCounter) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersCreated', { channelUrl, metaCounter });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_CREATED,\n payload: { channel, metaCounter },\n });\n };\n ChannelHandler.onMetaCountersUpdated = (channel, metaCounter) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersUpdated', { channelUrl, metaCounter });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_UPDATED,\n payload: { channel, metaCounter },\n });\n };\n ChannelHandler.onMetaCountersDeleted = (channel, metaCounterKeys) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersDeleted', { channelUrl, metaCounterKeys });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_DELETED,\n payload: { channel, metaCounterKeys },\n });\n };\n ChannelHandler.onMentionReceived = (channel, message) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMentionReceived', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MENTION_RECEIVED,\n payload: { channel, message },\n });\n };\n sdk.addChannelHandler(messageReceiverId, ChannelHandler);\n }\n\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('OpenChannel | useHandleChannelEvents: Removing message receiver handler', messageReceiverId);\n sdk.removeChannelHandler(messageReceiverId);\n }\n };\n }, [currentOpenChannel]);\n\n // useInitialMessagesFetch\n useEffect(() => {\n logger.info('OpenChannel | useInitialMessagesFetch: Setup started', currentOpenChannel);\n\n messagesDispatcher({\n type: messageActionTypes.RESET_MESSAGES,\n });\n\n if (sdk && sdk.MessageListParams && currentOpenChannel && currentOpenChannel.getMessagesByTimestamp) {\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.isInclusive = true;\n messageListParams.includeReplies = false;\n messageListParams.includeReactions = false;\n if (userFilledMessageListParams) {\n Object.keys(userFilledMessageListParams).forEach(key => {\n messageListParams[key] = userFilledMessageListParams[key];\n });\n logger.info('OpenChannel | Used customizedMessageListParams');\n }\n\n logger.info('OpenChannel | Fetching messages', { currentOpenChannel, messageListParams });\n\n currentOpenChannel.getMessagesByTimestamp(\n new Date().getTime(),\n messageListParams,\n (messages, error) => {\n if (!error) {\n logger.info('OpenChannel | Fetching messages succeeded', messages);\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimestamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n currentOpenChannel,\n messages,\n hasMore,\n lastMessageTimestamp,\n },\n });\n setTimeout(() => {\n utils.scrollIntoLast('.sendbird-msg--scroll-ref');\n });\n } else {\n logger.error('OpenChannel | Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n payload: {\n currentOpenChannel,\n messages: [],\n hasMore: false,\n lastMessageTimestamp: 0,\n },\n });\n }\n },\n );\n // todo: use promise after CoreSDK adds required TS methods\n // .then((messages) => {\n // console.log('get messages via getMessagesByTimestamp', messages);\n // const hasMore = (messages && messages.length > 0);\n // const lastMessageTimestamp = hasMore\n // ? messages[0].createdAt\n // : null;\n // messagesDispatcher({\n // type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n // payload: {\n // currentOpenChannel,\n // messages,\n // hasMore,\n // lastMessageTimestamp,\n // },\n // });\n // })\n // .catch((error: Error): void => {\n // logger.error('OpenChannel | Fetching messages failed', error);\n // messagesDispatcher({\n // type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n // payload: {\n // currentOpenChannel,\n // messages: [],\n // hasMore: false,\n // lastMessageTimestamp: 0,\n // }\n // });\n // });\n }\n }, [currentOpenChannel]);\n\n // useScrollCallback\n const onScroll = useCallback((callback) => {\n if (!hasMore) {\n return;\n }\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReactions = false;\n\n if (userFilledMessageListParams) {\n Object.keys(userFilledMessageListParams).forEach(key => {\n messageListParams[key] = userFilledMessageListParams[key];\n });\n logger.info('OpenChannel: Used userFilledMessageListParams');\n }\n\n logger.info('OpenChannel: Fetching messages', { currentOpenChannel, messageListParams });\n\n currentOpenChannel.getMessagesByTimestamp(\n lastMessageTimestamp || new Date().getTime(),\n messageListParams,\n (messages, error) => {\n if (!error) {\n logger.info('OpenChannel | Fetching messages succeeded', messages);\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimestamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n currentOpenChannel,\n messages,\n hasMore,\n lastMessageTimestamp,\n },\n });\n setTimeout(() => {\n callback();\n });\n } else {\n logger.error('OpenChannel | Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n payload: {\n currentOpenChannel,\n messages: [],\n hasMore: false,\n lastMessageTimestamp: 0,\n },\n });\n }\n }\n );\n }, [currentOpenChannel, lastMessageTimestamp]);\n\n // useSendMessageCallback\n const handleSendMessage = useCallback(() => {\n const text = messageInputRef.current.value;\n\n function createParamsDefualt(txt: string | number): Sendbird.UserMessageParams {\n const message = typeof txt === 'string' ? txt.trim() : txt.toString(10).trim();\n const params = new sdk.UserMessageParams();\n params.message = message;\n return params;\n }\n\n const createCustomParams = onBeforeSendUserMessage\n && typeof onBeforeSendUserMessage === 'function';\n\n if (createCustomParams) {\n logger.info('OpenChannel | Creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);\n }\n\n const params = onBeforeSendUserMessage\n ? onBeforeSendUserMessage(text)\n : createParamsDefualt(text);\n\n logger.info('OpenChannel | Sending message has started', params);\n\n const pendingMessage = currentOpenChannel.sendUserMessage(params, (message, error) => {\n if (error) {\n logger.warning('OpenChannel | Sending message failed', { message });\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: message,\n });\n return;\n }\n logger.info('OpenChannel | Sending message succeeded', { message });\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n });\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: pendingMessage,\n channel: currentOpenChannel,\n },\n });\n }, [currentOpenChannel, onBeforeSendUserMessage]);\n\n // useFileUploadCallback\n const handleFileUpload = useCallback((file) => {\n function createParamsDefualt(file_: File): Sendbird.FileMessageParams {\n const params = new sdk.FileMessageParams();\n params.file = file_;\n return params;\n }\n\n const createCustomParams = onBeforeSendFileMessage\n && typeof onBeforeSendFileMessage === 'function';\n\n if (createCustomParams) {\n logger.info('OpenChannel | Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n\n const params = onBeforeSendFileMessage\n ? onBeforeSendFileMessage(file)\n : createParamsDefualt(file);\n\n logger.info('OpenChannel | Uploading file message start', params);\n\n const pendingMessage = currentOpenChannel.sendFileMessage(\n params,\n (message: EveryMessage, error: Sendbird.SendBirdError) => {\n if (error) {\n logger.error('OpenChannel | Sending file message failed', { message, error });\n message.localUrl = URL.createObjectURL(file);\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: message,\n });\n return;\n }\n logger.info('OpenChannel | Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }\n );\n\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: {\n ...pendingMessage,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentOpenChannel,\n }\n });\n }, [currentOpenChannel, onBeforeSendFileMessage]);\n\n // useUpdateMessageCallback\n const updateMessage = useCallback((messageId: number, text: string, callback?: () => void): void => {\n\n function createParamsDefualt(txt: string): SendBird.UserMessageParams {\n const params = new sdk.UserMessageParams();\n params.message = txt;\n return params;\n }\n\n if (onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function') {\n logger.info('OpenChannel | Creating params using onBeforeUpdateUserMessage');\n }\n\n const params = onBeforeSendUserMessage\n ? onBeforeSendUserMessage(text)\n : createParamsDefualt(text);\n\n currentOpenChannel.updateUserMessage(messageId, params, (message, error) => {\n if (callback) {\n callback();\n }\n if (!error) {\n logger.info('OpenChannel | Updating message succeeded', { message, params });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: {\n channel: currentOpenChannel,\n message,\n },\n });\n } else {\n logger.warning('OpenChannel | Updating message failed', error);\n }\n });\n }, [currentOpenChannel, messagesDispatcher, onBeforeSendUserMessage]);\n\n // useDeleteMessageCallback\n const deleteMessage = useCallback((message: ClientUserMessage | ClientFileMessage, callback?: () => void): void => {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message', message);\n const { requestState } = message;\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message requestState: ', requestState);\n\n if (requestState === 'failed' || requestState === 'pending') {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleted message from local: ', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,\n payload: message.reqId,\n });\n if (callback) {\n callback();\n }\n return;\n }\n\n currentOpenChannel.deleteMessage(message, (error) => {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message from remote: ', requestState);\n if (callback) {\n callback();\n }\n if (!error) {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: {\n channel: currentOpenChannel,\n messageId: message.messageId,\n },\n });\n } else {\n logger.warning('OpenChannel | useDeleteMessageCallback: Deleting message failed', error);\n }\n });\n }, [currentOpenChannel, messagesDispatcher]);\n\n // useResendMessageCallback\n const resendMessage = useCallback((failedMessage: ClientUserMessage | ClientFileMessage) => {\n logger.info('OpenChannel | Reseding message has started', failedMessage);\n const { messageType, file } = failedMessage;\n if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable()) {\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESENDING_MESSAGE_START,\n payload: {\n channel: currentOpenChannel,\n message: failedMessage,\n },\n });\n\n // userMessage\n if (messageType === 'user' && failedMessage.messageType === 'user') {\n currentOpenChannel.resendUserMessage(failedMessage, (message, error) => {\n if (!error) {\n logger.info('OpenChannel | Reseding message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n } else {\n logger.warning('OpenChannel | Resending message failed', error);\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: failedMessage,\n });\n }\n });\n return;\n }\n\n // fileMessage\n if (messageType === 'file' && failedMessage.messageType === 'file') {\n currentOpenChannel.resendFileMessage(failedMessage, file, (message, error) => {\n if (!error) {\n logger.info('OpenChannel | Resending file message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n } else {\n logger.warning('OpenChannel | Resending file message failed', error);\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: failedMessage,\n });\n }\n });\n }\n } else {\n // to alert user on console\n // eslint-disable-next-line no-console\n console.error('OpenChannel | Message is not resendable');\n logger.warning('OpenChannel | Message is not resendable', failedMessage);\n }\n }, [currentOpenChannel, messagesDispatcher]);\n\n const handleClickScrollDownButton = () => {\n const promise = new Promise((resolve) => {\n resolve();\n });\n setScrollDownPromise(promise);\n };\n\n if (!currentOpenChannel || !currentOpenChannel.url) {\n return ();\n }\n if (loading) {\n return ();\n }\n if (isInvalid) {\n return ();\n }\n\n return (\n \n {\n showScrollDownButton && (\n \n \n
\n )\n }\n {\n renderChannelTitle\n ? renderChannelTitle({\n channel: currentOpenChannel,\n user: user,\n })\n : (\n \n )\n }\n {\n currentOpenChannel.isFrozen && (\n \n )\n }\n \n {\n renderMessageInput\n ? (\n renderMessageInput({\n channel: currentOpenChannel,\n user: user,\n disabled: disabled,\n })\n )\n : (\n \n )\n }\n \n );\n};\n\nexport default withSendbirdContext(OpenchannelConversation);\n"],"names":["getMessageCreatedAt","message","format","createdAt","scrollIntoLast","selector","intialTry","MAX_TRIES","currentTry","nodes","document","querySelectorAll","last","length","scrollIntoView","error","setTimeout","isSameGroup","comparingMessage","messageType","sendingStatus","sender","userId","compareMessagesForGrouping","prevMessage","currMessage","nextMessage","kFormatter","num","Math","abs","toFixed","isOperator","openChannel","operators","map","operator","indexOf","isDisabledBecauseFrozen","isFrozen","MessageInputWrapper","_a","ref","channel","user","disabled","onSendMessage","onFileUpload","renderMessageInput","stringSet","useContext","LocalizationContext","React","MessageInput","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED","forwardRef","FrozenNotification","Label","LabelTypography","CAPTION_2","CHANNEL_FROZEN","COMPONENT_CLASS_NAME","OpenchannelConversationHeader","coverImage","_b","title","LabelStringSet","NO_TITLE","_c","subTitle","onActionClick","Avatar","Icon","IconTypes","AVATAR_NO_IMAGE","IconColors","BACKGROUND_3","H_2","LabelColors","ONBACKGROUND_1","BODY_2","ONBACKGROUND_2","IconButton","INFO","PRIMARY","copyToClipboard","text","window","clipboardData","setData","queryCommandSupported","textarea","createElement","textContent","style","position","body","appendChild","select","execCommand","ex","removeChild","OpenChannelMessageStatusTypes","NONE","PENDING","FAILED","CANCELED","SUCCEEDED","getSenderFromMessage","_sender","checkIsSent","status","checkIsByMe","isFineCopy","isFineResend","isResendable","isFineEdit","isFineDelete","showMenuTrigger","props","OpenchannelUserMessage","className","resendMessage","showEdit","showRemove","chainTop","UserProfileContext","disableUserProfile","renderUserProfile","messageRef","useRef","avatarRef","contextMenuRef","useState","contextStyle","setContextStyle","injectingClassName","Array","isArray","push","isByMe","MemoizedMessageText","useMemo","splitMessage","split","matchedMessage","word","updatedAt","uuidv4","BODY_1","MESSAGE_EDITED","useEffect","current","clientHeight","top","innerWidth","join","ContextMenu","toggleDropdown","profileUrl","closeDropdown","MenuItems","paddingTop","paddingBottom","close","UserProfile","SECONDARY_3","friendName","nickname","CAPTION_3","ONBACKGROUND_3","MORE","CONTENT_INVERSE","MenuItem","CONTEXT_MENU_DROPDOWN__COPY","CONTEXT_MENU_DROPDOWN__EDIT","CONTEXT_MENU_DROPDOWN__RESEND","CONTEXT_MENU_DROPDOWN__DELETE","OpenChannelAdminMessage","__spreadArrays","URL_REG","createUrlTester","regexp","test","checkOGIsEnalbed","ogMetaData","url","OpenchannelOGMessage","defaultImage","messageComponentRef","isUrl","wordClassName","LinkLabel","openLink","open","SUBTITLE_2","description","ImageRenderer","alt","NO_THUMBNAIL","SUPPORTING_TYPES","IMAGE","VIDEO","UNSUPPORTED","SUPPORTED_MIMES","getSupportingFileType","type","OpenchannelThumbnailMessage","onClick","localUrl","isMessageSent","PLAY","PHOTO","ON_BACKGROUND_2","checkFileType","fileUrl","result","imageFile","audioFile","FILE_DOCUMENT","FILE_AUDIO","truncate","fullStr","strLen","undefined","separator","sepLen","charsToShow","frontChars","ceil","backChars","floor","substr","OpenchannelFileMessage","openFileUrl","TextButton","RemoveMessageModal","onCloseModal","onDeleteMessage","Modal","MODAL__DELETE_MESSAGE__TITLE","MessageTypes","ADMIN","USER","FILE","THUMBNAIL","OG","UNKNOWN","SendingMessageStatus","getMessageType","isUserMessage","isAdminMessage","isImage","isVideo","MessageHoc","editDisabled","hasSeperator","renderCustomMessage","deleteMessage","updateMessage","chainBottom","RenderedMessage","setShowEdit","_d","setShowRemove","_e","showFileViewer","setShowFileViewer","editMessageInputRef","requestState","messageId","DateSeparator","OpenChannelFileMessage","OpenChannelOGMessage","OpenChannelThumbnailMessage","OpenChannelUserMessage","FileViewer","OpenchannelConversationScroll","useMessageGrouping","openchannel","allMessages","isOnline","hasMore","onScroll","scrollDownPromise","showScrollDownButton","scrollRef","handleOnScroll","e","element","target","scrollTop","scrollHeight","nodes_1","first","then","scrollTo","index","previousMessage","previousMessageCreatedAt","currentCreatedAt","isSameDay","SET_CURRENT_CHANNEL","SET_CHANNEL_INVALID","RESET_MESSAGES","GET_PREV_MESSAGES_SUCESS","GET_PREV_MESSAGES_FAIL","SENDING_MESSAGE_FAILED","SENDING_MESSAGE_SUCCEEDED","SENDING_MESSAGE_START","RESENDING_MESSAGE_START","ON_MESSAGE_RECEIVED","ON_MESSAGE_UPDATED","ON_MESSAGE_DELETED","ON_MESSAGE_DELETED_BY_REQ_ID","ON_OPERATOR_UPDATED","ON_USER_ENTERED","ON_USER_EXITED","ON_USER_MUTED","ON_USER_UNMUTED","ON_USER_BANNED","ON_USER_UNBANNED","ON_CHANNEL_FROZEN","ON_CHANNEL_UNFROZEN","ON_CHANNEL_CHANGED","ON_META_DATA_CREATED","ON_META_DATA_UPDATED","ON_META_DATA_DELETED","ON_META_COUNTERS_CREATED","ON_META_COUNTERS_UPDATED","ON_META_COUNTERS_DELETED","ON_MENTION_RECEIVED","reducer","state","action","actionTypes","currentChannel","payload","isInvalid","currentOpenChannel","participants","isFailed","messages","lastMessageTimestamp","actionChannelUrl","receivedMessages_1","_hasMore","_lastMessageTimestamp","stateChannel","stateChannelUrl","filteredAllMessages","filter","find","compareIds","loading","initialized","sentMessage_1","newMessages","m","reqId","sentMessage_2","eventedChannel","resentMessage_1","receivedMessage","updatedMessage_1","isIdentical","deletedMessageId_1","updatedOperators","enteredUser","exitedUser_1","participant","frozenChannel","frozen","unfrozenChannel","changedChannel","initialState","OpenchannelConversation","channelUrl","stores","config","queries","renderChannelTitle","onBeforeSendUserMessage","onBeforeSendFileMessage","onChatHeaderActionClick","sdkStore","userStore","logger","pubSub","sdk","useReducer","messagesReducer","messagesInitialState","messagesStore","messagesDispatcher","messageInputRef","setScrollDownPromise","setShowScrollDownButton","sdkInit","userFilledMessageListParams","messageListParams","utils","userDefinedDisableUserProfile","userDefinedRenderProfile","OpenChannel","info","getChannel","messageActionTypes","enter","warning","subscriber","Map","subscribe","set","topics","msg","fromSelector","forEach","s","remove","messageReceiverId","ChannelHandler","onMessageReceived","onMessageUpdated","onMessageDeleted","onOperatorUpdated","onUserEntered","onUserExited","onUserMuted","onUserUnmuted","onUserBanned","onUserUnbanned","onChannelFrozen","onChannelUnfrozen","onChannelChanged","onMetaDataCreated","metaData","onMetaDataUpdated","onMetaDataDeleted","metaDataKeys","onMetaCountersCreated","metaCounter","onMetaCountersUpdated","onMetaCountersDeleted","metaCounterKeys","onMentionReceived","addChannelHandler","removeChannelHandler","MessageListParams","getMessagesByTimestamp","messageListParams_1","prevResultSize","isInclusive","includeReplies","includeReactions","Object","keys","key","Date","getTime","hasMore_1","lastMessageTimestamp_1","useCallback","callback","hasMore_2","lastMessageTimestamp_2","handleSendMessage","value","createParamsDefualt","txt","trim","toString","params","UserMessageParams","createCustomParams","pendingMessage","sendUserMessage","handleFileUpload","file","file_","FileMessageParams","sendFileMessage","URL","createObjectURL","updateUserMessage","failedMessage","resendUserMessage","resendFileMessage","console","handleClickScrollDownButton","promise","Promise","resolve","PlaceHolder","PlaceHolderTypes","NO_CHANNELS","LOADING","WRONG","UserProfileProvider","SHEVRON_DOWN","CONTENT","name","participantCount","OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS","coverUrl","FrozenChannelNotification","withSendbirdContext"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/cjs/OpenChannelSettings.js b/dist/cjs/OpenChannelSettings.js
new file mode 100644
index 0000000..3571526
--- /dev/null
+++ b/dist/cjs/OpenChannelSettings.js
@@ -0,0 +1,669 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+require('prop-types');
+var index$1 = require('./index-49d966e1.js');
+var utils = require('./utils-6aedec02.js');
+require('date-fns/format');
+require('./type-c7a3bee7.js');
+require('react-dom');
+var index$2 = require('./index-21269166.js');
+var utils$2 = require('./utils-c8e36c68.js');
+var index$3 = require('./index-63161cb1.js');
+
+function ChannelAvatar(_a) {
+ var channel = _a.channel,
+ theme = _a.theme,
+ _b = _a.height,
+ height = _b === void 0 ? 56 : _b,
+ _c = _a.width,
+ width = _c === void 0 ? 56 : _c;
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ var memoizedAvatar = React.useMemo(function () {
+ return React__default.createElement(index$1.Avatar, {
+ className: "sendbird-chat-header__avatar--group-channel",
+ src: utils.getOpenChannelAvatar(channel),
+ width: width + "px",
+ height: height + "px",
+ alt: channel.name || stringSet.OPEN_CHANNEL_SETTINGS__NO_TITLE
+ });
+ }, [channel.coverUrl, theme]);
+ return React__default.createElement(React__default.Fragment, null, memoizedAvatar);
+}
+
+var EditDetails = function EditDetails(props) {
+ var _onSubmit = props.onSubmit,
+ onCancel = props.onCancel,
+ channel = props.channel,
+ theme = props.theme;
+ var inputRef = React.useRef(null);
+ var formRef = React.useRef(null);
+ var hiddenInputRef = React.useRef(null);
+
+ var _a = React.useState(null),
+ currentImg = _a[0],
+ setCurrentImg = _a[1];
+
+ var _b = React.useState(null),
+ newFile = _b[0],
+ setNewFile = _b[1];
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ var title = channel.name;
+ return React__default.createElement(index$1.Modal, {
+ titleText: stringSet.MODAL__CHANNEL_INFORMATION__TITLE,
+ submitText: stringSet.BUTTON__SAVE,
+ onCancel: onCancel,
+ onSubmit: function onSubmit() {
+ if (title !== '' && !inputRef.current.value) {
+ if (formRef.current.reportValidity) {
+ // might not work in explorer
+ formRef.current.reportValidity();
+ }
+
+ return;
+ }
+
+ _onSubmit(newFile, inputRef.current.value);
+
+ onCancel();
+ },
+ type: index$1.Type.PRIMARY
+ }, React__default.createElement("form", {
+ className: "channel-profile-form",
+ ref: formRef,
+ onSubmit: function onSubmit(e) {
+ e.preventDefault();
+ }
+ }, React__default.createElement("div", {
+ className: "channel-profile-form__img-section"
+ }, React__default.createElement(index$2.InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE), React__default.createElement("div", {
+ className: "channel-profile-form__avatar"
+ }, currentImg ? React__default.createElement(index$1.Avatar, {
+ height: "80px",
+ width: "80px",
+ src: currentImg
+ }) : React__default.createElement(ChannelAvatar, {
+ height: 80,
+ width: 80,
+ channel: channel,
+ theme: theme
+ })), React__default.createElement("input", {
+ ref: hiddenInputRef,
+ type: "file",
+ accept: "image/gif, image/jpeg, image/png",
+ style: {
+ display: 'none'
+ },
+ onChange: function onChange(e) {
+ setCurrentImg(URL.createObjectURL(e.target.files[0]));
+ setNewFile(e.target.files[0]);
+ hiddenInputRef.current.value = '';
+ }
+ }), React__default.createElement(index$1.TextButton, {
+ className: "channel-profile-form__avatar-button",
+ onClick: function onClick() {
+ return hiddenInputRef.current.click();
+ },
+ notUnderline: true
+ }, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.BUTTON_1,
+ color: index$1.LabelColors.PRIMARY
+ }, stringSet.MODAL__CHANNEL_INFORMATION__UPLOAD))), React__default.createElement("div", {
+ className: "channel-profile-form__name-section"
+ }, React__default.createElement(index$2.InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_NAME), React__default.createElement(index$2.Input, {
+ required: title !== '',
+ name: "channel-profile-form__name",
+ ref: inputRef,
+ value: title,
+ placeHolder: stringSet.MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER
+ }))));
+};
+
+function ChannelProfile(props) {
+ var disabled = props.disabled,
+ channel = props.channel,
+ theme = props.theme,
+ onChannelInfoChange = props.onChannelInfoChange;
+ var title = channel.name;
+
+ var _a = React.useState(false),
+ showModal = _a[0],
+ setShowModal = _a[1];
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ return React__default.createElement("div", {
+ className: "sendbird-openchannel-profile"
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-profile--inner"
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-profile__avatar"
+ }, React__default.createElement(ChannelAvatar, {
+ channel: channel,
+ theme: theme,
+ height: 80,
+ width: 80
+ })), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_2,
+ color: index$1.LabelColors.ONBACKGROUND_1,
+ className: "sendbird-openchannel-profile__title"
+ }, title || stringSet.OPEN_CHANNEL_SETTINGS__NO_TITLE), React__default.createElement(index$1.TextButton, {
+ disabled: disabled,
+ className: "sendbird-openchannel-profile__edit",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ setShowModal(true);
+ },
+ notUnderline: true
+ }, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.BUTTON_1,
+ color: disabled ? index$1.LabelColors.ONBACKGROUND_2 : index$1.LabelColors.PRIMARY
+ }, stringSet.CHANNEL_SETTING__PROFILE__EDIT)), showModal && React__default.createElement(EditDetails, {
+ onCancel: function onCancel() {
+ return setShowModal(false);
+ },
+ onSubmit: onChannelInfoChange,
+ channel: channel,
+ theme: theme
+ })));
+}
+
+function ParticipantsModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel;
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+
+ var _b = React.useState([]),
+ participants = _b[0],
+ setParticipants = _b[1];
+
+ var _c = React.useState(null),
+ participantListQuery = _c[0],
+ setParticipantListQuery = _c[1];
+
+ React.useEffect(function () {
+ if (!channel || !channel.createParticipantListQuery) {
+ return;
+ }
+
+ var participantListQuery = channel.createParticipantListQuery();
+ setParticipantListQuery(participantListQuery);
+ participantListQuery.next(function (participantList, error) {
+ if (error) {
+ return;
+ }
+
+ setParticipants(participantList);
+ });
+ }, []);
+ return React__default.createElement("div", null, React__default.createElement(index$1.Modal, {
+ hideFooter: true,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: utils.noop,
+ titleText: stringSet.OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE
+ }, React__default.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = participantListQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ participantListQuery.next(function (fetchedParticipants, error) {
+ if (error) {
+ return;
+ }
+
+ setParticipants(LocalizationContext.__spreadArrays(participants, fetchedParticipants));
+ });
+ }
+ }
+ }, participants.map(function (p) {
+ return React__default.createElement(index$2.UserListItem, {
+ user: p,
+ key: p.userId
+ });
+ }))));
+}
+
+var SHOWN_MEMBER_MAX = 10;
+var UserListItem = function UserListItem(_a) {
+ var member = _a.member,
+ _b = _a.currentUser,
+ currentUser = _b === void 0 ? '' : _b;
+ var avatarRef = React.useRef(null);
+
+ var _c = React.useContext(index$1.UserProfileContext),
+ disableUserProfile = _c.disableUserProfile,
+ renderUserProfile = _c.renderUserProfile;
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ return React__default.createElement("div", {
+ className: "sendbird-participants-accordion__member"
+ }, React__default.createElement("div", {
+ className: "sendbird-participants-accordion__member-avatar"
+ }, React__default.createElement(index$1.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index$1.Avatar, {
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ ref: avatarRef,
+ src: member.profileUrl,
+ width: 24,
+ height: 24
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index$1.MenuItems, {
+ openLeft: true,
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: member,
+ currentUserId: currentUser,
+ close: closeDropdown
+ }) : React__default.createElement(index$1.UserProfile, {
+ disableMessaging: true,
+ user: member,
+ currentUserId: currentUser,
+ onSuccess: closeDropdown
+ }));
+ }
+ })), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_2,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, member.nickname || stringSet.NO_NAME, currentUser === member.userId && stringSet.NO_NAME));
+};
+function ParticipantsAccordion(_a) {
+ var channel = _a.channel,
+ currentUser = _a.currentUser;
+
+ var _b = React.useState([]),
+ participants = _b[0],
+ setParticipants = _b[1];
+
+ var _c = React.useState(false),
+ showMoreModal = _c[0],
+ setShowMoreModal = _c[1];
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ React.useEffect(function () {
+ if (!channel || !channel.createParticipantListQuery) {
+ return;
+ }
+
+ var participantListQuery = channel.createParticipantListQuery();
+ participantListQuery.next(function (participantList, error) {
+ if (error) {
+ return;
+ }
+
+ setParticipants(participantList);
+ });
+ }, [channel]);
+ return React__default.createElement(index$3.Accordion, {
+ className: "sendbird-participants-accordion",
+ id: "participants",
+ renderTitle: function renderTitle() {
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.MEMBERS,
+ fillColor: index$1.IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-openchannel-settings__accordion-icon"
+ }), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE));
+ },
+ renderContent: function renderContent() {
+ return React__default.createElement("div", {
+ className: ""
+ }, React__default.createElement("div", {
+ className: "sendbird-participants-accordion__list"
+ }, participants.slice(0, SHOWN_MEMBER_MAX).map(function (p) {
+ return React__default.createElement(UserListItem, {
+ member: p,
+ currentUser: currentUser,
+ key: p.userId
+ });
+ }), participants && participants.length === 0 ? React__default.createElement(index$1.Label, {
+ className: "sendbird-channel-settings__empty-list",
+ type: index$1.LabelTypography.SUBTITLE_2,
+ color: index$1.LabelColors.ONBACKGROUND_3
+ }, stringSet.OPEN_CHANNEL_SETTINGS__EMPTY_LIST) : null), participants.length >= SHOWN_MEMBER_MAX && React__default.createElement("div", {
+ className: "sendbird-participants-accordion__footer"
+ }, React__default.createElement(index$1.Button, {
+ className: "sendbird-participants-accordion__footer__all-participants",
+ type: index$1.Type.SECONDARY,
+ size: index$1.Size.SMALL,
+ onClick: function onClick() {
+ return setShowMoreModal(true);
+ }
+ }, stringSet.OPEN_CHANNEL_SETTINGS__SEE_ALL), showMoreModal && React__default.createElement(ParticipantsModal, {
+ currentUser: currentUser,
+ hideModal: function hideModal() {
+ setShowMoreModal(false);
+ },
+ channel: channel
+ })));
+ }
+ });
+}
+
+function DeleteChannel(_a) {
+ var isOnline = _a.isOnline,
+ onDeleteChannel = _a.onDeleteChannel;
+
+ var _b = React.useState(false),
+ showDeleteChannelModal = _b[0],
+ setShowDeleteChannelModal = _b[1];
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
+ className: "sendbird-openchannel-settings__panel-item\n sendbird-openchannel-settings__delete-channel\n " + (!isOnline ? 'sendbird-openchannel-settings__panel-item__disabled' : ''),
+ role: "button",
+ tabIndex: 0,
+ onKeyDown: function onKeyDown() {
+ if (!isOnline) {
+ return;
+ }
+
+ setShowDeleteChannelModal(true);
+ },
+ onClick: function onClick() {
+ if (!isOnline) {
+ return;
+ }
+
+ setShowDeleteChannelModal(true);
+ }
+ }, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.DELETE,
+ className: ['sendbird-openchannel-settings__panel-icon-left', 'sendbird-openchannel-settings__panel-icon__delete'].join(' '),
+ height: "24px",
+ width: "24px"
+ }), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_1,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL)), showDeleteChannelModal && React__default.createElement(index$1.Modal, {
+ onCancel: function onCancel() {
+ setShowDeleteChannelModal(false);
+ },
+ onSubmit: function onSubmit() {
+ onDeleteChannel();
+ },
+ submitText: stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT,
+ titleText: stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE
+ }));
+}
+
+function ParticipantsList(_a) {
+ var channel = _a.channel,
+ onCloseClick = _a.onCloseClick,
+ currentUser = _a.currentUser;
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+
+ var _b = React.useState([]),
+ participants = _b[0],
+ setParticipants = _b[1];
+
+ var _c = React.useState(null),
+ participantListQuery = _c[0],
+ setParticipantListQuery = _c[1];
+
+ React.useEffect(function () {
+ if (!channel || !channel.createParticipantListQuery) {
+ return;
+ }
+
+ var participantListQuery = channel.createParticipantListQuery();
+ setParticipantListQuery(participantListQuery);
+ participantListQuery.next(function (participantList, error) {
+ if (error) {
+ return;
+ }
+
+ setParticipants(participantList);
+ });
+ }, [channel]);
+ return React__default.createElement("div", {
+ className: "sendbird-openchannel-settings__participant"
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-settings__header"
+ }, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.H_2,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE), React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.CLOSE,
+ className: "sendbird-openchannel-settings__close-icon",
+ height: "24px",
+ width: "24px",
+ onClick: function onClick() {
+ onCloseClick();
+ }
+ })), React__default.createElement("div", {
+ className: "sendbird-openchannel-settings__participants-list",
+ onScroll: function onScroll(e) {
+ var hasNext = participantListQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ participantListQuery.next(function (fetchedParticipants, error) {
+ if (error) {
+ return;
+ }
+
+ setParticipants(LocalizationContext.__spreadArrays(participants, fetchedParticipants));
+ });
+ }
+ }
+ }, React__default.createElement("div", null, participants.map(function (p) {
+ return React__default.createElement(UserListItem, {
+ member: p,
+ currentUser: currentUser,
+ key: p.userId
+ });
+ }), participants && participants.length === 0 ? React__default.createElement(index$1.Label, {
+ className: "sendbird-channel-settings__empty-list",
+ type: index$1.LabelTypography.SUBTITLE_2,
+ color: index$1.LabelColors.ONBACKGROUND_3
+ }, stringSet.OPEN_CHANNEL_SETTINGS__EMPTY_LIST) : null)));
+}
+
+function InvalidChannel(_a) {
+ var onCloseClick = _a.onCloseClick;
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ return React__default.createElement("div", {
+ className: "sendbird-openchannel-settings"
+ }, React__default.createElement("div", {
+ className: "sendbird-openchannel-settings__header"
+ }, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.H_2,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.CLOSE,
+ className: "sendbird-openchannel-settings__close-icon",
+ height: "24px",
+ width: "24px",
+ onClick: function onClick() {
+ onCloseClick();
+ }
+ })), React__default.createElement("div", {
+ className: "sendbird-openchannel-settings__placeholder"
+ }, React__default.createElement(index$1.PlaceHolder, {
+ type: index$1.PlaceHolderTypes.WRONG
+ })));
+}
+
+var emptyLogger = function emptyLogger() {
+ return {
+ info: utils.noop,
+ error: utils.noop,
+ warning: utils.noop
+ };
+};
+
+function OpenChannelSettings(props) {
+ var channelUrl = props.channelUrl,
+ _a = props.onCloseClick,
+ _onCloseClick = _a === void 0 ? utils.noop : _a,
+ _b = props.onChannelModified,
+ onChannelModified = _b === void 0 ? utils.noop : _b,
+ renderChannelProfile = props.renderChannelProfile,
+ renderUserProfile = props.renderUserProfile,
+ _c = props.disableUserProfile,
+ disableUserProfile = _c === void 0 ? false : _c,
+ _d = props.logger,
+ logger = _d === void 0 ? emptyLogger() : _d,
+ sdk = props.sdk,
+ theme = props.theme,
+ user = props.user,
+ isOnline = props.isOnline;
+
+ var currentUser = user.userId;
+
+ var _e = React.useState(null),
+ channel = _e[0],
+ setChannel = _e[1];
+
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ React.useEffect(function () {
+ if (!channelUrl || !sdk || !sdk.getConnectionState) {
+ setChannel(null);
+ return;
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl, function (openChannel, error) {
+ if (!error) {
+ setChannel(openChannel);
+ } else {
+ setChannel(null);
+ }
+ });
+ }, [channelUrl, sdk]);
+
+ if (!channel) {
+ return React__default.createElement(InvalidChannel, {
+ onCloseClick: function onCloseClick() {
+ logger.info('OpenChannelSettings: Click close');
+
+ if (_onCloseClick) {
+ _onCloseClick();
+ }
+ }
+ });
+ }
+
+ return React__default.createElement(index$1.UserProfileProvider, {
+ disableUserProfile: disableUserProfile,
+ renderUserProfile: renderUserProfile,
+ className: "sendbird-openchannel-settings"
+ }, channel.isOperator(user) ? React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
+ className: "sendbird-openchannel-settings__header"
+ }, React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.H_2,
+ color: index$1.LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.CLOSE,
+ className: "sendbird-openchannel-settings__close-icon",
+ height: "24px",
+ width: "24px",
+ onClick: function onClick() {
+ _onCloseClick();
+ }
+ })), React__default.createElement("div", {
+ className: "sendbird-openchannel-settings__profile"
+ }, renderChannelProfile ? renderChannelProfile({
+ channel: channel
+ }) : React__default.createElement(ChannelProfile, {
+ disabled: !isOnline,
+ channel: channel,
+ theme: theme,
+ onChannelInfoChange: function onChannelInfoChange(currentImg, currentTitle) {
+ logger.info('ChannelSettings: Channel information being updated');
+ channel.updateChannel(currentTitle, currentImg, channel.data, function (openChannel) {
+ logger.info('ChannelSettings: Channel information updated', openChannel);
+ onChannelModified(openChannel); // setChannel(openChannel) => alone not working
+
+ setChannel(null);
+ setChannel(openChannel);
+ });
+ }
+ })), React__default.createElement("div", {
+ className: "sendbird-openchannel-settings__url"
+ }, React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.COPY,
+ className: "sendbird-openchannel-settings__copy-icon",
+ height: "22px",
+ width: "22px",
+ onClick: function onClick() {
+ utils$2.copyToClipboard(channel.url);
+ }
+ }), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.CAPTION_2,
+ color: index$1.LabelColors.ONBACKGROUND_2,
+ className: "sendbird-openchannel-settings__url-label"
+ }, stringSet.OPEN_CHANNEL_SETTINGS__OPERATOR_URL), React__default.createElement(index$1.Label, {
+ type: index$1.LabelTypography.SUBTITLE_2,
+ className: "sendbird-openchannel-settings__url-value"
+ }, channel.url)), React__default.createElement(index$3.AccordionGroup, null, React__default.createElement(ParticipantsAccordion, {
+ channel: channel,
+ currentUser: currentUser
+ })), React__default.createElement(DeleteChannel, {
+ isOnline: isOnline,
+ onDeleteChannel: function onDeleteChannel() {
+ channel.delete(function (response, error) {
+ if (error) {
+ logger.warning('OpenChannelSettings: Delete channel failed', error);
+ return;
+ }
+
+ logger.info('OpenChannelSettings: Delete channel success', response);
+ });
+ }
+ })) : React__default.createElement(ParticipantsList, {
+ currentUser: currentUser,
+ channel: channel,
+ onCloseClick: function onCloseClick() {
+ _onCloseClick();
+ }
+ }));
+}
+
+var ChannelSettingsWithSendbird = LocalizationContext.withSendbirdContext(OpenChannelSettings, function (store) {
+ var logger = store && store.config && store.config.logger;
+ var theme = store && store.config && store.config.theme || 'light';
+ var isOnline = store && store.config && store.config.isOnline;
+ var user = store && store.stores && store.stores.userStore && store.stores.userStore.user;
+ return {
+ sdk: index$1.selectors.getSdk(store),
+ logger: logger,
+ theme: theme,
+ isOnline: isOnline,
+ user: user
+ };
+});
+
+module.exports = ChannelSettingsWithSendbird;
+//# sourceMappingURL=OpenChannelSettings.js.map
diff --git a/dist/cjs/OpenChannelSettings.js.map b/dist/cjs/OpenChannelSettings.js.map
new file mode 100644
index 0000000..c27b662
--- /dev/null
+++ b/dist/cjs/OpenChannelSettings.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"OpenChannelSettings.js","sources":["../../../src/ui/ChannelAvatar/OpenChannelAvatar.tsx","../../../src/smart-components/OpenChannelSettings/components/EditDetailsModal.tsx","../../../src/smart-components/OpenChannelSettings/components/ChannelProfile.tsx","../../../src/smart-components/OpenChannelSettings/components/ParticipantsModal.tsx","../../../src/smart-components/OpenChannelSettings/components/ParticipantsAccordion.tsx","../../../src/smart-components/OpenChannelSettings/components/DeleteChannel.tsx","../../../src/smart-components/OpenChannelSettings/components/ParticipantsList.tsx","../../../src/smart-components/OpenChannelSettings/components/InvalidChannel.tsx","../../../src/smart-components/OpenChannelSettings/index.tsx"],"sourcesContent":["import React, { useMemo, useContext } from 'react';\n\nimport Avatar from '../Avatar/index';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport * as utils from './utils';\n\ninterface Props {\n channel: SendBird.OpenChannel;\n theme: string;\n height?: number;\n width?: number;\n}\n\nfunction ChannelAvatar({\n channel,\n theme,\n height = 56,\n width = 56,\n}: Props): JSX.Element{\n const { stringSet } = useContext(LocalizationContext);\n const memoizedAvatar = useMemo(() => {\n return (\n \n );\n }, [channel.coverUrl, theme]);\n return (\n <>{ memoizedAvatar }>\n );\n}\n\nexport default ChannelAvatar;\n","import React, {\n useState,\n useRef,\n useContext,\n ReactElement,\n} from 'react';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Modal from '../../../ui/Modal';\nimport Input, { InputLabel } from '../../../ui/Input';\nimport Avatar from '../../../ui/Avatar/index';\nimport { Type as ButtonType } from '../../../ui/Button/type';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport TextButton from '../../../ui/TextButton';\nimport OpenChannelAvatar from '../../../ui/ChannelAvatar/OpenChannelAvatar';\n\ninterface Props {\n onSubmit(newFile: File, newTitle: string): void;\n onCancel(): void;\n channel: SendBird.OpenChannel;\n theme: string;\n}\n\nconst EditDetails = (props: Props): ReactElement => {\n const {\n onSubmit,\n onCancel,\n channel,\n theme,\n } = props;\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const hiddenInputRef = useRef(null);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n const title = channel.name;\n return (\n {\n if (title !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(newFile, inputRef.current.value);\n onCancel();\n }}\n type={ButtonType.PRIMARY}\n >\n \n \n );\n};\n\nexport default EditDetails;\n","import React, {\n ReactElement,\n useContext,\n useState,\n} from 'react';\n\nimport './channel-profile.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport TextButton from '../../../ui/TextButton';\nimport OpenChannelAvatar from '../../../ui/ChannelAvatar/OpenChannelAvatar';\nimport EditDetailsModal from './EditDetailsModal';\n\ninterface Props {\n channel: SendBird.OpenChannel;\n disabled: boolean;\n theme: string;\n onChannelInfoChange(currentImg: File, currentTitle: string): void;\n}\n\nexport default function ChannelProfile(props: Props): ReactElement {\n const {\n disabled,\n channel,\n theme,\n onChannelInfoChange,\n } = props;\n const title = channel.name;\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n
\n
\n \n
\n
\n {title || stringSet.OPEN_CHANNEL_SETTINGS__NO_TITLE}\n \n
{\n if (disabled) { return; }\n setShowModal(true);\n }}\n notUnderline\n >\n \n {stringSet.CHANNEL_SETTING__PROFILE__EDIT}\n \n \n {\n showModal && (\n
setShowModal(false)}\n onSubmit={onChannelInfoChange}\n channel={channel}\n theme={theme}\n />\n )\n }\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useContext,\n} from 'react';\n\nimport Modal from '../../../ui/Modal';\nimport UserListItem from '../../../ui/UserListItem';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { noop } from '../../../utils/utils';\n\ninterface Props {\n currentUser: string;\n hideModal(): void;\n channel: SendBird.OpenChannel;\n}\n\nexport default function ParticipantsModal({\n hideModal,\n channel,\n}: Props): ReactElement {\n const { stringSet } = useContext(LocalizationContext);\n const [participants, setParticipants] = useState([]);\n const [participantListQuery, setParticipantListQuery] = useState(null);\n useEffect(() => {\n if (!channel || !channel.createParticipantListQuery) {\n return;\n }\n const participantListQuery = channel.createParticipantListQuery();\n setParticipantListQuery(participantListQuery);\n participantListQuery.next((participantList, error) => {\n if (error) {\n return;\n }\n setParticipants(participantList);\n });\n }, []);\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText={stringSet.OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE}\n >\n {\n const { hasNext } = participantListQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n participantListQuery.next((fetchedParticipants, error) => {\n if (error) {\n return;\n }\n setParticipants([\n ...participants,\n ...fetchedParticipants,\n ])\n });\n }\n }}\n >\n { participants.map((p) => (\n \n ))}\n
\n \n
\n )\n}\n","import React, {\n ReactElement,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\nimport { UserProfileContext } from '../../../lib/UserProfileContext';\nimport Button from '../../../ui/Button';\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../ui/Button/type';\nimport Accordion from '../../../ui/Accordion';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport Avatar from '../../../ui/Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport ParticipantsModal from './ParticipantsModal';\nimport UserProfile from '../../../ui/UserProfile';\nimport ContextMenu, { MenuItems } from '../../../ui/ContextMenu';\n\nconst SHOWN_MEMBER_MAX = 10;\n\ninterface UserListItemProps {\n member: SendBird.User;\n currentUser?: string;\n}\n\nexport const UserListItem = ({\n member,\n currentUser = '',\n}: UserListItemProps): ReactElement => {\n const avatarRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n src={member.profileUrl}\n width={24}\n height={24}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: member,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n
\n {member.nickname || stringSet.NO_NAME}\n {\n (currentUser === member.userId) && (\n stringSet.NO_NAME\n )\n }\n \n
\n );\n};\n\ninterface Props {\n channel: SendBird.OpenChannel;\n currentUser: string;\n}\n\nexport default function ParticipantsAccordion({ channel, currentUser }: Props): ReactElement {\n const [participants, setParticipants] = useState([]);\n const [showMoreModal, setShowMoreModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n useEffect(() => {\n if (!channel || !channel.createParticipantListQuery) {\n return;\n }\n const participantListQuery = channel.createParticipantListQuery();\n participantListQuery.next((participantList, error) => {\n if (error) {\n return;\n }\n setParticipants(participantList);\n });\n }, [channel]);\n\n return (\n (\n <>\n \n \n {stringSet.OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE}\n \n >\n )}\n renderContent={() => (\n \n
\n {\n participants.slice(0, SHOWN_MEMBER_MAX).map((p) => (\n \n ))\n }\n {\n (participants && participants.length === 0)\n ? (\n \n {stringSet.OPEN_CHANNEL_SETTINGS__EMPTY_LIST}\n \n ): null\n }\n
\n {\n participants.length >= SHOWN_MEMBER_MAX && (\n
\n
setShowMoreModal(true)}\n >\n {stringSet.OPEN_CHANNEL_SETTINGS__SEE_ALL}\n \n {\n showMoreModal && (\n
{\n setShowMoreModal(false);\n }}\n channel={channel}\n />\n )\n }\n \n )\n }\n
\n )}\n />\n );\n}\n","import React, {\n ReactElement,\n useState,\n useContext,\n} from 'react';\n\nimport Modal from '../../../ui/Modal';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport Icon, { IconTypes } from '../../../ui/Icon';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n isOnline: boolean;\n onDeleteChannel(): void;\n}\n\nexport default function DeleteChannel({\n isOnline,\n onDeleteChannel,\n}: Props): ReactElement {\n const [showDeleteChannelModal, setShowDeleteChannelModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n return (\n <>\n {\n if (!isOnline) { return; }\n setShowDeleteChannelModal(true);\n }}\n onClick={() => {\n if (!isOnline) { return; }\n setShowDeleteChannelModal(true);\n }}\n >\n \n \n {stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL}\n \n
\n {\n showDeleteChannelModal && (\n {\n setShowDeleteChannelModal(false);\n }}\n onSubmit={() => {\n onDeleteChannel();\n }}\n submitText={stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT}\n titleText={stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE}\n />\n )\n }\n >\n )\n}\n","import React, {\n ReactElement,\n useContext,\n useState,\n useEffect,\n} from 'react';\n\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport Icon, { IconTypes } from '../../../ui/Icon';\n\nimport { UserListItem } from './ParticipantsAccordion';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n channel: SendBird.OpenChannel;\n onCloseClick(): void;\n currentUser: string;\n}\n\nexport default function ParticipantsList({\n channel,\n onCloseClick,\n currentUser,\n}: Props): ReactElement {\n const { stringSet } = useContext(LocalizationContext);\n const [participants, setParticipants] = useState([]);\n const [participantListQuery, setParticipantListQuery] = useState(null);\n useEffect(() => {\n if (!channel || !channel.createParticipantListQuery) {\n return;\n }\n const participantListQuery = channel.createParticipantListQuery();\n setParticipantListQuery(participantListQuery);\n participantListQuery.next((participantList, error) => {\n if (error) {\n return;\n }\n setParticipants(participantList);\n });\n }, [channel]);\n return (\n \n
\n \n {stringSet.OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE}\n \n {\n onCloseClick();\n }}\n />\n
\n
{\n const { hasNext } = participantListQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n participantListQuery.next((fetchedParticipants, error) => {\n if (error) {\n return;\n }\n setParticipants([\n ...participants,\n ...fetchedParticipants,\n ])\n });\n }\n }}\n >\n
\n {\n participants.map((p: SendBird.User) => (\n \n ))\n }\n {\n (participants && participants.length === 0)\n ? (\n \n {stringSet.OPEN_CHANNEL_SETTINGS__EMPTY_LIST}\n \n ): null\n }\n
\n
\n
\n )\n}\n","import React, { ReactElement, useContext } from 'react'\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport Icon, { IconTypes } from '../../../ui/Icon';\n\nimport PlaceHolder from '../../../ui/PlaceHolder';\nimport PlaceHolderTypes from '../../../ui/PlaceHolder/type';\n\ninterface Props {\n onCloseClick?(): void;\n}\n\nexport default function InvalidChannel({\n onCloseClick,\n}: Props): ReactElement {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n \n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n {\n onCloseClick();\n }}\n />\n
\n
\n
\n )\n}\n","import React, {\n useContext,\n useState,\n useEffect,\n} from 'react';\nimport { OpenChannelSettingsProps } from '../../index';\n\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport selectors from '../../lib/selectors';\n\nimport { copyToClipboard } from '../../ui/Message/utils.js'\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../../ui/Label';\nimport Icon, { IconTypes } from '../../ui/Icon';\nimport ChannelProfile from './components/ChannelProfile';\nimport ParticipantsAccordion from './components/ParticipantsAccordion';\nimport DeleteChannel from './components/DeleteChannel';\nimport ParticipantsList from './components/ParticipantsList';\nimport InvalidChannel from './components/InvalidChannel';\nimport { AccordionGroup } from '../../ui/Accordion';\nimport { noop } from '../../utils/utils';\n\nconst emptyLogger = () => ({\n info: noop,\n error: noop,\n warning: noop,\n});\n\ninterface Props extends OpenChannelSettingsProps {\n logger: SendbirdUIKit.Logger;\n sdk: SendBird.SendBirdInstance;\n theme: string;\n user: SendBird.User;\n isOnline: boolean;\n}\n\nfunction OpenChannelSettings(props: Props) {\n const {\n channelUrl,\n onCloseClick = noop,\n onChannelModified = noop,\n renderChannelProfile,\n renderUserProfile,\n disableUserProfile = false,\n logger = emptyLogger(),\n sdk,\n theme,\n user,\n isOnline,\n } = props;\n\n const currentUser = user.userId;\n const [channel, setChannel] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n useEffect(() => {\n if (!channelUrl || !sdk || !sdk.getConnectionState) {\n setChannel(null);\n return;\n }\n\n sdk.OpenChannel.getChannel(channelUrl, (openChannel, error) => {\n if (!error) {\n setChannel(openChannel);\n } else {\n setChannel(null);\n }\n });\n }, [channelUrl, sdk])\n if (!channel) {\n return (\n {\n logger.info('OpenChannelSettings: Click close');\n if (onCloseClick) {\n onCloseClick();\n }\n }}\n />\n );\n }\n return (\n \n {\n channel.isOperator(user)\n ? (\n <>\n \n \n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n {\n onCloseClick();\n }}\n />\n
\n \n {\n renderChannelProfile\n ? renderChannelProfile({ channel })\n : (\n {\n logger.info('ChannelSettings: Channel information being updated');\n channel.updateChannel(\n currentTitle,\n currentImg,\n channel.data,\n (openChannel) => {\n logger.info('ChannelSettings: Channel information updated', openChannel);\n onChannelModified(openChannel);\n // setChannel(openChannel) => alone not working\n setChannel(null);\n setChannel(openChannel);\n },\n );\n }}\n />\n )\n }\n
\n \n {\n copyToClipboard(channel.url);\n }}\n />\n \n {stringSet.OPEN_CHANNEL_SETTINGS__OPERATOR_URL}\n \n \n {channel.url}\n \n
\n \n \n \n {\n channel.delete((response, error) => {\n if (error) {\n logger.warning('OpenChannelSettings: Delete channel failed', error);\n return;\n }\n logger.info('OpenChannelSettings: Delete channel success', response);\n });\n }}\n />\n >\n ) : (\n {\n onCloseClick();\n }}\n />\n )\n }\n \n )\n}\n\nconst ChannelSettingsWithSendbird = withSendbirdContext(OpenChannelSettings, (store) => {\n const logger = (store && store.config && store.config.logger);\n const theme = (store && store.config && store.config.theme) || 'light';\n const isOnline = (store && store.config && store.config.isOnline);\n const user = (store && store.stores && store.stores.userStore\n && store.stores.userStore.user);\n return {\n sdk: selectors.getSdk(store),\n logger,\n theme,\n isOnline,\n user,\n };\n});\n\nexport default ChannelSettingsWithSendbird;\n"],"names":["ChannelAvatar","_a","channel","theme","_b","height","_c","width","stringSet","useContext","LocalizationContext","memoizedAvatar","useMemo","React","Avatar","utils","name","OPEN_CHANNEL_SETTINGS__NO_TITLE","coverUrl","EditDetails","props","onSubmit","onCancel","inputRef","useRef","formRef","hiddenInputRef","useState","currentImg","setCurrentImg","newFile","setNewFile","title","Modal","MODAL__CHANNEL_INFORMATION__TITLE","BUTTON__SAVE","current","value","reportValidity","ButtonType","PRIMARY","e","preventDefault","InputLabel","MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE","OpenChannelAvatar","display","URL","createObjectURL","target","files","TextButton","click","Label","LabelTypography","BUTTON_1","LabelColors","MODAL__CHANNEL_INFORMATION__UPLOAD","MODAL__CHANNEL_INFORMATION__CHANNEL_NAME","Input","MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER","ChannelProfile","disabled","onChannelInfoChange","showModal","setShowModal","SUBTITLE_2","ONBACKGROUND_1","ONBACKGROUND_2","CHANNEL_SETTING__PROFILE__EDIT","EditDetailsModal","ParticipantsModal","hideModal","participants","setParticipants","participantListQuery","setParticipantListQuery","useEffect","createParticipantListQuery","next","participantList","error","noop","OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE","hasNext","fetchMore","clientHeight","scrollTop","scrollHeight","fetchedParticipants","map","p","UserListItem","userId","SHOWN_MEMBER_MAX","member","currentUser","avatarRef","UserProfileContext","disableUserProfile","renderUserProfile","ContextMenu","toggleDropdown","profileUrl","closeDropdown","MenuItems","paddingTop","paddingBottom","user","currentUserId","close","UserProfile","nickname","NO_NAME","ParticipantsAccordion","showMoreModal","setShowMoreModal","Accordion","Icon","IconTypes","MEMBERS","IconColors","SUBTITLE_1","OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE","slice","length","ONBACKGROUND_3","OPEN_CHANNEL_SETTINGS__EMPTY_LIST","Button","ButtonTypes","SECONDARY","ButtonSizes","SMALL","OPEN_CHANNEL_SETTINGS__SEE_ALL","DeleteChannel","isOnline","onDeleteChannel","showDeleteChannelModal","setShowDeleteChannelModal","DELETE","join","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE","ParticipantsList","onCloseClick","H_2","OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE","CLOSE","InvalidChannel","CHANNEL_SETTING__HEADER__TITLE","PlaceHolder","PlaceHolderTypes","WRONG","emptyLogger","info","warning","OpenChannelSettings","channelUrl","onChannelModified","renderChannelProfile","_d","logger","sdk","_e","setChannel","getConnectionState","OpenChannel","getChannel","openChannel","UserProfileProvider","isOperator","currentTitle","updateChannel","data","COPY","copyToClipboard","url","CAPTION_2","OPEN_CHANNEL_SETTINGS__OPERATOR_URL","AccordionGroup","delete","response","ChannelSettingsWithSendbird","withSendbirdContext","store","config","stores","userStore","selectors","getSdk"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/cjs/SendbirdProvider.js b/dist/cjs/SendbirdProvider.js
new file mode 100644
index 0000000..b1e183c
--- /dev/null
+++ b/dist/cjs/SendbirdProvider.js
@@ -0,0 +1,716 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+var PropTypes = _interopDefault(require('prop-types'));
+var Sb = _interopDefault(require('sendbird'));
+var actionTypes = require('./actionTypes-920b541f.js');
+var cssVars = _interopDefault(require('css-vars-ponyfill'));
+
+var INIT_SDK = 'INIT_SDK';
+var SET_SDK_LOADING = 'SET_SDK_LOADING';
+var RESET_SDK = 'RESET_SDK';
+var SDK_ERROR = 'SDK_ERROR';
+
+var APP_VERSION_STRING = '2.0.0-alpha.0';
+var disconnectSdk = function disconnectSdk(_ref) {
+ var sdkDispatcher = _ref.sdkDispatcher,
+ userDispatcher = _ref.userDispatcher,
+ sdk = _ref.sdk,
+ onDisconnect = _ref.onDisconnect;
+ sdkDispatcher({
+ type: SET_SDK_LOADING,
+ payload: true
+ });
+
+ if (sdk && sdk.disconnect) {
+ sdk.disconnect().then(function () {
+ sdkDispatcher({
+ type: RESET_SDK
+ });
+ userDispatcher({
+ type: actionTypes.RESET_USER
+ });
+ }).finally(function () {
+ onDisconnect();
+ });
+ } else {
+ onDisconnect();
+ }
+};
+var handleConnection = function handleConnection(_ref2, dispatchers) {
+ var userId = _ref2.userId,
+ appId = _ref2.appId,
+ nickname = _ref2.nickname,
+ profileUrl = _ref2.profileUrl,
+ accessToken = _ref2.accessToken,
+ sdk = _ref2.sdk,
+ logger = _ref2.logger;
+ var sdkDispatcher = dispatchers.sdkDispatcher,
+ userDispatcher = dispatchers.userDispatcher;
+ disconnectSdk({
+ sdkDispatcher: sdkDispatcher,
+ userDispatcher: userDispatcher,
+ sdk: sdk,
+ logger: logger,
+ onDisconnect: function onDisconnect() {
+ logger.info('Setup connection');
+ sdkDispatcher({
+ type: SET_SDK_LOADING,
+ payload: true
+ });
+
+ if (userId && appId) {
+ var newSdk = new Sb({
+ appId: appId
+ }); // to check if code is released version from rollup and *not from storybook*
+ // see rollup config file
+
+ {
+ newSdk.addExtension('sb_uikit', APP_VERSION_STRING);
+ }
+
+ var connectCbSucess = function connectCbSucess(user) {
+ sdkDispatcher({
+ type: INIT_SDK,
+ payload: newSdk
+ });
+ userDispatcher({
+ type: actionTypes.INIT_USER,
+ payload: user
+ }); // use nickname/profileUrl if provided
+ // or set userID as nickname
+
+ var newNickName = nickname || user.nickname;
+ var newProfileUrl = profileUrl || user.profileUrl;
+ newSdk.updateCurrentUserInfo(newNickName, newProfileUrl).then(function (namedUser) {
+ userDispatcher({
+ type: actionTypes.UPDATE_USER_INFO,
+ payload: namedUser
+ });
+ });
+ };
+
+ var connectCbError = function connectCbError(e) {
+ logger.error('Connection failed', "".concat(e));
+ sdkDispatcher({
+ type: RESET_SDK
+ });
+ sdkDispatcher({
+ type: actionTypes.RESET_USER
+ });
+ sdkDispatcher({
+ type: SDK_ERROR
+ });
+ };
+
+ if (accessToken) {
+ newSdk.connect(userId, accessToken).then(function (res) {
+ return connectCbSucess(res);
+ }).catch(function (err) {
+ return connectCbError(err);
+ });
+ } else {
+ newSdk.connect(userId).then(function (res) {
+ return connectCbSucess(res);
+ }).catch(function (err) {
+ return connectCbError(err);
+ });
+ }
+ } else {
+ sdkDispatcher({
+ type: SDK_ERROR
+ });
+ logger.warning('Connection failed', 'UserId or appId missing');
+ }
+ }
+ });
+};
+
+var isEmpty = function isEmpty(obj) {
+ if (obj === null || obj === undefined) {
+ return true;
+ }
+
+ for (var prop in obj) {
+ if (obj.hasOwnProperty(prop)) {
+ return false;
+ }
+ }
+
+ return JSON.stringify(obj) === JSON.stringify({});
+};
+
+var useTheme = function useTheme(overrides) {
+ React.useLayoutEffect(function () {
+ if (!isEmpty(overrides)) {
+ cssVars({
+ variables: LocalizationContext.__assign({
+ '--sendbird-dark-primary-500': '#4d2aa6',
+ '--sendbird-dark-primary-400': '#6440C4',
+ '--sendbird-dark-primary-300': '#7B53EF',
+ '--sendbird-dark-primary-200': '#9E8CF5',
+ '--sendbird-dark-primary-100': '#E2DFFF',
+ '--sendbird-dark-secondary-500': '#007A7A',
+ '--sendbird-dark-secondary-400': '#189A8D',
+ '--sendbird-dark-secondary-300': '#2EBA9F',
+ '--sendbird-dark-secondary-200': '#6FD6BE',
+ '--sendbird-dark-secondary-100': '#AEF2DC',
+ '--sendbird-dark-information-100': '#b2d9ff',
+ '--sendbird-dark-error-500': '#A30E2D',
+ '--sendbird-dark-error-400': '#C11F41',
+ '--sendbird-dark-error-300': '#E53157',
+ '--sendbird-dark-error-200': '#FF6183',
+ '--sendbird-dark-error-100': '#FFABBD',
+ '--sendbird-dark-background-700': '#000000',
+ '--sendbird-dark-background-600': '#161616',
+ '--sendbird-dark-background-500': '#2C2C2C',
+ '--sendbird-dark-background-400': '#393939',
+ '--sendbird-dark-background-300': '#A8A8A8',
+ '--sendbird-dark-background-200': '#D9D9D9',
+ '--sendbird-dark-background-100': '#F0F0F0',
+ '--sendbird-dark-background-50': '#FFFFFF',
+ '--sendbird-dark-overlay': 'rgba(0, 0, 0, 0.32)',
+ '--sendbird-dark-onlight-01': 'rgba(0, 0, 0, 0.88)',
+ '--sendbird-dark-onlight-02': 'rgba(0, 0, 0, 0.50)',
+ '--sendbird-dark-onlight-03': 'rgba(0, 0, 0, 0.38)',
+ '--sendbird-dark-onlight-04': 'rgba(0, 0, 0, 0.12)',
+ '--sendbird-dark-ondark-01': 'rgba(255, 255, 255, 0.88)',
+ '--sendbird-dark-ondark-02': 'rgba(255, 255, 255, 0.50)',
+ '--sendbird-dark-ondark-03': 'rgba(255, 255, 255, 0.38)',
+ '--sendbird-dark-ondark-04': 'rgba(255, 255, 255, 0.12)',
+ '--sendbird-dark-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',
+ '--sendbird-dark-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',
+ '--sendbird-dark-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',
+ '--sendbird-dark-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',
+ '--sendbird-dark-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-primary-500': '#4d2aa6',
+ '--sendbird-light-primary-400': '#6440C4',
+ '--sendbird-light-primary-300': '#7B53EF',
+ '--sendbird-light-primary-200': '#9E8CF5',
+ '--sendbird-light-primary-100': '#E2DFFF',
+ '--sendbird-light-secondary-500': '#007A7A',
+ '--sendbird-light-secondary-400': '#189A8D',
+ '--sendbird-light-secondary-300': '#2EBA9F',
+ '--sendbird-light-secondary-200': '#6FD6BE',
+ '--sendbird-light-secondary-100': '#AEF2DC',
+ '--sendbird-light-information-100': '#b2d9ff',
+ '--sendbird-light-error-500': '#A30E2D',
+ '--sendbird-light-error-400': '#C11F41',
+ '--sendbird-light-error-300': '#E53157',
+ '--sendbird-light-error-200': '#FF6183',
+ '--sendbird-light-error-100': '#FFABBD',
+ '--sendbird-light-background-700': '#000000',
+ '--sendbird-light-background-600': '#161616',
+ '--sendbird-light-background-500': '#2C2C2C',
+ '--sendbird-light-background-400': '#393939',
+ '--sendbird-light-background-300': '#A8A8A8',
+ '--sendbird-light-background-200': '#D9D9D9',
+ '--sendbird-light-background-100': '#F0F0F0',
+ '--sendbird-light-background-50': ' #FFFFFF',
+ '--sendbird-light-overlay': 'rgba(0, 0, 0, 0.32)',
+ '--sendbird-light-onlight-01': 'rgba(0, 0, 0, 0.88)',
+ '--sendbird-light-onlight-02': 'rgba(0, 0, 0, 0.50)',
+ '--sendbird-light-onlight-03': 'rgba(0, 0, 0, 0.38)',
+ '--sendbird-light-onlight-04': 'rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-ondark-01': 'rgba(255, 255, 255, 0.88)',
+ '--sendbird-light-ondark-02': 'rgba(255, 255, 255, 0.50)',
+ '--sendbird-light-ondark-03': 'rgba(255, 255, 255, 0.38)',
+ '--sendbird-light-ondark-04': 'rgba(255, 255, 255, 0.12)',
+ '--sendbird-light-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-theme-surface-2': '#EAEAEA'
+ }, overrides)
+ });
+ }
+ }, [overrides]);
+};
+
+var sdkInitialState = {
+ initialized: false,
+ loading: false,
+ sdk: {},
+ error: false
+};
+
+function reducer(state, action) {
+ switch (action.type) {
+ case SET_SDK_LOADING:
+ return LocalizationContext._objectSpread2({}, state, {
+ initialized: false,
+ loading: action.payload
+ });
+
+ case SDK_ERROR:
+ return LocalizationContext._objectSpread2({}, state, {
+ initialized: false,
+ loading: false,
+ error: true
+ });
+
+ case INIT_SDK:
+ return {
+ sdk: action.payload,
+ initialized: true,
+ loading: false,
+ error: false
+ };
+
+ case RESET_SDK:
+ return sdkInitialState;
+
+ default:
+ return state;
+ }
+}
+
+var userInitialState = {
+ initialized: false,
+ loading: false,
+ user: {}
+};
+
+function reducer$1(state, action) {
+ switch (action.type) {
+ case actionTypes.INIT_USER:
+ return {
+ initialized: true,
+ loading: false,
+ user: action.payload
+ };
+
+ case actionTypes.RESET_USER:
+ return userInitialState;
+
+ case actionTypes.UPDATE_USER_INFO:
+ return LocalizationContext._objectSpread2({}, state, {
+ user: action.payload
+ });
+
+ default:
+ return state;
+ }
+}
+
+function useConnectionStatus(sdk, logger) {
+ var _useState = React.useState(true),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ isOnline = _useState2[0],
+ setIsOnline = _useState2[1];
+
+ React.useEffect(function () {
+ var uniqueHandlerId = LocalizationContext.uuidv4();
+ logger.warning('sdk changed', uniqueHandlerId);
+ var handler;
+
+ if (sdk && sdk.ConnectionHandler) {
+ handler = new sdk.ConnectionHandler();
+
+ handler.onReconnectStarted = function () {
+ setIsOnline(false);
+ logger.warning('onReconnectStarted', {
+ isOnline: isOnline
+ });
+ };
+
+ handler.onReconnectSucceeded = function () {
+ setIsOnline(true);
+ logger.warning('onReconnectSucceeded', {
+ isOnline: isOnline
+ });
+ };
+
+ handler.onReconnectFailed = function () {
+ sdk.reconnect();
+ logger.warning('onReconnectFailed');
+ };
+
+ logger.info('Added ConnectionHandler', uniqueHandlerId);
+ sdk.addConnectionHandler(uniqueHandlerId, handler);
+ }
+
+ return function () {
+ try {
+ sdk.removeConnectionHandler(uniqueHandlerId);
+ logger.info('Removed ConnectionHandler', uniqueHandlerId);
+ } catch (_unused) {//
+ }
+ };
+ }, [sdk]);
+ React.useEffect(function () {
+ var tryReconnect = function tryReconnect() {
+ try {
+ logger.warning('Try reconnecting SDK');
+
+ if (sdk.getConnectionState() !== 'OPEN') {
+ // connection is not broken yet
+ sdk.reconnect();
+ }
+ } catch (_unused2) {//
+ }
+ }; // addEventListener version
+
+
+ window.addEventListener('online', tryReconnect);
+ return function () {
+ window.removeEventListener('online', tryReconnect);
+ };
+ }, [sdk]); // add offline-class to body
+
+ React.useEffect(function () {
+ var body = document.querySelector('body');
+
+ if (!isOnline) {
+ try {
+ body.classList.add('sendbird__offline');
+ logger.info('Added class sendbird__offline to body');
+ } catch (e) {//
+ }
+ } else {
+ try {
+ body.classList.remove('sendbird__offline');
+ logger.info('Removed class sendbird__offline from body');
+ } catch (e) {//
+ }
+ }
+ }, [isOnline]);
+ return isOnline;
+}
+
+var LOG_LEVELS = {
+ DEBUG: 'debug',
+ WARNING: 'warning',
+ ERROR: 'error',
+ INFO: 'info',
+ ALL: 'all'
+};
+
+var colorLog = function colorLog(level) {
+ switch (level) {
+ case LOG_LEVELS.WARNING:
+ return 'color: Orange';
+
+ case LOG_LEVELS.ERROR:
+ return 'color: Red';
+
+ default:
+ return 'color: Gray';
+ }
+};
+
+var printLog = function printLog(_ref) {
+ var level = _ref.level,
+ title = _ref.title,
+ _ref$description = _ref.description,
+ description = _ref$description === void 0 ? '' : _ref$description;
+ // eslint-disable-next-line no-console
+ console.log("%c SendbirdUIKit | ".concat(level, " | ").concat(new Date().toISOString(), " | ").concat(title, " ").concat(description && '|'), colorLog(level), description);
+};
+var getDefaultLogger = function getDefaultLogger() {
+ return {
+ info: function info() {},
+ error: function error() {},
+ warning: function warning() {}
+ };
+};
+var LoggerFactory = function LoggerFactory(lvl, customInterface) {
+ var logInterface = customInterface || printLog;
+ var lvlArray = Array.isArray(lvl) ? lvl : [lvl];
+
+ var applyLog = function applyLog(lgLvl) {
+ return function (title, description) {
+ return logInterface({
+ level: lgLvl,
+ title: title,
+ description: description
+ });
+ };
+ };
+
+ var logger = lvlArray.reduce(function (accumulator, currentLvl) {
+ if (currentLvl === LOG_LEVELS.DEBUG || currentLvl === LOG_LEVELS.ALL) {
+ return LocalizationContext._objectSpread2({}, accumulator, {
+ info: applyLog(LOG_LEVELS.INFO),
+ error: applyLog(LOG_LEVELS.ERROR),
+ warning: applyLog(LOG_LEVELS.WARNING)
+ });
+ }
+
+ if (currentLvl === LOG_LEVELS.INFO) {
+ return LocalizationContext._objectSpread2({}, accumulator, {
+ info: applyLog(LOG_LEVELS.INFO)
+ });
+ }
+
+ if (currentLvl === LOG_LEVELS.ERROR) {
+ return LocalizationContext._objectSpread2({}, accumulator, {
+ error: applyLog(LOG_LEVELS.ERROR)
+ });
+ }
+
+ if (currentLvl === LOG_LEVELS.WARNING) {
+ return LocalizationContext._objectSpread2({}, accumulator, {
+ warning: applyLog(LOG_LEVELS.WARNING)
+ });
+ }
+
+ return LocalizationContext._objectSpread2({}, accumulator);
+ }, getDefaultLogger());
+ return logger;
+};
+
+// https://davidwalsh.name/pubsub-javascript
+var pubSubFactory = (function () {
+ var topics = {};
+ var hOP = topics.hasOwnProperty;
+ return {
+ __getTopics: function __getTopics() {
+ return topics;
+ },
+ subscribe: function subscribe(topic, listener) {
+ // Create the topic's object if not yet created
+ if (!hOP.call(topics, topic)) {
+ topics[topic] = [];
+ } // Add the listener to queue
+
+
+ var index = topics[topic].push(listener) - 1; // Provide handle back for removal of topic
+
+ return {
+ remove: function remove() {
+ delete topics[topic][index];
+ }
+ };
+ },
+ publish: function publish(topic, info) {
+ // If the topic doesn't exist, or there's no listeners in queue, just leave
+ if (!hOP.call(topics, topic)) {
+ return;
+ } // Cycle through topics queue, fire!
+
+
+ topics[topic].forEach(function (item) {
+ item(info !== undefined ? info : {});
+ });
+ }
+ };
+});
+
+function useAppendDomNode() {
+ var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var rootSelector = arguments.length > 1 ? arguments[1] : undefined;
+ React.useEffect(function () {
+ var root = document.querySelector(rootSelector);
+ ids.forEach(function (id) {
+ var elem = document.createElement('div');
+ elem.setAttribute('id', id);
+ root.appendChild(elem);
+ });
+ return function () {
+ ids.forEach(function (id) {
+ var target = document.getElementById(id);
+
+ if (target) {
+ root.removeChild(target);
+ }
+ });
+ };
+ }, []);
+}
+
+function Sendbird(props) {
+ var userId = props.userId,
+ appId = props.appId,
+ accessToken = props.accessToken,
+ children = props.children,
+ disableUserProfile = props.disableUserProfile,
+ renderUserProfile = props.renderUserProfile,
+ allowProfileEdit = props.allowProfileEdit,
+ theme = props.theme,
+ nickname = props.nickname,
+ profileUrl = props.profileUrl,
+ userListQuery = props.userListQuery,
+ _props$config = props.config,
+ config = _props$config === void 0 ? {} : _props$config,
+ colorSet = props.colorSet,
+ stringSet = props.stringSet;
+ var _config$logLevel = config.logLevel,
+ logLevel = _config$logLevel === void 0 ? '' : _config$logLevel;
+
+ var _useState = React.useState(LoggerFactory(logLevel)),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ logger = _useState2[0],
+ setLogger = _useState2[1];
+
+ var _useState3 = React.useState(),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ pubSub = _useState4[0],
+ setPubSub = _useState4[1];
+
+ var _useReducer = React.useReducer(reducer, sdkInitialState),
+ _useReducer2 = LocalizationContext._slicedToArray(_useReducer, 2),
+ sdkStore = _useReducer2[0],
+ sdkDispatcher = _useReducer2[1];
+
+ var _useReducer3 = React.useReducer(reducer$1, userInitialState),
+ _useReducer4 = LocalizationContext._slicedToArray(_useReducer3, 2),
+ userStore = _useReducer4[0],
+ userDispatcher = _useReducer4[1];
+
+ useTheme(colorSet);
+ React.useEffect(function () {
+ setPubSub(pubSubFactory());
+ }, []);
+ React.useEffect(function () {
+ logger.info('App Init'); // dispatch action
+
+ handleConnection({
+ userId: userId,
+ appId: appId,
+ accessToken: accessToken,
+ sdkStore: sdkStore,
+ nickname: nickname,
+ profileUrl: profileUrl,
+ sdk: sdkStore.sdk,
+ logger: logger
+ }, {
+ sdkDispatcher: sdkDispatcher,
+ userDispatcher: userDispatcher
+ });
+ }, [userId, appId, accessToken]); // to create a pubsub to communicate between parent and child
+
+ React.useEffect(function () {
+ setLogger(LoggerFactory(logLevel));
+ }, [logLevel]);
+ useAppendDomNode(['sendbird-modal-root', 'sendbird-dropdown-portal', 'sendbird-emoji-list-portal'], 'body'); // should move to reducer
+
+ var _useState5 = React.useState(theme),
+ _useState6 = LocalizationContext._slicedToArray(_useState5, 2),
+ currenttheme = _useState6[0],
+ setCurrenttheme = _useState6[1];
+
+ React.useEffect(function () {
+ setCurrenttheme(theme);
+ }, [theme]); // add-remove theme from body
+
+ React.useEffect(function () {
+ logger.info('Setup theme', "Theme: ".concat(currenttheme));
+
+ try {
+ var body = document.querySelector('body');
+ body.classList.remove('sendbird-theme--light');
+ body.classList.remove('sendbird-theme--dark');
+ body.classList.add("sendbird-theme--".concat(currenttheme || 'light'));
+ logger.info('Finish setup theme'); // eslint-disable-next-line no-empty
+ } catch (e) {
+ logger.warning('Setup theme failed', "".concat(e));
+ }
+
+ return function () {
+ try {
+ var _body = document.querySelector('body');
+
+ _body.classList.remove('sendbird-theme--light');
+
+ _body.classList.remove('sendbird-theme--dark'); // eslint-disable-next-line no-empty
+
+ } catch (_unused) {}
+ };
+ }, [currenttheme]);
+ var isOnline = useConnectionStatus(sdkStore.sdk, logger);
+ var localeStringSet = React__default.useMemo(function () {
+ if (!stringSet) {
+ return LocalizationContext.getStringSet('en');
+ }
+
+ return LocalizationContext._objectSpread2({}, LocalizationContext.getStringSet('en'), {}, stringSet);
+ }, [stringSet]);
+ return React__default.createElement(LocalizationContext.SendbirdSdkContext.Provider, {
+ value: {
+ stores: {
+ sdkStore: sdkStore,
+ userStore: userStore
+ },
+ dispatchers: {
+ sdkDispatcher: sdkDispatcher,
+ userDispatcher: userDispatcher,
+ reconnect: function reconnect() {
+ handleConnection({
+ userId: userId,
+ appId: appId,
+ accessToken: accessToken,
+ sdkStore: sdkStore,
+ nickname: nickname,
+ profileUrl: profileUrl,
+ logger: logger,
+ sdk: sdkStore.sdk
+ }, {
+ sdkDispatcher: sdkDispatcher,
+ userDispatcher: userDispatcher
+ });
+ }
+ },
+ config: {
+ disableUserProfile: disableUserProfile,
+ renderUserProfile: renderUserProfile,
+ allowProfileEdit: allowProfileEdit,
+ isOnline: isOnline,
+ userId: userId,
+ appId: appId,
+ accessToken: accessToken,
+ theme: currenttheme,
+ setCurrenttheme: setCurrenttheme,
+ userListQuery: userListQuery,
+ logger: logger,
+ pubSub: pubSub
+ }
+ }
+ }, React__default.createElement(LocalizationContext.LocalizationProvider, {
+ stringSet: localeStringSet
+ }, children));
+}
+Sendbird.propTypes = {
+ userId: PropTypes.string.isRequired,
+ appId: PropTypes.string.isRequired,
+ accessToken: PropTypes.string,
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
+ theme: PropTypes.string,
+ nickname: PropTypes.string,
+ profileUrl: PropTypes.string,
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ allowProfileEdit: PropTypes.bool,
+ userListQuery: PropTypes.func,
+ config: PropTypes.shape({
+ // None Error Warning Info 'All/Debug'
+ logLevel: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ pubSub: PropTypes.shape({
+ subscribe: PropTypes.func,
+ publish: PropTypes.func
+ })
+ }),
+ stringSet: PropTypes.objectOf(PropTypes.string),
+ colorSet: PropTypes.objectOf(PropTypes.string)
+};
+Sendbird.defaultProps = {
+ accessToken: '',
+ theme: 'light',
+ nickname: '',
+ profileUrl: '',
+ disableUserProfile: false,
+ renderUserProfile: null,
+ allowProfileEdit: false,
+ userListQuery: null,
+ config: {},
+ stringSet: null,
+ colorSet: null
+};
+
+module.exports = Sendbird;
+//# sourceMappingURL=SendbirdProvider.js.map
diff --git a/dist/cjs/SendbirdProvider.js.map b/dist/cjs/SendbirdProvider.js.map
new file mode 100644
index 0000000..a4999ed
--- /dev/null
+++ b/dist/cjs/SendbirdProvider.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"SendbirdProvider.js","sources":["../../../src/lib/dux/sdk/actionTypes.js","../../../src/lib/dux/sdk/thunks.js","../../../src/lib/hooks/useTheme.ts","../../../src/lib/dux/sdk/initialState.js","../../../src/lib/dux/sdk/reducers.js","../../../src/lib/dux/user/initialState.js","../../../src/lib/dux/user/reducers.js","../../../src/lib/hooks/useOnlineStatus.js","../../../src/lib/Logger/index.js","../../../src/lib/pubSub/index.js","../../../src/hooks/useAppendDomNode.js","../../../src/lib/Sendbird.jsx"],"sourcesContent":["export const INIT_SDK = 'INIT_SDK';\nexport const SET_SDK_LOADING = 'SET_SDK_LOADING';\nexport const RESET_SDK = 'RESET_SDK';\nexport const SDK_ERROR = 'SDK_ERROR';\n","import Sb from 'sendbird';\n\nimport {\n INIT_SDK,\n SET_SDK_LOADING,\n RESET_SDK,\n SDK_ERROR,\n} from './actionTypes';\nimport { INIT_USER, UPDATE_USER_INFO, RESET_USER } from '../user/actionTypes';\n\nconst APP_VERSION_STRING = '__uikit_app_version__';\nconst IS_ROLLUP = '__is_rollup__';\nconst IS_ROLLUP_REPLACE = '__is_rollup_replace__';\n\nexport const disconnectSdk = ({\n sdkDispatcher,\n userDispatcher,\n sdk,\n onDisconnect,\n}) => {\n sdkDispatcher({ type: SET_SDK_LOADING, payload: true });\n if (sdk && sdk.disconnect) {\n sdk.disconnect()\n .then(() => {\n sdkDispatcher({ type: RESET_SDK });\n userDispatcher({ type: RESET_USER });\n })\n .finally(() => {\n onDisconnect();\n });\n } else {\n onDisconnect();\n }\n};\n\nexport const handleConnection = ({\n userId,\n appId,\n nickname,\n profileUrl,\n accessToken,\n sdk,\n logger,\n}, dispatchers) => {\n const {\n sdkDispatcher,\n userDispatcher,\n } = dispatchers;\n disconnectSdk({\n sdkDispatcher,\n userDispatcher,\n sdk,\n logger,\n onDisconnect: () => {\n logger.info('Setup connection');\n sdkDispatcher({ type: SET_SDK_LOADING, payload: true });\n if (userId && appId) {\n const newSdk = new Sb({ appId });\n // to check if code is released version from rollup and *not from storybook*\n // see rollup config file\n if (IS_ROLLUP === IS_ROLLUP_REPLACE) {\n newSdk.addExtension('sb_uikit', APP_VERSION_STRING);\n }\n const connectCbSucess = (user) => {\n sdkDispatcher({ type: INIT_SDK, payload: newSdk });\n userDispatcher({ type: INIT_USER, payload: user });\n // use nickname/profileUrl if provided\n // or set userID as nickname\n const newNickName = nickname || user.nickname;\n const newProfileUrl = profileUrl || user.profileUrl;\n newSdk.updateCurrentUserInfo(newNickName, newProfileUrl)\n .then((namedUser) => {\n userDispatcher({ type: UPDATE_USER_INFO, payload: namedUser });\n });\n };\n\n const connectCbError = (e) => {\n logger.error('Connection failed', `${e}`);\n sdkDispatcher({ type: RESET_SDK });\n sdkDispatcher({ type: RESET_USER });\n sdkDispatcher({ type: SDK_ERROR });\n };\n\n if (accessToken) {\n newSdk.connect(userId, accessToken)\n .then((res) => connectCbSucess(res))\n .catch((err) => connectCbError(err));\n } else {\n newSdk.connect(userId)\n .then((res) => connectCbSucess(res))\n .catch((err) => connectCbError(err));\n }\n } else {\n sdkDispatcher({ type: SDK_ERROR });\n logger.warning('Connection failed', 'UserId or appId missing');\n }\n },\n });\n};\n","import { useLayoutEffect } from 'react';\nimport cssVars from 'css-vars-ponyfill';\n\nconst isEmpty = (obj) => {\n if (obj === null || obj === undefined) {\n return true;\n }\n\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n return JSON.stringify(obj) === JSON.stringify({});\n}\n\nconst useTheme = (overrides: Record): void => {\n useLayoutEffect(() => {\n if (!isEmpty(overrides)) {\n cssVars({\n variables: {\n ...{\n '--sendbird-dark-primary-500': '#4d2aa6',\n '--sendbird-dark-primary-400': '#6440C4',\n '--sendbird-dark-primary-300': '#7B53EF',\n '--sendbird-dark-primary-200': '#9E8CF5',\n '--sendbird-dark-primary-100': '#E2DFFF',\n\n '--sendbird-dark-secondary-500': '#007A7A',\n '--sendbird-dark-secondary-400': '#189A8D',\n '--sendbird-dark-secondary-300': '#2EBA9F',\n '--sendbird-dark-secondary-200': '#6FD6BE',\n '--sendbird-dark-secondary-100': '#AEF2DC',\n\n '--sendbird-dark-information-100': '#b2d9ff',\n\n '--sendbird-dark-error-500': '#A30E2D',\n '--sendbird-dark-error-400': '#C11F41',\n '--sendbird-dark-error-300': '#E53157',\n '--sendbird-dark-error-200': '#FF6183',\n '--sendbird-dark-error-100': '#FFABBD',\n\n '--sendbird-dark-background-700': '#000000',\n '--sendbird-dark-background-600': '#161616',\n '--sendbird-dark-background-500': '#2C2C2C',\n '--sendbird-dark-background-400': '#393939',\n '--sendbird-dark-background-300': '#A8A8A8',\n '--sendbird-dark-background-200': '#D9D9D9',\n '--sendbird-dark-background-100': '#F0F0F0',\n '--sendbird-dark-background-50': '#FFFFFF',\n\n '--sendbird-dark-overlay': 'rgba(0, 0, 0, 0.32)',\n\n '--sendbird-dark-onlight-01': 'rgba(0, 0, 0, 0.88)',\n '--sendbird-dark-onlight-02': 'rgba(0, 0, 0, 0.50)',\n '--sendbird-dark-onlight-03': 'rgba(0, 0, 0, 0.38)',\n '--sendbird-dark-onlight-04': 'rgba(0, 0, 0, 0.12)',\n\n '--sendbird-dark-ondark-01': 'rgba(255, 255, 255, 0.88)',\n '--sendbird-dark-ondark-02': 'rgba(255, 255, 255, 0.50)',\n '--sendbird-dark-ondark-03': 'rgba(255, 255, 255, 0.38)',\n '--sendbird-dark-ondark-04': 'rgba(255, 255, 255, 0.12)',\n\n '--sendbird-dark-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',\n\n '--sendbird-dark-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-primary-500': '#4d2aa6',\n '--sendbird-light-primary-400': '#6440C4',\n '--sendbird-light-primary-300': '#7B53EF',\n '--sendbird-light-primary-200': '#9E8CF5',\n '--sendbird-light-primary-100': '#E2DFFF',\n\n '--sendbird-light-secondary-500': '#007A7A',\n '--sendbird-light-secondary-400': '#189A8D',\n '--sendbird-light-secondary-300': '#2EBA9F',\n '--sendbird-light-secondary-200': '#6FD6BE',\n '--sendbird-light-secondary-100': '#AEF2DC',\n\n '--sendbird-light-information-100': '#b2d9ff',\n\n '--sendbird-light-error-500': '#A30E2D',\n '--sendbird-light-error-400': '#C11F41',\n '--sendbird-light-error-300': '#E53157',\n '--sendbird-light-error-200': '#FF6183',\n '--sendbird-light-error-100': '#FFABBD',\n\n '--sendbird-light-background-700': '#000000',\n '--sendbird-light-background-600': '#161616',\n '--sendbird-light-background-500': '#2C2C2C',\n '--sendbird-light-background-400': '#393939',\n '--sendbird-light-background-300': '#A8A8A8',\n '--sendbird-light-background-200': '#D9D9D9',\n '--sendbird-light-background-100': '#F0F0F0',\n '--sendbird-light-background-50': ' #FFFFFF',\n\n '--sendbird-light-overlay': 'rgba(0, 0, 0, 0.32)',\n\n '--sendbird-light-onlight-01': 'rgba(0, 0, 0, 0.88)',\n '--sendbird-light-onlight-02': 'rgba(0, 0, 0, 0.50)',\n '--sendbird-light-onlight-03': 'rgba(0, 0, 0, 0.38)',\n '--sendbird-light-onlight-04': 'rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-ondark-01': 'rgba(255, 255, 255, 0.88)',\n '--sendbird-light-ondark-02': 'rgba(255, 255, 255, 0.50)',\n '--sendbird-light-ondark-03': 'rgba(255, 255, 255, 0.38)',\n '--sendbird-light-ondark-04': 'rgba(255, 255, 255, 0.12)',\n\n '--sendbird-light-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-light-theme-surface-2': '#EAEAEA',\n },\n ...overrides,\n },\n });\n }\n }, [overrides]);\n};\n\nexport default useTheme;\n","export default {\n initialized: false,\n loading: false,\n sdk: {},\n error: false,\n};\n","import * as sdkActions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case sdkActions.SET_SDK_LOADING:\n return {\n ...state,\n initialized: false,\n loading: action.payload,\n };\n case sdkActions.SDK_ERROR:\n return {\n ...state,\n initialized: false,\n loading: false,\n error: true,\n };\n case sdkActions.INIT_SDK:\n return {\n sdk: action.payload,\n initialized: true,\n loading: false,\n error: false,\n };\n case sdkActions.RESET_SDK:\n return initialState;\n default:\n return state;\n }\n}\n","export default {\n initialized: false,\n loading: false,\n user: {},\n};\n","import * as actions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actions.INIT_USER:\n return {\n initialized: true,\n loading: false,\n user: action.payload,\n };\n case actions.RESET_USER:\n return initialState;\n case actions.UPDATE_USER_INFO:\n return {\n ...state,\n user: action.payload,\n };\n default:\n return state;\n }\n}\n","import { useState, useEffect } from 'react';\n\nimport { uuidv4 } from '../../utils/uuid';\n\nfunction useConnectionStatus(sdk, logger) {\n const [isOnline, setIsOnline] = useState(true);\n\n useEffect(() => {\n const uniqueHandlerId = uuidv4();\n logger.warning('sdk changed', uniqueHandlerId);\n let handler;\n if (sdk && sdk.ConnectionHandler) {\n handler = new sdk.ConnectionHandler();\n\n handler.onReconnectStarted = () => {\n setIsOnline(false);\n logger.warning('onReconnectStarted', { isOnline });\n };\n handler.onReconnectSucceeded = () => {\n setIsOnline(true);\n logger.warning('onReconnectSucceeded', { isOnline });\n };\n handler.onReconnectFailed = () => {\n sdk.reconnect();\n logger.warning('onReconnectFailed');\n };\n logger.info('Added ConnectionHandler', uniqueHandlerId);\n sdk.addConnectionHandler(uniqueHandlerId, handler);\n }\n return () => {\n try {\n sdk.removeConnectionHandler(uniqueHandlerId);\n logger.info('Removed ConnectionHandler', uniqueHandlerId);\n } catch {\n //\n }\n };\n }, [sdk]);\n\n useEffect(() => {\n const tryReconnect = () => {\n try {\n logger.warning('Try reconnecting SDK');\n if (sdk.getConnectionState() !== 'OPEN') { // connection is not broken yet\n sdk.reconnect();\n }\n } catch {\n //\n }\n };\n // addEventListener version\n window.addEventListener('online', tryReconnect);\n return () => {\n window.removeEventListener('online', tryReconnect);\n };\n }, [sdk]);\n\n // add offline-class to body\n useEffect(() => {\n const body = document.querySelector('body');\n if (!isOnline) {\n try {\n body.classList.add('sendbird__offline');\n logger.info('Added class sendbird__offline to body');\n } catch (e) {\n //\n }\n } else {\n try {\n body.classList.remove('sendbird__offline');\n logger.info('Removed class sendbird__offline from body');\n } catch (e) {\n //\n }\n }\n }, [isOnline]);\n\n return isOnline;\n}\n\nexport default useConnectionStatus;\n","export const LOG_LEVELS = {\n DEBUG: 'debug',\n WARNING: 'warning',\n ERROR: 'error',\n INFO: 'info',\n ALL: 'all',\n};\n\nconst colorLog = (level) => {\n switch (level) {\n case LOG_LEVELS.WARNING:\n return ('color: Orange');\n case LOG_LEVELS.ERROR:\n return ('color: Red');\n default:\n return ('color: Gray');\n }\n};\n\nexport const printLog = ({\n level,\n title,\n description = '',\n}) => {\n // eslint-disable-next-line no-console\n console.log(\n `%c SendbirdUIKit | ${level} | ${new Date().toISOString()} | ${title} ${description && '|'}`, colorLog(level),\n description,\n );\n};\n\nexport const getDefaultLogger = () => ({\n info: () => {},\n error: () => {},\n warning: () => {},\n});\n\nexport const LoggerFactory = (lvl, customInterface) => {\n const logInterface = customInterface || printLog;\n const lvlArray = Array.isArray(lvl) ? lvl : [lvl];\n\n const applyLog = (lgLvl) => (title, description) => logInterface({\n level: lgLvl,\n title,\n description,\n });\n\n const logger = lvlArray.reduce((accumulator, currentLvl) => {\n if (currentLvl === LOG_LEVELS.DEBUG || currentLvl === LOG_LEVELS.ALL) {\n return ({\n ...accumulator,\n info: applyLog(LOG_LEVELS.INFO),\n error: applyLog(LOG_LEVELS.ERROR),\n warning: applyLog(LOG_LEVELS.WARNING),\n });\n }\n\n if (currentLvl === LOG_LEVELS.INFO) {\n return ({\n ...accumulator,\n info: applyLog(LOG_LEVELS.INFO),\n });\n }\n\n if (currentLvl === LOG_LEVELS.ERROR) {\n return ({\n ...accumulator,\n error: applyLog(LOG_LEVELS.ERROR),\n });\n }\n\n if (currentLvl === LOG_LEVELS.WARNING) {\n return ({\n ...accumulator,\n warning: applyLog(LOG_LEVELS.WARNING),\n });\n }\n\n return { ...accumulator };\n }, getDefaultLogger());\n return logger;\n};\n","// https://davidwalsh.name/pubsub-javascript\nexport default () => {\n const topics = {};\n const hOP = topics.hasOwnProperty;\n\n return {\n __getTopics: () => topics,\n subscribe: (topic, listener) => {\n // Create the topic's object if not yet created\n if (!hOP.call(topics, topic)) { topics[topic] = []; }\n\n // Add the listener to queue\n const index = topics[topic].push(listener) - 1;\n\n // Provide handle back for removal of topic\n return {\n remove: () => {\n delete topics[topic][index];\n },\n };\n },\n publish: (topic, info) => {\n // If the topic doesn't exist, or there's no listeners in queue, just leave\n if (!hOP.call(topics, topic)) { return; }\n\n // Cycle through topics queue, fire!\n topics[topic].forEach((item) => {\n item(info !== undefined ? info : {});\n });\n },\n };\n};\n","import { useEffect } from 'react';\n\nfunction useAppendDomNode(ids = [], rootSelector) {\n useEffect(() => {\n const root = document.querySelector(rootSelector);\n ids.forEach((id) => {\n const elem = document.createElement('div');\n elem.setAttribute('id', id);\n root.appendChild(elem);\n });\n return () => {\n ids.forEach((id) => {\n const target = document.getElementById(id);\n if (target) {\n root.removeChild(target);\n }\n });\n };\n }, []);\n}\n\nexport default useAppendDomNode;\n","import './index.scss';\n\nimport React, { useEffect, useReducer, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { SendbirdSdkContext } from './SendbirdSdkContext';\nimport { handleConnection } from './dux/sdk/thunks';\n\nimport useTheme from './hooks/useTheme';\n\nimport sdkReducers from './dux/sdk/reducers';\nimport userReducers from './dux/user/reducers';\nimport sdkInitialState from './dux/sdk/initialState';\nimport userInitialState from './dux/user/initialState';\n\nimport useOnlineStatus from './hooks/useOnlineStatus';\n\nimport { LoggerFactory } from './Logger';\nimport pubSubFactory from './pubSub/index';\nimport useAppendDomNode from '../hooks/useAppendDomNode';\n\nimport { LocalizationProvider } from './LocalizationContext';\nimport getStringSet from '../ui/Label/stringSet';\n\nexport default function Sendbird(props) {\n const {\n userId,\n appId,\n accessToken,\n children,\n disableUserProfile,\n renderUserProfile,\n allowProfileEdit,\n theme,\n nickname,\n profileUrl,\n userListQuery,\n config = {},\n colorSet,\n stringSet,\n } = props;\n\n const {\n logLevel = '',\n } = config;\n const [logger, setLogger] = useState(LoggerFactory(logLevel));\n const [pubSub, setPubSub] = useState();\n const [sdkStore, sdkDispatcher] = useReducer(sdkReducers, sdkInitialState);\n const [userStore, userDispatcher] = useReducer(userReducers, userInitialState);\n\n useTheme(colorSet);\n\n useEffect(() => {\n setPubSub(pubSubFactory());\n }, []);\n\n useEffect(() => {\n logger.info('App Init');\n // dispatch action\n handleConnection({\n userId,\n appId,\n accessToken,\n sdkStore,\n nickname,\n profileUrl,\n sdk: sdkStore.sdk,\n logger,\n }, {\n sdkDispatcher,\n userDispatcher,\n });\n }, [userId, appId, accessToken]);\n\n // to create a pubsub to communicate between parent and child\n useEffect(() => {\n setLogger(LoggerFactory(logLevel));\n }, [logLevel]);\n\n useAppendDomNode([\n 'sendbird-modal-root',\n 'sendbird-dropdown-portal',\n 'sendbird-emoji-list-portal',\n ], 'body');\n\n // should move to reducer\n const [currenttheme, setCurrenttheme] = useState(theme);\n useEffect(() => {\n setCurrenttheme(theme);\n }, [theme]);\n // add-remove theme from body\n useEffect(() => {\n logger.info('Setup theme', `Theme: ${currenttheme}`);\n try {\n const body = document.querySelector('body');\n body.classList.remove('sendbird-theme--light');\n body.classList.remove('sendbird-theme--dark');\n body.classList.add(`sendbird-theme--${currenttheme || 'light'}`);\n logger.info('Finish setup theme');\n // eslint-disable-next-line no-empty\n } catch (e) {\n logger.warning('Setup theme failed', `${e}`);\n }\n return () => {\n try {\n const body = document.querySelector('body');\n body.classList.remove('sendbird-theme--light');\n body.classList.remove('sendbird-theme--dark');\n // eslint-disable-next-line no-empty\n } catch { }\n };\n }, [currenttheme]);\n\n const isOnline = useOnlineStatus(sdkStore.sdk, logger);\n\n const localeStringSet = React.useMemo(() => {\n if (!stringSet) {\n return getStringSet('en');\n }\n return {\n ...getStringSet('en'),\n ...stringSet,\n };\n }, [stringSet]);\n\n return (\n {\n handleConnection({\n userId,\n appId,\n accessToken,\n sdkStore,\n nickname,\n profileUrl,\n logger,\n sdk: sdkStore.sdk,\n }, {\n sdkDispatcher,\n userDispatcher,\n });\n },\n },\n config: {\n disableUserProfile,\n renderUserProfile,\n allowProfileEdit,\n isOnline,\n userId,\n appId,\n accessToken,\n theme: currenttheme,\n setCurrenttheme,\n userListQuery,\n logger,\n pubSub,\n },\n }}\n >\n \n {children}\n \n \n );\n}\n\nSendbird.propTypes = {\n userId: PropTypes.string.isRequired,\n appId: PropTypes.string.isRequired,\n accessToken: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n theme: PropTypes.string,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n userListQuery: PropTypes.func,\n config: PropTypes.shape({\n // None Error Warning Info 'All/Debug'\n logLevel: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }),\n stringSet: PropTypes.objectOf(PropTypes.string),\n colorSet: PropTypes.objectOf(PropTypes.string),\n};\n\nSendbird.defaultProps = {\n accessToken: '',\n theme: 'light',\n nickname: '',\n profileUrl: '',\n disableUserProfile: false,\n renderUserProfile: null,\n allowProfileEdit: false,\n userListQuery: null,\n config: {},\n stringSet: null,\n colorSet: null,\n};\n"],"names":["INIT_SDK","SET_SDK_LOADING","RESET_SDK","SDK_ERROR","APP_VERSION_STRING","disconnectSdk","sdkDispatcher","userDispatcher","sdk","onDisconnect","type","payload","disconnect","then","RESET_USER","finally","handleConnection","dispatchers","userId","appId","nickname","profileUrl","accessToken","logger","info","newSdk","Sb","addExtension","connectCbSucess","user","INIT_USER","newNickName","newProfileUrl","updateCurrentUserInfo","namedUser","UPDATE_USER_INFO","connectCbError","e","error","connect","res","catch","err","warning","isEmpty","obj","undefined","prop","hasOwnProperty","JSON","stringify","useTheme","overrides","useLayoutEffect","cssVars","variables","initialized","loading","reducer","state","action","sdkActions","initialState","actions","useConnectionStatus","useState","isOnline","setIsOnline","useEffect","uniqueHandlerId","uuidv4","handler","ConnectionHandler","onReconnectStarted","onReconnectSucceeded","onReconnectFailed","reconnect","addConnectionHandler","removeConnectionHandler","tryReconnect","getConnectionState","window","addEventListener","removeEventListener","body","document","querySelector","classList","add","remove","LOG_LEVELS","DEBUG","WARNING","ERROR","INFO","ALL","colorLog","level","printLog","title","description","console","log","Date","toISOString","getDefaultLogger","LoggerFactory","lvl","customInterface","logInterface","lvlArray","Array","isArray","applyLog","lgLvl","reduce","accumulator","currentLvl","topics","hOP","__getTopics","subscribe","topic","listener","call","index","push","publish","forEach","item","useAppendDomNode","ids","rootSelector","root","id","elem","createElement","setAttribute","appendChild","target","getElementById","removeChild","Sendbird","props","children","disableUserProfile","renderUserProfile","allowProfileEdit","theme","userListQuery","config","colorSet","stringSet","logLevel","setLogger","pubSub","setPubSub","useReducer","sdkReducers","sdkInitialState","sdkStore","userReducers","userInitialState","userStore","pubSubFactory","currenttheme","setCurrenttheme","useOnlineStatus","localeStringSet","React","useMemo","getStringSet","SendbirdSdkContext","stores","LocalizationProvider","propTypes","PropTypes","string","isRequired","oneOfType","element","arrayOf","any","bool","func","shape","objectOf","defaultProps"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/cjs/actionTypes-920b541f.js b/dist/cjs/actionTypes-920b541f.js
new file mode 100644
index 0000000..8d6cfe0
--- /dev/null
+++ b/dist/cjs/actionTypes-920b541f.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var INIT_USER = 'INIT_USER';
+var RESET_USER = 'RESET_USER';
+var UPDATE_USER_INFO = 'UPDATE_USER_INFO';
+
+exports.INIT_USER = INIT_USER;
+exports.RESET_USER = RESET_USER;
+exports.UPDATE_USER_INFO = UPDATE_USER_INFO;
+//# sourceMappingURL=actionTypes-920b541f.js.map
diff --git a/dist/cjs/actionTypes-920b541f.js.map b/dist/cjs/actionTypes-920b541f.js.map
new file mode 100644
index 0000000..f851ae8
--- /dev/null
+++ b/dist/cjs/actionTypes-920b541f.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"actionTypes-a85c0eaa.js","sources":["../../../src/lib/dux/user/actionTypes.js"],"sourcesContent":["export const INIT_USER = 'INIT_USER';\nexport const RESET_USER = 'RESET_USER';\nexport const SET_USER_LOADING = 'SET_USER_LOADING';\nexport const UPDATE_USER_INFO = 'UPDATE_USER_INFO';\n"],"names":["INIT_USER","RESET_USER","UPDATE_USER_INFO"],"mappings":";;IAAaA,SAAS,GAAG;IACZC,UAAU,GAAG;IAEbC,gBAAgB,GAAG;;;;;;"}
\ No newline at end of file
diff --git a/dist/cjs/index-21269166.js b/dist/cjs/index-21269166.js
new file mode 100644
index 0000000..d9d187d
--- /dev/null
+++ b/dist/cjs/index-21269166.js
@@ -0,0 +1,259 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+var PropTypes = _interopDefault(require('prop-types'));
+var index = require('./index-49d966e1.js');
+
+var InputLabel = function InputLabel(_ref) {
+ var children = _ref.children;
+ return React__default.createElement(index.Label, {
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_1,
+ className: "sendbird-input-label"
+ }, children);
+};
+InputLabel.propTypes = {
+ children: PropTypes.string.isRequired
+}; // future: add validations? onChange? more props etc etc
+
+var Input = React__default.forwardRef(function (props, ref) {
+ var value = props.value,
+ placeHolder = props.placeHolder,
+ disabled = props.disabled,
+ name = props.name,
+ required = props.required;
+
+ var _useState = React.useState(value),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ inputValue = _useState2[0],
+ setInputValue = _useState2[1];
+
+ return React__default.createElement("div", {
+ className: "sendbird-input"
+ }, React__default.createElement("input", {
+ required: required,
+ ref: ref,
+ name: name,
+ disabled: disabled,
+ value: inputValue,
+ className: "sendbird-input--input",
+ onChange: function onChange(e) {
+ setInputValue(e.target.value);
+ }
+ }), placeHolder && !inputValue && React__default.createElement(index.Label, {
+ className: "sendbird-input--placeholder",
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_3
+ }, placeHolder));
+});
+Input.propTypes = {
+ value: PropTypes.string,
+ placeHolder: PropTypes.string,
+ name: PropTypes.string.isRequired,
+ disabled: PropTypes.bool,
+ required: PropTypes.bool
+};
+Input.defaultProps = {
+ value: '',
+ placeHolder: '',
+ disabled: false,
+ required: false
+};
+
+function MutedAvatarOverlay(props) {
+ var _a = props.height,
+ height = _a === void 0 ? 24 : _a,
+ _b = props.width,
+ width = _b === void 0 ? 24 : _b;
+ return React__default.createElement("div", {
+ className: "sendbird-muted-avatar",
+ style: {
+ height: height + "px",
+ width: width + "px"
+ }
+ }, React__default.createElement("div", {
+ className: "sendbird-muted-avatar__icon"
+ }, React__default.createElement("div", {
+ className: "sendbird-muted-avatar__bg",
+ style: {
+ height: height + "px",
+ width: width + "px"
+ }
+ }), React__default.createElement(index.Icon, {
+ fillColor: index.IconColors.WHITE,
+ type: index.IconTypes.ICON_MUTED,
+ width: height - 8 + "px",
+ height: width - 8 + "px"
+ })));
+}
+
+function Checkbox(_ref) {
+ var id = _ref.id,
+ checked = _ref.checked,
+ onChange = _ref.onChange;
+
+ var _useState = React.useState(checked),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ isChecked = _useState2[0],
+ setCheck = _useState2[1];
+
+ return React__default.createElement("label", {
+ className: "sendbird-checkbox",
+ htmlFor: id
+ }, React__default.createElement("input", {
+ id: id,
+ type: "checkbox",
+ checked: isChecked,
+ onClick: function onClick() {
+ return setCheck(!isChecked);
+ },
+ onChange: onChange
+ }), React__default.createElement("span", {
+ className: "sendbird-checkbox--checkmark"
+ }));
+}
+Checkbox.propTypes = {
+ id: PropTypes.string,
+ checked: PropTypes.bool,
+ onChange: PropTypes.func
+};
+Checkbox.defaultProps = {
+ id: 'sendbird-checkbox-input',
+ checked: false,
+ onChange: function onChange() {}
+};
+
+var COMPONENT_NAME = 'sendbird-user-list-item';
+function UserListItem(_ref) {
+ var user = _ref.user,
+ className = _ref.className,
+ checkBox = _ref.checkBox,
+ _ref$disableMessaging = _ref.disableMessaging,
+ disableMessaging = _ref$disableMessaging === void 0 ? false : _ref$disableMessaging,
+ currentUser = _ref.currentUser,
+ checked = _ref.checked,
+ _onChange = _ref.onChange,
+ action = _ref.action;
+ var injectingClassNames = Array.isArray(className) ? className : [className];
+ var uniqueKey = user.userId;
+ var actionRef = React__default.useRef(null);
+ var parentRef = React__default.useRef(null);
+ var avatarRef = React__default.useRef(null);
+
+ var _useContext = React.useContext(index.UserProfileContext),
+ disableUserProfile = _useContext.disableUserProfile,
+ renderUserProfile = _useContext.renderUserProfile;
+
+ var _useContext2 = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext2.stringSet;
+
+ return React__default.createElement("div", {
+ ref: parentRef,
+ className: [COMPONENT_NAME].concat(LocalizationContext._toConsumableArray(injectingClassNames)).join(' ')
+ }, user.isMuted && React__default.createElement(MutedAvatarOverlay, {
+ height: 40,
+ width: 40
+ }), React__default.createElement(index.ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React__default.createElement(index.Avatar, {
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ ref: avatarRef,
+ className: "".concat(COMPONENT_NAME, "__avatar"),
+ src: user.profileUrl,
+ width: "40px",
+ height: "40px"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React__default.createElement(index.MenuItems, {
+ openLeft: true,
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: user,
+ currentUserId: currentUser,
+ close: closeDropdown
+ }) : React__default.createElement(index.UserProfile, {
+ disableMessaging: disableMessaging,
+ user: user,
+ currentUserId: currentUser,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), React__default.createElement(index.Label, {
+ className: "".concat(COMPONENT_NAME, "__title"),
+ type: index.LabelTypography.SUBTITLE_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, user.nickname || stringSet.NO_NAME, currentUser === user.userId && ' (You)'), // if there is now nickname, display userId
+ !user.nickname && React__default.createElement(index.Label, {
+ className: "".concat(COMPONENT_NAME, "__subtitle"),
+ type: index.LabelTypography.CAPTION_3,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, user.userId), checkBox && // eslint-disable-next-line jsx-a11y/label-has-associated-control
+ React__default.createElement("label", {
+ className: "".concat(COMPONENT_NAME, "__checkbox"),
+ htmlFor: uniqueKey
+ }, React__default.createElement(Checkbox, {
+ id: uniqueKey,
+ checked: checked,
+ onChange: function onChange(event) {
+ return _onChange(event);
+ }
+ })), user.role === 'operator' && React__default.createElement(index.Label, {
+ className: "".concat(COMPONENT_NAME, "__operator"),
+ type: index.LabelTypography.SUBTITLE_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, "Operator"), action && React__default.createElement("div", {
+ ref: actionRef,
+ className: "".concat(COMPONENT_NAME, "__action")
+ }, action({
+ actionRef: actionRef,
+ parentRef: parentRef
+ })));
+}
+UserListItem.propTypes = {
+ user: PropTypes.shape({
+ userId: PropTypes.string,
+ role: PropTypes.string,
+ isMuted: PropTypes.bool,
+ nickname: PropTypes.string,
+ profileUrl: PropTypes.string
+ }).isRequired,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ disableMessaging: PropTypes.bool,
+ currentUser: PropTypes.string,
+ action: PropTypes.element,
+ checkBox: PropTypes.bool,
+ checked: PropTypes.bool,
+ onChange: PropTypes.func
+};
+UserListItem.defaultProps = {
+ className: '',
+ currentUser: '',
+ checkBox: false,
+ disableMessaging: false,
+ checked: false,
+ action: null,
+ onChange: function onChange() {}
+};
+
+exports.Input = Input;
+exports.InputLabel = InputLabel;
+exports.MutedAvatarOverlay = MutedAvatarOverlay;
+exports.UserListItem = UserListItem;
+//# sourceMappingURL=index-21269166.js.map
diff --git a/dist/cjs/index-21269166.js.map b/dist/cjs/index-21269166.js.map
new file mode 100644
index 0000000..b36deae
--- /dev/null
+++ b/dist/cjs/index-21269166.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index-aa89d60a.js","sources":["../../../src/ui/Input/index.jsx","../../../src/ui/Avatar/MutedAvatarOverlay.tsx","../../../src/ui/Checkbox/index.jsx","../../../src/ui/UserListItem/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport './index.scss';\n\nexport const InputLabel = ({ children }) => (\n \n {children}\n \n);\n\nInputLabel.propTypes = {\n children: PropTypes.string.isRequired,\n};\n\n// future: add validations? onChange? more props etc etc\nconst Input = React.forwardRef((props, ref) => {\n const {\n value,\n placeHolder,\n disabled,\n name,\n required,\n } = props;\n const [inputValue, setInputValue] = useState(value);\n return (\n \n {\n setInputValue(e.target.value);\n }}\n />\n {(placeHolder && !inputValue) && (\n \n {placeHolder}\n \n )}\n
\n );\n});\n\nInput.propTypes = {\n value: PropTypes.string,\n placeHolder: PropTypes.string,\n name: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n};\n\nInput.defaultProps = {\n value: '',\n placeHolder: '',\n disabled: false,\n required: false,\n};\n\nexport default Input;\n","import './muted-avatar-overlay.scss';\n\nimport React, { ReactElement } from 'react'\nimport Icon, { IconTypes, IconColors } from '../Icon';\n\ninterface Props {\n height?: number;\n width?: number;\n}\n\nexport default function MutedAvatarOverlay(props: Props): ReactElement {\n const { height = 24, width = 24 } = props;\n return (\n \n );\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nexport default function Checkbox({\n id,\n checked,\n onChange,\n}) {\n const [isChecked, setCheck] = useState(checked);\n return (\n \n setCheck(!isChecked)}\n onChange={onChange}\n />\n \n \n );\n}\n\nCheckbox.propTypes = {\n id: PropTypes.string,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\nCheckbox.defaultProps = {\n id: 'sendbird-checkbox-input',\n checked: false,\n onChange: () => { },\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Avatar from '../Avatar/index';\nimport MutedAvatarOverlay from '../Avatar/MutedAvatarOverlay';\nimport Checkbox from '../Checkbox';\nimport UserProfile from '../UserProfile';\nimport ContextMenu, { MenuItems } from '../ContextMenu';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport './index.scss';\n\nconst COMPONENT_NAME = 'sendbird-user-list-item';\n\nexport default function UserListItem({\n user,\n className,\n checkBox,\n disableMessaging = false,\n currentUser,\n checked,\n onChange,\n action,\n}) {\n const injectingClassNames = Array.isArray(className) ? className : [className];\n const uniqueKey = user.userId;\n const actionRef = React.useRef(null);\n const parentRef = React.useRef(null);\n const avatarRef = React.useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n {\n user.isMuted && (\n
\n )\n }\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n className={`${COMPONENT_NAME}__avatar`}\n src={user.profileUrl}\n width=\"40px\"\n height=\"40px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n {user.nickname || stringSet.NO_NAME}\n {\n (currentUser === user.userId) && (\n ' (You)'\n )\n }\n \n { // if there is now nickname, display userId\n !user.nickname && (\n \n {user.userId}\n \n )\n }\n {\n checkBox && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n \n onChange(event)}\n />\n \n )\n }\n {\n user.role === 'operator' && (\n \n Operator\n \n )\n }\n {\n action && (\n \n { action({ actionRef, parentRef }) }\n
\n )\n }\n \n );\n}\n\nUserListItem.propTypes = {\n user: PropTypes.shape({\n userId: PropTypes.string,\n role: PropTypes.string,\n isMuted: PropTypes.bool,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n }).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n disableMessaging: PropTypes.bool,\n currentUser: PropTypes.string,\n action: PropTypes.element,\n checkBox: PropTypes.bool,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\n\nUserListItem.defaultProps = {\n className: '',\n currentUser: '',\n checkBox: false,\n disableMessaging: false,\n checked: false,\n action: null,\n onChange: () => { },\n};\n"],"names":["InputLabel","children","React","Label","LabelTypography","CAPTION_3","LabelColors","ONBACKGROUND_1","propTypes","PropTypes","string","isRequired","Input","forwardRef","props","ref","value","placeHolder","disabled","name","required","useState","inputValue","setInputValue","e","target","BODY_1","ONBACKGROUND_3","bool","defaultProps","MutedAvatarOverlay","_a","height","_b","width","Icon","IconColors","WHITE","IconTypes","ICON_MUTED","Checkbox","id","checked","onChange","isChecked","setCheck","func","COMPONENT_NAME","UserListItem","user","className","checkBox","disableMessaging","currentUser","action","injectingClassNames","Array","isArray","uniqueKey","userId","actionRef","useRef","parentRef","avatarRef","useContext","UserProfileContext","disableUserProfile","renderUserProfile","LocalizationContext","stringSet","join","isMuted","ContextMenu","toggleDropdown","Avatar","profileUrl","closeDropdown","MenuItems","paddingTop","paddingBottom","currentUserId","close","UserProfile","SUBTITLE_1","nickname","NO_NAME","ONBACKGROUND_2","event","role","SUBTITLE_2","shape","oneOfType","arrayOf","element"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/cjs/index-49d966e1.js b/dist/cjs/index-49d966e1.js
new file mode 100644
index 0000000..6a93ba2
--- /dev/null
+++ b/dist/cjs/index-49d966e1.js
@@ -0,0 +1,3661 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+var PropTypes = _interopDefault(require('prop-types'));
+var reactDom = require('react-dom');
+
+var UserProfileContext = React__default.createContext({
+ disableUserProfile: true,
+ isOpenChannel: false,
+ renderUserProfile: null
+});
+
+var UserProfileProvider = function UserProfileProvider(props) {
+ var children = props.children,
+ className = props.className;
+ return React__default.createElement(UserProfileContext.Provider, {
+ value: props
+ }, React__default.createElement("div", {
+ className: className
+ }, children));
+};
+
+UserProfileProvider.propTypes = {
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
+ // eslint-disable-next-line react/no-unused-prop-types
+ isOpenChannel: PropTypes.bool,
+ // eslint-disable-next-line react/no-unused-prop-types
+ disableUserProfile: PropTypes.bool,
+ // eslint-disable-next-line react/no-unused-prop-types
+ renderUserProfile: PropTypes.func,
+ className: PropTypes.string
+};
+UserProfileProvider.defaultProps = {
+ className: null,
+ isOpenChannel: false,
+ disableUserProfile: false,
+ renderUserProfile: null
+};
+
+/*
+ ImageRenderer displays image with url or source
+ it checks if the source exist with img tag first
+ if it exists onLoad is called, if not onError is called
+ and those properties switch img tag to real purposing element
+*/
+
+function ImageRenderer(_ref) {
+ var alt = _ref.alt,
+ url = _ref.url,
+ width = _ref.width,
+ height = _ref.height,
+ className = _ref.className,
+ defaultComponent = _ref.defaultComponent,
+ circle = _ref.circle;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift('sendbird-image-renderer');
+
+ var _useState = React.useState(null),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ realElement = _useState2[0],
+ setRealElement = _useState2[1];
+
+ React.useEffect(function () {
+ setRealElement(null);
+ }, [url]);
+ return realElement || React__default.createElement("img", {
+ className: "sendbird-image-renderer--hidden-placeholder ".concat(injectingClassName.join(' ')),
+ src: url,
+ alt: alt,
+ onError: function onError() {
+ setRealElement(typeof defaultComponent === 'function' ? defaultComponent() : defaultComponent);
+ },
+ onLoad: function onLoad() {
+ setRealElement(React__default.createElement("div", {
+ className: injectingClassName.join(' '),
+ style: {
+ width: width,
+ height: height,
+ backgroundRepeat: 'no-repeat',
+ backgroundPosition: 'center',
+ backgroundSize: 'cover',
+ backgroundImage: "url(".concat(url, ")"),
+ borderRadius: circle ? '50%' : null
+ }
+ }));
+ }
+ });
+}
+ImageRenderer.propTypes = {
+ alt: PropTypes.string,
+ url: PropTypes.string.isRequired,
+ width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ className: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),
+ defaultComponent: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ circle: PropTypes.bool
+};
+ImageRenderer.defaultProps = {
+ alt: '',
+ className: '',
+ circle: false,
+ defaultComponent: null,
+ width: null,
+ height: null
+};
+
+var Type = {
+ ADD: 'ADD',
+ ATTACH: 'ATTACH',
+ ARROW_LEFT: 'ARROW_LEFT',
+ AVATAR_DARK: 'AVATAR_DARK',
+ AVATAR_LIGHT: 'AVATAR_LIGHT',
+ AVATAR_NO_IMAGE: 'AVATAR_NO_IMAGE',
+ BROADCAST_LARGE_DARK: 'BROADCAST_LARGE_DARK',
+ BROADCAST_LARGE_LIGHT: 'BROADCAST_LARGE_LIGHT',
+ BROADCAST_DARK: 'BROADCAST_DARK',
+ BROADCAST_LIGHT: 'BROADCAST_LIGHT',
+ BROADCAST: 'BROADCAST',
+ FROZEN_DARK: 'FROZEN_DARK',
+ FROZEN_LIGHT: 'FROZEN_LIGHT',
+ CAMERA: 'CAMERA',
+ MORE: 'MORE',
+ MUTE: 'MUTE',
+ NO_THUMBNAIL: 'NO_THUMBNAIL',
+ CHECKBOX: 'CHECKBOX',
+ CHECKBOX_OFF: 'CHECKBOX_OFF',
+ CLOSE: 'CLOSE',
+ COPY: 'COPY',
+ CHAT: 'CHAT',
+ CREATE: 'CREATE',
+ DELETE: 'DELETE',
+ DISCONNECTED: 'DISCONNECTED',
+ DUMMY: 'DUMMY',
+ EDIT: 'EDIT',
+ ERROR: 'ERROR',
+ ERROR_FILLED: 'ERROR_FILLED',
+ EMOJI_FAILED: 'EMOJI_FAILED',
+ EMOJI_REACTIONS_ADD: 'EMOJI_REACTIONS_ADD',
+ EMOJI_REACTIONS_ADD_GRAY: 'EMOJI_REACTIONS_ADD_GRAY',
+ DELIVERED: 'DELIVERED',
+ DOCUMENT: 'DOCUMENT',
+ DOWNLOAD: 'DOWNLOAD',
+ FILE_AUDIO: 'FILE_AUDIO',
+ FILE_DOCUMENT: 'FILE_DOCUMENT',
+ GIF: 'GIF',
+ INFO: 'INFO',
+ LEAVE: 'LEAVE',
+ MEMBERS: 'MEMBERS',
+ NOTIFICATIONS: 'NOTIFICATIONS',
+ PHOTO: 'PHOTO',
+ PLAY: 'PLAY',
+ PLUS: 'PLUS',
+ READ: 'READ',
+ REFRESH: 'REFRESH',
+ SEND: 'SEND',
+ SENT: 'SENT',
+ SUPER_GROUP: 'SUPER_GROUP',
+ SHEVRON: 'SHEVRON',
+ SHEVRON_DOWN: 'SHEVRON_DOWN',
+ SPINNER: 'SPINNER',
+ SPINNER_LARGE: 'SPINNER_LARGE',
+ USER: 'USER',
+ ICON_OPERATOR: 'ICON_OPERATOR',
+ ICON_BANNED: 'ICON_BANNED',
+ ICON_FREEZE: 'ICON_FREEZE',
+ ICON_MUTED: 'ICON_MUTED',
+ ICON_MUTED_FG: 'ICON_MUTED_FG',
+ TOGGLE_ON: 'TOGGLE_ON',
+ TOGGLE_OFF: 'TOGGLE_OFF'
+};
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+var _ref =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-add_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M19 2a3 3 0 013 3v14a3 3 0 01-3 3H5a3 3 0 01-3-3V5a3 3 0 013-3zm0 2H5a1 1 0 00-1 1v14a1 1 0 001 1h14a1 1 0 001-1V5a1 1 0 00-1-1zm-7 3a1 1 0 01.993.883L13 8v3h3a1 1 0 01.117 1.993L16 13h-3v3a1 1 0 01-1.993.117L11 16v-3H8a1 1 0 01-.117-1.993L8 11h3V8a1 1 0 011-1z"
+});
+
+function SvgIconAdd(props) {
+ return React__default.createElement("svg", _extends({
+ viewBox: "0 0 24 24"
+ }, props), _ref);
+}
+
+function _extends$1() { _extends$1 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }
+
+var _ref$1 =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-attach_svg__fill",
+ fillOpacity: 0.88,
+ fillRule: "evenodd",
+ d: "M19.021 9.943l-8.424 8.023c-1.795 1.71-4.723 1.71-6.518 0-1.77-1.685-1.77-4.398 0-6.084l8.424-8.023c1.079-1.027 2.845-1.027 3.924 0a2.461 2.461 0 010 3.614l-8.433 8.022a.984.984 0 01-1.33 0 .772.772 0 010-1.142l7.782-7.403a.917.917 0 00-1.264-1.328L5.4 13.025a2.605 2.605 0 000 3.798 2.816 2.816 0 003.858 0l8.433-8.022a4.294 4.294 0 000-6.27C15.905.83 13.025.83 11.24 2.531l-8.425 8.023c-2.528 2.408-2.528 6.332 0 8.74 2.504 2.384 6.544 2.384 9.047 0l8.425-8.023a.917.917 0 10-1.265-1.328z"
+});
+
+function SvgIconAttach(props) {
+ return React__default.createElement("svg", _extends$1({
+ viewBox: "0 0 22 22"
+ }, props), _ref$1);
+}
+
+function _extends$2() { _extends$2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$2.apply(this, arguments); }
+
+var _ref$2 =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-arrow-left_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12.707 3.293a1 1 0 01.083 1.32l-.083.094L6.415 11H21a1 1 0 01.117 1.993L21 13H6.415l6.292 6.293a1 1 0 01.083 1.32l-.083.094a1 1 0 01-1.32.083l-.094-.083-8-8a1 1 0 01-.083-1.32l.083-.094 8-8a1 1 0 011.414 0z"
+});
+
+function SvgIconArrowLeft(props) {
+ return React__default.createElement("svg", _extends$2({
+ viewBox: "0 0 24 24"
+ }, props), _ref$2);
+}
+
+function _extends$3() { _extends$3 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3.apply(this, arguments); }
+
+var _ref$3 =
+/*#__PURE__*/
+React__default.createElement("path", {
+ fill: "#393939",
+ d: "M0 0h56v56H0z"
+});
+
+var _ref2 =
+/*#__PURE__*/
+React__default.createElement("path", {
+ fillOpacity: 0.88,
+ d: "M34.667 31.333a8.334 8.334 0 018.325 7.972l.008.362V43a1.667 1.667 0 01-3.322.194L39.667 43v-3.333a5 5 0 00-4.707-4.992l-.293-.008H21.333a5 5 0 00-4.991 4.706l-.009.294V43a1.667 1.667 0 01-3.322.194L13 43v-3.333a8.333 8.333 0 017.972-8.326l.361-.008h13.334zm-6.667-20A8.333 8.333 0 1128 28a8.333 8.333 0 010-16.667zm0 3.334a5 5 0 100 10 5 5 0 000-10z"
+});
+
+function SvgIconAvatarDark(props) {
+ return React__default.createElement("svg", _extends$3({
+ viewBox: "0 0 56 56"
+ }, props), _ref$3, _ref2);
+}
+
+function _extends$4() { _extends$4 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$4.apply(this, arguments); }
+
+var _ref$4 =
+/*#__PURE__*/
+React__default.createElement("path", {
+ fill: "#A8A8A8",
+ d: "M0 0h56v56H0z"
+});
+
+var _ref2$1 =
+/*#__PURE__*/
+React__default.createElement("path", {
+ fill: "#FFF",
+ fillOpacity: 0.88,
+ d: "M34.667 31.333a8.334 8.334 0 018.325 7.972l.008.362V43a1.667 1.667 0 01-3.322.194L39.667 43v-3.333a5 5 0 00-4.707-4.992l-.293-.008H21.333a5 5 0 00-4.991 4.706l-.009.294V43a1.667 1.667 0 01-3.322.194L13 43v-3.333a8.333 8.333 0 017.972-8.326l.361-.008h13.334zm-6.667-20A8.333 8.333 0 1128 28a8.333 8.333 0 010-16.667zm0 3.334a5 5 0 100 10 5 5 0 000-10z"
+});
+
+function SvgIconAvatarLight(props) {
+ return React__default.createElement("svg", _extends$4({
+ viewBox: "0 0 56 56"
+ }, props), _ref$4, _ref2$1);
+}
+
+function _extends$5() { _extends$5 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$5.apply(this, arguments); }
+
+var _ref$5 =
+/*#__PURE__*/
+React__default.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("circle", {
+ cx: 16,
+ cy: 16,
+ r: 16,
+ className: "avatar-no-image-light_svg__fill"
+}), React__default.createElement("path", {
+ d: "M19.043 8.381l.089.004a.762.762 0 01.677.753l-.004.089-.415 3.725h2.705a.762.762 0 01.089 1.519l-.089.005H19.22l-.338 3.048h3.213a.762.762 0 01.089 1.518l-.089.005h-3.382l-.432 3.894a.762.762 0 01-1.519-.079l.004-.09.414-3.725h-3.038l-.433 3.894a.76.76 0 01-1.519-.079l.005-.09.414-3.725H9.905a.76.76 0 01-.089-1.518l.089-.005h2.872l.339-3.048H9.905a.762.762 0 01-.089-1.519l.089-.005h3.381l.433-3.893a.76.76 0 01.752-.678l.09.004a.763.763 0 01.677.753l-.005.089-.414 3.725h3.038l.433-3.893a.762.762 0 01.753-.678zm-1.694 9.143l.34-3.048h-3.04l-.338 3.048h3.038z",
+ fill: "#FFF",
+ fillOpacity: 0.88
+}));
+
+function SvgAvatarNoImageLight(props) {
+ return React__default.createElement("svg", _extends$5({
+ viewBox: "0 0 32 32"
+ }, props), _ref$5);
+}
+
+function _extends$6() { _extends$6 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$6.apply(this, arguments); }
+
+var _ref$6 =
+/*#__PURE__*/
+React__default.createElement("g", {
+ className: "icon-broadcast-lrg-dark_svg__fill",
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("circle", {
+ cx: 28,
+ cy: 28,
+ r: 28,
+ fill: "#6FD6BE"
+}), React__default.createElement("path", {
+ fill: "#000",
+ fillOpacity: 0.88,
+ d: "M41.273 16.083c.04.128.06.262.06.397v23.04a1.333 1.333 0 01-1.731 1.273l-8.975-2.805A5.335 5.335 0 0120 37.333v-2.666h-2.667a4 4 0 01-3.995-3.8l-.005-.2v-5.334a4 4 0 014-4H20l19.602-6.125a1.332 1.332 0 011.67.875zM22.667 35.627v1.706a2.667 2.667 0 005.326.199l.007-.239-5.333-1.666zm16-17.334l-16 4.999v9.415l16 4.998V18.293zM20 24h-2.667c-.683 0-1.247.515-1.324 1.178l-.009.155v5.334c0 .736.597 1.333 1.333 1.333H20v-8z"
+}));
+
+function SvgIconBroadcastLrgDark(props) {
+ return React__default.createElement("svg", _extends$6({
+ viewBox: "0 0 56 56"
+ }, props), _ref$6);
+}
+
+function _extends$7() { _extends$7 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$7.apply(this, arguments); }
+
+var _ref$7 =
+/*#__PURE__*/
+React__default.createElement("g", {
+ className: "icon-broadcast-lrg-light_svg__fill",
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("circle", {
+ cx: 28,
+ cy: 28,
+ r: 28,
+ fill: "#2EBA9F"
+}), React__default.createElement("path", {
+ fill: "#FFF",
+ fillOpacity: 0.88,
+ d: "M41.273 16.083c.04.128.06.262.06.397v23.04a1.333 1.333 0 01-1.731 1.273l-8.975-2.805A5.335 5.335 0 0120 37.333v-2.666h-2.667a4 4 0 01-3.995-3.8l-.005-.2v-5.334a4 4 0 014-4H20l19.602-6.125a1.332 1.332 0 011.67.875zM22.667 35.627v1.706a2.667 2.667 0 005.326.199l.007-.239-5.333-1.666zm16-17.334l-16 4.999v9.415l16 4.998V18.293zM20 24h-2.667c-.683 0-1.247.515-1.324 1.178l-.009.155v5.334c0 .736.597 1.333 1.333 1.333H20v-8z"
+}));
+
+function SvgIconBroadcastLrgLight(props) {
+ return React__default.createElement("svg", _extends$7({
+ viewBox: "0 0 56 56"
+ }, props), _ref$7);
+}
+
+function _extends$8() { _extends$8 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$8.apply(this, arguments); }
+
+var _ref$8 =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-broadcast-dark_svg__fill",
+ fill: "#6FD6BE",
+ fillRule: "evenodd",
+ d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
+});
+
+function SvgIconBroadcastDark(props) {
+ return React__default.createElement("svg", _extends$8({
+ viewBox: "0 0 16 16"
+ }, props), _ref$8);
+}
+
+function _extends$9() { _extends$9 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$9.apply(this, arguments); }
+
+var _ref$9 =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-broadcast-light_svg__fill",
+ fill: "#2EBA9F",
+ fillRule: "evenodd",
+ d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
+});
+
+function SvgIconBroadcastLight(props) {
+ return React__default.createElement("svg", _extends$9({
+ viewBox: "0 0 16 16"
+ }, props), _ref$9);
+}
+
+function _extends$a() { _extends$a = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$a.apply(this, arguments); }
+
+var _ref$a =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-broadcast_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
+});
+
+function SvgIconBroadcast(props) {
+ return React__default.createElement("svg", _extends$a({
+ viewBox: "0 0 16 16"
+ }, props), _ref$a);
+}
+
+function _extends$b() { _extends$b = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$b.apply(this, arguments); }
+
+var _ref$b =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "frozen-dark_svg__fill",
+ fill: "#9E8CF5",
+ fillRule: "evenodd",
+ d: "M10.409.806l.063.056c.24.24.259.618.055.88l-.055.063-1.805 1.804v3.236l2.801-1.618.662-2.465a.665.665 0 011.304.263l-.016.082-.56 2.088 2.088.56a.665.665 0 01.488.734l-.016.082a.666.666 0 01-.735.488l-.082-.016-2.465-.661L9.334 8l2.801 1.618 2.466-.66.082-.017a.667.667 0 01.735.488l.016.082a.666.666 0 01-.488.734l-2.088.56.56 2.088.016.082a.666.666 0 01-1.304.263l-.662-2.465-2.801-1.618v3.236l1.805 1.804a.668.668 0 01-.88.999l-.063-.056L8 13.61l-1.528 1.53a.668.668 0 01-.88.055l-.063-.056a.668.668 0 01-.056-.88l.056-.063 1.804-1.805V9.155L4.53 10.773l-.66 2.465a.667.667 0 01-1.304-.263l.017-.082.559-2.088-2.088-.56a.667.667 0 01-.488-.734l.017-.082a.665.665 0 01.734-.488l.082.016 2.466.66L6.666 8 3.864 6.382l-2.465.66-.082.017a.666.666 0 01-.734-.488L.566 6.49a.667.667 0 01.488-.734l2.088-.56-.56-2.088-.016-.082a.667.667 0 011.305-.263l.659 2.465 2.803 1.618V3.61L5.529 1.805a.668.668 0 01.88-.999l.063.056L8 2.39 9.53.862a.668.668 0 01.88-.056z"
+});
+
+function SvgFrozenDark(props) {
+ return React__default.createElement("svg", _extends$b({
+ viewBox: "0 0 16 16"
+ }, props), _ref$b);
+}
+
+function _extends$c() { _extends$c = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$c.apply(this, arguments); }
+
+var _ref$c =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "frozen-light_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M10.409.806l.063.056c.24.24.259.618.055.88l-.055.063-1.805 1.804v3.236l2.801-1.618.662-2.465a.665.665 0 011.304.263l-.016.082-.56 2.088 2.088.56a.665.665 0 01.488.734l-.016.082a.666.666 0 01-.735.488l-.082-.016-2.465-.661L9.334 8l2.801 1.618 2.466-.66.082-.017a.667.667 0 01.735.488l.016.082a.666.666 0 01-.488.734l-2.088.56.56 2.088.016.082a.666.666 0 01-1.304.263l-.662-2.465-2.801-1.618v3.236l1.805 1.804a.668.668 0 01-.88.999l-.063-.056L8 13.61l-1.528 1.53a.668.668 0 01-.88.055l-.063-.056a.668.668 0 01-.056-.88l.056-.063 1.804-1.805V9.155L4.53 10.773l-.66 2.465a.667.667 0 01-1.304-.263l.017-.082.559-2.088-2.088-.56a.667.667 0 01-.488-.734l.017-.082a.665.665 0 01.734-.488l.082.016 2.466.66L6.666 8 3.864 6.382l-2.465.66-.082.017a.666.666 0 01-.734-.488L.566 6.49a.667.667 0 01.488-.734l2.088-.56-.56-2.088-.016-.082a.667.667 0 011.305-.263l.659 2.465 2.803 1.618V3.61L5.529 1.805a.668.668 0 01.88-.999l.063.056L8 2.39 9.53.862a.668.668 0 01.88-.056z"
+});
+
+function SvgFrozenLight(props) {
+ return React__default.createElement("svg", _extends$c({
+ viewBox: "0 0 16 16"
+ }, props), _ref$c);
+}
+
+function _extends$d() { _extends$d = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$d.apply(this, arguments); }
+
+var _ref$d =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-camera_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M15 2a1 1 0 01.832.445L17.535 5H21a3 3 0 012.995 2.824L24 8v11a3 3 0 01-3 3H3a3 3 0 01-3-3V8a3 3 0 013-3h3.464l1.704-2.555a1 1 0 01.708-.437L9 2zm-.536 2H9.535L7.832 6.555a1 1 0 01-.708.437L7 7H3a1 1 0 00-1 1v11a1 1 0 001 1h18a1 1 0 001-1V8a1 1 0 00-1-1h-4a1 1 0 01-.832-.445L14.464 4zM12 8a5 5 0 110 10 5 5 0 010-10zm0 2a3 3 0 100 6 3 3 0 000-6z"
+});
+
+function SvgIconCamera(props) {
+ return React__default.createElement("svg", _extends$d({
+ viewBox: "0 0 24 24"
+ }, props), _ref$d);
+}
+
+function _extends$e() { _extends$e = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$e.apply(this, arguments); }
+
+var _ref$e =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-more_svg__fill",
+ fillRule: "evenodd",
+ d: "M12 17a2 2 0 110 4 2 2 0 010-4zm0-6.5a2 2 0 110 4 2 2 0 010-4zM12 4a2 2 0 110 4 2 2 0 010-4z"
+});
+
+function SvgIconMore(props) {
+ return React__default.createElement("svg", _extends$e({
+ viewBox: "0 0 24 24"
+ }, props), _ref$e);
+}
+
+function _extends$f() { _extends$f = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$f.apply(this, arguments); }
+
+var _ref$f =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-mute_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M15.125 20.09c0 .602-.694 2.41-2.778 2.41-1.389 0-2.315-.804-2.778-2.41zM12.789 1.606a6.496 6.496 0 015.388 2.861l2.464-2.463a.788.788 0 011.025-.077l.088.077a.788.788 0 010 1.113L3.378 21.494a.788.788 0 01-1.025.077l-.088-.077a.788.788 0 010-1.113l1.9-1.903-.04-.004a.387.387 0 01-.241-.596l1.557-2.295.001-.208a545.875 545.875 0 00-.028-6.563l-.008-.614a6.503 6.503 0 016.414-6.59h.969zm6.381 5.246c.08.407.122.827.122 1.257l-.001 7.53 1.52 2.238a.387.387 0 01-.32.604H7.54l3.214-3.214 8.415-8.415z"
+});
+
+function SvgIconMute(props) {
+ return React__default.createElement("svg", _extends$f({
+ viewBox: "0 0 24 24"
+ }, props), _ref$f);
+}
+
+function _extends$g() { _extends$g = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$g.apply(this, arguments); }
+
+var _ref$g =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-no-thumbnail_svg__fill",
+ fillOpacity: 0.5,
+ fillRule: "evenodd",
+ d: "M30.333 4.667a2.333 2.333 0 110 4.666H11.667a2.334 2.334 0 00-2.334 2.334v32.666c0 1.001.63 1.855 1.516 2.186l24.834-24.836a2.336 2.336 0 013.3 0l7.684 7.683v-3.7c0-1.234.96-2.245 2.173-2.327l.16-.006a2.333 2.333 0 012.333 2.334v18.666a7 7 0 01-7 7H11.665a6.999 6.999 0 01-6.998-7V11.667a7 7 0 017-7zm7 21.966L17.3 46.666h27.034a2.333 2.333 0 002.328-2.173l.006-.16v-8.367l-9.334-9.333zM19.833 14a5.834 5.834 0 110 11.668 5.834 5.834 0 010-11.668zm0 4.667a1.166 1.166 0 100 2.332 1.166 1.166 0 000-2.332zm29.85-15.65a2.334 2.334 0 013.3 3.3L48.8 10.499l4.184 4.184c.87.87.91 2.256.119 3.173l-.119.127a2.334 2.334 0 01-3.3 0L45.5 13.8l-4.183 4.184c-.87.87-2.256.91-3.173.119l-.127-.119a2.334 2.334 0 010-3.3L42.2 10.5l-4.183-4.182a2.334 2.334 0 01-.119-3.173l.119-.127a2.334 2.334 0 013.3 0L45.5 7.2z"
+});
+
+function SvgIconNoThumbnail(props) {
+ return React__default.createElement("svg", _extends$g({
+ viewBox: "0 0 56 56"
+ }, props), _ref$g);
+}
+
+function _extends$h() { _extends$h = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$h.apply(this, arguments); }
+
+var _ref$h =
+/*#__PURE__*/
+React__default.createElement("g", {
+ className: "icon-checkbox_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd"
+}, React__default.createElement("path", {
+ d: "M18 1H6a5 5 0 00-5 5v12a5 5 0 005 5h12a5 5 0 005-5V6a5 5 0 00-5-5zm0 2a3 3 0 013 3v12a3 3 0 01-3 3H6a3 3 0 01-3-3V6a3 3 0 013-3h12z"
+}), React__default.createElement("path", {
+ d: "M19 3H5a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V5a2 2 0 00-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
+}));
+
+function SvgIconCheckbox(props) {
+ return React__default.createElement("svg", _extends$h({
+ viewBox: "0 0 24 24"
+ }, props), _ref$h);
+}
+
+function _extends$i() { _extends$i = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$i.apply(this, arguments); }
+
+var _ref$i =
+/*#__PURE__*/
+React__default.createElement("g", {
+ className: "icon-checkbox-off_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd"
+}, React__default.createElement("path", {
+ d: "M18 1H6a5 5 0 00-5 5v12a5 5 0 005 5h12a5 5 0 005-5V6a5 5 0 00-5-5zm0 2a3 3 0 013 3v12a3 3 0 01-3 3H6a3 3 0 01-3-3V6a3 3 0 013-3h12z"
+}), React__default.createElement("path", {
+ d: "M19 19H5V5h14v14zm0-16H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
+}));
+
+function SvgIconCheckboxOff(props) {
+ return React__default.createElement("svg", _extends$i({
+ viewBox: "0 0 24 24"
+ }, props), _ref$i);
+}
+
+function _extends$j() { _extends$j = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$j.apply(this, arguments); }
+
+var _ref$j =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-close_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M6.613 5.21l.094.083L12 10.585l5.293-5.292a1 1 0 011.497 1.32l-.083.094L13.415 12l5.292 5.293a1 1 0 01-1.32 1.497l-.094-.083L12 13.415l-5.293 5.292a1 1 0 01-1.497-1.32l.083-.094L10.585 12 5.293 6.707a1 1 0 011.32-1.497z"
+});
+
+function SvgIconClose(props) {
+ return React__default.createElement("svg", _extends$j({
+ viewBox: "0 0 24 24"
+ }, props), _ref$j);
+}
+
+function _extends$k() { _extends$k = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$k.apply(this, arguments); }
+
+var _ref$k =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-copy_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M20 8a3 3 0 013 3v9a3 3 0 01-3 3h-9a3 3 0 01-3-3v-9a3 3 0 013-3zm0 2h-9a1 1 0 00-1 1v9a1 1 0 001 1h9a1 1 0 001-1v-9a1 1 0 00-1-1zm-7-9a3 3 0 012.995 2.824L16 4v1a1 1 0 01-1.993.117L14 5V4a1 1 0 00-.883-.993L13 3H4a1 1 0 00-.993.883L3 4v9a1 1 0 00.883.993L4 14h1a1 1 0 01.117 1.993L5 16H4a3 3 0 01-2.995-2.824L1 13V4a3 3 0 012.824-2.995L4 1h9z"
+});
+
+function SvgIconCopy(props) {
+ return React__default.createElement("svg", _extends$k({
+ viewBox: "0 0 24 24"
+ }, props), _ref$k);
+}
+
+function _extends$l() { _extends$l = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$l.apply(this, arguments); }
+
+var _ref$l =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-chat_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11c-1.67 0-3.255-.373-4.673-1.039l-.657.218c-2.237.716-3.8.964-4.69.742-1.049-.261-1.256-.72-.62-1.373.439-.524.805-1.178 1.097-1.963.234-.625.142-1.5-.276-2.625A10.933 10.933 0 011 12C1 5.925 5.925 1 12 1zm0 2a9 9 0 00-8.187 12.742l.152.314.051.101.04.107c.569 1.532.709 2.859.275 4.02l-.143.365-.072.162.088-.019a23.181 23.181 0 001.832-.511l.646-.213.765-.26.73.343A8.962 8.962 0 0012 21a9 9 0 000-18z"
+});
+
+function SvgIconChat(props) {
+ return React__default.createElement("svg", _extends$l({
+ viewBox: "0 0 24 24"
+ }, props), _ref$l);
+}
+
+function _extends$m() { _extends$m = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$m.apply(this, arguments); }
+
+var _ref$m =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-supergroup_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M16.139 18.818c2.89 0 5.303 2.05 5.438 4.696l.006.235v1.626a1.166 1.166 0 01-2.326.136l-.007-.136v-1.626c0-1.343-1.255-2.501-2.903-2.592l-.208-.006H11.86c-1.679 0-3.001 1.105-3.105 2.431l-.006.167v1.626a1.166 1.166 0 01-2.325.136l-.008-.136v-1.626c0-2.68 2.329-4.806 5.19-4.926l.254-.005h4.278zm8.128-7.565c.116 0 .232.018.343.052 2.026.624 3.289 2.1 3.384 4.239l.006.26v5.6a1.166 1.166 0 01-2.325.136l-.008-.137v-5.599c-.001-1.135-.509-1.825-1.543-2.202l-.046-.016h-1.095c-.598 0-1.091-.45-1.158-1.03l-.008-.136c0-.598.45-1.092 1.03-1.159l.136-.008h1.284zm-19.25 0l.136.008c.58.067 1.03.56 1.03 1.159l-.008.136c-.067.58-.56 1.03-1.158 1.03H3.919l-.052.018c-.983.372-1.533 1.126-1.534 2.252v5.547l-.008.136A1.166 1.166 0 010 21.404v-5.548l.006-.259c.099-2.132 1.402-3.681 3.374-4.29.112-.035.228-.053.345-.053h1.292zM14 8.732c2.412 0 4.375 1.928 4.375 4.318 0 2.39-1.963 4.319-4.375 4.319S9.625 15.44 9.625 13.05c0-2.39 1.963-4.318 4.375-4.318zm0 2.333c-1.132 0-2.042.893-2.042 1.985s.91 1.986 2.042 1.986c1.132 0 2.042-.894 2.042-1.986s-.91-1.985-2.042-1.985zM7.583 1.167c2.412 0 4.375 1.929 4.375 4.318 0 2.39-1.963 4.32-4.375 4.32-2.411 0-4.375-1.93-4.375-4.32 0-2.39 1.964-4.318 4.375-4.318zm12.834 0c2.411 0 4.375 1.929 4.375 4.318 0 2.39-1.964 4.32-4.375 4.32-2.412 0-4.375-1.93-4.375-4.32 0-2.39 1.963-4.318 4.375-4.318zM7.583 3.5c-1.132 0-2.041.894-2.041 1.985 0 1.092.91 1.986 2.041 1.986 1.132 0 2.042-.894 2.042-1.986 0-1.091-.91-1.985-2.042-1.985zm12.834 0c-1.132 0-2.042.894-2.042 1.985 0 1.092.91 1.986 2.042 1.986 1.132 0 2.041-.894 2.041-1.986 0-1.091-.91-1.985-2.041-1.985z"
+});
+
+function SvgIconSupergroup(props) {
+ return React__default.createElement("svg", _extends$m({
+ viewBox: "0 0 28 28"
+ }, props), _ref$m);
+}
+
+function _extends$n() { _extends$n = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$n.apply(this, arguments); }
+
+var _ref$n =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-create_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11c-1.67 0-3.255-.373-4.673-1.039l-.657.218c-2.237.716-3.8.964-4.69.742-1.049-.261-1.256-.72-.62-1.373.439-.524.805-1.178 1.097-1.963.234-.625.142-1.5-.276-2.625A10.933 10.933 0 011 12C1 5.925 5.925 1 12 1zm0 2a9 9 0 00-8.187 12.742l.152.314.051.101.04.107c.569 1.532.709 2.859.275 4.02l-.143.365-.072.162.088-.019a23.181 23.181 0 001.832-.511l.646-.213.765-.26.73.343A8.962 8.962 0 0012 21a9 9 0 000-18zm1 6v2h2c1.333 0 1.333 2 0 2h-2v2c0 1.333-2 1.333-2 0v-2H9c-1.333 0-1.333-2 0-2h2V9c0-1.333 2-1.333 2 0z"
+});
+
+function SvgIconCreate(props) {
+ return React__default.createElement("svg", _extends$n({
+ viewBox: "0 0 24 24"
+ }, props), _ref$n);
+}
+
+function _extends$o() { _extends$o = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$o.apply(this, arguments); }
+
+var _ref$o =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-delete_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M14 1a3 3 0 012.995 2.824L17 4v1h4a1 1 0 01.117 1.993L21 7h-1v13a3 3 0 01-2.824 2.995L17 23H7a3 3 0 01-2.995-2.824L4 20V7H3a1 1 0 01-.117-1.993L3 5h4V4a3 3 0 012.824-2.995L10 1h4zm4 6H6v13a1 1 0 00.883.993L7 21h10a1 1 0 00.993-.883L18 20V7zm-8 3a1 1 0 01.993.883L11 11v6a1 1 0 01-1.993.117L9 17v-6a1 1 0 011-1zm4 0a1 1 0 01.993.883L15 11v6a1 1 0 01-1.993.117L13 17v-6a1 1 0 011-1zm0-7h-4a1 1 0 00-.993.883L9 4v1h6V4a1 1 0 00-.883-.993L14 3z"
+});
+
+function SvgIconDelete(props) {
+ return React__default.createElement("svg", _extends$o({
+ viewBox: "0 0 24 24"
+ }, props), _ref$o);
+}
+
+function _extends$p() { _extends$p = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$p.apply(this, arguments); }
+
+var _ref$p =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-dummy_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
+});
+
+function SvgIconDummy(props) {
+ return React__default.createElement("svg", _extends$p({
+ viewBox: "0 0 24 24"
+ }, props), _ref$p);
+}
+
+function _extends$q() { _extends$q = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$q.apply(this, arguments); }
+
+var _ref$q =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-edit_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M21.875 21.875a1.042 1.042 0 01.121 2.076l-.121.007H3.125a1.042 1.042 0 01-.121-2.076l.121-.007h18.75zM13.847 1.347a1.042 1.042 0 011.473 0l4.167 4.166a1.042 1.042 0 010 1.474L8.028 18.445c-.195.195-.46.305-.736.305H3.125a1.042 1.042 0 01-1.042-1.042v-4.166c0-.277.11-.542.305-.737zm.736 2.21L4.167 13.973v2.694h2.691L17.276 6.25l-2.693-2.693z"
+});
+
+function SvgIconEdit(props) {
+ return React__default.createElement("svg", _extends$q({
+ viewBox: "0 0 26 26"
+ }, props), _ref$q);
+}
+
+function _extends$r() { _extends$r = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$r.apply(this, arguments); }
+
+var _ref$r =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-error_svg__fill",
+ fill: "#E53157",
+ fillRule: "evenodd",
+ d: "M8 1.265c.655 0 1.266.32 1.64.856l.072.11 5.652 9.436c.355.615.357 1.373.006 1.99-.33.579-.925.953-1.59 1.004l-.133.006H2.346a2.001 2.001 0 01-1.772-2.883l.067-.127 5.649-9.43A2 2 0 018 1.266zm0 1.333a.669.669 0 00-.52.248l-.048.07-5.641 9.417a.669.669 0 00.477.994l.085.006H13.64a.664.664 0 00.612-.914l-.036-.076L8.57 2.919a.663.663 0 00-.57-.32zm0 8.069A.667.667 0 118 12a.667.667 0 010-1.333zm0-5.334c.342 0 .624.258.662.59L8.667 6v2.667a.667.667 0 01-1.329.077l-.005-.077V6c0-.368.299-.667.667-.667z"
+});
+
+function SvgIconError(props) {
+ return React__default.createElement("svg", _extends$r({
+ viewBox: "0 0 16 16"
+ }, props), _ref$r);
+}
+
+function _extends$s() { _extends$s = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$s.apply(this, arguments); }
+
+var _ref$s =
+/*#__PURE__*/
+React__default.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("path", {
+ className: "icon-error-filled_svg__fill",
+ fill: "#E53157",
+ d: "M10.281 4.18L1.77 17.85a1.87 1.87 0 00-.005 1.924c.353.597 1.01.968 1.724.976h17.024a2.024 2.024 0 001.724-.976 1.87 1.87 0 00-.005-1.924L13.719 4.18A2.028 2.028 0 0012 3.25a2.03 2.03 0 00-1.719.93z"
+}), React__default.createElement("path", {
+ fill: "#FFF",
+ fillRule: "nonzero",
+ d: "M11.125 12.875V8.5c0-1.167 1.75-1.167 1.75 0v4.375c0 1.167-1.75 1.167-1.75 0zm0 3.5c0-1.167 1.75-1.167 1.75 0s-1.75 1.167-1.75 0z"
+}));
+
+function SvgIconErrorFilled(props) {
+ return React__default.createElement("svg", _extends$s({
+ viewBox: "0 0 24 24"
+ }, props), _ref$s);
+}
+
+function _extends$t() { _extends$t = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$t.apply(this, arguments); }
+
+var _ref$t =
+/*#__PURE__*/
+React__default.createElement("g", {
+ className: "emoji-fail_svg__fill",
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("rect", {
+ width: 26.526,
+ height: 26.526,
+ x: 0.737,
+ y: 0.737,
+ fill: "#FFF",
+ rx: 4
+}), React__default.createElement("path", {
+ fill: "#000",
+ fillOpacity: 0.12,
+ d: "M14 23.456a9.457 9.457 0 11.001-18.913A9.457 9.457 0 0114 23.456zm0-1.72a7.736 7.736 0 100-15.473 7.737 7.737 0 000 15.474zm.714-6.005a.86.86 0 11-1.72 0v-.867a.86.86 0 01.588-.816 5.248 5.248 0 001.084-.544c.592-.395.907-.815.907-1.22a1.72 1.72 0 00-3.341-.574.86.86 0 11-1.622-.57 3.438 3.438 0 016.682 1.145c0 1.1-.651 1.969-1.672 2.65a6.81 6.81 0 01-.906.508v.288zm-1.72 2.425a.86.86 0 011.72 0v.142a.86.86 0 11-1.72 0V18.156z"
+}));
+
+function SvgEmojiFail(props) {
+ return React__default.createElement("svg", _extends$t({
+ viewBox: "0 0 28 28"
+ }, props), _ref$t);
+}
+
+function _extends$u() { _extends$u = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$u.apply(this, arguments); }
+
+var _ref$u =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-reactions-add_svg__fill",
+ fillOpacity: 0.88,
+ fillRule: "evenodd",
+ d: "M11.033 1.107a9.98 9.98 0 012.669.362.734.734 0 01-.393 1.413A8.466 8.466 0 002.567 11.04 8.466 8.466 0 1019.2 8.8a.736.736 0 01.514-.902.735.735 0 01.901.514c.233.85.352 1.731.352 2.628 0 5.486-4.448 9.933-9.934 9.933-5.486 0-9.933-4.447-9.933-9.933s4.447-9.933 9.933-9.933zm3.68 11.96c.5 0 .854.49.696.965-.644 1.933-2.385 3.261-4.376 3.261-1.99 0-3.732-1.328-4.375-3.261a.733.733 0 01.597-.959l.098-.006h7.36zm-1.195 1.466h-4.97l.101.131a3.115 3.115 0 002.012 1.14l.198.018.174.005c.868 0 1.672-.38 2.254-1.012l.13-.15.101-.132zM7.353 7.547c.374 0 .683.28.728.641l.006.092v1.84a.734.734 0 01-1.461.092l-.006-.092V8.28c0-.405.328-.733.733-.733zm7.36 0c.374 0 .683.28.728.641l.006.092v1.84a.734.734 0 01-1.461.092l-.006-.092V8.28c0-.405.328-.733.733-.733zM18.398 0c.405 0 .733.328.733.733v2.218h2.209a.734.734 0 010 1.467h-2.21v2.209a.732.732 0 11-1.466 0V4.418h-2.217a.734.734 0 110-1.466l2.216-.001.001-2.218c0-.405.328-.733.733-.733z"
+});
+
+function SvgIconReactionsAdd(props) {
+ return React__default.createElement("svg", _extends$u({
+ viewBox: "0 0 22 22"
+ }, props), _ref$u);
+}
+
+function _extends$v() { _extends$v = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$v.apply(this, arguments); }
+
+var _ref$v =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-emoji-reactions-add_svg__fill",
+ fillOpacity: 0.38,
+ fillRule: "evenodd",
+ d: "M10.03 1.006c.828 0 1.643.112 2.426.33a.666.666 0 11-.357 1.284 7.741 7.741 0 00-2.069-.28 7.697 7.697 0 107.697 7.696c0-.696-.092-1.379-.272-2.037a.667.667 0 011.287-.352c.21.773.319 1.574.319 2.39a9.03 9.03 0 01-9.03 9.03 9.03 9.03 0 11-.001-18.06zm3.346 10.873c.455 0 .776.445.632.877-.585 1.757-2.168 2.965-3.978 2.965s-3.392-1.208-3.978-2.965a.667.667 0 01.538-.87l.095-.007h6.69zm-1.087 1.333H7.771l.092.12c.46.563 1.103.938 1.813 1.033l.196.018.158.005c.784 0 1.512-.341 2.04-.91l.128-.147.091-.12zM6.685 6.86c.34 0 .62.254.661.583l.006.083V9.2a.667.667 0 01-1.329.084L6.018 9.2V7.527c0-.368.299-.666.667-.666zm6.69 0c.34 0 .621.254.662.583l.005.083V9.2a.667.667 0 01-1.328.084L12.71 9.2V7.527c0-.368.299-.666.667-.666zM16.726 0c.368 0 .667.298.667.667l-.001 2.016H19.4a.667.667 0 010 1.334l-2.01-.001.002 2.008a.667.667 0 01-1.334 0V4.016h-2.016a.666.666 0 110-1.333h2.016V.667c0-.369.299-.667.667-.667z"
+});
+
+function SvgIconEmojiReactionsAdd(props) {
+ return React__default.createElement("svg", _extends$v({
+ viewBox: "0 0 20 20"
+ }, props), _ref$v);
+}
+
+function _extends$w() { _extends$w = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$w.apply(this, arguments); }
+
+var _ref$w =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-delivered_svg__fill",
+ fillOpacity: 0.38,
+ fillRule: "evenodd",
+ d: "M2.207 11.793l5 5a1 1 0 01-1.414 1.414l-5-5a1 1 0 011.414-1.414zm19.586-6a1 1 0 011.414 1.414l-11 11a1 1 0 01-1.414 0l-5-5a1 1 0 011.414-1.414l4.293 4.293zm-3.586 0a1 1 0 010 1.414l-5.999 5.999a1 1 0 01-1.414-1.414l5.999-6a1 1 0 011.414 0z"
+});
+
+function SvgIconDelivered(props) {
+ return React__default.createElement("svg", _extends$w({
+ viewBox: "0 0 24 24"
+ }, props), _ref$w);
+}
+
+function _extends$x() { _extends$x = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$x.apply(this, arguments); }
+
+var _ref$x =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-disconnected_svg__fill",
+ fillRule: "evenodd",
+ d: "M3.55 2.276l.093.081L10.9 9.615a.895.895 0 01.148.147l10.594 10.595a.91.91 0 01-1.193 1.367l-.093-.081-5.015-5.015a.913.913 0 01-.705-.15 4.545 4.545 0 00-5.265 0 .91.91 0 01-1.053-1.483 6.358 6.358 0 014.24-1.151l-2.529-2.53c-1.4.316-2.706.96-3.81 1.883a.91.91 0 01-1.167-1.394 10.854 10.854 0 013.504-1.962L6.445 7.728a13.518 13.518 0 00-3.461 2.226.909.909 0 01-1.204-1.362 15.38 15.38 0 013.299-2.229l-2.722-2.72A.91.91 0 013.55 2.276zm13.14 8.052c.812.397 1.572.894 2.262 1.479a.908.908 0 11-1.177 1.386 9.015 9.015 0 00-1.883-1.23.91.91 0 01.798-1.635zm5.53-1.737a.91.91 0 01-1.203 1.363A13.642 13.642 0 0010.9 6.588a.91.91 0 01-.146-1.813A15.457 15.457 0 0122.22 8.591z"
+});
+
+function SvgIconDisconnected(props) {
+ return React__default.createElement("svg", _extends$x({
+ viewBox: "0 0 24 24"
+ }, props), _ref$x);
+}
+
+function _extends$y() { _extends$y = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$y.apply(this, arguments); }
+
+var _ref$y =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-document_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M14 1a1.01 1.01 0 01.25.031l.03.009c.03.009.061.02.091.031l.027.012a.914.914 0 01.195.112c.04.03.078.062.114.098l-.093-.082.011.009.082.073 6 6a1.006 1.006 0 01.21.309l.012.027c.012.03.022.06.031.091l.008.03A.921.921 0 0121 8l-.008-.126.001.01L21 8v12a3 3 0 01-3 3H6a3 3 0 01-3-3V4a3 3 0 013-3h8zm-1 2H6a1 1 0 00-1 1v16a1 1 0 001 1h12a1 1 0 001-1V9h-5a1 1 0 01-.993-.883L13 8V3zm4.585 4L15 4.415V7h2.585z"
+});
+
+function SvgIconDocument(props) {
+ return React__default.createElement("svg", _extends$y({
+ viewBox: "0 0 24 24"
+ }, props), _ref$y);
+}
+
+function _extends$z() { _extends$z = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$z.apply(this, arguments); }
+
+var _ref$z =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-download_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M21 16a1 1 0 01.993.883L22 17v3a3 3 0 01-2.824 2.995L19 23H5a3 3 0 01-2.995-2.824L2 20v-3a1 1 0 011.993-.117L4 17v3a1 1 0 00.883.993L5 21h14a1 1 0 00.993-.883L20 20v-3a1 1 0 011-1zM12 1a1 1 0 01.993.883L13 2v11.585l2.293-2.292a1 1 0 011.32-.083l.094.083a1 1 0 01.083 1.32l-.083.094-4 4a1.006 1.006 0 01-.09.08l.09-.08a1.008 1.008 0 01-.674.292L12 17h-.032l-.054-.004L12 17a1.008 1.008 0 01-.613-.21 1.037 1.037 0 01-.094-.083l-4-4a1 1 0 011.32-1.497l.094.083L11 13.585V2a1 1 0 011-1z"
+});
+
+function SvgIconDownload(props) {
+ return React__default.createElement("svg", _extends$z({
+ viewBox: "0 0 24 24"
+ }, props), _ref$z);
+}
+
+function _extends$A() { _extends$A = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$A.apply(this, arguments); }
+
+var _ref$A =
+/*#__PURE__*/
+React__default.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("rect", {
+ fill: "#FFF",
+ fillRule: "nonzero",
+ rx: 10
+}), React__default.createElement("path", {
+ className: "icon-file-audio_svg__fill",
+ fill: "#7B53EF",
+ d: "M18.815 9.185c2.913 2.934 2.913 7.696 0 10.63a.617.617 0 01-.894-.013.67.67 0 01.012-.925 6.215 6.215 0 000-8.754.67.67 0 01-.012-.925.617.617 0 01.894-.013zm-5.291 0a.646.646 0 011.044.517v9.596c0 .544-.62.85-1.044.516l-3.31-2.702H7.646A.65.65 0 017 16.458v-3.916a.65.65 0 01.647-.654h2.566zm2.886 2.42a4.113 4.113 0 010 5.783.617.617 0 01-.893-.012.67.67 0 01.012-.925 2.772 2.772 0 000-3.908.67.67 0 01-.012-.925.617.617 0 01.893-.013z"
+}));
+
+function SvgIconFileAudio(props) {
+ return React__default.createElement("svg", _extends$A({
+ viewBox: "0 0 28 28"
+ }, props), _ref$A);
+}
+
+function _extends$B() { _extends$B = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$B.apply(this, arguments); }
+
+var _ref$B =
+/*#__PURE__*/
+React__default.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("rect", {
+ fill: "#FFF",
+ fillRule: "nonzero",
+ rx: 10
+}), React__default.createElement("path", {
+ className: "icon-file-document_svg__fill",
+ fill: "#7B53EF",
+ d: "M16.317 5.667H9.05C7.907 5.667 7 6.58 7 7.687v12.625c0 1.107.907 2.021 2.05 2.021h9.9c1.143 0 2.05-.914 2.05-2.02v-9.97a.673.673 0 00-.198-.473l-3.95-3.984a.753.753 0 00-.535-.22z"
+}), React__default.createElement("path", {
+ fill: "#FFF",
+ d: "M17.025 16.667c.354 0 .642.302.642.675 0 .372-.288.675-.642.675h-6.383c-.355 0-.642-.303-.642-.675 0-.373.287-.675.642-.675zm0-2.667c.354 0 .642.302.642.675 0 .373-.288.675-.642.675h-6.383c-.355 0-.642-.302-.642-.675 0-.373.287-.675.642-.675zm-3.357-2.667c.369 0 .668.303.668.675 0 .373-.3.675-.668.675h-3a.672.672 0 01-.668-.675c0-.372.3-.675.668-.675z"
+}));
+
+function SvgIconFileDocument(props) {
+ return React__default.createElement("svg", _extends$B({
+ viewBox: "0 0 28 28"
+ }, props), _ref$B);
+}
+
+function _extends$C() { _extends$C = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$C.apply(this, arguments); }
+
+var _ref$C =
+/*#__PURE__*/
+React__default.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("circle", {
+ cx: 28,
+ cy: 28,
+ r: 28,
+ fill: "#FFF",
+ fillOpacity: 0.88
+}), React__default.createElement("path", {
+ className: "icon-gif_svg__fill",
+ fill: "#000",
+ fillOpacity: 0.55,
+ d: "M20.608 35.182c1.094 0 2.09-.162 2.99-.487.899-.325 1.595-.783 2.087-1.372v-5.296h-5.223v2.015h2.489v2.287c-.438.438-1.17.657-2.197.657-1.02 0-1.796-.356-2.324-1.067-.529-.71-.793-1.762-.793-3.153v-.848c.006-1.38.252-2.418.738-3.117.486-.699 1.194-1.048 2.124-1.048.729 0 1.302.176 1.718.528.416.353.685.909.806 1.668h2.662c-.164-1.434-.69-2.526-1.577-3.276s-2.118-1.126-3.691-1.126c-1.13 0-2.116.257-2.958.77-.842.514-1.486 1.255-1.932 2.224-.447.97-.67 2.116-.67 3.44v.903c.012 1.288.253 2.41.724 3.363.471.954 1.14 1.682 2.006 2.183.865.502 1.873.752 3.021.752zm10.2-.182V21.73h-2.735V35h2.734zm5.268 0v-5.423h5.25V27.37h-5.25v-3.427h5.906v-2.215h-8.64V35h2.734z"
+}));
+
+function SvgIconGif(props) {
+ return React__default.createElement("svg", _extends$C({
+ viewBox: "0 0 56 56"
+ }, props), _ref$C);
+}
+
+function _extends$D() { _extends$D = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$D.apply(this, arguments); }
+
+var _ref$D =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-info_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1zm0 2a9 9 0 100 18 9 9 0 000-18zm0 8a1 1 0 011 1v4a1 1 0 01-2 0v-4a1 1 0 011-1zm0-3a1 1 0 110 2 1 1 0 010-2z"
+});
+
+function SvgIconInfo(props) {
+ return React__default.createElement("svg", _extends$D({
+ viewBox: "0 0 24 24"
+ }, props), _ref$D);
+}
+
+function _extends$E() { _extends$E = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$E.apply(this, arguments); }
+
+var _ref$E =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-leave_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 2a1 1 0 01.117 1.993L12 4H4a1 1 0 00-.993.883L3 5v14a1 1 0 00.883.993L4 20h8a1 1 0 01.117 1.993L12 22H4a3 3 0 01-2.995-2.824L1 19V5a3 3 0 012.824-2.995L4 2h8zm6.613 5.21l.094.083 4 4a1 1 0 01.083 1.32l-.083.094-4 4a1 1 0 01-1.497-1.32l.083-.094 1.792-1.793H7.5a1 1 0 01-.117-1.993L7.5 11.5h12.585l-2.792-2.793a1 1 0 01-.083-1.32l.083-.094a1 1 0 011.32-.083z"
+});
+
+function SvgIconLeave(props) {
+ return React__default.createElement("svg", _extends$E({
+ viewBox: "0 0 24 24"
+ }, props), _ref$E);
+}
+
+function _extends$F() { _extends$F = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$F.apply(this, arguments); }
+
+var _ref$F =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-members_svg__fill",
+ fillRule: "evenodd",
+ d: "M13 14a5 5 0 014.995 4.783L18 19v2a1 1 0 01-1.993.117L16 21v-2a3 3 0 00-2.824-2.995L13 16H5a3 3 0 00-2.995 2.824L2 19v2a1 1 0 01-1.993.117L0 21v-2a5 5 0 014.783-4.995L5 14h8zm7.25.162a5 5 0 013.745 4.611L24 19v2a1 1 0 01-1.993.117L22 21v-2a3 3 0 00-2.25-2.902 1 1 0 11.5-1.936zM9 2a5 5 0 110 10A5 5 0 019 2zm7.248.161a5 5 0 010 9.688 1 1 0 01-.496-1.938 3 3 0 000-5.812 1 1 0 11.496-1.938zM9 4a3 3 0 100 6 3 3 0 000-6z"
+});
+
+function SvgIconMembers(props) {
+ return React__default.createElement("svg", _extends$F({
+ viewBox: "0 0 24 24"
+ }, props), _ref$F);
+}
+
+function _extends$G() { _extends$G = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$G.apply(this, arguments); }
+
+var _ref$G =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-notifications_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M13.73 20a1 1 0 01.865 1.502 3 3 0 01-5.19 0 1 1 0 01.752-1.496L10.27 20h3.46zM12 1a8 8 0 017.996 7.75L20 9v5a2 2 0 001.85 1.995l.283.012c1.111.12 1.154 1.73.128 1.965l-.128.021L22 18H2l-.133-.007c-1.156-.124-1.156-1.862 0-1.986l.282-.012a2 2 0 001.845-1.838L4 14V9a8 8 0 018-8zm0 2a6 6 0 00-5.996 5.775L6 9v5c0 .586-.126 1.142-.352 1.643l-.103.212-.082.145h13.073l-.08-.145a3.973 3.973 0 01-.43-1.402l-.021-.253L18 14V9a6 6 0 00-6-6z"
+});
+
+function SvgIconNotifications(props) {
+ return React__default.createElement("svg", _extends$G({
+ viewBox: "0 0 24 24"
+ }, props), _ref$G);
+}
+
+function _extends$H() { _extends$H = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$H.apply(this, arguments); }
+
+var _ref$H =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-photo_svg__fill",
+ fillRule: "evenodd",
+ d: "M19 2a3 3 0 013 3v14a3 3 0 01-3 3H4.941v-.002l-.117-.003A3 3 0 012 19V5a3 3 0 013-3zm-3 9.415L7.414 20H19a1 1 0 00.993-.883L20 19v-3.585l-4-4zM19 4H5a1 1 0 00-1 1v14a1 1 0 00.65.937L15.292 9.293a1 1 0 011.32-.083l.094.083L20 12.585V5a1 1 0 00-.883-.993L19 4zM8.5 6a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm0 2a.5.5 0 100 1 .5.5 0 000-1z"
+});
+
+function SvgIconPhoto(props) {
+ return React__default.createElement("svg", _extends$H({
+ viewBox: "0 0 24 24"
+ }, props), _ref$H);
+}
+
+function _extends$I() { _extends$I = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$I.apply(this, arguments); }
+
+var _ref$I =
+/*#__PURE__*/
+React__default.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("circle", {
+ cx: 28,
+ cy: 28,
+ r: 28,
+ fill: "#FFF",
+ fillOpacity: 0.88
+}), React__default.createElement("path", {
+ className: "icon-play_svg__fill",
+ fill: "#000",
+ fillOpacity: 0.55,
+ d: "M38.91 29.987c1.009-.63 1.007-1.664.007-2.304l-17.29-11.055c-1.006-.643-1.809-.2-1.793 1.004l.277 21.891c.015 1.198.847 1.657 1.855 1.029L38.91 29.987z"
+}));
+
+function SvgIconPlay(props) {
+ return React__default.createElement("svg", _extends$I({
+ viewBox: "0 0 56 56"
+ }, props), _ref$I);
+}
+
+function _extends$J() { _extends$J = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$J.apply(this, arguments); }
+
+var _ref$J =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-plus_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M13 11h7c1.333 0 1.333 2 0 2h-7v7c0 1.333-2 1.333-2 0v-7H4c-1.333 0-1.333-2 0-2h7V4c0-1.333 2-1.333 2 0v7z"
+});
+
+function SvgIconPlus(props) {
+ return React__default.createElement("svg", _extends$J({
+ viewBox: "0 0 24 24"
+ }, props), _ref$J);
+}
+
+function _extends$K() { _extends$K = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$K.apply(this, arguments); }
+
+var _ref$K =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-read_svg__fill",
+ fill: "#2EBA9F",
+ fillRule: "evenodd",
+ d: "M2.207 11.793l5 5a1 1 0 01-1.414 1.414l-5-5a1 1 0 011.414-1.414zm19.586-6a1 1 0 011.414 1.414l-11 11a1 1 0 01-1.414 0l-5-5a1 1 0 011.414-1.414l4.293 4.293zm-3.586 0a1 1 0 010 1.414l-5.999 5.999a1 1 0 01-1.414-1.414l5.999-6a1 1 0 011.414 0z"
+});
+
+function SvgIconRead(props) {
+ return React__default.createElement("svg", _extends$K({
+ viewBox: "0 0 24 24"
+ }, props), _ref$K);
+}
+
+function _extends$L() { _extends$L = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$L.apply(this, arguments); }
+
+var _ref$L =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-refresh_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M14.419 4.51l.175.167 2.073 1.927V4.167c0-.428.321-.78.736-.828l.097-.006c.427 0 .78.322.828.736l.005.098v5c0 .427-.321.78-.736.827L17.5 10h-5a.833.833 0 01-.097-1.661l.097-.006h3.578L13.44 5.88a5.982 5.982 0 00-7.05-.986C4.083 6.15 2.898 8.756 3.48 11.286c.58 2.534 2.792 4.385 5.425 4.537 2.635.152 5.05-1.433 5.928-3.883a.833.833 0 011.569.561c-1.127 3.15-4.223 5.18-7.593 4.986-3.37-.195-6.206-2.57-6.954-5.828-.748-3.261.778-6.617 3.738-8.229 2.884-1.57 6.453-1.118 8.826 1.08z"
+});
+
+function SvgIconRefresh(props) {
+ return React__default.createElement("svg", _extends$L({
+ width: 20,
+ height: 20
+ }, props), _ref$L);
+}
+
+function _extends$M() { _extends$M = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$M.apply(this, arguments); }
+
+var _ref$M =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-send_svg__fill",
+ fillRule: "evenodd",
+ d: "M20.554 10.117L2.52 1.024C1.613.619.605 1.428 1.008 2.337l2.115 5.685a2 2 0 001.545 1.275l10.345 1.73-10.345 1.728a2 2 0 00-1.545 1.275l-2.115 5.685c-.302.91.605 1.718 1.511 1.213l18.035-9.094c.706-.303.706-1.313 0-1.717z"
+});
+
+function SvgIconSend(props) {
+ return React__default.createElement("svg", _extends$M({
+ viewBox: "0 0 22 22"
+ }, props), _ref$M);
+}
+
+function _extends$N() { _extends$N = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$N.apply(this, arguments); }
+
+var _ref$N =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-sent_svg__fill",
+ fillOpacity: 0.38,
+ fillRule: "evenodd",
+ d: "M4.707 11.793a1 1 0 10-1.414 1.414l5 5a1 1 0 001.414 0l11-11a1 1 0 10-1.414-1.414L9 16.086l-4.293-4.293z"
+});
+
+function SvgIconSent(props) {
+ return React__default.createElement("svg", _extends$N({
+ viewBox: "0 0 24 24"
+ }, props), _ref$N);
+}
+
+function _extends$O() { _extends$O = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$O.apply(this, arguments); }
+
+var _ref$O =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-shevron_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M8.293 17.293a1 1 0 001.414 1.414l6-6a1 1 0 000-1.414l-6-6a1 1 0 00-1.414 1.414L13.586 12l-5.293 5.293z"
+});
+
+function SvgIconShevron(props) {
+ return React__default.createElement("svg", _extends$O({
+ viewBox: "0 0 24 24"
+ }, props), _ref$O);
+}
+
+function _extends$P() { _extends$P = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$P.apply(this, arguments); }
+
+var _ref$P =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-shevron-down_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M6.045 8.205a1.125 1.125 0 10-1.59 1.59l6.75 6.75c.439.44 1.151.44 1.59 0l6.75-6.75a1.125 1.125 0 10-1.59-1.59L12 14.159 6.045 8.205z"
+});
+
+function SvgIconShevronDown(props) {
+ return React__default.createElement("svg", _extends$P({
+ viewBox: "0 0 24 24"
+ }, props), _ref$P);
+}
+
+function _extends$Q() { _extends$Q = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Q.apply(this, arguments); }
+
+var _ref$Q =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-spinner-small_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 22.5c5.799 0 10.5-4.701 10.5-10.5S17.799 1.5 12 1.5 1.5 6.201 1.5 12a1.432 1.432 0 002.864 0A7.636 7.636 0 1112 19.636a1.432 1.432 0 000 2.864z"
+});
+
+function SvgIconSpinnerSmall(props) {
+ return React__default.createElement("svg", _extends$Q({
+ viewBox: "0 0 24 24"
+ }, props), _ref$Q);
+}
+
+function _extends$R() { _extends$R = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$R.apply(this, arguments); }
+
+var _ref$R =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-spinner-large_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24a2.323 2.323 0 104.645 0C4.645 13.31 13.311 4.645 24 4.645c10.69 0 19.355 8.666 19.355 19.355 0 10.69-8.666 19.355-19.355 19.355A2.323 2.323 0 0024 48z"
+});
+
+function SvgIconSpinnerLarge(props) {
+ return React__default.createElement("svg", _extends$R({
+ viewBox: "0 0 48 48"
+ }, props), _ref$R);
+}
+
+function _extends$S() { _extends$S = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$S.apply(this, arguments); }
+
+var _ref$S =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-user_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M16 14a5 5 0 014.995 4.783L21 19v2a1 1 0 01-1.993.117L19 21v-2a3 3 0 00-2.824-2.995L16 16H8a3 3 0 00-2.995 2.824L5 19v2a1 1 0 01-1.993.117L3 21v-2a5 5 0 014.783-4.995L8 14h8zM12 2a5 5 0 110 10 5 5 0 010-10zm0 2a3 3 0 100 6 3 3 0 000-6z"
+});
+
+function SvgIconUser(props) {
+ return React__default.createElement("svg", _extends$S({
+ viewBox: "0 0 24 24"
+ }, props), _ref$S);
+}
+
+function _extends$T() { _extends$T = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$T.apply(this, arguments); }
+
+var _ref$T =
+/*#__PURE__*/
+React__default.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("path", {
+ className: "icon-operator_svg__stroke",
+ d: "M2 6l5 4 5-7 5 7 5-4-3 14H5z"
+}), React__default.createElement("circle", {
+ className: "icon-operator_svg__fill",
+ cx: 12,
+ cy: 14,
+ r: 2
+}));
+
+function SvgIconOperator(props) {
+ return React__default.createElement("svg", _extends$T({
+ viewBox: "0 0 24 24"
+ }, props), _ref$T);
+}
+
+function _extends$U() { _extends$U = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$U.apply(this, arguments); }
+
+var _ref$U =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-banned_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1zm0 2a9 9 0 10.001 18.001A9 9 0 0012 3zm4 8a1 1 0 010 2H8a1 1 0 010-2h8z"
+});
+
+function SvgIconBanned(props) {
+ return React__default.createElement("svg", _extends$U({
+ viewBox: "0 0 24 24"
+ }, props), _ref$U);
+}
+
+function _extends$V() { _extends$V = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$V.apply(this, arguments); }
+
+var _ref$V =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-muted_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M20.857 7.357l.026.045A9.96 9.96 0 0122 12a9.937 9.937 0 01-1.074 4.51c-.38 1.021-.463 1.817-.25 2.386.265.713.598 1.308.997 1.784.578.594.39 1.01-.565 1.249-.763.19-2.073 0-3.929-.571l-.333-.105-.598-.198A9.965 9.965 0 0112 22a9.952 9.952 0 01-4.622-1.13l-.022-.011 1.5-1.5c.982.42 2.046.641 3.144.641 1.073 0 2.114-.21 3.079-.613l.318-.142.722-.339 1.355.449.26.082c.228.07.445.133.65.19l.298.08.182.045-.063-.157-.075-.223c-.295-.974-.189-2.057.225-3.275l.1-.284.04-.107.198-.406A7.949 7.949 0 0020 12a7.97 7.97 0 00-.64-3.143l1.497-1.5zM12 2c2.401 0 4.604.846 6.328 2.257l1.965-1.964a1 1 0 011.497 1.32l-.083.094-18 18a1 1 0 01-1.497-1.32l.083-.094 1.963-1.965a9.956 9.956 0 01-2.25-5.998L2 12C2 6.477 6.477 2 12 2zm0 2a8 8 0 00-6.32 12.906L16.905 5.68a7.957 7.957 0 00-4.607-1.675L12 4z"
+});
+
+function SvgIconMuted(props) {
+ return React__default.createElement("svg", _extends$V({
+ viewBox: "0 0 24 24"
+ }, props), _ref$V);
+}
+
+function _extends$W() { _extends$W = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$W.apply(this, arguments); }
+
+var _ref$W =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-muted-foreground_svg__fill",
+ fill: "#FFF",
+ fillOpacity: 0.88,
+ fillRule: "evenodd",
+ d: "M13.904 4.904l.018.03c.476.919.745 1.96.745 3.066a6.628 6.628 0 01-.716 3.006c-.253.682-.309 1.212-.168 1.591.178.476.4.872.666 1.19.385.396.26.674-.377.832-.503.125-1.361.003-2.576-.367l-.266-.083-.398-.132c-.86.404-1.82.63-2.832.63a6.632 6.632 0 01-3.082-.754l-.014-.007 1-1c.655.28 1.364.427 2.096.427a5.32 5.32 0 001.999-.386l.266-.117.481-.226.903.299.174.055c.152.047.296.089.433.126l.199.054.121.03-.042-.105-.05-.149c-.192-.635-.129-1.34.133-2.132l.084-.24.026-.071.132-.271a5.294 5.294 0 00.474-2.2c0-.732-.147-1.44-.427-2.096l.998-1zm.567-3.375c.24.24.26.618.056.88l-.056.062-12 12a.666.666 0 01-.998-.88l.056-.062 1.31-1.31a6.636 6.636 0 01-1.5-3.94L1.333 8A6.667 6.667 0 0112.22 2.838l1.309-1.31c.26-.26.682-.26.942 0zM8 2.667a5.332 5.332 0 00-4.213 8.603l7.484-7.484a5.32 5.32 0 00-3.006-1.113L8 2.667z"
+});
+
+function SvgIconMutedForeground(props) {
+ return React__default.createElement("svg", _extends$W({
+ viewBox: "0 0 16 16"
+ }, props), _ref$W);
+}
+
+function _extends$X() { _extends$X = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$X.apply(this, arguments); }
+
+var _ref$X =
+/*#__PURE__*/
+React__default.createElement("path", {
+ className: "icon-freeze_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M9.613 1.21l.095.083L12 3.585l2.293-2.292a1 1 0 011.32-.083l.095.083a1 1 0 01.083 1.32l-.083.094L13 5.414v4.853l4.203-2.427.992-3.697a1 1 0 011.957.395l-.025.123-.84 3.131 3.133.84c.492.132.8.61.732 1.102l-.025.123c-.132.492-.61.8-1.102.732l-.123-.025-3.698-.991L14.001 12l4.203 2.426 3.698-.99.123-.025c.492-.068.97.24 1.102.732l.025.123a1 1 0 01-.732 1.102l-3.133.839.84 3.132.025.123a1 1 0 01-1.957.395l-.992-3.698L13 13.732v4.853l2.708 2.708a1 1 0 01-1.32 1.497l-.095-.083L12 20.414l-2.292 2.293a1 1 0 01-1.32.083l-.095-.083a1 1 0 01-.083-1.32l.083-.094L11 18.585v-4.853l-4.203 2.427-.99 3.698a1.002 1.002 0 01-1.958-.395l.025-.123.839-3.131-3.132-.84c-.492-.132-.8-.61-.732-1.102l.025-.123c.132-.492.61-.8 1.102-.732l.123.025 3.697.99 4.203-2.427-4.203-2.426-3.697.991-.123.025c-.492.068-.97-.24-1.102-.732L.85 9.734a1 1 0 01.732-1.102l3.132-.84-.839-3.131-.025-.123a1 1 0 011.957-.395l.991 3.697L11 10.267V5.414L8.293 2.707a1 1 0 011.32-1.497z"
+});
+
+function SvgIconFreeze(props) {
+ return React__default.createElement("svg", _extends$X({
+ viewBox: "0 0 24 24"
+ }, props), _ref$X);
+}
+
+function _extends$Y() { _extends$Y = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Y.apply(this, arguments); }
+
+var _ref$Y =
+/*#__PURE__*/
+React__default.createElement("g", {
+ className: "icon-toggleon_svg__fill",
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("rect", {
+ width: 40,
+ height: 20,
+ x: 2,
+ y: 2,
+ fill: "#7B53EF",
+ rx: 10
+}), React__default.createElement("circle", {
+ cx: 32,
+ cy: 12,
+ r: 6,
+ fill: "#FFF"
+}), React__default.createElement("path", {
+ fill: "#7B53EF",
+ d: "M32 0H12C5.373 0 0 5.373 0 12s5.373 12 12 12h20c6.627 0 12-5.373 12-12S38.627 0 32 0zm0 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20z"
+}));
+
+function SvgIconToggleon(props) {
+ return React__default.createElement("svg", _extends$Y({
+ viewBox: "0 0 44 24"
+ }, props), _ref$Y);
+}
+
+function _extends$Z() { _extends$Z = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Z.apply(this, arguments); }
+
+var _ref$Z =
+/*#__PURE__*/
+React__default.createElement("g", {
+ className: "icon-toggleoff_svg__fill",
+ fill: "none",
+ fillRule: "evenodd"
+}, React__default.createElement("rect", {
+ width: 40,
+ height: 20,
+ x: 2,
+ y: 2,
+ fill: "#A8A8A8",
+ rx: 10
+}), React__default.createElement("circle", {
+ cx: 12,
+ cy: 12,
+ r: 6,
+ fill: "#FFF"
+}), React__default.createElement("path", {
+ fill: "#A8A8A8",
+ d: "M32 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20zm0 1H12a9 9 0 00-.265 17.996L12 21h20a9 9 0 00.265-17.996L32 3z"
+}), React__default.createElement("path", {
+ fill: "#FFF",
+ d: "M32 0H12C5.373 0 0 5.373 0 12s5.373 12 12 12h20c6.627 0 12-5.373 12-12S38.627 0 32 0zm0 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20z"
+}));
+
+function SvgIconToggleoff(props) {
+ return React__default.createElement("svg", _extends$Z({
+ viewBox: "0 0 44 24"
+ }, props), _ref$Z);
+}
+
+var Colors = {
+ DEFAULT: 'DEFAULT',
+ PRIMARY: 'PRIMARY',
+ SECONDARY: 'SECONDARY',
+ CONTENT: 'CONTENT',
+ CONTENT_INVERSE: 'CONTENT_INVERSE',
+ WHITE: 'WHITE',
+ SENT: 'SENT',
+ READ: 'READ',
+ ON_BACKGROUND_2: 'ON_BACKGROUND_2',
+ ON_BACKGROUND_3: 'ON_BACKGROUND_3',
+ BACKGROUND_3: 'BACKGROUND_3'
+};
+
+function changeColorToClassName(color) {
+ switch (color) {
+ case Colors.PRIMARY:
+ return 'sendbird-color--primary';
+
+ case Colors.SECONDARY:
+ return 'sendbird-color--secondary';
+
+ case Colors.CONTENT:
+ return 'sendbird-color--content';
+
+ case Colors.CONTENT_INVERSE:
+ return 'sendbird-color--content-inverse';
+
+ case Colors.WHITE:
+ return 'sendbird-color--white';
+
+ case Colors.SENT:
+ return 'sendbird-color--sent';
+
+ case Colors.READ:
+ return 'sendbird-color--read';
+
+ case Colors.ON_BACKGROUND_2:
+ return 'sendbird-color--on-background-2';
+
+ case Colors.ON_BACKGROUND_3:
+ return 'sendbird-color--on-background-3';
+
+ case Colors.BACKGROUND_3:
+ return 'sendbird-color--background-3';
+
+ default:
+ return '';
+ }
+}
+
+function changeTypeToIconComponent(type) {
+ switch (type) {
+ case Type.ADD:
+ return React__default.createElement(SvgIconAdd, null);
+
+ case Type.ARROW_LEFT:
+ return React__default.createElement(SvgIconArrowLeft, null);
+
+ case Type.CAMERA:
+ return React__default.createElement(SvgIconCamera, null);
+
+ case Type.ATTACH:
+ return React__default.createElement(SvgIconAttach, null);
+
+ case Type.AVATAR_DARK:
+ return React__default.createElement(SvgIconAvatarDark, null);
+
+ case Type.AVATAR_LIGHT:
+ return React__default.createElement(SvgIconAvatarLight, null);
+
+ case Type.AVATAR_NO_IMAGE:
+ return React__default.createElement(SvgAvatarNoImageLight, null);
+
+ case Type.BROADCAST_LARGE_DARK:
+ return React__default.createElement(SvgIconBroadcastLrgDark, null);
+
+ case Type.BROADCAST_LARGE_LIGHT:
+ return React__default.createElement(SvgIconBroadcastLrgLight, null);
+
+ case Type.BROADCAST_DARK:
+ return React__default.createElement(SvgIconBroadcastDark, null);
+
+ case Type.BROADCAST_LIGHT:
+ return React__default.createElement(SvgIconBroadcastLight, null);
+
+ case Type.BROADCAST:
+ return React__default.createElement(SvgIconBroadcast, null);
+
+ case Type.FROZEN_DARK:
+ return React__default.createElement(SvgFrozenDark, null);
+
+ case Type.FROZEN_LIGHT:
+ return React__default.createElement(SvgFrozenLight, null);
+
+ case Type.MORE:
+ return React__default.createElement(SvgIconMore, null);
+
+ case Type.MUTE:
+ return React__default.createElement(SvgIconMute, null);
+
+ case Type.NO_THUMBNAIL:
+ return React__default.createElement(SvgIconNoThumbnail, null);
+
+ case Type.CHECKBOX:
+ return React__default.createElement(SvgIconCheckbox, null);
+
+ case Type.CHECKBOX_OFF:
+ return React__default.createElement(SvgIconCheckboxOff, null);
+
+ case Type.CLOSE:
+ return React__default.createElement(SvgIconClose, null);
+
+ case Type.COPY:
+ return React__default.createElement(SvgIconCopy, null);
+
+ case Type.CHAT:
+ return React__default.createElement(SvgIconChat, null);
+
+ case Type.SUPER_GROUP:
+ return React__default.createElement(SvgIconSupergroup, null);
+
+ case Type.CREATE:
+ return React__default.createElement(SvgIconCreate, null);
+
+ case Type.DELETE:
+ return React__default.createElement(SvgIconDelete, null);
+
+ case Type.DISCONNECTED:
+ return React__default.createElement(SvgIconDisconnected, null);
+
+ case Type.DUMMY:
+ return React__default.createElement(SvgIconDummy, null);
+
+ case Type.EDIT:
+ return React__default.createElement(SvgIconEdit, null);
+
+ case Type.ERROR:
+ return React__default.createElement(SvgIconError, null);
+
+ case Type.ERROR_FILLED:
+ return React__default.createElement(SvgIconErrorFilled, null);
+
+ case Type.EMOJI_FAILED:
+ return React__default.createElement(SvgEmojiFail, null);
+
+ case Type.EMOJI_REACTIONS_ADD:
+ return React__default.createElement(SvgIconReactionsAdd, null);
+
+ case Type.EMOJI_REACTIONS_ADD_GRAY:
+ return React__default.createElement(SvgIconEmojiReactionsAdd, null);
+
+ case Type.DELIVERED:
+ return React__default.createElement(SvgIconDelivered, null);
+
+ case Type.DOCUMENT:
+ return React__default.createElement(SvgIconDocument, null);
+
+ case Type.DOWNLOAD:
+ return React__default.createElement(SvgIconDownload, null);
+
+ case Type.FILE_AUDIO:
+ return React__default.createElement(SvgIconFileAudio, null);
+
+ case Type.FILE_DOCUMENT:
+ return React__default.createElement(SvgIconFileDocument, null);
+
+ case Type.GIF:
+ return React__default.createElement(SvgIconGif, null);
+
+ case Type.INFO:
+ return React__default.createElement(SvgIconInfo, null);
+
+ case Type.LEAVE:
+ return React__default.createElement(SvgIconLeave, null);
+
+ case Type.MEMBERS:
+ return React__default.createElement(SvgIconMembers, null);
+
+ case Type.NOTIFICATIONS:
+ return React__default.createElement(SvgIconNotifications, null);
+
+ case Type.PHOTO:
+ return React__default.createElement(SvgIconPhoto, null);
+
+ case Type.PLAY:
+ return React__default.createElement(SvgIconPlay, null);
+
+ case Type.PLUS:
+ return React__default.createElement(SvgIconPlus, null);
+
+ case Type.READ:
+ return React__default.createElement(SvgIconRead, null);
+
+ case Type.REFRESH:
+ return React__default.createElement(SvgIconRefresh, null);
+
+ case Type.SEND:
+ return React__default.createElement(SvgIconSend, null);
+
+ case Type.SENT:
+ return React__default.createElement(SvgIconSent, null);
+
+ case Type.SHEVRON:
+ return React__default.createElement(SvgIconShevron, null);
+
+ case Type.SHEVRON_DOWN:
+ return React__default.createElement(SvgIconShevronDown, null);
+
+ case Type.SPINNER:
+ return React__default.createElement(SvgIconSpinnerSmall, null);
+
+ case Type.SPINNER_LARGE:
+ return React__default.createElement(SvgIconSpinnerLarge, null);
+
+ case Type.USER:
+ return React__default.createElement(SvgIconUser, null);
+
+ case Type.ICON_OPERATOR:
+ return React__default.createElement(SvgIconOperator, null);
+
+ case Type.ICON_BANNED:
+ return React__default.createElement(SvgIconBanned, null);
+
+ case Type.ICON_MUTED:
+ return React__default.createElement(SvgIconMuted, null);
+
+ case Type.ICON_MUTED_FG:
+ return React__default.createElement(SvgIconMutedForeground, null);
+
+ case Type.ICON_FREEZE:
+ return React__default.createElement(SvgIconFreeze, null);
+
+ case Type.TOGGLE_ON:
+ return React__default.createElement(SvgIconToggleon, null);
+
+ case Type.TOGGLE_OFF:
+ return React__default.createElement(SvgIconToggleoff, null);
+
+ default:
+ return null;
+ }
+}
+
+function Icon(_ref) {
+ var type = _ref.type,
+ width = _ref.width,
+ height = _ref.height,
+ children = _ref.children,
+ className = _ref.className,
+ onClick = _ref.onClick,
+ fillColor = _ref.fillColor;
+ var iconStyle = {
+ width: typeof width === 'string' ? width : "".concat(width, "px"),
+ minWidth: typeof width === 'string' ? width : "".concat(width, "px"),
+ height: typeof height === 'string' ? height : "".concat(height, "px"),
+ minHeight: typeof height === 'string' ? height : "".concat(height, "px")
+ };
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React__default.createElement("div", {
+ onClick: onClick,
+ onKeyDown: onClick,
+ role: "button",
+ tabIndex: "0",
+ className: [].concat(LocalizationContext._toConsumableArray(injectingClassName), ['sendbird-icon', changeColorToClassName(fillColor)]).join(' '),
+ style: iconStyle
+ }, children || changeTypeToIconComponent(type));
+}
+Icon.propTypes = {
+ type: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(Type)), PropTypes.string]).isRequired,
+ width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ onClick: PropTypes.func,
+ children: PropTypes.element,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ fillColor: PropTypes.oneOf(Object.keys(Colors))
+};
+Icon.defaultProps = {
+ onClick: function onClick() {},
+ width: 26,
+ height: 26,
+ children: null,
+ className: '',
+ fillColor: Colors.DEFAULT
+};
+var IconTypes = Type;
+var IconColors = Colors;
+
+var imageRendererClassName = 'sendbird-avatar-img';
+
+var defaultComponent = function defaultComponent(_a) {
+ var width = _a.width,
+ height = _a.height;
+ return function () {
+ return document.querySelector('.sendbird-theme--dark') ? React__default.createElement(Icon, {
+ className: imageRendererClassName,
+ type: IconTypes.AVATAR_DARK,
+ width: width,
+ height: height
+ }) : React__default.createElement(Icon, {
+ className: imageRendererClassName,
+ type: IconTypes.AVATAR_LIGHT,
+ width: width,
+ height: height
+ });
+ };
+};
+
+var AvatarInner = function AvatarInner(_a) {
+ var _b = _a.src,
+ src = _b === void 0 ? '' : _b,
+ _c = _a.alt,
+ alt = _c === void 0 ? '' : _c,
+ height = _a.height,
+ width = _a.width;
+
+ if (typeof src === 'string') {
+ return React__default.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src,
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ });
+ }
+
+ if (src && src.length) {
+ if (src.length === 1) {
+ return React__default.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[0],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ });
+ }
+
+ if (src.length === 2) {
+ return React__default.createElement("div", {
+ className: "sendbird-avatar--inner__two-child"
+ }, React__default.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[0],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ }), React__default.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[1],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ }));
+ }
+
+ if (src.length === 3) {
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
+ className: "sendbird-avatar--inner__three-child--upper"
+ }, React__default.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[0],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ })), React__default.createElement("div", {
+ className: "sendbird-avatar--inner__three-child--lower"
+ }, React__default.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[1],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ }), React__default.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[2],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ })));
+ }
+
+ return React__default.createElement("div", {
+ className: "sendbird-avatar--inner__four-child"
+ }, src.slice(0, 4).map(function (i) {
+ return React__default.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: i,
+ height: height,
+ width: width,
+ alt: alt,
+ key: LocalizationContext.uuidv4(),
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ });
+ }));
+ } // default img
+
+
+ return React__default.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: "",
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ });
+};
+
+function Avatar(_a, ref) {
+ var _b = _a.src,
+ src = _b === void 0 ? '' : _b,
+ _c = _a.alt,
+ alt = _c === void 0 ? '' : _c,
+ _d = _a.width,
+ width = _d === void 0 ? '56px' : _d,
+ _e = _a.height,
+ height = _e === void 0 ? '56px' : _e,
+ onClick = _a.onClick,
+ _f = _a.className,
+ className = _f === void 0 ? '' : _f;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React__default.createElement("div", {
+ className: LocalizationContext.__spreadArrays(injectingClassName, ['sendbird-avatar']).join(' '),
+ ref: ref,
+ style: {
+ height: height,
+ width: width
+ },
+ onClick: onClick,
+ role: "button",
+ tabIndex: 0,
+ onKeyDown: onClick
+ }, React__default.createElement(AvatarInner, {
+ src: src,
+ height: height,
+ width: width,
+ alt: alt
+ }));
+}
+
+var Avatar$1 = React__default.forwardRef(Avatar);
+
+var Typography = {
+ H_1: 'H_1',
+ H_2: 'H_2',
+ SUBTITLE_1: 'SUBTITLE_1',
+ SUBTITLE_2: 'SUBTITLE_2',
+ BODY_1: 'BODY_1',
+ BODY_2: 'BODY_2',
+ BUTTON_1: 'BUTTON_1',
+ BUTTON_2: 'BUTTON_2',
+ CAPTION_1: 'CAPTION_1',
+ CAPTION_2: 'CAPTION_2',
+ CAPTION_3: 'CAPTION_3'
+};
+var Colors$1 = {
+ ONBACKGROUND_1: 'ONBACKGROUND_1',
+ ONBACKGROUND_2: 'ONBACKGROUND_2',
+ ONBACKGROUND_3: 'ONBACKGROUND_3',
+ ONCONTENT_1: 'ONCONTENT_1',
+ ONCONTENT_2: 'ONCONTENT_2',
+ PRIMARY: 'PRIMARY',
+ ERROR: 'ERROR',
+ SECONDARY_3: 'SECONDARY_3'
+};
+
+function changeTypographyToClassName(type) {
+ switch (type) {
+ case Typography.H_1:
+ return 'sendbird-label--h-1';
+
+ case Typography.H_2:
+ return 'sendbird-label--h-2';
+
+ case Typography.SUBTITLE_1:
+ return 'sendbird-label--subtitle-1';
+
+ case Typography.SUBTITLE_2:
+ return 'sendbird-label--subtitle-2';
+
+ case Typography.BODY_1:
+ return 'sendbird-label--body-1';
+
+ case Typography.BODY_2:
+ return 'sendbird-label--body-2';
+
+ case Typography.BUTTON_1:
+ return 'sendbird-label--button-1';
+
+ case Typography.BUTTON_2:
+ return 'sendbird-label--button-2';
+
+ case Typography.CAPTION_1:
+ return 'sendbird-label--caption-1';
+
+ case Typography.CAPTION_2:
+ return 'sendbird-label--caption-2';
+
+ case Typography.CAPTION_3:
+ return 'sendbird-label--caption-3';
+
+ default:
+ return null;
+ }
+}
+function changeColorToClassName$1(color) {
+ switch (color) {
+ case Colors$1.ONBACKGROUND_1:
+ return 'sendbird-label--color-onbackground-1';
+
+ case Colors$1.ONBACKGROUND_2:
+ return 'sendbird-label--color-onbackground-2';
+
+ case Colors$1.ONBACKGROUND_3:
+ return 'sendbird-label--color-onbackground-3';
+
+ case Colors$1.ONCONTENT_1:
+ return 'sendbird-label--color-oncontent-1';
+
+ case Colors$1.ONCONTENT_2:
+ return 'sendbird-label--color-oncontent-2';
+
+ case Colors$1.PRIMARY:
+ return 'sendbird-label--color-primary';
+ // should be Primary-3 fix me
+
+ case Colors$1.ERROR:
+ return 'sendbird-label--color-error';
+
+ case Colors$1.SECONDARY_3:
+ return 'sendbird-label--color-secondary-3';
+
+ default:
+ return null;
+ }
+}
+
+var CLASS_NAME = 'sendbird-label';
+function Label(_ref) {
+ var type = _ref.type,
+ color = _ref.color,
+ children = _ref.children,
+ className = _ref.className;
+ var injectingClassName = Array.isArray(className) ? [CLASS_NAME].concat(LocalizationContext._toConsumableArray(className)) : [CLASS_NAME, className];
+
+ if (type) {
+ injectingClassName.push(changeTypographyToClassName(type));
+ }
+
+ if (color) {
+ injectingClassName.push(changeColorToClassName$1(color));
+ }
+
+ return React__default.createElement("span", {
+ className: injectingClassName.join(' ')
+ }, children);
+}
+Label.propTypes = {
+ type: PropTypes.oneOf([].concat(LocalizationContext._toConsumableArray(Object.keys(Typography)), [''])),
+ color: PropTypes.oneOf([].concat(LocalizationContext._toConsumableArray(Object.keys(Colors$1)), [''])),
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.element, PropTypes.any]),
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+Label.defaultProps = {
+ type: '',
+ color: '',
+ className: [],
+ children: null
+};
+var LabelTypography = Typography;
+var LabelColors = Colors$1;
+var LabelStringSet = LocalizationContext.getStringSet('en');
+
+var CLASS_NAME$1 = 'sendbird-iconbutton';
+var IconButton = React__default.forwardRef(function (props, ref) {
+ var children = props.children,
+ className = props.className,
+ _props$disabled = props.disabled,
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
+ type = props.type,
+ height = props.height,
+ width = props.width,
+ _onClick = props.onClick,
+ _onBlur = props.onBlur,
+ style = props.style;
+
+ var _useState = React.useState(''),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ pressed = _useState2[0],
+ setPressed = _useState2[1];
+
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift(CLASS_NAME$1);
+ return (// eslint-disable-next-line react/button-has-type
+ React__default.createElement("button", {
+ className: "".concat(injectingClassName.join(' '), " ").concat(pressed),
+ disabled: disabled,
+ ref: ref,
+ type: type,
+ style: LocalizationContext._objectSpread2({}, style, {
+ height: height,
+ width: width
+ }),
+ onClick: function onClick(e) {
+ if (disabled) {
+ return;
+ }
+
+ setPressed('sendbird-iconbutton--pressed');
+
+ _onClick(e);
+ },
+ onBlur: function onBlur(e) {
+ setPressed('');
+
+ _onBlur(e);
+ }
+ }, React__default.createElement("span", {
+ className: "sendbird-iconbutton__inner"
+ }, children))
+ );
+});
+IconButton.propTypes = {
+ height: PropTypes.string,
+ width: PropTypes.string,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
+ type: PropTypes.string,
+ disabled: PropTypes.bool,
+ onClick: PropTypes.func,
+ onBlur: PropTypes.func,
+ style: PropTypes.shape({})
+};
+IconButton.defaultProps = {
+ height: '56px',
+ width: '56px',
+ className: '',
+ type: 'button',
+ disabled: false,
+ onClick: function onClick() {},
+ onBlur: function onBlur() {},
+ style: {}
+};
+
+// simple component to be used as modal root
+var MODAL_ROOT = 'sendbird-modal-root';
+
+var Type$1 = {
+ PRIMARY: 'PRIMARY',
+ SECONDARY: 'SECONDARY',
+ DANGER: 'DANGER',
+ DISABLED: 'DISABLED'
+};
+var Size = {
+ BIG: 'BIG',
+ SMALL: 'SMALL'
+};
+
+function changeTypeToClassName(type) {
+ switch (type) {
+ case Type$1.PRIMARY:
+ return 'sendbird-button--primary';
+
+ case Type$1.SECONDARY:
+ return 'sendbird-button--secondary';
+
+ case Type$1.DANGER:
+ return 'sendbird-button--danger';
+
+ case Type$1.DISABLED:
+ return 'sendbird-button--disabled';
+
+ default:
+ return null;
+ }
+}
+function changeSizeToClassName(size) {
+ switch (size) {
+ case Size.BIG:
+ return 'sendbird-button--big';
+
+ case Size.SMALL:
+ return 'sendbird-button--small';
+
+ default:
+ return null;
+ }
+}
+
+function Button(_ref) {
+ var type = _ref.type,
+ size = _ref.size,
+ children = _ref.children,
+ disabled = _ref.disabled,
+ onClick = _ref.onClick,
+ className = _ref.className;
+ var injectingClassNames = ['sendbird-button', disabled ? 'sendbird-button__disabled' : '', changeTypeToClassName(type), changeSizeToClassName(size)].concat(LocalizationContext._toConsumableArray(Array.isArray(className) ? className : [className])).join(' ');
+ return React__default.createElement("button", {
+ type: "button",
+ className: injectingClassNames,
+ onClick: onClick,
+ disabled: disabled
+ }, React__default.createElement(Label, {
+ className: "sendbird-button__text",
+ type: LabelTypography.BUTTON_1,
+ color: LabelColors.ONCONTENT_1
+ }, children));
+}
+Button.propTypes = {
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),
+ disabled: PropTypes.bool,
+ type: PropTypes.oneOf(Object.keys(Type$1)),
+ size: PropTypes.oneOf(Object.keys(Size)),
+ onClick: PropTypes.func,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+Button.defaultProps = {
+ children: 'Button',
+ type: Type$1.PRIMARY,
+ disabled: false,
+ size: Size.BIG,
+ onClick: function onClick() {},
+ className: ''
+};
+
+var ModalHeader = function ModalHeader(_ref) {
+ var titleText = _ref.titleText;
+ return React__default.createElement("div", {
+ className: "sendbird-modal-header"
+ }, React__default.createElement(Label, {
+ type: LabelTypography.H_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, titleText));
+};
+ModalHeader.propTypes = {
+ titleText: PropTypes.string.isRequired
+};
+var ModalBody = function ModalBody(_ref2) {
+ var children = _ref2.children;
+ return React__default.createElement("div", {
+ className: "sendbird-modal-body"
+ }, children);
+};
+ModalBody.propTypes = {
+ children: PropTypes.oneOfType([PropTypes.element.isRequired, PropTypes.arrayOf(PropTypes.element.isRequired)])
+};
+ModalBody.defaultProps = {
+ children: null
+};
+var ModalFooter = function ModalFooter(_ref3) {
+ var onSubmit = _ref3.onSubmit,
+ onCancel = _ref3.onCancel,
+ _ref3$disabled = _ref3.disabled,
+ disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
+ submitText = _ref3.submitText,
+ type = _ref3.type;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React__default.createElement("div", {
+ className: "sendbird-modal-footer"
+ }, React__default.createElement(Button, {
+ type: Type$1.SECONDARY,
+ onClick: onCancel
+ }, React__default.createElement(Label, {
+ type: LabelTypography.BUTTON_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.BUTTON__CANCEL)), React__default.createElement(Button, {
+ type: type,
+ disabled: disabled,
+ onClick: onSubmit
+ }, submitText));
+};
+ModalFooter.propTypes = {
+ onCancel: PropTypes.func.isRequired,
+ onSubmit: PropTypes.func.isRequired,
+ submitText: PropTypes.string.isRequired,
+ disabled: PropTypes.bool,
+ type: PropTypes.string
+};
+ModalFooter.defaultProps = {
+ disabled: false,
+ type: Type$1.DANGER
+};
+
+function Modal(props) {
+ var children = props.children,
+ onCancel = props.onCancel,
+ onSubmit = props.onSubmit,
+ disabled = props.disabled,
+ submitText = props.submitText,
+ titleText = props.titleText,
+ hideFooter = props.hideFooter,
+ type = props.type;
+ return reactDom.createPortal(React__default.createElement("div", {
+ className: "sendbird-modal"
+ }, React__default.createElement("div", {
+ className: "sendbird-modal-content"
+ }, React__default.createElement(ModalHeader, {
+ titleText: titleText
+ }), React__default.createElement(ModalBody, null, children), !hideFooter && React__default.createElement(ModalFooter, {
+ disabled: disabled,
+ onCancel: onCancel,
+ onSubmit: onSubmit,
+ submitText: submitText,
+ type: type
+ }), React__default.createElement("div", {
+ className: "sendbird-modal-close"
+ }, React__default.createElement(IconButton, {
+ width: "32px",
+ height: "32px",
+ onClick: onCancel
+ }, React__default.createElement(Icon, {
+ type: IconTypes.CLOSE,
+ fillColor: IconColors.SECONDARY,
+ width: "24px",
+ height: "24px"
+ })))), React__default.createElement("div", {
+ className: "sendbird-modal-backdrop"
+ })), document.getElementById(MODAL_ROOT));
+}
+
+Modal.propTypes = {
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),
+ onCancel: PropTypes.func.isRequired,
+ onSubmit: PropTypes.func.isRequired,
+ hideFooter: PropTypes.bool,
+ disabled: PropTypes.bool,
+ type: PropTypes.string
+};
+Modal.defaultProps = {
+ children: null,
+ hideFooter: false,
+ disabled: false,
+ type: Type$1.DANGER
+};
+
+var Colors$2 = {
+ ONBACKGROUND_1: 'ONBACKGROUND_1',
+ ONBACKGROUND_2: 'ONBACKGROUND_2',
+ ONBACKGROUND_3: 'ONBACKGROUND_3',
+ ONBACKGROUND_4: 'ONBACKGROUND_4',
+ ONCONTENT_1: 'ONCONTENT_1',
+ PRIMARY: 'PRIMARY',
+ ERROR: 'ERROR'
+};
+function changeColorToClassName$2(color) {
+ switch (color) {
+ case Colors$2.ONBACKGROUND_1:
+ return 'sendbird-color--onbackground-1';
+
+ case Colors$2.ONBACKGROUND_2:
+ return 'sendbird-color--onbackground-2';
+
+ case Colors$2.ONBACKGROUND_3:
+ return 'sendbird-color--onbackground-3';
+
+ case Colors$2.ONBACKGROUND_4:
+ return 'sendbird-color--onbackground-4';
+
+ case Colors$2.ONCONTENT_1:
+ return 'sendbird-color--oncontent-1';
+
+ case Colors$2.PRIMARY:
+ return 'sendbird-color--primary';
+
+ case Colors$2.ERROR:
+ return 'sendbird-color--error';
+
+ default:
+ return null;
+ }
+}
+
+function TextButton(_ref) {
+ var color = _ref.color,
+ children = _ref.children,
+ disabled = _ref.disabled,
+ className = _ref.className,
+ onClick = _ref.onClick,
+ notUnderline = _ref.notUnderline;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React__default.createElement("div", {
+ role: "button",
+ tabIndex: 0,
+ className: [].concat(LocalizationContext._toConsumableArray(injectingClassName), [changeColorToClassName$2(color), notUnderline ? 'sendbird-textbutton--not-underline' : 'sendbird-textbutton', disabled ? 'sendbird-textbutton--disabled' : '']).join(' '),
+ onClick: onClick,
+ onKeyPress: onClick
+ }, children);
+}
+TextButton.propTypes = {
+ color: PropTypes.string,
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ onClick: PropTypes.func,
+ notUnderline: PropTypes.bool,
+ disabled: PropTypes.bool
+};
+TextButton.defaultProps = {
+ color: Colors$2.ONBACKGROUND_1,
+ className: '',
+ onClick: function onClick() {},
+ notUnderline: false,
+ disabled: false
+};
+
+function Types() {
+ return {
+ LOADING: 'LOADING',
+ NO_CHANNELS: 'NO_CHANNELS',
+ WRONG: 'WRONG'
+ };
+}
+var PlaceHolderTypes = Types();
+
+var SEND_MESSAGE_START = 'SEND_MESSAGE_START';
+var SEND_USER_MESSAGE = 'SEND_USER_MESSAGE';
+var SEND_FILE_MESSAGE = 'SEND_FILE_MESSAGE';
+var UPDATE_USER_MESSAGE = 'UPDATE_USER_MESSAGE';
+var DELETE_MESSAGE = 'DELETE_MESSAGE';
+var LEAVE_CHANNEL = 'LEAVE_CHANNEL';
+var CREATE_CHANNEL = 'CREATE_CHANNEL';
+
+var getSdk = function getSdk(store) {
+ var _store$stores = store.stores,
+ stores = _store$stores === void 0 ? {} : _store$stores;
+ var _stores$sdkStore = stores.sdkStore,
+ sdkStore = _stores$sdkStore === void 0 ? {} : _stores$sdkStore;
+ var sdk = sdkStore.sdk;
+ return sdk;
+};
+var getPubSub = function getPubSub(store) {
+ var _store$config = store.config,
+ config = _store$config === void 0 ? {} : _store$config;
+ var pubSub = config.pubSub;
+ return pubSub;
+}; // SendBird disconnect. Invalidates currentUser
+// eslint-disable-next-line max-len
+
+var getConnect = function getConnect(store) {
+ return function (userId, accessToken) {
+ return new Promise(function (resolve, reject) {
+ var sdk = getSdk(store);
+
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ if (!accessToken) {
+ sdk.connect(userId).then(function (res) {
+ return resolve(res);
+ }).catch(function (err) {
+ return reject(err);
+ });
+ } else {
+ sdk.connect(userId, accessToken).then(function (res) {
+ return resolve(res);
+ }).catch(function (err) {
+ return reject(err);
+ });
+ }
+ });
+ };
+}; // SendBird disconnect. Invalidates currentUser
+
+var getDisconnect = function getDisconnect(store) {
+ return function () {
+ return new Promise(function (resolve, reject) {
+ var sdk = getSdk(store);
+
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.disconnect().then(function (res) {
+ return resolve(res);
+ }).catch(function (err) {
+ return reject(err);
+ });
+ });
+ };
+}; // Using the updateCurrentUserInfo() method
+// you can update a user's nickname and profile image with a URL
+// eslint-disable-next-line max-len
+
+var getUpdateUserInfo = function getUpdateUserInfo(store) {
+ return function (nickName, profileUrl) {
+ return new Promise(function (resolve, reject) {
+ var sdk = getSdk(store);
+
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.updateCurrentUserInfo(nickName, profileUrl).then(function (res) {
+ return resolve(res);
+ }).catch(function (err) {
+ return reject(err);
+ });
+ });
+ };
+};
+var getSendUserMessage = function getSendUserMessage(store) {
+ return function (channelUrl, userMessageParams) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ var promisify = function promisify() {
+ var pendingMsg = null;
+ var pendingPromise = new Promise(function (resolve_, reject_) {
+ pendingMsg = channel.sendUserMessage(userMessageParams, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject_(error);
+ return;
+ }
+
+ resolve_(message);
+ pubsub.publish(SEND_USER_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ });
+ pubsub.publish(SEND_MESSAGE_START, {
+ message: pendingMsg,
+ channel: channel
+ });
+ });
+
+ pendingPromise.get = function () {
+ return pendingMsg;
+ };
+
+ return pendingPromise;
+ };
+
+ resolve(promisify());
+ }).catch(reject);
+ });
+ };
+};
+var getSendFileMessage = function getSendFileMessage(store) {
+ return function (channelUrl, fileMessageParams) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ var promisify = function promisify() {
+ var pendingMsg = null;
+ var pendingPromise = new Promise(function (resolve_, reject_) {
+ pendingMsg = channel.sendFileMessage(fileMessageParams, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject_(error);
+ return;
+ }
+
+ resolve_(message);
+ pubsub.publish(SEND_FILE_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ });
+ });
+
+ if (fileMessageParams.file) {
+ // keep the file's local version in pendingMsg.localUrl
+ // because promise doesnt allow overriding of pendingMsg.url
+ // eslint-disable-next-line no-param-reassign
+ pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);
+ }
+
+ if (fileMessageParams.fileUrl) {
+ // eslint-disable-next-line no-param-reassign
+ pendingMsg.localUrl = fileMessageParams.fileUrl;
+ } // eslint-disable-next-line no-param-reassign
+
+
+ pendingMsg.requestState = 'pending';
+ pubsub.publish(SEND_MESSAGE_START, {
+ message: pendingMsg,
+ channel: channel
+ });
+
+ pendingPromise.get = function () {
+ return pendingMsg;
+ };
+
+ return pendingPromise;
+ };
+
+ resolve(promisify());
+ }).catch(reject);
+ });
+ };
+};
+var getUpdateUserMessage = function getUpdateUserMessage(store) {
+ return function (channelUrl, messageId, params) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.updateUserMessage(messageId, params, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject(error);
+ return;
+ }
+
+ resolve(message);
+ pubsub.publish(UPDATE_USER_MESSAGE, {
+ message: message,
+ channel: channel,
+ // workaround for updating channelPreview on message-edit
+ // https://sendbird.atlassian.net/browse/UIKIT-268
+ fromSelector: true
+ });
+ });
+ }).catch(reject);
+ });
+ };
+};
+var getDeleteMessage = function getDeleteMessage(store) {
+ return function (channelUrl, message) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ var messageId = message.messageId;
+ channel.deleteMessage(message, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var error = err;
+
+ if (swapParams) {
+ error = res;
+ }
+
+ if (error) {
+ reject(error);
+ return;
+ }
+
+ resolve(message);
+ pubsub.publish(DELETE_MESSAGE, {
+ messageId: messageId,
+ channel: channel
+ });
+ });
+ }).catch(reject);
+ });
+ };
+};
+var getResendUserMessage = function getResendUserMessage(store) {
+ return function (channelUrl, failedMessage) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.resendUserMessage(failedMessage).then(function (message) {
+ resolve(message);
+ pubsub.publish(SEND_USER_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+var getResendFileMessage = function getResendFileMessage(store) {
+ return function (channelUrl, failedMessage) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.resendFileMessage(failedMessage).then(function (message) {
+ resolve(message);
+ pubsub.publish(SEND_FILE_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+var getCreateChannel = function getCreateChannel(store) {
+ return function (params) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.createChannel(params).then(function (channel) {
+ resolve(channel);
+ pubsub.publish(CREATE_CHANNEL, {
+ channel: channel
+ });
+ }).catch(reject);
+ });
+ };
+};
+var getLeaveChannel = function getLeaveChannel(store) {
+ return function (channelUrl) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.leave().then(function () {
+ resolve(channel);
+ pubsub.publish(LEAVE_CHANNEL, {
+ channel: channel
+ });
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+var getFreezeChannel = function getFreezeChannel(store) {
+ return function (channelUrl) {
+ var sdk = getSdk(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.freeze().then(function () {
+ // do not need pubsub here - event listener works
+ resolve(channel);
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+var getUnFreezeChannel = function getUnFreezeChannel(store) {
+ return function (channelUrl) {
+ var sdk = getSdk(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.unfreeze().then(function () {
+ // do not need pubsub here - event listener works
+ resolve(channel);
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+
+var getCreateOpenChannel = function getCreateOpenChannel(store) {
+ return function (params) {
+ var sdk = getSdk(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.createChannel(params).then(function (channel) {
+ resolve(channel);
+ }).catch(reject);
+ });
+ };
+};
+
+var enterOpenChannel = function enterOpenChannel(store) {
+ return function (channelUrl) {
+ var sdk = getSdk(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl, function (openChannel, error) {
+ if (error) {
+ reject(new Error(error));
+ return;
+ }
+
+ openChannel.enter(function (response, enterError) {
+ if (error) {
+ reject(new Error(enterError));
+ return;
+ }
+
+ resolve(response);
+ });
+ });
+ });
+ };
+};
+
+var exitOpenChannel = function exitOpenChannel(store) {
+ return function (channelUrl) {
+ var sdk = getSdk(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl, function (openChannel, error) {
+ if (error) {
+ reject(new Error(error));
+ return;
+ }
+
+ openChannel.exit(function (response, exitError) {
+ if (error) {
+ reject(new Error(exitError));
+ return;
+ }
+
+ resolve(response);
+ });
+ });
+ });
+ };
+};
+
+var getOpenChannelSendUserMessage = function getOpenChannelSendUserMessage(store) {
+ return function (channelUrl, userMessageParams) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl).then(function (channel) {
+ var promisify = function promisify() {
+ var pendingMsg = null;
+ var pendingPromise = new Promise(function (resolve_, reject_) {
+ pendingMsg = channel.sendUserMessage(userMessageParams, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject_(error);
+ return;
+ }
+
+ resolve_(message);
+ pubsub.publish(SEND_USER_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ });
+ pubsub.publish(SEND_MESSAGE_START, {
+ message: pendingMsg,
+ channel: channel
+ });
+ });
+
+ pendingPromise.get = function () {
+ return pendingMsg;
+ };
+
+ return pendingPromise;
+ };
+
+ resolve(promisify());
+ }).catch(reject);
+ });
+ };
+};
+
+var getOpenChannelSendFileMessage = function getOpenChannelSendFileMessage(store) {
+ return function (channelUrl, fileMessageParams) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl).then(function (channel) {
+ var promisify = function promisify() {
+ var pendingMsg = null;
+ var pendingPromise = new Promise(function (resolve_, reject_) {
+ pendingMsg = channel.sendFileMessage(fileMessageParams, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject_(error);
+ return;
+ }
+
+ resolve_(message);
+ pubsub.publish(SEND_FILE_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ });
+ });
+
+ if (fileMessageParams.file) {
+ // keep the file's local version in pendingMsg.localUrl
+ // because promise doesnt allow overriding of pendingMsg.url
+ // eslint-disable-next-line no-param-reassign
+ pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);
+ }
+
+ if (fileMessageParams.fileUrl) {
+ // eslint-disable-next-line no-param-reassign
+ pendingMsg.localUrl = fileMessageParams.fileUrl;
+ } // eslint-disable-next-line no-param-reassign
+
+
+ pendingMsg.requestState = 'pending';
+ pubsub.publish(SEND_MESSAGE_START, {
+ message: pendingMsg,
+ channel: channel
+ });
+
+ pendingPromise.get = function () {
+ return pendingMsg;
+ };
+
+ return pendingPromise;
+ };
+
+ resolve(promisify());
+ }).catch(reject);
+ });
+ };
+};
+
+var getOpenChannelUpdateUserMessage = function getOpenChannelUpdateUserMessage(store) {
+ return function (channelUrl, messageId, params) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl).then(function (channel) {
+ channel.updateUserMessage(messageId, params, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject(error);
+ return;
+ }
+
+ resolve(message);
+ pubsub.publish(UPDATE_USER_MESSAGE, {
+ message: message,
+ channel: channel,
+ // workaround for updating channelPreview on message-edit
+ // https://sendbird.atlassian.net/browse/UIKIT-268
+ fromSelector: true
+ });
+ });
+ }).catch(reject);
+ });
+ };
+};
+
+var getOpenChannelDeleteMessage = function getOpenChannelDeleteMessage(store) {
+ return function (channelUrl, message) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ var messageId = message.messageId;
+ channel.deleteMessage(message, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var error = err;
+
+ if (swapParams) {
+ error = res;
+ }
+
+ if (error) {
+ reject(error);
+ return;
+ }
+
+ resolve(message);
+ pubsub.publish(DELETE_MESSAGE, {
+ messageId: messageId,
+ channel: channel
+ });
+ });
+ }).catch(reject);
+ });
+ };
+};
+
+var getOpenChannelResendUserMessage = function getOpenChannelResendUserMessage(store) {
+ return function (channelUrl, failedMessage) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl).then(function (channel) {
+ channel.resendUserMessage(failedMessage).then(function (message) {
+ resolve(message);
+ pubsub.publish(SEND_USER_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+
+var getOpenChannelResendFileMessage = function getOpenChannelResendFileMessage(store) {
+ return function (channelUrl, failedMessage) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl).then(function (channel) {
+ channel.resendFileMessage(failedMessage).then(function (message) {
+ resolve(message);
+ pubsub.publish(SEND_FILE_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+
+var selectors = {
+ getSdk: getSdk,
+ getConnect: getConnect,
+ getDisconnect: getDisconnect,
+ getUpdateUserInfo: getUpdateUserInfo,
+ getSendUserMessage: getSendUserMessage,
+ getSendFileMessage: getSendFileMessage,
+ getUpdateUserMessage: getUpdateUserMessage,
+ getDeleteMessage: getDeleteMessage,
+ getResendUserMessage: getResendUserMessage,
+ getResendFileMessage: getResendFileMessage,
+ getFreezeChannel: getFreezeChannel,
+ getUnFreezeChannel: getUnFreezeChannel,
+ getCreateChannel: getCreateChannel,
+ getLeaveChannel: getLeaveChannel,
+ getCreateOpenChannel: getCreateOpenChannel,
+ enterOpenChannel: enterOpenChannel,
+ exitOpenChannel: exitOpenChannel,
+ getOpenChannelSendUserMessage: getOpenChannelSendUserMessage,
+ getOpenChannelSendFileMessage: getOpenChannelSendFileMessage,
+ getOpenChannelUpdateUserMessage: getOpenChannelUpdateUserMessage,
+ getOpenChannelDeleteMessage: getOpenChannelDeleteMessage,
+ getOpenChannelResendUserMessage: getOpenChannelResendUserMessage,
+ getOpenChannelResendFileMessage: getOpenChannelResendFileMessage
+};
+
+function UserProfile(_a) {
+ var user = _a.user,
+ currentUserId = _a.currentUserId,
+ sdk = _a.sdk,
+ logger = _a.logger,
+ _b = _a.disableMessaging,
+ disableMessaging = _b === void 0 ? false : _b,
+ createChannel = _a.createChannel,
+ onSuccess = _a.onSuccess;
+ var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
+ return React__default.createElement("div", {
+ className: "sendbird__user-profile"
+ }, React__default.createElement("section", {
+ className: "sendbird__user-profile-avatar"
+ }, React__default.createElement(Avatar$1, {
+ height: "80px",
+ width: "80px",
+ src: user.profileUrl
+ })), React__default.createElement("section", {
+ className: "sendbird__user-profile-name"
+ }, React__default.createElement(Label, {
+ type: LabelTypography.H_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, user.nickname || stringSet.NO_NAME)), user.userId !== currentUserId && !disableMessaging && React__default.createElement("section", {
+ className: "sendbird__user-profile-message"
+ }, React__default.createElement(Button, {
+ type: Type$1.SECONDARY,
+ onClick: function onClick() {
+ var params = new sdk.GroupChannelParams();
+ params.isDistinct = true;
+ params.addUserIds([user.userId]);
+ onSuccess();
+ createChannel(params).then(function (groupChannel) {
+ logger.info('UserProfile, channel create', groupChannel);
+ });
+ }
+ }, stringSet.USER_PROFILE__MESSAGE)), React__default.createElement("div", {
+ className: "sendbird__user-profile-seperator"
+ }), React__default.createElement("section", {
+ className: "sendbird__user-profile-userId"
+ }, React__default.createElement(Label, {
+ className: "sendbird__user-profile-userId--label",
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, stringSet.USER_PROFILE__USER_ID), React__default.createElement(Label, {
+ className: "sendbird__user-profile-userId--value",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, user.userId)));
+}
+
+var mapStoreToProps = function mapStoreToProps(store) {
+ return {
+ sdk: getSdk(store),
+ createChannel: getCreateChannel(store),
+ logger: store.config.logger,
+ pubsub: store.config.pubSub
+ };
+};
+
+var ConnectedUserProfile = LocalizationContext.withSendbirdContext(UserProfile, mapStoreToProps);
+
+var MenuItems =
+/*#__PURE__*/
+function (_Component) {
+ LocalizationContext._inherits(MenuItems, _Component);
+
+ function MenuItems(props) {
+ var _this;
+
+ LocalizationContext._classCallCheck(this, MenuItems);
+
+ _this = LocalizationContext._possibleConstructorReturn(this, LocalizationContext._getPrototypeOf(MenuItems).call(this, props));
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "showParent", function () {
+ var _this$props$parentCon = _this.props.parentContainRef,
+ parentContainRef = _this$props$parentCon === void 0 ? {} : _this$props$parentCon;
+ var current = parentContainRef.current;
+
+ if (parentContainRef && current) {
+ current.classList.add('sendbird-icon--pressed');
+ }
+ });
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "hideParent", function () {
+ var _this$props$parentCon2 = _this.props.parentContainRef,
+ parentContainRef = _this$props$parentCon2 === void 0 ? {} : _this$props$parentCon2;
+ var current = parentContainRef.current;
+
+ if (parentContainRef && current) {
+ current.classList.remove('sendbird-icon--pressed');
+ }
+ });
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "setupEvents", function () {
+ var closeDropdown = _this.props.closeDropdown;
+
+ var _assertThisInitialize = LocalizationContext._assertThisInitialized(_this),
+ menuRef = _assertThisInitialize.menuRef;
+
+ var handleClickOutside = function handleClickOutside(event) {
+ if (menuRef.current && !menuRef.current.contains(event.target)) {
+ closeDropdown();
+ }
+ };
+
+ _this.setState({
+ handleClickOutside: handleClickOutside
+ });
+
+ document.addEventListener('mousedown', handleClickOutside);
+ });
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "cleanUpEvents", function () {
+ var handleClickOutside = _this.state.handleClickOutside;
+ document.removeEventListener('mousedown', handleClickOutside);
+ });
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "getMenuPosition", function () {
+ var _this$props = _this.props,
+ parentRef = _this$props.parentRef,
+ openLeft = _this$props.openLeft;
+ var parentRect = parentRef.current.getBoundingClientRect();
+ var x = parentRect.x || parentRect.left;
+ var y = parentRect.y || parentRect.top;
+ var menuStyle = {
+ top: y,
+ left: x
+ };
+ if (!_this.menuRef.current) return menuStyle;
+ var _window = window,
+ innerWidth = _window.innerWidth,
+ innerHeight = _window.innerHeight;
+
+ var rect = _this.menuRef.current.getBoundingClientRect();
+
+ if (y + rect.height > innerHeight) {
+ menuStyle.top -= rect.height;
+ }
+
+ if (x + rect.width > innerWidth && !openLeft) {
+ menuStyle.left -= rect.width;
+ }
+
+ if (menuStyle.top < 0) {
+ menuStyle.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;
+ }
+
+ if (menuStyle.left < 0) {
+ menuStyle.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;
+ }
+
+ menuStyle.top += 32;
+
+ if (openLeft) {
+ var padding = Number.isNaN(rect.width - 30) ? 108 // default
+ : rect.width - 30;
+ menuStyle.left -= padding;
+ }
+
+ return _this.setState({
+ menuStyle: menuStyle
+ });
+ });
+
+ _this.menuRef = React__default.createRef();
+ _this.state = {
+ menuStyle: {},
+ handleClickOutside: function handleClickOutside() {}
+ };
+ return _this;
+ }
+
+ LocalizationContext._createClass(MenuItems, [{
+ key: "componentDidMount",
+ value: function componentDidMount() {
+ this.setupEvents();
+ this.getMenuPosition();
+ this.showParent();
+ }
+ }, {
+ key: "componentWillUnmount",
+ value: function componentWillUnmount() {
+ this.cleanUpEvents();
+ this.hideParent();
+ }
+ }, {
+ key: "render",
+ value: function render() {
+ var menuStyle = this.state.menuStyle;
+ var _this$props2 = this.props,
+ children = _this$props2.children,
+ style = _this$props2.style;
+ return reactDom.createPortal(React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
+ className: "sendbird-dropdown__menu-backdrop"
+ }), React__default.createElement("ul", {
+ className: "sendbird-dropdown__menu",
+ ref: this.menuRef,
+ style: LocalizationContext._objectSpread2({
+ display: 'inline-block',
+ position: 'fixed',
+ left: "".concat(Math.round(menuStyle.left), "px"),
+ top: "".concat(Math.round(menuStyle.top), "px")
+ }, style)
+ }, children)), document.getElementById('sendbird-dropdown-portal'));
+ }
+ }]);
+
+ return MenuItems;
+}(React.Component);
+MenuItems.propTypes = {
+ closeDropdown: PropTypes.func.isRequired,
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired,
+ style: PropTypes.shape({}),
+ // https://stackoverflow.com/a/51127130
+ parentRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
+ current: PropTypes.instanceOf(Element)
+ })]).isRequired,
+ parentContainRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
+ current: PropTypes.instanceOf(Element)
+ })]).isRequired,
+ openLeft: PropTypes.bool
+};
+MenuItems.defaultProps = {
+ style: {},
+ openLeft: false
+};
+
+var componentClassName = 'sendbird-sort-by-row';
+function SortByRow(_ref) {
+ var className = _ref.className,
+ maxItemCount = _ref.maxItemCount,
+ itemWidth = _ref.itemWidth,
+ itemHeight = _ref.itemHeight,
+ children = _ref.children;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift(componentClassName);
+
+ if (children.length > maxItemCount) {
+ var result = [];
+
+ for (var i = 0; i < children.length; i += maxItemCount) {
+ result.push(React__default.createElement("div", {
+ className: injectingClassName.join(' '),
+ style: {
+ width: itemWidth * maxItemCount,
+ height: itemHeight
+ },
+ key: className + i
+ }, children.slice(i, i + maxItemCount)));
+ }
+
+ return result;
+ }
+
+ return React__default.createElement("div", {
+ className: injectingClassName.join(' '),
+ style: {
+ width: itemWidth * children.length,
+ height: itemHeight
+ }
+ }, children);
+}
+SortByRow.propTypes = {
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ maxItemCount: PropTypes.number.isRequired,
+ itemWidth: PropTypes.number.isRequired,
+ itemHeight: PropTypes.number.isRequired,
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).isRequired
+};
+SortByRow.defaultProps = {
+ className: ''
+};
+
+var EmojiListItems =
+/*#__PURE__*/
+function (_Component) {
+ LocalizationContext._inherits(EmojiListItems, _Component);
+
+ function EmojiListItems(props) {
+ var _this;
+
+ LocalizationContext._classCallCheck(this, EmojiListItems);
+
+ _this = LocalizationContext._possibleConstructorReturn(this, LocalizationContext._getPrototypeOf(EmojiListItems).call(this, props));
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "showParent", function () {
+ var _this$props$parentCon = _this.props.parentContainRef,
+ parentContainRef = _this$props$parentCon === void 0 ? {} : _this$props$parentCon;
+ var current = parentContainRef.current;
+
+ if (parentContainRef && current) {
+ current.classList.add('sendbird-reactions--pressed');
+ }
+ });
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "hideParent", function () {
+ var _this$props$parentCon2 = _this.props.parentContainRef,
+ parentContainRef = _this$props$parentCon2 === void 0 ? {} : _this$props$parentCon2;
+ var current = parentContainRef.current;
+
+ if (parentContainRef && current) {
+ current.classList.remove('sendbird-reactions--pressed');
+ }
+ });
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "setupEvents", function () {
+ var closeDropdown = _this.props.closeDropdown;
+
+ var _assertThisInitialize = LocalizationContext._assertThisInitialized(_this),
+ reactionRef = _assertThisInitialize.reactionRef;
+
+ var handleClickOutside = function handleClickOutside(event) {
+ if (reactionRef.current && !reactionRef.current.contains(event.target)) {
+ closeDropdown();
+ }
+ };
+
+ _this.setState({
+ handleClickOutside: handleClickOutside
+ });
+
+ document.addEventListener('mousedown', handleClickOutside);
+ });
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "cleanUpEvents", function () {
+ var handleClickOutside = _this.state.handleClickOutside;
+ document.removeEventListener('mousedown', handleClickOutside);
+ });
+
+ LocalizationContext._defineProperty(LocalizationContext._assertThisInitialized(_this), "getBarPosition", function () {
+ var _this$props = _this.props,
+ parentRef = _this$props.parentRef,
+ spaceFromTrigger = _this$props.spaceFromTrigger;
+ var spaceFromTriggerX = spaceFromTrigger.x || 0;
+ var spaceFromTriggerY = spaceFromTrigger.y || 0;
+ var parentRect = parentRef.current.getBoundingClientRect();
+ var x = parentRect.x || parentRect.left;
+ var y = parentRect.y || parentRect.top;
+ var reactionStyle = {
+ top: y,
+ left: x
+ };
+ if (!_this.reactionRef.current) return reactionStyle;
+
+ var rect = _this.reactionRef.current.getBoundingClientRect(); // const childRect = this.reactionRef.current.children[0].getBoundingClientRect();
+
+
+ if (reactionStyle.top < rect.height) {
+ reactionStyle.top += parentRect.height;
+ reactionStyle.top += spaceFromTriggerY;
+ } else {
+ reactionStyle.top -= rect.height;
+ reactionStyle.top -= spaceFromTriggerY;
+ }
+
+ reactionStyle.left -= rect.width / 2;
+ reactionStyle.left += parentRect.height / 2 - 2;
+ reactionStyle.left += spaceFromTriggerX;
+ var maximumLeft = window.innerWidth - rect.width;
+
+ if (maximumLeft < reactionStyle.left) {
+ reactionStyle.left = maximumLeft;
+ }
+
+ if (reactionStyle.left < 0) {
+ reactionStyle.left = 0;
+ }
+
+ return _this.setState({
+ reactionStyle: reactionStyle
+ });
+ });
+
+ _this.reactionRef = React__default.createRef();
+ _this.state = {
+ reactionStyle: {},
+ handleClickOutside: function handleClickOutside() {}
+ };
+ return _this;
+ }
+
+ LocalizationContext._createClass(EmojiListItems, [{
+ key: "componentDidMount",
+ value: function componentDidMount() {
+ this.setupEvents();
+ this.getBarPosition();
+ this.showParent();
+ }
+ }, {
+ key: "componentWillUnmount",
+ value: function componentWillUnmount() {
+ this.cleanUpEvents();
+ this.hideParent();
+ }
+ }, {
+ key: "render",
+ value: function render() {
+ var reactionStyle = this.state.reactionStyle;
+ var children = this.props.children;
+ return reactDom.createPortal(React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
+ className: "sendbird-dropdown__menu-backdrop"
+ }), React__default.createElement("ul", {
+ className: "sendbird-dropdown__reaction-bar",
+ ref: this.reactionRef,
+ style: {
+ display: 'inline-block',
+ position: 'fixed',
+ left: "".concat(Math.round(reactionStyle.left), "px"),
+ top: "".concat(Math.round(reactionStyle.top), "px")
+ }
+ }, React__default.createElement(SortByRow, {
+ className: "sendbird-dropdown__reaction-bar__row",
+ maxItemCount: 8,
+ itemWidth: 44,
+ itemHeight: 40
+ }, children))), document.getElementById('sendbird-emoji-list-portal'));
+ }
+ }]);
+
+ return EmojiListItems;
+}(React.Component);
+EmojiListItems.propTypes = {
+ closeDropdown: PropTypes.func.isRequired,
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired,
+ parentRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
+ current: PropTypes.instanceOf(Element)
+ })]).isRequired,
+ parentContainRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
+ current: PropTypes.instanceOf(Element)
+ })]).isRequired,
+ spaceFromTrigger: PropTypes.shape({
+ x: PropTypes.number,
+ y: PropTypes.number
+ })
+};
+EmojiListItems.defaultProps = {
+ spaceFromTrigger: {}
+};
+
+var ENTER = 13;
+var MenuItems$1 = MenuItems;
+var EmojiListItems$1 = EmojiListItems;
+var MenuItem = function MenuItem(_ref) {
+ var children = _ref.children,
+ onClick = _ref.onClick,
+ className = _ref.className;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React__default.createElement("li", {
+ tabIndex: 0,
+ className: [].concat(LocalizationContext._toConsumableArray(injectingClassName), ['sendbird-dropdown__menu-item']).join(' '),
+ onClick: onClick,
+ onKeyPress: function onKeyPress(e) {
+ if (e.keyCode === ENTER) {
+ onClick(e);
+ }
+ },
+ role: "menuitem"
+ }, React__default.createElement(Label, {
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_1,
+ className: "sendbird-dropdown__menu-item__text"
+ }, children));
+};
+MenuItem.propTypes = {
+ onClick: PropTypes.func.isRequired,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired
+};
+MenuItem.defaultProps = {
+ className: ''
+};
+function ContextMenu(_ref2) {
+ var menuTrigger = _ref2.menuTrigger,
+ menuItems = _ref2.menuItems;
+
+ var _useState = React.useState(false),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ showMenu = _useState2[0],
+ setShowMenu = _useState2[1];
+
+ return React__default.createElement("div", {
+ className: "sendbird-context-menu",
+ style: {
+ display: 'inline'
+ }
+ }, menuTrigger(function () {
+ return setShowMenu(!showMenu);
+ }), showMenu && menuItems(function () {
+ return setShowMenu(false);
+ }));
+}
+ContextMenu.propTypes = {
+ menuTrigger: PropTypes.func.isRequired,
+ menuItems: PropTypes.func.isRequired
+};
+
+function Loader(_ref) {
+ var children = _ref.children,
+ className = _ref.className,
+ width = _ref.width,
+ height = _ref.height;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React__default.createElement("div", {
+ className: [].concat(LocalizationContext._toConsumableArray(injectingClassName), ['sendbird-loader']).join(' '),
+ style: {
+ width: typeof width === 'string' ? width : "".concat(width, "px"),
+ height: typeof height === 'string' ? height : "".concat(height, "px")
+ }
+ }, children);
+}
+Loader.propTypes = {
+ children: PropTypes.element,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
+};
+Loader.defaultProps = {
+ children: React__default.createElement(Icon, {
+ type: IconTypes.SPINNER,
+ width: "26px",
+ height: "26px"
+ }),
+ className: '',
+ width: '26px',
+ height: '26px'
+};
+
+var PlaceHolderTypes$1 = PlaceHolderTypes;
+function PlaceHolder(_ref) {
+ var className = _ref.className,
+ type = _ref.type,
+ retryToConnect = _ref.retryToConnect;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React__default.createElement("div", {
+ className: [].concat(LocalizationContext._toConsumableArray(injectingClassName), ['sendbird-place-holder']).join(' ')
+ }, type === PlaceHolderTypes$1.LOADING ? React__default.createElement(Loader, {
+ width: "48px",
+ height: "48px"
+ }, React__default.createElement(Icon, {
+ type: IconTypes.SPINNER_LARGE,
+ width: "48px",
+ height: "48px"
+ })) : null, type === PlaceHolderTypes$1.NO_CHANNELS || type === PlaceHolderTypes$1.WRONG ? React__default.createElement("div", {
+ className: "sendbird-place-holder__body"
+ }, type === PlaceHolderTypes$1.NO_CHANNELS && React__default.createElement(Icon, {
+ className: "sendbird-place-holder__body__icon",
+ type: IconTypes.CHAT,
+ fillColor: IconColors.ON_BACKGROUND_3,
+ width: "64px",
+ height: "64px"
+ }), type === PlaceHolderTypes$1.WRONG && React__default.createElement(Icon, {
+ className: "sendbird-place-holder__body__icon",
+ type: IconTypes.ERROR,
+ fillColor: IconColors.ON_BACKGROUND_3,
+ width: "64px",
+ height: "64px"
+ }), React__default.createElement(Label, {
+ className: "sendbird-place-holder__body__text",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_2
+ }, type === PlaceHolderTypes$1.NO_CHANNELS ? stringSet.PLACE_HOLDER__NO_CHANNEL : stringSet.PLACE_HOLDER__WRONG), retryToConnect ? React__default.createElement("div", {
+ className: "sendbird-place-holder__body__reconnect",
+ role: "button",
+ tabIndex: 0,
+ onClick: retryToConnect,
+ onKeyPress: retryToConnect
+ }, React__default.createElement(Icon, {
+ className: "sendbird-place-holder__body__reconnect__icon",
+ type: IconTypes.REFRESH,
+ fillColor: IconColors.PRIMARY,
+ width: "20px",
+ height: "20px"
+ }), React__default.createElement(Label, {
+ className: "sendbird-place-holder__body__reconnect__text",
+ type: LabelTypography.BUTTON_1,
+ color: LabelColors.PRIMARY
+ }, stringSet.PLACE_HOLDER__RETRY_TO_CONNECT)) : null) : null);
+}
+PlaceHolder.propTypes = {
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ type: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(PlaceHolderTypes$1)), PropTypes.string]).isRequired,
+ retryToConnect: PropTypes.func
+};
+PlaceHolder.defaultProps = {
+ className: '',
+ retryToConnect: null
+};
+
+exports.Avatar = Avatar$1;
+exports.Button = Button;
+exports.CREATE_CHANNEL = CREATE_CHANNEL;
+exports.Colors = Colors$2;
+exports.ContextMenu = ContextMenu;
+exports.DELETE_MESSAGE = DELETE_MESSAGE;
+exports.EmojiListItems = EmojiListItems$1;
+exports.Icon = Icon;
+exports.IconButton = IconButton;
+exports.IconColors = IconColors;
+exports.IconTypes = IconTypes;
+exports.ImageRenderer = ImageRenderer;
+exports.LEAVE_CHANNEL = LEAVE_CHANNEL;
+exports.Label = Label;
+exports.LabelColors = LabelColors;
+exports.LabelStringSet = LabelStringSet;
+exports.LabelTypography = LabelTypography;
+exports.Loader = Loader;
+exports.MODAL_ROOT = MODAL_ROOT;
+exports.MenuItem = MenuItem;
+exports.MenuItems = MenuItems$1;
+exports.Modal = Modal;
+exports.PlaceHolder = PlaceHolder;
+exports.PlaceHolderTypes = PlaceHolderTypes;
+exports.PlaceHolderTypes$1 = PlaceHolderTypes$1;
+exports.SEND_FILE_MESSAGE = SEND_FILE_MESSAGE;
+exports.SEND_MESSAGE_START = SEND_MESSAGE_START;
+exports.SEND_USER_MESSAGE = SEND_USER_MESSAGE;
+exports.Size = Size;
+exports.TextButton = TextButton;
+exports.Type = Type$1;
+exports.UPDATE_USER_MESSAGE = UPDATE_USER_MESSAGE;
+exports.UserProfile = ConnectedUserProfile;
+exports.UserProfileContext = UserProfileContext;
+exports.UserProfileProvider = UserProfileProvider;
+exports.changeColorToClassName = changeColorToClassName$2;
+exports.changeColorToClassName$1 = changeColorToClassName$1;
+exports.getSdk = getSdk;
+exports.selectors = selectors;
+//# sourceMappingURL=index-49d966e1.js.map
diff --git a/dist/cjs/index-49d966e1.js.map b/dist/cjs/index-49d966e1.js.map
new file mode 100644
index 0000000..be4ebe7
--- /dev/null
+++ b/dist/cjs/index-49d966e1.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index-ec3bf9fe.js","sources":["../../../src/lib/UserProfileContext.jsx","../../../src/ui/ImageRenderer/index.jsx","../../../src/ui/Icon/type.js","../../../src/ui/Icon/index.jsx","../../../src/ui/Avatar/index.tsx","../../../src/ui/Label/types.js","../../../src/ui/Label/utils.js","../../../src/ui/Label/index.jsx","../../../src/ui/IconButton/index.jsx","../../../src/hooks/useModal/ModalRoot/index.jsx","../../../src/ui/Button/type.js","../../../src/ui/Button/utils.js","../../../src/ui/Button/index.jsx","../../../src/ui/Modal/index.jsx","../../../src/utils/color.js","../../../src/ui/TextButton/index.jsx","../../../src/ui/PlaceHolder/type.js","../../../src/lib/pubSub/topics.js","../../../src/lib/selectors.js","../../../src/ui/UserProfile/index.tsx","../../../src/ui/ContextMenu/items/MenuItems.jsx","../../../src/ui/SortByRow/index.jsx","../../../src/ui/ContextMenu/items/EmojiListItems.jsx","../../../src/ui/ContextMenu/index.jsx","../../../src/ui/Loader/index.jsx","../../../src/ui/PlaceHolder/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst UserProfileContext = React.createContext({\n disableUserProfile: true,\n isOpenChannel: false,\n renderUserProfile: null,\n});\n\nconst UserProfileProvider = (props) => {\n const { children, className } = props;\n return (\n \n \n {children}\n
\n \n );\n};\n\nUserProfileProvider.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n isOpenChannel: PropTypes.bool,\n // eslint-disable-next-line react/no-unused-prop-types\n disableUserProfile: PropTypes.bool,\n // eslint-disable-next-line react/no-unused-prop-types\n renderUserProfile: PropTypes.func,\n className: PropTypes.string,\n};\n\nUserProfileProvider.defaultProps = {\n className: null,\n isOpenChannel: false,\n disableUserProfile: false,\n renderUserProfile: null,\n};\n\nexport { UserProfileContext, UserProfileProvider };\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\n/*\n ImageRenderer displays image with url or source\n it checks if the source exist with img tag first\n if it exists onLoad is called, if not onError is called\n and those properties switch img tag to real purposing element\n*/\n\nexport default function ImageRenderer({\n alt,\n url,\n width,\n height,\n className,\n defaultComponent,\n circle,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift('sendbird-image-renderer');\n const [realElement, setRealElement] = useState(null);\n useEffect(() => {\n setRealElement(null);\n }, [url]);\n return (\n realElement || (\n {\n setRealElement(typeof defaultComponent === 'function' ? defaultComponent() : defaultComponent);\n }}\n onLoad={() => {\n setRealElement((\n
\n ));\n }}\n />\n )\n );\n}\n\nImageRenderer.propTypes = {\n alt: PropTypes.string,\n url: PropTypes.string.isRequired,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n className: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.string,\n ]),\n defaultComponent: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n circle: PropTypes.bool,\n};\nImageRenderer.defaultProps = {\n alt: '',\n className: '',\n circle: false,\n defaultComponent: null,\n width: null,\n height: null,\n};\n","export default {\n ADD: 'ADD',\n ATTACH: 'ATTACH',\n ARROW_LEFT: 'ARROW_LEFT',\n AVATAR_DARK: 'AVATAR_DARK',\n AVATAR_LIGHT: 'AVATAR_LIGHT',\n AVATAR_NO_IMAGE: 'AVATAR_NO_IMAGE',\n BROADCAST_LARGE_DARK: 'BROADCAST_LARGE_DARK',\n BROADCAST_LARGE_LIGHT: 'BROADCAST_LARGE_LIGHT',\n BROADCAST_DARK: 'BROADCAST_DARK',\n BROADCAST_LIGHT: 'BROADCAST_LIGHT',\n BROADCAST: 'BROADCAST',\n FROZEN_DARK: 'FROZEN_DARK',\n FROZEN_LIGHT: 'FROZEN_LIGHT',\n CAMERA: 'CAMERA',\n MORE: 'MORE',\n MUTE: 'MUTE',\n NO_THUMBNAIL: 'NO_THUMBNAIL',\n CHECKBOX: 'CHECKBOX',\n CHECKBOX_OFF: 'CHECKBOX_OFF',\n CLOSE: 'CLOSE',\n COPY: 'COPY',\n CHAT: 'CHAT',\n CREATE: 'CREATE',\n DELETE: 'DELETE',\n DISCONNECTED: 'DISCONNECTED',\n DUMMY: 'DUMMY',\n EDIT: 'EDIT',\n ERROR: 'ERROR',\n ERROR_FILLED: 'ERROR_FILLED',\n EMOJI_FAILED: 'EMOJI_FAILED',\n EMOJI_REACTIONS_ADD: 'EMOJI_REACTIONS_ADD',\n EMOJI_REACTIONS_ADD_GRAY: 'EMOJI_REACTIONS_ADD_GRAY',\n DELIVERED: 'DELIVERED',\n DOCUMENT: 'DOCUMENT',\n DOWNLOAD: 'DOWNLOAD',\n FILE_AUDIO: 'FILE_AUDIO',\n FILE_DOCUMENT: 'FILE_DOCUMENT',\n GIF: 'GIF',\n INFO: 'INFO',\n LEAVE: 'LEAVE',\n MEMBERS: 'MEMBERS',\n NOTIFICATIONS: 'NOTIFICATIONS',\n PHOTO: 'PHOTO',\n PLAY: 'PLAY',\n PLUS: 'PLUS',\n READ: 'READ',\n REFRESH: 'REFRESH',\n SEND: 'SEND',\n SENT: 'SENT',\n SUPER_GROUP: 'SUPER_GROUP',\n SHEVRON: 'SHEVRON',\n SHEVRON_DOWN: 'SHEVRON_DOWN',\n SPINNER: 'SPINNER',\n SPINNER_LARGE: 'SPINNER_LARGE',\n USER: 'USER',\n ICON_OPERATOR: 'ICON_OPERATOR',\n ICON_BANNED: 'ICON_BANNED',\n ICON_FREEZE: 'ICON_FREEZE',\n ICON_MUTED: 'ICON_MUTED',\n ICON_MUTED_FG: 'ICON_MUTED_FG',\n TOGGLE_ON: 'TOGGLE_ON',\n TOGGLE_OFF: 'TOGGLE_OFF',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Type from './type';\n\nimport IconAdd from '../../svgs/icon-add.svg';\nimport IconAttach from '../../svgs/icon-attach.svg';\nimport IconArrowLeft from '../../svgs/icon-arrow-left.svg';\nimport IconAvatarDark from '../../svgs/icon-avatar-dark.svg';\nimport IconAvatarLight from '../../svgs/icon-avatar-light.svg';\nimport IconAvatarNoImage from '../../svgs/avatar-no-image-light.svg';\nimport BroadcastLargeDark from '../../svgs/icon-broadcast-lrg-dark.svg';\nimport BroadcastLargeLight from '../../svgs/icon-broadcast-lrg-light.svg';\nimport BroadcastDark from '../../svgs/icon-broadcast-dark.svg';\nimport BroadcastLight from '../../svgs/icon-broadcast-light.svg';\nimport Broadcast from '../../svgs/icon-broadcast.svg';\nimport FrozenDark from '../../svgs/frozen-dark.svg';\nimport FrozenLight from '../../svgs/frozen-light.svg';\nimport IconCamera from '../../svgs/icon-camera.svg';\nimport IconMore from '../../svgs/icon-more.svg';\nimport IconMute from '../../svgs/icon-mute.svg';\nimport IconNoThumbnail from '../../svgs/icon-no-thumbnail.svg';\nimport IconCheckbox from '../../svgs/icon-checkbox.svg';\nimport IconCheckboxOff from '../../svgs/icon-checkbox-off.svg';\nimport IconClose from '../../svgs/icon-close.svg';\nimport IconCopy from '../../svgs/icon-copy.svg';\nimport IconChat from '../../svgs/icon-chat.svg';\nimport IconSupergroup from '../../svgs/icon-supergroup.svg';\nimport IconCreate from '../../svgs/icon-create.svg';\nimport IconDelete from '../../svgs/icon-delete.svg';\nimport IconDummy from '../../svgs/icon-dummy.svg';\nimport IconEdit from '../../svgs/icon-edit.svg';\nimport IconError from '../../svgs/icon-error.svg';\nimport IconErrorFilled from '../../svgs/icon-error-filled.svg';\nimport IconEmojiFailed from '../../svgs/emoji-fail.svg';\nimport IconEmojiReactionsAdd from '../../svgs/icon-reactions-add.svg';\nimport IconEmojiReactionsAddGray from '../../svgs/icon-emoji-reactions-add.svg';\nimport IconDelivered from '../../svgs/icon-delivered.svg';\nimport IconDisconnected from '../../svgs/icon-disconnected.svg';\nimport IconDocument from '../../svgs/icon-document.svg';\nimport IconDownload from '../../svgs/icon-download.svg';\nimport IconFileAudio from '../../svgs/icon-file-audio.svg';\nimport IconFileDocument from '../../svgs/icon-file-document.svg';\nimport IconGif from '../../svgs/icon-gif.svg';\nimport IconInfo from '../../svgs/icon-info.svg';\nimport IconLeave from '../../svgs/icon-leave.svg';\nimport IconMembers from '../../svgs/icon-members.svg';\nimport IconNotifications from '../../svgs/icon-notifications.svg';\nimport IconPhoto from '../../svgs/icon-photo.svg';\nimport IconPlay from '../../svgs/icon-play.svg';\nimport IconPlus from '../../svgs/icon-plus.svg';\nimport IconRead from '../../svgs/icon-read.svg';\nimport IconRefresh from '../../svgs/icon-refresh.svg';\nimport IconSend from '../../svgs/icon-send.svg';\nimport IconSent from '../../svgs/icon-sent.svg';\nimport IconShevron from '../../svgs/icon-shevron.svg';\nimport IconShevronDown from '../../svgs/icon-shevron-down.svg';\nimport IconSpinner from '../../svgs/icon-spinner-small.svg';\nimport IconSpinnerLarge from '../../svgs/icon-spinner-large.svg';\nimport IconUser from '../../svgs/icon-user.svg';\nimport IconOperator from '../../svgs/icon-operator.svg';\nimport IconBanned from '../../svgs/icon-banned.svg';\nimport IconMuted from '../../svgs/icon-muted.svg';\nimport IconMutedFg from '../../svgs/icon-muted-foreground.svg';\nimport IconFreeze from '../../svgs/icon-freeze.svg';\nimport ToggleOn from '../../svgs/icon-toggleon.svg';\nimport ToggleOff from '../../svgs/icon-toggleoff.svg';\n\nconst Colors = {\n DEFAULT: 'DEFAULT',\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n CONTENT: 'CONTENT',\n CONTENT_INVERSE: 'CONTENT_INVERSE',\n WHITE: 'WHITE',\n SENT: 'SENT',\n READ: 'READ',\n ON_BACKGROUND_2: 'ON_BACKGROUND_2',\n ON_BACKGROUND_3: 'ON_BACKGROUND_3',\n BACKGROUND_3: 'BACKGROUND_3',\n};\n\nfunction changeColorToClassName(color) {\n switch (color) {\n case Colors.PRIMARY: return 'sendbird-color--primary';\n case Colors.SECONDARY: return 'sendbird-color--secondary';\n case Colors.CONTENT: return 'sendbird-color--content';\n case Colors.CONTENT_INVERSE: return 'sendbird-color--content-inverse';\n case Colors.WHITE: return 'sendbird-color--white';\n case Colors.SENT: return 'sendbird-color--sent';\n case Colors.READ: return 'sendbird-color--read';\n case Colors.ON_BACKGROUND_2: return 'sendbird-color--on-background-2';\n case Colors.ON_BACKGROUND_3: return 'sendbird-color--on-background-3';\n case Colors.BACKGROUND_3: return 'sendbird-color--background-3';\n default: return '';\n }\n}\n\nfunction changeTypeToIconComponent(type) {\n switch (type) {\n case Type.ADD: return ;\n case Type.ARROW_LEFT: return ;\n case Type.CAMERA: return ;\n case Type.ATTACH: return ;\n case Type.AVATAR_DARK: return ;\n case Type.AVATAR_LIGHT: return ;\n case Type.AVATAR_NO_IMAGE: return ;\n case Type.BROADCAST_LARGE_DARK: return ;\n case Type.BROADCAST_LARGE_LIGHT: return ;\n case Type.BROADCAST_DARK: return ;\n case Type.BROADCAST_LIGHT: return ;\n case Type.BROADCAST: return ;\n case Type.FROZEN_DARK: return ;\n case Type.FROZEN_LIGHT: return ;\n case Type.MORE: return ;\n case Type.MUTE: return ;\n case Type.NO_THUMBNAIL: return ;\n case Type.CHECKBOX: return ;\n case Type.CHECKBOX_OFF: return ;\n case Type.CLOSE: return ;\n case Type.COPY: return ;\n case Type.CHAT: return ;\n case Type.SUPER_GROUP: return ;\n case Type.CREATE: return ;\n case Type.DELETE: return ;\n case Type.DISCONNECTED: return ;\n case Type.DUMMY: return ;\n case Type.EDIT: return ;\n case Type.ERROR: return ;\n case Type.ERROR_FILLED: return ;\n case Type.EMOJI_FAILED: return ;\n case Type.EMOJI_REACTIONS_ADD: return ;\n case Type.EMOJI_REACTIONS_ADD_GRAY: return ;\n case Type.DELIVERED: return ;\n case Type.DOCUMENT: return ;\n case Type.DOWNLOAD: return ;\n case Type.FILE_AUDIO: return ;\n case Type.FILE_DOCUMENT: return ;\n case Type.GIF: return ;\n case Type.INFO: return ;\n case Type.LEAVE: return ;\n case Type.MEMBERS: return ;\n case Type.NOTIFICATIONS: return ;\n case Type.PHOTO: return ;\n case Type.PLAY: return ;\n case Type.PLUS: return ;\n case Type.READ: return ;\n case Type.REFRESH: return ;\n case Type.SEND: return ;\n case Type.SENT: return ;\n case Type.SHEVRON: return ;\n case Type.SHEVRON_DOWN: return ;\n case Type.SPINNER: return ;\n case Type.SPINNER_LARGE: return ;\n case Type.USER: return ;\n case Type.ICON_OPERATOR: return ;\n case Type.ICON_BANNED: return ;\n case Type.ICON_MUTED: return ;\n case Type.ICON_MUTED_FG: return ;\n case Type.ICON_FREEZE: return ;\n case Type.TOGGLE_ON: return ;\n case Type.TOGGLE_OFF: return ;\n default: return null;\n }\n}\n\nexport default function Icon({\n type,\n width,\n height,\n children,\n className,\n onClick,\n fillColor,\n}) {\n const iconStyle = {\n width: typeof width === 'string' ? width : `${width}px`,\n minWidth: typeof width === 'string' ? width : `${width}px`,\n height: typeof height === 'string' ? height : `${height}px`,\n minHeight: typeof height === 'string' ? height : `${height}px`,\n };\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {\n children || changeTypeToIconComponent(type)\n }\n
\n );\n}\n\nIcon.propTypes = {\n type: PropTypes.oneOfType([\n PropTypes.oneOf(Object.keys(Type)),\n PropTypes.string,\n ]).isRequired,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n onClick: PropTypes.func,\n children: PropTypes.element,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n fillColor: PropTypes.oneOf(Object.keys(Colors)),\n};\n\nIcon.defaultProps = {\n onClick: () => { },\n width: 26,\n height: 26,\n children: null,\n className: '',\n fillColor: Colors.DEFAULT,\n};\n\nexport const IconTypes = Type;\nexport const IconColors = Colors;\n","import React, { ReactElement } from 'react';\n\nimport ImageRenderer from '../ImageRenderer';\nimport Icon, { IconTypes } from '../Icon';\n\nimport './index.scss';\nimport { uuidv4 } from '../../utils/uuid';\n\nconst imageRendererClassName = 'sendbird-avatar-img';\n\ninterface DefaultComponentProps {\n width: string | number,\n height: string | number,\n}\n\nconst defaultComponent = (\n {\n width,\n height,\n }: DefaultComponentProps\n) => (): ReactElement => (\n document.querySelector('.sendbird-theme--dark')\n ? \n : \n);\n\ninterface AvatarInnerProps {\n height: string | number,\n width: string | number,\n src?: string | string[],\n alt?: string,\n}\n\nexport const AvatarInner = ({\n src = '',\n alt = '',\n height,\n width,\n}: AvatarInnerProps): ReactElement => {\n if (typeof src === 'string') {\n return (\n \n );\n }\n\n if (src && src.length) {\n if (src.length === 1) {\n return (\n \n );\n }\n\n if (src.length === 2) {\n return (\n \n \n \n
\n );\n }\n\n if (src.length === 3) {\n return (\n <>\n \n \n
\n \n \n \n
\n >\n );\n }\n\n return (\n \n {\n src.slice(0, 4)\n .map((i) => (\n \n ))\n }\n
\n );\n }\n // default img\n return (\n \n );\n};\n\ninterface AvatarProps {\n height?: string | number,\n width?: string | number,\n src?: string | string[],\n alt?: string,\n onClick?(): void,\n className?: string | string[],\n}\n\nfunction Avatar(\n {\n src = '',\n alt = '',\n width = '56px',\n height = '56px',\n onClick,\n className = '',\n }: AvatarProps,\n ref: React.Ref,\n): ReactElement {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n );\n}\n\nexport default React.forwardRef(Avatar);\n","export const Typography = {\n H_1: 'H_1',\n H_2: 'H_2',\n SUBTITLE_1: 'SUBTITLE_1',\n SUBTITLE_2: 'SUBTITLE_2',\n BODY_1: 'BODY_1',\n BODY_2: 'BODY_2',\n BUTTON_1: 'BUTTON_1',\n BUTTON_2: 'BUTTON_2',\n CAPTION_1: 'CAPTION_1',\n CAPTION_2: 'CAPTION_2',\n CAPTION_3: 'CAPTION_3',\n};\n\nexport const Colors = {\n ONBACKGROUND_1: 'ONBACKGROUND_1',\n ONBACKGROUND_2: 'ONBACKGROUND_2',\n ONBACKGROUND_3: 'ONBACKGROUND_3',\n ONCONTENT_1: 'ONCONTENT_1',\n ONCONTENT_2: 'ONCONTENT_2',\n PRIMARY: 'PRIMARY',\n ERROR: 'ERROR',\n SECONDARY_3: 'SECONDARY_3',\n};\n","import { Typography, Colors } from './types';\n\nexport function changeTypographyToClassName(type) {\n switch (type) {\n case Typography.H_1: return 'sendbird-label--h-1';\n case Typography.H_2: return 'sendbird-label--h-2';\n case Typography.SUBTITLE_1: return 'sendbird-label--subtitle-1';\n case Typography.SUBTITLE_2: return 'sendbird-label--subtitle-2';\n case Typography.BODY_1: return 'sendbird-label--body-1';\n case Typography.BODY_2: return 'sendbird-label--body-2';\n case Typography.BUTTON_1: return 'sendbird-label--button-1';\n case Typography.BUTTON_2: return 'sendbird-label--button-2';\n case Typography.CAPTION_1: return 'sendbird-label--caption-1';\n case Typography.CAPTION_2: return 'sendbird-label--caption-2';\n case Typography.CAPTION_3: return 'sendbird-label--caption-3';\n default: return null;\n }\n}\n\nexport function changeColorToClassName(color) {\n switch (color) {\n case Colors.ONBACKGROUND_1: return 'sendbird-label--color-onbackground-1';\n case Colors.ONBACKGROUND_2: return 'sendbird-label--color-onbackground-2';\n case Colors.ONBACKGROUND_3: return 'sendbird-label--color-onbackground-3';\n case Colors.ONCONTENT_1: return 'sendbird-label--color-oncontent-1';\n case Colors.ONCONTENT_2: return 'sendbird-label--color-oncontent-2';\n case Colors.PRIMARY: return 'sendbird-label--color-primary'; // should be Primary-3 fix me\n case Colors.ERROR: return 'sendbird-label--color-error';\n case Colors.SECONDARY_3: return 'sendbird-label--color-secondary-3';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { Typography, Colors } from './types';\nimport { changeTypographyToClassName, changeColorToClassName } from './utils';\nimport getStringSet from './stringSet';\n\nconst CLASS_NAME = 'sendbird-label';\n\nexport default function Label({\n type,\n color,\n children,\n className,\n}) {\n const injectingClassName = (Array.isArray(className))\n ? [CLASS_NAME, ...className]\n : [CLASS_NAME, className];\n if (type) {\n injectingClassName.push(changeTypographyToClassName(type));\n }\n if (color) {\n injectingClassName.push(changeColorToClassName(color));\n }\n\n return (\n \n {children}\n \n );\n}\n\nLabel.propTypes = {\n type: PropTypes.oneOf([...Object.keys(Typography), '']),\n color: PropTypes.oneOf([...Object.keys(Colors), '']),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.element,\n PropTypes.any,\n ]),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nLabel.defaultProps = {\n type: '',\n color: '',\n className: [],\n children: null,\n};\n\nconst LabelTypography = Typography;\nconst LabelColors = Colors;\nconst LabelStringSet = getStringSet('en');\nexport { LabelTypography, LabelColors, LabelStringSet };\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst CLASS_NAME = 'sendbird-iconbutton';\n\nconst IconButton = React.forwardRef((props, ref) => {\n const {\n children,\n className,\n disabled = false,\n type,\n height,\n width,\n onClick,\n onBlur,\n style,\n } = props;\n\n const [pressed, setPressed] = useState('');\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n\n return (\n // eslint-disable-next-line react/button-has-type\n {\n if (disabled) { return; }\n setPressed('sendbird-iconbutton--pressed');\n onClick(e);\n }}\n onBlur={(e) => {\n setPressed('');\n onBlur(e);\n }}\n >\n \n {children}\n \n \n );\n});\n\nIconButton.propTypes = {\n height: PropTypes.string,\n width: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n type: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n onBlur: PropTypes.func,\n style: PropTypes.shape({}),\n};\n\nIconButton.defaultProps = {\n height: '56px',\n width: '56px',\n className: '',\n type: 'button',\n disabled: false,\n onClick: () => { },\n onBlur: () => { },\n style: {},\n};\n\nexport default IconButton;\n","// simple component to be used as modal root\nimport React from 'react';\n\nexport const MODAL_ROOT = 'sendbird-modal-root';\n\nexport default () => (\n
\n);\n","export const Type = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n DANGER: 'DANGER',\n DISABLED: 'DISABLED',\n};\n\nexport const Size = {\n BIG: 'BIG',\n SMALL: 'SMALL',\n};\n","import { Type, Size } from './type';\n\nexport function changeTypeToClassName(type) {\n switch (type) {\n case Type.PRIMARY: return 'sendbird-button--primary';\n case Type.SECONDARY: return 'sendbird-button--secondary';\n case Type.DANGER: return 'sendbird-button--danger';\n case Type.DISABLED: return 'sendbird-button--disabled';\n default: return null;\n }\n}\n\nexport function changeSizeToClassName(size) {\n switch (size) {\n case Size.BIG: return 'sendbird-button--big';\n case Size.SMALL: return 'sendbird-button--small';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { Type, Size } from './type';\nimport { changeTypeToClassName, changeSizeToClassName } from './utils';\n\nexport default function Button({\n type,\n size,\n children,\n disabled,\n onClick,\n className,\n}) {\n const injectingClassNames = [\n 'sendbird-button',\n (disabled ? 'sendbird-button__disabled' : ''),\n changeTypeToClassName(type),\n changeSizeToClassName(size),\n ...((Array.isArray(className)) ? className : [className]),\n ].join(' ');\n\n return (\n \n \n {children}\n \n \n );\n}\n\nButton.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]),\n disabled: PropTypes.bool,\n type: PropTypes.oneOf(Object.keys(Type)),\n size: PropTypes.oneOf(Object.keys(Size)),\n onClick: PropTypes.func,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nButton.defaultProps = {\n children: 'Button',\n type: Type.PRIMARY,\n disabled: false,\n size: Size.BIG,\n onClick: () => { },\n className: '',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\n\nimport './index.scss';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { MODAL_ROOT } from '../../hooks/useModal/ModalRoot';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Button from '../Button';\nimport { Type as ButtonTypes } from '../Button/type';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nexport const ModalHeader = ({ titleText }) => (\n \n \n {titleText}\n \n
\n);\nModalHeader.propTypes = {\n titleText: PropTypes.string.isRequired,\n};\n\nexport const ModalBody = ({ children }) => (\n {children}
\n);\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element.isRequired,\n PropTypes.arrayOf(PropTypes.element.isRequired),\n ]),\n};\nModalBody.defaultProps = {\n children: null,\n};\n\nexport const ModalFooter = ({\n onSubmit,\n onCancel,\n disabled = false,\n submitText,\n type,\n}) => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n \n {stringSet.BUTTON__CANCEL}\n \n \n \n {submitText}\n \n
\n );\n};\n\nModalFooter.propTypes = {\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n submitText: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\nModalFooter.defaultProps = {\n disabled: false,\n type: ButtonTypes.DANGER,\n};\n\nfunction Modal(props) {\n const {\n children,\n onCancel,\n onSubmit,\n disabled,\n submitText,\n titleText,\n hideFooter,\n type,\n } = props;\n return createPortal((\n \n
\n
\n
{children} \n {\n !hideFooter && (\n
\n )\n }\n
\n \n \n \n
\n
\n
\n
\n ), document.getElementById(MODAL_ROOT));\n}\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]),\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n hideFooter: PropTypes.bool,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\nModal.defaultProps = {\n children: null,\n hideFooter: false,\n disabled: false,\n type: ButtonTypes.DANGER,\n};\n\nexport default Modal;\n","import './color.scss';\n\nexport const Colors = {\n ONBACKGROUND_1: 'ONBACKGROUND_1',\n ONBACKGROUND_2: 'ONBACKGROUND_2',\n ONBACKGROUND_3: 'ONBACKGROUND_3',\n ONBACKGROUND_4: 'ONBACKGROUND_4',\n ONCONTENT_1: 'ONCONTENT_1',\n PRIMARY: 'PRIMARY',\n ERROR: 'ERROR',\n};\n\nexport function changeColorToClassName(color) {\n switch (color) {\n case Colors.ONBACKGROUND_1: return 'sendbird-color--onbackground-1';\n case Colors.ONBACKGROUND_2: return 'sendbird-color--onbackground-2';\n case Colors.ONBACKGROUND_3: return 'sendbird-color--onbackground-3';\n case Colors.ONBACKGROUND_4: return 'sendbird-color--onbackground-4';\n case Colors.ONCONTENT_1: return 'sendbird-color--oncontent-1';\n case Colors.PRIMARY: return 'sendbird-color--primary';\n case Colors.ERROR: return 'sendbird-color--error';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { changeColorToClassName, Colors } from '../../utils/color';\n\nexport default function TextButton({\n color,\n children,\n disabled,\n className,\n onClick,\n notUnderline,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {children}\n
\n );\n}\n\nTextButton.propTypes = {\n color: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n onClick: PropTypes.func,\n notUnderline: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nTextButton.defaultProps = {\n color: Colors.ONBACKGROUND_1,\n className: '',\n onClick: () => { },\n notUnderline: false,\n disabled: false,\n};\n","export function Types() {\n return {\n LOADING: 'LOADING',\n NO_CHANNELS: 'NO_CHANNELS',\n WRONG: 'WRONG',\n };\n}\n\nexport default Types();\n","export const USER_UPDATED = 'USER_UPDATED';\nexport const SEND_MESSAGE_START = 'SEND_MESSAGE_START';\nexport const SEND_USER_MESSAGE = 'SEND_USER_MESSAGE';\nexport const SEND_FILE_MESSAGE = 'SEND_FILE_MESSAGE';\nexport const UPDATE_USER_MESSAGE = 'UPDATE_USER_MESSAGE';\nexport const DELETE_MESSAGE = 'DELETE_MESSAGE';\nexport const LEAVE_CHANNEL = 'LEAVE_CHANNEL';\nexport const CREATE_CHANNEL = 'CREATE_CHANNEL';\n","import * as topics from './pubSub/topics';\n\nexport const getSdk = (store) => {\n const { stores = {} } = store;\n const { sdkStore = {} } = stores;\n const { sdk } = sdkStore;\n return sdk;\n};\n\nexport const getPubSub = (store) => {\n const { config = {} } = store;\n const { pubSub } = config;\n return pubSub;\n};\n\n// SendBird disconnect. Invalidates currentUser\n// eslint-disable-next-line max-len\nexport const getConnect = (store) => (userId, accessToken) => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n if (!accessToken) {\n sdk.connect(userId)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n } else {\n sdk.connect(userId, accessToken)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n }\n});\n\n// SendBird disconnect. Invalidates currentUser\nexport const getDisconnect = (store) => () => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.disconnect()\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n});\n\n// Using the updateCurrentUserInfo() method\n// you can update a user's nickname and profile image with a URL\n// eslint-disable-next-line max-len\nexport const getUpdateUserInfo = (store) => (nickName, profileUrl) => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.updateCurrentUserInfo(nickName, profileUrl)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n});\n\nexport const getSendUserMessage = (store) => (channelUrl, userMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendUserMessage(userMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n });\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\nexport const getSendFileMessage = (store) => (channelUrl, fileMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendFileMessage(fileMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n });\n if (fileMessageParams.file) {\n // keep the file's local version in pendingMsg.localUrl\n // because promise doesnt allow overriding of pendingMsg.url\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);\n }\n if (fileMessageParams.fileUrl) {\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = fileMessageParams.fileUrl;\n }\n // eslint-disable-next-line no-param-reassign\n pendingMsg.requestState = 'pending';\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\nexport const getUpdateUserMessage = (store) => (channelUrl, messageId, params) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.updateUserMessage(messageId, params, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.UPDATE_USER_MESSAGE,\n {\n message,\n channel,\n // workaround for updating channelPreview on message-edit\n // https://sendbird.atlassian.net/browse/UIKIT-268\n fromSelector: true,\n },\n );\n });\n })\n .catch(reject);\n });\n};\nexport const getDeleteMessage = (store) => (channelUrl, message) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const { messageId } = message;\n channel.deleteMessage(message, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let error = err;\n if (swapParams) {\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.DELETE_MESSAGE,\n {\n messageId,\n channel,\n },\n );\n });\n })\n .catch(reject);\n });\n};\n\nexport const getResendUserMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendUserMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getResendFileMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendFileMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getCreateChannel = (store) => (params) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.createChannel(params)\n .then((channel) => {\n resolve(channel);\n pubsub.publish(\n topics.CREATE_CHANNEL,\n {\n channel,\n },\n );\n })\n .catch(reject);\n });\n};\n\nexport const getLeaveChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.leave()\n .then(() => {\n resolve(channel);\n pubsub.publish(\n topics.LEAVE_CHANNEL,\n {\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getFreezeChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.freeze()\n .then(() => {\n // do not need pubsub here - event listener works\n resolve(channel);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getUnFreezeChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.unfreeze()\n .then(() => {\n // do not need pubsub here - event listener works\n resolve(channel);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nconst getCreateOpenChannel = (store) => (params) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.createChannel(params)\n .then((channel) => {\n resolve(channel);\n })\n .catch(reject);\n });\n};\nconst enterOpenChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl, (openChannel, error) => {\n if (error) {\n reject(new Error(error));\n return;\n }\n\n openChannel.enter((response, enterError) => {\n if (error) {\n reject(new Error(enterError));\n return;\n }\n resolve(response);\n });\n });\n });\n};\n\nconst exitOpenChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl, (openChannel, error) => {\n if (error) {\n reject(new Error(error));\n return;\n }\n\n openChannel.exit((response, exitError) => {\n if (error) {\n reject(new Error(exitError));\n return;\n }\n resolve(response);\n });\n });\n });\n};\n\nconst getOpenChannelSendUserMessage = (store) => (channelUrl, userMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendUserMessage(userMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n });\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\n\nconst getOpenChannelSendFileMessage = (store) => (channelUrl, fileMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendFileMessage(fileMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n });\n if (fileMessageParams.file) {\n // keep the file's local version in pendingMsg.localUrl\n // because promise doesnt allow overriding of pendingMsg.url\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);\n }\n if (fileMessageParams.fileUrl) {\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = fileMessageParams.fileUrl;\n }\n // eslint-disable-next-line no-param-reassign\n pendingMsg.requestState = 'pending';\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\n\nconst getOpenChannelUpdateUserMessage = (store) => (channelUrl, messageId, params) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.updateUserMessage(messageId, params, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.UPDATE_USER_MESSAGE,\n {\n message,\n channel,\n // workaround for updating channelPreview on message-edit\n // https://sendbird.atlassian.net/browse/UIKIT-268\n fromSelector: true,\n },\n );\n });\n })\n .catch(reject);\n });\n};\n\nconst getOpenChannelDeleteMessage = (store) => (channelUrl, message) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const { messageId } = message;\n channel.deleteMessage(message, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let error = err;\n if (swapParams) {\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.DELETE_MESSAGE,\n {\n messageId,\n channel,\n },\n );\n });\n })\n .catch(reject);\n });\n};\n\nconst getOpenChannelResendUserMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendUserMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nconst getOpenChannelResendFileMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendFileMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport default {\n getSdk,\n getConnect,\n getDisconnect,\n getUpdateUserInfo,\n getSendUserMessage,\n getSendFileMessage,\n getUpdateUserMessage,\n getDeleteMessage,\n getResendUserMessage,\n getResendFileMessage,\n getFreezeChannel,\n getUnFreezeChannel,\n getCreateChannel,\n getLeaveChannel,\n getCreateOpenChannel,\n enterOpenChannel,\n exitOpenChannel,\n getOpenChannelSendUserMessage,\n getOpenChannelSendFileMessage,\n getOpenChannelUpdateUserMessage,\n getOpenChannelDeleteMessage,\n getOpenChannelResendUserMessage,\n getOpenChannelResendFileMessage,\n};\n","import React, { ReactElement, useContext } from 'react';\nimport { SendbirdTypes } from '../../types';\nimport './index.scss';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { getSdk, getCreateChannel } from '../../lib/selectors';\nimport Avatar from '../Avatar/index';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport Button from '../Button';\nimport { Type as ButtonTypes } from '../Button/type';\n\ninterface Logger {\n info?(message: string, channel: SendbirdTypes['GroupChannel']): void;\n}\n\ninterface Props {\n user: SendbirdTypes['User'];\n currentUserId?: string;\n sdk?: SendbirdTypes['SendBirdInstance'];\n logger?: Logger;\n disableMessaging?: boolean;\n createChannel?(params: SendbirdTypes['GroupChannelParams']): Promise;\n onSuccess?(): void;\n}\n\nfunction UserProfile({\n user,\n currentUserId,\n sdk,\n logger,\n disableMessaging = false,\n createChannel,\n onSuccess,\n}: Props): ReactElement {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
\n \n {user.nickname || stringSet.NO_NAME}\n \n \n {\n (user.userId !== currentUserId) && !disableMessaging && (\n
\n {\n const params = new sdk.GroupChannelParams();\n params.isDistinct = true;\n params.addUserIds([user.userId]);\n onSuccess();\n createChannel(params)\n .then((groupChannel) => {\n logger.info('UserProfile, channel create', groupChannel);\n });\n }}\n >\n {stringSet.USER_PROFILE__MESSAGE}\n \n \n )\n }\n
\n
\n \n {stringSet.USER_PROFILE__USER_ID}\n \n \n {user.userId}\n \n \n
\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n createChannel: getCreateChannel(store),\n logger: store.config.logger,\n pubsub: store.config.pubSub,\n});\n\nconst ConnectedUserProfile = withSendbirdContext(UserProfile, mapStoreToProps);\n\nexport default ConnectedUserProfile;\n","import React, { Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\n\nexport default class MenuItems extends Component {\n constructor(props) {\n super(props);\n this.menuRef = React.createRef();\n this.state = {\n menuStyle: {},\n handleClickOutside: () => { },\n };\n }\n\n componentDidMount() {\n this.setupEvents();\n this.getMenuPosition();\n this.showParent();\n }\n\n componentWillUnmount() {\n this.cleanUpEvents();\n this.hideParent();\n }\n\n showParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.add('sendbird-icon--pressed');\n }\n }\n\n hideParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.remove('sendbird-icon--pressed');\n }\n }\n\n setupEvents = () => {\n const { closeDropdown } = this.props;\n const { menuRef } = this;\n const handleClickOutside = (event) => {\n if (menuRef.current && !menuRef.current.contains(event.target)) {\n closeDropdown();\n }\n };\n this.setState({\n handleClickOutside,\n });\n\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n cleanUpEvents = () => {\n const {\n handleClickOutside,\n } = this.state;\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n getMenuPosition = () => {\n const { parentRef, openLeft } = this.props;\n const parentRect = parentRef.current.getBoundingClientRect();\n const x = parentRect.x || parentRect.left;\n const y = parentRect.y || parentRect.top;\n const menuStyle = {\n top: y,\n left: x,\n };\n\n if (!this.menuRef.current) return menuStyle;\n\n const { innerWidth, innerHeight } = window;\n const rect = this.menuRef.current.getBoundingClientRect();\n if (y + rect.height > innerHeight) {\n menuStyle.top -= rect.height;\n }\n\n if (x + rect.width > innerWidth && !openLeft) {\n menuStyle.left -= rect.width;\n }\n\n if (menuStyle.top < 0) {\n menuStyle.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;\n }\n\n if (menuStyle.left < 0) {\n menuStyle.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;\n }\n\n menuStyle.top += 32;\n if (openLeft) {\n const padding = Number.isNaN(rect.width - 30)\n ? 108 // default\n : rect.width - 30;\n menuStyle.left -= padding;\n }\n\n return this.setState({ menuStyle });\n }\n\n render() {\n const { menuStyle } = this.state;\n const { children, style } = this.props;\n return (\n createPortal(\n (\n <>\n
\n \n >\n ),\n document.getElementById('sendbird-dropdown-portal'),\n )\n );\n }\n}\nMenuItems.propTypes = {\n closeDropdown: PropTypes.func.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n style: PropTypes.shape({}),\n // https://stackoverflow.com/a/51127130\n parentRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n parentContainRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n openLeft: PropTypes.bool,\n};\nMenuItems.defaultProps = {\n style: {},\n openLeft: false,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst componentClassName = 'sendbird-sort-by-row';\nexport default function SortByRow({\n className,\n maxItemCount,\n itemWidth,\n itemHeight,\n children,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(componentClassName);\n\n if (children.length > maxItemCount) {\n const result = [];\n for (let i = 0; i < children.length; i += maxItemCount) {\n result.push(\n \n {\n children.slice(i, i + maxItemCount)\n }\n
,\n );\n }\n\n return result;\n }\n return (\n \n {children}\n
\n );\n}\n\nSortByRow.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n maxItemCount: PropTypes.number.isRequired,\n itemWidth: PropTypes.number.isRequired,\n itemHeight: PropTypes.number.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]).isRequired,\n};\n\nSortByRow.defaultProps = {\n className: '',\n};\n","import React, { Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport SortByRow from '../../SortByRow';\n\nexport default class EmojiListItems extends Component {\n constructor(props) {\n super(props);\n this.reactionRef = React.createRef();\n this.state = {\n reactionStyle: {},\n handleClickOutside: () => { },\n };\n }\n\n componentDidMount() {\n this.setupEvents();\n this.getBarPosition();\n this.showParent();\n }\n\n componentWillUnmount() {\n this.cleanUpEvents();\n this.hideParent();\n }\n\n showParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.add('sendbird-reactions--pressed');\n }\n }\n\n hideParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.remove('sendbird-reactions--pressed');\n }\n }\n\n setupEvents = () => {\n const { closeDropdown } = this.props;\n const { reactionRef } = this;\n const handleClickOutside = (event) => {\n if (reactionRef.current && !reactionRef.current.contains(event.target)) {\n closeDropdown();\n }\n };\n this.setState({\n handleClickOutside,\n });\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n cleanUpEvents = () => {\n const {\n handleClickOutside,\n } = this.state;\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n getBarPosition = () => {\n const {\n parentRef,\n spaceFromTrigger,\n } = this.props;\n const spaceFromTriggerX = spaceFromTrigger.x || 0;\n const spaceFromTriggerY = spaceFromTrigger.y || 0;\n\n const parentRect = parentRef.current.getBoundingClientRect();\n\n const x = parentRect.x || parentRect.left;\n const y = parentRect.y || parentRect.top;\n\n const reactionStyle = {\n top: y,\n left: x,\n };\n\n if (!this.reactionRef.current) return reactionStyle;\n const rect = this.reactionRef.current.getBoundingClientRect();\n // const childRect = this.reactionRef.current.children[0].getBoundingClientRect();\n\n if (reactionStyle.top < rect.height) {\n reactionStyle.top += parentRect.height;\n reactionStyle.top += spaceFromTriggerY;\n } else {\n reactionStyle.top -= rect.height;\n reactionStyle.top -= spaceFromTriggerY;\n }\n\n reactionStyle.left -= (rect.width / 2);\n reactionStyle.left += (parentRect.height / 2) - 2;\n reactionStyle.left += spaceFromTriggerX;\n\n const maximumLeft = (window.innerWidth - rect.width);\n if (maximumLeft < reactionStyle.left) {\n reactionStyle.left = maximumLeft;\n }\n if (reactionStyle.left < 0) {\n reactionStyle.left = 0;\n }\n\n return this.setState({ reactionStyle });\n }\n\n render() {\n const { reactionStyle } = this.state;\n const { children } = this.props;\n return (\n createPortal(\n <>\n
\n \n >,\n document.getElementById('sendbird-emoji-list-portal'),\n )\n );\n }\n}\nEmojiListItems.propTypes = {\n closeDropdown: PropTypes.func.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n parentRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n parentContainRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n spaceFromTrigger: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n }),\n};\nEmojiListItems.defaultProps = {\n spaceFromTrigger: {},\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport MenuItems_ from './items/MenuItems';\nimport EmojiListItems_ from './items/EmojiListItems';\n\nconst ENTER = 13;\n\nexport const MenuItems = MenuItems_;\nexport const EmojiListItems = EmojiListItems_;\n\nexport const MenuItem = ({ children, onClick, className }) => {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n {\n if (e.keyCode === ENTER) {\n onClick(e);\n }\n }}\n role=\"menuitem\"\n >\n \n {children}\n \n \n );\n};\n\nMenuItem.propTypes = {\n onClick: PropTypes.func.isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]).isRequired,\n};\n\nMenuItem.defaultProps = {\n className: '',\n};\n\nexport const MenuRoot = () => (\n
\n);\n\nexport const EmojiReactionListRoot = () => (\n
\n);\n\nexport default function ContextMenu({ menuTrigger, menuItems }) {\n const [showMenu, setShowMenu] = useState(false);\n\n return (\n \n {menuTrigger(() => setShowMenu(!showMenu))}\n {showMenu && menuItems(() => setShowMenu(false))}\n
\n );\n}\n\nContextMenu.propTypes = {\n menuTrigger: PropTypes.func.isRequired,\n menuItems: PropTypes.func.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes } from '../Icon';\n\nexport default function Loader({\n children,\n className,\n width,\n height,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {children}\n
\n );\n}\n\nLoader.propTypes = {\n children: PropTypes.element,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n};\n\nLoader.defaultProps = {\n children: ,\n className: '',\n width: '26px',\n height: '26px',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Loader from '../Loader';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport _PlaceHolderTypes from './type';\n\nexport const PlaceHolderTypes = _PlaceHolderTypes;\n\nexport default function PlaceHolder({\n className,\n type,\n retryToConnect,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {\n type === PlaceHolderTypes.LOADING\n ? (\n
\n \n \n )\n : null\n }\n {\n type === PlaceHolderTypes.NO_CHANNELS || type === PlaceHolderTypes.WRONG\n ? (\n
\n {\n type === PlaceHolderTypes.NO_CHANNELS && (\n
\n )\n }\n {\n type === PlaceHolderTypes.WRONG && (\n
\n )\n }\n
\n {\n type === PlaceHolderTypes.NO_CHANNELS\n ? stringSet.PLACE_HOLDER__NO_CHANNEL\n : stringSet.PLACE_HOLDER__WRONG\n }\n \n {\n retryToConnect\n ? (\n
\n \n \n {stringSet.PLACE_HOLDER__RETRY_TO_CONNECT}\n \n
\n )\n : null\n }\n
\n )\n : null\n }\n
\n );\n}\n\nPlaceHolder.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n type: PropTypes.oneOfType([\n PropTypes.oneOf(Object.keys(PlaceHolderTypes)),\n PropTypes.string,\n ]).isRequired,\n retryToConnect: PropTypes.func,\n};\n\nPlaceHolder.defaultProps = {\n className: '',\n retryToConnect: null,\n};\n"],"names":["UserProfileContext","React","createContext","disableUserProfile","isOpenChannel","renderUserProfile","UserProfileProvider","props","children","className","propTypes","PropTypes","oneOfType","element","arrayOf","any","isRequired","bool","func","string","defaultProps","ImageRenderer","alt","url","width","height","defaultComponent","circle","injectingClassName","Array","isArray","unshift","useState","realElement","setRealElement","useEffect","join","backgroundRepeat","backgroundPosition","backgroundSize","backgroundImage","borderRadius","number","ADD","ATTACH","ARROW_LEFT","AVATAR_DARK","AVATAR_LIGHT","AVATAR_NO_IMAGE","BROADCAST_LARGE_DARK","BROADCAST_LARGE_LIGHT","BROADCAST_DARK","BROADCAST_LIGHT","BROADCAST","FROZEN_DARK","FROZEN_LIGHT","CAMERA","MORE","MUTE","NO_THUMBNAIL","CHECKBOX","CHECKBOX_OFF","CLOSE","COPY","CHAT","CREATE","DELETE","DISCONNECTED","DUMMY","EDIT","ERROR","ERROR_FILLED","EMOJI_FAILED","EMOJI_REACTIONS_ADD","EMOJI_REACTIONS_ADD_GRAY","DELIVERED","DOCUMENT","DOWNLOAD","FILE_AUDIO","FILE_DOCUMENT","GIF","INFO","LEAVE","MEMBERS","NOTIFICATIONS","PHOTO","PLAY","PLUS","READ","REFRESH","SEND","SENT","SUPER_GROUP","SHEVRON","SHEVRON_DOWN","SPINNER","SPINNER_LARGE","USER","ICON_OPERATOR","ICON_BANNED","ICON_FREEZE","ICON_MUTED","ICON_MUTED_FG","TOGGLE_ON","TOGGLE_OFF","Colors","DEFAULT","PRIMARY","SECONDARY","CONTENT","CONTENT_INVERSE","WHITE","ON_BACKGROUND_2","ON_BACKGROUND_3","BACKGROUND_3","changeColorToClassName","color","changeTypeToIconComponent","type","Type","IconAdd","IconArrowLeft","IconCamera","IconAttach","IconAvatarDark","IconAvatarLight","IconAvatarNoImage","BroadcastLargeDark","BroadcastLargeLight","BroadcastDark","BroadcastLight","Broadcast","FrozenDark","FrozenLight","IconMore","IconMute","IconNoThumbnail","IconCheckbox","IconCheckboxOff","IconClose","IconCopy","IconChat","IconSupergroup","IconCreate","IconDelete","IconDisconnected","IconDummy","IconEdit","IconError","IconErrorFilled","IconEmojiFailed","IconEmojiReactionsAdd","IconEmojiReactionsAddGray","IconDelivered","IconDocument","IconDownload","IconFileAudio","IconFileDocument","IconGif","IconInfo","IconLeave","IconMembers","IconNotifications","IconPhoto","IconPlay","IconPlus","IconRead","IconRefresh","IconSend","IconSent","IconShevron","IconShevronDown","IconSpinner","IconSpinnerLarge","IconUser","IconOperator","IconBanned","IconMuted","IconMutedFg","IconFreeze","ToggleOn","ToggleOff","Icon","onClick","fillColor","iconStyle","minWidth","minHeight","oneOf","Object","keys","IconTypes","IconColors","imageRendererClassName","_a","document","querySelector","AvatarInner","_b","src","_c","length","slice","map","i","uuidv4","Avatar","ref","_d","_e","_f","__spreadArrays","forwardRef","Typography","H_1","H_2","SUBTITLE_1","SUBTITLE_2","BODY_1","BODY_2","BUTTON_1","BUTTON_2","CAPTION_1","CAPTION_2","CAPTION_3","ONBACKGROUND_1","ONBACKGROUND_2","ONBACKGROUND_3","ONCONTENT_1","ONCONTENT_2","SECONDARY_3","changeTypographyToClassName","CLASS_NAME","Label","push","LabelTypography","LabelColors","LabelStringSet","getStringSet","IconButton","disabled","onBlur","style","pressed","setPressed","e","shape","MODAL_ROOT","DANGER","DISABLED","Size","BIG","SMALL","changeTypeToClassName","changeSizeToClassName","size","Button","injectingClassNames","ModalHeader","titleText","ModalBody","ModalFooter","onSubmit","onCancel","submitText","useContext","LocalizationContext","stringSet","ButtonTypes","BUTTON__CANCEL","Modal","hideFooter","createPortal","getElementById","ONBACKGROUND_4","TextButton","notUnderline","Types","LOADING","NO_CHANNELS","WRONG","SEND_MESSAGE_START","SEND_USER_MESSAGE","SEND_FILE_MESSAGE","UPDATE_USER_MESSAGE","DELETE_MESSAGE","LEAVE_CHANNEL","CREATE_CHANNEL","getSdk","store","stores","sdkStore","sdk","getPubSub","config","pubSub","getConnect","userId","accessToken","Promise","resolve","reject","Error","connect","then","res","catch","err","getDisconnect","disconnect","getUpdateUserInfo","nickName","profileUrl","updateCurrentUserInfo","getSendUserMessage","channelUrl","userMessageParams","pubsub","GroupChannel","getChannel","channel","promisify","pendingMsg","pendingPromise","resolve_","reject_","sendUserMessage","swapParams","getErrorFirstCallback","message","error","publish","topics","get","getSendFileMessage","fileMessageParams","sendFileMessage","file","localUrl","URL","createObjectURL","fileUrl","requestState","getUpdateUserMessage","messageId","params","updateUserMessage","fromSelector","getDeleteMessage","deleteMessage","getResendUserMessage","failedMessage","resendUserMessage","getResendFileMessage","resendFileMessage","getCreateChannel","createChannel","getLeaveChannel","leave","getFreezeChannel","freeze","getUnFreezeChannel","unfreeze","getCreateOpenChannel","OpenChannel","enterOpenChannel","openChannel","enter","response","enterError","exitOpenChannel","exit","exitError","getOpenChannelSendUserMessage","getOpenChannelSendFileMessage","getOpenChannelUpdateUserMessage","getOpenChannelDeleteMessage","getOpenChannelResendUserMessage","getOpenChannelResendFileMessage","UserProfile","user","currentUserId","logger","disableMessaging","onSuccess","nickname","NO_NAME","GroupChannelParams","isDistinct","addUserIds","groupChannel","info","USER_PROFILE__MESSAGE","USER_PROFILE__USER_ID","mapStoreToProps","ConnectedUserProfile","withSendbirdContext","MenuItems","parentContainRef","current","classList","add","remove","closeDropdown","menuRef","handleClickOutside","event","contains","target","setState","addEventListener","state","removeEventListener","parentRef","openLeft","parentRect","getBoundingClientRect","x","left","y","top","menuStyle","window","innerWidth","innerHeight","rect","padding","Number","isNaN","createRef","setupEvents","getMenuPosition","showParent","cleanUpEvents","hideParent","display","position","Math","round","Component","instanceOf","Element","componentClassName","SortByRow","maxItemCount","itemWidth","itemHeight","result","EmojiListItems","reactionRef","spaceFromTrigger","spaceFromTriggerX","spaceFromTriggerY","reactionStyle","maximumLeft","getBarPosition","ENTER","MenuItems_","EmojiListItems_","MenuItem","keyCode","ContextMenu","menuTrigger","menuItems","showMenu","setShowMenu","Loader","PlaceHolderTypes","_PlaceHolderTypes","PlaceHolder","retryToConnect","PLACE_HOLDER__NO_CHANNEL","PLACE_HOLDER__WRONG","PLACE_HOLDER__RETRY_TO_CONNECT"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACqEA,IAAMC,MAAM,GAAG;AACbC,EAAAA,OAAO,EAAE,SADI;AAEbC,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"}
\ No newline at end of file
diff --git a/dist/cjs/index-63161cb1.js b/dist/cjs/index-63161cb1.js
new file mode 100644
index 0000000..f19d64c
--- /dev/null
+++ b/dist/cjs/index-63161cb1.js
@@ -0,0 +1,92 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var React = require('react');
+var React__default = _interopDefault(React);
+var index$1 = require('./index-49d966e1.js');
+var utils = require('./utils-6aedec02.js');
+
+var Context = React__default.createContext({
+ opened: '',
+ setOpened: utils.noop
+});
+var Consumer = Context.Consumer;
+var Provider = Context.Provider;
+
+// Wraps all the accordions in an accordion set
+function AccordionGroup(_a) {
+ var children = _a.children,
+ _b = _a.className,
+ className = _b === void 0 ? '' : _b;
+
+ var _c = React.useState(''),
+ opened = _c[0],
+ setOpened = _c[1];
+
+ return React__default.createElement(Provider, {
+ value: {
+ opened: opened,
+ setOpened: setOpened
+ }
+ }, React__default.createElement("div", {
+ className: className
+ }, children));
+}
+
+function Accordion(_a) {
+ var id = _a.id,
+ renderTitle = _a.renderTitle,
+ renderContent = _a.renderContent,
+ renderFooter = _a.renderFooter,
+ className = _a.className;
+
+ var _b = React.useState(false),
+ showAccordion = _b[0],
+ setShowAccordion = _b[1];
+
+ return React__default.createElement(Consumer, null, function (value) {
+ var opened = value.opened,
+ setOpened = value.setOpened;
+
+ if (id === opened) {
+ setShowAccordion(true);
+ } else {
+ setShowAccordion(false);
+ }
+
+ var handleClick = function handleClick() {
+ if (showAccordion) {
+ setOpened('');
+ } else {
+ setOpened(id);
+ }
+ };
+
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
+ id: id,
+ role: "switch",
+ "aria-checked": false,
+ tabIndex: 0,
+ onKeyDown: handleClick,
+ className: "sendbird-accordion__panel-heder " + className,
+ onClick: handleClick
+ }, renderTitle(), React__default.createElement(index$1.Icon, {
+ type: index$1.IconTypes.SHEVRON,
+ className: ['sendbird-accordion__panel-icon-right', 'sendbird-accordion__panel-icon--chevron', showAccordion ? 'sendbird-accordion__panel-icon--open' : ''].join(' '),
+ height: "24px",
+ width: "24px"
+ })), showAccordion && React__default.createElement("div", {
+ className: "sendbird-accordion"
+ }, React__default.createElement("div", {
+ className: "sendbird-accordion__list"
+ }, renderContent()), renderFooter && React__default.createElement("div", {
+ className: "sendbird-accordion__footer"
+ }, renderFooter())));
+ });
+}
+var AccordionGroup$1 = AccordionGroup;
+
+exports.Accordion = Accordion;
+exports.AccordionGroup = AccordionGroup$1;
+//# sourceMappingURL=index-63161cb1.js.map
diff --git a/dist/cjs/index-63161cb1.js.map b/dist/cjs/index-63161cb1.js.map
new file mode 100644
index 0000000..87c22a6
--- /dev/null
+++ b/dist/cjs/index-63161cb1.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index-8abf69b8.js","sources":["../../../src/ui/Accordion/context.ts","../../../src/ui/Accordion/AccordionGroup.tsx","../../../src/ui/Accordion/index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { noop } from '../../utils/utils';\n\ninterface ContextValue {\n setOpened(accordion: string): void;\n opened: string;\n}\n\nconst Context = React.createContext({\n opened: '', // mock default value\n setOpened: noop,\n});\n\nexport const Consumer = Context.Consumer;\nexport const Provider = Context.Provider;\n","// Wraps all the accordions in an accordion set\n// keep one accordion open at a time\nimport React, { ReactElement, useState } from 'react';\n\nimport { Provider } from './context';\n\ninterface Props {\n children: ReactElement[] | ReactElement;\n defaultOpened?: string;\n className?: string;\n}\n\nexport default function AccordionGroup({\n children,\n className = '',\n}: Props): ReactElement {\n const [opened, setOpened] = useState('');\n return (\n \n { children }
\n \n )\n}\n","import './index.scss';\n\nimport React, { ReactElement, useState } from 'react';\n\nimport AccordionGroup_ from './AccordionGroup';\nimport { Consumer } from './context';\n\nimport Icon, {\n IconTypes,\n} from '../Icon';\n\ninterface Props {\n id: string;\n className?: string;\n renderTitle(): ReactElement;\n renderContent(): ReactElement;\n renderFooter?(): ReactElement;\n}\n\nexport default function Accordion({\n id,\n renderTitle,\n renderContent,\n renderFooter,\n className,\n}: Props): ReactElement {\n const [showAccordion, setShowAccordion] = useState(false);\n return (\n \n {\n (value) => {\n const { opened, setOpened } = value;\n if (id === opened) {\n setShowAccordion(true);\n } else {\n setShowAccordion(false);\n }\n const handleClick = () => {\n if (showAccordion) {\n setOpened('');\n } else {\n setOpened(id);\n }\n }\n return (\n <>\n \n { renderTitle() }\n \n
\n {\n showAccordion && (\n \n
\n { renderContent() }\n
\n {\n renderFooter && (\n
\n { renderFooter() }\n
\n )\n }\n
\n )\n }\n >);\n }\n }\n \n )\n}\n\nexport const AccordionGroup = AccordionGroup_;\n"],"names":["Context","React","createContext","opened","setOpened","noop","Consumer","Provider","AccordionGroup","_a","children","_b","className","_c","useState","Accordion","id","renderTitle","renderContent","renderFooter","showAccordion","setShowAccordion","value","handleClick","Icon","IconTypes","SHEVRON","join","AccordionGroup_"],"mappings":";;;;;;;;;AASA,IAAMA,OAAO,GAAGC,cAAK,CAACC,aAAN,CAAkC;AAChDC,EAAAA,MAAM,EAAE,EADwC;AAEhDC,EAAAA,SAAS,EAAEC;AAFqC,CAAlC,CAAhB;AAKO,IAAMC,QAAQ,GAAGN,OAAO,CAACM,QAAzB;AACA,IAAMC,QAAQ,GAAGP,OAAO,CAACO,QAAzB;;ACfP;AACA,SAWwBC,eAAeC;MACrCC,QAAQ;MACRC;MAAAC,SAAS,mBAAG;;AAEN,MAAAC,KAAsBC,cAAQ,CAAC,EAAD,CAA9B;AAAA,MAACX,MAAM,QAAP;AAAA,MAASC,SAAS,QAAlB;;AACN,SACEH,6BAAC,QAAD;AAAU,IAAA,KAAK,EAAE;AAAEE,MAAAA,MAAM,QAAR;AAAUC,MAAAA,SAAS;AAAnB;AAAjB,KACEH;AAAK,IAAA,SAAS,EAAEW;AAAhB,KAA6BF,QAA7B,CADF,CADF;AAKD;;SCHuBK,UAAUN;MAChCO,EAAE;MACFC,WAAW;MACXC,aAAa;MACbC,YAAY;MACZP,SAAS;;AAEH,MAAAD,KAAoCG,cAAQ,CAAC,KAAD,CAA5C;AAAA,MAACM,aAAa,QAAd;AAAA,MAAgBC,gBAAgB,QAAhC;;AACN,SACEpB,6BAAC,QAAD,QAEI,UAACqB,KAAD;AACU,QAAAnB,MAAM,GAAgBmB,KAAK,OAA3B;AAAA,QAAQlB,SAAS,GAAKkB,KAAK,UAA3B;;AACR,QAAIN,EAAE,KAAKb,MAAX,EAAmB;AACjBkB,MAAAA,gBAAgB,CAAC,IAAD,CAAhB;AACD,KAFD,MAEO;AACLA,MAAAA,gBAAgB,CAAC,KAAD,CAAhB;AACD;;AACD,QAAME,WAAW,GAAG,SAAdA,WAAc;AAClB,UAAIH,aAAJ,EAAmB;AACjBhB,QAAAA,SAAS,CAAC,EAAD,CAAT;AACD,OAFD,MAEO;AACLA,QAAAA,SAAS,CAACY,EAAD,CAAT;AACD;AACF,KAND;;AAOA,WACEf,4DACEA;AACE,MAAA,EAAE,EAAEe,EADN;AAEE,MAAA,IAAI,EAAC,QAFP;AAGE,sBAAc,KAHhB;AAIE,MAAA,QAAQ,EAAE,CAJZ;AAKE,MAAA,SAAS,EAAEO,WALb;AAME,MAAA,SAAS,EAAE,qCAAmCX,SANhD;AAOE,MAAA,OAAO,EAAEW;AAPX,OASIN,WAAW,EATf,EAUEhB,6BAACuB,YAAD;AACE,MAAA,IAAI,EAAEC,iBAAS,CAACC,OADlB;AAEE,MAAA,SAAS,EAAE,CACT,sCADS,EAET,yCAFS,EAGRN,aAAa,GAAG,sCAAH,GAA4C,EAHjD,EAITO,IAJS,CAIJ,GAJI,CAFb;AAOE,MAAA,MAAM,EAAC,MAPT;AAQE,MAAA,KAAK,EAAC;AARR,MAVF,CADF,EAuBIP,aAAa,IACXnB;AAAK,MAAA,SAAS,EAAC;AAAf,OACEA;AAAK,MAAA,SAAS,EAAC;AAAf,OACIiB,aAAa,EADjB,CADF,EAKIC,YAAY,IACVlB;AAAK,MAAA,SAAS,EAAC;AAAf,OACIkB,YAAY,EADhB,CANN,CAxBN,CADF;AAwCD,GAxDL,CADF;AA6DD;AAED,IAAaX,gBAAc,GAAGoB;;;;;"}
\ No newline at end of file
diff --git a/dist/cjs/index-6e58a4a2.js b/dist/cjs/index-6e58a4a2.js
new file mode 100644
index 0000000..e1f3e6a
--- /dev/null
+++ b/dist/cjs/index-6e58a4a2.js
@@ -0,0 +1,443 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var React = require('react');
+var React__default = _interopDefault(React);
+var PropTypes = _interopDefault(require('prop-types'));
+var index = require('./index-49d966e1.js');
+var reactDom = require('react-dom');
+
+// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
+var SUPPORTED_MIMES = {
+ IMAGE: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp' // not supported in IE
+ ],
+ VIDEO: ['video/mpeg', 'video/ogg', 'video/webm', 'video/mp4']
+};
+var isImage = function isImage(type) {
+ return SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0;
+};
+var isVideo = function isVideo(type) {
+ return SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0;
+};
+var unSupported = function unSupported(type) {
+ return !(isImage(type) || isVideo(type));
+};
+
+var isEmpty = function isEmpty(val) {
+ return val === null || val === undefined;
+}; // Some Ids return string and number inconsistently
+// only use to comapre IDs
+
+
+function compareIds (a, b) {
+ if (isEmpty(a) || isEmpty(b)) {
+ return false;
+ }
+
+ var aString = a.toString();
+ var bString = b.toString();
+ return aString === bString;
+}
+
+function DateSeparator(_ref) {
+ var className = _ref.className,
+ children = _ref.children,
+ separatorColor = _ref.separatorColor;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React__default.createElement("div", {
+ className: [].concat(LocalizationContext._toConsumableArray(injectingClassName), ['sendbird-separator']).join(' ')
+ }, React__default.createElement("div", {
+ className: ["".concat(index.changeColorToClassName(separatorColor), "--background-color"), 'sendbird-separator__left'].join(' ')
+ }), React__default.createElement("div", {
+ className: "sendbird-separator__text"
+ }, children), React__default.createElement("div", {
+ className: ["".concat(index.changeColorToClassName(separatorColor), "--background-color"), 'sendbird-separator__right'].join(' ')
+ }));
+}
+DateSeparator.propTypes = {
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string), PropTypes.element]),
+ separatorColor: PropTypes.string
+};
+DateSeparator.defaultProps = {
+ className: '',
+ children: React__default.createElement(index.Label, {
+ type: index.LabelTypography.CAPTION_2,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, "Date Separator"),
+ separatorColor: index.Colors.ONBACKGROUND_4
+};
+
+// import IconAttach from '../../svgs/icon-attach.svg';
+
+var LINE_HEIGHT = 76;
+
+var noop = function noop() {};
+
+var KeyCode = {
+ SHIFT: 16,
+ ENTER: 13
+};
+
+var handleUploadFile = function handleUploadFile(callback) {
+ return function (event) {
+ if (event.target.files && event.target.files[0]) {
+ callback(event.target.files[0]);
+ } // eslint-disable-next-line no-param-reassign
+
+
+ event.target.value = '';
+ };
+};
+
+var MessageInput = React__default.forwardRef(function (props, ref) {
+ var isEdit = props.isEdit,
+ disabled = props.disabled,
+ value = props.value,
+ name = props.name,
+ placeholder = props.placeholder,
+ maxLength = props.maxLength,
+ onFileUpload = props.onFileUpload,
+ onSendMessage = props.onSendMessage,
+ onCancelEdit = props.onCancelEdit,
+ onStartTyping = props.onStartTyping;
+
+ var _useContext = React.useContext(LocalizationContext.LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var fileInputRef = React.useRef(null);
+
+ var _useState = React.useState(value),
+ _useState2 = LocalizationContext._slicedToArray(_useState, 2),
+ inputValue = _useState2[0],
+ setInputValue = _useState2[1];
+
+ var _useState3 = React.useState(false),
+ _useState4 = LocalizationContext._slicedToArray(_useState3, 2),
+ isShiftPressed = _useState4[0],
+ setIsShiftPressed = _useState4[1];
+
+ var setHeight = function setHeight() {
+ var elem = ref.current;
+ var MAX_HEIGHT = window.document.body.offsetHeight * 0.6;
+
+ if (elem.scrollHeight >= LINE_HEIGHT) {
+ if (MAX_HEIGHT < elem.scrollHeight) {
+ elem.style.height = 'auto';
+ elem.style.height = "".concat(MAX_HEIGHT, "px");
+ } else {
+ elem.style.height = 'auto';
+ elem.style.height = "".concat(elem.scrollHeight, "px");
+ }
+ } else {
+ elem.style.height = '';
+ }
+ }; // after setHeight called twice, the textarea goes to the initialized
+
+
+ React.useEffect(function () {
+ setHeight();
+ return setHeight;
+ }, [inputValue]);
+
+ var sendMessage = function sendMessage() {
+ if (inputValue && inputValue.trim().length > 0) {
+ var trimmedInputValue = inputValue.trim();
+
+ if (isEdit) {
+ onSendMessage(name, trimmedInputValue, function () {
+ onCancelEdit();
+ });
+ } else {
+ onSendMessage(trimmedInputValue);
+ setInputValue('');
+ }
+ }
+ };
+
+ return React__default.createElement("form", {
+ className: "\n ".concat(isEdit ? 'sendbird-message-input__edit' : '', "\n ").concat(disabled ? 'sendbird-message-input-form__disabled' : '', "\n ")
+ }, React__default.createElement("div", {
+ className: "\n sendbird-message-input\n ".concat(disabled ? 'sendbird-message-input__disabled' : '', "\n ")
+ }, React__default.createElement("textarea", {
+ disabled: disabled,
+ ref: ref,
+ name: name,
+ value: inputValue,
+ className: "sendbird-message-input--textarea",
+ maxLength: maxLength,
+ onChange: function onChange(e) {
+ setInputValue(e.target.value);
+ onStartTyping();
+ },
+ onKeyDown: function onKeyDown(e) {
+ if (e.keyCode === KeyCode.SHIFT) {
+ setIsShiftPressed(true);
+ }
+
+ if (!isShiftPressed && e.keyCode === KeyCode.ENTER) {
+ e.preventDefault();
+ sendMessage();
+ }
+ },
+ onKeyUp: function onKeyUp(e) {
+ if (e.keyCode === KeyCode.SHIFT) {
+ setIsShiftPressed(false);
+ }
+ }
+ }), !inputValue && React__default.createElement(index.Label, {
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_3,
+ className: "sendbird-message-input--placeholder"
+ }, placeholder || stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER), !isEdit && inputValue && inputValue.trim().length > 0 && React__default.createElement(index.IconButton, {
+ className: "sendbird-message-input--send",
+ height: "32px",
+ width: "32px",
+ onClick: sendMessage
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.SEND,
+ fillColor: index.IconColors.PRIMARY,
+ width: "20px",
+ height: "20px"
+ })), !isEdit && (!inputValue || !(inputValue.trim().length > 0)) && React__default.createElement(index.IconButton, {
+ className: "sendbird-message-input--attach",
+ height: "32px",
+ width: "32px",
+ onClick: function onClick() {
+ // todo: clear previous input
+ fileInputRef.current.click();
+ }
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.ATTACH,
+ width: "20px",
+ height: "20px"
+ }), React__default.createElement("input", {
+ type: "file",
+ ref: fileInputRef,
+ onChange: handleUploadFile(onFileUpload),
+ className: "sendbird-message-input--attach-input"
+ }))), isEdit && React__default.createElement("div", {
+ className: "sendbird-message-input--edit-action"
+ }, React__default.createElement(index.Button, {
+ className: "sendbird-message-input--edit-action__cancel",
+ type: index.Type.SECONDARY,
+ size: index.Size.SMALL,
+ onClick: onCancelEdit
+ }, stringSet.BUTTON__CANCEL), React__default.createElement(index.Button, {
+ className: "sendbird-message-input--edit-action__save",
+ type: index.Type.PRIMARY,
+ size: index.Size.SMALL,
+ onClick: function onClick() {
+ if (inputValue) {
+ var trimmedInputValue = inputValue.trim();
+ onSendMessage(name, trimmedInputValue, function () {
+ onCancelEdit();
+ });
+ }
+ }
+ }, stringSet.BUTTON__SAVE)));
+});
+MessageInput.propTypes = {
+ placeholder: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
+ isEdit: PropTypes.bool,
+ name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ value: PropTypes.string,
+ disabled: PropTypes.bool,
+ maxLength: PropTypes.number,
+ onFileUpload: PropTypes.func,
+ onSendMessage: PropTypes.func,
+ onStartTyping: PropTypes.func,
+ onCancelEdit: PropTypes.func
+};
+MessageInput.defaultProps = {
+ value: '',
+ onSendMessage: noop,
+ name: 'sendbird-message-input',
+ isEdit: false,
+ disabled: false,
+ placeholder: '',
+ maxLength: 5000,
+ onFileUpload: noop,
+ onCancelEdit: noop,
+ onStartTyping: noop
+};
+
+var FileViewerComponent = function FileViewerComponent(_ref) {
+ var profileUrl = _ref.profileUrl,
+ nickname = _ref.nickname,
+ type = _ref.type,
+ url = _ref.url,
+ name = _ref.name,
+ onClose = _ref.onClose,
+ onDelete = _ref.onDelete,
+ isByMe = _ref.isByMe;
+ return React__default.createElement("div", {
+ className: "sendbird-fileviewer"
+ }, React__default.createElement("div", {
+ className: "sendbird-fileviewer__header"
+ }, React__default.createElement("div", {
+ className: "sendbird-fileviewer__header-left"
+ }, React__default.createElement("div", {
+ className: "sendbird-fileviewer__header-avatar"
+ }, React__default.createElement(index.Avatar, {
+ height: "32px",
+ width: "32px",
+ src: profileUrl
+ })), React__default.createElement(index.Label, {
+ className: "sendbird-fileviewer__header-filename",
+ type: index.LabelTypography.H_2,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, name), React__default.createElement(index.Label, {
+ className: "sendbird-fileviewer__header-sendername",
+ type: index.LabelTypography.BODY_1,
+ color: index.LabelColors.ONBACKGROUND_2
+ }, nickname)), React__default.createElement("div", {
+ className: "sendbird-fileviewer__header-right"
+ }, !unSupported(type) && React__default.createElement("div", {
+ className: "sendbird-fileviewer__header-actions"
+ }, React__default.createElement("a", {
+ href: url,
+ rel: "noopener noreferrer",
+ target: "_blank",
+ className: "sendbird-fileviewer__header-download"
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.DOWNLOAD,
+ height: "24px",
+ width: "24px"
+ })), onDelete && isByMe && React__default.createElement("div", {
+ className: "sendbird-fileviewer__header-delete"
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.DELETE,
+ height: "24px",
+ width: "24px",
+ onClick: onDelete
+ }))), React__default.createElement("div", {
+ className: "sendbird-fileviewer__header-close"
+ }, React__default.createElement(index.Icon, {
+ type: index.IconTypes.CLOSE,
+ height: "24px",
+ width: "24px",
+ onClick: onClose
+ })))), React__default.createElement("div", {
+ className: "sendbird-fileviewer__content"
+ }, isVideo(type) && // eslint-disable-next-line jsx-a11y/media-has-caption
+ React__default.createElement("video", {
+ controls: true,
+ className: "sendbird-fileviewer__video"
+ }, React__default.createElement("source", {
+ src: url,
+ type: type
+ })), isImage(type) && React__default.createElement("img", {
+ src: url,
+ alt: name,
+ className: "sendbird-fileviewer__img"
+ }), unSupported(type) && React__default.createElement("div", {
+ className: "sendbird-fileviewer__unsupported"
+ }, React__default.createElement(index.Label, {
+ type: index.LabelTypography.H_1,
+ color: index.LabelColors.ONBACKGROUND_1
+ }, "Unsupoprted message"))));
+};
+FileViewerComponent.propTypes = {
+ profileUrl: PropTypes.string.isRequired,
+ nickname: PropTypes.string.isRequired,
+ type: PropTypes.string.isRequired,
+ url: PropTypes.string.isRequired,
+ name: PropTypes.string.isRequired,
+ onClose: PropTypes.func.isRequired,
+ onDelete: PropTypes.func.isRequired,
+ isByMe: PropTypes.bool
+};
+FileViewerComponent.defaultProps = {
+ isByMe: true
+};
+function FileViewer(props) {
+ var onClose = props.onClose,
+ message = props.message,
+ onDelete = props.onDelete,
+ isByMe = props.isByMe;
+ var sender = message.sender,
+ type = message.type,
+ url = message.url,
+ _message$name = message.name,
+ name = _message$name === void 0 ? '' : _message$name;
+ var profileUrl = sender.profileUrl,
+ _sender$nickname = sender.nickname,
+ nickname = _sender$nickname === void 0 ? '' : _sender$nickname;
+ return reactDom.createPortal(React__default.createElement(FileViewerComponent, {
+ profileUrl: profileUrl,
+ nickname: nickname,
+ type: type,
+ url: url,
+ name: name,
+ onClose: onClose,
+ onDelete: onDelete,
+ isByMe: isByMe
+ }), document.getElementById(index.MODAL_ROOT));
+}
+FileViewer.propTypes = {
+ onClose: PropTypes.func.isRequired,
+ message: PropTypes.shape({
+ sender: PropTypes.shape({
+ profileUrl: PropTypes.string,
+ nickname: PropTypes.string
+ }),
+ type: PropTypes.string,
+ url: PropTypes.string,
+ name: PropTypes.string
+ }).isRequired,
+ onDelete: PropTypes.func.isRequired,
+ isByMe: PropTypes.bool
+};
+FileViewer.defaultProps = {
+ isByMe: true
+};
+
+var LINK_LABEL = 'sendbird-link-label';
+var http = /https?:\/\//;
+function LinkLabel(_ref) {
+ var className = _ref.className,
+ src = _ref.src,
+ type = _ref.type,
+ color = _ref.color,
+ children = _ref.children;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+
+ if (color) {
+ injectingClassName.push(index.changeColorToClassName$1(color));
+ }
+
+ var url = http.test(src) ? src : "http://".concat(src);
+ return React__default.createElement("a", {
+ className: "".concat(LINK_LABEL, " ").concat(injectingClassName.join(' ')),
+ href: url,
+ target: "_blank",
+ rel: "noopener noreferrer"
+ }, React__default.createElement(index.Label, {
+ type: type,
+ color: color,
+ className: "".concat(LINK_LABEL, "__label")
+ }, children));
+}
+LinkLabel.propTypes = {
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.element)]).isRequired,
+ src: PropTypes.string.isRequired,
+ type: PropTypes.oneOf(Object.keys(index.LabelTypography)).isRequired,
+ color: PropTypes.oneOf(Object.keys(index.LabelColors)).isRequired
+};
+LinkLabel.defaultProps = {
+ className: ''
+};
+
+exports.DateSeparator = DateSeparator;
+exports.FileViewer = FileViewer;
+exports.LinkLabel = LinkLabel;
+exports.MessageInput = MessageInput;
+exports.compareIds = compareIds;
+exports.isImage = isImage;
+exports.isVideo = isVideo;
+exports.unSupported = unSupported;
+//# sourceMappingURL=index-6e58a4a2.js.map
diff --git a/dist/cjs/index-6e58a4a2.js.map b/dist/cjs/index-6e58a4a2.js.map
new file mode 100644
index 0000000..3c113be
--- /dev/null
+++ b/dist/cjs/index-6e58a4a2.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index-19f570c9.js","sources":["../../../src/ui/FileViewer/types.js","../../../src/utils/compareIds.js","../../../src/ui/DateSeparator/index.jsx","../../../src/ui/MessageInput/index.jsx","../../../src/ui/FileViewer/index.jsx","../../../src/ui/LinkLabel/index.jsx"],"sourcesContent":["// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\nconst SUPPORTED_MIMES = {\n IMAGE: [\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif',\n 'image/webp', // not supported in IE\n ],\n VIDEO: [\n 'video/mpeg',\n 'video/ogg',\n 'video/webm',\n 'video/mp4',\n ],\n};\n\nexport const isImage = (type) => SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0;\nexport const isVideo = (type) => SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0;\nexport const unSupported = (type) => !(isImage(type) || isVideo(type));\n\nexport default SUPPORTED_MIMES;\n","const isEmpty = (val) => (val === null || val === undefined);\n\n// Some Ids return string and number inconsistently\n// only use to comapre IDs\nexport default function (a, b) {\n if (isEmpty(a) || isEmpty(b)) {\n return false;\n }\n const aString = a.toString();\n const bString = b.toString();\n return aString === bString;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { changeColorToClassName, Colors } from '../../utils/color';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nexport default function DateSeparator({\n className,\n children,\n separatorColor,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n );\n}\n\nDateSeparator.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.element,\n ]),\n separatorColor: PropTypes.string,\n};\n\nDateSeparator.defaultProps = {\n className: '',\n children: (\n \n Date Separator\n \n ),\n separatorColor: Colors.ONBACKGROUND_4,\n};\n","import React, {\n useState,\n useRef,\n useEffect,\n useContext,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport IconButton from '../IconButton';\nimport Button from '../Button';\nimport { Type, Size } from '../Button/type';\n\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n// import IconSend from '../../svgs/icon-send.svg';\n// import IconAttach from '../../svgs/icon-attach.svg';\n\nconst LINE_HEIGHT = 76;\nconst noop = () => { };\nconst KeyCode = {\n SHIFT: 16,\n ENTER: 13,\n};\n\nconst handleUploadFile = (callback) => (event) => {\n if (event.target.files && event.target.files[0]) {\n callback(event.target.files[0]);\n }\n // eslint-disable-next-line no-param-reassign\n event.target.value = '';\n};\n\nconst MessageInput = React.forwardRef((props, ref) => {\n const {\n isEdit,\n disabled,\n value,\n name,\n placeholder,\n maxLength,\n onFileUpload,\n onSendMessage,\n onCancelEdit,\n onStartTyping,\n } = props;\n\n const { stringSet } = useContext(LocalizationContext);\n const fileInputRef = useRef(null);\n const [inputValue, setInputValue] = useState(value);\n const [isShiftPressed, setIsShiftPressed] = useState(false);\n\n const setHeight = () => {\n const elem = ref.current;\n const MAX_HEIGHT = window.document.body.offsetHeight * 0.6;\n if (elem.scrollHeight >= LINE_HEIGHT) {\n if (MAX_HEIGHT < elem.scrollHeight) {\n elem.style.height = 'auto';\n elem.style.height = `${MAX_HEIGHT}px`;\n } else {\n elem.style.height = 'auto';\n elem.style.height = `${elem.scrollHeight}px`;\n }\n } else {\n elem.style.height = '';\n }\n };\n\n // after setHeight called twice, the textarea goes to the initialized\n useEffect(() => {\n setHeight();\n return setHeight;\n }, [inputValue]);\n\n const sendMessage = () => {\n if (inputValue && inputValue.trim().length > 0) {\n const trimmedInputValue = inputValue.trim();\n if (isEdit) {\n onSendMessage(name, trimmedInputValue, () => {\n onCancelEdit();\n });\n } else {\n onSendMessage(trimmedInputValue);\n setInputValue('');\n }\n }\n };\n\n return (\n \n );\n});\n\nMessageInput.propTypes = {\n placeholder: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n isEdit: PropTypes.bool,\n name: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n value: PropTypes.string,\n disabled: PropTypes.bool,\n maxLength: PropTypes.number,\n onFileUpload: PropTypes.func,\n onSendMessage: PropTypes.func,\n onStartTyping: PropTypes.func,\n onCancelEdit: PropTypes.func,\n};\n\nMessageInput.defaultProps = {\n value: '',\n onSendMessage: noop,\n name: 'sendbird-message-input',\n isEdit: false,\n disabled: false,\n placeholder: '',\n maxLength: 5000,\n onFileUpload: noop,\n onCancelEdit: noop,\n onStartTyping: noop,\n};\n\nexport default MessageInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\n\nimport './index.scss';\nimport Avatar from '../Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconTypes } from '../Icon';\nimport { MODAL_ROOT } from '../../hooks/useModal/ModalRoot';\n\nimport { isImage, isVideo, unSupported } from './types';\n\nexport const FileViewerComponent = ({\n profileUrl,\n nickname,\n type,\n url,\n name,\n onClose,\n onDelete,\n isByMe,\n}) => (\n \n
\n
\n
\n
\n {name}\n \n
\n {nickname}\n \n
\n
\n {\n !unSupported(type) && (\n
\n
\n \n \n {\n onDelete && isByMe && (\n
\n \n
\n )\n }\n
\n )\n }\n
\n \n
\n
\n
\n
\n {isVideo(type) && (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n
\n \n \n )}\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n \n Unsupoprted message\n \n
\n )\n }\n
\n
\n);\n\nFileViewerComponent.propTypes = {\n profileUrl: PropTypes.string.isRequired,\n nickname: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n isByMe: PropTypes.bool,\n};\n\nFileViewerComponent.defaultProps = {\n isByMe: true,\n};\n\nexport default function FileViewer(props) {\n const {\n onClose,\n message,\n onDelete,\n isByMe,\n } = props;\n const {\n sender,\n type,\n url,\n name = '',\n } = message;\n const { profileUrl, nickname = '' } = sender;\n return createPortal(\n (\n \n ),\n document.getElementById(MODAL_ROOT),\n );\n}\n\nFileViewer.propTypes = {\n onClose: PropTypes.func.isRequired,\n message: PropTypes.shape({\n sender: PropTypes.shape({\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n }),\n type: PropTypes.string,\n url: PropTypes.string,\n name: PropTypes.string,\n }).isRequired,\n onDelete: PropTypes.func.isRequired,\n isByMe: PropTypes.bool,\n};\n\nFileViewer.defaultProps = {\n isByMe: true,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { changeColorToClassName } from '../Label/utils';\nimport './index.scss';\n\nconst LINK_LABEL = 'sendbird-link-label';\nconst http = /https?:\\/\\//;\n\nexport default function LinkLabel({\n className,\n src,\n type,\n color,\n children,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n if (color) {\n injectingClassName.push(changeColorToClassName(color));\n }\n const url = (http.test(src)) ? src : `http://${src}`;\n\n return (\n \n \n {children}\n \n \n );\n}\n\nLinkLabel.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n src: PropTypes.string.isRequired,\n type: PropTypes.oneOf(Object.keys(LabelTypography)).isRequired,\n color: PropTypes.oneOf(Object.keys(LabelColors)).isRequired,\n};\n\nLinkLabel.defaultProps = {\n className: '',\n};\n\nexport const LinkLabelTypography = LabelTypography;\nexport const LinkLabelColors = LabelColors;\n"],"names":["SUPPORTED_MIMES","IMAGE","VIDEO","isImage","type","indexOf","isVideo","unSupported","isEmpty","val","undefined","a","b","aString","toString","bString","DateSeparator","className","children","separatorColor","injectingClassName","Array","isArray","React","join","changeColorToClassName","propTypes","PropTypes","oneOfType","string","arrayOf","element","defaultProps","Label","LabelTypography","CAPTION_2","LabelColors","ONBACKGROUND_2","Colors","ONBACKGROUND_4","LINE_HEIGHT","noop","KeyCode","SHIFT","ENTER","handleUploadFile","callback","event","target","files","value","MessageInput","forwardRef","props","ref","isEdit","disabled","name","placeholder","maxLength","onFileUpload","onSendMessage","onCancelEdit","onStartTyping","useContext","LocalizationContext","stringSet","fileInputRef","useRef","useState","inputValue","setInputValue","isShiftPressed","setIsShiftPressed","setHeight","elem","current","MAX_HEIGHT","window","document","body","offsetHeight","scrollHeight","style","height","useEffect","sendMessage","trim","length","trimmedInputValue","e","keyCode","preventDefault","BODY_1","ONBACKGROUND_3","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER","IconButton","Icon","IconTypes","SEND","IconColors","PRIMARY","click","ATTACH","Button","Type","SECONDARY","Size","SMALL","BUTTON__CANCEL","BUTTON__SAVE","bool","number","func","FileViewerComponent","profileUrl","nickname","url","onClose","onDelete","isByMe","Avatar","H_2","ONBACKGROUND_1","DOWNLOAD","DELETE","CLOSE","H_1","isRequired","FileViewer","message","sender","createPortal","getElementById","MODAL_ROOT","shape","LINK_LABEL","http","LinkLabel","src","color","push","test","oneOf","Object","keys"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/cjs/index-994f886d.js b/dist/cjs/index-994f886d.js
new file mode 100644
index 0000000..8545bc7
--- /dev/null
+++ b/dist/cjs/index-994f886d.js
@@ -0,0 +1,48 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var React = require('react');
+var React__default = _interopDefault(React);
+var index = require('./index-49d966e1.js');
+var utils = require('./utils-6aedec02.js');
+
+function ChannelAvatar(_a) {
+ var channel = _a.channel,
+ userId = _a.userId,
+ theme = _a.theme,
+ _b = _a.height,
+ height = _b === void 0 ? 56 : _b,
+ _c = _a.width,
+ width = _c === void 0 ? 56 : _c;
+ var isBroadcast = channel.isBroadcast;
+ var memoizedAvatar = React.useMemo(function () {
+ return isBroadcast ? utils.useDefaultAvatar(channel) ? theme === 'dark' ? React__default.createElement(index.Icon, {
+ type: index.IconTypes.BROADCAST_LARGE_DARK,
+ width: width,
+ height: height,
+ className: "sendbird-chat-header__default--broadcast-channel-dark"
+ }) : React__default.createElement(index.Icon, {
+ type: index.IconTypes.BROADCAST_LARGE_LIGHT,
+ width: width,
+ height: height,
+ className: "sendbird-chat-header__default--broadcast-channel-light"
+ }) : React__default.createElement(index.Avatar, {
+ className: "sendbird-chat-header__avatar--broadcast-channel",
+ src: utils.getChannelAvatarSource(channel, userId),
+ width: width,
+ height: height,
+ alt: channel.name
+ }) : React__default.createElement(index.Avatar, {
+ className: "sendbird-chat-header__avatar--group-channel",
+ src: utils.getChannelAvatarSource(channel, userId),
+ width: width + "px",
+ height: height + "px",
+ alt: channel.name
+ });
+ }, [channel.members, channel.coverUrl, theme]);
+ return React__default.createElement(React__default.Fragment, null, memoizedAvatar);
+}
+
+exports.ChannelAvatar = ChannelAvatar;
+//# sourceMappingURL=index-994f886d.js.map
diff --git a/dist/cjs/index-994f886d.js.map b/dist/cjs/index-994f886d.js.map
new file mode 100644
index 0000000..d5efd35
--- /dev/null
+++ b/dist/cjs/index-994f886d.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index-aebda3d2.js","sources":["../../../src/ui/ChannelAvatar/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\n\nimport Avatar from '../Avatar/index';\nimport Icon, { IconTypes } from '../Icon';\n\nimport * as utils from './utils';\n\ninterface Props {\n channel: SendBird.GroupChannel;\n userId: string;\n theme: string;\n height?: number,\n width?: number,\n}\n\nfunction ChannelAvatar({\n channel,\n userId,\n theme,\n height = 56,\n width = 56,\n}: Props): JSX.Element{\n const { isBroadcast } = channel;\n const memoizedAvatar = useMemo(() => (\n isBroadcast\n ? (\n utils.useDefaultAvatar(channel)\n ? (\n theme === 'dark'\n ? (\n \n )\n : (\n \n )\n )\n : (\n \n )\n )\n : (\n \n )\n ),[channel.members, channel.coverUrl, theme]);\n return (\n <>{ memoizedAvatar }>\n );\n}\n\nexport default ChannelAvatar;\n"],"names":["ChannelAvatar","_a","channel","userId","theme","_b","height","_c","width","isBroadcast","memoizedAvatar","useMemo","utils","React","Icon","IconTypes","BROADCAST_LARGE_DARK","BROADCAST_LARGE_LIGHT","Avatar","name","members","coverUrl"],"mappings":";;;;;;;;;AAeA,SAASA,aAAT,CAAuBC,EAAvB;MACEC,OAAO;MACPC,MAAM;MACNC,KAAK;MACLC;MAAAC,MAAM,mBAAG;MACTC;MAAAC,KAAK,mBAAG;AAEA,MAAAC,WAAW,GAAKP,OAAO,YAAvB;AACR,MAAMQ,cAAc,GAAGC,aAAO,CAAC;AAAM,WACnCF,WAAW,GAEPG,sBAAA,CAAuBV,OAAvB,IAEIE,KAAK,KAAK,MAAV,GAEIS,6BAACC,UAAD;AACE,MAAA,IAAI,EAAEC,eAAS,CAACC,oBADlB;AAEE,MAAA,KAAK,EAAER,KAFT;AAGE,MAAA,MAAM,EAAEF,MAHV;AAIE,MAAA,SAAS,EAAC;AAJZ,MAFJ,GAUIO,6BAACC,UAAD;AACE,MAAA,IAAI,EAAEC,eAAS,CAACE,qBADlB;AAEE,MAAA,KAAK,EAAET,KAFT;AAGE,MAAA,MAAM,EAAEF,MAHV;AAIE,MAAA,SAAS,EAAC;AAJZ,MAZR,GAqBIO,6BAACK,YAAD;AACE,MAAA,SAAS,EAAC,iDADZ;AAEE,MAAA,GAAG,EAAEN,4BAAA,CAA6BV,OAA7B,EAAsCC,MAAtC,CAFP;AAGE,MAAA,KAAK,EAAEK,KAHT;AAIE,MAAA,MAAM,EAAEF,MAJV;AAKE,MAAA,GAAG,EAAEJ,OAAO,CAACiB;AALf,MAvBG,GAiCPN,6BAACK,YAAD;AACE,MAAA,SAAS,EAAC,6CADZ;AAEE,MAAA,GAAG,EAAEN,4BAAA,CAA6BV,OAA7B,EAAsCC,MAAtC,CAFP;AAGE,MAAA,KAAK,EAAKK,KAAK,OAHjB;AAIE,MAAA,MAAM,EAAKF,MAAM,OAJnB;AAKE,MAAA,GAAG,EAAEJ,OAAO,CAACiB;AALf,MAlC+B;AA0CpC,GA1C6B,EA0C5B,CAACjB,OAAO,CAACkB,OAAT,EAAkBlB,OAAO,CAACmB,QAA1B,EAAoCjB,KAApC,CA1C4B,CAA9B;AA2CA,SACES,4DAAIH,cAAJ,CADF;AAGD;;;;"}
\ No newline at end of file
diff --git a/dist/cjs/index.js b/dist/cjs/index.js
new file mode 100644
index 0000000..0d29315
--- /dev/null
+++ b/dist/cjs/index.js
@@ -0,0 +1,50 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var LocalizationContext = require('./LocalizationContext-7c9df62c.js');
+var SendbirdProvider = require('./SendbirdProvider.js');
+require('react');
+require('prop-types');
+require('sendbird');
+require('./actionTypes-920b541f.js');
+require('css-vars-ponyfill');
+var index$1 = require('./index-49d966e1.js');
+var ChannelList = require('./ChannelList.js');
+require('./utils-6aedec02.js');
+require('./index-994f886d.js');
+require('./LeaveChannel-4cf3cd9c.js');
+require('date-fns/isToday');
+require('date-fns/format');
+require('date-fns/isYesterday');
+require('./type-c7a3bee7.js');
+require('./utils-a8277ca2.js');
+require('react-dom');
+require('./index-21269166.js');
+var Channel = require('./Channel.js');
+require('./index-6e58a4a2.js');
+require('date-fns/isSameDay');
+require('./utils-c8e36c68.js');
+require('date-fns/formatDistanceToNowStrict');
+var ChannelSettings = require('./ChannelSettings.js');
+require('./index-63161cb1.js');
+var App = require('./App.js');
+var OpenChannel = require('./OpenChannel.js');
+var OpenChannelSettings = require('./OpenChannelSettings.js');
+
+
+
+exports.getStringSet = LocalizationContext.getStringSet;
+exports.withSendBird = LocalizationContext.withSendbirdContext;
+exports.SendBirdProvider = SendbirdProvider;
+exports.sendBirdSelectors = index$1.selectors;
+exports.ChannelList = ChannelList;
+exports.Channel = Channel.default;
+exports.getAllEmojisFromEmojiContainer = Channel.getAllEmojisFromEmojiContainer;
+exports.getEmojiCategoriesFromEmojiContainer = Channel.getEmojiCategoriesFromEmojiContainer;
+exports.getEmojisFromEmojiContainer = Channel.getEmojisFromEmojiContainer;
+exports.ChannelSettings = ChannelSettings;
+exports.App = App;
+exports.OpenChannel = OpenChannel.default;
+exports.OpenChannelSettings = OpenChannelSettings;
+//# sourceMappingURL=index.js.map
diff --git a/dist/cjs/index.js.map b/dist/cjs/index.js.map
new file mode 100644
index 0000000..9cfae49
--- /dev/null
+++ b/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
\ No newline at end of file
diff --git a/dist/cjs/type-c7a3bee7.js b/dist/cjs/type-c7a3bee7.js
new file mode 100644
index 0000000..0920ef9
--- /dev/null
+++ b/dist/cjs/type-c7a3bee7.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var MessageStatusType = {
+ PENDING: 'PENDING',
+ SENT: 'SENT',
+ DELIVERED: 'DELIVERED',
+ READ: 'READ',
+ FAILED: 'FAILED'
+};
+
+exports.MessageStatusType = MessageStatusType;
+//# sourceMappingURL=type-c7a3bee7.js.map
diff --git a/dist/cjs/type-c7a3bee7.js.map b/dist/cjs/type-c7a3bee7.js.map
new file mode 100644
index 0000000..59242df
--- /dev/null
+++ b/dist/cjs/type-c7a3bee7.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"type-0296584d.js","sources":["../../../src/ui/MessageStatus/type.js"],"sourcesContent":["const MessageStatusType = {\n PENDING: 'PENDING',\n SENT: 'SENT',\n DELIVERED: 'DELIVERED',\n READ: 'READ',\n FAILED: 'FAILED',\n};\n\nexport default MessageStatusType;\n"],"names":["MessageStatusType","PENDING","SENT","DELIVERED","READ","FAILED"],"mappings":";;AAAA,IAAMA,iBAAiB,GAAG;AACxBC,EAAAA,OAAO,EAAE,SADe;AAExBC,EAAAA,IAAI,EAAE,MAFkB;AAGxBC,EAAAA,SAAS,EAAE,WAHa;AAIxBC,EAAAA,IAAI,EAAE,MAJkB;AAKxBC,EAAAA,MAAM,EAAE;AALgB,CAA1B;;;;"}
\ No newline at end of file
diff --git a/dist/cjs/utils-6aedec02.js b/dist/cjs/utils-6aedec02.js
new file mode 100644
index 0000000..a76caad
--- /dev/null
+++ b/dist/cjs/utils-6aedec02.js
@@ -0,0 +1,57 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var format = _interopDefault(require('date-fns/format'));
+
+var DEFAULT_URL_PREFIX = 'https://static.sendbird.com/sample/cover/cover_';
+var getOpenChannelAvatar = function getOpenChannelAvatar(channel) {
+ if (channel && channel.coverUrl) {
+ return channel.coverUrl;
+ }
+};
+var getChannelAvatarSource = function getChannelAvatarSource(channel, currentUserId) {
+ if (channel && channel.coverUrl) {
+ if (!new RegExp("^" + DEFAULT_URL_PREFIX).test(channel.coverUrl)) {
+ return channel.coverUrl;
+ }
+ }
+
+ return channel && channel.members ? channel.members.filter(function (member) {
+ return member.userId !== currentUserId;
+ }).map(function (_a) {
+ var profileUrl = _a.profileUrl;
+ return profileUrl;
+ }) : [];
+};
+var useDefaultAvatar = function useDefaultAvatar(channel) {
+ if (channel && channel.coverUrl) {
+ if (new RegExp("^" + DEFAULT_URL_PREFIX).test(channel.coverUrl)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ return true;
+};
+
+var noop = function noop() {};
+var getMessageCreatedAt = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+var getSenderName = function getSenderName(message) {
+ return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
+};
+var getSenderProfileUrl = function getSenderProfileUrl(message) {
+ return message.sender && message.sender.profileUrl;
+};
+
+exports.getChannelAvatarSource = getChannelAvatarSource;
+exports.getMessageCreatedAt = getMessageCreatedAt;
+exports.getOpenChannelAvatar = getOpenChannelAvatar;
+exports.getSenderName = getSenderName;
+exports.getSenderProfileUrl = getSenderProfileUrl;
+exports.noop = noop;
+exports.useDefaultAvatar = useDefaultAvatar;
+//# sourceMappingURL=utils-6aedec02.js.map
diff --git a/dist/cjs/utils-6aedec02.js.map b/dist/cjs/utils-6aedec02.js.map
new file mode 100644
index 0000000..7c1c009
--- /dev/null
+++ b/dist/cjs/utils-6aedec02.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils-53ba1773.js","sources":["../../../src/ui/ChannelAvatar/utils.ts","../../../src/utils/utils.js"],"sourcesContent":["export const DEFAULT_URL_PREFIX = 'https://static.sendbird.com/sample/cover/cover_';\n\nexport const getOpenChannelAvatar = (channel: SendBird.OpenChannel): string => {\n if (channel && channel.coverUrl) {\n return channel.coverUrl;\n }\n};\n\nexport const getChannelAvatarSource = (channel: SendBird.GroupChannel, currentUserId: string): string | string[] => {\n if (channel && channel.coverUrl) {\n if (!(new RegExp(`^${DEFAULT_URL_PREFIX}`).test(channel.coverUrl))) {\n return channel.coverUrl;\n }\n }\n\n return channel && channel.members\n ? channel.members\n .filter((member) => member.userId !== currentUserId)\n .map(({ profileUrl }) => profileUrl)\n : [];\n};\n\n\nexport const useDefaultAvatar = (channel: SendBird.GroupChannel): boolean => {\n if (channel && channel.coverUrl) {\n if (new RegExp(`^${DEFAULT_URL_PREFIX}`).test(channel.coverUrl)) {\n return true;\n }\n return false;\n }\n return true;\n}\n","import format from 'date-fns/format';\n\nexport const noop = () => {};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport default {\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n};\n"],"names":["DEFAULT_URL_PREFIX","getOpenChannelAvatar","channel","coverUrl","getChannelAvatarSource","currentUserId","RegExp","test","members","filter","member","userId","map","_a","profileUrl","useDefaultAvatar","noop","getMessageCreatedAt","message","format","createdAt","getSenderName","sender","friendName","nickname","getSenderProfileUrl"],"mappings":";;;;;;AAAO,IAAMA,kBAAkB,GAAG,iDAA3B;IAEMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,OAAD;AAClC,MAAIA,OAAO,IAAIA,OAAO,CAACC,QAAvB,EAAiC;AAC/B,WAAOD,OAAO,CAACC,QAAf;AACD;AACF;IAEYC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACF,OAAD,EAAiCG,aAAjC;AACpC,MAAIH,OAAO,IAAIA,OAAO,CAACC,QAAvB,EAAiC;AAC/B,QAAI,CAAE,IAAIG,MAAJ,CAAW,MAAIN,kBAAf,EAAqCO,IAArC,CAA0CL,OAAO,CAACC,QAAlD,CAAN,EAAoE;AAClE,aAAOD,OAAO,CAACC,QAAf;AACD;AACF;;AAED,SAAOD,OAAO,IAAIA,OAAO,CAACM,OAAnB,GACHN,OAAO,CAACM,OAAR,CACCC,MADD,CACQ,UAACC,MAAD;AAAY,WAAAA,MAAM,CAACC,MAAP,KAAkBN,aAAlB;AAA+B,GADnD,EAECO,GAFD,CAEK,UAACC,EAAD;QAAGC,UAAU;AAAO,WAAAA,UAAA;AAAU,GAFnC,CADG,GAIH,EAJJ;AAKD;IAGYC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACb,OAAD;AAC9B,MAAIA,OAAO,IAAIA,OAAO,CAACC,QAAvB,EAAiC;AAC/B,QAAI,IAAIG,MAAJ,CAAW,MAAIN,kBAAf,EAAqCO,IAArC,CAA0CL,OAAO,CAACC,QAAlD,CAAJ,EAAiE;AAC/D,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AACD,SAAO,IAAP;AACD;;IC7BYa,IAAI,GAAG,SAAPA,IAAO,GAAM,EAAnB;AAEP,IAAaC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,OAAD;AAAA,SAAaC,MAAM,CAACD,OAAO,CAACE,SAAT,EAAoB,GAApB,CAAnB;AAAA,CAA5B;AAEP,IAAaC,aAAa,GAAG,SAAhBA,aAAgB,CAACH,OAAD;AAAA,SAC3BA,OAAO,CAACI,MAAR,KACEJ,OAAO,CAACI,MAAR,CAAeC,UAAf,IACGL,OAAO,CAACI,MAAR,CAAeE,QADlB,IAEGN,OAAO,CAACI,MAAR,CAAeX,MAHpB,CAD2B;AAAA,CAAtB;AAQP,IAAac,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACP,OAAD;AAAA,SAAaA,OAAO,CAACI,MAAR,IAAkBJ,OAAO,CAACI,MAAR,CAAeR,UAA9C;AAAA,CAA5B;;;;;;;;;;"}
\ No newline at end of file
diff --git a/dist/cjs/utils-a8277ca2.js b/dist/cjs/utils-a8277ca2.js
new file mode 100644
index 0000000..5931d74
--- /dev/null
+++ b/dist/cjs/utils-a8277ca2.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var type = require('./type-c7a3bee7.js');
+
+var truncate = function truncate(fullStr, strLen) {
+ if (fullStr === null || fullStr === undefined) return '';
+ if (fullStr.length <= strLen) return fullStr;
+ var separator = '...';
+ var sepLen = separator.length;
+ var charsToShow = strLen - sepLen;
+ var frontChars = Math.ceil(charsToShow / 2);
+ var backChars = Math.floor(charsToShow / 2);
+ return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);
+};
+var getIsSentFromStatus = function getIsSentFromStatus(status) {
+ return status === type.MessageStatusType.SENT || status === type.MessageStatusType.DELIVERED || status === type.MessageStatusType.READ;
+};
+
+exports.getIsSentFromStatus = getIsSentFromStatus;
+exports.truncate = truncate;
+//# sourceMappingURL=utils-a8277ca2.js.map
diff --git a/dist/cjs/utils-a8277ca2.js.map b/dist/cjs/utils-a8277ca2.js.map
new file mode 100644
index 0000000..3d13697
--- /dev/null
+++ b/dist/cjs/utils-a8277ca2.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils-cfdeb084.js","sources":["../../../src/ui/FileMessage/utils.js"],"sourcesContent":["import MessageStatusType from '../MessageStatus/type';\n\nexport const truncate = (fullStr, strLen) => {\n if (fullStr === null || fullStr === undefined) return '';\n if (fullStr.length <= strLen) return fullStr;\n const separator = '...';\n const sepLen = separator.length;\n const charsToShow = strLen - sepLen;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n};\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport default {\n truncate,\n getIsSentFromStatus,\n};\n"],"names":["truncate","fullStr","strLen","undefined","length","separator","sepLen","charsToShow","frontChars","Math","ceil","backChars","floor","substr","getIsSentFromStatus","status","MessageStatusType","SENT","DELIVERED","READ"],"mappings":";;;;IAEaA,QAAQ,GAAG,SAAXA,QAAW,CAACC,OAAD,EAAUC,MAAV,EAAqB;AAC3C,MAAID,OAAO,KAAK,IAAZ,IAAoBA,OAAO,KAAKE,SAApC,EAA+C,OAAO,EAAP;AAC/C,MAAIF,OAAO,CAACG,MAAR,IAAkBF,MAAtB,EAA8B,OAAOD,OAAP;AAC9B,MAAMI,SAAS,GAAG,KAAlB;AACA,MAAMC,MAAM,GAAGD,SAAS,CAACD,MAAzB;AACA,MAAMG,WAAW,GAAGL,MAAM,GAAGI,MAA7B;AACA,MAAME,UAAU,GAAGC,IAAI,CAACC,IAAL,CAAUH,WAAW,GAAG,CAAxB,CAAnB;AACA,MAAMI,SAAS,GAAGF,IAAI,CAACG,KAAL,CAAWL,WAAW,GAAG,CAAzB,CAAlB;AACA,SAAON,OAAO,CAACY,MAAR,CAAe,CAAf,EAAkBL,UAAlB,IAAgCH,SAAhC,GAA4CJ,OAAO,CAACY,MAAR,CAAeZ,OAAO,CAACG,MAAR,GAAiBO,SAAhC,CAAnD;AACD;IAEYG,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,MAAD;AAAA,SACjCA,MAAM,KAAKC,sBAAiB,CAACC,IAA7B,IACGF,MAAM,KAAKC,sBAAiB,CAACE,SADhC,IAEGH,MAAM,KAAKC,sBAAiB,CAACG,IAHC;AAAA;;;;;"}
\ No newline at end of file
diff --git a/dist/cjs/utils-c8e36c68.js b/dist/cjs/utils-c8e36c68.js
new file mode 100644
index 0000000..84c7ffc
--- /dev/null
+++ b/dist/cjs/utils-c8e36c68.js
@@ -0,0 +1,51 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var format = _interopDefault(require('date-fns/format'));
+var type = require('./type-c7a3bee7.js');
+
+var copyToClipboard = function copyToClipboard(text) {
+ if (window.clipboardData && window.clipboardData.setData) {
+ // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.
+ return window.clipboardData.setData('Text', text);
+ }
+
+ if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
+ var textarea = document.createElement('textarea');
+ textarea.textContent = text;
+ textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.
+
+ document.body.appendChild(textarea);
+ textarea.select();
+
+ try {
+ return document.execCommand('copy'); // Security exception may be thrown by some browsers.
+ } catch (ex) {
+ return false;
+ } finally {
+ document.body.removeChild(textarea);
+ }
+ }
+
+ return false;
+};
+var getMessageCreatedAt = function getMessageCreatedAt(message) {
+ return format(message.createdAt || 0, 'p');
+};
+var getSenderName = function getSenderName(message) {
+ return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
+};
+var getSenderProfileUrl = function getSenderProfileUrl(message) {
+ return message.sender && message.sender.profileUrl;
+};
+var getIsSentFromStatus = function getIsSentFromStatus(status) {
+ return status === type.MessageStatusType.SENT || status === type.MessageStatusType.DELIVERED || status === type.MessageStatusType.READ;
+};
+
+exports.copyToClipboard = copyToClipboard;
+exports.getIsSentFromStatus = getIsSentFromStatus;
+exports.getMessageCreatedAt = getMessageCreatedAt;
+exports.getSenderName = getSenderName;
+exports.getSenderProfileUrl = getSenderProfileUrl;
+//# sourceMappingURL=utils-c8e36c68.js.map
diff --git a/dist/cjs/utils-c8e36c68.js.map b/dist/cjs/utils-c8e36c68.js.map
new file mode 100644
index 0000000..970aaed
--- /dev/null
+++ b/dist/cjs/utils-c8e36c68.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils-d7f59026.js","sources":["../../../src/ui/Message/utils.js"],"sourcesContent":["import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const copyToClipboard = (text) => {\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt || 0, 'p');\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport const createUrlTester = (regexp) => (text) => regexp.test(text);\n\nexport default {\n copyToClipboard,\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n getIsSentFromStatus,\n createUrlTester,\n};\n"],"names":["copyToClipboard","text","window","clipboardData","setData","document","queryCommandSupported","textarea","createElement","textContent","style","position","body","appendChild","select","execCommand","ex","removeChild","getMessageCreatedAt","message","format","createdAt","getSenderName","sender","friendName","nickname","userId","getSenderProfileUrl","profileUrl","getIsSentFromStatus","status","MessageStatusType","SENT","DELIVERED","READ"],"mappings":";;;;;;;IAGaA,eAAe,GAAG,SAAlBA,eAAkB,CAACC,IAAD,EAAU;AACvC,MAAIC,MAAM,CAACC,aAAP,IAAwBD,MAAM,CAACC,aAAP,CAAqBC,OAAjD,EAA0D;AACxD;AACA,WAAOF,MAAM,CAACC,aAAP,CAAqBC,OAArB,CAA6B,MAA7B,EAAqCH,IAArC,CAAP;AACD;;AACD,MAAII,QAAQ,CAACC,qBAAT,IAAkCD,QAAQ,CAACC,qBAAT,CAA+B,MAA/B,CAAtC,EAA8E;AAC5E,QAAMC,QAAQ,GAAGF,QAAQ,CAACG,aAAT,CAAuB,UAAvB,CAAjB;AACAD,IAAAA,QAAQ,CAACE,WAAT,GAAuBR,IAAvB;AACAM,IAAAA,QAAQ,CAACG,KAAT,CAAeC,QAAf,GAA0B,OAA1B,CAH4E;;AAI5EN,IAAAA,QAAQ,CAACO,IAAT,CAAcC,WAAd,CAA0BN,QAA1B;AACAA,IAAAA,QAAQ,CAACO,MAAT;;AACA,QAAI;AACF,aAAOT,QAAQ,CAACU,WAAT,CAAqB,MAArB,CAAP,CADE;AAEH,KAFD,CAEE,OAAOC,EAAP,EAAW;AACX,aAAO,KAAP;AACD,KAJD,SAIU;AACRX,MAAAA,QAAQ,CAACO,IAAT,CAAcK,WAAd,CAA0BV,QAA1B;AACD;AACF;;AACD,SAAO,KAAP;AACD;IAEYW,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,OAAD;AAAA,SAAaC,MAAM,CAACD,OAAO,CAACE,SAAR,IAAqB,CAAtB,EAAyB,GAAzB,CAAnB;AAAA;IAEtBC,aAAa,GAAG,SAAhBA,aAAgB,CAACH,OAAD;AAAA,SAC3BA,OAAO,CAACI,MAAR,KACEJ,OAAO,CAACI,MAAR,CAAeC,UAAf,IACGL,OAAO,CAACI,MAAR,CAAeE,QADlB,IAEGN,OAAO,CAACI,MAAR,CAAeG,MAHpB,CAD2B;AAAA;IAQhBC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACR,OAAD;AAAA,SAAaA,OAAO,CAACI,MAAR,IAAkBJ,OAAO,CAACI,MAAR,CAAeK,UAA9C;AAAA;IAEtBC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,MAAD;AAAA,SACjCA,MAAM,KAAKC,sBAAiB,CAACC,IAA7B,IACGF,MAAM,KAAKC,sBAAiB,CAACE,SADhC,IAEGH,MAAM,KAAKC,sBAAiB,CAACG,IAHC;AAAA;;;;;;;;"}
\ No newline at end of file
diff --git a/dist/esm/App.js b/dist/esm/App.js
new file mode 100644
index 0000000..bedc61c
--- /dev/null
+++ b/dist/esm/App.js
@@ -0,0 +1,145 @@
+import { b as _slicedToArray } from './LocalizationContext-619bafba.js';
+import Sendbird from './SendbirdProvider.js';
+import React, { useState } from 'react';
+import PropTypes from 'prop-types';
+import 'sendbird';
+import './actionTypes-a85c0eaa.js';
+import 'css-vars-ponyfill';
+import './index-ec3bf9fe.js';
+import ChannelList from './ChannelList.js';
+import './utils-53ba1773.js';
+import './index-aebda3d2.js';
+import './LeaveChannel-da8b5d0b.js';
+import 'date-fns/isToday';
+import 'date-fns/format';
+import 'date-fns/isYesterday';
+import './type-0296584d.js';
+import './utils-cfdeb084.js';
+import 'react-dom';
+import './index-aa89d60a.js';
+import Conversation from './Channel.js';
+import './index-19f570c9.js';
+import 'date-fns/isSameDay';
+import './utils-d7f59026.js';
+import 'date-fns/formatDistanceToNowStrict';
+import ChannelSettings from './ChannelSettings.js';
+import './index-8abf69b8.js';
+
+function App(props) {
+ var appId = props.appId,
+ userId = props.userId,
+ accessToken = props.accessToken,
+ theme = props.theme,
+ userListQuery = props.userListQuery,
+ nickname = props.nickname,
+ profileUrl = props.profileUrl,
+ _props$config = props.config,
+ config = _props$config === void 0 ? {} : _props$config,
+ useReaction = props.useReaction,
+ useMessageGrouping = props.useMessageGrouping,
+ colorSet = props.colorSet,
+ stringSet = props.stringSet,
+ allowProfileEdit = props.allowProfileEdit,
+ disableUserProfile = props.disableUserProfile,
+ renderUserProfile = props.renderUserProfile,
+ onProfileEditSuccess = props.onProfileEditSuccess;
+
+ var _useState = useState(null),
+ _useState2 = _slicedToArray(_useState, 2),
+ currentChannelUrl = _useState2[0],
+ setCurrentChannelUrl = _useState2[1];
+
+ var _useState3 = useState(false),
+ _useState4 = _slicedToArray(_useState3, 2),
+ showSettings = _useState4[0],
+ setShowSettings = _useState4[1];
+
+ return React.createElement(Sendbird, {
+ stringSet: stringSet,
+ appId: appId,
+ userId: userId,
+ accessToken: accessToken,
+ theme: theme,
+ nickname: nickname,
+ profileUrl: profileUrl,
+ userListQuery: userListQuery,
+ config: config,
+ colorSet: colorSet,
+ disableUserProfile: disableUserProfile,
+ renderUserProfile: renderUserProfile
+ }, React.createElement("div", {
+ className: "sendbird-app__wrap"
+ }, React.createElement("div", {
+ className: "sendbird-app__channellist-wrap"
+ }, React.createElement(ChannelList, {
+ allowProfileEdit: allowProfileEdit,
+ onProfileEditSuccess: onProfileEditSuccess,
+ onChannelSelect: function onChannelSelect(channel) {
+ if (channel && channel.url) {
+ setCurrentChannelUrl(channel.url);
+ } else {
+ setCurrentChannelUrl('');
+ }
+ }
+ })), React.createElement("div", {
+ className: "\n ".concat(showSettings ? 'sendbird-app__conversation--settings-open' : '', "\n sendbird-app__conversation-wrap\n ")
+ }, React.createElement(Conversation, {
+ channelUrl: currentChannelUrl,
+ onChatHeaderActionClick: function onChatHeaderActionClick() {
+ if (showSettings) {
+ setShowSettings(false);
+ } else {
+ setShowSettings(true);
+ }
+ },
+ useReaction: useReaction,
+ useMessageGrouping: useMessageGrouping
+ })), showSettings && React.createElement("div", {
+ className: "sendbird-app__settingspanel-wrap"
+ }, React.createElement(ChannelSettings, {
+ channelUrl: currentChannelUrl,
+ onCloseClick: function onCloseClick() {
+ setShowSettings(false);
+ }
+ }))));
+}
+App.propTypes = {
+ appId: PropTypes.string.isRequired,
+ userId: PropTypes.string.isRequired,
+ accessToken: PropTypes.string,
+ theme: PropTypes.string,
+ userListQuery: PropTypes.func,
+ nickname: PropTypes.string,
+ profileUrl: PropTypes.string,
+ allowProfileEdit: PropTypes.bool,
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ onProfileEditSuccess: PropTypes.func,
+ config: PropTypes.shape({
+ // None Error Warning Info 'All/Debug'
+ logLevel: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+ }),
+ useReaction: PropTypes.bool,
+ useMessageGrouping: PropTypes.bool,
+ stringSet: PropTypes.objectOf(PropTypes.string),
+ colorSet: PropTypes.objectOf(PropTypes.string)
+};
+App.defaultProps = {
+ accessToken: '',
+ theme: 'light',
+ nickname: '',
+ profileUrl: '',
+ userListQuery: null,
+ allowProfileEdit: false,
+ onProfileEditSuccess: null,
+ disableUserProfile: false,
+ renderUserProfile: null,
+ config: {},
+ useReaction: true,
+ useMessageGrouping: true,
+ stringSet: null,
+ colorSet: null
+};
+
+export default App;
+//# sourceMappingURL=App.js.map
diff --git a/dist/esm/App.js.map b/dist/esm/App.js.map
new file mode 100644
index 0000000..be4ac4d
--- /dev/null
+++ b/dist/esm/App.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"App.js","sources":["../../../src/smart-components/App/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Sendbird from '../../lib/Sendbird';\n\nimport ChannelList from '../ChannelList';\nimport Conversation from '../Conversation';\nimport ChannelSettings from '../ChannelSettings';\n\nimport './index.scss';\n\nexport default function App(props) {\n const {\n appId,\n userId,\n accessToken,\n theme,\n userListQuery,\n nickname,\n profileUrl,\n config = {},\n useReaction,\n useMessageGrouping,\n colorSet,\n stringSet,\n allowProfileEdit,\n disableUserProfile,\n renderUserProfile,\n onProfileEditSuccess,\n } = props;\n const [currentChannelUrl, setCurrentChannelUrl] = useState(null);\n const [showSettings, setShowSettings] = useState(false);\n return (\n \n \n
\n {\n if (channel && channel.url) {\n setCurrentChannelUrl(channel.url);\n } else {\n setCurrentChannelUrl('');\n }\n }}\n />\n
\n
\n {\n if (showSettings) {\n setShowSettings(false);\n } else {\n setShowSettings(true);\n }\n }}\n useReaction={useReaction}\n useMessageGrouping={useMessageGrouping}\n />\n
\n {showSettings && (\n
\n { setShowSettings(false); }}\n />\n
\n )}\n
\n \n );\n}\n\nApp.propTypes = {\n appId: PropTypes.string.isRequired,\n userId: PropTypes.string.isRequired,\n accessToken: PropTypes.string,\n theme: PropTypes.string,\n userListQuery: PropTypes.func,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n allowProfileEdit: PropTypes.bool,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n onProfileEditSuccess: PropTypes.func,\n config: PropTypes.shape({\n // None Error Warning Info 'All/Debug'\n logLevel: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n }),\n useReaction: PropTypes.bool,\n useMessageGrouping: PropTypes.bool,\n stringSet: PropTypes.objectOf(PropTypes.string),\n colorSet: PropTypes.objectOf(PropTypes.string),\n};\n\nApp.defaultProps = {\n accessToken: '',\n theme: 'light',\n nickname: '',\n profileUrl: '',\n userListQuery: null,\n allowProfileEdit: false,\n onProfileEditSuccess: null,\n disableUserProfile: false,\n renderUserProfile: null,\n config: {},\n useReaction: true,\n useMessageGrouping: true,\n stringSet: null,\n colorSet: null,\n};\n"],"names":["App","props","appId","userId","accessToken","theme","userListQuery","nickname","profileUrl","config","useReaction","useMessageGrouping","colorSet","stringSet","allowProfileEdit","disableUserProfile","renderUserProfile","onProfileEditSuccess","useState","currentChannelUrl","setCurrentChannelUrl","showSettings","setShowSettings","channel","url","propTypes","PropTypes","string","isRequired","func","bool","shape","logLevel","oneOfType","arrayOf","objectOf","defaultProps"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/Channel.js b/dist/esm/Channel.js
new file mode 100644
index 0000000..eb784c2
--- /dev/null
+++ b/dist/esm/Channel.js
@@ -0,0 +1,5548 @@
+import { c as _toConsumableArray, a as _objectSpread2, u as uuidv4$1, l as _defineProperty, b as _slicedToArray, e as LocalizationContext, f as _inherits, h as _createClass, i as _classCallCheck, j as _possibleConstructorReturn, k as _getPrototypeOf, m as _assertThisInitialized, w as withSendbirdContext } from './LocalizationContext-619bafba.js';
+import React, { useEffect, useCallback, useRef, useMemo, useState, useContext, Component, useReducer } from 'react';
+import PropTypes from 'prop-types';
+import { p as SEND_USER_MESSAGE, S as SEND_MESSAGE_START, q as SEND_FILE_MESSAGE, U as UPDATE_USER_MESSAGE, D as DELETE_MESSAGE, E as EmojiListItems, r as ImageRenderer, I as Icon, a as IconTypes, s as Loader, g as IconColors, b as Label, c as LabelTypography, d as LabelColors, C as ContextMenu, e as IconButton, h as MenuItems, i as MenuItem, n as UserProfileContext, A as Avatar, o as UserProfile, f as TextButton, M as Modal, L as LabelStringSet, P as PlaceHolder, t as PlaceHolderTypes, l as UserProfileProvider } from './index-ec3bf9fe.js';
+import { a as getMessageCreatedAt$4, b as getSenderName$2, c as getSenderProfileUrl$2 } from './utils-53ba1773.js';
+import { C as ChannelAvatar } from './index-aebda3d2.js';
+import format from 'date-fns/format';
+import { M as MessageStatusType } from './type-0296584d.js';
+import { t as truncate, g as getIsSentFromStatus$3 } from './utils-cfdeb084.js';
+import 'react-dom';
+import { i as isImage, a as isVideo, c as compareIds, u as unSupported, L as LinkLabel, D as DateSeparator, M as MessageInput, F as FileViewer } from './index-19f570c9.js';
+import isSameDay from 'date-fns/isSameDay';
+import { c as copyToClipboard$1, g as getSenderProfileUrl$1, a as getSenderName$1, b as getMessageCreatedAt$5, d as getIsSentFromStatus$2 } from './utils-d7f59026.js';
+import formatDistanceToNowStrict from 'date-fns/formatDistanceToNowStrict';
+
+var RESET_MESSAGES = 'RESET_MESSAGES';
+var RESET_STATE = 'RESET_STATE';
+var CLEAR_SENT_MESSAGES = 'CLEAR_SENT_MESSAGES';
+var GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';
+var GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';
+var SEND_MESSAGEGE_START = 'SEND_MESSAGEGE_START';
+var SEND_MESSAGEGE_SUCESS = 'SEND_MESSAGEGE_SUCESS';
+var SEND_MESSAGEGE_FAILURE = 'SEND_MESSAGEGE_FAILURE';
+var RESEND_MESSAGEGE_START = 'RESEND_MESSAGEGE_START';
+var ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';
+var ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';
+var ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';
+var ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';
+var SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';
+var SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';
+var MARK_AS_READ = 'MARK_AS_READ';
+var ON_REACTION_UPDATED = 'ON_REACTION_UPDATED';
+var SET_EMOJI_CONTAINER = 'SET_EMOJI_CONTAINER';
+var SET_READ_STATUS = 'SET_READ_STATUS';
+
+var MessageTypes = {
+ ADMIN: 'ADMIN',
+ USER: 'USER',
+ FILE: 'FILE',
+ THUMBNAIL: 'THUMBNAIL',
+ OG: 'OG'
+};
+var SendingMessageStatus = {
+ NONE: 'none',
+ SUCCEEDED: 'succeeded',
+ FAILED: 'failed',
+ PENDING: 'pending'
+};
+var getMessageType = function getMessageType(message) {
+ if (message.isUserMessage && message.isUserMessage() || message.messageType === 'user') {
+ return message.ogMetaData ? MessageTypes.OG : MessageTypes.USER;
+ }
+
+ if (message.isAdminMessage && message.isAdminMessage()) {
+ return MessageTypes.ADMIN;
+ }
+
+ if (message.isFileMessage && message.isFileMessage() || message.messageType === 'file') {
+ return isImage(message.type) || isVideo(message.type) ? MessageTypes.THUMBNAIL : MessageTypes.FILE;
+ }
+
+ return '';
+};
+
+var UNDEFINED = 'undefined';
+var SUCCEEDED = SendingMessageStatus.SUCCEEDED,
+ FAILED = SendingMessageStatus.FAILED,
+ PENDING = SendingMessageStatus.PENDING;
+var scrollIntoLast = function scrollIntoLast(selector) {
+ var intialTry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+ var MAX_TRIES = 10;
+ var currentTry = intialTry;
+
+ if (currentTry > MAX_TRIES) {
+ return;
+ }
+
+ try {
+ var nodes = document.querySelectorAll(selector);
+ var last = nodes[nodes.length - 1];
+ last.scrollIntoView(false);
+ /** alignToTop: false */
+ } catch (error) {
+ setTimeout(function () {
+ scrollIntoLast(selector, currentTry + 1);
+ }, 500 * currentTry);
+ }
+};
+var pubSubHandleRemover = function pubSubHandleRemover(subscriber) {
+ subscriber.forEach(function (s) {
+ try {
+ s.remove();
+ } catch (_unused) {//
+ }
+ });
+};
+var pubSubHandler = function pubSubHandler(channelUrl, pubSub, dispatcher) {
+ var subscriber = new Map();
+ if (!pubSub || !pubSub.subscribe) return subscriber;
+ subscriber.set(SEND_USER_MESSAGE, pubSub.subscribe(SEND_USER_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+ scrollIntoLast('.sendbird-msg--scroll-ref');
+
+ if (channel && channelUrl === channel.url) {
+ dispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(SEND_MESSAGE_START, pubSub.subscribe(SEND_MESSAGE_START, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+
+ if (channel && channelUrl === channel.url) {
+ dispatcher({
+ type: SEND_MESSAGEGE_START,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(SEND_FILE_MESSAGE, pubSub.subscribe(SEND_FILE_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+ scrollIntoLast('.sendbird-msg--scroll-ref');
+
+ if (channel && channelUrl === channel.url) {
+ dispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(UPDATE_USER_MESSAGE, pubSub.subscribe(UPDATE_USER_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message,
+ fromSelector = msg.fromSelector;
+
+ if (fromSelector && channel && channelUrl === channel.url) {
+ dispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ }
+ }));
+ subscriber.set(DELETE_MESSAGE, pubSub.subscribe(DELETE_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ messageId = msg.messageId;
+
+ if (channel && channelUrl === channel.url) {
+ dispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: messageId
+ });
+ }
+ }));
+ return subscriber;
+};
+var getParsedStatus = function getParsedStatus(message, currentGroupChannel) {
+ if (message.requestState === FAILED) {
+ return MessageStatusType.FAILED;
+ }
+
+ if (message.requestState === PENDING) {
+ return MessageStatusType.PENDING;
+ }
+
+ if (message.requestState === SUCCEEDED) {
+ if (!currentGroupChannel) {
+ return MessageStatusType.SENT;
+ }
+
+ var unreadCount = currentGroupChannel.getReadReceipt(message);
+
+ if (unreadCount === 0) {
+ return MessageStatusType.READ;
+ }
+
+ var isDelivered = currentGroupChannel.getDeliveryReceipt(message) === 0;
+
+ if (isDelivered) {
+ return MessageStatusType.DELIVERED;
+ }
+
+ return MessageStatusType.SENT;
+ }
+
+ return null;
+};
+var isOperator = function isOperator() {
+ var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var myRole = groupChannel.myRole;
+ return myRole === 'operator';
+};
+var isDisabledBecauseFrozen = function isDisabledBecauseFrozen() {
+ var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var isFrozen = groupChannel.isFrozen;
+ return isFrozen && !isOperator(groupChannel);
+};
+var isDisabledBecauseMuted = function isDisabledBecauseMuted() {
+ var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var myMutedState = groupChannel.myMutedState;
+ return myMutedState === 'muted';
+};
+var getEmojiCategoriesFromEmojiContainer = function getEmojiCategoriesFromEmojiContainer() {
+ var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ return emojiContainer.emojiCategories ? emojiContainer.emojiCategories : [];
+};
+var getAllEmojisFromEmojiContainer = function getAllEmojisFromEmojiContainer() {
+ var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var _emojiContainer$emoji = emojiContainer.emojiCategories,
+ emojiCategories = _emojiContainer$emoji === void 0 ? [] : _emojiContainer$emoji;
+ var allEmojis = [];
+
+ for (var categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {
+ var emojis = emojiCategories[categoryIndex].emojis;
+
+ for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {
+ allEmojis.push(emojis[emojiIndex]);
+ }
+ }
+
+ return allEmojis;
+};
+var getEmojisFromEmojiContainer = function getEmojisFromEmojiContainer() {
+ var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var emojiCategoryId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
+ return emojiContainer.emojiCategories ? emojiContainer.emojiCategories.filter(function (emojiCategory) {
+ return emojiCategory.id === emojiCategoryId;
+ })[0].emojis : [];
+};
+var getAllEmojisMapFromEmojiContainer = function getAllEmojisMapFromEmojiContainer() {
+ var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var _emojiContainer$emoji2 = emojiContainer.emojiCategories,
+ emojiCategories = _emojiContainer$emoji2 === void 0 ? [] : _emojiContainer$emoji2;
+ var allEmojisMap = new Map();
+
+ for (var categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {
+ var emojis = emojiCategories[categoryIndex].emojis;
+
+ for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {
+ var _emojis$emojiIndex = emojis[emojiIndex],
+ key = _emojis$emojiIndex.key,
+ url = _emojis$emojiIndex.url;
+ allEmojisMap.set(key, url);
+ }
+ }
+
+ return allEmojisMap;
+};
+var getNicknamesMapFromMembers = function getNicknamesMapFromMembers() {
+ var members = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var nicknamesMap = new Map();
+
+ for (var memberIndex = 0; memberIndex < members.length; memberIndex += 1) {
+ var _members$memberIndex = members[memberIndex],
+ userId = _members$memberIndex.userId,
+ nickname = _members$memberIndex.nickname;
+ nicknamesMap.set(userId, nickname);
+ }
+
+ return nicknamesMap;
+};
+var getMessageCreatedAt = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+var isSameGroup = function isSameGroup(message, comparingMessage) {
+ if (!message || !comparingMessage || !message.sender || !comparingMessage.sender || !message.createdAt || !comparingMessage.createdAt || !message.sender.userId || !comparingMessage.sender.userId) {
+ return false;
+ }
+
+ return message.sendingStatus === comparingMessage.sendingStatus && message.sender.userId === comparingMessage.sender.userId && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage);
+};
+var compareMessagesForGrouping = function compareMessagesForGrouping(prevMessage, currMessage, nextMessage) {
+ return [isSameGroup(prevMessage, currMessage), isSameGroup(currMessage, nextMessage)];
+};
+var passUnsuccessfullMessages = function passUnsuccessfullMessages(allMessages, newMessage) {
+ var _newMessage$sendingSt = newMessage.sendingStatus,
+ sendingStatus = _newMessage$sendingSt === void 0 ? UNDEFINED : _newMessage$sendingSt;
+
+ if (sendingStatus === SUCCEEDED || sendingStatus === PENDING) {
+ var lastIndexOfSucceededMessage = allMessages.map(function (message) {
+ return message.sendingStatus || (message.isAdminMessage && message.isAdminMessage() ? SUCCEEDED : UNDEFINED);
+ }).lastIndexOf(SUCCEEDED);
+
+ if (lastIndexOfSucceededMessage + 1 < allMessages.length) {
+ var messages = _toConsumableArray(allMessages);
+
+ messages.splice(lastIndexOfSucceededMessage + 1, 0, newMessage);
+ return messages;
+ }
+ }
+
+ return [].concat(_toConsumableArray(allMessages), [newMessage]);
+};
+
+var messagesInitialState = {
+ initialized: false,
+ loading: false,
+ allMessages: [],
+ currentGroupChannel: {
+ members: []
+ },
+ hasMore: false,
+ lastMessageTimeStamp: 0,
+ emojiContainer: {},
+ readStatus: {},
+ unreadCount: 0,
+ unreadSince: null,
+ isInvalid: false
+};
+
+var SUCCEEDED$1 = SendingMessageStatus.SUCCEEDED,
+ FAILED$1 = SendingMessageStatus.FAILED,
+ PENDING$1 = SendingMessageStatus.PENDING;
+function reducer(state, action) {
+ switch (action.type) {
+ case RESET_STATE:
+ return messagesInitialState;
+
+ case RESET_MESSAGES:
+ return _objectSpread2({}, state, {
+ // when user switches channel, if the previous channel `hasMore`
+ // the onScroll gets called twice, setting hasMore false prevents this
+ hasMore: false,
+ allMessages: []
+ });
+
+ case GET_PREV_MESSAGES_START:
+ return _objectSpread2({}, state, {
+ loading: true
+ });
+
+ case CLEAR_SENT_MESSAGES:
+ return _objectSpread2({}, state, {
+ allMessages: _toConsumableArray(state.allMessages.filter(function (m) {
+ return m.sendingStatus !== SUCCEEDED$1;
+ }))
+ });
+
+ case GET_PREV_MESSAGES_SUCESS:
+ {
+ var receivedMessages = action.payload.messages || [];
+ var _action$payload$curre = action.payload.currentGroupChannel,
+ currentGroupChannel = _action$payload$curre === void 0 ? {} : _action$payload$curre;
+ var stateChannel = state.currentGroupChannel || {};
+ var stateChannelUrl = stateChannel.url;
+ var actionChannelUrl = currentGroupChannel.url;
+
+ if (actionChannelUrl !== stateChannelUrl) {
+ return state;
+ } // remove duplicate messages
+
+
+ var filteredAllMessages = state.allMessages.filter(function (msg) {
+ return !receivedMessages.find(function (_ref) {
+ var messageId = _ref.messageId;
+ return compareIds(messageId, msg.messageId);
+ });
+ });
+ return _objectSpread2({}, state, {
+ loading: false,
+ initialized: true,
+ hasMore: action.payload.hasMore,
+ lastMessageTimeStamp: action.payload.lastMessageTimeStamp,
+ allMessages: [].concat(_toConsumableArray(receivedMessages), _toConsumableArray(filteredAllMessages))
+ });
+ }
+
+ case SEND_MESSAGEGE_START:
+ return _objectSpread2({}, state, {
+ allMessages: [].concat(_toConsumableArray(state.allMessages), [_objectSpread2({}, action.payload)])
+ });
+
+ case SEND_MESSAGEGE_SUCESS:
+ {
+ var newMessages = state.allMessages.map(function (m) {
+ return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
+ });
+
+ _toConsumableArray(newMessages).sort(function (a, b) {
+ return a.sendingStatus && b.sendingStatus && a.sendingStatus === SUCCEEDED$1 && (b.sendingStatus === PENDING$1 || b.sendingStatus === FAILED$1) ? -1 : 1;
+ });
+
+ return _objectSpread2({}, state, {
+ allMessages: newMessages
+ });
+ }
+
+ case SEND_MESSAGEGE_FAILURE:
+ {
+ // eslint-disable-next-line no-param-reassign
+ action.payload.failed = true;
+ return _objectSpread2({}, state, {
+ allMessages: state.allMessages.map(function (m) {
+ return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
+ })
+ });
+ }
+
+ case SET_CURRENT_CHANNEL:
+ {
+ return _objectSpread2({}, state, {
+ currentGroupChannel: action.payload,
+ isInvalid: false
+ });
+ }
+
+ case SET_CHANNEL_INVALID:
+ {
+ return _objectSpread2({}, state, {
+ isInvalid: true
+ });
+ }
+
+ case ON_MESSAGE_RECEIVED:
+ {
+ var _action$payload = action.payload,
+ channel = _action$payload.channel,
+ message = _action$payload.message;
+
+ var _state$currentGroupCh = state.currentGroupChannel,
+ _currentGroupChannel = _state$currentGroupCh === void 0 ? {} : _state$currentGroupCh,
+ unreadCount = state.unreadCount,
+ unreadSince = state.unreadSince;
+
+ var currentGroupChannelUrl = _currentGroupChannel.url;
+
+ if (!compareIds(channel.url, currentGroupChannelUrl)) {
+ return state;
+ } // Excluded overlapping messages
+
+
+ if (!(state.allMessages.map(function (msg) {
+ return msg.messageId;
+ }).indexOf(message.messageId) < 0)) {
+ return state;
+ }
+
+ if (message.isAdminMessage && message.isAdminMessage()) {
+ return _objectSpread2({}, state, {
+ allMessages: passUnsuccessfullMessages(state.allMessages, message)
+ });
+ }
+
+ return _objectSpread2({}, state, {
+ unreadCount: unreadCount + 1,
+ unreadSince: unreadCount === 0 ? format(new Date(), 'p MMM dd') : unreadSince,
+ allMessages: passUnsuccessfullMessages(state.allMessages, message)
+ });
+ }
+
+ case ON_MESSAGE_UPDATED:
+ return _objectSpread2({}, state, {
+ allMessages: state.allMessages.map(function (m) {
+ return compareIds(m.messageId, action.payload.message.messageId) ? action.payload.message : m;
+ })
+ });
+
+ case RESEND_MESSAGEGE_START:
+ return _objectSpread2({}, state, {
+ allMessages: state.allMessages.map(function (m) {
+ return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
+ })
+ });
+
+ case MARK_AS_READ:
+ return _objectSpread2({}, state, {
+ unreadCount: 0,
+ unreadSince: null
+ });
+
+ case ON_MESSAGE_DELETED:
+ return _objectSpread2({}, state, {
+ allMessages: state.allMessages.filter(function (m) {
+ return !compareIds(m.messageId, action.payload);
+ })
+ });
+
+ case ON_MESSAGE_DELETED_BY_REQ_ID:
+ return _objectSpread2({}, state, {
+ allMessages: state.allMessages.filter(function (m) {
+ return !compareIds(m.reqId, action.payload);
+ })
+ });
+
+ case SET_EMOJI_CONTAINER:
+ {
+ return _objectSpread2({}, state, {
+ emojiContainer: action.payload
+ });
+ }
+
+ case SET_READ_STATUS:
+ {
+ return _objectSpread2({}, state, {
+ readStatus: action.payload
+ });
+ }
+
+ case ON_REACTION_UPDATED:
+ {
+ return _objectSpread2({}, state, {
+ allMessages: state.allMessages.map(function (m) {
+ if (compareIds(m.messageId, action.payload.messageId)) {
+ if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {
+ m.applyReactionEvent(action.payload);
+ }
+
+ return m;
+ }
+
+ return m;
+ })
+ });
+ }
+
+ default:
+ return state;
+ }
+}
+
+/**
+ * Handles ChannelEvents and send values to dispatcher using messagesDispatcher
+ * messagesDispatcher: Dispatcher
+ * sdk: sdkInstance
+ * logger: loggerInstance
+ * channelUrl: string
+ * sdkInit: bool
+ */
+
+function useHandleChannelEvents(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ sdkInit = _ref.sdkInit;
+ var messagesDispatcher = _ref2.messagesDispatcher,
+ sdk = _ref2.sdk,
+ logger = _ref2.logger;
+ var channelUrl = currentGroupChannel && currentGroupChannel.url;
+ useEffect(function () {
+ var messageReceiverId = uuidv4$1();
+
+ if (channelUrl && sdk && sdk.ChannelHandler) {
+ var ChannelHandler = new sdk.ChannelHandler();
+ logger.info('Channel | useHandleChannelEvents: Setup event handler', messageReceiverId);
+
+ ChannelHandler.onMessageReceived = function (channel, message) {
+ if (compareIds(channel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_RECEIVED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ }
+ };
+
+ ChannelHandler.onMessageUpdated = function (channel, message) {
+ logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ };
+
+ ChannelHandler.onMessageDeleted = function (_, messageId) {
+ logger.info('Channel | useHandleChannelEvents: onMessageDeleted', messageId);
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: messageId
+ });
+ };
+
+ ChannelHandler.onReactionUpdated = function (_, reactionEvent) {
+ logger.info('Channel | useHandleChannelEvents: onReactionUpdated', reactionEvent);
+ messagesDispatcher({
+ type: ON_REACTION_UPDATED,
+ payload: reactionEvent
+ });
+ };
+
+ ChannelHandler.onChannelChanged = function (groupChannel) {
+ if (compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onChannelChanged', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onChannelFrozen = function (groupChannel) {
+ if (compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onChannelFrozen', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onChannelUnfrozen = function (groupChannel) {
+ if (compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onUserMuted = function (groupChannel) {
+ if (compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onUserMuted', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onUserUnmuted = function (groupChannel) {
+ if (compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onUserUnmuted', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onUserBanned = function (groupChannel) {
+ if (compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onUserBanned', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ };
+
+ ChannelHandler.onOperatorUpdated = function (groupChannel) {
+ if (compareIds(groupChannel.url, currentGroupChannel.url)) {
+ logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ }
+ }; // Add this channel event handler to the SendBird object.
+
+
+ sdk.addChannelHandler(messageReceiverId, ChannelHandler);
+ }
+
+ return function () {
+ if (sdk && sdk.removeChannelHandler) {
+ logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', messageReceiverId);
+ sdk.removeChannelHandler(messageReceiverId);
+ }
+ };
+ }, [channelUrl, sdkInit]);
+}
+
+function useSetChannel(_ref, _ref2) {
+ var channelUrl = _ref.channelUrl,
+ sdkInit = _ref.sdkInit;
+ var messagesDispatcher = _ref2.messagesDispatcher,
+ sdk = _ref2.sdk,
+ logger = _ref2.logger;
+ useEffect(function () {
+ if (channelUrl && sdkInit && sdk && sdk.GroupChannel) {
+ logger.info('Channel | useSetChannel fetching channel', channelUrl);
+ sdk.GroupChannel.getChannel(channelUrl).then(function (groupChannel) {
+ logger.info('Channel | useSetChannel fetched channel', groupChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: groupChannel
+ });
+ logger.info('Channel: Mark as read', groupChannel); // this order is important - this mark as read should update the event handler up above
+
+ groupChannel.markAsRead();
+ }).catch(function (e) {
+ logger.warning('Channel | useSetChannel fetch channel failed', {
+ channelUrl: channelUrl,
+ e: e
+ });
+ messagesDispatcher({
+ type: SET_CHANNEL_INVALID
+ });
+ });
+ sdk.getAllEmoji(function (emojiContainer_, err) {
+ if (err) {
+ logger.error('Channel: Getting emojis failed', err);
+ return;
+ }
+
+ logger.info('Channel: Getting emojis success', emojiContainer_);
+ messagesDispatcher({
+ type: SET_EMOJI_CONTAINER,
+ payload: emojiContainer_
+ });
+ });
+ }
+ }, [channelUrl, sdkInit]);
+}
+
+function useInitialMessagesFetch(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ userFilledMessageListQuery = _ref.userFilledMessageListQuery;
+ var sdk = _ref2.sdk,
+ logger = _ref2.logger,
+ messagesDispatcher = _ref2.messagesDispatcher;
+ var channelUrl = currentGroupChannel && currentGroupChannel.url;
+ useEffect(function () {
+ logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);
+ messagesDispatcher({
+ type: RESET_MESSAGES
+ });
+
+ if (sdk && sdk.MessageListParams && currentGroupChannel && currentGroupChannel.getMessagesByMessageId) {
+ var messageListParams = new sdk.MessageListParams();
+ messageListParams.prevResultSize = 30;
+ messageListParams.isInclusive = true;
+ messageListParams.includeReplies = false;
+ messageListParams.includeReaction = true;
+
+ if (userFilledMessageListQuery) {
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
+ messageListParams[key] = userFilledMessageListQuery[key];
+ });
+ }
+
+ logger.info('Channel: Fetching messages', {
+ currentGroupChannel: currentGroupChannel,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ });
+ currentGroupChannel.getMessagesByTimestamp(new Date().getTime(), messageListParams).then(function (messages) {
+ var hasMore = messages && messages.length > 0;
+ var lastMessageTimeStamp = hasMore ? messages[0].createdAt : null;
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ messages: messages,
+ hasMore: hasMore,
+ lastMessageTimeStamp: lastMessageTimeStamp,
+ currentGroupChannel: currentGroupChannel
+ }
+ });
+ }).catch(function (error) {
+ logger.error('Channel: Fetching messages failed', error);
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ messages: [],
+ hasMore: false,
+ lastMessageTimeStamp: 0,
+ currentGroupChannel: currentGroupChannel
+ }
+ });
+ }).finally(function () {
+ currentGroupChannel.markAsRead();
+ setTimeout(function () {
+ return scrollIntoLast('.sendbird-msg--scroll-ref');
+ });
+ });
+ }
+ }, [channelUrl, userFilledMessageListQuery]);
+}
+
+function useHandleReconnect(_ref, _ref2) {
+ var isOnline = _ref.isOnline;
+ var logger = _ref2.logger,
+ sdk = _ref2.sdk,
+ currentGroupChannel = _ref2.currentGroupChannel,
+ messagesDispatcher = _ref2.messagesDispatcher,
+ userFilledMessageListQuery = _ref2.userFilledMessageListQuery;
+ useEffect(function () {
+ var wasOffline = !isOnline;
+ return function () {
+ // state changed from offline to online
+ if (wasOffline) {
+ logger.info('Refreshing conversation state');
+ var _sdk$appInfo = sdk.appInfo,
+ appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
+ var useReaction = appInfo.isUsingReaction || false;
+ var messageListParams = new sdk.MessageListParams();
+ messageListParams.prevResultSize = 30;
+ messageListParams.includeReplies = false;
+ messageListParams.includeReaction = useReaction;
+
+ if (userFilledMessageListQuery) {
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
+ messageListParams[key] = userFilledMessageListQuery[key];
+ });
+ }
+
+ logger.info('Channel: Fetching messages', {
+ currentGroupChannel: currentGroupChannel,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ });
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_START
+ });
+ sdk.GroupChannel.getChannel(currentGroupChannel.url).then(function (groupChannel) {
+ var lastMessageTime = new Date().getTime();
+ groupChannel.getMessagesByTimestamp(lastMessageTime, messageListParams).then(function (messages) {
+ messagesDispatcher({
+ type: CLEAR_SENT_MESSAGES
+ });
+ var hasMore = messages && messages.length > 0;
+ var lastMessageTimeStamp = hasMore ? messages[0].createdAt : null;
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ messages: messages,
+ hasMore: hasMore,
+ lastMessageTimeStamp: lastMessageTimeStamp,
+ currentGroupChannel: currentGroupChannel
+ }
+ });
+ setTimeout(function () {
+ return scrollIntoLast('.sendbird-msg--scroll-ref');
+ });
+ }).catch(function (error) {
+ logger.error('Channel: Fetching messages failed', error);
+ }).finally(function () {
+ currentGroupChannel.markAsRead();
+ });
+ });
+ }
+ };
+ }, [isOnline]);
+}
+
+function useScrollCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ lastMessageTimeStamp = _ref.lastMessageTimeStamp,
+ userFilledMessageListQuery = _ref.userFilledMessageListQuery;
+ var hasMore = _ref2.hasMore,
+ logger = _ref2.logger,
+ messagesDispatcher = _ref2.messagesDispatcher,
+ sdk = _ref2.sdk;
+ return useCallback(function (cb) {
+ if (!hasMore) {
+ return;
+ }
+
+ var messageListParams = new sdk.MessageListParams();
+ messageListParams.prevResultSize = 30;
+ messageListParams.includeReplies = false;
+ messageListParams.includeReaction = true;
+
+ if (userFilledMessageListQuery) {
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
+ messageListParams[key] = userFilledMessageListQuery[key];
+ });
+ }
+
+ logger.info('Channel: Fetching messages', {
+ currentGroupChannel: currentGroupChannel,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ });
+ currentGroupChannel.getMessagesByTimestamp(lastMessageTimeStamp || new Date().getTime(), messageListParams).then(function (messages) {
+ var hasMoreMessages = messages && messages.length > 0;
+ var lastMessageTs = hasMoreMessages ? messages[0].createdAt : null;
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ messages: messages,
+ hasMore: hasMoreMessages,
+ lastMessageTimeStamp: lastMessageTs,
+ currentGroupChannel: currentGroupChannel
+ }
+ });
+ cb([messages, null]);
+ }).catch(function (error) {
+ logger.error('Channel: Fetching messages failed', error);
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ messages: [],
+ hasMore: false,
+ lastMessageTimeStamp: 0,
+ currentGroupChannel: currentGroupChannel
+ }
+ });
+ cb([null, error]);
+ }).finally(function () {
+ currentGroupChannel.markAsRead();
+ });
+ }, [currentGroupChannel, lastMessageTimeStamp]);
+}
+
+function useDeleteMessageCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ messagesDispatcher = _ref.messagesDispatcher;
+ var logger = _ref2.logger;
+ return useCallback(function (message, cb) {
+ logger.info('Channel | useDeleteMessageCallback: Deleting message', message);
+ var requestState = message.requestState;
+ logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', requestState); // Message is only on local
+
+ if (requestState === 'failed' || requestState === 'pending') {
+ logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED_BY_REQ_ID,
+ payload: message.reqId
+ });
+
+ if (cb) {
+ cb();
+ }
+
+ return;
+ } // Message is on server
+
+
+ currentGroupChannel.deleteMessage(message, function (err) {
+ logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', requestState);
+
+ if (cb) {
+ cb(err);
+ }
+
+ if (!err) {
+ logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: message.messageId
+ });
+ } else {
+ logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);
+ }
+ });
+ }, [currentGroupChannel, messagesDispatcher]);
+}
+
+function useUpdateMessageCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ messagesDispatcher = _ref.messagesDispatcher,
+ onBeforeUpdateUserMessage = _ref.onBeforeUpdateUserMessage;
+ var logger = _ref2.logger,
+ pubSub = _ref2.pubSub,
+ sdk = _ref2.sdk;
+ return useCallback(function (messageId, text, cb) {
+ var createParamsDefault = function createParamsDefault(txt) {
+ var params = new sdk.UserMessageParams();
+ params.message = txt;
+ return params;
+ };
+
+ var createCustomPrams = onBeforeUpdateUserMessage && typeof onBeforeUpdateUserMessage === 'function';
+
+ if (createCustomPrams) {
+ logger.info('Channel: creating params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);
+ }
+
+ var params = onBeforeUpdateUserMessage ? onBeforeUpdateUserMessage(text) : createParamsDefault(text);
+ currentGroupChannel.updateUserMessage(messageId, params, function (r, e) {
+ logger.info('Channel: Updating message!', params);
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = r;
+ var err = e;
+
+ if (swapParams) {
+ message = e;
+ err = r;
+ }
+
+ if (cb) {
+ cb(err, message);
+ }
+
+ if (!err) {
+ logger.info('Channel: Updating message success!', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: currentGroupChannel,
+ message: message
+ }
+ });
+ pubSub.publish(UPDATE_USER_MESSAGE, {
+ message: message,
+ channel: currentGroupChannel
+ });
+ } else {
+ logger.warning('Channel: Updating message failed!', err);
+ }
+ });
+ }, [currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);
+}
+
+function useResendMessageCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ messagesDispatcher = _ref.messagesDispatcher;
+ var logger = _ref2.logger;
+ return useCallback(function (failedMessage) {
+ logger.info('Channel: Resending message has started', failedMessage);
+ var messageType = failedMessage.messageType,
+ file = failedMessage.file;
+
+ if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable()) {
+ // eslint-disable-next-line no-param-reassign
+ failedMessage.requestState = 'pending';
+ messagesDispatcher({
+ type: RESEND_MESSAGEGE_START,
+ payload: failedMessage
+ }); // userMessage
+
+ if (messageType === 'user') {
+ currentGroupChannel.resendUserMessage(failedMessage).then(function (message) {
+ logger.info('Channel: Resending message success!', {
+ message: message
+ });
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ }).catch(function (e) {
+ logger.warning('Channel: Resending message failed!', {
+ e: e
+ }); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'failed';
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_FAILURE,
+ payload: failedMessage
+ });
+ }); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'pending';
+ messagesDispatcher({
+ type: RESEND_MESSAGEGE_START,
+ payload: failedMessage
+ });
+ return;
+ }
+
+ if (messageType === 'file') {
+ currentGroupChannel.resendFileMessage(failedMessage, file).then(function (message) {
+ logger.info('Channel: Resending file message success!', {
+ message: message
+ });
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ }).catch(function (e) {
+ logger.warning('Channel: Resending file message failed!', {
+ e: e
+ }); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'failed';
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_FAILURE,
+ payload: failedMessage
+ });
+ }); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'pending';
+ messagesDispatcher({
+ type: RESEND_MESSAGEGE_START,
+ payload: failedMessage
+ });
+ }
+ } else {
+ // to alert user on console
+ // eslint-disable-next-line no-console
+ console.error('Message is not resendable');
+ logger.warning('Message is not resendable', failedMessage);
+ }
+ }, [currentGroupChannel, messagesDispatcher]);
+}
+
+function useSendMessageCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ onBeforeSendUserMessage = _ref.onBeforeSendUserMessage;
+ var sdk = _ref2.sdk,
+ logger = _ref2.logger,
+ pubSub = _ref2.pubSub,
+ messagesDispatcher = _ref2.messagesDispatcher;
+ var messageInputRef = useRef(null);
+ var sendMessage = useCallback(function () {
+ var text = messageInputRef.current.value;
+
+ var createParamsDefault = function createParamsDefault(txt) {
+ var message = typeof txt === 'string' ? txt.trim() : txt;
+ var params = new sdk.UserMessageParams();
+ params.message = message;
+ return params;
+ };
+
+ var createCustomPrams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
+
+ if (createCustomPrams) {
+ logger.info('Channel: creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);
+ }
+
+ var params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);
+ logger.info('Channel: Sending message has started', params);
+ var pendingMsg = currentGroupChannel.sendUserMessage(params, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ } // sending params instead of pending message
+ // to make sure that we can resend the message once it fails
+
+
+ if (error) {
+ logger.warning('Channel: Sending message failed!', {
+ message: message
+ });
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_FAILURE,
+ payload: message
+ });
+ return;
+ }
+
+ logger.info('Channel: Sending message success!', message);
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ });
+ pubSub.publish(SEND_MESSAGE_START, {
+ /* pubSub is used instead of messagesDispatcher
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
+ message: pendingMsg,
+ channel: currentGroupChannel
+ });
+ setTimeout(function () {
+ return scrollIntoLast('.sendbird-msg--scroll-ref');
+ });
+ }, [currentGroupChannel, onBeforeSendUserMessage]);
+ return [messageInputRef, sendMessage];
+}
+
+function useSendFileMessageCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel,
+ onBeforeSendFileMessage = _ref.onBeforeSendFileMessage;
+ var sdk = _ref2.sdk,
+ logger = _ref2.logger,
+ pubSub = _ref2.pubSub,
+ messagesDispatcher = _ref2.messagesDispatcher;
+ var sendMessage = useCallback(function (file) {
+ var createParamsDefault = function createParamsDefault(file_) {
+ var params = new sdk.FileMessageParams();
+ params.file = file_;
+ return params;
+ };
+
+ var createCustomPrams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';
+
+ if (createCustomPrams) {
+ logger.info('Channel: creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
+ }
+
+ var params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file) : createParamsDefault(file);
+ logger.info('Channel: Uploading file message start!', params);
+ var pendingMsg = currentGroupChannel.sendFileMessage(params, function (response, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = response;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = response;
+ }
+
+ if (error) {
+ // sending params instead of pending message
+ // to make sure that we can resend the message once it fails
+ logger.error('Channel: Sending file message failed!', message);
+ message.localUrl = URL.createObjectURL(file);
+ message.file = file;
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_FAILURE,
+ payload: message
+ });
+ return;
+ }
+
+ logger.info('Channel: Sending message success!', message);
+ messagesDispatcher({
+ type: SEND_MESSAGEGE_SUCESS,
+ payload: message
+ });
+ });
+ pubSub.publish(SEND_MESSAGE_START, {
+ /* pubSub is used instead of messagesDispatcher
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
+ message: _objectSpread2({}, pendingMsg, {
+ url: URL.createObjectURL(file),
+ // pending thumbnail message seems to be failed
+ requestState: 'pending'
+ }),
+ channel: currentGroupChannel
+ });
+ setTimeout(function () {
+ return scrollIntoLast('.sendbird-msg--scroll-ref');
+ }, 1000);
+ }, [currentGroupChannel, onBeforeSendFileMessage]);
+ return [sendMessage];
+}
+
+function useSetReadStatus(_ref, _ref2) {
+ var allMessages = _ref.allMessages,
+ currentGroupChannel = _ref.currentGroupChannel;
+ var messagesDispatcher = _ref2.messagesDispatcher,
+ sdk = _ref2.sdk,
+ logger = _ref2.logger;
+ useEffect(function () {
+ if (!sdk.ChannelHandler || !currentGroupChannel.url) {
+ return function () {};
+ } // todo: move to reducer?
+
+
+ var setReadStatus = function setReadStatus() {
+ var allReadStatus = allMessages.reduce(function (accumulator, msg) {
+ if (msg.messageId !== 0) {
+ return _objectSpread2({}, accumulator, _defineProperty({}, msg.messageId, getParsedStatus(msg, currentGroupChannel)));
+ }
+
+ return accumulator;
+ }, {});
+ messagesDispatcher({
+ type: SET_READ_STATUS,
+ payload: allReadStatus
+ });
+ };
+
+ if (allMessages.length > 0) {
+ setReadStatus();
+ }
+
+ var channelUrl = currentGroupChannel.url;
+ var handler = new sdk.ChannelHandler();
+
+ var handleMessageStatus = function handleMessageStatus(c) {
+ if (channelUrl === c.url) {
+ setReadStatus();
+ }
+ };
+
+ handler.onDeliveryReceiptUpdated = handleMessageStatus;
+ handler.onReadReceiptUpdated = handleMessageStatus; // Add this channel event handler to the SendBird object.
+
+ var handlerId = uuidv4$1();
+ logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);
+ sdk.addChannelHandler(handlerId, handler);
+ return function () {
+ if (sdk && sdk.removeChannelHandler) {
+ logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);
+ sdk.removeChannelHandler(handlerId);
+ }
+ };
+ }, [allMessages, currentGroupChannel]);
+}
+
+var ReactionButton = React.forwardRef(function (props, ref) {
+ var children = props.children,
+ width = props.width,
+ height = props.height,
+ _onClick = props.onClick,
+ selected = props.selected,
+ className = props.className;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React.createElement("div", {
+ ref: ref,
+ className: "sendbird-reaction-button".concat(selected ? '--selected' : '', " ").concat(injectingClassName.join(' ')),
+ style: {
+ width: typeof width === 'string' ? "".concat(width.slice(0, -2) - 2, "px") : "".concat(width - 2, "px"),
+ height: typeof height === 'string' ? "".concat(height.slice(0, -2) - 2, "px") : "".concat(height - 2, "px")
+ },
+ onClick: function onClick(e) {
+ return _onClick(e);
+ },
+ role: "button",
+ onKeyDown: function onKeyDown(e) {
+ return _onClick(e);
+ },
+ tabIndex: 0
+ }, React.createElement("div", {
+ className: "sendbird-reaction-button__inner"
+ }, children));
+});
+ReactionButton.propTypes = {
+ children: PropTypes.element.isRequired,
+ onClick: PropTypes.func,
+ selected: PropTypes.bool,
+ width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+ height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+ReactionButton.defaultProps = {
+ selected: false,
+ width: '36px',
+ height: '36px',
+ onClick: function onClick() {},
+ className: ''
+};
+
+function useMemoizedEmojiListItems(_ref, _ref2) {
+ var emojiContainer = _ref.emojiContainer,
+ toggleReaction = _ref.toggleReaction;
+ var useReaction = _ref2.useReaction,
+ logger = _ref2.logger,
+ userId = _ref2.userId,
+ emojiAllList = _ref2.emojiAllList;
+ return useMemo(function () {
+ return function (_ref3) {
+ var parentRef = _ref3.parentRef,
+ parentContainRef = _ref3.parentContainRef,
+ message = _ref3.message,
+ closeDropdown = _ref3.closeDropdown,
+ _ref3$spaceFromTrigge = _ref3.spaceFromTrigger,
+ spaceFromTrigger = _ref3$spaceFromTrigge === void 0 ? {} : _ref3$spaceFromTrigge;
+
+ if (!useReaction || !(parentRef || parentContainRef || message || closeDropdown)) {
+ logger.warning('Channel: Invalid Params in memoizedEmojiListItems');
+ return null;
+ }
+
+ return React.createElement(EmojiListItems, {
+ parentRef: parentRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: spaceFromTrigger
+ }, emojiAllList.map(function (emoji) {
+ var reactedReaction = message.reactions.filter(function (reaction) {
+ return reaction.key === emoji.key;
+ })[0];
+ var isReacted = reactedReaction ? !(reactedReaction.userIds.indexOf(userId) < 0) : false;
+ return React.createElement(ReactionButton, {
+ key: emoji.key,
+ width: "36px",
+ height: "36px",
+ selected: isReacted,
+ onClick: function onClick() {
+ closeDropdown();
+ toggleReaction(message, emoji.key, isReacted);
+ }
+ }, React.createElement(ImageRenderer, {
+ url: emoji.url,
+ width: "28px",
+ height: "28px",
+ defaultComponent: React.createElement(Icon, {
+ width: "28px",
+ height: "28px",
+ type: IconTypes.EMOJI_FAILED
+ })
+ }));
+ }));
+ };
+ }, [emojiContainer, toggleReaction]);
+}
+
+function useToggleReactionCallback(_ref, _ref2) {
+ var currentGroupChannel = _ref.currentGroupChannel;
+ var logger = _ref2.logger;
+ return useCallback(function (message, key, isReacted) {
+ if (isReacted) {
+ currentGroupChannel.deleteReaction(message, key).then(function (res) {
+ logger.info('Delete reaction success', res);
+ }).catch(function (err) {
+ logger.warning('Delete reaction failed', err);
+ });
+ return;
+ }
+
+ currentGroupChannel.addReaction(message, key).then(function (res) {
+ logger.info('Add reaction success', res);
+ }).catch(function (err) {
+ logger.warning('Add reaction failed', err);
+ });
+ }, [currentGroupChannel]);
+}
+
+function MessageStatus(_ref) {
+ var message = _ref.message,
+ status = _ref.status,
+ className = _ref.className;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+
+ var label = function label() {
+ switch (status) {
+ case MessageStatusType.FAILED:
+ case MessageStatusType.PENDING:
+ {
+ return null;
+ }
+
+ case MessageStatusType.SENT:
+ case MessageStatusType.DELIVERED:
+ case MessageStatusType.READ:
+ {
+ return React.createElement(Label, {
+ className: "sendbird-message-status__text",
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2
+ }, getMessageCreatedAt$4(message));
+ }
+
+ default:
+ return null;
+ }
+ };
+
+ var icon = {
+ PENDING: React.createElement(Loader, {
+ className: "sendbird-message-status__icon",
+ width: "16px",
+ height: "16px"
+ }, React.createElement(Icon, {
+ type: IconTypes.SPINNER,
+ width: "16px",
+ height: "16px"
+ })),
+ SENT: React.createElement(Icon, {
+ className: "sendbird-message-status__icon",
+ width: "16px",
+ height: "16px",
+ type: IconTypes.SENT,
+ fillColor: IconColors.SENT
+ }),
+ DELIVERED: React.createElement(Icon, {
+ className: "sendbird-message-status__icon",
+ width: "16px",
+ height: "16px",
+ type: IconTypes.DELIVERED,
+ fillColor: IconColors.SENT
+ }),
+ READ: React.createElement(Icon, {
+ className: "sendbird-message-status__icon",
+ width: "16px",
+ height: "16px",
+ type: IconTypes.READ,
+ fillColor: IconColors.READ
+ }),
+ FAILED: React.createElement(Icon, {
+ className: "sendbird-message-status__icon",
+ width: "16px",
+ height: "16px",
+ type: IconTypes.ERROR
+ })
+ };
+ return React.createElement("div", {
+ className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-message-status']).join(' ')
+ }, icon[status], React.createElement("br", null), label());
+}
+MessageStatus.propTypes = {
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ status: PropTypes.string,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+MessageStatus.defaultProps = {
+ message: null,
+ status: '',
+ className: ''
+};
+
+var ReactionBadge = React.forwardRef(function (props, ref) {
+ var className = props.className,
+ children = props.children,
+ count = props.count,
+ selected = props.selected,
+ isAdd = props.isAdd,
+ onClick = props.onClick;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+
+ if (selected && !isAdd) {
+ injectingClassName.unshift('sendbird-reaction-badge--selected');
+ } else if (isAdd) {
+ injectingClassName.push('sendbird-reaction-badge--is-add');
+ } else {
+ injectingClassName.unshift('sendbird-reaction-badge');
+ }
+
+ return React.createElement("div", {
+ ref: ref,
+ tabIndex: 0,
+ role: "button",
+ className: injectingClassName.join(' '),
+ onClick: onClick,
+ onKeyDown: onClick
+ }, React.createElement("div", {
+ className: "sendbird-reaction-badge__inner"
+ }, React.createElement("div", {
+ className: "sendbird-reaction-badge__inner__icon"
+ }, children), React.createElement(Label, {
+ className: children && count ? 'sendbird-reaction-badge__inner__count' : '',
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_1
+ }, count)));
+});
+ReactionBadge.propTypes = {
+ children: PropTypes.element.isRequired,
+ count: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+ selected: PropTypes.bool,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ isAdd: PropTypes.bool,
+ onClick: PropTypes.func
+};
+ReactionBadge.defaultProps = {
+ className: '',
+ count: '',
+ selected: false,
+ isAdd: false,
+ onClick: function onClick() {}
+};
+
+var CLASS_NAME = 'sendbird-tooltip';
+function Tooltip(_ref) {
+ var className = _ref.className,
+ children = _ref.children;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift(CLASS_NAME);
+ return React.createElement("div", {
+ className: injectingClassName.join(' ')
+ }, React.createElement(Label, {
+ className: "".concat(CLASS_NAME, "__text")
+ }, children));
+}
+Tooltip.propTypes = {
+ className: PropTypes.string,
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.string), PropTypes.string])
+};
+Tooltip.defaultProps = {
+ className: '',
+ children: ''
+};
+
+var CLASS_NAME$1 = 'sendbird-tooltip-wrapper';
+var SPACE_FROM_TRIGGER = 8;
+function TooltipWrapper(_ref) {
+ var className = _ref.className,
+ children = _ref.children,
+ hoverTooltip = _ref.hoverTooltip;
+ var injectingClassName = Array.isArray(className) ? [CLASS_NAME$1].concat(_toConsumableArray(className)) : [CLASS_NAME$1, className];
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ showHoverTooltip = _useState2[0],
+ setShowHoverTooltip = _useState2[1];
+
+ var childrenRef = useRef(null);
+ return React.createElement("div", {
+ className: injectingClassName.join(' '),
+ onMouseOver: function onMouseOver() {
+ setShowHoverTooltip(true);
+ },
+ onFocus: function onFocus() {
+ setShowHoverTooltip(true);
+ },
+ onMouseOut: function onMouseOut() {
+ setShowHoverTooltip(false);
+ },
+ onBlur: function onBlur() {
+ setShowHoverTooltip(false);
+ }
+ }, React.createElement("div", {
+ className: "".concat(CLASS_NAME$1, "__children"),
+ ref: childrenRef
+ }, children), showHoverTooltip && React.createElement("div", {
+ className: "".concat(CLASS_NAME$1, "__hover-tooltip"),
+ style: {
+ bottom: "calc(100% + ".concat(SPACE_FROM_TRIGGER, "px)")
+ }
+ }, React.createElement("div", {
+ className: "".concat(CLASS_NAME$1, "__hover-tooltip__inner")
+ }, React.createElement("div", {
+ className: "".concat(CLASS_NAME$1, "__hover-tooltip__inner__tooltip-container"),
+ style: {
+ left: childrenRef.current && "calc(".concat(childrenRef.current.offsetWidth / 2, "px - 50%)")
+ }
+ }, hoverTooltip))));
+}
+TooltipWrapper.propTypes = {
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ children: PropTypes.element.isRequired,
+ hoverTooltip: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired
+};
+TooltipWrapper.defaultProps = {
+ className: ''
+};
+
+function EmojiReactions(_ref) {
+ var className = _ref.className,
+ userId = _ref.userId,
+ message = _ref.message,
+ emojiAllMap = _ref.emojiAllMap,
+ membersMap = _ref.membersMap,
+ toggleReaction = _ref.toggleReaction,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift('sendbird-emoji-reactions');
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var imageWidth = '20px';
+ var imageHeight = '20px';
+ var emojiReactionAddRef = useRef(null);
+ var _message$reactions = message.reactions,
+ reactions = _message$reactions === void 0 ? [] : _message$reactions;
+ var messageReactions = reactions;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.createElement("div", {
+ className: injectingClassName.join(' ')
+ }, React.createElement("div", {
+ className: "sendbird-emoji-reactions--inner"
+ }, messageReactions && messageReactions.map(function (reaction) {
+ var _reaction$userIds = reaction.userIds,
+ userIds = _reaction$userIds === void 0 ? [] : _reaction$userIds;
+ var emojiUrl = emojiAllMap.get(reaction.key) || '';
+ var reactedUserCount = userIds.length;
+ var reactedByMe = !(userIds.indexOf(userId) < 0);
+ var nicknames = userIds.filter(function (currentUserId) {
+ return currentUserId !== userId;
+ }).map(function (currentUserId) {
+ return membersMap.get(currentUserId) || stringSet.TOOLTIP__UNKOWN_USER;
+ });
+ var stringSetForMe = nicknames.length > 0 ? stringSet.TOOLTIP__AND_YOU : stringSet.TOOLTIP__YOU;
+ return React.createElement(TooltipWrapper, {
+ className: "sendbird-emoji-reactions__emoji-reaction",
+ key: reaction.key,
+ hoverTooltip: userIds.length > 0 && React.createElement(Tooltip, null, React.createElement(React.Fragment, null, "".concat(nicknames.join(', ')).concat(reactedByMe ? stringSetForMe : '')))
+ }, React.createElement(ReactionBadge, {
+ count: reactedUserCount,
+ selected: reactedByMe,
+ onClick: function onClick() {
+ return toggleReaction(message, reaction.key, reactedByMe);
+ }
+ }, React.createElement(ImageRenderer, {
+ circle: true,
+ url: emojiUrl,
+ width: imageWidth,
+ height: imageHeight,
+ defaultComponent: React.createElement(Icon, {
+ width: imageWidth,
+ height: imageHeight,
+ type: IconTypes.EMOJI_FAILED
+ })
+ })));
+ }), messageReactions.length < emojiAllMap.size && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(ReactionBadge, {
+ isAdd: true,
+ onClick: toggleDropdown,
+ className: "sendbird-emoji-reactions__emoji-reaction-add",
+ ref: emojiReactionAddRef
+ }, React.createElement(Icon, {
+ width: imageWidth,
+ height: imageHeight,
+ fillColor: IconColors.ON_BACKGROUND_3,
+ type: IconTypes.EMOJI_REACTIONS_ADD
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: emojiReactionAddRef,
+ parentContainRef: emojiReactionAddRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 4
+ }
+ });
+ }
+ })));
+}
+EmojiReactions.propTypes = {
+ userId: PropTypes.string,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ message: PropTypes.shape({
+ reactions: PropTypes.arrayOf(PropTypes.shape({}))
+ }).isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func
+};
+EmojiReactions.defaultProps = {
+ className: '',
+ membersMap: new Map(),
+ userId: '',
+ toggleReaction: function toggleReaction() {},
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+
+var WORD_TYPOGRAPHY = LabelTypography.BODY_1;
+var EDITED_COLOR = LabelColors.ONBACKGROUND_2;
+function useMemoizedMessageText(_ref) {
+ var message = _ref.message,
+ updatedAt = _ref.updatedAt,
+ className = _ref.className;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return useMemo(function () {
+ return function () {
+ var splitMessage = message.split(/\r/);
+ var matchedMessage = splitMessage.map(function (word) {
+ return word !== '' ? word : React.createElement("br", null);
+ });
+
+ if (updatedAt > 0) {
+ matchedMessage.push(React.createElement(Label, {
+ key: uuidv4$1(),
+ className: className,
+ type: WORD_TYPOGRAPHY,
+ color: EDITED_COLOR
+ }, " ".concat(stringSet.MESSAGE_EDITED, " ")));
+ }
+
+ return matchedMessage;
+ };
+ }, [message, updatedAt, className]);
+}
+
+var MOUSE_ENTER = 'mouseenter';
+var MOUSE_LEAVE = 'mouseleave';
+
+var useMouseHover = function useMouseHover(_ref) {
+ var ref = _ref.ref,
+ setHover = _ref.setHover;
+
+ var handleMouseOver = function handleMouseOver() {
+ if (ref.current) {
+ setHover(true);
+ }
+ };
+
+ var handleMouseOut = function handleMouseOut() {
+ if (ref.current) {
+ setHover(false);
+ }
+ };
+
+ useEffect(function () {
+ var current = ref.current;
+ current.addEventListener(MOUSE_ENTER, handleMouseOver);
+ current.addEventListener(MOUSE_LEAVE, handleMouseOut);
+ return function () {
+ current.removeEventListener(MOUSE_ENTER, handleMouseOver);
+ current.removeEventListener(MOUSE_LEAVE, handleMouseOut);
+ };
+ });
+};
+
+var noop = function noop() {};
+
+var GROUPING_PADDING = '1px';
+var NORMAL_PADDING = '8px';
+function Message(props) {
+ var isByMe = props.isByMe,
+ userId = props.userId,
+ message = props.message,
+ className = props.className,
+ resendMessage = props.resendMessage,
+ disabled = props.disabled,
+ showEdit = props.showEdit,
+ showRemove = props.showRemove,
+ status = props.status,
+ useReaction = props.useReaction,
+ emojiAllMap = props.emojiAllMap,
+ membersMap = props.membersMap,
+ toggleReaction = props.toggleReaction,
+ memoizedEmojiListItems = props.memoizedEmojiListItems,
+ chainTop = props.chainTop,
+ chainBottom = props.chainBottom;
+ if (!message) return null;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push("sendbird-message".concat(isByMe ? '--outgoing' : '--incoming'));
+ var memoizedMessageText = useMemoizedMessageText({
+ message: message.message,
+ updatedAt: message.updatedAt,
+ className: 'sendbird-user-message-word'
+ });
+ return React.createElement("div", {
+ className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-message']).join(' ')
+ }, isByMe ? React.createElement(OutgoingUserMessage, {
+ userId: userId,
+ message: message,
+ resendMessage: resendMessage,
+ disabled: disabled,
+ showEdit: showEdit,
+ showRemove: showRemove,
+ status: status,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedMessageText: memoizedMessageText,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }) : React.createElement(IncomingUserMessage, {
+ userId: userId,
+ message: message,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedMessageText: memoizedMessageText,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }));
+}
+Message.propTypes = {
+ isByMe: PropTypes.bool,
+ disabled: PropTypes.bool,
+ userId: PropTypes.string,
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])).isRequired,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ showEdit: PropTypes.func,
+ status: PropTypes.string,
+ showRemove: PropTypes.func,
+ resendMessage: PropTypes.func,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool,
+ chainBottom: PropTypes.bool
+};
+Message.defaultProps = {
+ isByMe: false,
+ disabled: false,
+ userId: '',
+ resendMessage: noop,
+ className: '',
+ showEdit: noop,
+ showRemove: noop,
+ status: '',
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ },
+ chainTop: false,
+ chainBottom: false
+};
+
+function OutgoingUserMessage(_ref) {
+ var userId = _ref.userId,
+ message = _ref.message,
+ showEdit = _ref.showEdit,
+ disabled = _ref.disabled,
+ showRemove = _ref.showRemove,
+ status = _ref.status,
+ resendMessage = _ref.resendMessage,
+ useReaction = _ref.useReaction,
+ emojiAllMap = _ref.emojiAllMap,
+ membersMap = _ref.membersMap,
+ toggleReaction = _ref.toggleReaction,
+ memoizedMessageText = _ref.memoizedMessageText,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems,
+ chainTop = _ref.chainTop,
+ chainBottom = _ref.chainBottom;
+ var MemoizedMessageText = memoizedMessageText;
+ var MemoizedEmojiListItems = memoizedEmojiListItems; // TODO: when message.requestState is succeeded, consider if it's SENT or DELIVERED
+
+ var messageRef = useRef(null);
+ var parentRefReactions = useRef(null);
+ var parentRefMenus = useRef(null);
+ var parentContainRef = useRef(null);
+ var isMessageSent = getIsSentFromStatus$2(status);
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ mousehover = _useState2[0],
+ setMousehover = _useState2[1];
+
+ var _useState3 = useState(false),
+ _useState4 = _slicedToArray(_useState3, 2),
+ moreActive = _useState4[0],
+ setMoreActive = _useState4[1];
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React.createElement("div", {
+ className: "sendbird-user-message--outgoing",
+ ref: messageRef,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING : NORMAL_PADDING,
+ paddingBottom: chainBottom ? GROUPING_PADDING : NORMAL_PADDING
+ }
+ }, React.createElement("div", {
+ className: "sendbird-user-message--inner"
+ }, React.createElement("div", {
+ className: "sendbird-user-message__left-padding"
+ }, React.createElement("div", {
+ className: "sendbird-user-message__more",
+ ref: parentContainRef
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "sendbird-user-message__more__menu",
+ ref: parentRefMenus,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: parentRefMenus // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: parentContainRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isMessageSent && React.createElement(MenuItem, {
+ className: "sendbird-user-message--copy",
+ onClick: function onClick() {
+ copyToClipboard$1(message.message);
+ closeDropdown();
+ }
+ }, "Copy"), isMessageSent && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showEdit(true);
+ closeDropdown();
+ }
+ }, "Edit"), message && message.isResendable && message.isResendable() && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, "Resend"), React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, "Delete"));
+ }
+ }), isMessageSent && useReaction && emojiAllMap.size > 0 && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "sendbird-user-message__more__add-reaction",
+ ref: parentRefReactions,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: parentRefReactions,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React.createElement("div", {
+ className: "sendbird-user-message__status"
+ }, React.createElement(MessageStatus, {
+ message: message,
+ status: status // onDelete={() => { showRemove(true); }}
+ // onResend={() => resendMessage(message)}
+ // duplicated and should replace to more
+
+ }))), React.createElement("div", {
+ className: "sendbird-user-message__text-balloon"
+ }, React.createElement("div", {
+ className: "sendbird-user-message__text-balloon__inner"
+ }, React.createElement("div", {
+ className: "sendbird-user-message__text-balloon__inner__text-place"
+ }, React.createElement(Label, {
+ className: "sendbird-user-message__text-balloon__inner__text-place__text",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, React.createElement(MemoizedMessageText, null))), useReaction && message.reactions && message.reactions.length > 0 && React.createElement(EmojiReactions, {
+ className: "sendbird-user-message__text-balloon__inner__emoji-reactions",
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ })))));
+}
+
+function IncomingUserMessage(_ref2) {
+ var userId = _ref2.userId,
+ message = _ref2.message,
+ useReaction = _ref2.useReaction,
+ emojiAllMap = _ref2.emojiAllMap,
+ membersMap = _ref2.membersMap,
+ toggleReaction = _ref2.toggleReaction,
+ memoizedMessageText = _ref2.memoizedMessageText,
+ memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
+ chainTop = _ref2.chainTop,
+ chainBottom = _ref2.chainBottom;
+ var MemoizedMessageText = memoizedMessageText;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var messageRef = useRef(null);
+ var parentRefReactions = useRef(null);
+ var parentRefMenus = useRef(null);
+ var parentContainRef = useRef(null);
+ var avatarRef = useRef(null);
+
+ var _React$useContext = React.useContext(UserProfileContext),
+ disableUserProfile = _React$useContext.disableUserProfile,
+ renderUserProfile = _React$useContext.renderUserProfile;
+
+ var _useState5 = useState(false),
+ _useState6 = _slicedToArray(_useState5, 2),
+ mousehover = _useState6[0],
+ setMousehover = _useState6[1];
+
+ var _useState7 = useState(false),
+ _useState8 = _slicedToArray(_useState7, 2),
+ moreActive = _useState8[0],
+ setMoreActive = _useState8[1];
+
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+ var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React.createElement("div", {
+ ref: messageRef,
+ className: "sendbird-user-message--incoming",
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING : NORMAL_PADDING,
+ paddingBottom: chainBottom ? GROUPING_PADDING : NORMAL_PADDING
+ }
+ }, React.createElement("div", {
+ className: "sendbird-user-message--inner"
+ }, React.createElement("div", {
+ className: "sendbird-user-message--body"
+ }, !chainBottom && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ ref: avatarRef,
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ className: "sendbird-user-message__avatar",
+ src: getSenderProfileUrl$1(message),
+ width: "28px",
+ height: "28px"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: message.sender,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: message.sender,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), !chainTop && React.createElement(Label, {
+ className: "sendbird-user-message__sender-name",
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, getSenderName$1(message)), React.createElement("div", {
+ className: "sendbird-user-message__text-balloon"
+ }, React.createElement("div", {
+ className: "sendbird-user-message__text-balloon__inner"
+ }, React.createElement("div", {
+ className: "sendbird-user-message__text-balloon__inner__text-place"
+ }, React.createElement(Label, {
+ className: "sendbird-user-message__text-balloon__inner__text-place__text",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, React.createElement(MemoizedMessageText, null))), showEmojiReactions && React.createElement(EmojiReactions, {
+ className: "sendbird-user-message__text-balloon__inner__emoji-reactions",
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ })))), React.createElement("div", {
+ className: "sendbird-user-message__right-padding"
+ }, React.createElement("div", {
+ className: "sendbird-user-message__more",
+ ref: parentContainRef
+ }, showReactionAddButton && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: parentRefReactions,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MemoizedEmojiListItems, {
+ parentRef: parentRefReactions,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ message: message,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ }), React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: parentRefMenus,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: parentRefMenus,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown
+ }, React.createElement(MenuItem, {
+ className: "sendbird-user-message--copy",
+ onClick: function onClick() {
+ copyToClipboard$1(message.message);
+ closeDropdown();
+ }
+ }, "Copy"));
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React.createElement(Label, {
+ className: "sendbird-user-message__sent-at",
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2
+ }, getMessageCreatedAt$5(message)))));
+}
+
+IncomingUserMessage.propTypes = {
+ userId: PropTypes.string.isRequired,
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedMessageText: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+IncomingUserMessage.defaultProps = {
+ message: {},
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+OutgoingUserMessage.propTypes = {
+ userId: PropTypes.string.isRequired,
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ showEdit: PropTypes.func,
+ showRemove: PropTypes.func,
+ disabled: PropTypes.bool,
+ resendMessage: PropTypes.func,
+ status: PropTypes.string.isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedMessageText: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+OutgoingUserMessage.defaultProps = {
+ message: {},
+ resendMessage: noop,
+ showEdit: noop,
+ showRemove: noop,
+ disabled: false,
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+
+function AdminMessage(_ref) {
+ var className = _ref.className,
+ message = _ref.message;
+
+ if (!message.messageType || message.messageType !== 'admin') {
+ // change to use message.isAdminMessage()
+ return null;
+ }
+
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React.createElement("div", {
+ className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-admin-message']).join(' ')
+ }, React.createElement(Label, {
+ className: "sendbird-admin-message__text",
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, message.message));
+}
+AdminMessage.propTypes = {
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+AdminMessage.defaultProps = {
+ message: {},
+ className: ''
+};
+
+var getMessageCreatedAt$1 = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+var getIsSentFromStatus = function getIsSentFromStatus(status) {
+ return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
+};
+
+var noop$1 = function noop() {};
+
+var OUTGOING_THUMBNAIL_MESSAGE = 'sendbird-outgoing-thumbnail-message';
+var INCOMING_THUMBNAIL_MESSAGE = 'sendbird-incoming-thumbnail-message';
+var GROUPING_PADDING$1 = '1px';
+var NORMAL_PADDING$1 = '8px';
+function ThumbnailMessage(_ref) {
+ var _ref$message = _ref.message,
+ message = _ref$message === void 0 ? {} : _ref$message,
+ userId = _ref.userId,
+ disabled = _ref.disabled,
+ isByMe = _ref.isByMe,
+ onClick = _ref.onClick,
+ showRemove = _ref.showRemove,
+ status = _ref.status,
+ resendMessage = _ref.resendMessage,
+ useReaction = _ref.useReaction,
+ emojiAllMap = _ref.emojiAllMap,
+ membersMap = _ref.membersMap,
+ toggleReaction = _ref.toggleReaction,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems,
+ chainTop = _ref.chainTop,
+ chainBottom = _ref.chainBottom;
+ return isByMe ? React.createElement(OutgoingThumbnailMessage, {
+ userId: userId,
+ status: status,
+ message: message,
+ onClick: onClick,
+ disabled: disabled,
+ chainTop: chainTop,
+ showRemove: showRemove,
+ membersMap: membersMap,
+ chainBottom: chainBottom,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ resendMessage: resendMessage,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }) : React.createElement(IncomingThumbnailMessage, {
+ userId: userId,
+ status: status,
+ message: message,
+ onClick: onClick,
+ chainTop: chainTop,
+ membersMap: membersMap,
+ chainBottom: chainBottom,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ });
+}
+function OutgoingThumbnailMessage(_ref2) {
+ var _ref2$message = _ref2.message,
+ message = _ref2$message === void 0 ? {} : _ref2$message,
+ userId = _ref2.userId,
+ disabled = _ref2.disabled,
+ onClick = _ref2.onClick,
+ showRemove = _ref2.showRemove,
+ status = _ref2.status,
+ resendMessage = _ref2.resendMessage,
+ useReaction = _ref2.useReaction,
+ emojiAllMap = _ref2.emojiAllMap,
+ membersMap = _ref2.membersMap,
+ toggleReaction = _ref2.toggleReaction,
+ memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
+ chainTop = _ref2.chainTop,
+ chainBottom = _ref2.chainBottom;
+ var type = message.type,
+ url = message.url,
+ localUrl = message.localUrl;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var messageRef = useRef(null);
+ var parentContainRef = useRef(null);
+ var menuRef = useRef(null);
+ var reactionAddRef = useRef(null);
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ mousehover = _useState2[0],
+ setMousehover = _useState2[1];
+
+ var _useState3 = useState(false),
+ _useState4 = _slicedToArray(_useState3, 2),
+ moreActive = _useState4[0],
+ setMoreActive = _useState4[1];
+
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var isMessageSent = getIsSentFromStatus(status);
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React.createElement("div", {
+ className: OUTGOING_THUMBNAIL_MESSAGE,
+ ref: messageRef,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$1 : NORMAL_PADDING$1,
+ paddingBottom: chainBottom ? GROUPING_PADDING$1 : NORMAL_PADDING$1
+ }
+ }, React.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "--inner")
+ }, React.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "__left-padding")
+ }, React.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-left-padding__more"),
+ ref: parentContainRef
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: menuRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ color: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: menuRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, message && message.isResendable && message.isResendable() && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ }), isMessageSent && showReactionAddButton && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: reactionAddRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.EMOJI_REACTIONS_ADD,
+ color: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: reactionAddRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React.createElement(MessageStatus, {
+ message: message,
+ status: status,
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-left-padding__status")
+ })), React.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "__body")
+ }, React.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap")
+ }, React.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap--inner"),
+ onClick: isMessageSent ? function () {
+ return onClick(true);
+ } : function () {},
+ onKeyDown: isMessageSent ? function () {
+ return onClick(true);
+ } : function () {},
+ tabIndex: 0,
+ role: "button"
+ }, isVideo(type) && React.createElement(React.Fragment, null, React.createElement("video", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__video")
+ }, React.createElement("source", {
+ src: url || localUrl,
+ type: type
+ })), React.createElement(Icon, {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__video-icon"),
+ width: "56px",
+ height: "56px",
+ type: IconTypes.PLAY
+ })), isImage(type) && React.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__img"),
+ style: {
+ backgroundImage: "url(".concat(url || localUrl, ")"),
+ height: '280px',
+ width: '404px',
+ backgroundSize: 'cover',
+ backgroundRepeat: 'no-repeat',
+ backgroundPosition: 'center'
+ }
+ }), unSupported(type) && React.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__other")
+ }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React.createElement("div", {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap__overlay")
+ })), useReaction && message.reactions && message.reactions.length > 0 && React.createElement(EmojiReactions, {
+ className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap__emoji-reactions"),
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ })))));
+}
+function IncomingThumbnailMessage(_ref3) {
+ var _ref3$message = _ref3.message,
+ message = _ref3$message === void 0 ? {} : _ref3$message,
+ userId = _ref3.userId,
+ onClick = _ref3.onClick,
+ status = _ref3.status,
+ useReaction = _ref3.useReaction,
+ emojiAllMap = _ref3.emojiAllMap,
+ membersMap = _ref3.membersMap,
+ toggleReaction = _ref3.toggleReaction,
+ memoizedEmojiListItems = _ref3.memoizedEmojiListItems,
+ chainTop = _ref3.chainTop,
+ chainBottom = _ref3.chainBottom;
+ var type = message.type,
+ url = message.url,
+ localUrl = message.localUrl;
+
+ var _React$useContext = React.useContext(UserProfileContext),
+ disableUserProfile = _React$useContext.disableUserProfile,
+ renderUserProfile = _React$useContext.renderUserProfile;
+
+ var _useContext2 = useContext(LocalizationContext),
+ stringSet = _useContext2.stringSet;
+
+ var messageRef = useRef(null);
+ var parentContainRef = useRef(null);
+ var reactionAddRef = useRef(null);
+ var avatarRef = useRef(null);
+
+ var _useState5 = useState(false),
+ _useState6 = _slicedToArray(_useState5, 2),
+ mousehover = _useState6[0],
+ setMousehover = _useState6[1];
+
+ var _useState7 = useState(false),
+ _useState8 = _slicedToArray(_useState7, 2),
+ moreActive = _useState8[0],
+ setMoreActive = _useState8[1];
+
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var isMessageSent = getIsSentFromStatus(status);
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React.createElement("div", {
+ className: INCOMING_THUMBNAIL_MESSAGE,
+ ref: messageRef,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$1 : NORMAL_PADDING$1,
+ paddingBottom: chainBottom ? GROUPING_PADDING$1 : NORMAL_PADDING$1
+ }
+ }, !chainTop && React.createElement(Label, {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__sender-name"),
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, getSenderName$2(message) || ''), React.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "--inner")
+ }, React.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__body")
+ }, React.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap")
+ }, !chainBottom && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__avatar"),
+ src: getSenderProfileUrl$2(message),
+ width: "28px",
+ height: "28px"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: message.sender,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: message.sender,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), React.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap--inner"),
+ role: "button",
+ tabIndex: 0,
+ onClick: isMessageSent ? function () {
+ return onClick(true);
+ } : function () {},
+ onKeyDown: isMessageSent ? function () {
+ return onClick(true);
+ } : function () {}
+ }, isVideo(type) && React.createElement(React.Fragment, null, React.createElement("video", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__video")
+ }, React.createElement("source", {
+ src: url || localUrl,
+ type: type
+ })), React.createElement(Icon, {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__video-icon"),
+ width: "56px",
+ height: "56px",
+ type: IconTypes.PLAY
+ })), isImage(type) && React.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__img"),
+ style: {
+ backgroundImage: "url(".concat(url || localUrl, ")"),
+ height: '280px',
+ width: '404px',
+ backgroundSize: 'cover',
+ backgroundRepeat: 'no-repeat',
+ backgroundPosition: 'center'
+ }
+ }), unSupported(type) && React.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__other")
+ }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap-overlay")
+ })), useReaction && message.reactions && message.reactions.length > 0 && React.createElement(EmojiReactions, {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__wrap__emoji-reactions"),
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }))), React.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__right-padding")
+ }, !chainBottom && !(mousehover || moreActive) && React.createElement(Label, {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__sent-at"),
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2
+ }, getMessageCreatedAt$1(message)), React.createElement("div", {
+ className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__more"),
+ ref: parentContainRef
+ }, showReactionAddButton && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: reactionAddRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.EMOJI_REACTIONS_ADD,
+ color: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: reactionAddRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })))));
+}
+ThumbnailMessage.propTypes = {
+ message: PropTypes.shape({
+ type: PropTypes.string,
+ url: PropTypes.string,
+ localUrl: PropTypes.string
+ }).isRequired,
+ userId: PropTypes.string,
+ resendMessage: PropTypes.func,
+ status: PropTypes.string,
+ isByMe: PropTypes.bool,
+ disabled: PropTypes.bool,
+ onClick: PropTypes.func,
+ showRemove: PropTypes.func,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool,
+ chainBottom: PropTypes.bool
+};
+ThumbnailMessage.defaultProps = {
+ isByMe: false,
+ disabled: false,
+ resendMessage: noop$1,
+ onClick: noop$1,
+ showRemove: noop$1,
+ status: '',
+ userId: '',
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop$1,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ },
+ chainTop: false,
+ chainBottom: false
+};
+OutgoingThumbnailMessage.propTypes = {
+ message: PropTypes.shape({
+ type: PropTypes.string,
+ url: PropTypes.string,
+ localUrl: PropTypes.string
+ }).isRequired,
+ userId: PropTypes.string.isRequired,
+ disabled: PropTypes.bool.isRequired,
+ resendMessage: PropTypes.func.isRequired,
+ status: PropTypes.string,
+ onClick: PropTypes.func.isRequired,
+ showRemove: PropTypes.func.isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ membersMap: PropTypes.instanceOf(Map).isRequired,
+ toggleReaction: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func.isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+OutgoingThumbnailMessage.defaultProps = {
+ status: ''
+};
+IncomingThumbnailMessage.propTypes = {
+ message: PropTypes.shape({
+ type: PropTypes.string,
+ url: PropTypes.string,
+ localUrl: PropTypes.string
+ }).isRequired,
+ userId: PropTypes.string.isRequired,
+ onClick: PropTypes.func.isRequired,
+ status: PropTypes.string,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ membersMap: PropTypes.instanceOf(Map).isRequired,
+ toggleReaction: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func.isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+IncomingThumbnailMessage.defaultProps = {
+ status: ''
+};
+
+var MAX_TRUNCATE_LENGTH = 40;
+var GROUPAING_PADDING = '1px';
+var NORMAL_PADDING$2 = '8px';
+
+var noop$2 = function noop() {};
+
+function checkFileType(fileUrl) {
+ var result = null;
+ var imageFile = /(\.gif|\.jpg|\.jpeg|\.txt|\.pdf)$/i;
+ var audioFile = /(\.mp3)$/i;
+
+ if (imageFile.test(fileUrl)) {
+ result = IconTypes.FILE_DOCUMENT;
+ } else if (audioFile.test(fileUrl)) {
+ result = IconTypes.FILE_AUDIO;
+ }
+
+ return result;
+}
+
+function OutgoingFileMessage(_ref) {
+ var message = _ref.message,
+ userId = _ref.userId,
+ status = _ref.status,
+ showRemove = _ref.showRemove,
+ disabled = _ref.disabled,
+ resendMessage = _ref.resendMessage,
+ useReaction = _ref.useReaction,
+ emojiAllMap = _ref.emojiAllMap,
+ membersMap = _ref.membersMap,
+ toggleReaction = _ref.toggleReaction,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems,
+ chainTop = _ref.chainTop,
+ chainBottom = _ref.chainBottom;
+ var url = message.url;
+
+ var openFileUrl = function openFileUrl() {
+ window.open(url);
+ };
+
+ var messageRef = useRef(null);
+ var parentContainRef = useRef(null);
+ var menuRef = useRef(null);
+ var reactionAddButtonRef = useRef(null);
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ mousehover = _useState2[0],
+ setMousehover = _useState2[1];
+
+ var _useState3 = useState(false),
+ _useState4 = _slicedToArray(_useState3, 2),
+ moreActive = _useState4[0],
+ setMoreActive = _useState4[1];
+
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var isMessageSent = getIsSentFromStatus$3(status);
+ var showEmojiReactions = isMessageSent && useReaction && message.reactions && message.reactions.length > 0;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React.createElement("div", {
+ className: "sendbird-file-message__outgoing",
+ ref: messageRef,
+ style: {
+ paddingTop: chainTop ? GROUPAING_PADDING : NORMAL_PADDING$2,
+ paddingBottom: chainBottom ? GROUPAING_PADDING : NORMAL_PADDING$2
+ }
+ }, React.createElement("div", {
+ className: "sendbird-file-message--inner"
+ }, React.createElement("div", {
+ className: "sendbird-file-message__left-padding"
+ }, React.createElement("div", {
+ className: "sendbird-file-message__more",
+ ref: parentContainRef
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: menuRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: menuRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, message && message.isResendable && message.isResendable() && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, "Resend"), React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, "Delete"));
+ }
+ }), showReactionAddButton && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: reactionAddButtonRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: reactionAddButtonRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React.createElement("div", {
+ className: "sendbird-file-message__status"
+ }, React.createElement(MessageStatus, {
+ message: message,
+ status: status
+ }))), React.createElement("div", {
+ className: "sendbird-file-message__tooltip"
+ }, React.createElement("div", {
+ className: "sendbird-file-message__tooltip__inner"
+ }, checkFileType(url) ? React.createElement(Icon, {
+ className: "sendbird-file-message__tooltip__icon",
+ width: "28px",
+ height: "28px",
+ type: checkFileType(url)
+ }) : null, React.createElement(TextButton, {
+ className: "sendbird-file-message__tooltip__text",
+ onClick: openFileUrl
+ }, React.createElement(Label, {
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, truncate(message.url, MAX_TRUNCATE_LENGTH)))), showEmojiReactions && React.createElement(EmojiReactions, {
+ className: "sendbird-file-message__tooltip__emoji-reactions",
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }))));
+}
+function IncomingFileMessage(_ref2) {
+ var message = _ref2.message,
+ userId = _ref2.userId,
+ useReaction = _ref2.useReaction,
+ emojiAllMap = _ref2.emojiAllMap,
+ membersMap = _ref2.membersMap,
+ toggleReaction = _ref2.toggleReaction,
+ memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
+ chainTop = _ref2.chainTop,
+ chainBottom = _ref2.chainBottom;
+
+ var openFileUrl = function openFileUrl() {
+ window.open(message.url);
+ };
+
+ var messageRef = useRef(null);
+
+ var _React$useContext = React.useContext(UserProfileContext),
+ disableUserProfile = _React$useContext.disableUserProfile,
+ renderUserProfile = _React$useContext.renderUserProfile;
+
+ var parentContainRef = useRef(null);
+ var avatarRef = useRef(null);
+ var reactionAddButtonRef = useRef(null);
+
+ var _useState5 = useState(false),
+ _useState6 = _slicedToArray(_useState5, 2),
+ mousehover = _useState6[0],
+ setMousehover = _useState6[1];
+
+ var _useState7 = useState(false),
+ _useState8 = _slicedToArray(_useState7, 2),
+ moreActive = _useState8[0],
+ setMoreActive = _useState8[1];
+
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React.createElement("div", {
+ className: "sendbird-file-message__incoming",
+ ref: messageRef,
+ style: {
+ paddingTop: chainTop ? GROUPAING_PADDING : NORMAL_PADDING$2,
+ paddingBottom: chainBottom ? GROUPAING_PADDING : NORMAL_PADDING$2
+ }
+ }, React.createElement("div", {
+ className: "sendbird-file-message--inner"
+ }, React.createElement("div", {
+ className: "sendbird-file-message__body"
+ }, !chainBottom && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ ref: avatarRef,
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ className: "sendbird-file-message__avatar",
+ src: getSenderProfileUrl$2(message),
+ width: "28px",
+ height: "28px"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: message.sender,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: message.sender,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), !chainTop && React.createElement(Label, {
+ className: "sendbird-file-message__sender-name",
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, getSenderName$2(message)), React.createElement("div", {
+ className: "sendbird-file-message__tooltip"
+ }, React.createElement("div", {
+ className: "sendbird-file-message__tooltip__inner"
+ }, checkFileType(message.url) ? React.createElement(Icon, {
+ className: "sendbird-file-message__tooltip__icon",
+ width: "28px",
+ height: "28px",
+ type: checkFileType(message.url)
+ }) : null, React.createElement(TextButton, {
+ className: "sendbird-file-message__tooltip__text",
+ onClick: openFileUrl
+ }, React.createElement(Label, {
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, truncate(message.url, MAX_TRUNCATE_LENGTH)))), useReaction && message.reactions && message.reactions.length > 0 && React.createElement(EmojiReactions, {
+ className: "sendbird-file-message__tooltip__emoji-reactions",
+ userId: userId,
+ message: message,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }))), React.createElement("div", {
+ className: "sendbird-file-message__right-padding"
+ }, React.createElement("div", {
+ className: "sendbird-file-message__more",
+ ref: parentContainRef
+ }, showReactionAddButton && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: reactionAddButtonRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: reactionAddButtonRef,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React.createElement(Label, {
+ className: "sendbird-file-message__sent-at",
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2
+ }, getMessageCreatedAt$4(message)))));
+}
+OutgoingFileMessage.propTypes = {
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ userId: PropTypes.string,
+ status: PropTypes.string,
+ showRemove: PropTypes.func,
+ resendMessage: PropTypes.func,
+ useReaction: PropTypes.bool.isRequired,
+ disabled: PropTypes.bool,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+OutgoingFileMessage.defaultProps = {
+ status: '',
+ showRemove: noop$2,
+ resendMessage: noop$2,
+ message: {},
+ userId: '',
+ disabled: false,
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop$2,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+IncomingFileMessage.propTypes = {
+ message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
+ userId: PropTypes.string,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+IncomingFileMessage.defaultProps = {
+ message: {},
+ userId: '',
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop$2,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+
+var MessageSwitch = function MessageSwitch(_ref3) {
+ var message = _ref3.message,
+ userId = _ref3.userId,
+ disabled = _ref3.disabled,
+ isByMe = _ref3.isByMe,
+ showRemove = _ref3.showRemove,
+ status = _ref3.status,
+ resendMessage = _ref3.resendMessage,
+ useReaction = _ref3.useReaction,
+ emojiAllMap = _ref3.emojiAllMap,
+ membersMap = _ref3.membersMap,
+ toggleReaction = _ref3.toggleReaction,
+ memoizedEmojiListItems = _ref3.memoizedEmojiListItems,
+ chainTop = _ref3.chainTop,
+ chainBottom = _ref3.chainBottom;
+ return React.createElement("div", {
+ className: "sendbird-file-message".concat(isByMe ? '--outgoing' : '--incoming')
+ }, isByMe ? React.createElement(OutgoingFileMessage, {
+ message: message,
+ userId: userId,
+ disabled: disabled,
+ showRemove: showRemove,
+ status: status,
+ resendMessage: resendMessage,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }) : React.createElement(IncomingFileMessage, {
+ userId: userId,
+ message: message,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }));
+};
+
+MessageSwitch.propTypes = {
+ message: PropTypes.shape({}),
+ userId: PropTypes.string,
+ isByMe: PropTypes.bool,
+ disabled: PropTypes.bool,
+ showRemove: PropTypes.func,
+ resendMessage: PropTypes.func,
+ status: PropTypes.string.isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool,
+ chainBottom: PropTypes.bool
+};
+MessageSwitch.defaultProps = {
+ message: {},
+ isByMe: false,
+ disabled: false,
+ showRemove: noop$2,
+ resendMessage: noop$2,
+ userId: '',
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ toggleReaction: noop$2,
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ },
+ chainTop: false,
+ chainBottom: false
+};
+
+var RemoveMessage = function RemoveMessage(props) {
+ var onCloseModal = props.onCloseModal,
+ onDeleteMessage = props.onDeleteMessage;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.createElement(Modal, {
+ onCancel: onCloseModal,
+ onSubmit: onDeleteMessage,
+ submitText: "Delete",
+ titleText: stringSet.MODAL__DELETE_MESSAGE__TITLE
+ });
+};
+
+RemoveMessage.propTypes = {
+ onCloseModal: PropTypes.func.isRequired,
+ onDeleteMessage: PropTypes.func.isRequired
+};
+
+var getMessageCreatedAt$2 = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+
+var CLASS_NAME$2 = 'sendbird-unknown-message';
+var GROUPING_PADDING$2 = '1px';
+var NORMAL_PADDING$3 = '8px';
+function UnknownMessage(_ref) {
+ var message = _ref.message,
+ isByMe = _ref.isByMe,
+ status = _ref.status,
+ className = _ref.className,
+ showRemove = _ref.showRemove,
+ chainTop = _ref.chainTop,
+ chainBottom = _ref.chainBottom;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift(CLASS_NAME$2);
+ injectingClassName.push("".concat(CLASS_NAME$2).concat(isByMe ? '--outgoing' : '--incoming'));
+ return React.createElement("div", {
+ className: injectingClassName.join(' ')
+ }, isByMe ? React.createElement(OutgoingUnknownMessage, {
+ status: status,
+ message: message,
+ chainTop: chainTop,
+ showRemove: showRemove,
+ chainBottom: chainBottom
+ }) : React.createElement(IncomingUnknownMessage, {
+ message: message,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }));
+}
+UnknownMessage.propTypes = {
+ message: PropTypes.shape({}).isRequired,
+ isByMe: PropTypes.bool,
+ status: PropTypes.string,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ showRemove: PropTypes.func,
+ chainTop: PropTypes.bool,
+ chainBottom: PropTypes.bool
+};
+UnknownMessage.defaultProps = {
+ isByMe: false,
+ status: '',
+ className: '',
+ showRemove: function showRemove() {},
+ chainTop: false,
+ chainBottom: false
+};
+
+function OutgoingUnknownMessage(_ref2) {
+ var message = _ref2.message,
+ status = _ref2.status,
+ showRemove = _ref2.showRemove,
+ chainTop = _ref2.chainTop,
+ chainBottom = _ref2.chainBottom;
+ var className = 'sendbird-outgoing-unknown-message';
+ var messageRef = useRef(null);
+ var parentContainRef = useRef(null);
+ var menuRef = useRef(null);
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ mousehover = _useState2[0],
+ setMousehover = _useState2[1];
+
+ var _useState3 = useState(false),
+ _useState4 = _slicedToArray(_useState3, 2),
+ moreActive = _useState4[0],
+ setMoreActive = _useState4[1];
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React.createElement("div", {
+ ref: messageRef,
+ className: className,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$2 : NORMAL_PADDING$3,
+ paddingBottom: chainBottom ? GROUPING_PADDING$2 : NORMAL_PADDING$3
+ }
+ }, React.createElement("div", {
+ className: "".concat(className, "--inner")
+ }, React.createElement("div", {
+ className: "".concat(className, "--left-padding")
+ }, React.createElement("div", {
+ className: "".concat(className, "__more"),
+ ref: parentContainRef
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "".concat(className, "__more__menu"),
+ ref: menuRef,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: menuRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: parentContainRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React.createElement(MenuItem, {
+ onClick: function onClick() {
+ showRemove(true);
+ closeDropdown();
+ }
+ }, "Delete"));
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React.createElement("div", {
+ className: "".concat(className, "__message-status")
+ }, React.createElement(MessageStatus, {
+ message: message,
+ status: status
+ }))), React.createElement("div", {
+ className: "".concat(className, "__body")
+ }, React.createElement("div", {
+ className: "".concat(className, "__body__text-balloon")
+ }, React.createElement(Label, {
+ className: "".concat(className, "__body__text-balloon__header"),
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React.createElement(Label, {
+ className: "".concat(className, "__body__text-balloon__description"),
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_2
+ }, stringSet.UNKNOWN__CANNOT_READ_MESSAGE)))));
+}
+
+function IncomingUnknownMessage(_ref3) {
+ var message = _ref3.message,
+ chainTop = _ref3.chainTop,
+ chainBottom = _ref3.chainBottom;
+ var className = 'sendbird-incoming-unknown-message';
+ var sender = message.sender;
+ var avatarRef = useRef(null);
+
+ var _useContext2 = useContext(LocalizationContext),
+ stringSet = _useContext2.stringSet;
+
+ var _React$useContext = React.useContext(UserProfileContext),
+ disableUserProfile = _React$useContext.disableUserProfile,
+ renderUserProfile = _React$useContext.renderUserProfile;
+
+ return React.createElement("div", {
+ className: className,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$2 : NORMAL_PADDING$3,
+ paddingBottom: chainBottom ? GROUPING_PADDING$2 : NORMAL_PADDING$3
+ }
+ }, React.createElement("div", {
+ className: "".concat(className, "--inner")
+ }, React.createElement("div", {
+ className: "".concat(className, "__left")
+ }, !chainBottom && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ ref: avatarRef,
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ className: "".concat(className, "__left__sender-profile-image"),
+ src: sender.profileUrl,
+ width: "28px",
+ height: "28px",
+ alt: "sender-profile-image"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: message.sender,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: message.sender,
+ onSuccess: closeDropdown
+ }));
+ }
+ })), React.createElement("div", {
+ className: "".concat(className, "__body")
+ }, !chainTop && React.createElement(Label, {
+ className: "".concat(className, "__body__sender-name"),
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, sender.nickname || stringSet.NO_NAME), React.createElement("div", {
+ className: "".concat(className, "__body__text-balloon")
+ }, React.createElement(Label, {
+ className: "".concat(className, "__body__text-balloon__header"),
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React.createElement(Label, {
+ className: "".concat(className, "__body__text-balloon__description"),
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_2
+ }, stringSet.UNKNOWN__CANNOT_READ_MESSAGE))), React.createElement("div", {
+ className: "".concat(className, "--right-padding")
+ }, !chainBottom && React.createElement(Label, {
+ className: "".concat(className, "__sent-at"),
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2
+ }, getMessageCreatedAt$2(message)))));
+}
+
+OutgoingUnknownMessage.propTypes = {
+ message: PropTypes.shape({}).isRequired,
+ status: PropTypes.string.isRequired,
+ showRemove: PropTypes.func,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+OutgoingUnknownMessage.defaultProps = {
+ showRemove: function showRemove() {}
+};
+IncomingUnknownMessage.propTypes = {
+ message: PropTypes.shape({
+ sender: PropTypes.shape({
+ nickname: PropTypes.string,
+ profileUrl: PropTypes.string
+ })
+ }).isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+
+var URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;
+var OG_MESSAGE = 'sendbird-og-message';
+var OUTGOING_OG_MESSAGE = 'sendbird-outgoing-og-message';
+var INCOMING_OG_MESSAGE = 'sendbird-incoming-og-message';
+
+var createUrlTester = function createUrlTester(regexp) {
+ return function (text) {
+ return regexp.test(text);
+ };
+};
+var getIsSentFromStatus$1 = function getIsSentFromStatus(status) {
+ return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
+};
+var copyToClipboard = function copyToClipboard(text) {
+ try {
+ if (window.clipboardData && window.clipboardData.setData) {
+ // Internet Explorer-specific code path
+ // to prevent textarea being shown while dialog is visible.
+ return window.clipboardData.setData('Text', text);
+ }
+
+ if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
+ var textarea = document.createElement('textarea');
+ textarea.textContent = text;
+ textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.
+
+ document.body.appendChild(textarea);
+ textarea.select();
+
+ try {
+ return document.execCommand('copy'); // Security exception may be thrown by some browsers.
+ } catch (ex) {
+ return false;
+ } finally {
+ document.body.removeChild(textarea);
+ }
+ }
+
+ return false;
+ } catch (err) {
+ return err;
+ }
+};
+var getSenderProfileUrl = function getSenderProfileUrl(message) {
+ return message.sender && message.sender.profileUrl;
+};
+var getSenderName = function getSenderName(message) {
+ return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
+};
+var getMessageCreatedAt$3 = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+var checkOGIsEnalbed = function checkOGIsEnalbed(message) {
+ var ogMetaData = message.ogMetaData;
+
+ if (!ogMetaData) {
+ return false;
+ }
+
+ var url = ogMetaData.url;
+
+ if (!url) {
+ return false;
+ }
+
+ return true;
+};
+
+var WORD_TYPOGRAPHY$1 = LabelTypography.BODY_1;
+var WORD_COLOR = LabelColors.ONBACKGROUND_1;
+var EDITED_COLOR$1 = LabelColors.ONBACKGROUND_2;
+var isUrl = createUrlTester(URL_REG);
+function useMemoizedMessageText$1(_ref) {
+ var message = _ref.message,
+ updatedAt = _ref.updatedAt,
+ className = _ref.className;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return useMemo(function () {
+ return function () {
+ var splitMessage = message.split(' ');
+ var matchedMessage = splitMessage.map(function (word) {
+ return isUrl(word) ? React.createElement(LinkLabel, {
+ key: uuidv4$1(),
+ className: className,
+ src: word,
+ type: WORD_TYPOGRAPHY$1,
+ color: WORD_COLOR
+ }, word) : React.createElement(Label, {
+ key: uuidv4$1(),
+ className: className,
+ type: WORD_TYPOGRAPHY$1,
+ color: WORD_COLOR
+ }, word);
+ });
+
+ if (updatedAt > 0) {
+ matchedMessage.push(React.createElement(Label, {
+ key: uuidv4$1(),
+ className: className,
+ type: WORD_TYPOGRAPHY$1,
+ color: EDITED_COLOR$1
+ }, stringSet.MESSAGE_EDITED));
+ }
+
+ return matchedMessage;
+ };
+ }, [message, updatedAt, className]);
+}
+
+var GROUPING_PADDING$3 = '1px';
+var NORAML_PADDING = '8px';
+
+var OGMessageSwitch = function OGMessageSwitch(_ref) {
+ var isByMe = _ref.isByMe,
+ userId = _ref.userId,
+ status = _ref.status,
+ message = _ref.message,
+ disabled = _ref.disabled,
+ showEdit = _ref.showEdit,
+ chainTop = _ref.chainTop,
+ className = _ref.className,
+ membersMap = _ref.membersMap,
+ showRemove = _ref.showRemove,
+ useReaction = _ref.useReaction,
+ emojiAllMap = _ref.emojiAllMap,
+ chainBottom = _ref.chainBottom,
+ resendMessage = _ref.resendMessage,
+ toggleReaction = _ref.toggleReaction,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems;
+ var ogMetaData = message.ogMetaData;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ var memoizedMessageText = useMemoizedMessageText$1({
+ message: message.message,
+ updatedAt: message.updatedAt,
+ className: 'sendbird-og-message-word'
+ });
+
+ var openLink = function openLink() {
+ if (checkOGIsEnalbed(message)) {
+ var url = ogMetaData.url;
+ window.open(url);
+ }
+ };
+
+ return React.createElement("div", {
+ className: "".concat(OG_MESSAGE, " ").concat(OG_MESSAGE).concat(isByMe ? '--outgoing' : '--incoming', " ").concat(injectingClassName.join(' '))
+ }, isByMe ? React.createElement(OutgoingOGMessage, {
+ status: status,
+ userId: userId,
+ message: message,
+ disabled: disabled,
+ openLink: openLink,
+ showEdit: showEdit,
+ chainTop: chainTop,
+ showRemove: showRemove,
+ membersMap: membersMap,
+ chainBottom: chainBottom,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ resendMessage: resendMessage,
+ toggleReaction: toggleReaction,
+ memoizedMessageText: memoizedMessageText,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }) : React.createElement(IncomingOGMessage, {
+ userId: userId,
+ message: message,
+ openLink: openLink,
+ chainTop: chainTop,
+ membersMap: membersMap,
+ chainBottom: chainBottom,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ toggleReaction: toggleReaction,
+ memoizedMessageText: memoizedMessageText,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }));
+};
+
+function OutgoingOGMessage(props) {
+ var status = props.status,
+ userId = props.userId,
+ message = props.message,
+ disabled = props.disabled,
+ openLink = props.openLink,
+ showEdit = props.showEdit,
+ chainTop = props.chainTop,
+ showRemove = props.showRemove,
+ membersMap = props.membersMap,
+ chainBottom = props.chainBottom,
+ emojiAllMap = props.emojiAllMap,
+ useReaction = props.useReaction,
+ resendMessage = props.resendMessage,
+ toggleReaction = props.toggleReaction,
+ memoizedMessageText = props.memoizedMessageText,
+ memoizedEmojiListItems = props.memoizedEmojiListItems;
+ var ogMetaData = message.ogMetaData;
+ var defaultImage = ogMetaData.defaultImage;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var MemoizedMessageText = memoizedMessageText;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var messageRef = useRef(null);
+ var parentRefReactions = useRef(null);
+ var parentRefMenus = useRef(null);
+ var parentContainRef = useRef(null);
+ var isMessageSent = getIsSentFromStatus$1(status);
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ mousehover = _useState2[0],
+ setMousehover = _useState2[1];
+
+ var _useState3 = useState(false),
+ _useState4 = _slicedToArray(_useState3, 2),
+ moreActive = _useState4[0],
+ setMoreActive = _useState4[1];
+
+ var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React.createElement("div", {
+ ref: messageRef,
+ className: OUTGOING_OG_MESSAGE,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$3 : NORAML_PADDING,
+ paddingBottom: chainBottom ? GROUPING_PADDING$3 : NORAML_PADDING
+ }
+ }, React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "--inner")
+ }, React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "--left-padding")
+ }, React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__more"),
+ ref: parentContainRef
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__more__menu"),
+ ref: parentRefMenus,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: parentRefMenus // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: parentContainRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isMessageSent && React.createElement(MenuItem, {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__more__menu__copy"),
+ onClick: function onClick() {
+ copyToClipboard(message.message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__COPY), isMessageSent && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showEdit(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__EDIT), message && message.isResendable && message.isResendable() && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ }), isMessageSent && useReaction && emojiAllMap.size > 0 && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__more__add-reaction"),
+ ref: parentRefReactions,
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MemoizedEmojiListItems, {
+ message: message,
+ parentRef: parentRefReactions,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ })), !chainBottom && !(mousehover || moreActive) && React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__message-status")
+ }, React.createElement(MessageStatus, {
+ message: message,
+ status: status
+ }))), React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "--body")
+ }, React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__text-balloon")
+ }, React.createElement(MemoizedMessageText, null)), React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail ").concat(checkOGIsEnalbed(message) ? '' : "".concat(OUTGOING_OG_MESSAGE, "__thumbnail--disabled")),
+ onClick: openLink,
+ onKeyDown: openLink,
+ role: "button",
+ tabIndex: 0
+ }, defaultImage && React.createElement(ImageRenderer, {
+ url: defaultImage.url || '',
+ alt: defaultImage.alt,
+ className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail__image"),
+ width: "320px",
+ height: "180px",
+ defaultComponent: React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail__image__placeholder")
+ }, React.createElement(Icon, {
+ width: "56px",
+ height: "56px",
+ type: IconTypes.NO_THUMBNAIL
+ }))
+ })), React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag ").concat(checkOGIsEnalbed(message) ? '' : "".concat(OUTGOING_OG_MESSAGE, "__og-tag--disabled")),
+ onClick: openLink,
+ onKeyDown: openLink,
+ role: "button",
+ tabIndex: 0
+ }, ogMetaData.title && React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__title")
+ }, React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, ogMetaData.title)), ogMetaData.description && React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__description")
+ }, React.createElement(Label, {
+ type: LabelTypography.BODY_2,
+ color: LabelColors.ONBACKGROUND_1,
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__description__label")
+ }, ogMetaData.description)), ogMetaData.url && React.createElement(Label, {
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2,
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__url")
+ }, ogMetaData.url), showEmojiReactions && React.createElement("div", {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__emoji-reactions--wrapper"),
+ onClick: function onClick(event) {
+ return event.stopPropagation();
+ },
+ onKeyDown: function onKeyDown(event) {
+ return event.stopPropagation();
+ },
+ role: "button",
+ tabIndex: 0
+ }, React.createElement(EmojiReactions, {
+ className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__emoji-reactions"),
+ userId: userId,
+ message: message,
+ membersMap: membersMap,
+ emojiAllMap: emojiAllMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }))))));
+}
+
+function IncomingOGMessage(props) {
+ var userId = props.userId,
+ message = props.message,
+ openLink = props.openLink,
+ chainTop = props.chainTop,
+ membersMap = props.membersMap,
+ chainBottom = props.chainBottom,
+ useReaction = props.useReaction,
+ emojiAllMap = props.emojiAllMap,
+ toggleReaction = props.toggleReaction,
+ memoizedMessageText = props.memoizedMessageText,
+ memoizedEmojiListItems = props.memoizedEmojiListItems;
+ var ogMetaData = message.ogMetaData;
+ var defaultImage = ogMetaData.defaultImage;
+
+ var _useContext2 = useContext(LocalizationContext),
+ stringSet = _useContext2.stringSet;
+
+ var MemoizedMessageText = memoizedMessageText;
+ var MemoizedEmojiListItems = memoizedEmojiListItems;
+ var messageRef = useRef(null);
+ var avatarRef = useRef(null);
+ var parentRefReactions = useRef(null);
+ var parentRefMenus = useRef(null);
+ var parentContainRef = useRef(null);
+
+ var _React$useContext = React.useContext(UserProfileContext),
+ disableUserProfile = _React$useContext.disableUserProfile,
+ renderUserProfile = _React$useContext.renderUserProfile;
+
+ var _useState5 = useState(false),
+ _useState6 = _slicedToArray(_useState5, 2),
+ mousehover = _useState6[0],
+ setMousehover = _useState6[1];
+
+ var _useState7 = useState(false),
+ _useState8 = _slicedToArray(_useState7, 2),
+ moreActive = _useState8[0],
+ setMoreActive = _useState8[1];
+
+ var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
+ var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
+
+ var handleMoreIconClick = function handleMoreIconClick() {
+ setMoreActive(true);
+ };
+
+ var handleMoreIconBlur = function handleMoreIconBlur() {
+ setMoreActive(false);
+ };
+
+ useMouseHover({
+ ref: messageRef,
+ setHover: setMousehover
+ });
+ return React.createElement("div", {
+ ref: messageRef,
+ className: INCOMING_OG_MESSAGE,
+ style: {
+ paddingTop: chainTop ? GROUPING_PADDING$3 : NORAML_PADDING,
+ paddingBottom: chainBottom ? GROUPING_PADDING$3 : NORAML_PADDING
+ }
+ }, React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "--inner")
+ }, React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "--body")
+ }, !chainBottom && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ ref: avatarRef,
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ className: "".concat(INCOMING_OG_MESSAGE, "__avatar"),
+ src: getSenderProfileUrl(message),
+ width: "28px",
+ height: "28px",
+ alt: "sender-profile-image"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: message.sender,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: message.sender,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), !chainTop && React.createElement(Label, {
+ className: "".concat(INCOMING_OG_MESSAGE, "__sender-name"),
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, getSenderName(message)), React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__text-balloon")
+ }, React.createElement(MemoizedMessageText, null)), React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail ").concat(checkOGIsEnalbed(message) ? '' : "".concat(INCOMING_OG_MESSAGE, "__thumbnail--disabled")),
+ onClick: openLink,
+ onKeyDown: openLink,
+ role: "button",
+ tabIndex: 0
+ }, defaultImage && React.createElement(ImageRenderer, {
+ url: defaultImage.url || '',
+ alt: defaultImage.alt || '',
+ className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail__image"),
+ width: "320px",
+ height: "180px",
+ defaultComponent: React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail__image__placeholder")
+ }, React.createElement(Icon, {
+ width: "56px",
+ height: "56px",
+ type: IconTypes.NO_THUMBNAIL
+ }))
+ })), React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag ").concat(checkOGIsEnalbed(message) ? '' : "".concat(INCOMING_OG_MESSAGE, "__og-tag--disabled")),
+ onClick: openLink,
+ onKeyDown: openLink,
+ role: "button",
+ tabIndex: 0
+ }, ogMetaData.title && React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__title")
+ }, React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, ogMetaData.title)), ogMetaData.description && React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__description")
+ }, React.createElement(Label, {
+ type: LabelTypography.BODY_2,
+ color: LabelColors.ONBACKGROUND_1,
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__description__label")
+ }, ogMetaData.description)), ogMetaData.url && React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__url")
+ }, React.createElement(Label, {
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2,
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__url__label")
+ }, ogMetaData.url)), showEmojiReactions && React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__emoji-reactions--wrapper"),
+ onClick: function onClick(event) {
+ return event.stopPropagation();
+ },
+ onKeyDown: function onKeyDown(event) {
+ return event.stopPropagation();
+ },
+ role: "button",
+ tabIndex: 0
+ }, React.createElement(EmojiReactions, {
+ className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__emoji-reactions"),
+ userId: userId,
+ message: message,
+ membersMap: membersMap,
+ emojiAllMap: emojiAllMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ })))), React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "--right-padding")
+ }, !chainBottom && !(mousehover || moreActive) && React.createElement(Label, {
+ className: "".concat(INCOMING_OG_MESSAGE, "__sent-at"),
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2
+ }, getMessageCreatedAt$3(message)), React.createElement("div", {
+ className: "".concat(INCOMING_OG_MESSAGE, "__more"),
+ ref: parentContainRef
+ }, showReactionAddButton && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: parentRefReactions,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.EMOJI_REACTIONS_ADD,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MemoizedEmojiListItems, {
+ parentRef: parentRefReactions,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown,
+ message: message,
+ spaceFromTrigger: {
+ y: 2
+ }
+ });
+ }
+ }), React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: parentRefMenus,
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ handleMoreIconClick();
+ },
+ onBlur: function onBlur() {
+ handleMoreIconBlur();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: parentRefMenus,
+ parentContainRef: parentContainRef,
+ closeDropdown: closeDropdown
+ }, React.createElement(MenuItem, {
+ className: "".concat(INCOMING_OG_MESSAGE, "__more__menu__copy"),
+ onClick: function onClick() {
+ copyToClipboard(message.message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__COPY));
+ }
+ })))));
+}
+
+var noop$3 = function noop() {};
+
+OGMessageSwitch.propTypes = {
+ isByMe: PropTypes.bool.isRequired,
+ userId: PropTypes.string.isRequired,
+ message: PropTypes.shape({
+ message: PropTypes.string,
+ sender: PropTypes.shape({}),
+ ogMetaData: PropTypes.shape({
+ title: PropTypes.string,
+ description: PropTypes.string,
+ url: PropTypes.string,
+ defaultImage: PropTypes.shape({
+ url: PropTypes.string,
+ alt: PropTypes.string
+ })
+ }),
+ reactions: PropTypes.array,
+ updatedAt: PropTypes.number
+ }).isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ status: PropTypes.string,
+ disabled: PropTypes.bool,
+ showEdit: PropTypes.func,
+ showRemove: PropTypes.func,
+ resendMessage: PropTypes.func,
+ toggleReaction: PropTypes.func,
+ membersMap: PropTypes.instanceOf(Map),
+ emojiAllMap: PropTypes.instanceOf(Map),
+ memoizedEmojiListItems: PropTypes.func,
+ chainTop: PropTypes.bool,
+ chainBottom: PropTypes.bool
+};
+OGMessageSwitch.defaultProps = {
+ className: '',
+ status: '',
+ disabled: false,
+ showEdit: noop$3,
+ showRemove: noop$3,
+ resendMessage: noop$3,
+ toggleReaction: noop$3,
+ membersMap: new Map(),
+ emojiAllMap: new Map(),
+ memoizedEmojiListItems: noop$3,
+ chainTop: false,
+ chainBottom: false
+};
+OutgoingOGMessage.propTypes = {
+ status: PropTypes.string,
+ userId: PropTypes.string.isRequired,
+ message: PropTypes.shape({
+ message: PropTypes.string,
+ ogMetaData: PropTypes.shape({
+ title: PropTypes.string,
+ description: PropTypes.string,
+ url: PropTypes.string,
+ defaultImage: PropTypes.shape({
+ url: PropTypes.string,
+ alt: PropTypes.string
+ })
+ }),
+ reactions: PropTypes.array,
+ updatedAt: PropTypes.number,
+ isResendable: PropTypes.func,
+ errorCode: PropTypes.number
+ }).isRequired,
+ disabled: PropTypes.bool.isRequired,
+ openLink: PropTypes.func.isRequired,
+ showEdit: PropTypes.func.isRequired,
+ showRemove: PropTypes.func.isRequired,
+ membersMap: PropTypes.instanceOf(Map).isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ resendMessage: PropTypes.func.isRequired,
+ toggleReaction: PropTypes.func.isRequired,
+ memoizedMessageText: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func.isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+OutgoingOGMessage.defaultProps = {
+ status: ''
+};
+IncomingOGMessage.propTypes = {
+ userId: PropTypes.string.isRequired,
+ message: PropTypes.shape({
+ message: PropTypes.string,
+ sender: PropTypes.shape({}),
+ ogMetaData: PropTypes.shape({
+ title: PropTypes.string,
+ description: PropTypes.string,
+ url: PropTypes.string,
+ defaultImage: PropTypes.shape({
+ url: PropTypes.string,
+ alt: PropTypes.string
+ })
+ }),
+ reactions: PropTypes.array,
+ updatedAt: PropTypes.number
+ }).isRequired,
+ openLink: PropTypes.func.isRequired,
+ membersMap: PropTypes.instanceOf(Map).isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ useReaction: PropTypes.bool.isRequired,
+ toggleReaction: PropTypes.func.isRequired,
+ memoizedMessageText: PropTypes.func.isRequired,
+ memoizedEmojiListItems: PropTypes.func.isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired
+};
+
+function MessageHoc(_ref) {
+ var _MessageTypes$ADMIN$M;
+
+ var message = _ref.message,
+ userId = _ref.userId,
+ disabled = _ref.disabled,
+ editDisabled = _ref.editDisabled,
+ hasSeperator = _ref.hasSeperator,
+ deleteMessage = _ref.deleteMessage,
+ updateMessage = _ref.updateMessage,
+ status = _ref.status,
+ resendMessage = _ref.resendMessage,
+ useReaction = _ref.useReaction,
+ chainTop = _ref.chainTop,
+ chainBottom = _ref.chainBottom,
+ emojiAllMap = _ref.emojiAllMap,
+ membersMap = _ref.membersMap,
+ toggleReaction = _ref.toggleReaction,
+ memoizedEmojiListItems = _ref.memoizedEmojiListItems,
+ renderCustomMessage = _ref.renderCustomMessage,
+ currentGroupChannel = _ref.currentGroupChannel;
+ var _message$sender = message.sender,
+ sender = _message$sender === void 0 ? {} : _message$sender;
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ showEdit = _useState2[0],
+ setShowEdit = _useState2[1];
+
+ var _useState3 = useState(false),
+ _useState4 = _slicedToArray(_useState3, 2),
+ showRemove = _useState4[0],
+ setShowRemove = _useState4[1];
+
+ var _useState5 = useState(false),
+ _useState6 = _slicedToArray(_useState5, 2),
+ showFileViewer = _useState6[0],
+ setShowFileViewer = _useState6[1];
+
+ var editMessageInputRef = useRef(null);
+ var RenderedMessage = useMemo(function () {
+ if (renderCustomMessage) {
+ return renderCustomMessage(message, currentGroupChannel);
+ }
+
+ return null;
+ }, [message, message.message, renderCustomMessage]);
+ var isByMe = userId === sender.userId || message.requestState === 'pending' || message.requestState === 'failed';
+
+ if (RenderedMessage) {
+ return React.createElement("div", {
+ className: "sendbird-msg-hoc sendbird-msg--scroll-ref"
+ }, hasSeperator && React.createElement(DateSeparator, null, React.createElement(Label, {
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, format(message.createdAt, 'MMMM dd, yyyy'))), React.createElement(RenderedMessage, {
+ message: message
+ }));
+ }
+
+ if (showEdit) {
+ return React.createElement(MessageInput, {
+ isEdit: true,
+ disabled: editDisabled,
+ ref: editMessageInputRef,
+ name: message.messageId,
+ onSendMessage: updateMessage,
+ onCancelEdit: function onCancelEdit() {
+ setShowEdit(false);
+ },
+ value: message.message
+ });
+ }
+
+ return React.createElement("div", {
+ className: "sendbird-msg-hoc sendbird-msg--scroll-ref"
+ }, hasSeperator && React.createElement(DateSeparator, null, React.createElement(Label, {
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, format(message.createdAt, 'MMMM dd, yyyy'))), (_MessageTypes$ADMIN$M = {}, _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.ADMIN, React.createElement(AdminMessage, {
+ message: message
+ })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.FILE, React.createElement(MessageSwitch, {
+ message: message,
+ userId: userId,
+ disabled: disabled,
+ isByMe: isByMe,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ status: status,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.OG, React.createElement(OGMessageSwitch, {
+ message: message,
+ status: status,
+ isByMe: isByMe,
+ userId: userId,
+ showEdit: setShowEdit,
+ disabled: disabled,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.THUMBNAIL, React.createElement(ThumbnailMessage, {
+ disabled: disabled,
+ message: message,
+ userId: userId,
+ isByMe: isByMe,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ onClick: setShowFileViewer,
+ status: status,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.USER, React.createElement(Message, {
+ message: message,
+ disabled: disabled,
+ isByMe: isByMe,
+ userId: userId,
+ showEdit: setShowEdit,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ status: status,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ membersMap: membersMap,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ })), _MessageTypes$ADMIN$M)[getMessageType(message)], showRemove && React.createElement(RemoveMessage, {
+ onCloseModal: function onCloseModal() {
+ return setShowRemove(false);
+ },
+ onDeleteMessage: function onDeleteMessage() {
+ deleteMessage(message);
+ }
+ }), showFileViewer && React.createElement(FileViewer, {
+ onClose: function onClose() {
+ return setShowFileViewer(false);
+ },
+ message: message,
+ onDelete: function onDelete() {
+ deleteMessage(message, function () {
+ setShowFileViewer(false);
+ });
+ },
+ isByMe: isByMe
+ }), !(message.isFileMessage && message.isFileMessage() || message.messageType === 'file') && !(message.isAdminMessage && message.isAdminMessage()) && !(message.isUserMessage && message.isUserMessage() || message.messageType === 'user') && !showFileViewer && React.createElement(UnknownMessage, {
+ message: message,
+ status: status,
+ isByMe: isByMe,
+ showRemove: setShowRemove,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ }));
+}
+MessageHoc.propTypes = {
+ userId: PropTypes.string,
+ message: PropTypes.shape({
+ isFileMessage: PropTypes.func,
+ isAdminMessage: PropTypes.func,
+ isUserMessage: PropTypes.func,
+ isDateSeperator: PropTypes.func,
+ // should be a number, but there's a bug in SDK shich returns string
+ messageId: PropTypes.number,
+ type: PropTypes.string,
+ createdAt: PropTypes.number,
+ message: PropTypes.string,
+ requestState: PropTypes.string,
+ messageType: PropTypes.string,
+ sender: PropTypes.shape({
+ userId: PropTypes.string
+ }),
+ ogMetaData: PropTypes.shape({})
+ }),
+ renderCustomMessage: PropTypes.func,
+ currentGroupChannel: PropTypes.shape,
+ hasSeperator: PropTypes.bool,
+ disabled: PropTypes.bool,
+ editDisabled: PropTypes.bool,
+ deleteMessage: PropTypes.func.isRequired,
+ updateMessage: PropTypes.func.isRequired,
+ resendMessage: PropTypes.func.isRequired,
+ status: PropTypes.string,
+ useReaction: PropTypes.bool.isRequired,
+ chainTop: PropTypes.bool.isRequired,
+ chainBottom: PropTypes.bool.isRequired,
+ emojiAllMap: PropTypes.instanceOf(Map).isRequired,
+ membersMap: PropTypes.instanceOf(Map).isRequired,
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func
+};
+MessageHoc.defaultProps = {
+ userId: '',
+ editDisabled: false,
+ renderCustomMessage: null,
+ currentGroupChannel: {},
+ message: {},
+ hasSeperator: false,
+ disabled: false,
+ status: '',
+ toggleReaction: function toggleReaction() {},
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+
+var ConversationScroll =
+/*#__PURE__*/
+function (_Component) {
+ _inherits(ConversationScroll, _Component);
+
+ function ConversationScroll() {
+ var _getPrototypeOf2;
+
+ var _this;
+
+ _classCallCheck(this, ConversationScroll);
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ConversationScroll)).call.apply(_getPrototypeOf2, [this].concat(args)));
+
+ _defineProperty(_assertThisInitialized(_this), "onScroll", function (e) {
+ var _this$props = _this.props,
+ scrollRef = _this$props.scrollRef,
+ hasMore = _this$props.hasMore,
+ messagesDispatcher = _this$props.messagesDispatcher,
+ onScroll = _this$props.onScroll,
+ currentGroupChannel = _this$props.currentGroupChannel;
+ var element = e.target;
+ var scrollTop = element.scrollTop,
+ clientHeight = element.clientHeight,
+ scrollHeight = element.scrollHeight;
+
+ if (scrollTop === 0) {
+ if (!hasMore) {
+ return;
+ }
+
+ var nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');
+ var first = nodes[0];
+ onScroll(function (_ref) {
+ var _ref2 = _slicedToArray(_ref, 1),
+ messages = _ref2[0];
+
+ if (messages) {
+ // https://github.com/scabbiaza/react-scroll-position-on-updating-dom
+ first.scrollIntoView();
+ }
+ });
+ }
+
+ setTimeout(function () {
+ // mark as read if scroll is at end
+ if (clientHeight + scrollTop === scrollHeight) {
+ messagesDispatcher({
+ type: MARK_AS_READ
+ });
+ currentGroupChannel.markAsRead();
+ }
+ }, 500);
+ });
+
+ return _this;
+ }
+
+ _createClass(ConversationScroll, [{
+ key: "render",
+ value: function render() {
+ var _this$props2 = this.props,
+ userId = _this$props2.userId,
+ disabled = _this$props2.disabled,
+ scrollRef = _this$props2.scrollRef,
+ readStatus = _this$props2.readStatus,
+ membersMap = _this$props2.membersMap,
+ initialized = _this$props2.initialized,
+ allMessages = _this$props2.allMessages,
+ useReaction = _this$props2.useReaction,
+ emojiAllMap = _this$props2.emojiAllMap,
+ editDisabled = _this$props2.editDisabled,
+ deleteMessage = _this$props2.deleteMessage,
+ updateMessage = _this$props2.updateMessage,
+ resendMessage = _this$props2.resendMessage,
+ renderCustomMessage = _this$props2.renderCustomMessage,
+ renderChatItem = _this$props2.renderChatItem,
+ emojiContainer = _this$props2.emojiContainer,
+ toggleReaction = _this$props2.toggleReaction,
+ useMessageGrouping = _this$props2.useMessageGrouping,
+ currentGroupChannel = _this$props2.currentGroupChannel,
+ memoizedEmojiListItems = _this$props2.memoizedEmojiListItems;
+ return React.createElement("div", {
+ className: "sendbird-conversation__messages"
+ }, React.createElement("div", {
+ ref: scrollRef,
+ className: "sendbird-conversation__scroll-container",
+ onScroll: this.onScroll
+ }, React.createElement("div", {
+ className: "sendbird-conversation__padding"
+ }), React.createElement("div", {
+ className: "sendbird-conversation__messages-padding"
+ }, initialized && allMessages.map(function (m, idx) {
+ var previousMessage = allMessages[idx - 1];
+ var nextMessage = allMessages[idx + 1];
+
+ var _ref3 = useMessageGrouping ? compareMessagesForGrouping(previousMessage, m, nextMessage) : [false, false],
+ _ref4 = _slicedToArray(_ref3, 2),
+ chainTop = _ref4[0],
+ chainBottom = _ref4[1];
+
+ var previousMessageCreatedAt = previousMessage && previousMessage.createdAt;
+ var currentCreatedAt = m.createdAt; // https://stackoverflow.com/a/41855608
+
+ var hasSeperator = !(previousMessageCreatedAt && isSameDay(currentCreatedAt, previousMessageCreatedAt));
+
+ if (renderChatItem) {
+ return React.createElement("div", {
+ key: m.messageId || m.reqId,
+ className: "sendbird-msg--scroll-ref"
+ }, renderChatItem({
+ message: m,
+ channel: currentGroupChannel,
+ onDeleteMessage: deleteMessage,
+ onUpdateMessage: updateMessage,
+ onResendMessage: resendMessage,
+ emojiContainer: emojiContainer
+ }));
+ }
+
+ return React.createElement(MessageHoc, {
+ renderCustomMessage: renderCustomMessage,
+ key: m.messageId || m.reqId,
+ userId: userId,
+ status: readStatus[m.messageId] || getParsedStatus(m, currentGroupChannel) // show status for pending/failed messages
+ ,
+ message: m,
+ currentGroupChannel: currentGroupChannel,
+ disabled: disabled,
+ membersMap: membersMap,
+ chainTop: chainTop,
+ useReaction: useReaction,
+ emojiAllMap: emojiAllMap,
+ editDisabled: editDisabled,
+ hasSeperator: hasSeperator,
+ chainBottom: chainBottom,
+ updateMessage: updateMessage,
+ deleteMessage: deleteMessage,
+ resendMessage: resendMessage,
+ toggleReaction: toggleReaction,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ });
+ }))));
+ }
+ }]);
+
+ return ConversationScroll;
+}(Component);
+ConversationScroll.propTypes = {
+ // https://stackoverflow.com/a/52646941
+ scrollRef: PropTypes.shape({
+ current: PropTypes.oneOfType([PropTypes.element, PropTypes.shape({})])
+ }).isRequired,
+ hasMore: PropTypes.bool,
+ messagesDispatcher: PropTypes.func.isRequired,
+ onScroll: PropTypes.func,
+ initialized: PropTypes.bool,
+ editDisabled: PropTypes.bool,
+ disabled: PropTypes.bool,
+ userId: PropTypes.string,
+ allMessages: PropTypes.arrayOf(PropTypes.shape({
+ createdAt: PropTypes.number
+ })).isRequired,
+ deleteMessage: PropTypes.func.isRequired,
+ resendMessage: PropTypes.func.isRequired,
+ updateMessage: PropTypes.func.isRequired,
+ readStatus: PropTypes.shape({}).isRequired,
+ currentGroupChannel: PropTypes.shape({
+ markAsRead: PropTypes.func,
+ members: PropTypes.arrayOf(PropTypes.shape({}))
+ }).isRequired,
+ renderChatItem: PropTypes.element,
+ renderCustomMessage: PropTypes.func,
+ useReaction: PropTypes.bool,
+ emojiContainer: PropTypes.shape({}),
+ emojiAllMap: PropTypes.instanceOf(Map),
+ membersMap: PropTypes.instanceOf(Map),
+ useMessageGrouping: PropTypes.bool,
+ toggleReaction: PropTypes.func,
+ memoizedEmojiListItems: PropTypes.func
+};
+ConversationScroll.defaultProps = {
+ hasMore: false,
+ editDisabled: false,
+ disabled: false,
+ initialized: false,
+ userId: '',
+ renderCustomMessage: null,
+ renderChatItem: null,
+ onScroll: null,
+ useReaction: true,
+ emojiContainer: {},
+ emojiAllMap: new Map(),
+ membersMap: new Map(),
+ useMessageGrouping: true,
+ toggleReaction: function toggleReaction() {},
+ memoizedEmojiListItems: function memoizedEmojiListItems() {
+ return '';
+ }
+};
+
+function Notification(_ref) {
+ var count = _ref.count,
+ time = _ref.time,
+ onClick = _ref.onClick;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var timeArray = time.split(' ');
+ timeArray.splice(-2, 0, stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__ON);
+ return (// eslint-disable-next-line
+ React.createElement("div", {
+ className: "sendbird-notification",
+ onClick: onClick
+ }, React.createElement(Label, {
+ className: "sendbird-notification__text",
+ color: LabelColors.ONCONTENT_1,
+ type: LabelTypography.CAPTION_2
+ }, "".concat(count, " "), stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE, " ".concat(timeArray.join(' '))), React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.SHEVRON_DOWN,
+ fillColor: IconColors.CONTENT
+ }))
+ );
+}
+Notification.propTypes = {
+ count: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ time: PropTypes.string,
+ onClick: PropTypes.func.isRequired
+};
+Notification.defaultProps = {
+ count: 0,
+ time: ''
+};
+
+var FrozenNotification = function FrozenNotification() {
+ var stringSet = useContext(LocalizationContext).stringSet;
+ return React.createElement("div", {
+ className: "sendbird-notification sendbird-notification--frozen"
+ }, React.createElement(Label, {
+ className: "sendbird-notification__text",
+ type: LabelTypography.CAPTION_2
+ }, stringSet.CHANNEL_FROZEN));
+};
+
+var TypingIndicatorText = function TypingIndicatorText(_ref) {
+ var members = _ref.members;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ if (!members || members.length === 0) {
+ return '';
+ }
+
+ if (members && members.length === 1) {
+ return "".concat(members[0].nickname, " ").concat(stringSet.TYPING_INDICATOR__IS_TYPING);
+ }
+
+ if (members && members.length === 2) {
+ return "".concat(members[0].nickname, " ").concat(stringSet.TYPING_INDICATOR__AND, " ").concat(members[1].nickname, " ").concat(stringSet.TYPING_INDICATOR__ARE_TYPING);
+ }
+
+ return stringSet.TYPING_INDICATOR__MULTIPLE_TYPING;
+};
+
+function TypingIndicator(_ref2) {
+ var channelUrl = _ref2.channelUrl,
+ sb = _ref2.sb,
+ logger = _ref2.logger;
+
+ var _useState = useState(uuidv4$1()),
+ _useState2 = _slicedToArray(_useState, 2),
+ handlerId = _useState2[0],
+ setHandlerId = _useState2[1];
+
+ var _useState3 = useState([]),
+ _useState4 = _slicedToArray(_useState3, 2),
+ typingMembers = _useState4[0],
+ setTypingMembers = _useState4[1];
+
+ useEffect(function () {
+ if (sb && sb.ChannelHandler) {
+ sb.removeChannelHandler(handlerId);
+ var newHandlerId = uuidv4$1();
+ var handler = new sb.ChannelHandler(); // there is a possible warning in here - setState called after unmount
+
+ handler.onTypingStatusUpdated = function (groupChannel) {
+ logger.info('Channel > Typing Indicator: onTypingStatusUpdated', groupChannel);
+ var members = groupChannel.getTypingMembers();
+
+ if (groupChannel.url === channelUrl) {
+ setTypingMembers(members);
+ }
+ };
+
+ sb.addChannelHandler(newHandlerId, handler);
+ setHandlerId(newHandlerId);
+ }
+
+ return function () {
+ setTypingMembers([]);
+
+ if (sb && sb.removeChannelHandler) {
+ sb.removeChannelHandler(handlerId);
+ }
+ };
+ }, [channelUrl]);
+ return React.createElement(Label, {
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, React.createElement(TypingIndicatorText, {
+ members: typingMembers
+ }));
+}
+
+TypingIndicator.propTypes = {
+ channelUrl: PropTypes.string.isRequired,
+ sb: PropTypes.shape({
+ ChannelHandler: PropTypes.func,
+ removeChannelHandler: PropTypes.func,
+ addChannelHandler: PropTypes.func
+ }).isRequired,
+ logger: PropTypes.shape({
+ info: PropTypes.func
+ }).isRequired
+};
+
+// Logic required to handle message input rendering
+
+var MessageInputWrapper = function MessageInputWrapper(_a, ref) {
+ var channel = _a.channel,
+ user = _a.user,
+ onSendMessage = _a.onSendMessage,
+ onFileUpload = _a.onFileUpload,
+ renderMessageInput = _a.renderMessageInput,
+ isOnline = _a.isOnline,
+ initialized = _a.initialized;
+ var stringSet = useContext(LocalizationContext).stringSet;
+ var disabled = !initialized || isDisabledBecauseFrozen(channel) || isDisabledBecauseMuted(channel) || !isOnline;
+ var isOperator$1 = isOperator(channel);
+ var isBroadcast = channel.isBroadcast; // custom message
+
+ if (renderMessageInput) {
+ return renderMessageInput({
+ channel: channel,
+ user: user,
+ disabled: disabled
+ });
+ } // broadcast channel + not operator
+
+
+ if (isBroadcast && !isOperator$1) {
+ return null;
+ } // other conditions
+
+
+ return React.createElement(MessageInput, {
+ placeholder: isDisabledBecauseFrozen(channel) && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED || isDisabledBecauseMuted(channel) && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED,
+ ref: ref,
+ disabled: disabled,
+ onStartTyping: function onStartTyping() {
+ channel.startTyping();
+ },
+ onSendMessage: onSendMessage,
+ onFileUpload: onFileUpload
+ });
+};
+
+var MessageInputWrapper$1 = React.forwardRef(MessageInputWrapper);
+
+function ConnectionStatus() {
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.createElement("div", {
+ className: "sendbird-conversation__connection-status"
+ }, React.createElement(Label, {
+ type: LabelTypography.BODY_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, stringSet.TRYING_TO_CONNECT), React.createElement(Icon, {
+ type: IconTypes.DISCONNECTED,
+ fillColor: IconColors.SENT,
+ height: "14px",
+ width: "14px"
+ }));
+}
+
+var prettyDate = function prettyDate(date) {
+ return formatDistanceToNowStrict(date, {
+ addSuffix: true
+ });
+};
+var getOthersLastSeenAt = function getOthersLastSeenAt(channel) {
+ if (!channel || !channel.getReadStatus || !channel.members || channel.members.length !== 2) {
+ return '';
+ }
+
+ var lastSeenList = _toConsumableArray(Object.values(channel.getReadStatus()));
+
+ var lastSeenAt = lastSeenList.length > 0 ? lastSeenList[0].last_seen_at : 0;
+
+ if (lastSeenAt === 0) {
+ return '';
+ }
+
+ return prettyDate(lastSeenAt);
+};
+var getChannelTitle = function getChannelTitle() {
+ var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var currentUserId = arguments.length > 1 ? arguments[1] : undefined;
+ var stringSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : LabelStringSet;
+
+ if (!channel || !channel.name && !channel.members) {
+ return stringSet.NO_TITLE;
+ }
+
+ if (channel.name && channel.name !== 'Group Channel') {
+ return channel.name;
+ }
+
+ if (channel.members.length === 1) {
+ return stringSet.NO_MEMBERS;
+ }
+
+ return channel.members.filter(function (_ref) {
+ var userId = _ref.userId;
+ return userId !== currentUserId;
+ }).map(function (_ref2) {
+ var nickname = _ref2.nickname;
+ return nickname || stringSet.NO_NAME;
+ }).join(', ');
+};
+
+function AutoRefresh(_ref) {
+ var repeatFunc = _ref.repeatFunc;
+
+ var _useState = useState(repeatFunc()),
+ _useState2 = _slicedToArray(_useState, 2),
+ label = _useState2[0],
+ setLabel = _useState2[1];
+
+ useEffect(function () {
+ var interval = setInterval(function () {
+ if (label !== repeatFunc()) {
+ setLabel(repeatFunc());
+ }
+ }, 10000);
+ return function () {
+ clearInterval(interval);
+ };
+ }, []);
+ return React.createElement("div", {
+ className: "sendbird-repeat-text"
+ }, label);
+}
+AutoRefresh.propTypes = {
+ repeatFunc: PropTypes.func.isRequired
+};
+
+function ChatHeader(props) {
+ var currentGroupChannel = props.currentGroupChannel,
+ currentUser = props.currentUser,
+ title = props.title,
+ subTitle = props.subTitle,
+ isActive = props.isActive,
+ isMuted = props.isMuted,
+ onActionClick = props.onActionClick,
+ theme = props.theme;
+ var userId = currentUser.userId;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.createElement("div", {
+ className: "sendbird-chat-header"
+ }, React.createElement("div", {
+ className: "sendbird-chat-header__left"
+ }, React.createElement(ChannelAvatar, {
+ theme: theme,
+ channel: currentGroupChannel,
+ userId: userId,
+ height: 32,
+ width: 32
+ }), React.createElement(Label, {
+ className: "sendbird-chat-header__title",
+ type: LabelTypography.H_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, title || getChannelTitle(currentGroupChannel, userId, stringSet)), typeof isActive === 'string' && isActive === 'true' || typeof isActive === 'boolean' && isActive ? React.createElement("div", {
+ className: "sendbird-chat-header__active"
+ }) : null, React.createElement(Label, {
+ className: "sendbird-chat-header__subtitle",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_2
+ }, subTitle || React.createElement(AutoRefresh, {
+ repeatFunc: function repeatFunc() {
+ return getOthersLastSeenAt(currentGroupChannel);
+ }
+ }))), React.createElement("div", {
+ className: "sendbird-chat-header__right"
+ }, typeof isMuted === 'string' && isMuted === 'true' || typeof isMuted === 'boolean' && isMuted ? React.createElement(Icon, {
+ className: "sendbird-chat-header__mute",
+ type: IconTypes.MUTE,
+ width: "24px",
+ height: "24px"
+ }) : null, React.createElement(IconButton, {
+ className: "sendbird-chat-header__info",
+ width: "32px",
+ height: "32px",
+ onClick: onActionClick
+ }, React.createElement(Icon, {
+ type: IconTypes.INFO,
+ fillColor: IconColors.PRIMARY,
+ width: "24px",
+ height: "24px"
+ }))));
+}
+ChatHeader.propTypes = {
+ currentGroupChannel: PropTypes.shape({
+ members: PropTypes.arrayOf(PropTypes.shape({})),
+ coverUrl: PropTypes.string
+ }),
+ theme: PropTypes.string,
+ currentUser: PropTypes.shape({
+ userId: PropTypes.string
+ }),
+ title: PropTypes.string,
+ subTitle: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
+ isActive: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
+ isMuted: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
+ onActionClick: PropTypes.func
+};
+ChatHeader.defaultProps = {
+ currentGroupChannel: {},
+ title: '',
+ theme: 'light',
+ subTitle: '',
+ isActive: false,
+ isMuted: false,
+ currentUser: {},
+ onActionClick: function onActionClick() {}
+};
+
+var noop$4 = function noop() {};
+
+var ConversationPanel = function ConversationPanel(props) {
+ var channelUrl = props.channelUrl,
+ _props$stores = props.stores,
+ sdkStore = _props$stores.sdkStore,
+ userStore = _props$stores.userStore,
+ _props$config = props.config,
+ userId = _props$config.userId,
+ logger = _props$config.logger,
+ pubSub = _props$config.pubSub,
+ isOnline = _props$config.isOnline,
+ theme = _props$config.theme,
+ reconnect = props.dispatchers.reconnect,
+ _props$queries = props.queries,
+ queries = _props$queries === void 0 ? {} : _props$queries,
+ useReaction = props.useReaction,
+ renderChatItem = props.renderChatItem,
+ renderChatHeader = props.renderChatHeader,
+ renderCustomMessage = props.renderCustomMessage,
+ renderUserProfile = props.renderUserProfile,
+ disableUserProfile = props.disableUserProfile,
+ renderMessageInput = props.renderMessageInput,
+ useMessageGrouping = props.useMessageGrouping,
+ onChatHeaderActionClick = props.onChatHeaderActionClick,
+ onBeforeSendUserMessage = props.onBeforeSendUserMessage,
+ onBeforeSendFileMessage = props.onBeforeSendFileMessage,
+ onBeforeUpdateUserMessage = props.onBeforeUpdateUserMessage;
+ var sdk = sdkStore.sdk;
+ var config = props.config;
+ var sdkError = sdkStore.error;
+ var sdkInit = sdkStore.initialized;
+ var user = userStore.user;
+
+ if (queries.messageListQuery) {
+ // eslint-disable-next-line no-console
+ console.warn('messageListQuery will be deprecared in v1.3.0, please use messageListParams instead');
+ }
+
+ var userFilledMessageListQuery = queries.messageListParams || queries.messageListQuery;
+
+ var _useReducer = useReducer(reducer, messagesInitialState),
+ _useReducer2 = _slicedToArray(_useReducer, 2),
+ messagesStore = _useReducer2[0],
+ messagesDispatcher = _useReducer2[1];
+
+ var scrollRef = useRef(null);
+ var allMessages = messagesStore.allMessages,
+ loading = messagesStore.loading,
+ hasMore = messagesStore.hasMore,
+ initialized = messagesStore.initialized,
+ unreadCount = messagesStore.unreadCount,
+ unreadSince = messagesStore.unreadSince,
+ isInvalid = messagesStore.isInvalid,
+ _messagesStore$curren = messagesStore.currentGroupChannel,
+ currentGroupChannel = _messagesStore$curren === void 0 ? {} : _messagesStore$curren,
+ lastMessageTimeStamp = messagesStore.lastMessageTimeStamp,
+ emojiContainer = messagesStore.emojiContainer,
+ readStatus = messagesStore.readStatus;
+ var isFrozen = currentGroupChannel.isFrozen,
+ isBroadcast = currentGroupChannel.isBroadcast;
+ var _sdk$appInfo = sdk.appInfo,
+ appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
+ var usingReaction = appInfo.isUsingReaction && !isBroadcast || useReaction || false;
+ var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
+ var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
+ var emojiAllMap = useMemo(function () {
+ return usingReaction ? getAllEmojisMapFromEmojiContainer(emojiContainer) : new Map();
+ }, [emojiContainer]);
+ var emojiAllList = useMemo(function () {
+ return usingReaction ? getAllEmojisFromEmojiContainer(emojiContainer) : [];
+ }, [emojiContainer]);
+ var nicknamesMap = useMemo(function () {
+ return usingReaction ? getNicknamesMapFromMembers(currentGroupChannel.members) : new Map();
+ }, [currentGroupChannel.members]);
+ var onScrollCallback = useScrollCallback({
+ currentGroupChannel: currentGroupChannel,
+ lastMessageTimeStamp: lastMessageTimeStamp,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ }, {
+ hasMore: hasMore,
+ logger: logger,
+ messagesDispatcher: messagesDispatcher,
+ sdk: sdk
+ });
+ var toggleReaction = useToggleReactionCallback({
+ currentGroupChannel: currentGroupChannel
+ }, {
+ logger: logger
+ });
+ var memoizedEmojiListItems = useMemoizedEmojiListItems({
+ emojiContainer: emojiContainer,
+ toggleReaction: toggleReaction
+ }, {
+ useReaction: usingReaction,
+ logger: logger,
+ userId: userId,
+ emojiAllList: emojiAllList
+ }); // to create message-datasource
+
+ useSetChannel({
+ channelUrl: channelUrl,
+ sdkInit: sdkInit
+ }, {
+ messagesDispatcher: messagesDispatcher,
+ sdk: sdk,
+ logger: logger
+ }); // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher
+
+ useHandleChannelEvents({
+ currentGroupChannel: currentGroupChannel,
+ sdkInit: sdkInit,
+ userId: userId
+ }, {
+ messagesDispatcher: messagesDispatcher,
+ sdk: sdk,
+ logger: logger
+ });
+ useInitialMessagesFetch({
+ currentGroupChannel: currentGroupChannel,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ }, {
+ sdk: sdk,
+ logger: logger,
+ messagesDispatcher: messagesDispatcher
+ }); // handles API calls from withSendbird
+
+ useEffect(function () {
+ var subScriber = pubSubHandler(channelUrl, pubSub, messagesDispatcher);
+ return function () {
+ pubSubHandleRemover(subScriber);
+ };
+ }, [channelUrl, sdkInit]); // to create initial read status
+
+ useSetReadStatus({
+ allMessages: allMessages,
+ currentGroupChannel: currentGroupChannel
+ }, {
+ messagesDispatcher: messagesDispatcher,
+ sdk: sdk,
+ logger: logger
+ }); // handling connection breaks
+
+ useHandleReconnect({
+ isOnline: isOnline
+ }, {
+ logger: logger,
+ sdk: sdk,
+ currentGroupChannel: currentGroupChannel,
+ messagesDispatcher: messagesDispatcher,
+ userFilledMessageListQuery: userFilledMessageListQuery
+ });
+ var deleteMessage = useDeleteMessageCallback({
+ currentGroupChannel: currentGroupChannel,
+ messagesDispatcher: messagesDispatcher
+ }, {
+ logger: logger
+ });
+ var updateMessage = useUpdateMessageCallback({
+ currentGroupChannel: currentGroupChannel,
+ messagesDispatcher: messagesDispatcher,
+ onBeforeUpdateUserMessage: onBeforeUpdateUserMessage
+ }, {
+ logger: logger,
+ sdk: sdk,
+ pubSub: pubSub
+ });
+ var resendMessage = useResendMessageCallback({
+ currentGroupChannel: currentGroupChannel,
+ messagesDispatcher: messagesDispatcher
+ }, {
+ logger: logger
+ });
+
+ var _useSendMessageCallba = useSendMessageCallback({
+ currentGroupChannel: currentGroupChannel,
+ onBeforeSendUserMessage: onBeforeSendUserMessage
+ }, {
+ sdk: sdk,
+ logger: logger,
+ pubSub: pubSub,
+ messagesDispatcher: messagesDispatcher
+ }),
+ _useSendMessageCallba2 = _slicedToArray(_useSendMessageCallba, 2),
+ messageInputRef = _useSendMessageCallba2[0],
+ onSendMessage = _useSendMessageCallba2[1];
+
+ var _useSendFileMessageCa = useSendFileMessageCallback({
+ currentGroupChannel: currentGroupChannel,
+ onBeforeSendFileMessage: onBeforeSendFileMessage
+ }, {
+ sdk: sdk,
+ logger: logger,
+ pubSub: pubSub,
+ messagesDispatcher: messagesDispatcher
+ }),
+ _useSendFileMessageCa2 = _slicedToArray(_useSendFileMessageCa, 1),
+ onSendFileMessage = _useSendFileMessageCa2[0];
+
+ if (sdkError) {
+ return React.createElement("div", {
+ className: "sendbird-conversation"
+ }, React.createElement(PlaceHolder, {
+ type: PlaceHolderTypes.WRONG,
+ retryToConnect: function retryToConnect() {
+ logger.info('Channel: reconnecting');
+ reconnect();
+ }
+ }));
+ }
+
+ if (!channelUrl) {
+ return React.createElement("div", {
+ className: "sendbird-conversation"
+ }, React.createElement(PlaceHolder, {
+ type: PlaceHolderTypes.NO_CHANNELS
+ }));
+ }
+
+ if (loading) {
+ return React.createElement("div", {
+ className: "sendbird-conversation"
+ }, React.createElement(PlaceHolder, {
+ type: PlaceHolderTypes.LOADING
+ }));
+ }
+
+ if (isInvalid) {
+ return React.createElement("div", {
+ className: "sendbird-conversation"
+ }, React.createElement(PlaceHolder, {
+ type: PlaceHolderTypes.WRONG
+ }));
+ }
+
+ return React.createElement(UserProfileProvider, {
+ className: "sendbird-conversation",
+ disableUserProfile: userDefinedDisableUserProfile,
+ renderUserProfile: userDefinedRenderProfile
+ }, renderChatHeader ? renderChatHeader({
+ channel: currentGroupChannel,
+ user: user
+ }) : React.createElement(ChatHeader, {
+ theme: theme,
+ currentGroupChannel: currentGroupChannel,
+ currentUser: user,
+ onActionClick: onChatHeaderActionClick,
+ subTitle: currentGroupChannel.members && currentGroupChannel.members.length !== 2,
+ isActive: false,
+ isMuted: false
+ }), isFrozen && React.createElement(FrozenNotification, null), unreadCount > 0 && React.createElement(Notification, {
+ count: unreadCount,
+ onClick: function onClick() {
+ scrollIntoLast('.sendbird-msg--scroll-ref'); // there is no scroll
+
+ if (scrollRef.current.scrollTop === 0) {
+ currentGroupChannel.markAsRead();
+ messagesDispatcher({
+ type: MARK_AS_READ
+ });
+ }
+ },
+ time: unreadSince
+ }), React.createElement(ConversationScroll, {
+ swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
+ userId: userId,
+ hasMore: hasMore,
+ disabled: !isOnline,
+ onScroll: onScrollCallback,
+ scrollRef: scrollRef,
+ readStatus: readStatus,
+ initialized: initialized,
+ useReaction: usingReaction,
+ allMessages: allMessages,
+ emojiAllMap: emojiAllMap,
+ membersMap: nicknamesMap,
+ editDisabled: isDisabledBecauseFrozen(currentGroupChannel),
+ deleteMessage: deleteMessage,
+ updateMessage: updateMessage,
+ resendMessage: resendMessage,
+ toggleReaction: toggleReaction,
+ emojiContainer: emojiContainer,
+ renderChatItem: renderChatItem,
+ renderCustomMessage: renderCustomMessage,
+ useMessageGrouping: useMessageGrouping,
+ messagesDispatcher: messagesDispatcher,
+ currentGroupChannel: currentGroupChannel,
+ memoizedEmojiListItems: memoizedEmojiListItems
+ }), React.createElement("div", {
+ className: "sendbird-conversation__footer"
+ }, React.createElement(MessageInputWrapper$1, {
+ channel: currentGroupChannel,
+ user: user,
+ ref: messageInputRef,
+ onSendMessage: onSendMessage,
+ onFileUpload: onSendFileMessage,
+ renderMessageInput: renderMessageInput,
+ isOnline: isOnline,
+ initialized: initialized
+ }), React.createElement("div", {
+ className: "sendbird-conversation__typing-indicator"
+ }, React.createElement(TypingIndicator, {
+ channelUrl: channelUrl,
+ sb: sdk,
+ logger: logger
+ })), !isOnline && React.createElement(ConnectionStatus, {
+ sdkInit: sdkInit,
+ sb: sdk,
+ logger: logger
+ })));
+};
+ConversationPanel.propTypes = {
+ channelUrl: PropTypes.string,
+ stores: PropTypes.shape({
+ sdkStore: PropTypes.shape({
+ initialized: PropTypes.bool,
+ sdk: PropTypes.shape({
+ getErrorFirstCallback: PropTypes.func,
+ removeChannelHandler: PropTypes.func,
+ GroupChannel: PropTypes.any,
+ ChannelHandler: PropTypes.any,
+ addChannelHandler: PropTypes.func,
+ UserMessageParams: PropTypes.any,
+ FileMessageParams: PropTypes.any,
+ getAllEmoji: PropTypes.func,
+ appInfo: PropTypes.shape({})
+ }),
+ error: PropTypes.bool
+ }),
+ userStore: PropTypes.shape({
+ user: PropTypes.shape({})
+ })
+ }).isRequired,
+ dispatchers: PropTypes.shape({
+ reconnect: PropTypes.func
+ }).isRequired,
+ config: PropTypes.shape({
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ userId: PropTypes.string.isRequired,
+ isOnline: PropTypes.bool.isRequired,
+ theme: PropTypes.string,
+ logger: PropTypes.shape({
+ info: PropTypes.func,
+ error: PropTypes.func,
+ warning: PropTypes.func
+ }),
+ pubSub: PropTypes.shape({
+ subscribe: PropTypes.func,
+ publish: PropTypes.func
+ })
+ }).isRequired,
+ queries: PropTypes.shape({
+ messageListParams: PropTypes.shape({
+ includeMetaArray: PropTypes.bool,
+ includeParentMessageText: PropTypes.bool,
+ includeReaction: PropTypes.bool,
+ includeReplies: PropTypes.bool,
+ includeThreadInfo: PropTypes.bool,
+ limit: PropTypes.number,
+ reverse: PropTypes.bool,
+ senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string)
+ }),
+ // deprecate in v1.3
+ messageListQuery: PropTypes.shape({
+ includeMetaArray: PropTypes.bool,
+ includeParentMessageText: PropTypes.bool,
+ includeReaction: PropTypes.bool,
+ includeReplies: PropTypes.bool,
+ includeThreadInfo: PropTypes.bool,
+ limit: PropTypes.number,
+ reverse: PropTypes.bool,
+ senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string)
+ })
+ }),
+ onBeforeSendUserMessage: PropTypes.func,
+ // onBeforeSendUserMessage(text)
+ onBeforeSendFileMessage: PropTypes.func,
+ // onBeforeSendFileMessage(File)
+ onBeforeUpdateUserMessage: PropTypes.func,
+ renderChatItem: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ renderCustomMessage: PropTypes.func,
+ renderMessageInput: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ renderChatHeader: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ onChatHeaderActionClick: PropTypes.func,
+ useReaction: PropTypes.bool,
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ useMessageGrouping: PropTypes.bool
+};
+ConversationPanel.defaultProps = {
+ channelUrl: null,
+ queries: {},
+ onBeforeSendUserMessage: null,
+ onBeforeSendFileMessage: null,
+ onBeforeUpdateUserMessage: null,
+ renderChatItem: null,
+ renderCustomMessage: null,
+ renderMessageInput: null,
+ renderChatHeader: null,
+ useReaction: true,
+ disableUserProfile: false,
+ renderUserProfile: null,
+ useMessageGrouping: true,
+ onChatHeaderActionClick: noop$4
+};
+var getEmojiCategoriesFromEmojiContainer$1 = getEmojiCategoriesFromEmojiContainer,
+ getAllEmojisFromEmojiContainer$1 = getAllEmojisFromEmojiContainer,
+ getEmojisFromEmojiContainer$1 = getEmojisFromEmojiContainer;
+var Conversation = withSendbirdContext(ConversationPanel);
+
+export default Conversation;
+export { ConversationPanel, getAllEmojisFromEmojiContainer$1 as getAllEmojisFromEmojiContainer, getEmojiCategoriesFromEmojiContainer$1 as getEmojiCategoriesFromEmojiContainer, getEmojisFromEmojiContainer$1 as getEmojisFromEmojiContainer };
+//# sourceMappingURL=Channel.js.map
diff --git a/dist/esm/Channel.js.map b/dist/esm/Channel.js.map
new file mode 100644
index 0000000..b9ab7d8
--- /dev/null
+++ b/dist/esm/Channel.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Channel.js","sources":["../../../src/smart-components/Conversation/dux/actionTypes.js","../../../src/smart-components/Conversation/types.js","../../../src/smart-components/Conversation/utils.js","../../../src/smart-components/Conversation/dux/initialState.js","../../../src/smart-components/Conversation/dux/reducers.js","../../../src/smart-components/Conversation/hooks/useHandleChannelEvents.js","../../../src/smart-components/Conversation/hooks/useGetChannel.js","../../../src/smart-components/Conversation/hooks/useInitialMessagesFetch.js","../../../src/smart-components/Conversation/hooks/useHandleReconnect.js","../../../src/smart-components/Conversation/hooks/useScrollCallback.js","../../../src/smart-components/Conversation/hooks/useDeleteMessageCallback.js","../../../src/smart-components/Conversation/hooks/useUpdateMessageCallback.js","../../../src/smart-components/Conversation/hooks/useResendMessageCallback.js","../../../src/smart-components/Conversation/hooks/useSendMessageCallback.js","../../../src/smart-components/Conversation/hooks/useSendFileMessageCallback.js","../../../src/smart-components/Conversation/hooks/useSetReadStatus.js","../../../src/ui/ReactionButton/index.jsx","../../../src/smart-components/Conversation/hooks/useMemoizedEmojiListItems.jsx","../../../src/smart-components/Conversation/hooks/useToggleReactionCallback.js","../../../src/ui/MessageStatus/index.jsx","../../../src/ui/ReactionBadge/index.jsx","../../../src/ui/Tooltip/index.jsx","../../../src/ui/TooltipWrapper/index.jsx","../../../src/ui/EmojiReactions/index.jsx","../../../src/ui/Message/memoizedMessageText.jsx","../../../src/hooks/onMouseHover.jsx","../../../src/ui/Message/index.jsx","../../../src/ui/AdminMessage/index.jsx","../../../src/ui/ThumbnailMessage/util.js","../../../src/ui/ThumbnailMessage/index.jsx","../../../src/ui/FileMessage/index.jsx","../../../src/smart-components/Conversation/components/RemoveMessage.jsx","../../../src/ui/UnknownMessage/utils.js","../../../src/ui/UnknownMessage/index.jsx","../../../src/ui/OGMessage/const.js","../../../src/ui/OGMessage/utils.js","../../../src/ui/OGMessage/memoizedMessageText.jsx","../../../src/ui/OGMessage/index.jsx","../../../src/smart-components/Conversation/components/MessageHOC.jsx","../../../src/smart-components/Conversation/components/ConversationScroll.jsx","../../../src/smart-components/Conversation/components/Notification.jsx","../../../src/smart-components/Conversation/components/FrozenNotification.tsx","../../../src/smart-components/Conversation/components/TypingIndicator.jsx","../../../src/smart-components/Conversation/components/MessageInputWrapper.tsx","../../../src/ui/ConnectionStatus/index.jsx","../../../src/ui/ChatHeader/utils.js","../../../src/ui/AutoRefresh/index.jsx","../../../src/ui/ChatHeader/index.jsx","../../../src/smart-components/Conversation/index.jsx"],"sourcesContent":["export const RESET_MESSAGES = 'RESET_MESSAGES';\nexport const RESET_STATE = 'RESET_STATE';\nexport const CLEAR_SENT_MESSAGES = 'CLEAR_SENT_MESSAGES';\nexport const GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';\nexport const GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';\nexport const GET_PREV_MESSAGES_FAILURE = 'GET_PREV_MESSAGES_FAILURE';\n\nexport const SEND_MESSAGEGE_START = 'SEND_MESSAGEGE_START';\nexport const SEND_MESSAGEGE_SUCESS = 'SEND_MESSAGEGE_SUCESS';\nexport const SEND_MESSAGEGE_FAILURE = 'SEND_MESSAGEGE_FAILURE';\n\nexport const RESEND_MESSAGEGE_START = 'RESEND_MESSAGEGE_START';\n\nexport const ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';\nexport const ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';\nexport const ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';\nexport const ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';\n\nexport const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\nexport const SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';\nexport const MARK_AS_READ = 'MARK_AS_READ';\n\nexport const ON_REACTION_UPDATED = 'ON_REACTION_UPDATED';\nexport const SET_EMOJI_CONTAINER = 'SET_EMOJI_CONTAINER';\nexport const SET_READ_STATUS = 'SET_READ_STATUS';\n","import { isImage, isVideo } from '../../ui/FileViewer/types';\n\nexport const MessageTypes = {\n ADMIN: 'ADMIN',\n USER: 'USER',\n FILE: 'FILE',\n THUMBNAIL: 'THUMBNAIL',\n OG: 'OG',\n};\n\nexport const SendingMessageStatus = {\n NONE: 'none',\n SUCCEEDED: 'succeeded',\n FAILED: 'failed',\n PENDING: 'pending',\n};\n\nexport const getMessageType = (message) => {\n if ((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user') {\n return (message.ogMetaData)\n ? MessageTypes.OG\n : MessageTypes.USER;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return MessageTypes.ADMIN;\n }\n if ((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file') {\n return (isImage(message.type) || isVideo(message.type))\n ? MessageTypes.THUMBNAIL\n : MessageTypes.FILE;\n }\n return '';\n};\n\nexport default {\n MessageTypes,\n SendingMessageStatus,\n getMessageType,\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../../ui/MessageStatus/type';\nimport * as channelActions from './dux/actionTypes';\nimport * as topics from '../../lib/pubSub/topics';\n\nimport { SendingMessageStatus } from './types';\n\nconst UNDEFINED = 'undefined';\nconst { SUCCEEDED, FAILED, PENDING } = SendingMessageStatus;\n\nexport const scrollIntoLast = (selector, intialTry = 0) => {\n const MAX_TRIES = 10;\n const currentTry = intialTry;\n if (currentTry > MAX_TRIES) {\n return;\n }\n try {\n const nodes = document.querySelectorAll(selector);\n const last = nodes[nodes.length - 1];\n last.scrollIntoView(false); /** alignToTop: false */\n } catch (error) {\n setTimeout(() => {\n scrollIntoLast(selector, currentTry + 1);\n }, 500 * currentTry);\n }\n};\n\nexport const pubSubHandleRemover = (subscriber) => {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n};\n\nexport const pubSubHandler = (channelUrl, pubSub, dispatcher) => {\n const subscriber = new Map();\n if (!pubSub || !pubSub.subscribe) return subscriber;\n subscriber.set(topics.SEND_USER_MESSAGE, pubSub.subscribe(topics.SEND_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel, message } = msg;\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_START,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message, fromSelector } = msg;\n if (fromSelector && channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n }\n }));\n subscriber.set(topics.DELETE_MESSAGE, pubSub.subscribe(topics.DELETE_MESSAGE, (msg) => {\n const { channel, messageId } = msg;\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n }\n }));\n\n return subscriber;\n};\n\nexport const getParsedStatus = (message, currentGroupChannel) => {\n if (message.requestState === FAILED) {\n return MessageStatusType.FAILED;\n }\n\n if (message.requestState === PENDING) {\n return MessageStatusType.PENDING;\n }\n\n if (message.requestState === SUCCEEDED) {\n if (!currentGroupChannel) {\n return MessageStatusType.SENT;\n }\n\n const unreadCount = currentGroupChannel.getReadReceipt(message);\n if (unreadCount === 0) {\n return MessageStatusType.READ;\n }\n\n const isDelivered = currentGroupChannel.getDeliveryReceipt(message) === 0;\n if (isDelivered) {\n return MessageStatusType.DELIVERED;\n }\n\n return MessageStatusType.SENT;\n }\n\n return null;\n};\n\nexport const isOperator = (groupChannel = {}) => {\n const { myRole } = groupChannel;\n return myRole === 'operator';\n};\n\nexport const isDisabledBecauseFrozen = (groupChannel = {}) => {\n const { isFrozen } = groupChannel;\n return isFrozen && !isOperator(groupChannel);\n};\n\nexport const isDisabledBecauseMuted = (groupChannel = {}) => {\n const { myMutedState } = groupChannel;\n return myMutedState === 'muted';\n};\n\nexport const getEmojiCategoriesFromEmojiContainer = (emojiContainer = {}) => (\n emojiContainer.emojiCategories ? emojiContainer.emojiCategories : []\n);\n\nexport const getAllEmojisFromEmojiContainer = (emojiContainer = {}) => {\n const { emojiCategories = [] } = emojiContainer;\n const allEmojis = [];\n\n for (let categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {\n const { emojis } = emojiCategories[categoryIndex];\n for (let emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {\n allEmojis.push(emojis[emojiIndex]);\n }\n }\n return allEmojis;\n};\n\nexport const getEmojisFromEmojiContainer = (emojiContainer = {}, emojiCategoryId = '') => (\n emojiContainer.emojiCategories\n ? emojiContainer.emojiCategories\n .filter((emojiCategory) => emojiCategory.id === emojiCategoryId)[0].emojis\n : []\n);\n\nexport const getAllEmojisMapFromEmojiContainer = (emojiContainer = {}) => {\n const { emojiCategories = [] } = emojiContainer;\n const allEmojisMap = new Map();\n\n for (let categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {\n const { emojis } = emojiCategories[categoryIndex];\n for (let emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {\n const { key, url } = emojis[emojiIndex];\n allEmojisMap.set(key, url);\n }\n }\n return allEmojisMap;\n};\n\nexport const getNicknamesMapFromMembers = (members = []) => {\n const nicknamesMap = new Map();\n for (let memberIndex = 0; memberIndex < members.length; memberIndex += 1) {\n const { userId, nickname } = members[memberIndex];\n nicknamesMap.set(userId, nickname);\n }\n return nicknamesMap;\n};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const isSameGroup = (message, comparingMessage) => {\n if (\n !message\n || !comparingMessage\n || !message.sender\n || !comparingMessage.sender\n || !message.createdAt\n || !comparingMessage.createdAt\n || !message.sender.userId\n || !comparingMessage.sender.userId\n ) {\n return false;\n }\n return (\n message.sendingStatus === comparingMessage.sendingStatus\n && message.sender.userId === comparingMessage.sender.userId\n && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage)\n );\n};\n\nexport const compareMessagesForGrouping = (\n prevMessage,\n currMessage,\n nextMessage,\n) => (\n [\n isSameGroup(prevMessage, currMessage),\n isSameGroup(currMessage, nextMessage),\n ]\n);\n\nexport const passUnsuccessfullMessages = (allMessages, newMessage) => {\n const { sendingStatus = UNDEFINED } = newMessage;\n if (sendingStatus === SUCCEEDED || sendingStatus === PENDING) {\n const lastIndexOfSucceededMessage = allMessages\n .map((message) => (\n message.sendingStatus\n || ((message.isAdminMessage && message.isAdminMessage()) ? SUCCEEDED : UNDEFINED)\n ))\n .lastIndexOf(SUCCEEDED);\n if (lastIndexOfSucceededMessage + 1 < allMessages.length) {\n const messages = [...allMessages];\n messages.splice(lastIndexOfSucceededMessage + 1, 0, newMessage);\n return messages;\n }\n }\n return [\n ...allMessages,\n newMessage,\n ];\n};\n\nexport default getParsedStatus;\n","export default {\n initialized: false,\n loading: false,\n allMessages: [],\n currentGroupChannel: { members: [] },\n hasMore: false,\n lastMessageTimeStamp: 0,\n emojiContainer: {},\n readStatus: {},\n unreadCount: 0,\n unreadSince: null,\n isInvalid: false,\n};\n","import format from 'date-fns/format';\n\nimport * as actionTypes from './actionTypes';\nimport initialState from './initialState';\n\nimport compareIds from '../../../utils/compareIds';\nimport { passUnsuccessfullMessages } from '../utils';\nimport { SendingMessageStatus } from '../types';\n\nconst {\n SUCCEEDED,\n FAILED,\n PENDING,\n} = SendingMessageStatus;\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actionTypes.RESET_STATE:\n return initialState;\n case actionTypes.RESET_MESSAGES:\n return {\n ...state,\n // when user switches channel, if the previous channel `hasMore`\n // the onScroll gets called twice, setting hasMore false prevents this\n hasMore: false,\n allMessages: [],\n };\n case actionTypes.GET_PREV_MESSAGES_START:\n return {\n ...state,\n loading: true,\n };\n case actionTypes.CLEAR_SENT_MESSAGES:\n return {\n ...state,\n allMessages: [\n ...state.allMessages.filter((m) => (\n m.sendingStatus !== SUCCEEDED\n )),\n ],\n };\n case actionTypes.GET_PREV_MESSAGES_SUCESS: {\n const receivedMessages = action.payload.messages || [];\n const { currentGroupChannel = {} } = action.payload;\n\n const stateChannel = state.currentGroupChannel || {};\n const stateChannelUrl = stateChannel.url;\n const actionChannelUrl = currentGroupChannel.url;\n if (actionChannelUrl !== stateChannelUrl) {\n return state;\n }\n\n // remove duplicate messages\n const filteredAllMessages = state.allMessages.filter((msg) => (\n !(receivedMessages.find(({ messageId }) => compareIds(messageId, msg.messageId)))\n ));\n return {\n ...state,\n loading: false,\n initialized: true,\n hasMore: action.payload.hasMore,\n lastMessageTimeStamp: action.payload.lastMessageTimeStamp,\n allMessages: [\n ...receivedMessages,\n ...filteredAllMessages,\n ],\n };\n }\n case actionTypes.SEND_MESSAGEGE_START:\n return {\n ...state,\n allMessages: [\n ...state.allMessages,\n { ...action.payload },\n ],\n };\n case actionTypes.SEND_MESSAGEGE_SUCESS: {\n const newMessages = state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId) ? action.payload : m\n ));\n [...newMessages].sort((a, b) => (\n (\n a.sendingStatus\n && b.sendingStatus\n && a.sendingStatus === SUCCEEDED\n && (\n b.sendingStatus === PENDING\n || b.sendingStatus === FAILED\n )\n ) ? -1 : 1\n ));\n return {\n ...state,\n allMessages: newMessages,\n };\n }\n case actionTypes.SEND_MESSAGEGE_FAILURE: {\n // eslint-disable-next-line no-param-reassign\n action.payload.failed = true;\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId)\n ? action.payload\n : m\n )),\n };\n }\n case actionTypes.SET_CURRENT_CHANNEL: {\n return {\n ...state,\n currentGroupChannel: action.payload,\n isInvalid: false,\n };\n }\n case actionTypes.SET_CHANNEL_INVALID: {\n return {\n ...state,\n isInvalid: true,\n };\n }\n case actionTypes.ON_MESSAGE_RECEIVED: {\n const { channel, message } = action.payload;\n const { currentGroupChannel = {}, unreadCount, unreadSince } = state;\n const currentGroupChannelUrl = currentGroupChannel.url;\n if (!compareIds(channel.url, currentGroupChannelUrl)) {\n return state;\n }\n // Excluded overlapping messages\n if (!(state.allMessages.map((msg) => msg.messageId).indexOf(message.messageId) < 0)) {\n return state;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return {\n ...state,\n allMessages: passUnsuccessfullMessages(state.allMessages, message),\n };\n }\n return {\n ...state,\n unreadCount: unreadCount + 1,\n unreadSince: (unreadCount === 0)\n ? format(new Date(), 'p MMM dd')\n : unreadSince,\n allMessages: passUnsuccessfullMessages(state.allMessages, message),\n };\n }\n case actionTypes.ON_MESSAGE_UPDATED:\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.messageId, action.payload.message.messageId)\n ? action.payload.message\n : m\n )),\n };\n case actionTypes.RESEND_MESSAGEGE_START:\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId)\n ? action.payload\n : m\n )),\n };\n case actionTypes.MARK_AS_READ:\n return {\n ...state,\n unreadCount: 0,\n unreadSince: null,\n };\n case actionTypes.ON_MESSAGE_DELETED:\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.messageId, action.payload)\n )),\n };\n case actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID:\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.reqId, action.payload)\n )),\n };\n case actionTypes.SET_EMOJI_CONTAINER: {\n return {\n ...state,\n emojiContainer: action.payload,\n };\n }\n case actionTypes.SET_READ_STATUS: {\n return {\n ...state,\n readStatus: action.payload,\n };\n }\n case actionTypes.ON_REACTION_UPDATED: {\n return {\n ...state,\n allMessages: state.allMessages.map((m) => {\n if (compareIds(m.messageId, action.payload.messageId)) {\n if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {\n m.applyReactionEvent(action.payload);\n }\n return m;\n }\n return m;\n }),\n };\n }\n default:\n return state;\n }\n}\n","import { useEffect } from 'react';\n\nimport * as messageActions from '../dux/actionTypes';\nimport { uuidv4 } from '../../../utils/uuid';\nimport compareIds from '../../../utils/compareIds';\n\n/**\n * Handles ChannelEvents and send values to dispatcher using messagesDispatcher\n * messagesDispatcher: Dispatcher\n * sdk: sdkInstance\n * logger: loggerInstance\n * channelUrl: string\n * sdkInit: bool\n */\nfunction useHandleChannelEvents({ currentGroupChannel, sdkInit }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n const channelUrl = currentGroupChannel && currentGroupChannel.url;\n useEffect(() => {\n const messageReceiverId = uuidv4();\n if (channelUrl && sdk && sdk.ChannelHandler) {\n const ChannelHandler = new sdk.ChannelHandler();\n logger.info('Channel | useHandleChannelEvents: Setup event handler', messageReceiverId);\n ChannelHandler.onMessageReceived = (channel, message) => {\n if (compareIds(channel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_RECEIVED,\n payload: { channel, message },\n });\n }\n };\n\n ChannelHandler.onMessageUpdated = (channel, message) => {\n logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n };\n\n ChannelHandler.onMessageDeleted = (_, messageId) => {\n logger.info('Channel | useHandleChannelEvents: onMessageDeleted', messageId);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n };\n\n ChannelHandler.onReactionUpdated = (_, reactionEvent) => {\n logger.info('Channel | useHandleChannelEvents: onReactionUpdated', reactionEvent);\n messagesDispatcher({\n type: messageActions.ON_REACTION_UPDATED,\n payload: reactionEvent,\n });\n };\n\n ChannelHandler.onChannelChanged = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelChanged', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onChannelFrozen = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelFrozen', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onChannelUnfrozen = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserMuted = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserMuted', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserUnmuted = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserUnmuted', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserBanned = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserBanned', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onOperatorUpdated = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n // Add this channel event handler to the SendBird object.\n sdk.addChannelHandler(messageReceiverId, ChannelHandler);\n }\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', messageReceiverId);\n sdk.removeChannelHandler(messageReceiverId);\n }\n };\n }, [channelUrl, sdkInit]);\n}\n\nexport default useHandleChannelEvents;\n","import { useEffect } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useSetChannel({ channelUrl, sdkInit }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n useEffect(() => {\n if (channelUrl && sdkInit && sdk && sdk.GroupChannel) {\n logger.info('Channel | useSetChannel fetching channel', channelUrl);\n sdk.GroupChannel.getChannel(channelUrl)\n .then((groupChannel) => {\n logger.info('Channel | useSetChannel fetched channel', groupChannel);\n messagesDispatcher({\n type: messageActionTypes.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n\n logger.info('Channel: Mark as read', groupChannel);\n // this order is important - this mark as read should update the event handler up above\n groupChannel.markAsRead();\n })\n .catch((e) => {\n logger.warning('Channel | useSetChannel fetch channel failed', { channelUrl, e });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n });\n });\n sdk.getAllEmoji((emojiContainer_, err) => {\n if (err) {\n logger.error('Channel: Getting emojis failed', err);\n return;\n }\n logger.info('Channel: Getting emojis success', emojiContainer_);\n messagesDispatcher({\n type: messageActionTypes.SET_EMOJI_CONTAINER,\n payload: emojiContainer_,\n });\n });\n }\n }, [channelUrl, sdkInit]);\n}\n\nexport default useSetChannel;\n","import { useEffect } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\nfunction useInitialMessagesFetch({ currentGroupChannel, userFilledMessageListQuery }, {\n sdk,\n logger,\n messagesDispatcher,\n}) {\n const channelUrl = currentGroupChannel && currentGroupChannel.url;\n useEffect(() => {\n logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);\n\n messagesDispatcher({\n type: messageActionTypes.RESET_MESSAGES,\n });\n\n if (sdk && sdk.MessageListParams\n && currentGroupChannel && currentGroupChannel.getMessagesByMessageId) {\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.isInclusive = true;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = true;\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n\n currentGroupChannel.getMessagesByTimestamp(\n new Date().getTime(),\n messageListParams,\n )\n .then((messages) => {\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimeStamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore,\n lastMessageTimeStamp,\n currentGroupChannel,\n },\n });\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages: [],\n hasMore: false,\n lastMessageTimeStamp: 0,\n currentGroupChannel,\n },\n });\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n });\n }\n }, [channelUrl, userFilledMessageListQuery]);\n}\n\nexport default useInitialMessagesFetch;\n","import { useEffect } from 'react';\n\nimport * as utils from '../utils';\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useHandleReconnect({ isOnline }, {\n logger,\n sdk,\n currentGroupChannel,\n messagesDispatcher,\n userFilledMessageListQuery,\n}) {\n useEffect(() => {\n const wasOffline = !isOnline;\n return () => {\n // state changed from offline to online\n if (wasOffline) {\n logger.info('Refreshing conversation state');\n const { appInfo = {} } = sdk;\n const useReaction = appInfo.isUsingReaction || false;\n\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = useReaction;\n\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_START,\n });\n\n sdk.GroupChannel.getChannel(currentGroupChannel.url)\n .then((groupChannel) => {\n const lastMessageTime = new Date().getTime();\n\n groupChannel.getMessagesByTimestamp(\n lastMessageTime,\n messageListParams,\n )\n .then((messages) => {\n messagesDispatcher({\n type: messageActionTypes.CLEAR_SENT_MESSAGES,\n });\n\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimeStamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore,\n lastMessageTimeStamp,\n currentGroupChannel,\n },\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n });\n });\n }\n };\n }, [isOnline]);\n}\n\nexport default useHandleReconnect;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useScrollCallback({\n currentGroupChannel,\n lastMessageTimeStamp,\n userFilledMessageListQuery,\n}, {\n hasMore,\n logger,\n messagesDispatcher,\n sdk,\n}) {\n return useCallback((cb) => {\n if (!hasMore) { return; }\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = true;\n\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n\n currentGroupChannel.getMessagesByTimestamp(\n lastMessageTimeStamp || new Date().getTime(),\n messageListParams,\n )\n .then((messages) => {\n const hasMoreMessages = (messages && messages.length > 0);\n const lastMessageTs = hasMoreMessages\n ? messages[0].createdAt\n : null;\n\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore: hasMoreMessages,\n lastMessageTimeStamp: lastMessageTs,\n currentGroupChannel,\n },\n });\n cb([messages, null]);\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages: [],\n hasMore: false,\n lastMessageTimeStamp: 0,\n currentGroupChannel,\n },\n });\n cb([null, error]);\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n });\n }, [currentGroupChannel, lastMessageTimeStamp]);\n}\n\nexport default useScrollCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useDeleteMessageCallback({ currentGroupChannel, messagesDispatcher }, { logger }) {\n return useCallback((message, cb) => {\n logger.info('Channel | useDeleteMessageCallback: Deleting message', message);\n const { requestState } = message;\n logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', requestState);\n\n // Message is only on local\n if (requestState === 'failed' || requestState === 'pending') {\n logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,\n payload: message.reqId,\n });\n if (cb) { cb(); }\n return;\n }\n\n // Message is on server\n currentGroupChannel.deleteMessage(message, (err) => {\n logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', requestState);\n if (cb) { cb(err); }\n if (!err) {\n logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: message.messageId,\n });\n } else {\n logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);\n }\n });\n }, [currentGroupChannel, messagesDispatcher]);\n}\n\nexport default useDeleteMessageCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as topics from '../../../lib/pubSub/topics';\n\nfunction useUpdateMessageCallback({\n currentGroupChannel,\n messagesDispatcher,\n onBeforeUpdateUserMessage,\n}, {\n logger,\n pubSub,\n sdk,\n}) {\n return useCallback((messageId, text, cb) => {\n const createParamsDefault = (txt) => {\n const params = new sdk.UserMessageParams();\n params.message = txt;\n return params;\n };\n\n const createCustomPrams = onBeforeUpdateUserMessage\n && typeof onBeforeUpdateUserMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creating params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);\n }\n\n const params = onBeforeUpdateUserMessage\n ? onBeforeUpdateUserMessage(text)\n : createParamsDefault(text);\n\n currentGroupChannel.updateUserMessage(messageId, params, (r, e) => {\n logger.info('Channel: Updating message!', params);\n const swapParams = sdk.getErrorFirstCallback();\n let message = r;\n let err = e;\n if (swapParams) {\n message = e;\n err = r;\n }\n if (cb) {\n cb(err, message);\n }\n if (!err) {\n logger.info('Channel: Updating message success!', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: {\n channel: currentGroupChannel,\n message,\n },\n });\n pubSub.publish(\n topics.UPDATE_USER_MESSAGE,\n {\n message,\n channel: currentGroupChannel,\n },\n );\n } else {\n logger.warning('Channel: Updating message failed!', err);\n }\n });\n }, [currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);\n}\n\nexport default useUpdateMessageCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useResendMessageCallback({\n currentGroupChannel,\n messagesDispatcher,\n}, {\n logger,\n}) {\n return useCallback((failedMessage) => {\n logger.info('Channel: Resending message has started', failedMessage);\n const { messageType, file } = failedMessage;\n if (failedMessage && typeof failedMessage.isResendable === 'function'\n && failedMessage.isResendable()\n ) {\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n\n // userMessage\n if (messageType === 'user') {\n currentGroupChannel\n .resendUserMessage(failedMessage)\n .then((message) => {\n logger.info('Channel: Resending message success!', { message });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n })\n .catch((e) => {\n logger.warning('Channel: Resending message failed!', { e });\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: failedMessage,\n });\n });\n\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n return;\n }\n\n if (messageType === 'file') {\n currentGroupChannel\n .resendFileMessage(failedMessage, file)\n .then((message) => {\n logger.info('Channel: Resending file message success!', { message });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n })\n .catch((e) => {\n logger.warning('Channel: Resending file message failed!', { e });\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: failedMessage,\n });\n });\n\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n }\n } else {\n // to alert user on console\n // eslint-disable-next-line no-console\n console.error('Message is not resendable');\n logger.warning('Message is not resendable', failedMessage);\n }\n }, [currentGroupChannel, messagesDispatcher]);\n}\n\nexport default useResendMessageCallback;\n","import { useRef, useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\nimport * as topics from '../../../lib/pubSub/topics';\n\nexport default function useSendMessageCallback({ currentGroupChannel, onBeforeSendUserMessage }, {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n}) {\n const messageInputRef = useRef(null);\n\n const sendMessage = useCallback(\n () => {\n const text = messageInputRef.current.value;\n const createParamsDefault = (txt) => {\n const message = (typeof txt === 'string') ? txt.trim() : txt;\n const params = new sdk.UserMessageParams();\n params.message = message;\n return params;\n };\n\n const createCustomPrams = onBeforeSendUserMessage\n && typeof onBeforeSendUserMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);\n }\n\n const params = onBeforeSendUserMessage\n ? onBeforeSendUserMessage(text)\n : createParamsDefault(text);\n\n logger.info('Channel: Sending message has started', params);\n const pendingMsg = currentGroupChannel.sendUserMessage(params, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n // sending params instead of pending message\n // to make sure that we can resend the message once it fails\n if (error) {\n logger.warning('Channel: Sending message failed!', {\n message,\n });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: message,\n });\n return;\n }\n logger.info('Channel: Sending message success!', message);\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n });\n pubSub.publish(topics.SEND_MESSAGE_START, {\n /* pubSub is used instead of messagesDispatcher\n to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */\n message: pendingMsg,\n channel: currentGroupChannel,\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n },\n [currentGroupChannel, onBeforeSendUserMessage],\n );\n\n return [messageInputRef, sendMessage];\n}\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\nimport * as topics from '../../../lib/pubSub/topics';\n\nexport default function useSendFileMessageCallback({\n currentGroupChannel, onBeforeSendFileMessage,\n}, {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n}) {\n const sendMessage = useCallback((file) => {\n const createParamsDefault = (file_) => {\n const params = new sdk.FileMessageParams();\n params.file = file_;\n return params;\n };\n\n const createCustomPrams = onBeforeSendFileMessage\n && typeof onBeforeSendFileMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n\n const params = onBeforeSendFileMessage\n ? onBeforeSendFileMessage(file)\n : createParamsDefault(file);\n\n logger.info('Channel: Uploading file message start!', params);\n const pendingMsg = currentGroupChannel.sendFileMessage(params, (response, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = response;\n let error = err;\n if (swapParams) {\n message = err;\n error = response;\n }\n if (error) {\n // sending params instead of pending message\n // to make sure that we can resend the message once it fails\n logger.error('Channel: Sending file message failed!', message);\n message.localUrl = URL.createObjectURL(file);\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: message,\n });\n return;\n }\n logger.info('Channel: Sending message success!', message);\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n });\n pubSub.publish(topics.SEND_MESSAGE_START, {\n /* pubSub is used instead of messagesDispatcher\n to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */\n message: {\n ...pendingMsg,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentGroupChannel,\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'), 1000);\n }, [currentGroupChannel, onBeforeSendFileMessage]);\n return [sendMessage];\n}\n","import { useEffect } from 'react';\n\nimport * as utils from '../utils';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { uuidv4 } from '../../../utils/uuid';\n\nexport default function useSetReadStatus({ allMessages, currentGroupChannel }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n useEffect(() => {\n if (!sdk.ChannelHandler || !currentGroupChannel.url) {\n return () => {};\n }\n // todo: move to reducer?\n const setReadStatus = () => {\n const allReadStatus = allMessages.reduce((accumulator, msg) => {\n if (msg.messageId !== 0) {\n return {\n ...accumulator,\n [msg.messageId]: utils.getParsedStatus(msg, currentGroupChannel),\n };\n }\n return accumulator;\n }, {});\n messagesDispatcher({\n type: messageActionTypes.SET_READ_STATUS,\n payload: allReadStatus,\n });\n };\n if (allMessages.length > 0) {\n setReadStatus();\n }\n\n const channelUrl = currentGroupChannel.url;\n const handler = new sdk.ChannelHandler();\n const handleMessageStatus = (c) => {\n if (channelUrl === c.url) {\n setReadStatus();\n }\n };\n handler.onDeliveryReceiptUpdated = handleMessageStatus;\n handler.onReadReceiptUpdated = handleMessageStatus;\n // Add this channel event handler to the SendBird object.\n const handlerId = uuidv4();\n logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);\n sdk.addChannelHandler(handlerId, handler);\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);\n sdk.removeChannelHandler(handlerId);\n }\n };\n }, [allMessages, currentGroupChannel]);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst ReactionButton = React.forwardRef((props, ref) => {\n const {\n children,\n width,\n height,\n onClick,\n selected,\n className,\n } = props;\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n return (\n onClick(e)}\n role=\"button\"\n onKeyDown={(e) => onClick(e)}\n tabIndex={0}\n >\n
\n {children}\n
\n
\n );\n});\n\nReactionButton.propTypes = {\n children: PropTypes.element.isRequired,\n onClick: PropTypes.func,\n selected: PropTypes.bool,\n width: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nReactionButton.defaultProps = {\n selected: false,\n width: '36px',\n height: '36px',\n onClick: () => { },\n className: '',\n};\n\nexport default ReactionButton;\n","import React, { useMemo } from 'react';\n\nimport { EmojiListItems } from '../../../ui/ContextMenu';\nimport ReactionButton from '../../../ui/ReactionButton';\nimport ImageRenderer from '../../../ui/ImageRenderer';\nimport Icon, { IconTypes } from '../../../ui/Icon';\n\nexport default function useMemoizedEmojiListItems({\n emojiContainer, toggleReaction,\n}, {\n useReaction,\n logger,\n userId,\n emojiAllList,\n}) {\n return useMemo(() => ({\n parentRef,\n parentContainRef,\n message,\n closeDropdown,\n spaceFromTrigger = {},\n }) => {\n if (!useReaction || !(parentRef || parentContainRef || message || closeDropdown)) {\n logger.warning('Channel: Invalid Params in memoizedEmojiListItems');\n return null;\n }\n\n return (\n \n {\n emojiAllList.map((emoji) => {\n const reactedReaction = message.reactions\n .filter((reaction) => reaction.key === emoji.key)[0];\n const isReacted = reactedReaction\n ? !(reactedReaction.userIds.indexOf(userId) < 0)\n : false;\n return (\n {\n closeDropdown();\n toggleReaction(message, emoji.key, isReacted);\n }}\n >\n \n }\n />\n \n );\n })\n }\n \n );\n }, [emojiContainer, toggleReaction]);\n}\n","import { useCallback } from 'react';\n\nexport default function useToggleReactionCallback({ currentGroupChannel }, { logger }) {\n return useCallback((message, key, isReacted) => {\n if (isReacted) {\n currentGroupChannel.deleteReaction(message, key)\n .then((res) => {\n logger.info('Delete reaction success', res);\n })\n .catch((err) => {\n logger.warning('Delete reaction failed', err);\n });\n return;\n }\n currentGroupChannel.addReaction(message, key)\n .then((res) => {\n logger.info('Add reaction success', res);\n })\n .catch((err) => {\n logger.warning('Add reaction failed', err);\n });\n }, [currentGroupChannel]);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport Loader from '../Loader';\nimport MessageStatusType from './type';\n\nimport { getMessageCreatedAt } from '../../utils/utils';\n\nconst MessageStatusTypes = MessageStatusType;\nexport { MessageStatusTypes };\nexport default function MessageStatus({\n message,\n status,\n className,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n const label = () => {\n switch (status) {\n case MessageStatusType.FAILED:\n case MessageStatusType.PENDING: {\n return null;\n }\n case MessageStatusType.SENT:\n case MessageStatusType.DELIVERED:\n case MessageStatusType.READ: {\n return (\n \n {getMessageCreatedAt(message)}\n \n );\n }\n default: return null;\n }\n };\n\n const icon = {\n PENDING: (\n \n \n \n ),\n SENT: ,\n DELIVERED: ,\n READ: ,\n FAILED: ,\n };\n\n return (\n \n {icon[status]}\n \n {label(status)}\n
\n );\n}\n\nMessageStatus.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n status: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nMessageStatus.defaultProps = {\n message: null,\n status: '',\n className: '',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport './index.scss';\n\nconst ReactionBadge = React.forwardRef((props, ref) => {\n const {\n className,\n children,\n count,\n selected,\n isAdd,\n onClick,\n } = props;\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n if (selected && !isAdd) {\n injectingClassName.unshift('sendbird-reaction-badge--selected');\n } else if (isAdd) {\n injectingClassName.push('sendbird-reaction-badge--is-add');\n } else {\n injectingClassName.unshift('sendbird-reaction-badge');\n }\n\n return (\n \n
\n
\n {children}\n
\n
\n {count}\n \n
\n
\n );\n});\n\nReactionBadge.propTypes = {\n children: PropTypes.element.isRequired,\n count: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n selected: PropTypes.bool,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n isAdd: PropTypes.bool,\n onClick: PropTypes.func,\n};\n\nReactionBadge.defaultProps = {\n className: '',\n count: '',\n selected: false,\n isAdd: false,\n onClick: () => { },\n};\n\nexport default ReactionBadge;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport Label from '../Label';\n\nconst CLASS_NAME = 'sendbird-tooltip';\n\nexport default function Tooltip({\n className,\n children,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n\n return (\n \n \n {children}\n \n
\n );\n}\n\nTooltip.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.string,\n ]),\n};\n\nTooltip.defaultProps = {\n className: '',\n children: '',\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst CLASS_NAME = 'sendbird-tooltip-wrapper';\nconst SPACE_FROM_TRIGGER = 8;\n\nexport default function TooltipWrapper({\n className,\n children,\n hoverTooltip,\n // clickTooltip can be added later\n}) {\n const injectingClassName = Array.isArray(className)\n ? [CLASS_NAME, ...className]\n : [CLASS_NAME, className];\n const [showHoverTooltip, setShowHoverTooltip] = useState(false);\n const childrenRef = useRef(null);\n\n return (\n { setShowHoverTooltip(true); }}\n onFocus={() => { setShowHoverTooltip(true); }}\n onMouseOut={() => { setShowHoverTooltip(false); }}\n onBlur={() => { setShowHoverTooltip(false); }}\n >\n
\n {children}\n
\n {\n showHoverTooltip && (\n
\n
\n
\n {hoverTooltip}\n
\n
\n
\n )\n }\n
\n );\n}\n\nTooltipWrapper.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.element.isRequired,\n hoverTooltip: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]).isRequired,\n};\nTooltipWrapper.defaultProps = {\n className: '',\n};\n","import React, { useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport ReactionBadge from '../ReactionBadge';\nimport ImageRenderer from '../ImageRenderer';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport ContextMenu from '../ContextMenu';\nimport Tooltip from '../Tooltip';\nimport TooltipWrapper from '../TooltipWrapper';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nexport default function EmojiReactions({\n className,\n userId,\n message,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift('sendbird-emoji-reactions');\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const imageWidth = '20px';\n const imageHeight = '20px';\n const emojiReactionAddRef = useRef(null);\n const { reactions = [] } = message;\n const messageReactions = reactions;\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n
\n {\n messageReactions && (\n messageReactions.map((reaction) => {\n const { userIds = [] } = reaction;\n const emojiUrl = emojiAllMap.get(reaction.key) || '';\n const reactedUserCount = userIds.length;\n const reactedByMe = !(userIds.indexOf(userId) < 0);\n const nicknames = userIds\n .filter((currentUserId) => currentUserId !== userId)\n .map((currentUserId) => (\n membersMap.get(currentUserId) || stringSet.TOOLTIP__UNKOWN_USER\n ));\n const stringSetForMe = (nicknames.length > 0)\n ? stringSet.TOOLTIP__AND_YOU : stringSet.TOOLTIP__YOU;\n return (\n 0 && (\n \n <>\n {\n `${(\n nicknames.join(', ')\n )}${(\n reactedByMe\n ? stringSetForMe\n : ''\n )}`\n }\n >\n \n )\n }\n >\n toggleReaction(message, reaction.key, reactedByMe)}\n >\n \n )}\n />\n \n \n );\n })\n )\n }\n {\n (messageReactions.length < emojiAllMap.size)\n && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n
\n );\n}\n\nEmojiReactions.propTypes = {\n userId: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n message: PropTypes.shape({\n reactions: PropTypes.arrayOf(PropTypes.shape({})),\n }).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\nEmojiReactions.defaultProps = {\n className: '',\n membersMap: new Map(),\n userId: '',\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import React, { useMemo, useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport uuidv4 from '../../utils/uuid';\n\nconst WORD_TYPOGRAPHY = LabelTypography.BODY_1;\nconst EDITED_COLOR = LabelColors.ONBACKGROUND_2;\n\nexport default function useMemoizedMessageText({\n message,\n updatedAt,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return useMemo(() => () => {\n const splitMessage = message.split(/\\r/);\n const matchedMessage = splitMessage\n .map((word) => (word !== '' ? word : ));\n if (updatedAt > 0) {\n matchedMessage.push(\n \n {` ${stringSet.MESSAGE_EDITED} `}\n ,\n );\n }\n return matchedMessage;\n }, [message, updatedAt, className]);\n}\n","import { useEffect } from 'react';\n\nconst MOUSE_ENTER = 'mouseenter';\nconst MOUSE_LEAVE = 'mouseleave';\n\nconst useMouseHover = ({\n ref,\n setHover,\n}) => {\n const handleMouseOver = () => {\n if (ref.current) {\n setHover(true);\n }\n };\n const handleMouseOut = () => {\n if (ref.current) {\n setHover(false);\n }\n };\n\n useEffect(() => {\n const { current } = ref;\n current.addEventListener(MOUSE_ENTER, handleMouseOver);\n current.addEventListener(MOUSE_LEAVE, handleMouseOut);\n return () => {\n current.removeEventListener(MOUSE_ENTER, handleMouseOver);\n current.removeEventListener(MOUSE_LEAVE, handleMouseOut);\n };\n });\n};\n\nexport default useMouseHover;\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport './index.scss';\nimport UserProfile from '../UserProfile';\nimport Avatar from '../Avatar/index';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport MessageStatus from '../MessageStatus';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport EmojiReactions from '../EmojiReactions';\nimport {\n copyToClipboard,\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n getIsSentFromStatus,\n} from './utils';\nimport useMemoizedMessageText from './memoizedMessageText';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst noop = () => { };\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function Message(props) {\n const {\n isByMe,\n userId,\n message,\n className,\n resendMessage,\n disabled,\n showEdit,\n showRemove,\n status,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n } = props;\n\n if (!message) return null;\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n injectingClassName.push(`sendbird-message${isByMe ? '--outgoing' : '--incoming'}`);\n const memoizedMessageText = useMemoizedMessageText({\n message: message.message,\n updatedAt: message.updatedAt,\n className: 'sendbird-user-message-word',\n });\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n}\n\nMessage.propTypes = {\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n userId: PropTypes.string,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n showEdit: PropTypes.func,\n status: PropTypes.string,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nMessage.defaultProps = {\n isByMe: false,\n disabled: false,\n userId: '',\n resendMessage: noop,\n className: '',\n showEdit: noop,\n showRemove: noop,\n status: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nfunction OutgoingUserMessage({\n userId,\n message,\n showEdit,\n disabled,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n // TODO: when message.requestState is succeeded, consider if it's SENT or DELIVERED\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n const isMessageSent = getIsSentFromStatus(status);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n isMessageSent && (\n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n )\n }\n {\n isMessageSent && (\n {\n if (disabled) { return; }\n showEdit(true);\n closeDropdown();\n }}\n >\n Edit\n \n )\n }\n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n (isMessageSent && useReaction && (emojiAllMap.size > 0))\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n { showRemove(true); }}\n // onResend={() => resendMessage(message)}\n // duplicated and should replace to more\n />\n
\n )\n }\n
\n
\n
\n
\n \n \n \n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n
\n )\n }\n
\n
\n
\n
\n );\n}\n\nfunction IncomingUserMessage({\n userId,\n message,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n const avatarRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n {\n // showProfile && (
)\n }\n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className=\"sendbird-user-message__avatar\"\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n
\n
\n \n \n \n
\n {\n showEmojiReactions && (\n
\n )\n }\n
\n
\n \n
\n
\n {\n showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n \n )}\n />\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nIncomingUserMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nIncomingUserMessage.defaultProps = {\n message: {},\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nOutgoingUserMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n showEdit: PropTypes.func,\n showRemove: PropTypes.func,\n disabled: PropTypes.bool,\n resendMessage: PropTypes.func,\n status: PropTypes.string.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingUserMessage.defaultProps = {\n message: {},\n resendMessage: noop,\n showEdit: noop,\n showRemove: noop,\n disabled: false,\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelColors, LabelTypography } from '../Label';\n\nexport default function AdminMessage({\n className,\n message,\n}) {\n if (!message.messageType || message.messageType !== 'admin') { // change to use message.isAdminMessage()\n return null;\n }\n\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n \n {message.message}\n \n
\n );\n}\n\nAdminMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nAdminMessage.defaultProps = {\n message: {},\n className: '',\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport default {\n getMessageCreatedAt,\n getIsSentFromStatus,\n};\n","import React, { useContext, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport {\n getMessageCreatedAt,\n getIsSentFromStatus,\n} from './util';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport Avatar from '../Avatar/index';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport MessageStatus from '../MessageStatus';\nimport EmojiReactions from '../EmojiReactions';\nimport {\n isImage,\n isVideo,\n unSupported,\n} from '../FileViewer/types';\nimport {\n getSenderName,\n getSenderProfileUrl,\n} from '../../utils/utils';\nimport useMouseHover from '../../hooks/onMouseHover';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nconst noop = () => { };\n\nconst OUTGOING_THUMBNAIL_MESSAGE = 'sendbird-outgoing-thumbnail-message';\nconst INCOMING_THUMBNAIL_MESSAGE = 'sendbird-incoming-thumbnail-message';\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function ThumbnailMessage({\n message = {},\n userId,\n disabled,\n isByMe,\n onClick,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n return (\n isByMe\n ? (\n \n )\n : (\n \n )\n );\n}\n\nexport function OutgoingThumbnailMessage({\n message = {},\n userId,\n disabled,\n onClick,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n type,\n url,\n localUrl,\n } = message;\n const { stringSet } = useContext(LocalizationContext);\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const reactionAddRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showReactionAddButton = (useReaction && emojiAllMap && emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n \n )}\n />\n {\n isMessageSent && showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n )\n }\n
\n
\n
\n
onClick(true) : () => { }}\n onKeyDown={isMessageSent ? () => onClick(true) : () => { }}\n tabIndex={0}\n role=\"button\"\n >\n {\n isVideo(type) && (\n <>\n {/* eslint-disable-next-line jsx-a11y/media-has-caption */}\n
\n \n \n
\n >\n )\n }\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n
\n )\n }\n
\n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n
\n )\n }\n
\n
\n
\n
\n );\n}\n\nexport function IncomingThumbnailMessage({\n message = {},\n userId,\n onClick,\n status,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n type,\n url,\n localUrl,\n } = message;\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const reactionAddRef = useRef(null);\n const avatarRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showReactionAddButton = (useReaction && emojiAllMap && emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n {\n !chainTop && (\n
\n {getSenderName(message) || ''}\n \n )\n }\n
\n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${INCOMING_THUMBNAIL_MESSAGE}__avatar`}\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n onClick(true) : () => { }}\n onKeyDown={isMessageSent ? () => onClick(true) : () => { }}\n >\n {\n isVideo(type) && (\n <>\n {/* eslint-disable-next-line jsx-a11y/media-has-caption */}\n
\n \n \n
\n >\n )\n }\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n
\n )\n }\n
\n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n \n )\n }\n \n
\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n
\n
\n
\n );\n}\n\nThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string,\n resendMessage: PropTypes.func,\n status: PropTypes.string,\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n showRemove: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\nThumbnailMessage.defaultProps = {\n isByMe: false,\n disabled: false,\n resendMessage: noop,\n onClick: noop,\n showRemove: noop,\n status: '',\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nOutgoingThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n resendMessage: PropTypes.func.isRequired,\n status: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n showRemove: PropTypes.func.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\nOutgoingThumbnailMessage.defaultProps = {\n status: '',\n};\n\nIncomingThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n status: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\nIncomingThumbnailMessage.defaultProps = {\n status: '',\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport './index.scss';\nimport Avatar from '../Avatar/index';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport TextButton from '../TextButton';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport MessageStatus from '../MessageStatus';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport EmojiReactions from '../EmojiReactions';\n\nimport { getSenderProfileUrl, getSenderName, getMessageCreatedAt } from '../../utils/utils';\nimport {\n truncate,\n getIsSentFromStatus,\n} from './utils';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst MAX_TRUNCATE_LENGTH = 40;\nconst GROUPAING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\nconst noop = () => { };\n\nfunction checkFileType(fileUrl) {\n let result = null;\n const imageFile = /(\\.gif|\\.jpg|\\.jpeg|\\.txt|\\.pdf)$/i;\n const audioFile = /(\\.mp3)$/i;\n if (imageFile.test(fileUrl)) {\n result = IconTypes.FILE_DOCUMENT;\n } else if (audioFile.test(fileUrl)) {\n result = IconTypes.FILE_AUDIO;\n }\n return result;\n}\n\nexport function OutgoingFileMessage({\n message,\n userId,\n status,\n showRemove,\n disabled,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n url,\n } = message;\n const openFileUrl = () => { window.open(url); };\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const reactionAddButtonRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n const showEmojiReactions = isMessageSent && useReaction && message.reactions\n && (message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n {\n checkFileType(url)\n ? (\n \n )\n : null\n }\n \n \n {truncate(message.url, MAX_TRUNCATE_LENGTH)}\n \n \n
\n {\n showEmojiReactions && (\n
\n )\n }\n
\n
\n
\n );\n}\n\nexport function IncomingFileMessage({\n message,\n userId,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const openFileUrl = () => { window.open(message.url); };\n const messageRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const parentContainRef = useRef(null);\n const avatarRef = useRef(null);\n const reactionAddButtonRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className=\"sendbird-file-message__avatar\"\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n
\n {\n checkFileType(message.url)\n ? (\n \n )\n : null\n }\n \n \n {truncate(message.url, MAX_TRUNCATE_LENGTH)}\n \n \n
\n {\n (useReaction && message.reactions && (message.reactions.length > 0)) && (\n
\n )\n }\n
\n \n
\n
\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nOutgoingFileMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n userId: PropTypes.string,\n status: PropTypes.string,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n disabled: PropTypes.bool,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingFileMessage.defaultProps = {\n status: '',\n showRemove: noop,\n resendMessage: noop,\n message: {},\n userId: '',\n disabled: false,\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nIncomingFileMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n userId: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nIncomingFileMessage.defaultProps = {\n message: {},\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nconst MessageSwitch = ({\n message,\n userId,\n disabled,\n isByMe,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) => (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n);\n\n\nMessageSwitch.propTypes = {\n message: PropTypes.shape({}),\n userId: PropTypes.string,\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n status: PropTypes.string.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nMessageSwitch.defaultProps = {\n message: {},\n isByMe: false,\n disabled: false,\n showRemove: noop,\n resendMessage: noop,\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nexport default MessageSwitch;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../../ui/Modal';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\nconst RemoveMessage = (props) => {\n const {\n onCloseModal,\n onDeleteMessage,\n } = props;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n );\n};\n\nRemoveMessage.propTypes = {\n onCloseModal: PropTypes.func.isRequired,\n onDeleteMessage: PropTypes.func.isRequired,\n};\n\nexport default RemoveMessage;\n","import format from 'date-fns/format';\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport default {\n getMessageCreatedAt,\n};\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Avatar from '../Avatar/index';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport MessageStatus from '../MessageStatus';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport IconButton from '../IconButton';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst CLASS_NAME = 'sendbird-unknown-message';\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function UnknownMessage({\n message,\n isByMe,\n status,\n className,\n showRemove,\n chainTop,\n chainBottom,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n injectingClassName.push(`${CLASS_NAME}${isByMe ? '--outgoing' : '--incoming'}`);\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n}\n\nUnknownMessage.propTypes = {\n message: PropTypes.shape({}).isRequired,\n isByMe: PropTypes.bool,\n status: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n showRemove: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nUnknownMessage.defaultProps = {\n isByMe: false,\n status: '',\n className: '',\n showRemove: () => { },\n chainTop: false,\n chainBottom: false,\n};\n\nfunction OutgoingUnknownMessage({\n message,\n status,\n showRemove,\n chainTop,\n chainBottom,\n}) {\n const className = 'sendbird-outgoing-unknown-message';\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { showRemove(true); closeDropdown(); }}\n >\n Delete\n \n \n )}\n />\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n \n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n \n \n {stringSet.UNKNOWN__CANNOT_READ_MESSAGE}\n \n
\n
\n
\n
\n );\n}\n\nfunction IncomingUnknownMessage({\n message,\n chainTop,\n chainBottom,\n}) {\n const className = 'sendbird-incoming-unknown-message';\n const { sender } = message;\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${className}__left__sender-profile-image`}\n src={sender.profileUrl}\n width=\"28px\"\n height=\"28px\"\n alt=\"sender-profile-image\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n {sender.nickname || stringSet.NO_NAME}\n \n )\n }\n
\n \n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n \n \n {stringSet.UNKNOWN__CANNOT_READ_MESSAGE}\n \n
\n
\n
\n {\n !chainBottom && (\n \n {utils.getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nOutgoingUnknownMessage.propTypes = {\n message: PropTypes.shape({}).isRequired,\n status: PropTypes.string.isRequired,\n showRemove: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingUnknownMessage.defaultProps = {\n showRemove: () => { },\n};\n\nIncomingUnknownMessage.propTypes = {\n message: PropTypes.shape({\n sender: PropTypes.shape({\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n }),\n }).isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n","export const URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;\nexport const OG_MESSAGE = 'sendbird-og-message';\nexport const OUTGOING_OG_MESSAGE = 'sendbird-outgoing-og-message';\nexport const INCOMING_OG_MESSAGE = 'sendbird-incoming-og-message';\nexport const generateMockMessage = (process) => {\n const message = {\n message: 'go to this link sendbird.com it will be usefull to you!!',\n ogMetaData: {\n title: 'This is the TITLE',\n description: 'I\\'m description I\\'m description I\\'m description I\\'m description ',\n url: 'https://sendbird.com/',\n defaultImage: {\n url: 'https://static.sendbird.com/sample/profiles/profile_12_512px.png',\n alt: 'test',\n },\n },\n sender: {\n profileUrl: 'https://static.sendbird.com/sample/profiles/profile_12_512px.png',\n nickname: 'Hoonying',\n },\n createdAt: 2000000,\n };\n if (process && typeof process === 'function') {\n return process(message);\n }\n return message;\n};\n\nexport default {\n URL_REG,\n OG_MESSAGE,\n OUTGOING_OG_MESSAGE,\n INCOMING_OG_MESSAGE,\n generateMockMessage,\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const createUrlTester = (regexp) => (text) => regexp.test(text);\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport const copyToClipboard = (text) => {\n try {\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path\n // to prevent textarea being shown while dialog is visible.\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n } catch (err) {\n return err;\n }\n};\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const checkOGIsEnalbed = (message) => {\n const { ogMetaData } = message;\n if (!ogMetaData) {\n return false;\n }\n const { url } = ogMetaData;\n if (!url) {\n return false;\n }\n return true;\n};\n\nexport default {\n getSenderName,\n createUrlTester,\n copyToClipboard,\n checkOGIsEnalbed,\n getMessageCreatedAt,\n getIsSentFromStatus,\n getSenderProfileUrl,\n};\n","import React, { useMemo, useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport LinkLabel from '../LinkLabel';\nimport uuidv4 from '../../utils/uuid';\nimport { createUrlTester } from './utils';\nimport { URL_REG } from './const';\n\nconst WORD_TYPOGRAPHY = LabelTypography.BODY_1;\nconst WORD_COLOR = LabelColors.ONBACKGROUND_1;\nconst EDITED_COLOR = LabelColors.ONBACKGROUND_2;\nconst isUrl = createUrlTester(URL_REG);\n\nexport default function useMemoizedMessageText({\n message,\n updatedAt,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return useMemo(() => () => {\n const splitMessage = message.split(' ');\n const matchedMessage = splitMessage\n .map((word) => (\n isUrl(word)\n ? (\n \n {word}\n \n )\n : (\n \n {word}\n \n )\n ));\n if (updatedAt > 0) {\n matchedMessage.push(\n \n {stringSet.MESSAGE_EDITED}\n ,\n );\n }\n return matchedMessage;\n }, [message, updatedAt, className]);\n}\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n OG_MESSAGE,\n OUTGOING_OG_MESSAGE,\n INCOMING_OG_MESSAGE,\n} from './const';\nimport {\n getSenderName,\n copyToClipboard,\n checkOGIsEnalbed,\n getMessageCreatedAt,\n getIsSentFromStatus,\n getSenderProfileUrl,\n} from './utils';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport useMemoizedMessageText from './memoizedMessageText';\nimport './index.scss';\n\nimport UserProfile from '../UserProfile';\nimport IconButton from '../IconButton';\nimport ImageRenderer from '../ImageRenderer';\nimport MessageStatus from '../MessageStatus';\nimport EmojiReactions from '../EmojiReactions';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport Avatar from '../Avatar/index';\n\nimport useMouseHover from '../../hooks/onMouseHover';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nconst GROUPING_PADDING = '1px';\nconst NORAML_PADDING = '8px';\n\nconst OGMessageSwitch = ({\n isByMe,\n userId,\n status,\n message,\n disabled,\n showEdit,\n chainTop,\n className,\n membersMap,\n showRemove,\n useReaction,\n emojiAllMap,\n chainBottom,\n resendMessage,\n toggleReaction,\n memoizedEmojiListItems,\n}) => {\n const { ogMetaData } = message;\n const injectingClassName = Array.isArray(className) ? className : [className];\n\n const memoizedMessageText = useMemoizedMessageText({\n message: message.message,\n updatedAt: message.updatedAt,\n className: 'sendbird-og-message-word',\n });\n const openLink = () => {\n if (checkOGIsEnalbed(message)) {\n const { url } = ogMetaData;\n window.open(url);\n }\n };\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n};\n\nfunction OutgoingOGMessage(props) {\n const {\n status,\n userId,\n message,\n disabled,\n openLink,\n showEdit,\n chainTop,\n showRemove,\n membersMap,\n chainBottom,\n emojiAllMap,\n useReaction,\n resendMessage,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n } = props;\n const {\n ogMetaData,\n } = message;\n const {\n defaultImage,\n } = ogMetaData;\n const { stringSet } = useContext(LocalizationContext);\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n\n const isMessageSent = getIsSentFromStatus(status);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n isMessageSent && (\n { copyToClipboard(message.message); closeDropdown(); }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__COPY}\n \n )\n }\n {\n isMessageSent && (\n {\n if (disabled) { return; }\n showEdit(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__EDIT}\n \n )\n }\n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n \n )}\n />\n {\n (isMessageSent && useReaction && (emojiAllMap.size > 0))\n && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n \n
\n
\n {\n defaultImage && (\n \n \n
\n )}\n />\n )\n }\n
\n
\n {\n ogMetaData.title && (\n
\n \n {ogMetaData.title}\n \n
\n )\n }\n {\n ogMetaData.description && (\n
\n \n {ogMetaData.description}\n \n
\n )\n }\n {\n ogMetaData.url && (\n
\n {ogMetaData.url}\n \n )\n }\n {\n showEmojiReactions\n && (\n
event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"button\"\n tabIndex={0}\n >\n \n
\n )\n }\n
\n
\n
\n \n );\n}\n\nfunction IncomingOGMessage(props) {\n const {\n userId,\n message,\n openLink,\n chainTop,\n membersMap,\n chainBottom,\n useReaction,\n emojiAllMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n } = props;\n const {\n ogMetaData,\n } = message;\n const {\n defaultImage,\n } = ogMetaData;\n const { stringSet } = useContext(LocalizationContext);\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n\n const messageRef = useRef(null);\n const avatarRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${INCOMING_OG_MESSAGE}__avatar`}\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n alt=\"sender-profile-image\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n \n
\n \n {\n defaultImage && (\n \n \n
\n )}\n />\n )\n }\n \n
\n {\n ogMetaData.title && (\n
\n\n \n {ogMetaData.title}\n \n
\n )\n }\n {\n ogMetaData.description && (\n
\n \n {ogMetaData.description}\n \n
\n )\n }\n {\n ogMetaData.url && (\n
\n \n {ogMetaData.url}\n \n
\n )\n }\n {\n showEmojiReactions\n && (\n
event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"button\"\n tabIndex={0}\n >\n \n
\n )\n }\n
\n
\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n {\n showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { copyToClipboard(message.message); closeDropdown(); }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__COPY}\n \n \n )}\n />\n
\n
\n
\n \n );\n}\n\nexport default OGMessageSwitch;\n\nconst noop = () => { };\n\nOGMessageSwitch.propTypes = {\n isByMe: PropTypes.bool.isRequired,\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n sender: PropTypes.shape({}),\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n }).isRequired,\n useReaction: PropTypes.bool.isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n status: PropTypes.string,\n disabled: PropTypes.bool,\n showEdit: PropTypes.func,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n toggleReaction: PropTypes.func,\n membersMap: PropTypes.instanceOf(Map),\n emojiAllMap: PropTypes.instanceOf(Map),\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nOGMessageSwitch.defaultProps = {\n className: '',\n status: '',\n disabled: false,\n showEdit: noop,\n showRemove: noop,\n resendMessage: noop,\n toggleReaction: noop,\n membersMap: new Map(),\n emojiAllMap: new Map(),\n memoizedEmojiListItems: noop,\n chainTop: false,\n chainBottom: false,\n};\n\nOutgoingOGMessage.propTypes = {\n status: PropTypes.string,\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n isResendable: PropTypes.func,\n errorCode: PropTypes.number,\n }).isRequired,\n disabled: PropTypes.bool.isRequired,\n openLink: PropTypes.func.isRequired,\n showEdit: PropTypes.func.isRequired,\n showRemove: PropTypes.func.isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n useReaction: PropTypes.bool.isRequired,\n resendMessage: PropTypes.func.isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingOGMessage.defaultProps = {\n status: '',\n};\n\nIncomingOGMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n sender: PropTypes.shape({}),\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n }).isRequired,\n openLink: PropTypes.func.isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n useReaction: PropTypes.bool.isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n","import React, { useState, useRef, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport format from 'date-fns/format';\n\nimport Message from '../../../ui/Message';\nimport AdminMessage from '../../../ui/AdminMessage';\nimport ThumbnailMessage from '../../../ui/ThumbnailMessage';\nimport FileMessage from '../../../ui/FileMessage';\nimport DateSeparator from '../../../ui/DateSeparator';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport MessageInput from '../../../ui/MessageInput';\nimport FileViewer from '../../../ui/FileViewer';\nimport RemoveMessageModal from './RemoveMessage';\nimport UnknownMessage from '../../../ui/UnknownMessage';\nimport OGMessage from '../../../ui/OGMessage';\n\nimport { MessageTypes, getMessageType } from '../types';\n\nexport default function MessageHoc({\n message,\n userId,\n disabled,\n editDisabled,\n hasSeperator,\n deleteMessage,\n updateMessage,\n status,\n resendMessage,\n useReaction,\n chainTop,\n chainBottom,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n renderCustomMessage,\n currentGroupChannel,\n}) {\n const { sender = {} } = message;\n const [showEdit, setShowEdit] = useState(false);\n const [showRemove, setShowRemove] = useState(false);\n const [showFileViewer, setShowFileViewer] = useState(false);\n const editMessageInputRef = useRef(null);\n\n const RenderedMessage = useMemo(() => {\n if (renderCustomMessage) {\n return renderCustomMessage(message, currentGroupChannel);\n }\n return null;\n }, [message, message.message, renderCustomMessage]);\n\n const isByMe = (userId === sender.userId)\n || (message.requestState === 'pending')\n || (message.requestState === 'failed');\n\n if (RenderedMessage) {\n return (\n \n {/* date-seperator */}\n {\n hasSeperator && (\n \n \n {format(message.createdAt, 'MMMM dd, yyyy')}\n \n \n )\n }\n \n
\n );\n }\n\n if (showEdit) {\n return (\n { setShowEdit(false); }}\n value={message.message}\n />\n );\n }\n\n return (\n \n {/* date-seperator */}\n {\n hasSeperator && (\n
\n \n {format(message.createdAt, 'MMMM dd, yyyy')}\n \n \n )\n }\n {/* Message */}\n {\n {\n [MessageTypes.ADMIN]:
,\n [MessageTypes.FILE]: (\n
\n ),\n [MessageTypes.OG]: (\n
\n ),\n [MessageTypes.THUMBNAIL]: (\n
\n ),\n [MessageTypes.USER]: (\n
\n ),\n }[getMessageType(message)]\n }\n {/* Modal */}\n {\n showRemove && (\n
setShowRemove(false)}\n onDeleteMessage={() => {\n deleteMessage(message);\n }}\n />\n )\n }\n {\n showFileViewer && (\n setShowFileViewer(false)}\n message={message}\n onDelete={() => {\n deleteMessage(message, () => {\n setShowFileViewer(false);\n });\n }}\n isByMe={isByMe}\n />\n )\n }\n {\n !((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file')\n && !(message.isAdminMessage && message.isAdminMessage())\n && !(((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user'))\n && !(showFileViewer)\n && (\n \n )\n }\n \n );\n}\n\nMessageHoc.propTypes = {\n userId: PropTypes.string,\n message: PropTypes.shape({\n isFileMessage: PropTypes.func,\n isAdminMessage: PropTypes.func,\n isUserMessage: PropTypes.func,\n isDateSeperator: PropTypes.func,\n // should be a number, but there's a bug in SDK shich returns string\n messageId: PropTypes.number,\n type: PropTypes.string,\n createdAt: PropTypes.number,\n message: PropTypes.string,\n requestState: PropTypes.string,\n messageType: PropTypes.string,\n sender: PropTypes.shape({ userId: PropTypes.string }),\n ogMetaData: PropTypes.shape({}),\n }),\n renderCustomMessage: PropTypes.func,\n currentGroupChannel: PropTypes.shape,\n hasSeperator: PropTypes.bool,\n disabled: PropTypes.bool,\n editDisabled: PropTypes.bool,\n deleteMessage: PropTypes.func.isRequired,\n updateMessage: PropTypes.func.isRequired,\n resendMessage: PropTypes.func.isRequired,\n status: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\n\nMessageHoc.defaultProps = {\n userId: '',\n editDisabled: false,\n renderCustomMessage: null,\n currentGroupChannel: {},\n message: {},\n hasSeperator: false,\n disabled: false,\n status: '',\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport isSameDay from 'date-fns/isSameDay';\n\nimport './conversation-scroll.scss';\nimport * as messageActionTypes from '../dux/actionTypes';\n\nimport MessageHOC from './MessageHOC';\nimport {\n getParsedStatus,\n compareMessagesForGrouping,\n} from '../utils';\n\nexport default class ConversationScroll extends Component {\n onScroll = (e) => {\n const {\n scrollRef,\n hasMore,\n messagesDispatcher,\n onScroll,\n currentGroupChannel,\n } = this.props;\n\n const element = e.target;\n const {\n scrollTop,\n clientHeight,\n scrollHeight,\n } = element;\n if (scrollTop === 0) {\n if (!hasMore) {\n return;\n }\n const nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');\n const first = nodes[0];\n onScroll(([messages]) => {\n if (messages) {\n // https://github.com/scabbiaza/react-scroll-position-on-updating-dom\n first.scrollIntoView();\n }\n });\n }\n\n setTimeout(() => {\n // mark as read if scroll is at end\n if (clientHeight + scrollTop === scrollHeight) {\n messagesDispatcher({\n type: messageActionTypes.MARK_AS_READ,\n });\n currentGroupChannel.markAsRead();\n }\n }, 500);\n }\n\n render() {\n const {\n userId,\n disabled,\n scrollRef,\n readStatus,\n membersMap,\n initialized,\n allMessages,\n useReaction,\n emojiAllMap,\n editDisabled,\n deleteMessage,\n updateMessage,\n resendMessage,\n renderCustomMessage,\n renderChatItem,\n emojiContainer,\n toggleReaction,\n useMessageGrouping,\n currentGroupChannel,\n memoizedEmojiListItems,\n } = this.props;\n return (\n \n
\n
\n {/*\n To do: Implement windowing\n Implement windowing if you are dealing with large number of messages/channels\n https://github.com/bvaughn/react-window -> recommendation\n We hesitate to bring one more dependency to our library,\n we are planning to implement it inside the library\n */}\n
\n {\n initialized\n && allMessages.map(\n (m, idx) => {\n const previousMessage = allMessages[idx - 1];\n const nextMessage = allMessages[idx + 1];\n const [chainTop, chainBottom] = useMessageGrouping\n ? compareMessagesForGrouping(previousMessage, m, nextMessage)\n : [false, false];\n const previousMessageCreatedAt = previousMessage && previousMessage.createdAt;\n const currentCreatedAt = m.createdAt;\n // https://stackoverflow.com/a/41855608\n const hasSeperator = !(previousMessageCreatedAt && (\n isSameDay(currentCreatedAt, previousMessageCreatedAt)\n ));\n if (renderChatItem) {\n return (\n
\n {\n renderChatItem({\n message: m,\n channel: currentGroupChannel,\n onDeleteMessage: deleteMessage,\n onUpdateMessage: updateMessage,\n onResendMessage: resendMessage,\n emojiContainer,\n })\n }\n
\n );\n }\n\n return (\n
\n );\n },\n )\n }\n
\n
\n
\n );\n }\n}\n\nConversationScroll.propTypes = {\n // https://stackoverflow.com/a/52646941\n scrollRef: PropTypes.shape({\n current: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.shape({}),\n ]),\n }).isRequired,\n hasMore: PropTypes.bool,\n messagesDispatcher: PropTypes.func.isRequired,\n onScroll: PropTypes.func,\n initialized: PropTypes.bool,\n editDisabled: PropTypes.bool,\n disabled: PropTypes.bool,\n userId: PropTypes.string,\n allMessages: PropTypes.arrayOf(PropTypes.shape({\n createdAt: PropTypes.number,\n })).isRequired,\n deleteMessage: PropTypes.func.isRequired,\n resendMessage: PropTypes.func.isRequired,\n updateMessage: PropTypes.func.isRequired,\n readStatus: PropTypes.shape({}).isRequired,\n currentGroupChannel: PropTypes.shape({\n markAsRead: PropTypes.func,\n members: PropTypes.arrayOf(PropTypes.shape({})),\n }).isRequired,\n renderChatItem: PropTypes.element,\n renderCustomMessage: PropTypes.func,\n useReaction: PropTypes.bool,\n emojiContainer: PropTypes.shape({}),\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n useMessageGrouping: PropTypes.bool,\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\n\nConversationScroll.defaultProps = {\n hasMore: false,\n editDisabled: false,\n disabled: false,\n initialized: false,\n userId: '',\n renderCustomMessage: null,\n renderChatItem: null,\n onScroll: null,\n useReaction: true,\n emojiContainer: {},\n emojiAllMap: new Map(),\n membersMap: new Map(),\n useMessageGrouping: true,\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './notification.scss';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\n\nexport default function Notification({\n count,\n time,\n onClick,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const timeArray = time.split(' ');\n timeArray.splice(-2, 0, stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__ON);\n return (\n // eslint-disable-next-line\n \n \n {`${count} `}\n {stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE}\n {` ${timeArray.join(' ')}`}\n \n \n
\n );\n}\n\nNotification.propTypes = {\n count: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n time: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n};\n\nNotification.defaultProps = {\n count: 0,\n time: '',\n};\n","import React, { useContext } from 'react';\n\nimport './notification.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography } from '../../../ui/Label';\n\nconst FrozenNotification = (): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n {stringSet.CHANNEL_FROZEN}\n \n
\n );\n}\n\nexport default FrozenNotification;\n","import React, { useEffect, useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { uuidv4 } from '../../../utils/uuid';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\n\nconst TypingIndicatorText = ({ members }) => {\n const { stringSet } = useContext(LocalizationContext);\n if (!members || members.length === 0) {\n return '';\n }\n\n if (members && members.length === 1) {\n return `${members[0].nickname} ${stringSet.TYPING_INDICATOR__IS_TYPING}`;\n }\n\n if (members && members.length === 2) {\n return `${members[0].nickname} ${stringSet.TYPING_INDICATOR__AND} ${members[1].nickname} ${stringSet.TYPING_INDICATOR__ARE_TYPING}`;\n }\n\n return stringSet.TYPING_INDICATOR__MULTIPLE_TYPING;\n};\n\nfunction TypingIndicator({ channelUrl, sb, logger }) {\n const [handlerId, setHandlerId] = useState(uuidv4());\n const [typingMembers, setTypingMembers] = useState([]);\n\n useEffect(() => {\n if (sb && sb.ChannelHandler) {\n sb.removeChannelHandler(handlerId);\n const newHandlerId = uuidv4();\n const handler = new sb.ChannelHandler();\n // there is a possible warning in here - setState called after unmount\n handler.onTypingStatusUpdated = (groupChannel) => {\n logger.info('Channel > Typing Indicator: onTypingStatusUpdated', groupChannel);\n const members = groupChannel.getTypingMembers();\n if (groupChannel.url === channelUrl) {\n setTypingMembers(members);\n }\n };\n sb.addChannelHandler(newHandlerId, handler);\n setHandlerId(newHandlerId);\n }\n\n return () => {\n setTypingMembers([]);\n if (sb && sb.removeChannelHandler) {\n sb.removeChannelHandler(handlerId);\n }\n };\n }, [channelUrl]);\n\n return (\n \n \n \n );\n}\n\nTypingIndicator.propTypes = {\n channelUrl: PropTypes.string.isRequired,\n sb: PropTypes.shape({\n ChannelHandler: PropTypes.func,\n removeChannelHandler: PropTypes.func,\n addChannelHandler: PropTypes.func,\n }).isRequired,\n logger: PropTypes.shape({\n info: PropTypes.func,\n }).isRequired,\n};\n\nexport default TypingIndicator;\n","// Logic required to handle message input rendering\n\nimport React, { useContext } from 'react';\nimport Sendbird from 'sendbird';\n\nimport { RenderMessageInputProps } from '../../../index';\nimport * as utils from '../utils.js';\n\nimport MessageInput from '../../../ui/MessageInput';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n channel: Sendbird.GroupChannel;\n user: Sendbird.User;\n isOnline: boolean;\n initialized: boolean;\n onSendMessage(): void;\n onFileUpload(): void;\n renderMessageInput(renderProps: RenderMessageInputProps): JSX.Element;\n}\n\nconst MessageInputWrapper = ({\n channel,\n user,\n onSendMessage,\n onFileUpload,\n renderMessageInput,\n isOnline,\n initialized,\n}: Props, ref: React.RefObject): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n const disabled = !initialized\n || utils.isDisabledBecauseFrozen(channel)\n || utils.isDisabledBecauseMuted(channel)\n || !isOnline;\n\n const isOperator = utils.isOperator(channel);\n const { isBroadcast } = channel;\n\n // custom message\n if (renderMessageInput) {\n return renderMessageInput({ channel, user, disabled });\n }\n\n // broadcast channel + not operator\n if (isBroadcast && !isOperator) {\n return null;\n }\n\n // other conditions\n return (\n {\n channel.startTyping();\n }}\n onSendMessage={onSendMessage}\n onFileUpload={onFileUpload}\n />\n );\n}\n\nexport default React.forwardRef(MessageInputWrapper);\n","import React, { useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, {\n LabelTypography,\n LabelColors,\n} from '../Label';\nimport Icon, { IconTypes, IconColors } from '../Icon';\n\nimport './index.scss';\n\nfunction ConnectionStatus() {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n { stringSet.TRYING_TO_CONNECT }\n \n \n
\n );\n}\n\nexport default ConnectionStatus;\n","import formatDistanceToNowStrict from 'date-fns/formatDistanceToNowStrict';\nimport { LabelStringSet } from '../Label';\n\nexport const prettyDate = (date) => formatDistanceToNowStrict(date, { addSuffix: true });\n\nexport const getOthersLastSeenAt = (channel) => {\n if (!channel || !channel.getReadStatus || !channel.members || channel.members.length !== 2) {\n return '';\n }\n const lastSeenList = [...Object.values(channel.getReadStatus())];\n const lastSeenAt = lastSeenList.length > 0\n ? lastSeenList[0].last_seen_at\n : 0;\n if (lastSeenAt === 0) {\n return '';\n }\n return prettyDate(lastSeenAt);\n};\n\nexport const getChannelTitle = (channel = {}, currentUserId, stringSet = LabelStringSet) => {\n if (!channel || (!channel.name && !channel.members)) {\n return stringSet.NO_TITLE;\n }\n if (channel.name && channel.name !== 'Group Channel') {\n return channel.name;\n }\n\n if (channel.members.length === 1) {\n return stringSet.NO_MEMBERS;\n }\n\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => (nickname || stringSet.NO_NAME))\n .join(', ');\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default function AutoRefresh({\n repeatFunc,\n}) {\n const [label, setLabel] = useState(repeatFunc());\n\n useEffect(() => {\n const interval = setInterval(() => {\n if (label !== repeatFunc()) {\n setLabel(repeatFunc());\n }\n }, 10000);\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return ({label}
);\n}\n\nAutoRefresh.propTypes = {\n repeatFunc: PropTypes.func.isRequired,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport AutoRefresh from '../AutoRefresh';\nimport ChannelAvatar from '../ChannelAvatar/index';\n\nexport default function ChatHeader(props) {\n const {\n currentGroupChannel,\n currentUser,\n title,\n subTitle,\n isActive,\n isMuted,\n onActionClick,\n theme,\n } = props;\n const { userId } = currentUser;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
\n
\n {title || utils.getChannelTitle(currentGroupChannel, userId, stringSet)}\n \n {\n (typeof isActive === 'string' && isActive === 'true') || (typeof isActive === 'boolean' && isActive)\n ?
\n : null\n }\n
\n {\n subTitle\n || utils.getOthersLastSeenAt(currentGroupChannel)} />\n }\n \n
\n
\n {\n (typeof isMuted === 'string' && isMuted === 'true') || (typeof isMuted === 'boolean' && isMuted)\n ? \n : null\n }\n \n \n \n
\n
\n );\n}\n\nChatHeader.propTypes = {\n currentGroupChannel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n coverUrl: PropTypes.string,\n }),\n theme: PropTypes.string,\n currentUser: PropTypes.shape({\n userId: PropTypes.string,\n }),\n title: PropTypes.string,\n subTitle: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n isActive: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n isMuted: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n onActionClick: PropTypes.func,\n};\n\nChatHeader.defaultProps = {\n currentGroupChannel: {},\n title: '',\n theme: 'light',\n subTitle: '',\n isActive: false,\n isMuted: false,\n currentUser: {},\n onActionClick: () => { },\n};\n","import React, {\n useEffect,\n useRef,\n useReducer,\n useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport * as messageActionTypes from './dux/actionTypes';\nimport messagesInitialState from './dux/initialState';\nimport messagesReducer from './dux/reducers';\n\nimport useHandleChannelEvents from './hooks/useHandleChannelEvents';\nimport useGetChannel from './hooks/useGetChannel';\nimport useInitialMessagesFetch from './hooks/useInitialMessagesFetch';\nimport useHandleReconnect from './hooks/useHandleReconnect';\nimport useScrollCallback from './hooks/useScrollCallback';\nimport useDeleteMessageCallback from './hooks/useDeleteMessageCallback';\nimport useUpdateMessageCallback from './hooks/useUpdateMessageCallback';\nimport useResendMessageCallback from './hooks/useResendMessageCallback';\nimport useSendMessageCallback from './hooks/useSendMessageCallback';\nimport useSendFileMessageCallback from './hooks/useSendFileMessageCallback';\nimport useSetReadStatus from './hooks/useSetReadStatus';\nimport useMemoizedEmojiListItems from './hooks/useMemoizedEmojiListItems';\nimport useToggleReactionCallback from './hooks/useToggleReactionCallback';\n\nimport ConversationScroll from './components/ConversationScroll';\nimport Notification from './components/Notification';\nimport FrozenNotification from './components/FrozenNotification';\nimport TypingIndicator from './components/TypingIndicator';\nimport MessageInputWrapper from './components/MessageInputWrapper';\nimport ConnectionStatus from '../../ui/ConnectionStatus';\nimport ChatHeader from '../../ui/ChatHeader';\nimport PlaceHolder, { PlaceHolderTypes } from '../../ui/PlaceHolder';\n\nconst noop = () => { };\n\nexport const ConversationPanel = (props) => {\n const {\n channelUrl,\n stores: { sdkStore, userStore },\n config: {\n userId,\n logger,\n pubSub,\n isOnline,\n theme,\n },\n dispatchers: {\n reconnect,\n },\n queries = {},\n useReaction,\n renderChatItem,\n renderChatHeader,\n renderCustomMessage,\n renderUserProfile,\n disableUserProfile,\n renderMessageInput,\n useMessageGrouping,\n onChatHeaderActionClick,\n onBeforeSendUserMessage,\n onBeforeSendFileMessage,\n onBeforeUpdateUserMessage,\n } = props;\n const { sdk } = sdkStore;\n const { config } = props;\n const sdkError = sdkStore.error;\n const sdkInit = sdkStore.initialized;\n const { user } = userStore;\n\n if (queries.messageListQuery) {\n // eslint-disable-next-line no-console\n console.warn('messageListQuery will be deprecared in v1.3.0, please use messageListParams instead');\n }\n\n const userFilledMessageListQuery = queries.messageListParams || queries.messageListQuery;\n\n const [messagesStore, messagesDispatcher] = useReducer(messagesReducer, messagesInitialState);\n const scrollRef = useRef(null);\n\n const {\n allMessages,\n loading,\n hasMore,\n initialized,\n unreadCount,\n unreadSince,\n isInvalid,\n currentGroupChannel = {},\n lastMessageTimeStamp,\n emojiContainer,\n readStatus,\n } = messagesStore;\n const { isFrozen, isBroadcast } = currentGroupChannel;\n const { appInfo = {} } = sdk;\n const usingReaction = (\n (appInfo.isUsingReaction && !isBroadcast) || useReaction || false\n );\n\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n const emojiAllMap = useMemo(() => (\n usingReaction\n ? utils.getAllEmojisMapFromEmojiContainer(emojiContainer)\n : new Map()\n ), [emojiContainer]);\n\n const emojiAllList = useMemo(() => (\n usingReaction\n ? utils.getAllEmojisFromEmojiContainer(emojiContainer)\n : []\n ), [emojiContainer]);\n\n const nicknamesMap = useMemo(() => (\n usingReaction\n ? utils.getNicknamesMapFromMembers(currentGroupChannel.members)\n : new Map()\n ), [currentGroupChannel.members]);\n\n const onScrollCallback = useScrollCallback({\n currentGroupChannel, lastMessageTimeStamp, userFilledMessageListQuery,\n }, {\n hasMore,\n logger,\n messagesDispatcher,\n sdk,\n });\n\n const toggleReaction = useToggleReactionCallback({ currentGroupChannel }, { logger });\n\n const memoizedEmojiListItems = useMemoizedEmojiListItems({\n emojiContainer, toggleReaction,\n }, {\n useReaction: usingReaction,\n logger,\n userId,\n emojiAllList,\n });\n\n // to create message-datasource\n useGetChannel(\n { channelUrl, sdkInit },\n { messagesDispatcher, sdk, logger },\n );\n\n // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher\n useHandleChannelEvents(\n { currentGroupChannel, sdkInit, userId },\n { messagesDispatcher, sdk, logger },\n );\n\n useInitialMessagesFetch({ currentGroupChannel, userFilledMessageListQuery }, {\n sdk,\n logger,\n messagesDispatcher,\n });\n\n // handles API calls from withSendbird\n useEffect(() => {\n const subScriber = utils.pubSubHandler(channelUrl, pubSub, messagesDispatcher);\n return () => {\n utils.pubSubHandleRemover(subScriber);\n };\n }, [channelUrl, sdkInit]);\n\n // to create initial read status\n useSetReadStatus(\n { allMessages, currentGroupChannel },\n { messagesDispatcher, sdk, logger },\n );\n\n // handling connection breaks\n useHandleReconnect({ isOnline }, {\n logger,\n sdk,\n currentGroupChannel,\n messagesDispatcher,\n userFilledMessageListQuery,\n });\n\n const deleteMessage = useDeleteMessageCallback({ currentGroupChannel, messagesDispatcher },\n { logger });\n const updateMessage = useUpdateMessageCallback(\n { currentGroupChannel, messagesDispatcher, onBeforeUpdateUserMessage },\n { logger, sdk, pubSub },\n );\n const resendMessage = useResendMessageCallback(\n { currentGroupChannel, messagesDispatcher },\n { logger },\n );\n const [messageInputRef, onSendMessage] = useSendMessageCallback(\n { currentGroupChannel, onBeforeSendUserMessage },\n {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n },\n );\n const [onSendFileMessage] = useSendFileMessageCallback(\n { currentGroupChannel, onBeforeSendFileMessage },\n {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n },\n );\n\n if (sdkError) {\n return (\n \n
{\n logger.info('Channel: reconnecting');\n reconnect();\n }}\n />\n \n );\n }\n if (!channelUrl) {\n return ();\n }\n if (loading) {\n return ();\n }\n if (isInvalid) {\n return ();\n }\n return (\n \n {\n renderChatHeader\n ? renderChatHeader({ channel: currentGroupChannel, user })\n : (\n \n )\n }\n {\n isFrozen && (\n \n )\n }\n {\n unreadCount > 0 && (\n {\n utils.scrollIntoLast('.sendbird-msg--scroll-ref');\n // there is no scroll\n if (scrollRef.current.scrollTop === 0) {\n currentGroupChannel.markAsRead();\n messagesDispatcher({\n type: messageActionTypes.MARK_AS_READ,\n });\n }\n }}\n time={unreadSince}\n />\n )\n }\n \n \n
\n
\n \n
\n {\n !isOnline && (\n
\n )\n }\n
\n \n );\n};\n\nConversationPanel.propTypes = {\n channelUrl: PropTypes.string,\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n initialized: PropTypes.bool,\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n removeChannelHandler: PropTypes.func,\n GroupChannel: PropTypes.any,\n ChannelHandler: PropTypes.any,\n addChannelHandler: PropTypes.func,\n UserMessageParams: PropTypes.any,\n FileMessageParams: PropTypes.any,\n getAllEmoji: PropTypes.func,\n appInfo: PropTypes.shape({}),\n }),\n error: PropTypes.bool,\n }),\n userStore: PropTypes.shape({\n user: PropTypes.shape({}),\n }),\n }).isRequired,\n dispatchers: PropTypes.shape({\n reconnect: PropTypes.func,\n }).isRequired,\n config: PropTypes.shape({\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n userId: PropTypes.string.isRequired,\n isOnline: PropTypes.bool.isRequired,\n theme: PropTypes.string,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }).isRequired,\n queries: PropTypes.shape({\n messageListParams: PropTypes.shape({\n includeMetaArray: PropTypes.bool,\n includeParentMessageText: PropTypes.bool,\n includeReaction: PropTypes.bool,\n includeReplies: PropTypes.bool,\n includeThreadInfo: PropTypes.bool,\n limit: PropTypes.number,\n reverse: PropTypes.bool,\n senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n // deprecate in v1.3\n messageListQuery: PropTypes.shape({\n includeMetaArray: PropTypes.bool,\n includeParentMessageText: PropTypes.bool,\n includeReaction: PropTypes.bool,\n includeReplies: PropTypes.bool,\n includeThreadInfo: PropTypes.bool,\n limit: PropTypes.number,\n reverse: PropTypes.bool,\n senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n onBeforeSendUserMessage: PropTypes.func, // onBeforeSendUserMessage(text)\n onBeforeSendFileMessage: PropTypes.func, // onBeforeSendFileMessage(File)\n onBeforeUpdateUserMessage: PropTypes.func,\n renderChatItem: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n renderCustomMessage: PropTypes.func,\n renderMessageInput: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n renderChatHeader: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n onChatHeaderActionClick: PropTypes.func,\n useReaction: PropTypes.bool,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n useMessageGrouping: PropTypes.bool,\n};\n\nConversationPanel.defaultProps = {\n channelUrl: null,\n queries: {},\n onBeforeSendUserMessage: null,\n onBeforeSendFileMessage: null,\n onBeforeUpdateUserMessage: null,\n renderChatItem: null,\n renderCustomMessage: null,\n renderMessageInput: null,\n renderChatHeader: null,\n useReaction: true,\n disableUserProfile: false,\n renderUserProfile: null,\n useMessageGrouping: true,\n onChatHeaderActionClick: noop,\n};\n\nexport const {\n getEmojiCategoriesFromEmojiContainer,\n getAllEmojisFromEmojiContainer,\n getEmojisFromEmojiContainer,\n} = utils;\n\nexport default withSendbirdContext(ConversationPanel);\n"],"names":["RESET_MESSAGES","RESET_STATE","CLEAR_SENT_MESSAGES","GET_PREV_MESSAGES_START","GET_PREV_MESSAGES_SUCESS","SEND_MESSAGEGE_START","SEND_MESSAGEGE_SUCESS","SEND_MESSAGEGE_FAILURE","RESEND_MESSAGEGE_START","ON_MESSAGE_RECEIVED","ON_MESSAGE_UPDATED","ON_MESSAGE_DELETED","ON_MESSAGE_DELETED_BY_REQ_ID","SET_CURRENT_CHANNEL","SET_CHANNEL_INVALID","MARK_AS_READ","ON_REACTION_UPDATED","SET_EMOJI_CONTAINER","SET_READ_STATUS","MessageTypes","ADMIN","USER","FILE","THUMBNAIL","OG","SendingMessageStatus","NONE","SUCCEEDED","FAILED","PENDING","getMessageType","message","isUserMessage","messageType","ogMetaData","isAdminMessage","isFileMessage","isImage","type","isVideo","UNDEFINED","scrollIntoLast","selector","intialTry","MAX_TRIES","currentTry","nodes","document","querySelectorAll","last","length","scrollIntoView","error","setTimeout","pubSubHandleRemover","subscriber","forEach","s","remove","pubSubHandler","channelUrl","pubSub","dispatcher","Map","subscribe","set","topics","msg","channel","url","channelActions","payload","fromSelector","messageId","getParsedStatus","currentGroupChannel","requestState","MessageStatusType","SENT","unreadCount","getReadReceipt","READ","isDelivered","getDeliveryReceipt","DELIVERED","isOperator","groupChannel","myRole","isDisabledBecauseFrozen","isFrozen","isDisabledBecauseMuted","myMutedState","getEmojiCategoriesFromEmojiContainer","emojiContainer","emojiCategories","getAllEmojisFromEmojiContainer","allEmojis","categoryIndex","emojis","emojiIndex","push","getEmojisFromEmojiContainer","emojiCategoryId","filter","emojiCategory","id","getAllEmojisMapFromEmojiContainer","allEmojisMap","key","getNicknamesMapFromMembers","members","nicknamesMap","memberIndex","userId","nickname","getMessageCreatedAt","format","createdAt","isSameGroup","comparingMessage","sender","sendingStatus","compareMessagesForGrouping","prevMessage","currMessage","nextMessage","passUnsuccessfullMessages","allMessages","newMessage","lastIndexOfSucceededMessage","map","lastIndexOf","messages","splice","initialized","loading","hasMore","lastMessageTimeStamp","readStatus","unreadSince","isInvalid","reducer","state","action","actionTypes","initialState","m","receivedMessages","stateChannel","stateChannelUrl","actionChannelUrl","filteredAllMessages","find","compareIds","newMessages","reqId","sort","a","b","failed","currentGroupChannelUrl","indexOf","Date","applyReactionEvent","useHandleChannelEvents","sdkInit","messagesDispatcher","sdk","logger","useEffect","messageReceiverId","uuidv4","ChannelHandler","info","onMessageReceived","messageActions","onMessageUpdated","onMessageDeleted","_","onReactionUpdated","reactionEvent","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onUserMuted","onUserUnmuted","onUserBanned","onOperatorUpdated","addChannelHandler","removeChannelHandler","useSetChannel","GroupChannel","getChannel","then","messageActionTypes","markAsRead","catch","e","warning","getAllEmoji","emojiContainer_","err","useInitialMessagesFetch","userFilledMessageListQuery","MessageListParams","getMessagesByMessageId","messageListParams","prevResultSize","isInclusive","includeReplies","includeReaction","Object","keys","getMessagesByTimestamp","getTime","finally","utils","useHandleReconnect","isOnline","wasOffline","appInfo","useReaction","isUsingReaction","lastMessageTime","useScrollCallback","useCallback","cb","hasMoreMessages","lastMessageTs","useDeleteMessageCallback","deleteMessage","useUpdateMessageCallback","onBeforeUpdateUserMessage","text","createParamsDefault","txt","params","UserMessageParams","createCustomPrams","updateUserMessage","r","swapParams","getErrorFirstCallback","publish","useResendMessageCallback","failedMessage","file","isResendable","resendUserMessage","resendFileMessage","console","useSendMessageCallback","onBeforeSendUserMessage","messageInputRef","useRef","sendMessage","current","value","trim","pendingMsg","sendUserMessage","res","useSendFileMessageCallback","onBeforeSendFileMessage","file_","FileMessageParams","sendFileMessage","response","localUrl","URL","createObjectURL","useSetReadStatus","setReadStatus","allReadStatus","reduce","accumulator","handler","handleMessageStatus","c","onDeliveryReceiptUpdated","onReadReceiptUpdated","handlerId","ReactionButton","React","forwardRef","props","ref","children","width","height","onClick","selected","className","injectingClassName","Array","isArray","join","slice","propTypes","PropTypes","element","isRequired","func","bool","oneOfType","number","string","arrayOf","defaultProps","useMemoizedEmojiListItems","toggleReaction","emojiAllList","useMemo","parentRef","parentContainRef","closeDropdown","spaceFromTrigger","emoji","reactedReaction","reactions","reaction","isReacted","userIds","IconTypes","EMOJI_FAILED","useToggleReactionCallback","deleteReaction","addReaction","MessageStatus","status","label","LabelTypography","CAPTION_3","LabelColors","ONBACKGROUND_2","icon","SPINNER","IconColors","ERROR","objectOf","array","object","ReactionBadge","count","isAdd","unshift","ONBACKGROUND_1","CLASS_NAME","Tooltip","SPACE_FROM_TRIGGER","TooltipWrapper","hoverTooltip","useState","showHoverTooltip","setShowHoverTooltip","childrenRef","bottom","left","offsetWidth","EmojiReactions","emojiAllMap","membersMap","memoizedEmojiListItems","MemoizedEmojiListItems","imageWidth","imageHeight","emojiReactionAddRef","messageReactions","useContext","LocalizationContext","stringSet","emojiUrl","get","reactedUserCount","reactedByMe","nicknames","currentUserId","TOOLTIP__UNKOWN_USER","stringSetForMe","TOOLTIP__AND_YOU","TOOLTIP__YOU","size","toggleDropdown","ON_BACKGROUND_3","EMOJI_REACTIONS_ADD","y","shape","instanceOf","WORD_TYPOGRAPHY","BODY_1","EDITED_COLOR","useMemoizedMessageText","updatedAt","splitMessage","split","matchedMessage","word","MESSAGE_EDITED","MOUSE_ENTER","MOUSE_LEAVE","useMouseHover","setHover","handleMouseOver","handleMouseOut","addEventListener","removeEventListener","noop","GROUPING_PADDING","NORMAL_PADDING","Message","isByMe","resendMessage","disabled","showEdit","showRemove","chainTop","chainBottom","memoizedMessageText","OutgoingUserMessage","MemoizedMessageText","messageRef","parentRefReactions","parentRefMenus","isMessageSent","getIsSentFromStatus","mousehover","setMousehover","moreActive","setMoreActive","handleMoreIconClick","handleMoreIconBlur","paddingTop","paddingBottom","MORE","CONTENT_INVERSE","copyToClipboard","IncomingUserMessage","avatarRef","UserProfileContext","disableUserProfile","renderUserProfile","showReactionAddButton","showEmojiReactions","getSenderProfileUrl","user","close","CAPTION_2","getSenderName","AdminMessage","OUTGOING_THUMBNAIL_MESSAGE","INCOMING_THUMBNAIL_MESSAGE","ThumbnailMessage","OutgoingThumbnailMessage","menuRef","reactionAddRef","CONTEXT_MENU_DROPDOWN__RESEND","CONTEXT_MENU_DROPDOWN__DELETE","PLAY","backgroundImage","backgroundSize","backgroundRepeat","backgroundPosition","unSupported","UNKNOWN__UNKNOWN_MESSAGE_TYPE","IncomingThumbnailMessage","MAX_TRUNCATE_LENGTH","GROUPAING_PADDING","checkFileType","fileUrl","result","imageFile","audioFile","test","FILE_DOCUMENT","FILE_AUDIO","OutgoingFileMessage","openFileUrl","window","open","reactionAddButtonRef","truncate","IncomingFileMessage","MessageSwitch","RemoveMessage","onCloseModal","onDeleteMessage","MODAL__DELETE_MESSAGE__TITLE","UnknownMessage","OutgoingUnknownMessage","UNKNOWN__CANNOT_READ_MESSAGE","IncomingUnknownMessage","profileUrl","NO_NAME","URL_REG","OG_MESSAGE","OUTGOING_OG_MESSAGE","INCOMING_OG_MESSAGE","createUrlTester","regexp","clipboardData","setData","queryCommandSupported","textarea","createElement","textContent","style","position","body","appendChild","select","execCommand","ex","removeChild","friendName","checkOGIsEnalbed","WORD_COLOR","isUrl","NORAML_PADDING","OGMessageSwitch","openLink","OutgoingOGMessage","defaultImage","CONTEXT_MENU_DROPDOWN__COPY","CONTEXT_MENU_DROPDOWN__EDIT","alt","NO_THUMBNAIL","title","SUBTITLE_2","description","BODY_2","event","stopPropagation","IncomingOGMessage","errorCode","MessageHoc","editDisabled","hasSeperator","updateMessage","renderCustomMessage","setShowEdit","setShowRemove","showFileViewer","setShowFileViewer","editMessageInputRef","RenderedMessage","FileMessage","OGMessage","RemoveMessageModal","isDateSeperator","ConversationScroll","scrollRef","onScroll","target","scrollTop","clientHeight","scrollHeight","first","renderChatItem","useMessageGrouping","idx","previousMessage","previousMessageCreatedAt","currentCreatedAt","isSameDay","onUpdateMessage","onResendMessage","MessageHOC","Component","Notification","time","timeArray","CHANNEL__MESSAGE_LIST__NOTIFICATION__ON","ONCONTENT_1","CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE","SHEVRON_DOWN","CONTENT","FrozenNotification","CHANNEL_FROZEN","TypingIndicatorText","TYPING_INDICATOR__IS_TYPING","TYPING_INDICATOR__AND","TYPING_INDICATOR__ARE_TYPING","TYPING_INDICATOR__MULTIPLE_TYPING","TypingIndicator","sb","setHandlerId","typingMembers","setTypingMembers","newHandlerId","onTypingStatusUpdated","getTypingMembers","MessageInputWrapper","_a","onSendMessage","onFileUpload","renderMessageInput","isBroadcast","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED","startTyping","ConnectionStatus","TRYING_TO_CONNECT","DISCONNECTED","prettyDate","date","formatDistanceToNowStrict","addSuffix","getOthersLastSeenAt","getReadStatus","lastSeenList","values","lastSeenAt","last_seen_at","getChannelTitle","LabelStringSet","name","NO_TITLE","NO_MEMBERS","AutoRefresh","repeatFunc","setLabel","interval","setInterval","clearInterval","ChatHeader","currentUser","subTitle","isActive","isMuted","onActionClick","theme","H_2","MUTE","INFO","PRIMARY","coverUrl","ConversationPanel","stores","sdkStore","userStore","config","reconnect","dispatchers","queries","renderChatHeader","onChatHeaderActionClick","sdkError","messageListQuery","warn","useReducer","messagesReducer","messagesInitialState","messagesStore","usingReaction","userDefinedDisableUserProfile","userDefinedRenderProfile","onScrollCallback","useGetChannel","subScriber","onSendFileMessage","PlaceHolderTypes","WRONG","NO_CHANNELS","LOADING","any","includeMetaArray","includeParentMessageText","includeThreadInfo","limit","reverse","senderUserIdsFilter","withSendbirdContext"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/ChannelList.js b/dist/esm/ChannelList.js
new file mode 100644
index 0000000..ee675ac
--- /dev/null
+++ b/dist/esm/ChannelList.js
@@ -0,0 +1,1493 @@
+import { a as _objectSpread2, c as _toConsumableArray, e as LocalizationContext, w as withSendbirdContext, b as _slicedToArray, u as uuidv4 } from './LocalizationContext-619bafba.js';
+import React, { useContext, useRef, useState, useEffect, useReducer } from 'react';
+import PropTypes from 'prop-types';
+import { U as UPDATE_USER_INFO } from './actionTypes-a85c0eaa.js';
+import { L as LabelStringSet, I as Icon, a as IconTypes, b as Label, c as LabelTypography, d as LabelColors, e as IconButton, A as Avatar, M as Modal, T as Type, f as TextButton, g as IconColors, C as ContextMenu, h as MenuItems, i as MenuItem, P as PlaceHolder, j as CREATE_CHANNEL$1, U as UPDATE_USER_MESSAGE, k as LEAVE_CHANNEL, S as SEND_MESSAGE_START, l as UserProfileProvider, m as PlaceHolderTypes } from './index-ec3bf9fe.js';
+import { n as noop$1 } from './utils-53ba1773.js';
+import { C as ChannelAvatar } from './index-aebda3d2.js';
+import { B as Badge, i as isBroadcastChannelEnabled, a as isSuperGroupChannelEnabled, I as InviteMembers, c as createDefaultUserListQuery, b as createChannel, L as LeaveChannelModal } from './LeaveChannel-da8b5d0b.js';
+import isToday from 'date-fns/isToday';
+import format from 'date-fns/format';
+import isYesterday from 'date-fns/isYesterday';
+import './type-0296584d.js';
+import { t as truncate } from './utils-cfdeb084.js';
+import 'react-dom';
+import { I as InputLabel, a as Input } from './index-aa89d60a.js';
+
+var RESET_CHANNEL_LIST = 'RESET_CHANNEL_LIST';
+var CREATE_CHANNEL = 'CREATE_CHANNEL';
+var LEAVE_CHANNEL_SUCCESS = 'LEAVE_CHANNEL_SUCCESS';
+var SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';
+var SHOW_CHANNEL_SETTINGS = 'SHOW_CHANNEL_SETTINGS';
+var HIDE_CHANNEL_SETTINGS = 'HIDE_CHANNEL_SETTINGS';
+var FETCH_CHANNELS_START = 'FETCH_CHANNELS_START';
+var FETCH_CHANNELS_SUCCESS = 'FETCH_CHANNELS_SUCCESS';
+var FETCH_CHANNELS_FAILURE = 'FETCH_CHANNELS_FAILURE';
+var INIT_CHANNELS_START = 'INIT_CHANNELS_START';
+var INIT_CHANNELS_SUCCESS = 'INIT_CHANNELS_SUCCESS';
+var INIT_CHANNELS_FAILURE = 'INIT_CHANNELS_FAILURE';
+var ON_USER_JOINED = 'ON_USER_JOINED';
+var ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';
+var ON_LAST_MESSAGE_UPDATED = 'ON_LAST_MESSAGE_UPDATED';
+var ON_USER_LEFT = 'ON_USER_LEFT';
+var ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';
+var ON_CHANNEL_ARCHIVED = 'ON_CHANNEL_ARCHIVED';
+var ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';
+var ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';
+var ON_READ_RECEIPT_UPDATED = 'ON_READ_RECEIPT_UPDATED';
+var ON_DELIVERY_RECEIPT_UPDATED = 'ON_DELIVERY_RECEIPT_UPDATED';
+var CHANNEL_REPLACED_TO_TOP = 'CHANNEL_REPLACED_TO_TOP';
+
+var channelListInitialState = {
+ // we might not need this initialized state -> should remove
+ initialized: false,
+ loading: false,
+ allChannels: [],
+ currentChannel: null,
+ showSettings: false
+};
+
+function reducer(state, action) {
+ switch (action.type) {
+ case INIT_CHANNELS_START:
+ return _objectSpread2({}, state, {
+ loading: true
+ });
+
+ case RESET_CHANNEL_LIST:
+ return channelListInitialState;
+
+ case INIT_CHANNELS_SUCCESS:
+ return _objectSpread2({}, state, {
+ initialized: true,
+ loading: false,
+ allChannels: action.payload,
+ currentChannel: action.payload && action.payload.length && action.payload.length > 0 ? action.payload[0].url : null
+ });
+
+ case FETCH_CHANNELS_SUCCESS:
+ {
+ var currentChannels = state.allChannels.map(function (c) {
+ return c.url;
+ });
+ var filteredChannels = action.payload.filter(function (_ref) {
+ var url = _ref.url;
+ return !currentChannels.find(function (c) {
+ return c === url;
+ });
+ });
+ return _objectSpread2({}, state, {
+ allChannels: [].concat(_toConsumableArray(state.allChannels), _toConsumableArray(filteredChannels))
+ });
+ }
+
+ case CREATE_CHANNEL:
+ {
+ return _objectSpread2({}, state, {
+ allChannels: [action.payload].concat(_toConsumableArray(state.allChannels.filter(function (channel) {
+ return channel.url !== action.payload.url;
+ }))),
+ currentChannel: action.payload.url
+ });
+ }
+
+ case ON_CHANNEL_ARCHIVED:
+ case LEAVE_CHANNEL_SUCCESS:
+ case ON_CHANNEL_DELETED:
+ {
+ var channelUrl = action.payload;
+ var leftCurrentChannel = state.currentChannel === channelUrl;
+ var newAllChannels = state.allChannels.filter(function (_ref2) {
+ var url = _ref2.url;
+ return url !== channelUrl;
+ });
+ var currentChannel = leftCurrentChannel ? function () {
+ return newAllChannels.length > 0 ? newAllChannels[0].url : '';
+ }() : state.currentChannel;
+ return _objectSpread2({}, state, {
+ currentChannel: currentChannel,
+ allChannels: newAllChannels
+ });
+ }
+
+ case ON_USER_LEFT:
+ {
+ var _action$payload = action.payload,
+ channel = _action$payload.channel,
+ isMe = _action$payload.isMe;
+ var url = channel.url;
+
+ if (isMe) {
+ var _leftCurrentChannel = url === state.currentChannel;
+
+ var _newAllChannels2 = state.allChannels.filter(function (c) {
+ return c.url !== url;
+ });
+
+ var _currentChannel = _leftCurrentChannel ? function () {
+ return _newAllChannels2.length > 0 ? _newAllChannels2[0].url : '';
+ }() : state.currentChannel;
+
+ return _objectSpread2({}, state, {
+ currentChannel: _currentChannel,
+ allChannels: _newAllChannels2
+ });
+ } // other user left
+
+
+ var _newAllChannels = state.allChannels.map(function (c) {
+ return c.url === url ? channel : c;
+ });
+
+ return _objectSpread2({}, state, {
+ allChannels: _newAllChannels
+ });
+ }
+
+ case ON_USER_JOINED:
+ case ON_CHANNEL_CHANGED:
+ case ON_READ_RECEIPT_UPDATED:
+ case ON_DELIVERY_RECEIPT_UPDATED:
+ {
+ var _state$allChannels = state.allChannels,
+ allChannels = _state$allChannels === void 0 ? [] : _state$allChannels;
+ var unreadMessageCount = action.payload.unreadMessageCount;
+ var _channel = action.payload;
+
+ if (!_channel.lastMessage) {
+ return state;
+ } // if its only an unread message count change, dont push to top
+
+
+ if (unreadMessageCount === 0) {
+ var _currentChannel2 = allChannels.find(function (_ref3) {
+ var url = _ref3.url;
+ return url === _channel.url;
+ });
+
+ var currentUnReadCount = _currentChannel2 && _currentChannel2.unreadMessageCount;
+
+ if (currentUnReadCount === 0) {
+ return _objectSpread2({}, state, {
+ allChannels: allChannels.map(function (c) {
+ if (c.url === _channel.url) {
+ return _channel;
+ }
+
+ return c;
+ })
+ });
+ }
+ }
+
+ return _objectSpread2({}, state, {
+ allChannels: [action.payload].concat(_toConsumableArray(state.allChannels.filter(function (_ref4) {
+ var url = _ref4.url;
+ return url !== action.payload.url;
+ })))
+ });
+ }
+
+ case SET_CURRENT_CHANNEL:
+ return _objectSpread2({}, state, {
+ currentChannel: action.payload
+ });
+
+ case SHOW_CHANNEL_SETTINGS:
+ return _objectSpread2({}, state, {
+ showSettings: true
+ });
+
+ case HIDE_CHANNEL_SETTINGS:
+ return _objectSpread2({}, state, {
+ showSettings: false
+ });
+
+ case ON_LAST_MESSAGE_UPDATED:
+ return _objectSpread2({}, state, {
+ allChannels: state.allChannels.map(function (channel) {
+ if (channel.url === action.payload.url) {
+ return action.payload;
+ }
+
+ return channel;
+ })
+ });
+
+ case ON_CHANNEL_FROZEN:
+ return _objectSpread2({}, state, {
+ allChannels: state.allChannels.map(function (channel) {
+ if (channel.url === action.payload.url) {
+ // eslint-disable-next-line no-param-reassign
+ channel.isFrozen = true;
+ return channel;
+ }
+
+ return channel;
+ })
+ });
+
+ case ON_CHANNEL_UNFROZEN:
+ return _objectSpread2({}, state, {
+ allChannels: state.allChannels.map(function (channel) {
+ if (channel.url === action.payload.url) {
+ // eslint-disable-next-line no-param-reassign
+ channel.isFrozen = false;
+ return channel;
+ }
+
+ return channel;
+ })
+ });
+
+ case CHANNEL_REPLACED_TO_TOP:
+ return _objectSpread2({}, state, {
+ allChannels: [action.payload].concat(_toConsumableArray(state.allChannels.filter(function (channel) {
+ return channel.url !== action.payload.url;
+ })))
+ });
+
+ default:
+ return state;
+ }
+}
+
+var getChannelTitle = function getChannelTitle() {
+ var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var currentUserId = arguments.length > 1 ? arguments[1] : undefined;
+ var stringSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : LabelStringSet;
+
+ if (!channel || !channel.name && !channel.members) {
+ return stringSet.NO_TITLE;
+ }
+
+ if (channel.name && channel.name !== 'Group Channel') {
+ return channel.name;
+ }
+
+ if (channel.members.length === 1) {
+ return stringSet.NO_MEMBERS;
+ }
+
+ return channel.members.filter(function (_ref) {
+ var userId = _ref.userId;
+ return userId !== currentUserId;
+ }).map(function (_ref2) {
+ var nickname = _ref2.nickname;
+ return nickname || stringSet.NO_NAME;
+ }).join(', ');
+};
+var getLastMessageCreatedAt = function getLastMessageCreatedAt(channel) {
+ if (!channel || !channel.lastMessage) {
+ return '';
+ }
+
+ var date = channel.lastMessage.createdAt;
+
+ if (isToday(date)) {
+ return format(date, 'p');
+ }
+
+ if (isYesterday(date)) {
+ return 'Yesterday';
+ }
+
+ return format(date, 'MMM dd');
+};
+var getTotalMembers = function getTotalMembers(channel) {
+ return channel && channel.memberCount ? channel.memberCount : 0;
+};
+
+var getPrettyLastMessage = function getPrettyLastMessage() {
+ var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var MAXLEN = 30;
+ var messageType = message.messageType,
+ name = message.name;
+
+ if (messageType === 'file') {
+ return truncate(name, MAXLEN);
+ }
+
+ return message.message;
+};
+
+var getLastMessage = function getLastMessage(channel) {
+ return channel && channel.lastMessage ? getPrettyLastMessage(channel.lastMessage) : '';
+};
+var getChannelUnreadMessageCount = function getChannelUnreadMessageCount(channel) {
+ return channel && channel.unreadMessageCount ? channel.unreadMessageCount : 0;
+};
+
+function ChannelPreview(_ref) {
+ var channel = _ref.channel,
+ isActive = _ref.isActive,
+ ChannelAction = _ref.ChannelAction,
+ theme = _ref.theme,
+ onClick = _ref.onClick,
+ tabIndex = _ref.tabIndex,
+ currentUser = _ref.currentUser;
+ var userId = currentUser.userId;
+ var isBroadcast = channel.isBroadcast,
+ isFrozen = channel.isFrozen;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.createElement("div", {
+ role: "link",
+ tabIndex: tabIndex,
+ onClick: onClick,
+ onKeyPress: onClick,
+ className: "\n sendbird-channel-preview\n ".concat(isActive ? 'sendbird-channel-preview--active' : null, "\n ")
+ }, React.createElement("div", {
+ className: "sendbird-channel-preview__avatar"
+ }, React.createElement(ChannelAvatar, {
+ channel: channel,
+ userId: userId,
+ theme: theme
+ })), React.createElement("div", {
+ className: "sendbird-channel-preview__content"
+ }, React.createElement("div", {
+ className: "sendbird-channel-preview__content__upper"
+ }, React.createElement("div", {
+ className: "sendbird-channel-preview__content__upper__header"
+ }, isBroadcast && React.createElement("div", {
+ className: "sendbird-channel-preview__broadcast-icon"
+ }, React.createElement(Icon, {
+ type: theme === 'dark' ? IconTypes.BROADCAST_DARK : IconTypes.BROADCAST_LIGHT,
+ height: 12,
+ width: 12
+ })), React.createElement(Label, {
+ className: "sendbird-channel-preview__content__upper__header__channel-name",
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, getChannelTitle(channel, userId, stringSet)), React.createElement(Label, {
+ className: "sendbird-channel-preview__content__upper__header__total-members",
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, getTotalMembers(channel)), isFrozen && React.createElement("div", {
+ title: "Frozen",
+ className: "sendbird-channel-preview__frozen-icon"
+ }, React.createElement(Icon, {
+ type: theme === 'dark' ? IconTypes.FROZEN_DARK : IconTypes.FROZEN_LIGHT,
+ height: 12,
+ width: 12
+ }))), React.createElement(Label, {
+ className: "sendbird-channel-preview__content__upper__last-message-at",
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2
+ }, getLastMessageCreatedAt(channel))), React.createElement("div", {
+ className: "sendbird-channel-preview__content__lower"
+ }, React.createElement(Label, {
+ className: "sendbird-channel-preview__content__lower__last-message",
+ type: LabelTypography.BODY_2,
+ color: LabelColors.ONBACKGROUND_3
+ }, getLastMessage(channel)), React.createElement("div", {
+ className: "sendbird-channel-preview__content__lower__unread-message-count"
+ }, getChannelUnreadMessageCount(channel) ? React.createElement(Badge, {
+ count: getChannelUnreadMessageCount(channel)
+ }) : null))), React.createElement("div", {
+ className: "sendbird-channel-preview__action"
+ }, ChannelAction));
+}
+ChannelPreview.propTypes = {
+ isActive: PropTypes.bool,
+ theme: PropTypes.string,
+ channel: PropTypes.shape({
+ members: PropTypes.arrayOf(PropTypes.shape({})),
+ coverUrl: PropTypes.string,
+ isBroadcast: PropTypes.bool,
+ isFrozen: PropTypes.bool
+ }),
+ ChannelAction: PropTypes.element.isRequired,
+ onClick: PropTypes.func,
+ tabIndex: PropTypes.number,
+ currentUser: PropTypes.shape({
+ userId: PropTypes.string
+ })
+};
+ChannelPreview.defaultProps = {
+ channel: {},
+ isActive: false,
+ theme: 'light',
+ onClick: function onClick() {},
+ tabIndex: 0,
+ currentUser: {}
+};
+
+function ChannelHeader(_ref) {
+ var user = _ref.user,
+ iconButton = _ref.iconButton,
+ onEdit = _ref.onEdit,
+ renderHeader = _ref.renderHeader,
+ allowProfileEdit = _ref.allowProfileEdit;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.createElement("div", {
+ className: "\n ".concat(allowProfileEdit && 'sendbird-channel-header--allow-edit', "\n sendbird-channel-header\n ")
+ }, renderHeader ? renderHeader() : React.createElement("div", {
+ className: "sendbird-channel-header__title",
+ role: "button",
+ onKeyDown: onEdit,
+ onClick: onEdit,
+ tabIndex: "0"
+ }, React.createElement("div", {
+ className: "sendbird-channel-header__title--left"
+ }, React.createElement(Avatar, {
+ height: "32px",
+ width: "32px",
+ src: user.profileUrl,
+ alt: user.nickname
+ })), React.createElement("div", {
+ className: "sendbird-channel-header__title--right"
+ }, React.createElement(Label, {
+ className: "sendbird-channel-header__title--name",
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, user.nickname || stringSet.NO_NAME), React.createElement(Label, {
+ className: "sendbird-channel-header__title--user-id",
+ type: LabelTypography.BODY_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, user.userId))), React.createElement("div", {
+ className: "sendbird-channel-header__right-icon"
+ }, iconButton));
+}
+ChannelHeader.propTypes = {
+ user: PropTypes.shape({
+ profileUrl: PropTypes.string,
+ nickname: PropTypes.string,
+ userId: PropTypes.string
+ }),
+ renderHeader: PropTypes.func,
+ allowProfileEdit: PropTypes.bool,
+ onEdit: PropTypes.func.isRequired,
+ iconButton: PropTypes.oneOfType([PropTypes.element, PropTypes.instanceOf(IconButton)])
+};
+ChannelHeader.defaultProps = {
+ user: {},
+ renderHeader: null,
+ allowProfileEdit: false,
+ iconButton: null
+};
+
+function EditUserProfile(_a) {
+ var user = _a.user,
+ onCancel = _a.onCancel,
+ _onSubmit = _a.onSubmit,
+ _b = _a.onThemeChange,
+ onThemeChange = _b === void 0 ? null : _b,
+ _c = _a.theme,
+ theme = _c === void 0 ? 'light' : _c,
+ _d = _a.changeTheme,
+ changeTheme = _d === void 0 ? noop$1 : _d;
+ var hiddenInputRef = useRef(null);
+ var inputRef = useRef(null);
+ var formRef = useRef(null);
+ var stringSet = useContext(LocalizationContext).stringSet;
+
+ var _e = useState(null),
+ currentImg = _e[0],
+ setCurrentImg = _e[1];
+
+ var _f = useState(null),
+ newFile = _f[0],
+ setNewFile = _f[1];
+
+ return React.createElement(Modal, {
+ titleText: stringSet.EDIT_PROFILE__TITLE,
+ submitText: stringSet.BUTTON__SAVE,
+ onCancel: onCancel,
+ onSubmit: function onSubmit() {
+ if (user.nickname !== '' && !inputRef.current.value) {
+ if (formRef.current.reportValidity) {
+ // might not work in explorer
+ formRef.current.reportValidity();
+ }
+
+ return;
+ }
+
+ _onSubmit(inputRef.current.value, newFile);
+
+ onCancel();
+ },
+ type: Type.PRIMARY
+ }, React.createElement("form", {
+ className: "sendbird__edit-user-profile",
+ ref: formRef,
+ onSubmit: function onSubmit(e) {
+ e.preventDefault();
+ }
+ }, React.createElement("section", {
+ className: "sendbird__edit-user-profile__img"
+ }, React.createElement(InputLabel, null, stringSet.EDIT_PROFILE__IMAGE_LABEL), React.createElement("div", {
+ className: "sendbird__edit-user__avatar"
+ }, React.createElement(Avatar, {
+ height: "80px",
+ width: "80px",
+ src: currentImg || user.profileUrl
+ })), React.createElement("input", {
+ ref: hiddenInputRef,
+ type: "file",
+ accept: "image/gif, image/jpeg, image/png",
+ style: {
+ display: 'none'
+ },
+ onChange: function onChange(e) {
+ setCurrentImg(URL.createObjectURL(e.target.files[0]));
+ setNewFile(e.target.files[0]);
+ hiddenInputRef.current.value = '';
+ }
+ }), React.createElement(TextButton, {
+ className: "sendbird__edit-user__avatar-button",
+ onClick: function onClick() {
+ return hiddenInputRef.current.click();
+ },
+ notUnderline: true
+ }, React.createElement(Label, {
+ type: LabelTypography.BUTTON_1,
+ color: LabelColors.PRIMARY
+ }, stringSet.EDIT_PROFILE__IMAGE_UPLOAD))), React.createElement("section", {
+ className: "sendbird__edit-user__name"
+ }, React.createElement(InputLabel, null, stringSet.EDIT_PROFILE__NICKNAME_LABEL), React.createElement(Input, {
+ required: user.nickname !== '',
+ name: "sendbird__edit-user__name",
+ ref: inputRef,
+ value: user.nickname,
+ placeHolder: stringSet.EDIT_PROFILE__NICKNAME_PLACEHOLDER
+ })), React.createElement("section", {
+ className: "sendbird__edit-user__userid"
+ }, React.createElement(InputLabel, null, stringSet.EDIT_PROFILE__USERID_LABEL), React.createElement(Input, {
+ disabled: true,
+ name: "sendbird__edit-user__userid",
+ value: user.userId
+ })), React.createElement("section", {
+ className: "sendbird__edit-user__theme"
+ }, React.createElement(InputLabel, null, stringSet.EDIT_PROFILE__THEME_LABEL), React.createElement("div", {
+ className: "sendbird__edit-user__theme-icon"
+ }, theme === 'dark' ? React.createElement(Icon, {
+ onClick: function onClick() {
+ changeTheme('light');
+
+ if (onThemeChange && typeof onThemeChange === 'function') {
+ onThemeChange('light');
+ }
+ },
+ type: IconTypes.TOGGLE_ON,
+ width: 44,
+ height: 24
+ }) : React.createElement(Icon, {
+ onClick: function onClick() {
+ changeTheme('dark');
+
+ if (onThemeChange && typeof onThemeChange === 'function') {
+ onThemeChange('dark');
+ }
+ },
+ type: IconTypes.TOGGLE_OFF,
+ width: 44,
+ height: 24
+ })))));
+}
+
+var mapStoreToProps = function mapStoreToProps(store) {
+ return {
+ theme: store.config.theme,
+ changeTheme: store.config.setCurrenttheme
+ };
+};
+
+var ConnectedEditUserProfile = withSendbirdContext(EditUserProfile, mapStoreToProps);
+
+function AddChannel(_ref) {
+ var sdk = _ref.sdk,
+ disabled = _ref.disabled,
+ channelListDispatcher = _ref.channelListDispatcher,
+ onBeforeCreateChannel = _ref.onBeforeCreateChannel,
+ userId = _ref.userId,
+ userFilledApplicationUserListQuery = _ref.userFilledApplicationUserListQuery,
+ userListQuery = _ref.userListQuery;
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ showModal = _useState2[0],
+ setShowModal = _useState2[1];
+
+ var _useState3 = useState(0),
+ _useState4 = _slicedToArray(_useState3, 2),
+ step = _useState4[0],
+ setStep = _useState4[1];
+
+ var _useState5 = useState('group'),
+ _useState6 = _slicedToArray(_useState5, 2),
+ type = _useState6[0],
+ setType = _useState6[1];
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ if (!sdk || !sdk.createApplicationUserListQuery) {
+ return null;
+ }
+
+ var isBroadcastAvailable = isBroadcastChannelEnabled(sdk);
+ var isSupergroupAvailable = isSuperGroupChannelEnabled(sdk);
+ return React.createElement(React.Fragment, null, React.createElement(IconButton, {
+ height: "32px",
+ width: "32px",
+ onClick: function onClick() {
+ setShowModal(true);
+ },
+ disabled: disabled
+ }, React.createElement(Icon, {
+ type: IconTypes.CREATE,
+ fillColor: IconColors.PRIMARY,
+ width: "24px",
+ height: "24px"
+ })), showModal && step === 0 && React.createElement(Modal, {
+ titleText: "New channel",
+ hideFooter: true,
+ onCancel: function onCancel() {
+ setShowModal(false);
+ },
+ onSubmit: function onSubmit() {}
+ }, React.createElement("div", {
+ className: "sendbird-add-channel__rectangle-wrap"
+ }, React.createElement("div", {
+ className: "sendbird-add-channel__rectangle",
+ onClick: function onClick() {
+ setType('group');
+ setStep(1);
+ },
+ role: "button",
+ tabIndex: 0,
+ onKeyDown: function onKeyDown() {
+ setType('group');
+ setStep(1);
+ }
+ }, React.createElement(Icon, {
+ type: IconTypes.CHAT
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, "Group")), isSupergroupAvailable && React.createElement("div", {
+ className: "sendbird-add-channel__rectangle",
+ onClick: function onClick() {
+ setType('supergroup');
+ setStep(1);
+ },
+ role: "button",
+ tabIndex: 0,
+ onKeyDown: function onKeyDown() {
+ setType('supergroup');
+ setStep(1);
+ }
+ }, React.createElement(Icon, {
+ type: IconTypes.SUPER_GROUP
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, "Super group")), isBroadcastAvailable && React.createElement("div", {
+ className: "sendbird-add-channel__rectangle",
+ onClick: function onClick() {
+ setType('broadcast');
+ setStep(1);
+ },
+ role: "button",
+ tabIndex: 0,
+ onKeyDown: function onKeyDown() {
+ setType('broadcast');
+ setStep(1);
+ }
+ }, React.createElement(Icon, {
+ type: IconTypes.BROADCAST
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, "Broadcast")))), showModal && step === 1 && React.createElement(InviteMembers, {
+ swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
+ titleText: stringSet.MODAL__CREATE_CHANNEL__TITLE,
+ submitText: stringSet.BUTTON__CREATE,
+ closeModal: function closeModal() {
+ setStep(0);
+ setShowModal(false);
+ },
+ idsToFilter: [userId],
+ userQueryCreator: function userQueryCreator() {
+ return userListQuery && typeof userListQuery === 'function' ? userListQuery() : createDefaultUserListQuery({
+ sdk: sdk,
+ userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
+ });
+ },
+ onSubmit: function onSubmit(selectedUsers) {
+ return createChannel(sdk, selectedUsers, onBeforeCreateChannel, userId, type).then(function (channel) {
+ // maybe - do this in event listener
+ channelListDispatcher({
+ type: CREATE_CHANNEL,
+ payload: channel
+ });
+ });
+ }
+ }));
+}
+AddChannel.propTypes = {
+ sdk: PropTypes.shape({
+ getErrorFirstCallback: PropTypes.func,
+ createApplicationUserListQuery: PropTypes.func
+ }).isRequired,
+ disabled: PropTypes.bool,
+ channelListDispatcher: PropTypes.func.isRequired,
+ userFilledApplicationUserListQuery: PropTypes.shape({}),
+ onBeforeCreateChannel: PropTypes.func,
+ userId: PropTypes.string.isRequired,
+ userListQuery: PropTypes.func
+};
+AddChannel.defaultProps = {
+ disabled: false,
+ userFilledApplicationUserListQuery: {},
+ onBeforeCreateChannel: null,
+ userListQuery: null
+};
+
+function ChannelPreviewAction(_ref) {
+ var disabled = _ref.disabled,
+ onLeaveChannel = _ref.onLeaveChannel;
+ var parentRef = useRef(null);
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ showModal = _useState2[0],
+ setShowModal = _useState2[1];
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.createElement("div", {
+ role: "button",
+ style: {
+ display: 'inline-block'
+ },
+ onKeyDown: function onKeyDown(e) {
+ e.stopPropagation();
+ },
+ tabIndex: 0,
+ onClick: function onClick(e) {
+ e.stopPropagation();
+ }
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ ref: parentRef,
+ onClick: toggleDropdown,
+ height: "32px",
+ width: "32px"
+ }, React.createElement(Icon, {
+ type: IconTypes.MORE,
+ fillColor: IconColors.PRIMARY,
+ width: "24px",
+ height: "24px"
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: parentRef,
+ parentContainRef: parentRef,
+ closeDropdown: closeDropdown
+ }, React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ setShowModal(true);
+ closeDropdown();
+ }
+ }, stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE));
+ }
+ }), showModal && React.createElement(LeaveChannelModal, {
+ onCloseModal: function onCloseModal() {
+ return setShowModal(false);
+ },
+ onLeaveChannel: onLeaveChannel
+ }));
+}
+ChannelPreviewAction.propTypes = {
+ disabled: PropTypes.bool,
+ onLeaveChannel: PropTypes.func.isRequired
+};
+ChannelPreviewAction.defaultProps = {
+ disabled: false
+};
+
+function ChannelsPlaceholder(_ref) {
+ var type = _ref.type;
+ return React.createElement("div", {
+ className: "sendbird-channel-list"
+ }, React.createElement(PlaceHolder, {
+ type: type
+ }));
+}
+ChannelsPlaceholder.propTypes = {
+ type: PropTypes.string.isRequired
+};
+
+var createEventHandler = function createEventHandler(_ref) {
+ var sdk = _ref.sdk,
+ sdkChannelHandlerId = _ref.sdkChannelHandlerId,
+ channelListDispatcher = _ref.channelListDispatcher,
+ logger = _ref.logger;
+ var ChannelHandler = new sdk.ChannelHandler();
+
+ ChannelHandler.onChannelChanged = function (channel) {
+ logger.info('ChannelList: onChannelChanged', channel);
+ channelListDispatcher({
+ type: ON_CHANNEL_CHANGED,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onChannelDeleted = function (channelUrl) {
+ logger.info('ChannelList: onChannelDeleted', channelUrl);
+ channelListDispatcher({
+ type: ON_CHANNEL_DELETED,
+ payload: channelUrl
+ });
+ };
+
+ ChannelHandler.onUserJoined = function (channel) {
+ logger.info('ChannelList: onUserJoined', channel);
+
+ if (channel.lastMessage) {
+ channelListDispatcher({
+ type: ON_USER_JOINED,
+ payload: channel
+ });
+ }
+ };
+
+ ChannelHandler.onUserBanned = function (channel, user) {
+ var currentUser = sdk.currentUser;
+ logger.info('Channel | useHandleChannelEvents: onUserBanned', channel);
+
+ if (user.userId === currentUser.userId) {
+ channelListDispatcher({
+ type: ON_USER_LEFT,
+ payload: {
+ channel: channel,
+ isMe: true
+ }
+ });
+ } else {
+ channelListDispatcher({
+ type: ON_USER_LEFT,
+ payload: {
+ channel: channel,
+ isMe: false
+ }
+ });
+ }
+ };
+
+ ChannelHandler.onUserLeft = function (channel, leftUser) {
+ var currentUser = sdk.currentUser;
+ var isMe = currentUser.userId === leftUser.userId;
+ logger.info('ChannelList: onUserLeft', channel);
+ channelListDispatcher({
+ type: ON_USER_LEFT,
+ payload: {
+ channel: channel,
+ isMe: isMe
+ }
+ });
+ };
+
+ ChannelHandler.onReadStatus = function (channel) {
+ logger.info('ChannelList: onReadStatus', channel);
+ channelListDispatcher({
+ type: ON_READ_RECEIPT_UPDATED,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onDeliveryReceiptUpdated = function (channel) {
+ logger.info('ChannelList: onDeliveryReceiptUpdated', channel);
+
+ if (channel.lastMessage) {
+ channelListDispatcher({
+ type: ON_DELIVERY_RECEIPT_UPDATED,
+ payload: channel
+ });
+ }
+ };
+
+ ChannelHandler.onMessageUpdated = function (channel, message) {
+ if (channel.lastMessage.isEqual(message)) {
+ logger.info('ChannelList: onMessageUpdated', channel);
+ channelListDispatcher({
+ type: ON_LAST_MESSAGE_UPDATED,
+ payload: channel
+ });
+ }
+ };
+
+ ChannelHandler.onChannelHidden = function (channel) {
+ logger.info('ChannelList: onChannelHidden', channel);
+ channelListDispatcher({
+ type: ON_CHANNEL_ARCHIVED,
+ payload: channel.url
+ });
+ };
+
+ ChannelHandler.onChannelFrozen = function (channel) {
+ logger.info('ChannelList: onChannelFrozen', channel);
+ channelListDispatcher({
+ type: ON_CHANNEL_FROZEN,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onChannelUnfrozen = function (channel) {
+ logger.info('ChannelList: onChannelUnfrozen', channel);
+ channelListDispatcher({
+ type: ON_CHANNEL_UNFROZEN,
+ payload: channel
+ });
+ };
+
+ logger.info('ChannelList: Added channelHandler');
+ sdk.addChannelHandler(sdkChannelHandlerId, ChannelHandler);
+};
+
+var createApplicationUserListQuery = function createApplicationUserListQuery(_ref2) {
+ var sdk = _ref2.sdk,
+ _ref2$userFilledChann = _ref2.userFilledChannelListQuery,
+ userFilledChannelListQuery = _ref2$userFilledChann === void 0 ? {} : _ref2$userFilledChann;
+ var channelListQuery = sdk.GroupChannel.createMyGroupChannelListQuery();
+ channelListQuery.includeEmpty = false;
+ channelListQuery.order = 'latest_last_message'; // 'chronological', 'latest_last_message', 'channel_name_alphabetical', and 'metadata_value_alphabetical'
+
+ channelListQuery.limit = 20; // The value of pagination limit could be set up to 100.
+
+ if (userFilledChannelListQuery) {
+ Object.keys(userFilledChannelListQuery).forEach(function (key) {
+ channelListQuery[key] = userFilledChannelListQuery[key];
+ });
+ }
+
+ return channelListQuery;
+};
+/**
+ * Setup event listener
+ * create channel source query
+ * addloading screen
+ */
+
+
+function setupChannelList(_ref3) {
+ var sdk = _ref3.sdk,
+ sdkChannelHandlerId = _ref3.sdkChannelHandlerId,
+ channelListDispatcher = _ref3.channelListDispatcher,
+ setChannelSource = _ref3.setChannelSource,
+ onChannelSelect = _ref3.onChannelSelect,
+ userFilledChannelListQuery = _ref3.userFilledChannelListQuery,
+ logger = _ref3.logger,
+ sortChannelList = _ref3.sortChannelList;
+ createEventHandler({
+ sdk: sdk,
+ channelListDispatcher: channelListDispatcher,
+ sdkChannelHandlerId: sdkChannelHandlerId,
+ logger: logger
+ });
+ logger.info('ChannelList - creating query', {
+ userFilledChannelListQuery: userFilledChannelListQuery
+ });
+ var channelListQuery = createApplicationUserListQuery({
+ sdk: sdk,
+ userFilledChannelListQuery: userFilledChannelListQuery
+ });
+ logger.info('ChannelList - created query', channelListQuery);
+ setChannelSource(channelListQuery);
+ channelListDispatcher({
+ type: INIT_CHANNELS_START
+ });
+ logger.info('ChannelList - fetching channels');
+
+ if (channelListQuery.hasNext) {
+ channelListQuery.next(function (response, error) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var channelList = response;
+ var err = error;
+
+ if (swapParams) {
+ channelList = error;
+ err = response;
+ }
+
+ logger.info('ChannelList - fetched channels', channelList);
+
+ if (err) {
+ logger.error('ChannelList - couldnt fetch channels', err);
+ channelListDispatcher({
+ type: INIT_CHANNELS_FAILURE
+ });
+ return;
+ } // select first channel
+
+
+ logger.info('ChannelList - highlight channel', channelList[0]);
+ var sorted = channelList;
+
+ if (sortChannelList && typeof sortChannelList === 'function') {
+ sorted = sortChannelList(channelList);
+ logger.info('ChannelList - channel list sorted', sorted);
+ }
+
+ onChannelSelect(sorted[0]);
+ channelListDispatcher({
+ type: INIT_CHANNELS_SUCCESS,
+ payload: sorted
+ });
+
+ if (channelList && typeof channelList.forEach === 'function') {
+ logger.info('ChannelList - mark all channels as delivered');
+ channelList.forEach(function (c) {
+ return c.markAsDelivered();
+ });
+ }
+ });
+ } else {
+ logger.warning('ChannelList - there are no more channels');
+ }
+}
+
+var pubSubHandleRemover = function pubSubHandleRemover(subscriber) {
+ subscriber.forEach(function (s) {
+ try {
+ s.remove();
+ } catch (_unused) {//
+ }
+ });
+};
+var pubSubHandler = function pubSubHandler(pubSub, channelListDispatcher) {
+ var subScriber = new Map();
+ if (!pubSub) return subScriber;
+ subScriber.set(CREATE_CHANNEL$1, pubSub.subscribe(CREATE_CHANNEL$1, function (msg) {
+ var channel = msg.channel;
+ channelListDispatcher({
+ type: 'CREATE_CHANNEL',
+ payload: channel
+ });
+ }));
+ subScriber.set(UPDATE_USER_MESSAGE, pubSub.subscribe(UPDATE_USER_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+ var updatedChannel = channel;
+ updatedChannel.lastMessage = message;
+
+ if (channel) {
+ channelListDispatcher({
+ type: ON_LAST_MESSAGE_UPDATED,
+ payload: updatedChannel
+ });
+ }
+ }));
+ subScriber.set(LEAVE_CHANNEL, pubSub.subscribe(LEAVE_CHANNEL, function (msg) {
+ var channel = msg.channel;
+ channelListDispatcher({
+ type: LEAVE_CHANNEL_SUCCESS,
+ payload: channel.url
+ });
+ }));
+ subScriber.set(SEND_MESSAGE_START, pubSub.subscribe(SEND_MESSAGE_START, function (msg) {
+ var channel = msg.channel;
+ channelListDispatcher({
+ type: CHANNEL_REPLACED_TO_TOP,
+ payload: channel
+ });
+ }));
+ return subScriber;
+};
+
+var noop = function noop() {};
+
+function ChannelList(props) {
+ var _props$stores = props.stores,
+ _props$stores$sdkStor = _props$stores.sdkStore,
+ sdkStore = _props$stores$sdkStor === void 0 ? {} : _props$stores$sdkStor,
+ _props$stores$userSto = _props$stores.userStore,
+ userStore = _props$stores$userSto === void 0 ? {} : _props$stores$userSto,
+ _props$config = props.config,
+ userId = _props$config.userId,
+ isOnline = _props$config.isOnline,
+ userListQuery = _props$config.userListQuery,
+ logger = _props$config.logger,
+ pubSub = _props$config.pubSub,
+ theme = _props$config.theme,
+ userDispatcher = props.dispatchers.userDispatcher,
+ _props$queries = props.queries,
+ queries = _props$queries === void 0 ? {} : _props$queries,
+ renderChannelPreview = props.renderChannelPreview,
+ renderHeader = props.renderHeader,
+ renderUserProfile = props.renderUserProfile,
+ disableUserProfile = props.disableUserProfile,
+ allowProfileEdit = props.allowProfileEdit,
+ sortChannelList = props.sortChannelList,
+ onProfileEditSuccess = props.onProfileEditSuccess,
+ onThemeChange = props.onThemeChange,
+ onBeforeCreateChannel = props.onBeforeCreateChannel,
+ onChannelSelect = props.onChannelSelect;
+ var _props$config2 = props.config,
+ config = _props$config2 === void 0 ? {} : _props$config2; // enable if it is true atleast once(both are flase by default)
+
+ var enableEditProfile = allowProfileEdit || config.allowProfileEdit;
+ var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
+ var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
+ var _sdkStore$sdk = sdkStore.sdk,
+ sdk = _sdkStore$sdk === void 0 ? {} : _sdkStore$sdk;
+ var userFilledChannelListQuery = queries.channelListQuery;
+ var userFilledApplicationUserListQuery = queries.applicationUserListQuery;
+ var sdkError = sdkStore.error;
+
+ var _useState = useState({}),
+ _useState2 = _slicedToArray(_useState, 2),
+ user = _useState2[0],
+ setUser = _useState2[1];
+
+ useEffect(function () {
+ setUser(userStore.user);
+ }, [userStore.user]);
+ var sdkIntialized = sdkStore.initialized;
+
+ var _useReducer = useReducer(reducer, channelListInitialState),
+ _useReducer2 = _slicedToArray(_useReducer, 2),
+ channelListStore = _useReducer2[0],
+ channelListDispatcher = _useReducer2[1];
+
+ var _useState3 = useState({}),
+ _useState4 = _slicedToArray(_useState3, 2),
+ channelSource = _useState4[0],
+ setChannelSource = _useState4[1];
+
+ var _useState5 = useState(null),
+ _useState6 = _slicedToArray(_useState5, 2),
+ sdkChannelHandlerId = _useState6[0],
+ setSdkChannelHandlerId = _useState6[1];
+
+ var _useState7 = useState(false),
+ _useState8 = _slicedToArray(_useState7, 2),
+ showProfileEdit = _useState8[0],
+ setShowProfileEdit = _useState8[1];
+
+ var loading = channelListStore.loading,
+ currentChannel = channelListStore.currentChannel;
+ useEffect(function () {
+ var subscriber = pubSubHandler(pubSub, channelListDispatcher);
+ return function () {
+ pubSubHandleRemover(subscriber);
+ };
+ }, [sdkIntialized]);
+ useEffect(function () {
+ setSdkChannelHandlerId(uuidv4);
+
+ if (sdkIntialized) {
+ logger.info('ChannelList: Setup channelHandlers');
+ setupChannelList({
+ sdk: sdk,
+ sdkChannelHandlerId: sdkChannelHandlerId,
+ channelListDispatcher: channelListDispatcher,
+ setChannelSource: setChannelSource,
+ onChannelSelect: onChannelSelect,
+ userFilledChannelListQuery: userFilledChannelListQuery,
+ logger: logger,
+ sortChannelList: sortChannelList
+ });
+ } else {
+ logger.info('ChannelList: Removing channelHandlers'); // remove previous channelHandlers
+
+ if (sdk && sdk.removeChannelHandler) {
+ sdk.removeChannelHandler(sdkChannelHandlerId);
+ } // remove channelSource
+
+
+ setChannelSource({}); // cleanup
+
+ channelListDispatcher({
+ type: RESET_CHANNEL_LIST
+ });
+ }
+
+ return function () {
+ logger.info('ChannelList: Removing channelHandlers');
+
+ if (sdk && sdk.removeChannelHandler) {
+ sdk.removeChannelHandler(sdkChannelHandlerId);
+ }
+ };
+ }, [sdkIntialized, userFilledChannelListQuery, sortChannelList]);
+ var allChannels = channelListStore.allChannels;
+ var sortedChannels = sortChannelList && typeof sortChannelList === 'function' ? sortChannelList(allChannels) : allChannels;
+
+ if (sortedChannels.length !== allChannels.length) {
+ var warning = "ChannelList: You have removed/added extra channels on sortChannelList\n this could cause unexpected problems"; // eslint-disable-next-line no-console
+
+ console.warn(warning, {
+ before: allChannels,
+ after: sortedChannels
+ });
+ logger.warning(warning, {
+ before: allChannels,
+ after: sortedChannels
+ });
+ }
+
+ useEffect(function () {
+ if (!sdk || !sdk.GroupChannel) {
+ return;
+ }
+
+ sdk.GroupChannel.getChannel(currentChannel, function (groupChannel) {
+ if (groupChannel) {
+ onChannelSelect(groupChannel);
+ } else {
+ onChannelSelect(null);
+ }
+ });
+ }, [currentChannel]);
+ return React.createElement(UserProfileProvider, {
+ disableUserProfile: userDefinedDisableUserProfile,
+ renderUserProfile: userDefinedRenderProfile,
+ className: "sendbird-channel-list"
+ }, React.createElement("div", {
+ className: "sendbird-channel-list__header"
+ }, React.createElement(ChannelHeader, {
+ renderHeader: renderHeader,
+ user: user,
+ onEdit: function onEdit() {
+ if (enableEditProfile) {
+ setShowProfileEdit(true);
+ }
+ },
+ allowProfileEdit: enableEditProfile,
+ iconButton: React.createElement(AddChannel, {
+ disabled: !isOnline,
+ userListQuery: userListQuery,
+ sdk: sdk,
+ channelListDispatcher: channelListDispatcher,
+ userId: userId,
+ userFilledApplicationUserListQuery: userFilledApplicationUserListQuery,
+ onBeforeCreateChannel: onBeforeCreateChannel
+ })
+ })), showProfileEdit && React.createElement(ConnectedEditUserProfile, {
+ onThemeChange: onThemeChange,
+ user: user,
+ onCancel: function onCancel() {
+ setShowProfileEdit(false);
+ },
+ onSubmit: function onSubmit(newName, newFile) {
+ sdk.updateCurrentUserInfoWithProfileImage(newName, newFile, function (updatedUser) {
+ userDispatcher({
+ type: UPDATE_USER_INFO,
+ payload: updatedUser
+ });
+
+ if (onProfileEditSuccess && typeof onProfileEditSuccess === 'function') {
+ onProfileEditSuccess(updatedUser);
+ }
+ });
+ }
+ }), React.createElement("div", {
+ className: "sendbird-channel-list__body",
+ onScroll: function onScroll(e) {
+ var fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;
+
+ if (fetchMore && channelSource.hasNext) {
+ logger.info('ChannelList: Fetching more channels');
+ channelListDispatcher({
+ type: FETCH_CHANNELS_START
+ });
+ channelSource.next(function (response, error) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var channelList = response;
+ var err = error;
+
+ if (swapParams) {
+ channelList = error;
+ err = response;
+ }
+
+ if (err) {
+ logger.info('ChannelList: Fetching channels failed', err);
+ channelListDispatcher({
+ type: FETCH_CHANNELS_FAILURE,
+ payload: channelList
+ });
+ return;
+ }
+
+ logger.info('ChannelList: Fetching channels successful', channelList);
+ channelListDispatcher({
+ type: FETCH_CHANNELS_SUCCESS,
+ payload: channelList
+ });
+
+ if (channelList && typeof channelList.forEach === 'function') {
+ logger.info('ChannelList: Marking all channels as read');
+ channelList.forEach(function (c) {
+ return c.markAsDelivered();
+ });
+ }
+ });
+ }
+ }
+ }, sdkError && React.createElement(ChannelsPlaceholder, {
+ type: PlaceHolderTypes.WRONG
+ }), React.createElement("div", null, sortedChannels && sortedChannels.map(function (channel, idx) {
+ var _onLeaveChannel = function onLeaveChannel(c, cb) {
+ logger.info('ChannelList: Leaving channel', c);
+ c.leave().then(function (res) {
+ logger.info('ChannelList: Leaving channel success', res);
+
+ if (cb && typeof cb === 'function') {
+ cb(res, null);
+ }
+
+ channelListDispatcher({
+ type: LEAVE_CHANNEL_SUCCESS,
+ payload: channel.url
+ });
+ }).catch(function (err) {
+ logger.error('ChannelList: Leaving channel failed', err);
+
+ if (cb && typeof cb === 'function') {
+ cb(null, err);
+ }
+ });
+ };
+
+ var onClick = function onClick() {
+ if (!isOnline) {
+ return;
+ }
+
+ logger.info('ChannelList: Clicked on channel:', channel);
+ channelListDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: channel.url
+ });
+ };
+
+ return renderChannelPreview ? // eslint-disable-next-line
+ React.createElement("div", {
+ key: channel.url,
+ onClick: onClick
+ }, renderChannelPreview({
+ channel: channel,
+ onLeaveChannel: _onLeaveChannel
+ })) : React.createElement(ChannelPreview, {
+ key: channel.url,
+ tabIndex: idx,
+ onClick: onClick,
+ channel: channel,
+ currentUser: user,
+ theme: theme,
+ isActive: channel.url === currentChannel // todo - potential performance hit refactor
+ ,
+ ChannelAction: React.createElement(ChannelPreviewAction, {
+ disabled: !isOnline,
+ onLeaveChannel: function onLeaveChannel() {
+ return _onLeaveChannel(channel);
+ }
+ })
+ });
+ })), (!sdkIntialized || loading) && React.createElement(ChannelsPlaceholder, {
+ type: PlaceHolderTypes.LOADING
+ }), // placeholder
+ (!allChannels || allChannels.length === 0) && React.createElement(ChannelsPlaceholder, {
+ type: PlaceHolderTypes.NO_CHANNELS
+ })));
+}
+
+ChannelList.propTypes = {
+ stores: PropTypes.shape({
+ sdkStore: PropTypes.shape({
+ initialized: PropTypes.bool
+ }),
+ userStore: PropTypes.shape({
+ user: PropTypes.shape({})
+ })
+ }).isRequired,
+ dispatchers: PropTypes.shape({
+ userDispatcher: PropTypes.func
+ }).isRequired,
+ config: PropTypes.shape({
+ userId: PropTypes.string.isRequired,
+ userListQuery: PropTypes.func,
+ theme: PropTypes.string,
+ isOnline: PropTypes.bool,
+ logger: PropTypes.shape({
+ info: PropTypes.func,
+ error: PropTypes.func,
+ warning: PropTypes.func
+ }),
+ pubSub: PropTypes.shape({
+ subscribe: PropTypes.func,
+ publish: PropTypes.func
+ })
+ }).isRequired,
+ queries: PropTypes.shape({
+ channelListQuery: PropTypes.shape({
+ channelNameContainsFilter: PropTypes.string,
+ channelUrlsFilter: PropTypes.arrayOf(PropTypes.string),
+ customTypesFilter: PropTypes.arrayOf(PropTypes.string),
+ customTypeStartsWithFilter: PropTypes.string,
+ hiddenChannelFilter: PropTypes.string,
+ includeEmpty: PropTypes.bool,
+ limit: PropTypes.number,
+ memberStateFilter: PropTypes.string,
+ metadataOrderKeyFilter: PropTypes.string,
+ nicknameContainsFilter: PropTypes.string,
+ order: PropTypes.string,
+ publicChannelFilter: PropTypes.string,
+ superChannelFilter: PropTypes.string,
+ unreadChannelFilter: PropTypes.string,
+ userIdsExactFilter: PropTypes.arrayOf(PropTypes.string),
+ userIdsIncludeFilter: PropTypes.arrayOf(PropTypes.string),
+ userIdsIncludeFilterQueryType: PropTypes.string
+ }),
+ applicationUserListQuery: PropTypes.shape({
+ limit: PropTypes.number,
+ userIdsFilter: PropTypes.arrayOf(PropTypes.string),
+ metaDataKeyFilter: PropTypes.string,
+ metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string)
+ })
+ }),
+ onBeforeCreateChannel: PropTypes.func,
+ renderChannelPreview: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ allowProfileEdit: PropTypes.bool,
+ sortChannelList: PropTypes.func,
+ onThemeChange: PropTypes.func,
+ onProfileEditSuccess: PropTypes.func,
+ renderHeader: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ onChannelSelect: PropTypes.func
+};
+ChannelList.defaultProps = {
+ onBeforeCreateChannel: null,
+ renderChannelPreview: null,
+ renderHeader: null,
+ disableUserProfile: false,
+ renderUserProfile: null,
+ allowProfileEdit: false,
+ onThemeChange: null,
+ sortChannelList: null,
+ onProfileEditSuccess: null,
+ queries: {},
+ onChannelSelect: noop
+};
+var ChannelList$1 = withSendbirdContext(ChannelList);
+
+export default ChannelList$1;
+//# sourceMappingURL=ChannelList.js.map
diff --git a/dist/esm/ChannelList.js.map b/dist/esm/ChannelList.js.map
new file mode 100644
index 0000000..7561b27
--- /dev/null
+++ b/dist/esm/ChannelList.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ChannelList.js","sources":["../../../src/smart-components/ChannelList/dux/actionTypes.js","../../../src/smart-components/ChannelList/dux/initialState.js","../../../src/smart-components/ChannelList/dux/reducers.js","../../../src/ui/ChannelPreview/utils.js","../../../src/ui/ChannelPreview/index.jsx","../../../src/ui/ChannelHeader/index.jsx","../../../src/ui/EditUserProfile/index.tsx","../../../src/smart-components/ChannelList/components/AddChannel.jsx","../../../src/smart-components/ChannelList/components/ChannelPreviewAction.jsx","../../../src/smart-components/ChannelList/components/Placeholder.jsx","../../../src/smart-components/ChannelList/utils.js","../../../src/smart-components/ChannelList/index.jsx"],"sourcesContent":["export const RESET_CHANNEL_LIST = 'RESET_CHANNEL_LIST';\nexport const CREATE_CHANNEL = 'CREATE_CHANNEL';\nexport const UNLOAD_CHANNELS = 'UNLOAD_CHANNELS';\nexport const SET_CHANNEL_LOADING = 'SET_CHANNEL_LOADING';\nexport const LEAVE_CHANNEL_SUCCESS = 'LEAVE_CHANNEL_SUCCESS';\n\nexport const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\n\nexport const SHOW_CHANNEL_SETTINGS = 'SHOW_CHANNEL_SETTINGS';\nexport const HIDE_CHANNEL_SETTINGS = 'HIDE_CHANNEL_SETTINGS';\n\nexport const FETCH_CHANNELS_START = 'FETCH_CHANNELS_START';\nexport const FETCH_CHANNELS_SUCCESS = 'FETCH_CHANNELS_SUCCESS';\nexport const FETCH_CHANNELS_FAILURE = 'FETCH_CHANNELS_FAILURE';\n\nexport const INIT_CHANNELS_START = 'INIT_CHANNELS_START';\nexport const INIT_CHANNELS_SUCCESS = 'INIT_CHANNELS_SUCCESS';\nexport const INIT_CHANNELS_FAILURE = 'INIT_CHANNELS_FAILURE';\n\nexport const INVITE_MEMBERS_SUCESS = 'INVITE_MEMBERS_SUCESS';\n\nexport const ON_USER_JOINED = 'ON_USER_JOINED';\nexport const ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';\nexport const ON_LAST_MESSAGE_UPDATED = 'ON_LAST_MESSAGE_UPDATED';\nexport const ON_USER_LEFT = 'ON_USER_LEFT';\nexport const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';\nexport const ON_CHANNEL_ARCHIVED = 'ON_CHANNEL_ARCHIVED';\nexport const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';\nexport const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';\n\nexport const ON_READ_RECEIPT_UPDATED = 'ON_READ_RECEIPT_UPDATED';\nexport const ON_DELIVERY_RECEIPT_UPDATED = 'ON_DELIVERY_RECEIPT_UPDATED';\n\nexport const CHANNEL_REPLACED_TO_TOP = 'CHANNEL_REPLACED_TO_TOP';\n","export default {\n // we might not need this initialized state -> should remove\n initialized: false,\n loading: false,\n allChannels: [],\n currentChannel: null,\n showSettings: false,\n};\n","import * as actions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actions.INIT_CHANNELS_START:\n return {\n ...state,\n loading: true,\n };\n case actions.RESET_CHANNEL_LIST:\n return initialState;\n case actions.INIT_CHANNELS_SUCCESS:\n return {\n ...state,\n initialized: true,\n loading: false,\n allChannels: action.payload,\n currentChannel: (action.payload && action.payload.length && action.payload.length > 0)\n ? action.payload[0].url\n : null,\n };\n case actions.FETCH_CHANNELS_SUCCESS: {\n const currentChannels = state.allChannels.map((c) => c.url);\n const filteredChannels = action.payload.filter(\n ({ url }) => !(currentChannels.find((c) => c === url)),\n );\n return {\n ...state,\n allChannels: [\n ...state.allChannels,\n ...filteredChannels,\n ],\n };\n }\n case actions.CREATE_CHANNEL: {\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter(\n (channel) => channel.url !== action.payload.url,\n )],\n currentChannel: action.payload.url,\n };\n }\n case actions.ON_CHANNEL_ARCHIVED:\n case actions.LEAVE_CHANNEL_SUCCESS:\n case actions.ON_CHANNEL_DELETED: {\n const channelUrl = action.payload;\n const leftCurrentChannel = (state.currentChannel === channelUrl);\n const newAllChannels = state.allChannels.filter(({ url }) => url !== channelUrl);\n const currentChannel = leftCurrentChannel\n ? (() => (\n (newAllChannels.length > 0)\n ? newAllChannels[0].url\n : ''\n ))()\n : state.currentChannel;\n\n return {\n ...state,\n currentChannel,\n allChannels: newAllChannels,\n };\n }\n case actions.ON_USER_LEFT: {\n const { channel, isMe } = action.payload;\n const { url } = channel;\n if (isMe) {\n const leftCurrentChannel = (url === state.currentChannel);\n const newAllChannels = state.allChannels.filter((c) => (c.url !== url));\n const currentChannel = leftCurrentChannel\n ? (() => (\n (newAllChannels.length > 0)\n ? newAllChannels[0].url\n : ''\n ))()\n : state.currentChannel;\n\n return {\n ...state,\n currentChannel,\n allChannels: newAllChannels,\n };\n }\n // other user left\n const newAllChannels = state.allChannels.map((c) => ((c.url === url) ? channel : c));\n return {\n ...state,\n allChannels: newAllChannels,\n };\n }\n case actions.ON_USER_JOINED:\n case actions.ON_CHANNEL_CHANGED:\n case actions.ON_READ_RECEIPT_UPDATED:\n case actions.ON_DELIVERY_RECEIPT_UPDATED: {\n const { allChannels = [] } = state;\n const { unreadMessageCount } = action.payload;\n const channel = action.payload;\n if (!channel.lastMessage) {\n return state;\n }\n // if its only an unread message count change, dont push to top\n if (unreadMessageCount === 0) {\n const currentChannel = allChannels.find(({ url }) => url === channel.url);\n const currentUnReadCount = currentChannel && currentChannel.unreadMessageCount;\n if (currentUnReadCount === 0) {\n return {\n ...state,\n allChannels: allChannels.map((c) => {\n if (c.url === channel.url) {\n return channel;\n }\n return c;\n }),\n };\n }\n }\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter(({ url }) => url !== action.payload.url),\n ],\n };\n }\n case actions.SET_CURRENT_CHANNEL:\n return {\n ...state,\n currentChannel: action.payload,\n };\n case actions.SHOW_CHANNEL_SETTINGS:\n return {\n ...state,\n showSettings: true,\n };\n case actions.HIDE_CHANNEL_SETTINGS:\n return {\n ...state,\n showSettings: false,\n };\n case actions.ON_LAST_MESSAGE_UPDATED:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n return action.payload;\n }\n return channel;\n }),\n };\n case actions.ON_CHANNEL_FROZEN:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n // eslint-disable-next-line no-param-reassign\n channel.isFrozen = true;\n return channel;\n }\n return channel;\n }),\n };\n case actions.ON_CHANNEL_UNFROZEN:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n // eslint-disable-next-line no-param-reassign\n channel.isFrozen = false;\n return channel;\n }\n return channel;\n }),\n };\n case actions.CHANNEL_REPLACED_TO_TOP:\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter((channel) => channel.url !== action.payload.url),\n ],\n };\n default:\n return state;\n }\n}\n","import isToday from 'date-fns/isToday';\nimport format from 'date-fns/format';\nimport isYesterday from 'date-fns/isYesterday';\n\nimport { truncate } from '../FileMessage/utils';\nimport { LabelStringSet } from '../Label';\n\nexport const getChannelTitle = (channel = {}, currentUserId, stringSet = LabelStringSet) => {\n if (!channel || (!channel.name && !channel.members)) {\n return stringSet.NO_TITLE;\n }\n if (channel.name && channel.name !== 'Group Channel') {\n return channel.name;\n }\n if (channel.members.length === 1) {\n return stringSet.NO_MEMBERS;\n }\n\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => (nickname || stringSet.NO_NAME))\n .join(', ');\n};\n\nexport const getLastMessageCreatedAt = (channel) => {\n if (!channel || !channel.lastMessage) {\n return '';\n }\n const date = channel.lastMessage.createdAt;\n if (isToday(date)) {\n return format(date, 'p');\n }\n\n if (isYesterday(date)) {\n return 'Yesterday';\n }\n\n return format(date, 'MMM dd');\n};\n\nexport const getTotalMembers = (channel) => (\n channel && channel.memberCount\n ? channel.memberCount\n : 0\n);\n\nconst getPrettyLastMessage = (message = {}) => {\n const MAXLEN = 30;\n const { messageType, name } = message;\n if (messageType === 'file') {\n return truncate(name, MAXLEN);\n }\n return message.message;\n};\n\nexport const getLastMessage = (channel) => (\n channel && channel.lastMessage\n ? getPrettyLastMessage(channel.lastMessage)\n : ''\n);\n\nexport const getChannelUnreadMessageCount = (channel) => (\n (channel && channel.unreadMessageCount)\n ? channel.unreadMessageCount\n : 0\n);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport ChannelAvatar from '../ChannelAvatar/index';\nimport Badge from '../Badge';\nimport Icon, { IconTypes } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport * as utils from './utils';\n\nexport default function ChannelPreview({\n channel,\n isActive,\n ChannelAction,\n theme,\n onClick,\n tabIndex,\n currentUser,\n}) {\n const {\n userId,\n } = currentUser;\n const { isBroadcast, isFrozen } = channel;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n \n
\n
\n
\n
\n {\n isBroadcast\n && (\n
\n \n
\n )\n }\n
\n {utils.getChannelTitle(channel, userId, stringSet)}\n \n
\n {utils.getTotalMembers(channel)}\n \n {\n isFrozen\n && (\n
\n \n
\n )\n }\n
\n
\n {utils.getLastMessageCreatedAt(channel)}\n \n
\n\n
\n
\n {utils.getLastMessage(channel)}\n \n
\n {\n utils.getChannelUnreadMessageCount(channel)\n ? \n : null\n }\n
\n
\n
\n
\n {ChannelAction}\n
\n
\n );\n}\n\nChannelPreview.propTypes = {\n isActive: PropTypes.bool,\n theme: PropTypes.string,\n channel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n coverUrl: PropTypes.string,\n isBroadcast: PropTypes.bool,\n isFrozen: PropTypes.bool,\n }),\n ChannelAction: PropTypes.element.isRequired,\n onClick: PropTypes.func,\n tabIndex: PropTypes.number,\n currentUser: PropTypes.shape({\n userId: PropTypes.string,\n }),\n};\n\nChannelPreview.defaultProps = {\n channel: {},\n isActive: false,\n theme: 'light',\n onClick: () => { },\n tabIndex: 0,\n currentUser: {},\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport IconButton from '../IconButton';\n\nimport './index.scss';\nimport Avatar from '../Avatar/index';\n\nexport default function ChannelHeader({\n user,\n iconButton,\n onEdit,\n renderHeader,\n allowProfileEdit,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n {\n renderHeader\n ? renderHeader()\n : (\n
\n
\n
\n \n {user.nickname || stringSet.NO_NAME}\n \n \n {user.userId}\n \n
\n
\n )\n }\n
\n {iconButton}\n
\n
\n );\n}\n\nChannelHeader.propTypes = {\n user: PropTypes.shape({\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n userId: PropTypes.string,\n }),\n renderHeader: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n onEdit: PropTypes.func.isRequired,\n iconButton: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.instanceOf(IconButton),\n ]),\n};\n\nChannelHeader.defaultProps = {\n user: {},\n renderHeader: null,\n allowProfileEdit: false,\n iconButton: null,\n};\n","import React, {\n ReactElement,\n useRef,\n useState,\n useContext,\n} from 'react';\nimport './index.scss';\n\nimport Modal from '../Modal';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport Input, { InputLabel } from '../Input';\nimport Avatar from '../Avatar';\nimport Icon, { IconTypes } from '../Icon';\nimport { Type as ButtonType } from '../Button/type';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport TextButton from '../TextButton';\nimport { SendbirdTypes } from '../../types';\nimport { noop } from '../../utils/utils';\n\ninterface Props {\n user: SendbirdTypes['User'];\n onCancel(): void;\n onSubmit(newFile: File, newNickname: string): void;\n onThemeChange?(theme: string): void;\n theme?: string;\n changeTheme?(theme: string): void;\n}\n\nexport function EditUserProfile({\n user,\n onCancel,\n onSubmit,\n onThemeChange = null,\n theme = 'light',\n changeTheme = noop,\n}: Props): ReactElement {\n const hiddenInputRef = useRef(null);\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n\n return (\n {\n if (user.nickname !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(inputRef.current.value, newFile);\n onCancel();\n }}\n type={ButtonType.PRIMARY}\n >\n { e.preventDefault(); }}\n >\n \n \n \n \n \n {stringSet.EDIT_PROFILE__THEME_LABEL}\n \n \n {\n theme === 'dark'\n ? (\n {\n changeTheme('light');\n if (onThemeChange && typeof onThemeChange === 'function') {\n onThemeChange('light');\n }\n }}\n type={IconTypes.TOGGLE_ON}\n width={44}\n height={24}\n />\n )\n : (\n {\n changeTheme('dark');\n if (onThemeChange && typeof onThemeChange === 'function') {\n onThemeChange('dark');\n }\n }}\n type={IconTypes.TOGGLE_OFF}\n width={44}\n height={24}\n />\n )\n }\n
\n \n \n \n );\n}\n\nconst mapStoreToProps = (store) => {\n return {\n theme: store.config.theme,\n changeTheme: store.config.setCurrenttheme,\n };\n};\n\ninterface ConnectedEditUserProfileProps {\n user: SendbirdTypes['User'];\n onCancel(): void;\n onSubmit(newFile: File, newNickname: string): void;\n onThemeChange?(theme: string): void;\n}\n\nconst ConnectedEditUserProfile: (\n props: ConnectedEditUserProfileProps\n) => React.Component = withSendbirdContext(EditUserProfile, mapStoreToProps);\n\nexport default ConnectedEditUserProfile;\n","import './add-channel.scss';\n\nimport React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport IconButton from '../../../ui/IconButton';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport InviteMembers from '../../InviteMembers';\n\nimport {\n createChannel,\n createDefaultUserListQuery,\n isBroadcastChannelEnabled,\n isSuperGroupChannelEnabled,\n} from './utils';\nimport { CREATE_CHANNEL } from '../dux/actionTypes';\nimport Modal from '../../../ui/Modal';\n\nexport default function AddChannel({\n sdk,\n disabled,\n channelListDispatcher,\n onBeforeCreateChannel,\n userId,\n userFilledApplicationUserListQuery,\n userListQuery,\n}) {\n const [showModal, setShowModal] = useState(false);\n const [step, setStep] = useState(0);\n const [type, setType] = useState('group');\n const { stringSet } = useContext(LocalizationContext);\n\n if (!sdk || !sdk.createApplicationUserListQuery) {\n return null;\n }\n\n const isBroadcastAvailable = isBroadcastChannelEnabled(sdk);\n const isSupergroupAvailable = isSuperGroupChannelEnabled(sdk);\n\n return (\n <>\n {\n setShowModal(true);\n }}\n disabled={disabled}\n >\n \n \n {\n showModal && step === 0 && (\n { setShowModal(false); }}\n onSubmit={() => {}}\n >\n \n
{\n setType('group');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('group');\n setStep(1);\n }}\n >\n \n \n Group\n \n
\n {\n isSupergroupAvailable && (\n
{\n setType('supergroup');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('supergroup');\n setStep(1);\n }}\n >\n \n \n Super group\n \n
\n )\n }\n {\n isBroadcastAvailable && (\n
{\n setType('broadcast');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('broadcast');\n setStep(1);\n }}\n >\n \n \n Broadcast\n \n
\n )\n }\n
\n \n )\n }\n {\n showModal && step === 1 && (\n {\n setStep(0);\n setShowModal(false);\n }}\n idsToFilter={[userId]}\n userQueryCreator={() => ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )}\n onSubmit={(selectedUsers) => createChannel(\n sdk,\n selectedUsers,\n onBeforeCreateChannel,\n userId,\n type,\n ).then((channel) => {\n // maybe - do this in event listener\n channelListDispatcher({\n type: CREATE_CHANNEL,\n payload: channel,\n });\n })}\n />\n )\n }\n >\n );\n}\n\nAddChannel.propTypes = {\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n createApplicationUserListQuery: PropTypes.func,\n }).isRequired,\n disabled: PropTypes.bool,\n channelListDispatcher: PropTypes.func.isRequired,\n userFilledApplicationUserListQuery: PropTypes.shape({}),\n onBeforeCreateChannel: PropTypes.func,\n userId: PropTypes.string.isRequired,\n userListQuery: PropTypes.func,\n};\n\nAddChannel.defaultProps = {\n disabled: false,\n userFilledApplicationUserListQuery: {},\n onBeforeCreateChannel: null,\n userListQuery: null,\n};\n","import React, {\n useState,\n useRef,\n useContext,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../ui/ContextMenu';\nimport IconButton from '../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport LeaveChannelModal from '../../ChannelSettings/components/LeaveChannel';\n\nexport default function ChannelPreviewAction({ disabled, onLeaveChannel }) {\n const parentRef = useRef(null);\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n { e.stopPropagation(); }}\n tabIndex={0}\n onClick={(e) => { e.stopPropagation(); }}\n >\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if (disabled) { return; }\n setShowModal(true);\n closeDropdown();\n }}\n >\n {stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE}\n \n \n )}\n />\n {\n showModal && (\n setShowModal(false)}\n onLeaveChannel={onLeaveChannel}\n />\n )\n }\n
\n );\n}\n\nChannelPreviewAction.propTypes = {\n disabled: PropTypes.bool,\n onLeaveChannel: PropTypes.func.isRequired,\n};\n\nChannelPreviewAction.defaultProps = {\n disabled: false,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Placeholder from '../../../ui/PlaceHolder';\n\nexport default function ChannelsPlaceholder({\n type,\n}) {\n return (\n \n );\n}\n\nChannelsPlaceholder.propTypes = {\n type: PropTypes.string.isRequired,\n};\n","import * as channelActions from './dux/actionTypes';\nimport * as topics from '../../lib/pubSub/topics';\n\nconst createEventHandler = ({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n logger,\n}) => {\n const ChannelHandler = new sdk.ChannelHandler();\n\n ChannelHandler.onChannelChanged = (channel) => {\n logger.info('ChannelList: onChannelChanged', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_CHANGED,\n payload: channel,\n });\n };\n ChannelHandler.onChannelDeleted = (channelUrl) => {\n logger.info('ChannelList: onChannelDeleted', channelUrl);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_DELETED,\n payload: channelUrl,\n });\n };\n ChannelHandler.onUserJoined = (channel) => {\n logger.info('ChannelList: onUserJoined', channel);\n if (channel.lastMessage) {\n channelListDispatcher({\n type: channelActions.ON_USER_JOINED,\n payload: channel,\n });\n }\n };\n ChannelHandler.onUserBanned = (channel, user) => {\n const { currentUser } = sdk;\n logger.info('Channel | useHandleChannelEvents: onUserBanned', channel);\n if (user.userId === currentUser.userId) {\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe: true,\n },\n });\n } else {\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe: false,\n },\n });\n }\n };\n ChannelHandler.onUserLeft = (channel, leftUser) => {\n const { currentUser } = sdk;\n const isMe = (currentUser.userId === leftUser.userId);\n logger.info('ChannelList: onUserLeft', channel);\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe,\n },\n });\n };\n\n ChannelHandler.onReadStatus = (channel) => {\n logger.info('ChannelList: onReadStatus', channel);\n channelListDispatcher({\n type: channelActions.ON_READ_RECEIPT_UPDATED,\n payload: channel,\n });\n };\n\n ChannelHandler.onDeliveryReceiptUpdated = (channel) => {\n logger.info('ChannelList: onDeliveryReceiptUpdated', channel);\n if (channel.lastMessage) {\n channelListDispatcher({\n type: channelActions.ON_DELIVERY_RECEIPT_UPDATED,\n payload: channel,\n });\n }\n };\n\n ChannelHandler.onMessageUpdated = (channel, message) => {\n if (channel.lastMessage.isEqual(message)) {\n logger.info('ChannelList: onMessageUpdated', channel);\n channelListDispatcher({\n type: channelActions.ON_LAST_MESSAGE_UPDATED,\n payload: channel,\n });\n }\n };\n\n ChannelHandler.onChannelHidden = (channel) => {\n logger.info('ChannelList: onChannelHidden', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_ARCHIVED,\n payload: channel.url,\n });\n };\n\n ChannelHandler.onChannelFrozen = (channel) => {\n logger.info('ChannelList: onChannelFrozen', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_FROZEN,\n payload: channel,\n });\n };\n\n ChannelHandler.onChannelUnfrozen = (channel) => {\n logger.info('ChannelList: onChannelUnfrozen', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_UNFROZEN,\n payload: channel,\n });\n };\n\n logger.info('ChannelList: Added channelHandler');\n sdk.addChannelHandler(sdkChannelHandlerId, ChannelHandler);\n};\n\nconst createApplicationUserListQuery = ({ sdk, userFilledChannelListQuery = {} }) => {\n const channelListQuery = sdk.GroupChannel.createMyGroupChannelListQuery();\n channelListQuery.includeEmpty = false;\n channelListQuery.order = 'latest_last_message'; // 'chronological', 'latest_last_message', 'channel_name_alphabetical', and 'metadata_value_alphabetical'\n channelListQuery.limit = 20; // The value of pagination limit could be set up to 100.\n\n if (userFilledChannelListQuery) {\n Object.keys(userFilledChannelListQuery).forEach((key) => {\n channelListQuery[key] = userFilledChannelListQuery[key];\n });\n }\n\n return channelListQuery;\n};\n\n/**\n * Setup event listener\n * create channel source query\n * addloading screen\n */\nfunction setupChannelList({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n setChannelSource,\n onChannelSelect,\n userFilledChannelListQuery,\n logger,\n sortChannelList,\n}) {\n createEventHandler({\n sdk,\n channelListDispatcher,\n sdkChannelHandlerId,\n logger,\n });\n\n logger.info('ChannelList - creating query', { userFilledChannelListQuery });\n const channelListQuery = createApplicationUserListQuery({ sdk, userFilledChannelListQuery });\n logger.info('ChannelList - created query', channelListQuery);\n\n setChannelSource(channelListQuery);\n\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_START,\n });\n\n logger.info('ChannelList - fetching channels');\n if (channelListQuery.hasNext) {\n channelListQuery.next((response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let channelList = response;\n let err = error;\n if (swapParams) {\n channelList = error;\n err = response;\n }\n logger.info('ChannelList - fetched channels', channelList);\n if (err) {\n logger.error('ChannelList - couldnt fetch channels', err);\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_FAILURE,\n });\n return;\n }\n // select first channel\n logger.info('ChannelList - highlight channel', channelList[0]);\n let sorted = channelList;\n if (sortChannelList && typeof sortChannelList === 'function') {\n sorted = sortChannelList(channelList);\n logger.info('ChannelList - channel list sorted', sorted);\n }\n onChannelSelect(sorted[0]);\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_SUCCESS,\n payload: sorted,\n });\n if (channelList && typeof channelList.forEach === 'function') {\n logger.info('ChannelList - mark all channels as delivered');\n channelList.forEach((c) => c.markAsDelivered());\n }\n });\n } else {\n logger.warning('ChannelList - there are no more channels');\n }\n}\n\nexport const pubSubHandleRemover = (subscriber) => {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n};\n\nexport const pubSubHandler = (pubSub, channelListDispatcher) => {\n const subScriber = new Map();\n if (!pubSub) return subScriber;\n subScriber.set(topics.CREATE_CHANNEL, pubSub.subscribe(topics.CREATE_CHANNEL, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: 'CREATE_CHANNEL',\n payload: channel,\n });\n }));\n\n subScriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n const updatedChannel = channel;\n updatedChannel.lastMessage = message;\n if (channel) {\n channelListDispatcher({\n type: channelActions.ON_LAST_MESSAGE_UPDATED,\n payload: updatedChannel,\n });\n }\n }));\n\n subScriber.set(topics.LEAVE_CHANNEL, pubSub.subscribe(topics.LEAVE_CHANNEL, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: channelActions.LEAVE_CHANNEL_SUCCESS,\n payload: channel.url,\n });\n }));\n\n subScriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: channelActions.CHANNEL_REPLACED_TO_TOP,\n payload: channel,\n });\n }));\n\n return subScriber;\n};\n\nexport default setupChannelList;\n","import React, { useEffect, useState, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport * as userActions from '../../lib/dux/user/actionTypes';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\n\nimport * as channelListActions from './dux/actionTypes';\nimport channelListInitialState from './dux/initialState';\nimport channelListReducers from './dux/reducers';\n\nimport ChannelPreview from '../../ui/ChannelPreview';\nimport ChannelHeader from '../../ui/ChannelHeader';\nimport EditUserProfile from '../../ui/EditUserProfile';\nimport PlaceholderTypes from '../../ui/PlaceHolder/type';\n\nimport AddChannel from './components/AddChannel';\nimport ChannelPreviewAction from './components/ChannelPreviewAction';\nimport PlaceHolder from './components/Placeholder';\n\nimport setupChannelList, {\n pubSubHandler,\n pubSubHandleRemover,\n} from './utils';\nimport { uuidv4 } from '../../utils/uuid';\n\nimport './index.scss';\n\nconst noop = () => { };\n\nfunction ChannelList(props) {\n const {\n stores: { sdkStore = {}, userStore = {} },\n config: {\n userId,\n isOnline,\n userListQuery,\n logger,\n pubSub,\n theme,\n },\n dispatchers: {\n userDispatcher,\n },\n queries = {},\n renderChannelPreview,\n renderHeader,\n renderUserProfile,\n disableUserProfile,\n allowProfileEdit,\n sortChannelList,\n onProfileEditSuccess,\n onThemeChange,\n onBeforeCreateChannel,\n onChannelSelect,\n } = props;\n const { config = {} } = props;\n // enable if it is true atleast once(both are flase by default)\n const enableEditProfile = allowProfileEdit || config.allowProfileEdit;\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n const { sdk = {} } = sdkStore;\n const userFilledChannelListQuery = queries.channelListQuery;\n const userFilledApplicationUserListQuery = queries.applicationUserListQuery;\n\n const sdkError = sdkStore.error;\n\n const [user, setUser] = useState({});\n\n useEffect(() => {\n setUser(userStore.user);\n }, [userStore.user]);\n\n\n const sdkIntialized = sdkStore.initialized;\n const [channelListStore, channelListDispatcher] = useReducer(\n channelListReducers,\n channelListInitialState,\n );\n const [channelSource, setChannelSource] = useState({});\n const [sdkChannelHandlerId, setSdkChannelHandlerId] = useState(null);\n const [showProfileEdit, setShowProfileEdit] = useState(false);\n\n const { loading, currentChannel } = channelListStore;\n\n useEffect(() => {\n const subscriber = pubSubHandler(pubSub, channelListDispatcher);\n return () => {\n pubSubHandleRemover(subscriber);\n };\n }, [sdkIntialized]);\n\n useEffect(() => {\n setSdkChannelHandlerId(uuidv4);\n if (sdkIntialized) {\n logger.info('ChannelList: Setup channelHandlers');\n setupChannelList({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n setChannelSource,\n onChannelSelect,\n userFilledChannelListQuery,\n logger,\n sortChannelList,\n });\n } else {\n logger.info('ChannelList: Removing channelHandlers');\n // remove previous channelHandlers\n if (sdk && sdk.removeChannelHandler) {\n sdk.removeChannelHandler(sdkChannelHandlerId);\n }\n // remove channelSource\n setChannelSource({});\n // cleanup\n channelListDispatcher({\n type: channelListActions.RESET_CHANNEL_LIST,\n });\n }\n return () => {\n logger.info('ChannelList: Removing channelHandlers');\n if (sdk && sdk.removeChannelHandler) {\n sdk.removeChannelHandler(sdkChannelHandlerId);\n }\n };\n }, [sdkIntialized, userFilledChannelListQuery, sortChannelList]);\n\n const { allChannels } = channelListStore;\n const sortedChannels = (sortChannelList && typeof sortChannelList === 'function')\n ? sortChannelList(allChannels)\n : allChannels;\n\n if (sortedChannels.length !== allChannels.length) {\n const warning = `ChannelList: You have removed/added extra channels on sortChannelList\n this could cause unexpected problems`;\n // eslint-disable-next-line no-console\n console.warn(warning, { before: allChannels, after: sortedChannels });\n logger.warning(warning, { before: allChannels, after: sortedChannels });\n }\n\n useEffect(() => {\n if (!sdk || !sdk.GroupChannel) { return; }\n sdk.GroupChannel.getChannel(currentChannel, (groupChannel) => {\n if (groupChannel) {\n onChannelSelect(groupChannel);\n } else {\n onChannelSelect(null);\n }\n });\n }, [currentChannel]);\n\n return (\n \n \n
{\n if (enableEditProfile) {\n setShowProfileEdit(true);\n }\n }}\n allowProfileEdit={enableEditProfile}\n iconButton={(\n \n )}\n />\n \n {\n showProfileEdit && (\n { setShowProfileEdit(false); }}\n onSubmit={(newName, newFile) => {\n sdk.updateCurrentUserInfoWithProfileImage(newName, newFile, (updatedUser) => {\n userDispatcher({ type: userActions.UPDATE_USER_INFO, payload: updatedUser });\n if (onProfileEditSuccess && typeof onProfileEditSuccess === 'function') {\n onProfileEditSuccess(updatedUser);\n }\n });\n }}\n />\n )\n }\n {\n const fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;\n if (fetchMore && channelSource.hasNext) {\n logger.info('ChannelList: Fetching more channels');\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_START,\n });\n channelSource.next((response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let channelList = response;\n let err = error;\n if (swapParams) {\n channelList = error;\n err = response;\n }\n if (err) {\n logger.info('ChannelList: Fetching channels failed', err);\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_FAILURE,\n payload: channelList,\n });\n return;\n }\n logger.info('ChannelList: Fetching channels successful', channelList);\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_SUCCESS,\n payload: channelList,\n });\n if (channelList && typeof channelList.forEach === 'function') {\n logger.info('ChannelList: Marking all channels as read');\n channelList.forEach((c) => c.markAsDelivered());\n }\n });\n }\n }}\n >\n {\n (sdkError) && (\n
\n )\n }\n {/*\n To do: Implement windowing\n Implement windowing if you are dealing with large number of messages/channels\n https://github.com/bvaughn/react-window -> recommendation\n We hesitate to bring one more dependency to our library,\n we are planning to implement it inside the library\n */}\n
\n {\n sortedChannels && sortedChannels.map((channel, idx) => {\n const onLeaveChannel = (c, cb) => {\n logger.info('ChannelList: Leaving channel', c);\n c.leave()\n .then((res) => {\n logger.info('ChannelList: Leaving channel success', res);\n if (cb && typeof cb === 'function') {\n cb(res, null);\n }\n channelListDispatcher({\n type: channelListActions.LEAVE_CHANNEL_SUCCESS,\n payload: channel.url,\n });\n })\n .catch((err) => {\n logger.error('ChannelList: Leaving channel failed', err);\n if (cb && typeof cb === 'function') {\n cb(null, err);\n }\n });\n };\n\n const onClick = () => {\n if (!isOnline) { return; }\n logger.info('ChannelList: Clicked on channel:', channel);\n channelListDispatcher({\n type: channelListActions.SET_CURRENT_CHANNEL,\n payload: channel.url,\n });\n };\n\n return (\n (renderChannelPreview)\n ? (\n // eslint-disable-next-line\n
\n {renderChannelPreview({ channel, onLeaveChannel })}\n
\n )\n : (\n
onLeaveChannel(channel)}\n />\n )}\n />\n )\n );\n })\n }\n \n {\n (!sdkIntialized || loading) && (\n
\n )\n }\n {\n // placeholder\n (!allChannels || allChannels.length === 0) && (\n
\n )\n }\n
\n \n );\n}\n\nChannelList.propTypes = {\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n initialized: PropTypes.bool,\n }),\n userStore: PropTypes.shape({\n user: PropTypes.shape({}),\n }),\n }).isRequired,\n dispatchers: PropTypes.shape({\n userDispatcher: PropTypes.func,\n }).isRequired,\n config: PropTypes.shape({\n userId: PropTypes.string.isRequired,\n userListQuery: PropTypes.func,\n theme: PropTypes.string,\n isOnline: PropTypes.bool,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }).isRequired,\n queries: PropTypes.shape({\n channelListQuery: PropTypes.shape({\n channelNameContainsFilter: PropTypes.string,\n channelUrlsFilter: PropTypes.arrayOf(PropTypes.string),\n customTypesFilter: PropTypes.arrayOf(PropTypes.string),\n customTypeStartsWithFilter: PropTypes.string,\n hiddenChannelFilter: PropTypes.string,\n includeEmpty: PropTypes.bool,\n limit: PropTypes.number,\n memberStateFilter: PropTypes.string,\n metadataOrderKeyFilter: PropTypes.string,\n nicknameContainsFilter: PropTypes.string,\n order: PropTypes.string,\n publicChannelFilter: PropTypes.string,\n superChannelFilter: PropTypes.string,\n unreadChannelFilter: PropTypes.string,\n userIdsExactFilter: PropTypes.arrayOf(PropTypes.string),\n userIdsIncludeFilter: PropTypes.arrayOf(PropTypes.string),\n userIdsIncludeFilterQueryType: PropTypes.string,\n }),\n applicationUserListQuery: PropTypes.shape({\n limit: PropTypes.number,\n userIdsFilter: PropTypes.arrayOf(PropTypes.string),\n metaDataKeyFilter: PropTypes.string,\n metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n onBeforeCreateChannel: PropTypes.func,\n renderChannelPreview: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n sortChannelList: PropTypes.func,\n onThemeChange: PropTypes.func,\n onProfileEditSuccess: PropTypes.func,\n renderHeader: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n onChannelSelect: PropTypes.func,\n};\n\nChannelList.defaultProps = {\n onBeforeCreateChannel: null,\n renderChannelPreview: null,\n renderHeader: null,\n disableUserProfile: false,\n renderUserProfile: null,\n allowProfileEdit: false,\n onThemeChange: null,\n sortChannelList: null,\n onProfileEditSuccess: null,\n queries: {},\n onChannelSelect: noop,\n};\n\nexport default withSendbirdContext(ChannelList);\n"],"names":["RESET_CHANNEL_LIST","CREATE_CHANNEL","LEAVE_CHANNEL_SUCCESS","SET_CURRENT_CHANNEL","SHOW_CHANNEL_SETTINGS","HIDE_CHANNEL_SETTINGS","FETCH_CHANNELS_START","FETCH_CHANNELS_SUCCESS","FETCH_CHANNELS_FAILURE","INIT_CHANNELS_START","INIT_CHANNELS_SUCCESS","INIT_CHANNELS_FAILURE","ON_USER_JOINED","ON_CHANNEL_DELETED","ON_LAST_MESSAGE_UPDATED","ON_USER_LEFT","ON_CHANNEL_CHANGED","ON_CHANNEL_ARCHIVED","ON_CHANNEL_FROZEN","ON_CHANNEL_UNFROZEN","ON_READ_RECEIPT_UPDATED","ON_DELIVERY_RECEIPT_UPDATED","CHANNEL_REPLACED_TO_TOP","initialized","loading","allChannels","currentChannel","showSettings","reducer","state","action","type","actions","initialState","payload","length","url","currentChannels","map","c","filteredChannels","filter","find","channel","channelUrl","leftCurrentChannel","newAllChannels","isMe","unreadMessageCount","lastMessage","currentUnReadCount","isFrozen","getChannelTitle","currentUserId","stringSet","LabelStringSet","name","members","NO_TITLE","NO_MEMBERS","userId","nickname","NO_NAME","join","getLastMessageCreatedAt","date","createdAt","isToday","format","isYesterday","getTotalMembers","memberCount","getPrettyLastMessage","message","MAXLEN","messageType","truncate","getLastMessage","getChannelUnreadMessageCount","ChannelPreview","isActive","ChannelAction","theme","onClick","tabIndex","currentUser","isBroadcast","useContext","LocalizationContext","IconTypes","BROADCAST_DARK","BROADCAST_LIGHT","LabelTypography","SUBTITLE_2","LabelColors","ONBACKGROUND_1","utils","CAPTION_2","ONBACKGROUND_2","FROZEN_DARK","FROZEN_LIGHT","CAPTION_3","BODY_2","ONBACKGROUND_3","propTypes","PropTypes","bool","string","shape","arrayOf","coverUrl","element","isRequired","func","number","defaultProps","ChannelHeader","user","iconButton","onEdit","renderHeader","allowProfileEdit","profileUrl","oneOfType","instanceOf","IconButton","EditUserProfile","_a","onCancel","onSubmit","_b","onThemeChange","_c","_d","changeTheme","noop","hiddenInputRef","useRef","inputRef","formRef","_e","useState","currentImg","setCurrentImg","_f","newFile","setNewFile","EDIT_PROFILE__TITLE","BUTTON__SAVE","current","value","reportValidity","ButtonType","PRIMARY","e","preventDefault","EDIT_PROFILE__IMAGE_LABEL","display","URL","createObjectURL","target","files","click","BUTTON_1","EDIT_PROFILE__IMAGE_UPLOAD","EDIT_PROFILE__NICKNAME_LABEL","EDIT_PROFILE__NICKNAME_PLACEHOLDER","EDIT_PROFILE__USERID_LABEL","EDIT_PROFILE__THEME_LABEL","TOGGLE_ON","TOGGLE_OFF","mapStoreToProps","store","config","setCurrenttheme","ConnectedEditUserProfile","withSendbirdContext","AddChannel","sdk","disabled","channelListDispatcher","onBeforeCreateChannel","userFilledApplicationUserListQuery","userListQuery","showModal","setShowModal","step","setStep","setType","createApplicationUserListQuery","isBroadcastAvailable","isBroadcastChannelEnabled","isSupergroupAvailable","isSuperGroupChannelEnabled","CREATE","IconColors","CHAT","SUBTITLE_1","SUPER_GROUP","BROADCAST","getErrorFirstCallback","MODAL__CREATE_CHANNEL__TITLE","BUTTON__CREATE","createDefaultUserListQuery","selectedUsers","createChannel","then","ChannelPreviewAction","onLeaveChannel","parentRef","stopPropagation","toggleDropdown","MORE","closeDropdown","CHANNEL_SETTING__LEAVE_CHANNEL__TITLE","ChannelsPlaceholder","Placeholder","createEventHandler","sdkChannelHandlerId","logger","ChannelHandler","onChannelChanged","info","channelActions","onChannelDeleted","onUserJoined","onUserBanned","onUserLeft","leftUser","onReadStatus","onDeliveryReceiptUpdated","onMessageUpdated","isEqual","onChannelHidden","onChannelFrozen","onChannelUnfrozen","addChannelHandler","userFilledChannelListQuery","channelListQuery","GroupChannel","createMyGroupChannelListQuery","includeEmpty","order","limit","Object","keys","forEach","key","setupChannelList","setChannelSource","onChannelSelect","sortChannelList","hasNext","next","response","error","swapParams","channelList","err","sorted","markAsDelivered","warning","pubSubHandleRemover","subscriber","s","remove","pubSubHandler","pubSub","subScriber","Map","set","topics","subscribe","msg","updatedChannel","ChannelList","props","stores","sdkStore","userStore","isOnline","userDispatcher","dispatchers","queries","renderChannelPreview","renderUserProfile","disableUserProfile","onProfileEditSuccess","enableEditProfile","userDefinedDisableUserProfile","userDefinedRenderProfile","applicationUserListQuery","sdkError","setUser","useEffect","sdkIntialized","useReducer","channelListReducers","channelListInitialState","channelListStore","channelSource","setSdkChannelHandlerId","showProfileEdit","setShowProfileEdit","uuidv4","removeChannelHandler","channelListActions","sortedChannels","console","warn","before","after","getChannel","groupChannel","newName","updateCurrentUserInfoWithProfileImage","updatedUser","userActions","fetchMore","clientHeight","scrollTop","scrollHeight","PlaceHolder","PlaceholderTypes","WRONG","idx","cb","leave","res","catch","LOADING","NO_CHANNELS","publish","channelNameContainsFilter","channelUrlsFilter","customTypesFilter","customTypeStartsWithFilter","hiddenChannelFilter","memberStateFilter","metadataOrderKeyFilter","nicknameContainsFilter","publicChannelFilter","superChannelFilter","unreadChannelFilter","userIdsExactFilter","userIdsIncludeFilter","userIdsIncludeFilterQueryType","userIdsFilter","metaDataKeyFilter","metaDataValuesFilter"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/ChannelSettings.js b/dist/esm/ChannelSettings.js
new file mode 100644
index 0000000..0e994b6
--- /dev/null
+++ b/dist/esm/ChannelSettings.js
@@ -0,0 +1,2064 @@
+import { b as _slicedToArray, e as LocalizationContext, d as __spreadArrays, _ as __assign, w as withSendbirdContext, u as uuidv4 } from './LocalizationContext-619bafba.js';
+import React, { useRef, useState, useContext, useEffect, useCallback } from 'react';
+import PropTypes from 'prop-types';
+import { M as Modal, T as Type, A as Avatar, f as TextButton, b as Label, c as LabelTypography, d as LabelColors, C as ContextMenu, e as IconButton, I as Icon, a as IconTypes, g as IconColors, h as MenuItems, i as MenuItem, n as UserProfileContext, o as UserProfile, B as Button, w as Size, z as getSdk, P as PlaceHolder, m as PlaceHolderTypes, l as UserProfileProvider } from './index-ec3bf9fe.js';
+import { n as noop } from './utils-53ba1773.js';
+import { C as ChannelAvatar } from './index-aebda3d2.js';
+import { I as InviteMembers$1, B as Badge, c as createDefaultUserListQuery, L as LeaveChannelModal } from './LeaveChannel-da8b5d0b.js';
+import 'date-fns/format';
+import 'react-dom';
+import { I as InputLabel, a as Input, U as UserListItem$2, M as MutedAvatarOverlay } from './index-aa89d60a.js';
+import { A as AccordionGroup, a as Accordion } from './index-8abf69b8.js';
+
+var EditDetails = function EditDetails(props) {
+ var _onSubmit = props.onSubmit,
+ onCancel = props.onCancel,
+ channel = props.channel,
+ userId = props.userId,
+ theme = props.theme;
+ var inputRef = useRef(null);
+ var formRef = useRef(null);
+ var hiddenInputRef = useRef(null);
+
+ var _useState = useState(null),
+ _useState2 = _slicedToArray(_useState, 2),
+ currentImg = _useState2[0],
+ setCurrentImg = _useState2[1];
+
+ var _useState3 = useState(null),
+ _useState4 = _slicedToArray(_useState3, 2),
+ newFile = _useState4[0],
+ setNewFile = _useState4[1];
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var title = channel.name;
+ return React.createElement(Modal, {
+ titleText: stringSet.MODAL__CHANNEL_INFORMATION__TITLE,
+ submitText: stringSet.BUTTON__SAVE,
+ onCancel: onCancel,
+ onSubmit: function onSubmit() {
+ if (title !== '' && !inputRef.current.value) {
+ if (formRef.current.reportValidity) {
+ // might not work in explorer
+ formRef.current.reportValidity();
+ }
+
+ return;
+ }
+
+ _onSubmit(newFile, inputRef.current.value);
+
+ onCancel();
+ },
+ type: Type.PRIMARY
+ }, React.createElement("form", {
+ className: "channel-profile-form",
+ ref: formRef,
+ onSubmit: function onSubmit(e) {
+ e.preventDefault();
+ }
+ }, React.createElement("div", {
+ className: "channel-profile-form__img-section"
+ }, React.createElement(InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE), React.createElement("div", {
+ className: "channel-profile-form__avatar"
+ }, currentImg ? React.createElement(Avatar, {
+ height: "80px",
+ width: "80px",
+ src: currentImg
+ }) : React.createElement(ChannelAvatar, {
+ height: 80,
+ width: 80,
+ channel: channel,
+ userId: userId,
+ theme: theme
+ })), React.createElement("input", {
+ ref: hiddenInputRef,
+ type: "file",
+ accept: "image/gif, image/jpeg, image/png",
+ style: {
+ display: 'none'
+ },
+ onChange: function onChange(e) {
+ setCurrentImg(URL.createObjectURL(e.target.files[0]));
+ setNewFile(e.target.files[0]);
+ hiddenInputRef.current.value = '';
+ }
+ }), React.createElement(TextButton, {
+ className: "channel-profile-form__avatar-button",
+ onClick: function onClick() {
+ return hiddenInputRef.current.click();
+ },
+ notUnderline: true
+ }, React.createElement(Label, {
+ type: LabelTypography.BUTTON_1,
+ color: LabelColors.PRIMARY
+ }, stringSet.MODAL__CHANNEL_INFORMATION__UPLOAD))), React.createElement("div", {
+ className: "channel-profile-form__name-section"
+ }, React.createElement(InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_NAME), React.createElement(Input, {
+ required: title !== '',
+ name: "channel-profile-form__name",
+ ref: inputRef,
+ value: title,
+ placeHolder: stringSet.MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER
+ }))));
+};
+
+EditDetails.propTypes = {
+ onSubmit: PropTypes.func.isRequired,
+ onCancel: PropTypes.func.isRequired,
+ channel: PropTypes.shape({
+ name: PropTypes.string
+ }).isRequired,
+ userId: PropTypes.string.isRequired,
+ theme: PropTypes.string.isRequired
+};
+
+var ChannelProfile = function ChannelProfile(props) {
+ var disabled = props.disabled,
+ channel = props.channel,
+ userId = props.userId,
+ theme = props.theme,
+ onChannelInfoChange = props.onChannelInfoChange;
+ var title = channel.name;
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ showModal = _useState2[0],
+ setShowModal = _useState2[1];
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.createElement("div", {
+ className: "sendbird-channel-profile"
+ }, React.createElement("div", {
+ className: "sendbird-channel-profile--inner"
+ }, React.createElement("div", {
+ className: "sendbird-channel-profile__avatar"
+ }, React.createElement(ChannelAvatar, {
+ channel: channel,
+ userId: userId,
+ theme: theme
+ })), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_1,
+ className: "sendbird-channel-profile__title"
+ }, title), React.createElement(TextButton, {
+ disabled: disabled,
+ className: "sendbird-channel-profile__edit",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ setShowModal(true);
+ },
+ notUnderline: true
+ }, React.createElement(Label, {
+ type: LabelTypography.BUTTON_1,
+ color: disabled ? LabelColors.ONBACKGROUND_2 : LabelColors.PRIMARY
+ }, stringSet.CHANNEL_SETTING__PROFILE__EDIT)), showModal && React.createElement(EditDetails, {
+ onCancel: function onCancel() {
+ return setShowModal(false);
+ },
+ onSubmit: onChannelInfoChange,
+ channel: channel,
+ userId: userId,
+ theme: theme
+ })));
+};
+
+ChannelProfile.propTypes = {
+ channel: PropTypes.shape({
+ name: PropTypes.string
+ }).isRequired,
+ userId: PropTypes.string.isRequired,
+ theme: PropTypes.string,
+ disabled: PropTypes.bool,
+ onChannelInfoChange: PropTypes.func
+};
+ChannelProfile.defaultProps = {
+ theme: 'light',
+ disabled: false,
+ onChannelInfoChange: function onChannelInfoChange() {}
+};
+
+function MembersModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel,
+ currentUser = _a.currentUser;
+
+ var _b = useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = useState(null),
+ memberQuery = _c[0],
+ setMemberQuery = _c[1];
+
+ useEffect(function () {
+ var memberListQuery = channel.createMemberListQuery();
+ memberListQuery.limit = 20;
+ memberListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ });
+ setMemberQuery(memberListQuery);
+ }, []);
+ return React.createElement("div", null, React.createElement(Modal, {
+ hideFooter: true,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: noop,
+ titleText: "All Members"
+ }, React.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = memberQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ memberQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(__spreadArrays(members, o));
+ });
+ }
+ }
+ }, members.map(function (member) {
+ return React.createElement(UserListItem$2, {
+ user: member,
+ key: member.userId,
+ currentUser: currentUser,
+ action: function action(_a) {
+ var parentRef = _a.parentRef,
+ actionRef = _a.actionRef;
+ return React.createElement(React.Fragment, null, channel.myRole === 'operator' && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (member.role !== 'operator') {
+ channel.addOperators([member.userId], function () {
+ setMembers(members.map(function (m) {
+ if (m.userId === member.userId) {
+ return __assign(__assign({}, member), {
+ role: 'operator'
+ });
+ }
+
+ return m;
+ }));
+ closeDropdown();
+ });
+ } else {
+ channel.removeOperators([member.userId], function () {
+ setMembers(members.map(function (m) {
+ if (m.userId === member.userId) {
+ return __assign(__assign({}, member), {
+ role: ''
+ });
+ }
+
+ return m;
+ }));
+ closeDropdown();
+ });
+ }
+ }
+ }, member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'), // No muted members in broadcast channel
+ !channel.isBroadcast && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (member.isMuted) {
+ channel.unmuteUser(member, function () {
+ setMembers(members.map(function (m) {
+ if (m.userId === member.userId) {
+ return __assign(__assign({}, member), {
+ isMuted: false
+ });
+ }
+
+ return m;
+ }));
+ closeDropdown();
+ });
+ } else {
+ channel.muteUser(member, function () {
+ setMembers(members.map(function (m) {
+ if (m.userId === member.userId) {
+ return __assign(__assign({}, member), {
+ isMuted: true
+ });
+ }
+
+ return m;
+ }));
+ closeDropdown();
+ });
+ }
+ }
+ }, member.isMuted ? 'Unmute' : 'Mute'), React.createElement(MenuItem, {
+ onClick: function onClick() {
+ channel.banUser(member, -1, '', function () {
+ setMembers(members.filter(function (_a) {
+ var userId = _a.userId;
+ return userId !== member.userId;
+ }));
+ });
+ }
+ }, "Ban"));
+ }
+ }));
+ }
+ });
+ }))));
+}
+
+var SHOWN_MEMBER_MAX = 10;
+
+var UserListItem = function UserListItem(_ref) {
+ var _ref$member = _ref.member,
+ member = _ref$member === void 0 ? {} : _ref$member,
+ _ref$currentUser = _ref.currentUser,
+ currentUser = _ref$currentUser === void 0 ? '' : _ref$currentUser;
+ var avatarRef = useRef(null);
+
+ var _useContext = useContext(UserProfileContext),
+ disableUserProfile = _useContext.disableUserProfile,
+ renderUserProfile = _useContext.renderUserProfile;
+
+ var _useContext2 = useContext(LocalizationContext),
+ stringSet = _useContext2.stringSet;
+
+ return React.createElement("div", {
+ className: "sendbird-members-accordion__member"
+ }, React.createElement("div", {
+ className: "sendbird-members-accordion__member-avatar"
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ ref: avatarRef,
+ src: member.profileUrl,
+ width: 24,
+ height: 24
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ openLeft: true,
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: member,
+ currentUserId: currentUser,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: member,
+ currentUserId: currentUser,
+ onSuccess: closeDropdown
+ }));
+ }
+ })), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, member.nickname || stringSet.NO_NAME, currentUser === member.userId && ' (You)'));
+};
+
+UserListItem.propTypes = {
+ member: PropTypes.shape({
+ userId: PropTypes.string,
+ profileUrl: PropTypes.string,
+ nickname: PropTypes.string
+ }).isRequired,
+ currentUser: PropTypes.string.isRequired
+};
+
+var MemebersAccordion = function MemebersAccordion(_ref2) {
+ var channel = _ref2.channel,
+ disabled = _ref2.disabled,
+ currentUser = _ref2.currentUser,
+ userQueryCreator = _ref2.userQueryCreator,
+ onInviteMemebers = _ref2.onInviteMemebers,
+ swapParams = _ref2.swapParams;
+ var members = channel.members || [];
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ showMoreModal = _useState2[0],
+ setShowMoreModal = _useState2[1];
+
+ var _useState3 = useState(false),
+ _useState4 = _slicedToArray(_useState3, 2),
+ showAddUserModal = _useState4[0],
+ setShowAddUserModal = _useState4[1];
+
+ var _useContext3 = useContext(LocalizationContext),
+ stringSet = _useContext3.stringSet;
+
+ return React.createElement("div", {
+ className: "sendbird-members-accordion"
+ }, React.createElement("div", {
+ className: "sendbird-members-accordion__list"
+ }, members.slice(0, SHOWN_MEMBER_MAX).map(function (member) {
+ return React.createElement(UserListItem, {
+ member: member,
+ currentUser: currentUser,
+ key: member.userId
+ });
+ })), React.createElement("div", {
+ className: "sendbird-members-accordion__footer"
+ }, members.length >= SHOWN_MEMBER_MAX && React.createElement(Button, {
+ className: "sendbird-members-accordion__footer__all-members",
+ type: Type.SECONDARY,
+ size: Size.SMALL,
+ onClick: function onClick() {
+ return setShowMoreModal(true);
+ }
+ }, stringSet.CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS), members.length >= SHOWN_MEMBER_MAX && showMoreModal && React.createElement(MembersModal, {
+ currentUser: currentUser,
+ hideModal: function hideModal() {
+ setShowMoreModal(false);
+ },
+ channel: channel
+ }), React.createElement(Button, {
+ className: "sendbird-members-accordion__footer__invite-users",
+ type: Type.SECONDARY,
+ size: Size.SMALL,
+ disabled: disabled,
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ setShowAddUserModal(true);
+ }
+ }, stringSet.CHANNEL_SETTING__MEMBERS__INVITE_MEMBER), showAddUserModal && React.createElement(InviteMembers$1, {
+ swapParams: swapParams,
+ titleText: stringSet.MODAL__INVITE_MEMBER__TITLE,
+ submitText: stringSet.BUTTON__INVITE,
+ closeModal: function closeModal() {
+ return setShowAddUserModal(false);
+ },
+ idsToFilter: members.map(function (member) {
+ return member.userId;
+ }),
+ userQueryCreator: userQueryCreator,
+ onSubmit: onInviteMemebers
+ })));
+};
+
+MemebersAccordion.propTypes = {
+ swapParams: PropTypes.bool,
+ disabled: PropTypes.bool,
+ channel: PropTypes.shape({
+ members: PropTypes.arrayOf(PropTypes.shape({}))
+ }),
+ currentUser: PropTypes.string,
+ userQueryCreator: PropTypes.func.isRequired,
+ onInviteMemebers: PropTypes.func.isRequired
+};
+MemebersAccordion.defaultProps = {
+ swapParams: false,
+ currentUser: '',
+ disabled: false,
+ channel: {}
+};
+
+// might move to reusable/UI
+var COMPONENT_NAME = 'sendbird-user-list-item--small';
+
+var UserListItem$1 = function UserListItem(_a) {
+ var user = _a.user,
+ className = _a.className,
+ currentUser = _a.currentUser,
+ action = _a.action;
+ var actionRef = useRef(null);
+ var parentRef = useRef(null);
+ var avatarRef = useRef(null);
+ var stringSet = useContext(LocalizationContext).stringSet;
+
+ var _b = useContext(UserProfileContext),
+ disableUserProfile = _b.disableUserProfile,
+ renderUserProfile = _b.renderUserProfile;
+
+ var injectingClassNames = Array.isArray(className) ? className : [className];
+ return React.createElement("div", {
+ ref: parentRef,
+ className: __spreadArrays([COMPONENT_NAME], injectingClassNames).join(' ')
+ }, user.isMuted && React.createElement(MutedAvatarOverlay, null), React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ ref: avatarRef,
+ className: COMPONENT_NAME + "__avatar",
+ src: user.profileUrl,
+ width: 24,
+ height: 24
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ openLeft: true,
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: user,
+ currentUserId: currentUser,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: user,
+ currentUserId: currentUser,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), React.createElement(Label, {
+ className: COMPONENT_NAME + "__title",
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, user.nickname || stringSet.NO_NAME, currentUser === user.userId && " (You)"), !user.nickname && React.createElement(Label, {
+ className: COMPONENT_NAME + "__subtitle",
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2
+ }, user.userId), user.role === 'operator' && React.createElement(Label, {
+ className: COMPONENT_NAME + "__operator",
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, "Operator"), action && React.createElement("div", {
+ ref: actionRef,
+ className: COMPONENT_NAME + "__action"
+ }, action({
+ actionRef: actionRef,
+ parentRef: parentRef
+ })));
+};
+
+function OperatorsModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel,
+ currentUser = _a.currentUser;
+
+ var _b = useState([]),
+ operators = _b[0],
+ setOperators = _b[1];
+
+ var _c = useState(null),
+ operatorQuery = _c[0],
+ setOperatorQuery = _c[1];
+
+ useEffect(function () {
+ var operatorListQuery = channel.createOperatorListQuery();
+ operatorListQuery.limit = 20;
+ operatorListQuery.next(function (operators, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(operators);
+ });
+ setOperatorQuery(operatorListQuery);
+ }, []);
+ return React.createElement("div", null, React.createElement(Modal, {
+ hideFooter: true,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: noop,
+ titleText: "All operators"
+ }, React.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = operatorQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ operatorQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(__spreadArrays(operators, o));
+ });
+ }
+ }
+ }, operators.map(function (member) {
+ return React.createElement(UserListItem$2, {
+ currentUser: currentUser,
+ user: member,
+ key: member.userId,
+ action: function action(_a) {
+ var parentRef = _a.parentRef,
+ actionRef = _a.actionRef;
+ return React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React.createElement(MenuItem, {
+ onClick: function onClick() {
+ channel.removeOperators([member.userId], function (response, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(operators.filter(function (_a) {
+ var userId = _a.userId;
+ return userId !== member.userId;
+ }));
+ });
+ closeDropdown();
+ }
+ }, "Dismiss operator"));
+ }
+ });
+ }
+ });
+ }))));
+}
+
+function AddOperatorsModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel,
+ _onSubmit = _a.onSubmit;
+
+ var _b = useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = useState({}),
+ selectedMembers = _c[0],
+ setSelectedMembers = _c[1];
+
+ var _d = useState(null),
+ memberQuery = _d[0],
+ setMemberQuery = _d[1];
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+ useEffect(function () {
+ var memberListQuery = channel.createMemberListQuery();
+ memberListQuery.limit = 20;
+ memberListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ });
+ setMemberQuery(memberListQuery);
+ }, []);
+ var selectedCount = Object.keys(selectedMembers).filter(function (m) {
+ return selectedMembers[m];
+ }).length;
+ return React.createElement("div", null, React.createElement(Modal, {
+ type: Type.PRIMARY,
+ submitText: "Add",
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: function onSubmit() {
+ var members = Object.keys(selectedMembers).filter(function (m) {
+ return selectedMembers[m];
+ });
+
+ _onSubmit(members);
+ },
+ titleText: "Select members"
+ }, React.createElement(Label, {
+ color: selectedCount > 0 ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3,
+ type: LabelTypography.CAPTION_1
+ }, selectedCount + " " + stringSet.MODAL__INVITE_MEMBER__SELECTEC), React.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = memberQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ memberQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(__spreadArrays(members, o));
+ });
+ }
+ }
+ }, members.map(function (member) {
+ return React.createElement(UserListItem$2, {
+ checkBox: true,
+ checked: selectedMembers[member.userId],
+ onChange: function onChange(event) {
+ var _a;
+
+ var modifiedSelectedMembers = __assign(__assign({}, selectedMembers), (_a = {}, _a[event.target.id] = event.target.checked, _a));
+
+ if (!event.target.checked) {
+ delete modifiedSelectedMembers[event.target.id];
+ }
+
+ setSelectedMembers(modifiedSelectedMembers);
+ },
+ user: member,
+ key: member.userId
+ });
+ }))));
+}
+
+var OperatorList = function OperatorList(_a) {
+ var sdk = _a.sdk,
+ channel = _a.channel;
+
+ var _b = useState([]),
+ operators = _b[0],
+ setOperators = _b[1];
+
+ var _c = useState(false),
+ showMore = _c[0],
+ setShowMore = _c[1];
+
+ var _d = useState(false),
+ showAdd = _d[0],
+ setShowAdd = _d[1];
+
+ var _e = useState(false),
+ hasNext = _e[0],
+ setHasNext = _e[1];
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+ useEffect(function () {
+ if (!channel) {
+ setOperators([]);
+ return;
+ }
+
+ var operatorListQuery = channel.createOperatorListQuery();
+ operatorListQuery.limit = 10;
+ operatorListQuery.next(function (operators, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(operators);
+ setHasNext(operatorListQuery.hasNext);
+ });
+ }, [channel]);
+ var refershList = useCallback(function () {
+ if (!channel) {
+ setOperators([]);
+ return;
+ }
+
+ var operatorListQuery = channel.createOperatorListQuery();
+ operatorListQuery.limit = 10;
+ operatorListQuery.next(function (operators, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(operators);
+ setHasNext(operatorListQuery.hasNext);
+ });
+ }, [channel]);
+ return React.createElement(React.Fragment, null, operators.map(function (operator) {
+ return React.createElement(UserListItem$1, {
+ key: operator.userId,
+ user: operator,
+ currentUser: sdk.currentUser.userId,
+ action: function action(_a) {
+ var actionRef = _a.actionRef,
+ parentRef = _a.parentRef;
+ return React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React.createElement(MenuItem, {
+ onClick: function onClick() {
+ channel.removeOperators([operator.userId], function (response, error) {
+ if (error) {
+ return;
+ }
+
+ setOperators(operators.filter(function (_a) {
+ var userId = _a.userId;
+ return userId !== operator.userId;
+ }));
+ });
+ closeDropdown();
+ }
+ }, "Dismiss operator"));
+ }
+ });
+ }
+ });
+ }), hasNext && React.createElement("div", {
+ className: "sendbird-channel-settings-accordion__footer"
+ }, React.createElement(Button, {
+ type: Type.SECONDARY,
+ size: Size.SMALL,
+ onClick: function onClick() {
+ setShowMore(true);
+ }
+ }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ALL), React.createElement(Button, {
+ type: Type.SECONDARY,
+ size: Size.SMALL,
+ onClick: function onClick() {
+ setShowAdd(true);
+ }
+ }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ADD)), showMore && React.createElement(OperatorsModal, {
+ currentUser: sdk.currentUser.userId,
+ hideModal: function hideModal() {
+ setShowMore(false);
+ refershList();
+ },
+ channel: channel
+ }), showAdd && React.createElement(AddOperatorsModal, {
+ hideModal: function hideModal() {
+ return setShowAdd(false);
+ },
+ channel: channel,
+ onSubmit: function onSubmit(members) {
+ setShowAdd(false);
+ channel.addOperators(members, function () {
+ refershList();
+ });
+ }
+ }));
+};
+
+var mapStoreToProps = function mapStoreToProps(store) {
+ return {
+ sdk: getSdk(store)
+ };
+};
+
+var OperatorList$1 = withSendbirdContext(OperatorList, mapStoreToProps);
+
+function InviteMembers(_a) {
+ var hideModal = _a.hideModal,
+ userQueryCreator = _a.userQueryCreator,
+ _onSubmit = _a.onSubmit;
+
+ var _b = useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = useState({}),
+ selectedMembers = _c[0],
+ setSelectedMembers = _c[1];
+
+ var _d = useState(null),
+ userQuery = _d[0],
+ setUserQuery = _d[1];
+
+ useEffect(function () {
+ var userListQuery = userQueryCreator();
+ userListQuery.limit = 20;
+ userListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ });
+ setUserQuery(userListQuery);
+ }, []);
+ return React.createElement("div", null, React.createElement(Modal, {
+ disabled: Object.keys(selectedMembers).length === 0,
+ submitText: "Invite",
+ type: Type.PRIMARY,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: function onSubmit() {
+ var members = Object.keys(selectedMembers).filter(function (m) {
+ return selectedMembers[m];
+ });
+
+ _onSubmit(members);
+ },
+ titleText: "Select members"
+ }, React.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = userQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ userQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(__spreadArrays(members, o));
+ });
+ }
+ }
+ }, members.map(function (member) {
+ return React.createElement(UserListItem$2, {
+ checkBox: true,
+ checked: selectedMembers[member.userId],
+ onChange: function onChange(event) {
+ var _a;
+
+ var modifiedSelectedMembers = __assign(__assign({}, selectedMembers), (_a = {}, _a[event.target.id] = event.target.checked, _a));
+
+ if (!event.target.checked) {
+ delete modifiedSelectedMembers[event.target.id];
+ }
+
+ setSelectedMembers(modifiedSelectedMembers);
+ },
+ user: member,
+ key: member.userId
+ });
+ }))));
+}
+
+var MemberList = function MemberList(_a) {
+ var sdk = _a.sdk,
+ channel = _a.channel,
+ userQueryCreator = _a.userQueryCreator;
+
+ var _b = useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = useState(false),
+ hasNext = _c[0],
+ setHasNext = _c[1];
+
+ var _d = useState(false),
+ showAllMembers = _d[0],
+ setShowAllMembers = _d[1];
+
+ var _e = useState(false),
+ showInviteMembers = _e[0],
+ setShowInviteMembers = _e[1];
+
+ useEffect(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var memberUserListQuery = channel.createMemberListQuery();
+ memberUserListQuery.limit = 10;
+ memberUserListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ setHasNext(memberUserListQuery.hasNext);
+ });
+ }, [channel]);
+ var refershList = useCallback(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var memberUserListQuery = channel.createMemberListQuery();
+ memberUserListQuery.limit = 10;
+ memberUserListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ setHasNext(memberUserListQuery.hasNext);
+ });
+ }, [channel]);
+ return React.createElement(React.Fragment, null, members.map(function (member) {
+ return React.createElement(UserListItem$1, {
+ key: member.userId,
+ user: member,
+ currentUser: sdk.currentUser.userId,
+ action: function action(_a) {
+ var actionRef = _a.actionRef,
+ parentRef = _a.parentRef;
+ return React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (member.role !== 'operator') {
+ channel.addOperators([member.userId], function () {
+ refershList();
+ closeDropdown();
+ });
+ } else {
+ channel.removeOperators([member.userId], function () {
+ refershList();
+ closeDropdown();
+ });
+ }
+ }
+ }, member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'), // No muted members in broadcast channel
+ !channel.isBroadcast && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (member.isMuted) {
+ channel.unmuteUser(member, function () {
+ refershList();
+ closeDropdown();
+ });
+ } else {
+ channel.muteUser(member, function () {
+ refershList();
+ closeDropdown();
+ });
+ }
+ }
+ }, member.isMuted ? 'Unmute' : 'Mute'), React.createElement(MenuItem, {
+ onClick: function onClick() {
+ channel.banUser(member, -1, '', function () {
+ refershList();
+ closeDropdown();
+ });
+ }
+ }, "Ban"));
+ }
+ });
+ }
+ });
+ }), React.createElement("div", {
+ className: "sendbird-channel-settings-accordion__footer"
+ }, hasNext && React.createElement(Button, {
+ type: Type.SECONDARY,
+ size: Size.SMALL,
+ onClick: function onClick() {
+ return setShowAllMembers(true);
+ }
+ }, "All members"), React.createElement(Button, {
+ type: Type.SECONDARY,
+ size: Size.SMALL,
+ onClick: function onClick() {
+ return setShowInviteMembers(true);
+ }
+ }, "Invite members")), showAllMembers && React.createElement(MembersModal, {
+ currentUser: sdk.currentUser.userId,
+ channel: channel,
+ hideModal: function hideModal() {
+ setShowAllMembers(false);
+ refershList();
+ }
+ }), showInviteMembers && React.createElement(InviteMembers, {
+ userQueryCreator: userQueryCreator,
+ onSubmit: function onSubmit(selectedMemebers) {
+ channel.inviteWithUserIds(selectedMemebers, function () {
+ setShowInviteMembers(false);
+ refershList();
+ });
+ },
+ channel: channel,
+ hideModal: function hideModal() {
+ return setShowInviteMembers(false);
+ }
+ }));
+};
+
+var mapStoreToProps$1 = function mapStoreToProps(store) {
+ return {
+ sdk: getSdk(store)
+ };
+};
+
+var MemberList$1 = withSendbirdContext(MemberList, mapStoreToProps$1);
+
+function BannedMembersModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel;
+
+ var _b = useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = useState(null),
+ memberQuery = _c[0],
+ setMemberQuery = _c[1];
+
+ useEffect(function () {
+ var bannedUserListQuery = channel.createBannedUserListQuery();
+ bannedUserListQuery.next(function (users, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(users);
+ });
+ setMemberQuery(bannedUserListQuery);
+ }, []);
+ return React.createElement("div", null, React.createElement(Modal, {
+ hideFooter: true,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: noop,
+ titleText: "Muted members"
+ }, React.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = memberQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ memberQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(__spreadArrays(members, o));
+ });
+ }
+ }
+ }, members.map(function (member) {
+ return React.createElement(UserListItem$2, {
+ user: member,
+ key: member.userId,
+ action: function action(_a) {
+ var parentRef = _a.parentRef,
+ actionRef = _a.actionRef;
+ return React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React.createElement(MenuItem, {
+ onClick: function onClick() {
+ channel.unbanUser(member, function () {
+ closeDropdown();
+ setMembers(members.filter(function (m) {
+ return m.userId !== member.userId;
+ }));
+ });
+ }
+ }, "Unban"));
+ }
+ });
+ }
+ });
+ }))));
+}
+
+var BannedMemberList = function BannedMemberList(_a) {
+ var channel = _a.channel;
+
+ var _b = useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = useState(false),
+ hasNext = _c[0],
+ setHasNext = _c[1];
+
+ var _d = useState(false),
+ showModal = _d[0],
+ setShowModal = _d[1];
+
+ useEffect(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var bannedUserListQuery = channel.createBannedUserListQuery();
+ bannedUserListQuery.next(function (users, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(users);
+ setHasNext(bannedUserListQuery.hasNext);
+ });
+ }, [channel]);
+ var refreshList = useCallback(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var bannedUserListQuery = channel.createBannedUserListQuery();
+ bannedUserListQuery.next(function (users, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(users);
+ setHasNext(bannedUserListQuery.hasNext);
+ });
+ }, [channel]);
+ return React.createElement(React.Fragment, null, members.map(function (member) {
+ return React.createElement(UserListItem$1, {
+ key: member.userId,
+ user: member,
+ action: function action(_a) {
+ var actionRef = _a.actionRef,
+ parentRef = _a.parentRef;
+ return React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React.createElement(MenuItem, {
+ onClick: function onClick() {
+ channel.unbanUser(member, function () {
+ closeDropdown();
+ refreshList();
+ });
+ }
+ }, "Unban"));
+ }
+ });
+ }
+ });
+ }), members && members.length === 0 && React.createElement(Label, {
+ className: "sendbird-channel-settings__empty-list",
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_3
+ }, "No banned members yet"), hasNext && React.createElement("div", {
+ className: "sendbird-channel-settings-accordion__footer"
+ }, React.createElement(Button, {
+ type: Type.SECONDARY,
+ size: Size.SMALL,
+ onClick: function onClick() {
+ setShowModal(true);
+ }
+ }, "All banned members")), showModal && React.createElement(BannedMembersModal, {
+ channel: channel,
+ hideModal: function hideModal() {
+ setShowModal(false);
+ refreshList();
+ }
+ }));
+};
+
+var mapStoreToProps$2 = function mapStoreToProps(store) {
+ return {
+ sdk: getSdk(store)
+ };
+};
+
+var BannedMemberList$1 = withSendbirdContext(BannedMemberList, mapStoreToProps$2);
+
+function MutedMembersModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel,
+ currentUser = _a.currentUser;
+
+ var _b = useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = useState(null),
+ memberQuery = _c[0],
+ setMemberQuery = _c[1];
+
+ useEffect(function () {
+ var memberUserListQuery = channel.createMemberListQuery();
+ memberUserListQuery.limit = 10;
+ memberUserListQuery.mutedMemberFilter = 'muted';
+ memberUserListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ });
+ setMemberQuery(memberUserListQuery);
+ }, []);
+ return React.createElement("div", null, React.createElement(Modal, {
+ hideFooter: true,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: noop,
+ titleText: "Muted members"
+ }, React.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = memberQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ memberQuery.next(function (o, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(__spreadArrays(members, o));
+ });
+ }
+ }
+ }, members.map(function (member) {
+ return React.createElement(UserListItem$2, {
+ currentUser: currentUser,
+ user: member,
+ key: member.userId,
+ action: function action(_a) {
+ var actionRef = _a.actionRef,
+ parentRef = _a.parentRef;
+ return React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+ ,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, React.createElement(MenuItem, {
+ onClick: function onClick() {
+ channel.unmuteUser(member, function () {
+ closeDropdown();
+ setMembers(members.filter(function (m) {
+ return m.userId !== member.userId;
+ }));
+ });
+ }
+ }, "Unmute"));
+ }
+ });
+ }
+ });
+ }))));
+}
+
+var MutedMemberList = function MutedMemberList(_a) {
+ var sdk = _a.sdk,
+ channel = _a.channel;
+
+ var _b = useState([]),
+ members = _b[0],
+ setMembers = _b[1];
+
+ var _c = useState(false),
+ hasNext = _c[0],
+ setHasNext = _c[1];
+
+ var _d = useState(false),
+ showModal = _d[0],
+ setShowModal = _d[1];
+
+ useEffect(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var memberUserListQuery = channel.createMemberListQuery();
+ memberUserListQuery.limit = 10;
+ memberUserListQuery.mutedMemberFilter = 'muted';
+ memberUserListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ setHasNext(memberUserListQuery.hasNext);
+ });
+ }, [channel]);
+ var refreshList = useCallback(function () {
+ if (!channel) {
+ setMembers([]);
+ return;
+ }
+
+ var memberUserListQuery = channel.createMemberListQuery();
+ memberUserListQuery.limit = 10;
+ memberUserListQuery.mutedMemberFilter = 'muted';
+ memberUserListQuery.next(function (members, error) {
+ if (error) {
+ return;
+ }
+
+ setMembers(members);
+ setHasNext(memberUserListQuery.hasNext);
+ });
+ }, [channel]);
+ return React.createElement(React.Fragment, null, members.map(function (member) {
+ return React.createElement(UserListItem$1, {
+ key: member.userId,
+ user: member,
+ currentUser: sdk.currentUser.userId,
+ action: function action(_a) {
+ var actionRef = _a.actionRef,
+ parentRef = _a.parentRef;
+ return React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(IconButton, {
+ className: "sendbird-user-message__more__menu",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ closeDropdown: closeDropdown,
+ openLeft: true,
+ parentContainRef: parentRef,
+ parentRef: actionRef // for catching location(x, y) of MenuItems
+
+ }, React.createElement(MenuItem, {
+ onClick: function onClick() {
+ channel.unmuteUser(member, function () {
+ refreshList();
+ closeDropdown();
+ });
+ }
+ }, "Unmute"));
+ }
+ });
+ }
+ });
+ }), members && members.length === 0 && React.createElement(Label, {
+ className: "sendbird-channel-settings__empty-list",
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_3
+ }, "No muted members yet"), hasNext && React.createElement("div", {
+ className: "sendbird-channel-settings-accordion__footer"
+ }, React.createElement(Button, {
+ type: Type.SECONDARY,
+ size: Size.SMALL,
+ onClick: function onClick() {
+ setShowModal(true);
+ }
+ }, "All muted members")), showModal && React.createElement(MutedMembersModal, {
+ currentUser: sdk.currentUser.userId,
+ channel: channel,
+ hideModal: function hideModal() {
+ setShowModal(false);
+ refreshList();
+ }
+ }));
+};
+
+var mapStoreToProps$3 = function mapStoreToProps(store) {
+ return {
+ sdk: getSdk(store)
+ };
+};
+
+var MutedMemberList$1 = withSendbirdContext(MutedMemberList, mapStoreToProps$3);
+
+var kFormatter = function kFormatter(num) {
+ return Math.abs(num) > 999 ? (Math.abs(num) / 1000).toFixed(1) + "K" : num;
+};
+
+function index(_a) {
+ var userQueryCreator = _a.userQueryCreator,
+ channel = _a.channel;
+
+ var _b = useState(false),
+ frozen = _b[0],
+ setFrozen = _b[1]; // work around for
+ // https://sendbird.slack.com/archives/G01290GCDCN/p1595922832000900
+ // SDK bug - after frozen/unfrozen myRole becomes "none"
+
+
+ useEffect(function () {
+ setFrozen(channel.isFrozen);
+ }, [channel]);
+ var stringSet = useContext(LocalizationContext).stringSet;
+ return React.createElement(AccordionGroup, {
+ className: "sendbird-channel-settings__operator"
+ }, React.createElement(Accordion, {
+ className: "sendbird-channel-settings__operators-list",
+ id: "operators",
+ renderTitle: function renderTitle() {
+ return React.createElement(React.Fragment, null, React.createElement(Icon, {
+ type: IconTypes.ICON_OPERATOR,
+ fillColor: IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-channel-settings__accordion-icon"
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE));
+ },
+ renderContent: function renderContent() {
+ return React.createElement(React.Fragment, null, React.createElement(OperatorList$1, {
+ channel: channel
+ }));
+ }
+ }), React.createElement(Accordion, {
+ className: "sendbird-channel-settings__members-list",
+ id: "members",
+ renderTitle: function renderTitle() {
+ return React.createElement(React.Fragment, null, React.createElement(Icon, {
+ type: IconTypes.MEMBERS,
+ fillColor: IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-channel-settings__accordion-icon"
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__MEMBERS__TITLE), React.createElement(Badge, {
+ count: kFormatter(channel.memberCount)
+ }));
+ },
+ renderContent: function renderContent() {
+ return React.createElement(React.Fragment, null, React.createElement(MemberList$1, {
+ userQueryCreator: userQueryCreator,
+ channel: channel
+ }));
+ }
+ }), // No muted members in broadcast channel
+ !channel.isBroadcast && React.createElement(Accordion, {
+ id: "mutedMembers",
+ className: "sendbird-channel-settings__muted-members-list",
+ renderTitle: function renderTitle() {
+ return React.createElement(React.Fragment, null, React.createElement(Icon, {
+ type: IconTypes.ICON_MUTED,
+ fillColor: IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-channel-settings__accordion-icon"
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__MUTED_MEMBERS__TITLE));
+ },
+ renderContent: function renderContent() {
+ return React.createElement(React.Fragment, null, React.createElement(MutedMemberList$1, {
+ channel: channel
+ }));
+ }
+ }), React.createElement(Accordion, {
+ className: "sendbird-channel-settings__banned-members-list",
+ id: "bannedMembers",
+ renderTitle: function renderTitle() {
+ return React.createElement(React.Fragment, null, React.createElement(Icon, {
+ type: IconTypes.ICON_BANNED,
+ fillColor: IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-channel-settings__accordion-icon"
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__BANNED_MEMBERS__TITLE));
+ },
+ renderContent: function renderContent() {
+ return React.createElement(React.Fragment, null, React.createElement(BannedMemberList$1, {
+ channel: channel
+ }));
+ }
+ }), // cannot frozen broadcast channel
+ !channel.isBroadcast && React.createElement("div", {
+ className: "sendbird-channel-settings__freeze"
+ }, React.createElement(Icon, {
+ type: IconTypes.FROZEN_LIGHT,
+ fillColor: IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-channel-settings__accordion-icon"
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__FREEZE_CHANNEL), React.createElement("div", {
+ className: "sendbird-channel-settings__frozen-icon"
+ }, frozen ? React.createElement(Icon, {
+ onClick: function onClick() {
+ channel.unfreeze(function () {
+ setFrozen(false);
+ });
+ },
+ type: IconTypes.TOGGLE_ON,
+ width: 44,
+ height: 24
+ }) : React.createElement(Icon, {
+ onClick: function onClick() {
+ channel.freeze(function () {
+ setFrozen(true);
+ });
+ },
+ type: IconTypes.TOGGLE_OFF,
+ width: 44,
+ height: 24
+ }))));
+}
+
+var kFormatter$1 = function kFormatter(num) {
+ return Math.abs(num) > 999 ? "".concat((Math.abs(num) / 1000).toFixed(1), "K") : num;
+};
+
+function ChannelSettings(props) {
+ var onCloseClick = props.onCloseClick,
+ channelUrl = props.channelUrl,
+ disableUserProfile = props.disableUserProfile,
+ renderUserProfile = props.renderUserProfile,
+ _onChannelModified = props.onChannelModified,
+ renderChannelProfile = props.renderChannelProfile,
+ onBeforeUpdateChannel = props.onBeforeUpdateChannel;
+ var sdkStore = props.stores.sdkStore,
+ _props$config = props.config,
+ userListQuery = _props$config.userListQuery,
+ theme = _props$config.theme,
+ userId = _props$config.userId,
+ logger = _props$config.logger,
+ isOnline = _props$config.isOnline,
+ _props$queries = props.queries,
+ queries = _props$queries === void 0 ? {} : _props$queries;
+ var _props$config2 = props.config,
+ config = _props$config2 === void 0 ? {} : _props$config2;
+ var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
+ var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
+ var userFilledApplicationUserListQuery = queries.applicationUserListQuery;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var sdk = sdkStore.sdk,
+ initialized = sdkStore.initialized; // hack to kepp track of channel updates by triggering useEffect
+
+ var _useState = useState(uuidv4()),
+ _useState2 = _slicedToArray(_useState, 2),
+ channelUpdateId = _useState2[0],
+ setChannelUpdateId = _useState2[1];
+
+ var _useState3 = useState(null),
+ _useState4 = _slicedToArray(_useState3, 2),
+ channel = _useState4[0],
+ setChannel = _useState4[1];
+
+ var _useState5 = useState(false),
+ _useState6 = _slicedToArray(_useState5, 2),
+ invalidChannel = _useState6[0],
+ setInvalidChannel = _useState6[1];
+
+ var _useState7 = useState(false),
+ _useState8 = _slicedToArray(_useState7, 2),
+ showAccordion = _useState8[0],
+ setShowAccordion = _useState8[1];
+
+ var _useState9 = useState(false),
+ _useState10 = _slicedToArray(_useState9, 2),
+ showLeaveChannelModal = _useState10[0],
+ setShowLeaveChannelModal = _useState10[1];
+
+ useEffect(function () {
+ logger.info('ChannelSettings: Setting up');
+
+ if (!channelUrl || !initialized || !sdk) {
+ logger.warning('ChannelSettings: Setting up failed', 'No channelUrl or sdk uninitialized');
+ setInvalidChannel(false);
+ } else {
+ if (!sdk || !sdk.GroupChannel) {
+ logger.warning('ChannelSettings: No GroupChannel');
+ return;
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl, function (groupChannel) {
+ if (!groupChannel) {
+ logger.warning('ChannelSettings: Channel not found');
+ setInvalidChannel(true);
+ } else {
+ logger.info('ChannelSettings: Fetched group channel', groupChannel);
+ setInvalidChannel(false);
+ setChannel(groupChannel);
+ }
+ });
+ }
+ }, [channelUrl, initialized, channelUpdateId]);
+
+ if (!channel || invalidChannel) {
+ return React.createElement("div", {
+ className: "sendbird-channel-settings"
+ }, React.createElement("div", {
+ className: "sendbird-channel-settings__header"
+ }, React.createElement(Label, {
+ type: LabelTypography.H_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React.createElement(Icon, {
+ type: IconTypes.CLOSE,
+ className: "sendbird-channel-settings__close-icon",
+ height: "24px",
+ width: "24px",
+ onClick: function onClick() {
+ logger.info('ChannelSettings: Click close');
+ onCloseClick();
+ }
+ })), React.createElement("div", null, React.createElement(PlaceHolder, {
+ type: PlaceHolderTypes.WRONG
+ })));
+ }
+
+ return React.createElement(UserProfileProvider, {
+ disableUserProfile: userDefinedDisableUserProfile,
+ renderUserProfile: userDefinedRenderProfile,
+ className: "sendbird-channel-settings"
+ }, React.createElement("div", {
+ className: "sendbird-channel-settings__header"
+ }, React.createElement(Label, {
+ type: LabelTypography.H_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React.createElement("div", {
+ className: "sendbird-channel-settings__header-icon"
+ }, React.createElement(IconButton, {
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ logger.info('ChannelSettings: Click close');
+ onCloseClick();
+ }
+ }, React.createElement(Icon, {
+ type: IconTypes.CLOSE,
+ className: "sendbird-channel-settings__close-icon",
+ height: "24px",
+ width: "24px"
+ })))), React.createElement("div", {
+ className: "sendbird-channel-settings__scroll-area"
+ }, renderChannelProfile ? renderChannelProfile({
+ channel: channel
+ }) : React.createElement(ChannelProfile, {
+ disabled: !isOnline,
+ channel: channel,
+ userId: userId,
+ theme: theme,
+ onChannelInfoChange: function onChannelInfoChange(currentImg, currentTitle) {
+ logger.info('ChannelSettings: Channel information being updated');
+ var swapParams = sdk.getErrorFirstCallback();
+
+ if (onBeforeUpdateChannel) {
+ var params = onBeforeUpdateChannel(currentTitle, currentImg, channel.data); // swapParams
+
+ channel.updateChannel(params, function (response, error) {
+ var groupChannel = response;
+
+ if (swapParams) {
+ groupChannel = error;
+ }
+
+ _onChannelModified(groupChannel);
+
+ setChannelUpdateId(uuidv4());
+ });
+ return;
+ }
+
+ channel.updateChannel(currentTitle, currentImg, channel.data, function (response, error) {
+ var groupChannel = response;
+
+ if (swapParams) {
+ groupChannel = error;
+ }
+
+ logger.info('ChannelSettings: Channel information updated', groupChannel);
+
+ _onChannelModified(groupChannel);
+
+ setChannelUpdateId(uuidv4());
+ });
+ }
+ }), channel.myRole === 'operator' ? React.createElement(index, {
+ channel: channel,
+ onChannelModified: function onChannelModified(groupChannel) {
+ // setChannelUpdateId(uuidv4());
+ _onChannelModified(groupChannel);
+ },
+ userQueryCreator: function userQueryCreator() {
+ return userListQuery && typeof userListQuery === 'function' ? userListQuery() : createDefaultUserListQuery({
+ sdk: sdk,
+ userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
+ });
+ }
+ }) : React.createElement(React.Fragment, null, React.createElement("div", {
+ role: "switch",
+ "aria-checked": showAccordion,
+ tabIndex: 0,
+ onKeyDown: function onKeyDown() {
+ return setShowAccordion(!showAccordion);
+ },
+ className: "\n sendbird-channel-settings__panel-item\n sendbird-channel-settings__members\n ",
+ onClick: function onClick() {
+ return setShowAccordion(!showAccordion);
+ }
+ }, React.createElement(Icon, {
+ type: IconTypes.MEMBERS,
+ className: "sendbird-channel-settings__panel-icon-left",
+ height: "24px",
+ width: "24px",
+ fillColor: IconColors.PRIMARY
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, "".concat(stringSet.CHANNEL_SETTING__MEMBERS__TITLE), React.createElement(Badge, {
+ count: kFormatter$1(channel.memberCount)
+ })), React.createElement(Icon, {
+ type: IconTypes.SHEVRON,
+ className: ['sendbird-channel-settings__panel-icon-right', 'sendbird-channel-settings__panel-icon--chevron', showAccordion ? 'sendbird-channel-settings__panel-icon--open' : ''].join(' '),
+ height: "24px",
+ width: "24px"
+ })), showAccordion && React.createElement(MemebersAccordion, {
+ currentUser: userId,
+ disabled: !isOnline // eslint-disable-next-line
+ ,
+ userQueryCreator: function userQueryCreator() {
+ return userListQuery && typeof userListQuery === 'function' ? userListQuery() : createDefaultUserListQuery({
+ sdk: sdk,
+ userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
+ });
+ },
+ swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
+ channel: channel,
+ members: channel.members,
+ onInviteMemebers: function onInviteMemebers(selectedMemebers) {
+ logger.info('ChannelSettings: Inviting new users');
+ channel.inviteWithUserIds(selectedMemebers).then(function (res) {
+ _onChannelModified(res);
+
+ setChannelUpdateId(uuidv4());
+ logger.info('ChannelSettings: Inviting new users success!', res);
+ });
+ }
+ })), React.createElement("div", {
+ className: "sendbird-channel-settings__panel-item\n sendbird-channel-settings__leave-channel\n ".concat(!isOnline ? 'sendbird-channel-settings__panel-item__disabled' : ''),
+ role: "button",
+ tabIndex: 0,
+ disabled: true,
+ onKeyDown: function onKeyDown() {
+ if (!isOnline) {
+ return;
+ }
+
+ setShowLeaveChannelModal(true);
+ },
+ onClick: function onClick() {
+ if (!isOnline) {
+ return;
+ }
+
+ setShowLeaveChannelModal(true);
+ }
+ }, React.createElement(Icon, {
+ type: IconTypes.LEAVE,
+ className: ['sendbird-channel-settings__panel-icon-left', 'sendbird-channel-settings__panel-icon__leave'].join(' '),
+ height: "24px",
+ width: "24px"
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE)), showLeaveChannelModal && React.createElement(LeaveChannelModal, {
+ onCloseModal: function onCloseModal() {
+ return setShowLeaveChannelModal(false);
+ },
+ onLeaveChannel: function onLeaveChannel() {
+ logger.info('ChannelSettings: Leaving channel', channel);
+ channel.leave().then(function () {
+ logger.info('ChannelSettings: Leaving channel successful!', channel);
+ onCloseClick();
+ });
+ }
+ })));
+}
+
+ChannelSettings.propTypes = {
+ onCloseClick: PropTypes.func,
+ onChannelModified: PropTypes.func,
+ onBeforeUpdateChannel: PropTypes.func,
+ renderChannelProfile: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ channelUrl: PropTypes.string.isRequired,
+ queries: PropTypes.shape({
+ applicationUserListQuery: PropTypes.shape({
+ limit: PropTypes.number,
+ userIdsFilter: PropTypes.arrayOf(PropTypes.string),
+ metaDataKeyFilter: PropTypes.string,
+ metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string)
+ })
+ }),
+ // from withSendbirdContext
+ stores: PropTypes.shape({
+ sdkStore: PropTypes.shape({
+ sdk: PropTypes.shape({
+ getErrorFirstCallback: PropTypes.func,
+ GroupChannel: PropTypes.oneOfType([PropTypes.shape({
+ getChannel: PropTypes.func
+ }), PropTypes.func]),
+ createApplicationUserListQuery: PropTypes.any
+ }),
+ initialized: PropTypes.bool
+ })
+ }).isRequired,
+ config: PropTypes.shape({
+ userId: PropTypes.string,
+ theme: PropTypes.string,
+ userListQuery: PropTypes.func,
+ isOnline: PropTypes.bool,
+ logger: PropTypes.shape({
+ info: PropTypes.func,
+ error: PropTypes.func,
+ warning: PropTypes.func
+ })
+ }).isRequired
+};
+ChannelSettings.defaultProps = {
+ onBeforeUpdateChannel: null,
+ queries: {},
+ disableUserProfile: false,
+ renderUserProfile: null,
+ renderChannelProfile: null,
+ onCloseClick: function onCloseClick() {},
+ onChannelModified: function onChannelModified() {}
+};
+var ChannelSettings$1 = withSendbirdContext(ChannelSettings);
+
+export default ChannelSettings$1;
+//# sourceMappingURL=ChannelSettings.js.map
diff --git a/dist/esm/ChannelSettings.js.map b/dist/esm/ChannelSettings.js.map
new file mode 100644
index 0000000..5ee4e28
--- /dev/null
+++ b/dist/esm/ChannelSettings.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ChannelSettings.js","sources":["../../../src/smart-components/ChannelSettings/components/EditDetails.jsx","../../../src/smart-components/ChannelSettings/components/ChannelProfile.jsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/MembersModal.tsx","../../../src/smart-components/ChannelSettings/components/MemebersAccordion.jsx","../../../src/smart-components/ChannelSettings/components/UserListItem.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/OperatorsModal.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/AddOperatorsModal.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/OperatorList.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/InviteMembersModal.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/MemberList.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/BannedMembersModal.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/BannedMemberList.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/MutedMembersModal.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/MutedMemberList.tsx","../../../src/smart-components/ChannelSettings/components/AdminPanel/index.tsx","../../../src/smart-components/ChannelSettings/index.jsx"],"sourcesContent":["import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Modal from '../../../ui/Modal';\nimport Input, { InputLabel } from '../../../ui/Input';\nimport Avatar from '../../../ui/Avatar/index';\nimport { Type as ButtonType } from '../../../ui/Button/type';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport TextButton from '../../../ui/TextButton';\nimport ChannelAvatar from '../../../ui/ChannelAvatar/index';\n\nconst EditDetails = (props) => {\n const {\n onSubmit,\n onCancel,\n channel,\n userId,\n theme,\n } = props;\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const hiddenInputRef = useRef(null);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n const title = channel.name;\n return (\n {\n if (title !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(newFile, inputRef.current.value);\n onCancel();\n }}\n type={ButtonType.PRIMARY}\n >\n { e.preventDefault(); }}\n >\n \n
\n {stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE}\n \n
\n {\n currentImg\n ? (\n
\n ) : (\n
\n )\n }\n
\n
{\n setCurrentImg(URL.createObjectURL(e.target.files[0]));\n setNewFile(e.target.files[0]);\n hiddenInputRef.current.value = '';\n }}\n />\n
hiddenInputRef.current.click()}\n notUnderline\n >\n \n {stringSet.MODAL__CHANNEL_INFORMATION__UPLOAD}\n \n \n
\n \n \n {stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_NAME}\n \n \n
\n \n \n );\n};\n\nEditDetails.propTypes = {\n onSubmit: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n channel: PropTypes.shape({\n name: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n theme: PropTypes.string.isRequired,\n};\n\nexport default EditDetails;\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './channel-profile.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport EditDetailsModal from './EditDetails';\nimport TextButton from '../../../ui/TextButton';\nimport ChannelAvatar from '../../../ui/ChannelAvatar/index';\n\nconst ChannelProfile = (props) => {\n const {\n disabled,\n channel,\n userId,\n theme,\n onChannelInfoChange,\n } = props;\n const title = channel.name;\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n
\n
\n \n
\n
\n {title}\n \n
{\n if (disabled) { return; }\n setShowModal(true);\n }}\n notUnderline\n >\n \n {stringSet.CHANNEL_SETTING__PROFILE__EDIT}\n \n \n {\n showModal && (\n
setShowModal(false)}\n onSubmit={onChannelInfoChange}\n channel={channel}\n userId={userId}\n theme={theme}\n />\n )\n }\n \n
\n );\n};\n\nChannelProfile.propTypes = {\n channel: PropTypes.shape({\n name: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n theme: PropTypes.string,\n disabled: PropTypes.bool,\n onChannelInfoChange: PropTypes.func,\n};\n\nChannelProfile.defaultProps = {\n theme: 'light',\n disabled: false,\n onChannelInfoChange: () => { },\n};\n\nexport default ChannelProfile;\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n currentUser?: string;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function MembersModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const memberListQuery = channel.createMemberListQuery();\n memberListQuery.limit = 20;\n memberListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"All Members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n <>\n {channel.myRole === 'operator' && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if ((member.role !== 'operator')) {\n channel.addOperators([member.userId], () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n role: 'operator',\n };\n }\n return m;\n }));\n closeDropdown();\n });\n } else {\n channel.removeOperators([member.userId], () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n role: '',\n };\n }\n return m;\n }));\n closeDropdown();\n });\n }\n }}\n >\n { member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'}\n \n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n {\n if (member.isMuted) {\n channel.unmuteUser(member, () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n isMuted: false,\n };\n }\n return m;\n }));\n closeDropdown();\n })\n } else {\n channel.muteUser(member, () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n isMuted: true,\n };\n }\n return m;\n }));\n closeDropdown();\n });\n }\n }}\n >\n { member.isMuted ? 'Unmute' : 'Mute' }\n \n )\n }\n {\n channel.banUser(member, -1, '', () => {\n setMembers(members.filter(({ userId }) => {\n return userId !== member.userId;\n }));\n });\n }}\n >\n Ban\n \n \n )}\n />\n )}\n >\n )}\n />\n ))}\n
\n \n
\n );\n}\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './members-accordion.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { UserProfileContext } from '../../../lib/UserProfileContext';\nimport Button from '../../../ui/Button';\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../ui/Button/type';\nimport Avatar from '../../../ui/Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport InviteMembers from '../../InviteMembers';\nimport MembersModal from './AdminPanel/MembersModal';\nimport UserProfile from '../../../ui/UserProfile';\nimport ContextMenu, { MenuItems } from '../../../ui/ContextMenu';\n\nconst SHOWN_MEMBER_MAX = 10;\n\nconst UserListItem = ({ member = {}, currentUser = '' }) => {\n const avatarRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n src={member.profileUrl}\n width={24}\n height={24}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: member,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n
\n {member.nickname || stringSet.NO_NAME}\n {\n (currentUser === member.userId) && (\n ' (You)'\n )\n }\n \n
\n );\n};\n\nUserListItem.propTypes = {\n member: PropTypes.shape({\n userId: PropTypes.string,\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n }).isRequired,\n currentUser: PropTypes.string.isRequired,\n};\n\nconst MemebersAccordion = ({\n channel,\n disabled,\n currentUser,\n userQueryCreator,\n onInviteMemebers,\n swapParams,\n}) => {\n const members = channel.members || [];\n const [showMoreModal, setShowMoreModal] = useState(false);\n const [showAddUserModal, setShowAddUserModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n {\n members.slice(0, SHOWN_MEMBER_MAX).map((member) => (\n \n ))\n }\n
\n
\n {\n members.length >= SHOWN_MEMBER_MAX && (\n setShowMoreModal(true)}\n >\n {stringSet.CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS}\n \n )\n }\n {\n members.length >= SHOWN_MEMBER_MAX && showMoreModal && (\n {\n setShowMoreModal(false);\n }}\n channel={channel}\n />\n )\n }\n {\n if (disabled) { return; }\n setShowAddUserModal(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__MEMBERS__INVITE_MEMBER}\n \n {\n showAddUserModal && (\n setShowAddUserModal(false)}\n idsToFilter={members.map((member) => (member.userId))}\n userQueryCreator={userQueryCreator}\n onSubmit={onInviteMemebers}\n />\n )\n }\n
\n
\n );\n};\n\nMemebersAccordion.propTypes = {\n swapParams: PropTypes.bool,\n disabled: PropTypes.bool,\n channel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n }),\n currentUser: PropTypes.string,\n userQueryCreator: PropTypes.func.isRequired,\n onInviteMemebers: PropTypes.func.isRequired,\n};\n\nMemebersAccordion.defaultProps = {\n swapParams: false,\n currentUser: '',\n disabled: false,\n channel: {},\n};\n\nexport default MemebersAccordion;\n","// might move to reusable/UI\n\nimport React, { ReactElement, useRef, useContext } from 'react';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { UserProfileContext } from '../../../lib/UserProfileContext';\nimport Avatar from '../../../ui/Avatar/index';\nimport MutedAvatarOverlay from '../../../ui/Avatar/MutedAvatarOverlay';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport UserProfile from '../../../ui/UserProfile';\nimport ContextMenu, { MenuItems } from '../../../ui/ContextMenu';\n\nimport './user-list-item.scss';\nimport { SendbirdTypes } from '../../../types';\n\nconst COMPONENT_NAME = 'sendbird-user-list-item--small';\n\ninterface ActionProps {\n actionRef: React.RefObject;\n parentRef: React.RefObject;\n}\n\ntype CustomUser = SendbirdTypes['User'] & {\n isMuted: boolean;\n role: string;\n};\n\ninterface Props {\n user: CustomUser;\n currentUser?: string;\n className?: string;\n action?(props: ActionProps): ReactElement;\n}\n\nconst UserListItem = ({\n user,\n className,\n currentUser,\n action,\n}: Props): ReactElement => {\n const actionRef = useRef(null);\n const parentRef = useRef(null);\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const injectingClassNames = Array.isArray(className) ? className : [className];\n return (\n \n {\n user.isMuted && (\n
\n )\n }\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n className={`${COMPONENT_NAME}__avatar`}\n src={user.profileUrl}\n width={24}\n height={24}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n {user.nickname || stringSet.NO_NAME}\n {\n (currentUser === user.userId) && (\n \" (You)\"\n )\n }\n \n { // if there is now nickname, display userId\n !user.nickname && (\n \n {user.userId}\n \n )\n }\n {\n user.role === 'operator' && (\n \n Operator\n \n )\n }\n {\n action && (\n \n { action({ actionRef, parentRef }) }\n
\n )\n }\n \n );\n}\n\nexport default UserListItem;\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n currentUser?: string;\n}\n\nexport default function OperatorsModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [operators, setOperators] = useState([]);\n const [operatorQuery, setOperatorQuery] = useState(null);\n\n useEffect(() => {\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 20;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n });\n setOperatorQuery(operatorListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"All operators\"\n >\n {\n const { hasNext } = operatorQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n operatorQuery.next((o, error) => {\n if (error) {\n return;\n }\n setOperators([\n ...operators,\n ...o,\n ])\n });\n }\n }}\n >\n { operators.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.removeOperators([member.userId], (response, error) => {\n if (error) {\n return;\n }\n setOperators(operators.filter(({ userId }) => {\n return userId !== member.userId;\n }));\n });\n closeDropdown();\n }}\n >\n Dismiss operator\n \n \n )}\n />\n )}\n />\n ))}\n
\n \n
\n )\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useContext,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport Modal from '../../../../ui/Modal';\nimport Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport { Type as ButtonType } from '../../../../ui/Button/type';\nimport UserListItem from '../../../../ui/UserListItem';\n\ninterface Props {\n hideModal(): void;\n onSubmit(members: string[]): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function AddOperatorsModal({\n hideModal,\n channel,\n onSubmit,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [selectedMembers, setSelectedMembers] = useState({});\n const [memberQuery, setMemberQuery] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n\n useEffect(() => {\n const memberListQuery = channel.createMemberListQuery();\n memberListQuery.limit = 20;\n memberListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberListQuery);\n }, [])\n\n const selectedCount = Object.keys(selectedMembers).filter((m) => selectedMembers[m]).length;\n return (\n \n
hideModal()}\n onSubmit={() => {\n const members = Object.keys(selectedMembers).filter((m) => selectedMembers[m]);\n onSubmit(members);\n }}\n titleText=\"Select members\"\n >\n 0) ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3}\n type={LabelTypography.CAPTION_1}\n >\n {`${selectedCount} ${stringSet.MODAL__INVITE_MEMBER__SELECTEC}`}\n \n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n {\n const modifiedSelectedMembers = {\n ...selectedMembers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedMembers[event.target.id];\n }\n setSelectedMembers(modifiedSelectedMembers);\n }\n }\n user={member}\n key={member.userId}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n useContext,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport OperatorsModal from './OperatorsModal';\nimport AddOperatorsModal from './AddOperatorsModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const OperatorList = ({ sdk, channel }: Props): ReactElement => {\n const [operators, setOperators] = useState([]);\n const [showMore, setShowMore] = useState(false);\n const [showAdd, setShowAdd] = useState(false);\n const [hasNext, setHasNext] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n useEffect(() => {\n if (!channel) {\n setOperators([]);\n return;\n }\n\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 10;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n setHasNext(operatorListQuery.hasNext);\n });\n }, [channel]);\n\n const refershList = useCallback(\n () => {\n if (!channel) {\n setOperators([]);\n return;\n }\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 10;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n setHasNext(operatorListQuery.hasNext);\n });\n },\n [channel],\n );\n\n return (\n <>\n {\n operators.map((operator) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.removeOperators([operator.userId], (response, error) => {\n if (error) {\n return;\n }\n setOperators(operators.filter(({ userId }) => {\n return userId !== operator.userId;\n }))\n });\n closeDropdown();\n }}\n >\n Dismiss operator\n \n \n )}\n />\n );\n }}\n />\n ))\n }\n {\n hasNext && (\n \n {\n setShowMore(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ALL}\n \n {\n setShowAdd(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ADD}\n \n
\n )\n }\n {\n showMore && (\n {\n setShowMore(false);\n refershList();\n }}\n channel={channel}\n />\n )\n }\n {\n showAdd && (\n setShowAdd(false)}\n channel={channel}\n onSubmit={(members) => {\n setShowAdd(false);\n channel.addOperators(members, () => {\n refershList();\n });\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(OperatorList, mapStoreToProps);\n","import React, { ReactElement, useEffect, useState } from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport { Type as ButtonType } from '../../../../ui/Button/type';\nimport UserListItem from '../../../../ui/UserListItem';\n\ninterface Props {\n hideModal(): void;\n onSubmit(members: string[]): void;\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport default function InviteMembers({\n hideModal,\n userQueryCreator,\n onSubmit,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [selectedMembers, setSelectedMembers] = useState({});\n const [userQuery, setUserQuery] = useState(null);\n\n useEffect(() => {\n const userListQuery = userQueryCreator();\n userListQuery.limit = 20;\n userListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setUserQuery(userListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={() => {\n const members = Object.keys(selectedMembers).filter((m) => selectedMembers[m]);\n onSubmit(members);\n }}\n titleText=\"Select members\"\n >\n {\n const { hasNext } = userQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n userQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n {\n const modifiedSelectedMembers = {\n ...selectedMembers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedMembers[event.target.id];\n }\n setSelectedMembers(modifiedSelectedMembers);\n }\n }\n user={member}\n key={member.userId}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport MembersModal from './MembersModal';\nimport InviteMembers from './InviteMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes['SendBirdInstance'];\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport const MemberList = ({ sdk, channel, userQueryCreator }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showAllMembers, setShowAllMembers] = useState(false);\n const [showInviteMembers, setShowInviteMembers] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refershList = useCallback(\n () => {\n if (!channel) {\n setMembers([]);\n return;\n }\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n },\n [channel],\n );\n\n return (\n <>\n {\n members.map((member) => (\n {\n return ( (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if ((member.role !== 'operator')) {\n channel.addOperators([member.userId], () => {\n refershList();\n closeDropdown();\n });\n } else {\n channel.removeOperators([member.userId], () => {\n refershList();\n closeDropdown();\n });\n }\n }}\n >\n { member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'}\n \n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n {\n if (member.isMuted) {\n channel.unmuteUser(member, () => {\n refershList();\n closeDropdown();\n })\n } else {\n channel.muteUser(member, () => {\n refershList();\n closeDropdown();\n });\n }\n }}\n >\n { member.isMuted ? 'Unmute' : 'Mute' }\n \n )\n }\n {\n channel.banUser(member, -1, '', () => {\n refershList();\n closeDropdown();\n });\n }}\n >\n Ban\n \n \n )}\n />)}\n }\n />\n ))\n }\n \n {\n hasNext && (\n setShowAllMembers(true)}\n >\n All members\n \n )\n }\n setShowInviteMembers(true)}\n >\n Invite members\n \n
\n {\n showAllMembers && (\n {\n setShowAllMembers(false);\n refershList();\n }}\n />\n )\n }\n {\n showInviteMembers && (\n {\n channel.inviteWithUserIds(selectedMemebers, () => {\n setShowInviteMembers(false);\n refershList();\n });\n }}\n channel={channel}\n hideModal={() => setShowInviteMembers(false)}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(MemberList, mapStoreToProps);\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function BannedMembersModal({\n hideModal,\n channel,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next((users, error) => {\n if (error) {\n return;\n }\n setMembers(users);\n });\n setMemberQuery(bannedUserListQuery);\n }, []);\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"Muted members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unbanUser(member, () => {\n closeDropdown();\n setMembers(members.filter(m => {\n return (m.userId !== member.userId);\n }));\n })\n }}\n >\n Unban\n \n \n )}\n />\n )\n }\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport BannedMembersModal from './BannedMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const BannedMemberList = ({ channel }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next((users, error) => {\n if (error) {\n return;\n }\n setMembers(users);\n setHasNext(bannedUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refreshList = useCallback(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next(function(users, error) {\n if (error) {\n return;\n }\n setMembers(users);\n setHasNext(bannedUserListQuery.hasNext);\n });\n }, [channel]);\n return (\n <>\n {\n members.map((member) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unbanUser(member, () => {\n closeDropdown();\n refreshList();\n })\n }}\n >\n Unban\n \n \n )}\n />\n )\n }}\n />\n ))\n }\n {\n members && members.length === 0 && (\n \n No banned members yet\n \n )\n }\n {\n hasNext && (\n \n {\n setShowModal(true);\n }}\n >\n All banned members\n \n
\n )\n }\n {\n showModal && (\n {\n setShowModal(false);\n refreshList();\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(BannedMemberList, mapStoreToProps);\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n currentUser?: string;\n}\n\nexport default function MutedMembersModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberUserListQuery);\n }, []);\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"Muted members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unmuteUser(member, () => {\n closeDropdown();\n setMembers(members.filter(m => {\n return (m.userId !== member.userId);\n }));\n })\n }}\n >\n Unmute\n \n \n )}\n />\n )}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport MutedMembersModal from './MutedMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const MutedMemberList = ({ sdk, channel }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refreshList = useCallback(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n return (\n <>\n {\n members.map((member) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unmuteUser(member, () => {\n refreshList();\n closeDropdown();\n })\n }}\n >\n Unmute\n \n \n )}\n />\n );\n }\n }\n />\n ))\n }\n {\n members && members.length === 0 && (\n \n No muted members yet\n \n )\n }\n {\n hasNext && (\n \n {\n setShowModal(true);\n }}\n >\n All muted members\n \n
\n )\n }\n {\n showModal && (\n {\n setShowModal(false);\n refreshList();\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(MutedMemberList, mapStoreToProps);\n","import './index.scss';\nimport React, {\n ReactElement,\n useEffect,\n useState,\n useContext,\n} from 'react';\nimport { SendbirdTypes } from '../../../../types';\n\nimport Accordion, { AccordionGroup } from '../../../../ui/Accordion';\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport Badge from '../../../../ui/Badge';\n\nimport OperatorList from './OperatorList';\nimport MemberList from './MemberList';\nimport BannedMemberList from './BannedMemberList';\nimport MutedMemberList from './MutedMemberList';\n\nconst kFormatter = (num: number): string|number => {\n return Math.abs(num) > 999\n ? `${(Math.abs(num)/1000).toFixed(1)}K`\n : num;\n}\n\ninterface Props {\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport default function index({\n userQueryCreator,\n channel,\n}: Props): ReactElement {\n const [frozen, setFrozen] = useState(false);\n\n // work around for\n // https://sendbird.slack.com/archives/G01290GCDCN/p1595922832000900\n // SDK bug - after frozen/unfrozen myRole becomes \"none\"\n useEffect(() => {\n setFrozen(channel.isFrozen);\n }, [channel]);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__MEMBERS__TITLE}\n \n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__MUTED_MEMBERS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n )\n }\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__BANNED_MEMBERS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n {\n // cannot frozen broadcast channel\n !channel.isBroadcast && (\n \n
\n
\n {stringSet.CHANNEL_SETTING__FREEZE_CHANNEL}\n \n
\n {\n frozen\n ? (\n {\n channel.unfreeze(() => {\n setFrozen(false);\n });\n }}\n type={IconTypes.TOGGLE_ON}\n width={44}\n height={24}\n />\n )\n : (\n {\n channel.freeze(() => {\n setFrozen(true);\n });\n }}\n type={IconTypes.TOGGLE_OFF}\n width={44}\n height={24}\n />\n )\n }\n
\n
\n )\n }\n \n );\n}\n","import React, { useEffect, useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport './index.scss';\nimport Badge from '../../ui/Badge';\nimport Label, { LabelTypography, LabelColors } from '../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../ui/Icon';\nimport IconButton from '../../ui/IconButton';\n\nimport ChannelProfile from './components/ChannelProfile';\nimport MemebersAccordion from './components/MemebersAccordion';\nimport LeaveChannelModal from './components/LeaveChannel';\nimport AdminPanel from './components/AdminPanel';\nimport PlaceHolder from '../../ui/PlaceHolder';\nimport PlaceHolderTypes from '../../ui/PlaceHolder/type';\nimport { uuidv4 } from '../../utils/uuid';\nimport { createDefaultUserListQuery } from '../ChannelList/components/utils';\n\n\nconst kFormatter = (num) => (\n Math.abs(num) > 999\n ? `${(Math.abs(num) / 1000).toFixed(1)}K`\n : num\n);\n\nfunction ChannelSettings(props) {\n const {\n onCloseClick,\n channelUrl,\n disableUserProfile,\n renderUserProfile,\n onChannelModified,\n renderChannelProfile,\n onBeforeUpdateChannel,\n } = props;\n\n const {\n stores: { sdkStore },\n config: {\n userListQuery,\n theme,\n userId,\n logger,\n isOnline,\n },\n queries = {},\n } = props;\n\n const { config = {} } = props;\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n const userFilledApplicationUserListQuery = queries.applicationUserListQuery;\n const { stringSet } = useContext(LocalizationContext);\n\n const { sdk, initialized } = sdkStore;\n\n // hack to kepp track of channel updates by triggering useEffect\n const [channelUpdateId, setChannelUpdateId] = useState(uuidv4());\n const [channel, setChannel] = useState(null);\n const [invalidChannel, setInvalidChannel] = useState(false);\n const [showAccordion, setShowAccordion] = useState(false);\n const [showLeaveChannelModal, setShowLeaveChannelModal] = useState(false);\n\n useEffect(() => {\n logger.info('ChannelSettings: Setting up');\n if (!channelUrl || !initialized || !sdk) {\n logger.warning('ChannelSettings: Setting up failed', 'No channelUrl or sdk uninitialized');\n setInvalidChannel(false);\n } else {\n if (!sdk || !sdk.GroupChannel) {\n logger.warning('ChannelSettings: No GroupChannel');\n return;\n }\n sdk.GroupChannel.getChannel(channelUrl, (groupChannel) => {\n if (!groupChannel) {\n logger.warning('ChannelSettings: Channel not found');\n setInvalidChannel(true);\n } else {\n logger.info('ChannelSettings: Fetched group channel', groupChannel);\n setInvalidChannel(false);\n setChannel(groupChannel);\n }\n });\n }\n }, [channelUrl, initialized, channelUpdateId]);\n\n if (!channel || invalidChannel) {\n return (\n \n
\n \n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n {\n logger.info('ChannelSettings: Click close');\n onCloseClick();\n }}\n />\n
\n
\n
\n );\n }\n\n return (\n \n \n
\n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n
\n {\n logger.info('ChannelSettings: Click close');\n onCloseClick();\n }}\n >\n \n \n
\n
\n \n {\n renderChannelProfile\n ? renderChannelProfile({ channel })\n : (\n
{\n logger.info('ChannelSettings: Channel information being updated');\n const swapParams = sdk.getErrorFirstCallback();\n if (onBeforeUpdateChannel) {\n const params = onBeforeUpdateChannel(currentTitle, currentImg, channel.data);\n // swapParams\n channel.updateChannel(params, (response, error) => {\n let groupChannel = response;\n if (swapParams) {\n groupChannel = error;\n }\n\n onChannelModified(groupChannel);\n setChannelUpdateId(uuidv4());\n });\n return;\n }\n channel.updateChannel(\n currentTitle,\n currentImg,\n channel.data,\n (response, error) => {\n let groupChannel = response;\n if (swapParams) {\n groupChannel = error;\n }\n logger.info('ChannelSettings: Channel information updated', groupChannel);\n onChannelModified(groupChannel);\n setChannelUpdateId(uuidv4());\n },\n );\n }}\n />\n )\n }\n {\n channel.myRole === 'operator'\n ? (\n {\n // setChannelUpdateId(uuidv4());\n onChannelModified(groupChannel);\n }}\n userQueryCreator={\n () => ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )\n }\n />\n )\n : (\n <>\n {/* Move to different file */}\n setShowAccordion(!showAccordion)}\n className={`\n sendbird-channel-settings__panel-item\n sendbird-channel-settings__members\n `}\n onClick={() => setShowAccordion(!showAccordion)}\n >\n \n \n {`${stringSet.CHANNEL_SETTING__MEMBERS__TITLE}`}\n \n \n \n
\n {\n showAccordion && (\n ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )\n }\n swapParams={\n sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback()\n }\n channel={channel}\n members={channel.members}\n onInviteMemebers={(selectedMemebers) => {\n logger.info('ChannelSettings: Inviting new users');\n channel.inviteWithUserIds(selectedMemebers)\n .then((res) => {\n onChannelModified(res);\n setChannelUpdateId(uuidv4());\n logger.info('ChannelSettings: Inviting new users success!', res);\n });\n }}\n />\n )\n }\n >\n )\n }\n\n {\n if (!isOnline) { return; }\n setShowLeaveChannelModal(true);\n }}\n onClick={() => {\n if (!isOnline) { return; }\n setShowLeaveChannelModal(true);\n }}\n >\n \n \n {stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE}\n \n
\n {\n showLeaveChannelModal && (\n setShowLeaveChannelModal(false)}\n onLeaveChannel={() => {\n logger.info('ChannelSettings: Leaving channel', channel);\n channel.leave()\n .then(() => {\n logger.info('ChannelSettings: Leaving channel successful!', channel);\n onCloseClick();\n });\n }}\n />\n )\n }\n \n \n );\n}\n\nChannelSettings.propTypes = {\n onCloseClick: PropTypes.func,\n onChannelModified: PropTypes.func,\n onBeforeUpdateChannel: PropTypes.func,\n renderChannelProfile: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n channelUrl: PropTypes.string.isRequired,\n queries: PropTypes.shape({\n applicationUserListQuery: PropTypes.shape({\n limit: PropTypes.number,\n userIdsFilter: PropTypes.arrayOf(PropTypes.string),\n metaDataKeyFilter: PropTypes.string,\n metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n // from withSendbirdContext\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n GroupChannel: PropTypes.oneOfType([\n PropTypes.shape({\n getChannel: PropTypes.func,\n }),\n PropTypes.func,\n ]),\n createApplicationUserListQuery: PropTypes.any,\n }),\n initialized: PropTypes.bool,\n }),\n }).isRequired,\n config: PropTypes.shape({\n userId: PropTypes.string,\n theme: PropTypes.string,\n userListQuery: PropTypes.func,\n isOnline: PropTypes.bool,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n }).isRequired,\n};\n\nChannelSettings.defaultProps = {\n onBeforeUpdateChannel: null,\n queries: {},\n disableUserProfile: false,\n renderUserProfile: null,\n renderChannelProfile: null,\n onCloseClick: () => { },\n onChannelModified: () => { },\n};\n\nexport default withSendbirdContext(ChannelSettings);\n"],"names":["EditDetails","props","onSubmit","onCancel","channel","userId","theme","inputRef","useRef","formRef","hiddenInputRef","useState","currentImg","setCurrentImg","newFile","setNewFile","useContext","LocalizationContext","stringSet","title","name","MODAL__CHANNEL_INFORMATION__TITLE","BUTTON__SAVE","current","value","reportValidity","ButtonType","PRIMARY","e","preventDefault","MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE","display","URL","createObjectURL","target","files","click","LabelTypography","BUTTON_1","LabelColors","MODAL__CHANNEL_INFORMATION__UPLOAD","MODAL__CHANNEL_INFORMATION__CHANNEL_NAME","MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER","propTypes","PropTypes","func","isRequired","shape","string","ChannelProfile","disabled","onChannelInfoChange","showModal","setShowModal","SUBTITLE_2","ONBACKGROUND_1","ONBACKGROUND_2","CHANNEL_SETTING__PROFILE__EDIT","EditDetailsModal","bool","defaultProps","MembersModal","_a","hideModal","currentUser","_b","members","setMembers","_c","memberQuery","setMemberQuery","useEffect","memberListQuery","createMemberListQuery","limit","next","error","noop","hasNext","fetchMore","clientHeight","scrollTop","scrollHeight","o","map","member","UserListItem","parentRef","actionRef","myRole","toggleDropdown","IconTypes","MORE","IconColors","CONTENT_INVERSE","closeDropdown","role","addOperators","m","removeOperators","isBroadcast","isMuted","unmuteUser","muteUser","banUser","filter","SHOWN_MEMBER_MAX","avatarRef","UserProfileContext","disableUserProfile","renderUserProfile","profileUrl","paddingTop","paddingBottom","user","currentUserId","close","nickname","NO_NAME","MemebersAccordion","userQueryCreator","onInviteMemebers","swapParams","showMoreModal","setShowMoreModal","showAddUserModal","setShowAddUserModal","slice","length","ButtonTypes","SECONDARY","ButtonSizes","SMALL","CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS","CHANNEL_SETTING__MEMBERS__INVITE_MEMBER","InviteMembers","MODAL__INVITE_MEMBER__TITLE","BUTTON__INVITE","arrayOf","COMPONENT_NAME","className","action","injectingClassNames","Array","isArray","__spreadArrays","join","SUBTITLE_1","CAPTION_3","OperatorsModal","operators","setOperators","operatorQuery","setOperatorQuery","operatorListQuery","createOperatorListQuery","response","AddOperatorsModal","selectedMembers","setSelectedMembers","_d","selectedCount","Object","keys","ONBACKGROUND_3","CAPTION_1","MODAL__INVITE_MEMBER__SELECTEC","event","modifiedSelectedMembers","id","checked","OperatorList","sdk","showMore","setShowMore","showAdd","setShowAdd","_e","setHasNext","refershList","useCallback","operator","CHANNEL_SETTING__OPERATORS__TITLE_ALL","CHANNEL_SETTING__OPERATORS__TITLE_ADD","mapStoreToProps","store","getSdk","withSendbirdContext","userQuery","setUserQuery","userListQuery","MemberList","showAllMembers","setShowAllMembers","showInviteMembers","setShowInviteMembers","memberUserListQuery","selectedMemebers","inviteWithUserIds","BannedMembersModal","bannedUserListQuery","createBannedUserListQuery","users","unbanUser","BannedMemberList","refreshList","MutedMembersModal","mutedMemberFilter","MutedMemberList","kFormatter","num","Math","abs","toFixed","index","frozen","setFrozen","isFrozen","ICON_OPERATOR","CHANNEL_SETTING__OPERATORS__TITLE","MEMBERS","CHANNEL_SETTING__MEMBERS__TITLE","memberCount","ICON_MUTED","CHANNEL_SETTING__MUTED_MEMBERS__TITLE","ICON_BANNED","CHANNEL_SETTING__BANNED_MEMBERS__TITLE","FROZEN_LIGHT","CHANNEL_SETTING__FREEZE_CHANNEL","unfreeze","TOGGLE_ON","freeze","TOGGLE_OFF","ChannelSettings","onCloseClick","channelUrl","onChannelModified","renderChannelProfile","onBeforeUpdateChannel","sdkStore","stores","config","logger","isOnline","queries","userDefinedDisableUserProfile","userDefinedRenderProfile","userFilledApplicationUserListQuery","applicationUserListQuery","initialized","uuidv4","channelUpdateId","setChannelUpdateId","setChannel","invalidChannel","setInvalidChannel","showAccordion","setShowAccordion","showLeaveChannelModal","setShowLeaveChannelModal","info","warning","GroupChannel","getChannel","groupChannel","H_2","CHANNEL_SETTING__HEADER__TITLE","CLOSE","PlaceHolderTypes","WRONG","currentTitle","getErrorFirstCallback","params","data","updateChannel","AdminPanel","createDefaultUserListQuery","SHEVRON","then","res","LEAVE","CHANNEL_SETTING__LEAVE_CHANNEL__TITLE","leave","oneOfType","element","number","userIdsFilter","metaDataKeyFilter","metaDataValuesFilter","createApplicationUserListQuery","any"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/LeaveChannel-da8b5d0b.js b/dist/esm/LeaveChannel-da8b5d0b.js
new file mode 100644
index 0000000..fa0e1a9
--- /dev/null
+++ b/dist/esm/LeaveChannel-da8b5d0b.js
@@ -0,0 +1,290 @@
+import { e as LocalizationContext, c as _toConsumableArray, b as _slicedToArray, a as _objectSpread2, l as _defineProperty } from './LocalizationContext-619bafba.js';
+import React, { useContext, useState, useEffect } from 'react';
+import PropTypes from 'prop-types';
+import { b as Label, c as LabelTypography, d as LabelColors, M as Modal, T as Type } from './index-ec3bf9fe.js';
+import { U as UserListItem } from './index-aa89d60a.js';
+
+function Badge(_ref) {
+ var count = _ref.count,
+ maxLevel = _ref.maxLevel,
+ className = _ref.className;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var maximumNumber = parseInt('9'.repeat(maxLevel > 6 ? 6 : maxLevel), 10);
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React.createElement("div", {
+ className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-badge']).join(' ')
+ }, React.createElement("div", {
+ className: "sendbird-badge__text"
+ }, React.createElement(Label, {
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONCONTENT_1
+ }, count > maximumNumber ? "".concat(maximumNumber).concat(stringSet.BADGE__OVER) : count)));
+}
+Badge.propTypes = {
+ count: PropTypes.number.isRequired,
+ maxLevel: PropTypes.number,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+Badge.defaultProps = {
+ maxLevel: 2,
+ className: []
+};
+
+var filterUser = function filterUser(idsToFilter) {
+ return function (currentId) {
+ return idsToFilter.includes(currentId);
+ };
+};
+
+var InviteMembers = function InviteMembers(props) {
+ var userQueryCreator = props.userQueryCreator,
+ closeModal = props.closeModal,
+ _onSubmit = props.onSubmit,
+ submitText = props.submitText,
+ titleText = props.titleText,
+ idsToFilter = props.idsToFilter,
+ swapParams = props.swapParams;
+
+ var _useState = useState([]),
+ _useState2 = _slicedToArray(_useState, 2),
+ users = _useState2[0],
+ setUsers = _useState2[1];
+
+ var _useState3 = useState({}),
+ _useState4 = _slicedToArray(_useState3, 2),
+ selectedUsers = _useState4[0],
+ setSelectedUsers = _useState4[1];
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var _useState5 = useState({}),
+ _useState6 = _slicedToArray(_useState5, 2),
+ usersDataSource = _useState6[0],
+ setUsersDataSource = _useState6[1];
+
+ var selectedCount = Object.keys(selectedUsers).length;
+ useEffect(function () {
+ var applicationUserListQuery = userQueryCreator();
+ setUsersDataSource(applicationUserListQuery);
+ applicationUserListQuery.next(function (res, err) {
+ // eslint-disable-next-line no-underscore-dangle
+ var users_ = res;
+ var error = err;
+
+ if (swapParams) {
+ users_ = err;
+ error = users_;
+ }
+
+ if (error) {
+ return;
+ }
+
+ setUsers(users_);
+ });
+ }, []);
+ return React.createElement(Modal, {
+ onCancel: closeModal,
+ onSubmit: function onSubmit() {
+ var selectedUserList = Object.keys(selectedUsers);
+
+ if (selectedUserList.length > 0) {
+ _onSubmit(selectedUserList);
+
+ closeModal();
+ }
+ },
+ submitText: submitText,
+ titleText: titleText,
+ type: Type.PRIMARY
+ }, React.createElement("div", null, React.createElement(Label, {
+ color: selectedCount > 0 ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3,
+ type: LabelTypography.CAPTION_1
+ }, "".concat(selectedCount, " ").concat(stringSet.MODAL__INVITE_MEMBER__SELECTEC)), React.createElement("div", {
+ className: "sendbird-create-channel--scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = usersDataSource.hasNext;
+ var fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ usersDataSource.next(function (usersBatch, error) {
+ if (error) {
+ return;
+ }
+
+ setUsers([].concat(_toConsumableArray(users), _toConsumableArray(usersBatch)));
+ });
+ }
+ }
+ }, users.map(function (user) {
+ return !filterUser(idsToFilter)(user.userId) && React.createElement(UserListItem, {
+ key: user.userId,
+ user: user,
+ checkBox: true,
+ checked: selectedUsers[user.userId],
+ onChange: function onChange(event) {
+ var modifiedSelectedUsers = _objectSpread2({}, selectedUsers, _defineProperty({}, event.target.id, event.target.checked));
+
+ if (!event.target.checked) {
+ delete modifiedSelectedUsers[event.target.id];
+ }
+
+ setSelectedUsers(modifiedSelectedUsers);
+ }
+ });
+ }))));
+};
+
+InviteMembers.propTypes = {
+ idsToFilter: PropTypes.arrayOf(PropTypes.string),
+ swapParams: PropTypes.bool,
+ userQueryCreator: PropTypes.func.isRequired,
+ closeModal: PropTypes.func.isRequired,
+ onSubmit: PropTypes.func.isRequired,
+ submitText: PropTypes.string,
+ titleText: PropTypes.string
+};
+InviteMembers.defaultProps = {
+ swapParams: false,
+ submitText: 'create',
+ titleText: 'Create new channel',
+ idsToFilter: []
+};
+
+var createDefaultUserListQuery = function createDefaultUserListQuery(_ref) {
+ var sdk = _ref.sdk,
+ _ref$userFilledApplic = _ref.userFilledApplicationUserListQuery,
+ userFilledApplicationUserListQuery = _ref$userFilledApplic === void 0 ? {} : _ref$userFilledApplic;
+ var params = sdk.createApplicationUserListQuery();
+
+ if (userFilledApplicationUserListQuery) {
+ Object.keys(userFilledApplicationUserListQuery).forEach(function (key) {
+ params[key] = userFilledApplicationUserListQuery[key];
+ });
+ }
+
+ return params;
+};
+
+var getApplicationAttributes = function getApplicationAttributes() {
+ var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var _sdk$appInfo = sdk.appInfo,
+ appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
+ var _appInfo$applicationA = appInfo.applicationAttributes,
+ applicationAttributes = _appInfo$applicationA === void 0 ? [] : _appInfo$applicationA;
+ return applicationAttributes;
+};
+
+var isBroadcastChannelEnabled = function isBroadcastChannelEnabled() {
+ var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var ALLOW_BROADCAST_CHANNEL = 'allow_broadcast_channel';
+ var applicationAttributes = getApplicationAttributes(sdk);
+
+ if (Array.isArray(applicationAttributes)) {
+ return applicationAttributes.includes(ALLOW_BROADCAST_CHANNEL);
+ }
+
+ return false;
+};
+var isSuperGroupChannelEnabled = function isSuperGroupChannelEnabled() {
+ var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var ALLOW_SUPER_GROUP_CHANNEL = 'allow_super_group_channel';
+ var applicationAttributes = getApplicationAttributes(sdk);
+
+ if (Array.isArray(applicationAttributes)) {
+ return applicationAttributes.includes(ALLOW_SUPER_GROUP_CHANNEL);
+ }
+
+ return false;
+};
+var setChannelType = function setChannelType(params, type) {
+ if (type === 'broadcast') {
+ // eslint-disable-next-line no-param-reassign
+ params.isBroadcast = true;
+ }
+
+ if (type === 'supergroup') {
+ // eslint-disable-next-line no-param-reassign
+ params.isSuper = true;
+ }
+
+ return params;
+};
+var createChannel = function createChannel(sdk, selectedUsers, onBeforeCreateChannel, userId) {
+ var type = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'group';
+ return new Promise(function (resolve, reject) {
+ // have custom params
+ if (onBeforeCreateChannel) {
+ var _params = onBeforeCreateChannel(selectedUsers);
+
+ setChannelType(_params, type);
+ sdk.GroupChannel.createChannel(_params, function (response, error) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var groupChannel = response;
+ var err = error;
+
+ if (swapParams) {
+ groupChannel = error;
+ err = response;
+ }
+
+ if (err) {
+ reject(err);
+ }
+
+ resolve(groupChannel);
+ });
+ return;
+ }
+
+ var params = new sdk.GroupChannelParams();
+ params.addUserIds(selectedUsers);
+ params.isDistinct = false;
+
+ if (userId) {
+ params.operatorUserIds = [userId];
+ }
+
+ setChannelType(params, type); // do not have custom params
+
+ sdk.GroupChannel.createChannel(params, function (response, error) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var groupChannel = response;
+ var err = error;
+
+ if (swapParams) {
+ groupChannel = error;
+ err = response;
+ }
+
+ if (err) {
+ reject(err);
+ }
+
+ resolve(groupChannel);
+ });
+ });
+};
+
+var LeaveChannel = function LeaveChannel(props) {
+ var onCloseModal = props.onCloseModal,
+ onLeaveChannel = props.onLeaveChannel;
+ return React.createElement(Modal, {
+ onCancel: onCloseModal,
+ onSubmit: onLeaveChannel,
+ submitText: "Leave",
+ titleText: "Leave this channel?"
+ });
+};
+
+LeaveChannel.propTypes = {
+ onCloseModal: PropTypes.func.isRequired,
+ onLeaveChannel: PropTypes.func.isRequired
+};
+
+export { Badge as B, InviteMembers as I, LeaveChannel as L, isSuperGroupChannelEnabled as a, createChannel as b, createDefaultUserListQuery as c, isBroadcastChannelEnabled as i };
+//# sourceMappingURL=LeaveChannel-da8b5d0b.js.map
diff --git a/dist/esm/LeaveChannel-da8b5d0b.js.map b/dist/esm/LeaveChannel-da8b5d0b.js.map
new file mode 100644
index 0000000..37401ec
--- /dev/null
+++ b/dist/esm/LeaveChannel-da8b5d0b.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"LeaveChannel-da8b5d0b.js","sources":["../../../src/ui/Badge/index.jsx","../../../src/smart-components/InviteMembers/index.jsx","../../../src/smart-components/ChannelList/components/utils.js","../../../src/smart-components/ChannelSettings/components/LeaveChannel.jsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nexport default function Badge({\n count,\n maxLevel,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const maximumNumber = parseInt('9'.repeat((maxLevel > 6) ? 6 : maxLevel), 10);\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n
\n \n {\n (count > maximumNumber)\n ? `${maximumNumber}${stringSet.BADGE__OVER}`\n : count\n }\n \n
\n
\n );\n}\n\nBadge.propTypes = {\n count: PropTypes.number.isRequired,\n maxLevel: PropTypes.number,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nBadge.defaultProps = {\n maxLevel: 2,\n className: [],\n};\n","import React, { useState, useEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../../ui/Label';\nimport Modal from '../../ui/Modal';\nimport { Type as ButtonTypes } from '../../ui/Button/type';\nimport UserListItem from '../../ui/UserListItem';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nconst filterUser = (idsToFilter) => (currentId) => idsToFilter.includes(currentId);\n\nconst InviteMembers = (props) => {\n const {\n userQueryCreator,\n closeModal,\n onSubmit,\n submitText,\n titleText,\n idsToFilter,\n swapParams,\n } = props;\n\n const [users, setUsers] = useState([]);\n const [selectedUsers, setSelectedUsers] = useState({});\n const { stringSet } = useContext(LocalizationContext);\n const [usersDataSource, setUsersDataSource] = useState({});\n const selectedCount = Object.keys(selectedUsers).length;\n\n useEffect(() => {\n const applicationUserListQuery = userQueryCreator();\n setUsersDataSource(applicationUserListQuery);\n applicationUserListQuery.next((res, err) => {\n // eslint-disable-next-line no-underscore-dangle\n let users_ = res;\n let error = err;\n if (swapParams) {\n users_ = err;\n error = users_;\n }\n if (error) {\n return;\n }\n setUsers(users_);\n });\n }, []);\n\n return (\n {\n const selectedUserList = Object.keys(selectedUsers);\n if (selectedUserList.length > 0) {\n onSubmit(selectedUserList);\n closeModal();\n }\n }}\n submitText={submitText}\n titleText={titleText}\n type={ButtonTypes.PRIMARY}\n >\n \n
0) ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3}\n type={LabelTypography.CAPTION_1}\n >\n {`${selectedCount} ${stringSet.MODAL__INVITE_MEMBER__SELECTEC}`}\n \n
{\n const { hasNext } = usersDataSource;\n const fetchMore = (\n e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n usersDataSource.next((usersBatch, error) => {\n if (error) {\n return;\n }\n setUsers([\n ...users,\n ...usersBatch,\n ]);\n });\n }\n }}\n >\n {\n users.map((user) => (!filterUser(idsToFilter)(user.userId)) && (\n {\n const modifiedSelectedUsers = {\n ...selectedUsers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedUsers[event.target.id];\n }\n setSelectedUsers(modifiedSelectedUsers);\n }\n }\n />\n ))\n }\n
\n
\n \n );\n};\n\nInviteMembers.propTypes = {\n idsToFilter: PropTypes.arrayOf(PropTypes.string),\n swapParams: PropTypes.bool,\n userQueryCreator: PropTypes.func.isRequired,\n closeModal: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n submitText: PropTypes.string,\n titleText: PropTypes.string,\n};\nInviteMembers.defaultProps = {\n swapParams: false,\n submitText: 'create',\n titleText: 'Create new channel',\n idsToFilter: [],\n};\n\nexport default InviteMembers;\n","export const createDefaultUserListQuery = ({ sdk, userFilledApplicationUserListQuery = {} }) => {\n const params = sdk.createApplicationUserListQuery();\n if (userFilledApplicationUserListQuery) {\n Object.keys(userFilledApplicationUserListQuery).forEach((key) => {\n params[key] = userFilledApplicationUserListQuery[key];\n });\n }\n return params;\n};\n\nconst getApplicationAttributes = (sdk = {}) => {\n const { appInfo = {} } = sdk;\n const { applicationAttributes = [] } = appInfo;\n return applicationAttributes;\n};\n\nexport const isBroadcastChannelEnabled = (sdk = {}) => {\n const ALLOW_BROADCAST_CHANNEL = 'allow_broadcast_channel';\n const applicationAttributes = getApplicationAttributes(sdk);\n\n if (Array.isArray(applicationAttributes)) {\n return applicationAttributes.includes(ALLOW_BROADCAST_CHANNEL);\n }\n\n return false;\n};\nexport const isSuperGroupChannelEnabled = (sdk = {}) => {\n const ALLOW_SUPER_GROUP_CHANNEL = 'allow_super_group_channel';\n const applicationAttributes = getApplicationAttributes(sdk);\n\n if (Array.isArray(applicationAttributes)) {\n return applicationAttributes.includes(ALLOW_SUPER_GROUP_CHANNEL);\n }\n\n return false;\n};\n\nexport const setChannelType = (params, type) => {\n if (type === 'broadcast') {\n // eslint-disable-next-line no-param-reassign\n params.isBroadcast = true;\n }\n if (type === 'supergroup') {\n // eslint-disable-next-line no-param-reassign\n params.isSuper = true;\n }\n return params;\n};\n\nexport const createChannel = (\n sdk,\n selectedUsers,\n onBeforeCreateChannel,\n userId,\n type = 'group',\n) => new Promise((resolve, reject) => {\n // have custom params\n if (onBeforeCreateChannel) {\n const params = onBeforeCreateChannel(selectedUsers);\n setChannelType(params, type);\n sdk.GroupChannel.createChannel(params, (response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let groupChannel = response;\n let err = error;\n if (swapParams) {\n groupChannel = error;\n err = response;\n }\n if (err) {\n reject(err);\n }\n resolve(groupChannel);\n });\n return;\n }\n\n const params = new sdk.GroupChannelParams();\n params.addUserIds(selectedUsers);\n params.isDistinct = false;\n\n if (userId) {\n params.operatorUserIds = [userId];\n }\n setChannelType(params, type);\n // do not have custom params\n sdk.GroupChannel.createChannel(\n params,\n (response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let groupChannel = response;\n let err = error;\n if (swapParams) {\n groupChannel = error;\n err = response;\n }\n if (err) {\n reject(err);\n }\n resolve(groupChannel);\n },\n );\n});\n\nexport default createChannel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../../ui/Modal';\n\nconst LeaveChannel = (props) => {\n const {\n onCloseModal,\n onLeaveChannel,\n } = props;\n return (\n \n );\n};\n\nLeaveChannel.propTypes = {\n onCloseModal: PropTypes.func.isRequired,\n onLeaveChannel: PropTypes.func.isRequired,\n};\n\nexport default LeaveChannel;\n"],"names":["Badge","count","maxLevel","className","useContext","LocalizationContext","stringSet","maximumNumber","parseInt","repeat","injectingClassName","Array","isArray","join","LabelTypography","CAPTION_2","LabelColors","ONCONTENT_1","BADGE__OVER","propTypes","PropTypes","number","isRequired","oneOfType","string","arrayOf","defaultProps","filterUser","idsToFilter","currentId","includes","InviteMembers","props","userQueryCreator","closeModal","onSubmit","submitText","titleText","swapParams","useState","users","setUsers","selectedUsers","setSelectedUsers","usersDataSource","setUsersDataSource","selectedCount","Object","keys","length","useEffect","applicationUserListQuery","next","res","err","users_","error","selectedUserList","ButtonTypes","PRIMARY","ONBACKGROUND_3","CAPTION_1","MODAL__INVITE_MEMBER__SELECTEC","e","hasNext","fetchMore","target","clientHeight","scrollTop","scrollHeight","usersBatch","map","user","userId","event","modifiedSelectedUsers","id","checked","bool","func","createDefaultUserListQuery","sdk","userFilledApplicationUserListQuery","params","createApplicationUserListQuery","forEach","key","getApplicationAttributes","appInfo","applicationAttributes","isBroadcastChannelEnabled","ALLOW_BROADCAST_CHANNEL","isSuperGroupChannelEnabled","ALLOW_SUPER_GROUP_CHANNEL","setChannelType","type","isBroadcast","isSuper","createChannel","onBeforeCreateChannel","Promise","resolve","reject","GroupChannel","response","getErrorFirstCallback","groupChannel","GroupChannelParams","addUserIds","isDistinct","operatorUserIds","LeaveChannel","onCloseModal","onLeaveChannel"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/LocalizationContext-619bafba.js b/dist/esm/LocalizationContext-619bafba.js
new file mode 100644
index 0000000..393bf60
--- /dev/null
+++ b/dist/esm/LocalizationContext-619bafba.js
@@ -0,0 +1,361 @@
+import React from 'react';
+
+function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+}
+
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+}
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+
+ return obj;
+}
+
+function ownKeys(object, enumerableOnly) {
+ var keys = Object.keys(object);
+
+ if (Object.getOwnPropertySymbols) {
+ var symbols = Object.getOwnPropertySymbols(object);
+ if (enumerableOnly) symbols = symbols.filter(function (sym) {
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+ });
+ keys.push.apply(keys, symbols);
+ }
+
+ return keys;
+}
+
+function _objectSpread2(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? arguments[i] : {};
+
+ if (i % 2) {
+ ownKeys(Object(source), true).forEach(function (key) {
+ _defineProperty(target, key, source[key]);
+ });
+ } else if (Object.getOwnPropertyDescriptors) {
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+ } else {
+ ownKeys(Object(source)).forEach(function (key) {
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+ });
+ }
+ }
+
+ return target;
+}
+
+function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) _setPrototypeOf(subClass, superClass);
+}
+
+function _getPrototypeOf(o) {
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+ return o.__proto__ || Object.getPrototypeOf(o);
+ };
+ return _getPrototypeOf(o);
+}
+
+function _setPrototypeOf(o, p) {
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+
+ return _setPrototypeOf(o, p);
+}
+
+function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return self;
+}
+
+function _possibleConstructorReturn(self, call) {
+ if (call && (typeof call === "object" || typeof call === "function")) {
+ return call;
+ }
+
+ return _assertThisInitialized(self);
+}
+
+function _slicedToArray(arr, i) {
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
+}
+
+function _toConsumableArray(arr) {
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+}
+
+function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ }
+}
+
+function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+}
+
+function _iterableToArray(iter) {
+ if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+}
+
+function _iterableToArrayLimit(arr, i) {
+ if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
+ return;
+ }
+
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+ var _e = undefined;
+
+ try {
+ for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+}
+
+function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
+}
+
+function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance");
+}
+
+var SendbirdSdkContext = React.createContext();
+
+var withSendbirdContext = function withSendbirdContext(OriginalComponent, mapStoreToProps) {
+ var ContextAwareComponent = function ContextAwareComponent(props) {
+ return React.createElement(SendbirdSdkContext.Consumer, null, function (context) {
+ if (mapStoreToProps && typeof mapStoreToProps !== 'function') {
+ // eslint-disable-next-line no-console
+ console.warn('Second parameter to withSendbirdContext must be a pure function');
+ } // todo - memoize
+
+
+ var mergedProps = mapStoreToProps && typeof mapStoreToProps === 'function' ? _objectSpread2({}, mapStoreToProps(context), {}, props) : _objectSpread2({}, context, {}, props); // eslint-disable-next-line react/jsx-props-no-spreading
+
+ return React.createElement(OriginalComponent, mergedProps);
+ });
+ };
+
+ var componentName = OriginalComponent.displayName || OriginalComponent.name || 'Component';
+ ContextAwareComponent.displayName = "SendbirdAware".concat(componentName);
+ return ContextAwareComponent;
+};
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+ __assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+};
+
+function __spreadArrays() {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+ r[k] = a[j];
+ return r;
+}
+
+/* eslint-disable no-bitwise */
+
+/* eslint-disable eqeqeq */
+
+/* eslint-disable no-mixed-operators */
+// https://stackoverflow.com/a/2117523
+// used mainly for dom key generation
+var uuidv4 = function uuidv4() {
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+ var r = Math.random() * 16 | 0;
+ var v = c === 'x' ? r : r & 0x3 | 0x8;
+ return v.toString(16);
+ });
+};
+
+var getStringSet = function getStringSet() {
+ var lang = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
+ var stringSet = {
+ en: {
+ OPEN_CHANNEL_SETTINGS__OPERATOR_TITLE: 'Channel Information',
+ OPEN_CHANNEL_SETTINGS__OPERATOR_URL: 'URL',
+ OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE: 'Participants',
+ OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL: 'Delete channel',
+ OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE: 'Delete this channel',
+ OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT: 'Delete',
+ OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE: 'Participants',
+ OPEN_CHANNEL_SETTINGS__EMPTY_LIST: 'No participants yet',
+ OPEN_CHANNEL_SETTINGS__SEE_ALL: 'See all participants',
+ OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE: 'All participants',
+ OPEN_CHANNEL_SETTINGS__NO_TITLE: '(No title)',
+ OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS: 'participants',
+ TRYING_TO_CONNECT: 'Trying to connect…',
+ USER_PROFILE__MESSAGE: 'Message',
+ USER_PROFILE__USER_ID: 'User ID',
+ EDIT_PROFILE__TITLE: 'My profile',
+ EDIT_PROFILE__IMAGE_LABEL: 'Profile image',
+ EDIT_PROFILE__IMAGE_UPLOAD: 'Upload',
+ EDIT_PROFILE__NICKNAME_LABEL: 'Nickname',
+ EDIT_PROFILE__NICKNAME_PLACEHOLDER: 'Enter your nickname',
+ EDIT_PROFILE__USERID_LABEL: 'User ID',
+ EDIT_PROFILE__THEME_LABEL: 'Dark theme',
+ CHANNEL_LIST__TITLE: 'Channels',
+ CHANNEL__MESSAGE_INPUT__PLACE_HOLDER: 'Enter message',
+ CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED: 'Chat is unavailable in this channel',
+ CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED: 'Chat is unavailable because you are being muted',
+ CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE: 'new message(s) since',
+ CHANNEL__MESSAGE_LIST__NOTIFICATION__ON: 'on',
+ CHANNEL_SETTING__HEADER__TITLE: 'Channel information',
+ CHANNEL_SETTING__PROFILE__EDIT: 'Edit',
+ CHANNEL_SETTING__MEMBERS__TITLE: 'Members',
+ CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS: 'All members',
+ CHANNEL_SETTING__MEMBERS__INVITE_MEMBER: 'Invite users',
+ CHANNEL_SETTING__LEAVE_CHANNEL__TITLE: 'Leave channel',
+ CHANNEL_SETTING__OPERATORS__TITLE: 'Operators',
+ CHANNEL_SETTING__OPERATORS__TITLE_ALL: 'All operators',
+ CHANNEL_SETTING__OPERATORS__TITLE_ADD: 'Add operator',
+ CHANNEL_SETTING__MUTED_MEMBERS__TITLE: 'Muted members',
+ CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL: 'All muted members',
+ CHANNEL_SETTING__BANNED_MEMBERS__TITLE: 'Banned members',
+ CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL: 'All banned members',
+ CHANNEL_SETTING__FREEZE_CHANNEL: 'Freeze Channel',
+ BUTTON__CANCEL: 'Cancel',
+ BUTTON__DELETE: 'Delete',
+ BUTTON__SAVE: 'Save',
+ BUTTON__CREATE: 'Create',
+ BUTTON__INVITE: 'Invite',
+ BUTTON__CLOSE: 'Close',
+ BADGE__OVER: '+',
+ MODAL__DELETE_MESSAGE__TITLE: 'Delete this message?',
+ MODAL__CHANNEL_INFORMATION__TITLE: 'Edit channel information',
+ MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE: 'Channel image',
+ MODAL__CHANNEL_INFORMATION__UPLOAD: 'Upload',
+ MODAL__CHANNEL_INFORMATION__CHANNEL_NAME: 'Channel name',
+ MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER: 'Enter name',
+ MODAL__INVITE_MEMBER__TITLE: 'Invite member',
+ MODAL__INVITE_MEMBER__SELECTEC: 'selected',
+ MODAL__CREATE_CHANNEL__TITLE: 'New channel',
+ MODAL__CREATE_CHANNEL__SELECTED: 'selected',
+ MODAL__USER_LIST__TITLE: 'members',
+ TYPING_INDICATOR__IS_TYPING: 'is typing...',
+ TYPING_INDICATOR__AND: 'and',
+ TYPING_INDICATOR__ARE_TYPING: 'are typing...',
+ TYPING_INDICATOR__MULTIPLE_TYPING: 'Several people are typing...',
+ MESSAGE_STATUS__SENDING_FAILED: 'Couldn\'t send message.',
+ MESSAGE_STATUS__TRY_AGAIN: 'Try again',
+ MESSAGE_STATUS__OR: 'or',
+ MESSAGE_STATUS__DELETE: 'delete',
+ PLACE_HOLDER__NO_CHANNEL: 'No channels',
+ CHANNEL_FROZEN: 'Channel frozen',
+ MUTED_PL: 'Channel frozen',
+ PLACE_HOLDER__WRONG: 'Something went wrong',
+ PLACE_HOLDER__RETRY_TO_CONNECT: 'Retry',
+ NO_TITLE: 'No title',
+ NO_NAME: '(No name)',
+ NO_MEMBERS: '(No members)',
+ TOOLTIP__AND_YOU: ', and you',
+ TOOLTIP__YOU: 'you',
+ TOOLTIP__UNKOWN_USER: '(no name)',
+ UNKNOWN__UNKNOWN_MESSAGE_TYPE: '(Unknown message type)',
+ UNKNOWN__CANNOT_READ_MESSAGE: 'Cannot read this message.',
+ MESSAGE_EDITED: '(edited)',
+ CONTEXT_MENU_DROPDOWN__COPY: 'Copy',
+ CONTEXT_MENU_DROPDOWN__EDIT: 'Edit',
+ CONTEXT_MENU_DROPDOWN__RESEND: 'Resend',
+ CONTEXT_MENU_DROPDOWN__DELETE: 'Delete'
+ }
+ };
+ return stringSet[lang];
+};
+
+var LocalizationContext = React.createContext({
+ stringSet: getStringSet('en')
+});
+
+var LocalizationProvider = function LocalizationProvider(props) {
+ var children = props.children;
+ return React.createElement(LocalizationContext.Provider, {
+ value: props
+ }, children);
+};
+
+export { LocalizationProvider as L, SendbirdSdkContext as S, __assign as _, _objectSpread2 as a, _slicedToArray as b, _toConsumableArray as c, __spreadArrays as d, LocalizationContext as e, _inherits as f, getStringSet as g, _createClass as h, _classCallCheck as i, _possibleConstructorReturn as j, _getPrototypeOf as k, _defineProperty as l, _assertThisInitialized as m, uuidv4 as n, uuidv4 as u, withSendbirdContext as w };
+//# sourceMappingURL=LocalizationContext-619bafba.js.map
diff --git a/dist/esm/LocalizationContext-619bafba.js.map b/dist/esm/LocalizationContext-619bafba.js.map
new file mode 100644
index 0000000..3b19bdc
--- /dev/null
+++ b/dist/esm/LocalizationContext-619bafba.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"LocalizationContext-619bafba.js","sources":["../../../src/lib/SendbirdSdkContext.jsx","../../../node_modules/tslib/tslib.es6.js","../../../src/utils/uuid.ts","../../../src/ui/Label/stringSet.js","../../../src/lib/LocalizationContext.tsx"],"sourcesContent":["import React from 'react';\n\nexport const SendbirdSdkContext = React.createContext();\n\nconst withSendbirdContext = (OriginalComponent, mapStoreToProps) => {\n const ContextAwareComponent = (props) => (\n \n {(context) => {\n if (mapStoreToProps && typeof mapStoreToProps !== 'function') {\n // eslint-disable-next-line no-console\n console.warn('Second parameter to withSendbirdContext must be a pure function');\n }\n // todo - memoize\n const mergedProps = (mapStoreToProps && typeof mapStoreToProps === 'function')\n ? { ...mapStoreToProps(context), ...props }\n : { ...context, ...props };\n // eslint-disable-next-line react/jsx-props-no-spreading\n return ;\n }}\n \n );\n\n const componentName = OriginalComponent.displayName || OriginalComponent.name || 'Component';\n ContextAwareComponent.displayName = `SendbirdAware${componentName}`;\n\n return ContextAwareComponent;\n};\n\nexport default withSendbirdContext;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* eslint-disable no-bitwise */\n/* eslint-disable eqeqeq */\n/* eslint-disable no-mixed-operators */\n// https://stackoverflow.com/a/2117523\n// used mainly for dom key generation\nexport const uuidv4 = (): string => 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n});\n\nexport default uuidv4;\n","const getStringSet = (lang = 'en') => {\n const stringSet = {\n en: {\n OPEN_CHANNEL_SETTINGS__OPERATOR_TITLE: 'Channel Information',\n OPEN_CHANNEL_SETTINGS__OPERATOR_URL: 'URL',\n OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE: 'Participants',\n OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL: 'Delete channel',\n OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE: 'Delete this channel',\n OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT: 'Delete',\n OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE: 'Participants',\n OPEN_CHANNEL_SETTINGS__EMPTY_LIST: 'No participants yet',\n OPEN_CHANNEL_SETTINGS__SEE_ALL: 'See all participants',\n OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE: 'All participants',\n OPEN_CHANNEL_SETTINGS__NO_TITLE: '(No title)',\n OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS: 'participants',\n TRYING_TO_CONNECT: 'Trying to connect…',\n USER_PROFILE__MESSAGE: 'Message',\n USER_PROFILE__USER_ID: 'User ID',\n EDIT_PROFILE__TITLE: 'My profile',\n EDIT_PROFILE__IMAGE_LABEL: 'Profile image',\n EDIT_PROFILE__IMAGE_UPLOAD: 'Upload',\n EDIT_PROFILE__NICKNAME_LABEL: 'Nickname',\n EDIT_PROFILE__NICKNAME_PLACEHOLDER: 'Enter your nickname',\n EDIT_PROFILE__USERID_LABEL: 'User ID',\n EDIT_PROFILE__THEME_LABEL: 'Dark theme',\n CHANNEL_LIST__TITLE: 'Channels',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER: 'Enter message',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED: 'Chat is unavailable in this channel',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED: 'Chat is unavailable because you are being muted',\n CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE: 'new message(s) since',\n CHANNEL__MESSAGE_LIST__NOTIFICATION__ON: 'on',\n CHANNEL_SETTING__HEADER__TITLE: 'Channel information',\n CHANNEL_SETTING__PROFILE__EDIT: 'Edit',\n CHANNEL_SETTING__MEMBERS__TITLE: 'Members',\n CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS: 'All members',\n CHANNEL_SETTING__MEMBERS__INVITE_MEMBER: 'Invite users',\n CHANNEL_SETTING__LEAVE_CHANNEL__TITLE: 'Leave channel',\n CHANNEL_SETTING__OPERATORS__TITLE: 'Operators',\n CHANNEL_SETTING__OPERATORS__TITLE_ALL: 'All operators',\n CHANNEL_SETTING__OPERATORS__TITLE_ADD: 'Add operator',\n CHANNEL_SETTING__MUTED_MEMBERS__TITLE: 'Muted members',\n CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL: 'All muted members',\n CHANNEL_SETTING__BANNED_MEMBERS__TITLE: 'Banned members',\n CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL: 'All banned members',\n CHANNEL_SETTING__FREEZE_CHANNEL: 'Freeze Channel',\n BUTTON__CANCEL: 'Cancel',\n BUTTON__DELETE: 'Delete',\n BUTTON__SAVE: 'Save',\n BUTTON__CREATE: 'Create',\n BUTTON__INVITE: 'Invite',\n BUTTON__CLOSE: 'Close',\n BADGE__OVER: '+',\n MODAL__DELETE_MESSAGE__TITLE: 'Delete this message?',\n MODAL__CHANNEL_INFORMATION__TITLE: 'Edit channel information',\n MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE: 'Channel image',\n MODAL__CHANNEL_INFORMATION__UPLOAD: 'Upload',\n MODAL__CHANNEL_INFORMATION__CHANNEL_NAME: 'Channel name',\n MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER: 'Enter name',\n MODAL__INVITE_MEMBER__TITLE: 'Invite member',\n MODAL__INVITE_MEMBER__SELECTEC: 'selected',\n MODAL__CREATE_CHANNEL__TITLE: 'New channel',\n MODAL__CREATE_CHANNEL__SELECTED: 'selected',\n MODAL__USER_LIST__TITLE: 'members',\n TYPING_INDICATOR__IS_TYPING: 'is typing...',\n TYPING_INDICATOR__AND: 'and',\n TYPING_INDICATOR__ARE_TYPING: 'are typing...',\n TYPING_INDICATOR__MULTIPLE_TYPING: 'Several people are typing...',\n MESSAGE_STATUS__SENDING_FAILED: 'Couldn\\'t send message.',\n MESSAGE_STATUS__TRY_AGAIN: 'Try again',\n MESSAGE_STATUS__OR: 'or',\n MESSAGE_STATUS__DELETE: 'delete',\n PLACE_HOLDER__NO_CHANNEL: 'No channels',\n CHANNEL_FROZEN: 'Channel frozen',\n MUTED_PL: 'Channel frozen',\n PLACE_HOLDER__WRONG: 'Something went wrong',\n PLACE_HOLDER__RETRY_TO_CONNECT: 'Retry',\n NO_TITLE: 'No title',\n NO_NAME: '(No name)',\n NO_MEMBERS: '(No members)',\n TOOLTIP__AND_YOU: ', and you',\n TOOLTIP__YOU: 'you',\n TOOLTIP__UNKOWN_USER: '(no name)',\n UNKNOWN__UNKNOWN_MESSAGE_TYPE: '(Unknown message type)',\n UNKNOWN__CANNOT_READ_MESSAGE: 'Cannot read this message.',\n MESSAGE_EDITED: '(edited)',\n CONTEXT_MENU_DROPDOWN__COPY: 'Copy',\n CONTEXT_MENU_DROPDOWN__EDIT: 'Edit',\n CONTEXT_MENU_DROPDOWN__RESEND: 'Resend',\n CONTEXT_MENU_DROPDOWN__DELETE: 'Delete',\n },\n };\n return stringSet[lang];\n};\n\nexport default getStringSet;\n","import React from 'react';\n\nimport getStringSet from '../ui/Label/stringSet';\n\nconst LocalizationContext = React.createContext({\n stringSet: getStringSet('en'),\n});\n\ninterface LocalizationProviderProps {\n stringSet: Record;\n children: React.Component;\n}\n\nconst LocalizationProvider = (props: LocalizationProviderProps): React.ReactNode => {\n const { children } = props;\n return (\n \n {children}\n \n );\n};\n\nexport { LocalizationContext, LocalizationProvider };\n"],"names":["SendbirdSdkContext","React","createContext","withSendbirdContext","OriginalComponent","mapStoreToProps","ContextAwareComponent","props","context","console","warn","mergedProps","componentName","displayName","name","uuidv4","replace","c","r","Math","random","v","toString","getStringSet","lang","stringSet","en","OPEN_CHANNEL_SETTINGS__OPERATOR_TITLE","OPEN_CHANNEL_SETTINGS__OPERATOR_URL","OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT","OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE","OPEN_CHANNEL_SETTINGS__EMPTY_LIST","OPEN_CHANNEL_SETTINGS__SEE_ALL","OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE","OPEN_CHANNEL_SETTINGS__NO_TITLE","OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS","TRYING_TO_CONNECT","USER_PROFILE__MESSAGE","USER_PROFILE__USER_ID","EDIT_PROFILE__TITLE","EDIT_PROFILE__IMAGE_LABEL","EDIT_PROFILE__IMAGE_UPLOAD","EDIT_PROFILE__NICKNAME_LABEL","EDIT_PROFILE__NICKNAME_PLACEHOLDER","EDIT_PROFILE__USERID_LABEL","EDIT_PROFILE__THEME_LABEL","CHANNEL_LIST__TITLE","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED","CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE","CHANNEL__MESSAGE_LIST__NOTIFICATION__ON","CHANNEL_SETTING__HEADER__TITLE","CHANNEL_SETTING__PROFILE__EDIT","CHANNEL_SETTING__MEMBERS__TITLE","CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS","CHANNEL_SETTING__MEMBERS__INVITE_MEMBER","CHANNEL_SETTING__LEAVE_CHANNEL__TITLE","CHANNEL_SETTING__OPERATORS__TITLE","CHANNEL_SETTING__OPERATORS__TITLE_ALL","CHANNEL_SETTING__OPERATORS__TITLE_ADD","CHANNEL_SETTING__MUTED_MEMBERS__TITLE","CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL","CHANNEL_SETTING__BANNED_MEMBERS__TITLE","CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL","CHANNEL_SETTING__FREEZE_CHANNEL","BUTTON__CANCEL","BUTTON__DELETE","BUTTON__SAVE","BUTTON__CREATE","BUTTON__INVITE","BUTTON__CLOSE","BADGE__OVER","MODAL__DELETE_MESSAGE__TITLE","MODAL__CHANNEL_INFORMATION__TITLE","MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE","MODAL__CHANNEL_INFORMATION__UPLOAD","MODAL__CHANNEL_INFORMATION__CHANNEL_NAME","MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER","MODAL__INVITE_MEMBER__TITLE","MODAL__INVITE_MEMBER__SELECTEC","MODAL__CREATE_CHANNEL__TITLE","MODAL__CREATE_CHANNEL__SELECTED","MODAL__USER_LIST__TITLE","TYPING_INDICATOR__IS_TYPING","TYPING_INDICATOR__AND","TYPING_INDICATOR__ARE_TYPING","TYPING_INDICATOR__MULTIPLE_TYPING","MESSAGE_STATUS__SENDING_FAILED","MESSAGE_STATUS__TRY_AGAIN","MESSAGE_STATUS__OR","MESSAGE_STATUS__DELETE","PLACE_HOLDER__NO_CHANNEL","CHANNEL_FROZEN","MUTED_PL","PLACE_HOLDER__WRONG","PLACE_HOLDER__RETRY_TO_CONNECT","NO_TITLE","NO_NAME","NO_MEMBERS","TOOLTIP__AND_YOU","TOOLTIP__YOU","TOOLTIP__UNKOWN_USER","UNKNOWN__UNKNOWN_MESSAGE_TYPE","UNKNOWN__CANNOT_READ_MESSAGE","MESSAGE_EDITED","CONTEXT_MENU_DROPDOWN__COPY","CONTEXT_MENU_DROPDOWN__EDIT","CONTEXT_MENU_DROPDOWN__RESEND","CONTEXT_MENU_DROPDOWN__DELETE","LocalizationContext","LocalizationProvider","children"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/OpenChannel.js b/dist/esm/OpenChannel.js
new file mode 100644
index 0000000..7c2a098
--- /dev/null
+++ b/dist/esm/OpenChannel.js
@@ -0,0 +1,2841 @@
+import { e as LocalizationContext, n as uuidv4, d as __spreadArrays, _ as __assign, w as withSendbirdContext } from './LocalizationContext-619bafba.js';
+import React, { useContext, useRef, useState, useMemo, useEffect, useReducer, useCallback } from 'react';
+import 'prop-types';
+import { b as Label, c as LabelTypography, L as LabelStringSet, A as Avatar, I as Icon, a as IconTypes, g as IconColors, d as LabelColors, e as IconButton, n as UserProfileContext, C as ContextMenu, h as MenuItems, o as UserProfile, i as MenuItem, r as ImageRenderer, f as TextButton, M as Modal, p as SEND_USER_MESSAGE, S as SEND_MESSAGE_START, q as SEND_FILE_MESSAGE, U as UPDATE_USER_MESSAGE, D as DELETE_MESSAGE, P as PlaceHolder, t as PlaceHolderTypes, l as UserProfileProvider } from './index-ec3bf9fe.js';
+import format from 'date-fns/format';
+import 'react-dom';
+import { M as MessageInput, L as LinkLabel, i as isImage, a as isVideo, D as DateSeparator, F as FileViewer, c as compareIds } from './index-19f570c9.js';
+import isSameDay from 'date-fns/isSameDay';
+
+var getMessageCreatedAt = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+var scrollIntoLast = function scrollIntoLast(selector, intialTry) {
+ if (intialTry === void 0) {
+ intialTry = 0;
+ }
+
+ var MAX_TRIES = 10;
+ var currentTry = intialTry;
+
+ if (currentTry > MAX_TRIES) {
+ return;
+ }
+
+ try {
+ var nodes = document.querySelectorAll(selector);
+ var last = nodes[nodes.length - 1];
+ last.scrollIntoView(false);
+ /** alignToTop: false */
+ } catch (error) {
+ setTimeout(function () {
+ scrollIntoLast(selector, currentTry + 1);
+ }, 500 * currentTry);
+ }
+};
+var isSameGroup = function isSameGroup(message, comparingMessage) {
+ if (!message || !comparingMessage || message.messageType === 'admin' || comparingMessage.messageType === 'admin') {
+ return false;
+ }
+
+ return message.sendingStatus === comparingMessage.sendingStatus && message.sender.userId === comparingMessage.sender.userId && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage);
+};
+var compareMessagesForGrouping = function compareMessagesForGrouping(prevMessage, currMessage, nextMessage) {
+ return [isSameGroup(prevMessage, currMessage), isSameGroup(currMessage, nextMessage)];
+};
+var kFormatter = function kFormatter(num) {
+ if (Math.abs(num) > 999999) {
+ return (Math.abs(num) / 1000000).toFixed(1) + "M";
+ }
+
+ if (Math.abs(num) > 999) {
+ return (Math.abs(num) / 1000).toFixed(1) + "K";
+ }
+
+ return "" + num;
+};
+var isOperator = function isOperator(openChannel, userId) {
+ var operators = openChannel.operators;
+
+ if (operators.map(function (operator) {
+ return operator.userId;
+ }).indexOf(userId) < 0) {
+ return false;
+ }
+
+ return true;
+};
+var isDisabledBecauseFrozen = function isDisabledBecauseFrozen(openChannel, userId) {
+ var isFrozen = openChannel.isFrozen;
+ return isFrozen && !isOperator(openChannel, userId);
+};
+
+var MessageInputWrapper = function MessageInputWrapper(_a, ref) {
+ var channel = _a.channel,
+ user = _a.user,
+ disabled = _a.disabled,
+ onSendMessage = _a.onSendMessage,
+ onFileUpload = _a.onFileUpload,
+ renderMessageInput = _a.renderMessageInput;
+
+ if (!channel) {
+ return;
+ }
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+
+ if (renderMessageInput) {
+ return renderMessageInput({
+ channel: channel,
+ user: user,
+ disabled: disabled
+ });
+ }
+
+ return React.createElement("div", {
+ className: "sendbird-openchannel-footer"
+ }, React.createElement(MessageInput, {
+ ref: ref,
+ disabled: disabled,
+ onSendMessage: onSendMessage,
+ onFileUpload: onFileUpload,
+ placeholder: disabled && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED // add disabled because of muted state
+
+ }));
+};
+
+var MessageInputWrapper$1 = React.forwardRef(MessageInputWrapper);
+
+var FrozenNotification = function FrozenNotification() {
+ var stringSet = useContext(LocalizationContext).stringSet;
+ return React.createElement("div", {
+ className: "sendbird-frozen-channel-notification"
+ }, React.createElement(Label, {
+ className: "sendbird-frozen-channel-notification__text",
+ type: LabelTypography.CAPTION_2
+ }, stringSet.CHANNEL_FROZEN));
+};
+
+var COMPONENT_CLASS_NAME = 'sendbird-openchannel-conversation-header';
+function OpenchannelConversationHeader(_a) {
+ var coverImage = _a.coverImage,
+ _b = _a.title,
+ title = _b === void 0 ? LabelStringSet.NO_TITLE : _b,
+ _c = _a.subTitle,
+ subTitle = _c === void 0 ? LabelStringSet.NO_TITLE : _c,
+ onActionClick = _a.onActionClick;
+ return React.createElement("div", {
+ className: COMPONENT_CLASS_NAME
+ }, React.createElement("div", {
+ className: COMPONENT_CLASS_NAME + "__left"
+ }, coverImage ? React.createElement(Avatar, {
+ className: COMPONENT_CLASS_NAME + "__left__cover-image",
+ src: coverImage,
+ alt: "channel cover image",
+ width: "32px",
+ height: "32px"
+ }) : React.createElement(Icon, {
+ className: COMPONENT_CLASS_NAME + "__left__cover-image--icon",
+ width: "32px",
+ height: "32px",
+ type: IconTypes.AVATAR_NO_IMAGE,
+ fillColor: IconColors.BACKGROUND_3
+ }), React.createElement(Label, {
+ className: COMPONENT_CLASS_NAME + "__left__title",
+ type: LabelTypography.H_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, title), React.createElement(Label, {
+ className: COMPONENT_CLASS_NAME + "__left__sub-title",
+ type: LabelTypography.BODY_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, subTitle)), React.createElement("div", {
+ className: COMPONENT_CLASS_NAME + "__right"
+ }, React.createElement(IconButton, {
+ className: COMPONENT_CLASS_NAME + "__right__trigger",
+ width: "32px",
+ height: "32px",
+ onClick: onActionClick
+ }, React.createElement(Icon, {
+ type: IconTypes.INFO,
+ fillColor: IconColors.PRIMARY,
+ width: "24px",
+ height: "24px"
+ }))));
+}
+
+var copyToClipboard = function copyToClipboard(text) {
+ // @ts-ignore: Unreachable code error
+ if (window.clipboardData && window.clipboardData.setData) {
+ // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.
+ // @ts-ignore: Unreachable code error
+ return window.clipboardData.setData('Text', text);
+ }
+
+ if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
+ var textarea = document.createElement('textarea');
+ textarea.textContent = text;
+ textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.
+
+ document.body.appendChild(textarea);
+ textarea.select();
+
+ try {
+ return document.execCommand('copy'); // Security exception may be thrown by some browsers.
+ } catch (ex) {
+ return false;
+ } finally {
+ document.body.removeChild(textarea);
+ }
+ }
+
+ return false;
+};
+
+var OpenChannelMessageStatusTypes = {
+ NONE: 'none',
+ PENDING: 'pending',
+ FAILED: 'failed',
+ CANCELED: 'canceled',
+ SUCCEEDED: 'succeeded'
+};
+var getSenderFromMessage = function getSenderFromMessage(message) {
+ return message.sender || message._sender;
+};
+var checkIsSent = function checkIsSent(status) {
+ return status === OpenChannelMessageStatusTypes.SUCCEEDED;
+};
+var checkIsByMe = function checkIsByMe(message, userId) {
+ return getSenderFromMessage(message).userId === userId;
+};
+var isFineCopy = function isFineCopy(_a) {
+ var message = _a.message;
+ return message.messageType === 'user' && message.message.length > 0;
+};
+var isFineResend = function isFineResend(_a) {
+ var message = _a.message,
+ status = _a.status,
+ userId = _a.userId;
+ return checkIsByMe(message, userId) && !checkIsSent(status) && message.isResendable && message.isResendable();
+};
+var isFineEdit = function isFineEdit(_a) {
+ var message = _a.message,
+ status = _a.status,
+ userId = _a.userId;
+ return checkIsByMe(message, userId) && checkIsSent(status);
+};
+var isFineDelete = function isFineDelete(_a) {
+ var message = _a.message,
+ userId = _a.userId;
+ return checkIsByMe(message, userId);
+};
+var showMenuTrigger = function showMenuTrigger(props) {
+ var message = props.message,
+ status = props.status,
+ userId = props.userId;
+
+ if (message.messageType === 'user') {
+ return isFineDelete({
+ message: message,
+ status: status,
+ userId: userId
+ }) || isFineEdit({
+ message: message,
+ status: status,
+ userId: userId
+ }) || isFineCopy({
+ message: message,
+ status: status,
+ userId: userId
+ }) || isFineResend({
+ message: message,
+ status: status,
+ userId: userId
+ });
+ } else {
+ return isFineDelete({
+ message: message,
+ status: status,
+ userId: userId
+ }) || isFineResend({
+ message: message,
+ status: status,
+ userId: userId
+ });
+ }
+};
+
+function OpenchannelUserMessage(_a) {
+ var message = _a.message,
+ className = _a.className,
+ userId = _a.userId,
+ resendMessage = _a.resendMessage,
+ disabled = _a.disabled,
+ showEdit = _a.showEdit,
+ showRemove = _a.showRemove,
+ chainTop = _a.chainTop,
+ status = _a.status;
+
+ if (!message || message.messageType !== 'user') {
+ return null;
+ } // hooks
+
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+
+ var _b = useContext(UserProfileContext),
+ disableUserProfile = _b.disableUserProfile,
+ renderUserProfile = _b.renderUserProfile;
+
+ var messageRef = useRef(null);
+ var avatarRef = useRef(null);
+ var contextMenuRef = useRef(null);
+
+ var _c = useState({}),
+ contextStyle = _c[0],
+ setContextStyle = _c[1]; // consts
+
+
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push("sendbird-openchannel-user-message");
+ var isByMe = checkIsByMe(message, userId);
+ var sender = getSenderFromMessage(message);
+ var MemoizedMessageText = useMemo(function () {
+ return function () {
+ var splitMessage = message.message.split(/\r/);
+ var matchedMessage = splitMessage.map(function (word) {
+ return word !== '' ? word : React.createElement("br", null);
+ });
+
+ if (message.updatedAt > 0) {
+ matchedMessage.push(React.createElement(Label, {
+ key: uuidv4(),
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_2,
+ calssName: "sendbird-openchannel-user-message-word"
+ }, " " + stringSet.MESSAGE_EDITED + " "));
+ }
+
+ return matchedMessage;
+ };
+ }, [message, message.updatedAt]); // place context menu top depending clientHeight of message component
+
+ useEffect(function () {
+ if (messageRef.current.clientHeight > 36) {
+ setContextStyle({
+ top: '8px '
+ });
+ } else {
+ setContextStyle({
+ top: '2px'
+ });
+ }
+ }, [window.innerWidth]);
+ return React.createElement("div", {
+ className: injectingClassName.join(' '),
+ ref: messageRef
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-user-message__left"
+ }, !chainTop && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ className: "sendbird-openchannel-user-message__left__avatar",
+ src: sender.profileUrl || '',
+ ref: avatarRef,
+ width: "28px",
+ height: "28px",
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ }
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: avatarRef,
+ parentContainRef: avatarRef,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: sender,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: sender,
+ onSuccess: closeDropdown,
+ disableMessaging: true
+ }));
+ }
+ })), React.createElement("div", {
+ className: "sendbird-openchannel-user-message__right"
+ }, !chainTop && React.createElement("div", {
+ className: "sendbird-openchannel-user-message__right__top"
+ }, React.createElement(Label, {
+ className: "sendbird-openchannel-user-message__right__top__sender-name",
+ type: LabelTypography.CAPTION_2,
+ color: isByMe ? LabelColors.SECONDARY_3 : LabelColors.ONBACKGROUND_2
+ }, sender && (sender.friendName || sender.nickname || sender.userId)), React.createElement(Label, {
+ className: "sendbird-openchannel-user-message__right__top__sent-at",
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_3
+ }, message.createdAt && format(message.createdAt, 'p'))), React.createElement("div", {
+ className: "sendbird-openchannel-user-message__right__bottom"
+ }, React.createElement(Label, {
+ className: "sendbird-openchannel-user-message__right__bottom__message",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, MemoizedMessageText()))), React.createElement("div", {
+ className: "sendbird-openchannel-user-message__context-menu",
+ ref: contextMenuRef,
+ style: contextStyle
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return showMenuTrigger({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(IconButton, {
+ className: "sendbird-openchannel-user-message__context-menu--icon",
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: contextMenuRef,
+ parentContainRef: contextMenuRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isFineCopy({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ className: "sendbird-openchannel-user-message__context-menu__copy",
+ onClick: function onClick() {
+ copyToClipboard(message.message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__COPY), isFineEdit({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ className: "sendbird-openchannel-user-message__context-menu__edit",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showEdit(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__EDIT), isFineResend({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ className: "sendbird-openchannel-user-message__context-menu__resend",
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), isFineDelete({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ className: "sendbird-openchannel-user-message__context-menu__delete",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ })));
+}
+
+function OpenChannelAdminMessage(_a) {
+ var message = _a.message,
+ className = _a.className;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push('sendbird-openchannel-admin-message');
+ return React.createElement("div", {
+ className: __spreadArrays(injectingClassName).join(' ')
+ }, React.createElement(Label, {
+ className: "sendbird-openchannel-admin-message__text",
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, message.message || ''));
+}
+
+var URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;
+var createUrlTester = function createUrlTester(regexp) {
+ return function (text) {
+ return regexp.test(text);
+ };
+};
+var checkOGIsEnalbed = function checkOGIsEnalbed(message) {
+ var ogMetaData = message.ogMetaData;
+
+ if (!ogMetaData) {
+ return false;
+ }
+
+ var url = ogMetaData.url;
+
+ if (!url) {
+ return false;
+ }
+
+ return true;
+};
+
+function OpenchannelOGMessage(_a) {
+ var message = _a.message,
+ className = _a.className,
+ disabled = _a.disabled,
+ showEdit = _a.showEdit,
+ showRemove = _a.showRemove,
+ resendMessage = _a.resendMessage,
+ chainTop = _a.chainTop,
+ status = _a.status,
+ userId = _a.userId;
+
+ if (!message || message.messageType !== 'user') {
+ return null;
+ }
+
+ var ogMetaData = message.ogMetaData;
+ var defaultImage = ogMetaData.defaultImage;
+ var stringSet = useContext(LocalizationContext).stringSet;
+
+ var _b = useContext(UserProfileContext),
+ disableUserProfile = _b.disableUserProfile,
+ renderUserProfile = _b.renderUserProfile;
+
+ var _c = useState({}),
+ contextStyle = _c[0],
+ setContextStyle = _c[1];
+
+ var messageComponentRef = useRef(null);
+ var contextMenuRef = useRef(null);
+ var avatarRef = useRef(null);
+ var isUrl = createUrlTester(URL_REG);
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push('sendbird-openchannel-og-message');
+ var isByMe = checkIsByMe(message, userId);
+ var sender = getSenderFromMessage(message);
+ var MemoizedMessageText = useMemo(function () {
+ return function () {
+ var wordClassName = 'sendbird-openchannel-og-message--word';
+ var splitMessage = message.message.split(' ');
+ var matchedMessage = splitMessage.map(function (word) {
+ return isUrl(word) ? React.createElement(LinkLabel, {
+ key: uuidv4(),
+ className: [wordClassName, 'sendbird-openchannel-og-message--word--link'],
+ src: word,
+ type: LabelTypography.BODY_1,
+ color: LabelColors.PRIMARY
+ }, word) : React.createElement(Label, {
+ key: uuidv4(),
+ className: wordClassName,
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, word);
+ });
+
+ if (message.updatedAt > 0) {
+ matchedMessage.push(React.createElement(Label, {
+ key: uuidv4(),
+ className: wordClassName,
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_2
+ }, stringSet.MESSAGE_EDITED));
+ }
+
+ return matchedMessage;
+ };
+ }, [message, message.updatedAt]);
+
+ var openLink = function openLink() {
+ if (checkOGIsEnalbed(message)) {
+ var url = ogMetaData.url;
+ window.open(url);
+ }
+ }; // place conxt menu top depending clientHeight of message component
+
+
+ useEffect(function () {
+ if (messageComponentRef.current.clientHeight > 36) {
+ setContextStyle({
+ top: '8px '
+ });
+ } else {
+ setContextStyle({
+ top: '2px'
+ });
+ }
+ }, [window.innerWidth]);
+ return React.createElement("div", {
+ className: injectingClassName.join(' '),
+ ref: messageComponentRef
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-og-message__top"
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-og-message__top__left"
+ }, !chainTop && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ className: "sendbird-openchannel-og-message__top__left__avatar",
+ src: sender.profileUrl || '',
+ ref: avatarRef,
+ width: "28px",
+ height: "28px",
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ }
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: avatarRef,
+ parentContainRef: avatarRef,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: sender,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: sender,
+ onSuccess: closeDropdown,
+ disableMessaging: true
+ }));
+ }
+ })), React.createElement("div", {
+ className: "sendbird-openchannel-og-message__top__right"
+ }, !chainTop && React.createElement("div", {
+ className: "sendbird-openchannel-og-message__top__right__title"
+ }, React.createElement(Label, {
+ className: "sendbird-openchannel-og-message__top__right__title__sender-name",
+ type: LabelTypography.CAPTION_2,
+ color: isByMe ? LabelColors.SECONDARY_3 : LabelColors.ONBACKGROUND_2
+ }, sender && (sender.friendName || sender.nickname || sender.userId)), React.createElement(Label, {
+ className: "sendbird-openchannel-og-message__top__right__title__sent-at",
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_3
+ }, message.createdAt && format(message.createdAt, 'p'))), React.createElement("div", {
+ className: "sendbird-openchannel-og-message__top__right__description"
+ }, React.createElement(Label, {
+ className: "sendbird-openchannel-og-message__top__right__description__message",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, MemoizedMessageText()))), React.createElement("div", {
+ className: "sendbird-openchannel-og-message__top__context-menu",
+ ref: contextMenuRef,
+ style: contextStyle
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return showMenuTrigger({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(IconButton, {
+ className: "sendbird-openchannel-og-message__top__context-menu--icon",
+ width: "32px",
+ height: "32px",
+ onClick: function onClick() {
+ toggleDropdown();
+ }
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: contextMenuRef,
+ parentContainRef: contextMenuRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isFineCopy({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ className: "sendbird-openchannel-og-message__top__context-menu__copy",
+ onClick: function onClick() {
+ copyToClipboard(message.message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__COPY), isFineEdit({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ className: "sendbird-openchannel-og-message__top__context-menu__edit",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showEdit(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__EDIT), isFineResend({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ className: "sendbird-openchannel-og-message__top__context-menu__resend",
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), isFineDelete({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ className: "sendbird-openchannel-og-message__top__context-menu__delete",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ }))), React.createElement("div", {
+ className: "sendbird-openchannel-og-message__bottom"
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-og-message__bottom__og-tag"
+ }, ogMetaData.url && React.createElement(Label, {
+ className: "sendbird-openchannel-og-message__bottom__og-tag__url",
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2
+ }, ogMetaData.url), ogMetaData.title && React.createElement(LinkLabel, {
+ className: "sendbird-openchannel-og-message__bottom__og-tag__title",
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.PRIMARY,
+ src: ogMetaData.url
+ }, ogMetaData.title), ogMetaData.description && React.createElement(Label, {
+ className: "sendbird-openchannel-og-message__bottom__og-tag__description",
+ type: LabelTypography.BODY_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, ogMetaData.description), ogMetaData.url && React.createElement("div", {
+ className: "sendbird-openchannel-og-message__bottom__og-tag__thumbnail",
+ onClick: openLink,
+ onKeyDown: openLink,
+ role: "button",
+ tabIndex: 0
+ }, defaultImage && React.createElement(ImageRenderer, {
+ url: defaultImage.url || '',
+ alt: defaultImage.alt || '',
+ className: "sendbird-openchannel-og-message__bottom__og-tag__thumbnail__image",
+ height: "189px",
+ defaultComponent: React.createElement("div", {
+ className: "sendbird-openchannel-og-message__bottom__og-tag__thumbnail__image--placeholder"
+ }, React.createElement(Icon, {
+ width: "56px",
+ height: "56px",
+ type: IconTypes.NO_THUMBNAIL
+ }))
+ })))));
+}
+
+var SUPPORTING_TYPES = {
+ IMAGE: 'IMAGE',
+ VIDEO: 'VIDEO',
+ UNSUPPORTED: 'UNSUPPORTED'
+};
+var SUPPORTED_MIMES = {
+ IMAGE: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp'],
+ VIDEO: ['video/mpeg', 'video/ogg', 'video/webm', 'video/mp4']
+};
+var getSupportingFileType = function getSupportingFileType(type) {
+ if (SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0) {
+ return SUPPORTING_TYPES.IMAGE;
+ }
+
+ if (SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0) {
+ return SUPPORTING_TYPES.VIDEO;
+ }
+
+ return SUPPORTING_TYPES.UNSUPPORTED;
+};
+
+function OpenchannelThumbnailMessage(_a) {
+ var _b;
+
+ var message = _a.message,
+ className = _a.className,
+ disabled = _a.disabled,
+ userId = _a.userId,
+ status = _a.status,
+ chainTop = _a.chainTop,
+ _onClick = _a.onClick,
+ showRemove = _a.showRemove,
+ resendMessage = _a.resendMessage;
+ var type = message.type,
+ url = message.url,
+ localUrl = message.localUrl;
+ var stringSet = useContext(LocalizationContext).stringSet;
+
+ var _c = useContext(UserProfileContext),
+ disableUserProfile = _c.disableUserProfile,
+ renderUserProfile = _c.renderUserProfile;
+
+ var contextMenuRef = useRef(null);
+ var avatarRef = useRef(null);
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push('sendbird-openchannel-thumbnail-message');
+ var isByMe = checkIsByMe(message, userId);
+ var isMessageSent = checkIsSent(status);
+ var sender = getSenderFromMessage(message);
+ return React.createElement("div", {
+ className: injectingClassName.join(' ')
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__left"
+ }, !chainTop && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ className: "sendbird-openchannel-thumbnail-message__left__avatar",
+ src: sender.profileUrl || '',
+ ref: avatarRef,
+ width: "28px",
+ height: "28px",
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ }
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: avatarRef,
+ parentContainRef: avatarRef,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: sender,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: sender,
+ onSuccess: closeDropdown,
+ disableMessaging: true
+ }));
+ }
+ })), React.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right"
+ }, !chainTop && React.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right__title"
+ }, React.createElement(Label, {
+ className: "sendbird-openchannel-thumbnail-message__right__title__sender-name",
+ type: LabelTypography.CAPTION_2,
+ color: isByMe ? LabelColors.SECONDARY_3 : LabelColors.ONBACKGROUND_2
+ }, sender && (sender.friendName || sender.nickname || sender.userId)), React.createElement(Label, {
+ className: "sendbird-openchannel-thumbnail-message__right__title__sent-at",
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_3
+ }, message.createdAt && format(message.createdAt, 'p'))), React.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right__body"
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap",
+ onClick: function onClick() {
+ if (isMessageSent) {
+ _onClick(true);
+ }
+ },
+ onKeyDown: function onKeyDown() {
+ if (isMessageSent) {
+ _onClick(true);
+ }
+ },
+ tabIndex: 0,
+ role: "button"
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__overlay"
+ }), (_b = {}, _b[SUPPORTING_TYPES.VIDEO] = url || localUrl ? React.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__video"
+ }, React.createElement("video", {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__video__video"
+ }, React.createElement("source", {
+ src: url || localUrl,
+ type: type
+ })), React.createElement(Icon, {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__video__icon",
+ width: "56px",
+ height: "56px",
+ type: IconTypes.PLAY
+ })) : React.createElement(Icon, {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__video--icon",
+ width: "56px",
+ height: "56px",
+ type: IconTypes.PHOTO,
+ fillColor: IconColors.ON_BACKGROUND_2
+ }), _b[SUPPORTING_TYPES.IMAGE] = url || localUrl ? React.createElement(ImageRenderer, {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__image",
+ height: "270px",
+ url: url || localUrl,
+ alt: "image"
+ }) : React.createElement(Icon, {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__image--icon",
+ width: "56px",
+ height: "56px",
+ type: IconTypes.PHOTO,
+ fillColor: IconColors.ON_BACKGROUND_2
+ }), _b[SUPPORTING_TYPES.UNSUPPORTED] = React.createElement(Icon, {
+ className: "sendbird-openchannel-thumbnail-message__right__body__wrap__unknown",
+ width: "56px",
+ height: "56px",
+ type: IconTypes.PHOTO,
+ fillColor: IconColors.ON_BACKGROUND_2
+ }), _b)[getSupportingFileType(type)]))), React.createElement("div", {
+ className: "sendbird-openchannel-thumbnail-message__context-menu",
+ ref: contextMenuRef
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return showMenuTrigger({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(IconButton, {
+ className: "sendbird-openchannel-thumbnail-message__context-menu--icon",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.MORE,
+ fillColor: IconColors.CONTENT_INVERSE
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: contextMenuRef,
+ parentContainRef: contextMenuRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isFineResend({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), isFineDelete({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ })));
+}
+
+var checkFileType = function checkFileType(fileUrl) {
+ var result = null;
+ var imageFile = /(\.gif|\.jpg|\.jpeg|\.txt|\.pdf)$/i;
+ var audioFile = /(\.mp3)$/i;
+
+ if (imageFile.test(fileUrl)) {
+ result = IconTypes.FILE_DOCUMENT;
+ } else if (audioFile.test(fileUrl)) {
+ result = IconTypes.FILE_AUDIO;
+ }
+
+ return result;
+};
+var truncate = function truncate(fullStr, strLen) {
+ if (fullStr === null || fullStr === undefined) return '';
+ if (fullStr.length <= strLen) return fullStr;
+ var separator = '...';
+ var sepLen = separator.length;
+ var charsToShow = strLen - sepLen;
+ var frontChars = Math.ceil(charsToShow / 2);
+ var backChars = Math.floor(charsToShow / 2);
+ return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);
+};
+
+function OpenchannelFileMessage(_a) {
+ var message = _a.message,
+ className = _a.className,
+ userId = _a.userId,
+ disabled = _a.disabled,
+ chainTop = _a.chainTop,
+ status = _a.status,
+ showRemove = _a.showRemove,
+ resendMessage = _a.resendMessage;
+ var contextMenuRef = useRef(null);
+ var avatarRef = useRef(null);
+ var stringSet = useContext(LocalizationContext).stringSet;
+
+ var _b = useContext(UserProfileContext),
+ disableUserProfile = _b.disableUserProfile,
+ renderUserProfile = _b.renderUserProfile;
+
+ var openFileUrl = function openFileUrl() {
+ window.open(message.url);
+ };
+
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.push('sendbird-openchannel-file-message');
+ var isByMe = checkIsByMe(message, userId);
+ var sender = getSenderFromMessage(message);
+ return React.createElement("div", {
+ className: injectingClassName.join(' ')
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-file-message__left"
+ }, !chainTop && React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ className: "sendbird-openchannel-file-message__left__avatar",
+ src: sender.profileUrl || '',
+ ref: avatarRef,
+ width: "28px",
+ height: "28px",
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ }
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: avatarRef,
+ parentContainRef: avatarRef,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: sender,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ user: sender,
+ onSuccess: closeDropdown,
+ disableMessaging: true
+ }));
+ }
+ })), React.createElement("div", {
+ className: "sendbird-openchannel-file-message__right"
+ }, !chainTop && React.createElement("div", {
+ className: "sendbird-openchannel-file-message__right__title"
+ }, React.createElement(Label, {
+ className: "sendbird-openchannel-file-message__right__title__sender-name",
+ type: LabelTypography.CAPTION_2,
+ color: isByMe ? LabelColors.SECONDARY_3 : LabelColors.ONBACKGROUND_2
+ }, sender && (sender.friendName || sender.nickname || sender.userId)), React.createElement(Label, {
+ className: "sendbird-openchannel-file-message__right__title__sent-at",
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_3
+ }, message.createdAt && format(message.createdAt, 'p'))), React.createElement("div", {
+ className: "sendbird-openchannel-file-message__right__body"
+ }, checkFileType(message.url) && React.createElement(Icon, {
+ className: "sendbird-openchannel-file-message__right__body__icon",
+ width: "48px",
+ height: "48px",
+ type: checkFileType(message.url),
+ color: IconColors.PRIMARY
+ }), React.createElement(TextButton, {
+ className: "sendbird-openchannel-file-message__right__body__file-name",
+ onClick: openFileUrl
+ }, React.createElement(Label, {
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, truncate(message.url, 40))))), React.createElement("div", {
+ className: "sendbird-openchannel-file-message__context-menu",
+ ref: contextMenuRef
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return showMenuTrigger({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(IconButton, {
+ className: "sendbird-openchannel-file-message__context-menu__icon",
+ width: "32px",
+ height: "32px",
+ onClick: toggleDropdown
+ }, React.createElement(Icon, {
+ type: IconTypes.MORE,
+ width: "24px",
+ height: "24px"
+ }));
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ parentRef: contextMenuRef,
+ parentContainRef: contextMenuRef,
+ closeDropdown: closeDropdown,
+ openLeft: true
+ }, isFineResend({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ resendMessage(message);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__RESEND), isFineDelete({
+ message: message,
+ userId: userId,
+ status: status
+ }) && React.createElement(MenuItem, {
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ showRemove(true);
+ closeDropdown();
+ }
+ }, stringSet.CONTEXT_MENU_DROPDOWN__DELETE));
+ }
+ })));
+}
+
+function RemoveMessageModal(_a) {
+ var onCloseModal = _a.onCloseModal,
+ onDeleteMessage = _a.onDeleteMessage;
+ var stringSet = useContext(LocalizationContext).stringSet;
+ return React.createElement(Modal, {
+ onCancel: onCloseModal,
+ onSubmit: onDeleteMessage,
+ submitText: "Delete",
+ titleText: stringSet.MODAL__DELETE_MESSAGE__TITLE
+ });
+}
+
+var MessageTypes = {
+ ADMIN: 'ADMIN',
+ USER: 'USER',
+ FILE: 'FILE',
+ THUMBNAIL: 'THUMBNAIL',
+ OG: 'OG',
+ UNKNOWN: 'UNKNOWN'
+};
+var SendingMessageStatus = {
+ NONE: 'none',
+ SUCCEEDED: 'succeeded',
+ FAILED: 'failed',
+ PENDING: 'pending'
+};
+var getMessageType = function getMessageType(message) {
+ if (message.isUserMessage && message.isUserMessage() || message.messageType === 'user') {
+ return message.ogMetaData ? MessageTypes.OG : MessageTypes.USER;
+ }
+
+ if (message.isAdminMessage && message.isAdminMessage()) {
+ return MessageTypes.ADMIN;
+ }
+
+ if (message.messageType === 'file') {
+ return isImage(message.type) || isVideo(message.type) ? MessageTypes.THUMBNAIL : MessageTypes.FILE;
+ }
+
+ return MessageTypes.UNKNOWN;
+};
+
+function MessageHoc(_a) {
+ var _b;
+
+ var message = _a.message,
+ userId = _a.userId,
+ disabled = _a.disabled,
+ editDisabled = _a.editDisabled,
+ hasSeperator = _a.hasSeperator,
+ channel = _a.channel,
+ renderCustomMessage = _a.renderCustomMessage,
+ deleteMessage = _a.deleteMessage,
+ updateMessage = _a.updateMessage,
+ resendMessage = _a.resendMessage,
+ status = _a.status,
+ chainTop = _a.chainTop,
+ chainBottom = _a.chainBottom;
+ var sender = null;
+
+ if (message.messageType !== 'admin') {
+ sender = message.sender;
+ }
+
+ var RenderedMessage = useMemo(function () {
+ if (renderCustomMessage) {
+ return renderCustomMessage(message, channel);
+ }
+
+ return null;
+ }, [message, renderCustomMessage]);
+
+ var _c = useState(false),
+ showEdit = _c[0],
+ setShowEdit = _c[1];
+
+ var _d = useState(false),
+ showRemove = _d[0],
+ setShowRemove = _d[1];
+
+ var _e = useState(false),
+ showFileViewer = _e[0],
+ setShowFileViewer = _e[1];
+
+ var editMessageInputRef = useRef(null);
+ var isByMe = false;
+
+ if (sender && message.messageType !== 'admin') {
+ // pending and failed messages are by me
+ isByMe = userId === sender.userId || message.requestState === SendingMessageStatus.PENDING || message.requestState === SendingMessageStatus.FAILED;
+ }
+
+ if (RenderedMessage) {
+ return React.createElement("div", {
+ className: "sendbird-msg-hoc sendbird-msg--scroll-ref"
+ }, React.createElement(RenderedMessage, {
+ message: message
+ }));
+ }
+
+ if (message.messageType === 'user' && showEdit) {
+ return React.createElement(MessageInput, {
+ isEdit: true,
+ disabled: editDisabled,
+ ref: editMessageInputRef,
+ name: message.messageId,
+ onSendMessage: updateMessage,
+ onCancelEdit: function onCancelEdit() {
+ setShowEdit(false);
+ },
+ value: message.message
+ });
+ }
+
+ return React.createElement("div", {
+ className: "sendbird-msg-hoc sendbird-msg--scroll-ref"
+ }, hasSeperator && React.createElement(DateSeparator, null, React.createElement(Label, {
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, format(message.createdAt, 'MMMM dd, yyyy'))), (_b = {}, _b[MessageTypes.ADMIN] = function () {
+ if (message.messageType === 'admin') {
+ return React.createElement(OpenChannelAdminMessage, {
+ message: message
+ });
+ }
+ }(), _b[MessageTypes.FILE] = function () {
+ if (message.messageType === 'file') {
+ return React.createElement(OpenchannelFileMessage, {
+ message: message,
+ disabled: disabled,
+ userId: userId,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ status: status,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ });
+ }
+
+ return;
+ }(), _b[MessageTypes.OG] = function () {
+ if (message.messageType === 'user') {
+ return React.createElement(OpenchannelOGMessage, {
+ message: message,
+ status: status,
+ userId: userId,
+ showEdit: setShowEdit,
+ disabled: disabled,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ });
+ }
+
+ return;
+ }(), _b[MessageTypes.THUMBNAIL] = function () {
+ if (message.messageType === 'file') {
+ return React.createElement(OpenchannelThumbnailMessage, {
+ message: message,
+ disabled: disabled,
+ userId: userId,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ onClick: setShowFileViewer,
+ status: status,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ });
+ }
+
+ return;
+ }(), _b[MessageTypes.USER] = function () {
+ if (message.messageType === 'user') {
+ return React.createElement(OpenchannelUserMessage, {
+ message: message,
+ userId: userId,
+ disabled: disabled,
+ showEdit: setShowEdit,
+ showRemove: setShowRemove,
+ resendMessage: resendMessage,
+ status: status,
+ chainTop: chainTop,
+ chainBottom: chainBottom
+ });
+ }
+
+ return;
+ }(), _b[MessageTypes.UNKNOWN] = function () {
+ return; // return (
+ //
+ // );
+ }(), _b)[getMessageType(message)], showRemove && React.createElement(RemoveMessageModal, {
+ onCloseModal: function onCloseModal() {
+ return setShowRemove(false);
+ },
+ onDeleteMessage: function onDeleteMessage() {
+ if (message.messageType !== 'admin') {
+ deleteMessage(message);
+ }
+ }
+ }), showFileViewer && React.createElement(FileViewer, {
+ onClose: function onClose() {
+ return setShowFileViewer(false);
+ },
+ message: message,
+ onDelete: deleteMessage,
+ isByMe: isByMe
+ }));
+}
+
+function OpenchannelConversationScroll(_a) {
+ var _b = _a.useMessageGrouping,
+ useMessageGrouping = _b === void 0 ? true : _b,
+ openchannel = _a.openchannel,
+ user = _a.user,
+ allMessages = _a.allMessages,
+ _c = _a.isOnline,
+ isOnline = _c === void 0 ? true : _c,
+ hasMore = _a.hasMore,
+ onScroll = _a.onScroll,
+ scrollDownPromise = _a.scrollDownPromise,
+ renderCustomMessage = _a.renderCustomMessage,
+ showScrollDownButton = _a.showScrollDownButton,
+ updateMessage = _a.updateMessage,
+ deleteMessage = _a.deleteMessage,
+ resendMessage = _a.resendMessage;
+ var scrollRef = useRef(null);
+
+ var handleOnScroll = function handleOnScroll(e) {
+ var element = e.target;
+ var scrollTop = element.scrollTop,
+ scrollHeight = element.scrollHeight,
+ clientHeight = element.clientHeight;
+
+ if (showScrollDownButton) {
+ if (scrollHeight > scrollTop + clientHeight) {
+ showScrollDownButton(true);
+ } else {
+ showScrollDownButton(false);
+ }
+ }
+
+ if (scrollTop === 0) {
+ if (!hasMore) {
+ return;
+ }
+
+ var nodes_1 = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');
+ onScroll(function () {
+ var first = nodes_1[0];
+ first.scrollIntoView();
+ });
+ }
+ };
+
+ useEffect(function () {
+ // This promise is created in everytime when user click the scroll to bottom button
+ // This scope waits when user click the button and scrolls to the bottom of conversation
+ if (scrollDownPromise && scrollRef && scrollRef.current) {
+ scrollDownPromise.then(function () {
+ scrollRef.current.scrollTo(0, scrollRef.current.scrollHeight);
+
+ if (showScrollDownButton) {
+ showScrollDownButton(false);
+ }
+ });
+ }
+
+ return;
+ }, [scrollDownPromise]);
+ return React.createElement("div", {
+ className: "sendbird-openchannel-conversation-scroll",
+ onScroll: handleOnScroll,
+ ref: scrollRef
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-conversation-scroll__container"
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-conversation-scroll__container__padding"
+ }), React.createElement("div", {
+ className: "sendbird-openchannel-conversation-scroll__container__item-container"
+ }, allMessages.map(function (message, index) {
+ var status;
+
+ if (message.messageType !== 'admin') {
+ status = message.sendingStatus;
+ }
+
+ var previousMessage = allMessages[index - 1];
+ var nextMessage = allMessages[index - 1];
+ var previousMessageCreatedAt = previousMessage && previousMessage.createdAt;
+ var currentCreatedAt = message.createdAt; // https://stackoverflow.com/a/41855608
+
+ var hasSeperator = !(previousMessageCreatedAt && isSameDay(currentCreatedAt, previousMessageCreatedAt));
+
+ var _a = useMessageGrouping ? compareMessagesForGrouping(previousMessage, message, nextMessage) : [false, false],
+ chainTop = _a[0],
+ chainBottom = _a[1];
+
+ return React.createElement(MessageHoc, {
+ renderCustomMessage: renderCustomMessage,
+ channel: openchannel,
+ key: message.messageId,
+ message: message,
+ status: status,
+ userId: user.userId,
+ disabled: !isOnline,
+ editDisabled: openchannel.isFrozen,
+ hasSeperator: hasSeperator,
+ chainTop: chainTop,
+ chainBottom: chainBottom,
+ deleteMessage: deleteMessage,
+ updateMessage: updateMessage,
+ resendMessage: resendMessage
+ });
+ }))));
+}
+
+var SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';
+var SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';
+var RESET_MESSAGES = 'RESET_MESSAGES';
+var GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';
+var GET_PREV_MESSAGES_FAIL = 'GET_PREV_MESSAGES_FAIL';
+var SENDING_MESSAGE_FAILED = 'SENDING_MESSAGE_FAILED';
+var SENDING_MESSAGE_SUCCEEDED = 'SENDING_MESSAGE_SUCCEEDED';
+var SENDING_MESSAGE_START = 'SENDING_MESSAGE_START';
+var RESENDING_MESSAGE_START = 'RESENDING_MESSAGE_START'; // event handlers
+
+var ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';
+var ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';
+var ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';
+var ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';
+var ON_OPERATOR_UPDATED = 'ON_OPERATOR_UPDATED';
+var ON_USER_ENTERED = 'ON_USER_ENTERED';
+var ON_USER_EXITED = 'ON_USER_EXITED';
+var ON_USER_MUTED = 'ON_USER_MUTED';
+var ON_USER_UNMUTED = 'ON_USER_UNMUTED';
+var ON_USER_BANNED = 'ON_USER_BANNED';
+var ON_USER_UNBANNED = 'ON_USER_UNBANNED';
+var ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';
+var ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';
+var ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';
+var ON_META_DATA_CREATED = 'ON_META_DATA_CREATED';
+var ON_META_DATA_UPDATED = 'ON_META_DATA_UPDATED';
+var ON_META_DATA_DELETED = 'ON_META_DATA_DELETED';
+var ON_META_COUNTERS_CREATED = 'ON_META_COUNTERS_CREATED';
+var ON_META_COUNTERS_UPDATED = 'ON_META_COUNTERS_UPDATED';
+var ON_META_COUNTERS_DELETED = 'ON_META_COUNTERS_DELETED';
+var ON_MENTION_RECEIVED = 'ON_MENTION_RECEIVED';
+
+function reducer(state, action) {
+ switch (action.type) {
+ case RESET_MESSAGES:
+ {
+ return __assign(__assign({}, state), {
+ allMessages: []
+ });
+ }
+
+ case SET_CURRENT_CHANNEL:
+ {
+ var currentChannel = action.payload;
+ var operators = currentChannel.operators;
+
+ if (!state.isInvalid && state.currentOpenChannel && state.currentOpenChannel.url && state.currentOpenChannel.url === currentChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ currentOpenChannel: currentChannel,
+ isInvalid: false,
+ operators: operators,
+ participants: operators
+ });
+ }
+
+ case SET_CHANNEL_INVALID:
+ {
+ return __assign(__assign({}, state), {
+ isInvalid: true
+ });
+ }
+
+ case GET_PREV_MESSAGES_SUCESS:
+ case GET_PREV_MESSAGES_FAIL:
+ {
+ var isFailed = action.type === GET_PREV_MESSAGES_FAIL;
+ var _a = action.payload,
+ _b = _a.currentOpenChannel,
+ currentOpenChannel = _b === void 0 ? {} : _b,
+ _c = _a.messages,
+ messages = _c === void 0 ? [] : _c,
+ hasMore = _a.hasMore,
+ lastMessageTimestamp = _a.lastMessageTimestamp;
+ var actionChannelUrl = currentOpenChannel.url;
+ var receivedMessages_1 = isFailed ? [] : messages;
+
+ var _hasMore = isFailed ? false : hasMore;
+
+ var _lastMessageTimestamp = isFailed ? 0 : lastMessageTimestamp;
+
+ var stateChannel = state.currentOpenChannel;
+ var stateChannelUrl = stateChannel.url;
+
+ if (actionChannelUrl !== stateChannelUrl) {
+ return state;
+ }
+
+ var filteredAllMessages = state.allMessages.filter(function (message) {
+ return !receivedMessages_1.find(function (_a) {
+ var messageId = _a.messageId;
+ return compareIds(messageId, message.messageId);
+ });
+ });
+ return __assign(__assign({}, state), {
+ loading: false,
+ initialized: true,
+ hasMore: _hasMore,
+ lastMessageTimestamp: _lastMessageTimestamp,
+ allMessages: __spreadArrays(receivedMessages_1, filteredAllMessages)
+ });
+ }
+
+ case SENDING_MESSAGE_START:
+ {
+ var _d = action.payload,
+ message = _d.message,
+ channel = _d.channel;
+
+ if (channel.url !== state.currentOpenChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ allMessages: __spreadArrays(state.allMessages, [__assign({}, message)])
+ });
+ }
+
+ case SENDING_MESSAGE_SUCCEEDED:
+ {
+ var sentMessage_1 = action.payload;
+ var newMessages = state.allMessages.map(function (m) {
+ return compareIds(m.reqId, sentMessage_1.reqId) ? sentMessage_1 : m;
+ });
+ return __assign(__assign({}, state), {
+ allMessages: newMessages
+ });
+ }
+
+ case SENDING_MESSAGE_FAILED:
+ {
+ var sentMessage_2 = action.payload;
+ return __assign(__assign({}, state), {
+ allMessages: state.allMessages.map(function (m) {
+ return compareIds(m.reqId, sentMessage_2.reqId) ? sentMessage_2 : m;
+ })
+ });
+ }
+
+ case RESENDING_MESSAGE_START:
+ {
+ var eventedChannel = action.payload.channel;
+ var resentMessage_1 = action.payload.message;
+
+ if (eventedChannel.url !== state.currentOpenChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ allMessages: state.allMessages.map(function (m) {
+ return compareIds(m.reqId, resentMessage_1.reqId) ? resentMessage_1 : m;
+ })
+ });
+ }
+
+ case ON_MESSAGE_RECEIVED:
+ {
+ var eventedChannel = action.payload.channel;
+ var receivedMessage = action.payload.message;
+ var currentOpenChannel = state.currentOpenChannel;
+
+ if (!compareIds(eventedChannel.url, currentOpenChannel.url) || !(state.allMessages.map(function (message) {
+ return message.messageId;
+ }).indexOf(receivedMessage.messageId) < 0)) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ allMessages: __spreadArrays(state.allMessages, [receivedMessage])
+ });
+ }
+
+ case ON_MESSAGE_UPDATED:
+ {
+ var eventedChannel = action.payload.channel;
+ var updatedMessage_1 = action.payload.message;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ allMessages: state.allMessages.map(function (message) {
+ return message.isIdentical(updatedMessage_1) ? updatedMessage_1 : message;
+ })
+ });
+ }
+
+ case ON_MESSAGE_DELETED:
+ {
+ var eventedChannel = action.payload.channel;
+ var deletedMessageId_1 = action.payload.messageId;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ allMessages: state.allMessages.filter(function (message) {
+ return !compareIds(message.messageId, deletedMessageId_1);
+ })
+ });
+ }
+
+ case ON_MESSAGE_DELETED_BY_REQ_ID:
+ {
+ return __assign(__assign({}, state), {
+ allMessages: state.allMessages.filter(function (m) {
+ return !compareIds(m.reqId, action.payload);
+ })
+ });
+ }
+
+ case ON_OPERATOR_UPDATED:
+ {
+ var eventedChannel = action.payload.channel;
+ var updatedOperators = action.payload.operators;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ currentOpenChannel: __assign(__assign({}, state.currentOpenChannel), {
+ operators: updatedOperators
+ }),
+ operators: updatedOperators
+ });
+ }
+
+ case ON_USER_ENTERED:
+ {
+ var eventedChannel = action.payload.channel;
+ var enteredUser = action.payload.user;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ participants: __spreadArrays(state.participants, [enteredUser])
+ });
+ }
+
+ case ON_USER_EXITED:
+ {
+ var eventedChannel = action.payload.channel;
+ var exitedUser_1 = action.payload.user;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ participants: state.participants.filter(function (participant) {
+ return !compareIds(participant.userId, exitedUser_1.userId);
+ })
+ });
+ }
+
+ case ON_USER_MUTED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const mutedUser = action.payload.user;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_USER_UNMUTED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const unmutedUser = action.payload.user;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_USER_BANNED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const bannedUser = action.payload.user;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_USER_UNBANNED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const unbannedUser = action.payload.user;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_CHANNEL_FROZEN:
+ {
+ var frozenChannel = action.payload;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== frozenChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ frozen: true
+ });
+ }
+
+ case ON_CHANNEL_UNFROZEN:
+ {
+ var unfrozenChannel = action.payload;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== unfrozenChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ frozen: false
+ });
+ }
+
+ case ON_CHANNEL_CHANGED:
+ {
+ var changedChannel = action.payload;
+ var currentChannel = state.currentOpenChannel;
+
+ if (!currentChannel || currentChannel.url && currentChannel.url !== changedChannel.url) {
+ return state;
+ }
+
+ return __assign(__assign({}, state), {
+ currentOpenChannel: changedChannel
+ });
+ }
+
+ case ON_META_DATA_CREATED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const createdMetaData = action.payload.metaData;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_META_DATA_UPDATED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const updatedMetaData = action.payload.metaData;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_META_DATA_DELETED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const deletedMetaDataKeys = action.payload.metaDataKeys;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_META_COUNTERS_CREATED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const createdMetaCounter = action.payload.metaCounter;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_META_COUNTERS_UPDATED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const updatedMetaCounter = action.payload.metaCounter;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_META_COUNTERS_DELETED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const deletedMetaCounterKeys = action.payload.metaCounterKeys;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ case ON_MENTION_RECEIVED:
+ {
+ // const eventedChannel = action.payload.channel;
+ // const mentionedMessage = action.payload.message;
+ // return {
+ // ...state
+ // };
+ return state;
+ }
+
+ default:
+ return state;
+ }
+}
+
+var initialState = {
+ allMessages: [],
+ loading: false,
+ initialized: false,
+ currentOpenChannel: null,
+ isInvalid: false,
+ hasMore: false,
+ lastMessageTimestamp: 0,
+ frozen: false,
+ operators: [],
+ participants: []
+};
+
+var COMPONENT_CLASS_NAME$1 = 'sendbird-openchannel-conversation';
+var OpenchannelConversation = function OpenchannelConversation(props) {
+ // props
+ var useMessageGrouping = props.useMessageGrouping,
+ channelUrl = props.channelUrl,
+ stores = props.stores,
+ config = props.config,
+ _a = props.queries,
+ queries = _a === void 0 ? {} : _a,
+ disableUserProfile = props.disableUserProfile,
+ renderCustomMessage = props.renderCustomMessage,
+ renderUserProfile = props.renderUserProfile,
+ renderChannelTitle = props.renderChannelTitle,
+ renderMessageInput = props.renderMessageInput,
+ onBeforeSendUserMessage = props.onBeforeSendUserMessage,
+ onBeforeSendFileMessage = props.onBeforeSendFileMessage,
+ onChatHeaderActionClick = props.onChatHeaderActionClick;
+ var sdkStore = stores.sdkStore,
+ userStore = stores.userStore;
+ var userId = config.userId,
+ isOnline = config.isOnline,
+ logger = config.logger,
+ pubSub = config.pubSub;
+ var sdk = sdkStore.sdk;
+ var user = userStore.user; // hook variables
+
+ var _b = useReducer(reducer, initialState),
+ messagesStore = _b[0],
+ messagesDispatcher = _b[1];
+
+ var allMessages = messagesStore.allMessages,
+ loading = messagesStore.loading,
+ initialized = messagesStore.initialized,
+ currentOpenChannel = messagesStore.currentOpenChannel,
+ isInvalid = messagesStore.isInvalid,
+ hasMore = messagesStore.hasMore,
+ lastMessageTimestamp = messagesStore.lastMessageTimestamp; // ref
+
+ var messageInputRef = useRef(null); // useSendMessageCallback
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+
+ var _c = useState(null),
+ scrollDownPromise = _c[0],
+ setScrollDownPromise = _c[1];
+
+ var _d = useState(false),
+ showScrollDownButton = _d[0],
+ setShowScrollDownButton = _d[1]; // const
+
+
+ var sdkInit = sdkStore.initialized;
+ var userFilledMessageListParams = queries ? queries.messageListParams : null;
+ var disabled = !initialized || !isOnline || isDisabledBecauseFrozen(currentOpenChannel, userId); // || utils.isDisabledBecauseMuted(mutedParticipantIds, userId)
+
+ var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
+ var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile; // useSetChannel
+
+ useEffect(function () {
+ if (channelUrl && sdkInit && sdk && sdk.OpenChannel) {
+ logger.info('OpenChannel | useSetChannel fetching channel', channelUrl);
+ sdk.OpenChannel.getChannel(channelUrl, function (openChannel, error) {
+ if (!error) {
+ logger.info('OpenChannel | useSetChannel fetched channel', openChannel);
+ messagesDispatcher({
+ type: SET_CURRENT_CHANNEL,
+ payload: openChannel
+ });
+ openChannel.enter(function (error) {
+ if (error) {
+ logger.warning('OpenChannel | useSetChannel enter channel failed', {
+ channelUrl: channelUrl,
+ error: error
+ });
+ messagesDispatcher({
+ type: SET_CHANNEL_INVALID
+ });
+ }
+ });
+ } else {
+ logger.warning('OpenChannel | useSetChannel fetch channel failed', {
+ channelUrl: channelUrl,
+ error: error
+ });
+ messagesDispatcher({
+ type: SET_CHANNEL_INVALID
+ });
+ }
+ }); // .then((openChannel) => {
+ // logger.info('OpenChannel | useSetChannel fetched channel', openChannel);
+ // messagesDispatcher({
+ // type: messageActionTypes.SET_CURRENT_CHANNEL,
+ // payload: openChannel,
+ // });
+ // })
+ // .catch((error) => {
+ // logger.warning('OpenChannel | useSetChannel fetch channel failed', { channelUrl, error });
+ // messagesDispatcher({
+ // type: messageActionTypes.SET_CHANNEL_INVALID,
+ // });
+ // });
+ }
+ }, [channelUrl, sdkInit]); // handles API calls from withSendbird
+
+ useEffect(function () {
+ var subscriber = new Map();
+
+ if (!pubSub || !pubSub.subscribe) {
+ return;
+ }
+
+ subscriber.set(SEND_USER_MESSAGE, pubSub.subscribe(SEND_USER_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+ scrollIntoLast('.sendbird-msg--scroll-ref');
+
+ if (channel && channelUrl === channel.url) {
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(SEND_MESSAGE_START, pubSub.subscribe(SEND_MESSAGE_START, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+
+ if (channel && channelUrl === channel.url) {
+ messagesDispatcher({
+ type: SENDING_MESSAGE_START,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(SEND_FILE_MESSAGE, pubSub.subscribe(SEND_FILE_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message;
+ scrollIntoLast('.sendbird-msg--scroll-ref');
+
+ if (channel && channelUrl === channel.url) {
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ }
+ }));
+ subscriber.set(UPDATE_USER_MESSAGE, pubSub.subscribe(UPDATE_USER_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ message = msg.message,
+ fromSelector = msg.fromSelector;
+
+ if (fromSelector && channel && channelUrl === channel.url) {
+ messagesDispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ }
+ }));
+ subscriber.set(DELETE_MESSAGE, pubSub.subscribe(DELETE_MESSAGE, function (msg) {
+ var channel = msg.channel,
+ messageId = msg.messageId;
+
+ if (channel && channelUrl === channel.url) {
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: messageId
+ });
+ }
+ }));
+ return function () {
+ if (subscriber) {
+ subscriber.forEach(function (s) {
+ try {
+ s.remove();
+ } catch (_a) {//
+ }
+ });
+ }
+ };
+ }, [channelUrl, sdkInit]); // useHandleChannelEvents
+
+ useEffect(function () {
+ var messageReceiverId = uuidv4();
+
+ if (currentOpenChannel && currentOpenChannel.url && sdk && sdk.ChannelHandler) {
+ var ChannelHandler = new sdk.ChannelHandler();
+ logger.info('OpenChannel | useHandleChannelEvents: Setup event handler', messageReceiverId);
+
+ ChannelHandler.onMessageReceived = function (channel, message) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMessageReceived', {
+ channelUrl: channelUrl,
+ message: message
+ });
+ messagesDispatcher({
+ type: ON_MESSAGE_RECEIVED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ };
+
+ ChannelHandler.onMessageUpdated = function (channel, message) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMessageUpdated', {
+ channelUrl: channelUrl,
+ message: message
+ });
+ messagesDispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ };
+
+ ChannelHandler.onMessageDeleted = function (channel, messageId) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMessageDeleted', {
+ channelUrl: channelUrl,
+ messageId: messageId
+ });
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: {
+ channel: channel,
+ messageId: messageId
+ }
+ });
+ };
+
+ ChannelHandler.onOperatorUpdated = function (channel, operators) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onOperatorUpdated', {
+ channelUrl: channelUrl,
+ operators: operators
+ });
+ messagesDispatcher({
+ type: ON_OPERATOR_UPDATED,
+ payload: {
+ channel: channel,
+ operators: operators
+ }
+ });
+ };
+
+ ChannelHandler.onUserEntered = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserEntered', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_ENTERED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onUserExited = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserExited', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_EXITED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onUserMuted = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserMuted', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_MUTED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onUserUnmuted = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserUnmuted', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_UNMUTED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onUserBanned = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserBanned', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_BANNED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onUserUnbanned = function (channel, user) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onUserUnbanned', {
+ channelUrl: channelUrl,
+ user: user
+ });
+ messagesDispatcher({
+ type: ON_USER_UNBANNED,
+ payload: {
+ channel: channel,
+ user: user
+ }
+ });
+ };
+
+ ChannelHandler.onChannelFrozen = function (channel) {
+ logger.info('OpenChannel | useHandleChannelEvents: onChannelFrozen', channel);
+ messagesDispatcher({
+ type: ON_CHANNEL_FROZEN,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onChannelUnfrozen = function (channel) {
+ logger.info('OpenChannel | useHandleChannelEvents: onChannelUnfrozen', channel);
+ messagesDispatcher({
+ type: ON_CHANNEL_UNFROZEN,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onChannelChanged = function (channel) {
+ logger.info('OpenChannel | useHandleChannelEvents: onChannelChanged', channel);
+ messagesDispatcher({
+ type: ON_CHANNEL_CHANGED,
+ payload: channel
+ });
+ };
+
+ ChannelHandler.onMetaDataCreated = function (channel, metaData) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaDataCreated', {
+ channelUrl: channelUrl,
+ metaData: metaData
+ });
+ messagesDispatcher({
+ type: ON_META_DATA_CREATED,
+ payload: {
+ channel: channel,
+ metaData: metaData
+ }
+ });
+ };
+
+ ChannelHandler.onMetaDataUpdated = function (channel, metaData) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaDataUpdated', {
+ channelUrl: channelUrl,
+ metaData: metaData
+ });
+ messagesDispatcher({
+ type: ON_META_DATA_UPDATED,
+ payload: {
+ channel: channel,
+ metaData: metaData
+ }
+ });
+ };
+
+ ChannelHandler.onMetaDataDeleted = function (channel, metaDataKeys) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaDataDeleted', {
+ channelUrl: channelUrl,
+ metaDataKeys: metaDataKeys
+ });
+ messagesDispatcher({
+ type: ON_META_DATA_DELETED,
+ payload: {
+ channel: channel,
+ metaDataKeys: metaDataKeys
+ }
+ });
+ };
+
+ ChannelHandler.onMetaCountersCreated = function (channel, metaCounter) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersCreated', {
+ channelUrl: channelUrl,
+ metaCounter: metaCounter
+ });
+ messagesDispatcher({
+ type: ON_META_COUNTERS_CREATED,
+ payload: {
+ channel: channel,
+ metaCounter: metaCounter
+ }
+ });
+ };
+
+ ChannelHandler.onMetaCountersUpdated = function (channel, metaCounter) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersUpdated', {
+ channelUrl: channelUrl,
+ metaCounter: metaCounter
+ });
+ messagesDispatcher({
+ type: ON_META_COUNTERS_UPDATED,
+ payload: {
+ channel: channel,
+ metaCounter: metaCounter
+ }
+ });
+ };
+
+ ChannelHandler.onMetaCountersDeleted = function (channel, metaCounterKeys) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersDeleted', {
+ channelUrl: channelUrl,
+ metaCounterKeys: metaCounterKeys
+ });
+ messagesDispatcher({
+ type: ON_META_COUNTERS_DELETED,
+ payload: {
+ channel: channel,
+ metaCounterKeys: metaCounterKeys
+ }
+ });
+ };
+
+ ChannelHandler.onMentionReceived = function (channel, message) {
+ var channelUrl = channel.url;
+ logger.info('OpenChannel | useHandleChannelEvents: onMentionReceived', {
+ channelUrl: channelUrl,
+ message: message
+ });
+ messagesDispatcher({
+ type: ON_MENTION_RECEIVED,
+ payload: {
+ channel: channel,
+ message: message
+ }
+ });
+ };
+
+ sdk.addChannelHandler(messageReceiverId, ChannelHandler);
+ }
+
+ return function () {
+ if (sdk && sdk.removeChannelHandler) {
+ logger.info('OpenChannel | useHandleChannelEvents: Removing message receiver handler', messageReceiverId);
+ sdk.removeChannelHandler(messageReceiverId);
+ }
+ };
+ }, [currentOpenChannel]); // useInitialMessagesFetch
+
+ useEffect(function () {
+ logger.info('OpenChannel | useInitialMessagesFetch: Setup started', currentOpenChannel);
+ messagesDispatcher({
+ type: RESET_MESSAGES
+ });
+
+ if (sdk && sdk.MessageListParams && currentOpenChannel && currentOpenChannel.getMessagesByTimestamp) {
+ var messageListParams_1 = new sdk.MessageListParams();
+ messageListParams_1.prevResultSize = 30;
+ messageListParams_1.isInclusive = true;
+ messageListParams_1.includeReplies = false;
+ messageListParams_1.includeReactions = false;
+
+ if (userFilledMessageListParams) {
+ Object.keys(userFilledMessageListParams).forEach(function (key) {
+ messageListParams_1[key] = userFilledMessageListParams[key];
+ });
+ logger.info('OpenChannel | Used customizedMessageListParams');
+ }
+
+ logger.info('OpenChannel | Fetching messages', {
+ currentOpenChannel: currentOpenChannel,
+ messageListParams: messageListParams_1
+ });
+ currentOpenChannel.getMessagesByTimestamp(new Date().getTime(), messageListParams_1, function (messages, error) {
+ if (!error) {
+ logger.info('OpenChannel | Fetching messages succeeded', messages);
+ var hasMore_1 = messages && messages.length > 0;
+ var lastMessageTimestamp_1 = hasMore_1 ? messages[0].createdAt : null;
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ currentOpenChannel: currentOpenChannel,
+ messages: messages,
+ hasMore: hasMore_1,
+ lastMessageTimestamp: lastMessageTimestamp_1
+ }
+ });
+ setTimeout(function () {
+ scrollIntoLast('.sendbird-msg--scroll-ref');
+ });
+ } else {
+ logger.error('OpenChannel | Fetching messages failed', error);
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_FAIL,
+ payload: {
+ currentOpenChannel: currentOpenChannel,
+ messages: [],
+ hasMore: false,
+ lastMessageTimestamp: 0
+ }
+ });
+ }
+ }); // todo: use promise after CoreSDK adds required TS methods
+ // .then((messages) => {
+ // console.log('get messages via getMessagesByTimestamp', messages);
+ // const hasMore = (messages && messages.length > 0);
+ // const lastMessageTimestamp = hasMore
+ // ? messages[0].createdAt
+ // : null;
+ // messagesDispatcher({
+ // type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,
+ // payload: {
+ // currentOpenChannel,
+ // messages,
+ // hasMore,
+ // lastMessageTimestamp,
+ // },
+ // });
+ // })
+ // .catch((error: Error): void => {
+ // logger.error('OpenChannel | Fetching messages failed', error);
+ // messagesDispatcher({
+ // type: messageActionTypes.GET_PREV_MESSAGES_FAIL,
+ // payload: {
+ // currentOpenChannel,
+ // messages: [],
+ // hasMore: false,
+ // lastMessageTimestamp: 0,
+ // }
+ // });
+ // });
+ }
+ }, [currentOpenChannel]); // useScrollCallback
+
+ var onScroll = useCallback(function (callback) {
+ if (!hasMore) {
+ return;
+ }
+
+ var messageListParams = new sdk.MessageListParams();
+ messageListParams.prevResultSize = 30;
+ messageListParams.includeReplies = false;
+ messageListParams.includeReactions = false;
+
+ if (userFilledMessageListParams) {
+ Object.keys(userFilledMessageListParams).forEach(function (key) {
+ messageListParams[key] = userFilledMessageListParams[key];
+ });
+ logger.info('OpenChannel: Used userFilledMessageListParams');
+ }
+
+ logger.info('OpenChannel: Fetching messages', {
+ currentOpenChannel: currentOpenChannel,
+ messageListParams: messageListParams
+ });
+ currentOpenChannel.getMessagesByTimestamp(lastMessageTimestamp || new Date().getTime(), messageListParams, function (messages, error) {
+ if (!error) {
+ logger.info('OpenChannel | Fetching messages succeeded', messages);
+ var hasMore_2 = messages && messages.length > 0;
+ var lastMessageTimestamp_2 = hasMore_2 ? messages[0].createdAt : null;
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_SUCESS,
+ payload: {
+ currentOpenChannel: currentOpenChannel,
+ messages: messages,
+ hasMore: hasMore_2,
+ lastMessageTimestamp: lastMessageTimestamp_2
+ }
+ });
+ setTimeout(function () {
+ callback();
+ });
+ } else {
+ logger.error('OpenChannel | Fetching messages failed', error);
+ messagesDispatcher({
+ type: GET_PREV_MESSAGES_FAIL,
+ payload: {
+ currentOpenChannel: currentOpenChannel,
+ messages: [],
+ hasMore: false,
+ lastMessageTimestamp: 0
+ }
+ });
+ }
+ });
+ }, [currentOpenChannel, lastMessageTimestamp]); // useSendMessageCallback
+
+ var handleSendMessage = useCallback(function () {
+ var text = messageInputRef.current.value;
+
+ function createParamsDefualt(txt) {
+ var message = typeof txt === 'string' ? txt.trim() : txt.toString(10).trim();
+ var params = new sdk.UserMessageParams();
+ params.message = message;
+ return params;
+ }
+
+ var createCustomParams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
+
+ if (createCustomParams) {
+ logger.info('OpenChannel | Creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);
+ }
+
+ var params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefualt(text);
+ logger.info('OpenChannel | Sending message has started', params);
+ var pendingMessage = currentOpenChannel.sendUserMessage(params, function (message, error) {
+ if (error) {
+ logger.warning('OpenChannel | Sending message failed', {
+ message: message
+ });
+ messagesDispatcher({
+ type: SENDING_MESSAGE_FAILED,
+ payload: message
+ });
+ return;
+ }
+
+ logger.info('OpenChannel | Sending message succeeded', {
+ message: message
+ });
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ });
+ messagesDispatcher({
+ type: SENDING_MESSAGE_START,
+ payload: {
+ message: pendingMessage,
+ channel: currentOpenChannel
+ }
+ });
+ }, [currentOpenChannel, onBeforeSendUserMessage]); // useFileUploadCallback
+
+ var handleFileUpload = useCallback(function (file) {
+ function createParamsDefualt(file_) {
+ var params = new sdk.FileMessageParams();
+ params.file = file_;
+ return params;
+ }
+
+ var createCustomParams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';
+
+ if (createCustomParams) {
+ logger.info('OpenChannel | Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
+ }
+
+ var params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file) : createParamsDefualt(file);
+ logger.info('OpenChannel | Uploading file message start', params);
+ var pendingMessage = currentOpenChannel.sendFileMessage(params, function (message, error) {
+ if (error) {
+ logger.error('OpenChannel | Sending file message failed', {
+ message: message,
+ error: error
+ });
+ message.localUrl = URL.createObjectURL(file);
+ message.file = file;
+ messagesDispatcher({
+ type: SENDING_MESSAGE_FAILED,
+ payload: message
+ });
+ return;
+ }
+
+ logger.info('OpenChannel | Sending message succeeded', message);
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ });
+ messagesDispatcher({
+ type: SENDING_MESSAGE_START,
+ payload: {
+ message: __assign(__assign({}, pendingMessage), {
+ url: URL.createObjectURL(file),
+ // pending thumbnail message seems to be failed
+ requestState: 'pending'
+ }),
+ channel: currentOpenChannel
+ }
+ });
+ }, [currentOpenChannel, onBeforeSendFileMessage]); // useUpdateMessageCallback
+
+ var updateMessage = useCallback(function (messageId, text, callback) {
+ function createParamsDefualt(txt) {
+ var params = new sdk.UserMessageParams();
+ params.message = txt;
+ return params;
+ }
+
+ if (onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function') {
+ logger.info('OpenChannel | Creating params using onBeforeUpdateUserMessage');
+ }
+
+ var params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefualt(text);
+ currentOpenChannel.updateUserMessage(messageId, params, function (message, error) {
+ if (callback) {
+ callback();
+ }
+
+ if (!error) {
+ logger.info('OpenChannel | Updating message succeeded', {
+ message: message,
+ params: params
+ });
+ messagesDispatcher({
+ type: ON_MESSAGE_UPDATED,
+ payload: {
+ channel: currentOpenChannel,
+ message: message
+ }
+ });
+ } else {
+ logger.warning('OpenChannel | Updating message failed', error);
+ }
+ });
+ }, [currentOpenChannel, messagesDispatcher, onBeforeSendUserMessage]); // useDeleteMessageCallback
+
+ var deleteMessage = useCallback(function (message, callback) {
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message', message);
+ var requestState = message.requestState;
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message requestState: ', requestState);
+
+ if (requestState === 'failed' || requestState === 'pending') {
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleted message from local: ', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED_BY_REQ_ID,
+ payload: message.reqId
+ });
+
+ if (callback) {
+ callback();
+ }
+
+ return;
+ }
+
+ currentOpenChannel.deleteMessage(message, function (error) {
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message from remote: ', requestState);
+
+ if (callback) {
+ callback();
+ }
+
+ if (!error) {
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message succeeded', message);
+ messagesDispatcher({
+ type: ON_MESSAGE_DELETED,
+ payload: {
+ channel: currentOpenChannel,
+ messageId: message.messageId
+ }
+ });
+ } else {
+ logger.warning('OpenChannel | useDeleteMessageCallback: Deleting message failed', error);
+ }
+ });
+ }, [currentOpenChannel, messagesDispatcher]); // useResendMessageCallback
+
+ var resendMessage = useCallback(function (failedMessage) {
+ logger.info('OpenChannel | Reseding message has started', failedMessage);
+ var messageType = failedMessage.messageType,
+ file = failedMessage.file;
+
+ if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable()) {
+ // eslint-disable-next-line no-param-reassign
+ failedMessage.requestState = 'pending';
+ messagesDispatcher({
+ type: RESENDING_MESSAGE_START,
+ payload: {
+ channel: currentOpenChannel,
+ message: failedMessage
+ }
+ }); // userMessage
+
+ if (messageType === 'user' && failedMessage.messageType === 'user') {
+ currentOpenChannel.resendUserMessage(failedMessage, function (message, error) {
+ if (!error) {
+ logger.info('OpenChannel | Reseding message succeeded', message);
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ } else {
+ logger.warning('OpenChannel | Resending message failed', error); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'failed';
+ messagesDispatcher({
+ type: SENDING_MESSAGE_FAILED,
+ payload: failedMessage
+ });
+ }
+ });
+ return;
+ } // fileMessage
+
+
+ if (messageType === 'file' && failedMessage.messageType === 'file') {
+ currentOpenChannel.resendFileMessage(failedMessage, file, function (message, error) {
+ if (!error) {
+ logger.info('OpenChannel | Resending file message succeeded', message);
+ messagesDispatcher({
+ type: SENDING_MESSAGE_SUCCEEDED,
+ payload: message
+ });
+ } else {
+ logger.warning('OpenChannel | Resending file message failed', error); // eslint-disable-next-line no-param-reassign
+
+ failedMessage.requestState = 'failed';
+ messagesDispatcher({
+ type: SENDING_MESSAGE_FAILED,
+ payload: failedMessage
+ });
+ }
+ });
+ }
+ } else {
+ // to alert user on console
+ // eslint-disable-next-line no-console
+ console.error('OpenChannel | Message is not resendable');
+ logger.warning('OpenChannel | Message is not resendable', failedMessage);
+ }
+ }, [currentOpenChannel, messagesDispatcher]);
+
+ var handleClickScrollDownButton = function handleClickScrollDownButton() {
+ var promise = new Promise(function (resolve) {
+ resolve();
+ });
+ setScrollDownPromise(promise);
+ };
+
+ if (!currentOpenChannel || !currentOpenChannel.url) {
+ return React.createElement("div", {
+ className: COMPONENT_CLASS_NAME$1
+ }, React.createElement(PlaceHolder, {
+ type: PlaceHolderTypes.NO_CHANNELS
+ }));
+ }
+
+ if (loading) {
+ return React.createElement("div", {
+ className: COMPONENT_CLASS_NAME$1
+ }, React.createElement(PlaceHolder, {
+ type: PlaceHolderTypes.LOADING
+ }));
+ }
+
+ if (isInvalid) {
+ return React.createElement("div", {
+ className: COMPONENT_CLASS_NAME$1
+ }, React.createElement(PlaceHolder, {
+ type: PlaceHolderTypes.WRONG
+ }));
+ }
+
+ return React.createElement(UserProfileProvider, {
+ className: COMPONENT_CLASS_NAME$1,
+ disableUserProfile: userDefinedDisableUserProfile,
+ renderUserProfile: userDefinedRenderProfile
+ }, showScrollDownButton && React.createElement("div", {
+ className: COMPONENT_CLASS_NAME$1 + "__go-to-bottom",
+ onClick: handleClickScrollDownButton,
+ onKeyDown: handleClickScrollDownButton,
+ tabIndex: 0,
+ role: "button"
+ }, React.createElement(Icon, {
+ width: "24px",
+ height: "24px",
+ type: IconTypes.SHEVRON_DOWN,
+ fillColor: IconColors.CONTENT
+ })), renderChannelTitle ? renderChannelTitle({
+ channel: currentOpenChannel,
+ user: user
+ }) : React.createElement(OpenchannelConversationHeader, {
+ title: currentOpenChannel.name,
+ subTitle: kFormatter(currentOpenChannel.participantCount) + " " + stringSet.OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS,
+ coverImage: currentOpenChannel.coverUrl,
+ onActionClick: onChatHeaderActionClick
+ }), currentOpenChannel.isFrozen && React.createElement(FrozenNotification, null), React.createElement(OpenchannelConversationScroll, {
+ renderCustomMessage: renderCustomMessage,
+ openchannel: currentOpenChannel,
+ user: user,
+ useMessageGrouping: useMessageGrouping,
+ isOnline: isOnline,
+ allMessages: allMessages,
+ onScroll: onScroll,
+ hasMore: hasMore,
+ scrollDownPromise: scrollDownPromise,
+ showScrollDownButton: setShowScrollDownButton,
+ updateMessage: updateMessage,
+ deleteMessage: deleteMessage,
+ resendMessage: resendMessage
+ }), renderMessageInput ? renderMessageInput({
+ channel: currentOpenChannel,
+ user: user,
+ disabled: disabled
+ }) : React.createElement(MessageInputWrapper$1, {
+ channel: currentOpenChannel,
+ user: user,
+ ref: messageInputRef,
+ disabled: disabled,
+ onSendMessage: handleSendMessage,
+ onFileUpload: handleFileUpload,
+ renderMessageInput: renderMessageInput
+ }));
+};
+var index = withSendbirdContext(OpenchannelConversation);
+
+export default index;
+export { OpenchannelConversation };
+//# sourceMappingURL=OpenChannel.js.map
diff --git a/dist/esm/OpenChannel.js.map b/dist/esm/OpenChannel.js.map
new file mode 100644
index 0000000..b1071fc
--- /dev/null
+++ b/dist/esm/OpenChannel.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"OpenChannel.js","sources":["../../../src/smart-components/OpenchannelConversation/utils.ts","../../../src/smart-components/OpenchannelConversation/components/MessageInpuetWrapper.tsx","../../../src/smart-components/OpenchannelConversation/components/FrozenNotification.tsx","../../../src/ui/OpenchannelConversationHeader/index.tsx","../../../src/ui/OpenchannelUserMessage/utils.ts","../../../src/utils/openChannelUtils.ts","../../../src/ui/OpenchannelUserMessage/index.tsx","../../../src/ui/OpenChannelAdminMessage/index.tsx","../../../src/ui/OpenchannelOGMessage/utils.ts","../../../src/ui/OpenchannelOGMessage/index.tsx","../../../src/ui/OpenchannelThumbnailMessage/utils.ts","../../../src/ui/OpenchannelThumbnailMessage/index.tsx","../../../src/ui/OpenchannelFileMessage/utils.ts","../../../src/ui/OpenchannelFileMessage/index.tsx","../../../src/smart-components/OpenchannelConversation/components/RemoveMessageModal.tsx","../../../src/smart-components/OpenchannelConversation/components/types.ts","../../../src/smart-components/OpenchannelConversation/components/MessageHOC.tsx","../../../src/smart-components/OpenchannelConversation/components/OpenchannelConversationScroll.tsx","../../../src/smart-components/OpenchannelConversation/dux/actionTypes.ts","../../../src/smart-components/OpenchannelConversation/dux/reducers.ts","../../../src/smart-components/OpenchannelConversation/dux/initialState.ts","../../../src/smart-components/OpenchannelConversation/index.tsx"],"sourcesContent":["import format from 'date-fns/format';\nimport Sendbird from 'sendbird';\nimport SendbirdUIKit from '../../index';\n\nexport const getMessageCreatedAt = (message: SendbirdUIKit.EveryMessage): string => format(message.createdAt, 'p');\n\nexport const scrollIntoLast = (selector: string, intialTry = 0): void => {\n const MAX_TRIES = 10;\n const currentTry = intialTry;\n if (currentTry > MAX_TRIES) {\n return;\n }\n try {\n const nodes = document.querySelectorAll(selector);\n const last = nodes[nodes.length - 1];\n last.scrollIntoView(false); /** alignToTop: false */\n } catch (error) {\n setTimeout(() => {\n scrollIntoLast(selector, currentTry + 1);\n }, 500 * currentTry);\n }\n};\n\n\nexport const isSameGroup = (\n message: SendbirdUIKit.EveryMessage,\n comparingMessage: SendbirdUIKit.EveryMessage,\n): boolean => {\n if (\n !message\n || !comparingMessage\n || message.messageType === 'admin'\n || comparingMessage.messageType === 'admin'\n ) {\n return false\n }\n\n return (\n message.sendingStatus === comparingMessage.sendingStatus\n && message.sender.userId === comparingMessage.sender.userId\n && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage)\n );\n};\n\nexport const compareMessagesForGrouping = (\n prevMessage: SendbirdUIKit.EveryMessage,\n currMessage: SendbirdUIKit.EveryMessage,\n nextMessage: SendbirdUIKit.EveryMessage,\n): [boolean, boolean] => (\n [\n isSameGroup(prevMessage, currMessage),\n isSameGroup(currMessage, nextMessage),\n ]\n );\n\nexport const kFormatter = (num: number): string => {\n if (Math.abs(num) > 999999) {\n return `${(Math.abs(num) / 1000000).toFixed(1)}M`;\n }\n\n if (Math.abs(num) > 999) {\n return `${(Math.abs(num) / 1000).toFixed(1)}K`;\n }\n\n return `${num}`;\n};\n\nexport const isOperator = (openChannel: Sendbird.OpenChannel, userId: string): boolean => {\n const { operators } = openChannel;\n if (operators.map(operator => operator.userId).indexOf(userId) < 0) {\n return false;\n }\n return true;\n};\n\nexport const isDisabledBecauseFrozen = (openChannel: Sendbird.OpenChannel, userId: string): boolean => {\n const { isFrozen } = openChannel;\n return isFrozen && !isOperator(openChannel, userId);\n};\n\nexport const isDisabledBecauseMuted = (mutedParticipantIds: string[], userId: string): boolean => {\n return mutedParticipantIds.indexOf(userId) < 0;\n};\n","import React, { useContext } from 'react';\nimport Sendbird from 'sendbird';\nimport { RenderMessageInputProps } from '../../../index';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport MessageInput from '../../../ui/MessageInput';\n\ninterface Props {\n channel: Sendbird.OpenChannel;\n user: Sendbird.User;\n disabled: boolean;\n onSendMessage(): void;\n onFileUpload(file_: File): void;\n renderMessageInput?(renderProps: RenderMessageInputProps): JSX.Element;\n}\n\nconst MessageInputWrapper = ({\n channel,\n user,\n disabled,\n onSendMessage,\n onFileUpload,\n renderMessageInput,\n}: Props, ref: React.RefObject): JSX.Element => {\n if (!channel) {\n return;\n }\n\n const { stringSet } = useContext(LocalizationContext);\n\n if (renderMessageInput) {\n return renderMessageInput({ channel, user, disabled });\n }\n\n return (\n \n \n
\n );\n};\n\nexport default React.forwardRef(MessageInputWrapper);\n","import React, { useContext } from 'react';\n\nimport './frozen-notification.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography } from '../../../ui/Label';\n\nconst FrozenNotification = (): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n {stringSet.CHANNEL_FROZEN}\n \n
\n );\n}\n\nexport default FrozenNotification;\n","import React, { ReactElement } from 'react';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport IconButton from '../IconButton';\nimport Label, {\n LabelTypography,\n LabelColors,\n LabelStringSet,\n} from '../Label';\n\nconst COMPONENT_CLASS_NAME = 'sendbird-openchannel-conversation-header';\n\ninterface Props {\n coverImage?: string;\n title?: string;\n subTitle?: string;\n onActionClick?(): void;\n}\n\nexport default function OpenchannelConversationHeader({\n coverImage,\n title = LabelStringSet.NO_TITLE,\n subTitle = LabelStringSet.NO_TITLE,\n onActionClick,\n}: Props): ReactElement {\n return (\n\n \n
\n {\n coverImage ? (\n
\n ) : (\n
\n )\n }\n
\n {title}\n \n
\n {subTitle}\n \n
\n
\n \n \n \n
\n
\n );\n}\n","export const copyToClipboard = (text: string): boolean => {\n // @ts-ignore: Unreachable code error\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.\n // @ts-ignore: Unreachable code error\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n};\n\nexport default { copyToClipboard };\n","import Sendbird from 'sendbird';\nimport { ClientUserMessage, ClientFileMessage } from '../index';\n\nconst OpenChannelMessageStatusTypes = {\n NONE: 'none',\n PENDING: 'pending',\n FAILED: 'failed',\n CANCELED: 'canceled',\n SUCCEEDED: 'succeeded'\n};\n\nexport const getSenderFromMessage = (message: ClientUserMessage | ClientFileMessage): Sendbird.User => {\n return message.sender || message._sender;\n};\n\nexport const checkIsSent = (status: string): boolean => (status === OpenChannelMessageStatusTypes.SUCCEEDED);\n\nexport const checkIsByMe = (message: ClientFileMessage | ClientUserMessage, userId: string): boolean => (getSenderFromMessage(message).userId === userId);\n\ninterface isFineCopyParams {\n message: ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineCopy = ({ message }: isFineCopyParams): boolean => {\n return (message.messageType === 'user' && message.message.length > 0);\n};\n\ninterface isFineResendParams {\n message: ClientFileMessage | ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineResend = ({ message, status, userId }: isFineResendParams): boolean => {\n return checkIsByMe(message, userId)\n && !checkIsSent(status)\n && message.isResendable\n && message.isResendable();\n};\n\ninterface isFineEditParams {\n message: ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineEdit = ({ message, status, userId }: isFineEditParams): boolean => {\n return checkIsByMe(message, userId) && checkIsSent(status);\n};\n\ninterface isFineDeleteParams {\n message: ClientFileMessage | ClientUserMessage;\n status: string;\n userId: string;\n}\nexport const isFineDelete = ({ message, userId }: isFineDeleteParams): boolean => {\n return checkIsByMe(message, userId);\n};\n\ninterface showMenuTriggerParams {\n message: ClientUserMessage | ClientFileMessage;\n status: string;\n userId: string;\n}\nexport const showMenuTrigger = (props: showMenuTriggerParams): boolean => {\n const { message, status, userId } = props;\n if (message.messageType === 'user') {\n return (\n isFineDelete({ message, status, userId })\n || isFineEdit({ message, status, userId })\n || isFineCopy({ message, status, userId })\n || isFineResend({ message, status, userId })\n );\n } else {\n return (\n isFineDelete({ message, status, userId })\n || isFineResend({ message, status, userId })\n );\n }\n};\n","import React, {\n useMemo,\n useContext,\n useRef,\n useState,\n ReactElement,\n useEffect,\n} from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { copyToClipboard } from './utils';\nimport uuidv4 from '../../utils/uuid';\nimport { ClientUserMessage } from '../../index';\nimport {\n checkIsByMe,\n isFineCopy,\n isFineEdit,\n isFineResend,\n isFineDelete,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n message: ClientUserMessage;\n userId: string;\n className?: string | string[];\n disabled?: boolean;\n showEdit(bool: boolean): void;\n showRemove(bool: boolean): void;\n resendMessage(message: ClientUserMessage): void;\n chainTop?: boolean;\n chainBottom?: boolean;\n status: string;\n}\n\nexport default function OpenchannelUserMessage({\n message,\n className,\n userId,\n resendMessage,\n disabled,\n showEdit,\n showRemove,\n chainTop,\n status,\n}: Props): ReactElement {\n if (!message || message.messageType !== 'user') {\n return null;\n }\n\n // hooks\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n const messageRef = useRef(null);\n const avatarRef = useRef(null);\n const contextMenuRef = useRef(null);\n const [contextStyle, setContextStyle] = useState({});\n\n // consts\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.push(`sendbird-openchannel-user-message`);\n const isByMe = checkIsByMe(message, userId);\n const sender = getSenderFromMessage(message);\n\n const MemoizedMessageText = useMemo(() => () => {\n const splitMessage = message.message.split(/\\r/);\n const matchedMessage = splitMessage.map((word) => (word !== '' ? word : ));\n if (message.updatedAt > 0) {\n matchedMessage.push(\n \n {` ${stringSet.MESSAGE_EDITED} `}\n ,\n );\n }\n return matchedMessage;\n }, [message, message.updatedAt]);\n\n // place context menu top depending clientHeight of message component\n useEffect(() => {\n if (messageRef.current.clientHeight > 36) {\n setContextStyle({ top: '8px ' });\n } else {\n setContextStyle({ top: '2px' });\n }\n }, [window.innerWidth]);\n\n return (\n \n
\n {\n !chainTop && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n \n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n \n \n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n \n
\n )\n }\n
\n \n {MemoizedMessageText()}\n \n
\n
\n {\n
\n (\n showMenuTrigger({ message: message, userId: userId, status: status}) && (\n {\n toggleDropdown();\n }}\n >\n \n \n )\n )}\n menuItems={(closeDropdown) => (\n \n {\n isFineCopy({ message: message, userId: userId, status: status }) && (\n {\n copyToClipboard(message.message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__COPY}\n \n )\n }\n {\n isFineEdit({ message: message, userId: userId, status: status }) && (\n {\n if (disabled) {\n return;\n }\n showEdit(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__EDIT}\n \n )\n }\n {\n isFineResend({ message: message, userId: userId, status: status }) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n isFineDelete({ message: message, userId: userId, status: status }) && (\n {\n if (disabled) {\n return;\n }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n )\n }\n \n )}\n />\n
\n }\n
\n );\n}\n","import React, { ReactElement } from 'react';\nimport { ClientAdminMessage } from '../../index';\nimport './index.scss';\n\nimport Label, { LabelColors, LabelTypography } from '../Label';\n\ninterface Props {\n message: ClientAdminMessage;\n className?: string | string[];\n}\n\nexport default function OpenChannelAdminMessage({\n message,\n className,\n}: Props): ReactElement {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.push('sendbird-openchannel-admin-message');\n\n return (\n \n \n {message.message || ''}\n \n
\n );\n}\n","import Sendbird from 'sendbird';\n\nexport const URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;\nexport const createUrlTester = (regexp: RegExp) => (text: string): boolean => regexp.test(text);\nexport const checkOGIsEnalbed = (message: Sendbird.UserMessage): boolean => {\n const { ogMetaData } = message;\n if (!ogMetaData) {\n return false;\n }\n const { url } = ogMetaData;\n if (!url) {\n return false;\n }\n return true;\n};\n","import React, { useState, useContext, useMemo, useRef, useEffect } from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport ImageRenderer from '../ImageRenderer';\nimport LinkLabel from '../LinkLabel';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\n\nimport uuidv4 from '../../utils/uuid';\nimport { copyToClipboard } from '../OpenchannelUserMessage/utils';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { checkOGIsEnalbed, createUrlTester, URL_REG } from './utils';\nimport { ClientUserMessage } from '../../index';\nimport {\n checkIsByMe,\n isFineCopy,\n isFineEdit,\n isFineResend,\n isFineDelete,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n message: ClientUserMessage;\n className?: string | string[];\n disabled?: boolean;\n showEdit(bool: boolean): void;\n showRemove(bool: boolean): void;\n resendMessage(message: ClientUserMessage): void;\n chainTop?: boolean;\n chainBottom?: boolean;\n status: string;\n userId: string;\n}\n\nexport default function OpenchannelOGMessage({\n message,\n className,\n disabled,\n showEdit,\n showRemove,\n resendMessage,\n chainTop,\n status,\n userId,\n}: Props): JSX.Element {\n if (!message || message.messageType !== 'user') {\n return null;\n }\n\n const { ogMetaData } = message;\n const { defaultImage } = ogMetaData;\n\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n const [contextStyle, setContextStyle] = useState({});\n const messageComponentRef = useRef(null);\n const contextMenuRef = useRef(null);\n const avatarRef = useRef(null);\n\n const isUrl = createUrlTester(URL_REG);\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.push('sendbird-openchannel-og-message');\n const isByMe = checkIsByMe(message, userId);\n const sender = getSenderFromMessage(message);\n\n const MemoizedMessageText = useMemo(() => () => {\n const wordClassName = 'sendbird-openchannel-og-message--word';\n const splitMessage = message.message.split(' ');\n const matchedMessage = splitMessage\n .map((word) => (\n isUrl(word)\n ? (\n \n {word}\n \n )\n : (\n \n {word}\n \n )\n ));\n\n if (message.updatedAt > 0) {\n matchedMessage.push(\n \n {stringSet.MESSAGE_EDITED}\n ,\n );\n }\n\n return matchedMessage;\n }, [message, message.updatedAt]);\n\n const openLink = () => {\n if (checkOGIsEnalbed(message)) {\n const { url } = ogMetaData;\n window.open(url);\n }\n };\n\n // place conxt menu top depending clientHeight of message component\n useEffect(() => {\n if (messageComponentRef.current.clientHeight > 36) {\n setContextStyle({ top: '8px ' });\n } else {\n setContextStyle({ top: '2px' });\n }\n }, [window.innerWidth]);\n\n return (\n \n
\n
\n {\n !chainTop && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n \n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n \n \n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n \n
\n )\n }\n
\n \n {MemoizedMessageText()}\n \n
\n
\n {\n
\n (\n showMenuTrigger({ message: message, userId: userId, status: status }) && (\n {\n toggleDropdown();\n }}\n >\n \n \n )\n )}\n menuItems={(closeDropdown) => (\n \n {\n isFineCopy({ message, userId, status }) && (\n {\n copyToClipboard(message.message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__COPY}\n \n )\n }\n {\n isFineEdit({ message, userId, status }) && (\n {\n if (disabled) {\n return;\n }\n showEdit(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__EDIT}\n \n )\n }\n {\n isFineResend({ message, userId, status }) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n isFineDelete({ message, userId, status }) && (\n {\n if (disabled) {\n return;\n }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n )\n }\n \n )}\n />\n
\n }\n
\n
\n
\n {\n ogMetaData.url && (\n
\n {ogMetaData.url}\n \n )\n }\n {\n ogMetaData.title && (\n
\n {\n ogMetaData.title\n }\n \n )\n }\n {\n ogMetaData.description && (\n
\n {ogMetaData.description}\n \n )\n }\n {\n ogMetaData.url && (\n
\n {\n defaultImage && (\n \n \n
\n )}\n />\n )\n }\n
\n )\n }\n
\n
\n \n );\n}\n","export const SUPPORTING_TYPES = {\n IMAGE: 'IMAGE',\n VIDEO: 'VIDEO',\n UNSUPPORTED: 'UNSUPPORTED',\n};\n\nconst SUPPORTED_MIMES = {\n IMAGE: [\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n ],\n VIDEO: [\n 'video/mpeg',\n 'video/ogg',\n 'video/webm',\n 'video/mp4',\n ],\n};\n\nexport const getSupportingFileType = (type: string): string => {\n if (SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0) {\n return SUPPORTING_TYPES.IMAGE;\n }\n if (SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0) {\n return SUPPORTING_TYPES.VIDEO;\n }\n return SUPPORTING_TYPES.UNSUPPORTED;\n}\n","import React, { useContext, useRef } from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\nimport { SUPPORTING_TYPES, getSupportingFileType } from './utils';\nimport { ClientFileMessage } from '../../index';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport ImageRenderer from '../ImageRenderer';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport {\n checkIsByMe,\n checkIsSent,\n isFineResend,\n isFineDelete,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n message: ClientFileMessage;\n className?: string | string[];\n disabled: boolean;\n userId: string;\n status: string;\n chainTop: boolean;\n chainBottom: boolean;\n onClick(bool: boolean): void,\n showRemove(bool: boolean): void,\n resendMessage(message: ClientFileMessage): void;\n}\n\nexport default function OpenchannelThumbnailMessage({\n message,\n className,\n disabled,\n userId,\n status,\n chainTop,\n onClick,\n showRemove,\n resendMessage,\n}: Props): JSX.Element {\n const {\n type,\n url,\n localUrl,\n } = message;\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n const contextMenuRef = useRef(null);\n const avatarRef = useRef(null);\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.push('sendbird-openchannel-thumbnail-message');\n const isByMe = checkIsByMe(message, userId);\n const isMessageSent = checkIsSent(status);\n const sender = getSenderFromMessage(message);\n\n return (\n \n
\n {\n !chainTop && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n \n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n \n \n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n \n
\n )\n }\n
\n
{\n if (isMessageSent) {\n onClick(true);\n }\n }}\n onKeyDown={() => {\n if (isMessageSent) {\n onClick(true);\n }\n }}\n tabIndex={0}\n role=\"button\"\n >\n
\n {\n {\n [SUPPORTING_TYPES.VIDEO]: (\n (url || localUrl)\n ? (\n
\n \n \n \n \n
\n )\n : (\n
\n )\n ),\n [SUPPORTING_TYPES.IMAGE]: (\n (url || localUrl)\n ? (\n
\n )\n : (\n
\n )\n ),\n [SUPPORTING_TYPES.UNSUPPORTED]: (\n
\n ),\n }[getSupportingFileType(type)]\n }\n
\n
\n
\n
\n (\n showMenuTrigger({ message, userId, status }) && (\n \n \n \n )\n )}\n menuItems={(closeDropdown) => (\n \n {\n isFineResend({ message, userId, status }) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n isFineDelete({ message, userId, status }) && (\n {\n if (disabled) {\n return;\n }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n )\n }\n \n )}\n />\n
\n
\n );\n}\n","import { IconTypes } from '../Icon';\n\nexport const checkFileType = (fileUrl: string): string => {\n let result = null;\n const imageFile = /(\\.gif|\\.jpg|\\.jpeg|\\.txt|\\.pdf)$/i;\n const audioFile = /(\\.mp3)$/i;\n if (imageFile.test(fileUrl)) {\n result = IconTypes.FILE_DOCUMENT;\n } else if (audioFile.test(fileUrl)) {\n result = IconTypes.FILE_AUDIO;\n }\n return result;\n}\n\nexport const truncate = (fullStr:string, strLen: number): string => {\n if (fullStr === null || fullStr === undefined) return '';\n if (fullStr.length <= strLen) return fullStr;\n const separator = '...';\n const sepLen = separator.length;\n const charsToShow = strLen - sepLen;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n};\n","import React, { useContext, useRef } from 'react';\nimport format from 'date-fns/format';\nimport './index.scss';\n\nimport Avatar from '../Avatar';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport TextButton from '../TextButton';\nimport UserProfile from '../UserProfile';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { checkFileType, truncate } from './utils';\nimport { ClientFileMessage } from '../../index';\nimport {\n checkIsByMe,\n isFineDelete,\n isFineResend,\n showMenuTrigger,\n} from '../../utils/openChannelUtils';\nimport { getSenderFromMessage } from '../../utils/openChannelUtils';\n\ninterface Props {\n message: ClientFileMessage;\n className?: string | string[];\n userId: string;\n disabled?: boolean;\n chainTop?: boolean;\n chainBottom?: boolean;\n status: string;\n\n showRemove(bool: boolean): void;\n resendMessage(message: ClientFileMessage): void;\n}\n\nexport default function OpenchannelFileMessage({\n message,\n className,\n userId,\n disabled,\n chainTop,\n status,\n showRemove,\n resendMessage,\n}: Props): JSX.Element {\n const contextMenuRef = useRef(null);\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const { disableUserProfile, renderUserProfile } = useContext(UserProfileContext);\n\n const openFileUrl = () => { window.open(message.url); };\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.push('sendbird-openchannel-file-message');\n const isByMe = checkIsByMe(message, userId);\n const sender = getSenderFromMessage(message);\n\n return (\n \n
\n {\n !chainTop && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? (\n renderUserProfile({\n user: sender,\n close: closeDropdown,\n })\n )\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n \n {\n sender && (\n sender.friendName\n || sender.nickname\n || sender.userId\n )\n }\n \n \n {\n message.createdAt && (\n format(message.createdAt, 'p')\n )\n }\n \n
\n )\n }\n
\n {\n checkFileType(message.url) && (\n \n )\n }\n \n \n {truncate(message.url, 40)}\n \n \n
\n
\n
\n {\n (\n showMenuTrigger({ message, userId, status }) && (\n \n \n \n )\n )}\n menuItems={(closeDropdown) => (\n \n {\n isFineResend({ message, userId, status }) && (\n {\n if (disabled) { return; }\n resendMessage(message);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__RESEND}\n \n )\n }\n {\n isFineDelete({ message, userId, status }) && (\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n {stringSet.CONTEXT_MENU_DROPDOWN__DELETE}\n \n )\n }\n \n )}\n />\n }\n
\n
\n );\n}\n","import React, { useContext } from 'react'\nimport { ClientFileMessage, ClientUserMessage } from '../../..'\nimport Modal from '../../../ui/Modal';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n onCloseModal(): void;\n onDeleteMessage(message: ClientUserMessage | ClientFileMessage, callback?: () => void): void;\n}\n\nexport default function RemoveMessageModal({\n onCloseModal,\n onDeleteMessage,\n}: Props): JSX.Element {\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n );\n}\n","import { EveryMessage } from '../../..';\nimport { isImage, isVideo } from '../../../ui/FileViewer/types';\n\nexport const MessageTypes = {\n ADMIN: 'ADMIN',\n USER: 'USER',\n FILE: 'FILE',\n THUMBNAIL: 'THUMBNAIL',\n OG: 'OG',\n UNKNOWN: 'UNKNOWN',\n};\n\nexport const SendingMessageStatus = {\n NONE: 'none',\n SUCCEEDED: 'succeeded',\n FAILED: 'failed',\n PENDING: 'pending',\n};\n\nexport const getMessageType = (message: EveryMessage): string => {\n if ((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user') {\n return (message.ogMetaData)\n ? MessageTypes.OG\n : MessageTypes.USER;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return MessageTypes.ADMIN;\n }\n if (message.messageType === 'file') {\n return (isImage(message.type) || isVideo(message.type))\n ? MessageTypes.THUMBNAIL\n : MessageTypes.FILE;\n }\n return MessageTypes.UNKNOWN;\n};\n\nexport default {\n MessageTypes,\n SendingMessageStatus,\n getMessageType,\n};\n","import React, {\n useState,\n useRef,\n ReactElement,\n useMemo,\n} from 'react';\n\nimport format from 'date-fns/format';\nimport {\n ClientFileMessage,\n ClientUserMessage,\n EveryMessage,\n RenderCustomMessage,\n} from '../../../index';\n\nimport OpenChannelUserMessage from '../../../ui/OpenchannelUserMessage';\nimport OpenChannelAdminMessage from '../../../ui/OpenChannelAdminMessage';\nimport OpenChannelOGMessage from '../../../ui/OpenchannelOGMessage';\nimport OpenChannelThumbnailMessage from '../../../ui/OpenchannelThumbnailMessage';\nimport OpenChannelFileMessage from '../../../ui/OpenchannelFileMessage';\n// import UnknownMessage from '../../../ui/UnknownMessage';\n\nimport DateSeparator from '../../../ui/DateSeparator';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport MessageInput from '../../../ui/MessageInput';\nimport FileViewer from '../../../ui/FileViewer';\n\nimport RemoveMessageModal from './RemoveMessageModal';\nimport {\n MessageTypes,\n SendingMessageStatus,\n getMessageType,\n} from './types';\nimport { OpenChannel } from 'sendbird';\n\ninterface Props {\n message: EveryMessage;\n userId: string;\n disabled: boolean;\n editDisabled: boolean;\n hasSeperator: boolean;\n channel: OpenChannel;\n renderCustomMessage?: RenderCustomMessage,\n deleteMessage(message: ClientUserMessage | ClientFileMessage, callback?: () => void): void;\n updateMessage(messageId: number, text: string, callback?: () => void): void;\n resendMessage(failedMessage: ClientUserMessage | ClientFileMessage): void;\n status?: string;\n chainTop: boolean;\n chainBottom: boolean;\n}\n\nexport default function MessageHoc({\n message,\n userId,\n disabled,\n editDisabled,\n hasSeperator,\n channel,\n renderCustomMessage,\n deleteMessage,\n updateMessage,\n resendMessage,\n status,\n chainTop,\n chainBottom,\n}: Props): ReactElement {\n let sender: SendBird.User = null;\n if (message.messageType !== 'admin') {\n sender = message.sender;\n }\n\n const RenderedMessage = useMemo(() => {\n if (renderCustomMessage) {\n return renderCustomMessage(message, channel);\n }\n return null;\n }, [message, renderCustomMessage]);\n\n const [showEdit, setShowEdit] = useState(false);\n const [showRemove, setShowRemove] = useState(false);\n const [showFileViewer, setShowFileViewer] = useState(false);\n const editMessageInputRef = useRef(null);\n\n let isByMe = false;\n\n if (sender && message.messageType !== 'admin') {\n // pending and failed messages are by me\n isByMe = (userId === sender.userId)\n || (message.requestState === SendingMessageStatus.PENDING)\n || (message.requestState === SendingMessageStatus.FAILED);\n }\n\n if(RenderedMessage) {\n return (\n \n \n
\n );\n }\n\n if (message.messageType === 'user' && showEdit) {\n return (\n { setShowEdit(false); }}\n value={message.message}\n />\n );\n }\n\n return (\n \n {/* date-seperator */}\n {\n hasSeperator && (\n \n \n {format(message.createdAt, 'MMMM dd, yyyy')}\n \n \n )\n }\n {/* Message */}\n {\n {\n [MessageTypes.ADMIN]: (() => {\n if (message.messageType === 'admin') {\n return (\n \n )\n }\n })(),\n [MessageTypes.FILE]: (() => {\n if (message.messageType === 'file') {\n return (\n \n );\n }\n return;\n })(),\n [MessageTypes.OG]: (() => {\n if (message.messageType === 'user') {\n return (\n \n );\n }\n return;\n })(),\n [MessageTypes.THUMBNAIL]: (() => {\n if (message.messageType === 'file') {\n return (\n \n );\n }\n return;\n })(),\n [MessageTypes.USER]: (() => {\n if (message.messageType === 'user') {\n return (\n \n );\n }\n return;\n })(),\n [MessageTypes.UNKNOWN]: (() => {\n return;\n // return (\n // \n // );\n })(),\n }[getMessageType(message)]\n }\n {/* Modal */}\n {\n showRemove && (\n setShowRemove(false)}\n onDeleteMessage={() => {\n if (message.messageType !== 'admin') {\n deleteMessage(message);\n }\n }}\n />\n )\n }\n {\n showFileViewer && (\n setShowFileViewer(false)}\n message={message}\n onDelete={deleteMessage}\n isByMe={isByMe}\n />\n )\n }\n {/* {\n !((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file')\n && !(message.isAdminMessage && message.isAdminMessage())\n && !(((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user'))\n && !(showFileViewer)\n && (\n \n )\n } */}\n
\n );\n}\n","import React, { ReactElement, useRef, useEffect } from 'react';\nimport isSameDay from 'date-fns/isSameDay';\nimport {\n ClientFileMessage,\n ClientUserMessage,\n EveryMessage,\n RenderCustomMessage,\n} from '../../../index';\nimport MessageHoc from './MessageHOC';\n\nimport './openchannel-conversation-scroll.scss';\nimport { compareMessagesForGrouping } from '../utils';\n\ninterface Props {\n openchannel: SendBird.OpenChannel;\n user: SendBird.User;\n allMessages: EveryMessage[];\n useMessageGrouping: boolean;\n isOnline: boolean;\n hasMore: boolean;\n renderCustomMessage?: RenderCustomMessage;\n onScroll(callback?: () => void): void;\n scrollDownPromise: PromiseLike;\n showScrollDownButton?(bool: boolean): void;\n updateMessage(messageId: number, text: string, callback?: () => void ): void;\n deleteMessage(message: ClientUserMessage | ClientFileMessage, callback?: () => void ): void;\n resendMessage(failedMessage: ClientUserMessage | ClientFileMessage): void;\n}\n\nexport default function OpenchannelConversationScroll(\n {\n useMessageGrouping = true,\n openchannel,\n user,\n allMessages,\n isOnline = true,\n hasMore,\n onScroll,\n scrollDownPromise,\n renderCustomMessage,\n showScrollDownButton,\n updateMessage,\n deleteMessage,\n resendMessage,\n }: Props\n): ReactElement {\n const scrollRef = useRef(null);\n\n const handleOnScroll = (e) => {\n const element = e.target;\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n } = element;\n if (showScrollDownButton) {\n if (scrollHeight > scrollTop + clientHeight) {\n showScrollDownButton(true);\n } else {\n showScrollDownButton(false);\n }\n }\n\n if (scrollTop === 0) {\n if (!hasMore) {\n return;\n }\n const nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');\n onScroll(() => {\n const first = nodes[0];\n first.scrollIntoView();\n });\n }\n };\n\n useEffect(() => {\n // This promise is created in everytime when user click the scroll to bottom button\n // This scope waits when user click the button and scrolls to the bottom of conversation\n if (scrollDownPromise && scrollRef && scrollRef.current) {\n scrollDownPromise.then(() => {\n scrollRef.current.scrollTo(0, scrollRef.current.scrollHeight);\n if (showScrollDownButton) {\n showScrollDownButton(false);\n }\n });\n }\n return;\n }, [scrollDownPromise]);\n\n return (\n \n
\n
\n
\n {\n allMessages.map((message, index) => {\n let status: string;\n\n if (message.messageType !== 'admin') {\n status = message.sendingStatus;\n }\n\n const previousMessage = allMessages[index - 1];\n const nextMessage = allMessages[index - 1];\n\n const previousMessageCreatedAt = previousMessage && previousMessage.createdAt;\n const currentCreatedAt = message.createdAt;\n // https://stackoverflow.com/a/41855608\n const hasSeperator = !(previousMessageCreatedAt && (\n isSameDay(currentCreatedAt, previousMessageCreatedAt)\n ));\n\n const [chainTop, chainBottom] = useMessageGrouping\n ? compareMessagesForGrouping(previousMessage, message, nextMessage)\n : [false, false];\n return (\n \n )\n })\n }\n
\n
\n
\n );\n}\n","export const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\nexport const SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';\nexport const RESET_MESSAGES = 'RESET_MESSAGES';\nexport const GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';\nexport const GET_PREV_MESSAGES_FAIL = 'GET_PREV_MESSAGES_FAIL';\nexport const SENDING_MESSAGE_FAILED = 'SENDING_MESSAGE_FAILED';\nexport const SENDING_MESSAGE_SUCCEEDED = 'SENDING_MESSAGE_SUCCEEDED';\nexport const SENDING_MESSAGE_START = 'SENDING_MESSAGE_START';\nexport const RESENDING_MESSAGE_START = 'RESENDING_MESSAGE_START';\n\n// event handlers\nexport const ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';\nexport const ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';\nexport const ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';\nexport const ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';\nexport const ON_OPERATOR_UPDATED = 'ON_OPERATOR_UPDATED';\nexport const ON_USER_ENTERED = 'ON_USER_ENTERED';\nexport const ON_USER_EXITED = 'ON_USER_EXITED';\nexport const ON_USER_MUTED = 'ON_USER_MUTED';\nexport const ON_USER_UNMUTED = 'ON_USER_UNMUTED';\nexport const ON_USER_BANNED = 'ON_USER_BANNED';\nexport const ON_USER_UNBANNED = 'ON_USER_UNBANNED';\nexport const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';\nexport const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';\nexport const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';\nexport const ON_META_DATA_CREATED = 'ON_META_DATA_CREATED';\nexport const ON_META_DATA_UPDATED = 'ON_META_DATA_UPDATED';\nexport const ON_META_DATA_DELETED = 'ON_META_DATA_DELETED';\nexport const ON_META_COUNTERS_CREATED = 'ON_META_COUNTERS_CREATED';\nexport const ON_META_COUNTERS_UPDATED = 'ON_META_COUNTERS_UPDATED';\nexport const ON_META_COUNTERS_DELETED = 'ON_META_COUNTERS_DELETED';\nexport const ON_MENTION_RECEIVED = 'ON_MENTION_RECEIVED';\n","import { State as initialStateInterface } from './initialState';\nimport * as actionTypes from './actionTypes';\n\nimport compareIds from '../../../utils/compareIds.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// @ts-ignore: Unreachable code error\ninterface ActionInterface {\n type: string;\n payload?: any;\n}\n\nexport default function reducer(\n state: initialStateInterface,\n action: ActionInterface,\n): initialStateInterface {\n switch (action.type) {\n case actionTypes.RESET_MESSAGES: {\n return {\n ...state,\n allMessages: [],\n };\n }\n\n case actionTypes.SET_CURRENT_CHANNEL: {\n const currentChannel = action.payload;\n const operators = currentChannel.operators;\n if (\n !state.isInvalid\n && state.currentOpenChannel\n && state.currentOpenChannel.url\n && (state.currentOpenChannel.url === currentChannel.url)\n ) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: currentChannel,\n isInvalid: false,\n operators: operators,\n participants: operators,\n };\n }\n case actionTypes.SET_CHANNEL_INVALID: {\n return {\n ...state,\n isInvalid: true,\n };\n }\n case actionTypes.GET_PREV_MESSAGES_SUCESS:\n case actionTypes.GET_PREV_MESSAGES_FAIL: {\n const isFailed = (action.type === actionTypes.GET_PREV_MESSAGES_FAIL);\n const {\n currentOpenChannel = {},\n messages = [],\n hasMore,\n lastMessageTimestamp,\n } = action.payload;\n const actionChannelUrl = currentOpenChannel.url;\n const receivedMessages = isFailed ? [] : messages;\n const _hasMore = isFailed ? false : hasMore;\n const _lastMessageTimestamp = isFailed ? 0 : lastMessageTimestamp;\n\n const stateChannel = state.currentOpenChannel;\n const stateChannelUrl = stateChannel.url;\n\n if (actionChannelUrl !== stateChannelUrl) {\n return state;\n }\n\n const filteredAllMessages = state.allMessages.filter((message) => (\n !(receivedMessages.find(({ messageId }) => compareIds(messageId, message.messageId)))\n ));\n return {\n ...state,\n loading: false,\n initialized: true,\n hasMore: _hasMore,\n lastMessageTimestamp: _lastMessageTimestamp,\n allMessages: [\n ...receivedMessages,\n ...filteredAllMessages,\n ],\n };\n }\n case actionTypes.SENDING_MESSAGE_START: {\n const {\n message,\n channel,\n } = action.payload;\n if (channel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n allMessages: [\n ...state.allMessages,\n { ...message },\n ],\n };\n }\n case actionTypes.SENDING_MESSAGE_SUCCEEDED: {\n const sentMessage = action.payload;\n const newMessages = state.allMessages.map((m) => (\n compareIds(m.reqId, sentMessage.reqId) ? sentMessage : m\n ));\n return {\n ...state,\n allMessages: newMessages,\n };\n }\n case actionTypes.SENDING_MESSAGE_FAILED: {\n const sentMessage = action.payload;\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, sentMessage.reqId) ? sentMessage : m\n )),\n };\n }\n case actionTypes.RESENDING_MESSAGE_START: {\n const eventedChannel = action.payload.channel;\n const resentMessage = action.payload.message;\n if (eventedChannel.url !== state.currentOpenChannel.url) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, resentMessage.reqId) ? resentMessage : m\n )),\n };\n }\n case actionTypes.ON_MESSAGE_RECEIVED: {\n const eventedChannel = action.payload.channel;\n const receivedMessage = action.payload.message;\n const {\n currentOpenChannel\n } = state;\n\n if (\n !compareIds(eventedChannel.url, currentOpenChannel.url)\n || (\n !(state.allMessages.map(\n (message) => message.messageId).indexOf(receivedMessage.messageId) < 0\n ))\n ) {\n return state;\n }\n\n return {\n ...state,\n allMessages: [...state.allMessages, receivedMessage],\n };\n }\n case actionTypes.ON_MESSAGE_UPDATED: {\n const eventedChannel = action.payload.channel;\n const updatedMessage = action.payload.message;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.map((message) => (\n message.isIdentical(updatedMessage)\n ? updatedMessage\n : message\n )),\n };\n }\n case actionTypes.ON_MESSAGE_DELETED: {\n const eventedChannel = action.payload.channel;\n const deletedMessageId = action.payload.messageId;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n allMessages: state.allMessages.filter((message) => (\n !compareIds(message.messageId, deletedMessageId)\n )),\n };\n }\n case actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID: {\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.reqId, action.payload)\n )),\n };\n }\n case actionTypes.ON_OPERATOR_UPDATED: {\n const eventedChannel = action.payload.channel;\n const updatedOperators = action.payload.operators;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: {\n ...state.currentOpenChannel,\n operators: updatedOperators,\n },\n operators: updatedOperators,\n };\n }\n case actionTypes.ON_USER_ENTERED: {\n const eventedChannel = action.payload.channel;\n const enteredUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n participants: [...state.participants, enteredUser],\n };\n }\n case actionTypes.ON_USER_EXITED: {\n const eventedChannel = action.payload.channel;\n const exitedUser = action.payload.user;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== eventedChannel.url)) {\n return state;\n }\n return {\n ...state,\n participants: state.participants.filter((participant) => (\n !compareIds(participant.userId, exitedUser.userId)\n )),\n };\n }\n case actionTypes.ON_USER_MUTED: {\n // const eventedChannel = action.payload.channel;\n // const mutedUser = action.payload.user;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_USER_UNMUTED: {\n // const eventedChannel = action.payload.channel;\n // const unmutedUser = action.payload.user;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_USER_BANNED: {\n // const eventedChannel = action.payload.channel;\n // const bannedUser = action.payload.user;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_USER_UNBANNED: {\n // const eventedChannel = action.payload.channel;\n // const unbannedUser = action.payload.user;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_CHANNEL_FROZEN: {\n const frozenChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== frozenChannel.url)) {\n return state;\n }\n return {\n ...state,\n frozen: true,\n };\n }\n case actionTypes.ON_CHANNEL_UNFROZEN: {\n const unfrozenChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== unfrozenChannel.url)) {\n return state;\n }\n return {\n ...state,\n frozen: false,\n };\n }\n case actionTypes.ON_CHANNEL_CHANGED: {\n const changedChannel = action.payload;\n const currentChannel = state.currentOpenChannel;\n if (!currentChannel || currentChannel.url && (currentChannel.url !== changedChannel.url)) {\n return state;\n }\n return {\n ...state,\n currentOpenChannel: changedChannel,\n };\n }\n case actionTypes.ON_META_DATA_CREATED: {\n // const eventedChannel = action.payload.channel;\n // const createdMetaData = action.payload.metaData;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_DATA_UPDATED: {\n // const eventedChannel = action.payload.channel;\n // const updatedMetaData = action.payload.metaData;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_DATA_DELETED: {\n // const eventedChannel = action.payload.channel;\n // const deletedMetaDataKeys = action.payload.metaDataKeys;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_CREATED: {\n // const eventedChannel = action.payload.channel;\n // const createdMetaCounter = action.payload.metaCounter;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_UPDATED: {\n // const eventedChannel = action.payload.channel;\n // const updatedMetaCounter = action.payload.metaCounter;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_META_COUNTERS_DELETED: {\n // const eventedChannel = action.payload.channel;\n // const deletedMetaCounterKeys = action.payload.metaCounterKeys;\n // return {\n // ...state\n // };\n return state;\n }\n case actionTypes.ON_MENTION_RECEIVED: {\n // const eventedChannel = action.payload.channel;\n // const mentionedMessage = action.payload.message;\n // return {\n // ...state\n // };\n return state;\n }\n default:\n return state;\n }\n}\n","import Sendbird from 'sendbird';\nimport { EveryMessage } from '../../../index';\n\nexport interface State {\n allMessages: EveryMessage[];\n loading: boolean;\n initialized: boolean;\n currentOpenChannel: Sendbird.OpenChannel;\n isInvalid: boolean;\n hasMore: boolean;\n lastMessageTimestamp: number;\n frozen: boolean;\n operators: Sendbird.User[];\n participants: Sendbird.User[];\n // add banned participant ids\n // add muted participant ids\n}\n\nconst initialState: State = {\n allMessages: [],\n loading: false,\n initialized: false,\n currentOpenChannel: null,\n isInvalid: false,\n hasMore: false,\n lastMessageTimestamp: 0,\n frozen: false,\n operators: [],\n participants: [],\n // bannedParticipantIds\n // mutedParticipantIds\n};\n\nexport default initialState;\n","import React, {\n useRef,\n useCallback,\n useEffect,\n useReducer,\n useContext,\n useState,\n ReactElement,\n} from 'react';\nimport Sendbird from 'sendbird';\nimport * as utils from './utils';\nimport './index.scss';\n\nimport MessageInputWrapper from './components/MessageInpuetWrapper';\nimport FrozenChannelNotification from './components/FrozenNotification';\nimport OpenchannelConversationHeader from '../../ui/OpenchannelConversationHeader';\nimport OpenchannelConversationScroll from './components/OpenchannelConversationScroll';\nimport Icon, { IconColors, IconTypes } from '../../ui/Icon';\nimport PlaceHolder, { PlaceHolderTypes } from '../../ui/PlaceHolder';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\n\nimport {\n EveryMessage,\n ClientUserMessage,\n ClientFileMessage,\n OpenChannelProps,\n} from '../../index';\nimport messagesReducer from './dux/reducers';\nimport messagesInitialState from './dux/initialState';\nimport * as messageActionTypes from './dux/actionTypes';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext.jsx';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { scrollIntoLast } from './utils';\nimport * as topics from '../../lib/pubSub/topics';\nimport uuidv4 from '../../utils/uuid';\n\nconst COMPONENT_CLASS_NAME = 'sendbird-openchannel-conversation';\n\ninterface Props extends OpenChannelProps {\n stores: {\n sdkStore?: SendbirdUIKit.SdkStore,\n userStore?: {\n user: Sendbird.User,\n },\n };\n config: {\n userId: string,\n isOnline: boolean,\n logger?: SendbirdUIKit.Logger,\n theme?: string,\n // @ts-ignore: Unreachable code error\n pubSub: any;\n disableUserProfile?: boolean;\n renderUserProfile?(): JSX.Element;\n };\n}\n\nexport const OpenchannelConversation = (props: Props): JSX.Element => {\n // props\n const {\n useMessageGrouping,\n channelUrl,\n stores,\n config,\n queries = {},\n disableUserProfile,\n renderCustomMessage,\n renderUserProfile,\n renderChannelTitle,\n renderMessageInput,\n onBeforeSendUserMessage,\n onBeforeSendFileMessage,\n onChatHeaderActionClick\n } = props;\n\n const {\n sdkStore,\n userStore,\n } = stores;\n const {\n userId,\n isOnline,\n logger,\n pubSub,\n } = config;\n\n const {\n sdk\n } = sdkStore;\n const {\n user\n } = userStore;\n\n // hook variables\n const [messagesStore, messagesDispatcher] = useReducer(messagesReducer, messagesInitialState);\n const {\n allMessages,\n loading,\n initialized,\n currentOpenChannel,\n isInvalid,\n hasMore,\n lastMessageTimestamp,\n } = messagesStore;\n // ref\n const messageInputRef = useRef(null); // useSendMessageCallback\n const { stringSet } = useContext(LocalizationContext);\n const [scrollDownPromise, setScrollDownPromise] = useState(null);\n const [showScrollDownButton, setShowScrollDownButton] = useState(false);\n\n // const\n const sdkInit = sdkStore.initialized;\n const userFilledMessageListParams = queries ? queries.messageListParams: null;\n const disabled = !initialized\n || !isOnline\n || utils.isDisabledBecauseFrozen(currentOpenChannel, userId);\n // || utils.isDisabledBecauseMuted(mutedParticipantIds, userId)\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n // useSetChannel\n useEffect(() => {\n if (channelUrl && sdkInit && sdk && sdk.OpenChannel) {\n logger.info('OpenChannel | useSetChannel fetching channel', channelUrl);\n sdk.OpenChannel.getChannel(channelUrl, (openChannel, error) => {\n if (!error) {\n logger.info('OpenChannel | useSetChannel fetched channel', openChannel);\n messagesDispatcher({\n type: messageActionTypes.SET_CURRENT_CHANNEL,\n payload: openChannel,\n });\n openChannel.enter((error) => {\n if (error) {\n logger.warning('OpenChannel | useSetChannel enter channel failed', { channelUrl, error });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n });\n }\n });\n } else {\n logger.warning('OpenChannel | useSetChannel fetch channel failed', { channelUrl, error });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n });\n }\n });\n // .then((openChannel) => {\n // logger.info('OpenChannel | useSetChannel fetched channel', openChannel);\n // messagesDispatcher({\n // type: messageActionTypes.SET_CURRENT_CHANNEL,\n // payload: openChannel,\n // });\n // })\n // .catch((error) => {\n // logger.warning('OpenChannel | useSetChannel fetch channel failed', { channelUrl, error });\n // messagesDispatcher({\n // type: messageActionTypes.SET_CHANNEL_INVALID,\n // });\n // });\n }\n }, [channelUrl, sdkInit]);\n\n // handles API calls from withSendbird\n useEffect(() => {\n const subscriber = new Map();\n if (!pubSub || !pubSub.subscribe) {\n return;\n }\n subscriber.set(topics.SEND_USER_MESSAGE, pubSub.subscribe(topics.SEND_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel, message } = msg;\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message, fromSelector } = msg;\n if (fromSelector && channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n }\n }));\n subscriber.set(topics.DELETE_MESSAGE, pubSub.subscribe(topics.DELETE_MESSAGE, (msg) => {\n const { channel, messageId } = msg;\n if (channel && (channelUrl === channel.url)) {\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n }\n }));\n\n return () => {\n if (subscriber) {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n }\n };\n }, [channelUrl, sdkInit]);\n\n // useHandleChannelEvents\n useEffect(() => {\n const messageReceiverId = uuidv4();\n if (currentOpenChannel && currentOpenChannel.url && sdk && sdk.ChannelHandler) {\n const ChannelHandler = new sdk.ChannelHandler();\n logger.info('OpenChannel | useHandleChannelEvents: Setup event handler', messageReceiverId);\n\n ChannelHandler.onMessageReceived = (channel, message) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageReceived', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_RECEIVED,\n payload: { channel, message },\n });\n };\n ChannelHandler.onMessageUpdated = (channel, message) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageUpdated', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: { channel, message },\n });\n };\n ChannelHandler.onMessageDeleted = (channel, messageId) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMessageDeleted', { channelUrl, messageId });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: { channel, messageId },\n });\n };\n ChannelHandler.onOperatorUpdated = (channel, operators) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onOperatorUpdated', { channelUrl, operators });\n messagesDispatcher({\n type: messageActionTypes.ON_OPERATOR_UPDATED,\n payload: { channel, operators },\n });\n };\n ChannelHandler.onUserEntered = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserEntered', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_ENTERED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserExited = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserExited', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_EXITED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserMuted = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserMuted', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_MUTED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserUnmuted = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserUnmuted', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_UNMUTED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserBanned = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserBanned', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_BANNED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onUserUnbanned = (channel, user) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onUserUnbanned', { channelUrl, user });\n messagesDispatcher({\n type: messageActionTypes.ON_USER_UNBANNED,\n payload: { channel, user },\n });\n };\n ChannelHandler.onChannelFrozen = (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelFrozen', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_FROZEN,\n payload: channel,\n });\n };\n ChannelHandler.onChannelUnfrozen = (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelUnfrozen', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_UNFROZEN,\n payload: channel,\n });\n };\n ChannelHandler.onChannelChanged = (channel) => {\n logger.info('OpenChannel | useHandleChannelEvents: onChannelChanged', channel);\n messagesDispatcher({\n type: messageActionTypes.ON_CHANNEL_CHANGED,\n payload: channel,\n });\n };\n ChannelHandler.onMetaDataCreated = (channel, metaData) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataCreated', { channelUrl, metaData });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_CREATED,\n payload: { channel, metaData },\n });\n };\n ChannelHandler.onMetaDataUpdated = (channel, metaData) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataUpdated', { channelUrl, metaData });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_UPDATED,\n payload: { channel, metaData },\n });\n };\n ChannelHandler.onMetaDataDeleted = (channel, metaDataKeys) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaDataDeleted', { channelUrl, metaDataKeys });\n messagesDispatcher({\n type: messageActionTypes.ON_META_DATA_DELETED,\n payload: { channel, metaDataKeys },\n });\n };\n ChannelHandler.onMetaCountersCreated = (channel, metaCounter) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersCreated', { channelUrl, metaCounter });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_CREATED,\n payload: { channel, metaCounter },\n });\n };\n ChannelHandler.onMetaCountersUpdated = (channel, metaCounter) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersUpdated', { channelUrl, metaCounter });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_UPDATED,\n payload: { channel, metaCounter },\n });\n };\n ChannelHandler.onMetaCountersDeleted = (channel, metaCounterKeys) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersDeleted', { channelUrl, metaCounterKeys });\n messagesDispatcher({\n type: messageActionTypes.ON_META_COUNTERS_DELETED,\n payload: { channel, metaCounterKeys },\n });\n };\n ChannelHandler.onMentionReceived = (channel, message) => {\n const channelUrl = channel.url;\n logger.info('OpenChannel | useHandleChannelEvents: onMentionReceived', { channelUrl, message });\n messagesDispatcher({\n type: messageActionTypes.ON_MENTION_RECEIVED,\n payload: { channel, message },\n });\n };\n sdk.addChannelHandler(messageReceiverId, ChannelHandler);\n }\n\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('OpenChannel | useHandleChannelEvents: Removing message receiver handler', messageReceiverId);\n sdk.removeChannelHandler(messageReceiverId);\n }\n };\n }, [currentOpenChannel]);\n\n // useInitialMessagesFetch\n useEffect(() => {\n logger.info('OpenChannel | useInitialMessagesFetch: Setup started', currentOpenChannel);\n\n messagesDispatcher({\n type: messageActionTypes.RESET_MESSAGES,\n });\n\n if (sdk && sdk.MessageListParams && currentOpenChannel && currentOpenChannel.getMessagesByTimestamp) {\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.isInclusive = true;\n messageListParams.includeReplies = false;\n messageListParams.includeReactions = false;\n if (userFilledMessageListParams) {\n Object.keys(userFilledMessageListParams).forEach(key => {\n messageListParams[key] = userFilledMessageListParams[key];\n });\n logger.info('OpenChannel | Used customizedMessageListParams');\n }\n\n logger.info('OpenChannel | Fetching messages', { currentOpenChannel, messageListParams });\n\n currentOpenChannel.getMessagesByTimestamp(\n new Date().getTime(),\n messageListParams,\n (messages, error) => {\n if (!error) {\n logger.info('OpenChannel | Fetching messages succeeded', messages);\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimestamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n currentOpenChannel,\n messages,\n hasMore,\n lastMessageTimestamp,\n },\n });\n setTimeout(() => {\n utils.scrollIntoLast('.sendbird-msg--scroll-ref');\n });\n } else {\n logger.error('OpenChannel | Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n payload: {\n currentOpenChannel,\n messages: [],\n hasMore: false,\n lastMessageTimestamp: 0,\n },\n });\n }\n },\n );\n // todo: use promise after CoreSDK adds required TS methods\n // .then((messages) => {\n // console.log('get messages via getMessagesByTimestamp', messages);\n // const hasMore = (messages && messages.length > 0);\n // const lastMessageTimestamp = hasMore\n // ? messages[0].createdAt\n // : null;\n // messagesDispatcher({\n // type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n // payload: {\n // currentOpenChannel,\n // messages,\n // hasMore,\n // lastMessageTimestamp,\n // },\n // });\n // })\n // .catch((error: Error): void => {\n // logger.error('OpenChannel | Fetching messages failed', error);\n // messagesDispatcher({\n // type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n // payload: {\n // currentOpenChannel,\n // messages: [],\n // hasMore: false,\n // lastMessageTimestamp: 0,\n // }\n // });\n // });\n }\n }, [currentOpenChannel]);\n\n // useScrollCallback\n const onScroll = useCallback((callback) => {\n if (!hasMore) {\n return;\n }\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReactions = false;\n\n if (userFilledMessageListParams) {\n Object.keys(userFilledMessageListParams).forEach(key => {\n messageListParams[key] = userFilledMessageListParams[key];\n });\n logger.info('OpenChannel: Used userFilledMessageListParams');\n }\n\n logger.info('OpenChannel: Fetching messages', { currentOpenChannel, messageListParams });\n\n currentOpenChannel.getMessagesByTimestamp(\n lastMessageTimestamp || new Date().getTime(),\n messageListParams,\n (messages, error) => {\n if (!error) {\n logger.info('OpenChannel | Fetching messages succeeded', messages);\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimestamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n currentOpenChannel,\n messages,\n hasMore,\n lastMessageTimestamp,\n },\n });\n setTimeout(() => {\n callback();\n });\n } else {\n logger.error('OpenChannel | Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_FAIL,\n payload: {\n currentOpenChannel,\n messages: [],\n hasMore: false,\n lastMessageTimestamp: 0,\n },\n });\n }\n }\n );\n }, [currentOpenChannel, lastMessageTimestamp]);\n\n // useSendMessageCallback\n const handleSendMessage = useCallback(() => {\n const text = messageInputRef.current.value;\n\n function createParamsDefualt(txt: string | number): Sendbird.UserMessageParams {\n const message = typeof txt === 'string' ? txt.trim() : txt.toString(10).trim();\n const params = new sdk.UserMessageParams();\n params.message = message;\n return params;\n }\n\n const createCustomParams = onBeforeSendUserMessage\n && typeof onBeforeSendUserMessage === 'function';\n\n if (createCustomParams) {\n logger.info('OpenChannel | Creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);\n }\n\n const params = onBeforeSendUserMessage\n ? onBeforeSendUserMessage(text)\n : createParamsDefualt(text);\n\n logger.info('OpenChannel | Sending message has started', params);\n\n const pendingMessage = currentOpenChannel.sendUserMessage(params, (message, error) => {\n if (error) {\n logger.warning('OpenChannel | Sending message failed', { message });\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: message,\n });\n return;\n }\n logger.info('OpenChannel | Sending message succeeded', { message });\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n });\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: pendingMessage,\n channel: currentOpenChannel,\n },\n });\n }, [currentOpenChannel, onBeforeSendUserMessage]);\n\n // useFileUploadCallback\n const handleFileUpload = useCallback((file) => {\n function createParamsDefualt(file_: File): Sendbird.FileMessageParams {\n const params = new sdk.FileMessageParams();\n params.file = file_;\n return params;\n }\n\n const createCustomParams = onBeforeSendFileMessage\n && typeof onBeforeSendFileMessage === 'function';\n\n if (createCustomParams) {\n logger.info('OpenChannel | Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n\n const params = onBeforeSendFileMessage\n ? onBeforeSendFileMessage(file)\n : createParamsDefualt(file);\n\n logger.info('OpenChannel | Uploading file message start', params);\n\n const pendingMessage = currentOpenChannel.sendFileMessage(\n params,\n (message: EveryMessage, error: Sendbird.SendBirdError) => {\n if (error) {\n logger.error('OpenChannel | Sending file message failed', { message, error });\n message.localUrl = URL.createObjectURL(file);\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: message,\n });\n return;\n }\n logger.info('OpenChannel | Sending message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n }\n );\n\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_START,\n payload: {\n message: {\n ...pendingMessage,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentOpenChannel,\n }\n });\n }, [currentOpenChannel, onBeforeSendFileMessage]);\n\n // useUpdateMessageCallback\n const updateMessage = useCallback((messageId: number, text: string, callback?: () => void): void => {\n\n function createParamsDefualt(txt: string): SendBird.UserMessageParams {\n const params = new sdk.UserMessageParams();\n params.message = txt;\n return params;\n }\n\n if (onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function') {\n logger.info('OpenChannel | Creating params using onBeforeUpdateUserMessage');\n }\n\n const params = onBeforeSendUserMessage\n ? onBeforeSendUserMessage(text)\n : createParamsDefualt(text);\n\n currentOpenChannel.updateUserMessage(messageId, params, (message, error) => {\n if (callback) {\n callback();\n }\n if (!error) {\n logger.info('OpenChannel | Updating message succeeded', { message, params });\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: {\n channel: currentOpenChannel,\n message,\n },\n });\n } else {\n logger.warning('OpenChannel | Updating message failed', error);\n }\n });\n }, [currentOpenChannel, messagesDispatcher, onBeforeSendUserMessage]);\n\n // useDeleteMessageCallback\n const deleteMessage = useCallback((message: ClientUserMessage | ClientFileMessage, callback?: () => void): void => {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message', message);\n const { requestState } = message;\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message requestState: ', requestState);\n\n if (requestState === 'failed' || requestState === 'pending') {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleted message from local: ', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,\n payload: message.reqId,\n });\n if (callback) {\n callback();\n }\n return;\n }\n\n currentOpenChannel.deleteMessage(message, (error) => {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message from remote: ', requestState);\n if (callback) {\n callback();\n }\n if (!error) {\n logger.info('OpenChannel | useDeleteMessageCallback: Deleting message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: {\n channel: currentOpenChannel,\n messageId: message.messageId,\n },\n });\n } else {\n logger.warning('OpenChannel | useDeleteMessageCallback: Deleting message failed', error);\n }\n });\n }, [currentOpenChannel, messagesDispatcher]);\n\n // useResendMessageCallback\n const resendMessage = useCallback((failedMessage: ClientUserMessage | ClientFileMessage) => {\n logger.info('OpenChannel | Reseding message has started', failedMessage);\n const { messageType, file } = failedMessage;\n if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable()) {\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESENDING_MESSAGE_START,\n payload: {\n channel: currentOpenChannel,\n message: failedMessage,\n },\n });\n\n // userMessage\n if (messageType === 'user' && failedMessage.messageType === 'user') {\n currentOpenChannel.resendUserMessage(failedMessage, (message, error) => {\n if (!error) {\n logger.info('OpenChannel | Reseding message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n } else {\n logger.warning('OpenChannel | Resending message failed', error);\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: failedMessage,\n });\n }\n });\n return;\n }\n\n // fileMessage\n if (messageType === 'file' && failedMessage.messageType === 'file') {\n currentOpenChannel.resendFileMessage(failedMessage, file, (message, error) => {\n if (!error) {\n logger.info('OpenChannel | Resending file message succeeded', message);\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_SUCCEEDED,\n payload: message,\n });\n } else {\n logger.warning('OpenChannel | Resending file message failed', error);\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SENDING_MESSAGE_FAILED,\n payload: failedMessage,\n });\n }\n });\n }\n } else {\n // to alert user on console\n // eslint-disable-next-line no-console\n console.error('OpenChannel | Message is not resendable');\n logger.warning('OpenChannel | Message is not resendable', failedMessage);\n }\n }, [currentOpenChannel, messagesDispatcher]);\n\n const handleClickScrollDownButton = () => {\n const promise = new Promise((resolve) => {\n resolve();\n });\n setScrollDownPromise(promise);\n };\n\n if (!currentOpenChannel || !currentOpenChannel.url) {\n return ();\n }\n if (loading) {\n return ();\n }\n if (isInvalid) {\n return ();\n }\n\n return (\n \n {\n showScrollDownButton && (\n \n \n
\n )\n }\n {\n renderChannelTitle\n ? renderChannelTitle({\n channel: currentOpenChannel,\n user: user,\n })\n : (\n \n )\n }\n {\n currentOpenChannel.isFrozen && (\n \n )\n }\n \n {\n renderMessageInput\n ? (\n renderMessageInput({\n channel: currentOpenChannel,\n user: user,\n disabled: disabled,\n })\n )\n : (\n \n )\n }\n \n );\n};\n\nexport default withSendbirdContext(OpenchannelConversation);\n"],"names":["getMessageCreatedAt","message","format","createdAt","scrollIntoLast","selector","intialTry","MAX_TRIES","currentTry","nodes","document","querySelectorAll","last","length","scrollIntoView","error","setTimeout","isSameGroup","comparingMessage","messageType","sendingStatus","sender","userId","compareMessagesForGrouping","prevMessage","currMessage","nextMessage","kFormatter","num","Math","abs","toFixed","isOperator","openChannel","operators","map","operator","indexOf","isDisabledBecauseFrozen","isFrozen","MessageInputWrapper","_a","ref","channel","user","disabled","onSendMessage","onFileUpload","renderMessageInput","stringSet","useContext","LocalizationContext","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED","React","forwardRef","FrozenNotification","LabelTypography","CAPTION_2","CHANNEL_FROZEN","COMPONENT_CLASS_NAME","OpenchannelConversationHeader","coverImage","_b","title","LabelStringSet","NO_TITLE","_c","subTitle","onActionClick","IconTypes","AVATAR_NO_IMAGE","IconColors","BACKGROUND_3","H_2","LabelColors","ONBACKGROUND_1","BODY_2","ONBACKGROUND_2","INFO","PRIMARY","copyToClipboard","text","window","clipboardData","setData","queryCommandSupported","textarea","createElement","textContent","style","position","body","appendChild","select","execCommand","ex","removeChild","OpenChannelMessageStatusTypes","NONE","PENDING","FAILED","CANCELED","SUCCEEDED","getSenderFromMessage","_sender","checkIsSent","status","checkIsByMe","isFineCopy","isFineResend","isResendable","isFineEdit","isFineDelete","showMenuTrigger","props","OpenchannelUserMessage","className","resendMessage","showEdit","showRemove","chainTop","UserProfileContext","disableUserProfile","renderUserProfile","messageRef","useRef","avatarRef","contextMenuRef","useState","contextStyle","setContextStyle","injectingClassName","Array","isArray","push","isByMe","MemoizedMessageText","useMemo","splitMessage","split","matchedMessage","word","updatedAt","uuidv4","BODY_1","MESSAGE_EDITED","useEffect","current","clientHeight","top","innerWidth","join","toggleDropdown","profileUrl","closeDropdown","paddingTop","paddingBottom","close","SECONDARY_3","friendName","nickname","CAPTION_3","ONBACKGROUND_3","MORE","CONTENT_INVERSE","CONTEXT_MENU_DROPDOWN__COPY","CONTEXT_MENU_DROPDOWN__EDIT","CONTEXT_MENU_DROPDOWN__RESEND","CONTEXT_MENU_DROPDOWN__DELETE","OpenChannelAdminMessage","__spreadArrays","URL_REG","createUrlTester","regexp","test","checkOGIsEnalbed","ogMetaData","url","OpenchannelOGMessage","defaultImage","messageComponentRef","isUrl","wordClassName","openLink","open","SUBTITLE_2","description","alt","NO_THUMBNAIL","SUPPORTING_TYPES","IMAGE","VIDEO","UNSUPPORTED","SUPPORTED_MIMES","getSupportingFileType","type","OpenchannelThumbnailMessage","onClick","localUrl","isMessageSent","PLAY","PHOTO","ON_BACKGROUND_2","checkFileType","fileUrl","result","imageFile","audioFile","FILE_DOCUMENT","FILE_AUDIO","truncate","fullStr","strLen","undefined","separator","sepLen","charsToShow","frontChars","ceil","backChars","floor","substr","OpenchannelFileMessage","openFileUrl","RemoveMessageModal","onCloseModal","onDeleteMessage","MODAL__DELETE_MESSAGE__TITLE","MessageTypes","ADMIN","USER","FILE","THUMBNAIL","OG","UNKNOWN","SendingMessageStatus","getMessageType","isUserMessage","isAdminMessage","isImage","isVideo","MessageHoc","editDisabled","hasSeperator","renderCustomMessage","deleteMessage","updateMessage","chainBottom","RenderedMessage","setShowEdit","_d","setShowRemove","_e","showFileViewer","setShowFileViewer","editMessageInputRef","requestState","messageId","OpenChannelFileMessage","OpenChannelOGMessage","OpenChannelThumbnailMessage","OpenChannelUserMessage","OpenchannelConversationScroll","useMessageGrouping","openchannel","allMessages","isOnline","hasMore","onScroll","scrollDownPromise","showScrollDownButton","scrollRef","handleOnScroll","e","element","target","scrollTop","scrollHeight","nodes_1","first","then","scrollTo","index","previousMessage","previousMessageCreatedAt","currentCreatedAt","isSameDay","SET_CURRENT_CHANNEL","SET_CHANNEL_INVALID","RESET_MESSAGES","GET_PREV_MESSAGES_SUCESS","GET_PREV_MESSAGES_FAIL","SENDING_MESSAGE_FAILED","SENDING_MESSAGE_SUCCEEDED","SENDING_MESSAGE_START","RESENDING_MESSAGE_START","ON_MESSAGE_RECEIVED","ON_MESSAGE_UPDATED","ON_MESSAGE_DELETED","ON_MESSAGE_DELETED_BY_REQ_ID","ON_OPERATOR_UPDATED","ON_USER_ENTERED","ON_USER_EXITED","ON_USER_MUTED","ON_USER_UNMUTED","ON_USER_BANNED","ON_USER_UNBANNED","ON_CHANNEL_FROZEN","ON_CHANNEL_UNFROZEN","ON_CHANNEL_CHANGED","ON_META_DATA_CREATED","ON_META_DATA_UPDATED","ON_META_DATA_DELETED","ON_META_COUNTERS_CREATED","ON_META_COUNTERS_UPDATED","ON_META_COUNTERS_DELETED","ON_MENTION_RECEIVED","reducer","state","action","actionTypes","currentChannel","payload","isInvalid","currentOpenChannel","participants","isFailed","messages","lastMessageTimestamp","actionChannelUrl","receivedMessages_1","_hasMore","_lastMessageTimestamp","stateChannel","stateChannelUrl","filteredAllMessages","filter","find","compareIds","loading","initialized","sentMessage_1","newMessages","m","reqId","sentMessage_2","eventedChannel","resentMessage_1","receivedMessage","updatedMessage_1","isIdentical","deletedMessageId_1","updatedOperators","enteredUser","exitedUser_1","participant","frozenChannel","frozen","unfrozenChannel","changedChannel","initialState","OpenchannelConversation","channelUrl","stores","config","queries","renderChannelTitle","onBeforeSendUserMessage","onBeforeSendFileMessage","onChatHeaderActionClick","sdkStore","userStore","logger","pubSub","sdk","useReducer","messagesReducer","messagesInitialState","messagesStore","messagesDispatcher","messageInputRef","setScrollDownPromise","setShowScrollDownButton","sdkInit","userFilledMessageListParams","messageListParams","utils","userDefinedDisableUserProfile","userDefinedRenderProfile","OpenChannel","info","getChannel","messageActionTypes","enter","warning","subscriber","Map","subscribe","set","topics","msg","fromSelector","forEach","s","remove","messageReceiverId","ChannelHandler","onMessageReceived","onMessageUpdated","onMessageDeleted","onOperatorUpdated","onUserEntered","onUserExited","onUserMuted","onUserUnmuted","onUserBanned","onUserUnbanned","onChannelFrozen","onChannelUnfrozen","onChannelChanged","onMetaDataCreated","metaData","onMetaDataUpdated","onMetaDataDeleted","metaDataKeys","onMetaCountersCreated","metaCounter","onMetaCountersUpdated","onMetaCountersDeleted","metaCounterKeys","onMentionReceived","addChannelHandler","removeChannelHandler","MessageListParams","getMessagesByTimestamp","messageListParams_1","prevResultSize","isInclusive","includeReplies","includeReactions","Object","keys","key","Date","getTime","hasMore_1","lastMessageTimestamp_1","useCallback","callback","hasMore_2","lastMessageTimestamp_2","handleSendMessage","value","createParamsDefualt","txt","trim","toString","params","UserMessageParams","createCustomParams","pendingMessage","sendUserMessage","handleFileUpload","file","file_","FileMessageParams","sendFileMessage","URL","createObjectURL","updateUserMessage","failedMessage","resendUserMessage","resendFileMessage","console","handleClickScrollDownButton","promise","Promise","resolve","PlaceHolderTypes","NO_CHANNELS","LOADING","WRONG","SHEVRON_DOWN","CONTENT","name","participantCount","OPEN_CHANNEL_CONVERSATION__TITLE_PARTICIPANTS","coverUrl","FrozenChannelNotification","withSendbirdContext"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/OpenChannelSettings.js b/dist/esm/OpenChannelSettings.js
new file mode 100644
index 0000000..89c512c
--- /dev/null
+++ b/dist/esm/OpenChannelSettings.js
@@ -0,0 +1,664 @@
+import { e as LocalizationContext, d as __spreadArrays, w as withSendbirdContext } from './LocalizationContext-619bafba.js';
+import React, { useContext, useMemo, useRef, useState, useEffect } from 'react';
+import 'prop-types';
+import { A as Avatar, M as Modal, T as Type, f as TextButton, b as Label, c as LabelTypography, d as LabelColors, I as Icon, a as IconTypes, g as IconColors, B as Button, w as Size, n as UserProfileContext, C as ContextMenu, h as MenuItems, o as UserProfile, P as PlaceHolder, m as PlaceHolderTypes, F as selectors, l as UserProfileProvider } from './index-ec3bf9fe.js';
+import { d as getOpenChannelAvatar, n as noop } from './utils-53ba1773.js';
+import 'date-fns/format';
+import './type-0296584d.js';
+import 'react-dom';
+import { I as InputLabel, a as Input, U as UserListItem$1 } from './index-aa89d60a.js';
+import { c as copyToClipboard } from './utils-d7f59026.js';
+import { a as Accordion, A as AccordionGroup } from './index-8abf69b8.js';
+
+function ChannelAvatar(_a) {
+ var channel = _a.channel,
+ theme = _a.theme,
+ _b = _a.height,
+ height = _b === void 0 ? 56 : _b,
+ _c = _a.width,
+ width = _c === void 0 ? 56 : _c;
+ var stringSet = useContext(LocalizationContext).stringSet;
+ var memoizedAvatar = useMemo(function () {
+ return React.createElement(Avatar, {
+ className: "sendbird-chat-header__avatar--group-channel",
+ src: getOpenChannelAvatar(channel),
+ width: width + "px",
+ height: height + "px",
+ alt: channel.name || stringSet.OPEN_CHANNEL_SETTINGS__NO_TITLE
+ });
+ }, [channel.coverUrl, theme]);
+ return React.createElement(React.Fragment, null, memoizedAvatar);
+}
+
+var EditDetails = function EditDetails(props) {
+ var _onSubmit = props.onSubmit,
+ onCancel = props.onCancel,
+ channel = props.channel,
+ theme = props.theme;
+ var inputRef = useRef(null);
+ var formRef = useRef(null);
+ var hiddenInputRef = useRef(null);
+
+ var _a = useState(null),
+ currentImg = _a[0],
+ setCurrentImg = _a[1];
+
+ var _b = useState(null),
+ newFile = _b[0],
+ setNewFile = _b[1];
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+ var title = channel.name;
+ return React.createElement(Modal, {
+ titleText: stringSet.MODAL__CHANNEL_INFORMATION__TITLE,
+ submitText: stringSet.BUTTON__SAVE,
+ onCancel: onCancel,
+ onSubmit: function onSubmit() {
+ if (title !== '' && !inputRef.current.value) {
+ if (formRef.current.reportValidity) {
+ // might not work in explorer
+ formRef.current.reportValidity();
+ }
+
+ return;
+ }
+
+ _onSubmit(newFile, inputRef.current.value);
+
+ onCancel();
+ },
+ type: Type.PRIMARY
+ }, React.createElement("form", {
+ className: "channel-profile-form",
+ ref: formRef,
+ onSubmit: function onSubmit(e) {
+ e.preventDefault();
+ }
+ }, React.createElement("div", {
+ className: "channel-profile-form__img-section"
+ }, React.createElement(InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE), React.createElement("div", {
+ className: "channel-profile-form__avatar"
+ }, currentImg ? React.createElement(Avatar, {
+ height: "80px",
+ width: "80px",
+ src: currentImg
+ }) : React.createElement(ChannelAvatar, {
+ height: 80,
+ width: 80,
+ channel: channel,
+ theme: theme
+ })), React.createElement("input", {
+ ref: hiddenInputRef,
+ type: "file",
+ accept: "image/gif, image/jpeg, image/png",
+ style: {
+ display: 'none'
+ },
+ onChange: function onChange(e) {
+ setCurrentImg(URL.createObjectURL(e.target.files[0]));
+ setNewFile(e.target.files[0]);
+ hiddenInputRef.current.value = '';
+ }
+ }), React.createElement(TextButton, {
+ className: "channel-profile-form__avatar-button",
+ onClick: function onClick() {
+ return hiddenInputRef.current.click();
+ },
+ notUnderline: true
+ }, React.createElement(Label, {
+ type: LabelTypography.BUTTON_1,
+ color: LabelColors.PRIMARY
+ }, stringSet.MODAL__CHANNEL_INFORMATION__UPLOAD))), React.createElement("div", {
+ className: "channel-profile-form__name-section"
+ }, React.createElement(InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_NAME), React.createElement(Input, {
+ required: title !== '',
+ name: "channel-profile-form__name",
+ ref: inputRef,
+ value: title,
+ placeHolder: stringSet.MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER
+ }))));
+};
+
+function ChannelProfile(props) {
+ var disabled = props.disabled,
+ channel = props.channel,
+ theme = props.theme,
+ onChannelInfoChange = props.onChannelInfoChange;
+ var title = channel.name;
+
+ var _a = useState(false),
+ showModal = _a[0],
+ setShowModal = _a[1];
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+ return React.createElement("div", {
+ className: "sendbird-openchannel-profile"
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-profile--inner"
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-profile__avatar"
+ }, React.createElement(ChannelAvatar, {
+ channel: channel,
+ theme: theme,
+ height: 80,
+ width: 80
+ })), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_1,
+ className: "sendbird-openchannel-profile__title"
+ }, title || stringSet.OPEN_CHANNEL_SETTINGS__NO_TITLE), React.createElement(TextButton, {
+ disabled: disabled,
+ className: "sendbird-openchannel-profile__edit",
+ onClick: function onClick() {
+ if (disabled) {
+ return;
+ }
+
+ setShowModal(true);
+ },
+ notUnderline: true
+ }, React.createElement(Label, {
+ type: LabelTypography.BUTTON_1,
+ color: disabled ? LabelColors.ONBACKGROUND_2 : LabelColors.PRIMARY
+ }, stringSet.CHANNEL_SETTING__PROFILE__EDIT)), showModal && React.createElement(EditDetails, {
+ onCancel: function onCancel() {
+ return setShowModal(false);
+ },
+ onSubmit: onChannelInfoChange,
+ channel: channel,
+ theme: theme
+ })));
+}
+
+function ParticipantsModal(_a) {
+ var hideModal = _a.hideModal,
+ channel = _a.channel;
+ var stringSet = useContext(LocalizationContext).stringSet;
+
+ var _b = useState([]),
+ participants = _b[0],
+ setParticipants = _b[1];
+
+ var _c = useState(null),
+ participantListQuery = _c[0],
+ setParticipantListQuery = _c[1];
+
+ useEffect(function () {
+ if (!channel || !channel.createParticipantListQuery) {
+ return;
+ }
+
+ var participantListQuery = channel.createParticipantListQuery();
+ setParticipantListQuery(participantListQuery);
+ participantListQuery.next(function (participantList, error) {
+ if (error) {
+ return;
+ }
+
+ setParticipants(participantList);
+ });
+ }, []);
+ return React.createElement("div", null, React.createElement(Modal, {
+ hideFooter: true,
+ onCancel: function onCancel() {
+ return hideModal();
+ },
+ onSubmit: noop,
+ titleText: stringSet.OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE
+ }, React.createElement("div", {
+ className: "sendbird-more-members__popup-scroll",
+ onScroll: function onScroll(e) {
+ var hasNext = participantListQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ participantListQuery.next(function (fetchedParticipants, error) {
+ if (error) {
+ return;
+ }
+
+ setParticipants(__spreadArrays(participants, fetchedParticipants));
+ });
+ }
+ }
+ }, participants.map(function (p) {
+ return React.createElement(UserListItem$1, {
+ user: p,
+ key: p.userId
+ });
+ }))));
+}
+
+var SHOWN_MEMBER_MAX = 10;
+var UserListItem = function UserListItem(_a) {
+ var member = _a.member,
+ _b = _a.currentUser,
+ currentUser = _b === void 0 ? '' : _b;
+ var avatarRef = useRef(null);
+
+ var _c = useContext(UserProfileContext),
+ disableUserProfile = _c.disableUserProfile,
+ renderUserProfile = _c.renderUserProfile;
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+ return React.createElement("div", {
+ className: "sendbird-participants-accordion__member"
+ }, React.createElement("div", {
+ className: "sendbird-participants-accordion__member-avatar"
+ }, React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ ref: avatarRef,
+ src: member.profileUrl,
+ width: 24,
+ height: 24
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ openLeft: true,
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: member,
+ currentUserId: currentUser,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ disableMessaging: true,
+ user: member,
+ currentUserId: currentUser,
+ onSuccess: closeDropdown
+ }));
+ }
+ })), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, member.nickname || stringSet.NO_NAME, currentUser === member.userId && stringSet.NO_NAME));
+};
+function ParticipantsAccordion(_a) {
+ var channel = _a.channel,
+ currentUser = _a.currentUser;
+
+ var _b = useState([]),
+ participants = _b[0],
+ setParticipants = _b[1];
+
+ var _c = useState(false),
+ showMoreModal = _c[0],
+ setShowMoreModal = _c[1];
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+ useEffect(function () {
+ if (!channel || !channel.createParticipantListQuery) {
+ return;
+ }
+
+ var participantListQuery = channel.createParticipantListQuery();
+ participantListQuery.next(function (participantList, error) {
+ if (error) {
+ return;
+ }
+
+ setParticipants(participantList);
+ });
+ }, [channel]);
+ return React.createElement(Accordion, {
+ className: "sendbird-participants-accordion",
+ id: "participants",
+ renderTitle: function renderTitle() {
+ return React.createElement(React.Fragment, null, React.createElement(Icon, {
+ type: IconTypes.MEMBERS,
+ fillColor: IconColors.PRIMARY,
+ width: 24,
+ height: 24,
+ className: "sendbird-openchannel-settings__accordion-icon"
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE));
+ },
+ renderContent: function renderContent() {
+ return React.createElement("div", {
+ className: ""
+ }, React.createElement("div", {
+ className: "sendbird-participants-accordion__list"
+ }, participants.slice(0, SHOWN_MEMBER_MAX).map(function (p) {
+ return React.createElement(UserListItem, {
+ member: p,
+ currentUser: currentUser,
+ key: p.userId
+ });
+ }), participants && participants.length === 0 ? React.createElement(Label, {
+ className: "sendbird-channel-settings__empty-list",
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_3
+ }, stringSet.OPEN_CHANNEL_SETTINGS__EMPTY_LIST) : null), participants.length >= SHOWN_MEMBER_MAX && React.createElement("div", {
+ className: "sendbird-participants-accordion__footer"
+ }, React.createElement(Button, {
+ className: "sendbird-participants-accordion__footer__all-participants",
+ type: Type.SECONDARY,
+ size: Size.SMALL,
+ onClick: function onClick() {
+ return setShowMoreModal(true);
+ }
+ }, stringSet.OPEN_CHANNEL_SETTINGS__SEE_ALL), showMoreModal && React.createElement(ParticipantsModal, {
+ currentUser: currentUser,
+ hideModal: function hideModal() {
+ setShowMoreModal(false);
+ },
+ channel: channel
+ })));
+ }
+ });
+}
+
+function DeleteChannel(_a) {
+ var isOnline = _a.isOnline,
+ onDeleteChannel = _a.onDeleteChannel;
+
+ var _b = useState(false),
+ showDeleteChannelModal = _b[0],
+ setShowDeleteChannelModal = _b[1];
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+ return React.createElement(React.Fragment, null, React.createElement("div", {
+ className: "sendbird-openchannel-settings__panel-item\n sendbird-openchannel-settings__delete-channel\n " + (!isOnline ? 'sendbird-openchannel-settings__panel-item__disabled' : ''),
+ role: "button",
+ tabIndex: 0,
+ onKeyDown: function onKeyDown() {
+ if (!isOnline) {
+ return;
+ }
+
+ setShowDeleteChannelModal(true);
+ },
+ onClick: function onClick() {
+ if (!isOnline) {
+ return;
+ }
+
+ setShowDeleteChannelModal(true);
+ }
+ }, React.createElement(Icon, {
+ type: IconTypes.DELETE,
+ className: ['sendbird-openchannel-settings__panel-icon-left', 'sendbird-openchannel-settings__panel-icon__delete'].join(' '),
+ height: "24px",
+ width: "24px"
+ }), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL)), showDeleteChannelModal && React.createElement(Modal, {
+ onCancel: function onCancel() {
+ setShowDeleteChannelModal(false);
+ },
+ onSubmit: function onSubmit() {
+ onDeleteChannel();
+ },
+ submitText: stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT,
+ titleText: stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE
+ }));
+}
+
+function ParticipantsList(_a) {
+ var channel = _a.channel,
+ onCloseClick = _a.onCloseClick,
+ currentUser = _a.currentUser;
+ var stringSet = useContext(LocalizationContext).stringSet;
+
+ var _b = useState([]),
+ participants = _b[0],
+ setParticipants = _b[1];
+
+ var _c = useState(null),
+ participantListQuery = _c[0],
+ setParticipantListQuery = _c[1];
+
+ useEffect(function () {
+ if (!channel || !channel.createParticipantListQuery) {
+ return;
+ }
+
+ var participantListQuery = channel.createParticipantListQuery();
+ setParticipantListQuery(participantListQuery);
+ participantListQuery.next(function (participantList, error) {
+ if (error) {
+ return;
+ }
+
+ setParticipants(participantList);
+ });
+ }, [channel]);
+ return React.createElement("div", {
+ className: "sendbird-openchannel-settings__participant"
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-settings__header"
+ }, React.createElement(Label, {
+ type: LabelTypography.H_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE), React.createElement(Icon, {
+ type: IconTypes.CLOSE,
+ className: "sendbird-openchannel-settings__close-icon",
+ height: "24px",
+ width: "24px",
+ onClick: function onClick() {
+ onCloseClick();
+ }
+ })), React.createElement("div", {
+ className: "sendbird-openchannel-settings__participants-list",
+ onScroll: function onScroll(e) {
+ var hasNext = participantListQuery.hasNext;
+ var target = e.target;
+ var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
+
+ if (hasNext && fetchMore) {
+ participantListQuery.next(function (fetchedParticipants, error) {
+ if (error) {
+ return;
+ }
+
+ setParticipants(__spreadArrays(participants, fetchedParticipants));
+ });
+ }
+ }
+ }, React.createElement("div", null, participants.map(function (p) {
+ return React.createElement(UserListItem, {
+ member: p,
+ currentUser: currentUser,
+ key: p.userId
+ });
+ }), participants && participants.length === 0 ? React.createElement(Label, {
+ className: "sendbird-channel-settings__empty-list",
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_3
+ }, stringSet.OPEN_CHANNEL_SETTINGS__EMPTY_LIST) : null)));
+}
+
+function InvalidChannel(_a) {
+ var onCloseClick = _a.onCloseClick;
+ var stringSet = useContext(LocalizationContext).stringSet;
+ return React.createElement("div", {
+ className: "sendbird-openchannel-settings"
+ }, React.createElement("div", {
+ className: "sendbird-openchannel-settings__header"
+ }, React.createElement(Label, {
+ type: LabelTypography.H_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React.createElement(Icon, {
+ type: IconTypes.CLOSE,
+ className: "sendbird-openchannel-settings__close-icon",
+ height: "24px",
+ width: "24px",
+ onClick: function onClick() {
+ onCloseClick();
+ }
+ })), React.createElement("div", {
+ className: "sendbird-openchannel-settings__placeholder"
+ }, React.createElement(PlaceHolder, {
+ type: PlaceHolderTypes.WRONG
+ })));
+}
+
+var emptyLogger = function emptyLogger() {
+ return {
+ info: noop,
+ error: noop,
+ warning: noop
+ };
+};
+
+function OpenChannelSettings(props) {
+ var channelUrl = props.channelUrl,
+ _a = props.onCloseClick,
+ _onCloseClick = _a === void 0 ? noop : _a,
+ _b = props.onChannelModified,
+ onChannelModified = _b === void 0 ? noop : _b,
+ renderChannelProfile = props.renderChannelProfile,
+ renderUserProfile = props.renderUserProfile,
+ _c = props.disableUserProfile,
+ disableUserProfile = _c === void 0 ? false : _c,
+ _d = props.logger,
+ logger = _d === void 0 ? emptyLogger() : _d,
+ sdk = props.sdk,
+ theme = props.theme,
+ user = props.user,
+ isOnline = props.isOnline;
+
+ var currentUser = user.userId;
+
+ var _e = useState(null),
+ channel = _e[0],
+ setChannel = _e[1];
+
+ var stringSet = useContext(LocalizationContext).stringSet;
+ useEffect(function () {
+ if (!channelUrl || !sdk || !sdk.getConnectionState) {
+ setChannel(null);
+ return;
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl, function (openChannel, error) {
+ if (!error) {
+ setChannel(openChannel);
+ } else {
+ setChannel(null);
+ }
+ });
+ }, [channelUrl, sdk]);
+
+ if (!channel) {
+ return React.createElement(InvalidChannel, {
+ onCloseClick: function onCloseClick() {
+ logger.info('OpenChannelSettings: Click close');
+
+ if (_onCloseClick) {
+ _onCloseClick();
+ }
+ }
+ });
+ }
+
+ return React.createElement(UserProfileProvider, {
+ disableUserProfile: disableUserProfile,
+ renderUserProfile: renderUserProfile,
+ className: "sendbird-openchannel-settings"
+ }, channel.isOperator(user) ? React.createElement(React.Fragment, null, React.createElement("div", {
+ className: "sendbird-openchannel-settings__header"
+ }, React.createElement(Label, {
+ type: LabelTypography.H_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React.createElement(Icon, {
+ type: IconTypes.CLOSE,
+ className: "sendbird-openchannel-settings__close-icon",
+ height: "24px",
+ width: "24px",
+ onClick: function onClick() {
+ _onCloseClick();
+ }
+ })), React.createElement("div", {
+ className: "sendbird-openchannel-settings__profile"
+ }, renderChannelProfile ? renderChannelProfile({
+ channel: channel
+ }) : React.createElement(ChannelProfile, {
+ disabled: !isOnline,
+ channel: channel,
+ theme: theme,
+ onChannelInfoChange: function onChannelInfoChange(currentImg, currentTitle) {
+ logger.info('ChannelSettings: Channel information being updated');
+ channel.updateChannel(currentTitle, currentImg, channel.data, function (openChannel) {
+ logger.info('ChannelSettings: Channel information updated', openChannel);
+ onChannelModified(openChannel); // setChannel(openChannel) => alone not working
+
+ setChannel(null);
+ setChannel(openChannel);
+ });
+ }
+ })), React.createElement("div", {
+ className: "sendbird-openchannel-settings__url"
+ }, React.createElement(Icon, {
+ type: IconTypes.COPY,
+ className: "sendbird-openchannel-settings__copy-icon",
+ height: "22px",
+ width: "22px",
+ onClick: function onClick() {
+ copyToClipboard(channel.url);
+ }
+ }), React.createElement(Label, {
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2,
+ className: "sendbird-openchannel-settings__url-label"
+ }, stringSet.OPEN_CHANNEL_SETTINGS__OPERATOR_URL), React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_2,
+ className: "sendbird-openchannel-settings__url-value"
+ }, channel.url)), React.createElement(AccordionGroup, null, React.createElement(ParticipantsAccordion, {
+ channel: channel,
+ currentUser: currentUser
+ })), React.createElement(DeleteChannel, {
+ isOnline: isOnline,
+ onDeleteChannel: function onDeleteChannel() {
+ channel.delete(function (response, error) {
+ if (error) {
+ logger.warning('OpenChannelSettings: Delete channel failed', error);
+ return;
+ }
+
+ logger.info('OpenChannelSettings: Delete channel success', response);
+ });
+ }
+ })) : React.createElement(ParticipantsList, {
+ currentUser: currentUser,
+ channel: channel,
+ onCloseClick: function onCloseClick() {
+ _onCloseClick();
+ }
+ }));
+}
+
+var ChannelSettingsWithSendbird = withSendbirdContext(OpenChannelSettings, function (store) {
+ var logger = store && store.config && store.config.logger;
+ var theme = store && store.config && store.config.theme || 'light';
+ var isOnline = store && store.config && store.config.isOnline;
+ var user = store && store.stores && store.stores.userStore && store.stores.userStore.user;
+ return {
+ sdk: selectors.getSdk(store),
+ logger: logger,
+ theme: theme,
+ isOnline: isOnline,
+ user: user
+ };
+});
+
+export default ChannelSettingsWithSendbird;
+//# sourceMappingURL=OpenChannelSettings.js.map
diff --git a/dist/esm/OpenChannelSettings.js.map b/dist/esm/OpenChannelSettings.js.map
new file mode 100644
index 0000000..71b0e73
--- /dev/null
+++ b/dist/esm/OpenChannelSettings.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"OpenChannelSettings.js","sources":["../../../src/ui/ChannelAvatar/OpenChannelAvatar.tsx","../../../src/smart-components/OpenChannelSettings/components/EditDetailsModal.tsx","../../../src/smart-components/OpenChannelSettings/components/ChannelProfile.tsx","../../../src/smart-components/OpenChannelSettings/components/ParticipantsModal.tsx","../../../src/smart-components/OpenChannelSettings/components/ParticipantsAccordion.tsx","../../../src/smart-components/OpenChannelSettings/components/DeleteChannel.tsx","../../../src/smart-components/OpenChannelSettings/components/ParticipantsList.tsx","../../../src/smart-components/OpenChannelSettings/components/InvalidChannel.tsx","../../../src/smart-components/OpenChannelSettings/index.tsx"],"sourcesContent":["import React, { useMemo, useContext } from 'react';\n\nimport Avatar from '../Avatar/index';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport * as utils from './utils';\n\ninterface Props {\n channel: SendBird.OpenChannel;\n theme: string;\n height?: number;\n width?: number;\n}\n\nfunction ChannelAvatar({\n channel,\n theme,\n height = 56,\n width = 56,\n}: Props): JSX.Element{\n const { stringSet } = useContext(LocalizationContext);\n const memoizedAvatar = useMemo(() => {\n return (\n \n );\n }, [channel.coverUrl, theme]);\n return (\n <>{ memoizedAvatar }>\n );\n}\n\nexport default ChannelAvatar;\n","import React, {\n useState,\n useRef,\n useContext,\n ReactElement,\n} from 'react';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Modal from '../../../ui/Modal';\nimport Input, { InputLabel } from '../../../ui/Input';\nimport Avatar from '../../../ui/Avatar/index';\nimport { Type as ButtonType } from '../../../ui/Button/type';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport TextButton from '../../../ui/TextButton';\nimport OpenChannelAvatar from '../../../ui/ChannelAvatar/OpenChannelAvatar';\n\ninterface Props {\n onSubmit(newFile: File, newTitle: string): void;\n onCancel(): void;\n channel: SendBird.OpenChannel;\n theme: string;\n}\n\nconst EditDetails = (props: Props): ReactElement => {\n const {\n onSubmit,\n onCancel,\n channel,\n theme,\n } = props;\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const hiddenInputRef = useRef(null);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n const title = channel.name;\n return (\n {\n if (title !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(newFile, inputRef.current.value);\n onCancel();\n }}\n type={ButtonType.PRIMARY}\n >\n { e.preventDefault(); }}\n >\n \n
\n {stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE}\n \n
\n {\n currentImg\n ? (\n
\n ) : (\n
\n )\n }\n
\n
{\n setCurrentImg(URL.createObjectURL(e.target.files[0]));\n setNewFile(e.target.files[0]);\n hiddenInputRef.current.value = '';\n }}\n />\n
hiddenInputRef.current.click()}\n notUnderline\n >\n \n {stringSet.MODAL__CHANNEL_INFORMATION__UPLOAD}\n \n \n
\n \n \n {stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_NAME}\n \n \n
\n \n \n );\n};\n\nexport default EditDetails;\n","import React, {\n ReactElement,\n useContext,\n useState,\n} from 'react';\n\nimport './channel-profile.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport TextButton from '../../../ui/TextButton';\nimport OpenChannelAvatar from '../../../ui/ChannelAvatar/OpenChannelAvatar';\nimport EditDetailsModal from './EditDetailsModal';\n\ninterface Props {\n channel: SendBird.OpenChannel;\n disabled: boolean;\n theme: string;\n onChannelInfoChange(currentImg: File, currentTitle: string): void;\n}\n\nexport default function ChannelProfile(props: Props): ReactElement {\n const {\n disabled,\n channel,\n theme,\n onChannelInfoChange,\n } = props;\n const title = channel.name;\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n
\n
\n \n
\n
\n {title || stringSet.OPEN_CHANNEL_SETTINGS__NO_TITLE}\n \n
{\n if (disabled) { return; }\n setShowModal(true);\n }}\n notUnderline\n >\n \n {stringSet.CHANNEL_SETTING__PROFILE__EDIT}\n \n \n {\n showModal && (\n
setShowModal(false)}\n onSubmit={onChannelInfoChange}\n channel={channel}\n theme={theme}\n />\n )\n }\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useContext,\n} from 'react';\n\nimport Modal from '../../../ui/Modal';\nimport UserListItem from '../../../ui/UserListItem';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { noop } from '../../../utils/utils';\n\ninterface Props {\n currentUser: string;\n hideModal(): void;\n channel: SendBird.OpenChannel;\n}\n\nexport default function ParticipantsModal({\n hideModal,\n channel,\n}: Props): ReactElement {\n const { stringSet } = useContext(LocalizationContext);\n const [participants, setParticipants] = useState([]);\n const [participantListQuery, setParticipantListQuery] = useState(null);\n useEffect(() => {\n if (!channel || !channel.createParticipantListQuery) {\n return;\n }\n const participantListQuery = channel.createParticipantListQuery();\n setParticipantListQuery(participantListQuery);\n participantListQuery.next((participantList, error) => {\n if (error) {\n return;\n }\n setParticipants(participantList);\n });\n }, []);\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText={stringSet.OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE}\n >\n {\n const { hasNext } = participantListQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n participantListQuery.next((fetchedParticipants, error) => {\n if (error) {\n return;\n }\n setParticipants([\n ...participants,\n ...fetchedParticipants,\n ])\n });\n }\n }}\n >\n { participants.map((p) => (\n \n ))}\n
\n \n
\n )\n}\n","import React, {\n ReactElement,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\nimport { UserProfileContext } from '../../../lib/UserProfileContext';\nimport Button from '../../../ui/Button';\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../ui/Button/type';\nimport Accordion from '../../../ui/Accordion';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport Avatar from '../../../ui/Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport ParticipantsModal from './ParticipantsModal';\nimport UserProfile from '../../../ui/UserProfile';\nimport ContextMenu, { MenuItems } from '../../../ui/ContextMenu';\n\nconst SHOWN_MEMBER_MAX = 10;\n\ninterface UserListItemProps {\n member: SendBird.User;\n currentUser?: string;\n}\n\nexport const UserListItem = ({\n member,\n currentUser = '',\n}: UserListItemProps): ReactElement => {\n const avatarRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n src={member.profileUrl}\n width={24}\n height={24}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: member,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n
\n {member.nickname || stringSet.NO_NAME}\n {\n (currentUser === member.userId) && (\n stringSet.NO_NAME\n )\n }\n \n
\n );\n};\n\ninterface Props {\n channel: SendBird.OpenChannel;\n currentUser: string;\n}\n\nexport default function ParticipantsAccordion({ channel, currentUser }: Props): ReactElement {\n const [participants, setParticipants] = useState([]);\n const [showMoreModal, setShowMoreModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n useEffect(() => {\n if (!channel || !channel.createParticipantListQuery) {\n return;\n }\n const participantListQuery = channel.createParticipantListQuery();\n participantListQuery.next((participantList, error) => {\n if (error) {\n return;\n }\n setParticipants(participantList);\n });\n }, [channel]);\n\n return (\n (\n <>\n \n \n {stringSet.OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE}\n \n >\n )}\n renderContent={() => (\n \n
\n {\n participants.slice(0, SHOWN_MEMBER_MAX).map((p) => (\n \n ))\n }\n {\n (participants && participants.length === 0)\n ? (\n \n {stringSet.OPEN_CHANNEL_SETTINGS__EMPTY_LIST}\n \n ): null\n }\n
\n {\n participants.length >= SHOWN_MEMBER_MAX && (\n
\n
setShowMoreModal(true)}\n >\n {stringSet.OPEN_CHANNEL_SETTINGS__SEE_ALL}\n \n {\n showMoreModal && (\n
{\n setShowMoreModal(false);\n }}\n channel={channel}\n />\n )\n }\n \n )\n }\n
\n )}\n />\n );\n}\n","import React, {\n ReactElement,\n useState,\n useContext,\n} from 'react';\n\nimport Modal from '../../../ui/Modal';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport Icon, { IconTypes } from '../../../ui/Icon';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n isOnline: boolean;\n onDeleteChannel(): void;\n}\n\nexport default function DeleteChannel({\n isOnline,\n onDeleteChannel,\n}: Props): ReactElement {\n const [showDeleteChannelModal, setShowDeleteChannelModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n return (\n <>\n {\n if (!isOnline) { return; }\n setShowDeleteChannelModal(true);\n }}\n onClick={() => {\n if (!isOnline) { return; }\n setShowDeleteChannelModal(true);\n }}\n >\n \n \n {stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL}\n \n
\n {\n showDeleteChannelModal && (\n {\n setShowDeleteChannelModal(false);\n }}\n onSubmit={() => {\n onDeleteChannel();\n }}\n submitText={stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT}\n titleText={stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE}\n />\n )\n }\n >\n )\n}\n","import React, {\n ReactElement,\n useContext,\n useState,\n useEffect,\n} from 'react';\n\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport Icon, { IconTypes } from '../../../ui/Icon';\n\nimport { UserListItem } from './ParticipantsAccordion';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n channel: SendBird.OpenChannel;\n onCloseClick(): void;\n currentUser: string;\n}\n\nexport default function ParticipantsList({\n channel,\n onCloseClick,\n currentUser,\n}: Props): ReactElement {\n const { stringSet } = useContext(LocalizationContext);\n const [participants, setParticipants] = useState([]);\n const [participantListQuery, setParticipantListQuery] = useState(null);\n useEffect(() => {\n if (!channel || !channel.createParticipantListQuery) {\n return;\n }\n const participantListQuery = channel.createParticipantListQuery();\n setParticipantListQuery(participantListQuery);\n participantListQuery.next((participantList, error) => {\n if (error) {\n return;\n }\n setParticipants(participantList);\n });\n }, [channel]);\n return (\n \n
\n \n {stringSet.OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE}\n \n {\n onCloseClick();\n }}\n />\n
\n
{\n const { hasNext } = participantListQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n participantListQuery.next((fetchedParticipants, error) => {\n if (error) {\n return;\n }\n setParticipants([\n ...participants,\n ...fetchedParticipants,\n ])\n });\n }\n }}\n >\n
\n {\n participants.map((p: SendBird.User) => (\n \n ))\n }\n {\n (participants && participants.length === 0)\n ? (\n \n {stringSet.OPEN_CHANNEL_SETTINGS__EMPTY_LIST}\n \n ): null\n }\n
\n
\n
\n )\n}\n","import React, { ReactElement, useContext } from 'react'\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport Icon, { IconTypes } from '../../../ui/Icon';\n\nimport PlaceHolder from '../../../ui/PlaceHolder';\nimport PlaceHolderTypes from '../../../ui/PlaceHolder/type';\n\ninterface Props {\n onCloseClick?(): void;\n}\n\nexport default function InvalidChannel({\n onCloseClick,\n}: Props): ReactElement {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n \n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n {\n onCloseClick();\n }}\n />\n
\n
\n
\n )\n}\n","import React, {\n useContext,\n useState,\n useEffect,\n} from 'react';\nimport { OpenChannelSettingsProps } from '../../index';\n\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport selectors from '../../lib/selectors';\n\nimport { copyToClipboard } from '../../ui/Message/utils.js'\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../../ui/Label';\nimport Icon, { IconTypes } from '../../ui/Icon';\nimport ChannelProfile from './components/ChannelProfile';\nimport ParticipantsAccordion from './components/ParticipantsAccordion';\nimport DeleteChannel from './components/DeleteChannel';\nimport ParticipantsList from './components/ParticipantsList';\nimport InvalidChannel from './components/InvalidChannel';\nimport { AccordionGroup } from '../../ui/Accordion';\nimport { noop } from '../../utils/utils';\n\nconst emptyLogger = () => ({\n info: noop,\n error: noop,\n warning: noop,\n});\n\ninterface Props extends OpenChannelSettingsProps {\n logger: SendbirdUIKit.Logger;\n sdk: SendBird.SendBirdInstance;\n theme: string;\n user: SendBird.User;\n isOnline: boolean;\n}\n\nfunction OpenChannelSettings(props: Props) {\n const {\n channelUrl,\n onCloseClick = noop,\n onChannelModified = noop,\n renderChannelProfile,\n renderUserProfile,\n disableUserProfile = false,\n logger = emptyLogger(),\n sdk,\n theme,\n user,\n isOnline,\n } = props;\n\n const currentUser = user.userId;\n const [channel, setChannel] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n useEffect(() => {\n if (!channelUrl || !sdk || !sdk.getConnectionState) {\n setChannel(null);\n return;\n }\n\n sdk.OpenChannel.getChannel(channelUrl, (openChannel, error) => {\n if (!error) {\n setChannel(openChannel);\n } else {\n setChannel(null);\n }\n });\n }, [channelUrl, sdk])\n if (!channel) {\n return (\n {\n logger.info('OpenChannelSettings: Click close');\n if (onCloseClick) {\n onCloseClick();\n }\n }}\n />\n );\n }\n return (\n \n {\n channel.isOperator(user)\n ? (\n <>\n \n \n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n {\n onCloseClick();\n }}\n />\n
\n \n {\n renderChannelProfile\n ? renderChannelProfile({ channel })\n : (\n {\n logger.info('ChannelSettings: Channel information being updated');\n channel.updateChannel(\n currentTitle,\n currentImg,\n channel.data,\n (openChannel) => {\n logger.info('ChannelSettings: Channel information updated', openChannel);\n onChannelModified(openChannel);\n // setChannel(openChannel) => alone not working\n setChannel(null);\n setChannel(openChannel);\n },\n );\n }}\n />\n )\n }\n
\n \n {\n copyToClipboard(channel.url);\n }}\n />\n \n {stringSet.OPEN_CHANNEL_SETTINGS__OPERATOR_URL}\n \n \n {channel.url}\n \n
\n \n \n \n {\n channel.delete((response, error) => {\n if (error) {\n logger.warning('OpenChannelSettings: Delete channel failed', error);\n return;\n }\n logger.info('OpenChannelSettings: Delete channel success', response);\n });\n }}\n />\n >\n ) : (\n {\n onCloseClick();\n }}\n />\n )\n }\n \n )\n}\n\nconst ChannelSettingsWithSendbird = withSendbirdContext(OpenChannelSettings, (store) => {\n const logger = (store && store.config && store.config.logger);\n const theme = (store && store.config && store.config.theme) || 'light';\n const isOnline = (store && store.config && store.config.isOnline);\n const user = (store && store.stores && store.stores.userStore\n && store.stores.userStore.user);\n return {\n sdk: selectors.getSdk(store),\n logger,\n theme,\n isOnline,\n user,\n };\n});\n\nexport default ChannelSettingsWithSendbird;\n"],"names":["ChannelAvatar","_a","channel","theme","_b","height","_c","width","stringSet","useContext","LocalizationContext","memoizedAvatar","useMemo","utils","name","OPEN_CHANNEL_SETTINGS__NO_TITLE","coverUrl","EditDetails","props","onSubmit","onCancel","inputRef","useRef","formRef","hiddenInputRef","useState","currentImg","setCurrentImg","newFile","setNewFile","title","MODAL__CHANNEL_INFORMATION__TITLE","BUTTON__SAVE","current","value","reportValidity","ButtonType","PRIMARY","e","preventDefault","MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE","OpenChannelAvatar","display","URL","createObjectURL","target","files","click","LabelTypography","BUTTON_1","LabelColors","MODAL__CHANNEL_INFORMATION__UPLOAD","MODAL__CHANNEL_INFORMATION__CHANNEL_NAME","MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER","ChannelProfile","disabled","onChannelInfoChange","showModal","setShowModal","SUBTITLE_2","ONBACKGROUND_1","ONBACKGROUND_2","CHANNEL_SETTING__PROFILE__EDIT","EditDetailsModal","ParticipantsModal","hideModal","participants","setParticipants","participantListQuery","setParticipantListQuery","useEffect","createParticipantListQuery","next","participantList","error","noop","OPEN_CHANNEL_SETTINGS__ALL_PARTICIPANTS_TITLE","hasNext","fetchMore","clientHeight","scrollTop","scrollHeight","fetchedParticipants","map","p","UserListItem","userId","SHOWN_MEMBER_MAX","member","currentUser","avatarRef","UserProfileContext","disableUserProfile","renderUserProfile","toggleDropdown","profileUrl","closeDropdown","paddingTop","paddingBottom","user","currentUserId","close","nickname","NO_NAME","ParticipantsAccordion","showMoreModal","setShowMoreModal","IconTypes","MEMBERS","IconColors","SUBTITLE_1","OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE","slice","length","ONBACKGROUND_3","OPEN_CHANNEL_SETTINGS__EMPTY_LIST","ButtonTypes","SECONDARY","ButtonSizes","SMALL","OPEN_CHANNEL_SETTINGS__SEE_ALL","DeleteChannel","isOnline","onDeleteChannel","showDeleteChannelModal","setShowDeleteChannelModal","DELETE","join","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT","OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE","ParticipantsList","onCloseClick","H_2","OPEN_CHANNEL_SETTINGS__PARTICIPANTS_TITLE","CLOSE","InvalidChannel","CHANNEL_SETTING__HEADER__TITLE","PlaceHolderTypes","WRONG","emptyLogger","info","warning","OpenChannelSettings","channelUrl","onChannelModified","renderChannelProfile","_d","logger","sdk","_e","setChannel","getConnectionState","OpenChannel","getChannel","openChannel","isOperator","currentTitle","updateChannel","data","COPY","copyToClipboard","url","CAPTION_2","OPEN_CHANNEL_SETTINGS__OPERATOR_URL","delete","response","ChannelSettingsWithSendbird","withSendbirdContext","store","config","stores","userStore","selectors","getSdk"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/SendbirdProvider.js b/dist/esm/SendbirdProvider.js
new file mode 100644
index 0000000..f07405b
--- /dev/null
+++ b/dist/esm/SendbirdProvider.js
@@ -0,0 +1,711 @@
+import { _ as __assign, a as _objectSpread2, b as _slicedToArray, u as uuidv4, g as getStringSet, S as SendbirdSdkContext, L as LocalizationProvider } from './LocalizationContext-619bafba.js';
+import React, { useLayoutEffect, useState, useEffect, useReducer } from 'react';
+import PropTypes from 'prop-types';
+import Sb from 'sendbird';
+import { R as RESET_USER, I as INIT_USER, U as UPDATE_USER_INFO } from './actionTypes-a85c0eaa.js';
+import cssVars from 'css-vars-ponyfill';
+
+var INIT_SDK = 'INIT_SDK';
+var SET_SDK_LOADING = 'SET_SDK_LOADING';
+var RESET_SDK = 'RESET_SDK';
+var SDK_ERROR = 'SDK_ERROR';
+
+var APP_VERSION_STRING = '2.0.0-alpha.0';
+var disconnectSdk = function disconnectSdk(_ref) {
+ var sdkDispatcher = _ref.sdkDispatcher,
+ userDispatcher = _ref.userDispatcher,
+ sdk = _ref.sdk,
+ onDisconnect = _ref.onDisconnect;
+ sdkDispatcher({
+ type: SET_SDK_LOADING,
+ payload: true
+ });
+
+ if (sdk && sdk.disconnect) {
+ sdk.disconnect().then(function () {
+ sdkDispatcher({
+ type: RESET_SDK
+ });
+ userDispatcher({
+ type: RESET_USER
+ });
+ }).finally(function () {
+ onDisconnect();
+ });
+ } else {
+ onDisconnect();
+ }
+};
+var handleConnection = function handleConnection(_ref2, dispatchers) {
+ var userId = _ref2.userId,
+ appId = _ref2.appId,
+ nickname = _ref2.nickname,
+ profileUrl = _ref2.profileUrl,
+ accessToken = _ref2.accessToken,
+ sdk = _ref2.sdk,
+ logger = _ref2.logger;
+ var sdkDispatcher = dispatchers.sdkDispatcher,
+ userDispatcher = dispatchers.userDispatcher;
+ disconnectSdk({
+ sdkDispatcher: sdkDispatcher,
+ userDispatcher: userDispatcher,
+ sdk: sdk,
+ logger: logger,
+ onDisconnect: function onDisconnect() {
+ logger.info('Setup connection');
+ sdkDispatcher({
+ type: SET_SDK_LOADING,
+ payload: true
+ });
+
+ if (userId && appId) {
+ var newSdk = new Sb({
+ appId: appId
+ }); // to check if code is released version from rollup and *not from storybook*
+ // see rollup config file
+
+ {
+ newSdk.addExtension('sb_uikit', APP_VERSION_STRING);
+ }
+
+ var connectCbSucess = function connectCbSucess(user) {
+ sdkDispatcher({
+ type: INIT_SDK,
+ payload: newSdk
+ });
+ userDispatcher({
+ type: INIT_USER,
+ payload: user
+ }); // use nickname/profileUrl if provided
+ // or set userID as nickname
+
+ var newNickName = nickname || user.nickname;
+ var newProfileUrl = profileUrl || user.profileUrl;
+ newSdk.updateCurrentUserInfo(newNickName, newProfileUrl).then(function (namedUser) {
+ userDispatcher({
+ type: UPDATE_USER_INFO,
+ payload: namedUser
+ });
+ });
+ };
+
+ var connectCbError = function connectCbError(e) {
+ logger.error('Connection failed', "".concat(e));
+ sdkDispatcher({
+ type: RESET_SDK
+ });
+ sdkDispatcher({
+ type: RESET_USER
+ });
+ sdkDispatcher({
+ type: SDK_ERROR
+ });
+ };
+
+ if (accessToken) {
+ newSdk.connect(userId, accessToken).then(function (res) {
+ return connectCbSucess(res);
+ }).catch(function (err) {
+ return connectCbError(err);
+ });
+ } else {
+ newSdk.connect(userId).then(function (res) {
+ return connectCbSucess(res);
+ }).catch(function (err) {
+ return connectCbError(err);
+ });
+ }
+ } else {
+ sdkDispatcher({
+ type: SDK_ERROR
+ });
+ logger.warning('Connection failed', 'UserId or appId missing');
+ }
+ }
+ });
+};
+
+var isEmpty = function isEmpty(obj) {
+ if (obj === null || obj === undefined) {
+ return true;
+ }
+
+ for (var prop in obj) {
+ if (obj.hasOwnProperty(prop)) {
+ return false;
+ }
+ }
+
+ return JSON.stringify(obj) === JSON.stringify({});
+};
+
+var useTheme = function useTheme(overrides) {
+ useLayoutEffect(function () {
+ if (!isEmpty(overrides)) {
+ cssVars({
+ variables: __assign({
+ '--sendbird-dark-primary-500': '#4d2aa6',
+ '--sendbird-dark-primary-400': '#6440C4',
+ '--sendbird-dark-primary-300': '#7B53EF',
+ '--sendbird-dark-primary-200': '#9E8CF5',
+ '--sendbird-dark-primary-100': '#E2DFFF',
+ '--sendbird-dark-secondary-500': '#007A7A',
+ '--sendbird-dark-secondary-400': '#189A8D',
+ '--sendbird-dark-secondary-300': '#2EBA9F',
+ '--sendbird-dark-secondary-200': '#6FD6BE',
+ '--sendbird-dark-secondary-100': '#AEF2DC',
+ '--sendbird-dark-information-100': '#b2d9ff',
+ '--sendbird-dark-error-500': '#A30E2D',
+ '--sendbird-dark-error-400': '#C11F41',
+ '--sendbird-dark-error-300': '#E53157',
+ '--sendbird-dark-error-200': '#FF6183',
+ '--sendbird-dark-error-100': '#FFABBD',
+ '--sendbird-dark-background-700': '#000000',
+ '--sendbird-dark-background-600': '#161616',
+ '--sendbird-dark-background-500': '#2C2C2C',
+ '--sendbird-dark-background-400': '#393939',
+ '--sendbird-dark-background-300': '#A8A8A8',
+ '--sendbird-dark-background-200': '#D9D9D9',
+ '--sendbird-dark-background-100': '#F0F0F0',
+ '--sendbird-dark-background-50': '#FFFFFF',
+ '--sendbird-dark-overlay': 'rgba(0, 0, 0, 0.32)',
+ '--sendbird-dark-onlight-01': 'rgba(0, 0, 0, 0.88)',
+ '--sendbird-dark-onlight-02': 'rgba(0, 0, 0, 0.50)',
+ '--sendbird-dark-onlight-03': 'rgba(0, 0, 0, 0.38)',
+ '--sendbird-dark-onlight-04': 'rgba(0, 0, 0, 0.12)',
+ '--sendbird-dark-ondark-01': 'rgba(255, 255, 255, 0.88)',
+ '--sendbird-dark-ondark-02': 'rgba(255, 255, 255, 0.50)',
+ '--sendbird-dark-ondark-03': 'rgba(255, 255, 255, 0.38)',
+ '--sendbird-dark-ondark-04': 'rgba(255, 255, 255, 0.12)',
+ '--sendbird-dark-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',
+ '--sendbird-dark-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',
+ '--sendbird-dark-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',
+ '--sendbird-dark-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',
+ '--sendbird-dark-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-primary-500': '#4d2aa6',
+ '--sendbird-light-primary-400': '#6440C4',
+ '--sendbird-light-primary-300': '#7B53EF',
+ '--sendbird-light-primary-200': '#9E8CF5',
+ '--sendbird-light-primary-100': '#E2DFFF',
+ '--sendbird-light-secondary-500': '#007A7A',
+ '--sendbird-light-secondary-400': '#189A8D',
+ '--sendbird-light-secondary-300': '#2EBA9F',
+ '--sendbird-light-secondary-200': '#6FD6BE',
+ '--sendbird-light-secondary-100': '#AEF2DC',
+ '--sendbird-light-information-100': '#b2d9ff',
+ '--sendbird-light-error-500': '#A30E2D',
+ '--sendbird-light-error-400': '#C11F41',
+ '--sendbird-light-error-300': '#E53157',
+ '--sendbird-light-error-200': '#FF6183',
+ '--sendbird-light-error-100': '#FFABBD',
+ '--sendbird-light-background-700': '#000000',
+ '--sendbird-light-background-600': '#161616',
+ '--sendbird-light-background-500': '#2C2C2C',
+ '--sendbird-light-background-400': '#393939',
+ '--sendbird-light-background-300': '#A8A8A8',
+ '--sendbird-light-background-200': '#D9D9D9',
+ '--sendbird-light-background-100': '#F0F0F0',
+ '--sendbird-light-background-50': ' #FFFFFF',
+ '--sendbird-light-overlay': 'rgba(0, 0, 0, 0.32)',
+ '--sendbird-light-onlight-01': 'rgba(0, 0, 0, 0.88)',
+ '--sendbird-light-onlight-02': 'rgba(0, 0, 0, 0.50)',
+ '--sendbird-light-onlight-03': 'rgba(0, 0, 0, 0.38)',
+ '--sendbird-light-onlight-04': 'rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-ondark-01': 'rgba(255, 255, 255, 0.88)',
+ '--sendbird-light-ondark-02': 'rgba(255, 255, 255, 0.50)',
+ '--sendbird-light-ondark-03': 'rgba(255, 255, 255, 0.38)',
+ '--sendbird-light-ondark-04': 'rgba(255, 255, 255, 0.12)',
+ '--sendbird-light-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',
+ '--sendbird-light-theme-surface-2': '#EAEAEA'
+ }, overrides)
+ });
+ }
+ }, [overrides]);
+};
+
+var sdkInitialState = {
+ initialized: false,
+ loading: false,
+ sdk: {},
+ error: false
+};
+
+function reducer(state, action) {
+ switch (action.type) {
+ case SET_SDK_LOADING:
+ return _objectSpread2({}, state, {
+ initialized: false,
+ loading: action.payload
+ });
+
+ case SDK_ERROR:
+ return _objectSpread2({}, state, {
+ initialized: false,
+ loading: false,
+ error: true
+ });
+
+ case INIT_SDK:
+ return {
+ sdk: action.payload,
+ initialized: true,
+ loading: false,
+ error: false
+ };
+
+ case RESET_SDK:
+ return sdkInitialState;
+
+ default:
+ return state;
+ }
+}
+
+var userInitialState = {
+ initialized: false,
+ loading: false,
+ user: {}
+};
+
+function reducer$1(state, action) {
+ switch (action.type) {
+ case INIT_USER:
+ return {
+ initialized: true,
+ loading: false,
+ user: action.payload
+ };
+
+ case RESET_USER:
+ return userInitialState;
+
+ case UPDATE_USER_INFO:
+ return _objectSpread2({}, state, {
+ user: action.payload
+ });
+
+ default:
+ return state;
+ }
+}
+
+function useConnectionStatus(sdk, logger) {
+ var _useState = useState(true),
+ _useState2 = _slicedToArray(_useState, 2),
+ isOnline = _useState2[0],
+ setIsOnline = _useState2[1];
+
+ useEffect(function () {
+ var uniqueHandlerId = uuidv4();
+ logger.warning('sdk changed', uniqueHandlerId);
+ var handler;
+
+ if (sdk && sdk.ConnectionHandler) {
+ handler = new sdk.ConnectionHandler();
+
+ handler.onReconnectStarted = function () {
+ setIsOnline(false);
+ logger.warning('onReconnectStarted', {
+ isOnline: isOnline
+ });
+ };
+
+ handler.onReconnectSucceeded = function () {
+ setIsOnline(true);
+ logger.warning('onReconnectSucceeded', {
+ isOnline: isOnline
+ });
+ };
+
+ handler.onReconnectFailed = function () {
+ sdk.reconnect();
+ logger.warning('onReconnectFailed');
+ };
+
+ logger.info('Added ConnectionHandler', uniqueHandlerId);
+ sdk.addConnectionHandler(uniqueHandlerId, handler);
+ }
+
+ return function () {
+ try {
+ sdk.removeConnectionHandler(uniqueHandlerId);
+ logger.info('Removed ConnectionHandler', uniqueHandlerId);
+ } catch (_unused) {//
+ }
+ };
+ }, [sdk]);
+ useEffect(function () {
+ var tryReconnect = function tryReconnect() {
+ try {
+ logger.warning('Try reconnecting SDK');
+
+ if (sdk.getConnectionState() !== 'OPEN') {
+ // connection is not broken yet
+ sdk.reconnect();
+ }
+ } catch (_unused2) {//
+ }
+ }; // addEventListener version
+
+
+ window.addEventListener('online', tryReconnect);
+ return function () {
+ window.removeEventListener('online', tryReconnect);
+ };
+ }, [sdk]); // add offline-class to body
+
+ useEffect(function () {
+ var body = document.querySelector('body');
+
+ if (!isOnline) {
+ try {
+ body.classList.add('sendbird__offline');
+ logger.info('Added class sendbird__offline to body');
+ } catch (e) {//
+ }
+ } else {
+ try {
+ body.classList.remove('sendbird__offline');
+ logger.info('Removed class sendbird__offline from body');
+ } catch (e) {//
+ }
+ }
+ }, [isOnline]);
+ return isOnline;
+}
+
+var LOG_LEVELS = {
+ DEBUG: 'debug',
+ WARNING: 'warning',
+ ERROR: 'error',
+ INFO: 'info',
+ ALL: 'all'
+};
+
+var colorLog = function colorLog(level) {
+ switch (level) {
+ case LOG_LEVELS.WARNING:
+ return 'color: Orange';
+
+ case LOG_LEVELS.ERROR:
+ return 'color: Red';
+
+ default:
+ return 'color: Gray';
+ }
+};
+
+var printLog = function printLog(_ref) {
+ var level = _ref.level,
+ title = _ref.title,
+ _ref$description = _ref.description,
+ description = _ref$description === void 0 ? '' : _ref$description;
+ // eslint-disable-next-line no-console
+ console.log("%c SendbirdUIKit | ".concat(level, " | ").concat(new Date().toISOString(), " | ").concat(title, " ").concat(description && '|'), colorLog(level), description);
+};
+var getDefaultLogger = function getDefaultLogger() {
+ return {
+ info: function info() {},
+ error: function error() {},
+ warning: function warning() {}
+ };
+};
+var LoggerFactory = function LoggerFactory(lvl, customInterface) {
+ var logInterface = customInterface || printLog;
+ var lvlArray = Array.isArray(lvl) ? lvl : [lvl];
+
+ var applyLog = function applyLog(lgLvl) {
+ return function (title, description) {
+ return logInterface({
+ level: lgLvl,
+ title: title,
+ description: description
+ });
+ };
+ };
+
+ var logger = lvlArray.reduce(function (accumulator, currentLvl) {
+ if (currentLvl === LOG_LEVELS.DEBUG || currentLvl === LOG_LEVELS.ALL) {
+ return _objectSpread2({}, accumulator, {
+ info: applyLog(LOG_LEVELS.INFO),
+ error: applyLog(LOG_LEVELS.ERROR),
+ warning: applyLog(LOG_LEVELS.WARNING)
+ });
+ }
+
+ if (currentLvl === LOG_LEVELS.INFO) {
+ return _objectSpread2({}, accumulator, {
+ info: applyLog(LOG_LEVELS.INFO)
+ });
+ }
+
+ if (currentLvl === LOG_LEVELS.ERROR) {
+ return _objectSpread2({}, accumulator, {
+ error: applyLog(LOG_LEVELS.ERROR)
+ });
+ }
+
+ if (currentLvl === LOG_LEVELS.WARNING) {
+ return _objectSpread2({}, accumulator, {
+ warning: applyLog(LOG_LEVELS.WARNING)
+ });
+ }
+
+ return _objectSpread2({}, accumulator);
+ }, getDefaultLogger());
+ return logger;
+};
+
+// https://davidwalsh.name/pubsub-javascript
+var pubSubFactory = (function () {
+ var topics = {};
+ var hOP = topics.hasOwnProperty;
+ return {
+ __getTopics: function __getTopics() {
+ return topics;
+ },
+ subscribe: function subscribe(topic, listener) {
+ // Create the topic's object if not yet created
+ if (!hOP.call(topics, topic)) {
+ topics[topic] = [];
+ } // Add the listener to queue
+
+
+ var index = topics[topic].push(listener) - 1; // Provide handle back for removal of topic
+
+ return {
+ remove: function remove() {
+ delete topics[topic][index];
+ }
+ };
+ },
+ publish: function publish(topic, info) {
+ // If the topic doesn't exist, or there's no listeners in queue, just leave
+ if (!hOP.call(topics, topic)) {
+ return;
+ } // Cycle through topics queue, fire!
+
+
+ topics[topic].forEach(function (item) {
+ item(info !== undefined ? info : {});
+ });
+ }
+ };
+});
+
+function useAppendDomNode() {
+ var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var rootSelector = arguments.length > 1 ? arguments[1] : undefined;
+ useEffect(function () {
+ var root = document.querySelector(rootSelector);
+ ids.forEach(function (id) {
+ var elem = document.createElement('div');
+ elem.setAttribute('id', id);
+ root.appendChild(elem);
+ });
+ return function () {
+ ids.forEach(function (id) {
+ var target = document.getElementById(id);
+
+ if (target) {
+ root.removeChild(target);
+ }
+ });
+ };
+ }, []);
+}
+
+function Sendbird(props) {
+ var userId = props.userId,
+ appId = props.appId,
+ accessToken = props.accessToken,
+ children = props.children,
+ disableUserProfile = props.disableUserProfile,
+ renderUserProfile = props.renderUserProfile,
+ allowProfileEdit = props.allowProfileEdit,
+ theme = props.theme,
+ nickname = props.nickname,
+ profileUrl = props.profileUrl,
+ userListQuery = props.userListQuery,
+ _props$config = props.config,
+ config = _props$config === void 0 ? {} : _props$config,
+ colorSet = props.colorSet,
+ stringSet = props.stringSet;
+ var _config$logLevel = config.logLevel,
+ logLevel = _config$logLevel === void 0 ? '' : _config$logLevel;
+
+ var _useState = useState(LoggerFactory(logLevel)),
+ _useState2 = _slicedToArray(_useState, 2),
+ logger = _useState2[0],
+ setLogger = _useState2[1];
+
+ var _useState3 = useState(),
+ _useState4 = _slicedToArray(_useState3, 2),
+ pubSub = _useState4[0],
+ setPubSub = _useState4[1];
+
+ var _useReducer = useReducer(reducer, sdkInitialState),
+ _useReducer2 = _slicedToArray(_useReducer, 2),
+ sdkStore = _useReducer2[0],
+ sdkDispatcher = _useReducer2[1];
+
+ var _useReducer3 = useReducer(reducer$1, userInitialState),
+ _useReducer4 = _slicedToArray(_useReducer3, 2),
+ userStore = _useReducer4[0],
+ userDispatcher = _useReducer4[1];
+
+ useTheme(colorSet);
+ useEffect(function () {
+ setPubSub(pubSubFactory());
+ }, []);
+ useEffect(function () {
+ logger.info('App Init'); // dispatch action
+
+ handleConnection({
+ userId: userId,
+ appId: appId,
+ accessToken: accessToken,
+ sdkStore: sdkStore,
+ nickname: nickname,
+ profileUrl: profileUrl,
+ sdk: sdkStore.sdk,
+ logger: logger
+ }, {
+ sdkDispatcher: sdkDispatcher,
+ userDispatcher: userDispatcher
+ });
+ }, [userId, appId, accessToken]); // to create a pubsub to communicate between parent and child
+
+ useEffect(function () {
+ setLogger(LoggerFactory(logLevel));
+ }, [logLevel]);
+ useAppendDomNode(['sendbird-modal-root', 'sendbird-dropdown-portal', 'sendbird-emoji-list-portal'], 'body'); // should move to reducer
+
+ var _useState5 = useState(theme),
+ _useState6 = _slicedToArray(_useState5, 2),
+ currenttheme = _useState6[0],
+ setCurrenttheme = _useState6[1];
+
+ useEffect(function () {
+ setCurrenttheme(theme);
+ }, [theme]); // add-remove theme from body
+
+ useEffect(function () {
+ logger.info('Setup theme', "Theme: ".concat(currenttheme));
+
+ try {
+ var body = document.querySelector('body');
+ body.classList.remove('sendbird-theme--light');
+ body.classList.remove('sendbird-theme--dark');
+ body.classList.add("sendbird-theme--".concat(currenttheme || 'light'));
+ logger.info('Finish setup theme'); // eslint-disable-next-line no-empty
+ } catch (e) {
+ logger.warning('Setup theme failed', "".concat(e));
+ }
+
+ return function () {
+ try {
+ var _body = document.querySelector('body');
+
+ _body.classList.remove('sendbird-theme--light');
+
+ _body.classList.remove('sendbird-theme--dark'); // eslint-disable-next-line no-empty
+
+ } catch (_unused) {}
+ };
+ }, [currenttheme]);
+ var isOnline = useConnectionStatus(sdkStore.sdk, logger);
+ var localeStringSet = React.useMemo(function () {
+ if (!stringSet) {
+ return getStringSet('en');
+ }
+
+ return _objectSpread2({}, getStringSet('en'), {}, stringSet);
+ }, [stringSet]);
+ return React.createElement(SendbirdSdkContext.Provider, {
+ value: {
+ stores: {
+ sdkStore: sdkStore,
+ userStore: userStore
+ },
+ dispatchers: {
+ sdkDispatcher: sdkDispatcher,
+ userDispatcher: userDispatcher,
+ reconnect: function reconnect() {
+ handleConnection({
+ userId: userId,
+ appId: appId,
+ accessToken: accessToken,
+ sdkStore: sdkStore,
+ nickname: nickname,
+ profileUrl: profileUrl,
+ logger: logger,
+ sdk: sdkStore.sdk
+ }, {
+ sdkDispatcher: sdkDispatcher,
+ userDispatcher: userDispatcher
+ });
+ }
+ },
+ config: {
+ disableUserProfile: disableUserProfile,
+ renderUserProfile: renderUserProfile,
+ allowProfileEdit: allowProfileEdit,
+ isOnline: isOnline,
+ userId: userId,
+ appId: appId,
+ accessToken: accessToken,
+ theme: currenttheme,
+ setCurrenttheme: setCurrenttheme,
+ userListQuery: userListQuery,
+ logger: logger,
+ pubSub: pubSub
+ }
+ }
+ }, React.createElement(LocalizationProvider, {
+ stringSet: localeStringSet
+ }, children));
+}
+Sendbird.propTypes = {
+ userId: PropTypes.string.isRequired,
+ appId: PropTypes.string.isRequired,
+ accessToken: PropTypes.string,
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
+ theme: PropTypes.string,
+ nickname: PropTypes.string,
+ profileUrl: PropTypes.string,
+ disableUserProfile: PropTypes.bool,
+ renderUserProfile: PropTypes.func,
+ allowProfileEdit: PropTypes.bool,
+ userListQuery: PropTypes.func,
+ config: PropTypes.shape({
+ // None Error Warning Info 'All/Debug'
+ logLevel: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ pubSub: PropTypes.shape({
+ subscribe: PropTypes.func,
+ publish: PropTypes.func
+ })
+ }),
+ stringSet: PropTypes.objectOf(PropTypes.string),
+ colorSet: PropTypes.objectOf(PropTypes.string)
+};
+Sendbird.defaultProps = {
+ accessToken: '',
+ theme: 'light',
+ nickname: '',
+ profileUrl: '',
+ disableUserProfile: false,
+ renderUserProfile: null,
+ allowProfileEdit: false,
+ userListQuery: null,
+ config: {},
+ stringSet: null,
+ colorSet: null
+};
+
+export default Sendbird;
+//# sourceMappingURL=SendbirdProvider.js.map
diff --git a/dist/esm/SendbirdProvider.js.map b/dist/esm/SendbirdProvider.js.map
new file mode 100644
index 0000000..cd39b69
--- /dev/null
+++ b/dist/esm/SendbirdProvider.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"SendbirdProvider.js","sources":["../../../src/lib/dux/sdk/actionTypes.js","../../../src/lib/dux/sdk/thunks.js","../../../src/lib/hooks/useTheme.ts","../../../src/lib/dux/sdk/initialState.js","../../../src/lib/dux/sdk/reducers.js","../../../src/lib/dux/user/initialState.js","../../../src/lib/dux/user/reducers.js","../../../src/lib/hooks/useOnlineStatus.js","../../../src/lib/Logger/index.js","../../../src/lib/pubSub/index.js","../../../src/hooks/useAppendDomNode.js","../../../src/lib/Sendbird.jsx"],"sourcesContent":["export const INIT_SDK = 'INIT_SDK';\nexport const SET_SDK_LOADING = 'SET_SDK_LOADING';\nexport const RESET_SDK = 'RESET_SDK';\nexport const SDK_ERROR = 'SDK_ERROR';\n","import Sb from 'sendbird';\n\nimport {\n INIT_SDK,\n SET_SDK_LOADING,\n RESET_SDK,\n SDK_ERROR,\n} from './actionTypes';\nimport { INIT_USER, UPDATE_USER_INFO, RESET_USER } from '../user/actionTypes';\n\nconst APP_VERSION_STRING = '__uikit_app_version__';\nconst IS_ROLLUP = '__is_rollup__';\nconst IS_ROLLUP_REPLACE = '__is_rollup_replace__';\n\nexport const disconnectSdk = ({\n sdkDispatcher,\n userDispatcher,\n sdk,\n onDisconnect,\n}) => {\n sdkDispatcher({ type: SET_SDK_LOADING, payload: true });\n if (sdk && sdk.disconnect) {\n sdk.disconnect()\n .then(() => {\n sdkDispatcher({ type: RESET_SDK });\n userDispatcher({ type: RESET_USER });\n })\n .finally(() => {\n onDisconnect();\n });\n } else {\n onDisconnect();\n }\n};\n\nexport const handleConnection = ({\n userId,\n appId,\n nickname,\n profileUrl,\n accessToken,\n sdk,\n logger,\n}, dispatchers) => {\n const {\n sdkDispatcher,\n userDispatcher,\n } = dispatchers;\n disconnectSdk({\n sdkDispatcher,\n userDispatcher,\n sdk,\n logger,\n onDisconnect: () => {\n logger.info('Setup connection');\n sdkDispatcher({ type: SET_SDK_LOADING, payload: true });\n if (userId && appId) {\n const newSdk = new Sb({ appId });\n // to check if code is released version from rollup and *not from storybook*\n // see rollup config file\n if (IS_ROLLUP === IS_ROLLUP_REPLACE) {\n newSdk.addExtension('sb_uikit', APP_VERSION_STRING);\n }\n const connectCbSucess = (user) => {\n sdkDispatcher({ type: INIT_SDK, payload: newSdk });\n userDispatcher({ type: INIT_USER, payload: user });\n // use nickname/profileUrl if provided\n // or set userID as nickname\n const newNickName = nickname || user.nickname;\n const newProfileUrl = profileUrl || user.profileUrl;\n newSdk.updateCurrentUserInfo(newNickName, newProfileUrl)\n .then((namedUser) => {\n userDispatcher({ type: UPDATE_USER_INFO, payload: namedUser });\n });\n };\n\n const connectCbError = (e) => {\n logger.error('Connection failed', `${e}`);\n sdkDispatcher({ type: RESET_SDK });\n sdkDispatcher({ type: RESET_USER });\n sdkDispatcher({ type: SDK_ERROR });\n };\n\n if (accessToken) {\n newSdk.connect(userId, accessToken)\n .then((res) => connectCbSucess(res))\n .catch((err) => connectCbError(err));\n } else {\n newSdk.connect(userId)\n .then((res) => connectCbSucess(res))\n .catch((err) => connectCbError(err));\n }\n } else {\n sdkDispatcher({ type: SDK_ERROR });\n logger.warning('Connection failed', 'UserId or appId missing');\n }\n },\n });\n};\n","import { useLayoutEffect } from 'react';\nimport cssVars from 'css-vars-ponyfill';\n\nconst isEmpty = (obj) => {\n if (obj === null || obj === undefined) {\n return true;\n }\n\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n return JSON.stringify(obj) === JSON.stringify({});\n}\n\nconst useTheme = (overrides: Record): void => {\n useLayoutEffect(() => {\n if (!isEmpty(overrides)) {\n cssVars({\n variables: {\n ...{\n '--sendbird-dark-primary-500': '#4d2aa6',\n '--sendbird-dark-primary-400': '#6440C4',\n '--sendbird-dark-primary-300': '#7B53EF',\n '--sendbird-dark-primary-200': '#9E8CF5',\n '--sendbird-dark-primary-100': '#E2DFFF',\n\n '--sendbird-dark-secondary-500': '#007A7A',\n '--sendbird-dark-secondary-400': '#189A8D',\n '--sendbird-dark-secondary-300': '#2EBA9F',\n '--sendbird-dark-secondary-200': '#6FD6BE',\n '--sendbird-dark-secondary-100': '#AEF2DC',\n\n '--sendbird-dark-information-100': '#b2d9ff',\n\n '--sendbird-dark-error-500': '#A30E2D',\n '--sendbird-dark-error-400': '#C11F41',\n '--sendbird-dark-error-300': '#E53157',\n '--sendbird-dark-error-200': '#FF6183',\n '--sendbird-dark-error-100': '#FFABBD',\n\n '--sendbird-dark-background-700': '#000000',\n '--sendbird-dark-background-600': '#161616',\n '--sendbird-dark-background-500': '#2C2C2C',\n '--sendbird-dark-background-400': '#393939',\n '--sendbird-dark-background-300': '#A8A8A8',\n '--sendbird-dark-background-200': '#D9D9D9',\n '--sendbird-dark-background-100': '#F0F0F0',\n '--sendbird-dark-background-50': '#FFFFFF',\n\n '--sendbird-dark-overlay': 'rgba(0, 0, 0, 0.32)',\n\n '--sendbird-dark-onlight-01': 'rgba(0, 0, 0, 0.88)',\n '--sendbird-dark-onlight-02': 'rgba(0, 0, 0, 0.50)',\n '--sendbird-dark-onlight-03': 'rgba(0, 0, 0, 0.38)',\n '--sendbird-dark-onlight-04': 'rgba(0, 0, 0, 0.12)',\n\n '--sendbird-dark-ondark-01': 'rgba(255, 255, 255, 0.88)',\n '--sendbird-dark-ondark-02': 'rgba(255, 255, 255, 0.50)',\n '--sendbird-dark-ondark-03': 'rgba(255, 255, 255, 0.38)',\n '--sendbird-dark-ondark-04': 'rgba(255, 255, 255, 0.12)',\n\n '--sendbird-dark-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',\n\n '--sendbird-dark-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-primary-500': '#4d2aa6',\n '--sendbird-light-primary-400': '#6440C4',\n '--sendbird-light-primary-300': '#7B53EF',\n '--sendbird-light-primary-200': '#9E8CF5',\n '--sendbird-light-primary-100': '#E2DFFF',\n\n '--sendbird-light-secondary-500': '#007A7A',\n '--sendbird-light-secondary-400': '#189A8D',\n '--sendbird-light-secondary-300': '#2EBA9F',\n '--sendbird-light-secondary-200': '#6FD6BE',\n '--sendbird-light-secondary-100': '#AEF2DC',\n\n '--sendbird-light-information-100': '#b2d9ff',\n\n '--sendbird-light-error-500': '#A30E2D',\n '--sendbird-light-error-400': '#C11F41',\n '--sendbird-light-error-300': '#E53157',\n '--sendbird-light-error-200': '#FF6183',\n '--sendbird-light-error-100': '#FFABBD',\n\n '--sendbird-light-background-700': '#000000',\n '--sendbird-light-background-600': '#161616',\n '--sendbird-light-background-500': '#2C2C2C',\n '--sendbird-light-background-400': '#393939',\n '--sendbird-light-background-300': '#A8A8A8',\n '--sendbird-light-background-200': '#D9D9D9',\n '--sendbird-light-background-100': '#F0F0F0',\n '--sendbird-light-background-50': ' #FFFFFF',\n\n '--sendbird-light-overlay': 'rgba(0, 0, 0, 0.32)',\n\n '--sendbird-light-onlight-01': 'rgba(0, 0, 0, 0.88)',\n '--sendbird-light-onlight-02': 'rgba(0, 0, 0, 0.50)',\n '--sendbird-light-onlight-03': 'rgba(0, 0, 0, 0.38)',\n '--sendbird-light-onlight-04': 'rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-ondark-01': 'rgba(255, 255, 255, 0.88)',\n '--sendbird-light-ondark-02': 'rgba(255, 255, 255, 0.50)',\n '--sendbird-light-ondark-03': 'rgba(255, 255, 255, 0.38)',\n '--sendbird-light-ondark-04': 'rgba(255, 255, 255, 0.12)',\n\n '--sendbird-light-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-light-theme-surface-2': '#EAEAEA',\n },\n ...overrides,\n },\n });\n }\n }, [overrides]);\n};\n\nexport default useTheme;\n","export default {\n initialized: false,\n loading: false,\n sdk: {},\n error: false,\n};\n","import * as sdkActions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case sdkActions.SET_SDK_LOADING:\n return {\n ...state,\n initialized: false,\n loading: action.payload,\n };\n case sdkActions.SDK_ERROR:\n return {\n ...state,\n initialized: false,\n loading: false,\n error: true,\n };\n case sdkActions.INIT_SDK:\n return {\n sdk: action.payload,\n initialized: true,\n loading: false,\n error: false,\n };\n case sdkActions.RESET_SDK:\n return initialState;\n default:\n return state;\n }\n}\n","export default {\n initialized: false,\n loading: false,\n user: {},\n};\n","import * as actions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actions.INIT_USER:\n return {\n initialized: true,\n loading: false,\n user: action.payload,\n };\n case actions.RESET_USER:\n return initialState;\n case actions.UPDATE_USER_INFO:\n return {\n ...state,\n user: action.payload,\n };\n default:\n return state;\n }\n}\n","import { useState, useEffect } from 'react';\n\nimport { uuidv4 } from '../../utils/uuid';\n\nfunction useConnectionStatus(sdk, logger) {\n const [isOnline, setIsOnline] = useState(true);\n\n useEffect(() => {\n const uniqueHandlerId = uuidv4();\n logger.warning('sdk changed', uniqueHandlerId);\n let handler;\n if (sdk && sdk.ConnectionHandler) {\n handler = new sdk.ConnectionHandler();\n\n handler.onReconnectStarted = () => {\n setIsOnline(false);\n logger.warning('onReconnectStarted', { isOnline });\n };\n handler.onReconnectSucceeded = () => {\n setIsOnline(true);\n logger.warning('onReconnectSucceeded', { isOnline });\n };\n handler.onReconnectFailed = () => {\n sdk.reconnect();\n logger.warning('onReconnectFailed');\n };\n logger.info('Added ConnectionHandler', uniqueHandlerId);\n sdk.addConnectionHandler(uniqueHandlerId, handler);\n }\n return () => {\n try {\n sdk.removeConnectionHandler(uniqueHandlerId);\n logger.info('Removed ConnectionHandler', uniqueHandlerId);\n } catch {\n //\n }\n };\n }, [sdk]);\n\n useEffect(() => {\n const tryReconnect = () => {\n try {\n logger.warning('Try reconnecting SDK');\n if (sdk.getConnectionState() !== 'OPEN') { // connection is not broken yet\n sdk.reconnect();\n }\n } catch {\n //\n }\n };\n // addEventListener version\n window.addEventListener('online', tryReconnect);\n return () => {\n window.removeEventListener('online', tryReconnect);\n };\n }, [sdk]);\n\n // add offline-class to body\n useEffect(() => {\n const body = document.querySelector('body');\n if (!isOnline) {\n try {\n body.classList.add('sendbird__offline');\n logger.info('Added class sendbird__offline to body');\n } catch (e) {\n //\n }\n } else {\n try {\n body.classList.remove('sendbird__offline');\n logger.info('Removed class sendbird__offline from body');\n } catch (e) {\n //\n }\n }\n }, [isOnline]);\n\n return isOnline;\n}\n\nexport default useConnectionStatus;\n","export const LOG_LEVELS = {\n DEBUG: 'debug',\n WARNING: 'warning',\n ERROR: 'error',\n INFO: 'info',\n ALL: 'all',\n};\n\nconst colorLog = (level) => {\n switch (level) {\n case LOG_LEVELS.WARNING:\n return ('color: Orange');\n case LOG_LEVELS.ERROR:\n return ('color: Red');\n default:\n return ('color: Gray');\n }\n};\n\nexport const printLog = ({\n level,\n title,\n description = '',\n}) => {\n // eslint-disable-next-line no-console\n console.log(\n `%c SendbirdUIKit | ${level} | ${new Date().toISOString()} | ${title} ${description && '|'}`, colorLog(level),\n description,\n );\n};\n\nexport const getDefaultLogger = () => ({\n info: () => {},\n error: () => {},\n warning: () => {},\n});\n\nexport const LoggerFactory = (lvl, customInterface) => {\n const logInterface = customInterface || printLog;\n const lvlArray = Array.isArray(lvl) ? lvl : [lvl];\n\n const applyLog = (lgLvl) => (title, description) => logInterface({\n level: lgLvl,\n title,\n description,\n });\n\n const logger = lvlArray.reduce((accumulator, currentLvl) => {\n if (currentLvl === LOG_LEVELS.DEBUG || currentLvl === LOG_LEVELS.ALL) {\n return ({\n ...accumulator,\n info: applyLog(LOG_LEVELS.INFO),\n error: applyLog(LOG_LEVELS.ERROR),\n warning: applyLog(LOG_LEVELS.WARNING),\n });\n }\n\n if (currentLvl === LOG_LEVELS.INFO) {\n return ({\n ...accumulator,\n info: applyLog(LOG_LEVELS.INFO),\n });\n }\n\n if (currentLvl === LOG_LEVELS.ERROR) {\n return ({\n ...accumulator,\n error: applyLog(LOG_LEVELS.ERROR),\n });\n }\n\n if (currentLvl === LOG_LEVELS.WARNING) {\n return ({\n ...accumulator,\n warning: applyLog(LOG_LEVELS.WARNING),\n });\n }\n\n return { ...accumulator };\n }, getDefaultLogger());\n return logger;\n};\n","// https://davidwalsh.name/pubsub-javascript\nexport default () => {\n const topics = {};\n const hOP = topics.hasOwnProperty;\n\n return {\n __getTopics: () => topics,\n subscribe: (topic, listener) => {\n // Create the topic's object if not yet created\n if (!hOP.call(topics, topic)) { topics[topic] = []; }\n\n // Add the listener to queue\n const index = topics[topic].push(listener) - 1;\n\n // Provide handle back for removal of topic\n return {\n remove: () => {\n delete topics[topic][index];\n },\n };\n },\n publish: (topic, info) => {\n // If the topic doesn't exist, or there's no listeners in queue, just leave\n if (!hOP.call(topics, topic)) { return; }\n\n // Cycle through topics queue, fire!\n topics[topic].forEach((item) => {\n item(info !== undefined ? info : {});\n });\n },\n };\n};\n","import { useEffect } from 'react';\n\nfunction useAppendDomNode(ids = [], rootSelector) {\n useEffect(() => {\n const root = document.querySelector(rootSelector);\n ids.forEach((id) => {\n const elem = document.createElement('div');\n elem.setAttribute('id', id);\n root.appendChild(elem);\n });\n return () => {\n ids.forEach((id) => {\n const target = document.getElementById(id);\n if (target) {\n root.removeChild(target);\n }\n });\n };\n }, []);\n}\n\nexport default useAppendDomNode;\n","import './index.scss';\n\nimport React, { useEffect, useReducer, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { SendbirdSdkContext } from './SendbirdSdkContext';\nimport { handleConnection } from './dux/sdk/thunks';\n\nimport useTheme from './hooks/useTheme';\n\nimport sdkReducers from './dux/sdk/reducers';\nimport userReducers from './dux/user/reducers';\nimport sdkInitialState from './dux/sdk/initialState';\nimport userInitialState from './dux/user/initialState';\n\nimport useOnlineStatus from './hooks/useOnlineStatus';\n\nimport { LoggerFactory } from './Logger';\nimport pubSubFactory from './pubSub/index';\nimport useAppendDomNode from '../hooks/useAppendDomNode';\n\nimport { LocalizationProvider } from './LocalizationContext';\nimport getStringSet from '../ui/Label/stringSet';\n\nexport default function Sendbird(props) {\n const {\n userId,\n appId,\n accessToken,\n children,\n disableUserProfile,\n renderUserProfile,\n allowProfileEdit,\n theme,\n nickname,\n profileUrl,\n userListQuery,\n config = {},\n colorSet,\n stringSet,\n } = props;\n\n const {\n logLevel = '',\n } = config;\n const [logger, setLogger] = useState(LoggerFactory(logLevel));\n const [pubSub, setPubSub] = useState();\n const [sdkStore, sdkDispatcher] = useReducer(sdkReducers, sdkInitialState);\n const [userStore, userDispatcher] = useReducer(userReducers, userInitialState);\n\n useTheme(colorSet);\n\n useEffect(() => {\n setPubSub(pubSubFactory());\n }, []);\n\n useEffect(() => {\n logger.info('App Init');\n // dispatch action\n handleConnection({\n userId,\n appId,\n accessToken,\n sdkStore,\n nickname,\n profileUrl,\n sdk: sdkStore.sdk,\n logger,\n }, {\n sdkDispatcher,\n userDispatcher,\n });\n }, [userId, appId, accessToken]);\n\n // to create a pubsub to communicate between parent and child\n useEffect(() => {\n setLogger(LoggerFactory(logLevel));\n }, [logLevel]);\n\n useAppendDomNode([\n 'sendbird-modal-root',\n 'sendbird-dropdown-portal',\n 'sendbird-emoji-list-portal',\n ], 'body');\n\n // should move to reducer\n const [currenttheme, setCurrenttheme] = useState(theme);\n useEffect(() => {\n setCurrenttheme(theme);\n }, [theme]);\n // add-remove theme from body\n useEffect(() => {\n logger.info('Setup theme', `Theme: ${currenttheme}`);\n try {\n const body = document.querySelector('body');\n body.classList.remove('sendbird-theme--light');\n body.classList.remove('sendbird-theme--dark');\n body.classList.add(`sendbird-theme--${currenttheme || 'light'}`);\n logger.info('Finish setup theme');\n // eslint-disable-next-line no-empty\n } catch (e) {\n logger.warning('Setup theme failed', `${e}`);\n }\n return () => {\n try {\n const body = document.querySelector('body');\n body.classList.remove('sendbird-theme--light');\n body.classList.remove('sendbird-theme--dark');\n // eslint-disable-next-line no-empty\n } catch { }\n };\n }, [currenttheme]);\n\n const isOnline = useOnlineStatus(sdkStore.sdk, logger);\n\n const localeStringSet = React.useMemo(() => {\n if (!stringSet) {\n return getStringSet('en');\n }\n return {\n ...getStringSet('en'),\n ...stringSet,\n };\n }, [stringSet]);\n\n return (\n {\n handleConnection({\n userId,\n appId,\n accessToken,\n sdkStore,\n nickname,\n profileUrl,\n logger,\n sdk: sdkStore.sdk,\n }, {\n sdkDispatcher,\n userDispatcher,\n });\n },\n },\n config: {\n disableUserProfile,\n renderUserProfile,\n allowProfileEdit,\n isOnline,\n userId,\n appId,\n accessToken,\n theme: currenttheme,\n setCurrenttheme,\n userListQuery,\n logger,\n pubSub,\n },\n }}\n >\n \n {children}\n \n \n );\n}\n\nSendbird.propTypes = {\n userId: PropTypes.string.isRequired,\n appId: PropTypes.string.isRequired,\n accessToken: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n theme: PropTypes.string,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n userListQuery: PropTypes.func,\n config: PropTypes.shape({\n // None Error Warning Info 'All/Debug'\n logLevel: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }),\n stringSet: PropTypes.objectOf(PropTypes.string),\n colorSet: PropTypes.objectOf(PropTypes.string),\n};\n\nSendbird.defaultProps = {\n accessToken: '',\n theme: 'light',\n nickname: '',\n profileUrl: '',\n disableUserProfile: false,\n renderUserProfile: null,\n allowProfileEdit: false,\n userListQuery: null,\n config: {},\n stringSet: null,\n colorSet: null,\n};\n"],"names":["INIT_SDK","SET_SDK_LOADING","RESET_SDK","SDK_ERROR","APP_VERSION_STRING","disconnectSdk","sdkDispatcher","userDispatcher","sdk","onDisconnect","type","payload","disconnect","then","RESET_USER","finally","handleConnection","dispatchers","userId","appId","nickname","profileUrl","accessToken","logger","info","newSdk","Sb","addExtension","connectCbSucess","user","INIT_USER","newNickName","newProfileUrl","updateCurrentUserInfo","namedUser","UPDATE_USER_INFO","connectCbError","e","error","connect","res","catch","err","warning","isEmpty","obj","undefined","prop","hasOwnProperty","JSON","stringify","useTheme","overrides","useLayoutEffect","cssVars","variables","initialized","loading","reducer","state","action","sdkActions","initialState","actions","useConnectionStatus","useState","isOnline","setIsOnline","useEffect","uniqueHandlerId","uuidv4","handler","ConnectionHandler","onReconnectStarted","onReconnectSucceeded","onReconnectFailed","reconnect","addConnectionHandler","removeConnectionHandler","tryReconnect","getConnectionState","window","addEventListener","removeEventListener","body","document","querySelector","classList","add","remove","LOG_LEVELS","DEBUG","WARNING","ERROR","INFO","ALL","colorLog","level","printLog","title","description","console","log","Date","toISOString","getDefaultLogger","LoggerFactory","lvl","customInterface","logInterface","lvlArray","Array","isArray","applyLog","lgLvl","reduce","accumulator","currentLvl","topics","hOP","__getTopics","subscribe","topic","listener","call","index","push","publish","forEach","item","useAppendDomNode","ids","rootSelector","root","id","elem","createElement","setAttribute","appendChild","target","getElementById","removeChild","Sendbird","props","children","disableUserProfile","renderUserProfile","allowProfileEdit","theme","userListQuery","config","colorSet","stringSet","logLevel","setLogger","pubSub","setPubSub","useReducer","sdkReducers","sdkInitialState","sdkStore","userReducers","userInitialState","userStore","pubSubFactory","currenttheme","setCurrenttheme","useOnlineStatus","localeStringSet","React","useMemo","getStringSet","stores","propTypes","PropTypes","string","isRequired","oneOfType","element","arrayOf","any","bool","func","shape","objectOf","defaultProps"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/actionTypes-a85c0eaa.js b/dist/esm/actionTypes-a85c0eaa.js
new file mode 100644
index 0000000..f492a6e
--- /dev/null
+++ b/dist/esm/actionTypes-a85c0eaa.js
@@ -0,0 +1,6 @@
+var INIT_USER = 'INIT_USER';
+var RESET_USER = 'RESET_USER';
+var UPDATE_USER_INFO = 'UPDATE_USER_INFO';
+
+export { INIT_USER as I, RESET_USER as R, UPDATE_USER_INFO as U };
+//# sourceMappingURL=actionTypes-a85c0eaa.js.map
diff --git a/dist/esm/actionTypes-a85c0eaa.js.map b/dist/esm/actionTypes-a85c0eaa.js.map
new file mode 100644
index 0000000..8848fd0
--- /dev/null
+++ b/dist/esm/actionTypes-a85c0eaa.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"actionTypes-a85c0eaa.js","sources":["../../../src/lib/dux/user/actionTypes.js"],"sourcesContent":["export const INIT_USER = 'INIT_USER';\nexport const RESET_USER = 'RESET_USER';\nexport const SET_USER_LOADING = 'SET_USER_LOADING';\nexport const UPDATE_USER_INFO = 'UPDATE_USER_INFO';\n"],"names":["INIT_USER","RESET_USER","UPDATE_USER_INFO"],"mappings":"IAAaA,SAAS,GAAG;IACZC,UAAU,GAAG;IAEbC,gBAAgB,GAAG;;;;"}
\ No newline at end of file
diff --git a/dist/esm/index-19f570c9.js b/dist/esm/index-19f570c9.js
new file mode 100644
index 0000000..6bb40d6
--- /dev/null
+++ b/dist/esm/index-19f570c9.js
@@ -0,0 +1,431 @@
+import { c as _toConsumableArray, e as LocalizationContext, b as _slicedToArray } from './LocalizationContext-619bafba.js';
+import React, { useContext, useRef, useState, useEffect } from 'react';
+import PropTypes from 'prop-types';
+import { b as Label, c as LabelTypography, d as LabelColors, u as Colors, v as changeColorToClassName, e as IconButton, I as Icon, a as IconTypes, g as IconColors, B as Button, T as Type, w as Size, A as Avatar, x as MODAL_ROOT, y as changeColorToClassName$1 } from './index-ec3bf9fe.js';
+import { createPortal } from 'react-dom';
+
+// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
+var SUPPORTED_MIMES = {
+ IMAGE: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp' // not supported in IE
+ ],
+ VIDEO: ['video/mpeg', 'video/ogg', 'video/webm', 'video/mp4']
+};
+var isImage = function isImage(type) {
+ return SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0;
+};
+var isVideo = function isVideo(type) {
+ return SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0;
+};
+var unSupported = function unSupported(type) {
+ return !(isImage(type) || isVideo(type));
+};
+
+var isEmpty = function isEmpty(val) {
+ return val === null || val === undefined;
+}; // Some Ids return string and number inconsistently
+// only use to comapre IDs
+
+
+function compareIds (a, b) {
+ if (isEmpty(a) || isEmpty(b)) {
+ return false;
+ }
+
+ var aString = a.toString();
+ var bString = b.toString();
+ return aString === bString;
+}
+
+function DateSeparator(_ref) {
+ var className = _ref.className,
+ children = _ref.children,
+ separatorColor = _ref.separatorColor;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React.createElement("div", {
+ className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-separator']).join(' ')
+ }, React.createElement("div", {
+ className: ["".concat(changeColorToClassName(separatorColor), "--background-color"), 'sendbird-separator__left'].join(' ')
+ }), React.createElement("div", {
+ className: "sendbird-separator__text"
+ }, children), React.createElement("div", {
+ className: ["".concat(changeColorToClassName(separatorColor), "--background-color"), 'sendbird-separator__right'].join(' ')
+ }));
+}
+DateSeparator.propTypes = {
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string), PropTypes.element]),
+ separatorColor: PropTypes.string
+};
+DateSeparator.defaultProps = {
+ className: '',
+ children: React.createElement(Label, {
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, "Date Separator"),
+ separatorColor: Colors.ONBACKGROUND_4
+};
+
+// import IconAttach from '../../svgs/icon-attach.svg';
+
+var LINE_HEIGHT = 76;
+
+var noop = function noop() {};
+
+var KeyCode = {
+ SHIFT: 16,
+ ENTER: 13
+};
+
+var handleUploadFile = function handleUploadFile(callback) {
+ return function (event) {
+ if (event.target.files && event.target.files[0]) {
+ callback(event.target.files[0]);
+ } // eslint-disable-next-line no-param-reassign
+
+
+ event.target.value = '';
+ };
+};
+
+var MessageInput = React.forwardRef(function (props, ref) {
+ var isEdit = props.isEdit,
+ disabled = props.disabled,
+ value = props.value,
+ name = props.name,
+ placeholder = props.placeholder,
+ maxLength = props.maxLength,
+ onFileUpload = props.onFileUpload,
+ onSendMessage = props.onSendMessage,
+ onCancelEdit = props.onCancelEdit,
+ onStartTyping = props.onStartTyping;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var fileInputRef = useRef(null);
+
+ var _useState = useState(value),
+ _useState2 = _slicedToArray(_useState, 2),
+ inputValue = _useState2[0],
+ setInputValue = _useState2[1];
+
+ var _useState3 = useState(false),
+ _useState4 = _slicedToArray(_useState3, 2),
+ isShiftPressed = _useState4[0],
+ setIsShiftPressed = _useState4[1];
+
+ var setHeight = function setHeight() {
+ var elem = ref.current;
+ var MAX_HEIGHT = window.document.body.offsetHeight * 0.6;
+
+ if (elem.scrollHeight >= LINE_HEIGHT) {
+ if (MAX_HEIGHT < elem.scrollHeight) {
+ elem.style.height = 'auto';
+ elem.style.height = "".concat(MAX_HEIGHT, "px");
+ } else {
+ elem.style.height = 'auto';
+ elem.style.height = "".concat(elem.scrollHeight, "px");
+ }
+ } else {
+ elem.style.height = '';
+ }
+ }; // after setHeight called twice, the textarea goes to the initialized
+
+
+ useEffect(function () {
+ setHeight();
+ return setHeight;
+ }, [inputValue]);
+
+ var sendMessage = function sendMessage() {
+ if (inputValue && inputValue.trim().length > 0) {
+ var trimmedInputValue = inputValue.trim();
+
+ if (isEdit) {
+ onSendMessage(name, trimmedInputValue, function () {
+ onCancelEdit();
+ });
+ } else {
+ onSendMessage(trimmedInputValue);
+ setInputValue('');
+ }
+ }
+ };
+
+ return React.createElement("form", {
+ className: "\n ".concat(isEdit ? 'sendbird-message-input__edit' : '', "\n ").concat(disabled ? 'sendbird-message-input-form__disabled' : '', "\n ")
+ }, React.createElement("div", {
+ className: "\n sendbird-message-input\n ".concat(disabled ? 'sendbird-message-input__disabled' : '', "\n ")
+ }, React.createElement("textarea", {
+ disabled: disabled,
+ ref: ref,
+ name: name,
+ value: inputValue,
+ className: "sendbird-message-input--textarea",
+ maxLength: maxLength,
+ onChange: function onChange(e) {
+ setInputValue(e.target.value);
+ onStartTyping();
+ },
+ onKeyDown: function onKeyDown(e) {
+ if (e.keyCode === KeyCode.SHIFT) {
+ setIsShiftPressed(true);
+ }
+
+ if (!isShiftPressed && e.keyCode === KeyCode.ENTER) {
+ e.preventDefault();
+ sendMessage();
+ }
+ },
+ onKeyUp: function onKeyUp(e) {
+ if (e.keyCode === KeyCode.SHIFT) {
+ setIsShiftPressed(false);
+ }
+ }
+ }), !inputValue && React.createElement(Label, {
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_3,
+ className: "sendbird-message-input--placeholder"
+ }, placeholder || stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER), !isEdit && inputValue && inputValue.trim().length > 0 && React.createElement(IconButton, {
+ className: "sendbird-message-input--send",
+ height: "32px",
+ width: "32px",
+ onClick: sendMessage
+ }, React.createElement(Icon, {
+ type: IconTypes.SEND,
+ fillColor: IconColors.PRIMARY,
+ width: "20px",
+ height: "20px"
+ })), !isEdit && (!inputValue || !(inputValue.trim().length > 0)) && React.createElement(IconButton, {
+ className: "sendbird-message-input--attach",
+ height: "32px",
+ width: "32px",
+ onClick: function onClick() {
+ // todo: clear previous input
+ fileInputRef.current.click();
+ }
+ }, React.createElement(Icon, {
+ type: IconTypes.ATTACH,
+ width: "20px",
+ height: "20px"
+ }), React.createElement("input", {
+ type: "file",
+ ref: fileInputRef,
+ onChange: handleUploadFile(onFileUpload),
+ className: "sendbird-message-input--attach-input"
+ }))), isEdit && React.createElement("div", {
+ className: "sendbird-message-input--edit-action"
+ }, React.createElement(Button, {
+ className: "sendbird-message-input--edit-action__cancel",
+ type: Type.SECONDARY,
+ size: Size.SMALL,
+ onClick: onCancelEdit
+ }, stringSet.BUTTON__CANCEL), React.createElement(Button, {
+ className: "sendbird-message-input--edit-action__save",
+ type: Type.PRIMARY,
+ size: Size.SMALL,
+ onClick: function onClick() {
+ if (inputValue) {
+ var trimmedInputValue = inputValue.trim();
+ onSendMessage(name, trimmedInputValue, function () {
+ onCancelEdit();
+ });
+ }
+ }
+ }, stringSet.BUTTON__SAVE)));
+});
+MessageInput.propTypes = {
+ placeholder: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
+ isEdit: PropTypes.bool,
+ name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ value: PropTypes.string,
+ disabled: PropTypes.bool,
+ maxLength: PropTypes.number,
+ onFileUpload: PropTypes.func,
+ onSendMessage: PropTypes.func,
+ onStartTyping: PropTypes.func,
+ onCancelEdit: PropTypes.func
+};
+MessageInput.defaultProps = {
+ value: '',
+ onSendMessage: noop,
+ name: 'sendbird-message-input',
+ isEdit: false,
+ disabled: false,
+ placeholder: '',
+ maxLength: 5000,
+ onFileUpload: noop,
+ onCancelEdit: noop,
+ onStartTyping: noop
+};
+
+var FileViewerComponent = function FileViewerComponent(_ref) {
+ var profileUrl = _ref.profileUrl,
+ nickname = _ref.nickname,
+ type = _ref.type,
+ url = _ref.url,
+ name = _ref.name,
+ onClose = _ref.onClose,
+ onDelete = _ref.onDelete,
+ isByMe = _ref.isByMe;
+ return React.createElement("div", {
+ className: "sendbird-fileviewer"
+ }, React.createElement("div", {
+ className: "sendbird-fileviewer__header"
+ }, React.createElement("div", {
+ className: "sendbird-fileviewer__header-left"
+ }, React.createElement("div", {
+ className: "sendbird-fileviewer__header-avatar"
+ }, React.createElement(Avatar, {
+ height: "32px",
+ width: "32px",
+ src: profileUrl
+ })), React.createElement(Label, {
+ className: "sendbird-fileviewer__header-filename",
+ type: LabelTypography.H_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, name), React.createElement(Label, {
+ className: "sendbird-fileviewer__header-sendername",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_2
+ }, nickname)), React.createElement("div", {
+ className: "sendbird-fileviewer__header-right"
+ }, !unSupported(type) && React.createElement("div", {
+ className: "sendbird-fileviewer__header-actions"
+ }, React.createElement("a", {
+ href: url,
+ rel: "noopener noreferrer",
+ target: "_blank",
+ className: "sendbird-fileviewer__header-download"
+ }, React.createElement(Icon, {
+ type: IconTypes.DOWNLOAD,
+ height: "24px",
+ width: "24px"
+ })), onDelete && isByMe && React.createElement("div", {
+ className: "sendbird-fileviewer__header-delete"
+ }, React.createElement(Icon, {
+ type: IconTypes.DELETE,
+ height: "24px",
+ width: "24px",
+ onClick: onDelete
+ }))), React.createElement("div", {
+ className: "sendbird-fileviewer__header-close"
+ }, React.createElement(Icon, {
+ type: IconTypes.CLOSE,
+ height: "24px",
+ width: "24px",
+ onClick: onClose
+ })))), React.createElement("div", {
+ className: "sendbird-fileviewer__content"
+ }, isVideo(type) && // eslint-disable-next-line jsx-a11y/media-has-caption
+ React.createElement("video", {
+ controls: true,
+ className: "sendbird-fileviewer__video"
+ }, React.createElement("source", {
+ src: url,
+ type: type
+ })), isImage(type) && React.createElement("img", {
+ src: url,
+ alt: name,
+ className: "sendbird-fileviewer__img"
+ }), unSupported(type) && React.createElement("div", {
+ className: "sendbird-fileviewer__unsupported"
+ }, React.createElement(Label, {
+ type: LabelTypography.H_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, "Unsupoprted message"))));
+};
+FileViewerComponent.propTypes = {
+ profileUrl: PropTypes.string.isRequired,
+ nickname: PropTypes.string.isRequired,
+ type: PropTypes.string.isRequired,
+ url: PropTypes.string.isRequired,
+ name: PropTypes.string.isRequired,
+ onClose: PropTypes.func.isRequired,
+ onDelete: PropTypes.func.isRequired,
+ isByMe: PropTypes.bool
+};
+FileViewerComponent.defaultProps = {
+ isByMe: true
+};
+function FileViewer(props) {
+ var onClose = props.onClose,
+ message = props.message,
+ onDelete = props.onDelete,
+ isByMe = props.isByMe;
+ var sender = message.sender,
+ type = message.type,
+ url = message.url,
+ _message$name = message.name,
+ name = _message$name === void 0 ? '' : _message$name;
+ var profileUrl = sender.profileUrl,
+ _sender$nickname = sender.nickname,
+ nickname = _sender$nickname === void 0 ? '' : _sender$nickname;
+ return createPortal(React.createElement(FileViewerComponent, {
+ profileUrl: profileUrl,
+ nickname: nickname,
+ type: type,
+ url: url,
+ name: name,
+ onClose: onClose,
+ onDelete: onDelete,
+ isByMe: isByMe
+ }), document.getElementById(MODAL_ROOT));
+}
+FileViewer.propTypes = {
+ onClose: PropTypes.func.isRequired,
+ message: PropTypes.shape({
+ sender: PropTypes.shape({
+ profileUrl: PropTypes.string,
+ nickname: PropTypes.string
+ }),
+ type: PropTypes.string,
+ url: PropTypes.string,
+ name: PropTypes.string
+ }).isRequired,
+ onDelete: PropTypes.func.isRequired,
+ isByMe: PropTypes.bool
+};
+FileViewer.defaultProps = {
+ isByMe: true
+};
+
+var LINK_LABEL = 'sendbird-link-label';
+var http = /https?:\/\//;
+function LinkLabel(_ref) {
+ var className = _ref.className,
+ src = _ref.src,
+ type = _ref.type,
+ color = _ref.color,
+ children = _ref.children;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+
+ if (color) {
+ injectingClassName.push(changeColorToClassName$1(color));
+ }
+
+ var url = http.test(src) ? src : "http://".concat(src);
+ return React.createElement("a", {
+ className: "".concat(LINK_LABEL, " ").concat(injectingClassName.join(' ')),
+ href: url,
+ target: "_blank",
+ rel: "noopener noreferrer"
+ }, React.createElement(Label, {
+ type: type,
+ color: color,
+ className: "".concat(LINK_LABEL, "__label")
+ }, children));
+}
+LinkLabel.propTypes = {
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.element)]).isRequired,
+ src: PropTypes.string.isRequired,
+ type: PropTypes.oneOf(Object.keys(LabelTypography)).isRequired,
+ color: PropTypes.oneOf(Object.keys(LabelColors)).isRequired
+};
+LinkLabel.defaultProps = {
+ className: ''
+};
+
+export { DateSeparator as D, FileViewer as F, LinkLabel as L, MessageInput as M, isVideo as a, compareIds as c, isImage as i, unSupported as u };
+//# sourceMappingURL=index-19f570c9.js.map
diff --git a/dist/esm/index-19f570c9.js.map b/dist/esm/index-19f570c9.js.map
new file mode 100644
index 0000000..d50cb90
--- /dev/null
+++ b/dist/esm/index-19f570c9.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index-19f570c9.js","sources":["../../../src/ui/FileViewer/types.js","../../../src/utils/compareIds.js","../../../src/ui/DateSeparator/index.jsx","../../../src/ui/MessageInput/index.jsx","../../../src/ui/FileViewer/index.jsx","../../../src/ui/LinkLabel/index.jsx"],"sourcesContent":["// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\nconst SUPPORTED_MIMES = {\n IMAGE: [\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif',\n 'image/webp', // not supported in IE\n ],\n VIDEO: [\n 'video/mpeg',\n 'video/ogg',\n 'video/webm',\n 'video/mp4',\n ],\n};\n\nexport const isImage = (type) => SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0;\nexport const isVideo = (type) => SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0;\nexport const unSupported = (type) => !(isImage(type) || isVideo(type));\n\nexport default SUPPORTED_MIMES;\n","const isEmpty = (val) => (val === null || val === undefined);\n\n// Some Ids return string and number inconsistently\n// only use to comapre IDs\nexport default function (a, b) {\n if (isEmpty(a) || isEmpty(b)) {\n return false;\n }\n const aString = a.toString();\n const bString = b.toString();\n return aString === bString;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { changeColorToClassName, Colors } from '../../utils/color';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nexport default function DateSeparator({\n className,\n children,\n separatorColor,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n );\n}\n\nDateSeparator.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.element,\n ]),\n separatorColor: PropTypes.string,\n};\n\nDateSeparator.defaultProps = {\n className: '',\n children: (\n \n Date Separator\n \n ),\n separatorColor: Colors.ONBACKGROUND_4,\n};\n","import React, {\n useState,\n useRef,\n useEffect,\n useContext,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport IconButton from '../IconButton';\nimport Button from '../Button';\nimport { Type, Size } from '../Button/type';\n\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n// import IconSend from '../../svgs/icon-send.svg';\n// import IconAttach from '../../svgs/icon-attach.svg';\n\nconst LINE_HEIGHT = 76;\nconst noop = () => { };\nconst KeyCode = {\n SHIFT: 16,\n ENTER: 13,\n};\n\nconst handleUploadFile = (callback) => (event) => {\n if (event.target.files && event.target.files[0]) {\n callback(event.target.files[0]);\n }\n // eslint-disable-next-line no-param-reassign\n event.target.value = '';\n};\n\nconst MessageInput = React.forwardRef((props, ref) => {\n const {\n isEdit,\n disabled,\n value,\n name,\n placeholder,\n maxLength,\n onFileUpload,\n onSendMessage,\n onCancelEdit,\n onStartTyping,\n } = props;\n\n const { stringSet } = useContext(LocalizationContext);\n const fileInputRef = useRef(null);\n const [inputValue, setInputValue] = useState(value);\n const [isShiftPressed, setIsShiftPressed] = useState(false);\n\n const setHeight = () => {\n const elem = ref.current;\n const MAX_HEIGHT = window.document.body.offsetHeight * 0.6;\n if (elem.scrollHeight >= LINE_HEIGHT) {\n if (MAX_HEIGHT < elem.scrollHeight) {\n elem.style.height = 'auto';\n elem.style.height = `${MAX_HEIGHT}px`;\n } else {\n elem.style.height = 'auto';\n elem.style.height = `${elem.scrollHeight}px`;\n }\n } else {\n elem.style.height = '';\n }\n };\n\n // after setHeight called twice, the textarea goes to the initialized\n useEffect(() => {\n setHeight();\n return setHeight;\n }, [inputValue]);\n\n const sendMessage = () => {\n if (inputValue && inputValue.trim().length > 0) {\n const trimmedInputValue = inputValue.trim();\n if (isEdit) {\n onSendMessage(name, trimmedInputValue, () => {\n onCancelEdit();\n });\n } else {\n onSendMessage(trimmedInputValue);\n setInputValue('');\n }\n }\n };\n\n return (\n \n \n {\n setInputValue(e.target.value);\n onStartTyping();\n }}\n onKeyDown={(e) => {\n if (e.keyCode === KeyCode.SHIFT) {\n setIsShiftPressed(true);\n }\n if (!isShiftPressed && e.keyCode === KeyCode.ENTER) {\n e.preventDefault();\n sendMessage();\n }\n }}\n onKeyUp={(e) => {\n if (e.keyCode === KeyCode.SHIFT) {\n setIsShiftPressed(false);\n }\n }}\n />\n {/* placeholder */}\n {!inputValue && (\n \n {placeholder || stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER}\n \n )}\n {/* send icon */}\n {\n (!isEdit && inputValue && inputValue.trim().length > 0) && (\n \n \n \n )\n }\n {/* upload icon */}\n {\n (!isEdit && (!inputValue || !(inputValue.trim().length > 0))) && (\n {\n // todo: clear previous input\n fileInputRef.current.click();\n }}\n >\n \n \n \n )\n }\n
\n {/* Edit */}\n {\n isEdit && (\n \n \n {stringSet.BUTTON__CANCEL}\n \n {\n if (inputValue) {\n const trimmedInputValue = inputValue.trim();\n onSendMessage(name, trimmedInputValue, () => {\n onCancelEdit();\n });\n }\n }}\n >\n {stringSet.BUTTON__SAVE}\n \n
\n )\n }\n \n );\n});\n\nMessageInput.propTypes = {\n placeholder: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n isEdit: PropTypes.bool,\n name: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n value: PropTypes.string,\n disabled: PropTypes.bool,\n maxLength: PropTypes.number,\n onFileUpload: PropTypes.func,\n onSendMessage: PropTypes.func,\n onStartTyping: PropTypes.func,\n onCancelEdit: PropTypes.func,\n};\n\nMessageInput.defaultProps = {\n value: '',\n onSendMessage: noop,\n name: 'sendbird-message-input',\n isEdit: false,\n disabled: false,\n placeholder: '',\n maxLength: 5000,\n onFileUpload: noop,\n onCancelEdit: noop,\n onStartTyping: noop,\n};\n\nexport default MessageInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\n\nimport './index.scss';\nimport Avatar from '../Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconTypes } from '../Icon';\nimport { MODAL_ROOT } from '../../hooks/useModal/ModalRoot';\n\nimport { isImage, isVideo, unSupported } from './types';\n\nexport const FileViewerComponent = ({\n profileUrl,\n nickname,\n type,\n url,\n name,\n onClose,\n onDelete,\n isByMe,\n}) => (\n \n
\n
\n
\n
\n {name}\n \n
\n {nickname}\n \n
\n
\n {\n !unSupported(type) && (\n
\n
\n \n \n {\n onDelete && isByMe && (\n
\n \n
\n )\n }\n
\n )\n }\n
\n \n
\n
\n
\n
\n {isVideo(type) && (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n
\n \n \n )}\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n \n Unsupoprted message\n \n
\n )\n }\n
\n
\n);\n\nFileViewerComponent.propTypes = {\n profileUrl: PropTypes.string.isRequired,\n nickname: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n isByMe: PropTypes.bool,\n};\n\nFileViewerComponent.defaultProps = {\n isByMe: true,\n};\n\nexport default function FileViewer(props) {\n const {\n onClose,\n message,\n onDelete,\n isByMe,\n } = props;\n const {\n sender,\n type,\n url,\n name = '',\n } = message;\n const { profileUrl, nickname = '' } = sender;\n return createPortal(\n (\n \n ),\n document.getElementById(MODAL_ROOT),\n );\n}\n\nFileViewer.propTypes = {\n onClose: PropTypes.func.isRequired,\n message: PropTypes.shape({\n sender: PropTypes.shape({\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n }),\n type: PropTypes.string,\n url: PropTypes.string,\n name: PropTypes.string,\n }).isRequired,\n onDelete: PropTypes.func.isRequired,\n isByMe: PropTypes.bool,\n};\n\nFileViewer.defaultProps = {\n isByMe: true,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { changeColorToClassName } from '../Label/utils';\nimport './index.scss';\n\nconst LINK_LABEL = 'sendbird-link-label';\nconst http = /https?:\\/\\//;\n\nexport default function LinkLabel({\n className,\n src,\n type,\n color,\n children,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n if (color) {\n injectingClassName.push(changeColorToClassName(color));\n }\n const url = (http.test(src)) ? src : `http://${src}`;\n\n return (\n \n \n {children}\n \n \n );\n}\n\nLinkLabel.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n src: PropTypes.string.isRequired,\n type: PropTypes.oneOf(Object.keys(LabelTypography)).isRequired,\n color: PropTypes.oneOf(Object.keys(LabelColors)).isRequired,\n};\n\nLinkLabel.defaultProps = {\n className: '',\n};\n\nexport const LinkLabelTypography = LabelTypography;\nexport const LinkLabelColors = LabelColors;\n"],"names":["SUPPORTED_MIMES","IMAGE","VIDEO","isImage","type","indexOf","isVideo","unSupported","isEmpty","val","undefined","a","b","aString","toString","bString","DateSeparator","className","children","separatorColor","injectingClassName","Array","isArray","join","changeColorToClassName","propTypes","PropTypes","oneOfType","string","arrayOf","element","defaultProps","LabelTypography","CAPTION_2","LabelColors","ONBACKGROUND_2","Colors","ONBACKGROUND_4","LINE_HEIGHT","noop","KeyCode","SHIFT","ENTER","handleUploadFile","callback","event","target","files","value","MessageInput","React","forwardRef","props","ref","isEdit","disabled","name","placeholder","maxLength","onFileUpload","onSendMessage","onCancelEdit","onStartTyping","useContext","LocalizationContext","stringSet","fileInputRef","useRef","useState","inputValue","setInputValue","isShiftPressed","setIsShiftPressed","setHeight","elem","current","MAX_HEIGHT","window","document","body","offsetHeight","scrollHeight","style","height","useEffect","sendMessage","trim","length","trimmedInputValue","e","keyCode","preventDefault","BODY_1","ONBACKGROUND_3","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER","IconTypes","SEND","IconColors","PRIMARY","click","ATTACH","Type","SECONDARY","Size","SMALL","BUTTON__CANCEL","BUTTON__SAVE","bool","number","func","FileViewerComponent","profileUrl","nickname","url","onClose","onDelete","isByMe","H_2","ONBACKGROUND_1","DOWNLOAD","DELETE","CLOSE","H_1","isRequired","FileViewer","message","sender","createPortal","getElementById","MODAL_ROOT","shape","LINK_LABEL","http","LinkLabel","src","color","push","test","oneOf","Object","keys"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/index-8abf69b8.js b/dist/esm/index-8abf69b8.js
new file mode 100644
index 0000000..b9925e5
--- /dev/null
+++ b/dist/esm/index-8abf69b8.js
@@ -0,0 +1,86 @@
+import React, { useState } from 'react';
+import { I as Icon, a as IconTypes } from './index-ec3bf9fe.js';
+import { n as noop } from './utils-53ba1773.js';
+
+var Context = React.createContext({
+ opened: '',
+ setOpened: noop
+});
+var Consumer = Context.Consumer;
+var Provider = Context.Provider;
+
+// Wraps all the accordions in an accordion set
+function AccordionGroup(_a) {
+ var children = _a.children,
+ _b = _a.className,
+ className = _b === void 0 ? '' : _b;
+
+ var _c = useState(''),
+ opened = _c[0],
+ setOpened = _c[1];
+
+ return React.createElement(Provider, {
+ value: {
+ opened: opened,
+ setOpened: setOpened
+ }
+ }, React.createElement("div", {
+ className: className
+ }, children));
+}
+
+function Accordion(_a) {
+ var id = _a.id,
+ renderTitle = _a.renderTitle,
+ renderContent = _a.renderContent,
+ renderFooter = _a.renderFooter,
+ className = _a.className;
+
+ var _b = useState(false),
+ showAccordion = _b[0],
+ setShowAccordion = _b[1];
+
+ return React.createElement(Consumer, null, function (value) {
+ var opened = value.opened,
+ setOpened = value.setOpened;
+
+ if (id === opened) {
+ setShowAccordion(true);
+ } else {
+ setShowAccordion(false);
+ }
+
+ var handleClick = function handleClick() {
+ if (showAccordion) {
+ setOpened('');
+ } else {
+ setOpened(id);
+ }
+ };
+
+ return React.createElement(React.Fragment, null, React.createElement("div", {
+ id: id,
+ role: "switch",
+ "aria-checked": false,
+ tabIndex: 0,
+ onKeyDown: handleClick,
+ className: "sendbird-accordion__panel-heder " + className,
+ onClick: handleClick
+ }, renderTitle(), React.createElement(Icon, {
+ type: IconTypes.SHEVRON,
+ className: ['sendbird-accordion__panel-icon-right', 'sendbird-accordion__panel-icon--chevron', showAccordion ? 'sendbird-accordion__panel-icon--open' : ''].join(' '),
+ height: "24px",
+ width: "24px"
+ })), showAccordion && React.createElement("div", {
+ className: "sendbird-accordion"
+ }, React.createElement("div", {
+ className: "sendbird-accordion__list"
+ }, renderContent()), renderFooter && React.createElement("div", {
+ className: "sendbird-accordion__footer"
+ }, renderFooter())));
+ });
+}
+var AccordionGroup$1 = AccordionGroup;
+
+export { AccordionGroup$1 as A, Accordion as a };
+//# sourceMappingURL=index-8abf69b8.js.map
diff --git a/dist/esm/index-8abf69b8.js.map b/dist/esm/index-8abf69b8.js.map
new file mode 100644
index 0000000..ee5e334
--- /dev/null
+++ b/dist/esm/index-8abf69b8.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index-8abf69b8.js","sources":["../../../src/ui/Accordion/context.ts","../../../src/ui/Accordion/AccordionGroup.tsx","../../../src/ui/Accordion/index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { noop } from '../../utils/utils';\n\ninterface ContextValue {\n setOpened(accordion: string): void;\n opened: string;\n}\n\nconst Context = React.createContext({\n opened: '', // mock default value\n setOpened: noop,\n});\n\nexport const Consumer = Context.Consumer;\nexport const Provider = Context.Provider;\n","// Wraps all the accordions in an accordion set\n// keep one accordion open at a time\nimport React, { ReactElement, useState } from 'react';\n\nimport { Provider } from './context';\n\ninterface Props {\n children: ReactElement[] | ReactElement;\n defaultOpened?: string;\n className?: string;\n}\n\nexport default function AccordionGroup({\n children,\n className = '',\n}: Props): ReactElement {\n const [opened, setOpened] = useState('');\n return (\n \n { children }
\n \n )\n}\n","import './index.scss';\n\nimport React, { ReactElement, useState } from 'react';\n\nimport AccordionGroup_ from './AccordionGroup';\nimport { Consumer } from './context';\n\nimport Icon, {\n IconTypes,\n} from '../Icon';\n\ninterface Props {\n id: string;\n className?: string;\n renderTitle(): ReactElement;\n renderContent(): ReactElement;\n renderFooter?(): ReactElement;\n}\n\nexport default function Accordion({\n id,\n renderTitle,\n renderContent,\n renderFooter,\n className,\n}: Props): ReactElement {\n const [showAccordion, setShowAccordion] = useState(false);\n return (\n \n {\n (value) => {\n const { opened, setOpened } = value;\n if (id === opened) {\n setShowAccordion(true);\n } else {\n setShowAccordion(false);\n }\n const handleClick = () => {\n if (showAccordion) {\n setOpened('');\n } else {\n setOpened(id);\n }\n }\n return (\n <>\n \n { renderTitle() }\n \n
\n {\n showAccordion && (\n \n
\n { renderContent() }\n
\n {\n renderFooter && (\n
\n { renderFooter() }\n
\n )\n }\n
\n )\n }\n >);\n }\n }\n \n )\n}\n\nexport const AccordionGroup = AccordionGroup_;\n"],"names":["Context","React","createContext","opened","setOpened","noop","Consumer","Provider","AccordionGroup","_a","children","_b","className","_c","useState","Accordion","id","renderTitle","renderContent","renderFooter","showAccordion","setShowAccordion","value","handleClick","IconTypes","SHEVRON","join","AccordionGroup_"],"mappings":";;;;AASA,IAAMA,OAAO,GAAGC,KAAK,CAACC,aAAN,CAAkC;AAChDC,EAAAA,MAAM,EAAE,EADwC;AAEhDC,EAAAA,SAAS,EAAEC;AAFqC,CAAlC,CAAhB;AAKO,IAAMC,QAAQ,GAAGN,OAAO,CAACM,QAAzB;AACA,IAAMC,QAAQ,GAAGP,OAAO,CAACO,QAAzB;;ACfP;AACA,SAWwBC,eAAeC;MACrCC,QAAQ;MACRC;MAAAC,SAAS,mBAAG;;AAEN,MAAAC,KAAsBC,QAAQ,CAAC,EAAD,CAA9B;AAAA,MAACX,MAAM,QAAP;AAAA,MAASC,SAAS,QAAlB;;AACN,SACE,oBAAC,QAAD;AAAU,IAAA,KAAK,EAAE;AAAED,MAAAA,MAAM,QAAR;AAAUC,MAAAA,SAAS;AAAnB;AAAjB,KACE;AAAK,IAAA,SAAS,EAAEQ;AAAhB,KAA6BF,QAA7B,CADF,CADF;AAKD;;SCHuBK,UAAUN;MAChCO,EAAE;MACFC,WAAW;MACXC,aAAa;MACbC,YAAY;MACZP,SAAS;;AAEH,MAAAD,KAAoCG,QAAQ,CAAC,KAAD,CAA5C;AAAA,MAACM,aAAa,QAAd;AAAA,MAAgBC,gBAAgB,QAAhC;;AACN,SACE,oBAAC,QAAD,QAEI,UAACC,KAAD;AACU,QAAAnB,MAAM,GAAgBmB,KAAK,OAA3B;AAAA,QAAQlB,SAAS,GAAKkB,KAAK,UAA3B;;AACR,QAAIN,EAAE,KAAKb,MAAX,EAAmB;AACjBkB,MAAAA,gBAAgB,CAAC,IAAD,CAAhB;AACD,KAFD,MAEO;AACLA,MAAAA,gBAAgB,CAAC,KAAD,CAAhB;AACD;;AACD,QAAME,WAAW,GAAG,SAAdA,WAAc;AAClB,UAAIH,aAAJ,EAAmB;AACjBhB,QAAAA,SAAS,CAAC,EAAD,CAAT;AACD,OAFD,MAEO;AACLA,QAAAA,SAAS,CAACY,EAAD,CAAT;AACD;AACF,KAND;;AAOA,WACE,0CACE;AACE,MAAA,EAAE,EAAEA,EADN;AAEE,MAAA,IAAI,EAAC,QAFP;AAGE,sBAAc,KAHhB;AAIE,MAAA,QAAQ,EAAE,CAJZ;AAKE,MAAA,SAAS,EAAEO,WALb;AAME,MAAA,SAAS,EAAE,qCAAmCX,SANhD;AAOE,MAAA,OAAO,EAAEW;AAPX,OASIN,WAAW,EATf,EAUE,oBAAC,IAAD;AACE,MAAA,IAAI,EAAEO,SAAS,CAACC,OADlB;AAEE,MAAA,SAAS,EAAE,CACT,sCADS,EAET,yCAFS,EAGRL,aAAa,GAAG,sCAAH,GAA4C,EAHjD,EAITM,IAJS,CAIJ,GAJI,CAFb;AAOE,MAAA,MAAM,EAAC,MAPT;AAQE,MAAA,KAAK,EAAC;AARR,MAVF,CADF,EAuBIN,aAAa,IACX;AAAK,MAAA,SAAS,EAAC;AAAf,OACE;AAAK,MAAA,SAAS,EAAC;AAAf,OACIF,aAAa,EADjB,CADF,EAKIC,YAAY,IACV;AAAK,MAAA,SAAS,EAAC;AAAf,OACIA,YAAY,EADhB,CANN,CAxBN,CADF;AAwCD,GAxDL,CADF;AA6DD;AAED,IAAaX,gBAAc,GAAGmB;;;;"}
\ No newline at end of file
diff --git a/dist/esm/index-aa89d60a.js b/dist/esm/index-aa89d60a.js
new file mode 100644
index 0000000..3673077
--- /dev/null
+++ b/dist/esm/index-aa89d60a.js
@@ -0,0 +1,251 @@
+import { b as _slicedToArray, e as LocalizationContext, c as _toConsumableArray } from './LocalizationContext-619bafba.js';
+import React, { useState, useContext } from 'react';
+import PropTypes from 'prop-types';
+import { b as Label, c as LabelTypography, d as LabelColors, I as Icon, g as IconColors, a as IconTypes, n as UserProfileContext, C as ContextMenu, A as Avatar, h as MenuItems, o as UserProfile } from './index-ec3bf9fe.js';
+
+var InputLabel = function InputLabel(_ref) {
+ var children = _ref.children;
+ return React.createElement(Label, {
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_1,
+ className: "sendbird-input-label"
+ }, children);
+};
+InputLabel.propTypes = {
+ children: PropTypes.string.isRequired
+}; // future: add validations? onChange? more props etc etc
+
+var Input = React.forwardRef(function (props, ref) {
+ var value = props.value,
+ placeHolder = props.placeHolder,
+ disabled = props.disabled,
+ name = props.name,
+ required = props.required;
+
+ var _useState = useState(value),
+ _useState2 = _slicedToArray(_useState, 2),
+ inputValue = _useState2[0],
+ setInputValue = _useState2[1];
+
+ return React.createElement("div", {
+ className: "sendbird-input"
+ }, React.createElement("input", {
+ required: required,
+ ref: ref,
+ name: name,
+ disabled: disabled,
+ value: inputValue,
+ className: "sendbird-input--input",
+ onChange: function onChange(e) {
+ setInputValue(e.target.value);
+ }
+ }), placeHolder && !inputValue && React.createElement(Label, {
+ className: "sendbird-input--placeholder",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_3
+ }, placeHolder));
+});
+Input.propTypes = {
+ value: PropTypes.string,
+ placeHolder: PropTypes.string,
+ name: PropTypes.string.isRequired,
+ disabled: PropTypes.bool,
+ required: PropTypes.bool
+};
+Input.defaultProps = {
+ value: '',
+ placeHolder: '',
+ disabled: false,
+ required: false
+};
+
+function MutedAvatarOverlay(props) {
+ var _a = props.height,
+ height = _a === void 0 ? 24 : _a,
+ _b = props.width,
+ width = _b === void 0 ? 24 : _b;
+ return React.createElement("div", {
+ className: "sendbird-muted-avatar",
+ style: {
+ height: height + "px",
+ width: width + "px"
+ }
+ }, React.createElement("div", {
+ className: "sendbird-muted-avatar__icon"
+ }, React.createElement("div", {
+ className: "sendbird-muted-avatar__bg",
+ style: {
+ height: height + "px",
+ width: width + "px"
+ }
+ }), React.createElement(Icon, {
+ fillColor: IconColors.WHITE,
+ type: IconTypes.ICON_MUTED,
+ width: height - 8 + "px",
+ height: width - 8 + "px"
+ })));
+}
+
+function Checkbox(_ref) {
+ var id = _ref.id,
+ checked = _ref.checked,
+ onChange = _ref.onChange;
+
+ var _useState = useState(checked),
+ _useState2 = _slicedToArray(_useState, 2),
+ isChecked = _useState2[0],
+ setCheck = _useState2[1];
+
+ return React.createElement("label", {
+ className: "sendbird-checkbox",
+ htmlFor: id
+ }, React.createElement("input", {
+ id: id,
+ type: "checkbox",
+ checked: isChecked,
+ onClick: function onClick() {
+ return setCheck(!isChecked);
+ },
+ onChange: onChange
+ }), React.createElement("span", {
+ className: "sendbird-checkbox--checkmark"
+ }));
+}
+Checkbox.propTypes = {
+ id: PropTypes.string,
+ checked: PropTypes.bool,
+ onChange: PropTypes.func
+};
+Checkbox.defaultProps = {
+ id: 'sendbird-checkbox-input',
+ checked: false,
+ onChange: function onChange() {}
+};
+
+var COMPONENT_NAME = 'sendbird-user-list-item';
+function UserListItem(_ref) {
+ var user = _ref.user,
+ className = _ref.className,
+ checkBox = _ref.checkBox,
+ _ref$disableMessaging = _ref.disableMessaging,
+ disableMessaging = _ref$disableMessaging === void 0 ? false : _ref$disableMessaging,
+ currentUser = _ref.currentUser,
+ checked = _ref.checked,
+ _onChange = _ref.onChange,
+ action = _ref.action;
+ var injectingClassNames = Array.isArray(className) ? className : [className];
+ var uniqueKey = user.userId;
+ var actionRef = React.useRef(null);
+ var parentRef = React.useRef(null);
+ var avatarRef = React.useRef(null);
+
+ var _useContext = useContext(UserProfileContext),
+ disableUserProfile = _useContext.disableUserProfile,
+ renderUserProfile = _useContext.renderUserProfile;
+
+ var _useContext2 = useContext(LocalizationContext),
+ stringSet = _useContext2.stringSet;
+
+ return React.createElement("div", {
+ ref: parentRef,
+ className: [COMPONENT_NAME].concat(_toConsumableArray(injectingClassNames)).join(' ')
+ }, user.isMuted && React.createElement(MutedAvatarOverlay, {
+ height: 40,
+ width: 40
+ }), React.createElement(ContextMenu, {
+ menuTrigger: function menuTrigger(toggleDropdown) {
+ return React.createElement(Avatar, {
+ onClick: function onClick() {
+ if (!disableUserProfile) {
+ toggleDropdown();
+ }
+ },
+ ref: avatarRef,
+ className: "".concat(COMPONENT_NAME, "__avatar"),
+ src: user.profileUrl,
+ width: "40px",
+ height: "40px"
+ });
+ },
+ menuItems: function menuItems(closeDropdown) {
+ return React.createElement(MenuItems, {
+ openLeft: true,
+ parentRef: avatarRef // for catching location(x, y) of MenuItems
+ ,
+ parentContainRef: avatarRef // for toggling more options(menus & reactions)
+ ,
+ closeDropdown: closeDropdown,
+ style: {
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }, renderUserProfile ? renderUserProfile({
+ user: user,
+ currentUserId: currentUser,
+ close: closeDropdown
+ }) : React.createElement(UserProfile, {
+ disableMessaging: disableMessaging,
+ user: user,
+ currentUserId: currentUser,
+ onSuccess: closeDropdown
+ }));
+ }
+ }), React.createElement(Label, {
+ className: "".concat(COMPONENT_NAME, "__title"),
+ type: LabelTypography.SUBTITLE_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, user.nickname || stringSet.NO_NAME, currentUser === user.userId && ' (You)'), // if there is now nickname, display userId
+ !user.nickname && React.createElement(Label, {
+ className: "".concat(COMPONENT_NAME, "__subtitle"),
+ type: LabelTypography.CAPTION_3,
+ color: LabelColors.ONBACKGROUND_2
+ }, user.userId), checkBox && // eslint-disable-next-line jsx-a11y/label-has-associated-control
+ React.createElement("label", {
+ className: "".concat(COMPONENT_NAME, "__checkbox"),
+ htmlFor: uniqueKey
+ }, React.createElement(Checkbox, {
+ id: uniqueKey,
+ checked: checked,
+ onChange: function onChange(event) {
+ return _onChange(event);
+ }
+ })), user.role === 'operator' && React.createElement(Label, {
+ className: "".concat(COMPONENT_NAME, "__operator"),
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, "Operator"), action && React.createElement("div", {
+ ref: actionRef,
+ className: "".concat(COMPONENT_NAME, "__action")
+ }, action({
+ actionRef: actionRef,
+ parentRef: parentRef
+ })));
+}
+UserListItem.propTypes = {
+ user: PropTypes.shape({
+ userId: PropTypes.string,
+ role: PropTypes.string,
+ isMuted: PropTypes.bool,
+ nickname: PropTypes.string,
+ profileUrl: PropTypes.string
+ }).isRequired,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ disableMessaging: PropTypes.bool,
+ currentUser: PropTypes.string,
+ action: PropTypes.element,
+ checkBox: PropTypes.bool,
+ checked: PropTypes.bool,
+ onChange: PropTypes.func
+};
+UserListItem.defaultProps = {
+ className: '',
+ currentUser: '',
+ checkBox: false,
+ disableMessaging: false,
+ checked: false,
+ action: null,
+ onChange: function onChange() {}
+};
+
+export { InputLabel as I, MutedAvatarOverlay as M, UserListItem as U, Input as a };
+//# sourceMappingURL=index-aa89d60a.js.map
diff --git a/dist/esm/index-aa89d60a.js.map b/dist/esm/index-aa89d60a.js.map
new file mode 100644
index 0000000..3fb0acf
--- /dev/null
+++ b/dist/esm/index-aa89d60a.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index-aa89d60a.js","sources":["../../../src/ui/Input/index.jsx","../../../src/ui/Avatar/MutedAvatarOverlay.tsx","../../../src/ui/Checkbox/index.jsx","../../../src/ui/UserListItem/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport './index.scss';\n\nexport const InputLabel = ({ children }) => (\n \n {children}\n \n);\n\nInputLabel.propTypes = {\n children: PropTypes.string.isRequired,\n};\n\n// future: add validations? onChange? more props etc etc\nconst Input = React.forwardRef((props, ref) => {\n const {\n value,\n placeHolder,\n disabled,\n name,\n required,\n } = props;\n const [inputValue, setInputValue] = useState(value);\n return (\n \n {\n setInputValue(e.target.value);\n }}\n />\n {(placeHolder && !inputValue) && (\n \n {placeHolder}\n \n )}\n
\n );\n});\n\nInput.propTypes = {\n value: PropTypes.string,\n placeHolder: PropTypes.string,\n name: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n};\n\nInput.defaultProps = {\n value: '',\n placeHolder: '',\n disabled: false,\n required: false,\n};\n\nexport default Input;\n","import './muted-avatar-overlay.scss';\n\nimport React, { ReactElement } from 'react'\nimport Icon, { IconTypes, IconColors } from '../Icon';\n\ninterface Props {\n height?: number;\n width?: number;\n}\n\nexport default function MutedAvatarOverlay(props: Props): ReactElement {\n const { height = 24, width = 24 } = props;\n return (\n \n );\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nexport default function Checkbox({\n id,\n checked,\n onChange,\n}) {\n const [isChecked, setCheck] = useState(checked);\n return (\n \n setCheck(!isChecked)}\n onChange={onChange}\n />\n \n \n );\n}\n\nCheckbox.propTypes = {\n id: PropTypes.string,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\nCheckbox.defaultProps = {\n id: 'sendbird-checkbox-input',\n checked: false,\n onChange: () => { },\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Avatar from '../Avatar/index';\nimport MutedAvatarOverlay from '../Avatar/MutedAvatarOverlay';\nimport Checkbox from '../Checkbox';\nimport UserProfile from '../UserProfile';\nimport ContextMenu, { MenuItems } from '../ContextMenu';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport './index.scss';\n\nconst COMPONENT_NAME = 'sendbird-user-list-item';\n\nexport default function UserListItem({\n user,\n className,\n checkBox,\n disableMessaging = false,\n currentUser,\n checked,\n onChange,\n action,\n}) {\n const injectingClassNames = Array.isArray(className) ? className : [className];\n const uniqueKey = user.userId;\n const actionRef = React.useRef(null);\n const parentRef = React.useRef(null);\n const avatarRef = React.useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n {\n user.isMuted && (\n
\n )\n }\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n className={`${COMPONENT_NAME}__avatar`}\n src={user.profileUrl}\n width=\"40px\"\n height=\"40px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n {user.nickname || stringSet.NO_NAME}\n {\n (currentUser === user.userId) && (\n ' (You)'\n )\n }\n \n { // if there is now nickname, display userId\n !user.nickname && (\n \n {user.userId}\n \n )\n }\n {\n checkBox && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n \n onChange(event)}\n />\n \n )\n }\n {\n user.role === 'operator' && (\n \n Operator\n \n )\n }\n {\n action && (\n \n { action({ actionRef, parentRef }) }\n
\n )\n }\n \n );\n}\n\nUserListItem.propTypes = {\n user: PropTypes.shape({\n userId: PropTypes.string,\n role: PropTypes.string,\n isMuted: PropTypes.bool,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n }).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n disableMessaging: PropTypes.bool,\n currentUser: PropTypes.string,\n action: PropTypes.element,\n checkBox: PropTypes.bool,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\n\nUserListItem.defaultProps = {\n className: '',\n currentUser: '',\n checkBox: false,\n disableMessaging: false,\n checked: false,\n action: null,\n onChange: () => { },\n};\n"],"names":["InputLabel","children","LabelTypography","CAPTION_3","LabelColors","ONBACKGROUND_1","propTypes","PropTypes","string","isRequired","Input","React","forwardRef","props","ref","value","placeHolder","disabled","name","required","useState","inputValue","setInputValue","e","target","BODY_1","ONBACKGROUND_3","bool","defaultProps","MutedAvatarOverlay","_a","height","_b","width","IconColors","WHITE","IconTypes","ICON_MUTED","Checkbox","id","checked","onChange","isChecked","setCheck","func","COMPONENT_NAME","UserListItem","user","className","checkBox","disableMessaging","currentUser","action","injectingClassNames","Array","isArray","uniqueKey","userId","actionRef","useRef","parentRef","avatarRef","useContext","UserProfileContext","disableUserProfile","renderUserProfile","LocalizationContext","stringSet","join","isMuted","toggleDropdown","profileUrl","closeDropdown","paddingTop","paddingBottom","currentUserId","close","SUBTITLE_1","nickname","NO_NAME","ONBACKGROUND_2","event","role","SUBTITLE_2","shape","oneOfType","arrayOf","element"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/esm/index-aebda3d2.js b/dist/esm/index-aebda3d2.js
new file mode 100644
index 0000000..d3c7c98
--- /dev/null
+++ b/dist/esm/index-aebda3d2.js
@@ -0,0 +1,43 @@
+import React, { useMemo } from 'react';
+import { I as Icon, a as IconTypes, A as Avatar } from './index-ec3bf9fe.js';
+import { u as useDefaultAvatar, g as getChannelAvatarSource } from './utils-53ba1773.js';
+
+function ChannelAvatar(_a) {
+ var channel = _a.channel,
+ userId = _a.userId,
+ theme = _a.theme,
+ _b = _a.height,
+ height = _b === void 0 ? 56 : _b,
+ _c = _a.width,
+ width = _c === void 0 ? 56 : _c;
+ var isBroadcast = channel.isBroadcast;
+ var memoizedAvatar = useMemo(function () {
+ return isBroadcast ? useDefaultAvatar(channel) ? theme === 'dark' ? React.createElement(Icon, {
+ type: IconTypes.BROADCAST_LARGE_DARK,
+ width: width,
+ height: height,
+ className: "sendbird-chat-header__default--broadcast-channel-dark"
+ }) : React.createElement(Icon, {
+ type: IconTypes.BROADCAST_LARGE_LIGHT,
+ width: width,
+ height: height,
+ className: "sendbird-chat-header__default--broadcast-channel-light"
+ }) : React.createElement(Avatar, {
+ className: "sendbird-chat-header__avatar--broadcast-channel",
+ src: getChannelAvatarSource(channel, userId),
+ width: width,
+ height: height,
+ alt: channel.name
+ }) : React.createElement(Avatar, {
+ className: "sendbird-chat-header__avatar--group-channel",
+ src: getChannelAvatarSource(channel, userId),
+ width: width + "px",
+ height: height + "px",
+ alt: channel.name
+ });
+ }, [channel.members, channel.coverUrl, theme]);
+ return React.createElement(React.Fragment, null, memoizedAvatar);
+}
+
+export { ChannelAvatar as C };
+//# sourceMappingURL=index-aebda3d2.js.map
diff --git a/dist/esm/index-aebda3d2.js.map b/dist/esm/index-aebda3d2.js.map
new file mode 100644
index 0000000..502669d
--- /dev/null
+++ b/dist/esm/index-aebda3d2.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index-aebda3d2.js","sources":["../../../src/ui/ChannelAvatar/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\n\nimport Avatar from '../Avatar/index';\nimport Icon, { IconTypes } from '../Icon';\n\nimport * as utils from './utils';\n\ninterface Props {\n channel: SendBird.GroupChannel;\n userId: string;\n theme: string;\n height?: number,\n width?: number,\n}\n\nfunction ChannelAvatar({\n channel,\n userId,\n theme,\n height = 56,\n width = 56,\n}: Props): JSX.Element{\n const { isBroadcast } = channel;\n const memoizedAvatar = useMemo(() => (\n isBroadcast\n ? (\n utils.useDefaultAvatar(channel)\n ? (\n theme === 'dark'\n ? (\n \n )\n : (\n \n )\n )\n : (\n \n )\n )\n : (\n \n )\n ),[channel.members, channel.coverUrl, theme]);\n return (\n <>{ memoizedAvatar }>\n );\n}\n\nexport default ChannelAvatar;\n"],"names":["ChannelAvatar","_a","channel","userId","theme","_b","height","_c","width","isBroadcast","memoizedAvatar","useMemo","utils","IconTypes","BROADCAST_LARGE_DARK","BROADCAST_LARGE_LIGHT","name","members","coverUrl"],"mappings":";;;;AAeA,SAASA,aAAT,CAAuBC,EAAvB;MACEC,OAAO;MACPC,MAAM;MACNC,KAAK;MACLC;MAAAC,MAAM,mBAAG;MACTC;MAAAC,KAAK,mBAAG;AAEA,MAAAC,WAAW,GAAKP,OAAO,YAAvB;AACR,MAAMQ,cAAc,GAAGC,OAAO,CAAC;AAAM,WACnCF,WAAW,GAEPG,gBAAA,CAAuBV,OAAvB,IAEIE,KAAK,KAAK,MAAV,GAEI,oBAAC,IAAD;AACE,MAAA,IAAI,EAAES,SAAS,CAACC,oBADlB;AAEE,MAAA,KAAK,EAAEN,KAFT;AAGE,MAAA,MAAM,EAAEF,MAHV;AAIE,MAAA,SAAS,EAAC;AAJZ,MAFJ,GAUI,oBAAC,IAAD;AACE,MAAA,IAAI,EAAEO,SAAS,CAACE,qBADlB;AAEE,MAAA,KAAK,EAAEP,KAFT;AAGE,MAAA,MAAM,EAAEF,MAHV;AAIE,MAAA,SAAS,EAAC;AAJZ,MAZR,GAqBI,oBAAC,MAAD;AACE,MAAA,SAAS,EAAC,iDADZ;AAEE,MAAA,GAAG,EAAEM,sBAAA,CAA6BV,OAA7B,EAAsCC,MAAtC,CAFP;AAGE,MAAA,KAAK,EAAEK,KAHT;AAIE,MAAA,MAAM,EAAEF,MAJV;AAKE,MAAA,GAAG,EAAEJ,OAAO,CAACc;AALf,MAvBG,GAiCP,oBAAC,MAAD;AACE,MAAA,SAAS,EAAC,6CADZ;AAEE,MAAA,GAAG,EAAEJ,sBAAA,CAA6BV,OAA7B,EAAsCC,MAAtC,CAFP;AAGE,MAAA,KAAK,EAAKK,KAAK,OAHjB;AAIE,MAAA,MAAM,EAAKF,MAAM,OAJnB;AAKE,MAAA,GAAG,EAAEJ,OAAO,CAACc;AALf,MAlC+B;AA0CpC,GA1C6B,EA0C5B,CAACd,OAAO,CAACe,OAAT,EAAkBf,OAAO,CAACgB,QAA1B,EAAoCd,KAApC,CA1C4B,CAA9B;AA2CA,SACE,0CAAIM,cAAJ,CADF;AAGD;;;;"}
\ No newline at end of file
diff --git a/dist/esm/index-ec3bf9fe.js b/dist/esm/index-ec3bf9fe.js
new file mode 100644
index 0000000..386d38a
--- /dev/null
+++ b/dist/esm/index-ec3bf9fe.js
@@ -0,0 +1,3618 @@
+import { b as _slicedToArray, c as _toConsumableArray, d as __spreadArrays, u as uuidv4, g as getStringSet, a as _objectSpread2, e as LocalizationContext, w as withSendbirdContext, f as _inherits, h as _createClass, i as _classCallCheck, j as _possibleConstructorReturn, k as _getPrototypeOf, l as _defineProperty, m as _assertThisInitialized } from './LocalizationContext-619bafba.js';
+import React, { useState, useEffect, useContext, Component } from 'react';
+import PropTypes from 'prop-types';
+import { createPortal } from 'react-dom';
+
+var UserProfileContext = React.createContext({
+ disableUserProfile: true,
+ isOpenChannel: false,
+ renderUserProfile: null
+});
+
+var UserProfileProvider = function UserProfileProvider(props) {
+ var children = props.children,
+ className = props.className;
+ return React.createElement(UserProfileContext.Provider, {
+ value: props
+ }, React.createElement("div", {
+ className: className
+ }, children));
+};
+
+UserProfileProvider.propTypes = {
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
+ // eslint-disable-next-line react/no-unused-prop-types
+ isOpenChannel: PropTypes.bool,
+ // eslint-disable-next-line react/no-unused-prop-types
+ disableUserProfile: PropTypes.bool,
+ // eslint-disable-next-line react/no-unused-prop-types
+ renderUserProfile: PropTypes.func,
+ className: PropTypes.string
+};
+UserProfileProvider.defaultProps = {
+ className: null,
+ isOpenChannel: false,
+ disableUserProfile: false,
+ renderUserProfile: null
+};
+
+/*
+ ImageRenderer displays image with url or source
+ it checks if the source exist with img tag first
+ if it exists onLoad is called, if not onError is called
+ and those properties switch img tag to real purposing element
+*/
+
+function ImageRenderer(_ref) {
+ var alt = _ref.alt,
+ url = _ref.url,
+ width = _ref.width,
+ height = _ref.height,
+ className = _ref.className,
+ defaultComponent = _ref.defaultComponent,
+ circle = _ref.circle;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift('sendbird-image-renderer');
+
+ var _useState = useState(null),
+ _useState2 = _slicedToArray(_useState, 2),
+ realElement = _useState2[0],
+ setRealElement = _useState2[1];
+
+ useEffect(function () {
+ setRealElement(null);
+ }, [url]);
+ return realElement || React.createElement("img", {
+ className: "sendbird-image-renderer--hidden-placeholder ".concat(injectingClassName.join(' ')),
+ src: url,
+ alt: alt,
+ onError: function onError() {
+ setRealElement(typeof defaultComponent === 'function' ? defaultComponent() : defaultComponent);
+ },
+ onLoad: function onLoad() {
+ setRealElement(React.createElement("div", {
+ className: injectingClassName.join(' '),
+ style: {
+ width: width,
+ height: height,
+ backgroundRepeat: 'no-repeat',
+ backgroundPosition: 'center',
+ backgroundSize: 'cover',
+ backgroundImage: "url(".concat(url, ")"),
+ borderRadius: circle ? '50%' : null
+ }
+ }));
+ }
+ });
+}
+ImageRenderer.propTypes = {
+ alt: PropTypes.string,
+ url: PropTypes.string.isRequired,
+ width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ className: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),
+ defaultComponent: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ circle: PropTypes.bool
+};
+ImageRenderer.defaultProps = {
+ alt: '',
+ className: '',
+ circle: false,
+ defaultComponent: null,
+ width: null,
+ height: null
+};
+
+var Type = {
+ ADD: 'ADD',
+ ATTACH: 'ATTACH',
+ ARROW_LEFT: 'ARROW_LEFT',
+ AVATAR_DARK: 'AVATAR_DARK',
+ AVATAR_LIGHT: 'AVATAR_LIGHT',
+ AVATAR_NO_IMAGE: 'AVATAR_NO_IMAGE',
+ BROADCAST_LARGE_DARK: 'BROADCAST_LARGE_DARK',
+ BROADCAST_LARGE_LIGHT: 'BROADCAST_LARGE_LIGHT',
+ BROADCAST_DARK: 'BROADCAST_DARK',
+ BROADCAST_LIGHT: 'BROADCAST_LIGHT',
+ BROADCAST: 'BROADCAST',
+ FROZEN_DARK: 'FROZEN_DARK',
+ FROZEN_LIGHT: 'FROZEN_LIGHT',
+ CAMERA: 'CAMERA',
+ MORE: 'MORE',
+ MUTE: 'MUTE',
+ NO_THUMBNAIL: 'NO_THUMBNAIL',
+ CHECKBOX: 'CHECKBOX',
+ CHECKBOX_OFF: 'CHECKBOX_OFF',
+ CLOSE: 'CLOSE',
+ COPY: 'COPY',
+ CHAT: 'CHAT',
+ CREATE: 'CREATE',
+ DELETE: 'DELETE',
+ DISCONNECTED: 'DISCONNECTED',
+ DUMMY: 'DUMMY',
+ EDIT: 'EDIT',
+ ERROR: 'ERROR',
+ ERROR_FILLED: 'ERROR_FILLED',
+ EMOJI_FAILED: 'EMOJI_FAILED',
+ EMOJI_REACTIONS_ADD: 'EMOJI_REACTIONS_ADD',
+ EMOJI_REACTIONS_ADD_GRAY: 'EMOJI_REACTIONS_ADD_GRAY',
+ DELIVERED: 'DELIVERED',
+ DOCUMENT: 'DOCUMENT',
+ DOWNLOAD: 'DOWNLOAD',
+ FILE_AUDIO: 'FILE_AUDIO',
+ FILE_DOCUMENT: 'FILE_DOCUMENT',
+ GIF: 'GIF',
+ INFO: 'INFO',
+ LEAVE: 'LEAVE',
+ MEMBERS: 'MEMBERS',
+ NOTIFICATIONS: 'NOTIFICATIONS',
+ PHOTO: 'PHOTO',
+ PLAY: 'PLAY',
+ PLUS: 'PLUS',
+ READ: 'READ',
+ REFRESH: 'REFRESH',
+ SEND: 'SEND',
+ SENT: 'SENT',
+ SUPER_GROUP: 'SUPER_GROUP',
+ SHEVRON: 'SHEVRON',
+ SHEVRON_DOWN: 'SHEVRON_DOWN',
+ SPINNER: 'SPINNER',
+ SPINNER_LARGE: 'SPINNER_LARGE',
+ USER: 'USER',
+ ICON_OPERATOR: 'ICON_OPERATOR',
+ ICON_BANNED: 'ICON_BANNED',
+ ICON_FREEZE: 'ICON_FREEZE',
+ ICON_MUTED: 'ICON_MUTED',
+ ICON_MUTED_FG: 'ICON_MUTED_FG',
+ TOGGLE_ON: 'TOGGLE_ON',
+ TOGGLE_OFF: 'TOGGLE_OFF'
+};
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+var _ref =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-add_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M19 2a3 3 0 013 3v14a3 3 0 01-3 3H5a3 3 0 01-3-3V5a3 3 0 013-3zm0 2H5a1 1 0 00-1 1v14a1 1 0 001 1h14a1 1 0 001-1V5a1 1 0 00-1-1zm-7 3a1 1 0 01.993.883L13 8v3h3a1 1 0 01.117 1.993L16 13h-3v3a1 1 0 01-1.993.117L11 16v-3H8a1 1 0 01-.117-1.993L8 11h3V8a1 1 0 011-1z"
+});
+
+function SvgIconAdd(props) {
+ return React.createElement("svg", _extends({
+ viewBox: "0 0 24 24"
+ }, props), _ref);
+}
+
+function _extends$1() { _extends$1 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }
+
+var _ref$1 =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-attach_svg__fill",
+ fillOpacity: 0.88,
+ fillRule: "evenodd",
+ d: "M19.021 9.943l-8.424 8.023c-1.795 1.71-4.723 1.71-6.518 0-1.77-1.685-1.77-4.398 0-6.084l8.424-8.023c1.079-1.027 2.845-1.027 3.924 0a2.461 2.461 0 010 3.614l-8.433 8.022a.984.984 0 01-1.33 0 .772.772 0 010-1.142l7.782-7.403a.917.917 0 00-1.264-1.328L5.4 13.025a2.605 2.605 0 000 3.798 2.816 2.816 0 003.858 0l8.433-8.022a4.294 4.294 0 000-6.27C15.905.83 13.025.83 11.24 2.531l-8.425 8.023c-2.528 2.408-2.528 6.332 0 8.74 2.504 2.384 6.544 2.384 9.047 0l8.425-8.023a.917.917 0 10-1.265-1.328z"
+});
+
+function SvgIconAttach(props) {
+ return React.createElement("svg", _extends$1({
+ viewBox: "0 0 22 22"
+ }, props), _ref$1);
+}
+
+function _extends$2() { _extends$2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$2.apply(this, arguments); }
+
+var _ref$2 =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-arrow-left_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12.707 3.293a1 1 0 01.083 1.32l-.083.094L6.415 11H21a1 1 0 01.117 1.993L21 13H6.415l6.292 6.293a1 1 0 01.083 1.32l-.083.094a1 1 0 01-1.32.083l-.094-.083-8-8a1 1 0 01-.083-1.32l.083-.094 8-8a1 1 0 011.414 0z"
+});
+
+function SvgIconArrowLeft(props) {
+ return React.createElement("svg", _extends$2({
+ viewBox: "0 0 24 24"
+ }, props), _ref$2);
+}
+
+function _extends$3() { _extends$3 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3.apply(this, arguments); }
+
+var _ref$3 =
+/*#__PURE__*/
+React.createElement("path", {
+ fill: "#393939",
+ d: "M0 0h56v56H0z"
+});
+
+var _ref2 =
+/*#__PURE__*/
+React.createElement("path", {
+ fillOpacity: 0.88,
+ d: "M34.667 31.333a8.334 8.334 0 018.325 7.972l.008.362V43a1.667 1.667 0 01-3.322.194L39.667 43v-3.333a5 5 0 00-4.707-4.992l-.293-.008H21.333a5 5 0 00-4.991 4.706l-.009.294V43a1.667 1.667 0 01-3.322.194L13 43v-3.333a8.333 8.333 0 017.972-8.326l.361-.008h13.334zm-6.667-20A8.333 8.333 0 1128 28a8.333 8.333 0 010-16.667zm0 3.334a5 5 0 100 10 5 5 0 000-10z"
+});
+
+function SvgIconAvatarDark(props) {
+ return React.createElement("svg", _extends$3({
+ viewBox: "0 0 56 56"
+ }, props), _ref$3, _ref2);
+}
+
+function _extends$4() { _extends$4 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$4.apply(this, arguments); }
+
+var _ref$4 =
+/*#__PURE__*/
+React.createElement("path", {
+ fill: "#A8A8A8",
+ d: "M0 0h56v56H0z"
+});
+
+var _ref2$1 =
+/*#__PURE__*/
+React.createElement("path", {
+ fill: "#FFF",
+ fillOpacity: 0.88,
+ d: "M34.667 31.333a8.334 8.334 0 018.325 7.972l.008.362V43a1.667 1.667 0 01-3.322.194L39.667 43v-3.333a5 5 0 00-4.707-4.992l-.293-.008H21.333a5 5 0 00-4.991 4.706l-.009.294V43a1.667 1.667 0 01-3.322.194L13 43v-3.333a8.333 8.333 0 017.972-8.326l.361-.008h13.334zm-6.667-20A8.333 8.333 0 1128 28a8.333 8.333 0 010-16.667zm0 3.334a5 5 0 100 10 5 5 0 000-10z"
+});
+
+function SvgIconAvatarLight(props) {
+ return React.createElement("svg", _extends$4({
+ viewBox: "0 0 56 56"
+ }, props), _ref$4, _ref2$1);
+}
+
+function _extends$5() { _extends$5 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$5.apply(this, arguments); }
+
+var _ref$5 =
+/*#__PURE__*/
+React.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("circle", {
+ cx: 16,
+ cy: 16,
+ r: 16,
+ className: "avatar-no-image-light_svg__fill"
+}), React.createElement("path", {
+ d: "M19.043 8.381l.089.004a.762.762 0 01.677.753l-.004.089-.415 3.725h2.705a.762.762 0 01.089 1.519l-.089.005H19.22l-.338 3.048h3.213a.762.762 0 01.089 1.518l-.089.005h-3.382l-.432 3.894a.762.762 0 01-1.519-.079l.004-.09.414-3.725h-3.038l-.433 3.894a.76.76 0 01-1.519-.079l.005-.09.414-3.725H9.905a.76.76 0 01-.089-1.518l.089-.005h2.872l.339-3.048H9.905a.762.762 0 01-.089-1.519l.089-.005h3.381l.433-3.893a.76.76 0 01.752-.678l.09.004a.763.763 0 01.677.753l-.005.089-.414 3.725h3.038l.433-3.893a.762.762 0 01.753-.678zm-1.694 9.143l.34-3.048h-3.04l-.338 3.048h3.038z",
+ fill: "#FFF",
+ fillOpacity: 0.88
+}));
+
+function SvgAvatarNoImageLight(props) {
+ return React.createElement("svg", _extends$5({
+ viewBox: "0 0 32 32"
+ }, props), _ref$5);
+}
+
+function _extends$6() { _extends$6 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$6.apply(this, arguments); }
+
+var _ref$6 =
+/*#__PURE__*/
+React.createElement("g", {
+ className: "icon-broadcast-lrg-dark_svg__fill",
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("circle", {
+ cx: 28,
+ cy: 28,
+ r: 28,
+ fill: "#6FD6BE"
+}), React.createElement("path", {
+ fill: "#000",
+ fillOpacity: 0.88,
+ d: "M41.273 16.083c.04.128.06.262.06.397v23.04a1.333 1.333 0 01-1.731 1.273l-8.975-2.805A5.335 5.335 0 0120 37.333v-2.666h-2.667a4 4 0 01-3.995-3.8l-.005-.2v-5.334a4 4 0 014-4H20l19.602-6.125a1.332 1.332 0 011.67.875zM22.667 35.627v1.706a2.667 2.667 0 005.326.199l.007-.239-5.333-1.666zm16-17.334l-16 4.999v9.415l16 4.998V18.293zM20 24h-2.667c-.683 0-1.247.515-1.324 1.178l-.009.155v5.334c0 .736.597 1.333 1.333 1.333H20v-8z"
+}));
+
+function SvgIconBroadcastLrgDark(props) {
+ return React.createElement("svg", _extends$6({
+ viewBox: "0 0 56 56"
+ }, props), _ref$6);
+}
+
+function _extends$7() { _extends$7 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$7.apply(this, arguments); }
+
+var _ref$7 =
+/*#__PURE__*/
+React.createElement("g", {
+ className: "icon-broadcast-lrg-light_svg__fill",
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("circle", {
+ cx: 28,
+ cy: 28,
+ r: 28,
+ fill: "#2EBA9F"
+}), React.createElement("path", {
+ fill: "#FFF",
+ fillOpacity: 0.88,
+ d: "M41.273 16.083c.04.128.06.262.06.397v23.04a1.333 1.333 0 01-1.731 1.273l-8.975-2.805A5.335 5.335 0 0120 37.333v-2.666h-2.667a4 4 0 01-3.995-3.8l-.005-.2v-5.334a4 4 0 014-4H20l19.602-6.125a1.332 1.332 0 011.67.875zM22.667 35.627v1.706a2.667 2.667 0 005.326.199l.007-.239-5.333-1.666zm16-17.334l-16 4.999v9.415l16 4.998V18.293zM20 24h-2.667c-.683 0-1.247.515-1.324 1.178l-.009.155v5.334c0 .736.597 1.333 1.333 1.333H20v-8z"
+}));
+
+function SvgIconBroadcastLrgLight(props) {
+ return React.createElement("svg", _extends$7({
+ viewBox: "0 0 56 56"
+ }, props), _ref$7);
+}
+
+function _extends$8() { _extends$8 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$8.apply(this, arguments); }
+
+var _ref$8 =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-broadcast-dark_svg__fill",
+ fill: "#6FD6BE",
+ fillRule: "evenodd",
+ d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
+});
+
+function SvgIconBroadcastDark(props) {
+ return React.createElement("svg", _extends$8({
+ viewBox: "0 0 16 16"
+ }, props), _ref$8);
+}
+
+function _extends$9() { _extends$9 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$9.apply(this, arguments); }
+
+var _ref$9 =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-broadcast-light_svg__fill",
+ fill: "#2EBA9F",
+ fillRule: "evenodd",
+ d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
+});
+
+function SvgIconBroadcastLight(props) {
+ return React.createElement("svg", _extends$9({
+ viewBox: "0 0 16 16"
+ }, props), _ref$9);
+}
+
+function _extends$a() { _extends$a = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$a.apply(this, arguments); }
+
+var _ref$a =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-broadcast_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
+});
+
+function SvgIconBroadcast(props) {
+ return React.createElement("svg", _extends$a({
+ viewBox: "0 0 16 16"
+ }, props), _ref$a);
+}
+
+function _extends$b() { _extends$b = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$b.apply(this, arguments); }
+
+var _ref$b =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "frozen-dark_svg__fill",
+ fill: "#9E8CF5",
+ fillRule: "evenodd",
+ d: "M10.409.806l.063.056c.24.24.259.618.055.88l-.055.063-1.805 1.804v3.236l2.801-1.618.662-2.465a.665.665 0 011.304.263l-.016.082-.56 2.088 2.088.56a.665.665 0 01.488.734l-.016.082a.666.666 0 01-.735.488l-.082-.016-2.465-.661L9.334 8l2.801 1.618 2.466-.66.082-.017a.667.667 0 01.735.488l.016.082a.666.666 0 01-.488.734l-2.088.56.56 2.088.016.082a.666.666 0 01-1.304.263l-.662-2.465-2.801-1.618v3.236l1.805 1.804a.668.668 0 01-.88.999l-.063-.056L8 13.61l-1.528 1.53a.668.668 0 01-.88.055l-.063-.056a.668.668 0 01-.056-.88l.056-.063 1.804-1.805V9.155L4.53 10.773l-.66 2.465a.667.667 0 01-1.304-.263l.017-.082.559-2.088-2.088-.56a.667.667 0 01-.488-.734l.017-.082a.665.665 0 01.734-.488l.082.016 2.466.66L6.666 8 3.864 6.382l-2.465.66-.082.017a.666.666 0 01-.734-.488L.566 6.49a.667.667 0 01.488-.734l2.088-.56-.56-2.088-.016-.082a.667.667 0 011.305-.263l.659 2.465 2.803 1.618V3.61L5.529 1.805a.668.668 0 01.88-.999l.063.056L8 2.39 9.53.862a.668.668 0 01.88-.056z"
+});
+
+function SvgFrozenDark(props) {
+ return React.createElement("svg", _extends$b({
+ viewBox: "0 0 16 16"
+ }, props), _ref$b);
+}
+
+function _extends$c() { _extends$c = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$c.apply(this, arguments); }
+
+var _ref$c =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "frozen-light_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M10.409.806l.063.056c.24.24.259.618.055.88l-.055.063-1.805 1.804v3.236l2.801-1.618.662-2.465a.665.665 0 011.304.263l-.016.082-.56 2.088 2.088.56a.665.665 0 01.488.734l-.016.082a.666.666 0 01-.735.488l-.082-.016-2.465-.661L9.334 8l2.801 1.618 2.466-.66.082-.017a.667.667 0 01.735.488l.016.082a.666.666 0 01-.488.734l-2.088.56.56 2.088.016.082a.666.666 0 01-1.304.263l-.662-2.465-2.801-1.618v3.236l1.805 1.804a.668.668 0 01-.88.999l-.063-.056L8 13.61l-1.528 1.53a.668.668 0 01-.88.055l-.063-.056a.668.668 0 01-.056-.88l.056-.063 1.804-1.805V9.155L4.53 10.773l-.66 2.465a.667.667 0 01-1.304-.263l.017-.082.559-2.088-2.088-.56a.667.667 0 01-.488-.734l.017-.082a.665.665 0 01.734-.488l.082.016 2.466.66L6.666 8 3.864 6.382l-2.465.66-.082.017a.666.666 0 01-.734-.488L.566 6.49a.667.667 0 01.488-.734l2.088-.56-.56-2.088-.016-.082a.667.667 0 011.305-.263l.659 2.465 2.803 1.618V3.61L5.529 1.805a.668.668 0 01.88-.999l.063.056L8 2.39 9.53.862a.668.668 0 01.88-.056z"
+});
+
+function SvgFrozenLight(props) {
+ return React.createElement("svg", _extends$c({
+ viewBox: "0 0 16 16"
+ }, props), _ref$c);
+}
+
+function _extends$d() { _extends$d = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$d.apply(this, arguments); }
+
+var _ref$d =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-camera_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M15 2a1 1 0 01.832.445L17.535 5H21a3 3 0 012.995 2.824L24 8v11a3 3 0 01-3 3H3a3 3 0 01-3-3V8a3 3 0 013-3h3.464l1.704-2.555a1 1 0 01.708-.437L9 2zm-.536 2H9.535L7.832 6.555a1 1 0 01-.708.437L7 7H3a1 1 0 00-1 1v11a1 1 0 001 1h18a1 1 0 001-1V8a1 1 0 00-1-1h-4a1 1 0 01-.832-.445L14.464 4zM12 8a5 5 0 110 10 5 5 0 010-10zm0 2a3 3 0 100 6 3 3 0 000-6z"
+});
+
+function SvgIconCamera(props) {
+ return React.createElement("svg", _extends$d({
+ viewBox: "0 0 24 24"
+ }, props), _ref$d);
+}
+
+function _extends$e() { _extends$e = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$e.apply(this, arguments); }
+
+var _ref$e =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-more_svg__fill",
+ fillRule: "evenodd",
+ d: "M12 17a2 2 0 110 4 2 2 0 010-4zm0-6.5a2 2 0 110 4 2 2 0 010-4zM12 4a2 2 0 110 4 2 2 0 010-4z"
+});
+
+function SvgIconMore(props) {
+ return React.createElement("svg", _extends$e({
+ viewBox: "0 0 24 24"
+ }, props), _ref$e);
+}
+
+function _extends$f() { _extends$f = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$f.apply(this, arguments); }
+
+var _ref$f =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-mute_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M15.125 20.09c0 .602-.694 2.41-2.778 2.41-1.389 0-2.315-.804-2.778-2.41zM12.789 1.606a6.496 6.496 0 015.388 2.861l2.464-2.463a.788.788 0 011.025-.077l.088.077a.788.788 0 010 1.113L3.378 21.494a.788.788 0 01-1.025.077l-.088-.077a.788.788 0 010-1.113l1.9-1.903-.04-.004a.387.387 0 01-.241-.596l1.557-2.295.001-.208a545.875 545.875 0 00-.028-6.563l-.008-.614a6.503 6.503 0 016.414-6.59h.969zm6.381 5.246c.08.407.122.827.122 1.257l-.001 7.53 1.52 2.238a.387.387 0 01-.32.604H7.54l3.214-3.214 8.415-8.415z"
+});
+
+function SvgIconMute(props) {
+ return React.createElement("svg", _extends$f({
+ viewBox: "0 0 24 24"
+ }, props), _ref$f);
+}
+
+function _extends$g() { _extends$g = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$g.apply(this, arguments); }
+
+var _ref$g =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-no-thumbnail_svg__fill",
+ fillOpacity: 0.5,
+ fillRule: "evenodd",
+ d: "M30.333 4.667a2.333 2.333 0 110 4.666H11.667a2.334 2.334 0 00-2.334 2.334v32.666c0 1.001.63 1.855 1.516 2.186l24.834-24.836a2.336 2.336 0 013.3 0l7.684 7.683v-3.7c0-1.234.96-2.245 2.173-2.327l.16-.006a2.333 2.333 0 012.333 2.334v18.666a7 7 0 01-7 7H11.665a6.999 6.999 0 01-6.998-7V11.667a7 7 0 017-7zm7 21.966L17.3 46.666h27.034a2.333 2.333 0 002.328-2.173l.006-.16v-8.367l-9.334-9.333zM19.833 14a5.834 5.834 0 110 11.668 5.834 5.834 0 010-11.668zm0 4.667a1.166 1.166 0 100 2.332 1.166 1.166 0 000-2.332zm29.85-15.65a2.334 2.334 0 013.3 3.3L48.8 10.499l4.184 4.184c.87.87.91 2.256.119 3.173l-.119.127a2.334 2.334 0 01-3.3 0L45.5 13.8l-4.183 4.184c-.87.87-2.256.91-3.173.119l-.127-.119a2.334 2.334 0 010-3.3L42.2 10.5l-4.183-4.182a2.334 2.334 0 01-.119-3.173l.119-.127a2.334 2.334 0 013.3 0L45.5 7.2z"
+});
+
+function SvgIconNoThumbnail(props) {
+ return React.createElement("svg", _extends$g({
+ viewBox: "0 0 56 56"
+ }, props), _ref$g);
+}
+
+function _extends$h() { _extends$h = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$h.apply(this, arguments); }
+
+var _ref$h =
+/*#__PURE__*/
+React.createElement("g", {
+ className: "icon-checkbox_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd"
+}, React.createElement("path", {
+ d: "M18 1H6a5 5 0 00-5 5v12a5 5 0 005 5h12a5 5 0 005-5V6a5 5 0 00-5-5zm0 2a3 3 0 013 3v12a3 3 0 01-3 3H6a3 3 0 01-3-3V6a3 3 0 013-3h12z"
+}), React.createElement("path", {
+ d: "M19 3H5a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V5a2 2 0 00-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
+}));
+
+function SvgIconCheckbox(props) {
+ return React.createElement("svg", _extends$h({
+ viewBox: "0 0 24 24"
+ }, props), _ref$h);
+}
+
+function _extends$i() { _extends$i = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$i.apply(this, arguments); }
+
+var _ref$i =
+/*#__PURE__*/
+React.createElement("g", {
+ className: "icon-checkbox-off_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd"
+}, React.createElement("path", {
+ d: "M18 1H6a5 5 0 00-5 5v12a5 5 0 005 5h12a5 5 0 005-5V6a5 5 0 00-5-5zm0 2a3 3 0 013 3v12a3 3 0 01-3 3H6a3 3 0 01-3-3V6a3 3 0 013-3h12z"
+}), React.createElement("path", {
+ d: "M19 19H5V5h14v14zm0-16H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
+}));
+
+function SvgIconCheckboxOff(props) {
+ return React.createElement("svg", _extends$i({
+ viewBox: "0 0 24 24"
+ }, props), _ref$i);
+}
+
+function _extends$j() { _extends$j = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$j.apply(this, arguments); }
+
+var _ref$j =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-close_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M6.613 5.21l.094.083L12 10.585l5.293-5.292a1 1 0 011.497 1.32l-.083.094L13.415 12l5.292 5.293a1 1 0 01-1.32 1.497l-.094-.083L12 13.415l-5.293 5.292a1 1 0 01-1.497-1.32l.083-.094L10.585 12 5.293 6.707a1 1 0 011.32-1.497z"
+});
+
+function SvgIconClose(props) {
+ return React.createElement("svg", _extends$j({
+ viewBox: "0 0 24 24"
+ }, props), _ref$j);
+}
+
+function _extends$k() { _extends$k = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$k.apply(this, arguments); }
+
+var _ref$k =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-copy_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M20 8a3 3 0 013 3v9a3 3 0 01-3 3h-9a3 3 0 01-3-3v-9a3 3 0 013-3zm0 2h-9a1 1 0 00-1 1v9a1 1 0 001 1h9a1 1 0 001-1v-9a1 1 0 00-1-1zm-7-9a3 3 0 012.995 2.824L16 4v1a1 1 0 01-1.993.117L14 5V4a1 1 0 00-.883-.993L13 3H4a1 1 0 00-.993.883L3 4v9a1 1 0 00.883.993L4 14h1a1 1 0 01.117 1.993L5 16H4a3 3 0 01-2.995-2.824L1 13V4a3 3 0 012.824-2.995L4 1h9z"
+});
+
+function SvgIconCopy(props) {
+ return React.createElement("svg", _extends$k({
+ viewBox: "0 0 24 24"
+ }, props), _ref$k);
+}
+
+function _extends$l() { _extends$l = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$l.apply(this, arguments); }
+
+var _ref$l =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-chat_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11c-1.67 0-3.255-.373-4.673-1.039l-.657.218c-2.237.716-3.8.964-4.69.742-1.049-.261-1.256-.72-.62-1.373.439-.524.805-1.178 1.097-1.963.234-.625.142-1.5-.276-2.625A10.933 10.933 0 011 12C1 5.925 5.925 1 12 1zm0 2a9 9 0 00-8.187 12.742l.152.314.051.101.04.107c.569 1.532.709 2.859.275 4.02l-.143.365-.072.162.088-.019a23.181 23.181 0 001.832-.511l.646-.213.765-.26.73.343A8.962 8.962 0 0012 21a9 9 0 000-18z"
+});
+
+function SvgIconChat(props) {
+ return React.createElement("svg", _extends$l({
+ viewBox: "0 0 24 24"
+ }, props), _ref$l);
+}
+
+function _extends$m() { _extends$m = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$m.apply(this, arguments); }
+
+var _ref$m =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-supergroup_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M16.139 18.818c2.89 0 5.303 2.05 5.438 4.696l.006.235v1.626a1.166 1.166 0 01-2.326.136l-.007-.136v-1.626c0-1.343-1.255-2.501-2.903-2.592l-.208-.006H11.86c-1.679 0-3.001 1.105-3.105 2.431l-.006.167v1.626a1.166 1.166 0 01-2.325.136l-.008-.136v-1.626c0-2.68 2.329-4.806 5.19-4.926l.254-.005h4.278zm8.128-7.565c.116 0 .232.018.343.052 2.026.624 3.289 2.1 3.384 4.239l.006.26v5.6a1.166 1.166 0 01-2.325.136l-.008-.137v-5.599c-.001-1.135-.509-1.825-1.543-2.202l-.046-.016h-1.095c-.598 0-1.091-.45-1.158-1.03l-.008-.136c0-.598.45-1.092 1.03-1.159l.136-.008h1.284zm-19.25 0l.136.008c.58.067 1.03.56 1.03 1.159l-.008.136c-.067.58-.56 1.03-1.158 1.03H3.919l-.052.018c-.983.372-1.533 1.126-1.534 2.252v5.547l-.008.136A1.166 1.166 0 010 21.404v-5.548l.006-.259c.099-2.132 1.402-3.681 3.374-4.29.112-.035.228-.053.345-.053h1.292zM14 8.732c2.412 0 4.375 1.928 4.375 4.318 0 2.39-1.963 4.319-4.375 4.319S9.625 15.44 9.625 13.05c0-2.39 1.963-4.318 4.375-4.318zm0 2.333c-1.132 0-2.042.893-2.042 1.985s.91 1.986 2.042 1.986c1.132 0 2.042-.894 2.042-1.986s-.91-1.985-2.042-1.985zM7.583 1.167c2.412 0 4.375 1.929 4.375 4.318 0 2.39-1.963 4.32-4.375 4.32-2.411 0-4.375-1.93-4.375-4.32 0-2.39 1.964-4.318 4.375-4.318zm12.834 0c2.411 0 4.375 1.929 4.375 4.318 0 2.39-1.964 4.32-4.375 4.32-2.412 0-4.375-1.93-4.375-4.32 0-2.39 1.963-4.318 4.375-4.318zM7.583 3.5c-1.132 0-2.041.894-2.041 1.985 0 1.092.91 1.986 2.041 1.986 1.132 0 2.042-.894 2.042-1.986 0-1.091-.91-1.985-2.042-1.985zm12.834 0c-1.132 0-2.042.894-2.042 1.985 0 1.092.91 1.986 2.042 1.986 1.132 0 2.041-.894 2.041-1.986 0-1.091-.91-1.985-2.041-1.985z"
+});
+
+function SvgIconSupergroup(props) {
+ return React.createElement("svg", _extends$m({
+ viewBox: "0 0 28 28"
+ }, props), _ref$m);
+}
+
+function _extends$n() { _extends$n = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$n.apply(this, arguments); }
+
+var _ref$n =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-create_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11c-1.67 0-3.255-.373-4.673-1.039l-.657.218c-2.237.716-3.8.964-4.69.742-1.049-.261-1.256-.72-.62-1.373.439-.524.805-1.178 1.097-1.963.234-.625.142-1.5-.276-2.625A10.933 10.933 0 011 12C1 5.925 5.925 1 12 1zm0 2a9 9 0 00-8.187 12.742l.152.314.051.101.04.107c.569 1.532.709 2.859.275 4.02l-.143.365-.072.162.088-.019a23.181 23.181 0 001.832-.511l.646-.213.765-.26.73.343A8.962 8.962 0 0012 21a9 9 0 000-18zm1 6v2h2c1.333 0 1.333 2 0 2h-2v2c0 1.333-2 1.333-2 0v-2H9c-1.333 0-1.333-2 0-2h2V9c0-1.333 2-1.333 2 0z"
+});
+
+function SvgIconCreate(props) {
+ return React.createElement("svg", _extends$n({
+ viewBox: "0 0 24 24"
+ }, props), _ref$n);
+}
+
+function _extends$o() { _extends$o = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$o.apply(this, arguments); }
+
+var _ref$o =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-delete_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M14 1a3 3 0 012.995 2.824L17 4v1h4a1 1 0 01.117 1.993L21 7h-1v13a3 3 0 01-2.824 2.995L17 23H7a3 3 0 01-2.995-2.824L4 20V7H3a1 1 0 01-.117-1.993L3 5h4V4a3 3 0 012.824-2.995L10 1h4zm4 6H6v13a1 1 0 00.883.993L7 21h10a1 1 0 00.993-.883L18 20V7zm-8 3a1 1 0 01.993.883L11 11v6a1 1 0 01-1.993.117L9 17v-6a1 1 0 011-1zm4 0a1 1 0 01.993.883L15 11v6a1 1 0 01-1.993.117L13 17v-6a1 1 0 011-1zm0-7h-4a1 1 0 00-.993.883L9 4v1h6V4a1 1 0 00-.883-.993L14 3z"
+});
+
+function SvgIconDelete(props) {
+ return React.createElement("svg", _extends$o({
+ viewBox: "0 0 24 24"
+ }, props), _ref$o);
+}
+
+function _extends$p() { _extends$p = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$p.apply(this, arguments); }
+
+var _ref$p =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-dummy_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
+});
+
+function SvgIconDummy(props) {
+ return React.createElement("svg", _extends$p({
+ viewBox: "0 0 24 24"
+ }, props), _ref$p);
+}
+
+function _extends$q() { _extends$q = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$q.apply(this, arguments); }
+
+var _ref$q =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-edit_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M21.875 21.875a1.042 1.042 0 01.121 2.076l-.121.007H3.125a1.042 1.042 0 01-.121-2.076l.121-.007h18.75zM13.847 1.347a1.042 1.042 0 011.473 0l4.167 4.166a1.042 1.042 0 010 1.474L8.028 18.445c-.195.195-.46.305-.736.305H3.125a1.042 1.042 0 01-1.042-1.042v-4.166c0-.277.11-.542.305-.737zm.736 2.21L4.167 13.973v2.694h2.691L17.276 6.25l-2.693-2.693z"
+});
+
+function SvgIconEdit(props) {
+ return React.createElement("svg", _extends$q({
+ viewBox: "0 0 26 26"
+ }, props), _ref$q);
+}
+
+function _extends$r() { _extends$r = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$r.apply(this, arguments); }
+
+var _ref$r =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-error_svg__fill",
+ fill: "#E53157",
+ fillRule: "evenodd",
+ d: "M8 1.265c.655 0 1.266.32 1.64.856l.072.11 5.652 9.436c.355.615.357 1.373.006 1.99-.33.579-.925.953-1.59 1.004l-.133.006H2.346a2.001 2.001 0 01-1.772-2.883l.067-.127 5.649-9.43A2 2 0 018 1.266zm0 1.333a.669.669 0 00-.52.248l-.048.07-5.641 9.417a.669.669 0 00.477.994l.085.006H13.64a.664.664 0 00.612-.914l-.036-.076L8.57 2.919a.663.663 0 00-.57-.32zm0 8.069A.667.667 0 118 12a.667.667 0 010-1.333zm0-5.334c.342 0 .624.258.662.59L8.667 6v2.667a.667.667 0 01-1.329.077l-.005-.077V6c0-.368.299-.667.667-.667z"
+});
+
+function SvgIconError(props) {
+ return React.createElement("svg", _extends$r({
+ viewBox: "0 0 16 16"
+ }, props), _ref$r);
+}
+
+function _extends$s() { _extends$s = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$s.apply(this, arguments); }
+
+var _ref$s =
+/*#__PURE__*/
+React.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("path", {
+ className: "icon-error-filled_svg__fill",
+ fill: "#E53157",
+ d: "M10.281 4.18L1.77 17.85a1.87 1.87 0 00-.005 1.924c.353.597 1.01.968 1.724.976h17.024a2.024 2.024 0 001.724-.976 1.87 1.87 0 00-.005-1.924L13.719 4.18A2.028 2.028 0 0012 3.25a2.03 2.03 0 00-1.719.93z"
+}), React.createElement("path", {
+ fill: "#FFF",
+ fillRule: "nonzero",
+ d: "M11.125 12.875V8.5c0-1.167 1.75-1.167 1.75 0v4.375c0 1.167-1.75 1.167-1.75 0zm0 3.5c0-1.167 1.75-1.167 1.75 0s-1.75 1.167-1.75 0z"
+}));
+
+function SvgIconErrorFilled(props) {
+ return React.createElement("svg", _extends$s({
+ viewBox: "0 0 24 24"
+ }, props), _ref$s);
+}
+
+function _extends$t() { _extends$t = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$t.apply(this, arguments); }
+
+var _ref$t =
+/*#__PURE__*/
+React.createElement("g", {
+ className: "emoji-fail_svg__fill",
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("rect", {
+ width: 26.526,
+ height: 26.526,
+ x: 0.737,
+ y: 0.737,
+ fill: "#FFF",
+ rx: 4
+}), React.createElement("path", {
+ fill: "#000",
+ fillOpacity: 0.12,
+ d: "M14 23.456a9.457 9.457 0 11.001-18.913A9.457 9.457 0 0114 23.456zm0-1.72a7.736 7.736 0 100-15.473 7.737 7.737 0 000 15.474zm.714-6.005a.86.86 0 11-1.72 0v-.867a.86.86 0 01.588-.816 5.248 5.248 0 001.084-.544c.592-.395.907-.815.907-1.22a1.72 1.72 0 00-3.341-.574.86.86 0 11-1.622-.57 3.438 3.438 0 016.682 1.145c0 1.1-.651 1.969-1.672 2.65a6.81 6.81 0 01-.906.508v.288zm-1.72 2.425a.86.86 0 011.72 0v.142a.86.86 0 11-1.72 0V18.156z"
+}));
+
+function SvgEmojiFail(props) {
+ return React.createElement("svg", _extends$t({
+ viewBox: "0 0 28 28"
+ }, props), _ref$t);
+}
+
+function _extends$u() { _extends$u = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$u.apply(this, arguments); }
+
+var _ref$u =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-reactions-add_svg__fill",
+ fillOpacity: 0.88,
+ fillRule: "evenodd",
+ d: "M11.033 1.107a9.98 9.98 0 012.669.362.734.734 0 01-.393 1.413A8.466 8.466 0 002.567 11.04 8.466 8.466 0 1019.2 8.8a.736.736 0 01.514-.902.735.735 0 01.901.514c.233.85.352 1.731.352 2.628 0 5.486-4.448 9.933-9.934 9.933-5.486 0-9.933-4.447-9.933-9.933s4.447-9.933 9.933-9.933zm3.68 11.96c.5 0 .854.49.696.965-.644 1.933-2.385 3.261-4.376 3.261-1.99 0-3.732-1.328-4.375-3.261a.733.733 0 01.597-.959l.098-.006h7.36zm-1.195 1.466h-4.97l.101.131a3.115 3.115 0 002.012 1.14l.198.018.174.005c.868 0 1.672-.38 2.254-1.012l.13-.15.101-.132zM7.353 7.547c.374 0 .683.28.728.641l.006.092v1.84a.734.734 0 01-1.461.092l-.006-.092V8.28c0-.405.328-.733.733-.733zm7.36 0c.374 0 .683.28.728.641l.006.092v1.84a.734.734 0 01-1.461.092l-.006-.092V8.28c0-.405.328-.733.733-.733zM18.398 0c.405 0 .733.328.733.733v2.218h2.209a.734.734 0 010 1.467h-2.21v2.209a.732.732 0 11-1.466 0V4.418h-2.217a.734.734 0 110-1.466l2.216-.001.001-2.218c0-.405.328-.733.733-.733z"
+});
+
+function SvgIconReactionsAdd(props) {
+ return React.createElement("svg", _extends$u({
+ viewBox: "0 0 22 22"
+ }, props), _ref$u);
+}
+
+function _extends$v() { _extends$v = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$v.apply(this, arguments); }
+
+var _ref$v =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-emoji-reactions-add_svg__fill",
+ fillOpacity: 0.38,
+ fillRule: "evenodd",
+ d: "M10.03 1.006c.828 0 1.643.112 2.426.33a.666.666 0 11-.357 1.284 7.741 7.741 0 00-2.069-.28 7.697 7.697 0 107.697 7.696c0-.696-.092-1.379-.272-2.037a.667.667 0 011.287-.352c.21.773.319 1.574.319 2.39a9.03 9.03 0 01-9.03 9.03 9.03 9.03 0 11-.001-18.06zm3.346 10.873c.455 0 .776.445.632.877-.585 1.757-2.168 2.965-3.978 2.965s-3.392-1.208-3.978-2.965a.667.667 0 01.538-.87l.095-.007h6.69zm-1.087 1.333H7.771l.092.12c.46.563 1.103.938 1.813 1.033l.196.018.158.005c.784 0 1.512-.341 2.04-.91l.128-.147.091-.12zM6.685 6.86c.34 0 .62.254.661.583l.006.083V9.2a.667.667 0 01-1.329.084L6.018 9.2V7.527c0-.368.299-.666.667-.666zm6.69 0c.34 0 .621.254.662.583l.005.083V9.2a.667.667 0 01-1.328.084L12.71 9.2V7.527c0-.368.299-.666.667-.666zM16.726 0c.368 0 .667.298.667.667l-.001 2.016H19.4a.667.667 0 010 1.334l-2.01-.001.002 2.008a.667.667 0 01-1.334 0V4.016h-2.016a.666.666 0 110-1.333h2.016V.667c0-.369.299-.667.667-.667z"
+});
+
+function SvgIconEmojiReactionsAdd(props) {
+ return React.createElement("svg", _extends$v({
+ viewBox: "0 0 20 20"
+ }, props), _ref$v);
+}
+
+function _extends$w() { _extends$w = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$w.apply(this, arguments); }
+
+var _ref$w =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-delivered_svg__fill",
+ fillOpacity: 0.38,
+ fillRule: "evenodd",
+ d: "M2.207 11.793l5 5a1 1 0 01-1.414 1.414l-5-5a1 1 0 011.414-1.414zm19.586-6a1 1 0 011.414 1.414l-11 11a1 1 0 01-1.414 0l-5-5a1 1 0 011.414-1.414l4.293 4.293zm-3.586 0a1 1 0 010 1.414l-5.999 5.999a1 1 0 01-1.414-1.414l5.999-6a1 1 0 011.414 0z"
+});
+
+function SvgIconDelivered(props) {
+ return React.createElement("svg", _extends$w({
+ viewBox: "0 0 24 24"
+ }, props), _ref$w);
+}
+
+function _extends$x() { _extends$x = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$x.apply(this, arguments); }
+
+var _ref$x =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-disconnected_svg__fill",
+ fillRule: "evenodd",
+ d: "M3.55 2.276l.093.081L10.9 9.615a.895.895 0 01.148.147l10.594 10.595a.91.91 0 01-1.193 1.367l-.093-.081-5.015-5.015a.913.913 0 01-.705-.15 4.545 4.545 0 00-5.265 0 .91.91 0 01-1.053-1.483 6.358 6.358 0 014.24-1.151l-2.529-2.53c-1.4.316-2.706.96-3.81 1.883a.91.91 0 01-1.167-1.394 10.854 10.854 0 013.504-1.962L6.445 7.728a13.518 13.518 0 00-3.461 2.226.909.909 0 01-1.204-1.362 15.38 15.38 0 013.299-2.229l-2.722-2.72A.91.91 0 013.55 2.276zm13.14 8.052c.812.397 1.572.894 2.262 1.479a.908.908 0 11-1.177 1.386 9.015 9.015 0 00-1.883-1.23.91.91 0 01.798-1.635zm5.53-1.737a.91.91 0 01-1.203 1.363A13.642 13.642 0 0010.9 6.588a.91.91 0 01-.146-1.813A15.457 15.457 0 0122.22 8.591z"
+});
+
+function SvgIconDisconnected(props) {
+ return React.createElement("svg", _extends$x({
+ viewBox: "0 0 24 24"
+ }, props), _ref$x);
+}
+
+function _extends$y() { _extends$y = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$y.apply(this, arguments); }
+
+var _ref$y =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-document_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M14 1a1.01 1.01 0 01.25.031l.03.009c.03.009.061.02.091.031l.027.012a.914.914 0 01.195.112c.04.03.078.062.114.098l-.093-.082.011.009.082.073 6 6a1.006 1.006 0 01.21.309l.012.027c.012.03.022.06.031.091l.008.03A.921.921 0 0121 8l-.008-.126.001.01L21 8v12a3 3 0 01-3 3H6a3 3 0 01-3-3V4a3 3 0 013-3h8zm-1 2H6a1 1 0 00-1 1v16a1 1 0 001 1h12a1 1 0 001-1V9h-5a1 1 0 01-.993-.883L13 8V3zm4.585 4L15 4.415V7h2.585z"
+});
+
+function SvgIconDocument(props) {
+ return React.createElement("svg", _extends$y({
+ viewBox: "0 0 24 24"
+ }, props), _ref$y);
+}
+
+function _extends$z() { _extends$z = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$z.apply(this, arguments); }
+
+var _ref$z =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-download_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M21 16a1 1 0 01.993.883L22 17v3a3 3 0 01-2.824 2.995L19 23H5a3 3 0 01-2.995-2.824L2 20v-3a1 1 0 011.993-.117L4 17v3a1 1 0 00.883.993L5 21h14a1 1 0 00.993-.883L20 20v-3a1 1 0 011-1zM12 1a1 1 0 01.993.883L13 2v11.585l2.293-2.292a1 1 0 011.32-.083l.094.083a1 1 0 01.083 1.32l-.083.094-4 4a1.006 1.006 0 01-.09.08l.09-.08a1.008 1.008 0 01-.674.292L12 17h-.032l-.054-.004L12 17a1.008 1.008 0 01-.613-.21 1.037 1.037 0 01-.094-.083l-4-4a1 1 0 011.32-1.497l.094.083L11 13.585V2a1 1 0 011-1z"
+});
+
+function SvgIconDownload(props) {
+ return React.createElement("svg", _extends$z({
+ viewBox: "0 0 24 24"
+ }, props), _ref$z);
+}
+
+function _extends$A() { _extends$A = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$A.apply(this, arguments); }
+
+var _ref$A =
+/*#__PURE__*/
+React.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("rect", {
+ fill: "#FFF",
+ fillRule: "nonzero",
+ rx: 10
+}), React.createElement("path", {
+ className: "icon-file-audio_svg__fill",
+ fill: "#7B53EF",
+ d: "M18.815 9.185c2.913 2.934 2.913 7.696 0 10.63a.617.617 0 01-.894-.013.67.67 0 01.012-.925 6.215 6.215 0 000-8.754.67.67 0 01-.012-.925.617.617 0 01.894-.013zm-5.291 0a.646.646 0 011.044.517v9.596c0 .544-.62.85-1.044.516l-3.31-2.702H7.646A.65.65 0 017 16.458v-3.916a.65.65 0 01.647-.654h2.566zm2.886 2.42a4.113 4.113 0 010 5.783.617.617 0 01-.893-.012.67.67 0 01.012-.925 2.772 2.772 0 000-3.908.67.67 0 01-.012-.925.617.617 0 01.893-.013z"
+}));
+
+function SvgIconFileAudio(props) {
+ return React.createElement("svg", _extends$A({
+ viewBox: "0 0 28 28"
+ }, props), _ref$A);
+}
+
+function _extends$B() { _extends$B = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$B.apply(this, arguments); }
+
+var _ref$B =
+/*#__PURE__*/
+React.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("rect", {
+ fill: "#FFF",
+ fillRule: "nonzero",
+ rx: 10
+}), React.createElement("path", {
+ className: "icon-file-document_svg__fill",
+ fill: "#7B53EF",
+ d: "M16.317 5.667H9.05C7.907 5.667 7 6.58 7 7.687v12.625c0 1.107.907 2.021 2.05 2.021h9.9c1.143 0 2.05-.914 2.05-2.02v-9.97a.673.673 0 00-.198-.473l-3.95-3.984a.753.753 0 00-.535-.22z"
+}), React.createElement("path", {
+ fill: "#FFF",
+ d: "M17.025 16.667c.354 0 .642.302.642.675 0 .372-.288.675-.642.675h-6.383c-.355 0-.642-.303-.642-.675 0-.373.287-.675.642-.675zm0-2.667c.354 0 .642.302.642.675 0 .373-.288.675-.642.675h-6.383c-.355 0-.642-.302-.642-.675 0-.373.287-.675.642-.675zm-3.357-2.667c.369 0 .668.303.668.675 0 .373-.3.675-.668.675h-3a.672.672 0 01-.668-.675c0-.372.3-.675.668-.675z"
+}));
+
+function SvgIconFileDocument(props) {
+ return React.createElement("svg", _extends$B({
+ viewBox: "0 0 28 28"
+ }, props), _ref$B);
+}
+
+function _extends$C() { _extends$C = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$C.apply(this, arguments); }
+
+var _ref$C =
+/*#__PURE__*/
+React.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("circle", {
+ cx: 28,
+ cy: 28,
+ r: 28,
+ fill: "#FFF",
+ fillOpacity: 0.88
+}), React.createElement("path", {
+ className: "icon-gif_svg__fill",
+ fill: "#000",
+ fillOpacity: 0.55,
+ d: "M20.608 35.182c1.094 0 2.09-.162 2.99-.487.899-.325 1.595-.783 2.087-1.372v-5.296h-5.223v2.015h2.489v2.287c-.438.438-1.17.657-2.197.657-1.02 0-1.796-.356-2.324-1.067-.529-.71-.793-1.762-.793-3.153v-.848c.006-1.38.252-2.418.738-3.117.486-.699 1.194-1.048 2.124-1.048.729 0 1.302.176 1.718.528.416.353.685.909.806 1.668h2.662c-.164-1.434-.69-2.526-1.577-3.276s-2.118-1.126-3.691-1.126c-1.13 0-2.116.257-2.958.77-.842.514-1.486 1.255-1.932 2.224-.447.97-.67 2.116-.67 3.44v.903c.012 1.288.253 2.41.724 3.363.471.954 1.14 1.682 2.006 2.183.865.502 1.873.752 3.021.752zm10.2-.182V21.73h-2.735V35h2.734zm5.268 0v-5.423h5.25V27.37h-5.25v-3.427h5.906v-2.215h-8.64V35h2.734z"
+}));
+
+function SvgIconGif(props) {
+ return React.createElement("svg", _extends$C({
+ viewBox: "0 0 56 56"
+ }, props), _ref$C);
+}
+
+function _extends$D() { _extends$D = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$D.apply(this, arguments); }
+
+var _ref$D =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-info_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1zm0 2a9 9 0 100 18 9 9 0 000-18zm0 8a1 1 0 011 1v4a1 1 0 01-2 0v-4a1 1 0 011-1zm0-3a1 1 0 110 2 1 1 0 010-2z"
+});
+
+function SvgIconInfo(props) {
+ return React.createElement("svg", _extends$D({
+ viewBox: "0 0 24 24"
+ }, props), _ref$D);
+}
+
+function _extends$E() { _extends$E = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$E.apply(this, arguments); }
+
+var _ref$E =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-leave_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 2a1 1 0 01.117 1.993L12 4H4a1 1 0 00-.993.883L3 5v14a1 1 0 00.883.993L4 20h8a1 1 0 01.117 1.993L12 22H4a3 3 0 01-2.995-2.824L1 19V5a3 3 0 012.824-2.995L4 2h8zm6.613 5.21l.094.083 4 4a1 1 0 01.083 1.32l-.083.094-4 4a1 1 0 01-1.497-1.32l.083-.094 1.792-1.793H7.5a1 1 0 01-.117-1.993L7.5 11.5h12.585l-2.792-2.793a1 1 0 01-.083-1.32l.083-.094a1 1 0 011.32-.083z"
+});
+
+function SvgIconLeave(props) {
+ return React.createElement("svg", _extends$E({
+ viewBox: "0 0 24 24"
+ }, props), _ref$E);
+}
+
+function _extends$F() { _extends$F = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$F.apply(this, arguments); }
+
+var _ref$F =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-members_svg__fill",
+ fillRule: "evenodd",
+ d: "M13 14a5 5 0 014.995 4.783L18 19v2a1 1 0 01-1.993.117L16 21v-2a3 3 0 00-2.824-2.995L13 16H5a3 3 0 00-2.995 2.824L2 19v2a1 1 0 01-1.993.117L0 21v-2a5 5 0 014.783-4.995L5 14h8zm7.25.162a5 5 0 013.745 4.611L24 19v2a1 1 0 01-1.993.117L22 21v-2a3 3 0 00-2.25-2.902 1 1 0 11.5-1.936zM9 2a5 5 0 110 10A5 5 0 019 2zm7.248.161a5 5 0 010 9.688 1 1 0 01-.496-1.938 3 3 0 000-5.812 1 1 0 11.496-1.938zM9 4a3 3 0 100 6 3 3 0 000-6z"
+});
+
+function SvgIconMembers(props) {
+ return React.createElement("svg", _extends$F({
+ viewBox: "0 0 24 24"
+ }, props), _ref$F);
+}
+
+function _extends$G() { _extends$G = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$G.apply(this, arguments); }
+
+var _ref$G =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-notifications_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M13.73 20a1 1 0 01.865 1.502 3 3 0 01-5.19 0 1 1 0 01.752-1.496L10.27 20h3.46zM12 1a8 8 0 017.996 7.75L20 9v5a2 2 0 001.85 1.995l.283.012c1.111.12 1.154 1.73.128 1.965l-.128.021L22 18H2l-.133-.007c-1.156-.124-1.156-1.862 0-1.986l.282-.012a2 2 0 001.845-1.838L4 14V9a8 8 0 018-8zm0 2a6 6 0 00-5.996 5.775L6 9v5c0 .586-.126 1.142-.352 1.643l-.103.212-.082.145h13.073l-.08-.145a3.973 3.973 0 01-.43-1.402l-.021-.253L18 14V9a6 6 0 00-6-6z"
+});
+
+function SvgIconNotifications(props) {
+ return React.createElement("svg", _extends$G({
+ viewBox: "0 0 24 24"
+ }, props), _ref$G);
+}
+
+function _extends$H() { _extends$H = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$H.apply(this, arguments); }
+
+var _ref$H =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-photo_svg__fill",
+ fillRule: "evenodd",
+ d: "M19 2a3 3 0 013 3v14a3 3 0 01-3 3H4.941v-.002l-.117-.003A3 3 0 012 19V5a3 3 0 013-3zm-3 9.415L7.414 20H19a1 1 0 00.993-.883L20 19v-3.585l-4-4zM19 4H5a1 1 0 00-1 1v14a1 1 0 00.65.937L15.292 9.293a1 1 0 011.32-.083l.094.083L20 12.585V5a1 1 0 00-.883-.993L19 4zM8.5 6a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm0 2a.5.5 0 100 1 .5.5 0 000-1z"
+});
+
+function SvgIconPhoto(props) {
+ return React.createElement("svg", _extends$H({
+ viewBox: "0 0 24 24"
+ }, props), _ref$H);
+}
+
+function _extends$I() { _extends$I = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$I.apply(this, arguments); }
+
+var _ref$I =
+/*#__PURE__*/
+React.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("circle", {
+ cx: 28,
+ cy: 28,
+ r: 28,
+ fill: "#FFF",
+ fillOpacity: 0.88
+}), React.createElement("path", {
+ className: "icon-play_svg__fill",
+ fill: "#000",
+ fillOpacity: 0.55,
+ d: "M38.91 29.987c1.009-.63 1.007-1.664.007-2.304l-17.29-11.055c-1.006-.643-1.809-.2-1.793 1.004l.277 21.891c.015 1.198.847 1.657 1.855 1.029L38.91 29.987z"
+}));
+
+function SvgIconPlay(props) {
+ return React.createElement("svg", _extends$I({
+ viewBox: "0 0 56 56"
+ }, props), _ref$I);
+}
+
+function _extends$J() { _extends$J = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$J.apply(this, arguments); }
+
+var _ref$J =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-plus_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M13 11h7c1.333 0 1.333 2 0 2h-7v7c0 1.333-2 1.333-2 0v-7H4c-1.333 0-1.333-2 0-2h7V4c0-1.333 2-1.333 2 0v7z"
+});
+
+function SvgIconPlus(props) {
+ return React.createElement("svg", _extends$J({
+ viewBox: "0 0 24 24"
+ }, props), _ref$J);
+}
+
+function _extends$K() { _extends$K = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$K.apply(this, arguments); }
+
+var _ref$K =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-read_svg__fill",
+ fill: "#2EBA9F",
+ fillRule: "evenodd",
+ d: "M2.207 11.793l5 5a1 1 0 01-1.414 1.414l-5-5a1 1 0 011.414-1.414zm19.586-6a1 1 0 011.414 1.414l-11 11a1 1 0 01-1.414 0l-5-5a1 1 0 011.414-1.414l4.293 4.293zm-3.586 0a1 1 0 010 1.414l-5.999 5.999a1 1 0 01-1.414-1.414l5.999-6a1 1 0 011.414 0z"
+});
+
+function SvgIconRead(props) {
+ return React.createElement("svg", _extends$K({
+ viewBox: "0 0 24 24"
+ }, props), _ref$K);
+}
+
+function _extends$L() { _extends$L = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$L.apply(this, arguments); }
+
+var _ref$L =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-refresh_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M14.419 4.51l.175.167 2.073 1.927V4.167c0-.428.321-.78.736-.828l.097-.006c.427 0 .78.322.828.736l.005.098v5c0 .427-.321.78-.736.827L17.5 10h-5a.833.833 0 01-.097-1.661l.097-.006h3.578L13.44 5.88a5.982 5.982 0 00-7.05-.986C4.083 6.15 2.898 8.756 3.48 11.286c.58 2.534 2.792 4.385 5.425 4.537 2.635.152 5.05-1.433 5.928-3.883a.833.833 0 011.569.561c-1.127 3.15-4.223 5.18-7.593 4.986-3.37-.195-6.206-2.57-6.954-5.828-.748-3.261.778-6.617 3.738-8.229 2.884-1.57 6.453-1.118 8.826 1.08z"
+});
+
+function SvgIconRefresh(props) {
+ return React.createElement("svg", _extends$L({
+ width: 20,
+ height: 20
+ }, props), _ref$L);
+}
+
+function _extends$M() { _extends$M = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$M.apply(this, arguments); }
+
+var _ref$M =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-send_svg__fill",
+ fillRule: "evenodd",
+ d: "M20.554 10.117L2.52 1.024C1.613.619.605 1.428 1.008 2.337l2.115 5.685a2 2 0 001.545 1.275l10.345 1.73-10.345 1.728a2 2 0 00-1.545 1.275l-2.115 5.685c-.302.91.605 1.718 1.511 1.213l18.035-9.094c.706-.303.706-1.313 0-1.717z"
+});
+
+function SvgIconSend(props) {
+ return React.createElement("svg", _extends$M({
+ viewBox: "0 0 22 22"
+ }, props), _ref$M);
+}
+
+function _extends$N() { _extends$N = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$N.apply(this, arguments); }
+
+var _ref$N =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-sent_svg__fill",
+ fillOpacity: 0.38,
+ fillRule: "evenodd",
+ d: "M4.707 11.793a1 1 0 10-1.414 1.414l5 5a1 1 0 001.414 0l11-11a1 1 0 10-1.414-1.414L9 16.086l-4.293-4.293z"
+});
+
+function SvgIconSent(props) {
+ return React.createElement("svg", _extends$N({
+ viewBox: "0 0 24 24"
+ }, props), _ref$N);
+}
+
+function _extends$O() { _extends$O = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$O.apply(this, arguments); }
+
+var _ref$O =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-shevron_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M8.293 17.293a1 1 0 001.414 1.414l6-6a1 1 0 000-1.414l-6-6a1 1 0 00-1.414 1.414L13.586 12l-5.293 5.293z"
+});
+
+function SvgIconShevron(props) {
+ return React.createElement("svg", _extends$O({
+ viewBox: "0 0 24 24"
+ }, props), _ref$O);
+}
+
+function _extends$P() { _extends$P = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$P.apply(this, arguments); }
+
+var _ref$P =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-shevron-down_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M6.045 8.205a1.125 1.125 0 10-1.59 1.59l6.75 6.75c.439.44 1.151.44 1.59 0l6.75-6.75a1.125 1.125 0 10-1.59-1.59L12 14.159 6.045 8.205z"
+});
+
+function SvgIconShevronDown(props) {
+ return React.createElement("svg", _extends$P({
+ viewBox: "0 0 24 24"
+ }, props), _ref$P);
+}
+
+function _extends$Q() { _extends$Q = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Q.apply(this, arguments); }
+
+var _ref$Q =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-spinner-small_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 22.5c5.799 0 10.5-4.701 10.5-10.5S17.799 1.5 12 1.5 1.5 6.201 1.5 12a1.432 1.432 0 002.864 0A7.636 7.636 0 1112 19.636a1.432 1.432 0 000 2.864z"
+});
+
+function SvgIconSpinnerSmall(props) {
+ return React.createElement("svg", _extends$Q({
+ viewBox: "0 0 24 24"
+ }, props), _ref$Q);
+}
+
+function _extends$R() { _extends$R = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$R.apply(this, arguments); }
+
+var _ref$R =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-spinner-large_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24a2.323 2.323 0 104.645 0C4.645 13.31 13.311 4.645 24 4.645c10.69 0 19.355 8.666 19.355 19.355 0 10.69-8.666 19.355-19.355 19.355A2.323 2.323 0 0024 48z"
+});
+
+function SvgIconSpinnerLarge(props) {
+ return React.createElement("svg", _extends$R({
+ viewBox: "0 0 48 48"
+ }, props), _ref$R);
+}
+
+function _extends$S() { _extends$S = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$S.apply(this, arguments); }
+
+var _ref$S =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-user_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M16 14a5 5 0 014.995 4.783L21 19v2a1 1 0 01-1.993.117L19 21v-2a3 3 0 00-2.824-2.995L16 16H8a3 3 0 00-2.995 2.824L5 19v2a1 1 0 01-1.993.117L3 21v-2a5 5 0 014.783-4.995L8 14h8zM12 2a5 5 0 110 10 5 5 0 010-10zm0 2a3 3 0 100 6 3 3 0 000-6z"
+});
+
+function SvgIconUser(props) {
+ return React.createElement("svg", _extends$S({
+ viewBox: "0 0 24 24"
+ }, props), _ref$S);
+}
+
+function _extends$T() { _extends$T = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$T.apply(this, arguments); }
+
+var _ref$T =
+/*#__PURE__*/
+React.createElement("g", {
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("path", {
+ className: "icon-operator_svg__stroke",
+ d: "M2 6l5 4 5-7 5 7 5-4-3 14H5z"
+}), React.createElement("circle", {
+ className: "icon-operator_svg__fill",
+ cx: 12,
+ cy: 14,
+ r: 2
+}));
+
+function SvgIconOperator(props) {
+ return React.createElement("svg", _extends$T({
+ viewBox: "0 0 24 24"
+ }, props), _ref$T);
+}
+
+function _extends$U() { _extends$U = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$U.apply(this, arguments); }
+
+var _ref$U =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-banned_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1zm0 2a9 9 0 10.001 18.001A9 9 0 0012 3zm4 8a1 1 0 010 2H8a1 1 0 010-2h8z"
+});
+
+function SvgIconBanned(props) {
+ return React.createElement("svg", _extends$U({
+ viewBox: "0 0 24 24"
+ }, props), _ref$U);
+}
+
+function _extends$V() { _extends$V = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$V.apply(this, arguments); }
+
+var _ref$V =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-muted_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M20.857 7.357l.026.045A9.96 9.96 0 0122 12a9.937 9.937 0 01-1.074 4.51c-.38 1.021-.463 1.817-.25 2.386.265.713.598 1.308.997 1.784.578.594.39 1.01-.565 1.249-.763.19-2.073 0-3.929-.571l-.333-.105-.598-.198A9.965 9.965 0 0112 22a9.952 9.952 0 01-4.622-1.13l-.022-.011 1.5-1.5c.982.42 2.046.641 3.144.641 1.073 0 2.114-.21 3.079-.613l.318-.142.722-.339 1.355.449.26.082c.228.07.445.133.65.19l.298.08.182.045-.063-.157-.075-.223c-.295-.974-.189-2.057.225-3.275l.1-.284.04-.107.198-.406A7.949 7.949 0 0020 12a7.97 7.97 0 00-.64-3.143l1.497-1.5zM12 2c2.401 0 4.604.846 6.328 2.257l1.965-1.964a1 1 0 011.497 1.32l-.083.094-18 18a1 1 0 01-1.497-1.32l.083-.094 1.963-1.965a9.956 9.956 0 01-2.25-5.998L2 12C2 6.477 6.477 2 12 2zm0 2a8 8 0 00-6.32 12.906L16.905 5.68a7.957 7.957 0 00-4.607-1.675L12 4z"
+});
+
+function SvgIconMuted(props) {
+ return React.createElement("svg", _extends$V({
+ viewBox: "0 0 24 24"
+ }, props), _ref$V);
+}
+
+function _extends$W() { _extends$W = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$W.apply(this, arguments); }
+
+var _ref$W =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-muted-foreground_svg__fill",
+ fill: "#FFF",
+ fillOpacity: 0.88,
+ fillRule: "evenodd",
+ d: "M13.904 4.904l.018.03c.476.919.745 1.96.745 3.066a6.628 6.628 0 01-.716 3.006c-.253.682-.309 1.212-.168 1.591.178.476.4.872.666 1.19.385.396.26.674-.377.832-.503.125-1.361.003-2.576-.367l-.266-.083-.398-.132c-.86.404-1.82.63-2.832.63a6.632 6.632 0 01-3.082-.754l-.014-.007 1-1c.655.28 1.364.427 2.096.427a5.32 5.32 0 001.999-.386l.266-.117.481-.226.903.299.174.055c.152.047.296.089.433.126l.199.054.121.03-.042-.105-.05-.149c-.192-.635-.129-1.34.133-2.132l.084-.24.026-.071.132-.271a5.294 5.294 0 00.474-2.2c0-.732-.147-1.44-.427-2.096l.998-1zm.567-3.375c.24.24.26.618.056.88l-.056.062-12 12a.666.666 0 01-.998-.88l.056-.062 1.31-1.31a6.636 6.636 0 01-1.5-3.94L1.333 8A6.667 6.667 0 0112.22 2.838l1.309-1.31c.26-.26.682-.26.942 0zM8 2.667a5.332 5.332 0 00-4.213 8.603l7.484-7.484a5.32 5.32 0 00-3.006-1.113L8 2.667z"
+});
+
+function SvgIconMutedForeground(props) {
+ return React.createElement("svg", _extends$W({
+ viewBox: "0 0 16 16"
+ }, props), _ref$W);
+}
+
+function _extends$X() { _extends$X = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$X.apply(this, arguments); }
+
+var _ref$X =
+/*#__PURE__*/
+React.createElement("path", {
+ className: "icon-freeze_svg__fill",
+ fill: "#7B53EF",
+ fillRule: "evenodd",
+ d: "M9.613 1.21l.095.083L12 3.585l2.293-2.292a1 1 0 011.32-.083l.095.083a1 1 0 01.083 1.32l-.083.094L13 5.414v4.853l4.203-2.427.992-3.697a1 1 0 011.957.395l-.025.123-.84 3.131 3.133.84c.492.132.8.61.732 1.102l-.025.123c-.132.492-.61.8-1.102.732l-.123-.025-3.698-.991L14.001 12l4.203 2.426 3.698-.99.123-.025c.492-.068.97.24 1.102.732l.025.123a1 1 0 01-.732 1.102l-3.133.839.84 3.132.025.123a1 1 0 01-1.957.395l-.992-3.698L13 13.732v4.853l2.708 2.708a1 1 0 01-1.32 1.497l-.095-.083L12 20.414l-2.292 2.293a1 1 0 01-1.32.083l-.095-.083a1 1 0 01-.083-1.32l.083-.094L11 18.585v-4.853l-4.203 2.427-.99 3.698a1.002 1.002 0 01-1.958-.395l.025-.123.839-3.131-3.132-.84c-.492-.132-.8-.61-.732-1.102l.025-.123c.132-.492.61-.8 1.102-.732l.123.025 3.697.99 4.203-2.427-4.203-2.426-3.697.991-.123.025c-.492.068-.97-.24-1.102-.732L.85 9.734a1 1 0 01.732-1.102l3.132-.84-.839-3.131-.025-.123a1 1 0 011.957-.395l.991 3.697L11 10.267V5.414L8.293 2.707a1 1 0 011.32-1.497z"
+});
+
+function SvgIconFreeze(props) {
+ return React.createElement("svg", _extends$X({
+ viewBox: "0 0 24 24"
+ }, props), _ref$X);
+}
+
+function _extends$Y() { _extends$Y = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Y.apply(this, arguments); }
+
+var _ref$Y =
+/*#__PURE__*/
+React.createElement("g", {
+ className: "icon-toggleon_svg__fill",
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("rect", {
+ width: 40,
+ height: 20,
+ x: 2,
+ y: 2,
+ fill: "#7B53EF",
+ rx: 10
+}), React.createElement("circle", {
+ cx: 32,
+ cy: 12,
+ r: 6,
+ fill: "#FFF"
+}), React.createElement("path", {
+ fill: "#7B53EF",
+ d: "M32 0H12C5.373 0 0 5.373 0 12s5.373 12 12 12h20c6.627 0 12-5.373 12-12S38.627 0 32 0zm0 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20z"
+}));
+
+function SvgIconToggleon(props) {
+ return React.createElement("svg", _extends$Y({
+ viewBox: "0 0 44 24"
+ }, props), _ref$Y);
+}
+
+function _extends$Z() { _extends$Z = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Z.apply(this, arguments); }
+
+var _ref$Z =
+/*#__PURE__*/
+React.createElement("g", {
+ className: "icon-toggleoff_svg__fill",
+ fill: "none",
+ fillRule: "evenodd"
+}, React.createElement("rect", {
+ width: 40,
+ height: 20,
+ x: 2,
+ y: 2,
+ fill: "#A8A8A8",
+ rx: 10
+}), React.createElement("circle", {
+ cx: 12,
+ cy: 12,
+ r: 6,
+ fill: "#FFF"
+}), React.createElement("path", {
+ fill: "#A8A8A8",
+ d: "M32 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20zm0 1H12a9 9 0 00-.265 17.996L12 21h20a9 9 0 00.265-17.996L32 3z"
+}), React.createElement("path", {
+ fill: "#FFF",
+ d: "M32 0H12C5.373 0 0 5.373 0 12s5.373 12 12 12h20c6.627 0 12-5.373 12-12S38.627 0 32 0zm0 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20z"
+}));
+
+function SvgIconToggleoff(props) {
+ return React.createElement("svg", _extends$Z({
+ viewBox: "0 0 44 24"
+ }, props), _ref$Z);
+}
+
+var Colors = {
+ DEFAULT: 'DEFAULT',
+ PRIMARY: 'PRIMARY',
+ SECONDARY: 'SECONDARY',
+ CONTENT: 'CONTENT',
+ CONTENT_INVERSE: 'CONTENT_INVERSE',
+ WHITE: 'WHITE',
+ SENT: 'SENT',
+ READ: 'READ',
+ ON_BACKGROUND_2: 'ON_BACKGROUND_2',
+ ON_BACKGROUND_3: 'ON_BACKGROUND_3',
+ BACKGROUND_3: 'BACKGROUND_3'
+};
+
+function changeColorToClassName(color) {
+ switch (color) {
+ case Colors.PRIMARY:
+ return 'sendbird-color--primary';
+
+ case Colors.SECONDARY:
+ return 'sendbird-color--secondary';
+
+ case Colors.CONTENT:
+ return 'sendbird-color--content';
+
+ case Colors.CONTENT_INVERSE:
+ return 'sendbird-color--content-inverse';
+
+ case Colors.WHITE:
+ return 'sendbird-color--white';
+
+ case Colors.SENT:
+ return 'sendbird-color--sent';
+
+ case Colors.READ:
+ return 'sendbird-color--read';
+
+ case Colors.ON_BACKGROUND_2:
+ return 'sendbird-color--on-background-2';
+
+ case Colors.ON_BACKGROUND_3:
+ return 'sendbird-color--on-background-3';
+
+ case Colors.BACKGROUND_3:
+ return 'sendbird-color--background-3';
+
+ default:
+ return '';
+ }
+}
+
+function changeTypeToIconComponent(type) {
+ switch (type) {
+ case Type.ADD:
+ return React.createElement(SvgIconAdd, null);
+
+ case Type.ARROW_LEFT:
+ return React.createElement(SvgIconArrowLeft, null);
+
+ case Type.CAMERA:
+ return React.createElement(SvgIconCamera, null);
+
+ case Type.ATTACH:
+ return React.createElement(SvgIconAttach, null);
+
+ case Type.AVATAR_DARK:
+ return React.createElement(SvgIconAvatarDark, null);
+
+ case Type.AVATAR_LIGHT:
+ return React.createElement(SvgIconAvatarLight, null);
+
+ case Type.AVATAR_NO_IMAGE:
+ return React.createElement(SvgAvatarNoImageLight, null);
+
+ case Type.BROADCAST_LARGE_DARK:
+ return React.createElement(SvgIconBroadcastLrgDark, null);
+
+ case Type.BROADCAST_LARGE_LIGHT:
+ return React.createElement(SvgIconBroadcastLrgLight, null);
+
+ case Type.BROADCAST_DARK:
+ return React.createElement(SvgIconBroadcastDark, null);
+
+ case Type.BROADCAST_LIGHT:
+ return React.createElement(SvgIconBroadcastLight, null);
+
+ case Type.BROADCAST:
+ return React.createElement(SvgIconBroadcast, null);
+
+ case Type.FROZEN_DARK:
+ return React.createElement(SvgFrozenDark, null);
+
+ case Type.FROZEN_LIGHT:
+ return React.createElement(SvgFrozenLight, null);
+
+ case Type.MORE:
+ return React.createElement(SvgIconMore, null);
+
+ case Type.MUTE:
+ return React.createElement(SvgIconMute, null);
+
+ case Type.NO_THUMBNAIL:
+ return React.createElement(SvgIconNoThumbnail, null);
+
+ case Type.CHECKBOX:
+ return React.createElement(SvgIconCheckbox, null);
+
+ case Type.CHECKBOX_OFF:
+ return React.createElement(SvgIconCheckboxOff, null);
+
+ case Type.CLOSE:
+ return React.createElement(SvgIconClose, null);
+
+ case Type.COPY:
+ return React.createElement(SvgIconCopy, null);
+
+ case Type.CHAT:
+ return React.createElement(SvgIconChat, null);
+
+ case Type.SUPER_GROUP:
+ return React.createElement(SvgIconSupergroup, null);
+
+ case Type.CREATE:
+ return React.createElement(SvgIconCreate, null);
+
+ case Type.DELETE:
+ return React.createElement(SvgIconDelete, null);
+
+ case Type.DISCONNECTED:
+ return React.createElement(SvgIconDisconnected, null);
+
+ case Type.DUMMY:
+ return React.createElement(SvgIconDummy, null);
+
+ case Type.EDIT:
+ return React.createElement(SvgIconEdit, null);
+
+ case Type.ERROR:
+ return React.createElement(SvgIconError, null);
+
+ case Type.ERROR_FILLED:
+ return React.createElement(SvgIconErrorFilled, null);
+
+ case Type.EMOJI_FAILED:
+ return React.createElement(SvgEmojiFail, null);
+
+ case Type.EMOJI_REACTIONS_ADD:
+ return React.createElement(SvgIconReactionsAdd, null);
+
+ case Type.EMOJI_REACTIONS_ADD_GRAY:
+ return React.createElement(SvgIconEmojiReactionsAdd, null);
+
+ case Type.DELIVERED:
+ return React.createElement(SvgIconDelivered, null);
+
+ case Type.DOCUMENT:
+ return React.createElement(SvgIconDocument, null);
+
+ case Type.DOWNLOAD:
+ return React.createElement(SvgIconDownload, null);
+
+ case Type.FILE_AUDIO:
+ return React.createElement(SvgIconFileAudio, null);
+
+ case Type.FILE_DOCUMENT:
+ return React.createElement(SvgIconFileDocument, null);
+
+ case Type.GIF:
+ return React.createElement(SvgIconGif, null);
+
+ case Type.INFO:
+ return React.createElement(SvgIconInfo, null);
+
+ case Type.LEAVE:
+ return React.createElement(SvgIconLeave, null);
+
+ case Type.MEMBERS:
+ return React.createElement(SvgIconMembers, null);
+
+ case Type.NOTIFICATIONS:
+ return React.createElement(SvgIconNotifications, null);
+
+ case Type.PHOTO:
+ return React.createElement(SvgIconPhoto, null);
+
+ case Type.PLAY:
+ return React.createElement(SvgIconPlay, null);
+
+ case Type.PLUS:
+ return React.createElement(SvgIconPlus, null);
+
+ case Type.READ:
+ return React.createElement(SvgIconRead, null);
+
+ case Type.REFRESH:
+ return React.createElement(SvgIconRefresh, null);
+
+ case Type.SEND:
+ return React.createElement(SvgIconSend, null);
+
+ case Type.SENT:
+ return React.createElement(SvgIconSent, null);
+
+ case Type.SHEVRON:
+ return React.createElement(SvgIconShevron, null);
+
+ case Type.SHEVRON_DOWN:
+ return React.createElement(SvgIconShevronDown, null);
+
+ case Type.SPINNER:
+ return React.createElement(SvgIconSpinnerSmall, null);
+
+ case Type.SPINNER_LARGE:
+ return React.createElement(SvgIconSpinnerLarge, null);
+
+ case Type.USER:
+ return React.createElement(SvgIconUser, null);
+
+ case Type.ICON_OPERATOR:
+ return React.createElement(SvgIconOperator, null);
+
+ case Type.ICON_BANNED:
+ return React.createElement(SvgIconBanned, null);
+
+ case Type.ICON_MUTED:
+ return React.createElement(SvgIconMuted, null);
+
+ case Type.ICON_MUTED_FG:
+ return React.createElement(SvgIconMutedForeground, null);
+
+ case Type.ICON_FREEZE:
+ return React.createElement(SvgIconFreeze, null);
+
+ case Type.TOGGLE_ON:
+ return React.createElement(SvgIconToggleon, null);
+
+ case Type.TOGGLE_OFF:
+ return React.createElement(SvgIconToggleoff, null);
+
+ default:
+ return null;
+ }
+}
+
+function Icon(_ref) {
+ var type = _ref.type,
+ width = _ref.width,
+ height = _ref.height,
+ children = _ref.children,
+ className = _ref.className,
+ onClick = _ref.onClick,
+ fillColor = _ref.fillColor;
+ var iconStyle = {
+ width: typeof width === 'string' ? width : "".concat(width, "px"),
+ minWidth: typeof width === 'string' ? width : "".concat(width, "px"),
+ height: typeof height === 'string' ? height : "".concat(height, "px"),
+ minHeight: typeof height === 'string' ? height : "".concat(height, "px")
+ };
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React.createElement("div", {
+ onClick: onClick,
+ onKeyDown: onClick,
+ role: "button",
+ tabIndex: "0",
+ className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-icon', changeColorToClassName(fillColor)]).join(' '),
+ style: iconStyle
+ }, children || changeTypeToIconComponent(type));
+}
+Icon.propTypes = {
+ type: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(Type)), PropTypes.string]).isRequired,
+ width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ onClick: PropTypes.func,
+ children: PropTypes.element,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ fillColor: PropTypes.oneOf(Object.keys(Colors))
+};
+Icon.defaultProps = {
+ onClick: function onClick() {},
+ width: 26,
+ height: 26,
+ children: null,
+ className: '',
+ fillColor: Colors.DEFAULT
+};
+var IconTypes = Type;
+var IconColors = Colors;
+
+var imageRendererClassName = 'sendbird-avatar-img';
+
+var defaultComponent = function defaultComponent(_a) {
+ var width = _a.width,
+ height = _a.height;
+ return function () {
+ return document.querySelector('.sendbird-theme--dark') ? React.createElement(Icon, {
+ className: imageRendererClassName,
+ type: IconTypes.AVATAR_DARK,
+ width: width,
+ height: height
+ }) : React.createElement(Icon, {
+ className: imageRendererClassName,
+ type: IconTypes.AVATAR_LIGHT,
+ width: width,
+ height: height
+ });
+ };
+};
+
+var AvatarInner = function AvatarInner(_a) {
+ var _b = _a.src,
+ src = _b === void 0 ? '' : _b,
+ _c = _a.alt,
+ alt = _c === void 0 ? '' : _c,
+ height = _a.height,
+ width = _a.width;
+
+ if (typeof src === 'string') {
+ return React.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src,
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ });
+ }
+
+ if (src && src.length) {
+ if (src.length === 1) {
+ return React.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[0],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ });
+ }
+
+ if (src.length === 2) {
+ return React.createElement("div", {
+ className: "sendbird-avatar--inner__two-child"
+ }, React.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[0],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ }), React.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[1],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ }));
+ }
+
+ if (src.length === 3) {
+ return React.createElement(React.Fragment, null, React.createElement("div", {
+ className: "sendbird-avatar--inner__three-child--upper"
+ }, React.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[0],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ })), React.createElement("div", {
+ className: "sendbird-avatar--inner__three-child--lower"
+ }, React.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[1],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ }), React.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: src[2],
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ })));
+ }
+
+ return React.createElement("div", {
+ className: "sendbird-avatar--inner__four-child"
+ }, src.slice(0, 4).map(function (i) {
+ return React.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: i,
+ height: height,
+ width: width,
+ alt: alt,
+ key: uuidv4(),
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ });
+ }));
+ } // default img
+
+
+ return React.createElement(ImageRenderer, {
+ className: imageRendererClassName,
+ url: "",
+ height: height,
+ width: width,
+ alt: alt,
+ defaultComponent: defaultComponent({
+ height: height,
+ width: width
+ })
+ });
+};
+
+function Avatar(_a, ref) {
+ var _b = _a.src,
+ src = _b === void 0 ? '' : _b,
+ _c = _a.alt,
+ alt = _c === void 0 ? '' : _c,
+ _d = _a.width,
+ width = _d === void 0 ? '56px' : _d,
+ _e = _a.height,
+ height = _e === void 0 ? '56px' : _e,
+ onClick = _a.onClick,
+ _f = _a.className,
+ className = _f === void 0 ? '' : _f;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React.createElement("div", {
+ className: __spreadArrays(injectingClassName, ['sendbird-avatar']).join(' '),
+ ref: ref,
+ style: {
+ height: height,
+ width: width
+ },
+ onClick: onClick,
+ role: "button",
+ tabIndex: 0,
+ onKeyDown: onClick
+ }, React.createElement(AvatarInner, {
+ src: src,
+ height: height,
+ width: width,
+ alt: alt
+ }));
+}
+
+var Avatar$1 = React.forwardRef(Avatar);
+
+var Typography = {
+ H_1: 'H_1',
+ H_2: 'H_2',
+ SUBTITLE_1: 'SUBTITLE_1',
+ SUBTITLE_2: 'SUBTITLE_2',
+ BODY_1: 'BODY_1',
+ BODY_2: 'BODY_2',
+ BUTTON_1: 'BUTTON_1',
+ BUTTON_2: 'BUTTON_2',
+ CAPTION_1: 'CAPTION_1',
+ CAPTION_2: 'CAPTION_2',
+ CAPTION_3: 'CAPTION_3'
+};
+var Colors$1 = {
+ ONBACKGROUND_1: 'ONBACKGROUND_1',
+ ONBACKGROUND_2: 'ONBACKGROUND_2',
+ ONBACKGROUND_3: 'ONBACKGROUND_3',
+ ONCONTENT_1: 'ONCONTENT_1',
+ ONCONTENT_2: 'ONCONTENT_2',
+ PRIMARY: 'PRIMARY',
+ ERROR: 'ERROR',
+ SECONDARY_3: 'SECONDARY_3'
+};
+
+function changeTypographyToClassName(type) {
+ switch (type) {
+ case Typography.H_1:
+ return 'sendbird-label--h-1';
+
+ case Typography.H_2:
+ return 'sendbird-label--h-2';
+
+ case Typography.SUBTITLE_1:
+ return 'sendbird-label--subtitle-1';
+
+ case Typography.SUBTITLE_2:
+ return 'sendbird-label--subtitle-2';
+
+ case Typography.BODY_1:
+ return 'sendbird-label--body-1';
+
+ case Typography.BODY_2:
+ return 'sendbird-label--body-2';
+
+ case Typography.BUTTON_1:
+ return 'sendbird-label--button-1';
+
+ case Typography.BUTTON_2:
+ return 'sendbird-label--button-2';
+
+ case Typography.CAPTION_1:
+ return 'sendbird-label--caption-1';
+
+ case Typography.CAPTION_2:
+ return 'sendbird-label--caption-2';
+
+ case Typography.CAPTION_3:
+ return 'sendbird-label--caption-3';
+
+ default:
+ return null;
+ }
+}
+function changeColorToClassName$1(color) {
+ switch (color) {
+ case Colors$1.ONBACKGROUND_1:
+ return 'sendbird-label--color-onbackground-1';
+
+ case Colors$1.ONBACKGROUND_2:
+ return 'sendbird-label--color-onbackground-2';
+
+ case Colors$1.ONBACKGROUND_3:
+ return 'sendbird-label--color-onbackground-3';
+
+ case Colors$1.ONCONTENT_1:
+ return 'sendbird-label--color-oncontent-1';
+
+ case Colors$1.ONCONTENT_2:
+ return 'sendbird-label--color-oncontent-2';
+
+ case Colors$1.PRIMARY:
+ return 'sendbird-label--color-primary';
+ // should be Primary-3 fix me
+
+ case Colors$1.ERROR:
+ return 'sendbird-label--color-error';
+
+ case Colors$1.SECONDARY_3:
+ return 'sendbird-label--color-secondary-3';
+
+ default:
+ return null;
+ }
+}
+
+var CLASS_NAME = 'sendbird-label';
+function Label(_ref) {
+ var type = _ref.type,
+ color = _ref.color,
+ children = _ref.children,
+ className = _ref.className;
+ var injectingClassName = Array.isArray(className) ? [CLASS_NAME].concat(_toConsumableArray(className)) : [CLASS_NAME, className];
+
+ if (type) {
+ injectingClassName.push(changeTypographyToClassName(type));
+ }
+
+ if (color) {
+ injectingClassName.push(changeColorToClassName$1(color));
+ }
+
+ return React.createElement("span", {
+ className: injectingClassName.join(' ')
+ }, children);
+}
+Label.propTypes = {
+ type: PropTypes.oneOf([].concat(_toConsumableArray(Object.keys(Typography)), [''])),
+ color: PropTypes.oneOf([].concat(_toConsumableArray(Object.keys(Colors$1)), [''])),
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.element, PropTypes.any]),
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+Label.defaultProps = {
+ type: '',
+ color: '',
+ className: [],
+ children: null
+};
+var LabelTypography = Typography;
+var LabelColors = Colors$1;
+var LabelStringSet = getStringSet('en');
+
+var CLASS_NAME$1 = 'sendbird-iconbutton';
+var IconButton = React.forwardRef(function (props, ref) {
+ var children = props.children,
+ className = props.className,
+ _props$disabled = props.disabled,
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
+ type = props.type,
+ height = props.height,
+ width = props.width,
+ _onClick = props.onClick,
+ _onBlur = props.onBlur,
+ style = props.style;
+
+ var _useState = useState(''),
+ _useState2 = _slicedToArray(_useState, 2),
+ pressed = _useState2[0],
+ setPressed = _useState2[1];
+
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift(CLASS_NAME$1);
+ return (// eslint-disable-next-line react/button-has-type
+ React.createElement("button", {
+ className: "".concat(injectingClassName.join(' '), " ").concat(pressed),
+ disabled: disabled,
+ ref: ref,
+ type: type,
+ style: _objectSpread2({}, style, {
+ height: height,
+ width: width
+ }),
+ onClick: function onClick(e) {
+ if (disabled) {
+ return;
+ }
+
+ setPressed('sendbird-iconbutton--pressed');
+
+ _onClick(e);
+ },
+ onBlur: function onBlur(e) {
+ setPressed('');
+
+ _onBlur(e);
+ }
+ }, React.createElement("span", {
+ className: "sendbird-iconbutton__inner"
+ }, children))
+ );
+});
+IconButton.propTypes = {
+ height: PropTypes.string,
+ width: PropTypes.string,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
+ type: PropTypes.string,
+ disabled: PropTypes.bool,
+ onClick: PropTypes.func,
+ onBlur: PropTypes.func,
+ style: PropTypes.shape({})
+};
+IconButton.defaultProps = {
+ height: '56px',
+ width: '56px',
+ className: '',
+ type: 'button',
+ disabled: false,
+ onClick: function onClick() {},
+ onBlur: function onBlur() {},
+ style: {}
+};
+
+// simple component to be used as modal root
+var MODAL_ROOT = 'sendbird-modal-root';
+
+var Type$1 = {
+ PRIMARY: 'PRIMARY',
+ SECONDARY: 'SECONDARY',
+ DANGER: 'DANGER',
+ DISABLED: 'DISABLED'
+};
+var Size = {
+ BIG: 'BIG',
+ SMALL: 'SMALL'
+};
+
+function changeTypeToClassName(type) {
+ switch (type) {
+ case Type$1.PRIMARY:
+ return 'sendbird-button--primary';
+
+ case Type$1.SECONDARY:
+ return 'sendbird-button--secondary';
+
+ case Type$1.DANGER:
+ return 'sendbird-button--danger';
+
+ case Type$1.DISABLED:
+ return 'sendbird-button--disabled';
+
+ default:
+ return null;
+ }
+}
+function changeSizeToClassName(size) {
+ switch (size) {
+ case Size.BIG:
+ return 'sendbird-button--big';
+
+ case Size.SMALL:
+ return 'sendbird-button--small';
+
+ default:
+ return null;
+ }
+}
+
+function Button(_ref) {
+ var type = _ref.type,
+ size = _ref.size,
+ children = _ref.children,
+ disabled = _ref.disabled,
+ onClick = _ref.onClick,
+ className = _ref.className;
+ var injectingClassNames = ['sendbird-button', disabled ? 'sendbird-button__disabled' : '', changeTypeToClassName(type), changeSizeToClassName(size)].concat(_toConsumableArray(Array.isArray(className) ? className : [className])).join(' ');
+ return React.createElement("button", {
+ type: "button",
+ className: injectingClassNames,
+ onClick: onClick,
+ disabled: disabled
+ }, React.createElement(Label, {
+ className: "sendbird-button__text",
+ type: LabelTypography.BUTTON_1,
+ color: LabelColors.ONCONTENT_1
+ }, children));
+}
+Button.propTypes = {
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),
+ disabled: PropTypes.bool,
+ type: PropTypes.oneOf(Object.keys(Type$1)),
+ size: PropTypes.oneOf(Object.keys(Size)),
+ onClick: PropTypes.func,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
+};
+Button.defaultProps = {
+ children: 'Button',
+ type: Type$1.PRIMARY,
+ disabled: false,
+ size: Size.BIG,
+ onClick: function onClick() {},
+ className: ''
+};
+
+var ModalHeader = function ModalHeader(_ref) {
+ var titleText = _ref.titleText;
+ return React.createElement("div", {
+ className: "sendbird-modal-header"
+ }, React.createElement(Label, {
+ type: LabelTypography.H_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, titleText));
+};
+ModalHeader.propTypes = {
+ titleText: PropTypes.string.isRequired
+};
+var ModalBody = function ModalBody(_ref2) {
+ var children = _ref2.children;
+ return React.createElement("div", {
+ className: "sendbird-modal-body"
+ }, children);
+};
+ModalBody.propTypes = {
+ children: PropTypes.oneOfType([PropTypes.element.isRequired, PropTypes.arrayOf(PropTypes.element.isRequired)])
+};
+ModalBody.defaultProps = {
+ children: null
+};
+var ModalFooter = function ModalFooter(_ref3) {
+ var onSubmit = _ref3.onSubmit,
+ onCancel = _ref3.onCancel,
+ _ref3$disabled = _ref3.disabled,
+ disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
+ submitText = _ref3.submitText,
+ type = _ref3.type;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ return React.createElement("div", {
+ className: "sendbird-modal-footer"
+ }, React.createElement(Button, {
+ type: Type$1.SECONDARY,
+ onClick: onCancel
+ }, React.createElement(Label, {
+ type: LabelTypography.BUTTON_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, stringSet.BUTTON__CANCEL)), React.createElement(Button, {
+ type: type,
+ disabled: disabled,
+ onClick: onSubmit
+ }, submitText));
+};
+ModalFooter.propTypes = {
+ onCancel: PropTypes.func.isRequired,
+ onSubmit: PropTypes.func.isRequired,
+ submitText: PropTypes.string.isRequired,
+ disabled: PropTypes.bool,
+ type: PropTypes.string
+};
+ModalFooter.defaultProps = {
+ disabled: false,
+ type: Type$1.DANGER
+};
+
+function Modal(props) {
+ var children = props.children,
+ onCancel = props.onCancel,
+ onSubmit = props.onSubmit,
+ disabled = props.disabled,
+ submitText = props.submitText,
+ titleText = props.titleText,
+ hideFooter = props.hideFooter,
+ type = props.type;
+ return createPortal(React.createElement("div", {
+ className: "sendbird-modal"
+ }, React.createElement("div", {
+ className: "sendbird-modal-content"
+ }, React.createElement(ModalHeader, {
+ titleText: titleText
+ }), React.createElement(ModalBody, null, children), !hideFooter && React.createElement(ModalFooter, {
+ disabled: disabled,
+ onCancel: onCancel,
+ onSubmit: onSubmit,
+ submitText: submitText,
+ type: type
+ }), React.createElement("div", {
+ className: "sendbird-modal-close"
+ }, React.createElement(IconButton, {
+ width: "32px",
+ height: "32px",
+ onClick: onCancel
+ }, React.createElement(Icon, {
+ type: IconTypes.CLOSE,
+ fillColor: IconColors.SECONDARY,
+ width: "24px",
+ height: "24px"
+ })))), React.createElement("div", {
+ className: "sendbird-modal-backdrop"
+ })), document.getElementById(MODAL_ROOT));
+}
+
+Modal.propTypes = {
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),
+ onCancel: PropTypes.func.isRequired,
+ onSubmit: PropTypes.func.isRequired,
+ hideFooter: PropTypes.bool,
+ disabled: PropTypes.bool,
+ type: PropTypes.string
+};
+Modal.defaultProps = {
+ children: null,
+ hideFooter: false,
+ disabled: false,
+ type: Type$1.DANGER
+};
+
+var Colors$2 = {
+ ONBACKGROUND_1: 'ONBACKGROUND_1',
+ ONBACKGROUND_2: 'ONBACKGROUND_2',
+ ONBACKGROUND_3: 'ONBACKGROUND_3',
+ ONBACKGROUND_4: 'ONBACKGROUND_4',
+ ONCONTENT_1: 'ONCONTENT_1',
+ PRIMARY: 'PRIMARY',
+ ERROR: 'ERROR'
+};
+function changeColorToClassName$2(color) {
+ switch (color) {
+ case Colors$2.ONBACKGROUND_1:
+ return 'sendbird-color--onbackground-1';
+
+ case Colors$2.ONBACKGROUND_2:
+ return 'sendbird-color--onbackground-2';
+
+ case Colors$2.ONBACKGROUND_3:
+ return 'sendbird-color--onbackground-3';
+
+ case Colors$2.ONBACKGROUND_4:
+ return 'sendbird-color--onbackground-4';
+
+ case Colors$2.ONCONTENT_1:
+ return 'sendbird-color--oncontent-1';
+
+ case Colors$2.PRIMARY:
+ return 'sendbird-color--primary';
+
+ case Colors$2.ERROR:
+ return 'sendbird-color--error';
+
+ default:
+ return null;
+ }
+}
+
+function TextButton(_ref) {
+ var color = _ref.color,
+ children = _ref.children,
+ disabled = _ref.disabled,
+ className = _ref.className,
+ onClick = _ref.onClick,
+ notUnderline = _ref.notUnderline;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React.createElement("div", {
+ role: "button",
+ tabIndex: 0,
+ className: [].concat(_toConsumableArray(injectingClassName), [changeColorToClassName$2(color), notUnderline ? 'sendbird-textbutton--not-underline' : 'sendbird-textbutton', disabled ? 'sendbird-textbutton--disabled' : '']).join(' '),
+ onClick: onClick,
+ onKeyPress: onClick
+ }, children);
+}
+TextButton.propTypes = {
+ color: PropTypes.string,
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ onClick: PropTypes.func,
+ notUnderline: PropTypes.bool,
+ disabled: PropTypes.bool
+};
+TextButton.defaultProps = {
+ color: Colors$2.ONBACKGROUND_1,
+ className: '',
+ onClick: function onClick() {},
+ notUnderline: false,
+ disabled: false
+};
+
+function Types() {
+ return {
+ LOADING: 'LOADING',
+ NO_CHANNELS: 'NO_CHANNELS',
+ WRONG: 'WRONG'
+ };
+}
+var PlaceHolderTypes = Types();
+
+var SEND_MESSAGE_START = 'SEND_MESSAGE_START';
+var SEND_USER_MESSAGE = 'SEND_USER_MESSAGE';
+var SEND_FILE_MESSAGE = 'SEND_FILE_MESSAGE';
+var UPDATE_USER_MESSAGE = 'UPDATE_USER_MESSAGE';
+var DELETE_MESSAGE = 'DELETE_MESSAGE';
+var LEAVE_CHANNEL = 'LEAVE_CHANNEL';
+var CREATE_CHANNEL = 'CREATE_CHANNEL';
+
+var getSdk = function getSdk(store) {
+ var _store$stores = store.stores,
+ stores = _store$stores === void 0 ? {} : _store$stores;
+ var _stores$sdkStore = stores.sdkStore,
+ sdkStore = _stores$sdkStore === void 0 ? {} : _stores$sdkStore;
+ var sdk = sdkStore.sdk;
+ return sdk;
+};
+var getPubSub = function getPubSub(store) {
+ var _store$config = store.config,
+ config = _store$config === void 0 ? {} : _store$config;
+ var pubSub = config.pubSub;
+ return pubSub;
+}; // SendBird disconnect. Invalidates currentUser
+// eslint-disable-next-line max-len
+
+var getConnect = function getConnect(store) {
+ return function (userId, accessToken) {
+ return new Promise(function (resolve, reject) {
+ var sdk = getSdk(store);
+
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ if (!accessToken) {
+ sdk.connect(userId).then(function (res) {
+ return resolve(res);
+ }).catch(function (err) {
+ return reject(err);
+ });
+ } else {
+ sdk.connect(userId, accessToken).then(function (res) {
+ return resolve(res);
+ }).catch(function (err) {
+ return reject(err);
+ });
+ }
+ });
+ };
+}; // SendBird disconnect. Invalidates currentUser
+
+var getDisconnect = function getDisconnect(store) {
+ return function () {
+ return new Promise(function (resolve, reject) {
+ var sdk = getSdk(store);
+
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.disconnect().then(function (res) {
+ return resolve(res);
+ }).catch(function (err) {
+ return reject(err);
+ });
+ });
+ };
+}; // Using the updateCurrentUserInfo() method
+// you can update a user's nickname and profile image with a URL
+// eslint-disable-next-line max-len
+
+var getUpdateUserInfo = function getUpdateUserInfo(store) {
+ return function (nickName, profileUrl) {
+ return new Promise(function (resolve, reject) {
+ var sdk = getSdk(store);
+
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.updateCurrentUserInfo(nickName, profileUrl).then(function (res) {
+ return resolve(res);
+ }).catch(function (err) {
+ return reject(err);
+ });
+ });
+ };
+};
+var getSendUserMessage = function getSendUserMessage(store) {
+ return function (channelUrl, userMessageParams) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ var promisify = function promisify() {
+ var pendingMsg = null;
+ var pendingPromise = new Promise(function (resolve_, reject_) {
+ pendingMsg = channel.sendUserMessage(userMessageParams, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject_(error);
+ return;
+ }
+
+ resolve_(message);
+ pubsub.publish(SEND_USER_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ });
+ pubsub.publish(SEND_MESSAGE_START, {
+ message: pendingMsg,
+ channel: channel
+ });
+ });
+
+ pendingPromise.get = function () {
+ return pendingMsg;
+ };
+
+ return pendingPromise;
+ };
+
+ resolve(promisify());
+ }).catch(reject);
+ });
+ };
+};
+var getSendFileMessage = function getSendFileMessage(store) {
+ return function (channelUrl, fileMessageParams) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ var promisify = function promisify() {
+ var pendingMsg = null;
+ var pendingPromise = new Promise(function (resolve_, reject_) {
+ pendingMsg = channel.sendFileMessage(fileMessageParams, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject_(error);
+ return;
+ }
+
+ resolve_(message);
+ pubsub.publish(SEND_FILE_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ });
+ });
+
+ if (fileMessageParams.file) {
+ // keep the file's local version in pendingMsg.localUrl
+ // because promise doesnt allow overriding of pendingMsg.url
+ // eslint-disable-next-line no-param-reassign
+ pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);
+ }
+
+ if (fileMessageParams.fileUrl) {
+ // eslint-disable-next-line no-param-reassign
+ pendingMsg.localUrl = fileMessageParams.fileUrl;
+ } // eslint-disable-next-line no-param-reassign
+
+
+ pendingMsg.requestState = 'pending';
+ pubsub.publish(SEND_MESSAGE_START, {
+ message: pendingMsg,
+ channel: channel
+ });
+
+ pendingPromise.get = function () {
+ return pendingMsg;
+ };
+
+ return pendingPromise;
+ };
+
+ resolve(promisify());
+ }).catch(reject);
+ });
+ };
+};
+var getUpdateUserMessage = function getUpdateUserMessage(store) {
+ return function (channelUrl, messageId, params) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.updateUserMessage(messageId, params, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject(error);
+ return;
+ }
+
+ resolve(message);
+ pubsub.publish(UPDATE_USER_MESSAGE, {
+ message: message,
+ channel: channel,
+ // workaround for updating channelPreview on message-edit
+ // https://sendbird.atlassian.net/browse/UIKIT-268
+ fromSelector: true
+ });
+ });
+ }).catch(reject);
+ });
+ };
+};
+var getDeleteMessage = function getDeleteMessage(store) {
+ return function (channelUrl, message) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ var messageId = message.messageId;
+ channel.deleteMessage(message, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var error = err;
+
+ if (swapParams) {
+ error = res;
+ }
+
+ if (error) {
+ reject(error);
+ return;
+ }
+
+ resolve(message);
+ pubsub.publish(DELETE_MESSAGE, {
+ messageId: messageId,
+ channel: channel
+ });
+ });
+ }).catch(reject);
+ });
+ };
+};
+var getResendUserMessage = function getResendUserMessage(store) {
+ return function (channelUrl, failedMessage) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.resendUserMessage(failedMessage).then(function (message) {
+ resolve(message);
+ pubsub.publish(SEND_USER_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+var getResendFileMessage = function getResendFileMessage(store) {
+ return function (channelUrl, failedMessage) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.resendFileMessage(failedMessage).then(function (message) {
+ resolve(message);
+ pubsub.publish(SEND_FILE_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+var getCreateChannel = function getCreateChannel(store) {
+ return function (params) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.createChannel(params).then(function (channel) {
+ resolve(channel);
+ pubsub.publish(CREATE_CHANNEL, {
+ channel: channel
+ });
+ }).catch(reject);
+ });
+ };
+};
+var getLeaveChannel = function getLeaveChannel(store) {
+ return function (channelUrl) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.leave().then(function () {
+ resolve(channel);
+ pubsub.publish(LEAVE_CHANNEL, {
+ channel: channel
+ });
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+var getFreezeChannel = function getFreezeChannel(store) {
+ return function (channelUrl) {
+ var sdk = getSdk(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.freeze().then(function () {
+ // do not need pubsub here - event listener works
+ resolve(channel);
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+var getUnFreezeChannel = function getUnFreezeChannel(store) {
+ return function (channelUrl) {
+ var sdk = getSdk(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ channel.unfreeze().then(function () {
+ // do not need pubsub here - event listener works
+ resolve(channel);
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+
+var getCreateOpenChannel = function getCreateOpenChannel(store) {
+ return function (params) {
+ var sdk = getSdk(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.createChannel(params).then(function (channel) {
+ resolve(channel);
+ }).catch(reject);
+ });
+ };
+};
+
+var enterOpenChannel = function enterOpenChannel(store) {
+ return function (channelUrl) {
+ var sdk = getSdk(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl, function (openChannel, error) {
+ if (error) {
+ reject(new Error(error));
+ return;
+ }
+
+ openChannel.enter(function (response, enterError) {
+ if (error) {
+ reject(new Error(enterError));
+ return;
+ }
+
+ resolve(response);
+ });
+ });
+ });
+ };
+};
+
+var exitOpenChannel = function exitOpenChannel(store) {
+ return function (channelUrl) {
+ var sdk = getSdk(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl, function (openChannel, error) {
+ if (error) {
+ reject(new Error(error));
+ return;
+ }
+
+ openChannel.exit(function (response, exitError) {
+ if (error) {
+ reject(new Error(exitError));
+ return;
+ }
+
+ resolve(response);
+ });
+ });
+ });
+ };
+};
+
+var getOpenChannelSendUserMessage = function getOpenChannelSendUserMessage(store) {
+ return function (channelUrl, userMessageParams) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl).then(function (channel) {
+ var promisify = function promisify() {
+ var pendingMsg = null;
+ var pendingPromise = new Promise(function (resolve_, reject_) {
+ pendingMsg = channel.sendUserMessage(userMessageParams, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject_(error);
+ return;
+ }
+
+ resolve_(message);
+ pubsub.publish(SEND_USER_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ });
+ pubsub.publish(SEND_MESSAGE_START, {
+ message: pendingMsg,
+ channel: channel
+ });
+ });
+
+ pendingPromise.get = function () {
+ return pendingMsg;
+ };
+
+ return pendingPromise;
+ };
+
+ resolve(promisify());
+ }).catch(reject);
+ });
+ };
+};
+
+var getOpenChannelSendFileMessage = function getOpenChannelSendFileMessage(store) {
+ return function (channelUrl, fileMessageParams) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl).then(function (channel) {
+ var promisify = function promisify() {
+ var pendingMsg = null;
+ var pendingPromise = new Promise(function (resolve_, reject_) {
+ pendingMsg = channel.sendFileMessage(fileMessageParams, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject_(error);
+ return;
+ }
+
+ resolve_(message);
+ pubsub.publish(SEND_FILE_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ });
+ });
+
+ if (fileMessageParams.file) {
+ // keep the file's local version in pendingMsg.localUrl
+ // because promise doesnt allow overriding of pendingMsg.url
+ // eslint-disable-next-line no-param-reassign
+ pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);
+ }
+
+ if (fileMessageParams.fileUrl) {
+ // eslint-disable-next-line no-param-reassign
+ pendingMsg.localUrl = fileMessageParams.fileUrl;
+ } // eslint-disable-next-line no-param-reassign
+
+
+ pendingMsg.requestState = 'pending';
+ pubsub.publish(SEND_MESSAGE_START, {
+ message: pendingMsg,
+ channel: channel
+ });
+
+ pendingPromise.get = function () {
+ return pendingMsg;
+ };
+
+ return pendingPromise;
+ };
+
+ resolve(promisify());
+ }).catch(reject);
+ });
+ };
+};
+
+var getOpenChannelUpdateUserMessage = function getOpenChannelUpdateUserMessage(store) {
+ return function (channelUrl, messageId, params) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl).then(function (channel) {
+ channel.updateUserMessage(messageId, params, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var message = res;
+ var error = err;
+
+ if (swapParams) {
+ message = err;
+ error = res;
+ }
+
+ if (error) {
+ reject(error);
+ return;
+ }
+
+ resolve(message);
+ pubsub.publish(UPDATE_USER_MESSAGE, {
+ message: message,
+ channel: channel,
+ // workaround for updating channelPreview on message-edit
+ // https://sendbird.atlassian.net/browse/UIKIT-268
+ fromSelector: true
+ });
+ });
+ }).catch(reject);
+ });
+ };
+};
+
+var getOpenChannelDeleteMessage = function getOpenChannelDeleteMessage(store) {
+ return function (channelUrl, message) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
+ var messageId = message.messageId;
+ channel.deleteMessage(message, function (res, err) {
+ var swapParams = sdk.getErrorFirstCallback();
+ var error = err;
+
+ if (swapParams) {
+ error = res;
+ }
+
+ if (error) {
+ reject(error);
+ return;
+ }
+
+ resolve(message);
+ pubsub.publish(DELETE_MESSAGE, {
+ messageId: messageId,
+ channel: channel
+ });
+ });
+ }).catch(reject);
+ });
+ };
+};
+
+var getOpenChannelResendUserMessage = function getOpenChannelResendUserMessage(store) {
+ return function (channelUrl, failedMessage) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl).then(function (channel) {
+ channel.resendUserMessage(failedMessage).then(function (message) {
+ resolve(message);
+ pubsub.publish(SEND_USER_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+
+var getOpenChannelResendFileMessage = function getOpenChannelResendFileMessage(store) {
+ return function (channelUrl, failedMessage) {
+ var sdk = getSdk(store);
+ var pubsub = getPubSub(store);
+ return new Promise(function (resolve, reject) {
+ if (!sdk) {
+ reject(new Error('Sdk not found'));
+ }
+
+ sdk.OpenChannel.getChannel(channelUrl).then(function (channel) {
+ channel.resendFileMessage(failedMessage).then(function (message) {
+ resolve(message);
+ pubsub.publish(SEND_FILE_MESSAGE, {
+ message: message,
+ channel: channel
+ });
+ }).catch(reject);
+ }).catch(reject);
+ });
+ };
+};
+
+var selectors = {
+ getSdk: getSdk,
+ getConnect: getConnect,
+ getDisconnect: getDisconnect,
+ getUpdateUserInfo: getUpdateUserInfo,
+ getSendUserMessage: getSendUserMessage,
+ getSendFileMessage: getSendFileMessage,
+ getUpdateUserMessage: getUpdateUserMessage,
+ getDeleteMessage: getDeleteMessage,
+ getResendUserMessage: getResendUserMessage,
+ getResendFileMessage: getResendFileMessage,
+ getFreezeChannel: getFreezeChannel,
+ getUnFreezeChannel: getUnFreezeChannel,
+ getCreateChannel: getCreateChannel,
+ getLeaveChannel: getLeaveChannel,
+ getCreateOpenChannel: getCreateOpenChannel,
+ enterOpenChannel: enterOpenChannel,
+ exitOpenChannel: exitOpenChannel,
+ getOpenChannelSendUserMessage: getOpenChannelSendUserMessage,
+ getOpenChannelSendFileMessage: getOpenChannelSendFileMessage,
+ getOpenChannelUpdateUserMessage: getOpenChannelUpdateUserMessage,
+ getOpenChannelDeleteMessage: getOpenChannelDeleteMessage,
+ getOpenChannelResendUserMessage: getOpenChannelResendUserMessage,
+ getOpenChannelResendFileMessage: getOpenChannelResendFileMessage
+};
+
+function UserProfile(_a) {
+ var user = _a.user,
+ currentUserId = _a.currentUserId,
+ sdk = _a.sdk,
+ logger = _a.logger,
+ _b = _a.disableMessaging,
+ disableMessaging = _b === void 0 ? false : _b,
+ createChannel = _a.createChannel,
+ onSuccess = _a.onSuccess;
+ var stringSet = useContext(LocalizationContext).stringSet;
+ return React.createElement("div", {
+ className: "sendbird__user-profile"
+ }, React.createElement("section", {
+ className: "sendbird__user-profile-avatar"
+ }, React.createElement(Avatar$1, {
+ height: "80px",
+ width: "80px",
+ src: user.profileUrl
+ })), React.createElement("section", {
+ className: "sendbird__user-profile-name"
+ }, React.createElement(Label, {
+ type: LabelTypography.H_2,
+ color: LabelColors.ONBACKGROUND_1
+ }, user.nickname || stringSet.NO_NAME)), user.userId !== currentUserId && !disableMessaging && React.createElement("section", {
+ className: "sendbird__user-profile-message"
+ }, React.createElement(Button, {
+ type: Type$1.SECONDARY,
+ onClick: function onClick() {
+ var params = new sdk.GroupChannelParams();
+ params.isDistinct = true;
+ params.addUserIds([user.userId]);
+ onSuccess();
+ createChannel(params).then(function (groupChannel) {
+ logger.info('UserProfile, channel create', groupChannel);
+ });
+ }
+ }, stringSet.USER_PROFILE__MESSAGE)), React.createElement("div", {
+ className: "sendbird__user-profile-seperator"
+ }), React.createElement("section", {
+ className: "sendbird__user-profile-userId"
+ }, React.createElement(Label, {
+ className: "sendbird__user-profile-userId--label",
+ type: LabelTypography.CAPTION_2,
+ color: LabelColors.ONBACKGROUND_2
+ }, stringSet.USER_PROFILE__USER_ID), React.createElement(Label, {
+ className: "sendbird__user-profile-userId--value",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_1
+ }, user.userId)));
+}
+
+var mapStoreToProps = function mapStoreToProps(store) {
+ return {
+ sdk: getSdk(store),
+ createChannel: getCreateChannel(store),
+ logger: store.config.logger,
+ pubsub: store.config.pubSub
+ };
+};
+
+var ConnectedUserProfile = withSendbirdContext(UserProfile, mapStoreToProps);
+
+var MenuItems =
+/*#__PURE__*/
+function (_Component) {
+ _inherits(MenuItems, _Component);
+
+ function MenuItems(props) {
+ var _this;
+
+ _classCallCheck(this, MenuItems);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(MenuItems).call(this, props));
+
+ _defineProperty(_assertThisInitialized(_this), "showParent", function () {
+ var _this$props$parentCon = _this.props.parentContainRef,
+ parentContainRef = _this$props$parentCon === void 0 ? {} : _this$props$parentCon;
+ var current = parentContainRef.current;
+
+ if (parentContainRef && current) {
+ current.classList.add('sendbird-icon--pressed');
+ }
+ });
+
+ _defineProperty(_assertThisInitialized(_this), "hideParent", function () {
+ var _this$props$parentCon2 = _this.props.parentContainRef,
+ parentContainRef = _this$props$parentCon2 === void 0 ? {} : _this$props$parentCon2;
+ var current = parentContainRef.current;
+
+ if (parentContainRef && current) {
+ current.classList.remove('sendbird-icon--pressed');
+ }
+ });
+
+ _defineProperty(_assertThisInitialized(_this), "setupEvents", function () {
+ var closeDropdown = _this.props.closeDropdown;
+
+ var _assertThisInitialize = _assertThisInitialized(_this),
+ menuRef = _assertThisInitialize.menuRef;
+
+ var handleClickOutside = function handleClickOutside(event) {
+ if (menuRef.current && !menuRef.current.contains(event.target)) {
+ closeDropdown();
+ }
+ };
+
+ _this.setState({
+ handleClickOutside: handleClickOutside
+ });
+
+ document.addEventListener('mousedown', handleClickOutside);
+ });
+
+ _defineProperty(_assertThisInitialized(_this), "cleanUpEvents", function () {
+ var handleClickOutside = _this.state.handleClickOutside;
+ document.removeEventListener('mousedown', handleClickOutside);
+ });
+
+ _defineProperty(_assertThisInitialized(_this), "getMenuPosition", function () {
+ var _this$props = _this.props,
+ parentRef = _this$props.parentRef,
+ openLeft = _this$props.openLeft;
+ var parentRect = parentRef.current.getBoundingClientRect();
+ var x = parentRect.x || parentRect.left;
+ var y = parentRect.y || parentRect.top;
+ var menuStyle = {
+ top: y,
+ left: x
+ };
+ if (!_this.menuRef.current) return menuStyle;
+ var _window = window,
+ innerWidth = _window.innerWidth,
+ innerHeight = _window.innerHeight;
+
+ var rect = _this.menuRef.current.getBoundingClientRect();
+
+ if (y + rect.height > innerHeight) {
+ menuStyle.top -= rect.height;
+ }
+
+ if (x + rect.width > innerWidth && !openLeft) {
+ menuStyle.left -= rect.width;
+ }
+
+ if (menuStyle.top < 0) {
+ menuStyle.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;
+ }
+
+ if (menuStyle.left < 0) {
+ menuStyle.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;
+ }
+
+ menuStyle.top += 32;
+
+ if (openLeft) {
+ var padding = Number.isNaN(rect.width - 30) ? 108 // default
+ : rect.width - 30;
+ menuStyle.left -= padding;
+ }
+
+ return _this.setState({
+ menuStyle: menuStyle
+ });
+ });
+
+ _this.menuRef = React.createRef();
+ _this.state = {
+ menuStyle: {},
+ handleClickOutside: function handleClickOutside() {}
+ };
+ return _this;
+ }
+
+ _createClass(MenuItems, [{
+ key: "componentDidMount",
+ value: function componentDidMount() {
+ this.setupEvents();
+ this.getMenuPosition();
+ this.showParent();
+ }
+ }, {
+ key: "componentWillUnmount",
+ value: function componentWillUnmount() {
+ this.cleanUpEvents();
+ this.hideParent();
+ }
+ }, {
+ key: "render",
+ value: function render() {
+ var menuStyle = this.state.menuStyle;
+ var _this$props2 = this.props,
+ children = _this$props2.children,
+ style = _this$props2.style;
+ return createPortal(React.createElement(React.Fragment, null, React.createElement("div", {
+ className: "sendbird-dropdown__menu-backdrop"
+ }), React.createElement("ul", {
+ className: "sendbird-dropdown__menu",
+ ref: this.menuRef,
+ style: _objectSpread2({
+ display: 'inline-block',
+ position: 'fixed',
+ left: "".concat(Math.round(menuStyle.left), "px"),
+ top: "".concat(Math.round(menuStyle.top), "px")
+ }, style)
+ }, children)), document.getElementById('sendbird-dropdown-portal'));
+ }
+ }]);
+
+ return MenuItems;
+}(Component);
+MenuItems.propTypes = {
+ closeDropdown: PropTypes.func.isRequired,
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired,
+ style: PropTypes.shape({}),
+ // https://stackoverflow.com/a/51127130
+ parentRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
+ current: PropTypes.instanceOf(Element)
+ })]).isRequired,
+ parentContainRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
+ current: PropTypes.instanceOf(Element)
+ })]).isRequired,
+ openLeft: PropTypes.bool
+};
+MenuItems.defaultProps = {
+ style: {},
+ openLeft: false
+};
+
+var componentClassName = 'sendbird-sort-by-row';
+function SortByRow(_ref) {
+ var className = _ref.className,
+ maxItemCount = _ref.maxItemCount,
+ itemWidth = _ref.itemWidth,
+ itemHeight = _ref.itemHeight,
+ children = _ref.children;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ injectingClassName.unshift(componentClassName);
+
+ if (children.length > maxItemCount) {
+ var result = [];
+
+ for (var i = 0; i < children.length; i += maxItemCount) {
+ result.push(React.createElement("div", {
+ className: injectingClassName.join(' '),
+ style: {
+ width: itemWidth * maxItemCount,
+ height: itemHeight
+ },
+ key: className + i
+ }, children.slice(i, i + maxItemCount)));
+ }
+
+ return result;
+ }
+
+ return React.createElement("div", {
+ className: injectingClassName.join(' '),
+ style: {
+ width: itemWidth * children.length,
+ height: itemHeight
+ }
+ }, children);
+}
+SortByRow.propTypes = {
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ maxItemCount: PropTypes.number.isRequired,
+ itemWidth: PropTypes.number.isRequired,
+ itemHeight: PropTypes.number.isRequired,
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).isRequired
+};
+SortByRow.defaultProps = {
+ className: ''
+};
+
+var EmojiListItems =
+/*#__PURE__*/
+function (_Component) {
+ _inherits(EmojiListItems, _Component);
+
+ function EmojiListItems(props) {
+ var _this;
+
+ _classCallCheck(this, EmojiListItems);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(EmojiListItems).call(this, props));
+
+ _defineProperty(_assertThisInitialized(_this), "showParent", function () {
+ var _this$props$parentCon = _this.props.parentContainRef,
+ parentContainRef = _this$props$parentCon === void 0 ? {} : _this$props$parentCon;
+ var current = parentContainRef.current;
+
+ if (parentContainRef && current) {
+ current.classList.add('sendbird-reactions--pressed');
+ }
+ });
+
+ _defineProperty(_assertThisInitialized(_this), "hideParent", function () {
+ var _this$props$parentCon2 = _this.props.parentContainRef,
+ parentContainRef = _this$props$parentCon2 === void 0 ? {} : _this$props$parentCon2;
+ var current = parentContainRef.current;
+
+ if (parentContainRef && current) {
+ current.classList.remove('sendbird-reactions--pressed');
+ }
+ });
+
+ _defineProperty(_assertThisInitialized(_this), "setupEvents", function () {
+ var closeDropdown = _this.props.closeDropdown;
+
+ var _assertThisInitialize = _assertThisInitialized(_this),
+ reactionRef = _assertThisInitialize.reactionRef;
+
+ var handleClickOutside = function handleClickOutside(event) {
+ if (reactionRef.current && !reactionRef.current.contains(event.target)) {
+ closeDropdown();
+ }
+ };
+
+ _this.setState({
+ handleClickOutside: handleClickOutside
+ });
+
+ document.addEventListener('mousedown', handleClickOutside);
+ });
+
+ _defineProperty(_assertThisInitialized(_this), "cleanUpEvents", function () {
+ var handleClickOutside = _this.state.handleClickOutside;
+ document.removeEventListener('mousedown', handleClickOutside);
+ });
+
+ _defineProperty(_assertThisInitialized(_this), "getBarPosition", function () {
+ var _this$props = _this.props,
+ parentRef = _this$props.parentRef,
+ spaceFromTrigger = _this$props.spaceFromTrigger;
+ var spaceFromTriggerX = spaceFromTrigger.x || 0;
+ var spaceFromTriggerY = spaceFromTrigger.y || 0;
+ var parentRect = parentRef.current.getBoundingClientRect();
+ var x = parentRect.x || parentRect.left;
+ var y = parentRect.y || parentRect.top;
+ var reactionStyle = {
+ top: y,
+ left: x
+ };
+ if (!_this.reactionRef.current) return reactionStyle;
+
+ var rect = _this.reactionRef.current.getBoundingClientRect(); // const childRect = this.reactionRef.current.children[0].getBoundingClientRect();
+
+
+ if (reactionStyle.top < rect.height) {
+ reactionStyle.top += parentRect.height;
+ reactionStyle.top += spaceFromTriggerY;
+ } else {
+ reactionStyle.top -= rect.height;
+ reactionStyle.top -= spaceFromTriggerY;
+ }
+
+ reactionStyle.left -= rect.width / 2;
+ reactionStyle.left += parentRect.height / 2 - 2;
+ reactionStyle.left += spaceFromTriggerX;
+ var maximumLeft = window.innerWidth - rect.width;
+
+ if (maximumLeft < reactionStyle.left) {
+ reactionStyle.left = maximumLeft;
+ }
+
+ if (reactionStyle.left < 0) {
+ reactionStyle.left = 0;
+ }
+
+ return _this.setState({
+ reactionStyle: reactionStyle
+ });
+ });
+
+ _this.reactionRef = React.createRef();
+ _this.state = {
+ reactionStyle: {},
+ handleClickOutside: function handleClickOutside() {}
+ };
+ return _this;
+ }
+
+ _createClass(EmojiListItems, [{
+ key: "componentDidMount",
+ value: function componentDidMount() {
+ this.setupEvents();
+ this.getBarPosition();
+ this.showParent();
+ }
+ }, {
+ key: "componentWillUnmount",
+ value: function componentWillUnmount() {
+ this.cleanUpEvents();
+ this.hideParent();
+ }
+ }, {
+ key: "render",
+ value: function render() {
+ var reactionStyle = this.state.reactionStyle;
+ var children = this.props.children;
+ return createPortal(React.createElement(React.Fragment, null, React.createElement("div", {
+ className: "sendbird-dropdown__menu-backdrop"
+ }), React.createElement("ul", {
+ className: "sendbird-dropdown__reaction-bar",
+ ref: this.reactionRef,
+ style: {
+ display: 'inline-block',
+ position: 'fixed',
+ left: "".concat(Math.round(reactionStyle.left), "px"),
+ top: "".concat(Math.round(reactionStyle.top), "px")
+ }
+ }, React.createElement(SortByRow, {
+ className: "sendbird-dropdown__reaction-bar__row",
+ maxItemCount: 8,
+ itemWidth: 44,
+ itemHeight: 40
+ }, children))), document.getElementById('sendbird-emoji-list-portal'));
+ }
+ }]);
+
+ return EmojiListItems;
+}(Component);
+EmojiListItems.propTypes = {
+ closeDropdown: PropTypes.func.isRequired,
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired,
+ parentRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
+ current: PropTypes.instanceOf(Element)
+ })]).isRequired,
+ parentContainRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
+ current: PropTypes.instanceOf(Element)
+ })]).isRequired,
+ spaceFromTrigger: PropTypes.shape({
+ x: PropTypes.number,
+ y: PropTypes.number
+ })
+};
+EmojiListItems.defaultProps = {
+ spaceFromTrigger: {}
+};
+
+var ENTER = 13;
+var MenuItems$1 = MenuItems;
+var EmojiListItems$1 = EmojiListItems;
+var MenuItem = function MenuItem(_ref) {
+ var children = _ref.children,
+ onClick = _ref.onClick,
+ className = _ref.className;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React.createElement("li", {
+ tabIndex: 0,
+ className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-dropdown__menu-item']).join(' '),
+ onClick: onClick,
+ onKeyPress: function onKeyPress(e) {
+ if (e.keyCode === ENTER) {
+ onClick(e);
+ }
+ },
+ role: "menuitem"
+ }, React.createElement(Label, {
+ type: LabelTypography.SUBTITLE_2,
+ color: LabelColors.ONBACKGROUND_1,
+ className: "sendbird-dropdown__menu-item__text"
+ }, children));
+};
+MenuItem.propTypes = {
+ onClick: PropTypes.func.isRequired,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired
+};
+MenuItem.defaultProps = {
+ className: ''
+};
+function ContextMenu(_ref2) {
+ var menuTrigger = _ref2.menuTrigger,
+ menuItems = _ref2.menuItems;
+
+ var _useState = useState(false),
+ _useState2 = _slicedToArray(_useState, 2),
+ showMenu = _useState2[0],
+ setShowMenu = _useState2[1];
+
+ return React.createElement("div", {
+ className: "sendbird-context-menu",
+ style: {
+ display: 'inline'
+ }
+ }, menuTrigger(function () {
+ return setShowMenu(!showMenu);
+ }), showMenu && menuItems(function () {
+ return setShowMenu(false);
+ }));
+}
+ContextMenu.propTypes = {
+ menuTrigger: PropTypes.func.isRequired,
+ menuItems: PropTypes.func.isRequired
+};
+
+function Loader(_ref) {
+ var children = _ref.children,
+ className = _ref.className,
+ width = _ref.width,
+ height = _ref.height;
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React.createElement("div", {
+ className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-loader']).join(' '),
+ style: {
+ width: typeof width === 'string' ? width : "".concat(width, "px"),
+ height: typeof height === 'string' ? height : "".concat(height, "px")
+ }
+ }, children);
+}
+Loader.propTypes = {
+ children: PropTypes.element,
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
+};
+Loader.defaultProps = {
+ children: React.createElement(Icon, {
+ type: IconTypes.SPINNER,
+ width: "26px",
+ height: "26px"
+ }),
+ className: '',
+ width: '26px',
+ height: '26px'
+};
+
+var PlaceHolderTypes$1 = PlaceHolderTypes;
+function PlaceHolder(_ref) {
+ var className = _ref.className,
+ type = _ref.type,
+ retryToConnect = _ref.retryToConnect;
+
+ var _useContext = useContext(LocalizationContext),
+ stringSet = _useContext.stringSet;
+
+ var injectingClassName = Array.isArray(className) ? className : [className];
+ return React.createElement("div", {
+ className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-place-holder']).join(' ')
+ }, type === PlaceHolderTypes$1.LOADING ? React.createElement(Loader, {
+ width: "48px",
+ height: "48px"
+ }, React.createElement(Icon, {
+ type: IconTypes.SPINNER_LARGE,
+ width: "48px",
+ height: "48px"
+ })) : null, type === PlaceHolderTypes$1.NO_CHANNELS || type === PlaceHolderTypes$1.WRONG ? React.createElement("div", {
+ className: "sendbird-place-holder__body"
+ }, type === PlaceHolderTypes$1.NO_CHANNELS && React.createElement(Icon, {
+ className: "sendbird-place-holder__body__icon",
+ type: IconTypes.CHAT,
+ fillColor: IconColors.ON_BACKGROUND_3,
+ width: "64px",
+ height: "64px"
+ }), type === PlaceHolderTypes$1.WRONG && React.createElement(Icon, {
+ className: "sendbird-place-holder__body__icon",
+ type: IconTypes.ERROR,
+ fillColor: IconColors.ON_BACKGROUND_3,
+ width: "64px",
+ height: "64px"
+ }), React.createElement(Label, {
+ className: "sendbird-place-holder__body__text",
+ type: LabelTypography.BODY_1,
+ color: LabelColors.ONBACKGROUND_2
+ }, type === PlaceHolderTypes$1.NO_CHANNELS ? stringSet.PLACE_HOLDER__NO_CHANNEL : stringSet.PLACE_HOLDER__WRONG), retryToConnect ? React.createElement("div", {
+ className: "sendbird-place-holder__body__reconnect",
+ role: "button",
+ tabIndex: 0,
+ onClick: retryToConnect,
+ onKeyPress: retryToConnect
+ }, React.createElement(Icon, {
+ className: "sendbird-place-holder__body__reconnect__icon",
+ type: IconTypes.REFRESH,
+ fillColor: IconColors.PRIMARY,
+ width: "20px",
+ height: "20px"
+ }), React.createElement(Label, {
+ className: "sendbird-place-holder__body__reconnect__text",
+ type: LabelTypography.BUTTON_1,
+ color: LabelColors.PRIMARY
+ }, stringSet.PLACE_HOLDER__RETRY_TO_CONNECT)) : null) : null);
+}
+PlaceHolder.propTypes = {
+ className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
+ type: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(PlaceHolderTypes$1)), PropTypes.string]).isRequired,
+ retryToConnect: PropTypes.func
+};
+PlaceHolder.defaultProps = {
+ className: '',
+ retryToConnect: null
+};
+
+export { Avatar$1 as A, Button as B, ContextMenu as C, DELETE_MESSAGE as D, EmojiListItems$1 as E, selectors as F, Icon as I, LabelStringSet as L, Modal as M, PlaceHolder as P, SEND_MESSAGE_START as S, Type$1 as T, UPDATE_USER_MESSAGE as U, IconTypes as a, Label as b, LabelTypography as c, LabelColors as d, IconButton as e, TextButton as f, IconColors as g, MenuItems$1 as h, MenuItem as i, CREATE_CHANNEL as j, LEAVE_CHANNEL as k, UserProfileProvider as l, PlaceHolderTypes as m, UserProfileContext as n, ConnectedUserProfile as o, SEND_USER_MESSAGE as p, SEND_FILE_MESSAGE as q, ImageRenderer as r, Loader as s, PlaceHolderTypes$1 as t, Colors$2 as u, changeColorToClassName$2 as v, Size as w, MODAL_ROOT as x, changeColorToClassName$1 as y, getSdk as z };
+//# sourceMappingURL=index-ec3bf9fe.js.map
diff --git a/dist/esm/index-ec3bf9fe.js.map b/dist/esm/index-ec3bf9fe.js.map
new file mode 100644
index 0000000..b4b4f52
--- /dev/null
+++ b/dist/esm/index-ec3bf9fe.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index-ec3bf9fe.js","sources":["../../../src/lib/UserProfileContext.jsx","../../../src/ui/ImageRenderer/index.jsx","../../../src/ui/Icon/type.js","../../../src/ui/Icon/index.jsx","../../../src/ui/Avatar/index.tsx","../../../src/ui/Label/types.js","../../../src/ui/Label/utils.js","../../../src/ui/Label/index.jsx","../../../src/ui/IconButton/index.jsx","../../../src/hooks/useModal/ModalRoot/index.jsx","../../../src/ui/Button/type.js","../../../src/ui/Button/utils.js","../../../src/ui/Button/index.jsx","../../../src/ui/Modal/index.jsx","../../../src/utils/color.js","../../../src/ui/TextButton/index.jsx","../../../src/ui/PlaceHolder/type.js","../../../src/lib/pubSub/topics.js","../../../src/lib/selectors.js","../../../src/ui/UserProfile/index.tsx","../../../src/ui/ContextMenu/items/MenuItems.jsx","../../../src/ui/SortByRow/index.jsx","../../../src/ui/ContextMenu/items/EmojiListItems.jsx","../../../src/ui/ContextMenu/index.jsx","../../../src/ui/Loader/index.jsx","../../../src/ui/PlaceHolder/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst UserProfileContext = React.createContext({\n disableUserProfile: true,\n isOpenChannel: false,\n renderUserProfile: null,\n});\n\nconst UserProfileProvider = (props) => {\n const { children, className } = props;\n return (\n \n \n {children}\n
\n \n );\n};\n\nUserProfileProvider.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n isOpenChannel: PropTypes.bool,\n // eslint-disable-next-line react/no-unused-prop-types\n disableUserProfile: PropTypes.bool,\n // eslint-disable-next-line react/no-unused-prop-types\n renderUserProfile: PropTypes.func,\n className: PropTypes.string,\n};\n\nUserProfileProvider.defaultProps = {\n className: null,\n isOpenChannel: false,\n disableUserProfile: false,\n renderUserProfile: null,\n};\n\nexport { UserProfileContext, UserProfileProvider };\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\n/*\n ImageRenderer displays image with url or source\n it checks if the source exist with img tag first\n if it exists onLoad is called, if not onError is called\n and those properties switch img tag to real purposing element\n*/\n\nexport default function ImageRenderer({\n alt,\n url,\n width,\n height,\n className,\n defaultComponent,\n circle,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift('sendbird-image-renderer');\n const [realElement, setRealElement] = useState(null);\n useEffect(() => {\n setRealElement(null);\n }, [url]);\n return (\n realElement || (\n {\n setRealElement(typeof defaultComponent === 'function' ? defaultComponent() : defaultComponent);\n }}\n onLoad={() => {\n setRealElement((\n
\n ));\n }}\n />\n )\n );\n}\n\nImageRenderer.propTypes = {\n alt: PropTypes.string,\n url: PropTypes.string.isRequired,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n className: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.string,\n ]),\n defaultComponent: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n circle: PropTypes.bool,\n};\nImageRenderer.defaultProps = {\n alt: '',\n className: '',\n circle: false,\n defaultComponent: null,\n width: null,\n height: null,\n};\n","export default {\n ADD: 'ADD',\n ATTACH: 'ATTACH',\n ARROW_LEFT: 'ARROW_LEFT',\n AVATAR_DARK: 'AVATAR_DARK',\n AVATAR_LIGHT: 'AVATAR_LIGHT',\n AVATAR_NO_IMAGE: 'AVATAR_NO_IMAGE',\n BROADCAST_LARGE_DARK: 'BROADCAST_LARGE_DARK',\n BROADCAST_LARGE_LIGHT: 'BROADCAST_LARGE_LIGHT',\n BROADCAST_DARK: 'BROADCAST_DARK',\n BROADCAST_LIGHT: 'BROADCAST_LIGHT',\n BROADCAST: 'BROADCAST',\n FROZEN_DARK: 'FROZEN_DARK',\n FROZEN_LIGHT: 'FROZEN_LIGHT',\n CAMERA: 'CAMERA',\n MORE: 'MORE',\n MUTE: 'MUTE',\n NO_THUMBNAIL: 'NO_THUMBNAIL',\n CHECKBOX: 'CHECKBOX',\n CHECKBOX_OFF: 'CHECKBOX_OFF',\n CLOSE: 'CLOSE',\n COPY: 'COPY',\n CHAT: 'CHAT',\n CREATE: 'CREATE',\n DELETE: 'DELETE',\n DISCONNECTED: 'DISCONNECTED',\n DUMMY: 'DUMMY',\n EDIT: 'EDIT',\n ERROR: 'ERROR',\n ERROR_FILLED: 'ERROR_FILLED',\n EMOJI_FAILED: 'EMOJI_FAILED',\n EMOJI_REACTIONS_ADD: 'EMOJI_REACTIONS_ADD',\n EMOJI_REACTIONS_ADD_GRAY: 'EMOJI_REACTIONS_ADD_GRAY',\n DELIVERED: 'DELIVERED',\n DOCUMENT: 'DOCUMENT',\n DOWNLOAD: 'DOWNLOAD',\n FILE_AUDIO: 'FILE_AUDIO',\n FILE_DOCUMENT: 'FILE_DOCUMENT',\n GIF: 'GIF',\n INFO: 'INFO',\n LEAVE: 'LEAVE',\n MEMBERS: 'MEMBERS',\n NOTIFICATIONS: 'NOTIFICATIONS',\n PHOTO: 'PHOTO',\n PLAY: 'PLAY',\n PLUS: 'PLUS',\n READ: 'READ',\n REFRESH: 'REFRESH',\n SEND: 'SEND',\n SENT: 'SENT',\n SUPER_GROUP: 'SUPER_GROUP',\n SHEVRON: 'SHEVRON',\n SHEVRON_DOWN: 'SHEVRON_DOWN',\n SPINNER: 'SPINNER',\n SPINNER_LARGE: 'SPINNER_LARGE',\n USER: 'USER',\n ICON_OPERATOR: 'ICON_OPERATOR',\n ICON_BANNED: 'ICON_BANNED',\n ICON_FREEZE: 'ICON_FREEZE',\n ICON_MUTED: 'ICON_MUTED',\n ICON_MUTED_FG: 'ICON_MUTED_FG',\n TOGGLE_ON: 'TOGGLE_ON',\n TOGGLE_OFF: 'TOGGLE_OFF',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Type from './type';\n\nimport IconAdd from '../../svgs/icon-add.svg';\nimport IconAttach from '../../svgs/icon-attach.svg';\nimport IconArrowLeft from '../../svgs/icon-arrow-left.svg';\nimport IconAvatarDark from '../../svgs/icon-avatar-dark.svg';\nimport IconAvatarLight from '../../svgs/icon-avatar-light.svg';\nimport IconAvatarNoImage from '../../svgs/avatar-no-image-light.svg';\nimport BroadcastLargeDark from '../../svgs/icon-broadcast-lrg-dark.svg';\nimport BroadcastLargeLight from '../../svgs/icon-broadcast-lrg-light.svg';\nimport BroadcastDark from '../../svgs/icon-broadcast-dark.svg';\nimport BroadcastLight from '../../svgs/icon-broadcast-light.svg';\nimport Broadcast from '../../svgs/icon-broadcast.svg';\nimport FrozenDark from '../../svgs/frozen-dark.svg';\nimport FrozenLight from '../../svgs/frozen-light.svg';\nimport IconCamera from '../../svgs/icon-camera.svg';\nimport IconMore from '../../svgs/icon-more.svg';\nimport IconMute from '../../svgs/icon-mute.svg';\nimport IconNoThumbnail from '../../svgs/icon-no-thumbnail.svg';\nimport IconCheckbox from '../../svgs/icon-checkbox.svg';\nimport IconCheckboxOff from '../../svgs/icon-checkbox-off.svg';\nimport IconClose from '../../svgs/icon-close.svg';\nimport IconCopy from '../../svgs/icon-copy.svg';\nimport IconChat from '../../svgs/icon-chat.svg';\nimport IconSupergroup from '../../svgs/icon-supergroup.svg';\nimport IconCreate from '../../svgs/icon-create.svg';\nimport IconDelete from '../../svgs/icon-delete.svg';\nimport IconDummy from '../../svgs/icon-dummy.svg';\nimport IconEdit from '../../svgs/icon-edit.svg';\nimport IconError from '../../svgs/icon-error.svg';\nimport IconErrorFilled from '../../svgs/icon-error-filled.svg';\nimport IconEmojiFailed from '../../svgs/emoji-fail.svg';\nimport IconEmojiReactionsAdd from '../../svgs/icon-reactions-add.svg';\nimport IconEmojiReactionsAddGray from '../../svgs/icon-emoji-reactions-add.svg';\nimport IconDelivered from '../../svgs/icon-delivered.svg';\nimport IconDisconnected from '../../svgs/icon-disconnected.svg';\nimport IconDocument from '../../svgs/icon-document.svg';\nimport IconDownload from '../../svgs/icon-download.svg';\nimport IconFileAudio from '../../svgs/icon-file-audio.svg';\nimport IconFileDocument from '../../svgs/icon-file-document.svg';\nimport IconGif from '../../svgs/icon-gif.svg';\nimport IconInfo from '../../svgs/icon-info.svg';\nimport IconLeave from '../../svgs/icon-leave.svg';\nimport IconMembers from '../../svgs/icon-members.svg';\nimport IconNotifications from '../../svgs/icon-notifications.svg';\nimport IconPhoto from '../../svgs/icon-photo.svg';\nimport IconPlay from '../../svgs/icon-play.svg';\nimport IconPlus from '../../svgs/icon-plus.svg';\nimport IconRead from '../../svgs/icon-read.svg';\nimport IconRefresh from '../../svgs/icon-refresh.svg';\nimport IconSend from '../../svgs/icon-send.svg';\nimport IconSent from '../../svgs/icon-sent.svg';\nimport IconShevron from '../../svgs/icon-shevron.svg';\nimport IconShevronDown from '../../svgs/icon-shevron-down.svg';\nimport IconSpinner from '../../svgs/icon-spinner-small.svg';\nimport IconSpinnerLarge from '../../svgs/icon-spinner-large.svg';\nimport IconUser from '../../svgs/icon-user.svg';\nimport IconOperator from '../../svgs/icon-operator.svg';\nimport IconBanned from '../../svgs/icon-banned.svg';\nimport IconMuted from '../../svgs/icon-muted.svg';\nimport IconMutedFg from '../../svgs/icon-muted-foreground.svg';\nimport IconFreeze from '../../svgs/icon-freeze.svg';\nimport ToggleOn from '../../svgs/icon-toggleon.svg';\nimport ToggleOff from '../../svgs/icon-toggleoff.svg';\n\nconst Colors = {\n DEFAULT: 'DEFAULT',\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n CONTENT: 'CONTENT',\n CONTENT_INVERSE: 'CONTENT_INVERSE',\n WHITE: 'WHITE',\n SENT: 'SENT',\n READ: 'READ',\n ON_BACKGROUND_2: 'ON_BACKGROUND_2',\n ON_BACKGROUND_3: 'ON_BACKGROUND_3',\n BACKGROUND_3: 'BACKGROUND_3',\n};\n\nfunction changeColorToClassName(color) {\n switch (color) {\n case Colors.PRIMARY: return 'sendbird-color--primary';\n case Colors.SECONDARY: return 'sendbird-color--secondary';\n case Colors.CONTENT: return 'sendbird-color--content';\n case Colors.CONTENT_INVERSE: return 'sendbird-color--content-inverse';\n case Colors.WHITE: return 'sendbird-color--white';\n case Colors.SENT: return 'sendbird-color--sent';\n case Colors.READ: return 'sendbird-color--read';\n case Colors.ON_BACKGROUND_2: return 'sendbird-color--on-background-2';\n case Colors.ON_BACKGROUND_3: return 'sendbird-color--on-background-3';\n case Colors.BACKGROUND_3: return 'sendbird-color--background-3';\n default: return '';\n }\n}\n\nfunction changeTypeToIconComponent(type) {\n switch (type) {\n case Type.ADD: return ;\n case Type.ARROW_LEFT: return ;\n case Type.CAMERA: return ;\n case Type.ATTACH: return ;\n case Type.AVATAR_DARK: return ;\n case Type.AVATAR_LIGHT: return ;\n case Type.AVATAR_NO_IMAGE: return ;\n case Type.BROADCAST_LARGE_DARK: return ;\n case Type.BROADCAST_LARGE_LIGHT: return ;\n case Type.BROADCAST_DARK: return ;\n case Type.BROADCAST_LIGHT: return ;\n case Type.BROADCAST: return ;\n case Type.FROZEN_DARK: return ;\n case Type.FROZEN_LIGHT: return ;\n case Type.MORE: return ;\n case Type.MUTE: return ;\n case Type.NO_THUMBNAIL: return ;\n case Type.CHECKBOX: return ;\n case Type.CHECKBOX_OFF: return ;\n case Type.CLOSE: return ;\n case Type.COPY: return ;\n case Type.CHAT: return ;\n case Type.SUPER_GROUP: return ;\n case Type.CREATE: return ;\n case Type.DELETE: return ;\n case Type.DISCONNECTED: return ;\n case Type.DUMMY: return ;\n case Type.EDIT: return ;\n case Type.ERROR: return ;\n case Type.ERROR_FILLED: return ;\n case Type.EMOJI_FAILED: return ;\n case Type.EMOJI_REACTIONS_ADD: return ;\n case Type.EMOJI_REACTIONS_ADD_GRAY: return ;\n case Type.DELIVERED: return ;\n case Type.DOCUMENT: return ;\n case Type.DOWNLOAD: return ;\n case Type.FILE_AUDIO: return ;\n case Type.FILE_DOCUMENT: return ;\n case Type.GIF: return ;\n case Type.INFO: return ;\n case Type.LEAVE: return ;\n case Type.MEMBERS: return ;\n case Type.NOTIFICATIONS: return ;\n case Type.PHOTO: return ;\n case Type.PLAY: return ;\n case Type.PLUS: return ;\n case Type.READ: return ;\n case Type.REFRESH: return ;\n case Type.SEND: return ;\n case Type.SENT: return ;\n case Type.SHEVRON: return ;\n case Type.SHEVRON_DOWN: return ;\n case Type.SPINNER: return ;\n case Type.SPINNER_LARGE: return ;\n case Type.USER: return ;\n case Type.ICON_OPERATOR: return ;\n case Type.ICON_BANNED: return ;\n case Type.ICON_MUTED: return ;\n case Type.ICON_MUTED_FG: return ;\n case Type.ICON_FREEZE: return ;\n case Type.TOGGLE_ON: return ;\n case Type.TOGGLE_OFF: return ;\n default: return null;\n }\n}\n\nexport default function Icon({\n type,\n width,\n height,\n children,\n className,\n onClick,\n fillColor,\n}) {\n const iconStyle = {\n width: typeof width === 'string' ? width : `${width}px`,\n minWidth: typeof width === 'string' ? width : `${width}px`,\n height: typeof height === 'string' ? height : `${height}px`,\n minHeight: typeof height === 'string' ? height : `${height}px`,\n };\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {\n children || changeTypeToIconComponent(type)\n }\n
\n );\n}\n\nIcon.propTypes = {\n type: PropTypes.oneOfType([\n PropTypes.oneOf(Object.keys(Type)),\n PropTypes.string,\n ]).isRequired,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n onClick: PropTypes.func,\n children: PropTypes.element,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n fillColor: PropTypes.oneOf(Object.keys(Colors)),\n};\n\nIcon.defaultProps = {\n onClick: () => { },\n width: 26,\n height: 26,\n children: null,\n className: '',\n fillColor: Colors.DEFAULT,\n};\n\nexport const IconTypes = Type;\nexport const IconColors = Colors;\n","import React, { ReactElement } from 'react';\n\nimport ImageRenderer from '../ImageRenderer';\nimport Icon, { IconTypes } from '../Icon';\n\nimport './index.scss';\nimport { uuidv4 } from '../../utils/uuid';\n\nconst imageRendererClassName = 'sendbird-avatar-img';\n\ninterface DefaultComponentProps {\n width: string | number,\n height: string | number,\n}\n\nconst defaultComponent = (\n {\n width,\n height,\n }: DefaultComponentProps\n) => (): ReactElement => (\n document.querySelector('.sendbird-theme--dark')\n ? \n : \n);\n\ninterface AvatarInnerProps {\n height: string | number,\n width: string | number,\n src?: string | string[],\n alt?: string,\n}\n\nexport const AvatarInner = ({\n src = '',\n alt = '',\n height,\n width,\n}: AvatarInnerProps): ReactElement => {\n if (typeof src === 'string') {\n return (\n \n );\n }\n\n if (src && src.length) {\n if (src.length === 1) {\n return (\n \n );\n }\n\n if (src.length === 2) {\n return (\n \n \n \n
\n );\n }\n\n if (src.length === 3) {\n return (\n <>\n \n \n
\n \n \n \n
\n >\n );\n }\n\n return (\n \n {\n src.slice(0, 4)\n .map((i) => (\n \n ))\n }\n
\n );\n }\n // default img\n return (\n \n );\n};\n\ninterface AvatarProps {\n height?: string | number,\n width?: string | number,\n src?: string | string[],\n alt?: string,\n onClick?(): void,\n className?: string | string[],\n}\n\nfunction Avatar(\n {\n src = '',\n alt = '',\n width = '56px',\n height = '56px',\n onClick,\n className = '',\n }: AvatarProps,\n ref: React.Ref,\n): ReactElement {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n );\n}\n\nexport default React.forwardRef(Avatar);\n","export const Typography = {\n H_1: 'H_1',\n H_2: 'H_2',\n SUBTITLE_1: 'SUBTITLE_1',\n SUBTITLE_2: 'SUBTITLE_2',\n BODY_1: 'BODY_1',\n BODY_2: 'BODY_2',\n BUTTON_1: 'BUTTON_1',\n BUTTON_2: 'BUTTON_2',\n CAPTION_1: 'CAPTION_1',\n CAPTION_2: 'CAPTION_2',\n CAPTION_3: 'CAPTION_3',\n};\n\nexport const Colors = {\n ONBACKGROUND_1: 'ONBACKGROUND_1',\n ONBACKGROUND_2: 'ONBACKGROUND_2',\n ONBACKGROUND_3: 'ONBACKGROUND_3',\n ONCONTENT_1: 'ONCONTENT_1',\n ONCONTENT_2: 'ONCONTENT_2',\n PRIMARY: 'PRIMARY',\n ERROR: 'ERROR',\n SECONDARY_3: 'SECONDARY_3',\n};\n","import { Typography, Colors } from './types';\n\nexport function changeTypographyToClassName(type) {\n switch (type) {\n case Typography.H_1: return 'sendbird-label--h-1';\n case Typography.H_2: return 'sendbird-label--h-2';\n case Typography.SUBTITLE_1: return 'sendbird-label--subtitle-1';\n case Typography.SUBTITLE_2: return 'sendbird-label--subtitle-2';\n case Typography.BODY_1: return 'sendbird-label--body-1';\n case Typography.BODY_2: return 'sendbird-label--body-2';\n case Typography.BUTTON_1: return 'sendbird-label--button-1';\n case Typography.BUTTON_2: return 'sendbird-label--button-2';\n case Typography.CAPTION_1: return 'sendbird-label--caption-1';\n case Typography.CAPTION_2: return 'sendbird-label--caption-2';\n case Typography.CAPTION_3: return 'sendbird-label--caption-3';\n default: return null;\n }\n}\n\nexport function changeColorToClassName(color) {\n switch (color) {\n case Colors.ONBACKGROUND_1: return 'sendbird-label--color-onbackground-1';\n case Colors.ONBACKGROUND_2: return 'sendbird-label--color-onbackground-2';\n case Colors.ONBACKGROUND_3: return 'sendbird-label--color-onbackground-3';\n case Colors.ONCONTENT_1: return 'sendbird-label--color-oncontent-1';\n case Colors.ONCONTENT_2: return 'sendbird-label--color-oncontent-2';\n case Colors.PRIMARY: return 'sendbird-label--color-primary'; // should be Primary-3 fix me\n case Colors.ERROR: return 'sendbird-label--color-error';\n case Colors.SECONDARY_3: return 'sendbird-label--color-secondary-3';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { Typography, Colors } from './types';\nimport { changeTypographyToClassName, changeColorToClassName } from './utils';\nimport getStringSet from './stringSet';\n\nconst CLASS_NAME = 'sendbird-label';\n\nexport default function Label({\n type,\n color,\n children,\n className,\n}) {\n const injectingClassName = (Array.isArray(className))\n ? [CLASS_NAME, ...className]\n : [CLASS_NAME, className];\n if (type) {\n injectingClassName.push(changeTypographyToClassName(type));\n }\n if (color) {\n injectingClassName.push(changeColorToClassName(color));\n }\n\n return (\n \n {children}\n \n );\n}\n\nLabel.propTypes = {\n type: PropTypes.oneOf([...Object.keys(Typography), '']),\n color: PropTypes.oneOf([...Object.keys(Colors), '']),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.element,\n PropTypes.any,\n ]),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nLabel.defaultProps = {\n type: '',\n color: '',\n className: [],\n children: null,\n};\n\nconst LabelTypography = Typography;\nconst LabelColors = Colors;\nconst LabelStringSet = getStringSet('en');\nexport { LabelTypography, LabelColors, LabelStringSet };\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst CLASS_NAME = 'sendbird-iconbutton';\n\nconst IconButton = React.forwardRef((props, ref) => {\n const {\n children,\n className,\n disabled = false,\n type,\n height,\n width,\n onClick,\n onBlur,\n style,\n } = props;\n\n const [pressed, setPressed] = useState('');\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n\n return (\n // eslint-disable-next-line react/button-has-type\n {\n if (disabled) { return; }\n setPressed('sendbird-iconbutton--pressed');\n onClick(e);\n }}\n onBlur={(e) => {\n setPressed('');\n onBlur(e);\n }}\n >\n \n {children}\n \n \n );\n});\n\nIconButton.propTypes = {\n height: PropTypes.string,\n width: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n type: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n onBlur: PropTypes.func,\n style: PropTypes.shape({}),\n};\n\nIconButton.defaultProps = {\n height: '56px',\n width: '56px',\n className: '',\n type: 'button',\n disabled: false,\n onClick: () => { },\n onBlur: () => { },\n style: {},\n};\n\nexport default IconButton;\n","// simple component to be used as modal root\nimport React from 'react';\n\nexport const MODAL_ROOT = 'sendbird-modal-root';\n\nexport default () => (\n
\n);\n","export const Type = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n DANGER: 'DANGER',\n DISABLED: 'DISABLED',\n};\n\nexport const Size = {\n BIG: 'BIG',\n SMALL: 'SMALL',\n};\n","import { Type, Size } from './type';\n\nexport function changeTypeToClassName(type) {\n switch (type) {\n case Type.PRIMARY: return 'sendbird-button--primary';\n case Type.SECONDARY: return 'sendbird-button--secondary';\n case Type.DANGER: return 'sendbird-button--danger';\n case Type.DISABLED: return 'sendbird-button--disabled';\n default: return null;\n }\n}\n\nexport function changeSizeToClassName(size) {\n switch (size) {\n case Size.BIG: return 'sendbird-button--big';\n case Size.SMALL: return 'sendbird-button--small';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { Type, Size } from './type';\nimport { changeTypeToClassName, changeSizeToClassName } from './utils';\n\nexport default function Button({\n type,\n size,\n children,\n disabled,\n onClick,\n className,\n}) {\n const injectingClassNames = [\n 'sendbird-button',\n (disabled ? 'sendbird-button__disabled' : ''),\n changeTypeToClassName(type),\n changeSizeToClassName(size),\n ...((Array.isArray(className)) ? className : [className]),\n ].join(' ');\n\n return (\n \n \n {children}\n \n \n );\n}\n\nButton.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]),\n disabled: PropTypes.bool,\n type: PropTypes.oneOf(Object.keys(Type)),\n size: PropTypes.oneOf(Object.keys(Size)),\n onClick: PropTypes.func,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nButton.defaultProps = {\n children: 'Button',\n type: Type.PRIMARY,\n disabled: false,\n size: Size.BIG,\n onClick: () => { },\n className: '',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\n\nimport './index.scss';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { MODAL_ROOT } from '../../hooks/useModal/ModalRoot';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Button from '../Button';\nimport { Type as ButtonTypes } from '../Button/type';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nexport const ModalHeader = ({ titleText }) => (\n \n \n {titleText}\n \n
\n);\nModalHeader.propTypes = {\n titleText: PropTypes.string.isRequired,\n};\n\nexport const ModalBody = ({ children }) => (\n {children}
\n);\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element.isRequired,\n PropTypes.arrayOf(PropTypes.element.isRequired),\n ]),\n};\nModalBody.defaultProps = {\n children: null,\n};\n\nexport const ModalFooter = ({\n onSubmit,\n onCancel,\n disabled = false,\n submitText,\n type,\n}) => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n \n {stringSet.BUTTON__CANCEL}\n \n \n \n {submitText}\n \n
\n );\n};\n\nModalFooter.propTypes = {\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n submitText: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\nModalFooter.defaultProps = {\n disabled: false,\n type: ButtonTypes.DANGER,\n};\n\nfunction Modal(props) {\n const {\n children,\n onCancel,\n onSubmit,\n disabled,\n submitText,\n titleText,\n hideFooter,\n type,\n } = props;\n return createPortal((\n \n
\n
\n
{children} \n {\n !hideFooter && (\n
\n )\n }\n
\n \n \n \n
\n
\n
\n
\n ), document.getElementById(MODAL_ROOT));\n}\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]),\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n hideFooter: PropTypes.bool,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\nModal.defaultProps = {\n children: null,\n hideFooter: false,\n disabled: false,\n type: ButtonTypes.DANGER,\n};\n\nexport default Modal;\n","import './color.scss';\n\nexport const Colors = {\n ONBACKGROUND_1: 'ONBACKGROUND_1',\n ONBACKGROUND_2: 'ONBACKGROUND_2',\n ONBACKGROUND_3: 'ONBACKGROUND_3',\n ONBACKGROUND_4: 'ONBACKGROUND_4',\n ONCONTENT_1: 'ONCONTENT_1',\n PRIMARY: 'PRIMARY',\n ERROR: 'ERROR',\n};\n\nexport function changeColorToClassName(color) {\n switch (color) {\n case Colors.ONBACKGROUND_1: return 'sendbird-color--onbackground-1';\n case Colors.ONBACKGROUND_2: return 'sendbird-color--onbackground-2';\n case Colors.ONBACKGROUND_3: return 'sendbird-color--onbackground-3';\n case Colors.ONBACKGROUND_4: return 'sendbird-color--onbackground-4';\n case Colors.ONCONTENT_1: return 'sendbird-color--oncontent-1';\n case Colors.PRIMARY: return 'sendbird-color--primary';\n case Colors.ERROR: return 'sendbird-color--error';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { changeColorToClassName, Colors } from '../../utils/color';\n\nexport default function TextButton({\n color,\n children,\n disabled,\n className,\n onClick,\n notUnderline,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {children}\n
\n );\n}\n\nTextButton.propTypes = {\n color: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n onClick: PropTypes.func,\n notUnderline: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nTextButton.defaultProps = {\n color: Colors.ONBACKGROUND_1,\n className: '',\n onClick: () => { },\n notUnderline: false,\n disabled: false,\n};\n","export function Types() {\n return {\n LOADING: 'LOADING',\n NO_CHANNELS: 'NO_CHANNELS',\n WRONG: 'WRONG',\n };\n}\n\nexport default Types();\n","export const USER_UPDATED = 'USER_UPDATED';\nexport const SEND_MESSAGE_START = 'SEND_MESSAGE_START';\nexport const SEND_USER_MESSAGE = 'SEND_USER_MESSAGE';\nexport const SEND_FILE_MESSAGE = 'SEND_FILE_MESSAGE';\nexport const UPDATE_USER_MESSAGE = 'UPDATE_USER_MESSAGE';\nexport const DELETE_MESSAGE = 'DELETE_MESSAGE';\nexport const LEAVE_CHANNEL = 'LEAVE_CHANNEL';\nexport const CREATE_CHANNEL = 'CREATE_CHANNEL';\n","import * as topics from './pubSub/topics';\n\nexport const getSdk = (store) => {\n const { stores = {} } = store;\n const { sdkStore = {} } = stores;\n const { sdk } = sdkStore;\n return sdk;\n};\n\nexport const getPubSub = (store) => {\n const { config = {} } = store;\n const { pubSub } = config;\n return pubSub;\n};\n\n// SendBird disconnect. Invalidates currentUser\n// eslint-disable-next-line max-len\nexport const getConnect = (store) => (userId, accessToken) => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n if (!accessToken) {\n sdk.connect(userId)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n } else {\n sdk.connect(userId, accessToken)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n }\n});\n\n// SendBird disconnect. Invalidates currentUser\nexport const getDisconnect = (store) => () => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.disconnect()\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n});\n\n// Using the updateCurrentUserInfo() method\n// you can update a user's nickname and profile image with a URL\n// eslint-disable-next-line max-len\nexport const getUpdateUserInfo = (store) => (nickName, profileUrl) => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.updateCurrentUserInfo(nickName, profileUrl)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n});\n\nexport const getSendUserMessage = (store) => (channelUrl, userMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendUserMessage(userMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n });\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\nexport const getSendFileMessage = (store) => (channelUrl, fileMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendFileMessage(fileMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n });\n if (fileMessageParams.file) {\n // keep the file's local version in pendingMsg.localUrl\n // because promise doesnt allow overriding of pendingMsg.url\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);\n }\n if (fileMessageParams.fileUrl) {\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = fileMessageParams.fileUrl;\n }\n // eslint-disable-next-line no-param-reassign\n pendingMsg.requestState = 'pending';\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\nexport const getUpdateUserMessage = (store) => (channelUrl, messageId, params) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.updateUserMessage(messageId, params, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.UPDATE_USER_MESSAGE,\n {\n message,\n channel,\n // workaround for updating channelPreview on message-edit\n // https://sendbird.atlassian.net/browse/UIKIT-268\n fromSelector: true,\n },\n );\n });\n })\n .catch(reject);\n });\n};\nexport const getDeleteMessage = (store) => (channelUrl, message) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const { messageId } = message;\n channel.deleteMessage(message, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let error = err;\n if (swapParams) {\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.DELETE_MESSAGE,\n {\n messageId,\n channel,\n },\n );\n });\n })\n .catch(reject);\n });\n};\n\nexport const getResendUserMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendUserMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getResendFileMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendFileMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getCreateChannel = (store) => (params) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.createChannel(params)\n .then((channel) => {\n resolve(channel);\n pubsub.publish(\n topics.CREATE_CHANNEL,\n {\n channel,\n },\n );\n })\n .catch(reject);\n });\n};\n\nexport const getLeaveChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.leave()\n .then(() => {\n resolve(channel);\n pubsub.publish(\n topics.LEAVE_CHANNEL,\n {\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getFreezeChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.freeze()\n .then(() => {\n // do not need pubsub here - event listener works\n resolve(channel);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getUnFreezeChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.unfreeze()\n .then(() => {\n // do not need pubsub here - event listener works\n resolve(channel);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nconst getCreateOpenChannel = (store) => (params) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.createChannel(params)\n .then((channel) => {\n resolve(channel);\n })\n .catch(reject);\n });\n};\nconst enterOpenChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl, (openChannel, error) => {\n if (error) {\n reject(new Error(error));\n return;\n }\n\n openChannel.enter((response, enterError) => {\n if (error) {\n reject(new Error(enterError));\n return;\n }\n resolve(response);\n });\n });\n });\n};\n\nconst exitOpenChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl, (openChannel, error) => {\n if (error) {\n reject(new Error(error));\n return;\n }\n\n openChannel.exit((response, exitError) => {\n if (error) {\n reject(new Error(exitError));\n return;\n }\n resolve(response);\n });\n });\n });\n};\n\nconst getOpenChannelSendUserMessage = (store) => (channelUrl, userMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendUserMessage(userMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n });\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\n\nconst getOpenChannelSendFileMessage = (store) => (channelUrl, fileMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendFileMessage(fileMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n });\n if (fileMessageParams.file) {\n // keep the file's local version in pendingMsg.localUrl\n // because promise doesnt allow overriding of pendingMsg.url\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);\n }\n if (fileMessageParams.fileUrl) {\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = fileMessageParams.fileUrl;\n }\n // eslint-disable-next-line no-param-reassign\n pendingMsg.requestState = 'pending';\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\n\nconst getOpenChannelUpdateUserMessage = (store) => (channelUrl, messageId, params) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.updateUserMessage(messageId, params, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.UPDATE_USER_MESSAGE,\n {\n message,\n channel,\n // workaround for updating channelPreview on message-edit\n // https://sendbird.atlassian.net/browse/UIKIT-268\n fromSelector: true,\n },\n );\n });\n })\n .catch(reject);\n });\n};\n\nconst getOpenChannelDeleteMessage = (store) => (channelUrl, message) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const { messageId } = message;\n channel.deleteMessage(message, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let error = err;\n if (swapParams) {\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.DELETE_MESSAGE,\n {\n messageId,\n channel,\n },\n );\n });\n })\n .catch(reject);\n });\n};\n\nconst getOpenChannelResendUserMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendUserMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nconst getOpenChannelResendFileMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.OpenChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendFileMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport default {\n getSdk,\n getConnect,\n getDisconnect,\n getUpdateUserInfo,\n getSendUserMessage,\n getSendFileMessage,\n getUpdateUserMessage,\n getDeleteMessage,\n getResendUserMessage,\n getResendFileMessage,\n getFreezeChannel,\n getUnFreezeChannel,\n getCreateChannel,\n getLeaveChannel,\n getCreateOpenChannel,\n enterOpenChannel,\n exitOpenChannel,\n getOpenChannelSendUserMessage,\n getOpenChannelSendFileMessage,\n getOpenChannelUpdateUserMessage,\n getOpenChannelDeleteMessage,\n getOpenChannelResendUserMessage,\n getOpenChannelResendFileMessage,\n};\n","import React, { ReactElement, useContext } from 'react';\nimport { SendbirdTypes } from '../../types';\nimport './index.scss';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { getSdk, getCreateChannel } from '../../lib/selectors';\nimport Avatar from '../Avatar/index';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport Button from '../Button';\nimport { Type as ButtonTypes } from '../Button/type';\n\ninterface Logger {\n info?(message: string, channel: SendbirdTypes['GroupChannel']): void;\n}\n\ninterface Props {\n user: SendbirdTypes['User'];\n currentUserId?: string;\n sdk?: SendbirdTypes['SendBirdInstance'];\n logger?: Logger;\n disableMessaging?: boolean;\n createChannel?(params: SendbirdTypes['GroupChannelParams']): Promise;\n onSuccess?(): void;\n}\n\nfunction UserProfile({\n user,\n currentUserId,\n sdk,\n logger,\n disableMessaging = false,\n createChannel,\n onSuccess,\n}: Props): ReactElement {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
\n \n {user.nickname || stringSet.NO_NAME}\n \n \n {\n (user.userId !== currentUserId) && !disableMessaging && (\n
\n {\n const params = new sdk.GroupChannelParams();\n params.isDistinct = true;\n params.addUserIds([user.userId]);\n onSuccess();\n createChannel(params)\n .then((groupChannel) => {\n logger.info('UserProfile, channel create', groupChannel);\n });\n }}\n >\n {stringSet.USER_PROFILE__MESSAGE}\n \n \n )\n }\n
\n
\n \n {stringSet.USER_PROFILE__USER_ID}\n \n \n {user.userId}\n \n \n
\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n createChannel: getCreateChannel(store),\n logger: store.config.logger,\n pubsub: store.config.pubSub,\n});\n\nconst ConnectedUserProfile = withSendbirdContext(UserProfile, mapStoreToProps);\n\nexport default ConnectedUserProfile;\n","import React, { Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\n\nexport default class MenuItems extends Component {\n constructor(props) {\n super(props);\n this.menuRef = React.createRef();\n this.state = {\n menuStyle: {},\n handleClickOutside: () => { },\n };\n }\n\n componentDidMount() {\n this.setupEvents();\n this.getMenuPosition();\n this.showParent();\n }\n\n componentWillUnmount() {\n this.cleanUpEvents();\n this.hideParent();\n }\n\n showParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.add('sendbird-icon--pressed');\n }\n }\n\n hideParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.remove('sendbird-icon--pressed');\n }\n }\n\n setupEvents = () => {\n const { closeDropdown } = this.props;\n const { menuRef } = this;\n const handleClickOutside = (event) => {\n if (menuRef.current && !menuRef.current.contains(event.target)) {\n closeDropdown();\n }\n };\n this.setState({\n handleClickOutside,\n });\n\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n cleanUpEvents = () => {\n const {\n handleClickOutside,\n } = this.state;\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n getMenuPosition = () => {\n const { parentRef, openLeft } = this.props;\n const parentRect = parentRef.current.getBoundingClientRect();\n const x = parentRect.x || parentRect.left;\n const y = parentRect.y || parentRect.top;\n const menuStyle = {\n top: y,\n left: x,\n };\n\n if (!this.menuRef.current) return menuStyle;\n\n const { innerWidth, innerHeight } = window;\n const rect = this.menuRef.current.getBoundingClientRect();\n if (y + rect.height > innerHeight) {\n menuStyle.top -= rect.height;\n }\n\n if (x + rect.width > innerWidth && !openLeft) {\n menuStyle.left -= rect.width;\n }\n\n if (menuStyle.top < 0) {\n menuStyle.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;\n }\n\n if (menuStyle.left < 0) {\n menuStyle.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;\n }\n\n menuStyle.top += 32;\n if (openLeft) {\n const padding = Number.isNaN(rect.width - 30)\n ? 108 // default\n : rect.width - 30;\n menuStyle.left -= padding;\n }\n\n return this.setState({ menuStyle });\n }\n\n render() {\n const { menuStyle } = this.state;\n const { children, style } = this.props;\n return (\n createPortal(\n (\n <>\n
\n \n >\n ),\n document.getElementById('sendbird-dropdown-portal'),\n )\n );\n }\n}\nMenuItems.propTypes = {\n closeDropdown: PropTypes.func.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n style: PropTypes.shape({}),\n // https://stackoverflow.com/a/51127130\n parentRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n parentContainRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n openLeft: PropTypes.bool,\n};\nMenuItems.defaultProps = {\n style: {},\n openLeft: false,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst componentClassName = 'sendbird-sort-by-row';\nexport default function SortByRow({\n className,\n maxItemCount,\n itemWidth,\n itemHeight,\n children,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(componentClassName);\n\n if (children.length > maxItemCount) {\n const result = [];\n for (let i = 0; i < children.length; i += maxItemCount) {\n result.push(\n \n {\n children.slice(i, i + maxItemCount)\n }\n
,\n );\n }\n\n return result;\n }\n return (\n \n {children}\n
\n );\n}\n\nSortByRow.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n maxItemCount: PropTypes.number.isRequired,\n itemWidth: PropTypes.number.isRequired,\n itemHeight: PropTypes.number.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]).isRequired,\n};\n\nSortByRow.defaultProps = {\n className: '',\n};\n","import React, { Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport SortByRow from '../../SortByRow';\n\nexport default class EmojiListItems extends Component {\n constructor(props) {\n super(props);\n this.reactionRef = React.createRef();\n this.state = {\n reactionStyle: {},\n handleClickOutside: () => { },\n };\n }\n\n componentDidMount() {\n this.setupEvents();\n this.getBarPosition();\n this.showParent();\n }\n\n componentWillUnmount() {\n this.cleanUpEvents();\n this.hideParent();\n }\n\n showParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.add('sendbird-reactions--pressed');\n }\n }\n\n hideParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.remove('sendbird-reactions--pressed');\n }\n }\n\n setupEvents = () => {\n const { closeDropdown } = this.props;\n const { reactionRef } = this;\n const handleClickOutside = (event) => {\n if (reactionRef.current && !reactionRef.current.contains(event.target)) {\n closeDropdown();\n }\n };\n this.setState({\n handleClickOutside,\n });\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n cleanUpEvents = () => {\n const {\n handleClickOutside,\n } = this.state;\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n getBarPosition = () => {\n const {\n parentRef,\n spaceFromTrigger,\n } = this.props;\n const spaceFromTriggerX = spaceFromTrigger.x || 0;\n const spaceFromTriggerY = spaceFromTrigger.y || 0;\n\n const parentRect = parentRef.current.getBoundingClientRect();\n\n const x = parentRect.x || parentRect.left;\n const y = parentRect.y || parentRect.top;\n\n const reactionStyle = {\n top: y,\n left: x,\n };\n\n if (!this.reactionRef.current) return reactionStyle;\n const rect = this.reactionRef.current.getBoundingClientRect();\n // const childRect = this.reactionRef.current.children[0].getBoundingClientRect();\n\n if (reactionStyle.top < rect.height) {\n reactionStyle.top += parentRect.height;\n reactionStyle.top += spaceFromTriggerY;\n } else {\n reactionStyle.top -= rect.height;\n reactionStyle.top -= spaceFromTriggerY;\n }\n\n reactionStyle.left -= (rect.width / 2);\n reactionStyle.left += (parentRect.height / 2) - 2;\n reactionStyle.left += spaceFromTriggerX;\n\n const maximumLeft = (window.innerWidth - rect.width);\n if (maximumLeft < reactionStyle.left) {\n reactionStyle.left = maximumLeft;\n }\n if (reactionStyle.left < 0) {\n reactionStyle.left = 0;\n }\n\n return this.setState({ reactionStyle });\n }\n\n render() {\n const { reactionStyle } = this.state;\n const { children } = this.props;\n return (\n createPortal(\n <>\n
\n \n >,\n document.getElementById('sendbird-emoji-list-portal'),\n )\n );\n }\n}\nEmojiListItems.propTypes = {\n closeDropdown: PropTypes.func.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n parentRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n parentContainRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n spaceFromTrigger: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n }),\n};\nEmojiListItems.defaultProps = {\n spaceFromTrigger: {},\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport MenuItems_ from './items/MenuItems';\nimport EmojiListItems_ from './items/EmojiListItems';\n\nconst ENTER = 13;\n\nexport const MenuItems = MenuItems_;\nexport const EmojiListItems = EmojiListItems_;\n\nexport const MenuItem = ({ children, onClick, className }) => {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n {\n if (e.keyCode === ENTER) {\n onClick(e);\n }\n }}\n role=\"menuitem\"\n >\n \n {children}\n \n \n );\n};\n\nMenuItem.propTypes = {\n onClick: PropTypes.func.isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]).isRequired,\n};\n\nMenuItem.defaultProps = {\n className: '',\n};\n\nexport const MenuRoot = () => (\n
\n);\n\nexport const EmojiReactionListRoot = () => (\n
\n);\n\nexport default function ContextMenu({ menuTrigger, menuItems }) {\n const [showMenu, setShowMenu] = useState(false);\n\n return (\n \n {menuTrigger(() => setShowMenu(!showMenu))}\n {showMenu && menuItems(() => setShowMenu(false))}\n
\n );\n}\n\nContextMenu.propTypes = {\n menuTrigger: PropTypes.func.isRequired,\n menuItems: PropTypes.func.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes } from '../Icon';\n\nexport default function Loader({\n children,\n className,\n width,\n height,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {children}\n
\n );\n}\n\nLoader.propTypes = {\n children: PropTypes.element,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n};\n\nLoader.defaultProps = {\n children: ,\n className: '',\n width: '26px',\n height: '26px',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Loader from '../Loader';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport _PlaceHolderTypes from './type';\n\nexport const PlaceHolderTypes = _PlaceHolderTypes;\n\nexport default function PlaceHolder({\n className,\n type,\n retryToConnect,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {\n type === PlaceHolderTypes.LOADING\n ? (\n
\n \n \n )\n : null\n }\n {\n type === PlaceHolderTypes.NO_CHANNELS || type === PlaceHolderTypes.WRONG\n ? (\n
\n {\n type === PlaceHolderTypes.NO_CHANNELS && (\n
\n )\n }\n {\n type === PlaceHolderTypes.WRONG && (\n
\n )\n }\n
\n {\n type === PlaceHolderTypes.NO_CHANNELS\n ? stringSet.PLACE_HOLDER__NO_CHANNEL\n : stringSet.PLACE_HOLDER__WRONG\n }\n \n {\n retryToConnect\n ? (\n
\n \n \n {stringSet.PLACE_HOLDER__RETRY_TO_CONNECT}\n \n
\n )\n : null\n }\n
\n )\n : null\n }\n
\n );\n}\n\nPlaceHolder.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n type: PropTypes.oneOfType([\n PropTypes.oneOf(Object.keys(PlaceHolderTypes)),\n PropTypes.string,\n ]).isRequired,\n retryToConnect: PropTypes.func,\n};\n\nPlaceHolder.defaultProps = {\n className: '',\n retryToConnect: null,\n};\n"],"names":["UserProfileContext","React","createContext","disableUserProfile","isOpenChannel","renderUserProfile","UserProfileProvider","props","children","className","propTypes","PropTypes","oneOfType","element","arrayOf","any","isRequired","bool","func","string","defaultProps","ImageRenderer","alt","url","width","height","defaultComponent","circle","injectingClassName","Array","isArray","unshift","useState","realElement","setRealElement","useEffect","join","backgroundRepeat","backgroundPosition","backgroundSize","backgroundImage","borderRadius","number","ADD","ATTACH","ARROW_LEFT","AVATAR_DARK","AVATAR_LIGHT","AVATAR_NO_IMAGE","BROADCAST_LARGE_DARK","BROADCAST_LARGE_LIGHT","BROADCAST_DARK","BROADCAST_LIGHT","BROADCAST","FROZEN_DARK","FROZEN_LIGHT","CAMERA","MORE","MUTE","NO_THUMBNAIL","CHECKBOX","CHECKBOX_OFF","CLOSE","COPY","CHAT","CREATE","DELETE","DISCONNECTED","DUMMY","EDIT","ERROR","ERROR_FILLED","EMOJI_FAILED","EMOJI_REACTIONS_ADD","EMOJI_REACTIONS_ADD_GRAY","DELIVERED","DOCUMENT","DOWNLOAD","FILE_AUDIO","FILE_DOCUMENT","GIF","INFO","LEAVE","MEMBERS","NOTIFICATIONS","PHOTO","PLAY","PLUS","READ","REFRESH","SEND","SENT","SUPER_GROUP","SHEVRON","SHEVRON_DOWN","SPINNER","SPINNER_LARGE","USER","ICON_OPERATOR","ICON_BANNED","ICON_FREEZE","ICON_MUTED","ICON_MUTED_FG","TOGGLE_ON","TOGGLE_OFF","Colors","DEFAULT","PRIMARY","SECONDARY","CONTENT","CONTENT_INVERSE","WHITE","ON_BACKGROUND_2","ON_BACKGROUND_3","BACKGROUND_3","changeColorToClassName","color","changeTypeToIconComponent","type","Type","IconAdd","IconArrowLeft","IconCamera","IconAttach","IconAvatarDark","IconAvatarLight","IconAvatarNoImage","BroadcastLargeDark","BroadcastLargeLight","BroadcastDark","BroadcastLight","Broadcast","FrozenDark","FrozenLight","IconMore","IconMute","IconNoThumbnail","IconCheckbox","IconCheckboxOff","IconClose","IconCopy","IconChat","IconSupergroup","IconCreate","IconDelete","IconDisconnected","IconDummy","IconEdit","IconError","IconErrorFilled","IconEmojiFailed","IconEmojiReactionsAdd","IconEmojiReactionsAddGray","IconDelivered","IconDocument","IconDownload","IconFileAudio","IconFileDocument","IconGif","IconInfo","IconLeave","IconMembers","IconNotifications","IconPhoto","IconPlay","IconPlus","IconRead","IconRefresh","IconSend","IconSent","IconShevron","IconShevronDown","IconSpinner","IconSpinnerLarge","IconUser","IconOperator","IconBanned","IconMuted","IconMutedFg","IconFreeze","ToggleOn","ToggleOff","Icon","onClick","fillColor","iconStyle","minWidth","minHeight","oneOf","Object","keys","IconTypes","IconColors","imageRendererClassName","_a","document","querySelector","AvatarInner","_b","src","_c","length","slice","map","i","uuidv4","Avatar","ref","_d","_e","_f","__spreadArrays","forwardRef","Typography","H_1","H_2","SUBTITLE_1","SUBTITLE_2","BODY_1","BODY_2","BUTTON_1","BUTTON_2","CAPTION_1","CAPTION_2","CAPTION_3","ONBACKGROUND_1","ONBACKGROUND_2","ONBACKGROUND_3","ONCONTENT_1","ONCONTENT_2","SECONDARY_3","changeTypographyToClassName","CLASS_NAME","Label","push","LabelTypography","LabelColors","LabelStringSet","getStringSet","IconButton","disabled","onBlur","style","pressed","setPressed","e","shape","MODAL_ROOT","DANGER","DISABLED","Size","BIG","SMALL","changeTypeToClassName","changeSizeToClassName","size","Button","injectingClassNames","ModalHeader","titleText","ModalBody","ModalFooter","onSubmit","onCancel","submitText","useContext","LocalizationContext","stringSet","ButtonTypes","BUTTON__CANCEL","Modal","hideFooter","createPortal","getElementById","ONBACKGROUND_4","TextButton","notUnderline","Types","LOADING","NO_CHANNELS","WRONG","SEND_MESSAGE_START","SEND_USER_MESSAGE","SEND_FILE_MESSAGE","UPDATE_USER_MESSAGE","DELETE_MESSAGE","LEAVE_CHANNEL","CREATE_CHANNEL","getSdk","store","stores","sdkStore","sdk","getPubSub","config","pubSub","getConnect","userId","accessToken","Promise","resolve","reject","Error","connect","then","res","catch","err","getDisconnect","disconnect","getUpdateUserInfo","nickName","profileUrl","updateCurrentUserInfo","getSendUserMessage","channelUrl","userMessageParams","pubsub","GroupChannel","getChannel","channel","promisify","pendingMsg","pendingPromise","resolve_","reject_","sendUserMessage","swapParams","getErrorFirstCallback","message","error","publish","topics","get","getSendFileMessage","fileMessageParams","sendFileMessage","file","localUrl","URL","createObjectURL","fileUrl","requestState","getUpdateUserMessage","messageId","params","updateUserMessage","fromSelector","getDeleteMessage","deleteMessage","getResendUserMessage","failedMessage","resendUserMessage","getResendFileMessage","resendFileMessage","getCreateChannel","createChannel","getLeaveChannel","leave","getFreezeChannel","freeze","getUnFreezeChannel","unfreeze","getCreateOpenChannel","OpenChannel","enterOpenChannel","openChannel","enter","response","enterError","exitOpenChannel","exit","exitError","getOpenChannelSendUserMessage","getOpenChannelSendFileMessage","getOpenChannelUpdateUserMessage","getOpenChannelDeleteMessage","getOpenChannelResendUserMessage","getOpenChannelResendFileMessage","UserProfile","user","currentUserId","logger","disableMessaging","onSuccess","nickname","NO_NAME","GroupChannelParams","isDistinct","addUserIds","groupChannel","info","USER_PROFILE__MESSAGE","USER_PROFILE__USER_ID","mapStoreToProps","ConnectedUserProfile","withSendbirdContext","MenuItems","parentContainRef","current","classList","add","remove","closeDropdown","menuRef","handleClickOutside","event","contains","target","setState","addEventListener","state","removeEventListener","parentRef","openLeft","parentRect","getBoundingClientRect","x","left","y","top","menuStyle","window","innerWidth","innerHeight","rect","padding","Number","isNaN","createRef","setupEvents","getMenuPosition","showParent","cleanUpEvents","hideParent","display","position","Math","round","Component","instanceOf","Element","componentClassName","SortByRow","maxItemCount","itemWidth","itemHeight","result","EmojiListItems","reactionRef","spaceFromTrigger","spaceFromTriggerX","spaceFromTriggerY","reactionStyle","maximumLeft","getBarPosition","ENTER","MenuItems_","EmojiListItems_","MenuItem","keyCode","ContextMenu","menuTrigger","menuItems","showMenu","setShowMenu","Loader","PlaceHolderTypes","_PlaceHolderTypes","PlaceHolder","retryToConnect","PLACE_HOLDER__NO_CHANNEL","PLACE_HOLDER__WRONG","PLACE_HOLDER__RETRY_TO_CONNECT"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACqEA,IAAMC,MAAM,GAAG;AACbC,EAAAA,OAAO,EAAE,SADI;AAEbC,EAAAA,OAAO,EA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"}
\ No newline at end of file
diff --git a/dist/esm/index.js b/dist/esm/index.js
new file mode 100644
index 0000000..2bcf83d
--- /dev/null
+++ b/dist/esm/index.js
@@ -0,0 +1,30 @@
+export { g as getStringSet, w as withSendBird } from './LocalizationContext-619bafba.js';
+export { default as SendBirdProvider } from './SendbirdProvider.js';
+import 'react';
+import 'prop-types';
+import 'sendbird';
+import './actionTypes-a85c0eaa.js';
+import 'css-vars-ponyfill';
+export { F as sendBirdSelectors } from './index-ec3bf9fe.js';
+export { default as ChannelList } from './ChannelList.js';
+import './utils-53ba1773.js';
+import './index-aebda3d2.js';
+import './LeaveChannel-da8b5d0b.js';
+import 'date-fns/isToday';
+import 'date-fns/format';
+import 'date-fns/isYesterday';
+import './type-0296584d.js';
+import './utils-cfdeb084.js';
+import 'react-dom';
+import './index-aa89d60a.js';
+export { default as Channel, getAllEmojisFromEmojiContainer, getEmojiCategoriesFromEmojiContainer, getEmojisFromEmojiContainer } from './Channel.js';
+import './index-19f570c9.js';
+import 'date-fns/isSameDay';
+import './utils-d7f59026.js';
+import 'date-fns/formatDistanceToNowStrict';
+export { default as ChannelSettings } from './ChannelSettings.js';
+import './index-8abf69b8.js';
+export { default as App } from './App.js';
+export { default as OpenChannel } from './OpenChannel.js';
+export { default as OpenChannelSettings } from './OpenChannelSettings.js';
+//# sourceMappingURL=index.js.map
diff --git a/dist/esm/index.js.map b/dist/esm/index.js.map
new file mode 100644
index 0000000..b11f5f8
--- /dev/null
+++ b/dist/esm/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
\ No newline at end of file
diff --git a/dist/esm/type-0296584d.js b/dist/esm/type-0296584d.js
new file mode 100644
index 0000000..562eb38
--- /dev/null
+++ b/dist/esm/type-0296584d.js
@@ -0,0 +1,10 @@
+var MessageStatusType = {
+ PENDING: 'PENDING',
+ SENT: 'SENT',
+ DELIVERED: 'DELIVERED',
+ READ: 'READ',
+ FAILED: 'FAILED'
+};
+
+export { MessageStatusType as M };
+//# sourceMappingURL=type-0296584d.js.map
diff --git a/dist/esm/type-0296584d.js.map b/dist/esm/type-0296584d.js.map
new file mode 100644
index 0000000..d9292b2
--- /dev/null
+++ b/dist/esm/type-0296584d.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"type-0296584d.js","sources":["../../../src/ui/MessageStatus/type.js"],"sourcesContent":["const MessageStatusType = {\n PENDING: 'PENDING',\n SENT: 'SENT',\n DELIVERED: 'DELIVERED',\n READ: 'READ',\n FAILED: 'FAILED',\n};\n\nexport default MessageStatusType;\n"],"names":["MessageStatusType","PENDING","SENT","DELIVERED","READ","FAILED"],"mappings":"AAAA,IAAMA,iBAAiB,GAAG;AACxBC,EAAAA,OAAO,EAAE,SADe;AAExBC,EAAAA,IAAI,EAAE,MAFkB;AAGxBC,EAAAA,SAAS,EAAE,WAHa;AAIxBC,EAAAA,IAAI,EAAE,MAJkB;AAKxBC,EAAAA,MAAM,EAAE;AALgB,CAA1B;;;;"}
\ No newline at end of file
diff --git a/dist/esm/utils-53ba1773.js b/dist/esm/utils-53ba1773.js
new file mode 100644
index 0000000..19a2ebd
--- /dev/null
+++ b/dist/esm/utils-53ba1773.js
@@ -0,0 +1,47 @@
+import format from 'date-fns/format';
+
+var DEFAULT_URL_PREFIX = 'https://static.sendbird.com/sample/cover/cover_';
+var getOpenChannelAvatar = function getOpenChannelAvatar(channel) {
+ if (channel && channel.coverUrl) {
+ return channel.coverUrl;
+ }
+};
+var getChannelAvatarSource = function getChannelAvatarSource(channel, currentUserId) {
+ if (channel && channel.coverUrl) {
+ if (!new RegExp("^" + DEFAULT_URL_PREFIX).test(channel.coverUrl)) {
+ return channel.coverUrl;
+ }
+ }
+
+ return channel && channel.members ? channel.members.filter(function (member) {
+ return member.userId !== currentUserId;
+ }).map(function (_a) {
+ var profileUrl = _a.profileUrl;
+ return profileUrl;
+ }) : [];
+};
+var useDefaultAvatar = function useDefaultAvatar(channel) {
+ if (channel && channel.coverUrl) {
+ if (new RegExp("^" + DEFAULT_URL_PREFIX).test(channel.coverUrl)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ return true;
+};
+
+var noop = function noop() {};
+var getMessageCreatedAt = function getMessageCreatedAt(message) {
+ return format(message.createdAt, 'p');
+};
+var getSenderName = function getSenderName(message) {
+ return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
+};
+var getSenderProfileUrl = function getSenderProfileUrl(message) {
+ return message.sender && message.sender.profileUrl;
+};
+
+export { getMessageCreatedAt as a, getSenderName as b, getSenderProfileUrl as c, getOpenChannelAvatar as d, getChannelAvatarSource as g, noop as n, useDefaultAvatar as u };
+//# sourceMappingURL=utils-53ba1773.js.map
diff --git a/dist/esm/utils-53ba1773.js.map b/dist/esm/utils-53ba1773.js.map
new file mode 100644
index 0000000..97b150b
--- /dev/null
+++ b/dist/esm/utils-53ba1773.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils-53ba1773.js","sources":["../../../src/ui/ChannelAvatar/utils.ts","../../../src/utils/utils.js"],"sourcesContent":["export const DEFAULT_URL_PREFIX = 'https://static.sendbird.com/sample/cover/cover_';\n\nexport const getOpenChannelAvatar = (channel: SendBird.OpenChannel): string => {\n if (channel && channel.coverUrl) {\n return channel.coverUrl;\n }\n};\n\nexport const getChannelAvatarSource = (channel: SendBird.GroupChannel, currentUserId: string): string | string[] => {\n if (channel && channel.coverUrl) {\n if (!(new RegExp(`^${DEFAULT_URL_PREFIX}`).test(channel.coverUrl))) {\n return channel.coverUrl;\n }\n }\n\n return channel && channel.members\n ? channel.members\n .filter((member) => member.userId !== currentUserId)\n .map(({ profileUrl }) => profileUrl)\n : [];\n};\n\n\nexport const useDefaultAvatar = (channel: SendBird.GroupChannel): boolean => {\n if (channel && channel.coverUrl) {\n if (new RegExp(`^${DEFAULT_URL_PREFIX}`).test(channel.coverUrl)) {\n return true;\n }\n return false;\n }\n return true;\n}\n","import format from 'date-fns/format';\n\nexport const noop = () => {};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport default {\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n};\n"],"names":["DEFAULT_URL_PREFIX","getOpenChannelAvatar","channel","coverUrl","getChannelAvatarSource","currentUserId","RegExp","test","members","filter","member","userId","map","_a","profileUrl","useDefaultAvatar","noop","getMessageCreatedAt","message","format","createdAt","getSenderName","sender","friendName","nickname","getSenderProfileUrl"],"mappings":";;AAAO,IAAMA,kBAAkB,GAAG,iDAA3B;IAEMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,OAAD;AAClC,MAAIA,OAAO,IAAIA,OAAO,CAACC,QAAvB,EAAiC;AAC/B,WAAOD,OAAO,CAACC,QAAf;AACD;AACF;IAEYC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACF,OAAD,EAAiCG,aAAjC;AACpC,MAAIH,OAAO,IAAIA,OAAO,CAACC,QAAvB,EAAiC;AAC/B,QAAI,CAAE,IAAIG,MAAJ,CAAW,MAAIN,kBAAf,EAAqCO,IAArC,CAA0CL,OAAO,CAACC,QAAlD,CAAN,EAAoE;AAClE,aAAOD,OAAO,CAACC,QAAf;AACD;AACF;;AAED,SAAOD,OAAO,IAAIA,OAAO,CAACM,OAAnB,GACHN,OAAO,CAACM,OAAR,CACCC,MADD,CACQ,UAACC,MAAD;AAAY,WAAAA,MAAM,CAACC,MAAP,KAAkBN,aAAlB;AAA+B,GADnD,EAECO,GAFD,CAEK,UAACC,EAAD;QAAGC,UAAU;AAAO,WAAAA,UAAA;AAAU,GAFnC,CADG,GAIH,EAJJ;AAKD;IAGYC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACb,OAAD;AAC9B,MAAIA,OAAO,IAAIA,OAAO,CAACC,QAAvB,EAAiC;AAC/B,QAAI,IAAIG,MAAJ,CAAW,MAAIN,kBAAf,EAAqCO,IAArC,CAA0CL,OAAO,CAACC,QAAlD,CAAJ,EAAiE;AAC/D,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AACD,SAAO,IAAP;AACD;;IC7BYa,IAAI,GAAG,SAAPA,IAAO,GAAM,EAAnB;AAEP,IAAaC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,OAAD;AAAA,SAAaC,MAAM,CAACD,OAAO,CAACE,SAAT,EAAoB,GAApB,CAAnB;AAAA,CAA5B;AAEP,IAAaC,aAAa,GAAG,SAAhBA,aAAgB,CAACH,OAAD;AAAA,SAC3BA,OAAO,CAACI,MAAR,KACEJ,OAAO,CAACI,MAAR,CAAeC,UAAf,IACGL,OAAO,CAACI,MAAR,CAAeE,QADlB,IAEGN,OAAO,CAACI,MAAR,CAAeX,MAHpB,CAD2B;AAAA,CAAtB;AAQP,IAAac,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACP,OAAD;AAAA,SAAaA,OAAO,CAACI,MAAR,IAAkBJ,OAAO,CAACI,MAAR,CAAeR,UAA9C;AAAA,CAA5B;;;;"}
\ No newline at end of file
diff --git a/dist/esm/utils-cfdeb084.js b/dist/esm/utils-cfdeb084.js
new file mode 100644
index 0000000..f04b16a
--- /dev/null
+++ b/dist/esm/utils-cfdeb084.js
@@ -0,0 +1,18 @@
+import { M as MessageStatusType } from './type-0296584d.js';
+
+var truncate = function truncate(fullStr, strLen) {
+ if (fullStr === null || fullStr === undefined) return '';
+ if (fullStr.length <= strLen) return fullStr;
+ var separator = '...';
+ var sepLen = separator.length;
+ var charsToShow = strLen - sepLen;
+ var frontChars = Math.ceil(charsToShow / 2);
+ var backChars = Math.floor(charsToShow / 2);
+ return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);
+};
+var getIsSentFromStatus = function getIsSentFromStatus(status) {
+ return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
+};
+
+export { getIsSentFromStatus as g, truncate as t };
+//# sourceMappingURL=utils-cfdeb084.js.map
diff --git a/dist/esm/utils-cfdeb084.js.map b/dist/esm/utils-cfdeb084.js.map
new file mode 100644
index 0000000..6e7e4a7
--- /dev/null
+++ b/dist/esm/utils-cfdeb084.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils-cfdeb084.js","sources":["../../../src/ui/FileMessage/utils.js"],"sourcesContent":["import MessageStatusType from '../MessageStatus/type';\n\nexport const truncate = (fullStr, strLen) => {\n if (fullStr === null || fullStr === undefined) return '';\n if (fullStr.length <= strLen) return fullStr;\n const separator = '...';\n const sepLen = separator.length;\n const charsToShow = strLen - sepLen;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n};\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport default {\n truncate,\n getIsSentFromStatus,\n};\n"],"names":["truncate","fullStr","strLen","undefined","length","separator","sepLen","charsToShow","frontChars","Math","ceil","backChars","floor","substr","getIsSentFromStatus","status","MessageStatusType","SENT","DELIVERED","READ"],"mappings":";;IAEaA,QAAQ,GAAG,SAAXA,QAAW,CAACC,OAAD,EAAUC,MAAV,EAAqB;AAC3C,MAAID,OAAO,KAAK,IAAZ,IAAoBA,OAAO,KAAKE,SAApC,EAA+C,OAAO,EAAP;AAC/C,MAAIF,OAAO,CAACG,MAAR,IAAkBF,MAAtB,EAA8B,OAAOD,OAAP;AAC9B,MAAMI,SAAS,GAAG,KAAlB;AACA,MAAMC,MAAM,GAAGD,SAAS,CAACD,MAAzB;AACA,MAAMG,WAAW,GAAGL,MAAM,GAAGI,MAA7B;AACA,MAAME,UAAU,GAAGC,IAAI,CAACC,IAAL,CAAUH,WAAW,GAAG,CAAxB,CAAnB;AACA,MAAMI,SAAS,GAAGF,IAAI,CAACG,KAAL,CAAWL,WAAW,GAAG,CAAzB,CAAlB;AACA,SAAON,OAAO,CAACY,MAAR,CAAe,CAAf,EAAkBL,UAAlB,IAAgCH,SAAhC,GAA4CJ,OAAO,CAACY,MAAR,CAAeZ,OAAO,CAACG,MAAR,GAAiBO,SAAhC,CAAnD;AACD;IAEYG,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,MAAD;AAAA,SACjCA,MAAM,KAAKC,iBAAiB,CAACC,IAA7B,IACGF,MAAM,KAAKC,iBAAiB,CAACE,SADhC,IAEGH,MAAM,KAAKC,iBAAiB,CAACG,IAHC;AAAA;;;;"}
\ No newline at end of file
diff --git a/dist/esm/utils-d7f59026.js b/dist/esm/utils-d7f59026.js
new file mode 100644
index 0000000..addc982
--- /dev/null
+++ b/dist/esm/utils-d7f59026.js
@@ -0,0 +1,43 @@
+import format from 'date-fns/format';
+import { M as MessageStatusType } from './type-0296584d.js';
+
+var copyToClipboard = function copyToClipboard(text) {
+ if (window.clipboardData && window.clipboardData.setData) {
+ // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.
+ return window.clipboardData.setData('Text', text);
+ }
+
+ if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
+ var textarea = document.createElement('textarea');
+ textarea.textContent = text;
+ textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.
+
+ document.body.appendChild(textarea);
+ textarea.select();
+
+ try {
+ return document.execCommand('copy'); // Security exception may be thrown by some browsers.
+ } catch (ex) {
+ return false;
+ } finally {
+ document.body.removeChild(textarea);
+ }
+ }
+
+ return false;
+};
+var getMessageCreatedAt = function getMessageCreatedAt(message) {
+ return format(message.createdAt || 0, 'p');
+};
+var getSenderName = function getSenderName(message) {
+ return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
+};
+var getSenderProfileUrl = function getSenderProfileUrl(message) {
+ return message.sender && message.sender.profileUrl;
+};
+var getIsSentFromStatus = function getIsSentFromStatus(status) {
+ return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
+};
+
+export { getSenderName as a, getMessageCreatedAt as b, copyToClipboard as c, getIsSentFromStatus as d, getSenderProfileUrl as g };
+//# sourceMappingURL=utils-d7f59026.js.map
diff --git a/dist/esm/utils-d7f59026.js.map b/dist/esm/utils-d7f59026.js.map
new file mode 100644
index 0000000..a658e79
--- /dev/null
+++ b/dist/esm/utils-d7f59026.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils-d7f59026.js","sources":["../../../src/ui/Message/utils.js"],"sourcesContent":["import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const copyToClipboard = (text) => {\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt || 0, 'p');\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport const createUrlTester = (regexp) => (text) => regexp.test(text);\n\nexport default {\n copyToClipboard,\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n getIsSentFromStatus,\n createUrlTester,\n};\n"],"names":["copyToClipboard","text","window","clipboardData","setData","document","queryCommandSupported","textarea","createElement","textContent","style","position","body","appendChild","select","execCommand","ex","removeChild","getMessageCreatedAt","message","format","createdAt","getSenderName","sender","friendName","nickname","userId","getSenderProfileUrl","profileUrl","getIsSentFromStatus","status","MessageStatusType","SENT","DELIVERED","READ"],"mappings":";;;IAGaA,eAAe,GAAG,SAAlBA,eAAkB,CAACC,IAAD,EAAU;AACvC,MAAIC,MAAM,CAACC,aAAP,IAAwBD,MAAM,CAACC,aAAP,CAAqBC,OAAjD,EAA0D;AACxD;AACA,WAAOF,MAAM,CAACC,aAAP,CAAqBC,OAArB,CAA6B,MAA7B,EAAqCH,IAArC,CAAP;AACD;;AACD,MAAII,QAAQ,CAACC,qBAAT,IAAkCD,QAAQ,CAACC,qBAAT,CAA+B,MAA/B,CAAtC,EAA8E;AAC5E,QAAMC,QAAQ,GAAGF,QAAQ,CAACG,aAAT,CAAuB,UAAvB,CAAjB;AACAD,IAAAA,QAAQ,CAACE,WAAT,GAAuBR,IAAvB;AACAM,IAAAA,QAAQ,CAACG,KAAT,CAAeC,QAAf,GAA0B,OAA1B,CAH4E;;AAI5EN,IAAAA,QAAQ,CAACO,IAAT,CAAcC,WAAd,CAA0BN,QAA1B;AACAA,IAAAA,QAAQ,CAACO,MAAT;;AACA,QAAI;AACF,aAAOT,QAAQ,CAACU,WAAT,CAAqB,MAArB,CAAP,CADE;AAEH,KAFD,CAEE,OAAOC,EAAP,EAAW;AACX,aAAO,KAAP;AACD,KAJD,SAIU;AACRX,MAAAA,QAAQ,CAACO,IAAT,CAAcK,WAAd,CAA0BV,QAA1B;AACD;AACF;;AACD,SAAO,KAAP;AACD;IAEYW,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,OAAD;AAAA,SAAaC,MAAM,CAACD,OAAO,CAACE,SAAR,IAAqB,CAAtB,EAAyB,GAAzB,CAAnB;AAAA;IAEtBC,aAAa,GAAG,SAAhBA,aAAgB,CAACH,OAAD;AAAA,SAC3BA,OAAO,CAACI,MAAR,KACEJ,OAAO,CAACI,MAAR,CAAeC,UAAf,IACGL,OAAO,CAACI,MAAR,CAAeE,QADlB,IAEGN,OAAO,CAACI,MAAR,CAAeG,MAHpB,CAD2B;AAAA;IAQhBC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACR,OAAD;AAAA,SAAaA,OAAO,CAACI,MAAR,IAAkBJ,OAAO,CAACI,MAAR,CAAeK,UAA9C;AAAA;IAEtBC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,MAAD;AAAA,SACjCA,MAAM,KAAKC,iBAAiB,CAACC,IAA7B,IACGF,MAAM,KAAKC,iBAAiB,CAACE,SADhC,IAEGH,MAAM,KAAKC,iBAAiB,CAACG,IAHC;AAAA;;;;"}
\ No newline at end of file
diff --git a/dist/index.css b/dist/index.css
index 1c55668..90b1d15 100644
--- a/dist/index.css
+++ b/dist/index.css
@@ -1,258 +1,286 @@
-@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600,700&display=swap");
-:root {
- --sendbird-light-primary-500: #4d2aa6;
- --sendbird-light-primary-400: #6440C4;
- --sendbird-light-primary-300: #7B53EF;
- --sendbird-light-primary-200: #9E8CF5;
- --sendbird-light-primary-100: #E2DFFF;
- --sendbird-light-secondary-500: #007A7A;
- --sendbird-light-secondary-400: #189A8D;
- --sendbird-light-secondary-300: #2EBA9F;
- --sendbird-light-secondary-200: #6FD6BE;
- --sendbird-light-secondary-100: #AEF2DC;
- --sendbird-light-information-100: #b2d9ff;
- --sendbird-light-error-500: #A30E2D;
- --sendbird-light-error-400: #C11F41;
- --sendbird-light-error-300: #E53157;
- --sendbird-light-error-200: #FF6183;
- --sendbird-light-error-100: #FFABBD;
- --sendbird-light-background-700: #000000;
- --sendbird-light-background-600: #161616;
- --sendbird-light-background-500: #2C2C2C;
- --sendbird-light-background-400: #393939;
- --sendbird-light-background-300: #A8A8A8;
- --sendbird-light-background-200: #D9D9D9;
- --sendbird-light-background-100: #F0F0F0;
- --sendbird-light-background-50: #FFFFFF;
- --sendbird-light-overlay: rgba(0, 0, 0, 0.32);
- --sendbird-light-onlight-01: rgba(0, 0, 0, 0.88);
- --sendbird-light-onlight-02: rgba(0, 0, 0, 0.50);
- --sendbird-light-onlight-03: rgba(0, 0, 0, 0.38);
- --sendbird-light-onlight-04: rgba(0, 0, 0, 0.12);
- --sendbird-light-ondark-01: rgba(255, 255, 255, 0.88);
- --sendbird-light-ondark-02: rgba(255, 255, 255, 0.50);
- --sendbird-light-ondark-03: rgba(255, 255, 255, 0.38);
- --sendbird-light-ondark-04: rgba(255, 255, 255, 0.12);
- --sendbird-light-shadow-01: 0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12);
- --sendbird-light-shadow-02: 0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12);
- --sendbird-light-shadow-03: 0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12);
- --sendbird-light-shadow-04: 0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12);
- --sendbird-light-shadow-message-input: 0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
- --sendbird-light-theme-surface-2: #EAEAEA; }
+.sendbird-openchannel-conversation {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ width: 100%; }
+ .sendbird-openchannel-conversation .sendbird-openchannel-conversation__go-to-bottom {
+ position: absolute;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ bottom: 96px;
+ left: calc(50% - 20px);
+ width: 40px;
+ height: 40px;
+ border-radius: 24px;
+ z-index: 1; }
+ .sendbird-theme--light .sendbird-openchannel-conversation .sendbird-openchannel-conversation__go-to-bottom {
+ background-color: var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-openchannel-conversation .sendbird-openchannel-conversation__go-to-bottom {
+ background-color: var(--sendbird-dark-primary-200); }
+ .sendbird-openchannel-conversation .sendbird-openchannel-conversation__go-to-bottom:hover {
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-openchannel-conversation .sendbird-openchannel-conversation__go-to-bottom:hover {
+ background-color: var(--sendbird-light-primary-400); }
+ .sendbird-theme--dark .sendbird-openchannel-conversation .sendbird-openchannel-conversation__go-to-bottom:hover {
+ background-color: var(--sendbird-dark-primary-300); }
+ .sendbird-theme--light .sendbird-openchannel-conversation .sendbird-openchannel-conversation__go-to-bottom:active {
+ background-color: var(--sendbird-light-primary-500); }
+ .sendbird-theme--dark .sendbird-openchannel-conversation .sendbird-openchannel-conversation__go-to-bottom:active {
+ background-color: var(--sendbird-dark-primary-400); }
+ .sendbird-openchannel-conversation .sendbird-openchannel-conversation-scroll {
+ overflow-y: auto;
+ flex: 1 1 0;
+ order: 2;
+ width: 100%; }
+ .sendbird-openchannel-conversation .sendbird-openchannel-footer {
+ order: 3;
+ padding: 12px 24px 24px 24px; }
+ .sendbird-openchannel-conversation .sendbird-openchannel-conversation-scroll-container {
+ display: flex;
+ height: 100%;
+ overflow-y: auto;
+ overflow-x: hidden;
+ flex-direction: column; }
+ .sendbird-openchannel-conversation .sendbird-openchannel-conversation-scroll-container .sendbird-openchannel-conversation-scroll-padding {
+ flex: 1 1 0; }
-:root {
- --sendbird-dark-primary-500: #4d2aa6;
- --sendbird-dark-primary-400: #6440C4;
- --sendbird-dark-primary-300: #7B53EF;
- --sendbird-dark-primary-200: #9E8CF5;
- --sendbird-dark-primary-100: #E2DFFF;
- --sendbird-dark-secondary-500: #007A7A;
- --sendbird-dark-secondary-400: #189A8D;
- --sendbird-dark-secondary-300: #2EBA9F;
- --sendbird-dark-secondary-200: #6FD6BE;
- --sendbird-dark-secondary-100: #AEF2DC;
- --sendbird-dark-information-100: #b2d9ff;
- --sendbird-dark-error-500: #A30E2D;
- --sendbird-dark-error-400: #C11F41;
- --sendbird-dark-error-300: #E53157;
- --sendbird-dark-error-200: #FF6183;
- --sendbird-dark-error-100: #FFABBD;
- --sendbird-dark-background-700: #000000;
- --sendbird-dark-background-600: #161616;
- --sendbird-dark-background-500: #2C2C2C;
- --sendbird-dark-background-400: #393939;
- --sendbird-dark-background-300: #A8A8A8;
- --sendbird-dark-background-200: #D9D9D9;
- --sendbird-dark-background-100: #F0F0F0;
- --sendbird-dark-background-50: #FFFFFF;
- --sendbird-dark-overlay: rgba(0, 0, 0, 0.32);
- --sendbird-dark-onlight-01: rgba(0, 0, 0, 0.88);
- --sendbird-dark-onlight-02: rgba(0, 0, 0, 0.50);
- --sendbird-dark-onlight-03: rgba(0, 0, 0, 0.38);
- --sendbird-dark-onlight-04: rgba(0, 0, 0, 0.12);
- --sendbird-dark-ondark-01: rgba(255, 255, 255, 0.88);
- --sendbird-dark-ondark-02: rgba(255, 255, 255, 0.50);
- --sendbird-dark-ondark-03: rgba(255, 255, 255, 0.38);
- --sendbird-dark-ondark-04: rgba(255, 255, 255, 0.12);
- --sendbird-dark-shadow-01: 0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12);
- --sendbird-dark-shadow-02: 0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12);
- --sendbird-dark-shadow-03: 0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12);
- --sendbird-dark-shadow-04: 0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12);
- --sendbird-dark-shadow-message-input: 0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12); }
+.sendbird-openchannel-settings {
+ height: 100%;
+ width: 320px;
+ display: inline-block;
+ overflow-y: scroll;
+ position: relative; }
+ .sendbird-theme--light .sendbird-openchannel-settings {
+ background-color: var(--sendbird-light-background-50);
+ border: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-openchannel-settings {
+ background-color: var(--sendbird-dark-background-600);
+ border: 1px solid var(--sendbird-dark-ondark-04); }
+ .sendbird-openchannel-settings .sendbird-participants-accordion__footer {
+ text-align: left;
+ padding-top: 16px;
+ padding-left: 16px; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__accordion-icon,
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__panel-icon__delete {
+ position: absolute;
+ left: 16px; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__participant {
+ height: 100%; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__participant .sendbird-openchannel-settings__participants-list {
+ padding-top: 64px;
+ height: calc(100% - 64px);
+ overflow-y: scroll; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__participant .sendbird-openchannel-settings__header {
+ display: block;
+ width: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1; }
+ .sendbird-theme--light .sendbird-openchannel-settings .sendbird-openchannel-settings__participant .sendbird-openchannel-settings__header {
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird-openchannel-settings .sendbird-openchannel-settings__participant .sendbird-openchannel-settings__header {
+ background-color: var(--sendbird-dark-background-600); }
+ .sendbird-openchannel-settings .sendbird-participants-accordion,
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__delete-channel {
+ text-align: left; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__members .sendbird-badge__text {
+ margin-top: -2px; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__header {
+ height: 64px;
+ min-height: 64px;
+ position: relative;
+ padding: 20px 24px;
+ box-sizing: border-box;
+ text-align: left; }
+ .sendbird-theme--light .sendbird-openchannel-settings .sendbird-openchannel-settings__header {
+ border-bottom: solid 1px var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-openchannel-settings .sendbird-openchannel-settings__header {
+ border-bottom: solid 1px var(--sendbird-dark-ondark-04); }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__close-icon {
+ cursor: pointer;
+ position: absolute;
+ top: 20px;
+ right: 16px; }
+ .sendbird-theme--light .sendbird-openchannel-settings .sendbird-openchannel-settings__close-icon path {
+ fill: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-openchannel-settings .sendbird-openchannel-settings__close-icon path {
+ fill: var(--sendbird-dark-ondark-01); }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__placeholder {
+ margin-top: 40%; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__url {
+ padding: 16px;
+ box-sizing: border-box;
+ position: relative; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__url:hover .sendbird-openchannel-settings__copy-icon {
+ display: inline-block; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__url .sendbird-openchannel-settings__copy-icon {
+ cursor: pointer;
+ position: absolute;
+ display: none;
+ top: 10px;
+ right: 18px; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__url .sendbird-openchannel-settings__url-value {
+ margin-top: 8px; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__url .sendbird-openchannel-settings__url-value,
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__url .sendbird-openchannel-settings__url-label {
+ text-align: left;
+ display: block;
+ word-wrap: break-word; }
+ .sendbird-theme--light .sendbird-openchannel-settings .sendbird-openchannel-settings__url {
+ background-color: var(--sendbird-light-background-50);
+ border-bottom: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-openchannel-settings .sendbird-openchannel-settings__url {
+ background-color: var(--sendbird-dark-background-600);
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__panel-item {
+ display: block;
+ cursor: pointer;
+ box-sizing: border-box;
+ position: relative;
+ padding: 12px 22px 10px 56px; }
+ .sendbird-theme--light .sendbird-openchannel-settings .sendbird-openchannel-settings__panel-item {
+ background-color: var(--sendbird-light-background-50);
+ border-bottom: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-openchannel-settings .sendbird-openchannel-settings__panel-item {
+ background-color: var(--sendbird-dark-background-600);
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__panel-item:focus {
+ outline: none; }
+ .sendbird-openchannel-settings .sendbird-openchannel-settings__panel-item.sendbird-channel-settings__panel-item__disabled {
+ cursor: not-allowed; }
+ .sendbird-openchannel-settings .sendbird-participants-accordion__member {
+ position: relative;
+ padding: 12px 0px 12px 56px;
+ height: 40px;
+ box-sizing: border-box;
+ text-align: left; }
+ .sendbird-openchannel-settings .sendbird-participants-accordion__member .sendbird-label {
+ max-width: 240px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-openchannel-settings .sendbird-participants-accordion__member-avatar {
+ position: absolute;
+ left: 16px;
+ top: 10px;
+ cursor: pointer; }
-:root {
- --sendbird-iconbutton-color: #825eeb;
- --sendbird-message-input-border-active: #7B53EF;
- --sendbird-selected-reaction-button-border-hover: #9E8CF5;
- --sendbird-add-reaction-button-border-hover: #9E8CF5;
- --sendbird-tooltip-background: #000000;
- --sendbird-tooltip-text-color: rgba(255, 255, 255, 0.88);
- --sendbird-button-border-focus: #FFFFFF;
- --sendbird-file-message-icon-background: #FFFFFF;
- --sendbird-font-family-default: 'Open Sans', sans-serif;
- --sendbird-message-balloon-width: 404px; }
+.sendbird-accordion {
+ padding: 8px 0px 16px 0px;
+ position: relative;
+ box-sizing: border-box; }
+ .sendbird-theme--light .sendbird-accordion {
+ border-bottom: 1px solid var(--sendbird-light-onlight-04);
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird-accordion {
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04);
+ background-color: var(--sendbird-dark-background-600); }
+ .sendbird-accordion .sendbird-accordion__member {
+ position: relative;
+ padding: 12px 0px 12px 44px;
+ height: 40px;
+ box-sizing: border-box; }
+ .sendbird-accordion .sendbird-accordion__footer {
+ display: flex;
+ justify-content: flex-start;
+ margin-top: 8px; }
-.sendbird__offline .sendbird-channel-preview {
- cursor: not-allowed; }
+.sendbird-accordion__panel-heder {
+ cursor: pointer;
+ position: relative;
+ padding: 12px 22px 10px 56px; }
+ .sendbird-theme--light .sendbird-accordion__panel-heder {
+ background-color: var(--sendbird-light-background-50);
+ border-bottom: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-accordion__panel-heder {
+ background-color: var(--sendbird-dark-background-600);
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
+ .sendbird-accordion__panel-heder:focus {
+ outline: none; }
+ .sendbird-accordion__panel-heder.sendbird-accordion__panel-item__disabled {
+ cursor: not-allowed; }
-.sendbird-channel-preview {
+.sendbird-accordion__panel-icon-left,
+.sendbird-accordion__panel-icon-right {
+ position: absolute;
+ top: 10px; }
+
+.sendbird-accordion__panel-icon-left {
+ left: 16px; }
+
+.sendbird-accordion__panel-icon-right {
+ right: 16px; }
+
+.sendbird-accordion__panel-icon--open {
+ transform: rotate(90deg); }
+
+.sendbird-theme--light .sendbird-accordion__panel-icon--chevron path {
+ fill: var(--sendbird-light-onlight-01); }
+
+.sendbird-theme--dark .sendbird-accordion__panel-icon--chevron path {
+ fill: var(--sendbird-dark-ondark-01); }
+
+.sendbird-theme--light .sendbird-accordion__panel-icon__leave path {
+ fill: var(--sendbird-light-error-300); }
+
+.sendbird-theme--dark .sendbird-accordion__panel-icon__leave path {
+ fill: var(--sendbird-dark-error-300); }
+
+.sendbird-openchannel-conversation-header {
position: relative;
- cursor: pointer;
- box-sizing: border-box;
- width: 320px;
- height: 80px;
+ min-height: 64px; }
+ .sendbird-theme--light .sendbird-openchannel-conversation-header {
+ border-bottom: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-openchannel-conversation-header {
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
+ .sendbird-openchannel-conversation-header .sendbird-openchannel-conversation-header__left__title {
+ white-space: nowrap;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ max-width: calc(100% - 120px); }
+ .sendbird-openchannel-conversation-header__left [class*=sendbird-openchannel-conversation-header__left__cover-image] {
+ position: absolute;
+ left: 20px;
+ top: 16px; }
+ .sendbird-openchannel-conversation-header__left__title {
+ position: absolute;
+ left: 60px;
+ top: 12px; }
+ .sendbird-openchannel-conversation-header__left__sub-title {
+ position: absolute;
+ left: 60px;
+ top: 36px; }
+ .sendbird-openchannel-conversation-header__right {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ width: 64px;
+ height: 64px; }
+ .sendbird-openchannel-conversation-header__right__trigger {
+ position: absolute;
+ top: 16px;
+ right: 16px;
+ display: flex;
+ align-items: center;
+ justify-content: center; }
+
+.sendbird-frozen-channel-notification {
+ position: relative;
+ margin-top: 8px;
+ margin-right: 24px;
+ margin-left: 24px;
+ height: 32px;
display: flex;
- flex-direction: row;
align-items: center;
justify-content: center;
- padding: 12px 16px 12px 16px; }
- .sendbird-theme--light .sendbird-channel-preview {
- border-bottom: solid 1px var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-preview {
- border-bottom: solid 1px var(--sendbird-dark-ondark-04); }
- .sendbird-channel-preview .sendbird-channel-preview__frozen-icon {
- padding-left: 4px; }
- .sendbird-channel-preview .sendbird-channel-preview__broadcast-icon {
- padding-right: 4px; }
- .sendbird-channel-preview:focus {
- outline: none; }
- .sendbird-channel-preview .sendbird-channel-preview__avatar {
- width: 56px;
- height: 56px; }
- .sendbird-channel-preview .sendbird-channel-preview__content {
- width: 100%;
- height: 100%;
- margin-left: 16px; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper {
- display: flex;
- justify-content: space-between;
- width: 216px;
- height: 16px; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__header {
- display: flex;
- justify-content: flex-start;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__header__channel-name {
- overflow: hidden;
- text-overflow: ellipsis;
- max-width: 128px;
- word-break: break-all;
- white-space: nowrap; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__header__total-members {
- margin-top: 2px;
- margin-left: 4px; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__last-message-at {
- margin-left: 4px;
- margin-bottom: 4px;
- white-space: nowrap; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__lower {
- margin-top: 8px;
- width: 216px;
- height: 32px;
- display: flex;
- justify-content: space-between; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__lower__last-message {
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__lower__unread-message-count {
- margin-left: 8px;
- margin-bottom: 12px; }
- .sendbird-channel-preview .sendbird-channel-preview__action {
- position: absolute;
- top: 12px;
- right: 12px;
- display: inline-block; }
- .sendbird-channel-preview .sendbird-channel-preview__action .sendbird-iconbutton {
- display: none; }
- .sendbird-theme--light .sendbird-channel-preview:hover {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-channel-preview:hover {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-channel-preview:hover .sendbird-channel-preview__action .sendbird-iconbutton {
- display: inline-block; }
- .sendbird-channel-preview:hover .sendbird-channel-preview__content__upper__last-message-at {
- display: none; }
- .sendbird-channel-preview:hover .sendbird-channel-preview__content__lower__unread-message-count {
- display: none; }
-
-.sendbird-channel-preview--active {
- padding: 12px 16px 12px 12px; }
- .sendbird-theme--light .sendbird-channel-preview--active {
- border-left: solid 4px var(--sendbird-light-primary-300);
- border-bottom: solid 1px var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-channel-preview--active {
- border-left: solid 4px var(--sendbird-dark-primary-200);
- border-bottom: solid 1px var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-700); }
- .sendbird-theme--light .sendbird-channel-preview--active .sendbird-channel-preview__content__upper__header__channel-name {
- color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-channel-preview--active .sendbird-channel-preview__content__upper__header__channel-name {
- color: var(--sendbird-dark-primary-200); }
-
-.sendbird-image-renderer--hidden-placeholder {
- display: none; }
-
-.sendbird-icon {
- display: inline-block; }
- .sendbird-icon:focus {
- outline: none; }
-
-.sendbird-theme--light .sendbird-color--primary [class*='fill'] {
- fill: var(--sendbird-light-primary-300); }
-
-.sendbird-theme--dark .sendbird-color--primary [class*='fill'] {
- fill: var(--sendbird-dark-primary-200); }
-
-.sendbird-theme--light .sendbird-color--primary [class*='stroke'] {
- stroke: var(--sendbird-light-primary-300);
- stroke-width: 2px;
- stroke-linejoin: round; }
-
-.sendbird-theme--dark .sendbird-color--primary [class*='stroke'] {
- stroke: var(--sendbird-dark-primary-200);
- stroke-width: 2px;
- stroke-linejoin: round; }
-
-.sendbird-theme--light .sendbird-color--secondary [class*='fill'] {
- fill: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-color--secondary [class*='fill'] {
- fill: var(--sendbird-dark-ondark-01); }
-
-.sendbird-theme--light .sendbird-color--content [class*='fill'] {
- fill: var(--sendbird-light-ondark-01); }
-
-.sendbird-theme--dark .sendbird-color--content [class*='fill'] {
- fill: var(--sendbird-dark-onlight-01); }
-
-.sendbird-theme--light .sendbird-color--content-inverse [class*='fill'] {
- fill: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-color--content-inverse [class*='fill'] {
- fill: var(--sendbird-dark-ondark-01); }
-
-.sendbird-color--white [class*='fill'] {
- fill: #ffffff; }
-
-.sendbird-theme--light .sendbird-color--sent [class*='fill'] {
- fill: var(--sendbird-light-onlight-03); }
-
-.sendbird-theme--dark .sendbird-color--sent [class*='fill'] {
- fill: var(--sendbird-dark-ondark-03); }
-
-.sendbird-theme--light .sendbird-color--read [class*='fill'] {
- fill: var(--sendbird-light-secondary-300); }
-
-.sendbird-theme--dark .sendbird-color--read [class*='fill'] {
- fill: var(--sendbird-dark-secondary-200); }
-
-.sendbird-theme--light .sendbird-color--on-background [class*='fill'] {
- fill: var(--sendbird-light-onlight-03); }
-
-.sendbird-theme--dark .sendbird-color--on-background [class*='fill'] {
- fill: var(--sendbird-dark-ondark-03); }
+ border-radius: 4px; }
+ .sendbird-theme--light .sendbird-frozen-channel-notification {
+ background-color: var(--sendbird-light-information-100); }
+ .sendbird-theme--dark .sendbird-frozen-channel-notification {
+ background-color: var(--sendbird-dark-information-100); }
.sendbird-avatar {
display: inline-block;
@@ -285,245 +313,579 @@
.sendbird-avatar .sendbird-avatar--inner__four-child .sendbird-avatar-img:last-child {
transform: translate(-23%, -23%) scale(0.5); }
-.sendbird-badge {
- height: 20px;
- min-width: 20px;
- border-radius: 10px;
- display: inline-block; }
- .sendbird-theme--light .sendbird-badge {
- background-color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-badge {
- background-color: var(--sendbird-dark-primary-200); }
- .sendbird-badge .sendbird-badge__text {
- margin: 0px 6px; }
-
-[class*=sendbird-label] {
- font-family: var(--sendbird-font-family-default); }
-
-.sendbird-label--h-1 {
- font-size: 20px;
- font-weight: 600;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.4;
- letter-spacing: -0.2px; }
-
-.sendbird-label--h-2 {
- font-size: 18px;
- font-weight: 600;
- font-stretch: normal;
- font-style: normal;
- line-height: normal;
- letter-spacing: -0.2px; }
-
-.sendbird-label--subtitle-1 {
- font-size: 16px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.38;
- letter-spacing: -0.2px; }
-
-.sendbird-label--subtitle-2 {
- font-size: 14px;
- font-weight: 600;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.14;
- letter-spacing: -0.2px; }
-
-.sendbird-label--body-1 {
- font-size: 14px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- letter-spacing: normal; }
+.sendbird__user-profile {
+ width: 320px;
+ border-radius: 4px;
+ padding: 24px;
+ box-sizing: border-box;
+ text-align: center; }
+ .sendbird-theme--light .sendbird__user-profile {
+ box-shadow: var(--sendbird-light-shadow-02);
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird__user-profile {
+ box-shadow: var(--sendbird-dark-shadow-02);
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird__user-profile .sendbird__user-profile-avatar {
+ margin: 8px 0px; }
+ .sendbird__user-profile .sendbird__user-profile-name {
+ max-width: 270px;
+ white-space: nowrap;
+ overflow-x: hidden;
+ text-overflow: ellipsis; }
+ .sendbird__user-profile .sendbird__user-profile-message {
+ margin-top: 20px; }
+ .sendbird__user-profile .sendbird__user-profile-message button {
+ width: 272px; }
+ .sendbird__user-profile .sendbird__user-profile-seperator {
+ margin: 24px 0px;
+ height: 1px; }
+ .sendbird-theme--light .sendbird__user-profile .sendbird__user-profile-seperator {
+ background-color: var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird__user-profile .sendbird__user-profile-seperator {
+ background-color: var(--sendbird-dark-ondark-04); }
+ .sendbird__user-profile .sendbird__user-profile-userId--label,
+ .sendbird__user-profile .sendbird__user-profile-userId--value {
+ display: block;
+ text-align: left; }
+ .sendbird__user-profile .sendbird__user-profile-userId--label {
+ margin-bottom: 8px; }
-.sendbird-label--body-2 {
- font-size: 12px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.33;
- letter-spacing: normal; }
+.sendbird-openchannel-conversation-scroll {
+ position: relative;
+ width: 100%; }
+ .sendbird-openchannel-conversation-scroll .sendbird-openchannel-conversation-scroll__container {
+ position: absolute;
+ width: 100%; }
+ .sendbird-openchannel-conversation-scroll .sendbird-openchannel-conversation-scroll__container .sendbird-openchannel-conversation-scroll__container__padding {
+ height: 8px; }
-.sendbird-label--button-1 {
- font-size: 14px;
- font-weight: 600;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- letter-spacing: normal; }
-
-.sendbird-label--button-2 {
- font-size: 14px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- letter-spacing: normal; }
-
-.sendbird-label--caption-1 {
- font-size: 14px;
- font-weight: 600;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- letter-spacing: normal; }
-
-.sendbird-label--caption-2 {
- font-size: 12px;
- font-weight: bold;
- font-style: normal;
- line-height: 1;
- letter-spacing: normal; }
-
-.sendbird-label--caption-3 {
- font-size: 12px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1;
- letter-spacing: normal; }
-
-.sendbird-theme--light .sendbird-label--color-onbackground-1 {
- color: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-label--color-onbackground-1 {
- color: var(--sendbird-dark-ondark-01); }
-
-.sendbird-theme--light .sendbird-label--color-onbackground-2 {
- color: var(--sendbird-light-onlight-02); }
-
-.sendbird-theme--dark .sendbird-label--color-onbackground-2 {
- color: var(--sendbird-dark-ondark-02); }
-
-.sendbird-theme--light .sendbird-label--color-onbackground-3 {
- color: var(--sendbird-light-onlight-03); }
-
-.sendbird-theme--dark .sendbird-label--color-onbackground-3 {
- color: var(--sendbird-dark-ondark-03); }
-
-.sendbird-theme--light .sendbird-label--color-oncontent-1 {
- color: var(--sendbird-light-ondark-01); }
-
-.sendbird-theme--dark .sendbird-label--color-oncontent-1 {
- color: var(--sendbird-dark-onlight-01); }
-
-.sendbird-theme--light .sendbird-label--color-oncontent-2 {
- color: var(--sendbird-light-ondark-02); }
+.sendbird-openchannel-og-message {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ width: 100%; }
+ .sendbird-theme--light .sendbird-openchannel-og-message:hover {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-openchannel-og-message:hover {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-openchannel-og-message:hover .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__context-menu {
+ display: block; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top {
+ box-sizing: border-box;
+ position: relative;
+ display: flex;
+ flex-direction: row; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__left {
+ position: relative;
+ display: flex;
+ width: 52px;
+ min-width: 52px; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__left .sendbird-openchannel-og-message__top__left__avatar {
+ position: absolute;
+ display: flex;
+ top: 8px;
+ left: 24px; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__right {
+ position: relative;
+ display: flex;
+ box-sizing: border-box;
+ flex-direction: column;
+ margin: 8px 24px 8px 12px; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__right .sendbird-openchannel-og-message__top__right__title {
+ position: relative;
+ display: flex;
+ margin-bottom: 2px; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__right .sendbird-openchannel-og-message__top__right__title .sendbird-openchannel-og-message__top__right__title__sender-name {
+ position: relative;
+ display: flex; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__right .sendbird-openchannel-og-message__top__right__title .sendbird-openchannel-og-message__top__right__title__sent-at {
+ position: relative;
+ display: flex;
+ margin-left: 4px; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__right .sendbird-openchannel-og-message__top__right__description .sendbird-openchannel-og-message__top__right__description__message {
+ position: relative;
+ display: inline;
+ white-space: pre-wrap;
+ word-break: break-all; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__context-menu {
+ position: absolute;
+ right: 16px;
+ display: none; }
+ .sendbird-theme--light .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__context-menu .sendbird-openchannel-og-message__top__context-menu--icon {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__context-menu .sendbird-openchannel-og-message__top__context-menu--icon {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__context-menu .sendbird-openchannel-og-message__top__context-menu--icon:hover {
+ background-color: var(--sendbird-light-background-300); }
+ .sendbird-theme--dark .sendbird-openchannel-og-message .sendbird-openchannel-og-message__top .sendbird-openchannel-og-message__top__context-menu .sendbird-openchannel-og-message__top__context-menu--icon:hover {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom {
+ position: relative;
+ display: inline;
+ margin-bottom: 8px;
+ width: 100%; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag {
+ position: relative;
+ display: inline-block;
+ box-sizing: border-box;
+ width: calc(100% - 64px);
+ max-width: 360px;
+ left: 64px;
+ padding: 12px 12px 4px 12px;
+ border-radius: 8px; }
+ .sendbird-theme--light .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag {
+ border: solid 1px var(--sendbird-light-onlight-04);
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag {
+ border: solid 1px var(--sendbird-dark-ondark-04);
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag .sendbird-openchannel-og-message__bottom__og-tag__url {
+ position: relative;
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ margin-bottom: 8px;
+ max-width: 336px; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag .sendbird-openchannel-og-message__bottom__og-tag__title {
+ position: relative;
+ display: inline-block;
+ white-space: pre-wrap;
+ overflow-wrap: normal;
+ margin-bottom: 8px;
+ max-width: 336px; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag .sendbird-openchannel-og-message__bottom__og-tag__title:hover {
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag .sendbird-openchannel-og-message__bottom__og-tag__title:hover {
+ color: var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag .sendbird-openchannel-og-message__bottom__og-tag__title:hover {
+ color: var(--sendbird-dark-primary-200); }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag .sendbird-openchannel-og-message__bottom__og-tag__description {
+ position: relative;
+ display: block;
+ white-space: pre-wrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-break: break-all;
+ max-height: 32px;
+ margin-bottom: 8px;
+ width: 100%;
+ max-width: 336px; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag .sendbird-openchannel-og-message__bottom__og-tag__thumbnail {
+ box-sizing: border-box;
+ position: relative;
+ display: block;
+ margin-top: 4px;
+ margin-bottom: 8px;
+ width: 100%; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag .sendbird-openchannel-og-message__bottom__og-tag__thumbnail:hover {
+ cursor: pointer; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag .sendbird-openchannel-og-message__bottom__og-tag__thumbnail .sendbird-openchannel-og-message__bottom__og-tag__thumbnail__image {
+ border-radius: 8px;
+ width: 100%;
+ min-width: 200px;
+ max-width: 336px; }
+ .sendbird-openchannel-og-message .sendbird-openchannel-og-message__bottom .sendbird-openchannel-og-message__bottom__og-tag .sendbird-openchannel-og-message__bottom__og-tag__thumbnail .sendbird-openchannel-og-message__bottom__og-tag__thumbnail__image--placeholder {
+ border-radius: 8px;
+ width: 100%;
+ min-width: 200px;
+ max-width: 336px; }
-.sendbird-theme--dark .sendbird-label--color-oncontent-2 {
- color: var(--sendbird-dark-onlight-02); }
+.sendbird-openchannel-og-message--word {
+ display: inline;
+ margin: 0px 2px;
+ word-break: break-all; }
-.sendbird-theme--light .sendbird-label--color-primary {
+.sendbird-theme--light .sendbird-openchannel-og-message--word--link {
color: var(--sendbird-light-primary-300); }
-.sendbird-theme--dark .sendbird-label--color-primary {
+.sendbird-theme--dark .sendbird-openchannel-og-message--word--link {
color: var(--sendbird-dark-primary-200); }
-.sendbird-theme--light .sendbird-label--color-error {
- color: var(--sendbird-light-error-300); }
-
-.sendbird-theme--dark .sendbird-label--color-error {
- color: var(--sendbird-dark-error-300); }
-
-.sendbird-iconbutton {
- color: var(--sendbird-iconbutton-color);
- display: inline-block;
- padding: 3px;
- background-color: transparent;
- cursor: pointer;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- border: 1px solid transparent;
- border-radius: 4px;
- outline: 0px; }
- .sendbird-theme--light .sendbird-iconbutton .sendbird-iconbutton__inner svg {
- fill: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-iconbutton .sendbird-iconbutton__inner svg {
- fill: var(--sendbird-dark-ondark-01); }
- .sendbird-theme--light .sendbird-iconbutton:hover {
+.sendbird-openchannel-user-message {
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ width: 100%; }
+ .sendbird-theme--light .sendbird-openchannel-user-message:hover {
background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-iconbutton:hover {
+ .sendbird-theme--dark .sendbird-openchannel-user-message:hover {
background-color: var(--sendbird-dark-background-500); }
- .sendbird-theme--light .sendbird-iconbutton:focus {
- box-shadow: var(--sendbird-light-primary-300) 0px 0px 0px 2px; }
- .sendbird-theme--dark .sendbird-iconbutton:focus {
- box-shadow: var(--sendbird-dark-primary-200) 0px 0px 0px 2px; }
- .sendbird-theme--light .sendbird-iconbutton:active {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-iconbutton:active {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-iconbutton:disabled {
- cursor: not-allowed !important; }
- .sendbird-theme--light .sendbird-iconbutton:disabled .sendbird-iconbutton__inner svg, .sendbird-theme--light .sendbird-iconbutton:disabled .sendbird-iconbutton__inner path {
- fill: var(--sendbird-light-onlight-02); }
- .sendbird-theme--dark .sendbird-iconbutton:disabled .sendbird-iconbutton__inner svg, .sendbird-theme--dark .sendbird-iconbutton:disabled .sendbird-iconbutton__inner path {
- fill: var(--sendbird-dark-ondark-02); }
-
-.sendbird-theme--light .sendbird-iconbutton--pressed {
- background-color: var(--sendbird-light-primary-100); }
+ .sendbird-openchannel-user-message:hover .sendbird-openchannel-user-message__context-menu {
+ display: block; }
+ .sendbird-openchannel-user-message .sendbird-openchannel-user-message__left {
+ position: relative;
+ display: flex;
+ width: 52px;
+ min-width: 52px; }
+ .sendbird-openchannel-user-message .sendbird-openchannel-user-message__left .sendbird-openchannel-user-message__left__avatar {
+ position: relative;
+ display: flex;
+ margin-top: 8px;
+ margin-left: 24px; }
+ .sendbird-openchannel-user-message .sendbird-openchannel-user-message__right {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ margin: 8px 24px 8px 12px; }
+ .sendbird-openchannel-user-message .sendbird-openchannel-user-message__right .sendbird-openchannel-user-message__right__top {
+ position: relative;
+ display: flex;
+ margin-bottom: 2px; }
+ .sendbird-openchannel-user-message .sendbird-openchannel-user-message__right .sendbird-openchannel-user-message__right__top .sendbird-openchannel-user-message__right__top__sender-name {
+ position: relative;
+ display: flex; }
+ .sendbird-openchannel-user-message .sendbird-openchannel-user-message__right .sendbird-openchannel-user-message__right__top .sendbird-openchannel-user-message__right__top__sent-at {
+ position: relative;
+ display: flex;
+ margin-left: 4px; }
+ .sendbird-openchannel-user-message .sendbird-openchannel-user-message__right .sendbird-openchannel-user-message__right__bottom {
+ position: relative;
+ display: flex;
+ width: 100%; }
+ .sendbird-openchannel-user-message .sendbird-openchannel-user-message__right .sendbird-openchannel-user-message__right__bottom .sendbird-openchannel-user-message__right__bottom__message {
+ position: relative;
+ word-break: break-all; }
+ .sendbird-openchannel-user-message .sendbird-openchannel-user-message__context-menu {
+ position: absolute;
+ right: 16px;
+ display: none; }
+ .sendbird-theme--light .sendbird-openchannel-user-message .sendbird-openchannel-user-message__context-menu .sendbird-openchannel-user-message__context-menu--icon {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-openchannel-user-message .sendbird-openchannel-user-message__context-menu .sendbird-openchannel-user-message__context-menu--icon {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-openchannel-user-message .sendbird-openchannel-user-message__context-menu .sendbird-openchannel-user-message__context-menu--icon:hover {
+ background-color: var(--sendbird-light-background-300); }
+ .sendbird-theme--dark .sendbird-openchannel-user-message .sendbird-openchannel-user-message__context-menu .sendbird-openchannel-user-message__context-menu--icon:hover {
+ background-color: var(--sendbird-dark-background-400); }
-.sendbird-theme--dark .sendbird-iconbutton--pressed {
- background-color: var(--sendbird-dark-background-700); }
+.sendbird-openchannel-thumbnail-message {
+ position: relative;
+ display: flex;
+ flex-direction: row; }
+ .sendbird-theme--light .sendbird-openchannel-thumbnail-message:hover {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-openchannel-thumbnail-message:hover {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-openchannel-thumbnail-message:hover .sendbird-openchannel-thumbnail-message__context-menu {
+ display: block; }
+ .sendbird-theme--light .sendbird-openchannel-thumbnail-message:hover .sendbird-openchannel-thumbnail-message__context-menu .sendbird-openchannel-thumbnail-message__context-menu--icon {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-openchannel-thumbnail-message:hover .sendbird-openchannel-thumbnail-message__context-menu .sendbird-openchannel-thumbnail-message__context-menu--icon {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-openchannel-thumbnail-message:hover .sendbird-openchannel-thumbnail-message__context-menu .sendbird-openchannel-thumbnail-message__context-menu--icon:hover {
+ background-color: var(--sendbird-light-background-300); }
+ .sendbird-theme--dark .sendbird-openchannel-thumbnail-message:hover .sendbird-openchannel-thumbnail-message__context-menu .sendbird-openchannel-thumbnail-message__context-menu--icon:hover {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__left {
+ position: relative;
+ display: flex;
+ width: 52px;
+ min-width: 52px; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__left .sendbird-openchannel-thumbnail-message__left__avatar {
+ position: absolute;
+ display: inline;
+ margin-top: 8px;
+ margin-left: 28px; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ margin-left: 12px;
+ width: calc(100% - 64px); }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__title {
+ position: relative;
+ display: inline;
+ margin-bottom: 4px; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__title .sendbird-openchannel-thumbnail-message__right__title__sender-name {
+ position: relative;
+ display: inline;
+ margin-right: 4px; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__title .sendbird-openchannel-thumbnail-message__right__title__sent-at {
+ position: relative;
+ display: inline; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body {
+ position: relative;
+ display: inline;
+ border-radius: 8px;
+ width: 100%;
+ max-width: 360px;
+ height: 100%; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body:hover .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__overlay {
+ opacity: 1; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap {
+ position: relative;
+ width: 100%;
+ height: 100%; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__overlay {
+ position: absolute;
+ opacity: 0;
+ width: 100%;
+ height: 100%;
+ max-width: 360px;
+ top: 0px;
+ left: 0px;
+ border-radius: 8px;
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__overlay {
+ background-color: var(--sendbird-light-overlay); }
+ .sendbird-theme--dark .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__overlay {
+ background-color: var(--sendbird-dark-overlay); }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__video {
+ max-width: 360px;
+ height: 270px; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__video:hover {
+ cursor: pointer; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__video .sendbird-openchannel-thumbnail-message__right__body__wrap__video__video {
+ max-width: 360px;
+ height: 270px;
+ border-radius: 8px; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__video .sendbird-openchannel-thumbnail-message__right__body__wrap__video__icon {
+ position: absolute;
+ top: calc(50% - 28px);
+ left: calc(50% - 28px); }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__video--icon {
+ padding: 107px 152px 107px 152px;
+ border-radius: 8px; }
+ .sendbird-theme--light .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__video--icon {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__video--icon {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__image {
+ border-radius: 8px;
+ max-width: 360px; }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__image--icon {
+ padding: 107px 152px 107px 152px;
+ border-radius: 8px; }
+ .sendbird-theme--light .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__image--icon {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__image--icon {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__unknown {
+ padding: 107px 152px 107px 152px;
+ border-radius: 8px; }
+ .sendbird-theme--light .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__unknown {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__right .sendbird-openchannel-thumbnail-message__right__body .sendbird-openchannel-thumbnail-message__right__body__wrap .sendbird-openchannel-thumbnail-message__right__body__wrap__unknown {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-openchannel-thumbnail-message .sendbird-openchannel-thumbnail-message__context-menu {
+ position: absolute;
+ display: none;
+ top: 8px;
+ right: 16px; }
-.sendbird-channel-header {
+.sendbird-openchannel-profile {
position: relative;
- height: 64px;
- min-height: 64px;
- width: 320px;
- padding: 8px 64px 8px 8px;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-channel-header {
+ text-align: center;
+ padding: 32px 40px 27px 40px; }
+ .sendbird-theme--light .sendbird-openchannel-profile {
border-bottom: 1px solid var(--sendbird-light-onlight-04);
background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-channel-header {
+ .sendbird-theme--dark .sendbird-openchannel-profile {
border-bottom: 1px solid var(--sendbird-dark-ondark-04);
background-color: var(--sendbird-dark-background-600); }
- .sendbird-channel-header.sendbird-channel-header--allow-edit .sendbird-channel-header__title {
- cursor: pointer; }
- .sendbird-channel-header .sendbird-channel-header__title {
- display: flex;
- flex-direction: row;
- width: 260px;
- height: 48px;
- border-radius: 4px; }
- .sendbird-theme--light .sendbird-channel-header .sendbird-channel-header__title:hover {
- background: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-channel-header .sendbird-channel-header__title:hover {
- background: var(--sendbird-dark-background-500); }
- .sendbird-channel-header .sendbird-channel-header__title:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-channel-header .sendbird-channel-header__title:focus {
- background: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-channel-header .sendbird-channel-header__title:focus {
- background: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-channel-header .sendbird-channel-header__title:active {
- border: solid 2px var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-channel-header .sendbird-channel-header__title:active {
- border: solid 2px var(--sendbird-dark-primary-200); }
- .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--left {
- width: 48px;
- padding: 8px;
- box-sizing: border-box; }
- .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--right {
- margin-left: 4px;
- padding-top: 8px; }
- .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--name,
- .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--user-id {
+ .sendbird-openchannel-profile .sendbird-openchannel-profile--inner {
+ height: 116px; }
+ .sendbird-openchannel-profile .sendbird-openchannel-profile__avatar {
+ margin-bottom: 16px;
+ text-align: center; }
+ .sendbird-openchannel-profile .sendbird-openchannel-profile__title {
+ max-width: 240px;
+ white-space: nowrap;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ height: 18px; }
+ .sendbird-openchannel-profile .sendbird-openchannel-profile__edit {
+ position: absolute;
+ top: 10px;
+ right: 16px; }
+
+.sendbird-openchannel-admin-message {
+ position: relative;
+ margin: 16px 24px;
+ padding: 12px 16px;
+ border-radius: 4px; }
+ .sendbird-theme--light .sendbird-openchannel-admin-message {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-openchannel-admin-message {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-openchannel-admin-message .sendbird-openchannel-admin-message__text {
+ word-wrap: break-word; }
+
+.sendbird-openchannel-file-message {
+ position: relative;
+ display: flex;
+ flex-direction: row; }
+ .sendbird-theme--light .sendbird-openchannel-file-message:hover {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-openchannel-file-message:hover {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-openchannel-file-message:hover .sendbird-openchannel-file-message__context-menu {
+ display: block; }
+ .sendbird-openchannel-file-message .sendbird-openchannel-file-message__left {
+ position: relative;
+ display: flex;
+ width: 52px;
+ min-width: 52px; }
+ .sendbird-openchannel-file-message .sendbird-openchannel-file-message__left .sendbird-openchannel-file-message__left__avatar {
+ position: absolute;
display: block;
- max-width: 200px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-channel-header .sendbird-channel-header__right-icon {
+ margin-top: 8px;
+ margin-left: 24px; }
+ .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ margin-left: 12px;
+ margin-bottom: 4px; }
+ .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right .sendbird-openchannel-file-message__right__title {
+ position: relative;
+ display: flex;
+ margin-top: 8px; }
+ .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right .sendbird-openchannel-file-message__right__title .sendbird-openchannel-file-message__right__title__sender-name {
+ position: relative;
+ display: flex; }
+ .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right .sendbird-openchannel-file-message__right__title .sendbird-openchannel-file-message__right__title__sent-at {
+ position: relative;
+ display: flex;
+ margin-left: 4px; }
+ .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right .sendbird-openchannel-file-message__right__body {
+ position: relative;
+ display: flex;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ border-radius: 8px; }
+ .sendbird-theme--light .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right .sendbird-openchannel-file-message__right__body {
+ background-color: var(--sendbird-light-background-100);
+ border: solid 1px var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right .sendbird-openchannel-file-message__right__body {
+ background-color: var(--sendbird-dark-background-500);
+ border: solid 1px var(--sendbird-dark-ondark-04); }
+ .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right .sendbird-openchannel-file-message__right__body .sendbird-openchannel-file-message__right__body__icon {
+ position: relative;
+ display: inline-block;
+ margin: 8px;
+ border-radius: 8.6px; }
+ .sendbird-theme--light .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right .sendbird-openchannel-file-message__right__body .sendbird-openchannel-file-message__right__body__icon {
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right .sendbird-openchannel-file-message__right__body .sendbird-openchannel-file-message__right__body__icon {
+ background-color: var(--sendbird-dark-background-600); }
+ .sendbird-openchannel-file-message .sendbird-openchannel-file-message__right .sendbird-openchannel-file-message__right__body .sendbird-openchannel-file-message__right__body__file-name {
+ position: relative;
+ display: flex;
+ margin-top: 22px;
+ margin-right: 16px;
+ margin-left: 4px;
+ overflow: hidden;
+ height: 20px;
+ max-height: 20px;
+ text-overflow: ellipsis; }
+ .sendbird-openchannel-file-message .sendbird-openchannel-file-message__context-menu {
position: absolute;
- right: 16px;
- top: 16px; }
+ display: none;
+ top: 8px;
+ right: 16px; }
+ .sendbird-theme--light .sendbird-openchannel-file-message .sendbird-openchannel-file-message__context-menu .sendbird-openchannel-file-message__context-menu__icon {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-openchannel-file-message .sendbird-openchannel-file-message__context-menu .sendbird-openchannel-file-message__context-menu__icon {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-openchannel-file-message .sendbird-openchannel-file-message__context-menu .sendbird-openchannel-file-message__context-menu__icon:hover {
+ background-color: var(--sendbird-light-background-300); }
+ .sendbird-theme--dark .sendbird-openchannel-file-message .sendbird-openchannel-file-message__context-menu .sendbird-openchannel-file-message__context-menu__icon:hover {
+ background-color: var(--sendbird-dark-background-400); }
+
+.sendbird-channel-settings {
+ height: 100%;
+ width: 320px;
+ display: inline-block; }
+ .sendbird-theme--light .sendbird-channel-settings {
+ background-color: var(--sendbird-light-background-50);
+ border: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-channel-settings {
+ background-color: var(--sendbird-dark-background-600);
+ border: 1px solid var(--sendbird-dark-ondark-04); }
+ .sendbird-channel-settings .sendbird-channel-settings__header-icon {
+ cursor: pointer;
+ position: absolute;
+ top: 18px;
+ right: 21px; }
+ .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__header-icon .sendbird-channel-settings__close-icon path {
+ fill: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__header-icon .sendbird-channel-settings__close-icon path {
+ fill: var(--sendbird-dark-ondark-01); }
+ .sendbird-channel-settings .sendbird-channel-settings__members .sendbird-badge__text {
+ margin-top: -2px; }
+ .sendbird-channel-settings .sendbird-channel-settings__header {
+ height: 64px;
+ min-height: 64px;
+ position: relative;
+ padding: 20px 24px;
+ box-sizing: border-box; }
+ .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__header {
+ border-bottom: solid 1px var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__header {
+ border-bottom: solid 1px var(--sendbird-dark-ondark-04); }
+ .sendbird-channel-settings .sendbird-channel-settings__scroll-area {
+ display: flex;
+ flex-grow: 1;
+ flex-direction: column;
+ height: calc(100% - 64px);
+ overflow-y: auto; }
+ .sendbird-channel-settings .sendbird-channel-settings__panel-item {
+ cursor: pointer;
+ position: relative;
+ padding: 12px 22px 10px 56px; }
+ .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__panel-item {
+ background-color: var(--sendbird-light-background-50);
+ border-bottom: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__panel-item {
+ background-color: var(--sendbird-dark-background-600);
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
+ .sendbird-channel-settings .sendbird-channel-settings__panel-item:focus {
+ outline: none; }
+ .sendbird-channel-settings .sendbird-channel-settings__panel-item.sendbird-channel-settings__panel-item__disabled {
+ cursor: not-allowed; }
+ .sendbird-channel-settings .sendbird-channel-settings__panel-icon-left,
+ .sendbird-channel-settings .sendbird-channel-settings__panel-icon-right {
+ position: absolute;
+ top: 10px; }
+ .sendbird-channel-settings .sendbird-channel-settings__panel-icon-left {
+ left: 16px; }
+ .sendbird-channel-settings .sendbird-channel-settings__panel-icon-right {
+ right: 16px; }
+ .sendbird-channel-settings .sendbird-channel-settings__panel-icon--open {
+ transform: rotate(90deg); }
+ .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__panel-icon--chevron path {
+ fill: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__panel-icon--chevron path {
+ fill: var(--sendbird-dark-ondark-01); }
+ .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__panel-icon__leave path {
+ fill: var(--sendbird-light-error-300); }
+ .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__panel-icon__leave path {
+ fill: var(--sendbird-dark-error-300); }
+
+.sendbird-muted-avatar {
+ border-radius: 50%;
+ display: inline-block; }
+ .sendbird-muted-avatar .sendbird-muted-avatar__icon {
+ position: relative; }
+ .sendbird-muted-avatar .sendbird-muted-avatar__icon .sendbird-icon {
+ position: absolute;
+ top: 4px;
+ left: 4px; }
+ .sendbird-muted-avatar .sendbird-muted-avatar__bg {
+ opacity: .5;
+ position: absolute;
+ border-radius: 50%;
+ top: 0;
+ left: 0; }
+ .sendbird-theme--light .sendbird-muted-avatar .sendbird-muted-avatar__bg {
+ background-color: var(--sendbird-light-primary-400); }
+ .sendbird-theme--dark .sendbird-muted-avatar .sendbird-muted-avatar__bg {
+ background-color: var(--sendbird-dark-primary-300); }
.sendbird__edit-user-profile section {
margin-top: 16px; }
@@ -545,598 +907,690 @@
.sendbird__edit-user__theme-icon .sendbird-icon {
cursor: pointer; }
-.sendbird-modal {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
+.sendbird-channel-list {
+ width: 320px;
height: 100%;
display: flex;
- align-items: center;
- justify-content: center; }
-
-.sendbird-modal-content {
- width: 480px;
- border-radius: 4px;
- z-index: 10001;
- padding: 18px 24px 24px 24px;
- position: relative;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-modal-content {
+ flex-direction: column; }
+ .sendbird-theme--light .sendbird-channel-list {
background-color: var(--sendbird-light-background-50);
- box-shadow: var(--sendbird-light-shadow-04); }
- .sendbird-theme--dark .sendbird-modal-content {
- background-color: var(--sendbird-dark-background-500);
- box-shadow: var(--sendbird-dark-shadow-04); }
- .sendbird-modal-content .sendbird-modal-close {
- position: absolute;
- top: 16px;
- right: 16px;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-modal-content .sendbird-modal-close path {
- fill: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-modal-content .sendbird-modal-close path {
- fill: var(--sendbird-dark-ondark-01); }
- .sendbird-modal-content .sendbird-modal-header {
- margin-bottom: 16px; }
- .sendbird-modal-content .sendbird-modal-footer {
- margin-top: 32px;
- text-align: right; }
- .sendbird-modal-content .sendbird-modal-footer .sendbird-button:last-child {
- margin-left: 8px;
- width: 80px;
- height: 40px; }
+ border: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-channel-list {
+ background-color: var(--sendbird-dark-background-600);
+ border: 1px solid var(--sendbird-dark-ondark-04); }
-.sendbird-modal-backdrop {
- position: fixed;
- z-index: 10000;
- height: 100%;
- width: 100%;
- top: 0;
- left: 0; }
- .sendbird-theme--light .sendbird-modal-backdrop {
- background-color: var(--sendbird-light-overlay); }
- .sendbird-theme--dark .sendbird-modal-backdrop {
- background-color: var(--sendbird-dark-overlay); }
+.sendbird-channel-list__header {
+ height: 64px;
+ min-height: 64px; }
-.sendbird-button {
- display: inline-block;
- box-shadow: none;
- border-radius: 4px;
- padding: 0px;
- font-family: var(--sendbird-font-family-default);
- cursor: pointer; }
- .sendbird-button:hover {
- box-shadow: none; }
- .sendbird-button:focus {
- outline: none; }
- .sendbird-button:active {
- box-shadow: none; }
- .sendbird-button.sendbird-button__disabled {
- cursor: not-allowed; }
- .sendbird-theme--light .sendbird-button.sendbird-button__disabled {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-button.sendbird-button__disabled {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-button.sendbird-button__disabled:hover {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-button.sendbird-button__disabled:hover {
- background-color: var(--sendbird-dark-background-400); }
+.sendbird-channel-list__body {
+ flex: 1 1 0;
+ -ms-flex: 1;
+ overflow-y: auto;
+ overflow-x: hidden; }
-.sendbird-button--big {
+.sendbird-user-list-item--small {
+ display: block;
+ position: relative;
+ box-sizing: border-box;
height: 40px; }
- .sendbird-button--big .sendbird-button__text {
- margin: 10px 16px; }
-
-.sendbird-button--small {
- height: 32px; }
- .sendbird-button--small .sendbird-button__text {
- margin: 6px 16px; }
-
-.sendbird-theme--light .sendbird-button--primary {
- border: 1px solid var(--sendbird-light-primary-300);
- background-color: var(--sendbird-light-primary-300); }
+ .sendbird-user-list-item--small__avatar {
+ cursor: pointer;
+ position: absolute;
+ top: 10px;
+ left: 12px; }
+ .sendbird-user-list-item--small .sendbird-muted-avatar {
+ position: absolute;
+ top: 10px;
+ left: 12px;
+ z-index: 2;
+ pointer-events: none; }
+ .sendbird-user-list-item--small__title {
+ position: absolute;
+ top: 10px;
+ left: 54px;
+ width: 160px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-user-list-item--small__subtitle {
+ position: absolute;
+ top: 23px;
+ left: 140px;
+ max-width: 237px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-user-list-item--small__checkbox {
+ position: absolute;
+ top: 16px;
+ right: 16px; }
+ .sendbird-user-list-item--small__action {
+ display: none;
+ position: absolute;
+ right: 10px;
+ top: 4px; }
+ .sendbird-user-list-item--small__operator {
+ position: absolute;
+ right: 24px;
+ top: 10px; }
+ .sendbird-theme--light .sendbird-user-list-item--small:hover, .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-user-list-item--small:hover, .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__action, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__action {
+ display: block; }
+ .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__operator, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__operator {
+ display: none; }
+ .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {
+ background-color: var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {
+ background-color: var(--sendbird-dark-background-700); }
-.sendbird-theme--dark .sendbird-button--primary {
- border: 1px solid var(--sendbird-dark-primary-200);
- background-color: var(--sendbird-dark-primary-200); }
+.sendbird-app__wrap {
+ width: 100%;
+ height: 100%;
+ display: flex; }
+ .sendbird-app__wrap .sendbird-app__conversation-wrap {
+ flex: 1;
+ position: relative; }
+ .sendbird-app__wrap .sendbird-app__channellist-wrap {
+ max-width: 320px; }
+ .sendbird-theme--light .sendbird-app__wrap .sendbird-app__conversation--settings-open .sendbird-chat-header__info {
+ background-color: var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-app__wrap .sendbird-app__conversation--settings-open .sendbird-chat-header__info {
+ background-color: var(--sendbird-dark-background-700); }
+ .sendbird-app__wrap .sendbird-channel-settings {
+ border-left: none; }
+ .sendbird-app__wrap .sendbird-channel-settings .sendbird-channel-settings__header {
+ height: 65px; }
-.sendbird-theme--light .sendbird-button--primary .sendbird-button__text {
- color: var(--sendbird-light-ondark-01); }
+.sendbird-icon {
+ display: inline-block; }
+ .sendbird-icon:focus {
+ outline: none; }
-.sendbird-theme--dark .sendbird-button--primary .sendbird-button__text {
- color: var(--sendbird-dark-onlight-01); }
+.sendbird-theme--light .sendbird-color--primary [class*='fill'] {
+ fill: var(--sendbird-light-primary-300); }
-.sendbird-theme--light .sendbird-button--primary:hover {
- background-color: var(--sendbird-light-primary-400);
- border-color: var(--sendbird-light-primary-400); }
+.sendbird-theme--dark .sendbird-color--primary [class*='fill'] {
+ fill: var(--sendbird-dark-primary-200); }
-.sendbird-theme--dark .sendbird-button--primary:hover {
- background-color: var(--sendbird-dark-primary-300);
- border-color: var(--sendbird-dark-primary-300); }
+.sendbird-theme--light .sendbird-color--primary [class*='stroke'] {
+ stroke: var(--sendbird-light-primary-300);
+ stroke-width: 2px;
+ stroke-linejoin: round; }
-.sendbird-theme--light .sendbird-button--primary:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-300);
- border: 1px solid var(--sendbird-button-border-focus); }
+.sendbird-theme--dark .sendbird-color--primary [class*='stroke'] {
+ stroke: var(--sendbird-dark-primary-200);
+ stroke-width: 2px;
+ stroke-linejoin: round; }
-.sendbird-theme--dark .sendbird-button--primary:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-200);
- border: 1px solid var(--sendbird-button-border-focus); }
+.sendbird-theme--light .sendbird-color--secondary [class*='fill'] {
+ fill: var(--sendbird-light-onlight-01); }
-.sendbird-theme--light .sendbird-button--primary:active {
- background-color: var(--sendbird-light-primary-500); }
+.sendbird-theme--dark .sendbird-color--secondary [class*='fill'] {
+ fill: var(--sendbird-dark-ondark-01); }
-.sendbird-theme--dark .sendbird-button--primary:active {
- background-color: var(--sendbird-dark-primary-400); }
+.sendbird-theme--light .sendbird-color--content [class*='fill'] {
+ fill: var(--sendbird-light-ondark-01); }
-.sendbird-theme--light .sendbird-button--primary:focus .sendbird-button--primary:hover {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-400); }
+.sendbird-theme--dark .sendbird-color--content [class*='fill'] {
+ fill: var(--sendbird-dark-onlight-01); }
-.sendbird-theme--dark .sendbird-button--primary:focus .sendbird-button--primary:hover {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-300); }
+.sendbird-theme--light .sendbird-color--content-inverse [class*='fill'] {
+ fill: var(--sendbird-light-onlight-01); }
-.sendbird-theme--light .sendbird-button--primary:focus .sendbird-button--primary:active {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-500); }
+.sendbird-theme--dark .sendbird-color--content-inverse [class*='fill'] {
+ fill: var(--sendbird-dark-ondark-01); }
-.sendbird-theme--dark .sendbird-button--primary:focus .sendbird-button--primary:active {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-400); }
+.sendbird-color--white [class*='fill'] {
+ fill: #ffffff; }
-.sendbird-button--secondary {
- background-color: transparent; }
- .sendbird-theme--light .sendbird-button--secondary {
- border: 1px solid var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-button--secondary {
- border: 1px solid var(--sendbird-dark-ondark-03); }
- .sendbird-theme--light .sendbird-button--secondary .sendbird-button__text {
- color: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-button--secondary .sendbird-button__text {
- color: var(--sendbird-dark-ondark-01); }
- .sendbird-button--secondary:hover {
- background-color: transparent; }
- .sendbird-theme--light .sendbird-button--secondary:hover {
- border: 1px solid var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-button--secondary:hover {
- border: 1px solid var(--sendbird-dark-primary-200); }
- .sendbird-theme--light .sendbird-button--secondary:hover .sendbird-button__text {
- color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-button--secondary:hover .sendbird-button__text {
- color: var(--sendbird-dark-primary-200); }
- .sendbird-button--secondary.sendbird-button__disabled {
- cursor: not-allowed;
- border: none; }
- .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled .sendbird-button__text {
- color: var(--sendbird-light-onlight-02); }
- .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled .sendbird-button__text {
- color: var(--sendbird-dark-ondark-02); }
- .sendbird-button--secondary.sendbird-button__disabled:hover {
- border: none; }
- .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled:hover {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled:hover {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled:hover .sendbird-button__text {
- color: var(--sendbird-light-onlight-02); }
- .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled:hover .sendbird-button__text {
- color: var(--sendbird-dark-ondark-02); }
- .sendbird-theme--light .sendbird-button--secondary:hover .sendbird-button--secondary:focus .sendbird-button__text {
- color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-button--secondary:hover .sendbird-button--secondary:focus .sendbird-button__text {
- color: var(--sendbird-dark-primary-200); }
- .sendbird-button--secondary:focus {
- border: 1px solid transparent;
- background-color: transparent; }
- .sendbird-theme--light .sendbird-button--secondary:focus {
- box-shadow: var(--sendbird-light-primary-300) 0px 0px 0px 2px; }
- .sendbird-theme--dark .sendbird-button--secondary:focus {
- box-shadow: var(--sendbird-dark-primary-200) 0px 0px 0px 2px; }
- .sendbird-theme--light .sendbird-button--secondary:focus .sendbird-button__text {
- color: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-button--secondary:focus .sendbird-button__text {
- color: var(--sendbird-dark-ondark-01); }
- .sendbird-button--secondary:active {
- box-shadow: none; }
- .sendbird-theme--light .sendbird-button--secondary:active {
- border: 1px solid var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-button--secondary:active {
- border: 1px solid var(--sendbird-dark-primary-200); }
- .sendbird-theme--light .sendbird-button--secondary:active .sendbird-button__text {
- color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-button--secondary:active .sendbird-button__text {
- color: var(--sendbird-dark-primary-200); }
+.sendbird-theme--light .sendbird-color--sent [class*='fill'] {
+ fill: var(--sendbird-light-onlight-03); }
-.sendbird-theme--light .sendbird-button--danger {
- border: 1px solid var(--sendbird-light-error-300);
- background-color: var(--sendbird-light-error-300); }
+.sendbird-theme--dark .sendbird-color--sent [class*='fill'] {
+ fill: var(--sendbird-dark-ondark-03); }
-.sendbird-theme--dark .sendbird-button--danger {
- border: 1px solid var(--sendbird-dark-error-300);
- background-color: var(--sendbird-dark-error-300); }
+.sendbird-theme--light .sendbird-color--read [class*='fill'] {
+ fill: var(--sendbird-light-secondary-300); }
-.sendbird-theme--light .sendbird-button--danger .sendbird-button__text {
- color: var(--sendbird-light-ondark-01); }
+.sendbird-theme--dark .sendbird-color--read [class*='fill'] {
+ fill: var(--sendbird-dark-secondary-200); }
-.sendbird-theme--dark .sendbird-button--danger .sendbird-button__text {
- color: var(--sendbird-dark-onlight-01); }
+.sendbird-theme--light .sendbird-color--on-background-2 [class*='fill'] {
+ fill: var(--sendbird-light-onlight-02); }
-.sendbird-theme--light .sendbird-button--danger:hover {
- background-color: var(--sendbird-light-error-400);
- border-color: var(--sendbird-light-error-400); }
+.sendbird-theme--dark .sendbird-color--on-background-2 [class*='fill'] {
+ fill: var(--sendbird-dark-ondark-02); }
-.sendbird-theme--dark .sendbird-button--danger:hover {
- background-color: var(--sendbird-dark-error-400);
- border-color: var(--sendbird-dark-error-400); }
+.sendbird-theme--light .sendbird-color--on-background-3 [class*='fill'] {
+ fill: var(--sendbird-light-onlight-03); }
-.sendbird-theme--light .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-error-300);
- border-color: var(--sendbird-button-border-focus); }
+.sendbird-theme--dark .sendbird-color--on-background-3 [class*='fill'] {
+ fill: var(--sendbird-dark-ondark-03); }
-.sendbird-theme--dark .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-error-300);
- border-color: var(--sendbird-button-border-focus); }
+.sendbird-theme--light .sendbird-color--background-3 [class*='fill'] {
+ fill: var(--sendbird-light-background-300); }
-.sendbird-button--danger:active {
- box-shadow: none; }
- .sendbird-theme--light .sendbird-button--danger:active {
- background-color: var(--sendbird-light-error-500); }
- .sendbird-theme--dark .sendbird-button--danger:active {
- background-color: var(--sendbird-dark-error-500); }
+.sendbird-theme--dark .sendbird-color--background-3 [class*='fill'] {
+ fill: var(--sendbird-dark-background-400); }
-.sendbird-theme--light .sendbird-button--danger:hover .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-error-400); }
+.sendbird-channel-settings__operator .sendbird-channel-settings__accordion-icon {
+ position: absolute;
+ left: 14px; }
-.sendbird-theme--dark .sendbird-button--danger:hover .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-error-400); }
+.sendbird-channel-settings__operator .sendbird-accordion__panel-heder {
+ position: relative; }
-.sendbird-theme--light .sendbird-button--danger:active .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-error-500); }
+.sendbird-channel-settings__empty-list {
+ text-align: center;
+ margin-top: 12px;
+ margin-bottom: 4px;
+ display: block; }
-.sendbird-theme--dark .sendbird-button--danger:active .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-error-500); }
+.sendbird-channel-settings-accordion__footer {
+ padding-top: 16px;
+ display: flex;
+ justify-content: left;
+ padding-left: 12px; }
+ .sendbird-channel-settings-accordion__footer .sendbird-button:nth-child(2) {
+ margin-left: 8px; }
-.sendbird-button--disabled {
- border: 1px solid transparent;
- cursor: not-allowed; }
- .sendbird-theme--light .sendbird-button--disabled {
- background-color: var(--sendbird-light-background-200);
- color: var(--sendbird-light-ondark-01); }
- .sendbird-theme--dark .sendbird-button--disabled {
- background-color: var(--sendbird-dark-background-400);
+.sendbird-channel-settings__freeze {
+ max-width: 320px;
+ position: relative;
+ padding: 12px 22px 10px 56px; }
+ .sendbird-theme--light .sendbird-channel-settings__freeze {
+ background-color: var(--sendbird-light-background-50);
+ border-bottom: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-channel-settings__freeze {
+ background-color: var(--sendbird-dark-background-600);
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
+
+.sendbird-channel-settings__frozen-icon {
+ position: absolute;
+ right: 20px;
+ top: 12px; }
+ .sendbird-channel-settings__frozen-icon .sendbird-icon {
+ cursor: pointer; }
+
+.sendbird-channel-settings__members-list .sendbird-badge,
+.sendbird-channel-settings__members .sendbird-badge {
+ position: absolute;
+ right: 44px;
+ top: 12px; }
+ .sendbird-theme--light .sendbird-channel-settings__members-list .sendbird-badge, .sendbird-theme--light
+ .sendbird-channel-settings__members .sendbird-badge {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-channel-settings__members-list .sendbird-badge, .sendbird-theme--dark
+ .sendbird-channel-settings__members .sendbird-badge {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-channel-settings__members-list .sendbird-badge .sendbird-label, .sendbird-theme--light
+ .sendbird-channel-settings__members .sendbird-badge .sendbird-label {
+ color: var(--sendbird-light-onlight-02); }
+ .sendbird-theme--dark .sendbird-channel-settings__members-list .sendbird-badge .sendbird-label, .sendbird-theme--dark
+ .sendbird-channel-settings__members .sendbird-badge .sendbird-label {
+ color: var(--sendbird-dark-ondark-02); }
+
+.sendbird-place-holder {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100%; }
+ .sendbird-place-holder .sendbird-place-holder__body {
+ display: flex;
+ flex-direction: column;
+ height: 104px;
+ align-items: center; }
+ .sendbird-place-holder .sendbird-place-holder__body .sendbird-place-holder__body__icon {
+ margin-bottom: 10px; }
+ .sendbird-place-holder .sendbird-place-holder__body .sendbird-place-holder__body__text {
+ margin-top: 10px; }
+ .sendbird-place-holder .sendbird-place-holder__body__reconnect {
+ margin-top: 18px;
+ display: flex;
+ flex-direction: row;
+ cursor: pointer; }
+ .sendbird-place-holder .sendbird-place-holder__body__reconnect .sendbird-place-holder__body__reconnect__icon {
+ margin-right: 4px; }
+
+.sendbird-conversation {
+ display: flex;
+ flex-direction: column;
+ height: 100%; }
+ .sendbird-theme--light .sendbird-conversation {
+ background-color: var(--sendbird-light-background-50);
+ border: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-conversation {
+ background-color: var(--sendbird-dark-background-600);
+ border: 1px solid var(--sendbird-dark-ondark-04); }
+
+.sendbird-conversation__messages {
+ overflow-y: auto;
+ flex: 1 1 0;
+ order: 2; }
+
+.sendbird-conversation__messages-list {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ justify-content: flex-end; }
+
+.sendbird-conversation__footer {
+ order: 3;
+ padding: 0px 24px 24px 24px; }
+
+.sendbird-conversation__scroll-container {
+ display: flex;
+ height: 100%;
+ overflow-y: auto;
+ overflow-x: hidden;
+ flex-direction: column; }
+ .sendbird-conversation__scroll-container .sendbird-conversation__padding {
+ flex: 1 1 0; }
+
+.sendbird-conversation__footer {
+ position: relative; }
+ .sendbird-conversation__footer .sendbird-conversation__typing-indicator {
+ position: absolute;
+ bottom: 8px; }
+
+.sendbird-notification {
+ margin-top: 8px;
+ margin-left: 24px;
+ margin-right: 24px;
+ border-radius: 4px;
+ padding: 0px 2px;
+ height: 32px;
+ display: flex;
+ align-items: center;
+ justify-content: center; }
+ .sendbird-theme--light .sendbird-notification {
+ background-color: var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-notification {
+ background-color: var(--sendbird-dark-primary-200); }
+ .sendbird-notification:hover {
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-notification:hover {
+ background-color: var(--sendbird-light-primary-400); }
+ .sendbird-theme--dark .sendbird-notification:hover {
+ background-color: var(--sendbird-dark-primary-300); }
+ .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen {
+ background-color: var(--sendbird-light-information-100); }
+ .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen {
+ background-color: var(--sendbird-dark-information-100); }
+ .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {
+ color: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {
color: var(--sendbird-dark-onlight-01); }
+ .sendbird-notification .sendbird-notification__text {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-right: 8px; }
-.sendbird-input {
+.sendbird-iconbutton {
+ color: var(--sendbird-iconbutton-color);
+ display: inline-block;
+ padding: 3px;
+ background-color: transparent;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ outline: 0px; }
+ .sendbird-theme--light .sendbird-iconbutton .sendbird-iconbutton__inner svg {
+ fill: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-iconbutton .sendbird-iconbutton__inner svg {
+ fill: var(--sendbird-dark-ondark-01); }
+ .sendbird-theme--light .sendbird-iconbutton:hover {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-iconbutton:hover {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-theme--light .sendbird-iconbutton:focus {
+ box-shadow: var(--sendbird-light-primary-300) 0px 0px 0px 2px; }
+ .sendbird-theme--dark .sendbird-iconbutton:focus {
+ box-shadow: var(--sendbird-dark-primary-200) 0px 0px 0px 2px; }
+ .sendbird-theme--light .sendbird-iconbutton:active {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-iconbutton:active {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-iconbutton:disabled {
+ cursor: not-allowed !important; }
+ .sendbird-theme--light .sendbird-iconbutton:disabled .sendbird-iconbutton__inner svg, .sendbird-theme--light .sendbird-iconbutton:disabled .sendbird-iconbutton__inner path {
+ fill: var(--sendbird-light-onlight-02); }
+ .sendbird-theme--dark .sendbird-iconbutton:disabled .sendbird-iconbutton__inner svg, .sendbird-theme--dark .sendbird-iconbutton:disabled .sendbird-iconbutton__inner path {
+ fill: var(--sendbird-dark-ondark-02); }
+
+.sendbird-theme--light .sendbird-iconbutton--pressed {
+ background-color: var(--sendbird-light-primary-100); }
+
+.sendbird-theme--dark .sendbird-iconbutton--pressed {
+ background-color: var(--sendbird-dark-background-700); }
+
+.sendbird-message-input {
display: inline-block;
width: 100%;
- height: 40px;
position: relative; }
- .sendbird-input .sendbird-input--input {
+ .sendbird-message-input .sendbird-message-input--textarea {
width: 100%;
- height: 100%;
border-radius: 4px;
- font-family: var(--sendbird-font-family-default);
font-size: 14px;
font-weight: normal;
font-stretch: normal;
font-style: normal;
line-height: 1.43;
+ height: 56px;
+ overflow-y: hidden;
letter-spacing: normal;
- padding: 10px 16px;
+ padding: 18px 64px 18px 16px;
box-sizing: border-box;
+ resize: none;
+ font-family: var(--sendbird-font-family-default);
background-color: inherit; }
- .sendbird-theme--light .sendbird-input .sendbird-input--input {
+ .sendbird-theme--light .sendbird-message-input .sendbird-message-input--textarea {
color: var(--sendbird-light-onlight-01);
caret-color: var(--sendbird-light-primary-300);
- border: solid 1px var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-input .sendbird-input--input {
+ border: solid 1px var(--sendbird-light-onlight-03);
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--textarea {
color: var(--sendbird-dark-ondark-01);
caret-color: var(--sendbird-dark-primary-200);
- border: solid 1px var(--sendbird-dark-ondark-03); }
- .sendbird-input .sendbird-input--input:focus {
+ border: solid 1px var(--sendbird-dark-ondark-03);
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-message-input .sendbird-message-input--textarea:focus {
outline: none; }
- .sendbird-theme--light .sendbird-input .sendbird-input--input:focus {
- box-shadow: 0 1px 5px 0 var(--sendbird-light-onlight-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
+ .sendbird-theme--light .sendbird-message-input .sendbird-message-input--textarea:focus {
color: var(--sendbird-light-onlight-01);
- border: solid 2px var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-input .sendbird-input--input:focus {
- box-shadow: 0 1px 5px 0 var(--sendbird-dark-ondark-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
+ border: solid 1px var(--sendbird-light-primary-300);
+ box-shadow: var(--sendbird-light-shadow-message-input); }
+ .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--textarea:focus {
color: var(--sendbird-dark-ondark-01);
- border: solid 2px var(--sendbird-dark-primary-200); }
- .sendbird-theme--light .sendbird-input .sendbird-input--input:active {
- box-shadow: 0 1px 5px 0 var(--sendbird-light-onlight-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
- color: var(--sendbird-light-onlight-01);
- border: solid 1px var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-input .sendbird-input--input:active {
- box-shadow: 0 1px 5px 0 var(--sendbird-dark-ondark-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
- color: var(--sendbird-dark-ondark-01);
- border: solid 1px var(--sendbird-dark-primary-200); }
- .sendbird-input .sendbird-input--input:disabled {
- cursor: not-allowed; }
- .sendbird-theme--light .sendbird-input .sendbird-input--input:disabled {
- background-color: var(--sendbird-light-background-100);
- color: var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-input .sendbird-input--input:disabled {
- background-color: var(--sendbird-dark-background-500);
- color: var(--sendbird-dark-ondark-03); }
- .sendbird-input .sendbird-input--placeholder {
+ border: solid 1px var(--sendbird-dark-primary-200);
+ box-shadow: var(--sendbird-dark-shadow-message-input); }
+ .sendbird-theme--light .sendbird-message-input .sendbird-message-input--textarea:active {
+ border: solid 1px var(--sendbird-message-input-border-active);
+ color: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--textarea:active {
+ border: solid 1px var(--sendbird-message-input-border-active);
+ color: var(--sendbird-dark-ondark-01); }
+ .sendbird-message-input .sendbird-message-input--placeholder {
position: absolute;
pointer-events: none;
- top: 10px;
+ top: 18px;
left: 16px;
font-family: var(--sendbird-font-family-default);
font-size: 14px;
line-height: 1.43; }
- .sendbird-theme--light .sendbird-input .sendbird-input--placeholder {
+ .sendbird-theme--light .sendbird-message-input .sendbird-message-input--placeholder {
color: var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-input .sendbird-input--placeholder {
+ .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--placeholder {
color: var(--sendbird-dark-ondark-03); }
+ .sendbird-message-input .sendbird-message-input--attach {
+ position: absolute;
+ right: 12px;
+ bottom: 18px;
+ padding: 6px; }
+ .sendbird-message-input .sendbird-message-input--send {
+ position: absolute;
+ padding: 6px;
+ right: 16px;
+ bottom: 16px; }
+ .sendbird-message-input .sendbird-message-input--attach-input {
+ display: none; }
-.sendbird-input-label {
- margin: 4px 0; }
-
-.sendbird-textbutton {
- text-decoration: underline;
- cursor: pointer; }
+.sendbird-message-input__edit {
+ padding: 16px;
+ box-sizing: border-box; }
+ .sendbird-theme--light .sendbird-message-input__edit {
+ background-color: var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-message-input__edit {
+ background-color: var(--sendbird-dark-background-700); }
-.sendbird-textbutton--not-underline {
- text-decoration: none;
- cursor: pointer; }
+.sendbird-message-input--edit-action {
+ text-align: right;
+ margin-top: 4px; }
+ .sendbird-message-input--edit-action button:last-child {
+ margin-left: 8px; }
+ .sendbird-message-input--edit-action .sendbird-message-input--edit-action__cancel {
+ width: 80px; }
+ .sendbird-theme--light .sendbird-message-input--edit-action .sendbird-message-input--edit-action__cancel {
+ border: solid 1px var(--sendbird-light-onlight-03); }
+ .sendbird-theme--dark .sendbird-message-input--edit-action .sendbird-message-input--edit-action__cancel {
+ border: solid 1px var(--sendbird-dark-ondark-03); }
+ .sendbird-message-input--edit-action .sendbird-message-input--edit-action__save {
+ width: 80px; }
-.sendbird-textbutton--disabled {
+.sendbird-message-input-form__disabled {
cursor: not-allowed; }
- .sendbird-theme--light .sendbird-textbutton--disabled {
- color: var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-textbutton--disabled {
- color: var(--sendbird-dark-ondark-03); }
-.sendbird-theme--light .sendbird-color--onbackground-1 {
- color: var(--sendbird-light-onlight-01); }
+.sendbird-message-input__disabled {
+ pointer-events: none;
+ cursor: disabled; }
+ .sendbird-theme--light .sendbird-message-input__disabled .sendbird-message-input--textarea {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-message-input__disabled .sendbird-message-input--textarea {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-theme--light .sendbird-message-input__disabled svg {
+ fill: var(--sendbird-light-onlight-03); }
+ .sendbird-theme--dark .sendbird-message-input__disabled svg {
+ fill: var(--sendbird-dark-ondark-03); }
-.sendbird-theme--dark .sendbird-color--onbackground-1 {
- color: var(--sendbird-dark-ondark-01); }
+[class*=sendbird-label] {
+ font-family: var(--sendbird-font-family-default); }
-.sendbird-theme--light .sendbird-color--onbackground-1--background-color {
- background-color: var(--sendbird-light-onlight-01); }
+.sendbird-label--h-1 {
+ font-size: 20px;
+ font-weight: 600;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1.4;
+ letter-spacing: -0.2px; }
-.sendbird-theme--dark .sendbird-color--onbackground-1--background-color {
- background-color: var(--sendbird-dark-ondark-01); }
+.sendbird-label--h-2 {
+ font-size: 18px;
+ font-weight: 600;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: normal;
+ letter-spacing: -0.2px; }
-.sendbird-theme--light .sendbird-color--onbackground-2 {
- color: var(--sendbird-light-onlight-02); }
+.sendbird-label--subtitle-1 {
+ font-size: 16px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1.38;
+ letter-spacing: -0.2px; }
-.sendbird-theme--dark .sendbird-color--onbackground-2 {
- color: var(--sendbird-dark-ondark-02); }
+.sendbird-label--subtitle-2 {
+ font-size: 14px;
+ font-weight: 600;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1.14;
+ letter-spacing: -0.2px; }
-.sendbird-theme--light .sendbird-color--onbackground-2--background-color {
- background-color: var(--sendbird-light-onlight-02); }
+.sendbird-label--body-1 {
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1.43;
+ letter-spacing: normal; }
-.sendbird-theme--dark .sendbird-color--onbackground-2--background-color {
- background-color: var(--sendbird-dark-ondark-02); }
+.sendbird-label--body-2 {
+ font-size: 12px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1.33;
+ letter-spacing: normal; }
-.sendbird-theme--light .sendbird-color--onbackground-3 {
- color: var(--sendbird-light-onlight-03); }
+.sendbird-label--button-1 {
+ font-size: 14px;
+ font-weight: 600;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1.43;
+ letter-spacing: normal; }
-.sendbird-theme--dark .sendbird-color--onbackground-3 {
- color: var(--sendbird-dark-ondark-03); }
+.sendbird-label--button-2 {
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1.43;
+ letter-spacing: normal; }
-.sendbird-theme--light .sendbird-color--onbackground-3--background-color {
- background-color: var(--sendbird-light-onlight-03); }
+.sendbird-label--caption-1 {
+ font-size: 14px;
+ font-weight: 600;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1.43;
+ letter-spacing: normal; }
-.sendbird-theme--dark .sendbird-color--onbackground-3--background-color {
- background-color: var(--sendbird-dark-ondark-03); }
+.sendbird-label--caption-2 {
+ font-size: 12px;
+ font-weight: bold;
+ font-style: normal;
+ line-height: 1;
+ letter-spacing: normal; }
-.sendbird-theme--light .sendbird-color--onbackground-4 {
- color: var(--sendbird-light-onlight-04); }
+.sendbird-label--caption-3 {
+ font-size: 12px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1;
+ letter-spacing: normal; }
-.sendbird-theme--dark .sendbird-color--onbackground-4 {
- color: var(--sendbird-dark-ondark-04); }
+.sendbird-theme--light .sendbird-label--color-onbackground-1 {
+ color: var(--sendbird-light-onlight-01); }
-.sendbird-theme--light .sendbird-color--onbackground-4--background-color {
- background-color: var(--sendbird-light-onlight-04); }
+.sendbird-theme--dark .sendbird-label--color-onbackground-1 {
+ color: var(--sendbird-dark-ondark-01); }
-.sendbird-theme--dark .sendbird-color--onbackground-4--background-color {
- background-color: var(--sendbird-dark-ondark-04); }
+.sendbird-theme--light .sendbird-label--color-onbackground-2 {
+ color: var(--sendbird-light-onlight-02); }
-.sendbird-theme--light .sendbird-color--oncontent-1 {
+.sendbird-theme--dark .sendbird-label--color-onbackground-2 {
+ color: var(--sendbird-dark-ondark-02); }
+
+.sendbird-theme--light .sendbird-label--color-onbackground-3 {
+ color: var(--sendbird-light-onlight-03); }
+
+.sendbird-theme--dark .sendbird-label--color-onbackground-3 {
+ color: var(--sendbird-dark-ondark-03); }
+
+.sendbird-theme--light .sendbird-label--color-oncontent-1 {
color: var(--sendbird-light-ondark-01); }
-.sendbird-theme--dark .sendbird-color--oncontent-1 {
+.sendbird-theme--dark .sendbird-label--color-oncontent-1 {
color: var(--sendbird-dark-onlight-01); }
-.sendbird-theme--light .sendbird-color--oncontent-1--background-color {
- background-color: var(--sendbird-light-ondark-01); }
+.sendbird-theme--light .sendbird-label--color-oncontent-2 {
+ color: var(--sendbird-light-ondark-02); }
-.sendbird-theme--dark .sendbird-color--oncontent-1--background-color {
- background-color: var(--sendbird-dark-onlight-01); }
+.sendbird-theme--dark .sendbird-label--color-oncontent-2 {
+ color: var(--sendbird-dark-onlight-02); }
-.sendbird-theme--light .sendbird-color--primary {
+.sendbird-theme--light .sendbird-label--color-primary {
color: var(--sendbird-light-primary-300); }
-.sendbird-theme--dark .sendbird-color--primary {
+.sendbird-theme--dark .sendbird-label--color-primary {
color: var(--sendbird-dark-primary-200); }
-.sendbird-theme--light .sendbird-color--primary--background-color {
- background-color: var(--sendbird-light-primary-300); }
-
-.sendbird-theme--dark .sendbird-color--primary--background-color {
- background-color: var(--sendbird-dark-primary-200); }
-
-.sendbird-theme--light .sendbird-color--error {
+.sendbird-theme--light .sendbird-label--color-error {
color: var(--sendbird-light-error-300); }
-.sendbird-theme--dark .sendbird-color--error {
+.sendbird-theme--dark .sendbird-label--color-error {
color: var(--sendbird-dark-error-300); }
-.sendbird-theme--light .sendbird-color--error--background-color {
- background-color: var(--sendbird-light-error-300); }
-
-.sendbird-theme--dark .sendbird-color--error--background-color {
- background-color: var(--sendbird-dark-error-300); }
-
-.sendbird-add-channel__rectangle-wrap {
- margin-top: 26px; }
+.sendbird-theme--light .sendbird-label--color-secondary-3 {
+ color: var(--sendbird-light-secondary-300); }
-.sendbird-add-channel__rectangle-footer {
- text-align: right;
- margin-top: 32px; }
+.sendbird-theme--dark .sendbird-label--color-secondary-3 {
+ color: var(--sendbird-dark-secondary-200); }
-.sendbird-add-channel__rectangle {
- width: 432px;
- height: 72px;
- border-radius: 4px;
- margin-bottom: 8px;
- padding: 25px 72px;
- position: relative;
- box-sizing: border-box;
+.sendbird-textbutton {
+ text-decoration: underline;
cursor: pointer; }
- .sendbird-theme--light .sendbird-add-channel__rectangle {
- border: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-add-channel__rectangle {
- border: 1px solid var(--sendbird-dark-ondark-04); }
- .sendbird-add-channel__rectangle .sendbird-icon {
- position: absolute;
- left: 22px;
- top: 24px; }
-.sendbird-create-channel--content {
- width: 480px;
- max-height: 552px; }
+.sendbird-textbutton--not-underline {
+ text-decoration: none;
+ cursor: pointer; }
-.sendbird-create-channel--scroll {
- height: 360px;
- overflow-y: auto; }
+.sendbird-textbutton--disabled {
+ cursor: not-allowed; }
+ .sendbird-theme--light .sendbird-textbutton--disabled {
+ color: var(--sendbird-light-onlight-03); }
+ .sendbird-theme--dark .sendbird-textbutton--disabled {
+ color: var(--sendbird-dark-ondark-03); }
-.sendbird-muted-avatar {
- border-radius: 50%;
- display: inline-block; }
- .sendbird-muted-avatar .sendbird-muted-avatar__icon {
- position: relative; }
- .sendbird-muted-avatar .sendbird-muted-avatar__icon .sendbird-icon {
- position: absolute;
- top: 4px;
- left: 4px; }
- .sendbird-muted-avatar .sendbird-muted-avatar__bg {
- opacity: .5;
- position: absolute;
- border-radius: 50%;
- top: 0;
- left: 0; }
- .sendbird-theme--light .sendbird-muted-avatar .sendbird-muted-avatar__bg {
- background-color: var(--sendbird-light-primary-400); }
- .sendbird-theme--dark .sendbird-muted-avatar .sendbird-muted-avatar__bg {
- background-color: var(--sendbird-dark-primary-300); }
-
-.sendbird-checkbox {
- display: block;
- position: relative;
- padding-left: 35px;
- margin-bottom: 12px;
- cursor: pointer;
- font-size: 22px;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none; }
-
-.sendbird-checkbox input {
- position: absolute;
- opacity: 0;
- cursor: pointer;
- height: 0;
- width: 0; }
-
-.sendbird-checkbox--checkmark {
- position: absolute;
+.sendbird-modal {
+ position: fixed;
top: 0;
left: 0;
- height: 18px;
- width: 18px;
- border-radius: 2px;
- background-color: inherit; }
- .sendbird-theme--light .sendbird-checkbox--checkmark {
- border: 2px solid var(--sendbird-light-background-400); }
- .sendbird-theme--dark .sendbird-checkbox--checkmark {
- border: 2px solid var(--sendbird-dark-background-300); }
-
-.sendbird-theme--light .sendbird-checkbox input:focus ~ .sendbird-checkbox--checkmark {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-300); }
-
-.sendbird-theme--dark .sendbird-checkbox input:focus ~ .sendbird-checkbox--checkmark {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-200); }
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center; }
-.sendbird-theme--light .sendbird-checkbox input:checked ~ .sendbird-checkbox--checkmark {
- background-color: var(--sendbird-light-primary-300);
- border: 2px solid var(--sendbird-light-primary-300); }
+.sendbird-modal-content {
+ width: 480px;
+ border-radius: 4px;
+ z-index: 10001;
+ padding: 18px 24px 24px 24px;
+ position: relative;
+ box-sizing: border-box; }
+ .sendbird-theme--light .sendbird-modal-content {
+ background-color: var(--sendbird-light-background-50);
+ box-shadow: var(--sendbird-light-shadow-04); }
+ .sendbird-theme--dark .sendbird-modal-content {
+ background-color: var(--sendbird-dark-background-500);
+ box-shadow: var(--sendbird-dark-shadow-04); }
+ .sendbird-modal-content .sendbird-modal-close {
+ position: absolute;
+ top: 16px;
+ right: 16px;
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-modal-content .sendbird-modal-close path {
+ fill: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-modal-content .sendbird-modal-close path {
+ fill: var(--sendbird-dark-ondark-01); }
+ .sendbird-modal-content .sendbird-modal-header {
+ margin-bottom: 16px; }
+ .sendbird-modal-content .sendbird-modal-footer {
+ margin-top: 32px;
+ text-align: right; }
+ .sendbird-modal-content .sendbird-modal-footer .sendbird-button:last-child {
+ margin-left: 8px;
+ width: 80px;
+ height: 40px; }
-.sendbird-theme--dark .sendbird-checkbox input:checked ~ .sendbird-checkbox--checkmark {
- background-color: var(--sendbird-dark-primary-200);
- border: 2px solid var(--sendbird-dark-primary-200); }
+.sendbird-modal-backdrop {
+ position: fixed;
+ z-index: 10000;
+ height: 100%;
+ width: 100%;
+ top: 0;
+ left: 0; }
+ .sendbird-theme--light .sendbird-modal-backdrop {
+ background-color: var(--sendbird-light-overlay); }
+ .sendbird-theme--dark .sendbird-modal-backdrop {
+ background-color: var(--sendbird-dark-overlay); }
-.sendbird-checkbox--checkmark:after {
- content: "";
- position: absolute;
+.sendbird-image-renderer--hidden-placeholder {
display: none; }
-.sendbird-checkbox input:checked ~ .sendbird-checkbox--checkmark:after {
- display: block; }
-
-.sendbird-theme--light .sendbird-checkbox .sendbird-checkbox--checkmark:after {
- left: 5px;
- top: -0.5px;
- width: 7px;
- height: 12px;
- border: solid var(--sendbird-light-background-50);
- border-width: 0 2px 2px 0;
- transform: rotate(45deg); }
-
-.sendbird-theme--dark .sendbird-checkbox .sendbird-checkbox--checkmark:after {
- left: 5px;
- top: -0.5px;
- width: 7px;
- height: 12px;
- border: solid var(--sendbird-dark-background-600);
- border-width: 0 2px 2px 0;
- transform: rotate(45deg); }
-
-.sendbird__user-profile {
- width: 320px;
- border-radius: 4px;
- padding: 24px;
- box-sizing: border-box;
- text-align: center; }
- .sendbird-theme--light .sendbird__user-profile {
- box-shadow: var(--sendbird-light-shadow-02);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird__user-profile {
- box-shadow: var(--sendbird-dark-shadow-02);
- background-color: var(--sendbird-dark-background-500); }
- .sendbird__user-profile .sendbird__user-profile-avatar {
- margin: 8px 0px; }
- .sendbird__user-profile .sendbird__user-profile-name {
- max-width: 270px;
- white-space: nowrap;
- overflow-x: hidden;
- text-overflow: ellipsis; }
- .sendbird__user-profile .sendbird__user-profile-message {
- margin-top: 20px; }
- .sendbird__user-profile .sendbird__user-profile-message button {
- width: 272px; }
- .sendbird__user-profile .sendbird__user-profile-seperator {
- margin: 24px 0px;
- height: 1px; }
- .sendbird-theme--light .sendbird__user-profile .sendbird__user-profile-seperator {
- background-color: var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird__user-profile .sendbird__user-profile-seperator {
- background-color: var(--sendbird-dark-ondark-04); }
- .sendbird__user-profile .sendbird__user-profile-userId--label,
- .sendbird__user-profile .sendbird__user-profile-userId--value {
- display: block;
- text-align: left; }
- .sendbird__user-profile .sendbird__user-profile-userId--label {
- margin-bottom: 8px; }
-
.sendbird__offline .sendbird-dropdown__menu .sendbird-dropdown__menu-item {
cursor: not-allowed; }
@@ -1200,1916 +1654,2190 @@
.sendbird-icon--pressed {
display: block !important; }
-.sendbird-sort-by-row {
+.sendbird-separator {
+ width: 100%;
display: flex;
- justify-content: flex-start;
align-items: center; }
+ .sendbird-separator .sendbird-separator__left {
+ border: none;
+ height: 1px;
+ display: inline-block;
+ width: 100%; }
+ .sendbird-separator .sendbird-separator__right {
+ border: none;
+ height: 1px;
+ display: inline-block;
+ width: 100%; }
+ .sendbird-separator .sendbird-separator__text {
+ margin: 0px 16px;
+ display: flex;
+ white-space: nowrap; }
-.sendbird-user-list-item {
- display: block;
- position: relative;
- box-sizing: border-box;
- width: 432px;
- height: 56px; }
- .sendbird-theme--light .sendbird-user-list-item {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
+.sendbird-fileviewer {
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 100000; }
+ .sendbird-theme--light .sendbird-fileviewer {
background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-user-list-item {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-user-list-item__avatar {
- position: absolute;
- top: 8px;
- left: 0px;
- z-index: 1;
- cursor: pointer; }
- .sendbird-user-list-item .sendbird-muted-avatar {
- position: absolute;
- top: 8px;
- left: 0px;
- z-index: 2;
- pointer-events: none; }
- .sendbird-user-list-item__title {
- position: absolute;
- top: 17px;
- left: 56px;
- max-width: 280px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-user-list-item__subtitle {
- position: absolute;
- top: 23px;
- left: 140px;
- max-width: 237px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-user-list-item__checkbox {
- position: absolute;
- top: 16px;
- right: 16px; }
- .sendbird-user-list-item__action {
- position: absolute;
- right: 0;
- top: 10px; }
- .sendbird-user-list-item__operator {
- position: absolute;
- right: 40px;
- top: 22px; }
+ .sendbird-theme--dark .sendbird-fileviewer {
+ background-color: var(--sendbird-dark-background-600); }
-.sendbird-place-holder {
+.sendbird-fileviewer__header {
+ height: 64px;
+ min-height: 64px;
+ box-sizing: border-box;
display: flex;
- justify-content: center;
- align-items: center;
- height: 100%; }
- .sendbird-place-holder .sendbird-place-holder__body {
+ justify-content: space-between; }
+ .sendbird-theme--light .sendbird-fileviewer__header {
+ border-bottom: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-fileviewer__header {
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
+ .sendbird-fileviewer__header .sendbird-fileviewer__header-left {
+ padding: 16px 0px 16px 20px;
display: flex;
- flex-direction: column;
- height: 104px;
- align-items: center; }
- .sendbird-place-holder .sendbird-place-holder__body .sendbird-place-holder__body__icon {
- margin-bottom: 10px; }
- .sendbird-place-holder .sendbird-place-holder__body .sendbird-place-holder__body__text {
- margin-top: 10px; }
- .sendbird-place-holder .sendbird-place-holder__body__reconnect {
- margin-top: 18px;
+ flex: 1; }
+ .sendbird-fileviewer__header .sendbird-fileviewer__header-right {
display: flex;
- flex-direction: row;
+ width: 160px;
+ justify-content: flex-end; }
+ .sendbird-fileviewer__header .sendbird-fileviewer__header-download,
+ .sendbird-fileviewer__header .sendbird-fileviewer__header-delete,
+ .sendbird-fileviewer__header .sendbird-fileviewer__header-close {
+ width: 64px;
+ padding: 21px;
+ box-sizing: border-box;
cursor: pointer; }
- .sendbird-place-holder .sendbird-place-holder__body__reconnect .sendbird-place-holder__body__reconnect__icon {
- margin-right: 4px; }
-
-.sendbird-loader {
- display: inline-block;
- -webkit-animation: 1s infinite linear;
- animation: 1s infinite linear;
- -webkit-animation-name: rotate;
- animation-name: rotate; }
-
-@-webkit-keyframes rotate {
- from {
- transform: rotate(0); }
- to {
- transform: rotate(360deg); } }
+ .sendbird-theme--light .sendbird-fileviewer__header .sendbird-fileviewer__header-download path, .sendbird-theme--light
+ .sendbird-fileviewer__header .sendbird-fileviewer__header-delete path, .sendbird-theme--light
+ .sendbird-fileviewer__header .sendbird-fileviewer__header-close path {
+ fill: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-fileviewer__header .sendbird-fileviewer__header-download path, .sendbird-theme--dark
+ .sendbird-fileviewer__header .sendbird-fileviewer__header-delete path, .sendbird-theme--dark
+ .sendbird-fileviewer__header .sendbird-fileviewer__header-close path {
+ fill: var(--sendbird-dark-ondark-01); }
+ .sendbird-theme--light .sendbird-fileviewer__header .sendbird-fileviewer__header-close {
+ border-left: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-fileviewer__header .sendbird-fileviewer__header-close {
+ border-left: 1px solid var(--sendbird-dark-ondark-04); }
-@keyframes rotate {
- from {
- transform: rotate(0); }
- to {
- transform: rotate(360deg); } }
+.sendbird-fileviewer__header-avatar {
+ margin-right: 8px; }
-.sendbird-channel-list {
- width: 320px;
- height: 100%;
+.sendbird-fileviewer__header-actions {
+ right: 0;
display: flex;
- flex-direction: column; }
- .sendbird-theme--light .sendbird-channel-list {
- background-color: var(--sendbird-light-background-50);
- border: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-list {
- background-color: var(--sendbird-dark-background-600);
- border: 1px solid var(--sendbird-dark-ondark-04); }
-
-.sendbird-channel-list__header {
- height: 64px;
- min-height: 64px; }
+ flex-direction: row; }
-.sendbird-channel-list__body {
- flex: 1 1 0;
- -ms-flex: 1;
- overflow-y: auto;
- overflow-x: hidden; }
+.sendbird-fileviewer__header-filename {
+ max-width: 500px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: inline-block;
+ padding-top: 2px; }
-.sendbird-conversation {
- display: flex;
- flex-direction: column;
- height: 100%; }
- .sendbird-theme--light .sendbird-conversation {
- background-color: var(--sendbird-light-background-50);
- border: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-conversation {
- background-color: var(--sendbird-dark-background-600);
- border: 1px solid var(--sendbird-dark-ondark-04); }
+.sendbird-fileviewer__header-sendername {
+ max-width: 200px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: inline-block;
+ margin-left: 8px;
+ padding-top: 5px; }
-.sendbird-conversation__messages {
+.sendbird-fileviewer__content {
+ height: calc(100% - 72px);
+ margin-top: 8px;
overflow-y: auto;
- flex: 1 1 0;
- order: 2; }
-
-.sendbird-conversation__messages-list {
- display: flex;
- flex-direction: column;
- height: 100%;
- justify-content: flex-end; }
-
-.sendbird-conversation__footer {
- order: 3;
- padding: 0px 24px 24px 24px; }
-
-.sendbird-conversation__scroll-container {
display: flex;
- height: 100%;
- overflow-y: auto;
- overflow-x: hidden;
- flex-direction: column; }
- .sendbird-conversation__scroll-container .sendbird-conversation__padding {
- flex: 1 1 0; }
+ align-items: center;
+ justify-content: center; }
+ .sendbird-fileviewer__content .sendbird-fileviewer__video {
+ max-width: 100%;
+ max-height: 100%; }
+ .sendbird-fileviewer__content .sendbird-fileviewer__img {
+ max-width: 90%;
+ max-height: 90%; }
+ .sendbird-fileviewer__content .sendbird-fileviewer__unsupported {
+ max-width: 100%;
+ max-height: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center; }
-.sendbird-conversation__footer {
- position: relative; }
- .sendbird-conversation__footer .sendbird-conversation__typing-indicator {
+.sendbird-user-list-item {
+ display: block;
+ position: relative;
+ box-sizing: border-box;
+ width: 432px;
+ height: 56px; }
+ .sendbird-theme--light .sendbird-user-list-item {
+ border-bottom: 1px solid var(--sendbird-light-onlight-04);
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird-user-list-item {
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04);
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-user-list-item__avatar {
position: absolute;
- bottom: 8px; }
+ top: 8px;
+ left: 0px;
+ z-index: 1;
+ cursor: pointer; }
+ .sendbird-user-list-item .sendbird-muted-avatar {
+ position: absolute;
+ top: 8px;
+ left: 0px;
+ z-index: 2;
+ pointer-events: none; }
+ .sendbird-user-list-item__title {
+ position: absolute;
+ top: 17px;
+ left: 56px;
+ max-width: 280px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-user-list-item__subtitle {
+ position: absolute;
+ top: 23px;
+ left: 140px;
+ max-width: 237px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-user-list-item__checkbox {
+ position: absolute;
+ top: 16px;
+ right: 16px; }
+ .sendbird-user-list-item__action {
+ position: absolute;
+ right: 0;
+ top: 10px; }
+ .sendbird-user-list-item__operator {
+ position: absolute;
+ right: 40px;
+ top: 22px; }
-.sendbird-reaction-button {
- border-radius: 8px;
+.sendbird-input {
display: inline-block;
- border: solid 1px transparent;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-reaction-button:hover {
- border: solid 1px var(--sendbird-light-background-100);
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-reaction-button:hover {
- border: solid 1px var(--sendbird-dark-background-400);
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-reaction-button__inner {
- margin: 3px; }
-
-.sendbird-reaction-button--selected {
- cursor: pointer;
- border-radius: 8px;
- display: inline-block; }
- .sendbird-theme--light .sendbird-reaction-button--selected {
- border: solid 1px var(--sendbird-light-primary-100);
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-reaction-button--selected {
- border: solid 1px var(--sendbird-dark-primary-400);
- background-color: var(--sendbird-dark-primary-400); }
- .sendbird-reaction-button--selected:hover {
- border: solid 1px var(--sendbird-selected-reaction-button-border-hover); }
- .sendbird-reaction-button--selected__inner {
- margin: 3px; }
- .sendbird-reaction-button--selected.sendbird-reactions--pressed {
- display: block !important; }
-
-.sendbird-conversation__messages .sendbird-conversation__messages-padding {
- padding-left: 24px;
- padding-right: 24px; }
-
-.sendbird-conversation__messages .sendbird-separator,
-.sendbird-conversation__messages .sendbird-admin-message {
- padding-top: 8px;
- padding-bottom: 8px; }
-
-.sendbird-message {
- position: relative;
- line-height: 0; }
- .sendbird-message--outgoing {
- text-align: right; }
- .sendbird-message--incoming {
- text-align: left; }
-
-.sendbird-user-message--copy {
- cursor: pointer !important; }
-
-.sendbird-user-message--outgoing {
- position: relative;
- right: 0px;
- display: inline-block;
- max-width: 496px;
- text-align: right; }
- .sendbird-theme--light .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-dark-primary-400); }
- .sendbird-theme--light .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-dark-primary-400); }
- .sendbird-user-message--outgoing:hover .sendbird-user-message__left-padding .sendbird-user-message__more {
- display: block; }
- .sendbird-user-message--outgoing .sendbird-user-message--inner {
- display: flex;
- flex-direction: row; }
- .sendbird-user-message--outgoing .sendbird-user-message__left-padding {
- position: relative;
- width: 68px; }
- .sendbird-user-message--outgoing .sendbird-user-message__left-padding .sendbird-user-message__more {
- display: none;
- position: absolute;
- right: 4px;
- top: 2px; }
- .sendbird-user-message--outgoing .sendbird-user-message__left-padding .sendbird-user-message__more[class*='--pressed'] {
- display: block !important; }
- .sendbird-user-message--outgoing .sendbird-user-message__left-padding .sendbird-user-message__status {
- position: absolute;
- bottom: 2px;
- right: 4px; }
- .sendbird-user-message--outgoing .sendbird-user-message__text-balloon {
- max-width: var(--sendbird-message-balloon-width);
+ width: 100%;
+ height: 40px;
+ position: relative; }
+ .sendbird-input .sendbird-input--input {
+ width: 100%;
+ height: 100%;
+ border-radius: 4px;
+ font-family: var(--sendbird-font-family-default);
+ font-size: 14px;
+ font-weight: normal;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1.43;
+ letter-spacing: normal;
+ padding: 10px 16px;
box-sizing: border-box;
- border-radius: 16px;
- text-align: left; }
- .sendbird-theme--light .sendbird-user-message--outgoing .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-user-message--outgoing .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-dark-primary-300); }
- .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner {
- display: flex;
- flex-direction: column; }
- .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place {
- padding: 8px 12px; }
- .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
- display: inline;
- white-space: pre-wrap;
- overflow-wrap: normal; }
- .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- position: relative;
- bottom: 0px; }
- .sendbird-theme--light .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-dark-primary-300); }
+ background-color: inherit; }
+ .sendbird-theme--light .sendbird-input .sendbird-input--input {
+ color: var(--sendbird-light-onlight-01);
+ caret-color: var(--sendbird-light-primary-300);
+ border: solid 1px var(--sendbird-light-onlight-03); }
+ .sendbird-theme--dark .sendbird-input .sendbird-input--input {
+ color: var(--sendbird-dark-ondark-01);
+ caret-color: var(--sendbird-dark-primary-200);
+ border: solid 1px var(--sendbird-dark-ondark-03); }
+ .sendbird-input .sendbird-input--input:focus {
+ outline: none; }
+ .sendbird-theme--light .sendbird-input .sendbird-input--input:focus {
+ box-shadow: 0 1px 5px 0 var(--sendbird-light-onlight-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
+ color: var(--sendbird-light-onlight-01);
+ border: solid 2px var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-input .sendbird-input--input:focus {
+ box-shadow: 0 1px 5px 0 var(--sendbird-dark-ondark-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
+ color: var(--sendbird-dark-ondark-01);
+ border: solid 2px var(--sendbird-dark-primary-200); }
+ .sendbird-theme--light .sendbird-input .sendbird-input--input:active {
+ box-shadow: 0 1px 5px 0 var(--sendbird-light-onlight-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
+ color: var(--sendbird-light-onlight-01);
+ border: solid 1px var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-input .sendbird-input--input:active {
+ box-shadow: 0 1px 5px 0 var(--sendbird-dark-ondark-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
+ color: var(--sendbird-dark-ondark-01);
+ border: solid 1px var(--sendbird-dark-primary-200); }
+ .sendbird-input .sendbird-input--input:disabled {
+ cursor: not-allowed; }
+ .sendbird-theme--light .sendbird-input .sendbird-input--input:disabled {
+ background-color: var(--sendbird-light-background-100);
+ color: var(--sendbird-light-onlight-03); }
+ .sendbird-theme--dark .sendbird-input .sendbird-input--input:disabled {
+ background-color: var(--sendbird-dark-background-500);
+ color: var(--sendbird-dark-ondark-03); }
+ .sendbird-input .sendbird-input--placeholder {
+ position: absolute;
+ pointer-events: none;
+ top: 10px;
+ left: 16px;
+ font-family: var(--sendbird-font-family-default);
+ font-size: 14px;
+ line-height: 1.43; }
+ .sendbird-theme--light .sendbird-input .sendbird-input--placeholder {
+ color: var(--sendbird-light-onlight-03); }
+ .sendbird-theme--dark .sendbird-input .sendbird-input--placeholder {
+ color: var(--sendbird-dark-ondark-03); }
-.sendbird-user-message--incoming {
+.sendbird-input-label {
+ margin: 4px 0; }
+
+.sendbird-channel-profile {
position: relative;
- left: 0px;
- display: inline-block;
- padding-left: 40px;
- max-width: 536px;
- text-align: left; }
- .sendbird-theme--light .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-400); }
- .sendbird-user-message--incoming:hover .sendbird-user-message__right-padding .sendbird-user-message__more {
- display: block; }
- .sendbird-user-message--incoming:hover .sendbird-user-message__right-padding .sendbird-user-message__sent-at {
- display: none; }
- .sendbird-user-message--incoming .sendbird-user-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-user-message--incoming .sendbird-user-message--body {
- display: flex;
- flex-direction: column; }
- .sendbird-user-message--incoming .sendbird-user-message__right-padding {
- position: relative;
- width: 68px; }
- .sendbird-user-message--incoming .sendbird-user-message__right-padding .sendbird-user-message__sent-at {
- position: absolute;
- left: 4px;
- bottom: 2px; }
- .sendbird-user-message--incoming .sendbird-user-message__right-padding .sendbird-user-message__more {
- position: absolute;
- display: none;
- top: 18px;
- left: 4px; }
- .sendbird-user-message--incoming .sendbird-user-message__avatar {
+ text-align: center;
+ padding: 32px 40px 27px 40px; }
+ .sendbird-theme--light .sendbird-channel-profile {
+ border-bottom: 1px solid var(--sendbird-light-onlight-04);
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird-channel-profile {
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04);
+ background-color: var(--sendbird-dark-background-600); }
+ .sendbird-channel-profile .sendbird-channel-profile--inner {
+ height: 92px; }
+ .sendbird-channel-profile .sendbird-channel-profile__avatar {
+ margin-bottom: 16px;
+ text-align: center; }
+ .sendbird-channel-profile .sendbird-channel-profile__title {
+ max-width: 240px;
+ white-space: nowrap;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ height: 18px; }
+ .sendbird-channel-profile .sendbird-channel-profile__edit {
position: absolute;
- bottom: 4px;
- left: -40px;
- cursor: pointer; }
- .sendbird-user-message--incoming .sendbird-user-message__sender-name {
- margin-left: 12px;
- margin-bottom: 4px; }
- .sendbird-user-message--incoming .sendbird-user-message__text-balloon {
- margin-top: 4px;
- max-width: var(--sendbird-message-balloon-width);
- box-sizing: border-box;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-user-message--incoming .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-user-message--incoming .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner {
- display: flex;
- flex-direction: column; }
- .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place {
- padding: 8px 12px; }
- .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
- display: inline;
- white-space: pre-wrap;
- overflow-wrap: normal; }
- .sendbird-theme--light .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
- color: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
- color: var(--sendbird-dark-ondark-01); }
- .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- position: relative;
- bottom: 0px; }
- .sendbird-theme--light .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-500); }
+ top: 10px;
+ right: 16px; }
-.sendbird-user-message__text-balloon__inner__text-place__text {
- word-break: break-word;
- display: flex;
- flex-direction: row;
- flex-wrap: wrap; }
+.channel-profile-form .channel-profile-form__img-section {
+ position: relative; }
-.sendbird-user-message__text-balloon {
- display: inline-block; }
+.channel-profile-form .channel-profile-form__avatar-button {
+ position: absolute;
+ top: 54px;
+ left: 96px; }
-.sendbird-user-message-word {
- display: inline;
- margin: 0px 2px; }
+.channel-profile-form .channel-profile-form__avatar {
+ margin-top: 16px; }
-.sendbird-message-status {
- display: inline;
- text-align: right; }
- .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__try-again {
- text-decoration: underline; }
- .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__try-again:hover {
- cursor: pointer; }
- .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__delete {
- text-decoration: underline; }
- .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__delete:hover {
- cursor: pointer; }
+.channel-profile-form .channel-profile-form__name-section {
+ margin-top: 12px; }
+ .channel-profile-form .channel-profile-form__name-section .sendbird-input {
+ height: 40px; }
-.sendbird-emoji-reactions {
- display: inline-block;
- border-radius: 16px;
- max-width: var(--sendbird-message-balloon-width);
- box-sizing: border-box;
- min-height: 24px;
- padding: 7px 5px 3px 5px; }
- .sendbird-theme--light .sendbird-emoji-reactions {
+.sendbird-badge {
+ height: 20px;
+ min-width: 20px;
+ border-radius: 10px;
+ display: inline-block; }
+ .sendbird-theme--light .sendbird-badge {
+ background-color: var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-badge {
+ background-color: var(--sendbird-dark-primary-200); }
+ .sendbird-badge .sendbird-badge__text {
+ margin: 0px 6px; }
+
+.sendbird-members-accordion {
+ padding: 8px 16px 16px 16px;
+ position: relative;
+ box-sizing: border-box; }
+ .sendbird-theme--light .sendbird-members-accordion {
+ border-bottom: 1px solid var(--sendbird-light-onlight-04);
background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-emoji-reactions {
+ .sendbird-theme--dark .sendbird-members-accordion {
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04);
background-color: var(--sendbird-dark-background-600); }
- .sendbird-emoji-reactions .sendbird-emoji-reactions--inner {
+ .sendbird-members-accordion .sendbird-members-accordion__member {
+ position: relative;
+ padding: 12px 0px 12px 44px;
+ height: 40px;
+ box-sizing: border-box; }
+ .sendbird-members-accordion .sendbird-members-accordion__member .sendbird-label {
+ max-width: 240px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-members-accordion .sendbird-members-accordion__member-avatar {
+ position: absolute;
+ left: 0;
+ top: 10px;
+ cursor: pointer; }
+ .sendbird-members-accordion .sendbird-members-accordion__footer {
display: flex;
- flex-wrap: wrap; }
- .sendbird-emoji-reactions .sendbird-emoji-reactions__emoji-reaction {
- margin-left: 2px;
- margin-right: 2px;
- margin-bottom: 4px; }
- .sendbird-emoji-reactions .sendbird-emoji-reactions__emoji-reaction-add {
- width: 36px;
- height: 24px; }
- .sendbird-emoji-reactions:focus {
- outline: none; }
+ justify-content: flex-start;
+ margin-top: 8px; }
+ .sendbird-members-accordion .sendbird-members-accordion__footer .sendbird-members-accordion__footer__all-members {
+ margin-right: 16px; }
-.sendbird-reaction-badge {
- display: inline-block;
- border-radius: 15px;
- width: 50px;
- height: 24px; }
- .sendbird-theme--light .sendbird-reaction-badge {
- background-color: var(--sendbird-light-background-100);
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-reaction-badge {
- background-color: var(--sendbird-dark-background-500);
- border: solid 1px var(--sendbird-dark-background-500); }
- .sendbird-reaction-badge:hover {
- cursor: pointer; }
- .sendbird-theme--light .sendbird-reaction-badge:hover {
- border: solid 1px var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-reaction-badge:hover {
- border: solid 1px var(--sendbird-dark-primary-200); }
+.sendbird-more-members__popup-scroll {
+ max-height: 420px;
+ overflow-y: auto; }
-.sendbird-reaction-badge--is-add {
- display: inline-block;
- border-radius: 15px;
- width: 36px;
- height: 24px; }
- .sendbird-theme--light .sendbird-reaction-badge--is-add {
- background-color: var(--sendbird-light-background-100);
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-reaction-badge--is-add {
- background-color: var(--sendbird-dark-background-500);
- border: solid 1px var(--sendbird-dark-background-500); }
- .sendbird-reaction-badge--is-add:hover {
+.sendbird-link-label {
+ text-decoration: unset; }
+ .sendbird-link-label:hover {
cursor: pointer;
- border: solid 1px var(--sendbird-add-reaction-button-border-hover); }
- .sendbird-reaction-badge--is-add .sendbird-reaction-badge__inner .sendbird-reaction-badge__inner__icon {
- left: 8px; }
+ text-decoration: underline; }
+ .sendbird-link-label:focus {
+ outline: none; }
+ .sendbird-link-label__label {
+ display: inline; }
-.sendbird-reaction-badge--selected {
- display: inline-block;
- border-radius: 15px;
- width: 50px;
- height: 24px; }
- .sendbird-theme--light .sendbird-reaction-badge--selected {
- background-color: var(--sendbird-light-primary-100);
- border: solid 1px var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-reaction-badge--selected {
- background-color: var(--sendbird-dark-primary-400);
- border: solid 1px var(--sendbird-dark-primary-400); }
- .sendbird-reaction-badge--selected:hover {
- cursor: pointer; }
- .sendbird-theme--light .sendbird-reaction-badge--selected:hover {
- border: solid 1px var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-reaction-badge--selected:hover {
- border: solid 1px var(--sendbird-dark-primary-200); }
+.sendbird-theme--light .sendbird-label--color-onbackground-1 {
+ color: var(--sendbird-light-onlight-01); }
-.sendbird-reaction-badge__inner {
- position: relative;
- display: flex;
- height: 24px;
- flex-direction: row;
- align-items: center;
- justify-content: center;
- padding-left: 20px;
- padding-right: 4px; }
- .sendbird-reaction-badge__inner .sendbird-reaction-badge__inner__icon {
- position: absolute;
- top: 2px;
- left: 4px; }
- .sendbird-reaction-badge__inner .sendbird-reaction-badge__inner__count {
- margin-left: 4px; }
+.sendbird-theme--dark .sendbird-label--color-onbackground-1 {
+ color: var(--sendbird-dark-ondark-01); }
-.sendbird-tooltip {
- position: relative;
- display: inline-flex;
- justify-content: center;
- max-width: 200px;
- border-radius: 8px;
- padding: 8px 16px;
- background-color: var(--sendbird-tooltip-background); }
- .sendbird-tooltip::after {
- content: '';
- position: absolute;
- bottom: -4px;
- width: 8px;
- height: 8px;
- transform: rotate(45deg);
- background-color: var(--sendbird-tooltip-background); }
- .sendbird-tooltip__text {
- font-family: var(--sendbird-font-family-default);
- font-size: 12px;
- font-weight: bold;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.33;
- letter-spacing: normal;
- color: var(--sendbird-tooltip-text-color); }
+.sendbird-theme--light .sendbird-label--color-onbackground-2 {
+ color: var(--sendbird-light-onlight-02); }
-.sendbird-tooltip-wrapper {
+.sendbird-theme--dark .sendbird-label--color-onbackground-2 {
+ color: var(--sendbird-dark-ondark-02); }
+
+.sendbird-theme--light .sendbird-label--color-onbackground-3 {
+ color: var(--sendbird-light-onlight-03); }
+
+.sendbird-theme--dark .sendbird-label--color-onbackground-3 {
+ color: var(--sendbird-dark-ondark-03); }
+
+.sendbird-theme--light .sendbird-label--color-oncontent-1 {
+ color: var(--sendbird-light-ondark-01); }
+
+.sendbird-theme--dark .sendbird-label--color-oncontent-1 {
+ color: var(--sendbird-dark-onlight-01); }
+
+.sendbird-theme--light .sendbird-label--color-oncontent-2 {
+ color: var(--sendbird-light-ondark-02); }
+
+.sendbird-theme--dark .sendbird-label--color-oncontent-2 {
+ color: var(--sendbird-dark-onlight-02); }
+
+.sendbird-theme--light .sendbird-label--color-primary {
+ color: var(--sendbird-light-primary-300); }
+
+.sendbird-theme--dark .sendbird-label--color-primary {
+ color: var(--sendbird-dark-primary-200); }
+
+.sendbird-theme--light .sendbird-label--color-error {
+ color: var(--sendbird-light-error-300); }
+
+.sendbird-theme--dark .sendbird-label--color-error {
+ color: var(--sendbird-dark-error-300); }
+
+.sendbird-theme--light .sendbird-label--color-secondary-3 {
+ color: var(--sendbird-light-secondary-300); }
+
+.sendbird-theme--dark .sendbird-label--color-secondary-3 {
+ color: var(--sendbird-dark-secondary-200); }
+
+.sendbird-add-channel__rectangle-wrap {
+ margin-top: 26px; }
+
+.sendbird-add-channel__rectangle-footer {
+ text-align: right;
+ margin-top: 32px; }
+
+.sendbird-add-channel__rectangle {
+ width: 432px;
+ height: 72px;
+ border-radius: 4px;
+ margin-bottom: 8px;
+ padding: 25px 72px;
position: relative;
- display: inline-flex; }
- .sendbird-tooltip-wrapper__hover-tooltip {
+ box-sizing: border-box;
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-add-channel__rectangle {
+ border: 1px solid var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-add-channel__rectangle {
+ border: 1px solid var(--sendbird-dark-ondark-04); }
+ .sendbird-add-channel__rectangle .sendbird-icon {
position: absolute;
- display: inline-flex;
- width: 200px; }
- .sendbird-tooltip-wrapper__hover-tooltip__inner__tooltip-container {
- position: relative;
- display: inline-flex; }
+ left: 22px;
+ top: 24px; }
-.sendbird-admin-message {
+.sendbird__offline .sendbird-channel-preview {
+ cursor: not-allowed; }
+
+.sendbird-channel-preview {
+ position: relative;
+ cursor: pointer;
+ box-sizing: border-box;
+ width: 320px;
+ height: 80px;
display: flex;
+ flex-direction: row;
+ align-items: center;
justify-content: center;
- align-items: center; }
- .sendbird-admin-message .sendbird-admin-message__text {
- display: flex; }
-
-.sendbird-thumbnail {
- text-align: right;
- position: relative; }
- .sendbird-thumbnail .sendbird-thumbnail__body {
- position: relative;
- display: inline-block; }
- .sendbird-thumbnail .sendbird-thumbnail__more {
- display: none;
- position: absolute;
- top: 10px; }
- .sendbird-thumbnail:hover .sendbird-thumbnail__more {
- display: block; }
- .sendbird-thumbnail .sendbird-thumbnail__wrap {
- position: relative;
- display: flex;
- flex-direction: column;
- border-radius: 16px;
- margin: 8px 0px; }
- .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-thumbnail .sendbird-thumbnail__wrap:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap:hover {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap:hover {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__inner {
- cursor: pointer; }
- .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
- opacity: 1; }
- .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-400); }
- .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner {
- width: 100%;
- height: 100%;
- position: relative; }
- .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
- position: absolute;
- opacity: 0;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
- background-color: var(--sendbird-light-overlay); }
- .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
- background-color: var(--sendbird-dark-overlay); }
- .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-500); }
- .sendbird-thumbnail .sendbird-thumbnail__avatar {
- position: absolute;
- bottom: 30px;
- left: 0px; }
- .sendbird-thumbnail .sendbird-thumbnail__sender-name {
- margin-left: 12px; }
- .sendbird-thumbnail.sendbird-thumbnail--incoming {
- text-align: left;
- padding-left: 40px;
- box-sizing: border-box; }
- .sendbird-thumbnail .sendbird-thumbnail__video-icon {
- position: absolute;
- top: calc(50% - 28px);
- left: calc(50% - 28px); }
- .sendbird-thumbnail .sendbird-thumbnail__video,
- .sendbird-thumbnail .sendbird-thumbnail__img {
- display: block;
- max-width: var(--sendbird-message-balloon-width);
- max-height: 360px;
- border-radius: 16px; }
-
-.sendbird-outgoing-thumbnail-message {
- position: relative;
- text-align: right;
- line-height: 0px; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message--inner {
- display: inline-flex;
- flex-direction: row; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__left-padding {
- position: relative;
- width: 68px; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__left-padding .sendbird-outgoing-thumbnail-message-left-padding__more {
- display: none;
- position: absolute;
- top: 4px;
- right: 4px; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__left-padding .sendbird-outgoing-thumbnail-message-left-padding__status {
- position: absolute;
- right: 4px;
- bottom: 4px; }
- .sendbird-outgoing-thumbnail-message:hover .sendbird-outgoing-thumbnail-message__left-padding .sendbird-outgoing-thumbnail-message-left-padding__more {
- display: block; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body {
- position: relative; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap {
- position: relative;
+ padding: 12px 16px 12px 16px; }
+ .sendbird-theme--light .sendbird-channel-preview {
+ border-bottom: solid 1px var(--sendbird-light-onlight-04); }
+ .sendbird-theme--dark .sendbird-channel-preview {
+ border-bottom: solid 1px var(--sendbird-dark-ondark-04); }
+ .sendbird-channel-preview .sendbird-channel-preview__frozen-icon {
+ padding-left: 4px; }
+ .sendbird-channel-preview .sendbird-channel-preview__broadcast-icon {
+ padding-right: 4px; }
+ .sendbird-channel-preview:focus {
+ outline: none; }
+ .sendbird-channel-preview .sendbird-channel-preview__avatar {
+ width: 56px;
+ height: 56px; }
+ .sendbird-channel-preview .sendbird-channel-preview__content {
+ width: 100%;
+ height: 100%;
+ margin-left: 16px; }
+ .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper {
display: flex;
- flex-direction: column;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap--inner {
- cursor: pointer; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
- opacity: 1; }
- .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-400); }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner {
- width: 100%;
- height: 100%;
- position: relative; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
- position: absolute;
- opacity: 0;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
- background-color: var(--sendbird-light-overlay); }
- .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
- background-color: var(--sendbird-dark-overlay); }
- .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-500); }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message-body__video,
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message-body__img {
- display: block;
- max-width: var(--sendbird-message-balloon-width);
- max-height: 360px;
- border-radius: 16px; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message-body__video-icon {
+ justify-content: space-between;
+ width: 216px;
+ height: 16px; }
+ .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__header {
+ display: flex;
+ justify-content: flex-start;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__header__channel-name {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ max-width: 128px;
+ word-break: break-all;
+ white-space: nowrap; }
+ .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__header__total-members {
+ margin-top: 2px;
+ margin-left: 4px; }
+ .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__last-message-at {
+ margin-left: 4px;
+ margin-bottom: 4px;
+ white-space: nowrap; }
+ .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__lower {
+ margin-top: 8px;
+ width: 216px;
+ height: 32px;
+ display: flex;
+ justify-content: space-between; }
+ .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__lower__last-message {
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__lower__unread-message-count {
+ margin-left: 8px;
+ margin-bottom: 12px; }
+ .sendbird-channel-preview .sendbird-channel-preview__action {
position: absolute;
- top: calc(50% - 28px);
- left: calc(50% - 28px); }
+ top: 12px;
+ right: 12px;
+ display: inline-block; }
+ .sendbird-channel-preview .sendbird-channel-preview__action .sendbird-iconbutton {
+ display: none; }
+ .sendbird-theme--light .sendbird-channel-preview:hover {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-channel-preview:hover {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-channel-preview:hover .sendbird-channel-preview__action .sendbird-iconbutton {
+ display: inline-block; }
+ .sendbird-channel-preview:hover .sendbird-channel-preview__content__upper__last-message-at {
+ display: none; }
+ .sendbird-channel-preview:hover .sendbird-channel-preview__content__lower__unread-message-count {
+ display: none; }
-.sendbird-incoming-thumbnail-message {
+.sendbird-channel-preview--active {
+ padding: 12px 16px 12px 12px; }
+ .sendbird-theme--light .sendbird-channel-preview--active {
+ border-left: solid 4px var(--sendbird-light-primary-300);
+ border-bottom: solid 1px var(--sendbird-light-onlight-04);
+ background-color: var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-channel-preview--active {
+ border-left: solid 4px var(--sendbird-dark-primary-200);
+ border-bottom: solid 1px var(--sendbird-dark-ondark-04);
+ background-color: var(--sendbird-dark-background-700); }
+ .sendbird-theme--light .sendbird-channel-preview--active .sendbird-channel-preview__content__upper__header__channel-name {
+ color: var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-channel-preview--active .sendbird-channel-preview__content__upper__header__channel-name {
+ color: var(--sendbird-dark-primary-200); }
+
+.sendbird-conversation__messages .sendbird-conversation__messages-padding {
+ padding-left: 24px;
+ padding-right: 24px; }
+
+.sendbird-conversation__messages .sendbird-separator,
+.sendbird-conversation__messages .sendbird-admin-message {
+ padding-top: 8px;
+ padding-bottom: 8px; }
+
+.sendbird-conversation__connection-status {
+ display: flex;
+ align-items: center;
+ padding-top: 5px; }
+
+.sendbird-chat-header {
position: relative;
- text-align: left;
- padding-left: 40px; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__sender-name {
- position: relative;
- box-sizing: border-box;
- left: 12px;
- height: 12px;
- margin-bottom: 4px; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__avatar {
- position: absolute;
- left: -40px;
- bottom: 4px;
- cursor: pointer; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message--inner {
- display: flex;
- flex-direction: row; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body {
- position: relative; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap {
- position: relative;
- display: flex;
- flex-direction: column;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap--inner {
- cursor: pointer; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
- opacity: 1; }
- .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-400); }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner {
- width: 100%;
- height: 100%;
- position: relative; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
- position: absolute;
- opacity: 0;
- width: 100%;
- height: 100%;
- top: 0px;
- left: 0px;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
- background-color: var(--sendbird-light-overlay); }
- .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
- background-color: var(--sendbird-dark-overlay); }
- .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-500); }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__video,
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__img {
- display: block;
- max-width: var(--sendbird-message-balloon-width);
- max-height: 360px;
- border-radius: 16px; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__video-icon {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ height: 64px;
+ min-height: 64px;
+ padding-left: 20px;
+ padding-right: 16px;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-theme--light .sendbird-chat-header {
+ border-bottom: 1px solid var(--sendbird-light-onlight-04);
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird-chat-header {
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04);
+ background-color: var(--sendbird-dark-background-600); }
+ .sendbird-chat-header__left {
+ margin-right: 24px; }
+ .sendbird-chat-header__left, .sendbird-chat-header__right {
+ overflow: hidden;
+ display: flex;
+ flex-direction: row;
+ align-items: center; }
+ .sendbird-chat-header .sendbird-chat-header__title {
+ margin-left: 8px;
+ margin-right: 16px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ max-width: 780px; }
+ .sendbird-chat-header .sendbird-chat-header__subtitle {
+ max-width: 240px;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-chat-header .sendbird-chat-header__active {
+ margin-right: 4px;
+ width: 8px;
+ height: 8px;
+ border-radius: 4px; }
+ .sendbird-theme--light .sendbird-chat-header .sendbird-chat-header__active {
+ background-color: var(--sendbird-light-secondary-300); }
+ .sendbird-theme--dark .sendbird-chat-header .sendbird-chat-header__active {
+ background-color: var(--sendbird-dark-secondary-200); }
+ .sendbird-chat-header .sendbird-chat-header__mute {
+ margin-right: 26px; }
+ .sendbird-chat-header .sendbird-iconbutton--pressed {
+ background-color: inherit; }
+
+.sendbird-channel-header {
+ position: relative;
+ height: 64px;
+ min-height: 64px;
+ width: 320px;
+ padding: 8px 64px 8px 8px;
+ box-sizing: border-box; }
+ .sendbird-theme--light .sendbird-channel-header {
+ border-bottom: 1px solid var(--sendbird-light-onlight-04);
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird-channel-header {
+ border-bottom: 1px solid var(--sendbird-dark-ondark-04);
+ background-color: var(--sendbird-dark-background-600); }
+ .sendbird-channel-header.sendbird-channel-header--allow-edit .sendbird-channel-header__title {
+ cursor: pointer; }
+ .sendbird-channel-header .sendbird-channel-header__title {
+ display: flex;
+ flex-direction: row;
+ width: 260px;
+ height: 48px;
+ border-radius: 4px; }
+ .sendbird-theme--light .sendbird-channel-header .sendbird-channel-header__title:hover {
+ background: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-channel-header .sendbird-channel-header__title:hover {
+ background: var(--sendbird-dark-background-500); }
+ .sendbird-channel-header .sendbird-channel-header__title:focus {
+ outline: none; }
+ .sendbird-theme--light .sendbird-channel-header .sendbird-channel-header__title:focus {
+ background: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-channel-header .sendbird-channel-header__title:focus {
+ background: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-channel-header .sendbird-channel-header__title:active {
+ border: solid 2px var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-channel-header .sendbird-channel-header__title:active {
+ border: solid 2px var(--sendbird-dark-primary-200); }
+ .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--left {
+ width: 48px;
+ padding: 8px;
+ box-sizing: border-box; }
+ .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--right {
+ margin-left: 4px;
+ padding-top: 8px; }
+ .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--name,
+ .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--user-id {
+ display: block;
+ max-width: 200px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+ .sendbird-channel-header .sendbird-channel-header__right-icon {
position: absolute;
- top: calc(50% - 28px);
- left: calc(50% - 28px); }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__right-padding {
- position: relative;
- width: 68px; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__right-padding .sendbird-incoming-thumbnail-message__sent-at {
- position: absolute;
- left: 4px;
- bottom: 4px; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__right-padding .sendbird-incoming-thumbnail-message__more {
- position: absolute;
- left: 4px;
- top: 4px;
- display: none; }
- .sendbird-incoming-thumbnail-message:hover .sendbird-incoming-thumbnail-message__right-padding .sendbird-incoming-thumbnail-message__more {
- display: block; }
+ right: 16px;
+ top: 16px; }
-.sendbird-file-message--outgoing {
- text-align: right; }
+.sendbird-loader {
+ display: inline-block;
+ -webkit-animation: 1s infinite linear;
+ animation: 1s infinite linear;
+ -webkit-animation-name: rotate;
+ animation-name: rotate; }
-.sendbird-file-message--incoming {
- text-align: left; }
+@-webkit-keyframes rotate {
+ from {
+ transform: rotate(0); }
+ to {
+ transform: rotate(360deg); } }
-.sendbird-file-message__outgoing {
- position: relative;
- right: 0px;
- display: inline-block;
- max-width: 496px;
- text-align: right;
- line-height: 0px; }
- .sendbird-file-message__outgoing .sendbird-file-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-theme--light .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip {
- background-color: var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip {
- background-color: var(--sendbird-dark-primary-400); }
- .sendbird-theme--light .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-dark-primary-400); }
- .sendbird-file-message__outgoing:hover .sendbird-file-message__left-padding .sendbird-file-message__more {
- display: block; }
- .sendbird-file-message__outgoing:hover .sendbird-file-message__left-padding .sendbird-file-message__status {
- display: none; }
- .sendbird-file-message__outgoing .sendbird-file-message__left-padding {
- position: relative;
- width: 68px; }
- .sendbird-file-message__outgoing .sendbird-file-message__left-padding .sendbird-file-message__more {
- display: none;
- position: absolute;
- right: 4px;
- top: 2px; }
- .sendbird-file-message__outgoing .sendbird-file-message__left-padding .sendbird-file-message__status {
- position: absolute;
- text-align: right;
- right: 4px;
- bottom: 4px; }
- .sendbird-file-message__outgoing .sendbird-file-message__tooltip {
- display: flex;
- flex-direction: column;
- max-width: var(--sendbird-message-balloon-width);
- box-sizing: border-box;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-file-message__outgoing .sendbird-file-message__tooltip {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-file-message__outgoing .sendbird-file-message__tooltip {
- background-color: var(--sendbird-dark-primary-300); }
- .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner {
- display: flex;
- flex: row;
- padding: 8px 12px;
- text-align: left; }
- .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
- border-radius: 10px;
- margin-right: 8px;
- background-color: var(--sendbird-file-message-icon-background); }
- .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__text {
- white-space: nowrap;
- overflow-wrap: break-word;
- margin: 4px 0px;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-dark-primary-300); }
+@keyframes rotate {
+ from {
+ transform: rotate(0); }
+ to {
+ transform: rotate(360deg); } }
-.sendbird-file-message__incoming {
- position: relative;
- left: 0px;
+.sendbird-button {
display: inline-block;
- padding-left: 40px;
- max-width: 536px;
- text-align: left;
- line-height: 0px; }
- .sendbird-file-message__incoming .sendbird-file-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-file-message__incoming .sendbird-file-message__right-padding {
- position: relative;
- width: 68px; }
- .sendbird-file-message__incoming .sendbird-file-message__right-padding .sendbird-file-message__more {
- position: absolute;
- display: none;
- left: 4px;
- top: 18px; }
- .sendbird-file-message__incoming .sendbird-file-message__right-padding .sendbird-file-message__sent-at {
- position: absolute;
- left: 4px;
- bottom: 4px; }
- .sendbird-file-message__incoming:hover .sendbird-file-message__right-padding .sendbird-file-message__more {
- display: block; }
- .sendbird-theme--light .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-400); }
- .sendbird-file-message__incoming .sendbird-file-message__avatar {
- position: absolute;
- bottom: 2px;
- left: -40px;
- cursor: pointer; }
- .sendbird-file-message__incoming .sendbird-file-message__sender-name {
- margin-left: 12px;
- margin-bottom: 4px; }
- .sendbird-file-message__incoming .sendbird-file-message__tooltip {
- display: flex;
- flex-direction: column;
- margin-top: 4px;
- max-width: var(--sendbird-message-balloon-width);
- box-sizing: border-box;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-file-message__incoming .sendbird-file-message__tooltip {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-file-message__incoming .sendbird-file-message__tooltip {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner {
- display: flex;
- flex-direction: row;
- padding: 8px 12px; }
- .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
- border-radius: 10px;
- margin-right: 8px; }
- .sendbird-theme--light .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__text {
- white-space: nowrap;
- overflow-wrap: normal;
- margin: 4px 0px;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-500); }
+ box-shadow: none;
+ border-radius: 4px;
+ padding: 0px;
+ font-family: var(--sendbird-font-family-default);
+ cursor: pointer; }
+ .sendbird-button:hover {
+ box-shadow: none; }
+ .sendbird-button:focus {
+ outline: none; }
+ .sendbird-button:active {
+ box-shadow: none; }
+ .sendbird-button.sendbird-button__disabled {
+ cursor: not-allowed; }
+ .sendbird-theme--light .sendbird-button.sendbird-button__disabled {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-button.sendbird-button__disabled {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-button.sendbird-button__disabled:hover {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-button.sendbird-button__disabled:hover {
+ background-color: var(--sendbird-dark-background-400); }
-.sendbird-separator {
- width: 100%;
- display: flex;
- align-items: center; }
- .sendbird-separator .sendbird-separator__left {
- border: none;
- height: 1px;
- display: inline-block;
- width: 100%; }
- .sendbird-separator .sendbird-separator__right {
- border: none;
- height: 1px;
- display: inline-block;
- width: 100%; }
- .sendbird-separator .sendbird-separator__text {
- margin: 0px 16px;
- display: flex;
- white-space: nowrap; }
+.sendbird-button--big {
+ height: 40px; }
+ .sendbird-button--big .sendbird-button__text {
+ margin: 10px 16px; }
-.sendbird-message-input {
- display: inline-block;
- width: 100%;
- position: relative; }
- .sendbird-message-input .sendbird-message-input--textarea {
- width: 100%;
- border-radius: 4px;
- font-size: 14px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- height: 56px;
- overflow-y: hidden;
- letter-spacing: normal;
- padding: 18px 64px 18px 16px;
- box-sizing: border-box;
- resize: none;
- font-family: var(--sendbird-font-family-default);
- background-color: inherit; }
- .sendbird-theme--light .sendbird-message-input .sendbird-message-input--textarea {
- color: var(--sendbird-light-onlight-01);
- caret-color: var(--sendbird-light-primary-300);
- border: solid 1px var(--sendbird-light-onlight-03);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--textarea {
- color: var(--sendbird-dark-ondark-01);
- caret-color: var(--sendbird-dark-primary-200);
- border: solid 1px var(--sendbird-dark-ondark-03);
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-message-input .sendbird-message-input--textarea:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-message-input .sendbird-message-input--textarea:focus {
- color: var(--sendbird-light-onlight-01);
- border: solid 1px var(--sendbird-light-primary-300);
- box-shadow: var(--sendbird-light-shadow-message-input); }
- .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--textarea:focus {
- color: var(--sendbird-dark-ondark-01);
- border: solid 1px var(--sendbird-dark-primary-200);
- box-shadow: var(--sendbird-dark-shadow-message-input); }
- .sendbird-theme--light .sendbird-message-input .sendbird-message-input--textarea:active {
- border: solid 1px var(--sendbird-message-input-border-active);
- color: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--textarea:active {
- border: solid 1px var(--sendbird-message-input-border-active);
- color: var(--sendbird-dark-ondark-01); }
- .sendbird-message-input .sendbird-message-input--placeholder {
- position: absolute;
- pointer-events: none;
- top: 18px;
- left: 16px;
- font-family: var(--sendbird-font-family-default);
- font-size: 14px;
- line-height: 1.43; }
- .sendbird-theme--light .sendbird-message-input .sendbird-message-input--placeholder {
- color: var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--placeholder {
- color: var(--sendbird-dark-ondark-03); }
- .sendbird-message-input .sendbird-message-input--attach {
- position: absolute;
- right: 12px;
- bottom: 18px;
- padding: 6px; }
- .sendbird-message-input .sendbird-message-input--send {
- position: absolute;
- padding: 6px;
- right: 16px;
- bottom: 16px; }
- .sendbird-message-input .sendbird-message-input--attach-input {
- display: none; }
+.sendbird-button--small {
+ height: 32px; }
+ .sendbird-button--small .sendbird-button__text {
+ margin: 6px 16px; }
-.sendbird-message-input__edit {
- padding: 16px;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-message-input__edit {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-message-input__edit {
- background-color: var(--sendbird-dark-background-700); }
+.sendbird-theme--light .sendbird-button--primary {
+ border: 1px solid var(--sendbird-light-primary-300);
+ background-color: var(--sendbird-light-primary-300); }
-.sendbird-message-input--edit-action {
- text-align: right;
- margin-top: 4px; }
- .sendbird-message-input--edit-action button:last-child {
- margin-left: 8px; }
- .sendbird-message-input--edit-action .sendbird-message-input--edit-action__cancel {
- width: 80px; }
- .sendbird-theme--light .sendbird-message-input--edit-action .sendbird-message-input--edit-action__cancel {
- border: solid 1px var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-message-input--edit-action .sendbird-message-input--edit-action__cancel {
- border: solid 1px var(--sendbird-dark-ondark-03); }
- .sendbird-message-input--edit-action .sendbird-message-input--edit-action__save {
- width: 80px; }
+.sendbird-theme--dark .sendbird-button--primary {
+ border: 1px solid var(--sendbird-dark-primary-200);
+ background-color: var(--sendbird-dark-primary-200); }
-.sendbird-message-input-form__disabled {
- cursor: not-allowed; }
+.sendbird-theme--light .sendbird-button--primary .sendbird-button__text {
+ color: var(--sendbird-light-ondark-01); }
-.sendbird-message-input__disabled {
- pointer-events: none;
- cursor: disabled; }
- .sendbird-theme--light .sendbird-message-input__disabled .sendbird-message-input--textarea {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-message-input__disabled .sendbird-message-input--textarea {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-theme--light .sendbird-message-input__disabled svg {
- fill: var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-message-input__disabled svg {
- fill: var(--sendbird-dark-ondark-03); }
+.sendbird-theme--dark .sendbird-button--primary .sendbird-button__text {
+ color: var(--sendbird-dark-onlight-01); }
-.sendbird-fileviewer {
- width: 100%;
- height: 100%;
- position: fixed;
- top: 0;
- left: 0;
- z-index: 100000; }
- .sendbird-theme--light .sendbird-fileviewer {
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-fileviewer {
- background-color: var(--sendbird-dark-background-600); }
+.sendbird-theme--light .sendbird-button--primary:hover {
+ background-color: var(--sendbird-light-primary-400);
+ border-color: var(--sendbird-light-primary-400); }
-.sendbird-fileviewer__header {
- height: 64px;
- min-height: 64px;
- box-sizing: border-box;
- display: flex;
- justify-content: space-between; }
- .sendbird-theme--light .sendbird-fileviewer__header {
- border-bottom: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-fileviewer__header {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
- .sendbird-fileviewer__header .sendbird-fileviewer__header-left {
- padding: 16px 0px 16px 20px;
- display: flex;
- flex: 1; }
- .sendbird-fileviewer__header .sendbird-fileviewer__header-right {
- display: flex;
- width: 160px;
- justify-content: flex-end; }
- .sendbird-fileviewer__header .sendbird-fileviewer__header-download,
- .sendbird-fileviewer__header .sendbird-fileviewer__header-delete,
- .sendbird-fileviewer__header .sendbird-fileviewer__header-close {
- width: 64px;
- padding: 21px;
- box-sizing: border-box;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-fileviewer__header .sendbird-fileviewer__header-download path, .sendbird-theme--light
- .sendbird-fileviewer__header .sendbird-fileviewer__header-delete path, .sendbird-theme--light
- .sendbird-fileviewer__header .sendbird-fileviewer__header-close path {
- fill: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-fileviewer__header .sendbird-fileviewer__header-download path, .sendbird-theme--dark
- .sendbird-fileviewer__header .sendbird-fileviewer__header-delete path, .sendbird-theme--dark
- .sendbird-fileviewer__header .sendbird-fileviewer__header-close path {
- fill: var(--sendbird-dark-ondark-01); }
- .sendbird-theme--light .sendbird-fileviewer__header .sendbird-fileviewer__header-close {
- border-left: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-fileviewer__header .sendbird-fileviewer__header-close {
- border-left: 1px solid var(--sendbird-dark-ondark-04); }
+.sendbird-theme--dark .sendbird-button--primary:hover {
+ background-color: var(--sendbird-dark-primary-300);
+ border-color: var(--sendbird-dark-primary-300); }
-.sendbird-fileviewer__header-avatar {
- margin-right: 8px; }
+.sendbird-theme--light .sendbird-button--primary:focus {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-300);
+ border: 1px solid var(--sendbird-button-border-focus); }
-.sendbird-fileviewer__header-actions {
- right: 0;
- display: flex;
- flex-direction: row; }
+.sendbird-theme--dark .sendbird-button--primary:focus {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-200);
+ border: 1px solid var(--sendbird-button-border-focus); }
-.sendbird-fileviewer__header-filename {
- max-width: 500px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- display: inline-block;
- padding-top: 2px; }
+.sendbird-theme--light .sendbird-button--primary:active {
+ background-color: var(--sendbird-light-primary-500); }
-.sendbird-fileviewer__header-sendername {
- max-width: 200px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- display: inline-block;
- margin-left: 8px;
- padding-top: 5px; }
+.sendbird-theme--dark .sendbird-button--primary:active {
+ background-color: var(--sendbird-dark-primary-400); }
-.sendbird-fileviewer__content {
- height: calc(100% - 72px);
- margin-top: 8px;
- overflow-y: auto;
- display: flex;
- align-items: center;
- justify-content: center; }
- .sendbird-fileviewer__content .sendbird-fileviewer__video {
- max-width: 100%;
- max-height: 100%; }
- .sendbird-fileviewer__content .sendbird-fileviewer__img {
- max-width: 90%;
- max-height: 90%; }
- .sendbird-fileviewer__content .sendbird-fileviewer__unsupported {
- max-width: 100%;
- max-height: 100%;
- display: flex;
- justify-content: center;
- align-items: center; }
+.sendbird-theme--light .sendbird-button--primary:focus .sendbird-button--primary:hover {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-400); }
-.sendbird-unknown-message {
- position: relative;
- line-height: 0px; }
- .sendbird-unknown-message--outgoing {
- text-align: right; }
- .sendbird-unknown-message--incoming {
- text-align: left; }
+.sendbird-theme--dark .sendbird-button--primary:focus .sendbird-button--primary:hover {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-300); }
-.sendbird-outgoing-unknown-message {
- position: relative;
- right: 0px;
- display: inline-block;
- text-align: right;
- padding-left: 36px;
- box-sizing: border-box; }
- .sendbird-outgoing-unknown-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-theme--light .sendbird-outgoing-unknown-message:hover .sendbird-outgoing-unknown-message__body__text-balloon {
- background-color: var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-outgoing-unknown-message:hover .sendbird-outgoing-unknown-message__body__text-balloon {
- background-color: var(--sendbird-dark-primary-400); }
- .sendbird-outgoing-unknown-message:hover .sendbird-outgoing-unknown-message__more {
- display: block; }
- .sendbird-outgoing-unknown-message--left-padding {
- position: relative;
- width: 68px; }
- .sendbird-outgoing-unknown-message--left-padding .sendbird-outgoing-unknown-message__more {
- display: none;
- position: absolute;
- top: 4px;
- right: 4px; }
- .sendbird-outgoing-unknown-message--left-padding .sendbird-outgoing-unknown-message__message-status {
- position: absolute;
- text-align: right;
- right: 4px;
- bottom: 4px; }
- .sendbird-outgoing-unknown-message__body {
- display: flex;
- flex-direction: column; }
- .sendbird-outgoing-unknown-message__body__text-balloon {
- box-sizing: border-box;
- text-align: left;
- border-radius: 16px;
- padding: 8px 12px;
- width: 198px;
- height: 56px; }
- .sendbird-theme--light .sendbird-outgoing-unknown-message__body__text-balloon {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-outgoing-unknown-message__body__text-balloon {
- background-color: var(--sendbird-dark-primary-300); }
+.sendbird-theme--light .sendbird-button--primary:focus .sendbird-button--primary:active {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-500); }
-.sendbird-incoming-unknown-message {
- position: relative;
- left: 0px;
- display: flex;
- flex-direction: row;
- text-align: left; }
- .sendbird-incoming-unknown-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-theme--light .sendbird-incoming-unknown-message:hover .sendbird-incoming-unknown-message__body__text-balloon {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-unknown-message:hover .sendbird-incoming-unknown-message__body__text-balloon {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-incoming-unknown-message__left {
- width: 38px; }
- .sendbird-incoming-unknown-message__left__sender-profile-image {
- position: absolute;
- bottom: 4px; }
- .sendbird-incoming-unknown-message__body {
- width: 198px;
- display: flex;
- flex-direction: column; }
- .sendbird-incoming-unknown-message__body__sender-name {
- margin-left: 10px;
- margin-bottom: 4px; }
- .sendbird-incoming-unknown-message__body__text-balloon {
- width: 198px;
- height: 56px;
- border-radius: 16px;
- text-align: left;
- padding: 8px 12px;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-incoming-unknown-message__body__text-balloon {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-unknown-message__body__text-balloon {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-incoming-unknown-message--right-padding {
- position: relative;
- width: 68px; }
- .sendbird-incoming-unknown-message--right-padding .sendbird-incoming-unknown-message__sent-at {
- position: absolute;
- left: 4px;
- bottom: 4px; }
+.sendbird-theme--dark .sendbird-button--primary:focus .sendbird-button--primary:active {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-400); }
-.sendbird-theme--light .sendbird-link-label {
- color: var(--sendbird-light-onlight-01); }
+.sendbird-button--secondary {
+ background-color: transparent; }
+ .sendbird-theme--light .sendbird-button--secondary {
+ border: 1px solid var(--sendbird-light-onlight-03); }
+ .sendbird-theme--dark .sendbird-button--secondary {
+ border: 1px solid var(--sendbird-dark-ondark-03); }
+ .sendbird-theme--light .sendbird-button--secondary .sendbird-button__text {
+ color: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-button--secondary .sendbird-button__text {
+ color: var(--sendbird-dark-ondark-01); }
+ .sendbird-button--secondary:hover {
+ background-color: transparent; }
+ .sendbird-theme--light .sendbird-button--secondary:hover {
+ border: 1px solid var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-button--secondary:hover {
+ border: 1px solid var(--sendbird-dark-primary-200); }
+ .sendbird-theme--light .sendbird-button--secondary:hover .sendbird-button__text {
+ color: var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-button--secondary:hover .sendbird-button__text {
+ color: var(--sendbird-dark-primary-200); }
+ .sendbird-button--secondary.sendbird-button__disabled {
+ cursor: not-allowed;
+ border: none; }
+ .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled .sendbird-button__text {
+ color: var(--sendbird-light-onlight-02); }
+ .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled .sendbird-button__text {
+ color: var(--sendbird-dark-ondark-02); }
+ .sendbird-button--secondary.sendbird-button__disabled:hover {
+ border: none; }
+ .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled:hover {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled:hover {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled:hover .sendbird-button__text {
+ color: var(--sendbird-light-onlight-02); }
+ .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled:hover .sendbird-button__text {
+ color: var(--sendbird-dark-ondark-02); }
+ .sendbird-theme--light .sendbird-button--secondary:hover .sendbird-button--secondary:focus .sendbird-button__text {
+ color: var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-button--secondary:hover .sendbird-button--secondary:focus .sendbird-button__text {
+ color: var(--sendbird-dark-primary-200); }
+ .sendbird-button--secondary:focus {
+ border: 1px solid transparent;
+ background-color: transparent; }
+ .sendbird-theme--light .sendbird-button--secondary:focus {
+ box-shadow: var(--sendbird-light-primary-300) 0px 0px 0px 2px; }
+ .sendbird-theme--dark .sendbird-button--secondary:focus {
+ box-shadow: var(--sendbird-dark-primary-200) 0px 0px 0px 2px; }
+ .sendbird-theme--light .sendbird-button--secondary:focus .sendbird-button__text {
+ color: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-button--secondary:focus .sendbird-button__text {
+ color: var(--sendbird-dark-ondark-01); }
+ .sendbird-button--secondary:active {
+ box-shadow: none; }
+ .sendbird-theme--light .sendbird-button--secondary:active {
+ border: 1px solid var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-button--secondary:active {
+ border: 1px solid var(--sendbird-dark-primary-200); }
+ .sendbird-theme--light .sendbird-button--secondary:active .sendbird-button__text {
+ color: var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-button--secondary:active .sendbird-button__text {
+ color: var(--sendbird-dark-primary-200); }
-.sendbird-theme--dark .sendbird-link-label {
- color: var(--sendbird-dark-ondark-01); }
+.sendbird-theme--light .sendbird-button--danger {
+ border: 1px solid var(--sendbird-light-error-300);
+ background-color: var(--sendbird-light-error-300); }
-.sendbird-theme--light .sendbird-link-label:active, .sendbird-theme--light .sendbird-link-label:visited, .sendbird-theme--light .sendbird-link-label:focus {
- color: var(--sendbird-light-onlight-01); }
+.sendbird-theme--dark .sendbird-button--danger {
+ border: 1px solid var(--sendbird-dark-error-300);
+ background-color: var(--sendbird-dark-error-300); }
-.sendbird-theme--dark .sendbird-link-label:active, .sendbird-theme--dark .sendbird-link-label:visited, .sendbird-theme--dark .sendbird-link-label:focus {
- color: var(--sendbird-dark-ondark-01); }
+.sendbird-theme--light .sendbird-button--danger .sendbird-button__text {
+ color: var(--sendbird-light-ondark-01); }
-.sendbird-link-label:focus {
- outline: none; }
+.sendbird-theme--dark .sendbird-button--danger .sendbird-button__text {
+ color: var(--sendbird-dark-onlight-01); }
-.sendbird-link-label__label {
- display: inline; }
+.sendbird-theme--light .sendbird-button--danger:hover {
+ background-color: var(--sendbird-light-error-400);
+ border-color: var(--sendbird-light-error-400); }
-.sendbird-og-message {
- position: relative; }
- .sendbird-og-message--outgoing {
- text-align: right;
- line-height: 0px; }
- .sendbird-og-message--incoming {
- text-align: left; }
+.sendbird-theme--dark .sendbird-button--danger:hover {
+ background-color: var(--sendbird-dark-error-400);
+ border-color: var(--sendbird-dark-error-400); }
-.sendbird-outgoing-og-message {
- position: relative;
- right: 0px;
- display: inline-block;
- box-sizing: border-box;
- text-align: right; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message__og-tag__url .sendbird-outgoing-og-message__og-tag__url__label {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- display: inline-block;
- width: 296px; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-theme--light .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__text-balloon {
- background-color: var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__text-balloon {
- background-color: var(--sendbird-dark-primary-400); }
- .sendbird-theme--light .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-dark-background-400); }
- .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__more {
- display: block; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding {
- position: relative;
- width: 68px; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__more {
- display: none;
- position: absolute;
- top: 2px;
- right: 4px; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__more[class*='--pressed'] {
- display: block !important; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__message-status {
- position: absolute;
- right: 4px;
- bottom: 4px;
- text-align: right; }
- .sendbird-outgoing-og-message__text-balloon {
- box-sizing: border-box;
- width: 320px;
- padding: 8px 12px;
- border-radius: 16px 16px 0px 0px;
- word-break: break-all;
- text-align: left; }
- .sendbird-theme--light .sendbird-outgoing-og-message__text-balloon {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-outgoing-og-message__text-balloon {
- background-color: var(--sendbird-dark-primary-300); }
- .sendbird-outgoing-og-message__thumbnail--disabled:hover {
- cursor: not-allowed !important; }
- .sendbird-outgoing-og-message__thumbnail {
- width: 320px;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-outgoing-og-message__thumbnail {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-outgoing-og-message__thumbnail {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-outgoing-og-message__thumbnail__image__placeholder {
- width: 320px;
- height: 160px;
- display: flex;
- justify-content: center;
- align-items: center; }
- .sendbird-outgoing-og-message__thumbnail:hover {
- cursor: pointer; }
- .sendbird-outgoing-og-message__thumbnail:focus {
- outline: none; }
- .sendbird-outgoing-og-message__og-tag--disabled:hover {
- cursor: not-allowed !important; }
- .sendbird-outgoing-og-message__og-tag {
- padding: 8px 12px 12px 12px;
- border-radius: 0px 0px 16px 16px;
- text-align: left;
- box-sizing: border-box;
- width: 320px; }
- .sendbird-theme--light .sendbird-outgoing-og-message__og-tag {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-outgoing-og-message__og-tag {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-outgoing-og-message__og-tag__title {
- max-height: 150px;
- overflow-y: hidden;
- margin-bottom: 4px; }
- .sendbird-outgoing-og-message__og-tag__description {
- margin-bottom: 8px;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden; }
- .sendbird-outgoing-og-message__og-tag__url__label {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden; }
- .sendbird-outgoing-og-message__og-tag__emoji-reactions--wrapper:focus {
- outline: none; }
- .sendbird-outgoing-og-message__og-tag__emoji-reactions {
- margin: 8px -12px -12px -12px;
- width: 320px; }
- .sendbird-theme--light .sendbird-outgoing-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-outgoing-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-dark-background-500); }
- .sendbird-outgoing-og-message__og-tag__emoji-reactions:hover {
- cursor: default; }
- .sendbird-outgoing-og-message__og-tag__emoji-reactions:focus {
- outline: none; }
- .sendbird-outgoing-og-message__og-tag:hover {
- cursor: pointer; }
- .sendbird-outgoing-og-message__og-tag:focus {
- outline: none; }
+.sendbird-theme--light .sendbird-button--danger:focus {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-light-error-300);
+ border-color: var(--sendbird-button-border-focus); }
-.sendbird-og-message-word {
- display: inline;
- margin: 0px 2px; }
+.sendbird-theme--dark .sendbird-button--danger:focus {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-dark-error-300);
+ border-color: var(--sendbird-button-border-focus); }
-.sendbird-incoming-og-message {
+.sendbird-button--danger:active {
+ box-shadow: none; }
+ .sendbird-theme--light .sendbird-button--danger:active {
+ background-color: var(--sendbird-light-error-500); }
+ .sendbird-theme--dark .sendbird-button--danger:active {
+ background-color: var(--sendbird-dark-error-500); }
+
+.sendbird-theme--light .sendbird-button--danger:hover .sendbird-button--danger:focus {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-light-error-400); }
+
+.sendbird-theme--dark .sendbird-button--danger:hover .sendbird-button--danger:focus {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-dark-error-400); }
+
+.sendbird-theme--light .sendbird-button--danger:active .sendbird-button--danger:focus {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-light-error-500); }
+
+.sendbird-theme--dark .sendbird-button--danger:active .sendbird-button--danger:focus {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-dark-error-500); }
+
+.sendbird-button--disabled {
+ border: 1px solid transparent;
+ cursor: not-allowed; }
+ .sendbird-theme--light .sendbird-button--disabled {
+ background-color: var(--sendbird-light-background-200);
+ color: var(--sendbird-light-ondark-01); }
+ .sendbird-theme--dark .sendbird-button--disabled {
+ background-color: var(--sendbird-dark-background-400);
+ color: var(--sendbird-dark-onlight-01); }
+
+.sendbird-create-channel--content {
+ width: 480px;
+ max-height: 552px; }
+
+.sendbird-create-channel--scroll {
+ height: 360px;
+ overflow-y: auto; }
+
+.sendbird-checkbox {
+ display: block;
position: relative;
- left: 0px;
+ padding-left: 35px;
+ margin-bottom: 12px;
+ cursor: pointer;
+ font-size: 22px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none; }
+
+.sendbird-checkbox input {
+ position: absolute;
+ opacity: 0;
+ cursor: pointer;
+ height: 0;
+ width: 0; }
+
+.sendbird-checkbox--checkmark {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 18px;
+ width: 18px;
+ border-radius: 2px;
+ background-color: inherit; }
+ .sendbird-theme--light .sendbird-checkbox--checkmark {
+ border: 2px solid var(--sendbird-light-background-400); }
+ .sendbird-theme--dark .sendbird-checkbox--checkmark {
+ border: 2px solid var(--sendbird-dark-background-300); }
+
+.sendbird-theme--light .sendbird-checkbox input:focus ~ .sendbird-checkbox--checkmark {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-300); }
+
+.sendbird-theme--dark .sendbird-checkbox input:focus ~ .sendbird-checkbox--checkmark {
+ box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-200); }
+
+.sendbird-theme--light .sendbird-checkbox input:checked ~ .sendbird-checkbox--checkmark {
+ background-color: var(--sendbird-light-primary-300);
+ border: 2px solid var(--sendbird-light-primary-300); }
+
+.sendbird-theme--dark .sendbird-checkbox input:checked ~ .sendbird-checkbox--checkmark {
+ background-color: var(--sendbird-dark-primary-200);
+ border: 2px solid var(--sendbird-dark-primary-200); }
+
+.sendbird-checkbox--checkmark:after {
+ content: "";
+ position: absolute;
+ display: none; }
+
+.sendbird-checkbox input:checked ~ .sendbird-checkbox--checkmark:after {
+ display: block; }
+
+.sendbird-theme--light .sendbird-checkbox .sendbird-checkbox--checkmark:after {
+ left: 5px;
+ top: -0.5px;
+ width: 7px;
+ height: 12px;
+ border: solid var(--sendbird-light-background-50);
+ border-width: 0 2px 2px 0;
+ transform: rotate(45deg); }
+
+.sendbird-theme--dark .sendbird-checkbox .sendbird-checkbox--checkmark:after {
+ left: 5px;
+ top: -0.5px;
+ width: 7px;
+ height: 12px;
+ border: solid var(--sendbird-dark-background-600);
+ border-width: 0 2px 2px 0;
+ transform: rotate(45deg); }
+
+.sendbird-sort-by-row {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center; }
+
+.sendbird-reaction-button {
+ border-radius: 8px;
display: inline-block;
- box-sizing: border-box;
- text-align: left;
- padding-left: 40px; }
- .sendbird-theme--light .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
+ border: solid 1px transparent;
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-reaction-button:hover {
+ border: solid 1px var(--sendbird-light-background-100);
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-reaction-button:hover {
+ border: solid 1px var(--sendbird-dark-background-400);
background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-dark-background-400); }
- .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__more {
- display: block; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body {
- position: relative; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__avatar {
- position: absolute;
- bottom: 4px;
- left: -40px;
- cursor: pointer; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__sender-name {
- margin-left: 12px; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
- box-sizing: border-box;
- max-width: 320px;
- padding: 8px 12px;
- border-radius: 16px 16px 0px 0px;
- word-break: break-all;
- text-align: left; }
- .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail--disabled:hover {
- cursor: not-allowed !important; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail {
- box-sizing: border-box;
- width: 320px; }
- .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail .sendbird-incoming-og-message__thumbnail__image__placeholder {
- width: 320px;
- height: 160px;
- display: flex;
- justify-content: center;
- align-items: center; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail:hover {
- cursor: pointer; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail:focus {
- outline: none; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag--disabled:hover {
- cursor: not-allowed !important; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
- padding: 8px 12px 12px 12px;
- border-radius: 0px 0px 16px 16px;
- text-align: left;
- box-sizing: border-box;
- width: 320px; }
- .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__title {
- max-height: 150px;
- overflow-y: hidden;
- margin-bottom: 4px; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__description {
- margin-bottom: 8px;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__url .sendbird-incoming-og-message__og-tag__url__label {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- display: inline-block;
- width: 296px; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper:focus {
- outline: none; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
- margin: 8px -12px -12px -12px; }
- .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-dark-background-500); }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions:hover {
- cursor: default; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions:focus {
- outline: none; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding {
- position: relative;
- width: 68px; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__sent-at {
- position: absolute;
- bottom: 4px;
- left: 4px; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__more {
- position: absolute;
- top: 18px;
- left: 4px;
- display: none; }
+ .sendbird-reaction-button__inner {
+ margin: 3px; }
-.sendbird-notification {
- margin-top: 8px;
- margin-left: 24px;
- margin-right: 24px;
- border-radius: 4px;
- padding: 0px 2px;
- height: 32px;
- display: flex;
- align-items: center;
- justify-content: center; }
- .sendbird-theme--light .sendbird-notification {
- background-color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-notification {
- background-color: var(--sendbird-dark-primary-200); }
- .sendbird-notification:hover {
- cursor: pointer; }
- .sendbird-theme--light .sendbird-notification:hover {
- background-color: var(--sendbird-light-primary-400); }
- .sendbird-theme--dark .sendbird-notification:hover {
- background-color: var(--sendbird-dark-primary-300); }
- .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen {
- background-color: var(--sendbird-light-information-100); }
- .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen {
- background-color: var(--sendbird-dark-information-100); }
- .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {
- color: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {
- color: var(--sendbird-dark-onlight-01); }
- .sendbird-notification .sendbird-notification__text {
- display: flex;
- align-items: center;
- justify-content: center;
- margin-right: 8px; }
+.sendbird-reaction-button--selected {
+ cursor: pointer;
+ border-radius: 8px;
+ display: inline-block; }
+ .sendbird-theme--light .sendbird-reaction-button--selected {
+ border: solid 1px var(--sendbird-light-primary-100);
+ background-color: var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-reaction-button--selected {
+ border: solid 1px var(--sendbird-dark-primary-400);
+ background-color: var(--sendbird-dark-primary-400); }
+ .sendbird-reaction-button--selected:hover {
+ border: solid 1px var(--sendbird-selected-reaction-button-border-hover); }
+ .sendbird-reaction-button--selected__inner {
+ margin: 3px; }
+ .sendbird-reaction-button--selected.sendbird-reactions--pressed {
+ display: block !important; }
-.sendbird-conversation__connection-status {
+.sendbird-admin-message {
display: flex;
- align-items: center;
- padding-top: 5px; }
+ justify-content: center;
+ align-items: center; }
+ .sendbird-admin-message .sendbird-admin-message__text {
+ display: flex; }
-.sendbird-chat-header {
- position: relative;
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- align-items: center;
- height: 64px;
- min-height: 64px;
- padding-left: 20px;
- padding-right: 16px;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-theme--light .sendbird-chat-header {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-chat-header {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-chat-header__left {
- margin-right: 24px; }
- .sendbird-chat-header__left, .sendbird-chat-header__right {
- overflow: hidden;
- display: flex;
- flex-direction: row;
- align-items: center; }
- .sendbird-chat-header .sendbird-chat-header__title {
- margin-left: 8px;
- margin-right: 16px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- max-width: 780px; }
- .sendbird-chat-header .sendbird-chat-header__subtitle {
- max-width: 240px;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-chat-header .sendbird-chat-header__active {
- margin-right: 4px;
- width: 8px;
- height: 8px;
- border-radius: 4px; }
- .sendbird-theme--light .sendbird-chat-header .sendbird-chat-header__active {
- background-color: var(--sendbird-light-secondary-300); }
- .sendbird-theme--dark .sendbird-chat-header .sendbird-chat-header__active {
- background-color: var(--sendbird-dark-secondary-200); }
- .sendbird-chat-header .sendbird-chat-header__mute {
- margin-right: 26px; }
- .sendbird-chat-header .sendbird-iconbutton--pressed {
- background-color: inherit; }
+.sendbird-theme--light .sendbird-color--onbackground-1 {
+ color: var(--sendbird-light-onlight-01); }
-.sendbird-channel-settings {
- height: 100%;
- width: 320px;
- display: inline-block; }
- .sendbird-theme--light .sendbird-channel-settings {
- background-color: var(--sendbird-light-background-50);
- border: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-settings {
- background-color: var(--sendbird-dark-background-600);
- border: 1px solid var(--sendbird-dark-ondark-04); }
- .sendbird-channel-settings .sendbird-channel-settings__header-icon {
- cursor: pointer;
- position: absolute;
- top: 18px;
- right: 21px; }
- .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__header-icon .sendbird-channel-settings__close-icon path {
- fill: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__header-icon .sendbird-channel-settings__close-icon path {
- fill: var(--sendbird-dark-ondark-01); }
- .sendbird-channel-settings .sendbird-channel-settings__members .sendbird-badge__text {
- margin-top: -2px; }
- .sendbird-channel-settings .sendbird-channel-settings__header {
- height: 64px;
- min-height: 64px;
- position: relative;
- padding: 20px 24px;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__header {
- border-bottom: solid 1px var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__header {
- border-bottom: solid 1px var(--sendbird-dark-ondark-04); }
- .sendbird-channel-settings .sendbird-channel-settings__scroll-area {
- display: flex;
- flex-grow: 1;
- flex-direction: column;
- height: calc(100% - 64px);
- overflow-y: auto; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-item {
- cursor: pointer;
- position: relative;
- padding: 12px 22px 10px 56px; }
- .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__panel-item {
- background-color: var(--sendbird-light-background-50);
- border-bottom: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__panel-item {
- background-color: var(--sendbird-dark-background-600);
- border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
- .sendbird-channel-settings .sendbird-channel-settings__panel-item:focus {
- outline: none; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-item.sendbird-channel-settings__panel-item__disabled {
- cursor: not-allowed; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-icon-left,
- .sendbird-channel-settings .sendbird-channel-settings__panel-icon-right {
- position: absolute;
- top: 10px; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-icon-left {
- left: 16px; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-icon-right {
- right: 16px; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-icon--open {
- transform: rotate(90deg); }
- .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__panel-icon--chevron path {
- fill: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__panel-icon--chevron path {
- fill: var(--sendbird-dark-ondark-01); }
- .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__panel-icon__leave path {
- fill: var(--sendbird-light-error-300); }
- .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__panel-icon__leave path {
- fill: var(--sendbird-dark-error-300); }
+.sendbird-theme--dark .sendbird-color--onbackground-1 {
+ color: var(--sendbird-dark-ondark-01); }
-.sendbird-channel-profile {
- position: relative;
- text-align: center;
- padding: 32px 40px 27px 40px; }
- .sendbird-theme--light .sendbird-channel-profile {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-channel-profile {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-channel-profile .sendbird-channel-profile--inner {
- height: 92px; }
- .sendbird-channel-profile .sendbird-channel-profile__avatar {
- margin-bottom: 16px;
- text-align: center; }
- .sendbird-channel-profile .sendbird-channel-profile__title {
- max-width: 240px;
- white-space: nowrap;
- overflow-x: hidden;
- text-overflow: ellipsis;
- height: 18px; }
- .sendbird-channel-profile .sendbird-channel-profile__edit {
- position: absolute;
- top: 10px;
- right: 16px; }
+.sendbird-theme--light .sendbird-color--onbackground-1--background-color {
+ background-color: var(--sendbird-light-onlight-01); }
-.channel-profile-form .channel-profile-form__img-section {
- position: relative; }
+.sendbird-theme--dark .sendbird-color--onbackground-1--background-color {
+ background-color: var(--sendbird-dark-ondark-01); }
-.channel-profile-form .channel-profile-form__avatar-button {
- position: absolute;
- top: 54px;
- left: 96px; }
+.sendbird-theme--light .sendbird-color--onbackground-2 {
+ color: var(--sendbird-light-onlight-02); }
-.channel-profile-form .channel-profile-form__avatar {
- margin-top: 16px; }
+.sendbird-theme--dark .sendbird-color--onbackground-2 {
+ color: var(--sendbird-dark-ondark-02); }
-.channel-profile-form .channel-profile-form__name-section {
- margin-top: 12px; }
- .channel-profile-form .channel-profile-form__name-section .sendbird-input {
- height: 40px; }
+.sendbird-theme--light .sendbird-color--onbackground-2--background-color {
+ background-color: var(--sendbird-light-onlight-02); }
-.sendbird-members-accordion {
- padding: 8px 16px 16px 16px;
- position: relative;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-members-accordion {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-members-accordion {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-members-accordion .sendbird-members-accordion__member {
- position: relative;
- padding: 12px 0px 12px 44px;
- height: 40px;
- box-sizing: border-box; }
- .sendbird-members-accordion .sendbird-members-accordion__member .sendbird-label {
- max-width: 240px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-members-accordion .sendbird-members-accordion__member-avatar {
- position: absolute;
- left: 0;
- top: 10px;
- cursor: pointer; }
- .sendbird-members-accordion .sendbird-members-accordion__footer {
- display: flex;
- justify-content: flex-start;
- margin-top: 8px; }
- .sendbird-members-accordion .sendbird-members-accordion__footer .sendbird-members-accordion__footer__all-members {
- margin-right: 16px; }
+.sendbird-theme--dark .sendbird-color--onbackground-2--background-color {
+ background-color: var(--sendbird-dark-ondark-02); }
-.sendbird-more-members__popup-scroll {
- max-height: 420px;
- overflow-y: auto; }
+.sendbird-theme--light .sendbird-color--onbackground-3 {
+ color: var(--sendbird-light-onlight-03); }
-.sendbird-channel-settings__operator .sendbird-channel-settings__accordion-icon {
- position: absolute;
- left: 14px; }
+.sendbird-theme--dark .sendbird-color--onbackground-3 {
+ color: var(--sendbird-dark-ondark-03); }
-.sendbird-channel-settings__operator .sendbird-accordion__panel-heder {
- position: relative; }
+.sendbird-theme--light .sendbird-color--onbackground-3--background-color {
+ background-color: var(--sendbird-light-onlight-03); }
-.sendbird-channel-settings__empty-list {
- text-align: center;
- margin-top: 12px;
- margin-bottom: 4px;
- display: block; }
+.sendbird-theme--dark .sendbird-color--onbackground-3--background-color {
+ background-color: var(--sendbird-dark-ondark-03); }
-.sendbird-channel-settings-accordion__footer {
- padding-top: 16px;
- display: flex;
- justify-content: left;
- padding-left: 12px; }
- .sendbird-channel-settings-accordion__footer .sendbird-button:nth-child(2) {
- margin-left: 8px; }
+.sendbird-theme--light .sendbird-color--onbackground-4 {
+ color: var(--sendbird-light-onlight-04); }
-.sendbird-channel-settings__freeze {
- max-width: 320px;
- position: relative;
- padding: 12px 22px 10px 56px; }
- .sendbird-theme--light .sendbird-channel-settings__freeze {
- background-color: var(--sendbird-light-background-50);
- border-bottom: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-settings__freeze {
- background-color: var(--sendbird-dark-background-600);
- border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
+.sendbird-theme--dark .sendbird-color--onbackground-4 {
+ color: var(--sendbird-dark-ondark-04); }
-.sendbird-channel-settings__frozen-icon {
- position: absolute;
- right: 20px;
- top: 12px; }
- .sendbird-channel-settings__frozen-icon .sendbird-icon {
- cursor: pointer; }
+.sendbird-theme--light .sendbird-color--onbackground-4--background-color {
+ background-color: var(--sendbird-light-onlight-04); }
-.sendbird-channel-settings__members-list .sendbird-badge,
-.sendbird-channel-settings__members .sendbird-badge {
- position: absolute;
- right: 44px;
- top: 12px; }
- .sendbird-theme--light .sendbird-channel-settings__members-list .sendbird-badge, .sendbird-theme--light
- .sendbird-channel-settings__members .sendbird-badge {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-channel-settings__members-list .sendbird-badge, .sendbird-theme--dark
- .sendbird-channel-settings__members .sendbird-badge {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-channel-settings__members-list .sendbird-badge .sendbird-label, .sendbird-theme--light
- .sendbird-channel-settings__members .sendbird-badge .sendbird-label {
- color: var(--sendbird-light-onlight-02); }
- .sendbird-theme--dark .sendbird-channel-settings__members-list .sendbird-badge .sendbird-label, .sendbird-theme--dark
- .sendbird-channel-settings__members .sendbird-badge .sendbird-label {
- color: var(--sendbird-dark-ondark-02); }
+.sendbird-theme--dark .sendbird-color--onbackground-4--background-color {
+ background-color: var(--sendbird-dark-ondark-04); }
-.sendbird-accordion {
- padding: 8px 0px 16px 0px;
- position: relative;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-accordion {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-accordion {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-accordion .sendbird-accordion__member {
- position: relative;
- padding: 12px 0px 12px 44px;
- height: 40px;
- box-sizing: border-box; }
- .sendbird-accordion .sendbird-accordion__footer {
- display: flex;
- justify-content: flex-start;
- margin-top: 8px; }
+.sendbird-theme--light .sendbird-color--oncontent-1 {
+ color: var(--sendbird-light-ondark-01); }
-.sendbird-accordion__panel-heder {
- cursor: pointer;
- position: relative;
- padding: 12px 22px 10px 56px; }
- .sendbird-theme--light .sendbird-accordion__panel-heder {
- background-color: var(--sendbird-light-background-50);
- border-bottom: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-accordion__panel-heder {
- background-color: var(--sendbird-dark-background-600);
- border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
- .sendbird-accordion__panel-heder:focus {
- outline: none; }
- .sendbird-accordion__panel-heder.sendbird-accordion__panel-item__disabled {
- cursor: not-allowed; }
+.sendbird-theme--dark .sendbird-color--oncontent-1 {
+ color: var(--sendbird-dark-onlight-01); }
-.sendbird-accordion__panel-icon-left,
-.sendbird-accordion__panel-icon-right {
- position: absolute;
- top: 10px; }
+.sendbird-theme--light .sendbird-color--oncontent-1--background-color {
+ background-color: var(--sendbird-light-ondark-01); }
-.sendbird-accordion__panel-icon-left {
- left: 16px; }
+.sendbird-theme--dark .sendbird-color--oncontent-1--background-color {
+ background-color: var(--sendbird-dark-onlight-01); }
-.sendbird-accordion__panel-icon-right {
- right: 16px; }
+.sendbird-theme--light .sendbird-color--primary {
+ color: var(--sendbird-light-primary-300); }
-.sendbird-accordion__panel-icon--open {
- transform: rotate(90deg); }
+.sendbird-theme--dark .sendbird-color--primary {
+ color: var(--sendbird-dark-primary-200); }
-.sendbird-theme--light .sendbird-accordion__panel-icon--chevron path {
- fill: var(--sendbird-light-onlight-01); }
+.sendbird-theme--light .sendbird-color--primary--background-color {
+ background-color: var(--sendbird-light-primary-300); }
-.sendbird-theme--dark .sendbird-accordion__panel-icon--chevron path {
- fill: var(--sendbird-dark-ondark-01); }
+.sendbird-theme--dark .sendbird-color--primary--background-color {
+ background-color: var(--sendbird-dark-primary-200); }
-.sendbird-theme--light .sendbird-accordion__panel-icon__leave path {
- fill: var(--sendbird-light-error-300); }
+.sendbird-theme--light .sendbird-color--error {
+ color: var(--sendbird-light-error-300); }
-.sendbird-theme--dark .sendbird-accordion__panel-icon__leave path {
- fill: var(--sendbird-dark-error-300); }
+.sendbird-theme--dark .sendbird-color--error {
+ color: var(--sendbird-dark-error-300); }
-.sendbird-user-list-item--small {
- display: block;
- position: relative;
- box-sizing: border-box;
- height: 40px; }
- .sendbird-user-list-item--small__avatar {
- cursor: pointer;
- position: absolute;
- top: 10px;
- left: 12px; }
- .sendbird-user-list-item--small .sendbird-muted-avatar {
- position: absolute;
- top: 10px;
- left: 12px;
- z-index: 2;
- pointer-events: none; }
- .sendbird-user-list-item--small__title {
- position: absolute;
- top: 10px;
- left: 54px;
- width: 160px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-user-list-item--small__subtitle {
- position: absolute;
- top: 23px;
- left: 140px;
- max-width: 237px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-user-list-item--small__checkbox {
- position: absolute;
- top: 16px;
- right: 16px; }
- .sendbird-user-list-item--small__action {
- display: none;
- position: absolute;
- right: 10px;
- top: 4px; }
- .sendbird-user-list-item--small__operator {
- position: absolute;
- right: 24px;
- top: 10px; }
- .sendbird-theme--light .sendbird-user-list-item--small:hover, .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-user-list-item--small:hover, .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__action, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__action {
+.sendbird-theme--light .sendbird-color--error--background-color {
+ background-color: var(--sendbird-light-error-300); }
+
+.sendbird-theme--dark .sendbird-color--error--background-color {
+ background-color: var(--sendbird-dark-error-300); }
+
+.sendbird-message {
+ position: relative;
+ line-height: 0; }
+ .sendbird-message--outgoing {
+ text-align: right; }
+ .sendbird-message--incoming {
+ text-align: left; }
+
+.sendbird-user-message--copy {
+ cursor: pointer !important; }
+
+.sendbird-user-message--outgoing {
+ position: relative;
+ right: 0px;
+ display: inline-block;
+ max-width: 496px;
+ text-align: right; }
+ .sendbird-theme--light .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon {
+ background-color: var(--sendbird-light-primary-200); }
+ .sendbird-theme--dark .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon {
+ background-color: var(--sendbird-dark-primary-400); }
+ .sendbird-theme--light .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
+ border: solid 1px var(--sendbird-light-primary-200); }
+ .sendbird-theme--dark .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-primary-400); }
+ .sendbird-user-message--outgoing:hover .sendbird-user-message__left-padding .sendbird-user-message__more {
display: block; }
- .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__operator, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__operator {
+ .sendbird-user-message--outgoing .sendbird-user-message--inner {
+ display: flex;
+ flex-direction: row; }
+ .sendbird-user-message--outgoing .sendbird-user-message__left-padding {
+ position: relative;
+ width: 68px; }
+ .sendbird-user-message--outgoing .sendbird-user-message__left-padding .sendbird-user-message__more {
+ display: none;
+ position: absolute;
+ right: 4px;
+ top: 2px; }
+ .sendbird-user-message--outgoing .sendbird-user-message__left-padding .sendbird-user-message__more[class*='--pressed'] {
+ display: block !important; }
+ .sendbird-user-message--outgoing .sendbird-user-message__left-padding .sendbird-user-message__status {
+ position: absolute;
+ bottom: 2px;
+ right: 4px; }
+ .sendbird-user-message--outgoing .sendbird-user-message__text-balloon {
+ max-width: var(--sendbird-message-balloon-width);
+ box-sizing: border-box;
+ border-radius: 16px;
+ text-align: left; }
+ .sendbird-theme--light .sendbird-user-message--outgoing .sendbird-user-message__text-balloon {
+ background-color: var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-user-message--outgoing .sendbird-user-message__text-balloon {
+ background-color: var(--sendbird-dark-primary-300); }
+ .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner {
+ display: flex;
+ flex-direction: column; }
+ .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place {
+ padding: 8px 12px; }
+ .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
+ display: inline;
+ white-space: pre-wrap;
+ overflow-wrap: normal; }
+ .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
+ position: relative;
+ bottom: 0px; }
+ .sendbird-theme--light .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
+ border: solid 1px var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-primary-300); }
+
+.sendbird-user-message--incoming {
+ position: relative;
+ left: 0px;
+ display: inline-block;
+ padding-left: 40px;
+ max-width: 536px;
+ text-align: left; }
+ .sendbird-theme--light .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
+ border: solid 1px var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-background-400); }
+ .sendbird-user-message--incoming:hover .sendbird-user-message__right-padding .sendbird-user-message__more {
+ display: block; }
+ .sendbird-user-message--incoming:hover .sendbird-user-message__right-padding .sendbird-user-message__sent-at {
display: none; }
- .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {
- background-color: var(--sendbird-dark-background-700); }
+ .sendbird-user-message--incoming .sendbird-user-message--inner {
+ position: relative;
+ display: flex;
+ flex-direction: row; }
+ .sendbird-user-message--incoming .sendbird-user-message--body {
+ display: flex;
+ flex-direction: column; }
+ .sendbird-user-message--incoming .sendbird-user-message__right-padding {
+ position: relative;
+ width: 68px; }
+ .sendbird-user-message--incoming .sendbird-user-message__right-padding .sendbird-user-message__sent-at {
+ position: absolute;
+ left: 4px;
+ bottom: 2px; }
+ .sendbird-user-message--incoming .sendbird-user-message__right-padding .sendbird-user-message__more {
+ position: absolute;
+ display: none;
+ top: 18px;
+ left: 4px; }
+ .sendbird-user-message--incoming .sendbird-user-message__avatar {
+ position: absolute;
+ bottom: 4px;
+ left: -40px;
+ cursor: pointer; }
+ .sendbird-user-message--incoming .sendbird-user-message__sender-name {
+ margin-left: 12px;
+ margin-bottom: 4px; }
+ .sendbird-user-message--incoming .sendbird-user-message__text-balloon {
+ margin-top: 4px;
+ max-width: var(--sendbird-message-balloon-width);
+ box-sizing: border-box;
+ border-radius: 16px; }
+ .sendbird-theme--light .sendbird-user-message--incoming .sendbird-user-message__text-balloon {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-user-message--incoming .sendbird-user-message__text-balloon {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner {
+ display: flex;
+ flex-direction: column; }
+ .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place {
+ padding: 8px 12px; }
+ .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
+ display: inline;
+ white-space: pre-wrap;
+ overflow-wrap: normal; }
+ .sendbird-theme--light .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
+ color: var(--sendbird-light-onlight-01); }
+ .sendbird-theme--dark .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
+ color: var(--sendbird-dark-ondark-01); }
+ .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
+ position: relative;
+ bottom: 0px; }
+ .sendbird-theme--light .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
+ border: solid 1px var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-background-500); }
-.sendbird-app__wrap {
- width: 100%;
- height: 100%;
- display: flex; }
- .sendbird-app__wrap .sendbird-app__conversation-wrap {
- flex: 1;
- position: relative; }
- .sendbird-app__wrap .sendbird-app__channellist-wrap {
- max-width: 320px; }
- .sendbird-theme--light .sendbird-app__wrap .sendbird-app__conversation--settings-open .sendbird-chat-header__info {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-app__wrap .sendbird-app__conversation--settings-open .sendbird-chat-header__info {
- background-color: var(--sendbird-dark-background-700); }
- .sendbird-app__wrap .sendbird-channel-settings {
- border-left: none; }
- .sendbird-app__wrap .sendbird-channel-settings .sendbird-channel-settings__header {
- height: 65px; }
+.sendbird-user-message__text-balloon__inner__text-place__text {
+ word-break: break-word;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap; }
+
+.sendbird-user-message__text-balloon {
+ display: inline-block; }
+
+.sendbird-user-message-word {
+ display: inline;
+ margin: 0px 2px; }
+
+.sendbird-file-message--outgoing {
+ text-align: right; }
+
+.sendbird-file-message--incoming {
+ text-align: left; }
+
+.sendbird-file-message__outgoing {
+ position: relative;
+ right: 0px;
+ display: inline-block;
+ max-width: 496px;
+ text-align: right;
+ line-height: 0px; }
+ .sendbird-file-message__outgoing .sendbird-file-message--inner {
+ position: relative;
+ display: flex;
+ flex-direction: row; }
+ .sendbird-theme--light .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip {
+ background-color: var(--sendbird-light-primary-200); }
+ .sendbird-theme--dark .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip {
+ background-color: var(--sendbird-dark-primary-400); }
+ .sendbird-theme--light .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
+ border: solid 1px var(--sendbird-light-primary-200); }
+ .sendbird-theme--dark .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-primary-400); }
+ .sendbird-file-message__outgoing:hover .sendbird-file-message__left-padding .sendbird-file-message__more {
+ display: block; }
+ .sendbird-file-message__outgoing:hover .sendbird-file-message__left-padding .sendbird-file-message__status {
+ display: none; }
+ .sendbird-file-message__outgoing .sendbird-file-message__left-padding {
+ position: relative;
+ width: 68px; }
+ .sendbird-file-message__outgoing .sendbird-file-message__left-padding .sendbird-file-message__more {
+ display: none;
+ position: absolute;
+ right: 4px;
+ top: 2px; }
+ .sendbird-file-message__outgoing .sendbird-file-message__left-padding .sendbird-file-message__status {
+ position: absolute;
+ text-align: right;
+ right: 4px;
+ bottom: 4px; }
+ .sendbird-file-message__outgoing .sendbird-file-message__tooltip {
+ display: flex;
+ flex-direction: column;
+ max-width: var(--sendbird-message-balloon-width);
+ box-sizing: border-box;
+ border-radius: 16px; }
+ .sendbird-theme--light .sendbird-file-message__outgoing .sendbird-file-message__tooltip {
+ background-color: var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-file-message__outgoing .sendbird-file-message__tooltip {
+ background-color: var(--sendbird-dark-primary-300); }
+ .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner {
+ display: flex;
+ flex: row;
+ padding: 8px 12px;
+ text-align: left; }
+ .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
+ border-radius: 10px;
+ margin-right: 8px;
+ background-color: var(--sendbird-file-message-icon-background); }
+ .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__text {
+ white-space: nowrap;
+ overflow-wrap: break-word;
+ margin: 4px 0px;
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
+ border: solid 1px var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-primary-300); }
+
+.sendbird-file-message__incoming {
+ position: relative;
+ left: 0px;
+ display: inline-block;
+ padding-left: 40px;
+ max-width: 536px;
+ text-align: left;
+ line-height: 0px; }
+ .sendbird-file-message__incoming .sendbird-file-message--inner {
+ position: relative;
+ display: flex;
+ flex-direction: row; }
+ .sendbird-file-message__incoming .sendbird-file-message__right-padding {
+ position: relative;
+ width: 68px; }
+ .sendbird-file-message__incoming .sendbird-file-message__right-padding .sendbird-file-message__more {
+ position: absolute;
+ display: none;
+ left: 4px;
+ top: 18px; }
+ .sendbird-file-message__incoming .sendbird-file-message__right-padding .sendbird-file-message__sent-at {
+ position: absolute;
+ left: 4px;
+ bottom: 4px; }
+ .sendbird-file-message__incoming:hover .sendbird-file-message__right-padding .sendbird-file-message__more {
+ display: block; }
+ .sendbird-theme--light .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
+ border: solid 1px var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-background-400); }
+ .sendbird-file-message__incoming .sendbird-file-message__avatar {
+ position: absolute;
+ bottom: 2px;
+ left: -40px;
+ cursor: pointer; }
+ .sendbird-file-message__incoming .sendbird-file-message__sender-name {
+ margin-left: 12px;
+ margin-bottom: 4px; }
+ .sendbird-file-message__incoming .sendbird-file-message__tooltip {
+ display: flex;
+ flex-direction: column;
+ margin-top: 4px;
+ max-width: var(--sendbird-message-balloon-width);
+ box-sizing: border-box;
+ border-radius: 16px; }
+ .sendbird-theme--light .sendbird-file-message__incoming .sendbird-file-message__tooltip {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-file-message__incoming .sendbird-file-message__tooltip {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner {
+ display: flex;
+ flex-direction: row;
+ padding: 8px 12px; }
+ .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
+ border-radius: 10px;
+ margin-right: 8px; }
+ .sendbird-theme--light .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
+ background-color: var(--sendbird-dark-background-600); }
+ .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__text {
+ white-space: nowrap;
+ overflow-wrap: normal;
+ margin: 4px 0px;
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
+ border: solid 1px var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-background-500); }
+
+.sendbird-unknown-message {
+ position: relative;
+ line-height: 0px; }
+ .sendbird-unknown-message--outgoing {
+ text-align: right; }
+ .sendbird-unknown-message--incoming {
+ text-align: left; }
+
+.sendbird-outgoing-unknown-message {
+ position: relative;
+ right: 0px;
+ display: inline-block;
+ text-align: right;
+ padding-left: 36px;
+ box-sizing: border-box; }
+ .sendbird-outgoing-unknown-message--inner {
+ position: relative;
+ display: flex;
+ flex-direction: row; }
+ .sendbird-theme--light .sendbird-outgoing-unknown-message:hover .sendbird-outgoing-unknown-message__body__text-balloon {
+ background-color: var(--sendbird-light-primary-200); }
+ .sendbird-theme--dark .sendbird-outgoing-unknown-message:hover .sendbird-outgoing-unknown-message__body__text-balloon {
+ background-color: var(--sendbird-dark-primary-400); }
+ .sendbird-outgoing-unknown-message:hover .sendbird-outgoing-unknown-message__more {
+ display: block; }
+ .sendbird-outgoing-unknown-message--left-padding {
+ position: relative;
+ width: 68px; }
+ .sendbird-outgoing-unknown-message--left-padding .sendbird-outgoing-unknown-message__more {
+ display: none;
+ position: absolute;
+ top: 4px;
+ right: 4px; }
+ .sendbird-outgoing-unknown-message--left-padding .sendbird-outgoing-unknown-message__message-status {
+ position: absolute;
+ text-align: right;
+ right: 4px;
+ bottom: 4px; }
+ .sendbird-outgoing-unknown-message__body {
+ display: flex;
+ flex-direction: column; }
+ .sendbird-outgoing-unknown-message__body__text-balloon {
+ box-sizing: border-box;
+ text-align: left;
+ border-radius: 16px;
+ padding: 8px 12px;
+ width: 198px;
+ height: 56px; }
+ .sendbird-theme--light .sendbird-outgoing-unknown-message__body__text-balloon {
+ background-color: var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-outgoing-unknown-message__body__text-balloon {
+ background-color: var(--sendbird-dark-primary-300); }
+
+.sendbird-incoming-unknown-message {
+ position: relative;
+ left: 0px;
+ display: flex;
+ flex-direction: row;
+ text-align: left; }
+ .sendbird-incoming-unknown-message--inner {
+ position: relative;
+ display: flex;
+ flex-direction: row; }
+ .sendbird-theme--light .sendbird-incoming-unknown-message:hover .sendbird-incoming-unknown-message__body__text-balloon {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-incoming-unknown-message:hover .sendbird-incoming-unknown-message__body__text-balloon {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-incoming-unknown-message__left {
+ width: 38px; }
+ .sendbird-incoming-unknown-message__left__sender-profile-image {
+ position: absolute;
+ bottom: 4px; }
+ .sendbird-incoming-unknown-message__body {
+ width: 198px;
+ display: flex;
+ flex-direction: column; }
+ .sendbird-incoming-unknown-message__body__sender-name {
+ margin-left: 10px;
+ margin-bottom: 4px; }
+ .sendbird-incoming-unknown-message__body__text-balloon {
+ width: 198px;
+ height: 56px;
+ border-radius: 16px;
+ text-align: left;
+ padding: 8px 12px;
+ box-sizing: border-box; }
+ .sendbird-theme--light .sendbird-incoming-unknown-message__body__text-balloon {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-incoming-unknown-message__body__text-balloon {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-incoming-unknown-message--right-padding {
+ position: relative;
+ width: 68px; }
+ .sendbird-incoming-unknown-message--right-padding .sendbird-incoming-unknown-message__sent-at {
+ position: absolute;
+ left: 4px;
+ bottom: 4px; }
+
+.sendbird-message-status {
+ display: inline;
+ text-align: right; }
+ .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__try-again {
+ text-decoration: underline; }
+ .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__try-again:hover {
+ cursor: pointer; }
+ .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__delete {
+ text-decoration: underline; }
+ .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__delete:hover {
+ cursor: pointer; }
+
+.sendbird-emoji-reactions {
+ display: inline-block;
+ border-radius: 16px;
+ max-width: var(--sendbird-message-balloon-width);
+ box-sizing: border-box;
+ min-height: 24px;
+ padding: 7px 5px 3px 5px; }
+ .sendbird-theme--light .sendbird-emoji-reactions {
+ background-color: var(--sendbird-light-background-50); }
+ .sendbird-theme--dark .sendbird-emoji-reactions {
+ background-color: var(--sendbird-dark-background-600); }
+ .sendbird-emoji-reactions .sendbird-emoji-reactions--inner {
+ display: flex;
+ flex-wrap: wrap; }
+ .sendbird-emoji-reactions .sendbird-emoji-reactions__emoji-reaction {
+ margin-left: 2px;
+ margin-right: 2px;
+ margin-bottom: 4px; }
+ .sendbird-emoji-reactions .sendbird-emoji-reactions__emoji-reaction-add {
+ width: 36px;
+ height: 24px; }
+ .sendbird-emoji-reactions:focus {
+ outline: none; }
+
+.sendbird-reaction-badge {
+ display: inline-block;
+ border-radius: 15px;
+ width: 50px;
+ height: 24px; }
+ .sendbird-theme--light .sendbird-reaction-badge {
+ background-color: var(--sendbird-light-background-100);
+ border: solid 1px var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-reaction-badge {
+ background-color: var(--sendbird-dark-background-500);
+ border: solid 1px var(--sendbird-dark-background-500); }
+ .sendbird-reaction-badge:hover {
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-reaction-badge:hover {
+ border: solid 1px var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-reaction-badge:hover {
+ border: solid 1px var(--sendbird-dark-primary-200); }
+
+.sendbird-reaction-badge--is-add {
+ display: inline-block;
+ border-radius: 15px;
+ width: 36px;
+ height: 24px; }
+ .sendbird-theme--light .sendbird-reaction-badge--is-add {
+ background-color: var(--sendbird-light-background-100);
+ border: solid 1px var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-reaction-badge--is-add {
+ background-color: var(--sendbird-dark-background-500);
+ border: solid 1px var(--sendbird-dark-background-500); }
+ .sendbird-reaction-badge--is-add:hover {
+ cursor: pointer;
+ border: solid 1px var(--sendbird-add-reaction-button-border-hover); }
+ .sendbird-reaction-badge--is-add .sendbird-reaction-badge__inner .sendbird-reaction-badge__inner__icon {
+ left: 8px; }
+
+.sendbird-reaction-badge--selected {
+ display: inline-block;
+ border-radius: 15px;
+ width: 50px;
+ height: 24px; }
+ .sendbird-theme--light .sendbird-reaction-badge--selected {
+ background-color: var(--sendbird-light-primary-100);
+ border: solid 1px var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-reaction-badge--selected {
+ background-color: var(--sendbird-dark-primary-400);
+ border: solid 1px var(--sendbird-dark-primary-400); }
+ .sendbird-reaction-badge--selected:hover {
+ cursor: pointer; }
+ .sendbird-theme--light .sendbird-reaction-badge--selected:hover {
+ border: solid 1px var(--sendbird-light-primary-300); }
+ .sendbird-theme--dark .sendbird-reaction-badge--selected:hover {
+ border: solid 1px var(--sendbird-dark-primary-200); }
+
+.sendbird-reaction-badge__inner {
+ position: relative;
+ display: flex;
+ height: 24px;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ padding-left: 20px;
+ padding-right: 4px; }
+ .sendbird-reaction-badge__inner .sendbird-reaction-badge__inner__icon {
+ position: absolute;
+ top: 2px;
+ left: 4px; }
+ .sendbird-reaction-badge__inner .sendbird-reaction-badge__inner__count {
+ margin-left: 4px; }
+
+.sendbird-tooltip {
+ position: relative;
+ display: inline-flex;
+ justify-content: center;
+ max-width: 200px;
+ border-radius: 8px;
+ padding: 8px 16px;
+ background-color: var(--sendbird-tooltip-background); }
+ .sendbird-tooltip::after {
+ content: '';
+ position: absolute;
+ bottom: -4px;
+ width: 8px;
+ height: 8px;
+ transform: rotate(45deg);
+ background-color: var(--sendbird-tooltip-background); }
+ .sendbird-tooltip__text {
+ font-family: var(--sendbird-font-family-default);
+ font-size: 12px;
+ font-weight: bold;
+ font-stretch: normal;
+ font-style: normal;
+ line-height: 1.33;
+ letter-spacing: normal;
+ color: var(--sendbird-tooltip-text-color); }
+
+.sendbird-tooltip-wrapper {
+ position: relative;
+ display: inline-flex; }
+ .sendbird-tooltip-wrapper__hover-tooltip {
+ position: absolute;
+ display: inline-flex;
+ width: 200px; }
+ .sendbird-tooltip-wrapper__hover-tooltip__inner__tooltip-container {
+ position: relative;
+ display: inline-flex; }
+
+.sendbird-thumbnail {
+ text-align: right;
+ position: relative; }
+ .sendbird-thumbnail .sendbird-thumbnail__body {
+ position: relative;
+ display: inline-block; }
+ .sendbird-thumbnail .sendbird-thumbnail__more {
+ display: none;
+ position: absolute;
+ top: 10px; }
+ .sendbird-thumbnail:hover .sendbird-thumbnail__more {
+ display: block; }
+ .sendbird-thumbnail .sendbird-thumbnail__wrap {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ border-radius: 16px;
+ margin: 8px 0px; }
+ .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-thumbnail .sendbird-thumbnail__wrap:focus {
+ outline: none; }
+ .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap:hover {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap:hover {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__inner {
+ cursor: pointer; }
+ .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
+ opacity: 1; }
+ .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-background-400); }
+ .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner {
+ width: 100%;
+ height: 100%;
+ position: relative; }
+ .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
+ position: absolute;
+ opacity: 0;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ border-radius: 16px; }
+ .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
+ background-color: var(--sendbird-light-overlay); }
+ .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
+ background-color: var(--sendbird-dark-overlay); }
+ .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-background-500); }
+ .sendbird-thumbnail .sendbird-thumbnail__avatar {
+ position: absolute;
+ bottom: 30px;
+ left: 0px; }
+ .sendbird-thumbnail .sendbird-thumbnail__sender-name {
+ margin-left: 12px; }
+ .sendbird-thumbnail.sendbird-thumbnail--incoming {
+ text-align: left;
+ padding-left: 40px;
+ box-sizing: border-box; }
+ .sendbird-thumbnail .sendbird-thumbnail__video-icon {
+ position: absolute;
+ top: calc(50% - 28px);
+ left: calc(50% - 28px); }
+ .sendbird-thumbnail .sendbird-thumbnail__video,
+ .sendbird-thumbnail .sendbird-thumbnail__img {
+ display: block;
+ max-width: var(--sendbird-message-balloon-width);
+ max-height: 360px;
+ border-radius: 16px; }
+
+.sendbird-outgoing-thumbnail-message {
+ position: relative;
+ text-align: right;
+ line-height: 0px; }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message--inner {
+ display: inline-flex;
+ flex-direction: row; }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__left-padding {
+ position: relative;
+ width: 68px; }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__left-padding .sendbird-outgoing-thumbnail-message-left-padding__more {
+ display: none;
+ position: absolute;
+ top: 4px;
+ right: 4px; }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__left-padding .sendbird-outgoing-thumbnail-message-left-padding__status {
+ position: absolute;
+ right: 4px;
+ bottom: 4px; }
+ .sendbird-outgoing-thumbnail-message:hover .sendbird-outgoing-thumbnail-message__left-padding .sendbird-outgoing-thumbnail-message-left-padding__more {
+ display: block; }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body {
+ position: relative; }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ border-radius: 16px; }
+ .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:focus {
+ outline: none; }
+ .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap--inner {
+ cursor: pointer; }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
+ opacity: 1; }
+ .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-background-400); }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner {
+ width: 100%;
+ height: 100%;
+ position: relative; }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
+ position: absolute;
+ opacity: 0;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ border-radius: 16px; }
+ .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
+ background-color: var(--sendbird-light-overlay); }
+ .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
+ background-color: var(--sendbird-dark-overlay); }
+ .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-background-500); }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message-body__video,
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message-body__img {
+ display: block;
+ max-width: var(--sendbird-message-balloon-width);
+ max-height: 360px;
+ border-radius: 16px; }
+ .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message-body__video-icon {
+ position: absolute;
+ top: calc(50% - 28px);
+ left: calc(50% - 28px); }
+
+.sendbird-incoming-thumbnail-message {
+ position: relative;
+ text-align: left;
+ padding-left: 40px; }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__sender-name {
+ position: relative;
+ box-sizing: border-box;
+ left: 12px;
+ height: 12px;
+ margin-bottom: 4px; }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__avatar {
+ position: absolute;
+ left: -40px;
+ bottom: 4px;
+ cursor: pointer; }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message--inner {
+ display: flex;
+ flex-direction: row; }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body {
+ position: relative; }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ border-radius: 16px; }
+ .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:focus {
+ outline: none; }
+ .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap--inner {
+ cursor: pointer; }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
+ opacity: 1; }
+ .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-background-400); }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner {
+ width: 100%;
+ height: 100%;
+ position: relative; }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
+ position: absolute;
+ opacity: 0;
+ width: 100%;
+ height: 100%;
+ top: 0px;
+ left: 0px;
+ border-radius: 16px; }
+ .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
+ background-color: var(--sendbird-light-overlay); }
+ .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
+ background-color: var(--sendbird-dark-overlay); }
+ .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message__wrap__emoji-reactions {
+ border: solid 1px var(--sendbird-dark-background-500); }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__video,
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__img {
+ display: block;
+ max-width: var(--sendbird-message-balloon-width);
+ max-height: 360px;
+ border-radius: 16px; }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__video-icon {
+ position: absolute;
+ top: calc(50% - 28px);
+ left: calc(50% - 28px); }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__right-padding {
+ position: relative;
+ width: 68px; }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__right-padding .sendbird-incoming-thumbnail-message__sent-at {
+ position: absolute;
+ left: 4px;
+ bottom: 4px; }
+ .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__right-padding .sendbird-incoming-thumbnail-message__more {
+ position: absolute;
+ left: 4px;
+ top: 4px;
+ display: none; }
+ .sendbird-incoming-thumbnail-message:hover .sendbird-incoming-thumbnail-message__right-padding .sendbird-incoming-thumbnail-message__more {
+ display: block; }
+
+.sendbird-og-message {
+ position: relative; }
+ .sendbird-og-message--outgoing {
+ text-align: right;
+ line-height: 0px; }
+ .sendbird-og-message--incoming {
+ text-align: left; }
+
+.sendbird-outgoing-og-message {
+ position: relative;
+ right: 0px;
+ display: inline-block;
+ box-sizing: border-box;
+ text-align: right; }
+ .sendbird-outgoing-og-message .sendbird-outgoing-og-message__og-tag__url {
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ display: inline-block;
+ width: 296px; }
+ .sendbird-outgoing-og-message .sendbird-outgoing-og-message--inner {
+ position: relative;
+ display: flex;
+ flex-direction: row; }
+ .sendbird-theme--light .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__text-balloon {
+ background-color: var(--sendbird-light-primary-200); }
+ .sendbird-theme--dark .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__text-balloon {
+ background-color: var(--sendbird-dark-primary-400); }
+ .sendbird-theme--light .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag__emoji-reactions {
+ border: 1px solid var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag__emoji-reactions {
+ border: 1px solid var(--sendbird-dark-background-400); }
+ .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__more {
+ display: block; }
+ .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding {
+ position: relative;
+ width: 68px; }
+ .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__more {
+ display: none;
+ position: absolute;
+ top: 2px;
+ right: 4px; }
+ .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__more[class*='--pressed'] {
+ display: block !important; }
+ .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__message-status {
+ position: absolute;
+ right: 4px;
+ bottom: 4px;
+ text-align: right; }
+ .sendbird-outgoing-og-message__text-balloon {
+ box-sizing: border-box;
+ width: 320px;
+ padding: 8px 12px;
+ border-radius: 16px 16px 0px 0px;
+ word-break: break-all;
+ text-align: left; }
+ .sendbird-theme--light .sendbird-outgoing-og-message__text-balloon {
+ background-color: var(--sendbird-light-primary-100); }
+ .sendbird-theme--dark .sendbird-outgoing-og-message__text-balloon {
+ background-color: var(--sendbird-dark-primary-300); }
+ .sendbird-outgoing-og-message__thumbnail--disabled:hover {
+ cursor: not-allowed !important; }
+ .sendbird-outgoing-og-message__thumbnail {
+ width: 320px;
+ box-sizing: border-box; }
+ .sendbird-theme--light .sendbird-outgoing-og-message__thumbnail {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-outgoing-og-message__thumbnail {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-outgoing-og-message__thumbnail__image__placeholder {
+ width: 320px;
+ height: 160px;
+ display: flex;
+ justify-content: center;
+ align-items: center; }
+ .sendbird-outgoing-og-message__thumbnail:hover {
+ cursor: pointer; }
+ .sendbird-outgoing-og-message__thumbnail:focus {
+ outline: none; }
+ .sendbird-outgoing-og-message__og-tag--disabled:hover {
+ cursor: not-allowed !important; }
+ .sendbird-outgoing-og-message__og-tag {
+ padding: 8px 12px 12px 12px;
+ border-radius: 0px 0px 16px 16px;
+ text-align: left;
+ box-sizing: border-box;
+ width: 320px; }
+ .sendbird-theme--light .sendbird-outgoing-og-message__og-tag {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-outgoing-og-message__og-tag {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-outgoing-og-message__og-tag__title {
+ max-height: 150px;
+ overflow-y: hidden;
+ margin-bottom: 4px; }
+ .sendbird-outgoing-og-message__og-tag__description {
+ margin-bottom: 8px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden; }
+ .sendbird-outgoing-og-message__og-tag__url__label {
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden; }
+ .sendbird-outgoing-og-message__og-tag__emoji-reactions--wrapper:focus {
+ outline: none; }
+ .sendbird-outgoing-og-message__og-tag__emoji-reactions {
+ margin: 8px -12px -12px -12px;
+ width: 320px; }
+ .sendbird-theme--light .sendbird-outgoing-og-message__og-tag__emoji-reactions {
+ border: 1px solid var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-outgoing-og-message__og-tag__emoji-reactions {
+ border: 1px solid var(--sendbird-dark-background-500); }
+ .sendbird-outgoing-og-message__og-tag__emoji-reactions:hover {
+ cursor: default; }
+ .sendbird-outgoing-og-message__og-tag__emoji-reactions:focus {
+ outline: none; }
+ .sendbird-outgoing-og-message__og-tag:hover {
+ cursor: pointer; }
+ .sendbird-outgoing-og-message__og-tag:focus {
+ outline: none; }
+
+.sendbird-og-message-word {
+ display: inline;
+ margin: 0px 2px; }
+
+.sendbird-incoming-og-message {
+ position: relative;
+ left: 0px;
+ display: inline-block;
+ box-sizing: border-box;
+ text-align: left;
+ padding-left: 40px; }
+ .sendbird-theme--light .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
+ background-color: var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
+ background-color: var(--sendbird-dark-background-400); }
+ .sendbird-theme--light .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
+ border: 1px solid var(--sendbird-light-background-200); }
+ .sendbird-theme--dark .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
+ border: 1px solid var(--sendbird-dark-background-400); }
+ .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__more {
+ display: block; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner {
+ position: relative;
+ display: flex;
+ flex-direction: row; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body {
+ position: relative; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__avatar {
+ position: absolute;
+ bottom: 4px;
+ left: -40px;
+ cursor: pointer; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__sender-name {
+ margin-left: 12px; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
+ box-sizing: border-box;
+ max-width: 320px;
+ padding: 8px 12px;
+ border-radius: 16px 16px 0px 0px;
+ word-break: break-all;
+ text-align: left; }
+ .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail--disabled:hover {
+ cursor: not-allowed !important; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail {
+ box-sizing: border-box;
+ width: 320px; }
+ .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail .sendbird-incoming-og-message__thumbnail__image__placeholder {
+ width: 320px;
+ height: 160px;
+ display: flex;
+ justify-content: center;
+ align-items: center; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail:hover {
+ cursor: pointer; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail:focus {
+ outline: none; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag--disabled:hover {
+ cursor: not-allowed !important; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
+ padding: 8px 12px 12px 12px;
+ border-radius: 0px 0px 16px 16px;
+ text-align: left;
+ box-sizing: border-box;
+ width: 320px; }
+ .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
+ background-color: var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
+ background-color: var(--sendbird-dark-background-500); }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__title {
+ max-height: 150px;
+ overflow-y: hidden;
+ margin-bottom: 4px; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__description {
+ margin-bottom: 8px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__url .sendbird-incoming-og-message__og-tag__url__label {
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ display: inline-block;
+ width: 296px; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper:focus {
+ outline: none; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
+ margin: 8px -12px -12px -12px; }
+ .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
+ border: 1px solid var(--sendbird-light-background-100); }
+ .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
+ border: 1px solid var(--sendbird-dark-background-500); }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions:hover {
+ cursor: default; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions:focus {
+ outline: none; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding {
+ position: relative;
+ width: 68px; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__sent-at {
+ position: absolute;
+ bottom: 4px;
+ left: 4px; }
+ .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__more {
+ position: absolute;
+ top: 18px;
+ left: 4px;
+ display: none; }
+
+@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600,700&display=swap");
+:root {
+ --sendbird-light-primary-500: #4d2aa6;
+ --sendbird-light-primary-400: #6440C4;
+ --sendbird-light-primary-300: #7B53EF;
+ --sendbird-light-primary-200: #9E8CF5;
+ --sendbird-light-primary-100: #E2DFFF;
+ --sendbird-light-secondary-500: #007A7A;
+ --sendbird-light-secondary-400: #189A8D;
+ --sendbird-light-secondary-300: #2EBA9F;
+ --sendbird-light-secondary-200: #6FD6BE;
+ --sendbird-light-secondary-100: #AEF2DC;
+ --sendbird-light-information-100: #b2d9ff;
+ --sendbird-light-error-500: #A30E2D;
+ --sendbird-light-error-400: #C11F41;
+ --sendbird-light-error-300: #E53157;
+ --sendbird-light-error-200: #FF6183;
+ --sendbird-light-error-100: #FFABBD;
+ --sendbird-light-background-700: #000000;
+ --sendbird-light-background-600: #161616;
+ --sendbird-light-background-500: #2C2C2C;
+ --sendbird-light-background-400: #393939;
+ --sendbird-light-background-300: #A8A8A8;
+ --sendbird-light-background-200: #D9D9D9;
+ --sendbird-light-background-100: #F0F0F0;
+ --sendbird-light-background-50: #FFFFFF;
+ --sendbird-light-overlay: rgba(0, 0, 0, 0.32);
+ --sendbird-light-onlight-01: rgba(0, 0, 0, 0.88);
+ --sendbird-light-onlight-02: rgba(0, 0, 0, 0.50);
+ --sendbird-light-onlight-03: rgba(0, 0, 0, 0.38);
+ --sendbird-light-onlight-04: rgba(0, 0, 0, 0.12);
+ --sendbird-light-ondark-01: rgba(255, 255, 255, 0.88);
+ --sendbird-light-ondark-02: rgba(255, 255, 255, 0.50);
+ --sendbird-light-ondark-03: rgba(255, 255, 255, 0.38);
+ --sendbird-light-ondark-04: rgba(255, 255, 255, 0.12);
+ --sendbird-light-shadow-01: 0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12);
+ --sendbird-light-shadow-02: 0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12);
+ --sendbird-light-shadow-03: 0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12);
+ --sendbird-light-shadow-04: 0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12);
+ --sendbird-light-shadow-message-input: 0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+ --sendbird-light-theme-surface-2: #EAEAEA; }
+
+:root {
+ --sendbird-dark-primary-500: #4d2aa6;
+ --sendbird-dark-primary-400: #6440C4;
+ --sendbird-dark-primary-300: #7B53EF;
+ --sendbird-dark-primary-200: #9E8CF5;
+ --sendbird-dark-primary-100: #E2DFFF;
+ --sendbird-dark-secondary-500: #007A7A;
+ --sendbird-dark-secondary-400: #189A8D;
+ --sendbird-dark-secondary-300: #2EBA9F;
+ --sendbird-dark-secondary-200: #6FD6BE;
+ --sendbird-dark-secondary-100: #AEF2DC;
+ --sendbird-dark-information-100: #b2d9ff;
+ --sendbird-dark-error-500: #A30E2D;
+ --sendbird-dark-error-400: #C11F41;
+ --sendbird-dark-error-300: #E53157;
+ --sendbird-dark-error-200: #FF6183;
+ --sendbird-dark-error-100: #FFABBD;
+ --sendbird-dark-background-700: #000000;
+ --sendbird-dark-background-600: #161616;
+ --sendbird-dark-background-500: #2C2C2C;
+ --sendbird-dark-background-400: #393939;
+ --sendbird-dark-background-300: #A8A8A8;
+ --sendbird-dark-background-200: #D9D9D9;
+ --sendbird-dark-background-100: #F0F0F0;
+ --sendbird-dark-background-50: #FFFFFF;
+ --sendbird-dark-overlay: rgba(0, 0, 0, 0.32);
+ --sendbird-dark-onlight-01: rgba(0, 0, 0, 0.88);
+ --sendbird-dark-onlight-02: rgba(0, 0, 0, 0.50);
+ --sendbird-dark-onlight-03: rgba(0, 0, 0, 0.38);
+ --sendbird-dark-onlight-04: rgba(0, 0, 0, 0.12);
+ --sendbird-dark-ondark-01: rgba(255, 255, 255, 0.88);
+ --sendbird-dark-ondark-02: rgba(255, 255, 255, 0.50);
+ --sendbird-dark-ondark-03: rgba(255, 255, 255, 0.38);
+ --sendbird-dark-ondark-04: rgba(255, 255, 255, 0.12);
+ --sendbird-dark-shadow-01: 0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12);
+ --sendbird-dark-shadow-02: 0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12);
+ --sendbird-dark-shadow-03: 0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12);
+ --sendbird-dark-shadow-04: 0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12);
+ --sendbird-dark-shadow-message-input: 0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12); }
+
+:root {
+ --sendbird-iconbutton-color: #825eeb;
+ --sendbird-message-input-border-active: #7B53EF;
+ --sendbird-selected-reaction-button-border-hover: #9E8CF5;
+ --sendbird-add-reaction-button-border-hover: #9E8CF5;
+ --sendbird-tooltip-background: #000000;
+ --sendbird-tooltip-text-color: rgba(255, 255, 255, 0.88);
+ --sendbird-button-border-focus: #FFFFFF;
+ --sendbird-file-message-icon-background: #FFFFFF;
+ --sendbird-font-family-default: 'Open Sans', sans-serif;
+ --sendbird-message-balloon-width: 404px; }
-/*# sourceMappingURL=index.css.map */
\ No newline at end of file
+/*# sourceMappingURL=../index.css.map */
\ No newline at end of file
diff --git a/dist/index.css.map b/dist/index.css.map
index 6d3d75f..4ff4579 100644
--- a/dist/index.css.map
+++ b/dist/index.css.map
@@ -1 +1 @@
-{"version":3,"sources":["index.scss","color.scss","add-channel.scss","muted-avatar-overlay.scss","conversation-scroll.scss","notification.scss","channel-profile.scss","members-accordion.scss","user-list-item.scss"],"names":[],"mappings":"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","file":"index.css","sourcesContent":[".sendbird-app__wrap {\n width: 100%;\n height: 100%;\n display: flex; }\n .sendbird-app__wrap .sendbird-app__conversation-wrap {\n flex: 1;\n position: relative; }\n .sendbird-app__wrap .sendbird-app__channellist-wrap {\n max-width: 320px; }\n .sendbird-theme--light .sendbird-app__wrap .sendbird-app__conversation--settings-open .sendbird-chat-header__info {\n background-color: var(--sendbird-light-primary-100); }\n .sendbird-theme--dark .sendbird-app__wrap .sendbird-app__conversation--settings-open .sendbird-chat-header__info {\n background-color: var(--sendbird-dark-background-700); }\n .sendbird-app__wrap .sendbird-channel-settings {\n border-left: none; }\n .sendbird-app__wrap .sendbird-channel-settings .sendbird-channel-settings__header {\n height: 65px; }\n",".sendbird-theme--light .sendbird-color--onbackground-1 {\n color: var(--sendbird-light-onlight-01); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-1 {\n color: var(--sendbird-dark-ondark-01); }\n\n.sendbird-theme--light .sendbird-color--onbackground-1--background-color {\n background-color: var(--sendbird-light-onlight-01); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-1--background-color {\n background-color: var(--sendbird-dark-ondark-01); }\n\n.sendbird-theme--light .sendbird-color--onbackground-2 {\n color: var(--sendbird-light-onlight-02); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-2 {\n color: var(--sendbird-dark-ondark-02); }\n\n.sendbird-theme--light .sendbird-color--onbackground-2--background-color {\n background-color: var(--sendbird-light-onlight-02); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-2--background-color {\n background-color: var(--sendbird-dark-ondark-02); }\n\n.sendbird-theme--light .sendbird-color--onbackground-3 {\n color: var(--sendbird-light-onlight-03); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-3 {\n color: var(--sendbird-dark-ondark-03); }\n\n.sendbird-theme--light .sendbird-color--onbackground-3--background-color {\n background-color: var(--sendbird-light-onlight-03); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-3--background-color {\n background-color: var(--sendbird-dark-ondark-03); }\n\n.sendbird-theme--light .sendbird-color--onbackground-4 {\n color: var(--sendbird-light-onlight-04); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-4 {\n color: var(--sendbird-dark-ondark-04); }\n\n.sendbird-theme--light .sendbird-color--onbackground-4--background-color {\n background-color: var(--sendbird-light-onlight-04); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-4--background-color {\n background-color: var(--sendbird-dark-ondark-04); }\n\n.sendbird-theme--light .sendbird-color--oncontent-1 {\n color: var(--sendbird-light-ondark-01); }\n\n.sendbird-theme--dark .sendbird-color--oncontent-1 {\n color: var(--sendbird-dark-onlight-01); }\n\n.sendbird-theme--light .sendbird-color--oncontent-1--background-color {\n background-color: var(--sendbird-light-ondark-01); }\n\n.sendbird-theme--dark .sendbird-color--oncontent-1--background-color {\n background-color: var(--sendbird-dark-onlight-01); }\n\n.sendbird-theme--light .sendbird-color--primary {\n color: var(--sendbird-light-primary-300); }\n\n.sendbird-theme--dark .sendbird-color--primary {\n color: var(--sendbird-dark-primary-200); }\n\n.sendbird-theme--light .sendbird-color--primary--background-color {\n background-color: var(--sendbird-light-primary-300); }\n\n.sendbird-theme--dark .sendbird-color--primary--background-color {\n background-color: var(--sendbird-dark-primary-200); }\n\n.sendbird-theme--light .sendbird-color--error {\n color: var(--sendbird-light-error-300); }\n\n.sendbird-theme--dark .sendbird-color--error {\n color: var(--sendbird-dark-error-300); }\n\n.sendbird-theme--light .sendbird-color--error--background-color {\n background-color: var(--sendbird-light-error-300); }\n\n.sendbird-theme--dark .sendbird-color--error--background-color {\n background-color: var(--sendbird-dark-error-300); }\n",".sendbird-add-channel__rectangle-wrap {\n margin-top: 26px; }\n\n.sendbird-add-channel__rectangle-footer {\n text-align: right;\n margin-top: 32px; }\n\n.sendbird-add-channel__rectangle {\n width: 432px;\n height: 72px;\n border-radius: 4px;\n margin-bottom: 8px;\n padding: 25px 72px;\n position: relative;\n box-sizing: border-box;\n cursor: pointer; }\n .sendbird-theme--light .sendbird-add-channel__rectangle {\n border: 1px solid var(--sendbird-light-onlight-04); }\n .sendbird-theme--dark .sendbird-add-channel__rectangle {\n border: 1px solid var(--sendbird-dark-ondark-04); }\n .sendbird-add-channel__rectangle .sendbird-icon {\n position: absolute;\n left: 22px;\n top: 24px; }\n",".sendbird-muted-avatar {\n border-radius: 50%;\n display: inline-block; }\n .sendbird-muted-avatar .sendbird-muted-avatar__icon {\n position: relative; }\n .sendbird-muted-avatar .sendbird-muted-avatar__icon .sendbird-icon {\n position: absolute;\n top: 4px;\n left: 4px; }\n .sendbird-muted-avatar .sendbird-muted-avatar__bg {\n opacity: .5;\n position: absolute;\n border-radius: 50%;\n top: 0;\n left: 0; }\n .sendbird-theme--light .sendbird-muted-avatar .sendbird-muted-avatar__bg {\n background-color: var(--sendbird-light-primary-400); }\n .sendbird-theme--dark .sendbird-muted-avatar .sendbird-muted-avatar__bg {\n background-color: var(--sendbird-dark-primary-300); }\n",".sendbird-conversation__messages .sendbird-conversation__messages-padding {\n padding-left: 24px;\n padding-right: 24px; }\n\n.sendbird-conversation__messages .sendbird-separator,\n.sendbird-conversation__messages .sendbird-admin-message {\n padding-top: 8px;\n padding-bottom: 8px; }\n",".sendbird-notification {\n margin-top: 8px;\n margin-left: 24px;\n margin-right: 24px;\n border-radius: 4px;\n padding: 0px 2px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center; }\n .sendbird-theme--light .sendbird-notification {\n background-color: var(--sendbird-light-primary-300); }\n .sendbird-theme--dark .sendbird-notification {\n background-color: var(--sendbird-dark-primary-200); }\n .sendbird-notification:hover {\n cursor: pointer; }\n .sendbird-theme--light .sendbird-notification:hover {\n background-color: var(--sendbird-light-primary-400); }\n .sendbird-theme--dark .sendbird-notification:hover {\n background-color: var(--sendbird-dark-primary-300); }\n .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen {\n background-color: var(--sendbird-light-information-100); }\n .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen {\n background-color: var(--sendbird-dark-information-100); }\n .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {\n color: var(--sendbird-light-onlight-01); }\n .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {\n color: var(--sendbird-dark-onlight-01); }\n .sendbird-notification .sendbird-notification__text {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px; }\n",".sendbird-channel-profile {\n position: relative;\n text-align: center;\n padding: 32px 40px 27px 40px; }\n .sendbird-theme--light .sendbird-channel-profile {\n border-bottom: 1px solid var(--sendbird-light-onlight-04);\n background-color: var(--sendbird-light-background-50); }\n .sendbird-theme--dark .sendbird-channel-profile {\n border-bottom: 1px solid var(--sendbird-dark-ondark-04);\n background-color: var(--sendbird-dark-background-600); }\n .sendbird-channel-profile .sendbird-channel-profile--inner {\n height: 92px; }\n .sendbird-channel-profile .sendbird-channel-profile__avatar {\n margin-bottom: 16px;\n text-align: center; }\n .sendbird-channel-profile .sendbird-channel-profile__title {\n max-width: 240px;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n height: 18px; }\n .sendbird-channel-profile .sendbird-channel-profile__edit {\n position: absolute;\n top: 10px;\n right: 16px; }\n\n.channel-profile-form .channel-profile-form__img-section {\n position: relative; }\n\n.channel-profile-form .channel-profile-form__avatar-button {\n position: absolute;\n top: 54px;\n left: 96px; }\n\n.channel-profile-form .channel-profile-form__avatar {\n margin-top: 16px; }\n\n.channel-profile-form .channel-profile-form__name-section {\n margin-top: 12px; }\n .channel-profile-form .channel-profile-form__name-section .sendbird-input {\n height: 40px; }\n",".sendbird-members-accordion {\n padding: 8px 16px 16px 16px;\n position: relative;\n box-sizing: border-box; }\n .sendbird-theme--light .sendbird-members-accordion {\n border-bottom: 1px solid var(--sendbird-light-onlight-04);\n background-color: var(--sendbird-light-background-50); }\n .sendbird-theme--dark .sendbird-members-accordion {\n border-bottom: 1px solid var(--sendbird-dark-ondark-04);\n background-color: var(--sendbird-dark-background-600); }\n .sendbird-members-accordion .sendbird-members-accordion__member {\n position: relative;\n padding: 12px 0px 12px 44px;\n height: 40px;\n box-sizing: border-box; }\n .sendbird-members-accordion .sendbird-members-accordion__member .sendbird-label {\n max-width: 240px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .sendbird-members-accordion .sendbird-members-accordion__member-avatar {\n position: absolute;\n left: 0;\n top: 10px;\n cursor: pointer; }\n .sendbird-members-accordion .sendbird-members-accordion__footer {\n display: flex;\n justify-content: flex-start;\n margin-top: 8px; }\n .sendbird-members-accordion .sendbird-members-accordion__footer .sendbird-members-accordion__footer__all-members {\n margin-right: 16px; }\n\n.sendbird-more-members__popup-scroll {\n max-height: 420px;\n overflow-y: auto; }\n",".sendbird-user-list-item--small {\n display: block;\n position: relative;\n box-sizing: border-box;\n height: 40px; }\n .sendbird-user-list-item--small__avatar {\n cursor: pointer;\n position: absolute;\n top: 10px;\n left: 12px; }\n .sendbird-user-list-item--small .sendbird-muted-avatar {\n position: absolute;\n top: 10px;\n left: 12px;\n z-index: 2;\n pointer-events: none; }\n .sendbird-user-list-item--small__title {\n position: absolute;\n top: 10px;\n left: 54px;\n width: 160px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .sendbird-user-list-item--small__subtitle {\n position: absolute;\n top: 23px;\n left: 140px;\n max-width: 237px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .sendbird-user-list-item--small__checkbox {\n position: absolute;\n top: 16px;\n right: 16px; }\n .sendbird-user-list-item--small__action {\n display: none;\n position: absolute;\n right: 10px;\n top: 4px; }\n .sendbird-user-list-item--small__operator {\n position: absolute;\n right: 24px;\n top: 10px; }\n .sendbird-theme--light .sendbird-user-list-item--small:hover, .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed {\n background-color: var(--sendbird-light-background-100); }\n .sendbird-theme--dark .sendbird-user-list-item--small:hover, .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed {\n background-color: var(--sendbird-dark-background-500); }\n .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__action, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__action {\n display: block; }\n .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__operator, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__operator {\n display: none; }\n .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {\n background-color: var(--sendbird-light-primary-100); }\n .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {\n background-color: var(--sendbird-dark-background-700); }\n"]}
\ No newline at end of file
+{"version":3,"sources":["index.scss","frozen-notification.scss","openchannel-conversation-scroll.scss","channel-profile.scss","muted-avatar-overlay.scss","user-list-item.scss","notification.scss","members-accordion.scss","add-channel.scss","conversation-scroll.scss","color.scss"],"names":[],"mappings":"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","file":"../index.css","sourcesContent":["@import url(\"https://fonts.googleapis.com/css?family=Open+Sans:400,600,700&display=swap\");\n:root {\n --sendbird-light-primary-500: #4d2aa6;\n --sendbird-light-primary-400: #6440C4;\n --sendbird-light-primary-300: #7B53EF;\n --sendbird-light-primary-200: #9E8CF5;\n --sendbird-light-primary-100: #E2DFFF;\n --sendbird-light-secondary-500: #007A7A;\n --sendbird-light-secondary-400: #189A8D;\n --sendbird-light-secondary-300: #2EBA9F;\n --sendbird-light-secondary-200: #6FD6BE;\n --sendbird-light-secondary-100: #AEF2DC;\n --sendbird-light-information-100: #b2d9ff;\n --sendbird-light-error-500: #A30E2D;\n --sendbird-light-error-400: #C11F41;\n --sendbird-light-error-300: #E53157;\n --sendbird-light-error-200: #FF6183;\n --sendbird-light-error-100: #FFABBD;\n --sendbird-light-background-700: #000000;\n --sendbird-light-background-600: #161616;\n --sendbird-light-background-500: #2C2C2C;\n --sendbird-light-background-400: #393939;\n --sendbird-light-background-300: #A8A8A8;\n --sendbird-light-background-200: #D9D9D9;\n --sendbird-light-background-100: #F0F0F0;\n --sendbird-light-background-50: #FFFFFF;\n --sendbird-light-overlay: rgba(0, 0, 0, 0.32);\n --sendbird-light-onlight-01: rgba(0, 0, 0, 0.88);\n --sendbird-light-onlight-02: rgba(0, 0, 0, 0.50);\n --sendbird-light-onlight-03: rgba(0, 0, 0, 0.38);\n --sendbird-light-onlight-04: rgba(0, 0, 0, 0.12);\n --sendbird-light-ondark-01: rgba(255, 255, 255, 0.88);\n --sendbird-light-ondark-02: rgba(255, 255, 255, 0.50);\n --sendbird-light-ondark-03: rgba(255, 255, 255, 0.38);\n --sendbird-light-ondark-04: rgba(255, 255, 255, 0.12);\n --sendbird-light-shadow-01: 0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12);\n --sendbird-light-shadow-02: 0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12);\n --sendbird-light-shadow-03: 0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12);\n --sendbird-light-shadow-04: 0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12);\n --sendbird-light-shadow-message-input: 0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n --sendbird-light-theme-surface-2: #EAEAEA; }\n\n:root {\n --sendbird-dark-primary-500: #4d2aa6;\n --sendbird-dark-primary-400: #6440C4;\n --sendbird-dark-primary-300: #7B53EF;\n --sendbird-dark-primary-200: #9E8CF5;\n --sendbird-dark-primary-100: #E2DFFF;\n --sendbird-dark-secondary-500: #007A7A;\n --sendbird-dark-secondary-400: #189A8D;\n --sendbird-dark-secondary-300: #2EBA9F;\n --sendbird-dark-secondary-200: #6FD6BE;\n --sendbird-dark-secondary-100: #AEF2DC;\n --sendbird-dark-information-100: #b2d9ff;\n --sendbird-dark-error-500: #A30E2D;\n --sendbird-dark-error-400: #C11F41;\n --sendbird-dark-error-300: #E53157;\n --sendbird-dark-error-200: #FF6183;\n --sendbird-dark-error-100: #FFABBD;\n --sendbird-dark-background-700: #000000;\n --sendbird-dark-background-600: #161616;\n --sendbird-dark-background-500: #2C2C2C;\n --sendbird-dark-background-400: #393939;\n --sendbird-dark-background-300: #A8A8A8;\n --sendbird-dark-background-200: #D9D9D9;\n --sendbird-dark-background-100: #F0F0F0;\n --sendbird-dark-background-50: #FFFFFF;\n --sendbird-dark-overlay: rgba(0, 0, 0, 0.32);\n --sendbird-dark-onlight-01: rgba(0, 0, 0, 0.88);\n --sendbird-dark-onlight-02: rgba(0, 0, 0, 0.50);\n --sendbird-dark-onlight-03: rgba(0, 0, 0, 0.38);\n --sendbird-dark-onlight-04: rgba(0, 0, 0, 0.12);\n --sendbird-dark-ondark-01: rgba(255, 255, 255, 0.88);\n --sendbird-dark-ondark-02: rgba(255, 255, 255, 0.50);\n --sendbird-dark-ondark-03: rgba(255, 255, 255, 0.38);\n --sendbird-dark-ondark-04: rgba(255, 255, 255, 0.12);\n --sendbird-dark-shadow-01: 0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12);\n --sendbird-dark-shadow-02: 0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12);\n --sendbird-dark-shadow-03: 0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12);\n --sendbird-dark-shadow-04: 0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12);\n --sendbird-dark-shadow-message-input: 0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12); }\n\n:root {\n --sendbird-iconbutton-color: #825eeb;\n --sendbird-message-input-border-active: #7B53EF;\n --sendbird-selected-reaction-button-border-hover: #9E8CF5;\n --sendbird-add-reaction-button-border-hover: #9E8CF5;\n --sendbird-tooltip-background: #000000;\n --sendbird-tooltip-text-color: rgba(255, 255, 255, 0.88);\n --sendbird-button-border-focus: #FFFFFF;\n --sendbird-file-message-icon-background: #FFFFFF;\n --sendbird-font-family-default: 'Open Sans', sans-serif;\n --sendbird-message-balloon-width: 404px; }\n",".sendbird-frozen-channel-notification {\n position: relative;\n margin-top: 8px;\n margin-right: 24px;\n margin-left: 24px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px; }\n .sendbird-theme--light .sendbird-frozen-channel-notification {\n background-color: var(--sendbird-light-information-100); }\n .sendbird-theme--dark .sendbird-frozen-channel-notification {\n background-color: var(--sendbird-dark-information-100); }\n",".sendbird-openchannel-conversation-scroll {\n position: relative;\n width: 100%; }\n .sendbird-openchannel-conversation-scroll .sendbird-openchannel-conversation-scroll__container {\n position: absolute;\n width: 100%; }\n .sendbird-openchannel-conversation-scroll .sendbird-openchannel-conversation-scroll__container .sendbird-openchannel-conversation-scroll__container__padding {\n height: 8px; }\n",".sendbird-channel-profile {\n position: relative;\n text-align: center;\n padding: 32px 40px 27px 40px; }\n .sendbird-theme--light .sendbird-channel-profile {\n border-bottom: 1px solid var(--sendbird-light-onlight-04);\n background-color: var(--sendbird-light-background-50); }\n .sendbird-theme--dark .sendbird-channel-profile {\n border-bottom: 1px solid var(--sendbird-dark-ondark-04);\n background-color: var(--sendbird-dark-background-600); }\n .sendbird-channel-profile .sendbird-channel-profile--inner {\n height: 92px; }\n .sendbird-channel-profile .sendbird-channel-profile__avatar {\n margin-bottom: 16px;\n text-align: center; }\n .sendbird-channel-profile .sendbird-channel-profile__title {\n max-width: 240px;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n height: 18px; }\n .sendbird-channel-profile .sendbird-channel-profile__edit {\n position: absolute;\n top: 10px;\n right: 16px; }\n\n.channel-profile-form .channel-profile-form__img-section {\n position: relative; }\n\n.channel-profile-form .channel-profile-form__avatar-button {\n position: absolute;\n top: 54px;\n left: 96px; }\n\n.channel-profile-form .channel-profile-form__avatar {\n margin-top: 16px; }\n\n.channel-profile-form .channel-profile-form__name-section {\n margin-top: 12px; }\n .channel-profile-form .channel-profile-form__name-section .sendbird-input {\n height: 40px; }\n",".sendbird-muted-avatar {\n border-radius: 50%;\n display: inline-block; }\n .sendbird-muted-avatar .sendbird-muted-avatar__icon {\n position: relative; }\n .sendbird-muted-avatar .sendbird-muted-avatar__icon .sendbird-icon {\n position: absolute;\n top: 4px;\n left: 4px; }\n .sendbird-muted-avatar .sendbird-muted-avatar__bg {\n opacity: .5;\n position: absolute;\n border-radius: 50%;\n top: 0;\n left: 0; }\n .sendbird-theme--light .sendbird-muted-avatar .sendbird-muted-avatar__bg {\n background-color: var(--sendbird-light-primary-400); }\n .sendbird-theme--dark .sendbird-muted-avatar .sendbird-muted-avatar__bg {\n background-color: var(--sendbird-dark-primary-300); }\n",".sendbird-user-list-item--small {\n display: block;\n position: relative;\n box-sizing: border-box;\n height: 40px; }\n .sendbird-user-list-item--small__avatar {\n cursor: pointer;\n position: absolute;\n top: 10px;\n left: 12px; }\n .sendbird-user-list-item--small .sendbird-muted-avatar {\n position: absolute;\n top: 10px;\n left: 12px;\n z-index: 2;\n pointer-events: none; }\n .sendbird-user-list-item--small__title {\n position: absolute;\n top: 10px;\n left: 54px;\n width: 160px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .sendbird-user-list-item--small__subtitle {\n position: absolute;\n top: 23px;\n left: 140px;\n max-width: 237px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .sendbird-user-list-item--small__checkbox {\n position: absolute;\n top: 16px;\n right: 16px; }\n .sendbird-user-list-item--small__action {\n display: none;\n position: absolute;\n right: 10px;\n top: 4px; }\n .sendbird-user-list-item--small__operator {\n position: absolute;\n right: 24px;\n top: 10px; }\n .sendbird-theme--light .sendbird-user-list-item--small:hover, .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed {\n background-color: var(--sendbird-light-background-100); }\n .sendbird-theme--dark .sendbird-user-list-item--small:hover, .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed {\n background-color: var(--sendbird-dark-background-500); }\n .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__action, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__action {\n display: block; }\n .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__operator, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__operator {\n display: none; }\n .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {\n background-color: var(--sendbird-light-primary-100); }\n .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {\n background-color: var(--sendbird-dark-background-700); }\n",".sendbird-notification {\n margin-top: 8px;\n margin-left: 24px;\n margin-right: 24px;\n border-radius: 4px;\n padding: 0px 2px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center; }\n .sendbird-theme--light .sendbird-notification {\n background-color: var(--sendbird-light-primary-300); }\n .sendbird-theme--dark .sendbird-notification {\n background-color: var(--sendbird-dark-primary-200); }\n .sendbird-notification:hover {\n cursor: pointer; }\n .sendbird-theme--light .sendbird-notification:hover {\n background-color: var(--sendbird-light-primary-400); }\n .sendbird-theme--dark .sendbird-notification:hover {\n background-color: var(--sendbird-dark-primary-300); }\n .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen {\n background-color: var(--sendbird-light-information-100); }\n .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen {\n background-color: var(--sendbird-dark-information-100); }\n .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {\n color: var(--sendbird-light-onlight-01); }\n .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {\n color: var(--sendbird-dark-onlight-01); }\n .sendbird-notification .sendbird-notification__text {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px; }\n",".sendbird-members-accordion {\n padding: 8px 16px 16px 16px;\n position: relative;\n box-sizing: border-box; }\n .sendbird-theme--light .sendbird-members-accordion {\n border-bottom: 1px solid var(--sendbird-light-onlight-04);\n background-color: var(--sendbird-light-background-50); }\n .sendbird-theme--dark .sendbird-members-accordion {\n border-bottom: 1px solid var(--sendbird-dark-ondark-04);\n background-color: var(--sendbird-dark-background-600); }\n .sendbird-members-accordion .sendbird-members-accordion__member {\n position: relative;\n padding: 12px 0px 12px 44px;\n height: 40px;\n box-sizing: border-box; }\n .sendbird-members-accordion .sendbird-members-accordion__member .sendbird-label {\n max-width: 240px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .sendbird-members-accordion .sendbird-members-accordion__member-avatar {\n position: absolute;\n left: 0;\n top: 10px;\n cursor: pointer; }\n .sendbird-members-accordion .sendbird-members-accordion__footer {\n display: flex;\n justify-content: flex-start;\n margin-top: 8px; }\n .sendbird-members-accordion .sendbird-members-accordion__footer .sendbird-members-accordion__footer__all-members {\n margin-right: 16px; }\n\n.sendbird-more-members__popup-scroll {\n max-height: 420px;\n overflow-y: auto; }\n",".sendbird-add-channel__rectangle-wrap {\n margin-top: 26px; }\n\n.sendbird-add-channel__rectangle-footer {\n text-align: right;\n margin-top: 32px; }\n\n.sendbird-add-channel__rectangle {\n width: 432px;\n height: 72px;\n border-radius: 4px;\n margin-bottom: 8px;\n padding: 25px 72px;\n position: relative;\n box-sizing: border-box;\n cursor: pointer; }\n .sendbird-theme--light .sendbird-add-channel__rectangle {\n border: 1px solid var(--sendbird-light-onlight-04); }\n .sendbird-theme--dark .sendbird-add-channel__rectangle {\n border: 1px solid var(--sendbird-dark-ondark-04); }\n .sendbird-add-channel__rectangle .sendbird-icon {\n position: absolute;\n left: 22px;\n top: 24px; }\n",".sendbird-conversation__messages .sendbird-conversation__messages-padding {\n padding-left: 24px;\n padding-right: 24px; }\n\n.sendbird-conversation__messages .sendbird-separator,\n.sendbird-conversation__messages .sendbird-admin-message {\n padding-top: 8px;\n padding-bottom: 8px; }\n",".sendbird-theme--light .sendbird-color--onbackground-1 {\n color: var(--sendbird-light-onlight-01); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-1 {\n color: var(--sendbird-dark-ondark-01); }\n\n.sendbird-theme--light .sendbird-color--onbackground-1--background-color {\n background-color: var(--sendbird-light-onlight-01); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-1--background-color {\n background-color: var(--sendbird-dark-ondark-01); }\n\n.sendbird-theme--light .sendbird-color--onbackground-2 {\n color: var(--sendbird-light-onlight-02); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-2 {\n color: var(--sendbird-dark-ondark-02); }\n\n.sendbird-theme--light .sendbird-color--onbackground-2--background-color {\n background-color: var(--sendbird-light-onlight-02); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-2--background-color {\n background-color: var(--sendbird-dark-ondark-02); }\n\n.sendbird-theme--light .sendbird-color--onbackground-3 {\n color: var(--sendbird-light-onlight-03); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-3 {\n color: var(--sendbird-dark-ondark-03); }\n\n.sendbird-theme--light .sendbird-color--onbackground-3--background-color {\n background-color: var(--sendbird-light-onlight-03); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-3--background-color {\n background-color: var(--sendbird-dark-ondark-03); }\n\n.sendbird-theme--light .sendbird-color--onbackground-4 {\n color: var(--sendbird-light-onlight-04); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-4 {\n color: var(--sendbird-dark-ondark-04); }\n\n.sendbird-theme--light .sendbird-color--onbackground-4--background-color {\n background-color: var(--sendbird-light-onlight-04); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-4--background-color {\n background-color: var(--sendbird-dark-ondark-04); }\n\n.sendbird-theme--light .sendbird-color--oncontent-1 {\n color: var(--sendbird-light-ondark-01); }\n\n.sendbird-theme--dark .sendbird-color--oncontent-1 {\n color: var(--sendbird-dark-onlight-01); }\n\n.sendbird-theme--light .sendbird-color--oncontent-1--background-color {\n background-color: var(--sendbird-light-ondark-01); }\n\n.sendbird-theme--dark .sendbird-color--oncontent-1--background-color {\n background-color: var(--sendbird-dark-onlight-01); }\n\n.sendbird-theme--light .sendbird-color--primary {\n color: var(--sendbird-light-primary-300); }\n\n.sendbird-theme--dark .sendbird-color--primary {\n color: var(--sendbird-dark-primary-200); }\n\n.sendbird-theme--light .sendbird-color--primary--background-color {\n background-color: var(--sendbird-light-primary-300); }\n\n.sendbird-theme--dark .sendbird-color--primary--background-color {\n background-color: var(--sendbird-dark-primary-200); }\n\n.sendbird-theme--light .sendbird-color--error {\n color: var(--sendbird-light-error-300); }\n\n.sendbird-theme--dark .sendbird-color--error {\n color: var(--sendbird-dark-error-300); }\n\n.sendbird-theme--light .sendbird-color--error--background-color {\n background-color: var(--sendbird-light-error-300); }\n\n.sendbird-theme--dark .sendbird-color--error--background-color {\n background-color: var(--sendbird-dark-error-300); }\n"]}
\ No newline at end of file
diff --git a/dist/index.d.ts b/dist/index.d.ts
index d8224a4..2572348 100644
--- a/dist/index.d.ts
+++ b/dist/index.d.ts
@@ -13,10 +13,17 @@ export const sendBirdSelectors: sendBirdSelectorsInterface;
export const ChannelSettings: React.FunctionComponent
export const ChannelList: React.FunctionComponent
export const Channel: React.FunctionComponent
+export const OpenChannel: React.FunctionComponent
+export const OpenChannelSettings: React.FunctionComponent
export function withSendBird (
ChildComp: React.Component | React.ElementType,
mapStoreToProps?: (store: SendBirdState) => unknown
-): React.ComponentType;
+): (props: unknown) => React.ReactNode;
+
+interface ExtendedSendBirdInstance extends Sendbird.SendBirdInstance {
+ MessageListParams: SendBird.MessageListParams;
+}
+
export type SendBirdState = {
config: SendBirdStateConfig;
stores: SendBirdStateStore;
@@ -64,9 +71,45 @@ export namespace SendBirdSelectors {
}
export function getStringSet(lang?: string): {[label: string]: string}
+export type Logger = {
+ info?(title?: unknown, description?: unknown): void;
+ error?(title?: unknown, description?: unknown): void;
+ warning?(title?: unknown, description?: unknown): void;
+};
+
+export interface RenderOpenChannelTitleProps {
+ channel: Sendbird.OpenChannel;
+ user: Sendbird.User;
+}
+
+export interface OpenChannelProps {
+ channelUrl: string;
+ useMessageGrouping?: boolean;
+ queries?: {
+ messageListParams?: Sendbird.MessageListParams,
+ };
+ disableUserProfile?: boolean;
+ renderCustomMessage?: RenderCustomMessage;
+ renderUserProfile?(): JSX.Element;
+ renderChannelTitle?(renderProps: RenderOpenChannelTitleProps): JSX.Element;
+ renderMessageInput?(renderProps: RenderMessageInputProps): JSX.Element;
+ onBeforeSendUserMessage?(text: string): Sendbird.UserMessageParams;
+ onBeforeSendFileMessage?(file_: File): Sendbird.FileMessageParams;
+ onChatHeaderActionClick?(): void;
+}
+
+interface OpenChannelSettingsProps {
+ channelUrl: string,
+ onCloseClick?(): void;
+ onChannelModified?(channel: Sendbird.OpenChannel): void;
+ renderChannelProfile?: (props: SendbirdUIKit.RenderOpenChannelProfileProps) => React.ReactNode;
+ renderUserProfile?: (props: SendbirdUIKit.RenderUserProfileProps) => React.ReactNode;
+ disableUserProfile?: boolean;
+}
+
// to be used with Conversation.renderMessageInput
-interface RenderMessageInputProps {
- channel: Sendbird.GroupChannel;
+export interface RenderMessageInputProps {
+ channel: Sendbird.GroupChannel|Sendbird.OpenChannel;
user: Sendbird.User;
disabled: boolean;
}
@@ -82,11 +125,11 @@ interface SendBirdStateConfig {
setCurrenttheme: (theme: string) => void;
userListQuery?(): UserListQuery;
}
-interface SdkStore {
+export interface SdkStore {
error: boolean;
initialized: boolean;
loading: boolean;
- sdk: Sendbird.SendBirdInstance;
+ sdk: ExtendedSendBirdInstance;
}
interface UserStore {
initialized: boolean;
@@ -112,6 +155,10 @@ interface SendBirdProviderConfig {
interface RenderChannelProfileProps {
channel: Sendbird.GroupChannel;
}
+
+interface RenderOpenChannelProfileProps {
+ channel: Sendbird.OpenChannel;
+}
interface RenderUserProfileProps {
user: Sendbird.User | Sendbird.Member;
currentUserId: string;
@@ -239,6 +286,7 @@ interface ChannelProps {
onBeforeSendFileMessage?(file: File): Sendbird.FileMessageParams;
onBeforeUpdateUserMessage?(text: string): Sendbird.UserMessageParams;
onChatHeaderActionClick?(event: React.MouseEvent): void;
+ renderCustomMessage?: RenderCustomMessage;
renderChatItem?: (props: RenderChatItemProps) => React.ReactNode;
renderMessageInput?: (props: RenderMessageInputProps) => React.ReactNode;
renderChatHeader?: (props: RenderChatHeaderProps) => React.ReactNode;
@@ -289,3 +337,22 @@ interface AppProps {
stringSet?: Record;
colorSet?: Record;
}
+
+export type EveryMessage = ClientUserMessage|ClientFileMessage|ClientAdminMessage;
+
+export interface ClientUserMessage extends Sendbird.UserMessage, ClientMessage {}
+export interface ClientFileMessage extends Sendbird.FileMessage, ClientMessage {}
+export interface ClientAdminMessage extends Sendbird.AdminMessage, ClientMessage {}
+interface ClientMessage {
+ reqId: string;
+ file?: File;
+ localUrl?: string;
+ _sender: Sendbird.User;
+}
+
+type RenderCustomMessage = (
+ message: EveryMessage,
+ channel: Sendbird.OpenChannel | Sendbird.GroupChannel,
+) => RenderCustomMessageProps;
+
+type RenderCustomMessageProps = ({ message: EveryMessage }) => React.ReactElement;
diff --git a/dist/index.es.css b/dist/index.es.css
deleted file mode 100644
index cd930e3..0000000
--- a/dist/index.es.css
+++ /dev/null
@@ -1,3115 +0,0 @@
-@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600,700&display=swap");
-:root {
- --sendbird-light-primary-500: #4d2aa6;
- --sendbird-light-primary-400: #6440C4;
- --sendbird-light-primary-300: #7B53EF;
- --sendbird-light-primary-200: #9E8CF5;
- --sendbird-light-primary-100: #E2DFFF;
- --sendbird-light-secondary-500: #007A7A;
- --sendbird-light-secondary-400: #189A8D;
- --sendbird-light-secondary-300: #2EBA9F;
- --sendbird-light-secondary-200: #6FD6BE;
- --sendbird-light-secondary-100: #AEF2DC;
- --sendbird-light-information-100: #b2d9ff;
- --sendbird-light-error-500: #A30E2D;
- --sendbird-light-error-400: #C11F41;
- --sendbird-light-error-300: #E53157;
- --sendbird-light-error-200: #FF6183;
- --sendbird-light-error-100: #FFABBD;
- --sendbird-light-background-700: #000000;
- --sendbird-light-background-600: #161616;
- --sendbird-light-background-500: #2C2C2C;
- --sendbird-light-background-400: #393939;
- --sendbird-light-background-300: #A8A8A8;
- --sendbird-light-background-200: #D9D9D9;
- --sendbird-light-background-100: #F0F0F0;
- --sendbird-light-background-50: #FFFFFF;
- --sendbird-light-overlay: rgba(0, 0, 0, 0.32);
- --sendbird-light-onlight-01: rgba(0, 0, 0, 0.88);
- --sendbird-light-onlight-02: rgba(0, 0, 0, 0.50);
- --sendbird-light-onlight-03: rgba(0, 0, 0, 0.38);
- --sendbird-light-onlight-04: rgba(0, 0, 0, 0.12);
- --sendbird-light-ondark-01: rgba(255, 255, 255, 0.88);
- --sendbird-light-ondark-02: rgba(255, 255, 255, 0.50);
- --sendbird-light-ondark-03: rgba(255, 255, 255, 0.38);
- --sendbird-light-ondark-04: rgba(255, 255, 255, 0.12);
- --sendbird-light-shadow-01: 0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12);
- --sendbird-light-shadow-02: 0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12);
- --sendbird-light-shadow-03: 0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12);
- --sendbird-light-shadow-04: 0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12);
- --sendbird-light-shadow-message-input: 0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
- --sendbird-light-theme-surface-2: #EAEAEA; }
-
-:root {
- --sendbird-dark-primary-500: #4d2aa6;
- --sendbird-dark-primary-400: #6440C4;
- --sendbird-dark-primary-300: #7B53EF;
- --sendbird-dark-primary-200: #9E8CF5;
- --sendbird-dark-primary-100: #E2DFFF;
- --sendbird-dark-secondary-500: #007A7A;
- --sendbird-dark-secondary-400: #189A8D;
- --sendbird-dark-secondary-300: #2EBA9F;
- --sendbird-dark-secondary-200: #6FD6BE;
- --sendbird-dark-secondary-100: #AEF2DC;
- --sendbird-dark-information-100: #b2d9ff;
- --sendbird-dark-error-500: #A30E2D;
- --sendbird-dark-error-400: #C11F41;
- --sendbird-dark-error-300: #E53157;
- --sendbird-dark-error-200: #FF6183;
- --sendbird-dark-error-100: #FFABBD;
- --sendbird-dark-background-700: #000000;
- --sendbird-dark-background-600: #161616;
- --sendbird-dark-background-500: #2C2C2C;
- --sendbird-dark-background-400: #393939;
- --sendbird-dark-background-300: #A8A8A8;
- --sendbird-dark-background-200: #D9D9D9;
- --sendbird-dark-background-100: #F0F0F0;
- --sendbird-dark-background-50: #FFFFFF;
- --sendbird-dark-overlay: rgba(0, 0, 0, 0.32);
- --sendbird-dark-onlight-01: rgba(0, 0, 0, 0.88);
- --sendbird-dark-onlight-02: rgba(0, 0, 0, 0.50);
- --sendbird-dark-onlight-03: rgba(0, 0, 0, 0.38);
- --sendbird-dark-onlight-04: rgba(0, 0, 0, 0.12);
- --sendbird-dark-ondark-01: rgba(255, 255, 255, 0.88);
- --sendbird-dark-ondark-02: rgba(255, 255, 255, 0.50);
- --sendbird-dark-ondark-03: rgba(255, 255, 255, 0.38);
- --sendbird-dark-ondark-04: rgba(255, 255, 255, 0.12);
- --sendbird-dark-shadow-01: 0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12);
- --sendbird-dark-shadow-02: 0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12);
- --sendbird-dark-shadow-03: 0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12);
- --sendbird-dark-shadow-04: 0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12);
- --sendbird-dark-shadow-message-input: 0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12); }
-
-:root {
- --sendbird-iconbutton-color: #825eeb;
- --sendbird-message-input-border-active: #7B53EF;
- --sendbird-selected-reaction-button-border-hover: #9E8CF5;
- --sendbird-add-reaction-button-border-hover: #9E8CF5;
- --sendbird-tooltip-background: #000000;
- --sendbird-tooltip-text-color: rgba(255, 255, 255, 0.88);
- --sendbird-button-border-focus: #FFFFFF;
- --sendbird-file-message-icon-background: #FFFFFF;
- --sendbird-font-family-default: 'Open Sans', sans-serif;
- --sendbird-message-balloon-width: 404px; }
-
-.sendbird__offline .sendbird-channel-preview {
- cursor: not-allowed; }
-
-.sendbird-channel-preview {
- position: relative;
- cursor: pointer;
- box-sizing: border-box;
- width: 320px;
- height: 80px;
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: center;
- padding: 12px 16px 12px 16px; }
- .sendbird-theme--light .sendbird-channel-preview {
- border-bottom: solid 1px var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-preview {
- border-bottom: solid 1px var(--sendbird-dark-ondark-04); }
- .sendbird-channel-preview .sendbird-channel-preview__frozen-icon {
- padding-left: 4px; }
- .sendbird-channel-preview .sendbird-channel-preview__broadcast-icon {
- padding-right: 4px; }
- .sendbird-channel-preview:focus {
- outline: none; }
- .sendbird-channel-preview .sendbird-channel-preview__avatar {
- width: 56px;
- height: 56px; }
- .sendbird-channel-preview .sendbird-channel-preview__content {
- width: 100%;
- height: 100%;
- margin-left: 16px; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper {
- display: flex;
- justify-content: space-between;
- width: 216px;
- height: 16px; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__header {
- display: flex;
- justify-content: flex-start;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__header__channel-name {
- overflow: hidden;
- text-overflow: ellipsis;
- max-width: 128px;
- word-break: break-all;
- white-space: nowrap; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__header__total-members {
- margin-top: 2px;
- margin-left: 4px; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__upper__last-message-at {
- margin-left: 4px;
- margin-bottom: 4px;
- white-space: nowrap; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__lower {
- margin-top: 8px;
- width: 216px;
- height: 32px;
- display: flex;
- justify-content: space-between; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__lower__last-message {
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-channel-preview .sendbird-channel-preview__content .sendbird-channel-preview__content__lower__unread-message-count {
- margin-left: 8px;
- margin-bottom: 12px; }
- .sendbird-channel-preview .sendbird-channel-preview__action {
- position: absolute;
- top: 12px;
- right: 12px;
- display: inline-block; }
- .sendbird-channel-preview .sendbird-channel-preview__action .sendbird-iconbutton {
- display: none; }
- .sendbird-theme--light .sendbird-channel-preview:hover {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-channel-preview:hover {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-channel-preview:hover .sendbird-channel-preview__action .sendbird-iconbutton {
- display: inline-block; }
- .sendbird-channel-preview:hover .sendbird-channel-preview__content__upper__last-message-at {
- display: none; }
- .sendbird-channel-preview:hover .sendbird-channel-preview__content__lower__unread-message-count {
- display: none; }
-
-.sendbird-channel-preview--active {
- padding: 12px 16px 12px 12px; }
- .sendbird-theme--light .sendbird-channel-preview--active {
- border-left: solid 4px var(--sendbird-light-primary-300);
- border-bottom: solid 1px var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-channel-preview--active {
- border-left: solid 4px var(--sendbird-dark-primary-200);
- border-bottom: solid 1px var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-700); }
- .sendbird-theme--light .sendbird-channel-preview--active .sendbird-channel-preview__content__upper__header__channel-name {
- color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-channel-preview--active .sendbird-channel-preview__content__upper__header__channel-name {
- color: var(--sendbird-dark-primary-200); }
-
-.sendbird-image-renderer--hidden-placeholder {
- display: none; }
-
-.sendbird-icon {
- display: inline-block; }
- .sendbird-icon:focus {
- outline: none; }
-
-.sendbird-theme--light .sendbird-color--primary [class*='fill'] {
- fill: var(--sendbird-light-primary-300); }
-
-.sendbird-theme--dark .sendbird-color--primary [class*='fill'] {
- fill: var(--sendbird-dark-primary-200); }
-
-.sendbird-theme--light .sendbird-color--primary [class*='stroke'] {
- stroke: var(--sendbird-light-primary-300);
- stroke-width: 2px;
- stroke-linejoin: round; }
-
-.sendbird-theme--dark .sendbird-color--primary [class*='stroke'] {
- stroke: var(--sendbird-dark-primary-200);
- stroke-width: 2px;
- stroke-linejoin: round; }
-
-.sendbird-theme--light .sendbird-color--secondary [class*='fill'] {
- fill: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-color--secondary [class*='fill'] {
- fill: var(--sendbird-dark-ondark-01); }
-
-.sendbird-theme--light .sendbird-color--content [class*='fill'] {
- fill: var(--sendbird-light-ondark-01); }
-
-.sendbird-theme--dark .sendbird-color--content [class*='fill'] {
- fill: var(--sendbird-dark-onlight-01); }
-
-.sendbird-theme--light .sendbird-color--content-inverse [class*='fill'] {
- fill: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-color--content-inverse [class*='fill'] {
- fill: var(--sendbird-dark-ondark-01); }
-
-.sendbird-color--white [class*='fill'] {
- fill: #ffffff; }
-
-.sendbird-theme--light .sendbird-color--sent [class*='fill'] {
- fill: var(--sendbird-light-onlight-03); }
-
-.sendbird-theme--dark .sendbird-color--sent [class*='fill'] {
- fill: var(--sendbird-dark-ondark-03); }
-
-.sendbird-theme--light .sendbird-color--read [class*='fill'] {
- fill: var(--sendbird-light-secondary-300); }
-
-.sendbird-theme--dark .sendbird-color--read [class*='fill'] {
- fill: var(--sendbird-dark-secondary-200); }
-
-.sendbird-theme--light .sendbird-color--on-background [class*='fill'] {
- fill: var(--sendbird-light-onlight-03); }
-
-.sendbird-theme--dark .sendbird-color--on-background [class*='fill'] {
- fill: var(--sendbird-dark-ondark-03); }
-
-.sendbird-avatar {
- display: inline-block;
- overflow: hidden;
- border-radius: 50%;
- position: relative; }
- .sendbird-avatar:focus {
- outline: none; }
- .sendbird-avatar .sendbird-avatar-img {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%); }
- .sendbird-avatar .sendbird-avatar--inner__two-child .sendbird-avatar-img:first-child {
- transform: translate(2%, -50%); }
- .sendbird-avatar .sendbird-avatar--inner__two-child .sendbird-avatar-img:last-child {
- transform: translate(-102%, -50%); }
- .sendbird-avatar .sendbird-avatar--inner__three-child--upper .sendbird-avatar-img:first-child {
- transform: translate(-50%, -102%); }
- .sendbird-avatar .sendbird-avatar--inner__three-child--lower .sendbird-avatar-img:first-child {
- transform: translate(-77%, -23%) scale(0.5); }
- .sendbird-avatar .sendbird-avatar--inner__three-child--lower .sendbird-avatar-img:last-child {
- transform: translate(-23%, -23%) scale(0.5); }
- .sendbird-avatar .sendbird-avatar--inner__four-child .sendbird-avatar-img:first-child {
- transform: translate(-77%, -77%) scale(0.5); }
- .sendbird-avatar .sendbird-avatar--inner__four-child .sendbird-avatar-img:nth-child(2) {
- transform: translate(-23%, -77%) scale(0.5); }
- .sendbird-avatar .sendbird-avatar--inner__four-child .sendbird-avatar-img:nth-child(3) {
- transform: translate(-77%, -23%) scale(0.5); }
- .sendbird-avatar .sendbird-avatar--inner__four-child .sendbird-avatar-img:last-child {
- transform: translate(-23%, -23%) scale(0.5); }
-
-.sendbird-badge {
- height: 20px;
- min-width: 20px;
- border-radius: 10px;
- display: inline-block; }
- .sendbird-theme--light .sendbird-badge {
- background-color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-badge {
- background-color: var(--sendbird-dark-primary-200); }
- .sendbird-badge .sendbird-badge__text {
- margin: 0px 6px; }
-
-[class*=sendbird-label] {
- font-family: var(--sendbird-font-family-default); }
-
-.sendbird-label--h-1 {
- font-size: 20px;
- font-weight: 600;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.4;
- letter-spacing: -0.2px; }
-
-.sendbird-label--h-2 {
- font-size: 18px;
- font-weight: 600;
- font-stretch: normal;
- font-style: normal;
- line-height: normal;
- letter-spacing: -0.2px; }
-
-.sendbird-label--subtitle-1 {
- font-size: 16px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.38;
- letter-spacing: -0.2px; }
-
-.sendbird-label--subtitle-2 {
- font-size: 14px;
- font-weight: 600;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.14;
- letter-spacing: -0.2px; }
-
-.sendbird-label--body-1 {
- font-size: 14px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- letter-spacing: normal; }
-
-.sendbird-label--body-2 {
- font-size: 12px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.33;
- letter-spacing: normal; }
-
-.sendbird-label--button-1 {
- font-size: 14px;
- font-weight: 600;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- letter-spacing: normal; }
-
-.sendbird-label--button-2 {
- font-size: 14px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- letter-spacing: normal; }
-
-.sendbird-label--caption-1 {
- font-size: 14px;
- font-weight: 600;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- letter-spacing: normal; }
-
-.sendbird-label--caption-2 {
- font-size: 12px;
- font-weight: bold;
- font-style: normal;
- line-height: 1;
- letter-spacing: normal; }
-
-.sendbird-label--caption-3 {
- font-size: 12px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1;
- letter-spacing: normal; }
-
-.sendbird-theme--light .sendbird-label--color-onbackground-1 {
- color: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-label--color-onbackground-1 {
- color: var(--sendbird-dark-ondark-01); }
-
-.sendbird-theme--light .sendbird-label--color-onbackground-2 {
- color: var(--sendbird-light-onlight-02); }
-
-.sendbird-theme--dark .sendbird-label--color-onbackground-2 {
- color: var(--sendbird-dark-ondark-02); }
-
-.sendbird-theme--light .sendbird-label--color-onbackground-3 {
- color: var(--sendbird-light-onlight-03); }
-
-.sendbird-theme--dark .sendbird-label--color-onbackground-3 {
- color: var(--sendbird-dark-ondark-03); }
-
-.sendbird-theme--light .sendbird-label--color-oncontent-1 {
- color: var(--sendbird-light-ondark-01); }
-
-.sendbird-theme--dark .sendbird-label--color-oncontent-1 {
- color: var(--sendbird-dark-onlight-01); }
-
-.sendbird-theme--light .sendbird-label--color-oncontent-2 {
- color: var(--sendbird-light-ondark-02); }
-
-.sendbird-theme--dark .sendbird-label--color-oncontent-2 {
- color: var(--sendbird-dark-onlight-02); }
-
-.sendbird-theme--light .sendbird-label--color-primary {
- color: var(--sendbird-light-primary-300); }
-
-.sendbird-theme--dark .sendbird-label--color-primary {
- color: var(--sendbird-dark-primary-200); }
-
-.sendbird-theme--light .sendbird-label--color-error {
- color: var(--sendbird-light-error-300); }
-
-.sendbird-theme--dark .sendbird-label--color-error {
- color: var(--sendbird-dark-error-300); }
-
-.sendbird-iconbutton {
- color: var(--sendbird-iconbutton-color);
- display: inline-block;
- padding: 3px;
- background-color: transparent;
- cursor: pointer;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- border: 1px solid transparent;
- border-radius: 4px;
- outline: 0px; }
- .sendbird-theme--light .sendbird-iconbutton .sendbird-iconbutton__inner svg {
- fill: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-iconbutton .sendbird-iconbutton__inner svg {
- fill: var(--sendbird-dark-ondark-01); }
- .sendbird-theme--light .sendbird-iconbutton:hover {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-iconbutton:hover {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-theme--light .sendbird-iconbutton:focus {
- box-shadow: var(--sendbird-light-primary-300) 0px 0px 0px 2px; }
- .sendbird-theme--dark .sendbird-iconbutton:focus {
- box-shadow: var(--sendbird-dark-primary-200) 0px 0px 0px 2px; }
- .sendbird-theme--light .sendbird-iconbutton:active {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-iconbutton:active {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-iconbutton:disabled {
- cursor: not-allowed !important; }
- .sendbird-theme--light .sendbird-iconbutton:disabled .sendbird-iconbutton__inner svg, .sendbird-theme--light .sendbird-iconbutton:disabled .sendbird-iconbutton__inner path {
- fill: var(--sendbird-light-onlight-02); }
- .sendbird-theme--dark .sendbird-iconbutton:disabled .sendbird-iconbutton__inner svg, .sendbird-theme--dark .sendbird-iconbutton:disabled .sendbird-iconbutton__inner path {
- fill: var(--sendbird-dark-ondark-02); }
-
-.sendbird-theme--light .sendbird-iconbutton--pressed {
- background-color: var(--sendbird-light-primary-100); }
-
-.sendbird-theme--dark .sendbird-iconbutton--pressed {
- background-color: var(--sendbird-dark-background-700); }
-
-.sendbird-channel-header {
- position: relative;
- height: 64px;
- min-height: 64px;
- width: 320px;
- padding: 8px 64px 8px 8px;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-channel-header {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-channel-header {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-channel-header.sendbird-channel-header--allow-edit .sendbird-channel-header__title {
- cursor: pointer; }
- .sendbird-channel-header .sendbird-channel-header__title {
- display: flex;
- flex-direction: row;
- width: 260px;
- height: 48px;
- border-radius: 4px; }
- .sendbird-theme--light .sendbird-channel-header .sendbird-channel-header__title:hover {
- background: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-channel-header .sendbird-channel-header__title:hover {
- background: var(--sendbird-dark-background-500); }
- .sendbird-channel-header .sendbird-channel-header__title:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-channel-header .sendbird-channel-header__title:focus {
- background: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-channel-header .sendbird-channel-header__title:focus {
- background: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-channel-header .sendbird-channel-header__title:active {
- border: solid 2px var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-channel-header .sendbird-channel-header__title:active {
- border: solid 2px var(--sendbird-dark-primary-200); }
- .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--left {
- width: 48px;
- padding: 8px;
- box-sizing: border-box; }
- .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--right {
- margin-left: 4px;
- padding-top: 8px; }
- .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--name,
- .sendbird-channel-header .sendbird-channel-header__title .sendbird-channel-header__title--user-id {
- display: block;
- max-width: 200px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-channel-header .sendbird-channel-header__right-icon {
- position: absolute;
- right: 16px;
- top: 16px; }
-
-.sendbird__edit-user-profile section {
- margin-top: 16px; }
- .sendbird__edit-user-profile section .sendbird-input-label {
- display: block;
- margin-bottom: 12px; }
-
-.sendbird__edit-user-profile .sendbird__edit-user-profile__img .sendbird-input-label {
- margin-bottom: 12px; }
-
-.sendbird__edit-user-profile__img {
- position: relative; }
-
-.sendbird__edit-user__avatar-button {
- position: absolute;
- top: 50px;
- left: 96px; }
-
-.sendbird__edit-user__theme-icon .sendbird-icon {
- cursor: pointer; }
-
-.sendbird-modal {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- display: flex;
- align-items: center;
- justify-content: center; }
-
-.sendbird-modal-content {
- width: 480px;
- border-radius: 4px;
- z-index: 10001;
- padding: 18px 24px 24px 24px;
- position: relative;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-modal-content {
- background-color: var(--sendbird-light-background-50);
- box-shadow: var(--sendbird-light-shadow-04); }
- .sendbird-theme--dark .sendbird-modal-content {
- background-color: var(--sendbird-dark-background-500);
- box-shadow: var(--sendbird-dark-shadow-04); }
- .sendbird-modal-content .sendbird-modal-close {
- position: absolute;
- top: 16px;
- right: 16px;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-modal-content .sendbird-modal-close path {
- fill: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-modal-content .sendbird-modal-close path {
- fill: var(--sendbird-dark-ondark-01); }
- .sendbird-modal-content .sendbird-modal-header {
- margin-bottom: 16px; }
- .sendbird-modal-content .sendbird-modal-footer {
- margin-top: 32px;
- text-align: right; }
- .sendbird-modal-content .sendbird-modal-footer .sendbird-button:last-child {
- margin-left: 8px;
- width: 80px;
- height: 40px; }
-
-.sendbird-modal-backdrop {
- position: fixed;
- z-index: 10000;
- height: 100%;
- width: 100%;
- top: 0;
- left: 0; }
- .sendbird-theme--light .sendbird-modal-backdrop {
- background-color: var(--sendbird-light-overlay); }
- .sendbird-theme--dark .sendbird-modal-backdrop {
- background-color: var(--sendbird-dark-overlay); }
-
-.sendbird-button {
- display: inline-block;
- box-shadow: none;
- border-radius: 4px;
- padding: 0px;
- font-family: var(--sendbird-font-family-default);
- cursor: pointer; }
- .sendbird-button:hover {
- box-shadow: none; }
- .sendbird-button:focus {
- outline: none; }
- .sendbird-button:active {
- box-shadow: none; }
- .sendbird-button.sendbird-button__disabled {
- cursor: not-allowed; }
- .sendbird-theme--light .sendbird-button.sendbird-button__disabled {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-button.sendbird-button__disabled {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-button.sendbird-button__disabled:hover {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-button.sendbird-button__disabled:hover {
- background-color: var(--sendbird-dark-background-400); }
-
-.sendbird-button--big {
- height: 40px; }
- .sendbird-button--big .sendbird-button__text {
- margin: 10px 16px; }
-
-.sendbird-button--small {
- height: 32px; }
- .sendbird-button--small .sendbird-button__text {
- margin: 6px 16px; }
-
-.sendbird-theme--light .sendbird-button--primary {
- border: 1px solid var(--sendbird-light-primary-300);
- background-color: var(--sendbird-light-primary-300); }
-
-.sendbird-theme--dark .sendbird-button--primary {
- border: 1px solid var(--sendbird-dark-primary-200);
- background-color: var(--sendbird-dark-primary-200); }
-
-.sendbird-theme--light .sendbird-button--primary .sendbird-button__text {
- color: var(--sendbird-light-ondark-01); }
-
-.sendbird-theme--dark .sendbird-button--primary .sendbird-button__text {
- color: var(--sendbird-dark-onlight-01); }
-
-.sendbird-theme--light .sendbird-button--primary:hover {
- background-color: var(--sendbird-light-primary-400);
- border-color: var(--sendbird-light-primary-400); }
-
-.sendbird-theme--dark .sendbird-button--primary:hover {
- background-color: var(--sendbird-dark-primary-300);
- border-color: var(--sendbird-dark-primary-300); }
-
-.sendbird-theme--light .sendbird-button--primary:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-300);
- border: 1px solid var(--sendbird-button-border-focus); }
-
-.sendbird-theme--dark .sendbird-button--primary:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-200);
- border: 1px solid var(--sendbird-button-border-focus); }
-
-.sendbird-theme--light .sendbird-button--primary:active {
- background-color: var(--sendbird-light-primary-500); }
-
-.sendbird-theme--dark .sendbird-button--primary:active {
- background-color: var(--sendbird-dark-primary-400); }
-
-.sendbird-theme--light .sendbird-button--primary:focus .sendbird-button--primary:hover {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-400); }
-
-.sendbird-theme--dark .sendbird-button--primary:focus .sendbird-button--primary:hover {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-300); }
-
-.sendbird-theme--light .sendbird-button--primary:focus .sendbird-button--primary:active {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-500); }
-
-.sendbird-theme--dark .sendbird-button--primary:focus .sendbird-button--primary:active {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-400); }
-
-.sendbird-button--secondary {
- background-color: transparent; }
- .sendbird-theme--light .sendbird-button--secondary {
- border: 1px solid var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-button--secondary {
- border: 1px solid var(--sendbird-dark-ondark-03); }
- .sendbird-theme--light .sendbird-button--secondary .sendbird-button__text {
- color: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-button--secondary .sendbird-button__text {
- color: var(--sendbird-dark-ondark-01); }
- .sendbird-button--secondary:hover {
- background-color: transparent; }
- .sendbird-theme--light .sendbird-button--secondary:hover {
- border: 1px solid var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-button--secondary:hover {
- border: 1px solid var(--sendbird-dark-primary-200); }
- .sendbird-theme--light .sendbird-button--secondary:hover .sendbird-button__text {
- color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-button--secondary:hover .sendbird-button__text {
- color: var(--sendbird-dark-primary-200); }
- .sendbird-button--secondary.sendbird-button__disabled {
- cursor: not-allowed;
- border: none; }
- .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled .sendbird-button__text {
- color: var(--sendbird-light-onlight-02); }
- .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled .sendbird-button__text {
- color: var(--sendbird-dark-ondark-02); }
- .sendbird-button--secondary.sendbird-button__disabled:hover {
- border: none; }
- .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled:hover {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled:hover {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-button--secondary.sendbird-button__disabled:hover .sendbird-button__text {
- color: var(--sendbird-light-onlight-02); }
- .sendbird-theme--dark .sendbird-button--secondary.sendbird-button__disabled:hover .sendbird-button__text {
- color: var(--sendbird-dark-ondark-02); }
- .sendbird-theme--light .sendbird-button--secondary:hover .sendbird-button--secondary:focus .sendbird-button__text {
- color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-button--secondary:hover .sendbird-button--secondary:focus .sendbird-button__text {
- color: var(--sendbird-dark-primary-200); }
- .sendbird-button--secondary:focus {
- border: 1px solid transparent;
- background-color: transparent; }
- .sendbird-theme--light .sendbird-button--secondary:focus {
- box-shadow: var(--sendbird-light-primary-300) 0px 0px 0px 2px; }
- .sendbird-theme--dark .sendbird-button--secondary:focus {
- box-shadow: var(--sendbird-dark-primary-200) 0px 0px 0px 2px; }
- .sendbird-theme--light .sendbird-button--secondary:focus .sendbird-button__text {
- color: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-button--secondary:focus .sendbird-button__text {
- color: var(--sendbird-dark-ondark-01); }
- .sendbird-button--secondary:active {
- box-shadow: none; }
- .sendbird-theme--light .sendbird-button--secondary:active {
- border: 1px solid var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-button--secondary:active {
- border: 1px solid var(--sendbird-dark-primary-200); }
- .sendbird-theme--light .sendbird-button--secondary:active .sendbird-button__text {
- color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-button--secondary:active .sendbird-button__text {
- color: var(--sendbird-dark-primary-200); }
-
-.sendbird-theme--light .sendbird-button--danger {
- border: 1px solid var(--sendbird-light-error-300);
- background-color: var(--sendbird-light-error-300); }
-
-.sendbird-theme--dark .sendbird-button--danger {
- border: 1px solid var(--sendbird-dark-error-300);
- background-color: var(--sendbird-dark-error-300); }
-
-.sendbird-theme--light .sendbird-button--danger .sendbird-button__text {
- color: var(--sendbird-light-ondark-01); }
-
-.sendbird-theme--dark .sendbird-button--danger .sendbird-button__text {
- color: var(--sendbird-dark-onlight-01); }
-
-.sendbird-theme--light .sendbird-button--danger:hover {
- background-color: var(--sendbird-light-error-400);
- border-color: var(--sendbird-light-error-400); }
-
-.sendbird-theme--dark .sendbird-button--danger:hover {
- background-color: var(--sendbird-dark-error-400);
- border-color: var(--sendbird-dark-error-400); }
-
-.sendbird-theme--light .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-error-300);
- border-color: var(--sendbird-button-border-focus); }
-
-.sendbird-theme--dark .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-error-300);
- border-color: var(--sendbird-button-border-focus); }
-
-.sendbird-button--danger:active {
- box-shadow: none; }
- .sendbird-theme--light .sendbird-button--danger:active {
- background-color: var(--sendbird-light-error-500); }
- .sendbird-theme--dark .sendbird-button--danger:active {
- background-color: var(--sendbird-dark-error-500); }
-
-.sendbird-theme--light .sendbird-button--danger:hover .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-error-400); }
-
-.sendbird-theme--dark .sendbird-button--danger:hover .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-error-400); }
-
-.sendbird-theme--light .sendbird-button--danger:active .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-error-500); }
-
-.sendbird-theme--dark .sendbird-button--danger:active .sendbird-button--danger:focus {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-error-500); }
-
-.sendbird-button--disabled {
- border: 1px solid transparent;
- cursor: not-allowed; }
- .sendbird-theme--light .sendbird-button--disabled {
- background-color: var(--sendbird-light-background-200);
- color: var(--sendbird-light-ondark-01); }
- .sendbird-theme--dark .sendbird-button--disabled {
- background-color: var(--sendbird-dark-background-400);
- color: var(--sendbird-dark-onlight-01); }
-
-.sendbird-input {
- display: inline-block;
- width: 100%;
- height: 40px;
- position: relative; }
- .sendbird-input .sendbird-input--input {
- width: 100%;
- height: 100%;
- border-radius: 4px;
- font-family: var(--sendbird-font-family-default);
- font-size: 14px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- letter-spacing: normal;
- padding: 10px 16px;
- box-sizing: border-box;
- background-color: inherit; }
- .sendbird-theme--light .sendbird-input .sendbird-input--input {
- color: var(--sendbird-light-onlight-01);
- caret-color: var(--sendbird-light-primary-300);
- border: solid 1px var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-input .sendbird-input--input {
- color: var(--sendbird-dark-ondark-01);
- caret-color: var(--sendbird-dark-primary-200);
- border: solid 1px var(--sendbird-dark-ondark-03); }
- .sendbird-input .sendbird-input--input:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-input .sendbird-input--input:focus {
- box-shadow: 0 1px 5px 0 var(--sendbird-light-onlight-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
- color: var(--sendbird-light-onlight-01);
- border: solid 2px var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-input .sendbird-input--input:focus {
- box-shadow: 0 1px 5px 0 var(--sendbird-dark-ondark-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
- color: var(--sendbird-dark-ondark-01);
- border: solid 2px var(--sendbird-dark-primary-200); }
- .sendbird-theme--light .sendbird-input .sendbird-input--input:active {
- box-shadow: 0 1px 5px 0 var(--sendbird-light-onlight-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
- color: var(--sendbird-light-onlight-01);
- border: solid 1px var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-input .sendbird-input--input:active {
- box-shadow: 0 1px 5px 0 var(--sendbird-dark-ondark-04), 0 0 1px 0 rgba(0, 0, 0, 0.16), 0 2px 1px 0 rgba(0, 0, 0, 0.08);
- color: var(--sendbird-dark-ondark-01);
- border: solid 1px var(--sendbird-dark-primary-200); }
- .sendbird-input .sendbird-input--input:disabled {
- cursor: not-allowed; }
- .sendbird-theme--light .sendbird-input .sendbird-input--input:disabled {
- background-color: var(--sendbird-light-background-100);
- color: var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-input .sendbird-input--input:disabled {
- background-color: var(--sendbird-dark-background-500);
- color: var(--sendbird-dark-ondark-03); }
- .sendbird-input .sendbird-input--placeholder {
- position: absolute;
- pointer-events: none;
- top: 10px;
- left: 16px;
- font-family: var(--sendbird-font-family-default);
- font-size: 14px;
- line-height: 1.43; }
- .sendbird-theme--light .sendbird-input .sendbird-input--placeholder {
- color: var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-input .sendbird-input--placeholder {
- color: var(--sendbird-dark-ondark-03); }
-
-.sendbird-input-label {
- margin: 4px 0; }
-
-.sendbird-textbutton {
- text-decoration: underline;
- cursor: pointer; }
-
-.sendbird-textbutton--not-underline {
- text-decoration: none;
- cursor: pointer; }
-
-.sendbird-textbutton--disabled {
- cursor: not-allowed; }
- .sendbird-theme--light .sendbird-textbutton--disabled {
- color: var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-textbutton--disabled {
- color: var(--sendbird-dark-ondark-03); }
-
-.sendbird-theme--light .sendbird-color--onbackground-1 {
- color: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-color--onbackground-1 {
- color: var(--sendbird-dark-ondark-01); }
-
-.sendbird-theme--light .sendbird-color--onbackground-1--background-color {
- background-color: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-color--onbackground-1--background-color {
- background-color: var(--sendbird-dark-ondark-01); }
-
-.sendbird-theme--light .sendbird-color--onbackground-2 {
- color: var(--sendbird-light-onlight-02); }
-
-.sendbird-theme--dark .sendbird-color--onbackground-2 {
- color: var(--sendbird-dark-ondark-02); }
-
-.sendbird-theme--light .sendbird-color--onbackground-2--background-color {
- background-color: var(--sendbird-light-onlight-02); }
-
-.sendbird-theme--dark .sendbird-color--onbackground-2--background-color {
- background-color: var(--sendbird-dark-ondark-02); }
-
-.sendbird-theme--light .sendbird-color--onbackground-3 {
- color: var(--sendbird-light-onlight-03); }
-
-.sendbird-theme--dark .sendbird-color--onbackground-3 {
- color: var(--sendbird-dark-ondark-03); }
-
-.sendbird-theme--light .sendbird-color--onbackground-3--background-color {
- background-color: var(--sendbird-light-onlight-03); }
-
-.sendbird-theme--dark .sendbird-color--onbackground-3--background-color {
- background-color: var(--sendbird-dark-ondark-03); }
-
-.sendbird-theme--light .sendbird-color--onbackground-4 {
- color: var(--sendbird-light-onlight-04); }
-
-.sendbird-theme--dark .sendbird-color--onbackground-4 {
- color: var(--sendbird-dark-ondark-04); }
-
-.sendbird-theme--light .sendbird-color--onbackground-4--background-color {
- background-color: var(--sendbird-light-onlight-04); }
-
-.sendbird-theme--dark .sendbird-color--onbackground-4--background-color {
- background-color: var(--sendbird-dark-ondark-04); }
-
-.sendbird-theme--light .sendbird-color--oncontent-1 {
- color: var(--sendbird-light-ondark-01); }
-
-.sendbird-theme--dark .sendbird-color--oncontent-1 {
- color: var(--sendbird-dark-onlight-01); }
-
-.sendbird-theme--light .sendbird-color--oncontent-1--background-color {
- background-color: var(--sendbird-light-ondark-01); }
-
-.sendbird-theme--dark .sendbird-color--oncontent-1--background-color {
- background-color: var(--sendbird-dark-onlight-01); }
-
-.sendbird-theme--light .sendbird-color--primary {
- color: var(--sendbird-light-primary-300); }
-
-.sendbird-theme--dark .sendbird-color--primary {
- color: var(--sendbird-dark-primary-200); }
-
-.sendbird-theme--light .sendbird-color--primary--background-color {
- background-color: var(--sendbird-light-primary-300); }
-
-.sendbird-theme--dark .sendbird-color--primary--background-color {
- background-color: var(--sendbird-dark-primary-200); }
-
-.sendbird-theme--light .sendbird-color--error {
- color: var(--sendbird-light-error-300); }
-
-.sendbird-theme--dark .sendbird-color--error {
- color: var(--sendbird-dark-error-300); }
-
-.sendbird-theme--light .sendbird-color--error--background-color {
- background-color: var(--sendbird-light-error-300); }
-
-.sendbird-theme--dark .sendbird-color--error--background-color {
- background-color: var(--sendbird-dark-error-300); }
-
-.sendbird-add-channel__rectangle-wrap {
- margin-top: 26px; }
-
-.sendbird-add-channel__rectangle-footer {
- text-align: right;
- margin-top: 32px; }
-
-.sendbird-add-channel__rectangle {
- width: 432px;
- height: 72px;
- border-radius: 4px;
- margin-bottom: 8px;
- padding: 25px 72px;
- position: relative;
- box-sizing: border-box;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-add-channel__rectangle {
- border: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-add-channel__rectangle {
- border: 1px solid var(--sendbird-dark-ondark-04); }
- .sendbird-add-channel__rectangle .sendbird-icon {
- position: absolute;
- left: 22px;
- top: 24px; }
-
-.sendbird-create-channel--content {
- width: 480px;
- max-height: 552px; }
-
-.sendbird-create-channel--scroll {
- height: 360px;
- overflow-y: auto; }
-
-.sendbird-muted-avatar {
- border-radius: 50%;
- display: inline-block; }
- .sendbird-muted-avatar .sendbird-muted-avatar__icon {
- position: relative; }
- .sendbird-muted-avatar .sendbird-muted-avatar__icon .sendbird-icon {
- position: absolute;
- top: 4px;
- left: 4px; }
- .sendbird-muted-avatar .sendbird-muted-avatar__bg {
- opacity: .5;
- position: absolute;
- border-radius: 50%;
- top: 0;
- left: 0; }
- .sendbird-theme--light .sendbird-muted-avatar .sendbird-muted-avatar__bg {
- background-color: var(--sendbird-light-primary-400); }
- .sendbird-theme--dark .sendbird-muted-avatar .sendbird-muted-avatar__bg {
- background-color: var(--sendbird-dark-primary-300); }
-
-.sendbird-checkbox {
- display: block;
- position: relative;
- padding-left: 35px;
- margin-bottom: 12px;
- cursor: pointer;
- font-size: 22px;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none; }
-
-.sendbird-checkbox input {
- position: absolute;
- opacity: 0;
- cursor: pointer;
- height: 0;
- width: 0; }
-
-.sendbird-checkbox--checkmark {
- position: absolute;
- top: 0;
- left: 0;
- height: 18px;
- width: 18px;
- border-radius: 2px;
- background-color: inherit; }
- .sendbird-theme--light .sendbird-checkbox--checkmark {
- border: 2px solid var(--sendbird-light-background-400); }
- .sendbird-theme--dark .sendbird-checkbox--checkmark {
- border: 2px solid var(--sendbird-dark-background-300); }
-
-.sendbird-theme--light .sendbird-checkbox input:focus ~ .sendbird-checkbox--checkmark {
- box-shadow: 0px 0px 0px 2px var(--sendbird-light-primary-300); }
-
-.sendbird-theme--dark .sendbird-checkbox input:focus ~ .sendbird-checkbox--checkmark {
- box-shadow: 0px 0px 0px 2px var(--sendbird-dark-primary-200); }
-
-.sendbird-theme--light .sendbird-checkbox input:checked ~ .sendbird-checkbox--checkmark {
- background-color: var(--sendbird-light-primary-300);
- border: 2px solid var(--sendbird-light-primary-300); }
-
-.sendbird-theme--dark .sendbird-checkbox input:checked ~ .sendbird-checkbox--checkmark {
- background-color: var(--sendbird-dark-primary-200);
- border: 2px solid var(--sendbird-dark-primary-200); }
-
-.sendbird-checkbox--checkmark:after {
- content: "";
- position: absolute;
- display: none; }
-
-.sendbird-checkbox input:checked ~ .sendbird-checkbox--checkmark:after {
- display: block; }
-
-.sendbird-theme--light .sendbird-checkbox .sendbird-checkbox--checkmark:after {
- left: 5px;
- top: -0.5px;
- width: 7px;
- height: 12px;
- border: solid var(--sendbird-light-background-50);
- border-width: 0 2px 2px 0;
- transform: rotate(45deg); }
-
-.sendbird-theme--dark .sendbird-checkbox .sendbird-checkbox--checkmark:after {
- left: 5px;
- top: -0.5px;
- width: 7px;
- height: 12px;
- border: solid var(--sendbird-dark-background-600);
- border-width: 0 2px 2px 0;
- transform: rotate(45deg); }
-
-.sendbird__user-profile {
- width: 320px;
- border-radius: 4px;
- padding: 24px;
- box-sizing: border-box;
- text-align: center; }
- .sendbird-theme--light .sendbird__user-profile {
- box-shadow: var(--sendbird-light-shadow-02);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird__user-profile {
- box-shadow: var(--sendbird-dark-shadow-02);
- background-color: var(--sendbird-dark-background-500); }
- .sendbird__user-profile .sendbird__user-profile-avatar {
- margin: 8px 0px; }
- .sendbird__user-profile .sendbird__user-profile-name {
- max-width: 270px;
- white-space: nowrap;
- overflow-x: hidden;
- text-overflow: ellipsis; }
- .sendbird__user-profile .sendbird__user-profile-message {
- margin-top: 20px; }
- .sendbird__user-profile .sendbird__user-profile-message button {
- width: 272px; }
- .sendbird__user-profile .sendbird__user-profile-seperator {
- margin: 24px 0px;
- height: 1px; }
- .sendbird-theme--light .sendbird__user-profile .sendbird__user-profile-seperator {
- background-color: var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird__user-profile .sendbird__user-profile-seperator {
- background-color: var(--sendbird-dark-ondark-04); }
- .sendbird__user-profile .sendbird__user-profile-userId--label,
- .sendbird__user-profile .sendbird__user-profile-userId--value {
- display: block;
- text-align: left; }
- .sendbird__user-profile .sendbird__user-profile-userId--label {
- margin-bottom: 8px; }
-
-.sendbird__offline .sendbird-dropdown__menu .sendbird-dropdown__menu-item {
- cursor: not-allowed; }
-
-.sendbird-dropdown__menu {
- z-index: 99999;
- position: absolute;
- top: 100%;
- left: 0;
- min-width: 140px;
- margin: 0px;
- padding: 8px 0px;
- border-radius: 4px;
- list-style: none; }
- .sendbird-theme--light .sendbird-dropdown__menu {
- box-shadow: var(--sendbird-light-shadow-02);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-dropdown__menu {
- box-shadow: var(--sendbird-dark-shadow-02);
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-dropdown__menu .sendbird-dropdown__menu-item {
- cursor: pointer;
- white-space: nowrap;
- padding: 8px 16px; }
- .sendbird-theme--light .sendbird-dropdown__menu .sendbird-dropdown__menu-item:hover {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-dropdown__menu .sendbird-dropdown__menu-item:hover {
- background-color: var(--sendbird-dark-background-400); }
-
-.sendbird-dropdown__reaction-bar {
- position: absolute;
- top: 100%;
- left: 0;
- min-width: 44px;
- max-width: 352px;
- max-height: 208px;
- overflow-y: scroll;
- margin: 0px;
- padding: 8px;
- border-radius: 8px;
- list-style: none; }
- .sendbird-theme--light .sendbird-dropdown__reaction-bar {
- box-shadow: var(--sendbird-light-shadow-02);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-dropdown__reaction-bar {
- box-shadow: var(--sendbird-dark-shadow-02);
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-dropdown__reaction-bar .sendbird-dropdown__reaction-bar__row .sendbird-reaction-button, .sendbird-dropdown__reaction-bar .sendbird-dropdown__reaction-bar__row .sendbird-reaction-button--selected {
- margin: 4px; }
-
-.sendbird-dropdown__menu-backdrop {
- background-color: transparent;
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%; }
-
-.sendbird-reactions--pressed {
- display: block !important; }
-
-.sendbird-icon--pressed {
- display: block !important; }
-
-.sendbird-sort-by-row {
- display: flex;
- justify-content: flex-start;
- align-items: center; }
-
-.sendbird-user-list-item {
- display: block;
- position: relative;
- box-sizing: border-box;
- width: 432px;
- height: 56px; }
- .sendbird-theme--light .sendbird-user-list-item {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-user-list-item {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-user-list-item__avatar {
- position: absolute;
- top: 8px;
- left: 0px;
- z-index: 1;
- cursor: pointer; }
- .sendbird-user-list-item .sendbird-muted-avatar {
- position: absolute;
- top: 8px;
- left: 0px;
- z-index: 2;
- pointer-events: none; }
- .sendbird-user-list-item__title {
- position: absolute;
- top: 17px;
- left: 56px;
- max-width: 280px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-user-list-item__subtitle {
- position: absolute;
- top: 23px;
- left: 140px;
- max-width: 237px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-user-list-item__checkbox {
- position: absolute;
- top: 16px;
- right: 16px; }
- .sendbird-user-list-item__action {
- position: absolute;
- right: 0;
- top: 10px; }
- .sendbird-user-list-item__operator {
- position: absolute;
- right: 40px;
- top: 22px; }
-
-.sendbird-place-holder {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 100%; }
- .sendbird-place-holder .sendbird-place-holder__body {
- display: flex;
- flex-direction: column;
- height: 104px;
- align-items: center; }
- .sendbird-place-holder .sendbird-place-holder__body .sendbird-place-holder__body__icon {
- margin-bottom: 10px; }
- .sendbird-place-holder .sendbird-place-holder__body .sendbird-place-holder__body__text {
- margin-top: 10px; }
- .sendbird-place-holder .sendbird-place-holder__body__reconnect {
- margin-top: 18px;
- display: flex;
- flex-direction: row;
- cursor: pointer; }
- .sendbird-place-holder .sendbird-place-holder__body__reconnect .sendbird-place-holder__body__reconnect__icon {
- margin-right: 4px; }
-
-.sendbird-loader {
- display: inline-block;
- -webkit-animation: 1s infinite linear;
- animation: 1s infinite linear;
- -webkit-animation-name: rotate;
- animation-name: rotate; }
-
-@-webkit-keyframes rotate {
- from {
- transform: rotate(0); }
- to {
- transform: rotate(360deg); } }
-
-@keyframes rotate {
- from {
- transform: rotate(0); }
- to {
- transform: rotate(360deg); } }
-
-.sendbird-channel-list {
- width: 320px;
- height: 100%;
- display: flex;
- flex-direction: column; }
- .sendbird-theme--light .sendbird-channel-list {
- background-color: var(--sendbird-light-background-50);
- border: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-list {
- background-color: var(--sendbird-dark-background-600);
- border: 1px solid var(--sendbird-dark-ondark-04); }
-
-.sendbird-channel-list__header {
- height: 64px;
- min-height: 64px; }
-
-.sendbird-channel-list__body {
- flex: 1 1 0;
- -ms-flex: 1;
- overflow-y: auto;
- overflow-x: hidden; }
-
-.sendbird-conversation {
- display: flex;
- flex-direction: column;
- height: 100%; }
- .sendbird-theme--light .sendbird-conversation {
- background-color: var(--sendbird-light-background-50);
- border: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-conversation {
- background-color: var(--sendbird-dark-background-600);
- border: 1px solid var(--sendbird-dark-ondark-04); }
-
-.sendbird-conversation__messages {
- overflow-y: auto;
- flex: 1 1 0;
- order: 2; }
-
-.sendbird-conversation__messages-list {
- display: flex;
- flex-direction: column;
- height: 100%;
- justify-content: flex-end; }
-
-.sendbird-conversation__footer {
- order: 3;
- padding: 0px 24px 24px 24px; }
-
-.sendbird-conversation__scroll-container {
- display: flex;
- height: 100%;
- overflow-y: auto;
- overflow-x: hidden;
- flex-direction: column; }
- .sendbird-conversation__scroll-container .sendbird-conversation__padding {
- flex: 1 1 0; }
-
-.sendbird-conversation__footer {
- position: relative; }
- .sendbird-conversation__footer .sendbird-conversation__typing-indicator {
- position: absolute;
- bottom: 8px; }
-
-.sendbird-reaction-button {
- border-radius: 8px;
- display: inline-block;
- border: solid 1px transparent;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-reaction-button:hover {
- border: solid 1px var(--sendbird-light-background-100);
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-reaction-button:hover {
- border: solid 1px var(--sendbird-dark-background-400);
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-reaction-button__inner {
- margin: 3px; }
-
-.sendbird-reaction-button--selected {
- cursor: pointer;
- border-radius: 8px;
- display: inline-block; }
- .sendbird-theme--light .sendbird-reaction-button--selected {
- border: solid 1px var(--sendbird-light-primary-100);
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-reaction-button--selected {
- border: solid 1px var(--sendbird-dark-primary-400);
- background-color: var(--sendbird-dark-primary-400); }
- .sendbird-reaction-button--selected:hover {
- border: solid 1px var(--sendbird-selected-reaction-button-border-hover); }
- .sendbird-reaction-button--selected__inner {
- margin: 3px; }
- .sendbird-reaction-button--selected.sendbird-reactions--pressed {
- display: block !important; }
-
-.sendbird-conversation__messages .sendbird-conversation__messages-padding {
- padding-left: 24px;
- padding-right: 24px; }
-
-.sendbird-conversation__messages .sendbird-separator,
-.sendbird-conversation__messages .sendbird-admin-message {
- padding-top: 8px;
- padding-bottom: 8px; }
-
-.sendbird-message {
- position: relative;
- line-height: 0; }
- .sendbird-message--outgoing {
- text-align: right; }
- .sendbird-message--incoming {
- text-align: left; }
-
-.sendbird-user-message--copy {
- cursor: pointer !important; }
-
-.sendbird-user-message--outgoing {
- position: relative;
- right: 0px;
- display: inline-block;
- max-width: 496px;
- text-align: right; }
- .sendbird-theme--light .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-dark-primary-400); }
- .sendbird-theme--light .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-user-message--outgoing:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-dark-primary-400); }
- .sendbird-user-message--outgoing:hover .sendbird-user-message__left-padding .sendbird-user-message__more {
- display: block; }
- .sendbird-user-message--outgoing .sendbird-user-message--inner {
- display: flex;
- flex-direction: row; }
- .sendbird-user-message--outgoing .sendbird-user-message__left-padding {
- position: relative;
- width: 68px; }
- .sendbird-user-message--outgoing .sendbird-user-message__left-padding .sendbird-user-message__more {
- display: none;
- position: absolute;
- right: 4px;
- top: 2px; }
- .sendbird-user-message--outgoing .sendbird-user-message__left-padding .sendbird-user-message__more[class*='--pressed'] {
- display: block !important; }
- .sendbird-user-message--outgoing .sendbird-user-message__left-padding .sendbird-user-message__status {
- position: absolute;
- bottom: 2px;
- right: 4px; }
- .sendbird-user-message--outgoing .sendbird-user-message__text-balloon {
- max-width: var(--sendbird-message-balloon-width);
- box-sizing: border-box;
- border-radius: 16px;
- text-align: left; }
- .sendbird-theme--light .sendbird-user-message--outgoing .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-user-message--outgoing .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-dark-primary-300); }
- .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner {
- display: flex;
- flex-direction: column; }
- .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place {
- padding: 8px 12px; }
- .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
- display: inline;
- white-space: pre-wrap;
- overflow-wrap: normal; }
- .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- position: relative;
- bottom: 0px; }
- .sendbird-theme--light .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-user-message--outgoing .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-dark-primary-300); }
-
-.sendbird-user-message--incoming {
- position: relative;
- left: 0px;
- display: inline-block;
- padding-left: 40px;
- max-width: 536px;
- text-align: left; }
- .sendbird-theme--light .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-user-message--incoming:hover .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-400); }
- .sendbird-user-message--incoming:hover .sendbird-user-message__right-padding .sendbird-user-message__more {
- display: block; }
- .sendbird-user-message--incoming:hover .sendbird-user-message__right-padding .sendbird-user-message__sent-at {
- display: none; }
- .sendbird-user-message--incoming .sendbird-user-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-user-message--incoming .sendbird-user-message--body {
- display: flex;
- flex-direction: column; }
- .sendbird-user-message--incoming .sendbird-user-message__right-padding {
- position: relative;
- width: 68px; }
- .sendbird-user-message--incoming .sendbird-user-message__right-padding .sendbird-user-message__sent-at {
- position: absolute;
- left: 4px;
- bottom: 2px; }
- .sendbird-user-message--incoming .sendbird-user-message__right-padding .sendbird-user-message__more {
- position: absolute;
- display: none;
- top: 18px;
- left: 4px; }
- .sendbird-user-message--incoming .sendbird-user-message__avatar {
- position: absolute;
- bottom: 4px;
- left: -40px;
- cursor: pointer; }
- .sendbird-user-message--incoming .sendbird-user-message__sender-name {
- margin-left: 12px;
- margin-bottom: 4px; }
- .sendbird-user-message--incoming .sendbird-user-message__text-balloon {
- margin-top: 4px;
- max-width: var(--sendbird-message-balloon-width);
- box-sizing: border-box;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-user-message--incoming .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-user-message--incoming .sendbird-user-message__text-balloon {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner {
- display: flex;
- flex-direction: column; }
- .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place {
- padding: 8px 12px; }
- .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
- display: inline;
- white-space: pre-wrap;
- overflow-wrap: normal; }
- .sendbird-theme--light .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
- color: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__text-place .sendbird-user-message__text-balloon__inner__text-place__text {
- color: var(--sendbird-dark-ondark-01); }
- .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- position: relative;
- bottom: 0px; }
- .sendbird-theme--light .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-user-message--incoming .sendbird-user-message__text-balloon .sendbird-user-message__text-balloon__inner .sendbird-user-message__text-balloon__inner__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-500); }
-
-.sendbird-user-message__text-balloon__inner__text-place__text {
- word-break: break-word;
- display: flex;
- flex-direction: row;
- flex-wrap: wrap; }
-
-.sendbird-user-message__text-balloon {
- display: inline-block; }
-
-.sendbird-user-message-word {
- display: inline;
- margin: 0px 2px; }
-
-.sendbird-message-status {
- display: inline;
- text-align: right; }
- .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__try-again {
- text-decoration: underline; }
- .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__try-again:hover {
- cursor: pointer; }
- .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__delete {
- text-decoration: underline; }
- .sendbird-message-status .sendbird-message-status__text .sendbird-message-status__text__delete:hover {
- cursor: pointer; }
-
-.sendbird-emoji-reactions {
- display: inline-block;
- border-radius: 16px;
- max-width: var(--sendbird-message-balloon-width);
- box-sizing: border-box;
- min-height: 24px;
- padding: 7px 5px 3px 5px; }
- .sendbird-theme--light .sendbird-emoji-reactions {
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-emoji-reactions {
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-emoji-reactions .sendbird-emoji-reactions--inner {
- display: flex;
- flex-wrap: wrap; }
- .sendbird-emoji-reactions .sendbird-emoji-reactions__emoji-reaction {
- margin-left: 2px;
- margin-right: 2px;
- margin-bottom: 4px; }
- .sendbird-emoji-reactions .sendbird-emoji-reactions__emoji-reaction-add {
- width: 36px;
- height: 24px; }
- .sendbird-emoji-reactions:focus {
- outline: none; }
-
-.sendbird-reaction-badge {
- display: inline-block;
- border-radius: 15px;
- width: 50px;
- height: 24px; }
- .sendbird-theme--light .sendbird-reaction-badge {
- background-color: var(--sendbird-light-background-100);
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-reaction-badge {
- background-color: var(--sendbird-dark-background-500);
- border: solid 1px var(--sendbird-dark-background-500); }
- .sendbird-reaction-badge:hover {
- cursor: pointer; }
- .sendbird-theme--light .sendbird-reaction-badge:hover {
- border: solid 1px var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-reaction-badge:hover {
- border: solid 1px var(--sendbird-dark-primary-200); }
-
-.sendbird-reaction-badge--is-add {
- display: inline-block;
- border-radius: 15px;
- width: 36px;
- height: 24px; }
- .sendbird-theme--light .sendbird-reaction-badge--is-add {
- background-color: var(--sendbird-light-background-100);
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-reaction-badge--is-add {
- background-color: var(--sendbird-dark-background-500);
- border: solid 1px var(--sendbird-dark-background-500); }
- .sendbird-reaction-badge--is-add:hover {
- cursor: pointer;
- border: solid 1px var(--sendbird-add-reaction-button-border-hover); }
- .sendbird-reaction-badge--is-add .sendbird-reaction-badge__inner .sendbird-reaction-badge__inner__icon {
- left: 8px; }
-
-.sendbird-reaction-badge--selected {
- display: inline-block;
- border-radius: 15px;
- width: 50px;
- height: 24px; }
- .sendbird-theme--light .sendbird-reaction-badge--selected {
- background-color: var(--sendbird-light-primary-100);
- border: solid 1px var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-reaction-badge--selected {
- background-color: var(--sendbird-dark-primary-400);
- border: solid 1px var(--sendbird-dark-primary-400); }
- .sendbird-reaction-badge--selected:hover {
- cursor: pointer; }
- .sendbird-theme--light .sendbird-reaction-badge--selected:hover {
- border: solid 1px var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-reaction-badge--selected:hover {
- border: solid 1px var(--sendbird-dark-primary-200); }
-
-.sendbird-reaction-badge__inner {
- position: relative;
- display: flex;
- height: 24px;
- flex-direction: row;
- align-items: center;
- justify-content: center;
- padding-left: 20px;
- padding-right: 4px; }
- .sendbird-reaction-badge__inner .sendbird-reaction-badge__inner__icon {
- position: absolute;
- top: 2px;
- left: 4px; }
- .sendbird-reaction-badge__inner .sendbird-reaction-badge__inner__count {
- margin-left: 4px; }
-
-.sendbird-tooltip {
- position: relative;
- display: inline-flex;
- justify-content: center;
- max-width: 200px;
- border-radius: 8px;
- padding: 8px 16px;
- background-color: var(--sendbird-tooltip-background); }
- .sendbird-tooltip::after {
- content: '';
- position: absolute;
- bottom: -4px;
- width: 8px;
- height: 8px;
- transform: rotate(45deg);
- background-color: var(--sendbird-tooltip-background); }
- .sendbird-tooltip__text {
- font-family: var(--sendbird-font-family-default);
- font-size: 12px;
- font-weight: bold;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.33;
- letter-spacing: normal;
- color: var(--sendbird-tooltip-text-color); }
-
-.sendbird-tooltip-wrapper {
- position: relative;
- display: inline-flex; }
- .sendbird-tooltip-wrapper__hover-tooltip {
- position: absolute;
- display: inline-flex;
- width: 200px; }
- .sendbird-tooltip-wrapper__hover-tooltip__inner__tooltip-container {
- position: relative;
- display: inline-flex; }
-
-.sendbird-admin-message {
- display: flex;
- justify-content: center;
- align-items: center; }
- .sendbird-admin-message .sendbird-admin-message__text {
- display: flex; }
-
-.sendbird-thumbnail {
- text-align: right;
- position: relative; }
- .sendbird-thumbnail .sendbird-thumbnail__body {
- position: relative;
- display: inline-block; }
- .sendbird-thumbnail .sendbird-thumbnail__more {
- display: none;
- position: absolute;
- top: 10px; }
- .sendbird-thumbnail:hover .sendbird-thumbnail__more {
- display: block; }
- .sendbird-thumbnail .sendbird-thumbnail__wrap {
- position: relative;
- display: flex;
- flex-direction: column;
- border-radius: 16px;
- margin: 8px 0px; }
- .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-thumbnail .sendbird-thumbnail__wrap:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap:hover {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap:hover {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__inner {
- cursor: pointer; }
- .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
- opacity: 1; }
- .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap:hover .sendbird-thumbnail__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-400); }
- .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner {
- width: 100%;
- height: 100%;
- position: relative; }
- .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
- position: absolute;
- opacity: 0;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
- background-color: var(--sendbird-light-overlay); }
- .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__inner .sendbird-thumbnail__wrap__overlay {
- background-color: var(--sendbird-dark-overlay); }
- .sendbird-theme--light .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-thumbnail .sendbird-thumbnail__wrap .sendbird-thumbnail__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-500); }
- .sendbird-thumbnail .sendbird-thumbnail__avatar {
- position: absolute;
- bottom: 30px;
- left: 0px; }
- .sendbird-thumbnail .sendbird-thumbnail__sender-name {
- margin-left: 12px; }
- .sendbird-thumbnail.sendbird-thumbnail--incoming {
- text-align: left;
- padding-left: 40px;
- box-sizing: border-box; }
- .sendbird-thumbnail .sendbird-thumbnail__video-icon {
- position: absolute;
- top: calc(50% - 28px);
- left: calc(50% - 28px); }
- .sendbird-thumbnail .sendbird-thumbnail__video,
- .sendbird-thumbnail .sendbird-thumbnail__img {
- display: block;
- max-width: var(--sendbird-message-balloon-width);
- max-height: 360px;
- border-radius: 16px; }
-
-.sendbird-outgoing-thumbnail-message {
- position: relative;
- text-align: right;
- line-height: 0px; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message--inner {
- display: inline-flex;
- flex-direction: row; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__left-padding {
- position: relative;
- width: 68px; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__left-padding .sendbird-outgoing-thumbnail-message-left-padding__more {
- display: none;
- position: absolute;
- top: 4px;
- right: 4px; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__left-padding .sendbird-outgoing-thumbnail-message-left-padding__status {
- position: absolute;
- right: 4px;
- bottom: 4px; }
- .sendbird-outgoing-thumbnail-message:hover .sendbird-outgoing-thumbnail-message__left-padding .sendbird-outgoing-thumbnail-message-left-padding__more {
- display: block; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body {
- position: relative; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap {
- position: relative;
- display: flex;
- flex-direction: column;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap--inner {
- cursor: pointer; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
- opacity: 1; }
- .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap:hover .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-400); }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner {
- width: 100%;
- height: 100%;
- position: relative; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
- position: absolute;
- opacity: 0;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
- background-color: var(--sendbird-light-overlay); }
- .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap--inner .sendbird-outgoing-thumbnail-message-body__wrap__overlay {
- background-color: var(--sendbird-dark-overlay); }
- .sendbird-theme--light .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message__body .sendbird-outgoing-thumbnail-message-body__wrap .sendbird-outgoing-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-500); }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message-body__video,
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message-body__img {
- display: block;
- max-width: var(--sendbird-message-balloon-width);
- max-height: 360px;
- border-radius: 16px; }
- .sendbird-outgoing-thumbnail-message .sendbird-outgoing-thumbnail-message-body__video-icon {
- position: absolute;
- top: calc(50% - 28px);
- left: calc(50% - 28px); }
-
-.sendbird-incoming-thumbnail-message {
- position: relative;
- text-align: left;
- padding-left: 40px; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__sender-name {
- position: relative;
- box-sizing: border-box;
- left: 12px;
- height: 12px;
- margin-bottom: 4px; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__avatar {
- position: absolute;
- left: -40px;
- bottom: 4px;
- cursor: pointer; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message--inner {
- display: flex;
- flex-direction: row; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body {
- position: relative; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap {
- position: relative;
- display: flex;
- flex-direction: column;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap--inner {
- cursor: pointer; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
- opacity: 1; }
- .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap:hover .sendbird-incoming-thumbnail-message-body__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-400); }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner {
- width: 100%;
- height: 100%;
- position: relative; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
- position: absolute;
- opacity: 0;
- width: 100%;
- height: 100%;
- top: 0px;
- left: 0px;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
- background-color: var(--sendbird-light-overlay); }
- .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message-body__wrap--inner .sendbird-incoming-thumbnail-message-body__wrap-overlay {
- background-color: var(--sendbird-dark-overlay); }
- .sendbird-theme--light .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__body .sendbird-incoming-thumbnail-message-body__wrap .sendbird-incoming-thumbnail-message__wrap__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-500); }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__video,
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__img {
- display: block;
- max-width: var(--sendbird-message-balloon-width);
- max-height: 360px;
- border-radius: 16px; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__video-icon {
- position: absolute;
- top: calc(50% - 28px);
- left: calc(50% - 28px); }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__right-padding {
- position: relative;
- width: 68px; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__right-padding .sendbird-incoming-thumbnail-message__sent-at {
- position: absolute;
- left: 4px;
- bottom: 4px; }
- .sendbird-incoming-thumbnail-message .sendbird-incoming-thumbnail-message__right-padding .sendbird-incoming-thumbnail-message__more {
- position: absolute;
- left: 4px;
- top: 4px;
- display: none; }
- .sendbird-incoming-thumbnail-message:hover .sendbird-incoming-thumbnail-message__right-padding .sendbird-incoming-thumbnail-message__more {
- display: block; }
-
-.sendbird-file-message--outgoing {
- text-align: right; }
-
-.sendbird-file-message--incoming {
- text-align: left; }
-
-.sendbird-file-message__outgoing {
- position: relative;
- right: 0px;
- display: inline-block;
- max-width: 496px;
- text-align: right;
- line-height: 0px; }
- .sendbird-file-message__outgoing .sendbird-file-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-theme--light .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip {
- background-color: var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip {
- background-color: var(--sendbird-dark-primary-400); }
- .sendbird-theme--light .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-file-message__outgoing:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-dark-primary-400); }
- .sendbird-file-message__outgoing:hover .sendbird-file-message__left-padding .sendbird-file-message__more {
- display: block; }
- .sendbird-file-message__outgoing:hover .sendbird-file-message__left-padding .sendbird-file-message__status {
- display: none; }
- .sendbird-file-message__outgoing .sendbird-file-message__left-padding {
- position: relative;
- width: 68px; }
- .sendbird-file-message__outgoing .sendbird-file-message__left-padding .sendbird-file-message__more {
- display: none;
- position: absolute;
- right: 4px;
- top: 2px; }
- .sendbird-file-message__outgoing .sendbird-file-message__left-padding .sendbird-file-message__status {
- position: absolute;
- text-align: right;
- right: 4px;
- bottom: 4px; }
- .sendbird-file-message__outgoing .sendbird-file-message__tooltip {
- display: flex;
- flex-direction: column;
- max-width: var(--sendbird-message-balloon-width);
- box-sizing: border-box;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-file-message__outgoing .sendbird-file-message__tooltip {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-file-message__outgoing .sendbird-file-message__tooltip {
- background-color: var(--sendbird-dark-primary-300); }
- .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner {
- display: flex;
- flex: row;
- padding: 8px 12px;
- text-align: left; }
- .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
- border-radius: 10px;
- margin-right: 8px;
- background-color: var(--sendbird-file-message-icon-background); }
- .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__text {
- white-space: nowrap;
- overflow-wrap: break-word;
- margin: 4px 0px;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-file-message__outgoing .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-dark-primary-300); }
-
-.sendbird-file-message__incoming {
- position: relative;
- left: 0px;
- display: inline-block;
- padding-left: 40px;
- max-width: 536px;
- text-align: left;
- line-height: 0px; }
- .sendbird-file-message__incoming .sendbird-file-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-file-message__incoming .sendbird-file-message__right-padding {
- position: relative;
- width: 68px; }
- .sendbird-file-message__incoming .sendbird-file-message__right-padding .sendbird-file-message__more {
- position: absolute;
- display: none;
- left: 4px;
- top: 18px; }
- .sendbird-file-message__incoming .sendbird-file-message__right-padding .sendbird-file-message__sent-at {
- position: absolute;
- left: 4px;
- bottom: 4px; }
- .sendbird-file-message__incoming:hover .sendbird-file-message__right-padding .sendbird-file-message__more {
- display: block; }
- .sendbird-theme--light .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-file-message__incoming:hover .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-400); }
- .sendbird-file-message__incoming .sendbird-file-message__avatar {
- position: absolute;
- bottom: 2px;
- left: -40px;
- cursor: pointer; }
- .sendbird-file-message__incoming .sendbird-file-message__sender-name {
- margin-left: 12px;
- margin-bottom: 4px; }
- .sendbird-file-message__incoming .sendbird-file-message__tooltip {
- display: flex;
- flex-direction: column;
- margin-top: 4px;
- max-width: var(--sendbird-message-balloon-width);
- box-sizing: border-box;
- border-radius: 16px; }
- .sendbird-theme--light .sendbird-file-message__incoming .sendbird-file-message__tooltip {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-file-message__incoming .sendbird-file-message__tooltip {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner {
- display: flex;
- flex-direction: row;
- padding: 8px 12px; }
- .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
- border-radius: 10px;
- margin-right: 8px; }
- .sendbird-theme--light .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__icon {
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__inner .sendbird-file-message__tooltip__text {
- white-space: nowrap;
- overflow-wrap: normal;
- margin: 4px 0px;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-file-message__incoming .sendbird-file-message__tooltip .sendbird-file-message__tooltip__emoji-reactions {
- border: solid 1px var(--sendbird-dark-background-500); }
-
-.sendbird-separator {
- width: 100%;
- display: flex;
- align-items: center; }
- .sendbird-separator .sendbird-separator__left {
- border: none;
- height: 1px;
- display: inline-block;
- width: 100%; }
- .sendbird-separator .sendbird-separator__right {
- border: none;
- height: 1px;
- display: inline-block;
- width: 100%; }
- .sendbird-separator .sendbird-separator__text {
- margin: 0px 16px;
- display: flex;
- white-space: nowrap; }
-
-.sendbird-message-input {
- display: inline-block;
- width: 100%;
- position: relative; }
- .sendbird-message-input .sendbird-message-input--textarea {
- width: 100%;
- border-radius: 4px;
- font-size: 14px;
- font-weight: normal;
- font-stretch: normal;
- font-style: normal;
- line-height: 1.43;
- height: 56px;
- overflow-y: hidden;
- letter-spacing: normal;
- padding: 18px 64px 18px 16px;
- box-sizing: border-box;
- resize: none;
- font-family: var(--sendbird-font-family-default);
- background-color: inherit; }
- .sendbird-theme--light .sendbird-message-input .sendbird-message-input--textarea {
- color: var(--sendbird-light-onlight-01);
- caret-color: var(--sendbird-light-primary-300);
- border: solid 1px var(--sendbird-light-onlight-03);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--textarea {
- color: var(--sendbird-dark-ondark-01);
- caret-color: var(--sendbird-dark-primary-200);
- border: solid 1px var(--sendbird-dark-ondark-03);
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-message-input .sendbird-message-input--textarea:focus {
- outline: none; }
- .sendbird-theme--light .sendbird-message-input .sendbird-message-input--textarea:focus {
- color: var(--sendbird-light-onlight-01);
- border: solid 1px var(--sendbird-light-primary-300);
- box-shadow: var(--sendbird-light-shadow-message-input); }
- .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--textarea:focus {
- color: var(--sendbird-dark-ondark-01);
- border: solid 1px var(--sendbird-dark-primary-200);
- box-shadow: var(--sendbird-dark-shadow-message-input); }
- .sendbird-theme--light .sendbird-message-input .sendbird-message-input--textarea:active {
- border: solid 1px var(--sendbird-message-input-border-active);
- color: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--textarea:active {
- border: solid 1px var(--sendbird-message-input-border-active);
- color: var(--sendbird-dark-ondark-01); }
- .sendbird-message-input .sendbird-message-input--placeholder {
- position: absolute;
- pointer-events: none;
- top: 18px;
- left: 16px;
- font-family: var(--sendbird-font-family-default);
- font-size: 14px;
- line-height: 1.43; }
- .sendbird-theme--light .sendbird-message-input .sendbird-message-input--placeholder {
- color: var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-message-input .sendbird-message-input--placeholder {
- color: var(--sendbird-dark-ondark-03); }
- .sendbird-message-input .sendbird-message-input--attach {
- position: absolute;
- right: 12px;
- bottom: 18px;
- padding: 6px; }
- .sendbird-message-input .sendbird-message-input--send {
- position: absolute;
- padding: 6px;
- right: 16px;
- bottom: 16px; }
- .sendbird-message-input .sendbird-message-input--attach-input {
- display: none; }
-
-.sendbird-message-input__edit {
- padding: 16px;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-message-input__edit {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-message-input__edit {
- background-color: var(--sendbird-dark-background-700); }
-
-.sendbird-message-input--edit-action {
- text-align: right;
- margin-top: 4px; }
- .sendbird-message-input--edit-action button:last-child {
- margin-left: 8px; }
- .sendbird-message-input--edit-action .sendbird-message-input--edit-action__cancel {
- width: 80px; }
- .sendbird-theme--light .sendbird-message-input--edit-action .sendbird-message-input--edit-action__cancel {
- border: solid 1px var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-message-input--edit-action .sendbird-message-input--edit-action__cancel {
- border: solid 1px var(--sendbird-dark-ondark-03); }
- .sendbird-message-input--edit-action .sendbird-message-input--edit-action__save {
- width: 80px; }
-
-.sendbird-message-input-form__disabled {
- cursor: not-allowed; }
-
-.sendbird-message-input__disabled {
- pointer-events: none;
- cursor: disabled; }
- .sendbird-theme--light .sendbird-message-input__disabled .sendbird-message-input--textarea {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-message-input__disabled .sendbird-message-input--textarea {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-theme--light .sendbird-message-input__disabled svg {
- fill: var(--sendbird-light-onlight-03); }
- .sendbird-theme--dark .sendbird-message-input__disabled svg {
- fill: var(--sendbird-dark-ondark-03); }
-
-.sendbird-fileviewer {
- width: 100%;
- height: 100%;
- position: fixed;
- top: 0;
- left: 0;
- z-index: 100000; }
- .sendbird-theme--light .sendbird-fileviewer {
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-fileviewer {
- background-color: var(--sendbird-dark-background-600); }
-
-.sendbird-fileviewer__header {
- height: 64px;
- min-height: 64px;
- box-sizing: border-box;
- display: flex;
- justify-content: space-between; }
- .sendbird-theme--light .sendbird-fileviewer__header {
- border-bottom: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-fileviewer__header {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
- .sendbird-fileviewer__header .sendbird-fileviewer__header-left {
- padding: 16px 0px 16px 20px;
- display: flex;
- flex: 1; }
- .sendbird-fileviewer__header .sendbird-fileviewer__header-right {
- display: flex;
- width: 160px;
- justify-content: flex-end; }
- .sendbird-fileviewer__header .sendbird-fileviewer__header-download,
- .sendbird-fileviewer__header .sendbird-fileviewer__header-delete,
- .sendbird-fileviewer__header .sendbird-fileviewer__header-close {
- width: 64px;
- padding: 21px;
- box-sizing: border-box;
- cursor: pointer; }
- .sendbird-theme--light .sendbird-fileviewer__header .sendbird-fileviewer__header-download path, .sendbird-theme--light
- .sendbird-fileviewer__header .sendbird-fileviewer__header-delete path, .sendbird-theme--light
- .sendbird-fileviewer__header .sendbird-fileviewer__header-close path {
- fill: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-fileviewer__header .sendbird-fileviewer__header-download path, .sendbird-theme--dark
- .sendbird-fileviewer__header .sendbird-fileviewer__header-delete path, .sendbird-theme--dark
- .sendbird-fileviewer__header .sendbird-fileviewer__header-close path {
- fill: var(--sendbird-dark-ondark-01); }
- .sendbird-theme--light .sendbird-fileviewer__header .sendbird-fileviewer__header-close {
- border-left: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-fileviewer__header .sendbird-fileviewer__header-close {
- border-left: 1px solid var(--sendbird-dark-ondark-04); }
-
-.sendbird-fileviewer__header-avatar {
- margin-right: 8px; }
-
-.sendbird-fileviewer__header-actions {
- right: 0;
- display: flex;
- flex-direction: row; }
-
-.sendbird-fileviewer__header-filename {
- max-width: 500px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- display: inline-block;
- padding-top: 2px; }
-
-.sendbird-fileviewer__header-sendername {
- max-width: 200px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- display: inline-block;
- margin-left: 8px;
- padding-top: 5px; }
-
-.sendbird-fileviewer__content {
- height: calc(100% - 72px);
- margin-top: 8px;
- overflow-y: auto;
- display: flex;
- align-items: center;
- justify-content: center; }
- .sendbird-fileviewer__content .sendbird-fileviewer__video {
- max-width: 100%;
- max-height: 100%; }
- .sendbird-fileviewer__content .sendbird-fileviewer__img {
- max-width: 90%;
- max-height: 90%; }
- .sendbird-fileviewer__content .sendbird-fileviewer__unsupported {
- max-width: 100%;
- max-height: 100%;
- display: flex;
- justify-content: center;
- align-items: center; }
-
-.sendbird-unknown-message {
- position: relative;
- line-height: 0px; }
- .sendbird-unknown-message--outgoing {
- text-align: right; }
- .sendbird-unknown-message--incoming {
- text-align: left; }
-
-.sendbird-outgoing-unknown-message {
- position: relative;
- right: 0px;
- display: inline-block;
- text-align: right;
- padding-left: 36px;
- box-sizing: border-box; }
- .sendbird-outgoing-unknown-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-theme--light .sendbird-outgoing-unknown-message:hover .sendbird-outgoing-unknown-message__body__text-balloon {
- background-color: var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-outgoing-unknown-message:hover .sendbird-outgoing-unknown-message__body__text-balloon {
- background-color: var(--sendbird-dark-primary-400); }
- .sendbird-outgoing-unknown-message:hover .sendbird-outgoing-unknown-message__more {
- display: block; }
- .sendbird-outgoing-unknown-message--left-padding {
- position: relative;
- width: 68px; }
- .sendbird-outgoing-unknown-message--left-padding .sendbird-outgoing-unknown-message__more {
- display: none;
- position: absolute;
- top: 4px;
- right: 4px; }
- .sendbird-outgoing-unknown-message--left-padding .sendbird-outgoing-unknown-message__message-status {
- position: absolute;
- text-align: right;
- right: 4px;
- bottom: 4px; }
- .sendbird-outgoing-unknown-message__body {
- display: flex;
- flex-direction: column; }
- .sendbird-outgoing-unknown-message__body__text-balloon {
- box-sizing: border-box;
- text-align: left;
- border-radius: 16px;
- padding: 8px 12px;
- width: 198px;
- height: 56px; }
- .sendbird-theme--light .sendbird-outgoing-unknown-message__body__text-balloon {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-outgoing-unknown-message__body__text-balloon {
- background-color: var(--sendbird-dark-primary-300); }
-
-.sendbird-incoming-unknown-message {
- position: relative;
- left: 0px;
- display: flex;
- flex-direction: row;
- text-align: left; }
- .sendbird-incoming-unknown-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-theme--light .sendbird-incoming-unknown-message:hover .sendbird-incoming-unknown-message__body__text-balloon {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-unknown-message:hover .sendbird-incoming-unknown-message__body__text-balloon {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-incoming-unknown-message__left {
- width: 38px; }
- .sendbird-incoming-unknown-message__left__sender-profile-image {
- position: absolute;
- bottom: 4px; }
- .sendbird-incoming-unknown-message__body {
- width: 198px;
- display: flex;
- flex-direction: column; }
- .sendbird-incoming-unknown-message__body__sender-name {
- margin-left: 10px;
- margin-bottom: 4px; }
- .sendbird-incoming-unknown-message__body__text-balloon {
- width: 198px;
- height: 56px;
- border-radius: 16px;
- text-align: left;
- padding: 8px 12px;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-incoming-unknown-message__body__text-balloon {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-unknown-message__body__text-balloon {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-incoming-unknown-message--right-padding {
- position: relative;
- width: 68px; }
- .sendbird-incoming-unknown-message--right-padding .sendbird-incoming-unknown-message__sent-at {
- position: absolute;
- left: 4px;
- bottom: 4px; }
-
-.sendbird-theme--light .sendbird-link-label {
- color: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-link-label {
- color: var(--sendbird-dark-ondark-01); }
-
-.sendbird-theme--light .sendbird-link-label:active, .sendbird-theme--light .sendbird-link-label:visited, .sendbird-theme--light .sendbird-link-label:focus {
- color: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-link-label:active, .sendbird-theme--dark .sendbird-link-label:visited, .sendbird-theme--dark .sendbird-link-label:focus {
- color: var(--sendbird-dark-ondark-01); }
-
-.sendbird-link-label:focus {
- outline: none; }
-
-.sendbird-link-label__label {
- display: inline; }
-
-.sendbird-og-message {
- position: relative; }
- .sendbird-og-message--outgoing {
- text-align: right;
- line-height: 0px; }
- .sendbird-og-message--incoming {
- text-align: left; }
-
-.sendbird-outgoing-og-message {
- position: relative;
- right: 0px;
- display: inline-block;
- box-sizing: border-box;
- text-align: right; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message__og-tag__url .sendbird-outgoing-og-message__og-tag__url__label {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- display: inline-block;
- width: 296px; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-theme--light .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__text-balloon {
- background-color: var(--sendbird-light-primary-200); }
- .sendbird-theme--dark .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__text-balloon {
- background-color: var(--sendbird-dark-primary-400); }
- .sendbird-theme--light .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-dark-background-400); }
- .sendbird-outgoing-og-message:hover .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__more {
- display: block; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding {
- position: relative;
- width: 68px; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__more {
- display: none;
- position: absolute;
- top: 2px;
- right: 4px; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__more[class*='--pressed'] {
- display: block !important; }
- .sendbird-outgoing-og-message .sendbird-outgoing-og-message--left-padding .sendbird-outgoing-og-message__message-status {
- position: absolute;
- right: 4px;
- bottom: 4px;
- text-align: right; }
- .sendbird-outgoing-og-message__text-balloon {
- box-sizing: border-box;
- width: 320px;
- padding: 8px 12px;
- border-radius: 16px 16px 0px 0px;
- word-break: break-all;
- text-align: left; }
- .sendbird-theme--light .sendbird-outgoing-og-message__text-balloon {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-outgoing-og-message__text-balloon {
- background-color: var(--sendbird-dark-primary-300); }
- .sendbird-outgoing-og-message__thumbnail--disabled:hover {
- cursor: not-allowed !important; }
- .sendbird-outgoing-og-message__thumbnail {
- width: 320px;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-outgoing-og-message__thumbnail {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-outgoing-og-message__thumbnail {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-outgoing-og-message__thumbnail__image__placeholder {
- width: 320px;
- height: 160px;
- display: flex;
- justify-content: center;
- align-items: center; }
- .sendbird-outgoing-og-message__thumbnail:hover {
- cursor: pointer; }
- .sendbird-outgoing-og-message__thumbnail:focus {
- outline: none; }
- .sendbird-outgoing-og-message__og-tag--disabled:hover {
- cursor: not-allowed !important; }
- .sendbird-outgoing-og-message__og-tag {
- padding: 8px 12px 12px 12px;
- border-radius: 0px 0px 16px 16px;
- text-align: left;
- box-sizing: border-box;
- width: 320px; }
- .sendbird-theme--light .sendbird-outgoing-og-message__og-tag {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-outgoing-og-message__og-tag {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-outgoing-og-message__og-tag__title {
- max-height: 150px;
- overflow-y: hidden;
- margin-bottom: 4px; }
- .sendbird-outgoing-og-message__og-tag__description {
- margin-bottom: 8px;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden; }
- .sendbird-outgoing-og-message__og-tag__url__label {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden; }
- .sendbird-outgoing-og-message__og-tag__emoji-reactions--wrapper:focus {
- outline: none; }
- .sendbird-outgoing-og-message__og-tag__emoji-reactions {
- margin: 8px -12px -12px -12px;
- width: 320px; }
- .sendbird-theme--light .sendbird-outgoing-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-outgoing-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-dark-background-500); }
- .sendbird-outgoing-og-message__og-tag__emoji-reactions:hover {
- cursor: default; }
- .sendbird-outgoing-og-message__og-tag__emoji-reactions:focus {
- outline: none; }
- .sendbird-outgoing-og-message__og-tag:hover {
- cursor: pointer; }
- .sendbird-outgoing-og-message__og-tag:focus {
- outline: none; }
-
-.sendbird-og-message-word {
- display: inline;
- margin: 0px 2px; }
-
-.sendbird-incoming-og-message {
- position: relative;
- left: 0px;
- display: inline-block;
- box-sizing: border-box;
- text-align: left;
- padding-left: 40px; }
- .sendbird-theme--light .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-dark-background-400); }
- .sendbird-incoming-og-message:hover .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__more {
- display: block; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner {
- position: relative;
- display: flex;
- flex-direction: row; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body {
- position: relative; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__avatar {
- position: absolute;
- bottom: 4px;
- left: -40px;
- cursor: pointer; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__sender-name {
- margin-left: 12px; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
- box-sizing: border-box;
- max-width: 320px;
- padding: 8px 12px;
- border-radius: 16px 16px 0px 0px;
- word-break: break-all;
- text-align: left; }
- .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__text-balloon {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail--disabled:hover {
- cursor: not-allowed !important; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail {
- box-sizing: border-box;
- width: 320px; }
- .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail .sendbird-incoming-og-message__thumbnail__image__placeholder {
- width: 320px;
- height: 160px;
- display: flex;
- justify-content: center;
- align-items: center; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail:hover {
- cursor: pointer; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__thumbnail:focus {
- outline: none; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag--disabled:hover {
- cursor: not-allowed !important; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
- padding: 8px 12px 12px 12px;
- border-radius: 0px 0px 16px 16px;
- text-align: left;
- box-sizing: border-box;
- width: 320px; }
- .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__title {
- max-height: 150px;
- overflow-y: hidden;
- margin-bottom: 4px; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__description {
- margin-bottom: 8px;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__url .sendbird-incoming-og-message__og-tag__url__label {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- display: inline-block;
- width: 296px; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper:focus {
- outline: none; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
- margin: 8px -12px -12px -12px; }
- .sendbird-theme--light .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions {
- border: 1px solid var(--sendbird-dark-background-500); }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions:hover {
- cursor: default; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--body .sendbird-incoming-og-message__og-tag .sendbird-incoming-og-message__og-tag__emoji-reactions--wrapper .sendbird-incoming-og-message__og-tag__emoji-reactions:focus {
- outline: none; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding {
- position: relative;
- width: 68px; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__sent-at {
- position: absolute;
- bottom: 4px;
- left: 4px; }
- .sendbird-incoming-og-message .sendbird-incoming-og-message--inner .sendbird-incoming-og-message--right-padding .sendbird-incoming-og-message__more {
- position: absolute;
- top: 18px;
- left: 4px;
- display: none; }
-
-.sendbird-notification {
- margin-top: 8px;
- margin-left: 24px;
- margin-right: 24px;
- border-radius: 4px;
- padding: 0px 2px;
- height: 32px;
- display: flex;
- align-items: center;
- justify-content: center; }
- .sendbird-theme--light .sendbird-notification {
- background-color: var(--sendbird-light-primary-300); }
- .sendbird-theme--dark .sendbird-notification {
- background-color: var(--sendbird-dark-primary-200); }
- .sendbird-notification:hover {
- cursor: pointer; }
- .sendbird-theme--light .sendbird-notification:hover {
- background-color: var(--sendbird-light-primary-400); }
- .sendbird-theme--dark .sendbird-notification:hover {
- background-color: var(--sendbird-dark-primary-300); }
- .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen {
- background-color: var(--sendbird-light-information-100); }
- .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen {
- background-color: var(--sendbird-dark-information-100); }
- .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {
- color: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {
- color: var(--sendbird-dark-onlight-01); }
- .sendbird-notification .sendbird-notification__text {
- display: flex;
- align-items: center;
- justify-content: center;
- margin-right: 8px; }
-
-.sendbird-conversation__connection-status {
- display: flex;
- align-items: center;
- padding-top: 5px; }
-
-.sendbird-chat-header {
- position: relative;
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- align-items: center;
- height: 64px;
- min-height: 64px;
- padding-left: 20px;
- padding-right: 16px;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-theme--light .sendbird-chat-header {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-chat-header {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-chat-header__left {
- margin-right: 24px; }
- .sendbird-chat-header__left, .sendbird-chat-header__right {
- overflow: hidden;
- display: flex;
- flex-direction: row;
- align-items: center; }
- .sendbird-chat-header .sendbird-chat-header__title {
- margin-left: 8px;
- margin-right: 16px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- max-width: 780px; }
- .sendbird-chat-header .sendbird-chat-header__subtitle {
- max-width: 240px;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-chat-header .sendbird-chat-header__active {
- margin-right: 4px;
- width: 8px;
- height: 8px;
- border-radius: 4px; }
- .sendbird-theme--light .sendbird-chat-header .sendbird-chat-header__active {
- background-color: var(--sendbird-light-secondary-300); }
- .sendbird-theme--dark .sendbird-chat-header .sendbird-chat-header__active {
- background-color: var(--sendbird-dark-secondary-200); }
- .sendbird-chat-header .sendbird-chat-header__mute {
- margin-right: 26px; }
- .sendbird-chat-header .sendbird-iconbutton--pressed {
- background-color: inherit; }
-
-.sendbird-channel-settings {
- height: 100%;
- width: 320px;
- display: inline-block; }
- .sendbird-theme--light .sendbird-channel-settings {
- background-color: var(--sendbird-light-background-50);
- border: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-settings {
- background-color: var(--sendbird-dark-background-600);
- border: 1px solid var(--sendbird-dark-ondark-04); }
- .sendbird-channel-settings .sendbird-channel-settings__header-icon {
- cursor: pointer;
- position: absolute;
- top: 18px;
- right: 21px; }
- .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__header-icon .sendbird-channel-settings__close-icon path {
- fill: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__header-icon .sendbird-channel-settings__close-icon path {
- fill: var(--sendbird-dark-ondark-01); }
- .sendbird-channel-settings .sendbird-channel-settings__members .sendbird-badge__text {
- margin-top: -2px; }
- .sendbird-channel-settings .sendbird-channel-settings__header {
- height: 64px;
- min-height: 64px;
- position: relative;
- padding: 20px 24px;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__header {
- border-bottom: solid 1px var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__header {
- border-bottom: solid 1px var(--sendbird-dark-ondark-04); }
- .sendbird-channel-settings .sendbird-channel-settings__scroll-area {
- display: flex;
- flex-grow: 1;
- flex-direction: column;
- height: calc(100% - 64px);
- overflow-y: auto; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-item {
- cursor: pointer;
- position: relative;
- padding: 12px 22px 10px 56px; }
- .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__panel-item {
- background-color: var(--sendbird-light-background-50);
- border-bottom: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__panel-item {
- background-color: var(--sendbird-dark-background-600);
- border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
- .sendbird-channel-settings .sendbird-channel-settings__panel-item:focus {
- outline: none; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-item.sendbird-channel-settings__panel-item__disabled {
- cursor: not-allowed; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-icon-left,
- .sendbird-channel-settings .sendbird-channel-settings__panel-icon-right {
- position: absolute;
- top: 10px; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-icon-left {
- left: 16px; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-icon-right {
- right: 16px; }
- .sendbird-channel-settings .sendbird-channel-settings__panel-icon--open {
- transform: rotate(90deg); }
- .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__panel-icon--chevron path {
- fill: var(--sendbird-light-onlight-01); }
- .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__panel-icon--chevron path {
- fill: var(--sendbird-dark-ondark-01); }
- .sendbird-theme--light .sendbird-channel-settings .sendbird-channel-settings__panel-icon__leave path {
- fill: var(--sendbird-light-error-300); }
- .sendbird-theme--dark .sendbird-channel-settings .sendbird-channel-settings__panel-icon__leave path {
- fill: var(--sendbird-dark-error-300); }
-
-.sendbird-channel-profile {
- position: relative;
- text-align: center;
- padding: 32px 40px 27px 40px; }
- .sendbird-theme--light .sendbird-channel-profile {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-channel-profile {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-channel-profile .sendbird-channel-profile--inner {
- height: 92px; }
- .sendbird-channel-profile .sendbird-channel-profile__avatar {
- margin-bottom: 16px;
- text-align: center; }
- .sendbird-channel-profile .sendbird-channel-profile__title {
- max-width: 240px;
- white-space: nowrap;
- overflow-x: hidden;
- text-overflow: ellipsis;
- height: 18px; }
- .sendbird-channel-profile .sendbird-channel-profile__edit {
- position: absolute;
- top: 10px;
- right: 16px; }
-
-.channel-profile-form .channel-profile-form__img-section {
- position: relative; }
-
-.channel-profile-form .channel-profile-form__avatar-button {
- position: absolute;
- top: 54px;
- left: 96px; }
-
-.channel-profile-form .channel-profile-form__avatar {
- margin-top: 16px; }
-
-.channel-profile-form .channel-profile-form__name-section {
- margin-top: 12px; }
- .channel-profile-form .channel-profile-form__name-section .sendbird-input {
- height: 40px; }
-
-.sendbird-members-accordion {
- padding: 8px 16px 16px 16px;
- position: relative;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-members-accordion {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-members-accordion {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-members-accordion .sendbird-members-accordion__member {
- position: relative;
- padding: 12px 0px 12px 44px;
- height: 40px;
- box-sizing: border-box; }
- .sendbird-members-accordion .sendbird-members-accordion__member .sendbird-label {
- max-width: 240px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-members-accordion .sendbird-members-accordion__member-avatar {
- position: absolute;
- left: 0;
- top: 10px;
- cursor: pointer; }
- .sendbird-members-accordion .sendbird-members-accordion__footer {
- display: flex;
- justify-content: flex-start;
- margin-top: 8px; }
- .sendbird-members-accordion .sendbird-members-accordion__footer .sendbird-members-accordion__footer__all-members {
- margin-right: 16px; }
-
-.sendbird-more-members__popup-scroll {
- max-height: 420px;
- overflow-y: auto; }
-
-.sendbird-channel-settings__operator .sendbird-channel-settings__accordion-icon {
- position: absolute;
- left: 14px; }
-
-.sendbird-channel-settings__operator .sendbird-accordion__panel-heder {
- position: relative; }
-
-.sendbird-channel-settings__empty-list {
- text-align: center;
- margin-top: 12px;
- margin-bottom: 4px;
- display: block; }
-
-.sendbird-channel-settings-accordion__footer {
- padding-top: 16px;
- display: flex;
- justify-content: left;
- padding-left: 12px; }
- .sendbird-channel-settings-accordion__footer .sendbird-button:nth-child(2) {
- margin-left: 8px; }
-
-.sendbird-channel-settings__freeze {
- max-width: 320px;
- position: relative;
- padding: 12px 22px 10px 56px; }
- .sendbird-theme--light .sendbird-channel-settings__freeze {
- background-color: var(--sendbird-light-background-50);
- border-bottom: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-channel-settings__freeze {
- background-color: var(--sendbird-dark-background-600);
- border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
-
-.sendbird-channel-settings__frozen-icon {
- position: absolute;
- right: 20px;
- top: 12px; }
- .sendbird-channel-settings__frozen-icon .sendbird-icon {
- cursor: pointer; }
-
-.sendbird-channel-settings__members-list .sendbird-badge,
-.sendbird-channel-settings__members .sendbird-badge {
- position: absolute;
- right: 44px;
- top: 12px; }
- .sendbird-theme--light .sendbird-channel-settings__members-list .sendbird-badge, .sendbird-theme--light
- .sendbird-channel-settings__members .sendbird-badge {
- background-color: var(--sendbird-light-background-200); }
- .sendbird-theme--dark .sendbird-channel-settings__members-list .sendbird-badge, .sendbird-theme--dark
- .sendbird-channel-settings__members .sendbird-badge {
- background-color: var(--sendbird-dark-background-400); }
- .sendbird-theme--light .sendbird-channel-settings__members-list .sendbird-badge .sendbird-label, .sendbird-theme--light
- .sendbird-channel-settings__members .sendbird-badge .sendbird-label {
- color: var(--sendbird-light-onlight-02); }
- .sendbird-theme--dark .sendbird-channel-settings__members-list .sendbird-badge .sendbird-label, .sendbird-theme--dark
- .sendbird-channel-settings__members .sendbird-badge .sendbird-label {
- color: var(--sendbird-dark-ondark-02); }
-
-.sendbird-accordion {
- padding: 8px 0px 16px 0px;
- position: relative;
- box-sizing: border-box; }
- .sendbird-theme--light .sendbird-accordion {
- border-bottom: 1px solid var(--sendbird-light-onlight-04);
- background-color: var(--sendbird-light-background-50); }
- .sendbird-theme--dark .sendbird-accordion {
- border-bottom: 1px solid var(--sendbird-dark-ondark-04);
- background-color: var(--sendbird-dark-background-600); }
- .sendbird-accordion .sendbird-accordion__member {
- position: relative;
- padding: 12px 0px 12px 44px;
- height: 40px;
- box-sizing: border-box; }
- .sendbird-accordion .sendbird-accordion__footer {
- display: flex;
- justify-content: flex-start;
- margin-top: 8px; }
-
-.sendbird-accordion__panel-heder {
- cursor: pointer;
- position: relative;
- padding: 12px 22px 10px 56px; }
- .sendbird-theme--light .sendbird-accordion__panel-heder {
- background-color: var(--sendbird-light-background-50);
- border-bottom: 1px solid var(--sendbird-light-onlight-04); }
- .sendbird-theme--dark .sendbird-accordion__panel-heder {
- background-color: var(--sendbird-dark-background-600);
- border-bottom: 1px solid var(--sendbird-dark-ondark-04); }
- .sendbird-accordion__panel-heder:focus {
- outline: none; }
- .sendbird-accordion__panel-heder.sendbird-accordion__panel-item__disabled {
- cursor: not-allowed; }
-
-.sendbird-accordion__panel-icon-left,
-.sendbird-accordion__panel-icon-right {
- position: absolute;
- top: 10px; }
-
-.sendbird-accordion__panel-icon-left {
- left: 16px; }
-
-.sendbird-accordion__panel-icon-right {
- right: 16px; }
-
-.sendbird-accordion__panel-icon--open {
- transform: rotate(90deg); }
-
-.sendbird-theme--light .sendbird-accordion__panel-icon--chevron path {
- fill: var(--sendbird-light-onlight-01); }
-
-.sendbird-theme--dark .sendbird-accordion__panel-icon--chevron path {
- fill: var(--sendbird-dark-ondark-01); }
-
-.sendbird-theme--light .sendbird-accordion__panel-icon__leave path {
- fill: var(--sendbird-light-error-300); }
-
-.sendbird-theme--dark .sendbird-accordion__panel-icon__leave path {
- fill: var(--sendbird-dark-error-300); }
-
-.sendbird-user-list-item--small {
- display: block;
- position: relative;
- box-sizing: border-box;
- height: 40px; }
- .sendbird-user-list-item--small__avatar {
- cursor: pointer;
- position: absolute;
- top: 10px;
- left: 12px; }
- .sendbird-user-list-item--small .sendbird-muted-avatar {
- position: absolute;
- top: 10px;
- left: 12px;
- z-index: 2;
- pointer-events: none; }
- .sendbird-user-list-item--small__title {
- position: absolute;
- top: 10px;
- left: 54px;
- width: 160px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-user-list-item--small__subtitle {
- position: absolute;
- top: 23px;
- left: 140px;
- max-width: 237px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- .sendbird-user-list-item--small__checkbox {
- position: absolute;
- top: 16px;
- right: 16px; }
- .sendbird-user-list-item--small__action {
- display: none;
- position: absolute;
- right: 10px;
- top: 4px; }
- .sendbird-user-list-item--small__operator {
- position: absolute;
- right: 24px;
- top: 10px; }
- .sendbird-theme--light .sendbird-user-list-item--small:hover, .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed {
- background-color: var(--sendbird-light-background-100); }
- .sendbird-theme--dark .sendbird-user-list-item--small:hover, .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed {
- background-color: var(--sendbird-dark-background-500); }
- .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__action, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__action {
- display: block; }
- .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__operator, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__operator {
- display: none; }
- .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {
- background-color: var(--sendbird-dark-background-700); }
-
-.sendbird-app__wrap {
- width: 100%;
- height: 100%;
- display: flex; }
- .sendbird-app__wrap .sendbird-app__conversation-wrap {
- flex: 1;
- position: relative; }
- .sendbird-app__wrap .sendbird-app__channellist-wrap {
- max-width: 320px; }
- .sendbird-theme--light .sendbird-app__wrap .sendbird-app__conversation--settings-open .sendbird-chat-header__info {
- background-color: var(--sendbird-light-primary-100); }
- .sendbird-theme--dark .sendbird-app__wrap .sendbird-app__conversation--settings-open .sendbird-chat-header__info {
- background-color: var(--sendbird-dark-background-700); }
- .sendbird-app__wrap .sendbird-channel-settings {
- border-left: none; }
- .sendbird-app__wrap .sendbird-channel-settings .sendbird-channel-settings__header {
- height: 65px; }
-
-/*# sourceMappingURL=index.es.css.map */
\ No newline at end of file
diff --git a/dist/index.es.css.map b/dist/index.es.css.map
deleted file mode 100644
index 29aeeb6..0000000
--- a/dist/index.es.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["index.scss","color.scss","add-channel.scss","muted-avatar-overlay.scss","conversation-scroll.scss","notification.scss","channel-profile.scss","members-accordion.scss","user-list-item.scss"],"names":[],"mappings":"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","file":"index.es.css","sourcesContent":[".sendbird-app__wrap {\n width: 100%;\n height: 100%;\n display: flex; }\n .sendbird-app__wrap .sendbird-app__conversation-wrap {\n flex: 1;\n position: relative; }\n .sendbird-app__wrap .sendbird-app__channellist-wrap {\n max-width: 320px; }\n .sendbird-theme--light .sendbird-app__wrap .sendbird-app__conversation--settings-open .sendbird-chat-header__info {\n background-color: var(--sendbird-light-primary-100); }\n .sendbird-theme--dark .sendbird-app__wrap .sendbird-app__conversation--settings-open .sendbird-chat-header__info {\n background-color: var(--sendbird-dark-background-700); }\n .sendbird-app__wrap .sendbird-channel-settings {\n border-left: none; }\n .sendbird-app__wrap .sendbird-channel-settings .sendbird-channel-settings__header {\n height: 65px; }\n",".sendbird-theme--light .sendbird-color--onbackground-1 {\n color: var(--sendbird-light-onlight-01); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-1 {\n color: var(--sendbird-dark-ondark-01); }\n\n.sendbird-theme--light .sendbird-color--onbackground-1--background-color {\n background-color: var(--sendbird-light-onlight-01); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-1--background-color {\n background-color: var(--sendbird-dark-ondark-01); }\n\n.sendbird-theme--light .sendbird-color--onbackground-2 {\n color: var(--sendbird-light-onlight-02); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-2 {\n color: var(--sendbird-dark-ondark-02); }\n\n.sendbird-theme--light .sendbird-color--onbackground-2--background-color {\n background-color: var(--sendbird-light-onlight-02); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-2--background-color {\n background-color: var(--sendbird-dark-ondark-02); }\n\n.sendbird-theme--light .sendbird-color--onbackground-3 {\n color: var(--sendbird-light-onlight-03); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-3 {\n color: var(--sendbird-dark-ondark-03); }\n\n.sendbird-theme--light .sendbird-color--onbackground-3--background-color {\n background-color: var(--sendbird-light-onlight-03); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-3--background-color {\n background-color: var(--sendbird-dark-ondark-03); }\n\n.sendbird-theme--light .sendbird-color--onbackground-4 {\n color: var(--sendbird-light-onlight-04); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-4 {\n color: var(--sendbird-dark-ondark-04); }\n\n.sendbird-theme--light .sendbird-color--onbackground-4--background-color {\n background-color: var(--sendbird-light-onlight-04); }\n\n.sendbird-theme--dark .sendbird-color--onbackground-4--background-color {\n background-color: var(--sendbird-dark-ondark-04); }\n\n.sendbird-theme--light .sendbird-color--oncontent-1 {\n color: var(--sendbird-light-ondark-01); }\n\n.sendbird-theme--dark .sendbird-color--oncontent-1 {\n color: var(--sendbird-dark-onlight-01); }\n\n.sendbird-theme--light .sendbird-color--oncontent-1--background-color {\n background-color: var(--sendbird-light-ondark-01); }\n\n.sendbird-theme--dark .sendbird-color--oncontent-1--background-color {\n background-color: var(--sendbird-dark-onlight-01); }\n\n.sendbird-theme--light .sendbird-color--primary {\n color: var(--sendbird-light-primary-300); }\n\n.sendbird-theme--dark .sendbird-color--primary {\n color: var(--sendbird-dark-primary-200); }\n\n.sendbird-theme--light .sendbird-color--primary--background-color {\n background-color: var(--sendbird-light-primary-300); }\n\n.sendbird-theme--dark .sendbird-color--primary--background-color {\n background-color: var(--sendbird-dark-primary-200); }\n\n.sendbird-theme--light .sendbird-color--error {\n color: var(--sendbird-light-error-300); }\n\n.sendbird-theme--dark .sendbird-color--error {\n color: var(--sendbird-dark-error-300); }\n\n.sendbird-theme--light .sendbird-color--error--background-color {\n background-color: var(--sendbird-light-error-300); }\n\n.sendbird-theme--dark .sendbird-color--error--background-color {\n background-color: var(--sendbird-dark-error-300); }\n",".sendbird-add-channel__rectangle-wrap {\n margin-top: 26px; }\n\n.sendbird-add-channel__rectangle-footer {\n text-align: right;\n margin-top: 32px; }\n\n.sendbird-add-channel__rectangle {\n width: 432px;\n height: 72px;\n border-radius: 4px;\n margin-bottom: 8px;\n padding: 25px 72px;\n position: relative;\n box-sizing: border-box;\n cursor: pointer; }\n .sendbird-theme--light .sendbird-add-channel__rectangle {\n border: 1px solid var(--sendbird-light-onlight-04); }\n .sendbird-theme--dark .sendbird-add-channel__rectangle {\n border: 1px solid var(--sendbird-dark-ondark-04); }\n .sendbird-add-channel__rectangle .sendbird-icon {\n position: absolute;\n left: 22px;\n top: 24px; }\n",".sendbird-muted-avatar {\n border-radius: 50%;\n display: inline-block; }\n .sendbird-muted-avatar .sendbird-muted-avatar__icon {\n position: relative; }\n .sendbird-muted-avatar .sendbird-muted-avatar__icon .sendbird-icon {\n position: absolute;\n top: 4px;\n left: 4px; }\n .sendbird-muted-avatar .sendbird-muted-avatar__bg {\n opacity: .5;\n position: absolute;\n border-radius: 50%;\n top: 0;\n left: 0; }\n .sendbird-theme--light .sendbird-muted-avatar .sendbird-muted-avatar__bg {\n background-color: var(--sendbird-light-primary-400); }\n .sendbird-theme--dark .sendbird-muted-avatar .sendbird-muted-avatar__bg {\n background-color: var(--sendbird-dark-primary-300); }\n",".sendbird-conversation__messages .sendbird-conversation__messages-padding {\n padding-left: 24px;\n padding-right: 24px; }\n\n.sendbird-conversation__messages .sendbird-separator,\n.sendbird-conversation__messages .sendbird-admin-message {\n padding-top: 8px;\n padding-bottom: 8px; }\n",".sendbird-notification {\n margin-top: 8px;\n margin-left: 24px;\n margin-right: 24px;\n border-radius: 4px;\n padding: 0px 2px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center; }\n .sendbird-theme--light .sendbird-notification {\n background-color: var(--sendbird-light-primary-300); }\n .sendbird-theme--dark .sendbird-notification {\n background-color: var(--sendbird-dark-primary-200); }\n .sendbird-notification:hover {\n cursor: pointer; }\n .sendbird-theme--light .sendbird-notification:hover {\n background-color: var(--sendbird-light-primary-400); }\n .sendbird-theme--dark .sendbird-notification:hover {\n background-color: var(--sendbird-dark-primary-300); }\n .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen {\n background-color: var(--sendbird-light-information-100); }\n .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen {\n background-color: var(--sendbird-dark-information-100); }\n .sendbird-theme--light .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {\n color: var(--sendbird-light-onlight-01); }\n .sendbird-theme--dark .sendbird-notification.sendbird-notification--frozen .sendbird-notification__text {\n color: var(--sendbird-dark-onlight-01); }\n .sendbird-notification .sendbird-notification__text {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px; }\n",".sendbird-channel-profile {\n position: relative;\n text-align: center;\n padding: 32px 40px 27px 40px; }\n .sendbird-theme--light .sendbird-channel-profile {\n border-bottom: 1px solid var(--sendbird-light-onlight-04);\n background-color: var(--sendbird-light-background-50); }\n .sendbird-theme--dark .sendbird-channel-profile {\n border-bottom: 1px solid var(--sendbird-dark-ondark-04);\n background-color: var(--sendbird-dark-background-600); }\n .sendbird-channel-profile .sendbird-channel-profile--inner {\n height: 92px; }\n .sendbird-channel-profile .sendbird-channel-profile__avatar {\n margin-bottom: 16px;\n text-align: center; }\n .sendbird-channel-profile .sendbird-channel-profile__title {\n max-width: 240px;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n height: 18px; }\n .sendbird-channel-profile .sendbird-channel-profile__edit {\n position: absolute;\n top: 10px;\n right: 16px; }\n\n.channel-profile-form .channel-profile-form__img-section {\n position: relative; }\n\n.channel-profile-form .channel-profile-form__avatar-button {\n position: absolute;\n top: 54px;\n left: 96px; }\n\n.channel-profile-form .channel-profile-form__avatar {\n margin-top: 16px; }\n\n.channel-profile-form .channel-profile-form__name-section {\n margin-top: 12px; }\n .channel-profile-form .channel-profile-form__name-section .sendbird-input {\n height: 40px; }\n",".sendbird-members-accordion {\n padding: 8px 16px 16px 16px;\n position: relative;\n box-sizing: border-box; }\n .sendbird-theme--light .sendbird-members-accordion {\n border-bottom: 1px solid var(--sendbird-light-onlight-04);\n background-color: var(--sendbird-light-background-50); }\n .sendbird-theme--dark .sendbird-members-accordion {\n border-bottom: 1px solid var(--sendbird-dark-ondark-04);\n background-color: var(--sendbird-dark-background-600); }\n .sendbird-members-accordion .sendbird-members-accordion__member {\n position: relative;\n padding: 12px 0px 12px 44px;\n height: 40px;\n box-sizing: border-box; }\n .sendbird-members-accordion .sendbird-members-accordion__member .sendbird-label {\n max-width: 240px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .sendbird-members-accordion .sendbird-members-accordion__member-avatar {\n position: absolute;\n left: 0;\n top: 10px;\n cursor: pointer; }\n .sendbird-members-accordion .sendbird-members-accordion__footer {\n display: flex;\n justify-content: flex-start;\n margin-top: 8px; }\n .sendbird-members-accordion .sendbird-members-accordion__footer .sendbird-members-accordion__footer__all-members {\n margin-right: 16px; }\n\n.sendbird-more-members__popup-scroll {\n max-height: 420px;\n overflow-y: auto; }\n",".sendbird-user-list-item--small {\n display: block;\n position: relative;\n box-sizing: border-box;\n height: 40px; }\n .sendbird-user-list-item--small__avatar {\n cursor: pointer;\n position: absolute;\n top: 10px;\n left: 12px; }\n .sendbird-user-list-item--small .sendbird-muted-avatar {\n position: absolute;\n top: 10px;\n left: 12px;\n z-index: 2;\n pointer-events: none; }\n .sendbird-user-list-item--small__title {\n position: absolute;\n top: 10px;\n left: 54px;\n width: 160px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .sendbird-user-list-item--small__subtitle {\n position: absolute;\n top: 23px;\n left: 140px;\n max-width: 237px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .sendbird-user-list-item--small__checkbox {\n position: absolute;\n top: 16px;\n right: 16px; }\n .sendbird-user-list-item--small__action {\n display: none;\n position: absolute;\n right: 10px;\n top: 4px; }\n .sendbird-user-list-item--small__operator {\n position: absolute;\n right: 24px;\n top: 10px; }\n .sendbird-theme--light .sendbird-user-list-item--small:hover, .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed {\n background-color: var(--sendbird-light-background-100); }\n .sendbird-theme--dark .sendbird-user-list-item--small:hover, .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed {\n background-color: var(--sendbird-dark-background-500); }\n .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__action, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__action {\n display: block; }\n .sendbird-user-list-item--small:hover .sendbird-user-list-item--small__operator, .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-user-list-item--small__operator {\n display: none; }\n .sendbird-theme--light .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {\n background-color: var(--sendbird-light-primary-100); }\n .sendbird-theme--dark .sendbird-user-list-item--small.sendbird-icon--pressed .sendbird-iconbutton {\n background-color: var(--sendbird-dark-background-700); }\n"]}
\ No newline at end of file
diff --git a/dist/index.es.js b/dist/index.es.js
deleted file mode 100644
index 60afa66..0000000
--- a/dist/index.es.js
+++ /dev/null
@@ -1,14565 +0,0 @@
-import React, { useLayoutEffect, useState, useEffect, useReducer, useMemo, useContext, useRef, Component, useCallback } from 'react';
-import PropTypes from 'prop-types';
-import Sb from 'sendbird';
-import cssVars from 'css-vars-ponyfill';
-import isToday from 'date-fns/isToday';
-import format from 'date-fns/format';
-import isYesterday from 'date-fns/isYesterday';
-import { createPortal } from 'react-dom';
-import isSameDay from 'date-fns/isSameDay';
-import formatDistanceToNowStrict from 'date-fns/formatDistanceToNowStrict';
-
-function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
-}
-
-function _defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
- }
-}
-
-function _createClass(Constructor, protoProps, staticProps) {
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
- if (staticProps) _defineProperties(Constructor, staticProps);
- return Constructor;
-}
-
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-}
-
-function ownKeys(object, enumerableOnly) {
- var keys = Object.keys(object);
-
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(object);
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
- });
- keys.push.apply(keys, symbols);
- }
-
- return keys;
-}
-
-function _objectSpread2(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
-
- if (i % 2) {
- ownKeys(Object(source), true).forEach(function (key) {
- _defineProperty(target, key, source[key]);
- });
- } else if (Object.getOwnPropertyDescriptors) {
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
- } else {
- ownKeys(Object(source)).forEach(function (key) {
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
- });
- }
- }
-
- return target;
-}
-
-function _inherits(subClass, superClass) {
- if (typeof superClass !== "function" && superClass !== null) {
- throw new TypeError("Super expression must either be null or a function");
- }
-
- subClass.prototype = Object.create(superClass && superClass.prototype, {
- constructor: {
- value: subClass,
- writable: true,
- configurable: true
- }
- });
- if (superClass) _setPrototypeOf(subClass, superClass);
-}
-
-function _getPrototypeOf(o) {
- _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
- return o.__proto__ || Object.getPrototypeOf(o);
- };
- return _getPrototypeOf(o);
-}
-
-function _setPrototypeOf(o, p) {
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
- o.__proto__ = p;
- return o;
- };
-
- return _setPrototypeOf(o, p);
-}
-
-function _assertThisInitialized(self) {
- if (self === void 0) {
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
- }
-
- return self;
-}
-
-function _possibleConstructorReturn(self, call) {
- if (call && (typeof call === "object" || typeof call === "function")) {
- return call;
- }
-
- return _assertThisInitialized(self);
-}
-
-function _slicedToArray(arr, i) {
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
-}
-
-function _toConsumableArray(arr) {
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
-}
-
-function _arrayWithoutHoles(arr) {
- if (Array.isArray(arr)) {
- for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
-
- return arr2;
- }
-}
-
-function _arrayWithHoles(arr) {
- if (Array.isArray(arr)) return arr;
-}
-
-function _iterableToArray(iter) {
- if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
-}
-
-function _iterableToArrayLimit(arr, i) {
- if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
- return;
- }
-
- var _arr = [];
- var _n = true;
- var _d = false;
- var _e = undefined;
-
- try {
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
- _arr.push(_s.value);
-
- if (i && _arr.length === i) break;
- }
- } catch (err) {
- _d = true;
- _e = err;
- } finally {
- try {
- if (!_n && _i["return"] != null) _i["return"]();
- } finally {
- if (_d) throw _e;
- }
- }
-
- return _arr;
-}
-
-function _nonIterableSpread() {
- throw new TypeError("Invalid attempt to spread non-iterable instance");
-}
-
-function _nonIterableRest() {
- throw new TypeError("Invalid attempt to destructure non-iterable instance");
-}
-
-var SendbirdSdkContext = React.createContext();
-
-var withSendbirdContext = function withSendbirdContext(OriginalComponent, mapStoreToProps) {
- var ContextAwareComponent = function ContextAwareComponent(props) {
- return React.createElement(SendbirdSdkContext.Consumer, null, function (context) {
- if (mapStoreToProps && typeof mapStoreToProps !== 'function') {
- // eslint-disable-next-line no-console
- console.warn('Second parameter to withSendbirdContext must be a pure function');
- } // todo - memoize
-
-
- var mergedProps = mapStoreToProps && typeof mapStoreToProps === 'function' ? _objectSpread2({}, mapStoreToProps(context), {}, props) : _objectSpread2({}, context, {}, props); // eslint-disable-next-line react/jsx-props-no-spreading
-
- return React.createElement(OriginalComponent, mergedProps);
- });
- };
-
- var componentName = OriginalComponent.displayName || OriginalComponent.name || 'Component';
- ContextAwareComponent.displayName = "SendbirdAware".concat(componentName);
- return ContextAwareComponent;
-};
-
-var INIT_SDK = 'INIT_SDK';
-var SET_SDK_LOADING = 'SET_SDK_LOADING';
-var RESET_SDK = 'RESET_SDK';
-var SDK_ERROR = 'SDK_ERROR';
-
-var INIT_USER = 'INIT_USER';
-var RESET_USER = 'RESET_USER';
-var UPDATE_USER_INFO = 'UPDATE_USER_INFO';
-
-var APP_VERSION_STRING = '1.3.0';
-var disconnectSdk = function disconnectSdk(_ref) {
- var sdkDispatcher = _ref.sdkDispatcher,
- userDispatcher = _ref.userDispatcher,
- sdk = _ref.sdk,
- onDisconnect = _ref.onDisconnect;
- sdkDispatcher({
- type: SET_SDK_LOADING,
- payload: true
- });
-
- if (sdk && sdk.disconnect) {
- sdk.disconnect().then(function () {
- sdkDispatcher({
- type: RESET_SDK
- });
- userDispatcher({
- type: RESET_USER
- });
- }).finally(function () {
- onDisconnect();
- });
- } else {
- onDisconnect();
- }
-};
-var handleConnection = function handleConnection(_ref2, dispatchers) {
- var userId = _ref2.userId,
- appId = _ref2.appId,
- nickname = _ref2.nickname,
- profileUrl = _ref2.profileUrl,
- accessToken = _ref2.accessToken,
- sdk = _ref2.sdk,
- logger = _ref2.logger;
- var sdkDispatcher = dispatchers.sdkDispatcher,
- userDispatcher = dispatchers.userDispatcher;
- disconnectSdk({
- sdkDispatcher: sdkDispatcher,
- userDispatcher: userDispatcher,
- sdk: sdk,
- logger: logger,
- onDisconnect: function onDisconnect() {
- logger.info('Setup connection');
- sdkDispatcher({
- type: SET_SDK_LOADING,
- payload: true
- });
-
- if (userId && appId) {
- var newSdk = new Sb({
- appId: appId
- }); // to check if code is released version from rollup and *not from storybook*
- // see rollup config file
-
- {
- newSdk.addExtension('sb_uikit', APP_VERSION_STRING);
- }
-
- var connectCbSucess = function connectCbSucess(user) {
- sdkDispatcher({
- type: INIT_SDK,
- payload: newSdk
- });
- userDispatcher({
- type: INIT_USER,
- payload: user
- }); // use nickname/profileUrl if provided
- // or set userID as nickname
-
- var newNickName = nickname || user.nickname;
- var newProfileUrl = profileUrl || user.profileUrl;
- newSdk.updateCurrentUserInfo(newNickName, newProfileUrl).then(function (namedUser) {
- userDispatcher({
- type: UPDATE_USER_INFO,
- payload: namedUser
- });
- });
- };
-
- var connectCbError = function connectCbError(e) {
- logger.error('Connection failed', "".concat(e));
- sdkDispatcher({
- type: RESET_SDK
- });
- sdkDispatcher({
- type: RESET_USER
- });
- sdkDispatcher({
- type: SDK_ERROR
- });
- };
-
- if (accessToken) {
- newSdk.connect(userId, accessToken).then(function (res) {
- return connectCbSucess(res);
- }).catch(function (err) {
- return connectCbError(err);
- });
- } else {
- newSdk.connect(userId).then(function (res) {
- return connectCbSucess(res);
- }).catch(function (err) {
- return connectCbError(err);
- });
- }
- } else {
- sdkDispatcher({
- type: SDK_ERROR
- });
- logger.warning('Connection failed', 'UserId or appId missing');
- }
- }
- });
-};
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-
-var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
-};
-
-function __spreadArrays() {
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
- r[k] = a[j];
- return r;
-}
-
-var isEmpty = function isEmpty(obj) {
- if (obj === null || obj === undefined) {
- return true;
- }
-
- for (var prop in obj) {
- if (obj.hasOwnProperty(prop)) {
- return false;
- }
- }
-
- return JSON.stringify(obj) === JSON.stringify({});
-};
-
-var useTheme = function useTheme(overrides) {
- useLayoutEffect(function () {
- if (!isEmpty(overrides)) {
- cssVars({
- variables: __assign({
- '--sendbird-dark-primary-500': '#4d2aa6',
- '--sendbird-dark-primary-400': '#6440C4',
- '--sendbird-dark-primary-300': '#7B53EF',
- '--sendbird-dark-primary-200': '#9E8CF5',
- '--sendbird-dark-primary-100': '#E2DFFF',
- '--sendbird-dark-secondary-500': '#007A7A',
- '--sendbird-dark-secondary-400': '#189A8D',
- '--sendbird-dark-secondary-300': '#2EBA9F',
- '--sendbird-dark-secondary-200': '#6FD6BE',
- '--sendbird-dark-secondary-100': '#AEF2DC',
- '--sendbird-dark-information-100': '#b2d9ff',
- '--sendbird-dark-error-500': '#A30E2D',
- '--sendbird-dark-error-400': '#C11F41',
- '--sendbird-dark-error-300': '#E53157',
- '--sendbird-dark-error-200': '#FF6183',
- '--sendbird-dark-error-100': '#FFABBD',
- '--sendbird-dark-background-700': '#000000',
- '--sendbird-dark-background-600': '#161616',
- '--sendbird-dark-background-500': '#2C2C2C',
- '--sendbird-dark-background-400': '#393939',
- '--sendbird-dark-background-300': '#A8A8A8',
- '--sendbird-dark-background-200': '#D9D9D9',
- '--sendbird-dark-background-100': '#F0F0F0',
- '--sendbird-dark-background-50': '#FFFFFF',
- '--sendbird-dark-overlay': 'rgba(0, 0, 0, 0.32)',
- '--sendbird-dark-onlight-01': 'rgba(0, 0, 0, 0.88)',
- '--sendbird-dark-onlight-02': 'rgba(0, 0, 0, 0.50)',
- '--sendbird-dark-onlight-03': 'rgba(0, 0, 0, 0.38)',
- '--sendbird-dark-onlight-04': 'rgba(0, 0, 0, 0.12)',
- '--sendbird-dark-ondark-01': 'rgba(255, 255, 255, 0.88)',
- '--sendbird-dark-ondark-02': 'rgba(255, 255, 255, 0.50)',
- '--sendbird-dark-ondark-03': 'rgba(255, 255, 255, 0.38)',
- '--sendbird-dark-ondark-04': 'rgba(255, 255, 255, 0.12)',
- '--sendbird-dark-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',
- '--sendbird-dark-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',
- '--sendbird-dark-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',
- '--sendbird-dark-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',
- '--sendbird-dark-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',
- '--sendbird-light-primary-500': '#4d2aa6',
- '--sendbird-light-primary-400': '#6440C4',
- '--sendbird-light-primary-300': '#7B53EF',
- '--sendbird-light-primary-200': '#9E8CF5',
- '--sendbird-light-primary-100': '#E2DFFF',
- '--sendbird-light-secondary-500': '#007A7A',
- '--sendbird-light-secondary-400': '#189A8D',
- '--sendbird-light-secondary-300': '#2EBA9F',
- '--sendbird-light-secondary-200': '#6FD6BE',
- '--sendbird-light-secondary-100': '#AEF2DC',
- '--sendbird-light-information-100': '#b2d9ff',
- '--sendbird-light-error-500': '#A30E2D',
- '--sendbird-light-error-400': '#C11F41',
- '--sendbird-light-error-300': '#E53157',
- '--sendbird-light-error-200': '#FF6183',
- '--sendbird-light-error-100': '#FFABBD',
- '--sendbird-light-background-700': '#000000',
- '--sendbird-light-background-600': '#161616',
- '--sendbird-light-background-500': '#2C2C2C',
- '--sendbird-light-background-400': '#393939',
- '--sendbird-light-background-300': '#A8A8A8',
- '--sendbird-light-background-200': '#D9D9D9',
- '--sendbird-light-background-100': '#F0F0F0',
- '--sendbird-light-background-50': ' #FFFFFF',
- '--sendbird-light-overlay': 'rgba(0, 0, 0, 0.32)',
- '--sendbird-light-onlight-01': 'rgba(0, 0, 0, 0.88)',
- '--sendbird-light-onlight-02': 'rgba(0, 0, 0, 0.50)',
- '--sendbird-light-onlight-03': 'rgba(0, 0, 0, 0.38)',
- '--sendbird-light-onlight-04': 'rgba(0, 0, 0, 0.12)',
- '--sendbird-light-ondark-01': 'rgba(255, 255, 255, 0.88)',
- '--sendbird-light-ondark-02': 'rgba(255, 255, 255, 0.50)',
- '--sendbird-light-ondark-03': 'rgba(255, 255, 255, 0.38)',
- '--sendbird-light-ondark-04': 'rgba(255, 255, 255, 0.12)',
- '--sendbird-light-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',
- '--sendbird-light-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',
- '--sendbird-light-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',
- '--sendbird-light-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',
- '--sendbird-light-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',
- '--sendbird-light-theme-surface-2': '#EAEAEA'
- }, overrides)
- });
- }
- }, [overrides]);
-};
-
-var sdkInitialState = {
- initialized: false,
- loading: false,
- sdk: {},
- error: false
-};
-
-function reducer(state, action) {
- switch (action.type) {
- case SET_SDK_LOADING:
- return _objectSpread2({}, state, {
- initialized: false,
- loading: action.payload
- });
-
- case SDK_ERROR:
- return _objectSpread2({}, state, {
- initialized: false,
- loading: false,
- error: true
- });
-
- case INIT_SDK:
- return {
- sdk: action.payload,
- initialized: true,
- loading: false,
- error: false
- };
-
- case RESET_SDK:
- return sdkInitialState;
-
- default:
- return state;
- }
-}
-
-var userInitialState = {
- initialized: false,
- loading: false,
- user: {}
-};
-
-function reducer$1(state, action) {
- switch (action.type) {
- case INIT_USER:
- return {
- initialized: true,
- loading: false,
- user: action.payload
- };
-
- case RESET_USER:
- return userInitialState;
-
- case UPDATE_USER_INFO:
- return _objectSpread2({}, state, {
- user: action.payload
- });
-
- default:
- return state;
- }
-}
-
-/* eslint-disable no-bitwise */
-
-/* eslint-disable eqeqeq */
-
-/* eslint-disable no-mixed-operators */
-// https://stackoverflow.com/a/2117523
-// used mainly for dom key generation
-var uuidv4 = function uuidv4() {
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
- var r = Math.random() * 16 | 0;
- var v = c === 'x' ? r : r & 0x3 | 0x8;
- return v.toString(16);
- });
-};
-
-function useConnectionStatus(sdk, logger) {
- var _useState = useState(true),
- _useState2 = _slicedToArray(_useState, 2),
- isOnline = _useState2[0],
- setIsOnline = _useState2[1];
-
- useEffect(function () {
- var uniqueHandlerId = uuidv4();
- logger.warning('sdk changed', uniqueHandlerId);
- var handler;
-
- if (sdk && sdk.ConnectionHandler) {
- handler = new sdk.ConnectionHandler();
-
- handler.onReconnectStarted = function () {
- setIsOnline(false);
- logger.warning('onReconnectStarted', {
- isOnline: isOnline
- });
- };
-
- handler.onReconnectSucceeded = function () {
- setIsOnline(true);
- logger.warning('onReconnectSucceeded', {
- isOnline: isOnline
- });
- };
-
- handler.onReconnectFailed = function () {
- sdk.reconnect();
- logger.warning('onReconnectFailed');
- };
-
- logger.info('Added ConnectionHandler', uniqueHandlerId);
- sdk.addConnectionHandler(uniqueHandlerId, handler);
- }
-
- return function () {
- try {
- sdk.removeConnectionHandler(uniqueHandlerId);
- logger.info('Removed ConnectionHandler', uniqueHandlerId);
- } catch (_unused) {//
- }
- };
- }, [sdk]);
- useEffect(function () {
- var tryReconnect = function tryReconnect() {
- try {
- logger.warning('Try reconnecting SDK');
-
- if (sdk.getConnectionState() !== 'OPEN') {
- // connection is not broken yet
- sdk.reconnect();
- }
- } catch (_unused2) {//
- }
- }; // addEventListener version
-
-
- window.addEventListener('online', tryReconnect);
- return function () {
- window.removeEventListener('online', tryReconnect);
- };
- }, [sdk]); // add offline-class to body
-
- useEffect(function () {
- var body = document.querySelector('body');
-
- if (!isOnline) {
- try {
- body.classList.add('sendbird__offline');
- logger.info('Added class sendbird__offline to body');
- } catch (e) {//
- }
- } else {
- try {
- body.classList.remove('sendbird__offline');
- logger.info('Removed class sendbird__offline from body');
- } catch (e) {//
- }
- }
- }, [isOnline]);
- return isOnline;
-}
-
-var LOG_LEVELS = {
- DEBUG: 'debug',
- WARNING: 'warning',
- ERROR: 'error',
- INFO: 'info',
- ALL: 'all'
-};
-
-var colorLog = function colorLog(level) {
- switch (level) {
- case LOG_LEVELS.WARNING:
- return 'color: Orange';
-
- case LOG_LEVELS.ERROR:
- return 'color: Red';
-
- default:
- return 'color: Gray';
- }
-};
-
-var printLog = function printLog(_ref) {
- var level = _ref.level,
- title = _ref.title,
- _ref$description = _ref.description,
- description = _ref$description === void 0 ? '' : _ref$description;
- // eslint-disable-next-line no-console
- console.log("%c SendbirdUIKit | ".concat(level, " | ").concat(new Date().toISOString(), " | ").concat(title, " ").concat(description && '|'), colorLog(level), description);
-};
-var getDefaultLogger = function getDefaultLogger() {
- return {
- info: function info() {},
- error: function error() {},
- warning: function warning() {}
- };
-};
-var LoggerFactory = function LoggerFactory(lvl, customInterface) {
- var logInterface = customInterface || printLog;
- var lvlArray = Array.isArray(lvl) ? lvl : [lvl];
-
- var applyLog = function applyLog(lgLvl) {
- return function (title, description) {
- return logInterface({
- level: lgLvl,
- title: title,
- description: description
- });
- };
- };
-
- var logger = lvlArray.reduce(function (accumulator, currentLvl) {
- if (currentLvl === LOG_LEVELS.DEBUG || currentLvl === LOG_LEVELS.ALL) {
- return _objectSpread2({}, accumulator, {
- info: applyLog(LOG_LEVELS.INFO),
- error: applyLog(LOG_LEVELS.ERROR),
- warning: applyLog(LOG_LEVELS.WARNING)
- });
- }
-
- if (currentLvl === LOG_LEVELS.INFO) {
- return _objectSpread2({}, accumulator, {
- info: applyLog(LOG_LEVELS.INFO)
- });
- }
-
- if (currentLvl === LOG_LEVELS.ERROR) {
- return _objectSpread2({}, accumulator, {
- error: applyLog(LOG_LEVELS.ERROR)
- });
- }
-
- if (currentLvl === LOG_LEVELS.WARNING) {
- return _objectSpread2({}, accumulator, {
- warning: applyLog(LOG_LEVELS.WARNING)
- });
- }
-
- return _objectSpread2({}, accumulator);
- }, getDefaultLogger());
- return logger;
-};
-
-// https://davidwalsh.name/pubsub-javascript
-var pubSubFactory = (function () {
- var topics = {};
- var hOP = topics.hasOwnProperty;
- return {
- __getTopics: function __getTopics() {
- return topics;
- },
- subscribe: function subscribe(topic, listener) {
- // Create the topic's object if not yet created
- if (!hOP.call(topics, topic)) {
- topics[topic] = [];
- } // Add the listener to queue
-
-
- var index = topics[topic].push(listener) - 1; // Provide handle back for removal of topic
-
- return {
- remove: function remove() {
- delete topics[topic][index];
- }
- };
- },
- publish: function publish(topic, info) {
- // If the topic doesn't exist, or there's no listeners in queue, just leave
- if (!hOP.call(topics, topic)) {
- return;
- } // Cycle through topics queue, fire!
-
-
- topics[topic].forEach(function (item) {
- item(info !== undefined ? info : {});
- });
- }
- };
-});
-
-function useAppendDomNode() {
- var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
- var rootSelector = arguments.length > 1 ? arguments[1] : undefined;
- useEffect(function () {
- var root = document.querySelector(rootSelector);
- ids.forEach(function (id) {
- var elem = document.createElement('div');
- elem.setAttribute('id', id);
- root.appendChild(elem);
- });
- return function () {
- ids.forEach(function (id) {
- var target = document.getElementById(id);
-
- if (target) {
- root.removeChild(target);
- }
- });
- };
- }, []);
-}
-
-var getStringSet = function getStringSet() {
- var lang = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
- var stringSet = {
- en: {
- TRYING_TO_CONNECT: 'Trying to connect…',
- USER_PROFILE__MESSAGE: 'Message',
- USER_PROFILE__USER_ID: 'User ID',
- EDIT_PROFILE__TITLE: 'My profile',
- EDIT_PROFILE__IMAGE_LABEL: 'Profile image',
- EDIT_PROFILE__IMAGE_UPLOAD: 'Upload',
- EDIT_PROFILE__NICKNAME_LABEL: 'Nickname',
- EDIT_PROFILE__NICKNAME_PLACEHOLDER: 'Enter your nickname',
- EDIT_PROFILE__USERID_LABEL: 'User ID',
- EDIT_PROFILE__THEME_LABEL: 'Dark theme',
- CHANNEL_LIST__TITLE: 'Channels',
- CHANNEL__MESSAGE_INPUT__PLACE_HOLDER: 'Enter message',
- CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED: 'Chat is unavailable in this channel',
- CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED: 'Chat is unavailable because you are being muted',
- CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE: 'new message(s) since',
- CHANNEL__MESSAGE_LIST__NOTIFICATION__ON: 'on',
- CHANNEL_SETTING__HEADER__TITLE: 'Channel information',
- CHANNEL_SETTING__PROFILE__EDIT: 'Edit',
- CHANNEL_SETTING__MEMBERS__TITLE: 'Members',
- CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS: 'All members',
- CHANNEL_SETTING__MEMBERS__INVITE_MEMBER: 'Invite users',
- CHANNEL_SETTING__LEAVE_CHANNEL__TITLE: 'Leave channel',
- CHANNEL_SETTING__OPERATORS__TITLE: 'Operators',
- CHANNEL_SETTING__OPERATORS__TITLE_ALL: 'All operators',
- CHANNEL_SETTING__OPERATORS__TITLE_ADD: 'Add operator',
- CHANNEL_SETTING__MUTED_MEMBERS__TITLE: 'Muted members',
- CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL: 'All muted members',
- CHANNEL_SETTING__BANNED_MEMBERS__TITLE: 'Banned members',
- CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL: 'All banned members',
- CHANNEL_SETTING__FREEZE_CHANNEL: 'Freeze Channel',
- BUTTON__CANCEL: 'Cancel',
- BUTTON__DELETE: 'Delete',
- BUTTON__SAVE: 'Save',
- BUTTON__CREATE: 'Create',
- BUTTON__INVITE: 'Invite',
- BUTTON__CLOSE: 'Close',
- BADGE__OVER: '+',
- MODAL__DELETE_MESSAGE__TITLE: 'Delete this message?',
- MODAL__CHANNEL_INFORMATION__TITLE: 'Edit channel information',
- MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE: 'Channel image',
- MODAL__CHANNEL_INFORMATION__UPLOAD: 'Upload',
- MODAL__CHANNEL_INFORMATION__CHANNEL_NAME: 'Channel name',
- MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER: 'Enter name',
- MODAL__INVITE_MEMBER__TITLE: 'Invite member',
- MODAL__INVITE_MEMBER__SELECTEC: 'selected',
- MODAL__CREATE_CHANNEL__TITLE: 'New channel',
- MODAL__CREATE_CHANNEL__SELECTED: 'selected',
- MODAL__USER_LIST__TITLE: 'members',
- TYPING_INDICATOR__IS_TYPING: 'is typing...',
- TYPING_INDICATOR__AND: 'and',
- TYPING_INDICATOR__ARE_TYPING: 'are typing...',
- TYPING_INDICATOR__MULTIPLE_TYPING: 'Several people are typing...',
- MESSAGE_STATUS__SENDING_FAILED: 'Couldn\'t send message.',
- MESSAGE_STATUS__TRY_AGAIN: 'Try again',
- MESSAGE_STATUS__OR: 'or',
- MESSAGE_STATUS__DELETE: 'delete',
- PLACE_HOLDER__NO_CHANNEL: 'No channels',
- CHANNEL_FROZEN: 'Channel frozen',
- MUTED_PL: 'Channel frozen',
- PLACE_HOLDER__WRONG: 'Something went wrong',
- PLACE_HOLDER__RETRY_TO_CONNECT: 'Retry',
- NO_TITLE: 'No title',
- NO_NAME: '(No name)',
- NO_MEMBERS: '(No members)',
- TOOLTIP__AND_YOU: ', and you',
- TOOLTIP__YOU: 'you',
- TOOLTIP__UNKOWN_USER: '(no name)',
- UNKNOWN__UNKNOWN_MESSAGE_TYPE: '(Unknown message type)',
- UNKNOWN__CANNOT_READ_MESSAGE: 'Cannot read this message.',
- MESSAGE_EDITED: '(edited)'
- }
- };
- return stringSet[lang];
-};
-
-var LocalizationContext = React.createContext({
- stringSet: getStringSet('en')
-});
-
-var LocalizationProvider = function LocalizationProvider(props) {
- var children = props.children;
- return React.createElement(LocalizationContext.Provider, {
- value: props
- }, children);
-};
-
-function Sendbird(props) {
- var userId = props.userId,
- appId = props.appId,
- accessToken = props.accessToken,
- children = props.children,
- disableUserProfile = props.disableUserProfile,
- renderUserProfile = props.renderUserProfile,
- allowProfileEdit = props.allowProfileEdit,
- theme = props.theme,
- nickname = props.nickname,
- profileUrl = props.profileUrl,
- userListQuery = props.userListQuery,
- _props$config = props.config,
- config = _props$config === void 0 ? {} : _props$config,
- colorSet = props.colorSet,
- stringSet = props.stringSet;
- var _config$logLevel = config.logLevel,
- logLevel = _config$logLevel === void 0 ? '' : _config$logLevel;
-
- var _useState = useState(LoggerFactory(logLevel)),
- _useState2 = _slicedToArray(_useState, 2),
- logger = _useState2[0],
- setLogger = _useState2[1];
-
- var _useState3 = useState(),
- _useState4 = _slicedToArray(_useState3, 2),
- pubSub = _useState4[0],
- setPubSub = _useState4[1];
-
- var _useReducer = useReducer(reducer, sdkInitialState),
- _useReducer2 = _slicedToArray(_useReducer, 2),
- sdkStore = _useReducer2[0],
- sdkDispatcher = _useReducer2[1];
-
- var _useReducer3 = useReducer(reducer$1, userInitialState),
- _useReducer4 = _slicedToArray(_useReducer3, 2),
- userStore = _useReducer4[0],
- userDispatcher = _useReducer4[1];
-
- useTheme(colorSet);
- useEffect(function () {
- setPubSub(pubSubFactory());
- }, []);
- useEffect(function () {
- logger.info('App Init'); // dispatch action
-
- handleConnection({
- userId: userId,
- appId: appId,
- accessToken: accessToken,
- sdkStore: sdkStore,
- nickname: nickname,
- profileUrl: profileUrl,
- sdk: sdkStore.sdk,
- logger: logger
- }, {
- sdkDispatcher: sdkDispatcher,
- userDispatcher: userDispatcher
- });
- }, [userId, appId, accessToken]); // to create a pubsub to communicate between parent and child
-
- useEffect(function () {
- setLogger(LoggerFactory(logLevel));
- }, [logLevel]);
- useAppendDomNode(['sendbird-modal-root', 'sendbird-dropdown-portal', 'sendbird-emoji-list-portal'], 'body'); // should move to reducer
-
- var _useState5 = useState(theme),
- _useState6 = _slicedToArray(_useState5, 2),
- currenttheme = _useState6[0],
- setCurrenttheme = _useState6[1];
-
- useEffect(function () {
- setCurrenttheme(theme);
- }, [theme]); // add-remove theme from body
-
- useEffect(function () {
- logger.info('Setup theme', "Theme: ".concat(currenttheme));
-
- try {
- var body = document.querySelector('body');
- body.classList.add("sendbird-theme--".concat(currenttheme || 'light'));
- logger.info('Finish setup theme'); // eslint-disable-next-line no-empty
- } catch (e) {
- logger.warning('Setup theme failed', "".concat(e));
- }
-
- return function () {
- try {
- var _body = document.querySelector('body');
-
- _body.classList.remove('sendbird-theme--light');
-
- _body.classList.remove('sendbird-theme--dark'); // eslint-disable-next-line no-empty
-
- } catch (_unused) {}
- };
- }, [currenttheme]);
- var isOnline = useConnectionStatus(sdkStore.sdk, logger);
- var localeStringSet = React.useMemo(function () {
- if (!stringSet) {
- return getStringSet('en');
- }
-
- return _objectSpread2({}, getStringSet('en'), {}, stringSet);
- }, [stringSet]);
- return React.createElement(SendbirdSdkContext.Provider, {
- value: {
- stores: {
- sdkStore: sdkStore,
- userStore: userStore
- },
- dispatchers: {
- sdkDispatcher: sdkDispatcher,
- userDispatcher: userDispatcher,
- reconnect: function reconnect() {
- handleConnection({
- userId: userId,
- appId: appId,
- accessToken: accessToken,
- sdkStore: sdkStore,
- nickname: nickname,
- profileUrl: profileUrl,
- logger: logger,
- sdk: sdkStore.sdk
- }, {
- sdkDispatcher: sdkDispatcher,
- userDispatcher: userDispatcher
- });
- }
- },
- config: {
- disableUserProfile: disableUserProfile,
- renderUserProfile: renderUserProfile,
- allowProfileEdit: allowProfileEdit,
- isOnline: isOnline,
- userId: userId,
- appId: appId,
- accessToken: accessToken,
- theme: currenttheme,
- setCurrenttheme: setCurrenttheme,
- userListQuery: userListQuery,
- logger: logger,
- pubSub: pubSub
- }
- }
- }, React.createElement(LocalizationProvider, {
- stringSet: localeStringSet
- }, children));
-}
-Sendbird.propTypes = {
- userId: PropTypes.string.isRequired,
- appId: PropTypes.string.isRequired,
- accessToken: PropTypes.string,
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
- theme: PropTypes.string,
- nickname: PropTypes.string,
- profileUrl: PropTypes.string,
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- allowProfileEdit: PropTypes.bool,
- userListQuery: PropTypes.func,
- config: PropTypes.shape({
- // None Error Warning Info 'All/Debug'
- logLevel: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- pubSub: PropTypes.shape({
- subscribe: PropTypes.func,
- publish: PropTypes.func
- })
- }),
- stringSet: PropTypes.objectOf(PropTypes.string),
- colorSet: PropTypes.objectOf(PropTypes.string)
-};
-Sendbird.defaultProps = {
- accessToken: '',
- theme: 'light',
- nickname: '',
- profileUrl: '',
- disableUserProfile: false,
- renderUserProfile: null,
- allowProfileEdit: false,
- userListQuery: null,
- config: {},
- stringSet: null,
- colorSet: null
-};
-
-var UserProfileContext = React.createContext({
- disableUserProfile: true,
- renderUserProfile: null
-});
-
-var UserProfileProvider = function UserProfileProvider(props) {
- var children = props.children,
- className = props.className;
- return React.createElement(UserProfileContext.Provider, {
- value: props
- }, React.createElement("div", {
- className: className
- }, children));
-};
-
-UserProfileProvider.propTypes = {
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
- // eslint-disable-next-line react/no-unused-prop-types
- disableUserProfile: PropTypes.bool,
- // eslint-disable-next-line react/no-unused-prop-types
- renderUserProfile: PropTypes.func,
- className: PropTypes.string
-};
-UserProfileProvider.defaultProps = {
- className: null,
- disableUserProfile: false,
- renderUserProfile: null
-};
-
-var RESET_CHANNEL_LIST = 'RESET_CHANNEL_LIST';
-var CREATE_CHANNEL = 'CREATE_CHANNEL';
-var LEAVE_CHANNEL_SUCCESS = 'LEAVE_CHANNEL_SUCCESS';
-var SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';
-var SHOW_CHANNEL_SETTINGS = 'SHOW_CHANNEL_SETTINGS';
-var HIDE_CHANNEL_SETTINGS = 'HIDE_CHANNEL_SETTINGS';
-var FETCH_CHANNELS_START = 'FETCH_CHANNELS_START';
-var FETCH_CHANNELS_SUCCESS = 'FETCH_CHANNELS_SUCCESS';
-var FETCH_CHANNELS_FAILURE = 'FETCH_CHANNELS_FAILURE';
-var INIT_CHANNELS_START = 'INIT_CHANNELS_START';
-var INIT_CHANNELS_SUCCESS = 'INIT_CHANNELS_SUCCESS';
-var INIT_CHANNELS_FAILURE = 'INIT_CHANNELS_FAILURE';
-var ON_USER_JOINED = 'ON_USER_JOINED';
-var ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';
-var ON_LAST_MESSAGE_UPDATED = 'ON_LAST_MESSAGE_UPDATED';
-var ON_USER_LEFT = 'ON_USER_LEFT';
-var ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';
-var ON_CHANNEL_ARCHIVED = 'ON_CHANNEL_ARCHIVED';
-var ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';
-var ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';
-var ON_READ_RECEIPT_UPDATED = 'ON_READ_RECEIPT_UPDATED';
-var ON_DELIVERY_RECEIPT_UPDATED = 'ON_DELIVERY_RECEIPT_UPDATED';
-var CHANNEL_REPLACED_TO_TOP = 'CHANNEL_REPLACED_TO_TOP';
-
-var channelListInitialState = {
- // we might not need this initialized state -> should remove
- initialized: false,
- loading: false,
- allChannels: [],
- currentChannel: null,
- showSettings: false
-};
-
-function reducer$2(state, action) {
- switch (action.type) {
- case INIT_CHANNELS_START:
- return _objectSpread2({}, state, {
- loading: true
- });
-
- case RESET_CHANNEL_LIST:
- return channelListInitialState;
-
- case INIT_CHANNELS_SUCCESS:
- return _objectSpread2({}, state, {
- initialized: true,
- loading: false,
- allChannels: action.payload,
- currentChannel: action.payload && action.payload.length && action.payload.length > 0 ? action.payload[0].url : null
- });
-
- case FETCH_CHANNELS_SUCCESS:
- {
- var currentChannels = state.allChannels.map(function (c) {
- return c.url;
- });
- var filteredChannels = action.payload.filter(function (_ref) {
- var url = _ref.url;
- return !currentChannels.find(function (c) {
- return c === url;
- });
- });
- return _objectSpread2({}, state, {
- allChannels: [].concat(_toConsumableArray(state.allChannels), _toConsumableArray(filteredChannels))
- });
- }
-
- case CREATE_CHANNEL:
- {
- return _objectSpread2({}, state, {
- allChannels: [action.payload].concat(_toConsumableArray(state.allChannels.filter(function (channel) {
- return channel.url !== action.payload.url;
- }))),
- currentChannel: action.payload.url
- });
- }
-
- case ON_CHANNEL_ARCHIVED:
- case LEAVE_CHANNEL_SUCCESS:
- case ON_CHANNEL_DELETED:
- {
- var channelUrl = action.payload;
- var leftCurrentChannel = state.currentChannel === channelUrl;
- var newAllChannels = state.allChannels.filter(function (_ref2) {
- var url = _ref2.url;
- return url !== channelUrl;
- });
- var currentChannel = leftCurrentChannel ? function () {
- return newAllChannels.length > 0 ? newAllChannels[0].url : '';
- }() : state.currentChannel;
- return _objectSpread2({}, state, {
- currentChannel: currentChannel,
- allChannels: newAllChannels
- });
- }
-
- case ON_USER_LEFT:
- {
- var _action$payload = action.payload,
- channel = _action$payload.channel,
- isMe = _action$payload.isMe;
- var url = channel.url;
-
- if (isMe) {
- var _leftCurrentChannel = url === state.currentChannel;
-
- var _newAllChannels2 = state.allChannels.filter(function (c) {
- return c.url !== url;
- });
-
- var _currentChannel = _leftCurrentChannel ? function () {
- return _newAllChannels2.length > 0 ? _newAllChannels2[0].url : '';
- }() : state.currentChannel;
-
- return _objectSpread2({}, state, {
- currentChannel: _currentChannel,
- allChannels: _newAllChannels2
- });
- } // other user left
-
-
- var _newAllChannels = state.allChannels.map(function (c) {
- return c.url === url ? channel : c;
- });
-
- return _objectSpread2({}, state, {
- allChannels: _newAllChannels
- });
- }
-
- case ON_USER_JOINED:
- case ON_CHANNEL_CHANGED:
- case ON_READ_RECEIPT_UPDATED:
- case ON_DELIVERY_RECEIPT_UPDATED:
- {
- var _state$allChannels = state.allChannels,
- allChannels = _state$allChannels === void 0 ? [] : _state$allChannels;
- var unreadMessageCount = action.payload.unreadMessageCount;
- var _channel = action.payload;
-
- if (!_channel.lastMessage) {
- return state;
- } // if its only an unread message count change, dont push to top
-
-
- if (unreadMessageCount === 0) {
- var _currentChannel2 = allChannels.find(function (_ref3) {
- var url = _ref3.url;
- return url === _channel.url;
- });
-
- var currentUnReadCount = _currentChannel2 && _currentChannel2.unreadMessageCount;
-
- if (currentUnReadCount === 0) {
- return _objectSpread2({}, state, {
- allChannels: allChannels.map(function (c) {
- if (c.url === _channel.url) {
- return _channel;
- }
-
- return c;
- })
- });
- }
- }
-
- return _objectSpread2({}, state, {
- allChannels: [action.payload].concat(_toConsumableArray(state.allChannels.filter(function (_ref4) {
- var url = _ref4.url;
- return url !== action.payload.url;
- })))
- });
- }
-
- case SET_CURRENT_CHANNEL:
- return _objectSpread2({}, state, {
- currentChannel: action.payload
- });
-
- case SHOW_CHANNEL_SETTINGS:
- return _objectSpread2({}, state, {
- showSettings: true
- });
-
- case HIDE_CHANNEL_SETTINGS:
- return _objectSpread2({}, state, {
- showSettings: false
- });
-
- case ON_LAST_MESSAGE_UPDATED:
- return _objectSpread2({}, state, {
- allChannels: state.allChannels.map(function (channel) {
- if (channel.url === action.payload.url) {
- return action.payload;
- }
-
- return channel;
- })
- });
-
- case ON_CHANNEL_FROZEN:
- return _objectSpread2({}, state, {
- allChannels: state.allChannels.map(function (channel) {
- if (channel.url === action.payload.url) {
- // eslint-disable-next-line no-param-reassign
- channel.isFrozen = true;
- return channel;
- }
-
- return channel;
- })
- });
-
- case ON_CHANNEL_UNFROZEN:
- return _objectSpread2({}, state, {
- allChannels: state.allChannels.map(function (channel) {
- if (channel.url === action.payload.url) {
- // eslint-disable-next-line no-param-reassign
- channel.isFrozen = false;
- return channel;
- }
-
- return channel;
- })
- });
-
- case CHANNEL_REPLACED_TO_TOP:
- return _objectSpread2({}, state, {
- allChannels: [action.payload].concat(_toConsumableArray(state.allChannels.filter(function (channel) {
- return channel.url !== action.payload.url;
- })))
- });
-
- default:
- return state;
- }
-}
-
-/*
- ImageRenderer displays image with url or source
- it checks if the source exist with img tag first
- if it exists onLoad is called, if not onError is called
- and those properties switch img tag to real purposing element
-*/
-
-function ImageRenderer(_ref) {
- var alt = _ref.alt,
- url = _ref.url,
- width = _ref.width,
- height = _ref.height,
- className = _ref.className,
- defaultComponent = _ref.defaultComponent,
- circle = _ref.circle;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift('sendbird-image-renderer');
-
- var _useState = useState(null),
- _useState2 = _slicedToArray(_useState, 2),
- realElement = _useState2[0],
- setRealElement = _useState2[1];
-
- useEffect(function () {
- setRealElement(null);
- }, [url]);
- return realElement || React.createElement("img", {
- className: "sendbird-image-renderer--hidden-placeholder",
- src: url,
- alt: alt,
- onError: function onError() {
- setRealElement(typeof defaultComponent === 'function' ? defaultComponent() : defaultComponent);
- },
- onLoad: function onLoad() {
- setRealElement(React.createElement("div", {
- className: injectingClassName.join(' '),
- style: {
- height: height,
- width: width,
- backgroundRepeat: 'no-repeat',
- backgroundPosition: 'center',
- backgroundSize: 'cover',
- backgroundImage: "url(".concat(url, ")"),
- borderRadius: circle ? '50%' : null
- }
- }));
- }
- });
-}
-ImageRenderer.propTypes = {
- alt: PropTypes.string,
- url: PropTypes.string.isRequired,
- width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
- height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
- className: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),
- defaultComponent: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired,
- circle: PropTypes.bool
-};
-ImageRenderer.defaultProps = {
- alt: '',
- className: '',
- circle: false
-};
-
-var Type = {
- ADD: 'ADD',
- ATTACH: 'ATTACH',
- ARROW_LEFT: 'ARROW_LEFT',
- AVATAR_DARK: 'AVATAR_DARK',
- AVATAR_LIGHT: 'AVATAR_LIGHT',
- BROADCAST_LARGE_DARK: 'BROADCAST_LARGE_DARK',
- BROADCAST_LARGE_LIGHT: 'BROADCAST_LARGE_LIGHT',
- BROADCAST_DARK: 'BROADCAST_DARK',
- BROADCAST_LIGHT: 'BROADCAST_LIGHT',
- BROADCAST: 'BROADCAST',
- FROZEN_DARK: 'FROZEN_DARK',
- FROZEN_LIGHT: 'FROZEN_LIGHT',
- CAMERA: 'CAMERA',
- MORE: 'MORE',
- MUTE: 'MUTE',
- NO_THUMBNAIL: 'NO_THUMBNAIL',
- CHECKBOX: 'CHECKBOX',
- CHECKBOX_OFF: 'CHECKBOX_OFF',
- CLOSE: 'CLOSE',
- COPY: 'COPY',
- CHAT: 'CHAT',
- CREATE: 'CREATE',
- DELETE: 'DELETE',
- DISCONNECTED: 'DISCONNECTED',
- DUMMY: 'DUMMY',
- EDIT: 'EDIT',
- ERROR: 'ERROR',
- ERROR_FILLED: 'ERROR_FILLED',
- EMOJI_FAILED: 'EMOJI_FAILED',
- EMOJI_REACTIONS_ADD: 'EMOJI_REACTIONS_ADD',
- EMOJI_REACTIONS_ADD_GRAY: 'EMOJI_REACTIONS_ADD_GRAY',
- DELIVERED: 'DELIVERED',
- DOCUMENT: 'DOCUMENT',
- DOWNLOAD: 'DOWNLOAD',
- FILE_AUDIO: 'FILE_AUDIO',
- FILE_DOCUMENT: 'FILE_DOCUMENT',
- GIF: 'GIF',
- INFO: 'INFO',
- LEAVE: 'LEAVE',
- MEMBERS: 'MEMBERS',
- NOTIFICATIONS: 'NOTIFICATIONS',
- PHOTO: 'PHOTO',
- PLAY: 'PLAY',
- PLUS: 'PLUS',
- READ: 'READ',
- REFRESH: 'REFRESH',
- SEND: 'SEND',
- SENT: 'SENT',
- SUPER_GROUP: 'SUPER_GROUP',
- SHEVRON: 'SHEVRON',
- SHEVRON_DOWN: 'SHEVRON_DOWN',
- SPINNER: 'SPINNER',
- SPINNER_LARGE: 'SPINNER_LARGE',
- USER: 'USER',
- ICON_OPERATOR: 'ICON_OPERATOR',
- ICON_BANNED: 'ICON_BANNED',
- ICON_FREEZE: 'ICON_FREEZE',
- ICON_MUTED: 'ICON_MUTED',
- ICON_MUTED_FG: 'ICON_MUTED_FG',
- TOGGLE_ON: 'TOGGLE_ON',
- TOGGLE_OFF: 'TOGGLE_OFF'
-};
-
-function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
-
-var _ref =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-add_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M19 2a3 3 0 013 3v14a3 3 0 01-3 3H5a3 3 0 01-3-3V5a3 3 0 013-3zm0 2H5a1 1 0 00-1 1v14a1 1 0 001 1h14a1 1 0 001-1V5a1 1 0 00-1-1zm-7 3a1 1 0 01.993.883L13 8v3h3a1 1 0 01.117 1.993L16 13h-3v3a1 1 0 01-1.993.117L11 16v-3H8a1 1 0 01-.117-1.993L8 11h3V8a1 1 0 011-1z"
-});
-
-function SvgIconAdd(props) {
- return React.createElement("svg", _extends({
- viewBox: "0 0 24 24"
- }, props), _ref);
-}
-
-function _extends$1() { _extends$1 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }
-
-var _ref$1 =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-attach_svg__fill",
- fillOpacity: 0.88,
- fillRule: "evenodd",
- d: "M19.021 9.943l-8.424 8.023c-1.795 1.71-4.723 1.71-6.518 0-1.77-1.685-1.77-4.398 0-6.084l8.424-8.023c1.079-1.027 2.845-1.027 3.924 0a2.461 2.461 0 010 3.614l-8.433 8.022a.984.984 0 01-1.33 0 .772.772 0 010-1.142l7.782-7.403a.917.917 0 00-1.264-1.328L5.4 13.025a2.605 2.605 0 000 3.798 2.816 2.816 0 003.858 0l8.433-8.022a4.294 4.294 0 000-6.27C15.905.83 13.025.83 11.24 2.531l-8.425 8.023c-2.528 2.408-2.528 6.332 0 8.74 2.504 2.384 6.544 2.384 9.047 0l8.425-8.023a.917.917 0 10-1.265-1.328z"
-});
-
-function SvgIconAttach(props) {
- return React.createElement("svg", _extends$1({
- viewBox: "0 0 22 22"
- }, props), _ref$1);
-}
-
-function _extends$2() { _extends$2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$2.apply(this, arguments); }
-
-var _ref$2 =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-arrow-left_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12.707 3.293a1 1 0 01.083 1.32l-.083.094L6.415 11H21a1 1 0 01.117 1.993L21 13H6.415l6.292 6.293a1 1 0 01.083 1.32l-.083.094a1 1 0 01-1.32.083l-.094-.083-8-8a1 1 0 01-.083-1.32l.083-.094 8-8a1 1 0 011.414 0z"
-});
-
-function SvgIconArrowLeft(props) {
- return React.createElement("svg", _extends$2({
- viewBox: "0 0 24 24"
- }, props), _ref$2);
-}
-
-function _extends$3() { _extends$3 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3.apply(this, arguments); }
-
-var _ref$3 =
-/*#__PURE__*/
-React.createElement("path", {
- fill: "#393939",
- d: "M0 0h56v56H0z"
-});
-
-var _ref2 =
-/*#__PURE__*/
-React.createElement("path", {
- fillOpacity: 0.88,
- d: "M34.667 31.333a8.334 8.334 0 018.325 7.972l.008.362V43a1.667 1.667 0 01-3.322.194L39.667 43v-3.333a5 5 0 00-4.707-4.992l-.293-.008H21.333a5 5 0 00-4.991 4.706l-.009.294V43a1.667 1.667 0 01-3.322.194L13 43v-3.333a8.333 8.333 0 017.972-8.326l.361-.008h13.334zm-6.667-20A8.333 8.333 0 1128 28a8.333 8.333 0 010-16.667zm0 3.334a5 5 0 100 10 5 5 0 000-10z"
-});
-
-function SvgIconAvatarDark(props) {
- return React.createElement("svg", _extends$3({
- viewBox: "0 0 56 56"
- }, props), _ref$3, _ref2);
-}
-
-function _extends$4() { _extends$4 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$4.apply(this, arguments); }
-
-var _ref$4 =
-/*#__PURE__*/
-React.createElement("path", {
- fill: "#A8A8A8",
- d: "M0 0h56v56H0z"
-});
-
-var _ref2$1 =
-/*#__PURE__*/
-React.createElement("path", {
- fill: "#FFF",
- fillOpacity: 0.88,
- d: "M34.667 31.333a8.334 8.334 0 018.325 7.972l.008.362V43a1.667 1.667 0 01-3.322.194L39.667 43v-3.333a5 5 0 00-4.707-4.992l-.293-.008H21.333a5 5 0 00-4.991 4.706l-.009.294V43a1.667 1.667 0 01-3.322.194L13 43v-3.333a8.333 8.333 0 017.972-8.326l.361-.008h13.334zm-6.667-20A8.333 8.333 0 1128 28a8.333 8.333 0 010-16.667zm0 3.334a5 5 0 100 10 5 5 0 000-10z"
-});
-
-function SvgIconAvatarLight(props) {
- return React.createElement("svg", _extends$4({
- viewBox: "0 0 56 56"
- }, props), _ref$4, _ref2$1);
-}
-
-function _extends$5() { _extends$5 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$5.apply(this, arguments); }
-
-var _ref$5 =
-/*#__PURE__*/
-React.createElement("g", {
- className: "icon-broadcast-lrg-dark_svg__fill",
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("circle", {
- cx: 28,
- cy: 28,
- r: 28,
- fill: "#6FD6BE"
-}), React.createElement("path", {
- fill: "#000",
- fillOpacity: 0.88,
- d: "M41.273 16.083c.04.128.06.262.06.397v23.04a1.333 1.333 0 01-1.731 1.273l-8.975-2.805A5.335 5.335 0 0120 37.333v-2.666h-2.667a4 4 0 01-3.995-3.8l-.005-.2v-5.334a4 4 0 014-4H20l19.602-6.125a1.332 1.332 0 011.67.875zM22.667 35.627v1.706a2.667 2.667 0 005.326.199l.007-.239-5.333-1.666zm16-17.334l-16 4.999v9.415l16 4.998V18.293zM20 24h-2.667c-.683 0-1.247.515-1.324 1.178l-.009.155v5.334c0 .736.597 1.333 1.333 1.333H20v-8z"
-}));
-
-function SvgIconBroadcastLrgDark(props) {
- return React.createElement("svg", _extends$5({
- viewBox: "0 0 56 56"
- }, props), _ref$5);
-}
-
-function _extends$6() { _extends$6 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$6.apply(this, arguments); }
-
-var _ref$6 =
-/*#__PURE__*/
-React.createElement("g", {
- className: "icon-broadcast-lrg-light_svg__fill",
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("circle", {
- cx: 28,
- cy: 28,
- r: 28,
- fill: "#2EBA9F"
-}), React.createElement("path", {
- fill: "#FFF",
- fillOpacity: 0.88,
- d: "M41.273 16.083c.04.128.06.262.06.397v23.04a1.333 1.333 0 01-1.731 1.273l-8.975-2.805A5.335 5.335 0 0120 37.333v-2.666h-2.667a4 4 0 01-3.995-3.8l-.005-.2v-5.334a4 4 0 014-4H20l19.602-6.125a1.332 1.332 0 011.67.875zM22.667 35.627v1.706a2.667 2.667 0 005.326.199l.007-.239-5.333-1.666zm16-17.334l-16 4.999v9.415l16 4.998V18.293zM20 24h-2.667c-.683 0-1.247.515-1.324 1.178l-.009.155v5.334c0 .736.597 1.333 1.333 1.333H20v-8z"
-}));
-
-function SvgIconBroadcastLrgLight(props) {
- return React.createElement("svg", _extends$6({
- viewBox: "0 0 56 56"
- }, props), _ref$6);
-}
-
-function _extends$7() { _extends$7 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$7.apply(this, arguments); }
-
-var _ref$7 =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-broadcast-dark_svg__fill",
- fill: "#6FD6BE",
- fillRule: "evenodd",
- d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
-});
-
-function SvgIconBroadcastDark(props) {
- return React.createElement("svg", _extends$7({
- viewBox: "0 0 16 16"
- }, props), _ref$7);
-}
-
-function _extends$8() { _extends$8 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$8.apply(this, arguments); }
-
-var _ref$8 =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-broadcast-light_svg__fill",
- fill: "#2EBA9F",
- fillRule: "evenodd",
- d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
-});
-
-function SvgIconBroadcastLight(props) {
- return React.createElement("svg", _extends$8({
- viewBox: "0 0 16 16"
- }, props), _ref$8);
-}
-
-function _extends$9() { _extends$9 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$9.apply(this, arguments); }
-
-var _ref$9 =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-broadcast_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
-});
-
-function SvgIconBroadcast(props) {
- return React.createElement("svg", _extends$9({
- viewBox: "0 0 16 16"
- }, props), _ref$9);
-}
-
-function _extends$a() { _extends$a = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$a.apply(this, arguments); }
-
-var _ref$a =
-/*#__PURE__*/
-React.createElement("path", {
- className: "frozen-dark_svg__fill",
- fill: "#9E8CF5",
- fillRule: "evenodd",
- d: "M10.409.806l.063.056c.24.24.259.618.055.88l-.055.063-1.805 1.804v3.236l2.801-1.618.662-2.465a.665.665 0 011.304.263l-.016.082-.56 2.088 2.088.56a.665.665 0 01.488.734l-.016.082a.666.666 0 01-.735.488l-.082-.016-2.465-.661L9.334 8l2.801 1.618 2.466-.66.082-.017a.667.667 0 01.735.488l.016.082a.666.666 0 01-.488.734l-2.088.56.56 2.088.016.082a.666.666 0 01-1.304.263l-.662-2.465-2.801-1.618v3.236l1.805 1.804a.668.668 0 01-.88.999l-.063-.056L8 13.61l-1.528 1.53a.668.668 0 01-.88.055l-.063-.056a.668.668 0 01-.056-.88l.056-.063 1.804-1.805V9.155L4.53 10.773l-.66 2.465a.667.667 0 01-1.304-.263l.017-.082.559-2.088-2.088-.56a.667.667 0 01-.488-.734l.017-.082a.665.665 0 01.734-.488l.082.016 2.466.66L6.666 8 3.864 6.382l-2.465.66-.082.017a.666.666 0 01-.734-.488L.566 6.49a.667.667 0 01.488-.734l2.088-.56-.56-2.088-.016-.082a.667.667 0 011.305-.263l.659 2.465 2.803 1.618V3.61L5.529 1.805a.668.668 0 01.88-.999l.063.056L8 2.39 9.53.862a.668.668 0 01.88-.056z"
-});
-
-function SvgFrozenDark(props) {
- return React.createElement("svg", _extends$a({
- viewBox: "0 0 16 16"
- }, props), _ref$a);
-}
-
-function _extends$b() { _extends$b = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$b.apply(this, arguments); }
-
-var _ref$b =
-/*#__PURE__*/
-React.createElement("path", {
- className: "frozen-light_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M10.409.806l.063.056c.24.24.259.618.055.88l-.055.063-1.805 1.804v3.236l2.801-1.618.662-2.465a.665.665 0 011.304.263l-.016.082-.56 2.088 2.088.56a.665.665 0 01.488.734l-.016.082a.666.666 0 01-.735.488l-.082-.016-2.465-.661L9.334 8l2.801 1.618 2.466-.66.082-.017a.667.667 0 01.735.488l.016.082a.666.666 0 01-.488.734l-2.088.56.56 2.088.016.082a.666.666 0 01-1.304.263l-.662-2.465-2.801-1.618v3.236l1.805 1.804a.668.668 0 01-.88.999l-.063-.056L8 13.61l-1.528 1.53a.668.668 0 01-.88.055l-.063-.056a.668.668 0 01-.056-.88l.056-.063 1.804-1.805V9.155L4.53 10.773l-.66 2.465a.667.667 0 01-1.304-.263l.017-.082.559-2.088-2.088-.56a.667.667 0 01-.488-.734l.017-.082a.665.665 0 01.734-.488l.082.016 2.466.66L6.666 8 3.864 6.382l-2.465.66-.082.017a.666.666 0 01-.734-.488L.566 6.49a.667.667 0 01.488-.734l2.088-.56-.56-2.088-.016-.082a.667.667 0 011.305-.263l.659 2.465 2.803 1.618V3.61L5.529 1.805a.668.668 0 01.88-.999l.063.056L8 2.39 9.53.862a.668.668 0 01.88-.056z"
-});
-
-function SvgFrozenLight(props) {
- return React.createElement("svg", _extends$b({
- viewBox: "0 0 16 16"
- }, props), _ref$b);
-}
-
-function _extends$c() { _extends$c = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$c.apply(this, arguments); }
-
-var _ref$c =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-camera_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M15 2a1 1 0 01.832.445L17.535 5H21a3 3 0 012.995 2.824L24 8v11a3 3 0 01-3 3H3a3 3 0 01-3-3V8a3 3 0 013-3h3.464l1.704-2.555a1 1 0 01.708-.437L9 2zm-.536 2H9.535L7.832 6.555a1 1 0 01-.708.437L7 7H3a1 1 0 00-1 1v11a1 1 0 001 1h18a1 1 0 001-1V8a1 1 0 00-1-1h-4a1 1 0 01-.832-.445L14.464 4zM12 8a5 5 0 110 10 5 5 0 010-10zm0 2a3 3 0 100 6 3 3 0 000-6z"
-});
-
-function SvgIconCamera(props) {
- return React.createElement("svg", _extends$c({
- viewBox: "0 0 24 24"
- }, props), _ref$c);
-}
-
-function _extends$d() { _extends$d = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$d.apply(this, arguments); }
-
-var _ref$d =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-more_svg__fill",
- fillRule: "evenodd",
- d: "M12 17a2 2 0 110 4 2 2 0 010-4zm0-6.5a2 2 0 110 4 2 2 0 010-4zM12 4a2 2 0 110 4 2 2 0 010-4z"
-});
-
-function SvgIconMore(props) {
- return React.createElement("svg", _extends$d({
- viewBox: "0 0 24 24"
- }, props), _ref$d);
-}
-
-function _extends$e() { _extends$e = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$e.apply(this, arguments); }
-
-var _ref$e =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-mute_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M15.125 20.09c0 .602-.694 2.41-2.778 2.41-1.389 0-2.315-.804-2.778-2.41zM12.789 1.606a6.496 6.496 0 015.388 2.861l2.464-2.463a.788.788 0 011.025-.077l.088.077a.788.788 0 010 1.113L3.378 21.494a.788.788 0 01-1.025.077l-.088-.077a.788.788 0 010-1.113l1.9-1.903-.04-.004a.387.387 0 01-.241-.596l1.557-2.295.001-.208a545.875 545.875 0 00-.028-6.563l-.008-.614a6.503 6.503 0 016.414-6.59h.969zm6.381 5.246c.08.407.122.827.122 1.257l-.001 7.53 1.52 2.238a.387.387 0 01-.32.604H7.54l3.214-3.214 8.415-8.415z"
-});
-
-function SvgIconMute(props) {
- return React.createElement("svg", _extends$e({
- viewBox: "0 0 24 24"
- }, props), _ref$e);
-}
-
-function _extends$f() { _extends$f = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$f.apply(this, arguments); }
-
-var _ref$f =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-no-thumbnail_svg__fill",
- fillOpacity: 0.5,
- fillRule: "evenodd",
- d: "M30.333 4.667a2.333 2.333 0 110 4.666H11.667a2.334 2.334 0 00-2.334 2.334v32.666c0 1.001.63 1.855 1.516 2.186l24.834-24.836a2.336 2.336 0 013.3 0l7.684 7.683v-3.7c0-1.234.96-2.245 2.173-2.327l.16-.006a2.333 2.333 0 012.333 2.334v18.666a7 7 0 01-7 7H11.665a6.999 6.999 0 01-6.998-7V11.667a7 7 0 017-7zm7 21.966L17.3 46.666h27.034a2.333 2.333 0 002.328-2.173l.006-.16v-8.367l-9.334-9.333zM19.833 14a5.834 5.834 0 110 11.668 5.834 5.834 0 010-11.668zm0 4.667a1.166 1.166 0 100 2.332 1.166 1.166 0 000-2.332zm29.85-15.65a2.334 2.334 0 013.3 3.3L48.8 10.499l4.184 4.184c.87.87.91 2.256.119 3.173l-.119.127a2.334 2.334 0 01-3.3 0L45.5 13.8l-4.183 4.184c-.87.87-2.256.91-3.173.119l-.127-.119a2.334 2.334 0 010-3.3L42.2 10.5l-4.183-4.182a2.334 2.334 0 01-.119-3.173l.119-.127a2.334 2.334 0 013.3 0L45.5 7.2z"
-});
-
-function SvgIconNoThumbnail(props) {
- return React.createElement("svg", _extends$f({
- viewBox: "0 0 56 56"
- }, props), _ref$f);
-}
-
-function _extends$g() { _extends$g = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$g.apply(this, arguments); }
-
-var _ref$g =
-/*#__PURE__*/
-React.createElement("g", {
- className: "icon-checkbox_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd"
-}, React.createElement("path", {
- d: "M18 1H6a5 5 0 00-5 5v12a5 5 0 005 5h12a5 5 0 005-5V6a5 5 0 00-5-5zm0 2a3 3 0 013 3v12a3 3 0 01-3 3H6a3 3 0 01-3-3V6a3 3 0 013-3h12z"
-}), React.createElement("path", {
- d: "M19 3H5a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V5a2 2 0 00-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
-}));
-
-function SvgIconCheckbox(props) {
- return React.createElement("svg", _extends$g({
- viewBox: "0 0 24 24"
- }, props), _ref$g);
-}
-
-function _extends$h() { _extends$h = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$h.apply(this, arguments); }
-
-var _ref$h =
-/*#__PURE__*/
-React.createElement("g", {
- className: "icon-checkbox-off_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd"
-}, React.createElement("path", {
- d: "M18 1H6a5 5 0 00-5 5v12a5 5 0 005 5h12a5 5 0 005-5V6a5 5 0 00-5-5zm0 2a3 3 0 013 3v12a3 3 0 01-3 3H6a3 3 0 01-3-3V6a3 3 0 013-3h12z"
-}), React.createElement("path", {
- d: "M19 19H5V5h14v14zm0-16H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
-}));
-
-function SvgIconCheckboxOff(props) {
- return React.createElement("svg", _extends$h({
- viewBox: "0 0 24 24"
- }, props), _ref$h);
-}
-
-function _extends$i() { _extends$i = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$i.apply(this, arguments); }
-
-var _ref$i =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-close_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M6.613 5.21l.094.083L12 10.585l5.293-5.292a1 1 0 011.497 1.32l-.083.094L13.415 12l5.292 5.293a1 1 0 01-1.32 1.497l-.094-.083L12 13.415l-5.293 5.292a1 1 0 01-1.497-1.32l.083-.094L10.585 12 5.293 6.707a1 1 0 011.32-1.497z"
-});
-
-function SvgIconClose(props) {
- return React.createElement("svg", _extends$i({
- viewBox: "0 0 24 24"
- }, props), _ref$i);
-}
-
-function _extends$j() { _extends$j = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$j.apply(this, arguments); }
-
-var _ref$j =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-copy_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M20 8a3 3 0 013 3v9a3 3 0 01-3 3h-9a3 3 0 01-3-3v-9a3 3 0 013-3zm0 2h-9a1 1 0 00-1 1v9a1 1 0 001 1h9a1 1 0 001-1v-9a1 1 0 00-1-1zm-7-9a3 3 0 012.995 2.824L16 4v1a1 1 0 01-1.993.117L14 5V4a1 1 0 00-.883-.993L13 3H4a1 1 0 00-.993.883L3 4v9a1 1 0 00.883.993L4 14h1a1 1 0 01.117 1.993L5 16H4a3 3 0 01-2.995-2.824L1 13V4a3 3 0 012.824-2.995L4 1h9z"
-});
-
-function SvgIconCopy(props) {
- return React.createElement("svg", _extends$j({
- viewBox: "0 0 24 24"
- }, props), _ref$j);
-}
-
-function _extends$k() { _extends$k = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$k.apply(this, arguments); }
-
-var _ref$k =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-chat_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11c-1.67 0-3.255-.373-4.673-1.039l-.657.218c-2.237.716-3.8.964-4.69.742-1.049-.261-1.256-.72-.62-1.373.439-.524.805-1.178 1.097-1.963.234-.625.142-1.5-.276-2.625A10.933 10.933 0 011 12C1 5.925 5.925 1 12 1zm0 2a9 9 0 00-8.187 12.742l.152.314.051.101.04.107c.569 1.532.709 2.859.275 4.02l-.143.365-.072.162.088-.019a23.181 23.181 0 001.832-.511l.646-.213.765-.26.73.343A8.962 8.962 0 0012 21a9 9 0 000-18z"
-});
-
-function SvgIconChat(props) {
- return React.createElement("svg", _extends$k({
- viewBox: "0 0 24 24"
- }, props), _ref$k);
-}
-
-function _extends$l() { _extends$l = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$l.apply(this, arguments); }
-
-var _ref$l =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-supergroup_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M16.139 18.818c2.89 0 5.303 2.05 5.438 4.696l.006.235v1.626a1.166 1.166 0 01-2.326.136l-.007-.136v-1.626c0-1.343-1.255-2.501-2.903-2.592l-.208-.006H11.86c-1.679 0-3.001 1.105-3.105 2.431l-.006.167v1.626a1.166 1.166 0 01-2.325.136l-.008-.136v-1.626c0-2.68 2.329-4.806 5.19-4.926l.254-.005h4.278zm8.128-7.565c.116 0 .232.018.343.052 2.026.624 3.289 2.1 3.384 4.239l.006.26v5.6a1.166 1.166 0 01-2.325.136l-.008-.137v-5.599c-.001-1.135-.509-1.825-1.543-2.202l-.046-.016h-1.095c-.598 0-1.091-.45-1.158-1.03l-.008-.136c0-.598.45-1.092 1.03-1.159l.136-.008h1.284zm-19.25 0l.136.008c.58.067 1.03.56 1.03 1.159l-.008.136c-.067.58-.56 1.03-1.158 1.03H3.919l-.052.018c-.983.372-1.533 1.126-1.534 2.252v5.547l-.008.136A1.166 1.166 0 010 21.404v-5.548l.006-.259c.099-2.132 1.402-3.681 3.374-4.29.112-.035.228-.053.345-.053h1.292zM14 8.732c2.412 0 4.375 1.928 4.375 4.318 0 2.39-1.963 4.319-4.375 4.319S9.625 15.44 9.625 13.05c0-2.39 1.963-4.318 4.375-4.318zm0 2.333c-1.132 0-2.042.893-2.042 1.985s.91 1.986 2.042 1.986c1.132 0 2.042-.894 2.042-1.986s-.91-1.985-2.042-1.985zM7.583 1.167c2.412 0 4.375 1.929 4.375 4.318 0 2.39-1.963 4.32-4.375 4.32-2.411 0-4.375-1.93-4.375-4.32 0-2.39 1.964-4.318 4.375-4.318zm12.834 0c2.411 0 4.375 1.929 4.375 4.318 0 2.39-1.964 4.32-4.375 4.32-2.412 0-4.375-1.93-4.375-4.32 0-2.39 1.963-4.318 4.375-4.318zM7.583 3.5c-1.132 0-2.041.894-2.041 1.985 0 1.092.91 1.986 2.041 1.986 1.132 0 2.042-.894 2.042-1.986 0-1.091-.91-1.985-2.042-1.985zm12.834 0c-1.132 0-2.042.894-2.042 1.985 0 1.092.91 1.986 2.042 1.986 1.132 0 2.041-.894 2.041-1.986 0-1.091-.91-1.985-2.041-1.985z"
-});
-
-function SvgIconSupergroup(props) {
- return React.createElement("svg", _extends$l({
- viewBox: "0 0 28 28"
- }, props), _ref$l);
-}
-
-function _extends$m() { _extends$m = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$m.apply(this, arguments); }
-
-var _ref$m =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-create_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11c-1.67 0-3.255-.373-4.673-1.039l-.657.218c-2.237.716-3.8.964-4.69.742-1.049-.261-1.256-.72-.62-1.373.439-.524.805-1.178 1.097-1.963.234-.625.142-1.5-.276-2.625A10.933 10.933 0 011 12C1 5.925 5.925 1 12 1zm0 2a9 9 0 00-8.187 12.742l.152.314.051.101.04.107c.569 1.532.709 2.859.275 4.02l-.143.365-.072.162.088-.019a23.181 23.181 0 001.832-.511l.646-.213.765-.26.73.343A8.962 8.962 0 0012 21a9 9 0 000-18zm1 6v2h2c1.333 0 1.333 2 0 2h-2v2c0 1.333-2 1.333-2 0v-2H9c-1.333 0-1.333-2 0-2h2V9c0-1.333 2-1.333 2 0z"
-});
-
-function SvgIconCreate(props) {
- return React.createElement("svg", _extends$m({
- viewBox: "0 0 24 24"
- }, props), _ref$m);
-}
-
-function _extends$n() { _extends$n = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$n.apply(this, arguments); }
-
-var _ref$n =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-delete_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M14 1a3 3 0 012.995 2.824L17 4v1h4a1 1 0 01.117 1.993L21 7h-1v13a3 3 0 01-2.824 2.995L17 23H7a3 3 0 01-2.995-2.824L4 20V7H3a1 1 0 01-.117-1.993L3 5h4V4a3 3 0 012.824-2.995L10 1h4zm4 6H6v13a1 1 0 00.883.993L7 21h10a1 1 0 00.993-.883L18 20V7zm-8 3a1 1 0 01.993.883L11 11v6a1 1 0 01-1.993.117L9 17v-6a1 1 0 011-1zm4 0a1 1 0 01.993.883L15 11v6a1 1 0 01-1.993.117L13 17v-6a1 1 0 011-1zm0-7h-4a1 1 0 00-.993.883L9 4v1h6V4a1 1 0 00-.883-.993L14 3z"
-});
-
-function SvgIconDelete(props) {
- return React.createElement("svg", _extends$n({
- viewBox: "0 0 24 24"
- }, props), _ref$n);
-}
-
-function _extends$o() { _extends$o = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$o.apply(this, arguments); }
-
-var _ref$o =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-dummy_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
-});
-
-function SvgIconDummy(props) {
- return React.createElement("svg", _extends$o({
- viewBox: "0 0 24 24"
- }, props), _ref$o);
-}
-
-function _extends$p() { _extends$p = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$p.apply(this, arguments); }
-
-var _ref$p =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-edit_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M21.875 21.875a1.042 1.042 0 01.121 2.076l-.121.007H3.125a1.042 1.042 0 01-.121-2.076l.121-.007h18.75zM13.847 1.347a1.042 1.042 0 011.473 0l4.167 4.166a1.042 1.042 0 010 1.474L8.028 18.445c-.195.195-.46.305-.736.305H3.125a1.042 1.042 0 01-1.042-1.042v-4.166c0-.277.11-.542.305-.737zm.736 2.21L4.167 13.973v2.694h2.691L17.276 6.25l-2.693-2.693z"
-});
-
-function SvgIconEdit(props) {
- return React.createElement("svg", _extends$p({
- viewBox: "0 0 26 26"
- }, props), _ref$p);
-}
-
-function _extends$q() { _extends$q = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$q.apply(this, arguments); }
-
-var _ref$q =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-error_svg__fill",
- fill: "#E53157",
- fillRule: "evenodd",
- d: "M8 1.265c.655 0 1.266.32 1.64.856l.072.11 5.652 9.436c.355.615.357 1.373.006 1.99-.33.579-.925.953-1.59 1.004l-.133.006H2.346a2.001 2.001 0 01-1.772-2.883l.067-.127 5.649-9.43A2 2 0 018 1.266zm0 1.333a.669.669 0 00-.52.248l-.048.07-5.641 9.417a.669.669 0 00.477.994l.085.006H13.64a.664.664 0 00.612-.914l-.036-.076L8.57 2.919a.663.663 0 00-.57-.32zm0 8.069A.667.667 0 118 12a.667.667 0 010-1.333zm0-5.334c.342 0 .624.258.662.59L8.667 6v2.667a.667.667 0 01-1.329.077l-.005-.077V6c0-.368.299-.667.667-.667z"
-});
-
-function SvgIconError(props) {
- return React.createElement("svg", _extends$q({
- viewBox: "0 0 16 16"
- }, props), _ref$q);
-}
-
-function _extends$r() { _extends$r = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$r.apply(this, arguments); }
-
-var _ref$r =
-/*#__PURE__*/
-React.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("path", {
- className: "icon-error-filled_svg__fill",
- fill: "#E53157",
- d: "M10.281 4.18L1.77 17.85a1.87 1.87 0 00-.005 1.924c.353.597 1.01.968 1.724.976h17.024a2.024 2.024 0 001.724-.976 1.87 1.87 0 00-.005-1.924L13.719 4.18A2.028 2.028 0 0012 3.25a2.03 2.03 0 00-1.719.93z"
-}), React.createElement("path", {
- fill: "#FFF",
- fillRule: "nonzero",
- d: "M11.125 12.875V8.5c0-1.167 1.75-1.167 1.75 0v4.375c0 1.167-1.75 1.167-1.75 0zm0 3.5c0-1.167 1.75-1.167 1.75 0s-1.75 1.167-1.75 0z"
-}));
-
-function SvgIconErrorFilled(props) {
- return React.createElement("svg", _extends$r({
- viewBox: "0 0 24 24"
- }, props), _ref$r);
-}
-
-function _extends$s() { _extends$s = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$s.apply(this, arguments); }
-
-var _ref$s =
-/*#__PURE__*/
-React.createElement("g", {
- className: "emoji-fail_svg__fill",
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("rect", {
- width: 26.526,
- height: 26.526,
- x: 0.737,
- y: 0.737,
- fill: "#FFF",
- rx: 4
-}), React.createElement("path", {
- fill: "#000",
- fillOpacity: 0.12,
- d: "M14 23.456a9.457 9.457 0 11.001-18.913A9.457 9.457 0 0114 23.456zm0-1.72a7.736 7.736 0 100-15.473 7.737 7.737 0 000 15.474zm.714-6.005a.86.86 0 11-1.72 0v-.867a.86.86 0 01.588-.816 5.248 5.248 0 001.084-.544c.592-.395.907-.815.907-1.22a1.72 1.72 0 00-3.341-.574.86.86 0 11-1.622-.57 3.438 3.438 0 016.682 1.145c0 1.1-.651 1.969-1.672 2.65a6.81 6.81 0 01-.906.508v.288zm-1.72 2.425a.86.86 0 011.72 0v.142a.86.86 0 11-1.72 0V18.156z"
-}));
-
-function SvgEmojiFail(props) {
- return React.createElement("svg", _extends$s({
- viewBox: "0 0 28 28"
- }, props), _ref$s);
-}
-
-function _extends$t() { _extends$t = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$t.apply(this, arguments); }
-
-var _ref$t =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-reactions-add_svg__fill",
- fillOpacity: 0.88,
- fillRule: "evenodd",
- d: "M11.033 1.107a9.98 9.98 0 012.669.362.734.734 0 01-.393 1.413A8.466 8.466 0 002.567 11.04 8.466 8.466 0 1019.2 8.8a.736.736 0 01.514-.902.735.735 0 01.901.514c.233.85.352 1.731.352 2.628 0 5.486-4.448 9.933-9.934 9.933-5.486 0-9.933-4.447-9.933-9.933s4.447-9.933 9.933-9.933zm3.68 11.96c.5 0 .854.49.696.965-.644 1.933-2.385 3.261-4.376 3.261-1.99 0-3.732-1.328-4.375-3.261a.733.733 0 01.597-.959l.098-.006h7.36zm-1.195 1.466h-4.97l.101.131a3.115 3.115 0 002.012 1.14l.198.018.174.005c.868 0 1.672-.38 2.254-1.012l.13-.15.101-.132zM7.353 7.547c.374 0 .683.28.728.641l.006.092v1.84a.734.734 0 01-1.461.092l-.006-.092V8.28c0-.405.328-.733.733-.733zm7.36 0c.374 0 .683.28.728.641l.006.092v1.84a.734.734 0 01-1.461.092l-.006-.092V8.28c0-.405.328-.733.733-.733zM18.398 0c.405 0 .733.328.733.733v2.218h2.209a.734.734 0 010 1.467h-2.21v2.209a.732.732 0 11-1.466 0V4.418h-2.217a.734.734 0 110-1.466l2.216-.001.001-2.218c0-.405.328-.733.733-.733z"
-});
-
-function SvgIconReactionsAdd(props) {
- return React.createElement("svg", _extends$t({
- viewBox: "0 0 22 22"
- }, props), _ref$t);
-}
-
-function _extends$u() { _extends$u = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$u.apply(this, arguments); }
-
-var _ref$u =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-emoji-reactions-add_svg__fill",
- fillOpacity: 0.38,
- fillRule: "evenodd",
- d: "M10.03 1.006c.828 0 1.643.112 2.426.33a.666.666 0 11-.357 1.284 7.741 7.741 0 00-2.069-.28 7.697 7.697 0 107.697 7.696c0-.696-.092-1.379-.272-2.037a.667.667 0 011.287-.352c.21.773.319 1.574.319 2.39a9.03 9.03 0 01-9.03 9.03 9.03 9.03 0 11-.001-18.06zm3.346 10.873c.455 0 .776.445.632.877-.585 1.757-2.168 2.965-3.978 2.965s-3.392-1.208-3.978-2.965a.667.667 0 01.538-.87l.095-.007h6.69zm-1.087 1.333H7.771l.092.12c.46.563 1.103.938 1.813 1.033l.196.018.158.005c.784 0 1.512-.341 2.04-.91l.128-.147.091-.12zM6.685 6.86c.34 0 .62.254.661.583l.006.083V9.2a.667.667 0 01-1.329.084L6.018 9.2V7.527c0-.368.299-.666.667-.666zm6.69 0c.34 0 .621.254.662.583l.005.083V9.2a.667.667 0 01-1.328.084L12.71 9.2V7.527c0-.368.299-.666.667-.666zM16.726 0c.368 0 .667.298.667.667l-.001 2.016H19.4a.667.667 0 010 1.334l-2.01-.001.002 2.008a.667.667 0 01-1.334 0V4.016h-2.016a.666.666 0 110-1.333h2.016V.667c0-.369.299-.667.667-.667z"
-});
-
-function SvgIconEmojiReactionsAdd(props) {
- return React.createElement("svg", _extends$u({
- viewBox: "0 0 20 20"
- }, props), _ref$u);
-}
-
-function _extends$v() { _extends$v = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$v.apply(this, arguments); }
-
-var _ref$v =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-delivered_svg__fill",
- fillOpacity: 0.38,
- fillRule: "evenodd",
- d: "M2.207 11.793l5 5a1 1 0 01-1.414 1.414l-5-5a1 1 0 011.414-1.414zm19.586-6a1 1 0 011.414 1.414l-11 11a1 1 0 01-1.414 0l-5-5a1 1 0 011.414-1.414l4.293 4.293zm-3.586 0a1 1 0 010 1.414l-5.999 5.999a1 1 0 01-1.414-1.414l5.999-6a1 1 0 011.414 0z"
-});
-
-function SvgIconDelivered(props) {
- return React.createElement("svg", _extends$v({
- viewBox: "0 0 24 24"
- }, props), _ref$v);
-}
-
-function _extends$w() { _extends$w = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$w.apply(this, arguments); }
-
-var _ref$w =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-disconnected_svg__fill",
- fillRule: "evenodd",
- d: "M3.55 2.276l.093.081L10.9 9.615a.895.895 0 01.148.147l10.594 10.595a.91.91 0 01-1.193 1.367l-.093-.081-5.015-5.015a.913.913 0 01-.705-.15 4.545 4.545 0 00-5.265 0 .91.91 0 01-1.053-1.483 6.358 6.358 0 014.24-1.151l-2.529-2.53c-1.4.316-2.706.96-3.81 1.883a.91.91 0 01-1.167-1.394 10.854 10.854 0 013.504-1.962L6.445 7.728a13.518 13.518 0 00-3.461 2.226.909.909 0 01-1.204-1.362 15.38 15.38 0 013.299-2.229l-2.722-2.72A.91.91 0 013.55 2.276zm13.14 8.052c.812.397 1.572.894 2.262 1.479a.908.908 0 11-1.177 1.386 9.015 9.015 0 00-1.883-1.23.91.91 0 01.798-1.635zm5.53-1.737a.91.91 0 01-1.203 1.363A13.642 13.642 0 0010.9 6.588a.91.91 0 01-.146-1.813A15.457 15.457 0 0122.22 8.591z"
-});
-
-function SvgIconDisconnected(props) {
- return React.createElement("svg", _extends$w({
- viewBox: "0 0 24 24"
- }, props), _ref$w);
-}
-
-function _extends$x() { _extends$x = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$x.apply(this, arguments); }
-
-var _ref$x =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-document_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M14 1a1.01 1.01 0 01.25.031l.03.009c.03.009.061.02.091.031l.027.012a.914.914 0 01.195.112c.04.03.078.062.114.098l-.093-.082.011.009.082.073 6 6a1.006 1.006 0 01.21.309l.012.027c.012.03.022.06.031.091l.008.03A.921.921 0 0121 8l-.008-.126.001.01L21 8v12a3 3 0 01-3 3H6a3 3 0 01-3-3V4a3 3 0 013-3h8zm-1 2H6a1 1 0 00-1 1v16a1 1 0 001 1h12a1 1 0 001-1V9h-5a1 1 0 01-.993-.883L13 8V3zm4.585 4L15 4.415V7h2.585z"
-});
-
-function SvgIconDocument(props) {
- return React.createElement("svg", _extends$x({
- viewBox: "0 0 24 24"
- }, props), _ref$x);
-}
-
-function _extends$y() { _extends$y = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$y.apply(this, arguments); }
-
-var _ref$y =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-download_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M21 16a1 1 0 01.993.883L22 17v3a3 3 0 01-2.824 2.995L19 23H5a3 3 0 01-2.995-2.824L2 20v-3a1 1 0 011.993-.117L4 17v3a1 1 0 00.883.993L5 21h14a1 1 0 00.993-.883L20 20v-3a1 1 0 011-1zM12 1a1 1 0 01.993.883L13 2v11.585l2.293-2.292a1 1 0 011.32-.083l.094.083a1 1 0 01.083 1.32l-.083.094-4 4a1.006 1.006 0 01-.09.08l.09-.08a1.008 1.008 0 01-.674.292L12 17h-.032l-.054-.004L12 17a1.008 1.008 0 01-.613-.21 1.037 1.037 0 01-.094-.083l-4-4a1 1 0 011.32-1.497l.094.083L11 13.585V2a1 1 0 011-1z"
-});
-
-function SvgIconDownload(props) {
- return React.createElement("svg", _extends$y({
- viewBox: "0 0 24 24"
- }, props), _ref$y);
-}
-
-function _extends$z() { _extends$z = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$z.apply(this, arguments); }
-
-var _ref$z =
-/*#__PURE__*/
-React.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("rect", {
- fill: "#FFF",
- fillRule: "nonzero",
- rx: 10
-}), React.createElement("path", {
- className: "icon-file-audio_svg__fill",
- fill: "#7B53EF",
- d: "M18.815 9.185c2.913 2.934 2.913 7.696 0 10.63a.617.617 0 01-.894-.013.67.67 0 01.012-.925 6.215 6.215 0 000-8.754.67.67 0 01-.012-.925.617.617 0 01.894-.013zm-5.291 0a.646.646 0 011.044.517v9.596c0 .544-.62.85-1.044.516l-3.31-2.702H7.646A.65.65 0 017 16.458v-3.916a.65.65 0 01.647-.654h2.566zm2.886 2.42a4.113 4.113 0 010 5.783.617.617 0 01-.893-.012.67.67 0 01.012-.925 2.772 2.772 0 000-3.908.67.67 0 01-.012-.925.617.617 0 01.893-.013z"
-}));
-
-function SvgIconFileAudio(props) {
- return React.createElement("svg", _extends$z({
- viewBox: "0 0 28 28"
- }, props), _ref$z);
-}
-
-function _extends$A() { _extends$A = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$A.apply(this, arguments); }
-
-var _ref$A =
-/*#__PURE__*/
-React.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("rect", {
- fill: "#FFF",
- fillRule: "nonzero",
- rx: 10
-}), React.createElement("path", {
- className: "icon-file-document_svg__fill",
- fill: "#7B53EF",
- d: "M16.317 5.667H9.05C7.907 5.667 7 6.58 7 7.687v12.625c0 1.107.907 2.021 2.05 2.021h9.9c1.143 0 2.05-.914 2.05-2.02v-9.97a.673.673 0 00-.198-.473l-3.95-3.984a.753.753 0 00-.535-.22z"
-}), React.createElement("path", {
- fill: "#FFF",
- d: "M17.025 16.667c.354 0 .642.302.642.675 0 .372-.288.675-.642.675h-6.383c-.355 0-.642-.303-.642-.675 0-.373.287-.675.642-.675zm0-2.667c.354 0 .642.302.642.675 0 .373-.288.675-.642.675h-6.383c-.355 0-.642-.302-.642-.675 0-.373.287-.675.642-.675zm-3.357-2.667c.369 0 .668.303.668.675 0 .373-.3.675-.668.675h-3a.672.672 0 01-.668-.675c0-.372.3-.675.668-.675z"
-}));
-
-function SvgIconFileDocument(props) {
- return React.createElement("svg", _extends$A({
- viewBox: "0 0 28 28"
- }, props), _ref$A);
-}
-
-function _extends$B() { _extends$B = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$B.apply(this, arguments); }
-
-var _ref$B =
-/*#__PURE__*/
-React.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("circle", {
- cx: 28,
- cy: 28,
- r: 28,
- fill: "#FFF",
- fillOpacity: 0.88
-}), React.createElement("path", {
- className: "icon-gif_svg__fill",
- fill: "#000",
- fillOpacity: 0.55,
- d: "M20.608 35.182c1.094 0 2.09-.162 2.99-.487.899-.325 1.595-.783 2.087-1.372v-5.296h-5.223v2.015h2.489v2.287c-.438.438-1.17.657-2.197.657-1.02 0-1.796-.356-2.324-1.067-.529-.71-.793-1.762-.793-3.153v-.848c.006-1.38.252-2.418.738-3.117.486-.699 1.194-1.048 2.124-1.048.729 0 1.302.176 1.718.528.416.353.685.909.806 1.668h2.662c-.164-1.434-.69-2.526-1.577-3.276s-2.118-1.126-3.691-1.126c-1.13 0-2.116.257-2.958.77-.842.514-1.486 1.255-1.932 2.224-.447.97-.67 2.116-.67 3.44v.903c.012 1.288.253 2.41.724 3.363.471.954 1.14 1.682 2.006 2.183.865.502 1.873.752 3.021.752zm10.2-.182V21.73h-2.735V35h2.734zm5.268 0v-5.423h5.25V27.37h-5.25v-3.427h5.906v-2.215h-8.64V35h2.734z"
-}));
-
-function SvgIconGif(props) {
- return React.createElement("svg", _extends$B({
- viewBox: "0 0 56 56"
- }, props), _ref$B);
-}
-
-function _extends$C() { _extends$C = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$C.apply(this, arguments); }
-
-var _ref$C =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-info_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1zm0 2a9 9 0 100 18 9 9 0 000-18zm0 8a1 1 0 011 1v4a1 1 0 01-2 0v-4a1 1 0 011-1zm0-3a1 1 0 110 2 1 1 0 010-2z"
-});
-
-function SvgIconInfo(props) {
- return React.createElement("svg", _extends$C({
- viewBox: "0 0 24 24"
- }, props), _ref$C);
-}
-
-function _extends$D() { _extends$D = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$D.apply(this, arguments); }
-
-var _ref$D =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-leave_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 2a1 1 0 01.117 1.993L12 4H4a1 1 0 00-.993.883L3 5v14a1 1 0 00.883.993L4 20h8a1 1 0 01.117 1.993L12 22H4a3 3 0 01-2.995-2.824L1 19V5a3 3 0 012.824-2.995L4 2h8zm6.613 5.21l.094.083 4 4a1 1 0 01.083 1.32l-.083.094-4 4a1 1 0 01-1.497-1.32l.083-.094 1.792-1.793H7.5a1 1 0 01-.117-1.993L7.5 11.5h12.585l-2.792-2.793a1 1 0 01-.083-1.32l.083-.094a1 1 0 011.32-.083z"
-});
-
-function SvgIconLeave(props) {
- return React.createElement("svg", _extends$D({
- viewBox: "0 0 24 24"
- }, props), _ref$D);
-}
-
-function _extends$E() { _extends$E = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$E.apply(this, arguments); }
-
-var _ref$E =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-members_svg__fill",
- fillRule: "evenodd",
- d: "M13 14a5 5 0 014.995 4.783L18 19v2a1 1 0 01-1.993.117L16 21v-2a3 3 0 00-2.824-2.995L13 16H5a3 3 0 00-2.995 2.824L2 19v2a1 1 0 01-1.993.117L0 21v-2a5 5 0 014.783-4.995L5 14h8zm7.25.162a5 5 0 013.745 4.611L24 19v2a1 1 0 01-1.993.117L22 21v-2a3 3 0 00-2.25-2.902 1 1 0 11.5-1.936zM9 2a5 5 0 110 10A5 5 0 019 2zm7.248.161a5 5 0 010 9.688 1 1 0 01-.496-1.938 3 3 0 000-5.812 1 1 0 11.496-1.938zM9 4a3 3 0 100 6 3 3 0 000-6z"
-});
-
-function SvgIconMembers(props) {
- return React.createElement("svg", _extends$E({
- viewBox: "0 0 24 24"
- }, props), _ref$E);
-}
-
-function _extends$F() { _extends$F = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$F.apply(this, arguments); }
-
-var _ref$F =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-notifications_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M13.73 20a1 1 0 01.865 1.502 3 3 0 01-5.19 0 1 1 0 01.752-1.496L10.27 20h3.46zM12 1a8 8 0 017.996 7.75L20 9v5a2 2 0 001.85 1.995l.283.012c1.111.12 1.154 1.73.128 1.965l-.128.021L22 18H2l-.133-.007c-1.156-.124-1.156-1.862 0-1.986l.282-.012a2 2 0 001.845-1.838L4 14V9a8 8 0 018-8zm0 2a6 6 0 00-5.996 5.775L6 9v5c0 .586-.126 1.142-.352 1.643l-.103.212-.082.145h13.073l-.08-.145a3.973 3.973 0 01-.43-1.402l-.021-.253L18 14V9a6 6 0 00-6-6z"
-});
-
-function SvgIconNotifications(props) {
- return React.createElement("svg", _extends$F({
- viewBox: "0 0 24 24"
- }, props), _ref$F);
-}
-
-function _extends$G() { _extends$G = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$G.apply(this, arguments); }
-
-var _ref$G =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-photo_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M19 2a3 3 0 013 3v14a3 3 0 01-3 3H4.941v-.002l-.117-.003A3 3 0 012 19V5a3 3 0 013-3zm-3 9.415L7.414 20H19a1 1 0 00.993-.883L20 19v-3.585l-4-4zM19 4H5a1 1 0 00-1 1v14a1 1 0 00.65.937L15.292 9.293a1 1 0 011.32-.083l.094.083L20 12.585V5a1 1 0 00-.883-.993L19 4zM8.5 6a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm0 2a.5.5 0 100 1 .5.5 0 000-1z"
-});
-
-function SvgIconPhoto(props) {
- return React.createElement("svg", _extends$G({
- viewBox: "0 0 24 24"
- }, props), _ref$G);
-}
-
-function _extends$H() { _extends$H = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$H.apply(this, arguments); }
-
-var _ref$H =
-/*#__PURE__*/
-React.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("circle", {
- cx: 28,
- cy: 28,
- r: 28,
- fill: "#FFF",
- fillOpacity: 0.88
-}), React.createElement("path", {
- className: "icon-play_svg__fill",
- fill: "#000",
- fillOpacity: 0.55,
- d: "M38.91 29.987c1.009-.63 1.007-1.664.007-2.304l-17.29-11.055c-1.006-.643-1.809-.2-1.793 1.004l.277 21.891c.015 1.198.847 1.657 1.855 1.029L38.91 29.987z"
-}));
-
-function SvgIconPlay(props) {
- return React.createElement("svg", _extends$H({
- viewBox: "0 0 56 56"
- }, props), _ref$H);
-}
-
-function _extends$I() { _extends$I = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$I.apply(this, arguments); }
-
-var _ref$I =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-plus_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M13 11h7c1.333 0 1.333 2 0 2h-7v7c0 1.333-2 1.333-2 0v-7H4c-1.333 0-1.333-2 0-2h7V4c0-1.333 2-1.333 2 0v7z"
-});
-
-function SvgIconPlus(props) {
- return React.createElement("svg", _extends$I({
- viewBox: "0 0 24 24"
- }, props), _ref$I);
-}
-
-function _extends$J() { _extends$J = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$J.apply(this, arguments); }
-
-var _ref$J =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-read_svg__fill",
- fill: "#2EBA9F",
- fillRule: "evenodd",
- d: "M2.207 11.793l5 5a1 1 0 01-1.414 1.414l-5-5a1 1 0 011.414-1.414zm19.586-6a1 1 0 011.414 1.414l-11 11a1 1 0 01-1.414 0l-5-5a1 1 0 011.414-1.414l4.293 4.293zm-3.586 0a1 1 0 010 1.414l-5.999 5.999a1 1 0 01-1.414-1.414l5.999-6a1 1 0 011.414 0z"
-});
-
-function SvgIconRead(props) {
- return React.createElement("svg", _extends$J({
- viewBox: "0 0 24 24"
- }, props), _ref$J);
-}
-
-function _extends$K() { _extends$K = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$K.apply(this, arguments); }
-
-var _ref$K =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-refresh_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M14.419 4.51l.175.167 2.073 1.927V4.167c0-.428.321-.78.736-.828l.097-.006c.427 0 .78.322.828.736l.005.098v5c0 .427-.321.78-.736.827L17.5 10h-5a.833.833 0 01-.097-1.661l.097-.006h3.578L13.44 5.88a5.982 5.982 0 00-7.05-.986C4.083 6.15 2.898 8.756 3.48 11.286c.58 2.534 2.792 4.385 5.425 4.537 2.635.152 5.05-1.433 5.928-3.883a.833.833 0 011.569.561c-1.127 3.15-4.223 5.18-7.593 4.986-3.37-.195-6.206-2.57-6.954-5.828-.748-3.261.778-6.617 3.738-8.229 2.884-1.57 6.453-1.118 8.826 1.08z"
-});
-
-function SvgIconRefresh(props) {
- return React.createElement("svg", _extends$K({
- width: 20,
- height: 20
- }, props), _ref$K);
-}
-
-function _extends$L() { _extends$L = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$L.apply(this, arguments); }
-
-var _ref$L =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-send_svg__fill",
- fillRule: "evenodd",
- d: "M20.554 10.117L2.52 1.024C1.613.619.605 1.428 1.008 2.337l2.115 5.685a2 2 0 001.545 1.275l10.345 1.73-10.345 1.728a2 2 0 00-1.545 1.275l-2.115 5.685c-.302.91.605 1.718 1.511 1.213l18.035-9.094c.706-.303.706-1.313 0-1.717z"
-});
-
-function SvgIconSend(props) {
- return React.createElement("svg", _extends$L({
- viewBox: "0 0 22 22"
- }, props), _ref$L);
-}
-
-function _extends$M() { _extends$M = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$M.apply(this, arguments); }
-
-var _ref$M =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-sent_svg__fill",
- fillOpacity: 0.38,
- fillRule: "evenodd",
- d: "M4.707 11.793a1 1 0 10-1.414 1.414l5 5a1 1 0 001.414 0l11-11a1 1 0 10-1.414-1.414L9 16.086l-4.293-4.293z"
-});
-
-function SvgIconSent(props) {
- return React.createElement("svg", _extends$M({
- viewBox: "0 0 24 24"
- }, props), _ref$M);
-}
-
-function _extends$N() { _extends$N = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$N.apply(this, arguments); }
-
-var _ref$N =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-shevron_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M8.293 17.293a1 1 0 001.414 1.414l6-6a1 1 0 000-1.414l-6-6a1 1 0 00-1.414 1.414L13.586 12l-5.293 5.293z"
-});
-
-function SvgIconShevron(props) {
- return React.createElement("svg", _extends$N({
- viewBox: "0 0 24 24"
- }, props), _ref$N);
-}
-
-function _extends$O() { _extends$O = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$O.apply(this, arguments); }
-
-var _ref$O =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-shevron-down_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M6.045 8.205a1.125 1.125 0 10-1.59 1.59l6.75 6.75c.439.44 1.151.44 1.59 0l6.75-6.75a1.125 1.125 0 10-1.59-1.59L12 14.159 6.045 8.205z"
-});
-
-function SvgIconShevronDown(props) {
- return React.createElement("svg", _extends$O({
- viewBox: "0 0 24 24"
- }, props), _ref$O);
-}
-
-function _extends$P() { _extends$P = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$P.apply(this, arguments); }
-
-var _ref$P =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-spinner-small_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 22.5c5.799 0 10.5-4.701 10.5-10.5S17.799 1.5 12 1.5 1.5 6.201 1.5 12a1.432 1.432 0 002.864 0A7.636 7.636 0 1112 19.636a1.432 1.432 0 000 2.864z"
-});
-
-function SvgIconSpinnerSmall(props) {
- return React.createElement("svg", _extends$P({
- viewBox: "0 0 24 24"
- }, props), _ref$P);
-}
-
-function _extends$Q() { _extends$Q = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Q.apply(this, arguments); }
-
-var _ref$Q =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-spinner-large_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24a2.323 2.323 0 104.645 0C4.645 13.31 13.311 4.645 24 4.645c10.69 0 19.355 8.666 19.355 19.355 0 10.69-8.666 19.355-19.355 19.355A2.323 2.323 0 0024 48z"
-});
-
-function SvgIconSpinnerLarge(props) {
- return React.createElement("svg", _extends$Q({
- viewBox: "0 0 48 48"
- }, props), _ref$Q);
-}
-
-function _extends$R() { _extends$R = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$R.apply(this, arguments); }
-
-var _ref$R =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-user_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M16 14a5 5 0 014.995 4.783L21 19v2a1 1 0 01-1.993.117L19 21v-2a3 3 0 00-2.824-2.995L16 16H8a3 3 0 00-2.995 2.824L5 19v2a1 1 0 01-1.993.117L3 21v-2a5 5 0 014.783-4.995L8 14h8zM12 2a5 5 0 110 10 5 5 0 010-10zm0 2a3 3 0 100 6 3 3 0 000-6z"
-});
-
-function SvgIconUser(props) {
- return React.createElement("svg", _extends$R({
- viewBox: "0 0 24 24"
- }, props), _ref$R);
-}
-
-function _extends$S() { _extends$S = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$S.apply(this, arguments); }
-
-var _ref$S =
-/*#__PURE__*/
-React.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("path", {
- className: "icon-operator_svg__stroke",
- d: "M2 6l5 4 5-7 5 7 5-4-3 14H5z"
-}), React.createElement("circle", {
- className: "icon-operator_svg__fill",
- cx: 12,
- cy: 14,
- r: 2
-}));
-
-function SvgIconOperator(props) {
- return React.createElement("svg", _extends$S({
- viewBox: "0 0 24 24"
- }, props), _ref$S);
-}
-
-function _extends$T() { _extends$T = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$T.apply(this, arguments); }
-
-var _ref$T =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-banned_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1zm0 2a9 9 0 10.001 18.001A9 9 0 0012 3zm4 8a1 1 0 010 2H8a1 1 0 010-2h8z"
-});
-
-function SvgIconBanned(props) {
- return React.createElement("svg", _extends$T({
- viewBox: "0 0 24 24"
- }, props), _ref$T);
-}
-
-function _extends$U() { _extends$U = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$U.apply(this, arguments); }
-
-var _ref$U =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-muted_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M20.857 7.357l.026.045A9.96 9.96 0 0122 12a9.937 9.937 0 01-1.074 4.51c-.38 1.021-.463 1.817-.25 2.386.265.713.598 1.308.997 1.784.578.594.39 1.01-.565 1.249-.763.19-2.073 0-3.929-.571l-.333-.105-.598-.198A9.965 9.965 0 0112 22a9.952 9.952 0 01-4.622-1.13l-.022-.011 1.5-1.5c.982.42 2.046.641 3.144.641 1.073 0 2.114-.21 3.079-.613l.318-.142.722-.339 1.355.449.26.082c.228.07.445.133.65.19l.298.08.182.045-.063-.157-.075-.223c-.295-.974-.189-2.057.225-3.275l.1-.284.04-.107.198-.406A7.949 7.949 0 0020 12a7.97 7.97 0 00-.64-3.143l1.497-1.5zM12 2c2.401 0 4.604.846 6.328 2.257l1.965-1.964a1 1 0 011.497 1.32l-.083.094-18 18a1 1 0 01-1.497-1.32l.083-.094 1.963-1.965a9.956 9.956 0 01-2.25-5.998L2 12C2 6.477 6.477 2 12 2zm0 2a8 8 0 00-6.32 12.906L16.905 5.68a7.957 7.957 0 00-4.607-1.675L12 4z"
-});
-
-function SvgIconMuted(props) {
- return React.createElement("svg", _extends$U({
- viewBox: "0 0 24 24"
- }, props), _ref$U);
-}
-
-function _extends$V() { _extends$V = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$V.apply(this, arguments); }
-
-var _ref$V =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-muted-foreground_svg__fill",
- fill: "#FFF",
- fillOpacity: 0.88,
- fillRule: "evenodd",
- d: "M13.904 4.904l.018.03c.476.919.745 1.96.745 3.066a6.628 6.628 0 01-.716 3.006c-.253.682-.309 1.212-.168 1.591.178.476.4.872.666 1.19.385.396.26.674-.377.832-.503.125-1.361.003-2.576-.367l-.266-.083-.398-.132c-.86.404-1.82.63-2.832.63a6.632 6.632 0 01-3.082-.754l-.014-.007 1-1c.655.28 1.364.427 2.096.427a5.32 5.32 0 001.999-.386l.266-.117.481-.226.903.299.174.055c.152.047.296.089.433.126l.199.054.121.03-.042-.105-.05-.149c-.192-.635-.129-1.34.133-2.132l.084-.24.026-.071.132-.271a5.294 5.294 0 00.474-2.2c0-.732-.147-1.44-.427-2.096l.998-1zm.567-3.375c.24.24.26.618.056.88l-.056.062-12 12a.666.666 0 01-.998-.88l.056-.062 1.31-1.31a6.636 6.636 0 01-1.5-3.94L1.333 8A6.667 6.667 0 0112.22 2.838l1.309-1.31c.26-.26.682-.26.942 0zM8 2.667a5.332 5.332 0 00-4.213 8.603l7.484-7.484a5.32 5.32 0 00-3.006-1.113L8 2.667z"
-});
-
-function SvgIconMutedForeground(props) {
- return React.createElement("svg", _extends$V({
- viewBox: "0 0 16 16"
- }, props), _ref$V);
-}
-
-function _extends$W() { _extends$W = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$W.apply(this, arguments); }
-
-var _ref$W =
-/*#__PURE__*/
-React.createElement("path", {
- className: "icon-freeze_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M9.613 1.21l.095.083L12 3.585l2.293-2.292a1 1 0 011.32-.083l.095.083a1 1 0 01.083 1.32l-.083.094L13 5.414v4.853l4.203-2.427.992-3.697a1 1 0 011.957.395l-.025.123-.84 3.131 3.133.84c.492.132.8.61.732 1.102l-.025.123c-.132.492-.61.8-1.102.732l-.123-.025-3.698-.991L14.001 12l4.203 2.426 3.698-.99.123-.025c.492-.068.97.24 1.102.732l.025.123a1 1 0 01-.732 1.102l-3.133.839.84 3.132.025.123a1 1 0 01-1.957.395l-.992-3.698L13 13.732v4.853l2.708 2.708a1 1 0 01-1.32 1.497l-.095-.083L12 20.414l-2.292 2.293a1 1 0 01-1.32.083l-.095-.083a1 1 0 01-.083-1.32l.083-.094L11 18.585v-4.853l-4.203 2.427-.99 3.698a1.002 1.002 0 01-1.958-.395l.025-.123.839-3.131-3.132-.84c-.492-.132-.8-.61-.732-1.102l.025-.123c.132-.492.61-.8 1.102-.732l.123.025 3.697.99 4.203-2.427-4.203-2.426-3.697.991-.123.025c-.492.068-.97-.24-1.102-.732L.85 9.734a1 1 0 01.732-1.102l3.132-.84-.839-3.131-.025-.123a1 1 0 011.957-.395l.991 3.697L11 10.267V5.414L8.293 2.707a1 1 0 011.32-1.497z"
-});
-
-function SvgIconFreeze(props) {
- return React.createElement("svg", _extends$W({
- viewBox: "0 0 24 24"
- }, props), _ref$W);
-}
-
-function _extends$X() { _extends$X = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$X.apply(this, arguments); }
-
-var _ref$X =
-/*#__PURE__*/
-React.createElement("g", {
- className: "icon-toggleon_svg__fill",
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("rect", {
- width: 40,
- height: 20,
- x: 2,
- y: 2,
- fill: "#7B53EF",
- rx: 10
-}), React.createElement("circle", {
- cx: 32,
- cy: 12,
- r: 6,
- fill: "#FFF"
-}), React.createElement("path", {
- fill: "#7B53EF",
- d: "M32 0H12C5.373 0 0 5.373 0 12s5.373 12 12 12h20c6.627 0 12-5.373 12-12S38.627 0 32 0zm0 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20z"
-}));
-
-function SvgIconToggleon(props) {
- return React.createElement("svg", _extends$X({
- viewBox: "0 0 44 24"
- }, props), _ref$X);
-}
-
-function _extends$Y() { _extends$Y = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Y.apply(this, arguments); }
-
-var _ref$Y =
-/*#__PURE__*/
-React.createElement("g", {
- className: "icon-toggleoff_svg__fill",
- fill: "none",
- fillRule: "evenodd"
-}, React.createElement("rect", {
- width: 40,
- height: 20,
- x: 2,
- y: 2,
- fill: "#A8A8A8",
- rx: 10
-}), React.createElement("circle", {
- cx: 12,
- cy: 12,
- r: 6,
- fill: "#FFF"
-}), React.createElement("path", {
- fill: "#A8A8A8",
- d: "M32 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20zm0 1H12a9 9 0 00-.265 17.996L12 21h20a9 9 0 00.265-17.996L32 3z"
-}), React.createElement("path", {
- fill: "#FFF",
- d: "M32 0H12C5.373 0 0 5.373 0 12s5.373 12 12 12h20c6.627 0 12-5.373 12-12S38.627 0 32 0zm0 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20z"
-}));
-
-function SvgIconToggleoff(props) {
- return React.createElement("svg", _extends$Y({
- viewBox: "0 0 44 24"
- }, props), _ref$Y);
-}
-
-var Colors = {
- DEFAULT: 'DEFAULT',
- PRIMARY: 'PRIMARY',
- SECONDARY: 'SECONDARY',
- CONTENT: 'CONTENT',
- CONTENT_INVERSE: 'CONTENT_INVERSE',
- WHITE: 'WHITE',
- SENT: 'SENT',
- READ: 'READ',
- ON_BACKGROUND_3: 'ON_BACKGROUND_3'
-};
-
-function changeColorToClassName(color) {
- switch (color) {
- case Colors.PRIMARY:
- return 'sendbird-color--primary';
-
- case Colors.SECONDARY:
- return 'sendbird-color--secondary';
-
- case Colors.CONTENT:
- return 'sendbird-color--content';
-
- case Colors.CONTENT_INVERSE:
- return 'sendbird-color--content-inverse';
-
- case Colors.WHITE:
- return 'sendbird-color--white';
-
- case Colors.SENT:
- return 'sendbird-color--sent';
-
- case Colors.READ:
- return 'sendbird-color--read';
-
- case Colors.ON_BACKGROUND_3:
- return 'sendbird-color--on-background';
-
- default:
- return '';
- }
-}
-
-function changeTypeToIconComponent(type) {
- switch (type) {
- case Type.ADD:
- return React.createElement(SvgIconAdd, null);
-
- case Type.ARROW_LEFT:
- return React.createElement(SvgIconArrowLeft, null);
-
- case Type.CAMERA:
- return React.createElement(SvgIconCamera, null);
-
- case Type.ATTACH:
- return React.createElement(SvgIconAttach, null);
-
- case Type.AVATAR_DARK:
- return React.createElement(SvgIconAvatarDark, null);
-
- case Type.AVATAR_LIGHT:
- return React.createElement(SvgIconAvatarLight, null);
-
- case Type.BROADCAST_LARGE_DARK:
- return React.createElement(SvgIconBroadcastLrgDark, null);
-
- case Type.BROADCAST_LARGE_LIGHT:
- return React.createElement(SvgIconBroadcastLrgLight, null);
-
- case Type.BROADCAST_DARK:
- return React.createElement(SvgIconBroadcastDark, null);
-
- case Type.BROADCAST_LIGHT:
- return React.createElement(SvgIconBroadcastLight, null);
-
- case Type.BROADCAST:
- return React.createElement(SvgIconBroadcast, null);
-
- case Type.FROZEN_DARK:
- return React.createElement(SvgFrozenDark, null);
-
- case Type.FROZEN_LIGHT:
- return React.createElement(SvgFrozenLight, null);
-
- case Type.MORE:
- return React.createElement(SvgIconMore, null);
-
- case Type.MUTE:
- return React.createElement(SvgIconMute, null);
-
- case Type.NO_THUMBNAIL:
- return React.createElement(SvgIconNoThumbnail, null);
-
- case Type.CHECKBOX:
- return React.createElement(SvgIconCheckbox, null);
-
- case Type.CHECKBOX_OFF:
- return React.createElement(SvgIconCheckboxOff, null);
-
- case Type.CLOSE:
- return React.createElement(SvgIconClose, null);
-
- case Type.COPY:
- return React.createElement(SvgIconCopy, null);
-
- case Type.CHAT:
- return React.createElement(SvgIconChat, null);
-
- case Type.SUPER_GROUP:
- return React.createElement(SvgIconSupergroup, null);
-
- case Type.CREATE:
- return React.createElement(SvgIconCreate, null);
-
- case Type.DELETE:
- return React.createElement(SvgIconDelete, null);
-
- case Type.DISCONNECTED:
- return React.createElement(SvgIconDisconnected, null);
-
- case Type.DUMMY:
- return React.createElement(SvgIconDummy, null);
-
- case Type.EDIT:
- return React.createElement(SvgIconEdit, null);
-
- case Type.ERROR:
- return React.createElement(SvgIconError, null);
-
- case Type.ERROR_FILLED:
- return React.createElement(SvgIconErrorFilled, null);
-
- case Type.EMOJI_FAILED:
- return React.createElement(SvgEmojiFail, null);
-
- case Type.EMOJI_REACTIONS_ADD:
- return React.createElement(SvgIconReactionsAdd, null);
-
- case Type.EMOJI_REACTIONS_ADD_GRAY:
- return React.createElement(SvgIconEmojiReactionsAdd, null);
-
- case Type.DELIVERED:
- return React.createElement(SvgIconDelivered, null);
-
- case Type.DOCUMENT:
- return React.createElement(SvgIconDocument, null);
-
- case Type.DOWNLOAD:
- return React.createElement(SvgIconDownload, null);
-
- case Type.FILE_AUDIO:
- return React.createElement(SvgIconFileAudio, null);
-
- case Type.FILE_DOCUMENT:
- return React.createElement(SvgIconFileDocument, null);
-
- case Type.GIF:
- return React.createElement(SvgIconGif, null);
-
- case Type.INFO:
- return React.createElement(SvgIconInfo, null);
-
- case Type.LEAVE:
- return React.createElement(SvgIconLeave, null);
-
- case Type.MEMBERS:
- return React.createElement(SvgIconMembers, null);
-
- case Type.NOTIFICATIONS:
- return React.createElement(SvgIconNotifications, null);
-
- case Type.PHOTO:
- return React.createElement(SvgIconPhoto, null);
-
- case Type.PLAY:
- return React.createElement(SvgIconPlay, null);
-
- case Type.PLUS:
- return React.createElement(SvgIconPlus, null);
-
- case Type.READ:
- return React.createElement(SvgIconRead, null);
-
- case Type.REFRESH:
- return React.createElement(SvgIconRefresh, null);
-
- case Type.SEND:
- return React.createElement(SvgIconSend, null);
-
- case Type.SENT:
- return React.createElement(SvgIconSent, null);
-
- case Type.SHEVRON:
- return React.createElement(SvgIconShevron, null);
-
- case Type.SHEVRON_DOWN:
- return React.createElement(SvgIconShevronDown, null);
-
- case Type.SPINNER:
- return React.createElement(SvgIconSpinnerSmall, null);
-
- case Type.SPINNER_LARGE:
- return React.createElement(SvgIconSpinnerLarge, null);
-
- case Type.USER:
- return React.createElement(SvgIconUser, null);
-
- case Type.ICON_OPERATOR:
- return React.createElement(SvgIconOperator, null);
-
- case Type.ICON_BANNED:
- return React.createElement(SvgIconBanned, null);
-
- case Type.ICON_MUTED:
- return React.createElement(SvgIconMuted, null);
-
- case Type.ICON_MUTED_FG:
- return React.createElement(SvgIconMutedForeground, null);
-
- case Type.ICON_FREEZE:
- return React.createElement(SvgIconFreeze, null);
-
- case Type.TOGGLE_ON:
- return React.createElement(SvgIconToggleon, null);
-
- case Type.TOGGLE_OFF:
- return React.createElement(SvgIconToggleoff, null);
-
- default:
- return null;
- }
-}
-
-function Icon(_ref) {
- var type = _ref.type,
- width = _ref.width,
- height = _ref.height,
- children = _ref.children,
- className = _ref.className,
- onClick = _ref.onClick,
- fillColor = _ref.fillColor;
- var iconStyle = {
- width: typeof width === 'string' ? width : "".concat(width, "px"),
- height: typeof height === 'string' ? height : "".concat(height, "px")
- };
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React.createElement("div", {
- onClick: onClick,
- onKeyDown: onClick,
- role: "button",
- tabIndex: "0",
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-icon', changeColorToClassName(fillColor)]).join(' '),
- style: iconStyle
- }, children || changeTypeToIconComponent(type));
-}
-Icon.propTypes = {
- type: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(Type)), PropTypes.string]).isRequired,
- width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- onClick: PropTypes.func,
- children: PropTypes.element,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- fillColor: PropTypes.oneOf(Object.keys(Colors))
-};
-Icon.defaultProps = {
- onClick: function onClick() {},
- width: 26,
- height: 26,
- children: null,
- className: '',
- fillColor: Colors.DEFAULT
-};
-var IconTypes = Type;
-var IconColors = Colors;
-
-var imageRendererClassName = 'sendbird-avatar-img';
-
-var defaultComponent = function defaultComponent(_a) {
- var width = _a.width,
- height = _a.height;
- return function () {
- return document.querySelector('.sendbird-theme--dark') ? React.createElement(Icon, {
- className: imageRendererClassName,
- type: IconTypes.AVATAR_DARK,
- width: width,
- height: height
- }) : React.createElement(Icon, {
- className: imageRendererClassName,
- type: IconTypes.AVATAR_LIGHT,
- width: width,
- height: height
- });
- };
-};
-
-var AvatarInner = function AvatarInner(_a) {
- var _b = _a.src,
- src = _b === void 0 ? '' : _b,
- _c = _a.alt,
- alt = _c === void 0 ? '' : _c,
- height = _a.height,
- width = _a.width;
-
- if (typeof src === 'string') {
- return React.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src,
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- });
- }
-
- if (src && src.length) {
- if (src.length === 1) {
- return React.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[0],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- });
- }
-
- if (src.length === 2) {
- return React.createElement("div", {
- className: "sendbird-avatar--inner__two-child"
- }, React.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[0],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- }), React.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[1],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- }));
- }
-
- if (src.length === 3) {
- return React.createElement(React.Fragment, null, React.createElement("div", {
- className: "sendbird-avatar--inner__three-child--upper"
- }, React.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[0],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- })), React.createElement("div", {
- className: "sendbird-avatar--inner__three-child--lower"
- }, React.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[1],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- }), React.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[2],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- })));
- }
-
- return React.createElement("div", {
- className: "sendbird-avatar--inner__four-child"
- }, src.slice(0, 4).map(function (i) {
- return React.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: i,
- height: height,
- width: width,
- alt: alt,
- key: uuidv4(),
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- });
- }));
- } // default img
-
-
- return React.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: "",
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- });
-};
-
-function Avatar(_a, ref) {
- var _b = _a.src,
- src = _b === void 0 ? '' : _b,
- _c = _a.alt,
- alt = _c === void 0 ? '' : _c,
- _d = _a.width,
- width = _d === void 0 ? '56px' : _d,
- _e = _a.height,
- height = _e === void 0 ? '56px' : _e,
- onClick = _a.onClick,
- _f = _a.className,
- className = _f === void 0 ? '' : _f;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React.createElement("div", {
- className: __spreadArrays(injectingClassName, ['sendbird-avatar']).join(' '),
- ref: ref,
- style: {
- height: height,
- width: width
- },
- onClick: onClick,
- role: "button",
- tabIndex: 0,
- onKeyDown: onClick
- }, React.createElement(AvatarInner, {
- src: src,
- height: height,
- width: width,
- alt: alt
- }));
-}
-
-var Avatar$1 = React.forwardRef(Avatar);
-
-var DEFAULT_URL_PREFIX = 'https://static.sendbird.com/sample/cover/cover_';
-var getChannelAvatarSource = function getChannelAvatarSource(channel, currentUserId) {
- if (channel && channel.coverUrl) {
- if (!new RegExp("^" + DEFAULT_URL_PREFIX).test(channel.coverUrl)) {
- return channel.coverUrl;
- }
- }
-
- return channel && channel.members ? channel.members.filter(function (member) {
- return member.userId !== currentUserId;
- }).map(function (_a) {
- var profileUrl = _a.profileUrl;
- return profileUrl;
- }) : [];
-};
-var useDefaultAvatar = function useDefaultAvatar(channel) {
- if (channel && channel.coverUrl) {
- if (new RegExp("^" + DEFAULT_URL_PREFIX).test(channel.coverUrl)) {
- return true;
- }
-
- return false;
- }
-
- return true;
-};
-
-function ChannelAvatar(_a) {
- var channel = _a.channel,
- userId = _a.userId,
- theme = _a.theme,
- _b = _a.height,
- height = _b === void 0 ? 56 : _b,
- _c = _a.width,
- width = _c === void 0 ? 56 : _c;
- var isBroadcast = channel.isBroadcast;
- var memoizedAvatar = useMemo(function () {
- return isBroadcast ? useDefaultAvatar(channel) ? theme === 'dark' ? React.createElement(Icon, {
- type: IconTypes.BROADCAST_LARGE_DARK,
- width: width,
- height: height,
- className: "sendbird-chat-header__default--broadcast-channel-dark"
- }) : React.createElement(Icon, {
- type: IconTypes.BROADCAST_LARGE_LIGHT,
- width: width,
- height: height,
- className: "sendbird-chat-header__default--broadcast-channel-light"
- }) : React.createElement(Avatar$1, {
- className: "sendbird-chat-header__avatar--broadcast-channel",
- src: getChannelAvatarSource(channel, userId),
- width: width,
- height: height,
- alt: channel.name
- }) : React.createElement(Avatar$1, {
- className: "sendbird-chat-header__avatar--group-channel",
- src: getChannelAvatarSource(channel, userId),
- width: width + "px",
- height: height + "px",
- alt: channel.name
- });
- }, [channel.members, channel.coverUrl, theme]);
- return React.createElement(React.Fragment, null, memoizedAvatar);
-}
-
-var Typography = {
- H_1: 'H_1',
- H_2: 'H_2',
- SUBTITLE_1: 'SUBTITLE_1',
- SUBTITLE_2: 'SUBTITLE_2',
- BODY_1: 'BODY_1',
- BODY_2: 'BODY_2',
- BUTTON_1: 'BUTTON_1',
- BUTTON_2: 'BUTTON_2',
- CAPTION_1: 'CAPTION_1',
- CAPTION_2: 'CAPTION_2',
- CAPTION_3: 'CAPTION_3'
-};
-var Colors$1 = {
- ONBACKGROUND_1: 'ONBACKGROUND_1',
- ONBACKGROUND_2: 'ONBACKGROUND_2',
- ONBACKGROUND_3: 'ONBACKGROUND_3',
- ONCONTENT_1: 'ONCONTENT_1',
- ONCONTENT_2: 'ONCONTENT_2',
- PRIMARY: 'PRIMARY',
- ERROR: 'ERROR'
-};
-
-function changeTypographyToClassName(type) {
- switch (type) {
- case Typography.H_1:
- return 'sendbird-label--h-1';
-
- case Typography.H_2:
- return 'sendbird-label--h-2';
-
- case Typography.SUBTITLE_1:
- return 'sendbird-label--subtitle-1';
-
- case Typography.SUBTITLE_2:
- return 'sendbird-label--subtitle-2';
-
- case Typography.BODY_1:
- return 'sendbird-label--body-1';
-
- case Typography.BODY_2:
- return 'sendbird-label--body-2';
-
- case Typography.BUTTON_1:
- return 'sendbird-label--button-1';
-
- case Typography.BUTTON_2:
- return 'sendbird-label--button-2';
-
- case Typography.CAPTION_1:
- return 'sendbird-label--caption-1';
-
- case Typography.CAPTION_2:
- return 'sendbird-label--caption-2';
-
- case Typography.CAPTION_3:
- return 'sendbird-label--caption-3';
-
- default:
- return null;
- }
-}
-function changeColorToClassName$1(color) {
- switch (color) {
- case Colors$1.ONBACKGROUND_1:
- return 'sendbird-label--color-onbackground-1';
-
- case Colors$1.ONBACKGROUND_2:
- return 'sendbird-label--color-onbackground-2';
-
- case Colors$1.ONBACKGROUND_3:
- return 'sendbird-label--color-onbackground-3';
-
- case Colors$1.ONCONTENT_1:
- return 'sendbird-label--color-oncontent-1';
-
- case Colors$1.ONCONTENT_2:
- return 'sendbird-label--color-oncontent-2';
-
- case Colors$1.PRIMARY:
- return 'sendbird-label--color-primary';
-
- case Colors$1.ERROR:
- return 'sendbird-label--color-error';
-
- default:
- return null;
- }
-}
-
-var CLASS_NAME = 'sendbird-label';
-function Label(_ref) {
- var type = _ref.type,
- color = _ref.color,
- children = _ref.children,
- className = _ref.className;
- var injectingClassName = Array.isArray(className) ? [CLASS_NAME].concat(_toConsumableArray(className)) : [CLASS_NAME, className];
-
- if (type) {
- injectingClassName.push(changeTypographyToClassName(type));
- }
-
- if (color) {
- injectingClassName.push(changeColorToClassName$1(color));
- }
-
- return React.createElement("span", {
- className: injectingClassName.join(' ')
- }, children);
-}
-Label.propTypes = {
- type: PropTypes.oneOf([].concat(_toConsumableArray(Object.keys(Typography)), [''])),
- color: PropTypes.oneOf([].concat(_toConsumableArray(Object.keys(Colors$1)), [''])),
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.element, PropTypes.any]),
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-Label.defaultProps = {
- type: '',
- color: '',
- className: [],
- children: null
-};
-var LabelTypography = Typography;
-var LabelColors = Colors$1;
-var LabelStringSet = getStringSet('en');
-
-function Badge(_ref) {
- var count = _ref.count,
- maxLevel = _ref.maxLevel,
- className = _ref.className;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var maximumNumber = parseInt('9'.repeat(maxLevel > 6 ? 6 : maxLevel), 10);
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-badge']).join(' ')
- }, React.createElement("div", {
- className: "sendbird-badge__text"
- }, React.createElement(Label, {
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONCONTENT_1
- }, count > maximumNumber ? "".concat(maximumNumber).concat(stringSet.BADGE__OVER) : count)));
-}
-Badge.propTypes = {
- count: PropTypes.number.isRequired,
- maxLevel: PropTypes.number,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-Badge.defaultProps = {
- maxLevel: 2,
- className: []
-};
-
-var MessageStatusType = {
- PENDING: 'PENDING',
- SENT: 'SENT',
- DELIVERED: 'DELIVERED',
- READ: 'READ',
- FAILED: 'FAILED'
-};
-
-var truncate = function truncate(fullStr, strLen) {
- if (fullStr === null || fullStr === undefined) return '';
- if (fullStr.length <= strLen) return fullStr;
- var separator = '...';
- var sepLen = separator.length;
- var charsToShow = strLen - sepLen;
- var frontChars = Math.ceil(charsToShow / 2);
- var backChars = Math.floor(charsToShow / 2);
- return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);
-};
-var getIsSentFromStatus = function getIsSentFromStatus(status) {
- return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
-};
-
-var getChannelTitle = function getChannelTitle() {
- var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var currentUserId = arguments.length > 1 ? arguments[1] : undefined;
- var stringSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : LabelStringSet;
-
- if (!channel || !channel.name && !channel.members) {
- return stringSet.NO_TITLE;
- }
-
- if (channel.name && channel.name !== 'Group Channel') {
- return channel.name;
- }
-
- if (channel.members.length === 1) {
- return stringSet.NO_MEMBERS;
- }
-
- return channel.members.filter(function (_ref) {
- var userId = _ref.userId;
- return userId !== currentUserId;
- }).map(function (_ref2) {
- var nickname = _ref2.nickname;
- return nickname || stringSet.NO_NAME;
- }).join(', ');
-};
-var getLastMessageCreatedAt = function getLastMessageCreatedAt(channel) {
- if (!channel || !channel.lastMessage) {
- return '';
- }
-
- var date = channel.lastMessage.createdAt;
-
- if (isToday(date)) {
- return format(date, 'p');
- }
-
- if (isYesterday(date)) {
- return 'Yesterday';
- }
-
- return format(date, 'MMM dd');
-};
-var getTotalMembers = function getTotalMembers(channel) {
- return channel && channel.memberCount ? channel.memberCount : 0;
-};
-
-var getPrettyLastMessage = function getPrettyLastMessage() {
- var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var MAXLEN = 30;
- var messageType = message.messageType,
- name = message.name;
-
- if (messageType === 'file') {
- return truncate(name, MAXLEN);
- }
-
- return message.message;
-};
-
-var getLastMessage = function getLastMessage(channel) {
- return channel && channel.lastMessage ? getPrettyLastMessage(channel.lastMessage) : '';
-};
-var getChannelUnreadMessageCount = function getChannelUnreadMessageCount(channel) {
- return channel && channel.unreadMessageCount ? channel.unreadMessageCount : 0;
-};
-
-function ChannelPreview(_ref) {
- var channel = _ref.channel,
- isActive = _ref.isActive,
- ChannelAction = _ref.ChannelAction,
- theme = _ref.theme,
- onClick = _ref.onClick,
- tabIndex = _ref.tabIndex,
- currentUser = _ref.currentUser;
- var userId = currentUser.userId;
- var isBroadcast = channel.isBroadcast,
- isFrozen = channel.isFrozen;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.createElement("div", {
- role: "link",
- tabIndex: tabIndex,
- onClick: onClick,
- onKeyPress: onClick,
- className: "\n sendbird-channel-preview\n ".concat(isActive ? 'sendbird-channel-preview--active' : null, "\n ")
- }, React.createElement("div", {
- className: "sendbird-channel-preview__avatar"
- }, React.createElement(ChannelAvatar, {
- channel: channel,
- userId: userId,
- theme: theme
- })), React.createElement("div", {
- className: "sendbird-channel-preview__content"
- }, React.createElement("div", {
- className: "sendbird-channel-preview__content__upper"
- }, React.createElement("div", {
- className: "sendbird-channel-preview__content__upper__header"
- }, isBroadcast && React.createElement("div", {
- className: "sendbird-channel-preview__broadcast-icon"
- }, React.createElement(Icon, {
- type: theme === 'dark' ? IconTypes.BROADCAST_DARK : IconTypes.BROADCAST_LIGHT,
- height: 12,
- width: 12
- })), React.createElement(Label, {
- className: "sendbird-channel-preview__content__upper__header__channel-name",
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1
- }, getChannelTitle(channel, userId, stringSet)), React.createElement(Label, {
- className: "sendbird-channel-preview__content__upper__header__total-members",
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, getTotalMembers(channel)), isFrozen && React.createElement("div", {
- title: "Frozen",
- className: "sendbird-channel-preview__frozen-icon"
- }, React.createElement(Icon, {
- type: theme === 'dark' ? IconTypes.FROZEN_DARK : IconTypes.FROZEN_LIGHT,
- height: 12,
- width: 12
- }))), React.createElement(Label, {
- className: "sendbird-channel-preview__content__upper__last-message-at",
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getLastMessageCreatedAt(channel))), React.createElement("div", {
- className: "sendbird-channel-preview__content__lower"
- }, React.createElement(Label, {
- className: "sendbird-channel-preview__content__lower__last-message",
- type: LabelTypography.BODY_2,
- color: LabelColors.ONBACKGROUND_3
- }, getLastMessage(channel)), React.createElement("div", {
- className: "sendbird-channel-preview__content__lower__unread-message-count"
- }, getChannelUnreadMessageCount(channel) ? React.createElement(Badge, {
- count: getChannelUnreadMessageCount(channel)
- }) : null))), React.createElement("div", {
- className: "sendbird-channel-preview__action"
- }, ChannelAction));
-}
-ChannelPreview.propTypes = {
- isActive: PropTypes.bool,
- theme: PropTypes.string,
- channel: PropTypes.shape({
- members: PropTypes.arrayOf(PropTypes.shape({})),
- coverUrl: PropTypes.string,
- isBroadcast: PropTypes.bool,
- isFrozen: PropTypes.bool
- }),
- ChannelAction: PropTypes.element.isRequired,
- onClick: PropTypes.func,
- tabIndex: PropTypes.number,
- currentUser: PropTypes.shape({
- userId: PropTypes.string
- })
-};
-ChannelPreview.defaultProps = {
- channel: {},
- isActive: false,
- theme: 'light',
- onClick: function onClick() {},
- tabIndex: 0,
- currentUser: {}
-};
-
-var CLASS_NAME$1 = 'sendbird-iconbutton';
-var IconButton = React.forwardRef(function (props, ref) {
- var children = props.children,
- className = props.className,
- _props$disabled = props.disabled,
- disabled = _props$disabled === void 0 ? false : _props$disabled,
- type = props.type,
- height = props.height,
- width = props.width,
- _onClick = props.onClick,
- _onBlur = props.onBlur;
-
- var _useState = useState(''),
- _useState2 = _slicedToArray(_useState, 2),
- pressed = _useState2[0],
- setPressed = _useState2[1];
-
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift(CLASS_NAME$1);
- return (// eslint-disable-next-line react/button-has-type
- React.createElement("button", {
- className: "".concat(injectingClassName.join(' '), " ").concat(pressed),
- disabled: disabled,
- ref: ref,
- type: type,
- style: {
- height: height,
- width: width
- },
- onClick: function onClick(e) {
- if (disabled) {
- return;
- }
-
- setPressed('sendbird-iconbutton--pressed');
-
- _onClick(e);
- },
- onBlur: function onBlur(e) {
- setPressed('');
-
- _onBlur(e);
- }
- }, React.createElement("span", {
- className: "sendbird-iconbutton__inner"
- }, children))
- );
-});
-IconButton.propTypes = {
- height: PropTypes.string,
- width: PropTypes.string,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
- type: PropTypes.string,
- disabled: PropTypes.bool,
- onClick: PropTypes.func,
- onBlur: PropTypes.func
-};
-IconButton.defaultProps = {
- height: '56px',
- width: '56px',
- className: '',
- type: 'button',
- disabled: false,
- onClick: function onClick() {},
- onBlur: function onBlur() {}
-};
-
-function ChannelHeader(_ref) {
- var user = _ref.user,
- iconButton = _ref.iconButton,
- onEdit = _ref.onEdit,
- renderHeader = _ref.renderHeader,
- allowProfileEdit = _ref.allowProfileEdit;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.createElement("div", {
- className: "\n ".concat(allowProfileEdit && 'sendbird-channel-header--allow-edit', "\n sendbird-channel-header\n ")
- }, renderHeader ? renderHeader() : React.createElement("div", {
- className: "sendbird-channel-header__title",
- role: "button",
- onKeyDown: onEdit,
- onClick: onEdit,
- tabIndex: "0"
- }, React.createElement("div", {
- className: "sendbird-channel-header__title--left"
- }, React.createElement(Avatar$1, {
- height: "32px",
- width: "32px",
- src: user.profileUrl,
- alt: user.nickname
- })), React.createElement("div", {
- className: "sendbird-channel-header__title--right"
- }, React.createElement(Label, {
- className: "sendbird-channel-header__title--name",
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1
- }, user.nickname || stringSet.NO_NAME), React.createElement(Label, {
- className: "sendbird-channel-header__title--user-id",
- type: LabelTypography.BODY_2,
- color: LabelColors.ONBACKGROUND_2
- }, user.userId))), React.createElement("div", {
- className: "sendbird-channel-header__right-icon"
- }, iconButton));
-}
-ChannelHeader.propTypes = {
- user: PropTypes.shape({
- profileUrl: PropTypes.string,
- nickname: PropTypes.string,
- userId: PropTypes.string
- }),
- renderHeader: PropTypes.func,
- allowProfileEdit: PropTypes.bool,
- onEdit: PropTypes.func.isRequired,
- iconButton: PropTypes.oneOfType([PropTypes.element, PropTypes.instanceOf(IconButton)])
-};
-ChannelHeader.defaultProps = {
- user: {},
- renderHeader: null,
- allowProfileEdit: false,
- iconButton: null
-};
-
-// simple component to be used as modal root
-var MODAL_ROOT = 'sendbird-modal-root';
-
-var Type$1 = {
- PRIMARY: 'PRIMARY',
- SECONDARY: 'SECONDARY',
- DANGER: 'DANGER',
- DISABLED: 'DISABLED'
-};
-var Size = {
- BIG: 'BIG',
- SMALL: 'SMALL'
-};
-
-function changeTypeToClassName(type) {
- switch (type) {
- case Type$1.PRIMARY:
- return 'sendbird-button--primary';
-
- case Type$1.SECONDARY:
- return 'sendbird-button--secondary';
-
- case Type$1.DANGER:
- return 'sendbird-button--danger';
-
- case Type$1.DISABLED:
- return 'sendbird-button--disabled';
-
- default:
- return null;
- }
-}
-function changeSizeToClassName(size) {
- switch (size) {
- case Size.BIG:
- return 'sendbird-button--big';
-
- case Size.SMALL:
- return 'sendbird-button--small';
-
- default:
- return null;
- }
-}
-
-function Button(_ref) {
- var type = _ref.type,
- size = _ref.size,
- children = _ref.children,
- disabled = _ref.disabled,
- onClick = _ref.onClick,
- className = _ref.className;
- var injectingClassNames = ['sendbird-button', disabled ? 'sendbird-button__disabled' : '', changeTypeToClassName(type), changeSizeToClassName(size)].concat(_toConsumableArray(Array.isArray(className) ? className : [className])).join(' ');
- return React.createElement("button", {
- type: "button",
- className: injectingClassNames,
- onClick: onClick,
- disabled: disabled
- }, React.createElement(Label, {
- className: "sendbird-button__text",
- type: LabelTypography.BUTTON_1,
- color: LabelColors.ONCONTENT_1
- }, children));
-}
-Button.propTypes = {
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),
- disabled: PropTypes.bool,
- type: PropTypes.oneOf(Object.keys(Type$1)),
- size: PropTypes.oneOf(Object.keys(Size)),
- onClick: PropTypes.func,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-Button.defaultProps = {
- children: 'Button',
- type: Type$1.PRIMARY,
- disabled: false,
- size: Size.BIG,
- onClick: function onClick() {},
- className: ''
-};
-
-var ModalHeader = function ModalHeader(_ref) {
- var titleText = _ref.titleText;
- return React.createElement("div", {
- className: "sendbird-modal-header"
- }, React.createElement(Label, {
- type: LabelTypography.H_1,
- color: LabelColors.ONBACKGROUND_1
- }, titleText));
-};
-ModalHeader.propTypes = {
- titleText: PropTypes.string.isRequired
-};
-var ModalBody = function ModalBody(_ref2) {
- var children = _ref2.children;
- return React.createElement("div", {
- className: "sendbird-modal-body"
- }, children);
-};
-ModalBody.propTypes = {
- children: PropTypes.oneOfType([PropTypes.element.isRequired, PropTypes.arrayOf(PropTypes.element.isRequired)])
-};
-ModalBody.defaultProps = {
- children: null
-};
-var ModalFooter = function ModalFooter(_ref3) {
- var onSubmit = _ref3.onSubmit,
- onCancel = _ref3.onCancel,
- _ref3$disabled = _ref3.disabled,
- disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
- submitText = _ref3.submitText,
- type = _ref3.type;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.createElement("div", {
- className: "sendbird-modal-footer"
- }, React.createElement(Button, {
- type: Type$1.SECONDARY,
- onClick: onCancel
- }, React.createElement(Label, {
- type: LabelTypography.BUTTON_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.BUTTON__CANCEL)), React.createElement(Button, {
- type: type,
- disabled: disabled,
- onClick: onSubmit
- }, submitText));
-};
-ModalFooter.propTypes = {
- onCancel: PropTypes.func.isRequired,
- onSubmit: PropTypes.func.isRequired,
- submitText: PropTypes.string.isRequired,
- disabled: PropTypes.bool,
- type: PropTypes.string
-};
-ModalFooter.defaultProps = {
- disabled: false,
- type: Type$1.DANGER
-};
-
-function Modal(props) {
- var children = props.children,
- onCancel = props.onCancel,
- onSubmit = props.onSubmit,
- disabled = props.disabled,
- submitText = props.submitText,
- titleText = props.titleText,
- hideFooter = props.hideFooter,
- type = props.type;
- return createPortal(React.createElement("div", {
- className: "sendbird-modal"
- }, React.createElement("div", {
- className: "sendbird-modal-content"
- }, React.createElement(ModalHeader, {
- titleText: titleText
- }), React.createElement(ModalBody, null, children), !hideFooter && React.createElement(ModalFooter, {
- disabled: disabled,
- onCancel: onCancel,
- onSubmit: onSubmit,
- submitText: submitText,
- type: type
- }), React.createElement("div", {
- className: "sendbird-modal-close"
- }, React.createElement(IconButton, {
- width: "32px",
- height: "32px",
- onClick: onCancel
- }, React.createElement(Icon, {
- type: IconTypes.CLOSE,
- fillColor: IconColors.SECONDARY,
- width: "24px",
- height: "24px"
- })))), React.createElement("div", {
- className: "sendbird-modal-backdrop"
- })), document.getElementById(MODAL_ROOT));
-}
-
-Modal.propTypes = {
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),
- onCancel: PropTypes.func.isRequired,
- onSubmit: PropTypes.func.isRequired,
- hideFooter: PropTypes.bool,
- disabled: PropTypes.bool,
- type: PropTypes.string
-};
-Modal.defaultProps = {
- children: null,
- hideFooter: false,
- disabled: false,
- type: Type$1.DANGER
-};
-
-var InputLabel = function InputLabel(_ref) {
- var children = _ref.children;
- return React.createElement(Label, {
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_1,
- className: "sendbird-input-label"
- }, children);
-};
-InputLabel.propTypes = {
- children: PropTypes.string.isRequired
-}; // future: add validations? onChange? more props etc etc
-
-var Input = React.forwardRef(function (props, ref) {
- var value = props.value,
- placeHolder = props.placeHolder,
- disabled = props.disabled,
- name = props.name,
- required = props.required;
-
- var _useState = useState(value),
- _useState2 = _slicedToArray(_useState, 2),
- inputValue = _useState2[0],
- setInputValue = _useState2[1];
-
- return React.createElement("div", {
- className: "sendbird-input"
- }, React.createElement("input", {
- required: required,
- ref: ref,
- name: name,
- disabled: disabled,
- value: inputValue,
- className: "sendbird-input--input",
- onChange: function onChange(e) {
- setInputValue(e.target.value);
- }
- }), placeHolder && !inputValue && React.createElement(Label, {
- className: "sendbird-input--placeholder",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_3
- }, placeHolder));
-});
-Input.propTypes = {
- value: PropTypes.string,
- placeHolder: PropTypes.string,
- name: PropTypes.string.isRequired,
- disabled: PropTypes.bool,
- required: PropTypes.bool
-};
-Input.defaultProps = {
- value: '',
- placeHolder: '',
- disabled: false,
- required: false
-};
-
-var Colors$2 = {
- ONBACKGROUND_1: 'ONBACKGROUND_1',
- ONBACKGROUND_2: 'ONBACKGROUND_2',
- ONBACKGROUND_3: 'ONBACKGROUND_3',
- ONBACKGROUND_4: 'ONBACKGROUND_4',
- ONCONTENT_1: 'ONCONTENT_1',
- PRIMARY: 'PRIMARY',
- ERROR: 'ERROR'
-};
-function changeColorToClassName$2(color) {
- switch (color) {
- case Colors$2.ONBACKGROUND_1:
- return 'sendbird-color--onbackground-1';
-
- case Colors$2.ONBACKGROUND_2:
- return 'sendbird-color--onbackground-2';
-
- case Colors$2.ONBACKGROUND_3:
- return 'sendbird-color--onbackground-3';
-
- case Colors$2.ONBACKGROUND_4:
- return 'sendbird-color--onbackground-4';
-
- case Colors$2.ONCONTENT_1:
- return 'sendbird-color--oncontent-1';
-
- case Colors$2.PRIMARY:
- return 'sendbird-color--primary';
-
- case Colors$2.ERROR:
- return 'sendbird-color--error';
-
- default:
- return null;
- }
-}
-
-function TextButton(_ref) {
- var color = _ref.color,
- children = _ref.children,
- disabled = _ref.disabled,
- className = _ref.className,
- onClick = _ref.onClick,
- notUnderline = _ref.notUnderline;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React.createElement("div", {
- role: "button",
- tabIndex: 0,
- className: [].concat(_toConsumableArray(injectingClassName), [changeColorToClassName$2(color), notUnderline ? 'sendbird-textbutton--not-underline' : 'sendbird-textbutton', disabled ? 'sendbird-textbutton--disabled' : '']).join(' '),
- onClick: onClick,
- onKeyPress: onClick
- }, children);
-}
-TextButton.propTypes = {
- color: PropTypes.string,
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- onClick: PropTypes.func,
- notUnderline: PropTypes.bool,
- disabled: PropTypes.bool
-};
-TextButton.defaultProps = {
- color: Colors$2.ONBACKGROUND_1,
- className: '',
- onClick: function onClick() {},
- notUnderline: false,
- disabled: false
-};
-
-var noop = function noop() {};
-var getMessageCreatedAt = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-var getSenderName = function getSenderName(message) {
- return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
-};
-var getSenderProfileUrl = function getSenderProfileUrl(message) {
- return message.sender && message.sender.profileUrl;
-};
-
-function EditUserProfile(_a) {
- var user = _a.user,
- onCancel = _a.onCancel,
- _onSubmit = _a.onSubmit,
- _b = _a.onThemeChange,
- onThemeChange = _b === void 0 ? null : _b,
- _c = _a.theme,
- theme = _c === void 0 ? 'light' : _c,
- _d = _a.changeTheme,
- changeTheme = _d === void 0 ? noop : _d;
- var hiddenInputRef = useRef(null);
- var inputRef = useRef(null);
- var formRef = useRef(null);
- var stringSet = useContext(LocalizationContext).stringSet;
-
- var _e = useState(null),
- currentImg = _e[0],
- setCurrentImg = _e[1];
-
- var _f = useState(null),
- newFile = _f[0],
- setNewFile = _f[1];
-
- return React.createElement(Modal, {
- titleText: stringSet.EDIT_PROFILE__TITLE,
- submitText: stringSet.BUTTON__SAVE,
- onCancel: onCancel,
- onSubmit: function onSubmit() {
- if (user.nickname !== '' && !inputRef.current.value) {
- if (formRef.current.reportValidity) {
- // might not work in explorer
- formRef.current.reportValidity();
- }
-
- return;
- }
-
- _onSubmit(inputRef.current.value, newFile);
-
- onCancel();
- },
- type: Type$1.PRIMARY
- }, React.createElement("form", {
- className: "sendbird__edit-user-profile",
- ref: formRef,
- onSubmit: function onSubmit(e) {
- e.preventDefault();
- }
- }, React.createElement("section", {
- className: "sendbird__edit-user-profile__img"
- }, React.createElement(InputLabel, null, stringSet.EDIT_PROFILE__IMAGE_LABEL), React.createElement("div", {
- className: "sendbird__edit-user__avatar"
- }, React.createElement(Avatar$1, {
- height: "80px",
- width: "80px",
- src: currentImg || user.profileUrl
- })), React.createElement("input", {
- ref: hiddenInputRef,
- type: "file",
- accept: "image/gif, image/jpeg, image/png",
- style: {
- display: 'none'
- },
- onChange: function onChange(e) {
- setCurrentImg(URL.createObjectURL(e.target.files[0]));
- setNewFile(e.target.files[0]);
- hiddenInputRef.current.value = '';
- }
- }), React.createElement(TextButton, {
- className: "sendbird__edit-user__avatar-button",
- onClick: function onClick() {
- return hiddenInputRef.current.click();
- },
- notUnderline: true
- }, React.createElement(Label, {
- type: LabelTypography.BUTTON_1,
- color: LabelColors.PRIMARY
- }, stringSet.EDIT_PROFILE__IMAGE_UPLOAD))), React.createElement("section", {
- className: "sendbird__edit-user__name"
- }, React.createElement(InputLabel, null, stringSet.EDIT_PROFILE__NICKNAME_LABEL), React.createElement(Input, {
- required: user.nickname !== '',
- name: "sendbird__edit-user__name",
- ref: inputRef,
- value: user.nickname,
- placeHolder: stringSet.EDIT_PROFILE__NICKNAME_PLACEHOLDER
- })), React.createElement("section", {
- className: "sendbird__edit-user__userid"
- }, React.createElement(InputLabel, null, stringSet.EDIT_PROFILE__USERID_LABEL), React.createElement(Input, {
- disabled: true,
- name: "sendbird__edit-user__userid",
- value: user.userId
- })), React.createElement("section", {
- className: "sendbird__edit-user__theme"
- }, React.createElement(InputLabel, null, stringSet.EDIT_PROFILE__THEME_LABEL), React.createElement("div", {
- className: "sendbird__edit-user__theme-icon"
- }, theme === 'dark' ? React.createElement(Icon, {
- onClick: function onClick() {
- changeTheme('light');
-
- if (onThemeChange && typeof onThemeChange === 'function') {
- onThemeChange('light');
- }
- },
- type: IconTypes.TOGGLE_ON,
- width: 44,
- height: 24
- }) : React.createElement(Icon, {
- onClick: function onClick() {
- changeTheme('dark');
-
- if (onThemeChange && typeof onThemeChange === 'function') {
- onThemeChange('dark');
- }
- },
- type: IconTypes.TOGGLE_OFF,
- width: 44,
- height: 24
- })))));
-}
-
-var mapStoreToProps = function mapStoreToProps(store) {
- return {
- theme: store.config.theme,
- changeTheme: store.config.setCurrenttheme
- };
-};
-
-var ConnectedEditUserProfile = withSendbirdContext(EditUserProfile, mapStoreToProps);
-
-function Types() {
- return {
- LOADING: 'LOADING',
- NO_CHANNELS: 'NO_CHANNELS',
- WRONG: 'WRONG'
- };
-}
-var PlaceHolderTypes = Types();
-
-function MutedAvatarOverlay(props) {
- var _a = props.height,
- height = _a === void 0 ? 24 : _a,
- _b = props.width,
- width = _b === void 0 ? 24 : _b;
- return React.createElement("div", {
- className: "sendbird-muted-avatar",
- style: {
- height: height + "px",
- width: width + "px"
- }
- }, React.createElement("div", {
- className: "sendbird-muted-avatar__icon"
- }, React.createElement("div", {
- className: "sendbird-muted-avatar__bg",
- style: {
- height: height + "px",
- width: width + "px"
- }
- }), React.createElement(Icon, {
- fillColor: IconColors.WHITE,
- type: IconTypes.ICON_MUTED,
- width: height - 8 + "px",
- height: width - 8 + "px"
- })));
-}
-
-function Checkbox(_ref) {
- var id = _ref.id,
- checked = _ref.checked,
- onChange = _ref.onChange;
-
- var _useState = useState(checked),
- _useState2 = _slicedToArray(_useState, 2),
- isChecked = _useState2[0],
- setCheck = _useState2[1];
-
- return React.createElement("label", {
- className: "sendbird-checkbox",
- htmlFor: id
- }, React.createElement("input", {
- id: id,
- type: "checkbox",
- checked: isChecked,
- onClick: function onClick() {
- return setCheck(!isChecked);
- },
- onChange: onChange
- }), React.createElement("span", {
- className: "sendbird-checkbox--checkmark"
- }));
-}
-Checkbox.propTypes = {
- id: PropTypes.string,
- checked: PropTypes.bool,
- onChange: PropTypes.func
-};
-Checkbox.defaultProps = {
- id: 'sendbird-checkbox-input',
- checked: false,
- onChange: function onChange() {}
-};
-
-var SEND_MESSAGE_START = 'SEND_MESSAGE_START';
-var SEND_USER_MESSAGE = 'SEND_USER_MESSAGE';
-var SEND_FILE_MESSAGE = 'SEND_FILE_MESSAGE';
-var UPDATE_USER_MESSAGE = 'UPDATE_USER_MESSAGE';
-var DELETE_MESSAGE = 'DELETE_MESSAGE';
-var LEAVE_CHANNEL = 'LEAVE_CHANNEL';
-var CREATE_CHANNEL$1 = 'CREATE_CHANNEL';
-
-var getSdk = function getSdk(store) {
- var _store$stores = store.stores,
- stores = _store$stores === void 0 ? {} : _store$stores;
- var _stores$sdkStore = stores.sdkStore,
- sdkStore = _stores$sdkStore === void 0 ? {} : _stores$sdkStore;
- var sdk = sdkStore.sdk;
- return sdk;
-};
-var getPubSub = function getPubSub(store) {
- var _store$config = store.config,
- config = _store$config === void 0 ? {} : _store$config;
- var pubSub = config.pubSub;
- return pubSub;
-}; // SendBird disconnect. Invalidates currentUser
-// eslint-disable-next-line max-len
-
-var getConnect = function getConnect(store) {
- return function (userId, accessToken) {
- return new Promise(function (resolve, reject) {
- var sdk = getSdk(store);
-
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- if (!accessToken) {
- sdk.connect(userId).then(function (res) {
- return resolve(res);
- }).catch(function (err) {
- return reject(err);
- });
- } else {
- sdk.connect(userId, accessToken).then(function (res) {
- return resolve(res);
- }).catch(function (err) {
- return reject(err);
- });
- }
- });
- };
-}; // SendBird disconnect. Invalidates currentUser
-
-var getDisconnect = function getDisconnect(store) {
- return function () {
- return new Promise(function (resolve, reject) {
- var sdk = getSdk(store);
-
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.disconnect().then(function (res) {
- return resolve(res);
- }).catch(function (err) {
- return reject(err);
- });
- });
- };
-}; // Using the updateCurrentUserInfo() method
-// you can update a user's nickname and profile image with a URL
-// eslint-disable-next-line max-len
-
-var getUpdateUserInfo = function getUpdateUserInfo(store) {
- return function (nickName, profileUrl) {
- return new Promise(function (resolve, reject) {
- var sdk = getSdk(store);
-
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.updateCurrentUserInfo(nickName, profileUrl).then(function (res) {
- return resolve(res);
- }).catch(function (err) {
- return reject(err);
- });
- });
- };
-};
-var getSendUserMessage = function getSendUserMessage(store) {
- return function (channelUrl, userMessageParams) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- var promisify = function promisify() {
- var pendingMsg = null;
- var pendingPromise = new Promise(function (resolve_, reject_) {
- pendingMsg = channel.sendUserMessage(userMessageParams, function (res, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var message = res;
- var error = err;
-
- if (swapParams) {
- message = err;
- error = res;
- }
-
- if (error) {
- reject_(error);
- return;
- }
-
- resolve_(message);
- pubsub.publish(SEND_USER_MESSAGE, {
- message: message,
- channel: channel
- });
- });
- pubsub.publish(SEND_MESSAGE_START, {
- message: pendingMsg,
- channel: channel
- });
- });
-
- pendingPromise.get = function () {
- return pendingMsg;
- };
-
- return pendingPromise;
- };
-
- resolve(promisify());
- }).catch(reject);
- });
- };
-};
-var getSendFileMessage = function getSendFileMessage(store) {
- return function (channelUrl, fileMessageParams) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- var promisify = function promisify() {
- var pendingMsg = null;
- var pendingPromise = new Promise(function (resolve_, reject_) {
- pendingMsg = channel.sendFileMessage(fileMessageParams, function (res, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var message = res;
- var error = err;
-
- if (swapParams) {
- message = err;
- error = res;
- }
-
- if (error) {
- reject_(error);
- return;
- }
-
- resolve_(message);
- pubsub.publish(SEND_FILE_MESSAGE, {
- message: message,
- channel: channel
- });
- });
- });
-
- if (fileMessageParams.file) {
- // keep the file's local version in pendingMsg.localUrl
- // because promise doesnt allow overriding of pendingMsg.url
- // eslint-disable-next-line no-param-reassign
- pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);
- }
-
- if (fileMessageParams.fileUrl) {
- // eslint-disable-next-line no-param-reassign
- pendingMsg.localUrl = fileMessageParams.fileUrl;
- } // eslint-disable-next-line no-param-reassign
-
-
- pendingMsg.requestState = 'pending';
- pubsub.publish(SEND_MESSAGE_START, {
- message: pendingMsg,
- channel: channel
- });
-
- pendingPromise.get = function () {
- return pendingMsg;
- };
-
- return pendingPromise;
- };
-
- resolve(promisify());
- }).catch(reject);
- });
- };
-};
-var getUpdateUserMessage = function getUpdateUserMessage(store) {
- return function (channelUrl, messageId, params) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.updateUserMessage(messageId, params, function (res, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var message = res;
- var error = err;
-
- if (swapParams) {
- message = err;
- error = res;
- }
-
- if (error) {
- reject(error);
- return;
- }
-
- resolve(message);
- pubsub.publish(UPDATE_USER_MESSAGE, {
- message: message,
- channel: channel,
- // workaround for updating channelPreview on message-edit
- // https://sendbird.atlassian.net/browse/UIKIT-268
- fromSelector: true
- });
- });
- }).catch(reject);
- });
- };
-};
-var getDeleteMessage = function getDeleteMessage(store) {
- return function (channelUrl, message) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- var messageId = message.messageId;
- channel.deleteMessage(message, function (res, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var error = err;
-
- if (swapParams) {
- error = res;
- }
-
- if (error) {
- reject(error);
- return;
- }
-
- resolve(message);
- pubsub.publish(DELETE_MESSAGE, {
- messageId: messageId,
- channel: channel
- });
- });
- }).catch(reject);
- });
- };
-};
-var getResendUserMessage = function getResendUserMessage(store) {
- return function (channelUrl, failedMessage) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.resendUserMessage(failedMessage).then(function (message) {
- resolve(message);
- pubsub.publish(SEND_USER_MESSAGE, {
- message: message,
- channel: channel
- });
- }).catch(reject);
- }).catch(reject);
- });
- };
-};
-var getResendFileMessage = function getResendFileMessage(store) {
- return function (channelUrl, failedMessage) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.resendFileMessage(failedMessage).then(function (message) {
- resolve(message);
- pubsub.publish(SEND_FILE_MESSAGE, {
- message: message,
- channel: channel
- });
- }).catch(reject);
- }).catch(reject);
- });
- };
-};
-var getCreateChannel = function getCreateChannel(store) {
- return function (params) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.createChannel(params).then(function (channel) {
- resolve(channel);
- pubsub.publish(CREATE_CHANNEL$1, {
- channel: channel
- });
- }).catch(reject);
- });
- };
-};
-var getLeaveChannel = function getLeaveChannel(store) {
- return function (channelUrl) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.leave().then(function () {
- resolve(channel);
- pubsub.publish(LEAVE_CHANNEL, {
- channel: channel
- });
- }).catch(reject);
- }).catch(reject);
- });
- };
-};
-var getFreezeChannel = function getFreezeChannel(store) {
- return function (channelUrl) {
- var sdk = getSdk(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.freeze().then(function () {
- // do not need pubsub here - event listener works
- resolve(channel);
- }).catch(reject);
- }).catch(reject);
- });
- };
-};
-var getUnFreezeChannel = function getUnFreezeChannel(store) {
- return function (channelUrl) {
- var sdk = getSdk(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.unfreeze().then(function () {
- // do not need pubsub here - event listener works
- resolve(channel);
- }).catch(reject);
- }).catch(reject);
- });
- };
-};
-var selectors = {
- getSdk: getSdk,
- getConnect: getConnect,
- getDisconnect: getDisconnect,
- getUpdateUserInfo: getUpdateUserInfo,
- getSendUserMessage: getSendUserMessage,
- getSendFileMessage: getSendFileMessage,
- getUpdateUserMessage: getUpdateUserMessage,
- getDeleteMessage: getDeleteMessage,
- getResendUserMessage: getResendUserMessage,
- getResendFileMessage: getResendFileMessage,
- getFreezeChannel: getFreezeChannel,
- getUnFreezeChannel: getUnFreezeChannel,
- getCreateChannel: getCreateChannel,
- getLeaveChannel: getLeaveChannel
-};
-
-function UserProfile(_a) {
- var user = _a.user,
- currentUserId = _a.currentUserId,
- sdk = _a.sdk,
- logger = _a.logger,
- createChannel = _a.createChannel,
- onSuccess = _a.onSuccess;
- var stringSet = useContext(LocalizationContext).stringSet;
- return React.createElement("div", {
- className: "sendbird__user-profile"
- }, React.createElement("section", {
- className: "sendbird__user-profile-avatar"
- }, React.createElement(Avatar$1, {
- height: "80px",
- width: "80px",
- src: user.profileUrl
- })), React.createElement("section", {
- className: "sendbird__user-profile-name"
- }, React.createElement(Label, {
- type: LabelTypography.H_2,
- color: LabelColors.ONBACKGROUND_1
- }, user.nickname || stringSet.NO_NAME)), user.userId !== currentUserId && React.createElement("section", {
- className: "sendbird__user-profile-message"
- }, React.createElement(Button, {
- type: Type$1.SECONDARY,
- onClick: function onClick() {
- var params = new sdk.GroupChannelParams();
- params.isDistinct = true;
- params.addUserIds([user.userId]);
- onSuccess();
- createChannel(params).then(function (groupChannel) {
- logger.info('UserProfile, channel create', groupChannel);
- });
- }
- }, stringSet.USER_PROFILE__MESSAGE)), React.createElement("div", {
- className: "sendbird__user-profile-seperator"
- }), React.createElement("section", {
- className: "sendbird__user-profile-userId"
- }, React.createElement(Label, {
- className: "sendbird__user-profile-userId--label",
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, stringSet.USER_PROFILE__USER_ID), React.createElement(Label, {
- className: "sendbird__user-profile-userId--value",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, user.userId)));
-}
-
-var mapStoreToProps$1 = function mapStoreToProps(store) {
- return {
- sdk: getSdk(store),
- createChannel: getCreateChannel(store),
- logger: store.config.logger,
- pubsub: store.config.pubSub
- };
-};
-
-var ConnectedUserProfile = withSendbirdContext(UserProfile, mapStoreToProps$1);
-
-var MenuItems =
-/*#__PURE__*/
-function (_Component) {
- _inherits(MenuItems, _Component);
-
- function MenuItems(props) {
- var _this;
-
- _classCallCheck(this, MenuItems);
-
- _this = _possibleConstructorReturn(this, _getPrototypeOf(MenuItems).call(this, props));
-
- _defineProperty(_assertThisInitialized(_this), "showParent", function () {
- var _this$props$parentCon = _this.props.parentContainRef,
- parentContainRef = _this$props$parentCon === void 0 ? {} : _this$props$parentCon;
- var current = parentContainRef.current;
-
- if (parentContainRef && current) {
- current.classList.add('sendbird-icon--pressed');
- }
- });
-
- _defineProperty(_assertThisInitialized(_this), "hideParent", function () {
- var _this$props$parentCon2 = _this.props.parentContainRef,
- parentContainRef = _this$props$parentCon2 === void 0 ? {} : _this$props$parentCon2;
- var current = parentContainRef.current;
-
- if (parentContainRef && current) {
- current.classList.remove('sendbird-icon--pressed');
- }
- });
-
- _defineProperty(_assertThisInitialized(_this), "setupEvents", function () {
- var closeDropdown = _this.props.closeDropdown;
-
- var _assertThisInitialize = _assertThisInitialized(_this),
- menuRef = _assertThisInitialize.menuRef;
-
- var handleClickOutside = function handleClickOutside(event) {
- if (menuRef.current && !menuRef.current.contains(event.target)) {
- closeDropdown();
- }
- };
-
- _this.setState({
- handleClickOutside: handleClickOutside
- });
-
- document.addEventListener('mousedown', handleClickOutside);
- });
-
- _defineProperty(_assertThisInitialized(_this), "cleanUpEvents", function () {
- var handleClickOutside = _this.state.handleClickOutside;
- document.removeEventListener('mousedown', handleClickOutside);
- });
-
- _defineProperty(_assertThisInitialized(_this), "getMenuPosition", function () {
- var _this$props = _this.props,
- parentRef = _this$props.parentRef,
- openLeft = _this$props.openLeft;
- var parentRect = parentRef.current.getBoundingClientRect();
- var x = parentRect.x || parentRect.left;
- var y = parentRect.y || parentRect.top;
- var menuStyle = {
- top: y,
- left: x
- };
- if (!_this.menuRef.current) return menuStyle;
- var _window = window,
- innerWidth = _window.innerWidth,
- innerHeight = _window.innerHeight;
-
- var rect = _this.menuRef.current.getBoundingClientRect();
-
- if (y + rect.height > innerHeight) {
- menuStyle.top -= rect.height;
- }
-
- if (x + rect.width > innerWidth && !openLeft) {
- menuStyle.left -= rect.width;
- }
-
- if (menuStyle.top < 0) {
- menuStyle.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;
- }
-
- if (menuStyle.left < 0) {
- menuStyle.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;
- }
-
- menuStyle.top += 32;
-
- if (openLeft) {
- var padding = Number.isNaN(rect.width - 30) ? 108 // default
- : rect.width - 30;
- menuStyle.left -= padding;
- }
-
- return _this.setState({
- menuStyle: menuStyle
- });
- });
-
- _this.menuRef = React.createRef();
- _this.state = {
- menuStyle: {},
- handleClickOutside: function handleClickOutside() {}
- };
- return _this;
- }
-
- _createClass(MenuItems, [{
- key: "componentDidMount",
- value: function componentDidMount() {
- this.setupEvents();
- this.getMenuPosition();
- this.showParent();
- }
- }, {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- this.cleanUpEvents();
- this.hideParent();
- }
- }, {
- key: "render",
- value: function render() {
- var menuStyle = this.state.menuStyle;
- var _this$props2 = this.props,
- children = _this$props2.children,
- style = _this$props2.style;
- return createPortal(React.createElement(React.Fragment, null, React.createElement("div", {
- className: "sendbird-dropdown__menu-backdrop"
- }), React.createElement("ul", {
- className: "sendbird-dropdown__menu",
- ref: this.menuRef,
- style: _objectSpread2({
- display: 'inline-block',
- position: 'fixed',
- left: "".concat(Math.round(menuStyle.left), "px"),
- top: "".concat(Math.round(menuStyle.top), "px")
- }, style)
- }, children)), document.getElementById('sendbird-dropdown-portal'));
- }
- }]);
-
- return MenuItems;
-}(Component);
-MenuItems.propTypes = {
- closeDropdown: PropTypes.func.isRequired,
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired,
- style: PropTypes.shape({}),
- // https://stackoverflow.com/a/51127130
- parentRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
- current: PropTypes.instanceOf(Element)
- })]).isRequired,
- parentContainRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
- current: PropTypes.instanceOf(Element)
- })]).isRequired,
- openLeft: PropTypes.bool
-};
-MenuItems.defaultProps = {
- style: {},
- openLeft: false
-};
-
-var componentClassName = 'sendbird-sort-by-row';
-function SortByRow(_ref) {
- var className = _ref.className,
- maxItemCount = _ref.maxItemCount,
- itemWidth = _ref.itemWidth,
- itemHeight = _ref.itemHeight,
- children = _ref.children;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift(componentClassName);
-
- if (children.length > maxItemCount) {
- var result = [];
-
- for (var i = 0; i < children.length; i += maxItemCount) {
- result.push(React.createElement("div", {
- className: injectingClassName.join(' '),
- style: {
- width: itemWidth * maxItemCount,
- height: itemHeight
- },
- key: className + i
- }, children.slice(i, i + maxItemCount)));
- }
-
- return result;
- }
-
- return React.createElement("div", {
- className: injectingClassName.join(' '),
- style: {
- width: itemWidth * children.length,
- height: itemHeight
- }
- }, children);
-}
-SortByRow.propTypes = {
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- maxItemCount: PropTypes.number.isRequired,
- itemWidth: PropTypes.number.isRequired,
- itemHeight: PropTypes.number.isRequired,
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).isRequired
-};
-SortByRow.defaultProps = {
- className: ''
-};
-
-var EmojiListItems =
-/*#__PURE__*/
-function (_Component) {
- _inherits(EmojiListItems, _Component);
-
- function EmojiListItems(props) {
- var _this;
-
- _classCallCheck(this, EmojiListItems);
-
- _this = _possibleConstructorReturn(this, _getPrototypeOf(EmojiListItems).call(this, props));
-
- _defineProperty(_assertThisInitialized(_this), "showParent", function () {
- var _this$props$parentCon = _this.props.parentContainRef,
- parentContainRef = _this$props$parentCon === void 0 ? {} : _this$props$parentCon;
- var current = parentContainRef.current;
-
- if (parentContainRef && current) {
- current.classList.add('sendbird-reactions--pressed');
- }
- });
-
- _defineProperty(_assertThisInitialized(_this), "hideParent", function () {
- var _this$props$parentCon2 = _this.props.parentContainRef,
- parentContainRef = _this$props$parentCon2 === void 0 ? {} : _this$props$parentCon2;
- var current = parentContainRef.current;
-
- if (parentContainRef && current) {
- current.classList.remove('sendbird-reactions--pressed');
- }
- });
-
- _defineProperty(_assertThisInitialized(_this), "setupEvents", function () {
- var closeDropdown = _this.props.closeDropdown;
-
- var _assertThisInitialize = _assertThisInitialized(_this),
- reactionRef = _assertThisInitialize.reactionRef;
-
- var handleClickOutside = function handleClickOutside(event) {
- if (reactionRef.current && !reactionRef.current.contains(event.target)) {
- closeDropdown();
- }
- };
-
- _this.setState({
- handleClickOutside: handleClickOutside
- });
-
- document.addEventListener('mousedown', handleClickOutside);
- });
-
- _defineProperty(_assertThisInitialized(_this), "cleanUpEvents", function () {
- var handleClickOutside = _this.state.handleClickOutside;
- document.removeEventListener('mousedown', handleClickOutside);
- });
-
- _defineProperty(_assertThisInitialized(_this), "getBarPosition", function () {
- var _this$props = _this.props,
- parentRef = _this$props.parentRef,
- spaceFromTrigger = _this$props.spaceFromTrigger;
- var spaceFromTriggerX = spaceFromTrigger.x || 0;
- var spaceFromTriggerY = spaceFromTrigger.y || 0;
- var parentRect = parentRef.current.getBoundingClientRect();
- var x = parentRect.x || parentRect.left;
- var y = parentRect.y || parentRect.top;
- var reactionStyle = {
- top: y,
- left: x
- };
- if (!_this.reactionRef.current) return reactionStyle;
-
- var rect = _this.reactionRef.current.getBoundingClientRect(); // const childRect = this.reactionRef.current.children[0].getBoundingClientRect();
-
-
- if (reactionStyle.top < rect.height) {
- reactionStyle.top += parentRect.height;
- reactionStyle.top += spaceFromTriggerY;
- } else {
- reactionStyle.top -= rect.height;
- reactionStyle.top -= spaceFromTriggerY;
- }
-
- reactionStyle.left -= rect.width / 2;
- reactionStyle.left += parentRect.height / 2 - 2;
- reactionStyle.left += spaceFromTriggerX;
- var maximumLeft = window.innerWidth - rect.width;
-
- if (maximumLeft < reactionStyle.left) {
- reactionStyle.left = maximumLeft;
- }
-
- if (reactionStyle.left < 0) {
- reactionStyle.left = 0;
- }
-
- return _this.setState({
- reactionStyle: reactionStyle
- });
- });
-
- _this.reactionRef = React.createRef();
- _this.state = {
- reactionStyle: {},
- handleClickOutside: function handleClickOutside() {}
- };
- return _this;
- }
-
- _createClass(EmojiListItems, [{
- key: "componentDidMount",
- value: function componentDidMount() {
- this.setupEvents();
- this.getBarPosition();
- this.showParent();
- }
- }, {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- this.cleanUpEvents();
- this.hideParent();
- }
- }, {
- key: "render",
- value: function render() {
- var reactionStyle = this.state.reactionStyle;
- var children = this.props.children;
- return createPortal(React.createElement(React.Fragment, null, React.createElement("div", {
- className: "sendbird-dropdown__menu-backdrop"
- }), React.createElement("ul", {
- className: "sendbird-dropdown__reaction-bar",
- ref: this.reactionRef,
- style: {
- display: 'inline-block',
- position: 'fixed',
- left: "".concat(Math.round(reactionStyle.left), "px"),
- top: "".concat(Math.round(reactionStyle.top), "px")
- }
- }, React.createElement(SortByRow, {
- className: "sendbird-dropdown__reaction-bar__row",
- maxItemCount: 8,
- itemWidth: 44,
- itemHeight: 40
- }, children))), document.getElementById('sendbird-emoji-list-portal'));
- }
- }]);
-
- return EmojiListItems;
-}(Component);
-EmojiListItems.propTypes = {
- closeDropdown: PropTypes.func.isRequired,
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired,
- parentRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
- current: PropTypes.instanceOf(Element)
- })]).isRequired,
- parentContainRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
- current: PropTypes.instanceOf(Element)
- })]).isRequired,
- spaceFromTrigger: PropTypes.shape({
- x: PropTypes.number,
- y: PropTypes.number
- })
-};
-EmojiListItems.defaultProps = {
- spaceFromTrigger: {}
-};
-
-var ENTER = 13;
-var MenuItems$1 = MenuItems;
-var EmojiListItems$1 = EmojiListItems;
-var MenuItem = function MenuItem(_ref) {
- var children = _ref.children,
- onClick = _ref.onClick,
- className = _ref.className;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React.createElement("li", {
- tabIndex: 0,
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-dropdown__menu-item']).join(' '),
- onClick: onClick,
- onKeyPress: function onKeyPress(e) {
- if (e.keyCode === ENTER) {
- onClick(e);
- }
- },
- role: "menuitem"
- }, React.createElement(Label, {
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1,
- className: "sendbird-dropdown__menu-item__text"
- }, children));
-};
-MenuItem.propTypes = {
- onClick: PropTypes.func.isRequired,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired
-};
-MenuItem.defaultProps = {
- className: ''
-};
-function ContextMenu(_ref2) {
- var menuTrigger = _ref2.menuTrigger,
- menuItems = _ref2.menuItems;
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showMenu = _useState2[0],
- setShowMenu = _useState2[1];
-
- return React.createElement("div", {
- className: "sendbird-context-menu",
- style: {
- display: 'inline'
- }
- }, menuTrigger(function () {
- return setShowMenu(!showMenu);
- }), showMenu && menuItems(function () {
- return setShowMenu(false);
- }));
-}
-ContextMenu.propTypes = {
- menuTrigger: PropTypes.func.isRequired,
- menuItems: PropTypes.func.isRequired
-};
-
-var COMPONENT_NAME = 'sendbird-user-list-item';
-function UserListItem(_ref) {
- var user = _ref.user,
- className = _ref.className,
- checkBox = _ref.checkBox,
- currentUser = _ref.currentUser,
- checked = _ref.checked,
- _onChange = _ref.onChange,
- action = _ref.action;
- var injectingClassNames = Array.isArray(className) ? className : [className];
- var uniqueKey = user.userId;
- var actionRef = React.useRef(null);
- var parentRef = React.useRef(null);
- var avatarRef = React.useRef(null);
-
- var _useContext = useContext(UserProfileContext),
- disableUserProfile = _useContext.disableUserProfile,
- renderUserProfile = _useContext.renderUserProfile;
-
- var _useContext2 = useContext(LocalizationContext),
- stringSet = _useContext2.stringSet;
-
- return React.createElement("div", {
- ref: parentRef,
- className: [COMPONENT_NAME].concat(_toConsumableArray(injectingClassNames)).join(' ')
- }, user.isMuted && React.createElement(MutedAvatarOverlay, {
- height: 40,
- width: 40
- }), React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(Avatar$1, {
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- ref: avatarRef,
- className: "".concat(COMPONENT_NAME, "__avatar"),
- src: user.profileUrl,
- width: "40px",
- height: "40px"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- openLeft: true,
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: user,
- currentUserId: currentUser,
- close: closeDropdown
- }) : React.createElement(ConnectedUserProfile, {
- user: user,
- currentUserId: currentUser,
- onSuccess: closeDropdown
- }));
- }
- }), React.createElement(Label, {
- className: "".concat(COMPONENT_NAME, "__title"),
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, user.nickname || stringSet.NO_NAME, currentUser === user.userId && ' (You)'), // if there is now nickname, display userId
- !user.nickname && React.createElement(Label, {
- className: "".concat(COMPONENT_NAME, "__subtitle"),
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, user.userId), checkBox && // eslint-disable-next-line jsx-a11y/label-has-associated-control
- React.createElement("label", {
- className: "".concat(COMPONENT_NAME, "__checkbox"),
- htmlFor: uniqueKey
- }, React.createElement(Checkbox, {
- id: uniqueKey,
- checked: checked,
- onChange: function onChange(event) {
- return _onChange(event);
- }
- })), user.role === 'operator' && React.createElement(Label, {
- className: "".concat(COMPONENT_NAME, "__operator"),
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_2
- }, "Operator"), action && React.createElement("div", {
- ref: actionRef,
- className: "".concat(COMPONENT_NAME, "__action")
- }, action({
- actionRef: actionRef,
- parentRef: parentRef
- })));
-}
-UserListItem.propTypes = {
- user: PropTypes.shape({
- userId: PropTypes.string,
- role: PropTypes.string,
- isMuted: PropTypes.bool,
- nickname: PropTypes.string,
- profileUrl: PropTypes.string
- }).isRequired,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- currentUser: PropTypes.string,
- action: PropTypes.element,
- checkBox: PropTypes.bool,
- checked: PropTypes.bool,
- onChange: PropTypes.func
-};
-UserListItem.defaultProps = {
- className: '',
- currentUser: '',
- checkBox: false,
- checked: false,
- action: null,
- onChange: function onChange() {}
-};
-
-var filterUser = function filterUser(idsToFilter) {
- return function (currentId) {
- return idsToFilter.includes(currentId);
- };
-};
-
-var InviteMembers = function InviteMembers(props) {
- var userQueryCreator = props.userQueryCreator,
- closeModal = props.closeModal,
- _onSubmit = props.onSubmit,
- submitText = props.submitText,
- titleText = props.titleText,
- idsToFilter = props.idsToFilter,
- swapParams = props.swapParams;
-
- var _useState = useState([]),
- _useState2 = _slicedToArray(_useState, 2),
- users = _useState2[0],
- setUsers = _useState2[1];
-
- var _useState3 = useState({}),
- _useState4 = _slicedToArray(_useState3, 2),
- selectedUsers = _useState4[0],
- setSelectedUsers = _useState4[1];
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var _useState5 = useState({}),
- _useState6 = _slicedToArray(_useState5, 2),
- usersDataSource = _useState6[0],
- setUsersDataSource = _useState6[1];
-
- var selectedCount = Object.keys(selectedUsers).length;
- useEffect(function () {
- var applicationUserListQuery = userQueryCreator();
- setUsersDataSource(applicationUserListQuery);
- applicationUserListQuery.next(function (res, err) {
- // eslint-disable-next-line no-underscore-dangle
- var users_ = res;
- var error = err;
-
- if (swapParams) {
- users_ = err;
- error = users_;
- }
-
- if (error) {
- return;
- }
-
- setUsers(users_);
- });
- }, []);
- return React.createElement(Modal, {
- onCancel: closeModal,
- onSubmit: function onSubmit() {
- var selectedUserList = Object.keys(selectedUsers);
-
- if (selectedUserList.length > 0) {
- _onSubmit(selectedUserList);
-
- closeModal();
- }
- },
- submitText: submitText,
- titleText: titleText,
- type: Type$1.PRIMARY
- }, React.createElement("div", null, React.createElement(Label, {
- color: selectedCount > 0 ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3,
- type: LabelTypography.CAPTION_1
- }, "".concat(selectedCount, " ").concat(stringSet.MODAL__INVITE_MEMBER__SELECTEC)), React.createElement("div", {
- className: "sendbird-create-channel--scroll",
- onScroll: function onScroll(e) {
- var hasNext = usersDataSource.hasNext;
- var fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;
-
- if (hasNext && fetchMore) {
- usersDataSource.next(function (usersBatch, error) {
- if (error) {
- return;
- }
-
- setUsers([].concat(_toConsumableArray(users), _toConsumableArray(usersBatch)));
- });
- }
- }
- }, users.map(function (user) {
- return !filterUser(idsToFilter)(user.userId) && React.createElement(UserListItem, {
- key: user.userId,
- user: user,
- checkBox: true,
- checked: selectedUsers[user.userId],
- onChange: function onChange(event) {
- var modifiedSelectedUsers = _objectSpread2({}, selectedUsers, _defineProperty({}, event.target.id, event.target.checked));
-
- if (!event.target.checked) {
- delete modifiedSelectedUsers[event.target.id];
- }
-
- setSelectedUsers(modifiedSelectedUsers);
- }
- });
- }))));
-};
-
-InviteMembers.propTypes = {
- idsToFilter: PropTypes.arrayOf(PropTypes.string),
- swapParams: PropTypes.bool,
- userQueryCreator: PropTypes.func.isRequired,
- closeModal: PropTypes.func.isRequired,
- onSubmit: PropTypes.func.isRequired,
- submitText: PropTypes.string,
- titleText: PropTypes.string
-};
-InviteMembers.defaultProps = {
- swapParams: false,
- submitText: 'create',
- titleText: 'Create new channel',
- idsToFilter: []
-};
-
-var createDefaultUserListQuery = function createDefaultUserListQuery(_ref) {
- var sdk = _ref.sdk,
- _ref$userFilledApplic = _ref.userFilledApplicationUserListQuery,
- userFilledApplicationUserListQuery = _ref$userFilledApplic === void 0 ? {} : _ref$userFilledApplic;
- var params = sdk.createApplicationUserListQuery();
-
- if (userFilledApplicationUserListQuery) {
- Object.keys(userFilledApplicationUserListQuery).forEach(function (key) {
- params[key] = userFilledApplicationUserListQuery[key];
- });
- }
-
- return params;
-};
-
-var getApplicationAttributes = function getApplicationAttributes() {
- var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var _sdk$appInfo = sdk.appInfo,
- appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
- var _appInfo$applicationA = appInfo.applicationAttributes,
- applicationAttributes = _appInfo$applicationA === void 0 ? [] : _appInfo$applicationA;
- return applicationAttributes;
-};
-
-var isBroadcastChannelEnabled = function isBroadcastChannelEnabled() {
- var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var ALLOW_BROADCAST_CHANNEL = 'allow_broadcast_channel';
- var applicationAttributes = getApplicationAttributes(sdk);
-
- if (Array.isArray(applicationAttributes)) {
- return applicationAttributes.includes(ALLOW_BROADCAST_CHANNEL);
- }
-
- return false;
-};
-var isSuperGroupChannelEnabled = function isSuperGroupChannelEnabled() {
- var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var ALLOW_SUPER_GROUP_CHANNEL = 'allow_super_group_channel';
- var applicationAttributes = getApplicationAttributes(sdk);
-
- if (Array.isArray(applicationAttributes)) {
- return applicationAttributes.includes(ALLOW_SUPER_GROUP_CHANNEL);
- }
-
- return false;
-};
-var setChannelType = function setChannelType(params, type) {
- if (type === 'broadcast') {
- // eslint-disable-next-line no-param-reassign
- params.isBroadcast = true;
- }
-
- if (type === 'supergroup') {
- // eslint-disable-next-line no-param-reassign
- params.isSuper = true;
- }
-
- return params;
-};
-var createChannel = function createChannel(sdk, selectedUsers, onBeforeCreateChannel, userId) {
- var type = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'group';
- return new Promise(function (resolve, reject) {
- // have custom params
- if (onBeforeCreateChannel) {
- var _params = onBeforeCreateChannel(selectedUsers);
-
- setChannelType(_params, type);
- sdk.GroupChannel.createChannel(_params, function (response, error) {
- var swapParams = sdk.getErrorFirstCallback();
- var groupChannel = response;
- var err = error;
-
- if (swapParams) {
- groupChannel = error;
- err = response;
- }
-
- if (err) {
- reject(err);
- }
-
- resolve(groupChannel);
- });
- return;
- }
-
- var params = new sdk.GroupChannelParams();
- params.addUserIds(selectedUsers);
- params.isDistinct = false;
-
- if (userId) {
- params.operatorUserIds = [userId];
- }
-
- setChannelType(params, type); // do not have custom params
-
- sdk.GroupChannel.createChannel(params, function (response, error) {
- var swapParams = sdk.getErrorFirstCallback();
- var groupChannel = response;
- var err = error;
-
- if (swapParams) {
- groupChannel = error;
- err = response;
- }
-
- if (err) {
- reject(err);
- }
-
- resolve(groupChannel);
- });
- });
-};
-
-function AddChannel(_ref) {
- var sdk = _ref.sdk,
- disabled = _ref.disabled,
- channelListDispatcher = _ref.channelListDispatcher,
- onBeforeCreateChannel = _ref.onBeforeCreateChannel,
- userId = _ref.userId,
- userFilledApplicationUserListQuery = _ref.userFilledApplicationUserListQuery,
- userListQuery = _ref.userListQuery;
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showModal = _useState2[0],
- setShowModal = _useState2[1];
-
- var _useState3 = useState(0),
- _useState4 = _slicedToArray(_useState3, 2),
- step = _useState4[0],
- setStep = _useState4[1];
-
- var _useState5 = useState('group'),
- _useState6 = _slicedToArray(_useState5, 2),
- type = _useState6[0],
- setType = _useState6[1];
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- if (!sdk || !sdk.createApplicationUserListQuery) {
- return null;
- }
-
- var isBroadcastAvailable = isBroadcastChannelEnabled(sdk);
- var isSupergroupAvailable = isSuperGroupChannelEnabled(sdk);
- return React.createElement(React.Fragment, null, React.createElement(IconButton, {
- height: "32px",
- width: "32px",
- onClick: function onClick() {
- setShowModal(true);
- },
- disabled: disabled
- }, React.createElement(Icon, {
- type: IconTypes.CREATE,
- fillColor: IconColors.PRIMARY,
- width: "24px",
- height: "24px"
- })), showModal && step === 0 && React.createElement(Modal, {
- titleText: "New channel",
- hideFooter: true,
- onCancel: function onCancel() {
- setShowModal(false);
- },
- onSubmit: function onSubmit() {}
- }, React.createElement("div", {
- className: "sendbird-add-channel__rectangle-wrap"
- }, React.createElement("div", {
- className: "sendbird-add-channel__rectangle",
- onClick: function onClick() {
- setType('group');
- setStep(1);
- },
- role: "button",
- tabIndex: 0,
- onKeyDown: function onKeyDown() {
- setType('group');
- setStep(1);
- }
- }, React.createElement(Icon, {
- type: IconTypes.CHAT
- }), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, "Group")), isSupergroupAvailable && React.createElement("div", {
- className: "sendbird-add-channel__rectangle",
- onClick: function onClick() {
- setType('supergroup');
- setStep(1);
- },
- role: "button",
- tabIndex: 0,
- onKeyDown: function onKeyDown() {
- setType('supergroup');
- setStep(1);
- }
- }, React.createElement(Icon, {
- type: IconTypes.SUPER_GROUP
- }), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, "Super group")), isBroadcastAvailable && React.createElement("div", {
- className: "sendbird-add-channel__rectangle",
- onClick: function onClick() {
- setType('broadcast');
- setStep(1);
- },
- role: "button",
- tabIndex: 0,
- onKeyDown: function onKeyDown() {
- setType('broadcast');
- setStep(1);
- }
- }, React.createElement(Icon, {
- type: IconTypes.BROADCAST
- }), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, "Broadcast")))), showModal && step === 1 && React.createElement(InviteMembers, {
- swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
- titleText: stringSet.MODAL__CREATE_CHANNEL__TITLE,
- submitText: stringSet.BUTTON__CREATE,
- closeModal: function closeModal() {
- setStep(0);
- setShowModal(false);
- },
- idsToFilter: [userId],
- userQueryCreator: function userQueryCreator() {
- return userListQuery && typeof userListQuery === 'function' ? userListQuery() : createDefaultUserListQuery({
- sdk: sdk,
- userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
- });
- },
- onSubmit: function onSubmit(selectedUsers) {
- return createChannel(sdk, selectedUsers, onBeforeCreateChannel, userId, type).then(function (channel) {
- // maybe - do this in event listener
- channelListDispatcher({
- type: CREATE_CHANNEL,
- payload: channel
- });
- });
- }
- }));
-}
-AddChannel.propTypes = {
- sdk: PropTypes.shape({
- getErrorFirstCallback: PropTypes.func,
- createApplicationUserListQuery: PropTypes.func
- }).isRequired,
- disabled: PropTypes.bool,
- channelListDispatcher: PropTypes.func.isRequired,
- userFilledApplicationUserListQuery: PropTypes.shape({}),
- onBeforeCreateChannel: PropTypes.func,
- userId: PropTypes.string.isRequired,
- userListQuery: PropTypes.func
-};
-AddChannel.defaultProps = {
- disabled: false,
- userFilledApplicationUserListQuery: {},
- onBeforeCreateChannel: null,
- userListQuery: null
-};
-
-var LeaveChannel = function LeaveChannel(props) {
- var onCloseModal = props.onCloseModal,
- onLeaveChannel = props.onLeaveChannel;
- return React.createElement(Modal, {
- onCancel: onCloseModal,
- onSubmit: onLeaveChannel,
- submitText: "Leave",
- titleText: "Leave this channel?"
- });
-};
-
-LeaveChannel.propTypes = {
- onCloseModal: PropTypes.func.isRequired,
- onLeaveChannel: PropTypes.func.isRequired
-};
-
-function ChannelPreviewAction(_ref) {
- var disabled = _ref.disabled,
- onLeaveChannel = _ref.onLeaveChannel;
- var parentRef = useRef(null);
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showModal = _useState2[0],
- setShowModal = _useState2[1];
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.createElement("div", {
- role: "button",
- style: {
- display: 'inline-block'
- },
- onKeyDown: function onKeyDown(e) {
- e.stopPropagation();
- },
- tabIndex: 0,
- onClick: function onClick(e) {
- e.stopPropagation();
- }
- }, React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: parentRef,
- onClick: toggleDropdown,
- height: "32px",
- width: "32px"
- }, React.createElement(Icon, {
- type: IconTypes.MORE,
- fillColor: IconColors.PRIMARY,
- width: "24px",
- height: "24px"
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: parentRef,
- parentContainRef: parentRef,
- closeDropdown: closeDropdown
- }, React.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- setShowModal(true);
- closeDropdown();
- }
- }, stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE));
- }
- }), showModal && React.createElement(LeaveChannel, {
- onCloseModal: function onCloseModal() {
- return setShowModal(false);
- },
- onLeaveChannel: onLeaveChannel
- }));
-}
-ChannelPreviewAction.propTypes = {
- disabled: PropTypes.bool,
- onLeaveChannel: PropTypes.func.isRequired
-};
-ChannelPreviewAction.defaultProps = {
- disabled: false
-};
-
-function Loader(_ref) {
- var children = _ref.children,
- className = _ref.className,
- width = _ref.width,
- height = _ref.height;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-loader']).join(' '),
- style: {
- width: typeof width === 'string' ? width : "".concat(width, "px"),
- height: typeof height === 'string' ? height : "".concat(height, "px")
- }
- }, children);
-}
-Loader.propTypes = {
- children: PropTypes.element,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
-};
-Loader.defaultProps = {
- children: React.createElement(Icon, {
- type: IconTypes.SPINNER,
- width: "26px",
- height: "26px"
- }),
- className: '',
- width: '26px',
- height: '26px'
-};
-
-function PlaceHolder(_ref) {
- var className = _ref.className,
- type = _ref.type,
- retryToConnect = _ref.retryToConnect;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-place-holder']).join(' ')
- }, type === PlaceHolderTypes.LOADING ? React.createElement(Loader, {
- width: "48px",
- height: "48px"
- }, React.createElement(Icon, {
- type: IconTypes.SPINNER_LARGE,
- width: "48px",
- height: "48px"
- })) : null, type === PlaceHolderTypes.NO_CHANNELS || type === PlaceHolderTypes.WRONG ? React.createElement("div", {
- className: "sendbird-place-holder__body"
- }, type === PlaceHolderTypes.NO_CHANNELS && React.createElement(Icon, {
- className: "sendbird-place-holder__body__icon",
- type: IconTypes.CHAT,
- fillColor: IconColors.ON_BACKGROUND_3,
- width: "64px",
- height: "64px"
- }), type === PlaceHolderTypes.WRONG && React.createElement(Icon, {
- className: "sendbird-place-holder__body__icon",
- type: IconTypes.ERROR,
- fillColor: IconColors.ON_BACKGROUND_3,
- width: "64px",
- height: "64px"
- }), React.createElement(Label, {
- className: "sendbird-place-holder__body__text",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_2
- }, type === PlaceHolderTypes.NO_CHANNELS ? stringSet.PLACE_HOLDER__NO_CHANNEL : stringSet.PLACE_HOLDER__WRONG), retryToConnect ? React.createElement("div", {
- className: "sendbird-place-holder__body__reconnect",
- role: "button",
- tabIndex: 0,
- onClick: retryToConnect,
- onKeyPress: retryToConnect
- }, React.createElement(Icon, {
- className: "sendbird-place-holder__body__reconnect__icon",
- type: IconTypes.REFRESH,
- fillColor: IconColors.PRIMARY,
- width: "20px",
- height: "20px"
- }), React.createElement(Label, {
- className: "sendbird-place-holder__body__reconnect__text",
- type: LabelTypography.BUTTON_1,
- color: LabelColors.PRIMARY
- }, stringSet.PLACE_HOLDER__RETRY_TO_CONNECT)) : null) : null);
-}
-PlaceHolder.propTypes = {
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- type: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(PlaceHolderTypes)), PropTypes.string]).isRequired,
- retryToConnect: PropTypes.func
-};
-PlaceHolder.defaultProps = {
- className: '',
- retryToConnect: null
-};
-
-function ChannelsPlaceholder(_ref) {
- var type = _ref.type;
- return React.createElement("div", {
- className: "sendbird-channel-list"
- }, React.createElement(PlaceHolder, {
- type: type
- }));
-}
-ChannelsPlaceholder.propTypes = {
- type: PropTypes.string.isRequired
-};
-
-var createEventHandler = function createEventHandler(_ref) {
- var sdk = _ref.sdk,
- sdkChannelHandlerId = _ref.sdkChannelHandlerId,
- channelListDispatcher = _ref.channelListDispatcher,
- logger = _ref.logger;
- var ChannelHandler = new sdk.ChannelHandler();
-
- ChannelHandler.onChannelChanged = function (channel) {
- logger.info('ChannelList: onChannelChanged', channel);
- channelListDispatcher({
- type: ON_CHANNEL_CHANGED,
- payload: channel
- });
- };
-
- ChannelHandler.onChannelDeleted = function (channelUrl) {
- logger.info('ChannelList: onChannelDeleted', channelUrl);
- channelListDispatcher({
- type: ON_CHANNEL_DELETED,
- payload: channelUrl
- });
- };
-
- ChannelHandler.onUserJoined = function (channel) {
- logger.info('ChannelList: onUserJoined', channel);
-
- if (channel.lastMessage) {
- channelListDispatcher({
- type: ON_USER_JOINED,
- payload: channel
- });
- }
- };
-
- ChannelHandler.onUserBanned = function (channel, user) {
- var currentUser = sdk.currentUser;
- logger.info('Channel | useHandleChannelEvents: onUserBanned', channel);
-
- if (user.userId === currentUser.userId) {
- channelListDispatcher({
- type: ON_USER_LEFT,
- payload: {
- channel: channel,
- isMe: true
- }
- });
- } else {
- channelListDispatcher({
- type: ON_USER_LEFT,
- payload: {
- channel: channel,
- isMe: false
- }
- });
- }
- };
-
- ChannelHandler.onUserLeft = function (channel, leftUser) {
- var currentUser = sdk.currentUser;
- var isMe = currentUser.userId === leftUser.userId;
- logger.info('ChannelList: onUserLeft', channel);
- channelListDispatcher({
- type: ON_USER_LEFT,
- payload: {
- channel: channel,
- isMe: isMe
- }
- });
- };
-
- ChannelHandler.onReadStatus = function (channel) {
- logger.info('ChannelList: onReadStatus', channel);
- channelListDispatcher({
- type: ON_READ_RECEIPT_UPDATED,
- payload: channel
- });
- };
-
- ChannelHandler.onDeliveryReceiptUpdated = function (channel) {
- logger.info('ChannelList: onDeliveryReceiptUpdated', channel);
-
- if (channel.lastMessage) {
- channelListDispatcher({
- type: ON_DELIVERY_RECEIPT_UPDATED,
- payload: channel
- });
- }
- };
-
- ChannelHandler.onMessageUpdated = function (channel, message) {
- if (channel.lastMessage.isEqual(message)) {
- logger.info('ChannelList: onMessageUpdated', channel);
- channelListDispatcher({
- type: ON_LAST_MESSAGE_UPDATED,
- payload: channel
- });
- }
- };
-
- ChannelHandler.onChannelHidden = function (channel) {
- logger.info('ChannelList: onChannelHidden', channel);
- channelListDispatcher({
- type: ON_CHANNEL_ARCHIVED,
- payload: channel.url
- });
- };
-
- ChannelHandler.onChannelFrozen = function (channel) {
- logger.info('ChannelList: onChannelFrozen', channel);
- channelListDispatcher({
- type: ON_CHANNEL_FROZEN,
- payload: channel
- });
- };
-
- ChannelHandler.onChannelUnfrozen = function (channel) {
- logger.info('ChannelList: onChannelUnfrozen', channel);
- channelListDispatcher({
- type: ON_CHANNEL_UNFROZEN,
- payload: channel
- });
- };
-
- logger.info('ChannelList: Added channelHandler');
- sdk.addChannelHandler(sdkChannelHandlerId, ChannelHandler);
-};
-
-var createApplicationUserListQuery = function createApplicationUserListQuery(_ref2) {
- var sdk = _ref2.sdk,
- _ref2$userFilledChann = _ref2.userFilledChannelListQuery,
- userFilledChannelListQuery = _ref2$userFilledChann === void 0 ? {} : _ref2$userFilledChann;
- var channelListQuery = sdk.GroupChannel.createMyGroupChannelListQuery();
- channelListQuery.includeEmpty = false;
- channelListQuery.order = 'latest_last_message'; // 'chronological', 'latest_last_message', 'channel_name_alphabetical', and 'metadata_value_alphabetical'
-
- channelListQuery.limit = 20; // The value of pagination limit could be set up to 100.
-
- if (userFilledChannelListQuery) {
- Object.keys(userFilledChannelListQuery).forEach(function (key) {
- channelListQuery[key] = userFilledChannelListQuery[key];
- });
- }
-
- return channelListQuery;
-};
-/**
- * Setup event listener
- * create channel source query
- * addloading screen
- */
-
-
-function setupChannelList(_ref3) {
- var sdk = _ref3.sdk,
- sdkChannelHandlerId = _ref3.sdkChannelHandlerId,
- channelListDispatcher = _ref3.channelListDispatcher,
- setChannelSource = _ref3.setChannelSource,
- onChannelSelect = _ref3.onChannelSelect,
- userFilledChannelListQuery = _ref3.userFilledChannelListQuery,
- logger = _ref3.logger,
- sortChannelList = _ref3.sortChannelList;
- createEventHandler({
- sdk: sdk,
- channelListDispatcher: channelListDispatcher,
- sdkChannelHandlerId: sdkChannelHandlerId,
- logger: logger
- });
- logger.info('ChannelList - creating query', {
- userFilledChannelListQuery: userFilledChannelListQuery
- });
- var channelListQuery = createApplicationUserListQuery({
- sdk: sdk,
- userFilledChannelListQuery: userFilledChannelListQuery
- });
- logger.info('ChannelList - created query', channelListQuery);
- setChannelSource(channelListQuery);
- channelListDispatcher({
- type: INIT_CHANNELS_START
- });
- logger.info('ChannelList - fetching channels');
-
- if (channelListQuery.hasNext) {
- channelListQuery.next(function (response, error) {
- var swapParams = sdk.getErrorFirstCallback();
- var channelList = response;
- var err = error;
-
- if (swapParams) {
- channelList = error;
- err = response;
- }
-
- logger.info('ChannelList - fetched channels', channelList);
-
- if (err) {
- logger.error('ChannelList - couldnt fetch channels', err);
- channelListDispatcher({
- type: INIT_CHANNELS_FAILURE
- });
- return;
- } // select first channel
-
-
- logger.info('ChannelList - highlight channel', channelList[0]);
- var sorted = channelList;
-
- if (sortChannelList && typeof sortChannelList === 'function') {
- sorted = sortChannelList(channelList);
- logger.info('ChannelList - channel list sorted', sorted);
- }
-
- onChannelSelect(sorted[0]);
- channelListDispatcher({
- type: INIT_CHANNELS_SUCCESS,
- payload: sorted
- });
-
- if (channelList && typeof channelList.forEach === 'function') {
- logger.info('ChannelList - mark all channels as delivered');
- channelList.forEach(function (c) {
- return c.markAsDelivered();
- });
- }
- });
- } else {
- logger.warning('ChannelList - there are no more channels');
- }
-}
-
-var pubSubHandleRemover = function pubSubHandleRemover(subscriber) {
- subscriber.forEach(function (s) {
- try {
- s.remove();
- } catch (_unused) {//
- }
- });
-};
-var pubSubHandler = function pubSubHandler(pubSub, channelListDispatcher) {
- var subScriber = new Map();
- if (!pubSub) return subScriber;
- subScriber.set(CREATE_CHANNEL$1, pubSub.subscribe(CREATE_CHANNEL$1, function (msg) {
- var channel = msg.channel;
- channelListDispatcher({
- type: 'CREATE_CHANNEL',
- payload: channel
- });
- }));
- subScriber.set(UPDATE_USER_MESSAGE, pubSub.subscribe(UPDATE_USER_MESSAGE, function (msg) {
- var channel = msg.channel,
- message = msg.message;
- var updatedChannel = channel;
- updatedChannel.lastMessage = message;
-
- if (channel) {
- channelListDispatcher({
- type: ON_LAST_MESSAGE_UPDATED,
- payload: updatedChannel
- });
- }
- }));
- subScriber.set(LEAVE_CHANNEL, pubSub.subscribe(LEAVE_CHANNEL, function (msg) {
- var channel = msg.channel;
- channelListDispatcher({
- type: LEAVE_CHANNEL_SUCCESS,
- payload: channel.url
- });
- }));
- subScriber.set(SEND_MESSAGE_START, pubSub.subscribe(SEND_MESSAGE_START, function (msg) {
- var channel = msg.channel;
- channelListDispatcher({
- type: CHANNEL_REPLACED_TO_TOP,
- payload: channel
- });
- }));
- return subScriber;
-};
-
-var noop$1 = function noop() {};
-
-function ChannelList(props) {
- var _props$stores = props.stores,
- _props$stores$sdkStor = _props$stores.sdkStore,
- sdkStore = _props$stores$sdkStor === void 0 ? {} : _props$stores$sdkStor,
- _props$stores$userSto = _props$stores.userStore,
- userStore = _props$stores$userSto === void 0 ? {} : _props$stores$userSto,
- _props$config = props.config,
- userId = _props$config.userId,
- isOnline = _props$config.isOnline,
- userListQuery = _props$config.userListQuery,
- logger = _props$config.logger,
- pubSub = _props$config.pubSub,
- theme = _props$config.theme,
- userDispatcher = props.dispatchers.userDispatcher,
- _props$queries = props.queries,
- queries = _props$queries === void 0 ? {} : _props$queries,
- renderChannelPreview = props.renderChannelPreview,
- renderHeader = props.renderHeader,
- renderUserProfile = props.renderUserProfile,
- disableUserProfile = props.disableUserProfile,
- allowProfileEdit = props.allowProfileEdit,
- sortChannelList = props.sortChannelList,
- onProfileEditSuccess = props.onProfileEditSuccess,
- onThemeChange = props.onThemeChange,
- onBeforeCreateChannel = props.onBeforeCreateChannel,
- onChannelSelect = props.onChannelSelect;
- var _props$config2 = props.config,
- config = _props$config2 === void 0 ? {} : _props$config2; // enable if it is true atleast once(both are flase by default)
-
- var enableEditProfile = allowProfileEdit || config.allowProfileEdit;
- var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
- var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
- var _sdkStore$sdk = sdkStore.sdk,
- sdk = _sdkStore$sdk === void 0 ? {} : _sdkStore$sdk;
- var userFilledChannelListQuery = queries.channelListQuery;
- var userFilledApplicationUserListQuery = queries.applicationUserListQuery;
- var sdkError = sdkStore.error;
-
- var _useState = useState({}),
- _useState2 = _slicedToArray(_useState, 2),
- user = _useState2[0],
- setUser = _useState2[1];
-
- useEffect(function () {
- setUser(userStore.user);
- }, [userStore.user]);
- var sdkIntialized = sdkStore.initialized;
-
- var _useReducer = useReducer(reducer$2, channelListInitialState),
- _useReducer2 = _slicedToArray(_useReducer, 2),
- channelListStore = _useReducer2[0],
- channelListDispatcher = _useReducer2[1];
-
- var _useState3 = useState({}),
- _useState4 = _slicedToArray(_useState3, 2),
- channelSource = _useState4[0],
- setChannelSource = _useState4[1];
-
- var _useState5 = useState(null),
- _useState6 = _slicedToArray(_useState5, 2),
- sdkChannelHandlerId = _useState6[0],
- setSdkChannelHandlerId = _useState6[1];
-
- var _useState7 = useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- showProfileEdit = _useState8[0],
- setShowProfileEdit = _useState8[1];
-
- var loading = channelListStore.loading,
- currentChannel = channelListStore.currentChannel;
- useEffect(function () {
- var subscriber = pubSubHandler(pubSub, channelListDispatcher);
- return function () {
- pubSubHandleRemover(subscriber);
- };
- }, [sdkIntialized]);
- useEffect(function () {
- setSdkChannelHandlerId(uuidv4);
-
- if (sdkIntialized) {
- logger.info('ChannelList: Setup channelHandlers');
- setupChannelList({
- sdk: sdk,
- sdkChannelHandlerId: sdkChannelHandlerId,
- channelListDispatcher: channelListDispatcher,
- setChannelSource: setChannelSource,
- onChannelSelect: onChannelSelect,
- userFilledChannelListQuery: userFilledChannelListQuery,
- logger: logger,
- sortChannelList: sortChannelList
- });
- } else {
- logger.info('ChannelList: Removing channelHandlers'); // remove previous channelHandlers
-
- if (sdk && sdk.removeChannelHandler) {
- sdk.removeChannelHandler(sdkChannelHandlerId);
- } // remove channelSource
-
-
- setChannelSource({}); // cleanup
-
- channelListDispatcher({
- type: RESET_CHANNEL_LIST
- });
- }
-
- return function () {
- logger.info('ChannelList: Removing channelHandlers');
-
- if (sdk && sdk.removeChannelHandler) {
- sdk.removeChannelHandler(sdkChannelHandlerId);
- }
- };
- }, [sdkIntialized, userFilledChannelListQuery, sortChannelList]);
- var allChannels = channelListStore.allChannels;
- var sortedChannels = sortChannelList && typeof sortChannelList === 'function' ? sortChannelList(allChannels) : allChannels;
-
- if (sortedChannels.length !== allChannels.length) {
- var warning = "ChannelList: You have removed/added extra channels on sortChannelList\n this could cause unexpected problems"; // eslint-disable-next-line no-console
-
- console.warn(warning, {
- before: allChannels,
- after: sortedChannels
- });
- logger.warning(warning, {
- before: allChannels,
- after: sortedChannels
- });
- }
-
- useEffect(function () {
- if (!sdk || !sdk.GroupChannel) {
- return;
- }
-
- sdk.GroupChannel.getChannel(currentChannel, function (groupChannel) {
- if (groupChannel) {
- onChannelSelect(groupChannel);
- } else {
- onChannelSelect(null);
- }
- });
- }, [currentChannel]);
- return React.createElement(UserProfileProvider, {
- disableUserProfile: userDefinedDisableUserProfile,
- renderUserProfile: userDefinedRenderProfile,
- className: "sendbird-channel-list"
- }, React.createElement("div", {
- className: "sendbird-channel-list__header"
- }, React.createElement(ChannelHeader, {
- renderHeader: renderHeader,
- user: user,
- onEdit: function onEdit() {
- if (enableEditProfile) {
- setShowProfileEdit(true);
- }
- },
- allowProfileEdit: enableEditProfile,
- iconButton: React.createElement(AddChannel, {
- disabled: !isOnline,
- userListQuery: userListQuery,
- sdk: sdk,
- channelListDispatcher: channelListDispatcher,
- userId: userId,
- userFilledApplicationUserListQuery: userFilledApplicationUserListQuery,
- onBeforeCreateChannel: onBeforeCreateChannel
- })
- })), showProfileEdit && React.createElement(ConnectedEditUserProfile, {
- onThemeChange: onThemeChange,
- user: user,
- onCancel: function onCancel() {
- setShowProfileEdit(false);
- },
- onSubmit: function onSubmit(newName, newFile) {
- sdk.updateCurrentUserInfoWithProfileImage(newName, newFile, function (updatedUser) {
- userDispatcher({
- type: UPDATE_USER_INFO,
- payload: updatedUser
- });
-
- if (onProfileEditSuccess && typeof onProfileEditSuccess === 'function') {
- onProfileEditSuccess(updatedUser);
- }
- });
- }
- }), React.createElement("div", {
- className: "sendbird-channel-list__body",
- onScroll: function onScroll(e) {
- var fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;
-
- if (fetchMore && channelSource.hasNext) {
- logger.info('ChannelList: Fetching more channels');
- channelListDispatcher({
- type: FETCH_CHANNELS_START
- });
- channelSource.next(function (response, error) {
- var swapParams = sdk.getErrorFirstCallback();
- var channelList = response;
- var err = error;
-
- if (swapParams) {
- channelList = error;
- err = response;
- }
-
- if (err) {
- logger.info('ChannelList: Fetching channels failed', err);
- channelListDispatcher({
- type: FETCH_CHANNELS_FAILURE,
- payload: channelList
- });
- return;
- }
-
- logger.info('ChannelList: Fetching channels successful', channelList);
- channelListDispatcher({
- type: FETCH_CHANNELS_SUCCESS,
- payload: channelList
- });
-
- if (channelList && typeof channelList.forEach === 'function') {
- logger.info('ChannelList: Marking all channels as read');
- channelList.forEach(function (c) {
- return c.markAsDelivered();
- });
- }
- });
- }
- }
- }, sdkError && React.createElement(ChannelsPlaceholder, {
- type: PlaceHolderTypes.WRONG
- }), React.createElement("div", null, sortedChannels && sortedChannels.map(function (channel, idx) {
- var _onLeaveChannel = function onLeaveChannel(c, cb) {
- logger.info('ChannelList: Leaving channel', c);
- c.leave().then(function (res) {
- logger.info('ChannelList: Leaving channel success', res);
-
- if (cb && typeof cb === 'function') {
- cb(res, null);
- }
-
- channelListDispatcher({
- type: LEAVE_CHANNEL_SUCCESS,
- payload: channel.url
- });
- }).catch(function (err) {
- logger.error('ChannelList: Leaving channel failed', err);
-
- if (cb && typeof cb === 'function') {
- cb(null, err);
- }
- });
- };
-
- var onClick = function onClick() {
- if (!isOnline) {
- return;
- }
-
- logger.info('ChannelList: Clicked on channel:', channel);
- channelListDispatcher({
- type: SET_CURRENT_CHANNEL,
- payload: channel.url
- });
- };
-
- return renderChannelPreview ? // eslint-disable-next-line
- React.createElement("div", {
- key: channel.url,
- onClick: onClick
- }, renderChannelPreview({
- channel: channel,
- onLeaveChannel: _onLeaveChannel
- })) : React.createElement(ChannelPreview, {
- key: channel.url,
- tabIndex: idx,
- onClick: onClick,
- channel: channel,
- currentUser: user,
- theme: theme,
- isActive: channel.url === currentChannel // todo - potential performance hit refactor
- ,
- ChannelAction: React.createElement(ChannelPreviewAction, {
- disabled: !isOnline,
- onLeaveChannel: function onLeaveChannel() {
- return _onLeaveChannel(channel);
- }
- })
- });
- })), (!sdkIntialized || loading) && React.createElement(ChannelsPlaceholder, {
- type: PlaceHolderTypes.LOADING
- }), // placeholder
- (!allChannels || allChannels.length === 0) && React.createElement(ChannelsPlaceholder, {
- type: PlaceHolderTypes.NO_CHANNELS
- })));
-}
-
-ChannelList.propTypes = {
- stores: PropTypes.shape({
- sdkStore: PropTypes.shape({
- initialized: PropTypes.bool
- }),
- userStore: PropTypes.shape({
- user: PropTypes.shape({})
- })
- }).isRequired,
- dispatchers: PropTypes.shape({
- userDispatcher: PropTypes.func
- }).isRequired,
- config: PropTypes.shape({
- userId: PropTypes.string.isRequired,
- userListQuery: PropTypes.func,
- theme: PropTypes.string,
- isOnline: PropTypes.bool,
- logger: PropTypes.shape({
- info: PropTypes.func,
- error: PropTypes.func,
- warning: PropTypes.func
- }),
- pubSub: PropTypes.shape({
- subscribe: PropTypes.func,
- publish: PropTypes.func
- })
- }).isRequired,
- queries: PropTypes.shape({
- channelListQuery: PropTypes.shape({
- channelNameContainsFilter: PropTypes.string,
- channelUrlsFilter: PropTypes.arrayOf(PropTypes.string),
- customTypesFilter: PropTypes.arrayOf(PropTypes.string),
- customTypeStartsWithFilter: PropTypes.string,
- hiddenChannelFilter: PropTypes.string,
- includeEmpty: PropTypes.bool,
- limit: PropTypes.number,
- memberStateFilter: PropTypes.string,
- metadataOrderKeyFilter: PropTypes.string,
- nicknameContainsFilter: PropTypes.string,
- order: PropTypes.string,
- publicChannelFilter: PropTypes.string,
- superChannelFilter: PropTypes.string,
- unreadChannelFilter: PropTypes.string,
- userIdsExactFilter: PropTypes.arrayOf(PropTypes.string),
- userIdsIncludeFilter: PropTypes.arrayOf(PropTypes.string),
- userIdsIncludeFilterQueryType: PropTypes.string
- }),
- applicationUserListQuery: PropTypes.shape({
- limit: PropTypes.number,
- userIdsFilter: PropTypes.arrayOf(PropTypes.string),
- metaDataKeyFilter: PropTypes.string,
- metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string)
- })
- }),
- onBeforeCreateChannel: PropTypes.func,
- renderChannelPreview: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- allowProfileEdit: PropTypes.bool,
- sortChannelList: PropTypes.func,
- onThemeChange: PropTypes.func,
- onProfileEditSuccess: PropTypes.func,
- renderHeader: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- onChannelSelect: PropTypes.func
-};
-ChannelList.defaultProps = {
- onBeforeCreateChannel: null,
- renderChannelPreview: null,
- renderHeader: null,
- disableUserProfile: false,
- renderUserProfile: null,
- allowProfileEdit: false,
- onThemeChange: null,
- sortChannelList: null,
- onProfileEditSuccess: null,
- queries: {},
- onChannelSelect: noop$1
-};
-var ChannelList$1 = withSendbirdContext(ChannelList);
-
-var RESET_MESSAGES = 'RESET_MESSAGES';
-var RESET_STATE = 'RESET_STATE';
-var CLEAR_SENT_MESSAGES = 'CLEAR_SENT_MESSAGES';
-var GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';
-var GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';
-var SEND_MESSAGEGE_START = 'SEND_MESSAGEGE_START';
-var SEND_MESSAGEGE_SUCESS = 'SEND_MESSAGEGE_SUCESS';
-var SEND_MESSAGEGE_FAILURE = 'SEND_MESSAGEGE_FAILURE';
-var RESEND_MESSAGEGE_START = 'RESEND_MESSAGEGE_START';
-var ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';
-var ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';
-var ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';
-var ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';
-var SET_CURRENT_CHANNEL$1 = 'SET_CURRENT_CHANNEL';
-var SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';
-var MARK_AS_READ = 'MARK_AS_READ';
-var ON_REACTION_UPDATED = 'ON_REACTION_UPDATED';
-var SET_EMOJI_CONTAINER = 'SET_EMOJI_CONTAINER';
-var SET_READ_STATUS = 'SET_READ_STATUS';
-
-// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
-var SUPPORTED_MIMES = {
- IMAGE: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp' // not supported in IE
- ],
- VIDEO: ['video/mpeg', 'video/ogg', 'video/webm', 'video/mp4']
-};
-var isImage = function isImage(type) {
- return SUPPORTED_MIMES.IMAGE.includes(type);
-};
-var isVideo = function isVideo(type) {
- return SUPPORTED_MIMES.VIDEO.includes(type);
-};
-var unSupported = function unSupported(type) {
- return !(isImage(type) || isVideo(type));
-};
-
-var MessageTypes = {
- ADMIN: 'ADMIN',
- USER: 'USER',
- FILE: 'FILE',
- THUMBNAIL: 'THUMBNAIL',
- OG: 'OG'
-};
-var SendingMessageStatus = {
- NONE: 'none',
- SUCCEEDED: 'succeeded',
- FAILED: 'failed',
- PENDING: 'pending'
-};
-var getMessageType = function getMessageType(message) {
- if (message.isUserMessage && message.isUserMessage() || message.messageType === 'user') {
- return message.ogMetaData ? MessageTypes.OG : MessageTypes.USER;
- }
-
- if (message.isAdminMessage && message.isAdminMessage()) {
- return MessageTypes.ADMIN;
- }
-
- if (message.isFileMessage && message.isFileMessage() || message.messageType === 'file') {
- return isImage(message.type) || isVideo(message.type) ? MessageTypes.THUMBNAIL : MessageTypes.FILE;
- }
-
- return '';
-};
-
-var UNDEFINED = 'undefined';
-var SUCCEEDED = SendingMessageStatus.SUCCEEDED,
- FAILED = SendingMessageStatus.FAILED,
- PENDING = SendingMessageStatus.PENDING;
-var scrollIntoLast = function scrollIntoLast(selector) {
- var intialTry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
- var MAX_TRIES = 10;
- var currentTry = intialTry;
-
- if (currentTry > MAX_TRIES) {
- return;
- }
-
- try {
- var nodes = document.querySelectorAll(selector);
- var last = nodes[nodes.length - 1];
- last.scrollIntoView(false);
- /** alignToTop: false */
- } catch (error) {
- setTimeout(function () {
- scrollIntoLast(selector, currentTry + 1);
- }, 500 * currentTry);
- }
-};
-var pubSubHandleRemover$1 = function pubSubHandleRemover(subscriber) {
- subscriber.forEach(function (s) {
- try {
- s.remove();
- } catch (_unused) {//
- }
- });
-};
-var pubSubHandler$1 = function pubSubHandler(channelUrl, pubSub, dispatcher) {
- var subscriber = new Map();
- if (!pubSub || !pubSub.subscribe) return subscriber;
- subscriber.set(SEND_USER_MESSAGE, pubSub.subscribe(SEND_USER_MESSAGE, function (msg) {
- var channel = msg.channel,
- message = msg.message;
- scrollIntoLast('.sendbird-msg--scroll-ref');
-
- if (channel && channelUrl === channel.url) {
- dispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- }
- }));
- subscriber.set(SEND_MESSAGE_START, pubSub.subscribe(SEND_MESSAGE_START, function (msg) {
- var channel = msg.channel,
- message = msg.message;
-
- if (channel && channelUrl === channel.url) {
- dispatcher({
- type: SEND_MESSAGEGE_START,
- payload: message
- });
- }
- }));
- subscriber.set(SEND_FILE_MESSAGE, pubSub.subscribe(SEND_FILE_MESSAGE, function (msg) {
- var channel = msg.channel,
- message = msg.message;
- scrollIntoLast('.sendbird-msg--scroll-ref');
-
- if (channel && channelUrl === channel.url) {
- dispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- }
- }));
- subscriber.set(UPDATE_USER_MESSAGE, pubSub.subscribe(UPDATE_USER_MESSAGE, function (msg) {
- var channel = msg.channel,
- message = msg.message,
- fromSelector = msg.fromSelector;
-
- if (fromSelector && channel && channelUrl === channel.url) {
- dispatcher({
- type: ON_MESSAGE_UPDATED,
- payload: message
- });
- }
- }));
- subscriber.set(DELETE_MESSAGE, pubSub.subscribe(DELETE_MESSAGE, function (msg) {
- var channel = msg.channel,
- messageId = msg.messageId;
-
- if (channel && channelUrl === channel.url) {
- dispatcher({
- type: ON_MESSAGE_DELETED,
- payload: messageId
- });
- }
- }));
- return subscriber;
-};
-var getParsedStatus = function getParsedStatus(message, currentGroupChannel) {
- if (message.requestState === FAILED) {
- return MessageStatusType.FAILED;
- }
-
- if (message.requestState === PENDING) {
- return MessageStatusType.PENDING;
- }
-
- if (message.requestState === SUCCEEDED) {
- if (!currentGroupChannel) {
- return MessageStatusType.SENT;
- }
-
- var unreadCount = currentGroupChannel.getReadReceipt(message);
-
- if (unreadCount === 0) {
- return MessageStatusType.READ;
- }
-
- var isDelivered = currentGroupChannel.getDeliveryReceipt(message) === 0;
-
- if (isDelivered) {
- return MessageStatusType.DELIVERED;
- }
-
- return MessageStatusType.SENT;
- }
-
- return null;
-};
-var isOperator = function isOperator() {
- var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var myRole = groupChannel.myRole;
- return myRole === 'operator';
-};
-var isDisabledBecauseFrozen = function isDisabledBecauseFrozen() {
- var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var isFrozen = groupChannel.isFrozen;
- return isFrozen && !isOperator(groupChannel);
-};
-var isDisabledBecauseMuted = function isDisabledBecauseMuted() {
- var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var myMutedState = groupChannel.myMutedState;
- return myMutedState === 'muted';
-};
-var getEmojiCategoriesFromEmojiContainer = function getEmojiCategoriesFromEmojiContainer() {
- var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- return emojiContainer.emojiCategories ? emojiContainer.emojiCategories : [];
-};
-var getAllEmojisFromEmojiContainer = function getAllEmojisFromEmojiContainer() {
- var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var _emojiContainer$emoji = emojiContainer.emojiCategories,
- emojiCategories = _emojiContainer$emoji === void 0 ? [] : _emojiContainer$emoji;
- var allEmojis = [];
-
- for (var categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {
- var emojis = emojiCategories[categoryIndex].emojis;
-
- for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {
- allEmojis.push(emojis[emojiIndex]);
- }
- }
-
- return allEmojis;
-};
-var getEmojisFromEmojiContainer = function getEmojisFromEmojiContainer() {
- var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var emojiCategoryId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
- return emojiContainer.emojiCategories ? emojiContainer.emojiCategories.filter(function (emojiCategory) {
- return emojiCategory.id === emojiCategoryId;
- })[0].emojis : [];
-};
-var getAllEmojisMapFromEmojiContainer = function getAllEmojisMapFromEmojiContainer() {
- var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var _emojiContainer$emoji2 = emojiContainer.emojiCategories,
- emojiCategories = _emojiContainer$emoji2 === void 0 ? [] : _emojiContainer$emoji2;
- var allEmojisMap = new Map();
-
- for (var categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {
- var emojis = emojiCategories[categoryIndex].emojis;
-
- for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {
- var _emojis$emojiIndex = emojis[emojiIndex],
- key = _emojis$emojiIndex.key,
- url = _emojis$emojiIndex.url;
- allEmojisMap.set(key, url);
- }
- }
-
- return allEmojisMap;
-};
-var getNicknamesMapFromMembers = function getNicknamesMapFromMembers() {
- var members = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
- var nicknamesMap = new Map();
-
- for (var memberIndex = 0; memberIndex < members.length; memberIndex += 1) {
- var _members$memberIndex = members[memberIndex],
- userId = _members$memberIndex.userId,
- nickname = _members$memberIndex.nickname;
- nicknamesMap.set(userId, nickname);
- }
-
- return nicknamesMap;
-};
-var getMessageCreatedAt$1 = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-var isSameGroup = function isSameGroup(message, comparingMessage) {
- if (!message || !comparingMessage || !message.sender || !comparingMessage.sender || !message.createdAt || !comparingMessage.createdAt || !message.sender.userId || !comparingMessage.sender.userId) {
- return false;
- }
-
- return message.sendingStatus === comparingMessage.sendingStatus && message.sender.userId === comparingMessage.sender.userId && getMessageCreatedAt$1(message) === getMessageCreatedAt$1(comparingMessage);
-};
-var compareMessagesForGrouping = function compareMessagesForGrouping(prevMessage, currMessage, nextMessage) {
- return [isSameGroup(prevMessage, currMessage), isSameGroup(currMessage, nextMessage)];
-};
-var passUnsuccessfullMessages = function passUnsuccessfullMessages(allMessages, newMessage) {
- var _newMessage$sendingSt = newMessage.sendingStatus,
- sendingStatus = _newMessage$sendingSt === void 0 ? UNDEFINED : _newMessage$sendingSt;
-
- if (sendingStatus === SUCCEEDED || sendingStatus === PENDING) {
- var lastIndexOfSucceededMessage = allMessages.map(function (message) {
- return message.sendingStatus || (message.isAdminMessage && message.isAdminMessage() ? SUCCEEDED : UNDEFINED);
- }).lastIndexOf(SUCCEEDED);
-
- if (lastIndexOfSucceededMessage + 1 < allMessages.length) {
- var messages = _toConsumableArray(allMessages);
-
- messages.splice(lastIndexOfSucceededMessage + 1, 0, newMessage);
- return messages;
- }
- }
-
- return [].concat(_toConsumableArray(allMessages), [newMessage]);
-};
-
-var messagesInitialState = {
- initialized: false,
- loading: false,
- allMessages: [],
- currentGroupChannel: {
- members: []
- },
- hasMore: false,
- lastMessageTimeStamp: 0,
- emojiContainer: {},
- readStatus: {},
- unreadCount: 0,
- unreadSince: null,
- isInvalid: false
-};
-
-var isEmpty$1 = function isEmpty(val) {
- return val === null || val === undefined;
-}; // Some Ids return string and number inconsistently
-// only use to comapre IDs
-
-
-function compareIds (a, b) {
- if (isEmpty$1(a) || isEmpty$1(b)) {
- return false;
- }
-
- var aString = a.toString();
- var bString = b.toString();
- return aString === bString;
-}
-
-var SUCCEEDED$1 = SendingMessageStatus.SUCCEEDED,
- FAILED$1 = SendingMessageStatus.FAILED,
- PENDING$1 = SendingMessageStatus.PENDING;
-function reducer$3(state, action) {
- switch (action.type) {
- case RESET_STATE:
- return messagesInitialState;
-
- case RESET_MESSAGES:
- return _objectSpread2({}, state, {
- // when user switches channel, if the previous channel `hasMore`
- // the onScroll gets called twice, setting hasMore false prevents this
- hasMore: false,
- allMessages: []
- });
-
- case GET_PREV_MESSAGES_START:
- return _objectSpread2({}, state, {
- loading: true
- });
-
- case CLEAR_SENT_MESSAGES:
- return _objectSpread2({}, state, {
- allMessages: _toConsumableArray(state.allMessages.filter(function (m) {
- return m.sendingStatus !== SUCCEEDED$1;
- }))
- });
-
- case GET_PREV_MESSAGES_SUCESS:
- {
- var recivedMessages = action.payload.messages || [];
- var _action$payload$curre = action.payload.currentGroupChannel,
- currentGroupChannel = _action$payload$curre === void 0 ? {} : _action$payload$curre;
- var stateChannel = state.currentGroupChannel || {};
- var stateChannelUrl = stateChannel.url;
- var actionChannelUrl = currentGroupChannel.url;
-
- if (actionChannelUrl !== stateChannelUrl) {
- return state;
- } // remove duplicate messages
-
-
- var filteredAllMessages = state.allMessages.filter(function (msg) {
- return !recivedMessages.find(function (_ref) {
- var messageId = _ref.messageId;
- return compareIds(messageId, msg.messageId);
- });
- });
- return _objectSpread2({}, state, {
- loading: false,
- initialized: true,
- hasMore: action.payload.hasMore,
- lastMessageTimeStamp: action.payload.lastMessageTimeStamp,
- allMessages: [].concat(_toConsumableArray(recivedMessages), _toConsumableArray(filteredAllMessages))
- });
- }
-
- case SEND_MESSAGEGE_START:
- return _objectSpread2({}, state, {
- allMessages: [].concat(_toConsumableArray(state.allMessages), [_objectSpread2({}, action.payload)])
- });
-
- case SEND_MESSAGEGE_SUCESS:
- {
- var newMessages = state.allMessages.map(function (m) {
- return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
- });
-
- _toConsumableArray(newMessages).sort(function (a, b) {
- return a.sendingStatus && b.sendingStatus && a.sendingStatus === SUCCEEDED$1 && (b.sendingStatus === PENDING$1 || b.sendingStatus === FAILED$1) ? -1 : 1;
- });
-
- return _objectSpread2({}, state, {
- allMessages: newMessages
- });
- }
-
- case SEND_MESSAGEGE_FAILURE:
- {
- // eslint-disable-next-line no-param-reassign
- action.payload.failed = true;
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.map(function (m) {
- return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
- })
- });
- }
-
- case SET_CURRENT_CHANNEL$1:
- {
- return _objectSpread2({}, state, {
- currentGroupChannel: action.payload,
- isInvalid: false
- });
- }
-
- case SET_CHANNEL_INVALID:
- {
- return _objectSpread2({}, state, {
- isInvalid: true
- });
- }
-
- case ON_MESSAGE_RECEIVED:
- {
- var _action$payload = action.payload,
- channel = _action$payload.channel,
- message = _action$payload.message;
-
- var _state$currentGroupCh = state.currentGroupChannel,
- _currentGroupChannel = _state$currentGroupCh === void 0 ? {} : _state$currentGroupCh,
- unreadCount = state.unreadCount,
- unreadSince = state.unreadSince;
-
- var currentGroupChannelUrl = _currentGroupChannel.url;
-
- if (!compareIds(channel.url, currentGroupChannelUrl)) {
- return state;
- } // Excluded overlapping messages
-
-
- if (!(state.allMessages.map(function (msg) {
- return msg.messageId;
- }).indexOf(message.messageId) < 0)) {
- return state;
- }
-
- if (message.isAdminMessage && message.isAdminMessage()) {
- return _objectSpread2({}, state, {
- allMessages: passUnsuccessfullMessages(state.allMessages, message)
- });
- }
-
- return _objectSpread2({}, state, {
- unreadCount: unreadCount + 1,
- unreadSince: unreadCount === 0 ? format(new Date(), 'p MMM dd') : unreadSince,
- allMessages: passUnsuccessfullMessages(state.allMessages, message)
- });
- }
-
- case ON_MESSAGE_UPDATED:
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.map(function (m) {
- return compareIds(m.messageId, action.payload.messageId) ? action.payload : m;
- })
- });
-
- case RESEND_MESSAGEGE_START:
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.map(function (m) {
- return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
- })
- });
-
- case MARK_AS_READ:
- return _objectSpread2({}, state, {
- unreadCount: 0,
- unreadSince: null
- });
-
- case ON_MESSAGE_DELETED:
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.filter(function (m) {
- return !compareIds(m.messageId, action.payload);
- })
- });
-
- case ON_MESSAGE_DELETED_BY_REQ_ID:
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.filter(function (m) {
- return !compareIds(m.reqId, action.payload);
- })
- });
-
- case SET_EMOJI_CONTAINER:
- {
- return _objectSpread2({}, state, {
- emojiContainer: action.payload
- });
- }
-
- case SET_READ_STATUS:
- {
- return _objectSpread2({}, state, {
- readStatus: action.payload
- });
- }
-
- case ON_REACTION_UPDATED:
- {
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.map(function (m) {
- if (compareIds(m.messageId, action.payload.messageId)) {
- if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {
- m.applyReactionEvent(action.payload);
- }
-
- return m;
- }
-
- return m;
- })
- });
- }
-
- default:
- return state;
- }
-}
-
-/**
- * Handles ChannelEvents and send values to dispatcher using messagesDispatcher
- * messagesDispatcher: Dispatcher
- * sdk: sdkInstance
- * logger: loggerInstance
- * channelUrl: string
- * sdkInit: bool
- */
-
-function useHandleChannelEvents(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- sdkInit = _ref.sdkInit;
- var messagesDispatcher = _ref2.messagesDispatcher,
- sdk = _ref2.sdk,
- logger = _ref2.logger;
- var channelUrl = currentGroupChannel && currentGroupChannel.url;
- useEffect(function () {
- var messageReciverId = uuidv4();
-
- if (channelUrl && sdk && sdk.ChannelHandler) {
- var ChannelHandler = new sdk.ChannelHandler();
- logger.info('Channel | useHandleChannelEvents: Setup event handler', messageReciverId);
-
- ChannelHandler.onMessageReceived = function (channel, message) {
- if (compareIds(channel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);
- messagesDispatcher({
- type: ON_MESSAGE_RECEIVED,
- payload: {
- channel: channel,
- message: message
- }
- });
- }
- };
-
- ChannelHandler.onMessageUpdated = function (_, message) {
- logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);
- messagesDispatcher({
- type: ON_MESSAGE_UPDATED,
- payload: message
- });
- };
-
- ChannelHandler.onMessageDeleted = function (_, messageId) {
- logger.info('Channel | useHandleChannelEvents: onMessageDeleted', messageId);
- messagesDispatcher({
- type: ON_MESSAGE_DELETED,
- payload: messageId
- });
- };
-
- ChannelHandler.onReactionUpdated = function (_, reactionEvent) {
- logger.info('Channel | useHandleChannelEvents: onReactionUpdated', reactionEvent);
- messagesDispatcher({
- type: ON_REACTION_UPDATED,
- payload: reactionEvent
- });
- };
-
- ChannelHandler.onChannelChanged = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onChannelChanged', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onChannelFrozen = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onChannelFrozen', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onChannelUnfrozen = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onUserMuted = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onUserMuted', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onUserUnmuted = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onUserUnmuted', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onUserBanned = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onUserBanned', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onOperatorUpdated = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- }; // Add this channel event handler to the SendBird object.
-
-
- sdk.addChannelHandler(messageReciverId, ChannelHandler);
- }
-
- return function () {
- if (sdk && sdk.removeChannelHandler) {
- logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', messageReciverId);
- sdk.removeChannelHandler(messageReciverId);
- }
- };
- }, [channelUrl, sdkInit]);
-}
-
-function useSetChannel(_ref, _ref2) {
- var channelUrl = _ref.channelUrl,
- sdkInit = _ref.sdkInit;
- var messagesDispatcher = _ref2.messagesDispatcher,
- sdk = _ref2.sdk,
- logger = _ref2.logger;
- useEffect(function () {
- if (channelUrl && sdkInit && sdk && sdk.GroupChannel) {
- logger.info('Channel | useSetChannel fetching channel', channelUrl);
- sdk.GroupChannel.getChannel(channelUrl).then(function (groupChannel) {
- logger.info('Channel | useSetChannel fetched channel', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- logger.info('Channel: Mark as read', groupChannel); // this order is important - this mark as read should update the event handler up above
-
- groupChannel.markAsRead();
- }).catch(function (e) {
- logger.warning('Channel | useSetChannel fetch channel failed', {
- channelUrl: channelUrl,
- e: e
- });
- messagesDispatcher({
- type: SET_CHANNEL_INVALID
- });
- });
- sdk.getAllEmoji(function (emojiContainer_, err) {
- if (err) {
- logger.error('Channel: Getting emojis failed', err);
- return;
- }
-
- logger.info('Channel: Getting emojis success', emojiContainer_);
- messagesDispatcher({
- type: SET_EMOJI_CONTAINER,
- payload: emojiContainer_
- });
- });
- }
- }, [channelUrl, sdkInit]);
-}
-
-function useInitialMessagesFetch(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- userFilledMessageListQuery = _ref.userFilledMessageListQuery;
- var sdk = _ref2.sdk,
- logger = _ref2.logger,
- messagesDispatcher = _ref2.messagesDispatcher;
- var channelUrl = currentGroupChannel && currentGroupChannel.url;
- useEffect(function () {
- logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);
- messagesDispatcher({
- type: RESET_MESSAGES
- });
-
- if (sdk && sdk.MessageListParams && currentGroupChannel && currentGroupChannel.getMessagesByMessageId) {
- var messageListParams = new sdk.MessageListParams();
- messageListParams.prevResultSize = 30;
- messageListParams.isInclusive = true;
- messageListParams.includeReplies = false;
- messageListParams.includeReaction = true;
-
- if (userFilledMessageListQuery) {
- Object.keys(userFilledMessageListQuery).forEach(function (key) {
- messageListParams[key] = userFilledMessageListQuery[key];
- });
- }
-
- logger.info('Channel: Fetching messages', {
- currentGroupChannel: currentGroupChannel,
- userFilledMessageListQuery: userFilledMessageListQuery
- });
- currentGroupChannel.getMessagesByTimestamp(new Date().getTime(), messageListParams).then(function (messages) {
- var hasMore = messages && messages.length > 0;
- var lastMessageTimeStamp = hasMore ? messages[0].createdAt : null;
- messagesDispatcher({
- type: GET_PREV_MESSAGES_SUCESS,
- payload: {
- messages: messages,
- hasMore: hasMore,
- lastMessageTimeStamp: lastMessageTimeStamp,
- currentGroupChannel: currentGroupChannel
- }
- });
- }).catch(function (error) {
- logger.error('Channel: Fetching messages failed', error);
- messagesDispatcher({
- type: GET_PREV_MESSAGES_SUCESS,
- payload: {
- messages: [],
- hasMore: false,
- lastMessageTimeStamp: 0,
- currentGroupChannel: currentGroupChannel
- }
- });
- }).finally(function () {
- currentGroupChannel.markAsRead();
- setTimeout(function () {
- return scrollIntoLast('.sendbird-msg--scroll-ref');
- });
- });
- }
- }, [channelUrl, userFilledMessageListQuery]);
-}
-
-function useHandleReconnect(_ref, _ref2) {
- var isOnline = _ref.isOnline;
- var logger = _ref2.logger,
- sdk = _ref2.sdk,
- currentGroupChannel = _ref2.currentGroupChannel,
- messagesDispatcher = _ref2.messagesDispatcher,
- userFilledMessageListQuery = _ref2.userFilledMessageListQuery;
- useEffect(function () {
- var wasOffline = !isOnline;
- return function () {
- // state changed from offline to online
- if (wasOffline) {
- logger.info('Refreshing conversation state');
- var _sdk$appInfo = sdk.appInfo,
- appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
- var useReaction = appInfo.isUsingReaction || false;
- var messageListParams = new sdk.MessageListParams();
- messageListParams.prevResultSize = 30;
- messageListParams.includeReplies = false;
- messageListParams.includeReaction = useReaction;
-
- if (userFilledMessageListQuery) {
- Object.keys(userFilledMessageListQuery).forEach(function (key) {
- messageListParams[key] = userFilledMessageListQuery[key];
- });
- }
-
- logger.info('Channel: Fetching messages', {
- currentGroupChannel: currentGroupChannel,
- userFilledMessageListQuery: userFilledMessageListQuery
- });
- messagesDispatcher({
- type: GET_PREV_MESSAGES_START
- });
- sdk.GroupChannel.getChannel(currentGroupChannel.url).then(function (groupChannel) {
- var lastMessageTime = new Date().getTime();
- groupChannel.getMessagesByTimestamp(lastMessageTime, messageListParams).then(function (messages) {
- messagesDispatcher({
- type: CLEAR_SENT_MESSAGES
- });
- var hasMore = messages && messages.length > 0;
- var lastMessageTimeStamp = hasMore ? messages[0].createdAt : null;
- messagesDispatcher({
- type: GET_PREV_MESSAGES_SUCESS,
- payload: {
- messages: messages,
- hasMore: hasMore,
- lastMessageTimeStamp: lastMessageTimeStamp,
- currentGroupChannel: currentGroupChannel
- }
- });
- setTimeout(function () {
- return scrollIntoLast('.sendbird-msg--scroll-ref');
- });
- }).catch(function (error) {
- logger.error('Channel: Fetching messages failed', error);
- }).finally(function () {
- currentGroupChannel.markAsRead();
- });
- });
- }
- };
- }, [isOnline]);
-}
-
-function useScrollCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- lastMessageTimeStamp = _ref.lastMessageTimeStamp,
- userFilledMessageListQuery = _ref.userFilledMessageListQuery;
- var hasMore = _ref2.hasMore,
- logger = _ref2.logger,
- messagesDispatcher = _ref2.messagesDispatcher,
- sdk = _ref2.sdk;
- return useCallback(function (cb) {
- if (!hasMore) {
- return;
- }
-
- var messageListParams = new sdk.MessageListParams();
- messageListParams.prevResultSize = 30;
- messageListParams.includeReplies = false;
- messageListParams.includeReaction = true;
-
- if (userFilledMessageListQuery) {
- Object.keys(userFilledMessageListQuery).forEach(function (key) {
- messageListParams[key] = userFilledMessageListQuery[key];
- });
- }
-
- logger.info('Channel: Fetching messages', {
- currentGroupChannel: currentGroupChannel,
- userFilledMessageListQuery: userFilledMessageListQuery
- });
- currentGroupChannel.getMessagesByTimestamp(lastMessageTimeStamp || new Date().getTime(), messageListParams).then(function (messages) {
- var hasMoreMessages = messages && messages.length > 0;
- var lastMessageTs = hasMoreMessages ? messages[0].createdAt : null;
- messagesDispatcher({
- type: GET_PREV_MESSAGES_SUCESS,
- payload: {
- messages: messages,
- hasMore: hasMoreMessages,
- lastMessageTimeStamp: lastMessageTs,
- currentGroupChannel: currentGroupChannel
- }
- });
- cb([messages, null]);
- }).catch(function (error) {
- logger.error('Channel: Fetching messages failed', error);
- messagesDispatcher({
- type: GET_PREV_MESSAGES_SUCESS,
- payload: {
- messages: [],
- hasMore: false,
- lastMessageTimeStamp: 0,
- currentGroupChannel: currentGroupChannel
- }
- });
- cb([null, error]);
- }).finally(function () {
- currentGroupChannel.markAsRead();
- });
- }, [currentGroupChannel, lastMessageTimeStamp]);
-}
-
-function useDeleteMessageCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- messagesDispatcher = _ref.messagesDispatcher;
- var logger = _ref2.logger;
- return useCallback(function (message, cb) {
- logger.info('Channel | useDeleteMessageCallback: Deleting message', message);
- var requestState = message.requestState;
- logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', requestState); // Message is only on local
-
- if (requestState === 'failed' || requestState === 'pending') {
- logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);
- messagesDispatcher({
- type: ON_MESSAGE_DELETED_BY_REQ_ID,
- payload: message.reqId
- });
-
- if (cb) {
- cb();
- }
-
- return;
- } // Message is on server
-
-
- currentGroupChannel.deleteMessage(message, function (err) {
- logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', requestState);
-
- if (cb) {
- cb(err);
- }
-
- if (!err) {
- logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);
- messagesDispatcher({
- type: ON_MESSAGE_DELETED,
- payload: message.messageId
- });
- } else {
- logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);
- }
- });
- }, [currentGroupChannel, messagesDispatcher]);
-}
-
-function useUpdateMessageCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- messagesDispatcher = _ref.messagesDispatcher,
- onBeforeUpdateUserMessage = _ref.onBeforeUpdateUserMessage;
- var logger = _ref2.logger,
- pubSub = _ref2.pubSub,
- sdk = _ref2.sdk;
- return useCallback(function (messageId, text, cb) {
- var createParamsDefault = function createParamsDefault(txt) {
- var params = new sdk.UserMessageParams();
- params.message = txt;
- return params;
- };
-
- var createCustomPrams = onBeforeUpdateUserMessage && typeof onBeforeUpdateUserMessage === 'function';
-
- if (createCustomPrams) {
- logger.info('Channel: creting params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);
- }
-
- var params = onBeforeUpdateUserMessage ? onBeforeUpdateUserMessage(text) : createParamsDefault(text);
- currentGroupChannel.updateUserMessage(messageId, params, function (r, e) {
- logger.info('Channel: Updating message!', params);
- var swapParams = sdk.getErrorFirstCallback();
- var message = r;
- var err = e;
-
- if (swapParams) {
- message = e;
- err = r;
- }
-
- if (cb) {
- cb(err, message);
- }
-
- if (!err) {
- logger.info('Channel: Updating message success!', message);
- messagesDispatcher({
- type: ON_MESSAGE_UPDATED,
- payload: message
- });
- pubSub.publish(UPDATE_USER_MESSAGE, {
- message: message,
- channel: currentGroupChannel
- });
- } else {
- logger.warning('Channel: Updating message failed!', err);
- }
- });
- }, [currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);
-}
-
-function useResendMessageCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- messagesDispatcher = _ref.messagesDispatcher;
- var logger = _ref2.logger;
- return useCallback(function (failedMessage) {
- logger.info('Channel: Resending message has started', failedMessage);
- var messageType = failedMessage.messageType,
- file = failedMessage.file;
-
- if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable()) {
- // eslint-disable-next-line no-param-reassign
- failedMessage.requestState = 'pending';
- messagesDispatcher({
- type: RESEND_MESSAGEGE_START,
- payload: failedMessage
- }); // userMessage
-
- if (messageType === 'user') {
- currentGroupChannel.resendUserMessage(failedMessage).then(function (message) {
- logger.info('Channel: Resending message success!', {
- message: message
- });
- messagesDispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- }).catch(function (e) {
- logger.warning('Channel: Resending message failed!', {
- e: e
- }); // eslint-disable-next-line no-param-reassign
-
- failedMessage.requestState = 'failed';
- messagesDispatcher({
- type: SEND_MESSAGEGE_FAILURE,
- payload: failedMessage
- });
- }); // eslint-disable-next-line no-param-reassign
-
- failedMessage.requestState = 'pending';
- messagesDispatcher({
- type: RESEND_MESSAGEGE_START,
- payload: failedMessage
- });
- return;
- }
-
- if (messageType === 'file') {
- currentGroupChannel.resendFileMessage(failedMessage, file).then(function (message) {
- logger.info('Channel: Resending file message success!', {
- message: message
- });
- messagesDispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- }).catch(function (e) {
- logger.warning('Channel: Resending file message failed!', {
- e: e
- }); // eslint-disable-next-line no-param-reassign
-
- failedMessage.requestState = 'failed';
- messagesDispatcher({
- type: SEND_MESSAGEGE_FAILURE,
- payload: failedMessage
- });
- }); // eslint-disable-next-line no-param-reassign
-
- failedMessage.requestState = 'pending';
- messagesDispatcher({
- type: RESEND_MESSAGEGE_START,
- payload: failedMessage
- });
- }
- } else {
- // to alert user on console
- // eslint-disable-next-line no-console
- console.error('Message is not resendable');
- logger.warning('Message is not resendable', failedMessage);
- }
- }, [currentGroupChannel, messagesDispatcher]);
-}
-
-function useSendMessageCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- onBeforeSendUserMessage = _ref.onBeforeSendUserMessage;
- var sdk = _ref2.sdk,
- logger = _ref2.logger,
- pubSub = _ref2.pubSub,
- messagesDispatcher = _ref2.messagesDispatcher;
- var messageInputRef = useRef(null);
- var sendMessage = useCallback(function () {
- var text = messageInputRef.current.value;
-
- var createParamsDefault = function createParamsDefault(txt) {
- var message = typeof txt === 'string' ? txt.trim() : txt;
- var params = new sdk.UserMessageParams();
- params.message = message;
- return params;
- };
-
- var createCustomPrams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
-
- if (createCustomPrams) {
- logger.info('Channel: creting params using onBeforeSendUserMessage', onBeforeSendUserMessage);
- }
-
- var params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);
- logger.info('Channel: Sending message has started', params);
- var pendingMsg = currentGroupChannel.sendUserMessage(params, function (res, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var message = res;
- var error = err;
-
- if (swapParams) {
- message = err;
- error = res;
- } // sending params instead of pending message
- // to make sure that we can resend the message once it fails
-
-
- if (error) {
- logger.warning('Channel: Sending message failed!', {
- message: message
- });
- messagesDispatcher({
- type: SEND_MESSAGEGE_FAILURE,
- payload: message
- });
- return;
- }
-
- logger.info('Channel: Sending message success!', message);
- messagesDispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- });
- pubSub.publish(SEND_MESSAGE_START, {
- /* pubSub is used instead of messagesDispatcher
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
- message: pendingMsg,
- channel: currentGroupChannel
- });
- setTimeout(function () {
- return scrollIntoLast('.sendbird-msg--scroll-ref');
- });
- }, [currentGroupChannel, onBeforeSendUserMessage]);
- return [messageInputRef, sendMessage];
-}
-
-function useSendFileMessageCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- onBeforeSendFileMessage = _ref.onBeforeSendFileMessage;
- var sdk = _ref2.sdk,
- logger = _ref2.logger,
- pubSub = _ref2.pubSub,
- messagesDispatcher = _ref2.messagesDispatcher;
- var sendMessage = useCallback(function (file) {
- var createParamsDefault = function createParamsDefault(file_) {
- var params = new sdk.FileMessageParams();
- params.file = file_;
- return params;
- };
-
- var createCustomPrams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';
-
- if (createCustomPrams) {
- logger.info('Channel: creting params using onBeforeSendFileMessage', onBeforeSendFileMessage);
- }
-
- var params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file) : createParamsDefault(file);
- logger.info('Channel: Uploading file message start!', params);
- var pendingMsg = currentGroupChannel.sendFileMessage(params, function (response, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var message = response;
- var error = err;
-
- if (swapParams) {
- message = err;
- error = response;
- }
-
- if (error) {
- // sending params instead of pending message
- // to make sure that we can resend the message once it fails
- logger.error('Channel: Sending file message failed!', message);
- message.localUrl = URL.createObjectURL(file);
- message.file = file;
- messagesDispatcher({
- type: SEND_MESSAGEGE_FAILURE,
- payload: message
- });
- return;
- }
-
- logger.info('Channel: Sending message success!', message);
- messagesDispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- });
- pubSub.publish(SEND_MESSAGE_START, {
- /* pubSub is used instead of messagesDispatcher
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
- message: _objectSpread2({}, pendingMsg, {
- url: URL.createObjectURL(file),
- // pending thumbnail message seems to be failed
- requestState: 'pending'
- }),
- channel: currentGroupChannel
- });
- setTimeout(function () {
- return scrollIntoLast('.sendbird-msg--scroll-ref');
- }, 1000);
- }, [currentGroupChannel, onBeforeSendFileMessage]);
- return [sendMessage];
-}
-
-function useSetReadStatus(_ref, _ref2) {
- var allMessages = _ref.allMessages,
- currentGroupChannel = _ref.currentGroupChannel;
- var messagesDispatcher = _ref2.messagesDispatcher,
- sdk = _ref2.sdk,
- logger = _ref2.logger;
- useEffect(function () {
- if (!sdk.ChannelHandler || !currentGroupChannel.url) {
- return function () {};
- } // todo: move to reducer?
-
-
- var setReadStatus = function setReadStatus() {
- var allReadStatus = allMessages.reduce(function (accumulator, msg) {
- if (msg.messageId !== 0) {
- return _objectSpread2({}, accumulator, _defineProperty({}, msg.messageId, getParsedStatus(msg, currentGroupChannel)));
- }
-
- return accumulator;
- }, {});
- messagesDispatcher({
- type: SET_READ_STATUS,
- payload: allReadStatus
- });
- };
-
- if (allMessages.length > 0) {
- setReadStatus();
- }
-
- var channelUrl = currentGroupChannel.url;
- var handler = new sdk.ChannelHandler();
-
- var handleMessageStatus = function handleMessageStatus(c) {
- if (channelUrl === c.url) {
- setReadStatus();
- }
- };
-
- handler.onDeliveryReceiptUpdated = handleMessageStatus;
- handler.onReadReceiptUpdated = handleMessageStatus; // Add this channel event handler to the SendBird object.
-
- var handlerId = uuidv4();
- logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);
- sdk.addChannelHandler(handlerId, handler);
- return function () {
- if (sdk && sdk.removeChannelHandler) {
- logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);
- sdk.removeChannelHandler(handlerId);
- }
- };
- }, [allMessages, currentGroupChannel]);
-}
-
-var ReactionButton = React.forwardRef(function (props, ref) {
- var children = props.children,
- width = props.width,
- height = props.height,
- _onClick = props.onClick,
- selected = props.selected,
- className = props.className;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React.createElement("div", {
- ref: ref,
- className: "sendbird-reaction-button".concat(selected ? '--selected' : '', " ").concat(injectingClassName.join(' ')),
- style: {
- width: typeof width === 'string' ? "".concat(width.slice(0, -2) - 2, "px") : "".concat(width - 2, "px"),
- height: typeof height === 'string' ? "".concat(height.slice(0, -2) - 2, "px") : "".concat(height - 2, "px")
- },
- onClick: function onClick(e) {
- return _onClick(e);
- },
- role: "button",
- onKeyDown: function onKeyDown(e) {
- return _onClick(e);
- },
- tabIndex: 0
- }, React.createElement("div", {
- className: "sendbird-reaction-button__inner"
- }, children));
-});
-ReactionButton.propTypes = {
- children: PropTypes.element.isRequired,
- onClick: PropTypes.func,
- selected: PropTypes.bool,
- width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
- height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-ReactionButton.defaultProps = {
- selected: false,
- width: '36px',
- height: '36px',
- onClick: function onClick() {},
- className: ''
-};
-
-function useMemoizedEmojiListItems(_ref, _ref2) {
- var emojiContainer = _ref.emojiContainer,
- toggleReaction = _ref.toggleReaction;
- var useReaction = _ref2.useReaction,
- logger = _ref2.logger,
- userId = _ref2.userId,
- emojiAllList = _ref2.emojiAllList;
- return useMemo(function () {
- return function (_ref3) {
- var parentRef = _ref3.parentRef,
- parentContainRef = _ref3.parentContainRef,
- message = _ref3.message,
- closeDropdown = _ref3.closeDropdown,
- _ref3$spaceFromTrigge = _ref3.spaceFromTrigger,
- spaceFromTrigger = _ref3$spaceFromTrigge === void 0 ? {} : _ref3$spaceFromTrigge;
-
- if (!useReaction || !(parentRef || parentContainRef || message || closeDropdown)) {
- logger.warning('Channel: Invalid Params in memoizedEmojiListItems');
- return null;
- }
-
- return React.createElement(EmojiListItems$1, {
- parentRef: parentRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: spaceFromTrigger
- }, emojiAllList.map(function (emoji) {
- var reactedReaction = message.reactions.filter(function (reaction) {
- return reaction.key === emoji.key;
- })[0];
- var isReacted = reactedReaction ? !(reactedReaction.userIds.indexOf(userId) < 0) : false;
- return React.createElement(ReactionButton, {
- key: emoji.key,
- width: "36px",
- height: "36px",
- selected: isReacted,
- onClick: function onClick() {
- closeDropdown();
- toggleReaction(message, emoji.key, isReacted);
- }
- }, React.createElement(ImageRenderer, {
- url: emoji.url,
- width: "28px",
- height: "28px",
- defaultComponent: React.createElement(Icon, {
- width: "28px",
- height: "28px",
- type: IconTypes.EMOJI_FAILED
- })
- }));
- }));
- };
- }, [emojiContainer, toggleReaction]);
-}
-
-function useToggleReactionCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel;
- var logger = _ref2.logger;
- return useCallback(function (message, key, isReacted) {
- if (isReacted) {
- currentGroupChannel.deleteReaction(message, key).then(function (res) {
- logger.info('Delete reaction success', res);
- }).catch(function (err) {
- logger.warning('Delete reaction failed', err);
- });
- return;
- }
-
- currentGroupChannel.addReaction(message, key).then(function (res) {
- logger.info('Add reaction success', res);
- }).catch(function (err) {
- logger.warning('Add reaction failed', err);
- });
- }, [currentGroupChannel]);
-}
-
-function MessageStatus(_ref) {
- var message = _ref.message,
- status = _ref.status,
- className = _ref.className;
- var injectingClassName = Array.isArray(className) ? className : [className];
-
- var label = function label() {
- switch (status) {
- case MessageStatusType.FAILED:
- case MessageStatusType.PENDING:
- {
- return null;
- }
-
- case MessageStatusType.SENT:
- case MessageStatusType.DELIVERED:
- case MessageStatusType.READ:
- {
- return React.createElement(Label, {
- className: "sendbird-message-status__text",
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt(message));
- }
-
- default:
- return null;
- }
- };
-
- var icon = {
- PENDING: React.createElement(Loader, {
- className: "sendbird-message-status__icon",
- width: "16px",
- height: "16px"
- }, React.createElement(Icon, {
- type: IconTypes.SPINNER,
- width: "16px",
- height: "16px"
- })),
- SENT: React.createElement(Icon, {
- className: "sendbird-message-status__icon",
- width: "16px",
- height: "16px",
- type: IconTypes.SENT,
- fillColor: IconColors.SENT
- }),
- DELIVERED: React.createElement(Icon, {
- className: "sendbird-message-status__icon",
- width: "16px",
- height: "16px",
- type: IconTypes.DELIVERED,
- fillColor: IconColors.SENT
- }),
- READ: React.createElement(Icon, {
- className: "sendbird-message-status__icon",
- width: "16px",
- height: "16px",
- type: IconTypes.READ,
- fillColor: IconColors.READ
- }),
- FAILED: React.createElement(Icon, {
- className: "sendbird-message-status__icon",
- width: "16px",
- height: "16px",
- type: IconTypes.ERROR
- })
- };
- return React.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-message-status']).join(' ')
- }, icon[status], React.createElement("br", null), label());
-}
-MessageStatus.propTypes = {
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- status: PropTypes.string,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-MessageStatus.defaultProps = {
- message: null,
- status: '',
- className: ''
-};
-
-var ReactionBadge = React.forwardRef(function (props, ref) {
- var className = props.className,
- children = props.children,
- count = props.count,
- selected = props.selected,
- isAdd = props.isAdd,
- onClick = props.onClick;
- var injectingClassName = Array.isArray(className) ? className : [className];
-
- if (selected && !isAdd) {
- injectingClassName.unshift('sendbird-reaction-badge--selected');
- } else if (isAdd) {
- injectingClassName.push('sendbird-reaction-badge--is-add');
- } else {
- injectingClassName.unshift('sendbird-reaction-badge');
- }
-
- return React.createElement("div", {
- ref: ref,
- tabIndex: 0,
- role: "button",
- className: injectingClassName.join(' '),
- onClick: onClick,
- onKeyDown: onClick
- }, React.createElement("div", {
- className: "sendbird-reaction-badge__inner"
- }, React.createElement("div", {
- className: "sendbird-reaction-badge__inner__icon"
- }, children), React.createElement(Label, {
- className: children && count ? 'sendbird-reaction-badge__inner__count' : '',
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_1
- }, count)));
-});
-ReactionBadge.propTypes = {
- children: PropTypes.element.isRequired,
- count: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
- selected: PropTypes.bool,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- isAdd: PropTypes.bool,
- onClick: PropTypes.func
-};
-ReactionBadge.defaultProps = {
- className: '',
- count: '',
- selected: false,
- isAdd: false,
- onClick: function onClick() {}
-};
-
-var CLASS_NAME$2 = 'sendbird-tooltip';
-function Tooltip(_ref) {
- var className = _ref.className,
- children = _ref.children;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift(CLASS_NAME$2);
- return React.createElement("div", {
- className: injectingClassName.join(' ')
- }, React.createElement(Label, {
- className: "".concat(CLASS_NAME$2, "__text")
- }, children));
-}
-Tooltip.propTypes = {
- className: PropTypes.string,
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.string), PropTypes.string])
-};
-Tooltip.defaultProps = {
- className: '',
- children: ''
-};
-
-var CLASS_NAME$3 = 'sendbird-tooltip-wrapper';
-var SPACE_FROM_TRIGGER = 8;
-function TooltipWrapper(_ref) {
- var className = _ref.className,
- children = _ref.children,
- hoverTooltip = _ref.hoverTooltip;
- var injectingClassName = Array.isArray(className) ? [CLASS_NAME$3].concat(_toConsumableArray(className)) : [CLASS_NAME$3, className];
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showHoverTooltip = _useState2[0],
- setShowHoverTooltip = _useState2[1];
-
- var childrenRef = useRef(null);
- return React.createElement("div", {
- className: injectingClassName.join(' '),
- onMouseOver: function onMouseOver() {
- setShowHoverTooltip(true);
- },
- onFocus: function onFocus() {
- setShowHoverTooltip(true);
- },
- onMouseOut: function onMouseOut() {
- setShowHoverTooltip(false);
- },
- onBlur: function onBlur() {
- setShowHoverTooltip(false);
- }
- }, React.createElement("div", {
- className: "".concat(CLASS_NAME$3, "__children"),
- ref: childrenRef
- }, children), showHoverTooltip && React.createElement("div", {
- className: "".concat(CLASS_NAME$3, "__hover-tooltip"),
- style: {
- bottom: "calc(100% + ".concat(SPACE_FROM_TRIGGER, "px)")
- }
- }, React.createElement("div", {
- className: "".concat(CLASS_NAME$3, "__hover-tooltip__inner")
- }, React.createElement("div", {
- className: "".concat(CLASS_NAME$3, "__hover-tooltip__inner__tooltip-container"),
- style: {
- left: childrenRef.current && "calc(".concat(childrenRef.current.offsetWidth / 2, "px - 50%)")
- }
- }, hoverTooltip))));
-}
-TooltipWrapper.propTypes = {
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- children: PropTypes.element.isRequired,
- hoverTooltip: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired
-};
-TooltipWrapper.defaultProps = {
- className: ''
-};
-
-function EmojiReactions(_ref) {
- var className = _ref.className,
- userId = _ref.userId,
- message = _ref.message,
- emojiAllMap = _ref.emojiAllMap,
- membersMap = _ref.membersMap,
- toggleReaction = _ref.toggleReaction,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift('sendbird-emoji-reactions');
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var imageWidth = '20px';
- var imageHeight = '20px';
- var emojiReactionAddRef = useRef(null);
- var _message$reactions = message.reactions,
- reactions = _message$reactions === void 0 ? [] : _message$reactions;
- var messageReactions = reactions;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.createElement("div", {
- className: injectingClassName.join(' ')
- }, React.createElement("div", {
- className: "sendbird-emoji-reactions--inner"
- }, messageReactions && messageReactions.map(function (reaction) {
- var _reaction$userIds = reaction.userIds,
- userIds = _reaction$userIds === void 0 ? [] : _reaction$userIds;
- var emojiUrl = emojiAllMap.get(reaction.key) || '';
- var reactedUserCount = userIds.length;
- var reactedByMe = !(userIds.indexOf(userId) < 0);
- var nicknames = userIds.filter(function (currentUserId) {
- return currentUserId !== userId;
- }).map(function (currentUserId) {
- return membersMap.get(currentUserId) || stringSet.TOOLTIP__UNKOWN_USER;
- });
- var stringSetForMe = nicknames.length > 0 ? stringSet.TOOLTIP__AND_YOU : stringSet.TOOLTIP__YOU;
- return React.createElement(TooltipWrapper, {
- className: "sendbird-emoji-reactions__emoji-reaction",
- key: reaction.key,
- hoverTooltip: userIds.length > 0 && React.createElement(Tooltip, null, React.createElement(React.Fragment, null, "".concat(nicknames.join(', ')).concat(reactedByMe ? stringSetForMe : '')))
- }, React.createElement(ReactionBadge, {
- count: reactedUserCount,
- selected: reactedByMe,
- onClick: function onClick() {
- return toggleReaction(message, reaction.key, reactedByMe);
- }
- }, React.createElement(ImageRenderer, {
- circle: true,
- url: emojiUrl,
- width: imageWidth,
- height: imageHeight,
- defaultComponent: React.createElement(Icon, {
- width: imageWidth,
- height: imageHeight,
- type: IconTypes.EMOJI_FAILED
- })
- })));
- }), messageReactions.length < emojiAllMap.size && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(ReactionBadge, {
- isAdd: true,
- onClick: toggleDropdown,
- className: "sendbird-emoji-reactions__emoji-reaction-add",
- ref: emojiReactionAddRef
- }, React.createElement(Icon, {
- width: imageWidth,
- height: imageHeight,
- fillColor: IconColors.ON_BACKGROUND_3,
- type: IconTypes.EMOJI_REACTIONS_ADD
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: emojiReactionAddRef,
- parentContainRef: emojiReactionAddRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 4
- }
- });
- }
- })));
-}
-EmojiReactions.propTypes = {
- userId: PropTypes.string,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- message: PropTypes.shape({
- reactions: PropTypes.arrayOf(PropTypes.shape({}))
- }).isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func
-};
-EmojiReactions.defaultProps = {
- className: '',
- membersMap: new Map(),
- userId: '',
- toggleReaction: function toggleReaction() {},
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-
-var copyToClipboard = function copyToClipboard(text) {
- if (window.clipboardData && window.clipboardData.setData) {
- // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.
- return window.clipboardData.setData('Text', text);
- }
-
- if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
- var textarea = document.createElement('textarea');
- textarea.textContent = text;
- textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.
-
- document.body.appendChild(textarea);
- textarea.select();
-
- try {
- return document.execCommand('copy'); // Security exception may be thrown by some browsers.
- } catch (ex) {
- return false;
- } finally {
- document.body.removeChild(textarea);
- }
- }
-
- return false;
-};
-var getMessageCreatedAt$2 = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-var getSenderName$1 = function getSenderName(message) {
- return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
-};
-var getSenderProfileUrl$1 = function getSenderProfileUrl(message) {
- return message.sender && message.sender.profileUrl;
-};
-var getIsSentFromStatus$1 = function getIsSentFromStatus(status) {
- return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
-};
-
-var WORD_TYPOGRAPHY = LabelTypography.BODY_1;
-var EDITED_COLOR = LabelColors.ONBACKGROUND_2;
-function useMemoizedMessageText(_ref) {
- var message = _ref.message,
- updatedAt = _ref.updatedAt,
- className = _ref.className;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return useMemo(function () {
- return function () {
- var splitMessage = message.split(/\r/);
- var matchedMessage = splitMessage.map(function (word) {
- return word !== '' ? word : React.createElement("br", null);
- });
-
- if (updatedAt > 0) {
- matchedMessage.push(React.createElement(Label, {
- key: uuidv4(),
- className: className,
- type: WORD_TYPOGRAPHY,
- color: EDITED_COLOR
- }, " ".concat(stringSet.MESSAGE_EDITED, " ")));
- }
-
- return matchedMessage;
- };
- }, [message, updatedAt, className]);
-}
-
-var MOUSE_ENTER = 'mouseenter';
-var MOUSE_LEAVE = 'mouseleave';
-
-var useMouseHover = function useMouseHover(_ref) {
- var ref = _ref.ref,
- setHover = _ref.setHover;
-
- var handleMouseOver = function handleMouseOver() {
- if (ref.current) {
- setHover(true);
- }
- };
-
- var handleMouseOut = function handleMouseOut() {
- if (ref.current) {
- setHover(false);
- }
- };
-
- useEffect(function () {
- var current = ref.current;
- current.addEventListener(MOUSE_ENTER, handleMouseOver);
- current.addEventListener(MOUSE_LEAVE, handleMouseOut);
- return function () {
- current.removeEventListener(MOUSE_ENTER, handleMouseOver);
- current.removeEventListener(MOUSE_LEAVE, handleMouseOut);
- };
- });
-};
-
-var noop$2 = function noop() {};
-
-var GROUPING_PADDING = '1px';
-var NORMAL_PADDING = '8px';
-function Message(props) {
- var isByMe = props.isByMe,
- userId = props.userId,
- message = props.message,
- className = props.className,
- resendMessage = props.resendMessage,
- disabled = props.disabled,
- showEdit = props.showEdit,
- showRemove = props.showRemove,
- status = props.status,
- useReaction = props.useReaction,
- emojiAllMap = props.emojiAllMap,
- membersMap = props.membersMap,
- toggleReaction = props.toggleReaction,
- memoizedEmojiListItems = props.memoizedEmojiListItems,
- chainTop = props.chainTop,
- chainBottom = props.chainBottom;
- if (!message) return null;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.push("sendbird-message".concat(isByMe ? '--outgoing' : '--incoming'));
- var memoizedMessageText = useMemoizedMessageText({
- message: message.message,
- updatedAt: message.updatedAt,
- className: 'sendbird-user-message-word'
- });
- return React.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-message']).join(' ')
- }, isByMe ? React.createElement(OutgoingUserMessage, {
- userId: userId,
- message: message,
- resendMessage: resendMessage,
- disabled: disabled,
- showEdit: showEdit,
- showRemove: showRemove,
- status: status,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedMessageText: memoizedMessageText,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- }) : React.createElement(IncomingUserMessage, {
- userId: userId,
- message: message,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedMessageText: memoizedMessageText,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- }));
-}
-Message.propTypes = {
- isByMe: PropTypes.bool,
- disabled: PropTypes.bool,
- userId: PropTypes.string,
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])).isRequired,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- showEdit: PropTypes.func,
- status: PropTypes.string,
- showRemove: PropTypes.func,
- resendMessage: PropTypes.func,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool,
- chainBottom: PropTypes.bool
-};
-Message.defaultProps = {
- isByMe: false,
- disabled: false,
- userId: '',
- resendMessage: noop$2,
- className: '',
- showEdit: noop$2,
- showRemove: noop$2,
- status: '',
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$2,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- },
- chainTop: false,
- chainBottom: false
-};
-
-function OutgoingUserMessage(_ref) {
- var userId = _ref.userId,
- message = _ref.message,
- showEdit = _ref.showEdit,
- disabled = _ref.disabled,
- showRemove = _ref.showRemove,
- status = _ref.status,
- resendMessage = _ref.resendMessage,
- useReaction = _ref.useReaction,
- emojiAllMap = _ref.emojiAllMap,
- membersMap = _ref.membersMap,
- toggleReaction = _ref.toggleReaction,
- memoizedMessageText = _ref.memoizedMessageText,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems,
- chainTop = _ref.chainTop,
- chainBottom = _ref.chainBottom;
- var MemoizedMessageText = memoizedMessageText;
- var MemoizedEmojiListItems = memoizedEmojiListItems; // TODO: when message.requestState is succeeded, consider if it's SENT or DELIVERED
-
- var messageRef = useRef(null);
- var parentRefReactions = useRef(null);
- var parentRefMenus = useRef(null);
- var parentContainRef = useRef(null);
- var isMessageSent = getIsSentFromStatus$1(status);
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- mousehover = _useState2[0],
- setMousehover = _useState2[1];
-
- var _useState3 = useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- moreActive = _useState4[0],
- setMoreActive = _useState4[1];
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React.createElement("div", {
- className: "sendbird-user-message--outgoing",
- ref: messageRef,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING : NORMAL_PADDING,
- paddingBottom: chainBottom ? GROUPING_PADDING : NORMAL_PADDING
- }
- }, React.createElement("div", {
- className: "sendbird-user-message--inner"
- }, React.createElement("div", {
- className: "sendbird-user-message__left-padding"
- }, React.createElement("div", {
- className: "sendbird-user-message__more",
- ref: parentContainRef
- }, React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- ref: parentRefMenus,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: parentRefMenus // for catching location(x, y) of MenuItems
- ,
- parentContainRef: parentContainRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, isMessageSent && React.createElement(MenuItem, {
- className: "sendbird-user-message--copy",
- onClick: function onClick() {
- copyToClipboard(message.message);
- closeDropdown();
- }
- }, "Copy"), isMessageSent && React.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showEdit(true);
- closeDropdown();
- }
- }, "Edit"), message && message.isResendable && message.isResendable() && React.createElement(MenuItem, {
- onClick: function onClick() {
- resendMessage(message);
- closeDropdown();
- }
- }, "Resend"), React.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showRemove(true);
- closeDropdown();
- }
- }, "Delete"));
- }
- }), isMessageSent && useReaction && emojiAllMap.size > 0 && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "sendbird-user-message__more__add-reaction",
- ref: parentRefReactions,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: parentRefReactions,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })), !chainBottom && !(mousehover || moreActive) && React.createElement("div", {
- className: "sendbird-user-message__status"
- }, React.createElement(MessageStatus, {
- message: message,
- status: status // onDelete={() => { showRemove(true); }}
- // onResend={() => resendMessage(message)}
- // duplicated and should replace to more
-
- }))), React.createElement("div", {
- className: "sendbird-user-message__text-balloon"
- }, React.createElement("div", {
- className: "sendbird-user-message__text-balloon__inner"
- }, React.createElement("div", {
- className: "sendbird-user-message__text-balloon__inner__text-place"
- }, React.createElement(Label, {
- className: "sendbird-user-message__text-balloon__inner__text-place__text",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, React.createElement(MemoizedMessageText, null))), useReaction && message.reactions && message.reactions.length > 0 && React.createElement(EmojiReactions, {
- className: "sendbird-user-message__text-balloon__inner__emoji-reactions",
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- })))));
-}
-
-function IncomingUserMessage(_ref2) {
- var userId = _ref2.userId,
- message = _ref2.message,
- useReaction = _ref2.useReaction,
- emojiAllMap = _ref2.emojiAllMap,
- membersMap = _ref2.membersMap,
- toggleReaction = _ref2.toggleReaction,
- memoizedMessageText = _ref2.memoizedMessageText,
- memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
- chainTop = _ref2.chainTop,
- chainBottom = _ref2.chainBottom;
- var MemoizedMessageText = memoizedMessageText;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var messageRef = useRef(null);
- var parentRefReactions = useRef(null);
- var parentRefMenus = useRef(null);
- var parentContainRef = useRef(null);
- var avatarRef = useRef(null);
-
- var _React$useContext = React.useContext(UserProfileContext),
- disableUserProfile = _React$useContext.disableUserProfile,
- renderUserProfile = _React$useContext.renderUserProfile;
-
- var _useState5 = useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- mousehover = _useState6[0],
- setMousehover = _useState6[1];
-
- var _useState7 = useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- moreActive = _useState8[0],
- setMoreActive = _useState8[1];
-
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
- var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React.createElement("div", {
- ref: messageRef,
- className: "sendbird-user-message--incoming",
- style: {
- paddingTop: chainTop ? GROUPING_PADDING : NORMAL_PADDING,
- paddingBottom: chainBottom ? GROUPING_PADDING : NORMAL_PADDING
- }
- }, React.createElement("div", {
- className: "sendbird-user-message--inner"
- }, React.createElement("div", {
- className: "sendbird-user-message--body"
- }, !chainBottom && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(Avatar$1, {
- ref: avatarRef,
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- className: "sendbird-user-message__avatar",
- src: getSenderProfileUrl$1(message),
- width: "28px",
- height: "28px"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: message.sender,
- close: closeDropdown
- }) : React.createElement(ConnectedUserProfile, {
- user: message.sender,
- onSuccess: closeDropdown
- }));
- }
- }), !chainTop && React.createElement(Label, {
- className: "sendbird-user-message__sender-name",
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, getSenderName$1(message)), React.createElement("div", {
- className: "sendbird-user-message__text-balloon"
- }, React.createElement("div", {
- className: "sendbird-user-message__text-balloon__inner"
- }, React.createElement("div", {
- className: "sendbird-user-message__text-balloon__inner__text-place"
- }, React.createElement(Label, {
- className: "sendbird-user-message__text-balloon__inner__text-place__text",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, React.createElement(MemoizedMessageText, null))), showEmojiReactions && React.createElement(EmojiReactions, {
- className: "sendbird-user-message__text-balloon__inner__emoji-reactions",
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- })))), React.createElement("div", {
- className: "sendbird-user-message__right-padding"
- }, React.createElement("div", {
- className: "sendbird-user-message__more",
- ref: parentContainRef
- }, showReactionAddButton && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: parentRefReactions,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MemoizedEmojiListItems, {
- parentRef: parentRefReactions,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- message: message,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- }), React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: parentRefMenus,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: parentRefMenus,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown
- }, React.createElement(MenuItem, {
- className: "sendbird-user-message--copy",
- onClick: function onClick() {
- copyToClipboard(message.message);
- closeDropdown();
- }
- }, "Copy"));
- }
- })), !chainBottom && !(mousehover || moreActive) && React.createElement(Label, {
- className: "sendbird-user-message__sent-at",
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt$2(message)))));
-}
-
-IncomingUserMessage.propTypes = {
- userId: PropTypes.string.isRequired,
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedMessageText: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-IncomingUserMessage.defaultProps = {
- message: {},
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$2,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-OutgoingUserMessage.propTypes = {
- userId: PropTypes.string.isRequired,
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- showEdit: PropTypes.func,
- showRemove: PropTypes.func,
- disabled: PropTypes.bool,
- resendMessage: PropTypes.func,
- status: PropTypes.string.isRequired,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedMessageText: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-OutgoingUserMessage.defaultProps = {
- message: {},
- resendMessage: noop$2,
- showEdit: noop$2,
- showRemove: noop$2,
- disabled: false,
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$2,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-
-function AdminMessage(_ref) {
- var className = _ref.className,
- message = _ref.message;
-
- if (!message.messageType || message.messageType !== 'admin') {
- // change to use message.isAdminMessage()
- return null;
- }
-
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-admin-message']).join(' ')
- }, React.createElement(Label, {
- className: "sendbird-admin-message__text",
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, message.message));
-}
-AdminMessage.propTypes = {
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-AdminMessage.defaultProps = {
- message: {},
- className: ''
-};
-
-var getMessageCreatedAt$3 = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-var getIsSentFromStatus$2 = function getIsSentFromStatus(status) {
- return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
-};
-
-var noop$3 = function noop() {};
-
-var OUTGOING_THUMBNAIL_MESSAGE = 'sendbird-outgoing-thumbnail-message';
-var INCOMING_THUMBNAIL_MESSAGE = 'sendbird-incoming-thumbnail-message';
-var GROUPING_PADDING$1 = '1px';
-var NORMAL_PADDING$1 = '8px';
-function ThumbnailMessage(_ref) {
- var _ref$message = _ref.message,
- message = _ref$message === void 0 ? {} : _ref$message,
- userId = _ref.userId,
- disabled = _ref.disabled,
- isByMe = _ref.isByMe,
- onClick = _ref.onClick,
- showRemove = _ref.showRemove,
- status = _ref.status,
- resendMessage = _ref.resendMessage,
- useReaction = _ref.useReaction,
- emojiAllMap = _ref.emojiAllMap,
- membersMap = _ref.membersMap,
- toggleReaction = _ref.toggleReaction,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems,
- chainTop = _ref.chainTop,
- chainBottom = _ref.chainBottom;
- return isByMe ? React.createElement(OutgoingThumbnailMessage, {
- userId: userId,
- status: status,
- message: message,
- onClick: onClick,
- disabled: disabled,
- chainTop: chainTop,
- showRemove: showRemove,
- membersMap: membersMap,
- chainBottom: chainBottom,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- resendMessage: resendMessage,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- }) : React.createElement(IncomingThumbnailMessage, {
- userId: userId,
- status: status,
- message: message,
- onClick: onClick,
- chainTop: chainTop,
- membersMap: membersMap,
- chainBottom: chainBottom,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- });
-}
-function OutgoingThumbnailMessage(_ref2) {
- var _ref2$message = _ref2.message,
- message = _ref2$message === void 0 ? {} : _ref2$message,
- userId = _ref2.userId,
- disabled = _ref2.disabled,
- onClick = _ref2.onClick,
- showRemove = _ref2.showRemove,
- status = _ref2.status,
- resendMessage = _ref2.resendMessage,
- useReaction = _ref2.useReaction,
- emojiAllMap = _ref2.emojiAllMap,
- membersMap = _ref2.membersMap,
- toggleReaction = _ref2.toggleReaction,
- memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
- chainTop = _ref2.chainTop,
- chainBottom = _ref2.chainBottom;
- var type = message.type,
- url = message.url,
- localUrl = message.localUrl;
- var messageRef = useRef(null);
- var parentContainRef = useRef(null);
- var menuRef = useRef(null);
- var reactionAddRef = useRef(null);
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- mousehover = _useState2[0],
- setMousehover = _useState2[1];
-
- var _useState3 = useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- moreActive = _useState4[0],
- setMoreActive = _useState4[1];
-
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var isMessageSent = getIsSentFromStatus$2(status);
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React.createElement("div", {
- className: OUTGOING_THUMBNAIL_MESSAGE,
- ref: messageRef,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$1 : NORMAL_PADDING$1,
- paddingBottom: chainBottom ? GROUPING_PADDING$1 : NORMAL_PADDING$1
- }
- }, React.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "--inner")
- }, React.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "__left-padding")
- }, React.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-left-padding__more"),
- ref: parentContainRef
- }, React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: menuRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- color: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: menuRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- openLeft: true
- }, message && message.isResendable && message.isResendable() && React.createElement(MenuItem, {
- onClick: function onClick() {
- resendMessage(message);
- closeDropdown();
- }
- }, "Resend"), React.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showRemove(true);
- closeDropdown();
- }
- }, "Delete"));
- }
- }), isMessageSent && showReactionAddButton && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: reactionAddRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- color: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: reactionAddRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })), !chainBottom && !(mousehover || moreActive) && React.createElement(MessageStatus, {
- message: message,
- status: status,
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-left-padding__status")
- })), React.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "__body")
- }, React.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap")
- }, React.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap--inner"),
- onClick: isMessageSent ? function () {
- return onClick(true);
- } : function () {},
- onKeyDown: isMessageSent ? function () {
- return onClick(true);
- } : function () {},
- tabIndex: 0,
- role: "button"
- }, isVideo(type) && React.createElement(React.Fragment, null, React.createElement("video", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__video")
- }, React.createElement("source", {
- src: url || localUrl,
- type: type
- })), React.createElement(Icon, {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__video-icon"),
- width: "56px",
- height: "56px",
- type: IconTypes.PLAY
- })), isImage(type) && React.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__img"),
- style: {
- backgroundImage: "url(".concat(url || localUrl, ")"),
- height: '280px',
- width: '404px',
- backgroundSize: 'cover',
- backgroundRepeat: 'no-repeat',
- backgroundPosition: 'center'
- }
- }), unSupported(type) && React.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__other")
- }, "Unknown type"), React.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap__overlay")
- })), useReaction && message.reactions && message.reactions.length > 0 && React.createElement(EmojiReactions, {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap__emoji-reactions"),
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- })))));
-}
-function IncomingThumbnailMessage(_ref3) {
- var _ref3$message = _ref3.message,
- message = _ref3$message === void 0 ? {} : _ref3$message,
- userId = _ref3.userId,
- onClick = _ref3.onClick,
- status = _ref3.status,
- useReaction = _ref3.useReaction,
- emojiAllMap = _ref3.emojiAllMap,
- membersMap = _ref3.membersMap,
- toggleReaction = _ref3.toggleReaction,
- memoizedEmojiListItems = _ref3.memoizedEmojiListItems,
- chainTop = _ref3.chainTop,
- chainBottom = _ref3.chainBottom;
- var type = message.type,
- url = message.url,
- localUrl = message.localUrl;
-
- var _React$useContext = React.useContext(UserProfileContext),
- disableUserProfile = _React$useContext.disableUserProfile,
- renderUserProfile = _React$useContext.renderUserProfile;
-
- var messageRef = useRef(null);
- var parentContainRef = useRef(null);
- var reactionAddRef = useRef(null);
- var avatarRef = useRef(null);
-
- var _useState5 = useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- mousehover = _useState6[0],
- setMousehover = _useState6[1];
-
- var _useState7 = useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- moreActive = _useState8[0],
- setMoreActive = _useState8[1];
-
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var isMessageSent = getIsSentFromStatus$2(status);
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React.createElement("div", {
- className: INCOMING_THUMBNAIL_MESSAGE,
- ref: messageRef,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$1 : NORMAL_PADDING$1,
- paddingBottom: chainBottom ? GROUPING_PADDING$1 : NORMAL_PADDING$1
- }
- }, !chainTop && React.createElement(Label, {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__sender-name"),
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, getSenderName(message) || ''), React.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "--inner")
- }, React.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__body")
- }, React.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap")
- }, !chainBottom && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(Avatar$1, {
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__avatar"),
- src: getSenderProfileUrl(message),
- width: "28px",
- height: "28px"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: message.sender,
- close: closeDropdown
- }) : React.createElement(ConnectedUserProfile, {
- user: message.sender,
- onSuccess: closeDropdown
- }));
- }
- }), React.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap--inner"),
- role: "button",
- tabIndex: 0,
- onClick: isMessageSent ? function () {
- return onClick(true);
- } : function () {},
- onKeyDown: isMessageSent ? function () {
- return onClick(true);
- } : function () {}
- }, isVideo(type) && React.createElement(React.Fragment, null, React.createElement("video", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__video")
- }, React.createElement("source", {
- src: url || localUrl,
- type: type
- })), React.createElement(Icon, {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__video-icon"),
- width: "56px",
- height: "56px",
- type: IconTypes.PLAY
- })), isImage(type) && React.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__img"),
- style: {
- backgroundImage: "url(".concat(url || localUrl, ")"),
- height: '280px',
- width: '404px',
- backgroundSize: 'cover',
- backgroundRepeat: 'no-repeat',
- backgroundPosition: 'center'
- }
- }), unSupported(type) && React.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__other")
- }, "Unknown type"), React.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap-overlay")
- })), useReaction && message.reactions && message.reactions.length > 0 && React.createElement(EmojiReactions, {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__wrap__emoji-reactions"),
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- }))), React.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__right-padding")
- }, !chainBottom && !(mousehover || moreActive) && React.createElement(Label, {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__sent-at"),
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt$3(message)), React.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__more"),
- ref: parentContainRef
- }, showReactionAddButton && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: reactionAddRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- color: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: reactionAddRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })))));
-}
-ThumbnailMessage.propTypes = {
- message: PropTypes.shape({
- type: PropTypes.string,
- url: PropTypes.string,
- localUrl: PropTypes.string
- }).isRequired,
- userId: PropTypes.string,
- resendMessage: PropTypes.func,
- status: PropTypes.string,
- isByMe: PropTypes.bool,
- disabled: PropTypes.bool,
- onClick: PropTypes.func,
- showRemove: PropTypes.func,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool,
- chainBottom: PropTypes.bool
-};
-ThumbnailMessage.defaultProps = {
- isByMe: false,
- disabled: false,
- resendMessage: noop$3,
- onClick: noop$3,
- showRemove: noop$3,
- status: '',
- userId: '',
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$3,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- },
- chainTop: false,
- chainBottom: false
-};
-OutgoingThumbnailMessage.propTypes = {
- message: PropTypes.shape({
- type: PropTypes.string,
- url: PropTypes.string,
- localUrl: PropTypes.string
- }).isRequired,
- userId: PropTypes.string.isRequired,
- disabled: PropTypes.bool.isRequired,
- resendMessage: PropTypes.func.isRequired,
- status: PropTypes.string,
- onClick: PropTypes.func.isRequired,
- showRemove: PropTypes.func.isRequired,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- membersMap: PropTypes.instanceOf(Map).isRequired,
- toggleReaction: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func.isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-OutgoingThumbnailMessage.defaultProps = {
- status: ''
-};
-IncomingThumbnailMessage.propTypes = {
- message: PropTypes.shape({
- type: PropTypes.string,
- url: PropTypes.string,
- localUrl: PropTypes.string
- }).isRequired,
- userId: PropTypes.string.isRequired,
- onClick: PropTypes.func.isRequired,
- status: PropTypes.string,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- membersMap: PropTypes.instanceOf(Map).isRequired,
- toggleReaction: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func.isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-IncomingThumbnailMessage.defaultProps = {
- status: ''
-};
-
-var MAX_TRUNCATE_LENGTH = 40;
-var GROUPAING_PADDING = '1px';
-var NORMAL_PADDING$2 = '8px';
-
-var noop$4 = function noop() {};
-
-function checkFileType(fileUrl) {
- var result = null;
- var imageFile = /(\.gif|\.jpg|\.jpeg|\.txt|\.pdf)$/i;
- var audioFile = /(\.mp3)$/i;
-
- if (imageFile.test(fileUrl)) {
- result = IconTypes.FILE_DOCUMENT;
- } else if (audioFile.test(fileUrl)) {
- result = IconTypes.FILE_AUDIO;
- }
-
- return result;
-}
-
-function OutgoingFileMessage(_ref) {
- var message = _ref.message,
- userId = _ref.userId,
- status = _ref.status,
- showRemove = _ref.showRemove,
- disabled = _ref.disabled,
- resendMessage = _ref.resendMessage,
- useReaction = _ref.useReaction,
- emojiAllMap = _ref.emojiAllMap,
- membersMap = _ref.membersMap,
- toggleReaction = _ref.toggleReaction,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems,
- chainTop = _ref.chainTop,
- chainBottom = _ref.chainBottom;
- var url = message.url;
-
- var openFileUrl = function openFileUrl() {
- window.open(url);
- };
-
- var messageRef = useRef(null);
- var parentContainRef = useRef(null);
- var menuRef = useRef(null);
- var reactionAddButtonRef = useRef(null);
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- mousehover = _useState2[0],
- setMousehover = _useState2[1];
-
- var _useState3 = useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- moreActive = _useState4[0],
- setMoreActive = _useState4[1];
-
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var isMessageSent = getIsSentFromStatus(status);
- var showEmojiReactions = isMessageSent && useReaction && message.reactions && message.reactions.length > 0;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React.createElement("div", {
- className: "sendbird-file-message__outgoing",
- ref: messageRef,
- style: {
- paddingTop: chainTop ? GROUPAING_PADDING : NORMAL_PADDING$2,
- paddingBottom: chainBottom ? GROUPAING_PADDING : NORMAL_PADDING$2
- }
- }, React.createElement("div", {
- className: "sendbird-file-message--inner"
- }, React.createElement("div", {
- className: "sendbird-file-message__left-padding"
- }, React.createElement("div", {
- className: "sendbird-file-message__more",
- ref: parentContainRef
- }, React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: menuRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: menuRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- openLeft: true
- }, message && message.isResendable && message.isResendable() && React.createElement(MenuItem, {
- onClick: function onClick() {
- resendMessage(message);
- closeDropdown();
- }
- }, "Resend"), React.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showRemove(true);
- closeDropdown();
- }
- }, "Delete"));
- }
- }), showReactionAddButton && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: reactionAddButtonRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: reactionAddButtonRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })), !chainBottom && !(mousehover || moreActive) && React.createElement("div", {
- className: "sendbird-file-message__status"
- }, React.createElement(MessageStatus, {
- message: message,
- status: status
- }))), React.createElement("div", {
- className: "sendbird-file-message__tooltip"
- }, React.createElement("div", {
- className: "sendbird-file-message__tooltip__inner"
- }, checkFileType(url) ? React.createElement(Icon, {
- className: "sendbird-file-message__tooltip__icon",
- width: "28px",
- height: "28px",
- type: checkFileType(url)
- }) : null, React.createElement(TextButton, {
- className: "sendbird-file-message__tooltip__text",
- onClick: openFileUrl
- }, React.createElement(Label, {
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, truncate(message.url, MAX_TRUNCATE_LENGTH)))), showEmojiReactions && React.createElement(EmojiReactions, {
- className: "sendbird-file-message__tooltip__emoji-reactions",
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- }))));
-}
-function IncomingFileMessage(_ref2) {
- var message = _ref2.message,
- userId = _ref2.userId,
- useReaction = _ref2.useReaction,
- emojiAllMap = _ref2.emojiAllMap,
- membersMap = _ref2.membersMap,
- toggleReaction = _ref2.toggleReaction,
- memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
- chainTop = _ref2.chainTop,
- chainBottom = _ref2.chainBottom;
-
- var openFileUrl = function openFileUrl() {
- window.open(message.url);
- };
-
- var messageRef = useRef(null);
-
- var _React$useContext = React.useContext(UserProfileContext),
- disableUserProfile = _React$useContext.disableUserProfile,
- renderUserProfile = _React$useContext.renderUserProfile;
-
- var parentContainRef = useRef(null);
- var avatarRef = useRef(null);
- var reactionAddButtonRef = useRef(null);
-
- var _useState5 = useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- mousehover = _useState6[0],
- setMousehover = _useState6[1];
-
- var _useState7 = useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- moreActive = _useState8[0],
- setMoreActive = _useState8[1];
-
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React.createElement("div", {
- className: "sendbird-file-message__incoming",
- ref: messageRef,
- style: {
- paddingTop: chainTop ? GROUPAING_PADDING : NORMAL_PADDING$2,
- paddingBottom: chainBottom ? GROUPAING_PADDING : NORMAL_PADDING$2
- }
- }, React.createElement("div", {
- className: "sendbird-file-message--inner"
- }, React.createElement("div", {
- className: "sendbird-file-message__body"
- }, !chainBottom && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(Avatar$1, {
- ref: avatarRef,
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- className: "sendbird-file-message__avatar",
- src: getSenderProfileUrl(message),
- width: "28px",
- height: "28px"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: message.sender,
- close: closeDropdown
- }) : React.createElement(ConnectedUserProfile, {
- user: message.sender,
- onSuccess: closeDropdown
- }));
- }
- }), !chainTop && React.createElement(Label, {
- className: "sendbird-file-message__sender-name",
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, getSenderName(message)), React.createElement("div", {
- className: "sendbird-file-message__tooltip"
- }, React.createElement("div", {
- className: "sendbird-file-message__tooltip__inner"
- }, checkFileType(message.url) ? React.createElement(Icon, {
- className: "sendbird-file-message__tooltip__icon",
- width: "28px",
- height: "28px",
- type: checkFileType(message.url)
- }) : null, React.createElement(TextButton, {
- className: "sendbird-file-message__tooltip__text",
- onClick: openFileUrl
- }, React.createElement(Label, {
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, truncate(message.url, MAX_TRUNCATE_LENGTH)))), useReaction && message.reactions && message.reactions.length > 0 && React.createElement(EmojiReactions, {
- className: "sendbird-file-message__tooltip__emoji-reactions",
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- }))), React.createElement("div", {
- className: "sendbird-file-message__right-padding"
- }, React.createElement("div", {
- className: "sendbird-file-message__more",
- ref: parentContainRef
- }, showReactionAddButton && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: reactionAddButtonRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: reactionAddButtonRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })), !chainBottom && !(mousehover || moreActive) && React.createElement(Label, {
- className: "sendbird-file-message__sent-at",
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt(message)))));
-}
-OutgoingFileMessage.propTypes = {
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- userId: PropTypes.string,
- status: PropTypes.string,
- showRemove: PropTypes.func,
- resendMessage: PropTypes.func,
- useReaction: PropTypes.bool.isRequired,
- disabled: PropTypes.bool,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-OutgoingFileMessage.defaultProps = {
- status: '',
- showRemove: noop$4,
- resendMessage: noop$4,
- message: {},
- userId: '',
- disabled: false,
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$4,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-IncomingFileMessage.propTypes = {
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- userId: PropTypes.string,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-IncomingFileMessage.defaultProps = {
- message: {},
- userId: '',
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$4,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-
-var MessageSwitch = function MessageSwitch(_ref3) {
- var message = _ref3.message,
- userId = _ref3.userId,
- disabled = _ref3.disabled,
- isByMe = _ref3.isByMe,
- showRemove = _ref3.showRemove,
- status = _ref3.status,
- resendMessage = _ref3.resendMessage,
- useReaction = _ref3.useReaction,
- emojiAllMap = _ref3.emojiAllMap,
- membersMap = _ref3.membersMap,
- toggleReaction = _ref3.toggleReaction,
- memoizedEmojiListItems = _ref3.memoizedEmojiListItems,
- chainTop = _ref3.chainTop,
- chainBottom = _ref3.chainBottom;
- return React.createElement("div", {
- className: "sendbird-file-message".concat(isByMe ? '--outgoing' : '--incoming')
- }, isByMe ? React.createElement(OutgoingFileMessage, {
- message: message,
- userId: userId,
- disabled: disabled,
- showRemove: showRemove,
- status: status,
- resendMessage: resendMessage,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- }) : React.createElement(IncomingFileMessage, {
- userId: userId,
- message: message,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- }));
-};
-
-MessageSwitch.propTypes = {
- message: PropTypes.shape({}),
- userId: PropTypes.string,
- isByMe: PropTypes.bool,
- disabled: PropTypes.bool,
- showRemove: PropTypes.func,
- resendMessage: PropTypes.func,
- status: PropTypes.string.isRequired,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool,
- chainBottom: PropTypes.bool
-};
-MessageSwitch.defaultProps = {
- message: {},
- isByMe: false,
- disabled: false,
- showRemove: noop$4,
- resendMessage: noop$4,
- userId: '',
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$4,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- },
- chainTop: false,
- chainBottom: false
-};
-
-function DateSeparator(_ref) {
- var className = _ref.className,
- children = _ref.children,
- separatorColor = _ref.separatorColor;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-separator']).join(' ')
- }, React.createElement("div", {
- className: ["".concat(changeColorToClassName$2(separatorColor), "--background-color"), 'sendbird-separator__left'].join(' ')
- }), React.createElement("div", {
- className: "sendbird-separator__text"
- }, children), React.createElement("div", {
- className: ["".concat(changeColorToClassName$2(separatorColor), "--background-color"), 'sendbird-separator__right'].join(' ')
- }));
-}
-DateSeparator.propTypes = {
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string), PropTypes.element]),
- separatorColor: PropTypes.string
-};
-DateSeparator.defaultProps = {
- className: '',
- children: React.createElement(Label, {
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, "Date Separator"),
- separatorColor: Colors$2.ONBACKGROUND_4
-};
-
-// import IconAttach from '../../svgs/icon-attach.svg';
-
-var LINE_HEIGHT = 76;
-
-var noop$5 = function noop() {};
-
-var KeyCode = {
- SHIFT: 16,
- ENTER: 13
-};
-
-var handleUploadFile = function handleUploadFile(callback) {
- return function (event) {
- if (event.target.files && event.target.files[0]) {
- callback(event.target.files[0]);
- } // eslint-disable-next-line no-param-reassign
-
-
- event.target.value = '';
- };
-};
-
-var MessageInput = React.forwardRef(function (props, ref) {
- var isEdit = props.isEdit,
- disabled = props.disabled,
- value = props.value,
- name = props.name,
- placeholder = props.placeholder,
- maxLength = props.maxLength,
- onFileUpload = props.onFileUpload,
- onSendMessage = props.onSendMessage,
- onCancelEdit = props.onCancelEdit,
- onStartTyping = props.onStartTyping;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var fileInputRef = useRef(null);
-
- var _useState = useState(value),
- _useState2 = _slicedToArray(_useState, 2),
- inputValue = _useState2[0],
- setInputValue = _useState2[1];
-
- var _useState3 = useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- isShiftPressed = _useState4[0],
- setIsShiftPressed = _useState4[1];
-
- var setHeight = function setHeight() {
- var elem = ref.current;
- var MAX_HEIGHT = window.document.body.offsetHeight * 0.6;
-
- if (elem.scrollHeight >= LINE_HEIGHT) {
- if (MAX_HEIGHT < elem.scrollHeight) {
- elem.style.height = 'auto';
- elem.style.height = "".concat(MAX_HEIGHT, "px");
- } else {
- elem.style.height = 'auto';
- elem.style.height = "".concat(elem.scrollHeight, "px");
- }
- } else {
- elem.style.height = '';
- }
- }; // after setHeight called twice, the textarea goes to the initialized
-
-
- useEffect(function () {
- setHeight();
- return setHeight;
- }, [inputValue]);
-
- var sendMessage = function sendMessage() {
- if (inputValue) {
- var trimmedInputValue = inputValue.trim();
-
- if (isEdit) {
- onSendMessage(name, trimmedInputValue, function () {
- onCancelEdit();
- });
- } else {
- onSendMessage(trimmedInputValue);
- setInputValue('');
- }
- }
- };
-
- return React.createElement("form", {
- className: "\n ".concat(isEdit ? 'sendbird-message-input__edit' : '', "\n ").concat(disabled ? 'sendbird-message-input-form__disabled' : '', "\n ")
- }, React.createElement("div", {
- className: "\n sendbird-message-input\n ".concat(disabled ? 'sendbird-message-input__disabled' : '', "\n ")
- }, React.createElement("textarea", {
- disabled: disabled,
- ref: ref,
- name: name,
- value: inputValue,
- className: "sendbird-message-input--textarea",
- maxLength: maxLength,
- onChange: function onChange(e) {
- setInputValue(e.target.value);
- onStartTyping();
- },
- onKeyDown: function onKeyDown(e) {
- if (e.keyCode === KeyCode.SHIFT) {
- setIsShiftPressed(true);
- }
-
- if (!isShiftPressed && e.keyCode === KeyCode.ENTER) {
- e.preventDefault();
- sendMessage();
- }
- },
- onKeyUp: function onKeyUp(e) {
- if (e.keyCode === KeyCode.SHIFT) {
- setIsShiftPressed(false);
- }
- }
- }), !inputValue && React.createElement(Label, {
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_3,
- className: "sendbird-message-input--placeholder"
- }, placeholder || stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER), !isEdit && !inputValue && React.createElement(IconButton, {
- className: "sendbird-message-input--attach",
- height: "32px",
- width: "32px",
- onClick: function onClick() {
- // todo: clear previous input
- fileInputRef.current.click();
- }
- }, React.createElement(Icon, {
- type: IconTypes.ATTACH,
- width: "20px",
- height: "20px"
- }), React.createElement("input", {
- type: "file",
- ref: fileInputRef,
- onChange: handleUploadFile(onFileUpload),
- className: "sendbird-message-input--attach-input"
- })), !isEdit && inputValue && React.createElement(IconButton, {
- className: "sendbird-message-input--send",
- height: "32px",
- width: "32px",
- onClick: sendMessage
- }, React.createElement(Icon, {
- type: IconTypes.SEND,
- fillColor: IconColors.PRIMARY,
- width: "20px",
- height: "20px"
- }))), isEdit && React.createElement("div", {
- className: "sendbird-message-input--edit-action"
- }, React.createElement(Button, {
- className: "sendbird-message-input--edit-action__cancel",
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: onCancelEdit
- }, stringSet.BUTTON__CANCEL), React.createElement(Button, {
- className: "sendbird-message-input--edit-action__save",
- type: Type$1.PRIMARY,
- size: Size.SMALL,
- onClick: function onClick() {
- if (inputValue) {
- var trimmedInputValue = inputValue.trim();
- onSendMessage(name, trimmedInputValue, function () {
- onCancelEdit();
- });
- }
- }
- }, stringSet.BUTTON__SAVE)));
-});
-MessageInput.propTypes = {
- placeholder: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
- isEdit: PropTypes.bool,
- name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- value: PropTypes.string,
- disabled: PropTypes.bool,
- maxLength: PropTypes.number,
- onFileUpload: PropTypes.func,
- onSendMessage: PropTypes.func,
- onStartTyping: PropTypes.func,
- onCancelEdit: PropTypes.func
-};
-MessageInput.defaultProps = {
- value: '',
- onSendMessage: noop$5,
- name: 'sendbird-message-input',
- isEdit: false,
- disabled: false,
- placeholder: '',
- maxLength: 5000,
- onFileUpload: noop$5,
- onCancelEdit: noop$5,
- onStartTyping: noop$5
-};
-
-var FileViewerComponent = function FileViewerComponent(_ref) {
- var profileUrl = _ref.profileUrl,
- nickname = _ref.nickname,
- type = _ref.type,
- url = _ref.url,
- name = _ref.name,
- onClose = _ref.onClose,
- onDelete = _ref.onDelete,
- isByMe = _ref.isByMe;
- return React.createElement("div", {
- className: "sendbird-fileviewer"
- }, React.createElement("div", {
- className: "sendbird-fileviewer__header"
- }, React.createElement("div", {
- className: "sendbird-fileviewer__header-left"
- }, React.createElement("div", {
- className: "sendbird-fileviewer__header-avatar"
- }, React.createElement(Avatar$1, {
- height: "32px",
- width: "32px",
- src: profileUrl
- })), React.createElement(Label, {
- className: "sendbird-fileviewer__header-filename",
- type: LabelTypography.H_2,
- color: LabelColors.ONBACKGROUND_1
- }, name), React.createElement(Label, {
- className: "sendbird-fileviewer__header-sendername",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_2
- }, nickname)), React.createElement("div", {
- className: "sendbird-fileviewer__header-right"
- }, !unSupported(type) && React.createElement("div", {
- className: "sendbird-fileviewer__header-actions"
- }, React.createElement("a", {
- href: url,
- rel: "noopener noreferrer",
- target: "_blank",
- className: "sendbird-fileviewer__header-download"
- }, React.createElement(Icon, {
- type: IconTypes.DOWNLOAD,
- height: "24px",
- width: "24px"
- })), onDelete && isByMe && React.createElement("div", {
- className: "sendbird-fileviewer__header-delete"
- }, React.createElement(Icon, {
- type: IconTypes.DELETE,
- height: "24px",
- width: "24px",
- onClick: onDelete
- }))), React.createElement("div", {
- className: "sendbird-fileviewer__header-close"
- }, React.createElement(Icon, {
- type: IconTypes.CLOSE,
- height: "24px",
- width: "24px",
- onClick: onClose
- })))), React.createElement("div", {
- className: "sendbird-fileviewer__content"
- }, isVideo(type) && // eslint-disable-next-line jsx-a11y/media-has-caption
- React.createElement("video", {
- controls: true,
- className: "sendbird-fileviewer__video"
- }, React.createElement("source", {
- src: url,
- type: type
- })), isImage(type) && React.createElement("img", {
- src: url,
- alt: name,
- className: "sendbird-fileviewer__img"
- }), unSupported(type) && React.createElement("div", {
- className: "sendbird-fileviewer__unsupported"
- }, React.createElement(Label, {
- type: LabelTypography.H_1,
- color: LabelColors.ONBACKGROUND_1
- }, "Unsupoprted message"))));
-};
-FileViewerComponent.propTypes = {
- profileUrl: PropTypes.string.isRequired,
- nickname: PropTypes.string.isRequired,
- type: PropTypes.string.isRequired,
- url: PropTypes.string.isRequired,
- name: PropTypes.string.isRequired,
- onClose: PropTypes.func.isRequired,
- onDelete: PropTypes.func.isRequired,
- isByMe: PropTypes.bool
-};
-FileViewerComponent.defaultProps = {
- isByMe: true
-};
-function FileViewer(props) {
- var onClose = props.onClose,
- message = props.message,
- onDelete = props.onDelete,
- isByMe = props.isByMe;
- var sender = message.sender,
- type = message.type,
- url = message.url,
- _message$name = message.name,
- name = _message$name === void 0 ? '' : _message$name;
- var profileUrl = sender.profileUrl,
- _sender$nickname = sender.nickname,
- nickname = _sender$nickname === void 0 ? '' : _sender$nickname;
- return createPortal(React.createElement(FileViewerComponent, {
- profileUrl: profileUrl,
- nickname: nickname,
- type: type,
- url: url,
- name: name,
- onClose: onClose,
- onDelete: onDelete,
- isByMe: isByMe
- }), document.getElementById(MODAL_ROOT));
-}
-FileViewer.propTypes = {
- onClose: PropTypes.func.isRequired,
- message: PropTypes.shape({
- sender: PropTypes.shape({
- profileUrl: PropTypes.string,
- nickname: PropTypes.string
- }),
- type: PropTypes.string,
- url: PropTypes.string,
- name: PropTypes.string
- }).isRequired,
- onDelete: PropTypes.func.isRequired,
- isByMe: PropTypes.bool
-};
-FileViewer.defaultProps = {
- isByMe: true
-};
-
-var RemoveMessage = function RemoveMessage(props) {
- var onCloseModal = props.onCloseModal,
- onDeleteMessage = props.onDeleteMessage;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.createElement(Modal, {
- onCancel: onCloseModal,
- onSubmit: onDeleteMessage,
- submitText: "Delete",
- titleText: stringSet.MODAL__DELETE_MESSAGE__TITLE
- });
-};
-
-RemoveMessage.propTypes = {
- onCloseModal: PropTypes.func.isRequired,
- onDeleteMessage: PropTypes.func.isRequired
-};
-
-var getMessageCreatedAt$4 = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-
-var CLASS_NAME$4 = 'sendbird-unknown-message';
-var GROUPING_PADDING$2 = '1px';
-var NORMAL_PADDING$3 = '8px';
-function UnknownMessage(_ref) {
- var message = _ref.message,
- isByMe = _ref.isByMe,
- status = _ref.status,
- className = _ref.className,
- showRemove = _ref.showRemove,
- chainTop = _ref.chainTop,
- chainBottom = _ref.chainBottom;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift(CLASS_NAME$4);
- injectingClassName.push("".concat(CLASS_NAME$4).concat(isByMe ? '--outgoing' : '--incoming'));
- return React.createElement("div", {
- className: injectingClassName.join(' ')
- }, isByMe ? React.createElement(OutgoingUnknownMessage, {
- status: status,
- message: message,
- chainTop: chainTop,
- showRemove: showRemove,
- chainBottom: chainBottom
- }) : React.createElement(IncomingUnknownMessage, {
- message: message,
- chainTop: chainTop,
- chainBottom: chainBottom
- }));
-}
-UnknownMessage.propTypes = {
- message: PropTypes.shape({}).isRequired,
- isByMe: PropTypes.bool,
- status: PropTypes.string,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- showRemove: PropTypes.func,
- chainTop: PropTypes.bool,
- chainBottom: PropTypes.bool
-};
-UnknownMessage.defaultProps = {
- isByMe: false,
- status: '',
- className: '',
- showRemove: function showRemove() {},
- chainTop: false,
- chainBottom: false
-};
-
-function OutgoingUnknownMessage(_ref2) {
- var message = _ref2.message,
- status = _ref2.status,
- showRemove = _ref2.showRemove,
- chainTop = _ref2.chainTop,
- chainBottom = _ref2.chainBottom;
- var className = 'sendbird-outgoing-unknown-message';
- var messageRef = useRef(null);
- var parentContainRef = useRef(null);
- var menuRef = useRef(null);
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- mousehover = _useState2[0],
- setMousehover = _useState2[1];
-
- var _useState3 = useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- moreActive = _useState4[0],
- setMoreActive = _useState4[1];
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React.createElement("div", {
- ref: messageRef,
- className: className,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$2 : NORMAL_PADDING$3,
- paddingBottom: chainBottom ? GROUPING_PADDING$2 : NORMAL_PADDING$3
- }
- }, React.createElement("div", {
- className: "".concat(className, "--inner")
- }, React.createElement("div", {
- className: "".concat(className, "--left-padding")
- }, React.createElement("div", {
- className: "".concat(className, "__more"),
- ref: parentContainRef
- }, React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "".concat(className, "__more__menu"),
- ref: menuRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: menuRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: parentContainRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React.createElement(MenuItem, {
- onClick: function onClick() {
- showRemove(true);
- closeDropdown();
- }
- }, "Delete"));
- }
- })), !chainBottom && !(mousehover || moreActive) && React.createElement("div", {
- className: "".concat(className, "__message-status")
- }, React.createElement(MessageStatus, {
- message: message,
- status: status
- }))), React.createElement("div", {
- className: "".concat(className, "__body")
- }, React.createElement("div", {
- className: "".concat(className, "__body__text-balloon")
- }, React.createElement(Label, {
- className: "".concat(className, "__body__text-balloon__header"),
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React.createElement(Label, {
- className: "".concat(className, "__body__text-balloon__description"),
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_2
- }, stringSet.UNKNOWN__CANNOT_READ_MESSAGE)))));
-}
-
-function IncomingUnknownMessage(_ref3) {
- var message = _ref3.message,
- chainTop = _ref3.chainTop,
- chainBottom = _ref3.chainBottom;
- var className = 'sendbird-incoming-unknown-message';
- var sender = message.sender;
- var avatarRef = useRef(null);
-
- var _useContext2 = useContext(LocalizationContext),
- stringSet = _useContext2.stringSet;
-
- var _React$useContext = React.useContext(UserProfileContext),
- disableUserProfile = _React$useContext.disableUserProfile,
- renderUserProfile = _React$useContext.renderUserProfile;
-
- return React.createElement("div", {
- className: className,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$2 : NORMAL_PADDING$3,
- paddingBottom: chainBottom ? GROUPING_PADDING$2 : NORMAL_PADDING$3
- }
- }, React.createElement("div", {
- className: "".concat(className, "--inner")
- }, React.createElement("div", {
- className: "".concat(className, "__left")
- }, !chainBottom && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(Avatar$1, {
- ref: avatarRef,
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- className: "".concat(className, "__left__sender-profile-image"),
- src: sender.profileUrl,
- width: "28px",
- height: "28px",
- alt: "sender-profile-image"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: message.sender,
- close: closeDropdown
- }) : React.createElement(ConnectedUserProfile, {
- user: message.sender,
- onSuccess: closeDropdown
- }));
- }
- })), React.createElement("div", {
- className: "".concat(className, "__body")
- }, !chainTop && React.createElement(Label, {
- className: "".concat(className, "__body__sender-name"),
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, sender.nickname || stringSet.NO_NAME), React.createElement("div", {
- className: "".concat(className, "__body__text-balloon")
- }, React.createElement(Label, {
- className: "".concat(className, "__body__text-balloon__header"),
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React.createElement(Label, {
- className: "".concat(className, "__body__text-balloon__description"),
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_2
- }, stringSet.UNKNOWN__CANNOT_READ_MESSAGE))), React.createElement("div", {
- className: "".concat(className, "--right-padding")
- }, !chainBottom && React.createElement(Label, {
- className: "".concat(className, "__sent-at"),
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt$4(message)))));
-}
-
-OutgoingUnknownMessage.propTypes = {
- message: PropTypes.shape({}).isRequired,
- status: PropTypes.string.isRequired,
- showRemove: PropTypes.func,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-OutgoingUnknownMessage.defaultProps = {
- showRemove: function showRemove() {}
-};
-IncomingUnknownMessage.propTypes = {
- message: PropTypes.shape({
- sender: PropTypes.shape({
- nickname: PropTypes.string,
- profileUrl: PropTypes.string
- })
- }).isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-
-var URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;
-var OG_MESSAGE = 'sendbird-og-message';
-var OUTGOING_OG_MESSAGE = 'sendbird-outgoing-og-message';
-var INCOMING_OG_MESSAGE = 'sendbird-incoming-og-message';
-
-var createUrlTester = function createUrlTester(regexp) {
- return function (text) {
- return regexp.test(text);
- };
-};
-var getIsSentFromStatus$3 = function getIsSentFromStatus(status) {
- return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
-};
-var copyToClipboard$1 = function copyToClipboard(text) {
- try {
- if (window.clipboardData && window.clipboardData.setData) {
- // Internet Explorer-specific code path
- // to prevent textarea being shown while dialog is visible.
- return window.clipboardData.setData('Text', text);
- }
-
- if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
- var textarea = document.createElement('textarea');
- textarea.textContent = text;
- textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.
-
- document.body.appendChild(textarea);
- textarea.select();
-
- try {
- return document.execCommand('copy'); // Security exception may be thrown by some browsers.
- } catch (ex) {
- return false;
- } finally {
- document.body.removeChild(textarea);
- }
- }
-
- return false;
- } catch (err) {
- return err;
- }
-};
-var getSenderProfileUrl$2 = function getSenderProfileUrl(message) {
- return message.sender && message.sender.profileUrl;
-};
-var getSenderName$2 = function getSenderName(message) {
- return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
-};
-var getMessageCreatedAt$5 = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-var checkOGIsEnalbed = function checkOGIsEnalbed(message) {
- var ogMetaData = message.ogMetaData;
-
- if (!ogMetaData) {
- return false;
- }
-
- var url = ogMetaData.url;
-
- if (!url) {
- return false;
- }
-
- return true;
-};
-
-var LINK_LABEL = 'sendbird-link-label';
-var http = /https?:\/\//;
-function LinkLabel(_ref) {
- var className = _ref.className,
- src = _ref.src,
- type = _ref.type,
- color = _ref.color,
- children = _ref.children;
- var injecingClassName = Array.isArray(className) ? className : [className];
- var url = http.test(src) ? src : "http://".concat(src);
- return React.createElement("a", {
- className: "".concat(LINK_LABEL, " ").concat(injecingClassName.join(' ')),
- href: url
- }, React.createElement(Label, {
- type: type,
- color: color,
- className: "".concat(LINK_LABEL, "__label")
- }, children));
-}
-LinkLabel.propTypes = {
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.element)]).isRequired,
- src: PropTypes.string.isRequired,
- type: PropTypes.oneOf(Object.keys(LabelTypography)).isRequired,
- color: PropTypes.oneOf(Object.keys(LabelColors)).isRequired
-};
-LinkLabel.defaultProps = {
- className: ''
-};
-
-var WORD_TYPOGRAPHY$1 = LabelTypography.BODY_1;
-var WORD_COLOR = LabelColors.ONBACKGROUND_1;
-var EDITED_COLOR$1 = LabelColors.ONBACKGROUND_2;
-var isUrl = createUrlTester(URL_REG);
-function useMemoizedMessageText$1(_ref) {
- var message = _ref.message,
- updatedAt = _ref.updatedAt,
- className = _ref.className;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return useMemo(function () {
- return function () {
- var splitMessage = message.split(' ');
- var matchedMessage = splitMessage.map(function (word) {
- return isUrl(word) ? React.createElement(LinkLabel, {
- key: uuidv4(),
- className: className,
- src: word,
- type: WORD_TYPOGRAPHY$1,
- color: WORD_COLOR
- }, word) : React.createElement(Label, {
- key: uuidv4(),
- className: className,
- type: WORD_TYPOGRAPHY$1,
- color: WORD_COLOR
- }, word);
- });
-
- if (updatedAt > 0) {
- matchedMessage.push(React.createElement(Label, {
- key: uuidv4(),
- className: className,
- type: WORD_TYPOGRAPHY$1,
- color: EDITED_COLOR$1
- }, stringSet.MESSAGE_EDITED));
- } // return (<>{matchedMessage}>);
-
-
- return matchedMessage;
- };
- }, [message, updatedAt, className]);
-}
-
-var GROUPING_PADDING$3 = '1px';
-var NORAML_PADDING = '8px';
-
-var OGMessageSwitch = function OGMessageSwitch(_ref) {
- var isByMe = _ref.isByMe,
- userId = _ref.userId,
- status = _ref.status,
- message = _ref.message,
- disabled = _ref.disabled,
- showEdit = _ref.showEdit,
- chainTop = _ref.chainTop,
- className = _ref.className,
- membersMap = _ref.membersMap,
- showRemove = _ref.showRemove,
- useReaction = _ref.useReaction,
- emojiAllMap = _ref.emojiAllMap,
- chainBottom = _ref.chainBottom,
- resendMessage = _ref.resendMessage,
- toggleReaction = _ref.toggleReaction,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems;
- var ogMetaData = message.ogMetaData;
- var injectingClassName = Array.isArray(className) ? className : [className];
- var memoizedMessageText = useMemoizedMessageText$1({
- message: message.message,
- updatedAt: message.updatedAt,
- className: 'sendbird-og-message-word'
- });
-
- var openLink = function openLink() {
- if (checkOGIsEnalbed(message)) {
- var url = ogMetaData.url;
- window.open(url);
- }
- };
-
- return React.createElement("div", {
- className: "".concat(OG_MESSAGE, " ").concat(OG_MESSAGE).concat(isByMe ? '--outgoing' : '--incoming', " ").concat(injectingClassName.join(' '))
- }, isByMe ? React.createElement(OutgoingOGMessage, {
- status: status,
- userId: userId,
- message: message,
- disabled: disabled,
- openLink: openLink,
- showEdit: showEdit,
- chainTop: chainTop,
- showRemove: showRemove,
- membersMap: membersMap,
- chainBottom: chainBottom,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- resendMessage: resendMessage,
- toggleReaction: toggleReaction,
- memoizedMessageText: memoizedMessageText,
- memoizedEmojiListItems: memoizedEmojiListItems
- }) : React.createElement(IncomingOGMessage, {
- userId: userId,
- message: message,
- openLink: openLink,
- chainTop: chainTop,
- membersMap: membersMap,
- chainBottom: chainBottom,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- toggleReaction: toggleReaction,
- memoizedMessageText: memoizedMessageText,
- memoizedEmojiListItems: memoizedEmojiListItems
- }));
-};
-
-function OutgoingOGMessage(props) {
- var status = props.status,
- userId = props.userId,
- message = props.message,
- disabled = props.disabled,
- openLink = props.openLink,
- showEdit = props.showEdit,
- chainTop = props.chainTop,
- showRemove = props.showRemove,
- membersMap = props.membersMap,
- chainBottom = props.chainBottom,
- emojiAllMap = props.emojiAllMap,
- useReaction = props.useReaction,
- resendMessage = props.resendMessage,
- toggleReaction = props.toggleReaction,
- memoizedMessageText = props.memoizedMessageText,
- memoizedEmojiListItems = props.memoizedEmojiListItems;
- var ogMetaData = message.ogMetaData;
- var defaultImage = ogMetaData.defaultImage;
- var MemoizedMessageText = memoizedMessageText;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var messageRef = useRef(null);
- var parentRefReactions = useRef(null);
- var parentRefMenus = useRef(null);
- var parentContainRef = useRef(null);
- var isMessageSent = getIsSentFromStatus$3(status);
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- mousehover = _useState2[0],
- setMousehover = _useState2[1];
-
- var _useState3 = useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- moreActive = _useState4[0],
- setMoreActive = _useState4[1];
-
- var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React.createElement("div", {
- ref: messageRef,
- className: OUTGOING_OG_MESSAGE,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$3 : NORAML_PADDING,
- paddingBottom: chainBottom ? GROUPING_PADDING$3 : NORAML_PADDING
- }
- }, React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "--inner")
- }, React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "--left-padding")
- }, React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__more"),
- ref: parentContainRef
- }, React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "".concat(OUTGOING_OG_MESSAGE, "__more__menu"),
- ref: parentRefMenus,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: parentRefMenus // for catching location(x, y) of MenuItems
- ,
- parentContainRef: parentContainRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, isMessageSent && React.createElement(MenuItem, {
- className: "".concat(OUTGOING_OG_MESSAGE, "__more__menu__copy"),
- onClick: function onClick() {
- copyToClipboard$1(message.message);
- closeDropdown();
- }
- }, "Copy"), isMessageSent && React.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showEdit(true);
- closeDropdown();
- }
- }, "Edit"), message && message.isResendable && message.isResendable() && React.createElement(MenuItem, {
- onClick: function onClick() {
- resendMessage(message);
- closeDropdown();
- }
- }, "Resend"), React.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showRemove(true);
- closeDropdown();
- }
- }, "Delete"));
- }
- }), isMessageSent && useReaction && emojiAllMap.size > 0 && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "".concat(OUTGOING_OG_MESSAGE, "__more__add-reaction"),
- ref: parentRefReactions,
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: parentRefReactions,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })), !chainBottom && !(mousehover || moreActive) && React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__message-status")
- }, React.createElement(MessageStatus, {
- message: message,
- status: status
- }))), React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "--body")
- }, React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__text-balloon")
- }, React.createElement(MemoizedMessageText, null)), React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail ").concat(checkOGIsEnalbed(message) ? '' : "".concat(OUTGOING_OG_MESSAGE, "__thumbnail--disabled")),
- onClick: openLink,
- onKeyDown: openLink,
- role: "button",
- tabIndex: 0
- }, defaultImage && React.createElement(ImageRenderer, {
- url: defaultImage.url || '',
- alt: defaultImage.alt,
- className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail__image"),
- width: "320px",
- height: "180px",
- defaultComponent: React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail__image__placeholder")
- }, React.createElement(Icon, {
- width: "56px",
- height: "56px",
- type: IconTypes.NO_THUMBNAIL
- }))
- })), React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag ").concat(checkOGIsEnalbed(message) ? '' : "".concat(OUTGOING_OG_MESSAGE, "__og-tag--disabled")),
- onClick: openLink,
- onKeyDown: openLink,
- role: "button",
- tabIndex: 0
- }, ogMetaData.title && React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__title")
- }, React.createElement(Label, {
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1
- }, ogMetaData.title)), ogMetaData.description && React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__description")
- }, React.createElement(Label, {
- type: LabelTypography.BODY_2,
- color: LabelColors.ONBACKGROUND_1,
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__description__label")
- }, ogMetaData.description)), ogMetaData.url && React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__url")
- }, React.createElement(Label, {
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2,
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__url__label")
- }, ogMetaData.url)), showEmojiReactions && React.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__emoji-reactions--wrapper"),
- onClick: function onClick(event) {
- return event.stopPropagation();
- },
- onKeyDown: function onKeyDown(event) {
- return event.stopPropagation();
- },
- role: "button",
- tabIndex: 0
- }, React.createElement(EmojiReactions, {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__emoji-reactions"),
- userId: userId,
- message: message,
- membersMap: membersMap,
- emojiAllMap: emojiAllMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- }))))));
-}
-
-function IncomingOGMessage(props) {
- var userId = props.userId,
- message = props.message,
- openLink = props.openLink,
- chainTop = props.chainTop,
- membersMap = props.membersMap,
- chainBottom = props.chainBottom,
- useReaction = props.useReaction,
- emojiAllMap = props.emojiAllMap,
- toggleReaction = props.toggleReaction,
- memoizedMessageText = props.memoizedMessageText,
- memoizedEmojiListItems = props.memoizedEmojiListItems;
- var ogMetaData = message.ogMetaData;
- var defaultImage = ogMetaData.defaultImage;
- var MemoizedMessageText = memoizedMessageText;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var messageRef = useRef(null);
- var avatarRef = useRef(null);
- var parentRefReactions = useRef(null);
- var parentRefMenus = useRef(null);
- var parentContainRef = useRef(null);
-
- var _React$useContext = React.useContext(UserProfileContext),
- disableUserProfile = _React$useContext.disableUserProfile,
- renderUserProfile = _React$useContext.renderUserProfile;
-
- var _useState5 = useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- mousehover = _useState6[0],
- setMousehover = _useState6[1];
-
- var _useState7 = useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- moreActive = _useState8[0],
- setMoreActive = _useState8[1];
-
- var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React.createElement("div", {
- ref: messageRef,
- className: INCOMING_OG_MESSAGE,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$3 : NORAML_PADDING,
- paddingBottom: chainBottom ? GROUPING_PADDING$3 : NORAML_PADDING
- }
- }, React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "--inner")
- }, React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "--body")
- }, !chainBottom && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(Avatar$1, {
- ref: avatarRef,
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- className: "".concat(INCOMING_OG_MESSAGE, "__avatar"),
- src: getSenderProfileUrl$2(message),
- width: "28px",
- height: "28px",
- alt: "sender-profile-image"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: message.sender,
- close: closeDropdown
- }) : React.createElement(ConnectedUserProfile, {
- user: message.sender,
- onSuccess: closeDropdown
- }));
- }
- }), !chainTop && React.createElement(Label, {
- className: "".concat(INCOMING_OG_MESSAGE, "__sender-name"),
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, getSenderName$2(message)), React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__text-balloon")
- }, React.createElement(MemoizedMessageText, null)), React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail ").concat(checkOGIsEnalbed(message) ? '' : "".concat(INCOMING_OG_MESSAGE, "__thumbnail--disabled")),
- onClick: openLink,
- onKeyDown: openLink,
- role: "button",
- tabIndex: 0
- }, defaultImage && React.createElement(ImageRenderer, {
- url: defaultImage.url || '',
- alt: defaultImage.alt || '',
- className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail__image"),
- width: "320px",
- height: "180px",
- defaultComponent: React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail__image__placeholder")
- }, React.createElement(Icon, {
- width: "56px",
- height: "56px",
- type: IconTypes.NO_THUMBNAIL
- }))
- })), React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag ").concat(checkOGIsEnalbed(message) ? '' : "".concat(INCOMING_OG_MESSAGE, "__og-tag--disabled")),
- onClick: openLink,
- onKeyDown: openLink,
- role: "button",
- tabIndex: 0
- }, ogMetaData.title && React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__title")
- }, React.createElement(Label, {
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1
- }, ogMetaData.title)), ogMetaData.description && React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__description")
- }, React.createElement(Label, {
- type: LabelTypography.BODY_2,
- color: LabelColors.ONBACKGROUND_1,
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__description__label")
- }, ogMetaData.description)), ogMetaData.url && React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__url")
- }, React.createElement(Label, {
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2,
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__url__label")
- }, ogMetaData.url)), showEmojiReactions && React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__emoji-reactions--wrapper"),
- onClick: function onClick(event) {
- return event.stopPropagation();
- },
- onKeyDown: function onKeyDown(event) {
- return event.stopPropagation();
- },
- role: "button",
- tabIndex: 0
- }, React.createElement(EmojiReactions, {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__emoji-reactions"),
- userId: userId,
- message: message,
- membersMap: membersMap,
- emojiAllMap: emojiAllMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- })))), React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "--right-padding")
- }, !chainBottom && !(mousehover || moreActive) && React.createElement(Label, {
- className: "".concat(INCOMING_OG_MESSAGE, "__sent-at"),
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt$5(message)), React.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__more"),
- ref: parentContainRef
- }, showReactionAddButton && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: parentRefReactions,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MemoizedEmojiListItems, {
- parentRef: parentRefReactions,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- message: message,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- }), React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- ref: parentRefMenus,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentRef: parentRefMenus,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown
- }, React.createElement(MenuItem, {
- className: "".concat(INCOMING_OG_MESSAGE, "__more__menu__copy"),
- onClick: function onClick() {
- copyToClipboard$1(message.message);
- closeDropdown();
- }
- }, "Copy"));
- }
- })))));
-}
-
-var noop$6 = function noop() {};
-
-OGMessageSwitch.propTypes = {
- isByMe: PropTypes.bool.isRequired,
- userId: PropTypes.string.isRequired,
- message: PropTypes.shape({
- message: PropTypes.string,
- sender: PropTypes.shape({}),
- ogMetaData: PropTypes.shape({
- title: PropTypes.string,
- description: PropTypes.string,
- url: PropTypes.string,
- defaultImage: PropTypes.shape({
- url: PropTypes.string,
- alt: PropTypes.string
- })
- }),
- reactions: PropTypes.array,
- updatedAt: PropTypes.number
- }).isRequired,
- useReaction: PropTypes.bool.isRequired,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- status: PropTypes.string,
- disabled: PropTypes.bool,
- showEdit: PropTypes.func,
- showRemove: PropTypes.func,
- resendMessage: PropTypes.func,
- toggleReaction: PropTypes.func,
- membersMap: PropTypes.instanceOf(Map),
- emojiAllMap: PropTypes.instanceOf(Map),
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool,
- chainBottom: PropTypes.bool
-};
-OGMessageSwitch.defaultProps = {
- className: '',
- status: '',
- disabled: false,
- showEdit: noop$6,
- showRemove: noop$6,
- resendMessage: noop$6,
- toggleReaction: noop$6,
- membersMap: new Map(),
- emojiAllMap: new Map(),
- memoizedEmojiListItems: noop$6,
- chainTop: false,
- chainBottom: false
-};
-OutgoingOGMessage.propTypes = {
- status: PropTypes.string,
- userId: PropTypes.string.isRequired,
- message: PropTypes.shape({
- message: PropTypes.string,
- ogMetaData: PropTypes.shape({
- title: PropTypes.string,
- description: PropTypes.string,
- url: PropTypes.string,
- defaultImage: PropTypes.shape({
- url: PropTypes.string,
- alt: PropTypes.string
- })
- }),
- reactions: PropTypes.array,
- updatedAt: PropTypes.number,
- isResendable: PropTypes.func,
- errorCode: PropTypes.number
- }).isRequired,
- disabled: PropTypes.bool.isRequired,
- openLink: PropTypes.func.isRequired,
- showEdit: PropTypes.func.isRequired,
- showRemove: PropTypes.func.isRequired,
- membersMap: PropTypes.instanceOf(Map).isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- useReaction: PropTypes.bool.isRequired,
- resendMessage: PropTypes.func.isRequired,
- toggleReaction: PropTypes.func.isRequired,
- memoizedMessageText: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func.isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-OutgoingOGMessage.defaultProps = {
- status: ''
-};
-IncomingOGMessage.propTypes = {
- userId: PropTypes.string.isRequired,
- message: PropTypes.shape({
- message: PropTypes.string,
- sender: PropTypes.shape({}),
- ogMetaData: PropTypes.shape({
- title: PropTypes.string,
- description: PropTypes.string,
- url: PropTypes.string,
- defaultImage: PropTypes.shape({
- url: PropTypes.string,
- alt: PropTypes.string
- })
- }),
- reactions: PropTypes.array,
- updatedAt: PropTypes.number
- }).isRequired,
- openLink: PropTypes.func.isRequired,
- membersMap: PropTypes.instanceOf(Map).isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- useReaction: PropTypes.bool.isRequired,
- toggleReaction: PropTypes.func.isRequired,
- memoizedMessageText: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func.isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-
-function MessageHoc(_ref) {
- var _MessageTypes$ADMIN$M;
-
- var message = _ref.message,
- userId = _ref.userId,
- disabled = _ref.disabled,
- editDisabled = _ref.editDisabled,
- hasSeperator = _ref.hasSeperator,
- deleteMessage = _ref.deleteMessage,
- updateMessage = _ref.updateMessage,
- status = _ref.status,
- resendMessage = _ref.resendMessage,
- useReaction = _ref.useReaction,
- chainTop = _ref.chainTop,
- chainBottom = _ref.chainBottom,
- emojiAllMap = _ref.emojiAllMap,
- membersMap = _ref.membersMap,
- toggleReaction = _ref.toggleReaction,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems;
- var _message$sender = message.sender,
- sender = _message$sender === void 0 ? {} : _message$sender;
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showEdit = _useState2[0],
- setShowEdit = _useState2[1];
-
- var _useState3 = useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- showRemove = _useState4[0],
- setShowRemove = _useState4[1];
-
- var _useState5 = useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- showFileViewer = _useState6[0],
- setShowFileViewer = _useState6[1];
-
- var editMessageInputRef = useRef(null);
- var isByMe = userId === sender.userId || message.requestState === 'pending' || message.requestState === 'failed';
-
- if (showEdit) {
- return React.createElement(MessageInput, {
- isEdit: true,
- disabled: editDisabled,
- ref: editMessageInputRef,
- name: message.messageId,
- onSendMessage: updateMessage,
- onCancelEdit: function onCancelEdit() {
- setShowEdit(false);
- },
- value: message.message
- });
- }
-
- return React.createElement("div", {
- className: "sendbird-msg-hoc sendbird-msg--scroll-ref"
- }, hasSeperator && React.createElement(DateSeparator, null, React.createElement(Label, {
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, format(message.createdAt, 'MMMM dd, yyyy'))), (_MessageTypes$ADMIN$M = {}, _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.ADMIN, React.createElement(AdminMessage, {
- message: message
- })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.FILE, React.createElement(MessageSwitch, {
- message: message,
- userId: userId,
- disabled: disabled,
- isByMe: isByMe,
- showRemove: setShowRemove,
- resendMessage: resendMessage,
- status: status,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.OG, React.createElement(OGMessageSwitch, {
- message: message,
- status: status,
- isByMe: isByMe,
- userId: userId,
- showEdit: setShowEdit,
- disabled: disabled,
- showRemove: setShowRemove,
- resendMessage: resendMessage,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.THUMBNAIL, React.createElement(ThumbnailMessage, {
- disabled: disabled,
- message: message,
- userId: userId,
- isByMe: isByMe,
- showRemove: setShowRemove,
- resendMessage: resendMessage,
- onClick: setShowFileViewer,
- status: status,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.USER, React.createElement(Message, {
- message: message,
- disabled: disabled,
- isByMe: isByMe,
- userId: userId,
- showEdit: setShowEdit,
- showRemove: setShowRemove,
- resendMessage: resendMessage,
- status: status,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- })), _MessageTypes$ADMIN$M)[getMessageType(message)], showRemove && React.createElement(RemoveMessage, {
- onCloseModal: function onCloseModal() {
- return setShowRemove(false);
- },
- onDeleteMessage: function onDeleteMessage() {
- deleteMessage(message);
- }
- }), showFileViewer && React.createElement(FileViewer, {
- onClose: function onClose() {
- return setShowFileViewer(false);
- },
- message: message,
- onDelete: function onDelete() {
- deleteMessage(message, function () {
- setShowFileViewer(false);
- });
- },
- isByMe: isByMe
- }), !(message.isFileMessage && message.isFileMessage() || message.messageType === 'file') && !(message.isAdminMessage && message.isAdminMessage()) && !(message.isUserMessage && message.isUserMessage() || message.messageType === 'user') && !showFileViewer && React.createElement(UnknownMessage, {
- message: message,
- status: status,
- isByMe: isByMe,
- showRemove: setShowRemove,
- chainTop: chainTop,
- chainBottom: chainBottom
- }));
-}
-MessageHoc.propTypes = {
- userId: PropTypes.string,
- message: PropTypes.shape({
- isFileMessage: PropTypes.func,
- isAdminMessage: PropTypes.func,
- isUserMessage: PropTypes.func,
- isDateSeperator: PropTypes.func,
- // should be a number, but there's a bug in SDK shich returns string
- messageId: PropTypes.number,
- type: PropTypes.string,
- createdAt: PropTypes.number,
- message: PropTypes.string,
- requestState: PropTypes.string,
- messageType: PropTypes.string,
- sender: PropTypes.shape({
- userId: PropTypes.string
- }),
- ogMetaData: PropTypes.shape({})
- }),
- hasSeperator: PropTypes.bool,
- disabled: PropTypes.bool,
- editDisabled: PropTypes.bool,
- deleteMessage: PropTypes.func.isRequired,
- updateMessage: PropTypes.func.isRequired,
- resendMessage: PropTypes.func.isRequired,
- status: PropTypes.string,
- useReaction: PropTypes.bool.isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- membersMap: PropTypes.instanceOf(Map).isRequired,
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func
-};
-MessageHoc.defaultProps = {
- userId: '',
- editDisabled: false,
- message: {},
- hasSeperator: false,
- disabled: false,
- status: '',
- toggleReaction: function toggleReaction() {},
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-
-var ConversationScroll =
-/*#__PURE__*/
-function (_Component) {
- _inherits(ConversationScroll, _Component);
-
- function ConversationScroll() {
- var _getPrototypeOf2;
-
- var _this;
-
- _classCallCheck(this, ConversationScroll);
-
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
-
- _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ConversationScroll)).call.apply(_getPrototypeOf2, [this].concat(args)));
-
- _defineProperty(_assertThisInitialized(_this), "onScroll", function (e) {
- var _this$props = _this.props,
- scrollRef = _this$props.scrollRef,
- hasMore = _this$props.hasMore,
- messagesDispatcher = _this$props.messagesDispatcher,
- onScroll = _this$props.onScroll,
- currentGroupChannel = _this$props.currentGroupChannel;
- var element = e.target;
- var scrollTop = element.scrollTop,
- clientHeight = element.clientHeight,
- scrollHeight = element.scrollHeight;
-
- if (scrollTop === 0) {
- if (!hasMore) {
- return;
- }
-
- var nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');
- var first = nodes[0];
- onScroll(function (_ref) {
- var _ref2 = _slicedToArray(_ref, 1),
- messages = _ref2[0];
-
- if (messages) {
- // https://github.com/scabbiaza/react-scroll-position-on-updating-dom
- first.scrollIntoView();
- }
- });
- }
-
- setTimeout(function () {
- // mark as read if scroll is at end
- if (clientHeight + scrollTop === scrollHeight) {
- messagesDispatcher({
- type: MARK_AS_READ
- });
- currentGroupChannel.markAsRead();
- }
- }, 500);
- });
-
- return _this;
- }
-
- _createClass(ConversationScroll, [{
- key: "render",
- value: function render() {
- var _this$props2 = this.props,
- userId = _this$props2.userId,
- disabled = _this$props2.disabled,
- scrollRef = _this$props2.scrollRef,
- readStatus = _this$props2.readStatus,
- membersMap = _this$props2.membersMap,
- initialized = _this$props2.initialized,
- allMessages = _this$props2.allMessages,
- useReaction = _this$props2.useReaction,
- emojiAllMap = _this$props2.emojiAllMap,
- editDisabled = _this$props2.editDisabled,
- deleteMessage = _this$props2.deleteMessage,
- updateMessage = _this$props2.updateMessage,
- resendMessage = _this$props2.resendMessage,
- renderChatItem = _this$props2.renderChatItem,
- emojiContainer = _this$props2.emojiContainer,
- toggleReaction = _this$props2.toggleReaction,
- useMessageGrouping = _this$props2.useMessageGrouping,
- currentGroupChannel = _this$props2.currentGroupChannel,
- memoizedEmojiListItems = _this$props2.memoizedEmojiListItems;
- return React.createElement("div", {
- className: "sendbird-conversation__messages"
- }, React.createElement("div", {
- ref: scrollRef,
- className: "sendbird-conversation__scroll-container",
- onScroll: this.onScroll
- }, React.createElement("div", {
- className: "sendbird-conversation__padding"
- }), React.createElement("div", {
- className: "sendbird-conversation__messages-padding"
- }, initialized && allMessages.map(function (m, idx) {
- var previousMessage = allMessages[idx - 1];
- var nextMessage = allMessages[idx + 1];
-
- var _ref3 = useMessageGrouping ? compareMessagesForGrouping(previousMessage, m, nextMessage) : [false, false],
- _ref4 = _slicedToArray(_ref3, 2),
- chainTop = _ref4[0],
- chainBottom = _ref4[1];
-
- var previousMessageCreatedAt = previousMessage && previousMessage.createdAt;
- var currentCreatedAt = m.createdAt; // https://stackoverflow.com/a/41855608
-
- var hasSeperator = !(previousMessageCreatedAt && isSameDay(currentCreatedAt, previousMessageCreatedAt));
-
- if (renderChatItem) {
- return React.createElement("div", {
- key: m.messageId || m.reqId,
- className: "sendbird-msg--scroll-ref"
- }, renderChatItem({
- message: m,
- channel: currentGroupChannel,
- onDeleteMessage: deleteMessage,
- onUpdateMessage: updateMessage,
- onResendMessage: resendMessage,
- emojiContainer: emojiContainer
- }));
- }
-
- return React.createElement(MessageHoc, {
- key: m.messageId || m.reqId,
- userId: userId,
- status: readStatus[m.messageId] || getParsedStatus(m, currentGroupChannel) // show status for pending/failed messages
- ,
- message: m,
- disabled: disabled,
- membersMap: membersMap,
- chainTop: chainTop,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- editDisabled: editDisabled,
- hasSeperator: hasSeperator,
- chainBottom: chainBottom,
- updateMessage: updateMessage,
- deleteMessage: deleteMessage,
- resendMessage: resendMessage,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- });
- }))));
- }
- }]);
-
- return ConversationScroll;
-}(Component);
-ConversationScroll.propTypes = {
- // https://stackoverflow.com/a/52646941
- scrollRef: PropTypes.shape({
- current: PropTypes.oneOfType([PropTypes.element, PropTypes.shape({})])
- }).isRequired,
- hasMore: PropTypes.bool,
- messagesDispatcher: PropTypes.func.isRequired,
- onScroll: PropTypes.func,
- initialized: PropTypes.bool,
- editDisabled: PropTypes.bool,
- disabled: PropTypes.bool,
- userId: PropTypes.string,
- allMessages: PropTypes.arrayOf(PropTypes.shape({
- createdAt: PropTypes.number
- })).isRequired,
- deleteMessage: PropTypes.func.isRequired,
- resendMessage: PropTypes.func.isRequired,
- updateMessage: PropTypes.func.isRequired,
- readStatus: PropTypes.shape({}).isRequired,
- currentGroupChannel: PropTypes.shape({
- markAsRead: PropTypes.func,
- members: PropTypes.arrayOf(PropTypes.shape({}))
- }).isRequired,
- renderChatItem: PropTypes.element,
- useReaction: PropTypes.bool,
- emojiContainer: PropTypes.shape({}),
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- useMessageGrouping: PropTypes.bool,
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func
-};
-ConversationScroll.defaultProps = {
- hasMore: false,
- editDisabled: false,
- disabled: false,
- initialized: false,
- userId: '',
- renderChatItem: null,
- onScroll: null,
- useReaction: true,
- emojiContainer: {},
- emojiAllMap: new Map(),
- membersMap: new Map(),
- useMessageGrouping: true,
- toggleReaction: function toggleReaction() {},
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-
-function Notification(_ref) {
- var count = _ref.count,
- time = _ref.time,
- onClick = _ref.onClick;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var timeArray = time.split(' ');
- timeArray.splice(-2, 0, stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__ON);
- return (// eslint-disable-next-line
- React.createElement("div", {
- className: "sendbird-notification",
- onClick: onClick
- }, React.createElement(Label, {
- className: "sendbird-notification__text",
- color: LabelColors.ONCONTENT_1,
- type: LabelTypography.CAPTION_2
- }, "".concat(count, " "), stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE, " ".concat(timeArray.join(' '))), React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.SHEVRON_DOWN,
- fillColor: IconColors.CONTENT
- }))
- );
-}
-Notification.propTypes = {
- count: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- time: PropTypes.string,
- onClick: PropTypes.func.isRequired
-};
-Notification.defaultProps = {
- count: 0,
- time: ''
-};
-
-var FrozenNotification = function FrozenNotification() {
- var stringSet = useContext(LocalizationContext).stringSet;
- return React.createElement("div", {
- className: "sendbird-notification sendbird-notification--frozen"
- }, React.createElement(Label, {
- className: "sendbird-notification__text",
- type: LabelTypography.CAPTION_2
- }, stringSet.CHANNEL_FROZEN));
-};
-
-var TypingIndicatorText = function TypingIndicatorText(_ref) {
- var members = _ref.members;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- if (!members || members.length === 0) {
- return '';
- }
-
- if (members && members.length === 1) {
- return "".concat(members[0].nickname, " ").concat(stringSet.TYPING_INDICATOR__IS_TYPING);
- }
-
- if (members && members.length === 2) {
- return "".concat(members[0].nickname, " ").concat(stringSet.TYPING_INDICATOR__AND, " ").concat(members[1].nickname, " ").concat(stringSet.TYPING_INDICATOR__ARE_TYPING);
- }
-
- return stringSet.TYPING_INDICATOR__MULTIPLE_TYPING;
-};
-
-function TypingIndicator(_ref2) {
- var channelUrl = _ref2.channelUrl,
- sb = _ref2.sb,
- logger = _ref2.logger;
-
- var _useState = useState(uuidv4()),
- _useState2 = _slicedToArray(_useState, 2),
- handlerId = _useState2[0],
- setHandlerId = _useState2[1];
-
- var _useState3 = useState([]),
- _useState4 = _slicedToArray(_useState3, 2),
- typingMembers = _useState4[0],
- setTypingMembers = _useState4[1];
-
- useEffect(function () {
- if (sb && sb.ChannelHandler) {
- sb.removeChannelHandler(handlerId);
- var newHandlerId = uuidv4();
- var handler = new sb.ChannelHandler(); // there is a possible warning in here - setState called after unmount
-
- handler.onTypingStatusUpdated = function (groupChannel) {
- logger.info('Channel > Typing Indicator: onTypingStatusUpdated', groupChannel);
- var members = groupChannel.getTypingMembers();
-
- if (groupChannel.url === channelUrl) {
- setTypingMembers(members);
- }
- };
-
- sb.addChannelHandler(newHandlerId, handler);
- setHandlerId(newHandlerId);
- }
-
- return function () {
- setTypingMembers([]);
-
- if (sb && sb.removeChannelHandler) {
- sb.removeChannelHandler(handlerId);
- }
- };
- }, [channelUrl]);
- return React.createElement(Label, {
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, React.createElement(TypingIndicatorText, {
- members: typingMembers
- }));
-}
-
-TypingIndicator.propTypes = {
- channelUrl: PropTypes.string.isRequired,
- sb: PropTypes.shape({
- ChannelHandler: PropTypes.func,
- removeChannelHandler: PropTypes.func,
- addChannelHandler: PropTypes.func
- }).isRequired,
- logger: PropTypes.shape({
- info: PropTypes.func
- }).isRequired
-};
-
-// Logic required to handle message input rendering
-
-var MessageInputWrapper = function MessageInputWrapper(_a, ref) {
- var channel = _a.channel,
- user = _a.user,
- onSendMessage = _a.onSendMessage,
- onFileUpload = _a.onFileUpload,
- renderMessageInput = _a.renderMessageInput,
- isOnline = _a.isOnline,
- initialized = _a.initialized;
- var stringSet = useContext(LocalizationContext).stringSet;
- var disabled = !initialized || isDisabledBecauseFrozen(channel) || isDisabledBecauseMuted(channel) || !isOnline;
- var isOperator$1 = isOperator(channel);
- var isBroadcast = channel.isBroadcast; // custom message
-
- if (renderMessageInput) {
- return renderMessageInput({
- channel: channel,
- user: user,
- disabled: disabled
- });
- } // broadcast channel + not operator
-
-
- if (isBroadcast && !isOperator$1) {
- return null;
- } // other conditions
-
-
- return React.createElement(MessageInput, {
- placeholder: isDisabledBecauseFrozen(channel) && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED || isDisabledBecauseMuted(channel) && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED,
- ref: ref,
- disabled: disabled,
- onStartTyping: function onStartTyping() {
- channel.startTyping();
- },
- onSendMessage: onSendMessage,
- onFileUpload: onFileUpload
- });
-};
-
-var MessageInputWrapper$1 = React.forwardRef(MessageInputWrapper);
-
-function ConnectionStatus() {
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.createElement("div", {
- className: "sendbird-conversation__connection-status"
- }, React.createElement(Label, {
- type: LabelTypography.BODY_2,
- color: LabelColors.ONBACKGROUND_2
- }, stringSet.TRYING_TO_CONNECT), React.createElement(Icon, {
- type: IconTypes.DISCONNECTED,
- fillColor: IconColors.SENT,
- height: "14px",
- width: "14px"
- }));
-}
-
-var prettyDate = function prettyDate(date) {
- return formatDistanceToNowStrict(date, {
- addSuffix: true
- });
-};
-var getOthersLastSeenAt = function getOthersLastSeenAt(channel) {
- if (!channel || !channel.getReadStatus || !channel.members || channel.members.length !== 2) {
- return '';
- }
-
- var lastSeenList = _toConsumableArray(Object.values(channel.getReadStatus()));
-
- var lastSeenAt = lastSeenList.length > 0 ? lastSeenList[0].last_seen_at : 0;
-
- if (lastSeenAt === 0) {
- return '';
- }
-
- return prettyDate(lastSeenAt);
-};
-var getChannelTitle$1 = function getChannelTitle() {
- var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var currentUserId = arguments.length > 1 ? arguments[1] : undefined;
- var stringSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : LabelStringSet;
-
- if (!channel || !channel.name && !channel.members) {
- return stringSet.NO_TITLE;
- }
-
- if (channel.name && channel.name !== 'Group Channel') {
- return channel.name;
- }
-
- if (channel.members.length === 1) {
- return stringSet.NO_MEMBERS;
- }
-
- return channel.members.filter(function (_ref) {
- var userId = _ref.userId;
- return userId !== currentUserId;
- }).map(function (_ref2) {
- var nickname = _ref2.nickname;
- return nickname || stringSet.NO_NAME;
- }).join(', ');
-};
-
-function AutoRefresh(_ref) {
- var repeatFunc = _ref.repeatFunc;
-
- var _useState = useState(repeatFunc()),
- _useState2 = _slicedToArray(_useState, 2),
- label = _useState2[0],
- setLabel = _useState2[1];
-
- useEffect(function () {
- var interval = setInterval(function () {
- if (label !== repeatFunc()) {
- setLabel(repeatFunc());
- }
- }, 10000);
- return function () {
- clearInterval(interval);
- };
- }, []);
- return React.createElement("div", {
- className: "sendbird-repeat-text"
- }, label);
-}
-AutoRefresh.propTypes = {
- repeatFunc: PropTypes.func.isRequired
-};
-
-function ChatHeader(props) {
- var currentGroupChannel = props.currentGroupChannel,
- currentUser = props.currentUser,
- title = props.title,
- subTitle = props.subTitle,
- isActive = props.isActive,
- isMuted = props.isMuted,
- onActionClick = props.onActionClick,
- theme = props.theme;
- var userId = currentUser.userId;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.createElement("div", {
- className: "sendbird-chat-header"
- }, React.createElement("div", {
- className: "sendbird-chat-header__left"
- }, React.createElement(ChannelAvatar, {
- theme: theme,
- channel: currentGroupChannel,
- userId: userId,
- height: 32,
- width: 32
- }), React.createElement(Label, {
- className: "sendbird-chat-header__title",
- type: LabelTypography.H_2,
- color: LabelColors.ONBACKGROUND_1
- }, title || getChannelTitle$1(currentGroupChannel, userId, stringSet)), typeof isActive === 'string' && isActive === 'true' || typeof isActive === 'boolean' && isActive ? React.createElement("div", {
- className: "sendbird-chat-header__active"
- }) : null, React.createElement(Label, {
- className: "sendbird-chat-header__subtitle",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_2
- }, subTitle || React.createElement(AutoRefresh, {
- repeatFunc: function repeatFunc() {
- return getOthersLastSeenAt(currentGroupChannel);
- }
- }))), React.createElement("div", {
- className: "sendbird-chat-header__right"
- }, typeof isMuted === 'string' && isMuted === 'true' || typeof isMuted === 'boolean' && isMuted ? React.createElement(Icon, {
- className: "sendbird-chat-header__mute",
- type: IconTypes.MUTE,
- width: "24px",
- height: "24px"
- }) : null, React.createElement(IconButton, {
- className: "sendbird-chat-header__info",
- width: "32px",
- height: "32px",
- onClick: onActionClick
- }, React.createElement(Icon, {
- type: IconTypes.INFO,
- fillColor: IconColors.PRIMARY,
- width: "24px",
- height: "24px"
- }))));
-}
-ChatHeader.propTypes = {
- currentGroupChannel: PropTypes.shape({
- members: PropTypes.arrayOf(PropTypes.shape({})),
- coverUrl: PropTypes.string
- }),
- theme: PropTypes.string,
- currentUser: PropTypes.shape({
- userId: PropTypes.string
- }),
- title: PropTypes.string,
- subTitle: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
- isActive: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
- isMuted: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
- onActionClick: PropTypes.func
-};
-ChatHeader.defaultProps = {
- currentGroupChannel: {},
- title: '',
- theme: 'light',
- subTitle: '',
- isActive: false,
- isMuted: false,
- currentUser: {},
- onActionClick: function onActionClick() {}
-};
-
-var noop$7 = function noop() {};
-
-var ConversationPanel = function ConversationPanel(props) {
- var channelUrl = props.channelUrl,
- _props$stores = props.stores,
- sdkStore = _props$stores.sdkStore,
- userStore = _props$stores.userStore,
- _props$config = props.config,
- userId = _props$config.userId,
- logger = _props$config.logger,
- pubSub = _props$config.pubSub,
- isOnline = _props$config.isOnline,
- theme = _props$config.theme,
- reconnect = props.dispatchers.reconnect,
- _props$queries = props.queries,
- queries = _props$queries === void 0 ? {} : _props$queries,
- useReaction = props.useReaction,
- renderChatItem = props.renderChatItem,
- renderChatHeader = props.renderChatHeader,
- renderMessageInput = props.renderMessageInput,
- useMessageGrouping = props.useMessageGrouping,
- onChatHeaderActionClick = props.onChatHeaderActionClick,
- onBeforeSendUserMessage = props.onBeforeSendUserMessage,
- onBeforeSendFileMessage = props.onBeforeSendFileMessage,
- onBeforeUpdateUserMessage = props.onBeforeUpdateUserMessage;
- var sdk = sdkStore.sdk;
- var config = props.config;
- var sdkError = sdkStore.error;
- var sdkInit = sdkStore.initialized;
- var user = userStore.user;
-
- if (queries.messageListQuery) {
- // eslint-disable-next-line no-console
- console.warn('messageListQuery will be deprecared in v1.3.0, please use messageListParams instead');
- }
-
- var userFilledMessageListQuery = queries.messageListParams || queries.messageListQuery;
-
- var _useReducer = useReducer(reducer$3, messagesInitialState),
- _useReducer2 = _slicedToArray(_useReducer, 2),
- messagesStore = _useReducer2[0],
- messagesDispatcher = _useReducer2[1];
-
- var scrollRef = useRef(null);
- var allMessages = messagesStore.allMessages,
- loading = messagesStore.loading,
- hasMore = messagesStore.hasMore,
- initialized = messagesStore.initialized,
- unreadCount = messagesStore.unreadCount,
- disableUserProfile = messagesStore.disableUserProfile,
- renderUserProfile = messagesStore.renderUserProfile,
- unreadSince = messagesStore.unreadSince,
- invalidChannel = messagesStore.invalidChannel,
- _messagesStore$curren = messagesStore.currentGroupChannel,
- currentGroupChannel = _messagesStore$curren === void 0 ? {} : _messagesStore$curren,
- lastMessageTimeStamp = messagesStore.lastMessageTimeStamp,
- emojiContainer = messagesStore.emojiContainer,
- readStatus = messagesStore.readStatus;
- var isFrozen = currentGroupChannel.isFrozen,
- isBroadcast = currentGroupChannel.isBroadcast;
- var _sdk$appInfo = sdk.appInfo,
- appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
- var usingReaction = appInfo.isUsingReaction && !isBroadcast || useReaction || false;
- var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
- var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
- var emojiAllMap = useMemo(function () {
- return usingReaction ? getAllEmojisMapFromEmojiContainer(emojiContainer) : new Map();
- }, [emojiContainer]);
- var emojiAllList = useMemo(function () {
- return usingReaction ? getAllEmojisFromEmojiContainer(emojiContainer) : [];
- }, [emojiContainer]);
- var nicknamesMap = useMemo(function () {
- return usingReaction ? getNicknamesMapFromMembers(currentGroupChannel.members) : new Map();
- }, [currentGroupChannel.members]);
- var onScrollCallback = useScrollCallback({
- currentGroupChannel: currentGroupChannel,
- lastMessageTimeStamp: lastMessageTimeStamp,
- userFilledMessageListQuery: userFilledMessageListQuery
- }, {
- hasMore: hasMore,
- logger: logger,
- messagesDispatcher: messagesDispatcher,
- sdk: sdk
- });
- var toggleReaction = useToggleReactionCallback({
- currentGroupChannel: currentGroupChannel
- }, {
- logger: logger
- });
- var memoizedEmojiListItems = useMemoizedEmojiListItems({
- emojiContainer: emojiContainer,
- toggleReaction: toggleReaction
- }, {
- useReaction: usingReaction,
- logger: logger,
- userId: userId,
- emojiAllList: emojiAllList
- }); // to create message-datasource
-
- useSetChannel({
- channelUrl: channelUrl,
- sdkInit: sdkInit
- }, {
- messagesDispatcher: messagesDispatcher,
- sdk: sdk,
- logger: logger
- }); // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher
-
- useHandleChannelEvents({
- currentGroupChannel: currentGroupChannel,
- sdkInit: sdkInit,
- userId: userId
- }, {
- messagesDispatcher: messagesDispatcher,
- sdk: sdk,
- logger: logger
- });
- useInitialMessagesFetch({
- currentGroupChannel: currentGroupChannel,
- userFilledMessageListQuery: userFilledMessageListQuery
- }, {
- sdk: sdk,
- logger: logger,
- messagesDispatcher: messagesDispatcher
- }); // handles API calls from withSendbird
-
- useEffect(function () {
- var subScriber = pubSubHandler$1(channelUrl, pubSub, messagesDispatcher);
- return function () {
- pubSubHandleRemover$1(subScriber);
- };
- }, [channelUrl, sdkInit]); // to create initial read status
-
- useSetReadStatus({
- allMessages: allMessages,
- currentGroupChannel: currentGroupChannel
- }, {
- messagesDispatcher: messagesDispatcher,
- sdk: sdk,
- logger: logger
- }); // handling connection breaks
-
- useHandleReconnect({
- isOnline: isOnline
- }, {
- logger: logger,
- sdk: sdk,
- currentGroupChannel: currentGroupChannel,
- messagesDispatcher: messagesDispatcher,
- userFilledMessageListQuery: userFilledMessageListQuery
- });
- var deleteMessage = useDeleteMessageCallback({
- currentGroupChannel: currentGroupChannel,
- messagesDispatcher: messagesDispatcher
- }, {
- logger: logger
- });
- var updateMessage = useUpdateMessageCallback({
- currentGroupChannel: currentGroupChannel,
- messagesDispatcher: messagesDispatcher,
- onBeforeUpdateUserMessage: onBeforeUpdateUserMessage
- }, {
- logger: logger,
- sdk: sdk,
- pubSub: pubSub
- });
- var resendMessage = useResendMessageCallback({
- currentGroupChannel: currentGroupChannel,
- messagesDispatcher: messagesDispatcher
- }, {
- logger: logger
- });
-
- var _useSendMessageCallba = useSendMessageCallback({
- currentGroupChannel: currentGroupChannel,
- onBeforeSendUserMessage: onBeforeSendUserMessage
- }, {
- sdk: sdk,
- logger: logger,
- pubSub: pubSub,
- messagesDispatcher: messagesDispatcher
- }),
- _useSendMessageCallba2 = _slicedToArray(_useSendMessageCallba, 2),
- messageInputRef = _useSendMessageCallba2[0],
- onSendMessage = _useSendMessageCallba2[1];
-
- var _useSendFileMessageCa = useSendFileMessageCallback({
- currentGroupChannel: currentGroupChannel,
- onBeforeSendFileMessage: onBeforeSendFileMessage
- }, {
- sdk: sdk,
- logger: logger,
- pubSub: pubSub,
- messagesDispatcher: messagesDispatcher
- }),
- _useSendFileMessageCa2 = _slicedToArray(_useSendFileMessageCa, 1),
- onSendFileMessage = _useSendFileMessageCa2[0];
-
- if (sdkError) {
- return React.createElement("div", {
- className: "sendbird-conversation"
- }, React.createElement(PlaceHolder, {
- type: PlaceHolderTypes.WRONG,
- retryToConnect: function retryToConnect() {
- logger.info('Channel: reconnecting');
- reconnect();
- }
- }));
- }
-
- if (!channelUrl) {
- return React.createElement("div", {
- className: "sendbird-conversation"
- }, React.createElement(PlaceHolder, {
- type: PlaceHolderTypes.NO_CHANNELS
- }));
- }
-
- if (loading) {
- return React.createElement("div", {
- className: "sendbird-conversation"
- }, React.createElement(PlaceHolder, {
- type: PlaceHolderTypes.LOADING
- }));
- }
-
- if (invalidChannel) {
- return React.createElement("div", {
- className: "sendbird-conversation"
- }, React.createElement(PlaceHolder, {
- type: PlaceHolderTypes.WRONG
- }));
- }
-
- return React.createElement(UserProfileProvider, {
- className: "sendbird-conversation",
- disableUserProfile: userDefinedDisableUserProfile,
- renderUserProfile: userDefinedRenderProfile
- }, renderChatHeader ? renderChatHeader({
- channel: currentGroupChannel,
- user: user
- }) : React.createElement(ChatHeader, {
- theme: theme,
- currentGroupChannel: currentGroupChannel,
- currentUser: user,
- onActionClick: onChatHeaderActionClick,
- subTitle: currentGroupChannel.members && currentGroupChannel.members.length !== 2,
- isActive: false,
- isMuted: false
- }), isFrozen && React.createElement(FrozenNotification, null), unreadCount > 0 && React.createElement(Notification, {
- count: unreadCount,
- onClick: function onClick() {
- scrollIntoLast('.sendbird-msg--scroll-ref'); // there is no scroll
-
- if (scrollRef.current.scrollTop === 0) {
- currentGroupChannel.markAsRead();
- messagesDispatcher({
- type: MARK_AS_READ
- });
- }
- },
- time: unreadSince
- }), React.createElement(ConversationScroll, {
- swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
- userId: userId,
- hasMore: hasMore,
- disabled: !isOnline,
- onScroll: onScrollCallback,
- scrollRef: scrollRef,
- readStatus: readStatus,
- initialized: initialized,
- useReaction: usingReaction,
- allMessages: allMessages,
- emojiAllMap: emojiAllMap,
- membersMap: nicknamesMap,
- editDisabled: isDisabledBecauseFrozen(currentGroupChannel),
- deleteMessage: deleteMessage,
- updateMessage: updateMessage,
- resendMessage: resendMessage,
- toggleReaction: toggleReaction,
- emojiContainer: emojiContainer,
- renderChatItem: renderChatItem,
- useMessageGrouping: useMessageGrouping,
- messagesDispatcher: messagesDispatcher,
- currentGroupChannel: currentGroupChannel,
- memoizedEmojiListItems: memoizedEmojiListItems
- }), React.createElement("div", {
- className: "sendbird-conversation__footer"
- }, React.createElement(MessageInputWrapper$1, {
- channel: currentGroupChannel,
- user: user,
- ref: messageInputRef,
- onSendMessage: onSendMessage,
- onFileUpload: onSendFileMessage,
- renderMessageInput: renderMessageInput,
- isOnline: isOnline,
- initialized: initialized
- }), React.createElement("div", {
- className: "sendbird-conversation__typing-indicator"
- }, React.createElement(TypingIndicator, {
- channelUrl: channelUrl,
- sb: sdk,
- logger: logger
- })), !isOnline && React.createElement(ConnectionStatus, {
- sdkInit: sdkInit,
- sb: sdk,
- logger: logger
- })));
-};
-ConversationPanel.propTypes = {
- channelUrl: PropTypes.string,
- stores: PropTypes.shape({
- sdkStore: PropTypes.shape({
- initialized: PropTypes.bool,
- sdk: PropTypes.shape({
- getErrorFirstCallback: PropTypes.func,
- removeChannelHandler: PropTypes.func,
- GroupChannel: PropTypes.any,
- ChannelHandler: PropTypes.any,
- addChannelHandler: PropTypes.func,
- UserMessageParams: PropTypes.any,
- FileMessageParams: PropTypes.any,
- getAllEmoji: PropTypes.func,
- appInfo: PropTypes.shape({})
- }),
- error: PropTypes.bool
- }),
- userStore: PropTypes.shape({
- user: PropTypes.shape({})
- })
- }).isRequired,
- dispatchers: PropTypes.shape({
- reconnect: PropTypes.func
- }).isRequired,
- config: PropTypes.shape({
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- userId: PropTypes.string.isRequired,
- isOnline: PropTypes.bool.isRequired,
- theme: PropTypes.string,
- logger: PropTypes.shape({
- info: PropTypes.func,
- error: PropTypes.func,
- warning: PropTypes.func
- }),
- pubSub: PropTypes.shape({
- subscribe: PropTypes.func,
- publish: PropTypes.func
- })
- }).isRequired,
- queries: PropTypes.shape({
- messageListParams: PropTypes.shape({
- includeMetaArray: PropTypes.bool,
- includeParentMessageText: PropTypes.bool,
- includeReaction: PropTypes.bool,
- includeReplies: PropTypes.bool,
- includeThreadInfo: PropTypes.bool,
- limit: PropTypes.number,
- reverse: PropTypes.bool,
- senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string)
- }),
- // deprecate in v1.3
- messageListQuery: PropTypes.shape({
- includeMetaArray: PropTypes.bool,
- includeParentMessageText: PropTypes.bool,
- includeReaction: PropTypes.bool,
- includeReplies: PropTypes.bool,
- includeThreadInfo: PropTypes.bool,
- limit: PropTypes.number,
- reverse: PropTypes.bool,
- senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string)
- })
- }),
- onBeforeSendUserMessage: PropTypes.func,
- // onBeforeSendUserMessage(text)
- onBeforeSendFileMessage: PropTypes.func,
- // onBeforeSendFileMessage(File)
- onBeforeUpdateUserMessage: PropTypes.func,
- renderChatItem: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- renderMessageInput: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- renderChatHeader: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- onChatHeaderActionClick: PropTypes.func,
- useReaction: PropTypes.bool,
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- useMessageGrouping: PropTypes.bool
-};
-ConversationPanel.defaultProps = {
- channelUrl: null,
- queries: {},
- onBeforeSendUserMessage: null,
- onBeforeSendFileMessage: null,
- onBeforeUpdateUserMessage: null,
- renderChatItem: null,
- renderMessageInput: null,
- renderChatHeader: null,
- useReaction: true,
- disableUserProfile: false,
- renderUserProfile: null,
- useMessageGrouping: true,
- onChatHeaderActionClick: noop$7
-};
-var getEmojiCategoriesFromEmojiContainer$1 = getEmojiCategoriesFromEmojiContainer,
- getAllEmojisFromEmojiContainer$1 = getAllEmojisFromEmojiContainer,
- getEmojisFromEmojiContainer$1 = getEmojisFromEmojiContainer;
-var Conversation = withSendbirdContext(ConversationPanel);
-
-var EditDetails = function EditDetails(props) {
- var _onSubmit = props.onSubmit,
- onCancel = props.onCancel,
- channel = props.channel,
- userId = props.userId,
- theme = props.theme;
- var inputRef = useRef(null);
- var formRef = useRef(null);
- var hiddenInputRef = useRef(null);
-
- var _useState = useState(null),
- _useState2 = _slicedToArray(_useState, 2),
- currentImg = _useState2[0],
- setCurrentImg = _useState2[1];
-
- var _useState3 = useState(null),
- _useState4 = _slicedToArray(_useState3, 2),
- newFile = _useState4[0],
- setNewFile = _useState4[1];
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var title = channel.name;
- return React.createElement(Modal, {
- titleText: stringSet.MODAL__CHANNEL_INFORMATION__TITLE,
- submitText: stringSet.BUTTON__SAVE,
- onCancel: onCancel,
- onSubmit: function onSubmit() {
- if (title !== '' && !inputRef.current.value) {
- if (formRef.current.reportValidity) {
- // might not work in explorer
- formRef.current.reportValidity();
- }
-
- return;
- }
-
- _onSubmit(newFile, inputRef.current.value);
-
- onCancel();
- },
- type: Type$1.PRIMARY
- }, React.createElement("form", {
- className: "channel-profile-form",
- ref: formRef,
- onSubmit: function onSubmit(e) {
- e.preventDefault();
- }
- }, React.createElement("div", {
- className: "channel-profile-form__img-section"
- }, React.createElement(InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE), React.createElement("div", {
- className: "channel-profile-form__avatar"
- }, currentImg ? React.createElement(Avatar$1, {
- height: "80px",
- width: "80px",
- src: currentImg
- }) : React.createElement(ChannelAvatar, {
- height: 80,
- width: 80,
- channel: channel,
- userId: userId,
- theme: theme
- })), React.createElement("input", {
- ref: hiddenInputRef,
- type: "file",
- accept: "image/gif, image/jpeg, image/png",
- style: {
- display: 'none'
- },
- onChange: function onChange(e) {
- setCurrentImg(URL.createObjectURL(e.target.files[0]));
- setNewFile(e.target.files[0]);
- hiddenInputRef.current.value = '';
- }
- }), React.createElement(TextButton, {
- className: "channel-profile-form__avatar-button",
- onClick: function onClick() {
- return hiddenInputRef.current.click();
- },
- notUnderline: true
- }, React.createElement(Label, {
- type: LabelTypography.BUTTON_1,
- color: LabelColors.PRIMARY
- }, stringSet.MODAL__CHANNEL_INFORMATION__UPLOAD))), React.createElement("div", {
- className: "channel-profile-form__name-section"
- }, React.createElement(InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_NAME), React.createElement(Input, {
- required: title !== '',
- name: "channel-profile-form__name",
- ref: inputRef,
- value: title,
- placeHolder: stringSet.MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER
- }))));
-};
-
-EditDetails.propTypes = {
- onSubmit: PropTypes.func.isRequired,
- onCancel: PropTypes.func.isRequired,
- channel: PropTypes.shape({
- name: PropTypes.string
- }).isRequired,
- userId: PropTypes.string.isRequired,
- theme: PropTypes.string.isRequired
-};
-
-var ChannelProfile = function ChannelProfile(props) {
- var disabled = props.disabled,
- channel = props.channel,
- userId = props.userId,
- theme = props.theme,
- onChannelInfoChange = props.onChannelInfoChange;
- var title = channel.name;
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showModal = _useState2[0],
- setShowModal = _useState2[1];
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.createElement("div", {
- className: "sendbird-channel-profile"
- }, React.createElement("div", {
- className: "sendbird-channel-profile--inner"
- }, React.createElement("div", {
- className: "sendbird-channel-profile__avatar"
- }, React.createElement(ChannelAvatar, {
- channel: channel,
- userId: userId,
- theme: theme
- })), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1,
- className: "sendbird-channel-profile__title"
- }, title), React.createElement(TextButton, {
- disabled: disabled,
- className: "sendbird-channel-profile__edit",
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- setShowModal(true);
- },
- notUnderline: true
- }, React.createElement(Label, {
- type: LabelTypography.BUTTON_1,
- color: disabled ? LabelColors.ONBACKGROUND_2 : LabelColors.PRIMARY
- }, stringSet.CHANNEL_SETTING__PROFILE__EDIT)), showModal && React.createElement(EditDetails, {
- onCancel: function onCancel() {
- return setShowModal(false);
- },
- onSubmit: onChannelInfoChange,
- channel: channel,
- userId: userId,
- theme: theme
- })));
-};
-
-ChannelProfile.propTypes = {
- channel: PropTypes.shape({
- name: PropTypes.string
- }).isRequired,
- userId: PropTypes.string.isRequired,
- theme: PropTypes.string,
- disabled: PropTypes.bool,
- onChannelInfoChange: PropTypes.func
-};
-ChannelProfile.defaultProps = {
- theme: 'light',
- disabled: false,
- onChannelInfoChange: function onChannelInfoChange() {}
-};
-
-function MembersModal(_a) {
- var hideModal = _a.hideModal,
- channel = _a.channel,
- currentUser = _a.currentUser;
-
- var _b = useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = useState(null),
- memberQuery = _c[0],
- setMemberQuery = _c[1];
-
- useEffect(function () {
- var memberListQuery = channel.createMemberListQuery();
- memberListQuery.limit = 20;
- memberListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- });
- setMemberQuery(memberListQuery);
- }, []);
- return React.createElement("div", null, React.createElement(Modal, {
- hideFooter: true,
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: noop,
- titleText: "All Members"
- }, React.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = memberQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- memberQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setMembers(__spreadArrays(members, o));
- });
- }
- }
- }, members.map(function (member) {
- return React.createElement(UserListItem, {
- user: member,
- key: member.userId,
- currentUser: currentUser,
- action: function action(_a) {
- var parentRef = _a.parentRef,
- actionRef = _a.actionRef;
- return React.createElement(React.Fragment, null, channel.myRole === 'operator' && React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React.createElement(MenuItem, {
- onClick: function onClick() {
- if (member.role !== 'operator') {
- channel.addOperators([member.userId], function () {
- setMembers(members.map(function (m) {
- if (m.userId === member.userId) {
- return __assign(__assign({}, member), {
- role: 'operator'
- });
- }
-
- return m;
- }));
- closeDropdown();
- });
- } else {
- channel.removeOperators([member.userId], function () {
- setMembers(members.map(function (m) {
- if (m.userId === member.userId) {
- return __assign(__assign({}, member), {
- role: ''
- });
- }
-
- return m;
- }));
- closeDropdown();
- });
- }
- }
- }, member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'), // No muted members in broadcast channel
- !channel.isBroadcast && React.createElement(MenuItem, {
- onClick: function onClick() {
- if (member.isMuted) {
- channel.unmuteUser(member, function () {
- setMembers(members.map(function (m) {
- if (m.userId === member.userId) {
- return __assign(__assign({}, member), {
- isMuted: false
- });
- }
-
- return m;
- }));
- closeDropdown();
- });
- } else {
- channel.muteUser(member, function () {
- setMembers(members.map(function (m) {
- if (m.userId === member.userId) {
- return __assign(__assign({}, member), {
- isMuted: true
- });
- }
-
- return m;
- }));
- closeDropdown();
- });
- }
- }
- }, member.isMuted ? 'Unmute' : 'Mute'), React.createElement(MenuItem, {
- onClick: function onClick() {
- channel.banUser(member, -1, '', function () {
- setMembers(members.filter(function (_a) {
- var userId = _a.userId;
- return userId !== member.userId;
- }));
- });
- }
- }, "Ban"));
- }
- }));
- }
- });
- }))));
-}
-
-var SHOWN_MEMBER_MAX = 10;
-
-var UserListItem$1 = function UserListItem(_ref) {
- var _ref$member = _ref.member,
- member = _ref$member === void 0 ? {} : _ref$member,
- _ref$currentUser = _ref.currentUser,
- currentUser = _ref$currentUser === void 0 ? '' : _ref$currentUser;
- var avatarRef = useRef(null);
-
- var _useContext = useContext(UserProfileContext),
- disableUserProfile = _useContext.disableUserProfile,
- renderUserProfile = _useContext.renderUserProfile;
-
- var _useContext2 = useContext(LocalizationContext),
- stringSet = _useContext2.stringSet;
-
- return React.createElement("div", {
- className: "sendbird-members-accordion__member"
- }, React.createElement("div", {
- className: "sendbird-members-accordion__member-avatar"
- }, React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(Avatar$1, {
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- ref: avatarRef,
- src: member.profileUrl,
- width: 24,
- height: 24
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- openLeft: true,
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: member,
- currentUserId: currentUser,
- close: closeDropdown
- }) : React.createElement(ConnectedUserProfile, {
- user: member,
- currentUserId: currentUser,
- onSuccess: closeDropdown
- }));
- }
- })), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1
- }, member.nickname || stringSet.NO_NAME, currentUser === member.userId && ' (You)'));
-};
-
-UserListItem$1.propTypes = {
- member: PropTypes.shape({
- userId: PropTypes.string,
- profileUrl: PropTypes.string,
- nickname: PropTypes.string
- }).isRequired,
- currentUser: PropTypes.string.isRequired
-};
-
-var MemebersAccordion = function MemebersAccordion(_ref2) {
- var channel = _ref2.channel,
- disabled = _ref2.disabled,
- currentUser = _ref2.currentUser,
- userQueryCreator = _ref2.userQueryCreator,
- onInviteMemebers = _ref2.onInviteMemebers,
- swapParams = _ref2.swapParams;
- var members = channel.members || [];
-
- var _useState = useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showMoreModal = _useState2[0],
- setShowMoreModal = _useState2[1];
-
- var _useState3 = useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- showAddUserModal = _useState4[0],
- setShowAddUserModal = _useState4[1];
-
- var _useContext3 = useContext(LocalizationContext),
- stringSet = _useContext3.stringSet;
-
- return React.createElement("div", {
- className: "sendbird-members-accordion"
- }, React.createElement("div", {
- className: "sendbird-members-accordion__list"
- }, members.slice(0, SHOWN_MEMBER_MAX).map(function (member) {
- return React.createElement(UserListItem$1, {
- member: member,
- currentUser: currentUser,
- key: member.userId
- });
- })), React.createElement("div", {
- className: "sendbird-members-accordion__footer"
- }, members.length >= SHOWN_MEMBER_MAX && React.createElement(Button, {
- className: "sendbird-members-accordion__footer__all-members",
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- return setShowMoreModal(true);
- }
- }, stringSet.CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS), members.length >= SHOWN_MEMBER_MAX && showMoreModal && React.createElement(MembersModal, {
- currentUser: currentUser,
- hideModal: function hideModal() {
- setShowMoreModal(false);
- },
- channel: channel
- }), React.createElement(Button, {
- className: "sendbird-members-accordion__footer__invite-users",
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- disabled: disabled,
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- setShowAddUserModal(true);
- }
- }, stringSet.CHANNEL_SETTING__MEMBERS__INVITE_MEMBER), showAddUserModal && React.createElement(InviteMembers, {
- swapParams: swapParams,
- titleText: stringSet.MODAL__INVITE_MEMBER__TITLE,
- submitText: stringSet.BUTTON__INVITE,
- closeModal: function closeModal() {
- return setShowAddUserModal(false);
- },
- idsToFilter: members.map(function (member) {
- return member.userId;
- }),
- userQueryCreator: userQueryCreator,
- onSubmit: onInviteMemebers
- })));
-};
-
-MemebersAccordion.propTypes = {
- swapParams: PropTypes.bool,
- disabled: PropTypes.bool,
- channel: PropTypes.shape({
- members: PropTypes.arrayOf(PropTypes.shape({}))
- }),
- currentUser: PropTypes.string,
- userQueryCreator: PropTypes.func.isRequired,
- onInviteMemebers: PropTypes.func.isRequired
-};
-MemebersAccordion.defaultProps = {
- swapParams: false,
- currentUser: '',
- disabled: false,
- channel: {}
-};
-
-var Context = React.createContext({
- opened: '',
- setOpened: noop
-});
-var Consumer = Context.Consumer;
-var Provider = Context.Provider;
-
-// Wraps all the accordions in an accordion set
-function AccordionGroup(_a) {
- var children = _a.children,
- _b = _a.className,
- className = _b === void 0 ? '' : _b;
-
- var _c = useState(''),
- opened = _c[0],
- setOpened = _c[1];
-
- return React.createElement(Provider, {
- value: {
- opened: opened,
- setOpened: setOpened
- }
- }, React.createElement("div", {
- className: className
- }, children));
-}
-
-function Accordion(_a) {
- var id = _a.id,
- renderTitle = _a.renderTitle,
- renderContent = _a.renderContent,
- renderFooter = _a.renderFooter,
- className = _a.className;
-
- var _b = useState(false),
- showAccordion = _b[0],
- setShowAccordion = _b[1];
-
- return React.createElement(Consumer, null, function (value) {
- var opened = value.opened,
- setOpened = value.setOpened;
-
- if (id === opened) {
- setShowAccordion(true);
- } else {
- setShowAccordion(false);
- }
-
- var handleClick = function handleClick() {
- if (showAccordion) {
- setOpened('');
- } else {
- setOpened(id);
- }
- };
-
- return React.createElement(React.Fragment, null, React.createElement("div", {
- id: id,
- role: "switch",
- "aria-checked": false,
- tabIndex: 0,
- onKeyDown: handleClick,
- className: "sendbird-accordion__panel-heder " + className,
- onClick: handleClick
- }, renderTitle(), React.createElement(Icon, {
- type: IconTypes.SHEVRON,
- className: ['sendbird-accordion__panel-icon-right', 'sendbird-accordion__panel-icon--chevron', showAccordion ? 'sendbird-accordion__panel-icon--open' : ''].join(' '),
- height: "24px",
- width: "24px"
- })), showAccordion && React.createElement("div", {
- className: "sendbird-accordion"
- }, React.createElement("div", {
- className: "sendbird-accordion__list"
- }, renderContent()), renderFooter && React.createElement("div", {
- className: "sendbird-accordion__footer"
- }, renderFooter())));
- });
-}
-var AccordionGroup$1 = AccordionGroup;
-
-// might move to reusable/UI
-var COMPONENT_NAME$1 = 'sendbird-user-list-item--small';
-
-var UserListItem$2 = function UserListItem(_a) {
- var user = _a.user,
- className = _a.className,
- currentUser = _a.currentUser,
- action = _a.action;
- var actionRef = useRef(null);
- var parentRef = useRef(null);
- var avatarRef = useRef(null);
- var stringSet = useContext(LocalizationContext).stringSet;
-
- var _b = useContext(UserProfileContext),
- disableUserProfile = _b.disableUserProfile,
- renderUserProfile = _b.renderUserProfile;
-
- var injectingClassNames = Array.isArray(className) ? className : [className];
- return React.createElement("div", {
- ref: parentRef,
- className: __spreadArrays([COMPONENT_NAME$1], injectingClassNames).join(' ')
- }, user.isMuted && React.createElement(MutedAvatarOverlay, null), React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(Avatar$1, {
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- ref: avatarRef,
- className: COMPONENT_NAME$1 + "__avatar",
- src: user.profileUrl,
- width: 24,
- height: 24
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- openLeft: true,
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: user,
- currentUserId: currentUser,
- close: closeDropdown
- }) : React.createElement(ConnectedUserProfile, {
- user: user,
- currentUserId: currentUser,
- onSuccess: closeDropdown
- }));
- }
- }), React.createElement(Label, {
- className: COMPONENT_NAME$1 + "__title",
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, user.nickname || stringSet.NO_NAME, currentUser === user.userId && " (You)"), !user.nickname && React.createElement(Label, {
- className: COMPONENT_NAME$1 + "__subtitle",
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, user.userId), user.role === 'operator' && React.createElement(Label, {
- className: COMPONENT_NAME$1 + "__operator",
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_2
- }, "Operator"), action && React.createElement("div", {
- ref: actionRef,
- className: COMPONENT_NAME$1 + "__action"
- }, action({
- actionRef: actionRef,
- parentRef: parentRef
- })));
-};
-
-function OperatorsModal(_a) {
- var hideModal = _a.hideModal,
- channel = _a.channel,
- currentUser = _a.currentUser;
-
- var _b = useState([]),
- operators = _b[0],
- setOperators = _b[1];
-
- var _c = useState(null),
- operatorQuery = _c[0],
- setOperatorQuery = _c[1];
-
- useEffect(function () {
- var operatorListQuery = channel.createOperatorListQuery();
- operatorListQuery.limit = 20;
- operatorListQuery.next(function (operators, error) {
- if (error) {
- return;
- }
-
- setOperators(operators);
- });
- setOperatorQuery(operatorListQuery);
- }, []);
- return React.createElement("div", null, React.createElement(Modal, {
- hideFooter: true,
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: noop,
- titleText: "All operators"
- }, React.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = operatorQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- operatorQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setOperators(__spreadArrays(operators, o));
- });
- }
- }
- }, operators.map(function (member) {
- return React.createElement(UserListItem, {
- currentUser: currentUser,
- user: member,
- key: member.userId,
- action: function action(_a) {
- var parentRef = _a.parentRef,
- actionRef = _a.actionRef;
- return React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React.createElement(MenuItem, {
- onClick: function onClick() {
- channel.removeOperators([member.userId], function (response, error) {
- if (error) {
- return;
- }
-
- setOperators(operators.filter(function (_a) {
- var userId = _a.userId;
- return userId !== member.userId;
- }));
- });
- closeDropdown();
- }
- }, "Dismiss operator"));
- }
- });
- }
- });
- }))));
-}
-
-function AddOperatorsModal(_a) {
- var hideModal = _a.hideModal,
- channel = _a.channel,
- _onSubmit = _a.onSubmit;
-
- var _b = useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = useState({}),
- selectedMembers = _c[0],
- setSelectedMembers = _c[1];
-
- var _d = useState(null),
- memberQuery = _d[0],
- setMemberQuery = _d[1];
-
- var stringSet = useContext(LocalizationContext).stringSet;
- useEffect(function () {
- var memberListQuery = channel.createMemberListQuery();
- memberListQuery.limit = 20;
- memberListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- });
- setMemberQuery(memberListQuery);
- }, []);
- var selectedCount = Object.keys(selectedMembers).filter(function (m) {
- return selectedMembers[m];
- }).length;
- return React.createElement("div", null, React.createElement(Modal, {
- type: Type$1.PRIMARY,
- submitText: "Add",
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: function onSubmit() {
- var members = Object.keys(selectedMembers).filter(function (m) {
- return selectedMembers[m];
- });
-
- _onSubmit(members);
- },
- titleText: "Select members"
- }, React.createElement(Label, {
- color: selectedCount > 0 ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3,
- type: LabelTypography.CAPTION_1
- }, selectedCount + " " + stringSet.MODAL__INVITE_MEMBER__SELECTEC), React.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = memberQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- memberQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setMembers(__spreadArrays(members, o));
- });
- }
- }
- }, members.map(function (member) {
- return React.createElement(UserListItem, {
- checkBox: true,
- checked: selectedMembers[member.userId],
- onChange: function onChange(event) {
- var _a;
-
- var modifiedSelectedMembers = __assign(__assign({}, selectedMembers), (_a = {}, _a[event.target.id] = event.target.checked, _a));
-
- if (!event.target.checked) {
- delete modifiedSelectedMembers[event.target.id];
- }
-
- setSelectedMembers(modifiedSelectedMembers);
- },
- user: member,
- key: member.userId
- });
- }))));
-}
-
-var OperatorList = function OperatorList(_a) {
- var sdk = _a.sdk,
- channel = _a.channel;
-
- var _b = useState([]),
- operators = _b[0],
- setOperators = _b[1];
-
- var _c = useState(false),
- showMore = _c[0],
- setShowMore = _c[1];
-
- var _d = useState(false),
- showAdd = _d[0],
- setShowAdd = _d[1];
-
- var _e = useState(false),
- hasNext = _e[0],
- setHasNext = _e[1];
-
- var stringSet = useContext(LocalizationContext).stringSet;
- useEffect(function () {
- if (!channel) {
- setOperators([]);
- return;
- }
-
- var operatorListQuery = channel.createOperatorListQuery();
- operatorListQuery.limit = 10;
- operatorListQuery.next(function (operators, error) {
- if (error) {
- return;
- }
-
- setOperators(operators);
- setHasNext(operatorListQuery.hasNext);
- });
- }, [channel]);
- var refershList = useCallback(function () {
- if (!channel) {
- setOperators([]);
- return;
- }
-
- var operatorListQuery = channel.createOperatorListQuery();
- operatorListQuery.limit = 10;
- operatorListQuery.next(function (operators, error) {
- if (error) {
- return;
- }
-
- setOperators(operators);
- setHasNext(operatorListQuery.hasNext);
- });
- }, [channel]);
- return React.createElement(React.Fragment, null, operators.map(function (operator) {
- return React.createElement(UserListItem$2, {
- key: operator.userId,
- user: operator,
- currentUser: sdk.currentUser.userId,
- action: function action(_a) {
- var actionRef = _a.actionRef,
- parentRef = _a.parentRef;
- return React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React.createElement(MenuItem, {
- onClick: function onClick() {
- channel.removeOperators([operator.userId], function (response, error) {
- if (error) {
- return;
- }
-
- setOperators(operators.filter(function (_a) {
- var userId = _a.userId;
- return userId !== operator.userId;
- }));
- });
- closeDropdown();
- }
- }, "Dismiss operator"));
- }
- });
- }
- });
- }), hasNext && React.createElement("div", {
- className: "sendbird-channel-settings-accordion__footer"
- }, React.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- setShowMore(true);
- }
- }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ALL), React.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- setShowAdd(true);
- }
- }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ADD)), showMore && React.createElement(OperatorsModal, {
- currentUser: sdk.currentUser.userId,
- hideModal: function hideModal() {
- setShowMore(false);
- refershList();
- },
- channel: channel
- }), showAdd && React.createElement(AddOperatorsModal, {
- hideModal: function hideModal() {
- return setShowAdd(false);
- },
- channel: channel,
- onSubmit: function onSubmit(members) {
- setShowAdd(false);
- channel.addOperators(members, function () {
- refershList();
- });
- }
- }));
-};
-
-var mapStoreToProps$2 = function mapStoreToProps(store) {
- return {
- sdk: getSdk(store)
- };
-};
-
-var OperatorList$1 = withSendbirdContext(OperatorList, mapStoreToProps$2);
-
-function InviteMembers$1(_a) {
- var hideModal = _a.hideModal,
- userQueryCreator = _a.userQueryCreator,
- _onSubmit = _a.onSubmit;
-
- var _b = useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = useState({}),
- selectedMembers = _c[0],
- setSelectedMembers = _c[1];
-
- var _d = useState(null),
- userQuery = _d[0],
- setUserQuery = _d[1];
-
- useEffect(function () {
- var userListQuery = userQueryCreator();
- userListQuery.limit = 20;
- userListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- });
- setUserQuery(userListQuery);
- }, []);
- return React.createElement("div", null, React.createElement(Modal, {
- disabled: Object.keys(selectedMembers).length === 0,
- submitText: "Invite",
- type: Type$1.PRIMARY,
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: function onSubmit() {
- var members = Object.keys(selectedMembers).filter(function (m) {
- return selectedMembers[m];
- });
-
- _onSubmit(members);
- },
- titleText: "Select members"
- }, React.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = userQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- userQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setMembers(__spreadArrays(members, o));
- });
- }
- }
- }, members.map(function (member) {
- return React.createElement(UserListItem, {
- checkBox: true,
- checked: selectedMembers[member.userId],
- onChange: function onChange(event) {
- var _a;
-
- var modifiedSelectedMembers = __assign(__assign({}, selectedMembers), (_a = {}, _a[event.target.id] = event.target.checked, _a));
-
- if (!event.target.checked) {
- delete modifiedSelectedMembers[event.target.id];
- }
-
- setSelectedMembers(modifiedSelectedMembers);
- },
- user: member,
- key: member.userId
- });
- }))));
-}
-
-var MemberList = function MemberList(_a) {
- var sdk = _a.sdk,
- channel = _a.channel,
- userQueryCreator = _a.userQueryCreator;
-
- var _b = useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = useState(false),
- hasNext = _c[0],
- setHasNext = _c[1];
-
- var _d = useState(false),
- showAllMembers = _d[0],
- setShowAllMembers = _d[1];
-
- var _e = useState(false),
- showInviteMembers = _e[0],
- setShowInviteMembers = _e[1];
-
- useEffect(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var memberUserListQuery = channel.createMemberListQuery();
- memberUserListQuery.limit = 10;
- memberUserListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- setHasNext(memberUserListQuery.hasNext);
- });
- }, [channel]);
- var refershList = useCallback(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var memberUserListQuery = channel.createMemberListQuery();
- memberUserListQuery.limit = 10;
- memberUserListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- setHasNext(memberUserListQuery.hasNext);
- });
- }, [channel]);
- return React.createElement(React.Fragment, null, members.map(function (member) {
- return React.createElement(UserListItem$2, {
- key: member.userId,
- user: member,
- currentUser: sdk.currentUser.userId,
- action: function action(_a) {
- var actionRef = _a.actionRef,
- parentRef = _a.parentRef;
- return React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React.createElement(MenuItem, {
- onClick: function onClick() {
- if (member.role !== 'operator') {
- channel.addOperators([member.userId], function () {
- refershList();
- closeDropdown();
- });
- } else {
- channel.removeOperators([member.userId], function () {
- refershList();
- closeDropdown();
- });
- }
- }
- }, member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'), // No muted members in broadcast channel
- !channel.isBroadcast && React.createElement(MenuItem, {
- onClick: function onClick() {
- if (member.isMuted) {
- channel.unmuteUser(member, function () {
- refershList();
- closeDropdown();
- });
- } else {
- channel.muteUser(member, function () {
- refershList();
- closeDropdown();
- });
- }
- }
- }, member.isMuted ? 'Unmute' : 'Mute'), React.createElement(MenuItem, {
- onClick: function onClick() {
- channel.banUser(member, -1, '', function () {
- refershList();
- closeDropdown();
- });
- }
- }, "Ban"));
- }
- });
- }
- });
- }), React.createElement("div", {
- className: "sendbird-channel-settings-accordion__footer"
- }, hasNext && React.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- return setShowAllMembers(true);
- }
- }, "All members"), React.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- return setShowInviteMembers(true);
- }
- }, "Invite members")), showAllMembers && React.createElement(MembersModal, {
- currentUser: sdk.currentUser.userId,
- channel: channel,
- hideModal: function hideModal() {
- setShowAllMembers(false);
- refershList();
- }
- }), showInviteMembers && React.createElement(InviteMembers$1, {
- userQueryCreator: userQueryCreator,
- onSubmit: function onSubmit(selectedMemebers) {
- channel.inviteWithUserIds(selectedMemebers, function () {
- setShowInviteMembers(false);
- refershList();
- });
- },
- channel: channel,
- hideModal: function hideModal() {
- return setShowInviteMembers(false);
- }
- }));
-};
-
-var mapStoreToProps$3 = function mapStoreToProps(store) {
- return {
- sdk: getSdk(store)
- };
-};
-
-var MemberList$1 = withSendbirdContext(MemberList, mapStoreToProps$3);
-
-function BannedMembersModal(_a) {
- var hideModal = _a.hideModal,
- channel = _a.channel;
-
- var _b = useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = useState(null),
- memberQuery = _c[0],
- setMemberQuery = _c[1];
-
- useEffect(function () {
- var bannedUserListQuery = channel.createBannedUserListQuery();
- bannedUserListQuery.next(function (users, error) {
- if (error) {
- return;
- }
-
- setMembers(users);
- });
- setMemberQuery(bannedUserListQuery);
- }, []);
- return React.createElement("div", null, React.createElement(Modal, {
- hideFooter: true,
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: noop,
- titleText: "Muted members"
- }, React.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = memberQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- memberQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setMembers(__spreadArrays(members, o));
- });
- }
- }
- }, members.map(function (member) {
- return React.createElement(UserListItem, {
- user: member,
- key: member.userId,
- action: function action(_a) {
- var parentRef = _a.parentRef,
- actionRef = _a.actionRef;
- return React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React.createElement(MenuItem, {
- onClick: function onClick() {
- channel.unbanUser(member, function () {
- closeDropdown();
- setMembers(members.filter(function (m) {
- return m.userId !== member.userId;
- }));
- });
- }
- }, "Unban"));
- }
- });
- }
- });
- }))));
-}
-
-var BannedMemberList = function BannedMemberList(_a) {
- var channel = _a.channel;
-
- var _b = useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = useState(false),
- hasNext = _c[0],
- setHasNext = _c[1];
-
- var _d = useState(false),
- showModal = _d[0],
- setShowModal = _d[1];
-
- useEffect(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var bannedUserListQuery = channel.createBannedUserListQuery();
- bannedUserListQuery.next(function (users, error) {
- if (error) {
- return;
- }
-
- setMembers(users);
- setHasNext(bannedUserListQuery.hasNext);
- });
- }, [channel]);
- var refreshList = useCallback(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var bannedUserListQuery = channel.createBannedUserListQuery();
- bannedUserListQuery.next(function (users, error) {
- if (error) {
- return;
- }
-
- setMembers(users);
- setHasNext(bannedUserListQuery.hasNext);
- });
- }, [channel]);
- return React.createElement(React.Fragment, null, members.map(function (member) {
- return React.createElement(UserListItem$2, {
- key: member.userId,
- user: member,
- action: function action(_a) {
- var actionRef = _a.actionRef,
- parentRef = _a.parentRef;
- return React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React.createElement(MenuItem, {
- onClick: function onClick() {
- channel.unbanUser(member, function () {
- closeDropdown();
- refreshList();
- });
- }
- }, "Unban"));
- }
- });
- }
- });
- }), members && members.length === 0 && React.createElement(Label, {
- className: "sendbird-channel-settings__empty-list",
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_3
- }, "No banned members yet"), hasNext && React.createElement("div", {
- className: "sendbird-channel-settings-accordion__footer"
- }, React.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- setShowModal(true);
- }
- }, "All banned members")), showModal && React.createElement(BannedMembersModal, {
- channel: channel,
- hideModal: function hideModal() {
- setShowModal(false);
- refreshList();
- }
- }));
-};
-
-var mapStoreToProps$4 = function mapStoreToProps(store) {
- return {
- sdk: getSdk(store)
- };
-};
-
-var BannedMemberList$1 = withSendbirdContext(BannedMemberList, mapStoreToProps$4);
-
-function MutedMembersModal(_a) {
- var hideModal = _a.hideModal,
- channel = _a.channel,
- currentUser = _a.currentUser;
-
- var _b = useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = useState(null),
- memberQuery = _c[0],
- setMemberQuery = _c[1];
-
- useEffect(function () {
- var memberUserListQuery = channel.createMemberListQuery();
- memberUserListQuery.limit = 10;
- memberUserListQuery.mutedMemberFilter = 'muted';
- memberUserListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- });
- setMemberQuery(memberUserListQuery);
- }, []);
- return React.createElement("div", null, React.createElement(Modal, {
- hideFooter: true,
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: noop,
- titleText: "Muted members"
- }, React.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = memberQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- memberQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setMembers(__spreadArrays(members, o));
- });
- }
- }
- }, members.map(function (member) {
- return React.createElement(UserListItem, {
- currentUser: currentUser,
- user: member,
- key: member.userId,
- action: function action(_a) {
- var actionRef = _a.actionRef,
- parentRef = _a.parentRef;
- return React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React.createElement(MenuItem, {
- onClick: function onClick() {
- channel.unmuteUser(member, function () {
- closeDropdown();
- setMembers(members.filter(function (m) {
- return m.userId !== member.userId;
- }));
- });
- }
- }, "Unmute"));
- }
- });
- }
- });
- }))));
-}
-
-var MutedMemberList = function MutedMemberList(_a) {
- var sdk = _a.sdk,
- channel = _a.channel;
-
- var _b = useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = useState(false),
- hasNext = _c[0],
- setHasNext = _c[1];
-
- var _d = useState(false),
- showModal = _d[0],
- setShowModal = _d[1];
-
- useEffect(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var memberUserListQuery = channel.createMemberListQuery();
- memberUserListQuery.limit = 10;
- memberUserListQuery.mutedMemberFilter = 'muted';
- memberUserListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- setHasNext(memberUserListQuery.hasNext);
- });
- }, [channel]);
- var refreshList = useCallback(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var memberUserListQuery = channel.createMemberListQuery();
- memberUserListQuery.limit = 10;
- memberUserListQuery.mutedMemberFilter = 'muted';
- memberUserListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- setHasNext(memberUserListQuery.hasNext);
- });
- }, [channel]);
- return React.createElement(React.Fragment, null, members.map(function (member) {
- return React.createElement(UserListItem$2, {
- key: member.userId,
- user: member,
- currentUser: sdk.currentUser.userId,
- action: function action(_a) {
- var actionRef = _a.actionRef,
- parentRef = _a.parentRef;
- return React.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React.createElement(MenuItems$1, {
- closeDropdown: closeDropdown,
- openLeft: true,
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
-
- }, React.createElement(MenuItem, {
- onClick: function onClick() {
- channel.unmuteUser(member, function () {
- refreshList();
- closeDropdown();
- });
- }
- }, "Unmute"));
- }
- });
- }
- });
- }), members && members.length === 0 && React.createElement(Label, {
- className: "sendbird-channel-settings__empty-list",
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_3
- }, "No muted members yet"), hasNext && React.createElement("div", {
- className: "sendbird-channel-settings-accordion__footer"
- }, React.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- setShowModal(true);
- }
- }, "All muted members")), showModal && React.createElement(MutedMembersModal, {
- currentUser: sdk.currentUser.userId,
- channel: channel,
- hideModal: function hideModal() {
- setShowModal(false);
- refreshList();
- }
- }));
-};
-
-var mapStoreToProps$5 = function mapStoreToProps(store) {
- return {
- sdk: getSdk(store)
- };
-};
-
-var MutedMemberList$1 = withSendbirdContext(MutedMemberList, mapStoreToProps$5);
-
-var kFormatter = function kFormatter(num) {
- return Math.abs(num) > 999 ? (Math.abs(num) / 1000).toFixed(1) + "K" : num;
-};
-
-function index(_a) {
- var userQueryCreator = _a.userQueryCreator,
- channel = _a.channel;
-
- var _b = useState(false),
- frozen = _b[0],
- setFrozen = _b[1]; // work around for
- // https://sendbird.slack.com/archives/G01290GCDCN/p1595922832000900
- // SDK bug - after frozen/unfrozen myRole becomes "none"
-
-
- useEffect(function () {
- setFrozen(channel.isFrozen);
- }, [channel]);
- var stringSet = useContext(LocalizationContext).stringSet;
- return React.createElement(AccordionGroup$1, {
- className: "sendbird-channel-settings__operator"
- }, React.createElement(Accordion, {
- className: "sendbird-channel-settings__operators-list",
- id: "operators",
- renderTitle: function renderTitle() {
- return React.createElement(React.Fragment, null, React.createElement(Icon, {
- type: IconTypes.ICON_OPERATOR,
- fillColor: IconColors.PRIMARY,
- width: 24,
- height: 24,
- className: "sendbird-channel-settings__accordion-icon"
- }), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE));
- },
- renderContent: function renderContent() {
- return React.createElement(React.Fragment, null, React.createElement(OperatorList$1, {
- channel: channel
- }));
- }
- }), React.createElement(Accordion, {
- className: "sendbird-channel-settings__members-list",
- id: "members",
- renderTitle: function renderTitle() {
- return React.createElement(React.Fragment, null, React.createElement(Icon, {
- type: IconTypes.MEMBERS,
- fillColor: IconColors.PRIMARY,
- width: 24,
- height: 24,
- className: "sendbird-channel-settings__accordion-icon"
- }), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__MEMBERS__TITLE), React.createElement(Badge, {
- count: kFormatter(channel.memberCount)
- }));
- },
- renderContent: function renderContent() {
- return React.createElement(React.Fragment, null, React.createElement(MemberList$1, {
- userQueryCreator: userQueryCreator,
- channel: channel
- }));
- }
- }), // No muted members in broadcast channel
- !channel.isBroadcast && React.createElement(Accordion, {
- id: "mutedMembers",
- className: "sendbird-channel-settings__muted-members-list",
- renderTitle: function renderTitle() {
- return React.createElement(React.Fragment, null, React.createElement(Icon, {
- type: IconTypes.ICON_MUTED,
- fillColor: IconColors.PRIMARY,
- width: 24,
- height: 24,
- className: "sendbird-channel-settings__accordion-icon"
- }), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__MUTED_MEMBERS__TITLE));
- },
- renderContent: function renderContent() {
- return React.createElement(React.Fragment, null, React.createElement(MutedMemberList$1, {
- channel: channel
- }));
- }
- }), React.createElement(Accordion, {
- className: "sendbird-channel-settings__banned-members-list",
- id: "bannedMembers",
- renderTitle: function renderTitle() {
- return React.createElement(React.Fragment, null, React.createElement(Icon, {
- type: IconTypes.ICON_BANNED,
- fillColor: IconColors.PRIMARY,
- width: 24,
- height: 24,
- className: "sendbird-channel-settings__accordion-icon"
- }), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__BANNED_MEMBERS__TITLE));
- },
- renderContent: function renderContent() {
- return React.createElement(React.Fragment, null, React.createElement(BannedMemberList$1, {
- channel: channel
- }));
- }
- }), // cannot frozen broadcast channel
- !channel.isBroadcast && React.createElement("div", {
- className: "sendbird-channel-settings__freeze"
- }, React.createElement(Icon, {
- type: IconTypes.FROZEN_LIGHT,
- fillColor: IconColors.PRIMARY,
- width: 24,
- height: 24,
- className: "sendbird-channel-settings__accordion-icon"
- }), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__FREEZE_CHANNEL), React.createElement("div", {
- className: "sendbird-channel-settings__frozen-icon"
- }, frozen ? React.createElement(Icon, {
- onClick: function onClick() {
- channel.unfreeze(function () {
- setFrozen(false);
- });
- },
- type: IconTypes.TOGGLE_ON,
- width: 44,
- height: 24
- }) : React.createElement(Icon, {
- onClick: function onClick() {
- channel.freeze(function () {
- setFrozen(true);
- });
- },
- type: IconTypes.TOGGLE_OFF,
- width: 44,
- height: 24
- }))));
-}
-
-var kFormatter$1 = function kFormatter(num) {
- return Math.abs(num) > 999 ? "".concat((Math.abs(num) / 1000).toFixed(1), "K") : num;
-};
-
-function ChannelSettings(props) {
- var onCloseClick = props.onCloseClick,
- channelUrl = props.channelUrl,
- disableUserProfile = props.disableUserProfile,
- renderUserProfile = props.renderUserProfile,
- _onChannelModified = props.onChannelModified,
- renderChannelProfile = props.renderChannelProfile,
- onBeforeUpdateChannel = props.onBeforeUpdateChannel;
- var sdkStore = props.stores.sdkStore,
- _props$config = props.config,
- userListQuery = _props$config.userListQuery,
- theme = _props$config.theme,
- userId = _props$config.userId,
- logger = _props$config.logger,
- isOnline = _props$config.isOnline,
- _props$queries = props.queries,
- queries = _props$queries === void 0 ? {} : _props$queries;
- var _props$config2 = props.config,
- config = _props$config2 === void 0 ? {} : _props$config2;
- var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
- var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
- var userFilledApplicationUserListQuery = queries.applicationUserListQuery;
-
- var _useContext = useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var sdk = sdkStore.sdk,
- initialized = sdkStore.initialized; // hack to kepp track of channel updates by triggering useEffect
-
- var _useState = useState(uuidv4()),
- _useState2 = _slicedToArray(_useState, 2),
- channelUpdateId = _useState2[0],
- setChannelUpdateId = _useState2[1];
-
- var _useState3 = useState(null),
- _useState4 = _slicedToArray(_useState3, 2),
- channel = _useState4[0],
- setChannel = _useState4[1];
-
- var _useState5 = useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- invalidChannel = _useState6[0],
- setInvalidChannel = _useState6[1];
-
- var _useState7 = useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- showAccordion = _useState8[0],
- setShowAccordion = _useState8[1];
-
- var _useState9 = useState(false),
- _useState10 = _slicedToArray(_useState9, 2),
- showLeaveChannelModal = _useState10[0],
- setShowLeaveChannelModal = _useState10[1];
-
- useEffect(function () {
- logger.info('ChannelSettings: Setting up');
-
- if (!channelUrl || !initialized || !sdk) {
- logger.warning('ChannelSettings: Setting up failed', 'No channelUrl or sdk uninitialized');
- setInvalidChannel(false);
- } else {
- if (!sdk || !sdk.GroupChannel) {
- logger.warning('ChannelSettings: No GroupChannel');
- return;
- }
-
- sdk.GroupChannel.getChannel(channelUrl, function (groupChannel) {
- if (!groupChannel) {
- logger.warning('ChannelSettings: Channel not found');
- setInvalidChannel(true);
- } else {
- logger.info('ChannelSettings: Fetched group channel', groupChannel);
- setInvalidChannel(false);
- setChannel(groupChannel);
- }
- });
- }
- }, [channelUrl, initialized, channelUpdateId]);
-
- if (!channel || invalidChannel) {
- return React.createElement("div", {
- className: "sendbird-channel-settings"
- }, React.createElement("div", {
- className: "sendbird-channel-settings__header"
- }, React.createElement(Label, {
- type: LabelTypography.H_2,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React.createElement(Icon, {
- type: IconTypes.CLOSE,
- className: "sendbird-channel-settings__close-icon",
- height: "24px",
- width: "24px",
- onClick: function onClick() {
- logger.info('ChannelSettings: Click close');
- onCloseClick();
- }
- })), React.createElement("div", null, React.createElement(PlaceHolder, {
- type: PlaceHolderTypes.WRONG
- })));
- }
-
- return React.createElement(UserProfileProvider, {
- disableUserProfile: userDefinedDisableUserProfile,
- renderUserProfile: userDefinedRenderProfile,
- className: "sendbird-channel-settings"
- }, React.createElement("div", {
- className: "sendbird-channel-settings__header"
- }, React.createElement(Label, {
- type: LabelTypography.H_2,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React.createElement("div", {
- className: "sendbird-channel-settings__header-icon"
- }, React.createElement(IconButton, {
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- logger.info('ChannelSettings: Click close');
- onCloseClick();
- }
- }, React.createElement(Icon, {
- type: IconTypes.CLOSE,
- className: "sendbird-channel-settings__close-icon",
- height: "24px",
- width: "24px"
- })))), React.createElement("div", {
- className: "sendbird-channel-settings__scroll-area"
- }, renderChannelProfile ? renderChannelProfile({
- channel: channel
- }) : React.createElement(ChannelProfile, {
- disabled: !isOnline,
- channel: channel,
- userId: userId,
- theme: theme,
- onChannelInfoChange: function onChannelInfoChange(currentImg, currentTitle) {
- logger.info('ChannelSettings: Channel information being updated');
- var swapParams = sdk.getErrorFirstCallback();
-
- if (onBeforeUpdateChannel) {
- var params = onBeforeUpdateChannel(currentTitle, currentImg, channel.data); // swapParams
-
- channel.updateChannel(params, function (response, error) {
- var groupChannel = response;
-
- if (swapParams) {
- groupChannel = error;
- }
-
- _onChannelModified(groupChannel);
-
- setChannelUpdateId(uuidv4());
- });
- return;
- }
-
- channel.updateChannel(currentTitle, currentImg, channel.data, function (response, error) {
- var groupChannel = response;
-
- if (swapParams) {
- groupChannel = error;
- }
-
- logger.info('ChannelSettings: Channel information updated', groupChannel);
-
- _onChannelModified(groupChannel);
-
- setChannelUpdateId(uuidv4());
- });
- }
- }), channel.myRole === 'operator' ? React.createElement(index, {
- channel: channel,
- onChannelModified: function onChannelModified(groupChannel) {
- // setChannelUpdateId(uuidv4());
- _onChannelModified(groupChannel);
- },
- userQueryCreator: function userQueryCreator() {
- return userListQuery && typeof userListQuery === 'function' ? userListQuery() : createDefaultUserListQuery({
- sdk: sdk,
- userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
- });
- }
- }) : React.createElement(React.Fragment, null, React.createElement("div", {
- role: "switch",
- "aria-checked": showAccordion,
- tabIndex: 0,
- onKeyDown: function onKeyDown() {
- return setShowAccordion(!showAccordion);
- },
- className: "\n sendbird-channel-settings__panel-item\n sendbird-channel-settings__members\n ",
- onClick: function onClick() {
- return setShowAccordion(!showAccordion);
- }
- }, React.createElement(Icon, {
- type: IconTypes.MEMBERS,
- className: "sendbird-channel-settings__panel-icon-left",
- height: "24px",
- width: "24px",
- fillColor: IconColors.PRIMARY
- }), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, "".concat(stringSet.CHANNEL_SETTING__MEMBERS__TITLE), React.createElement(Badge, {
- count: kFormatter$1(channel.memberCount)
- })), React.createElement(Icon, {
- type: IconTypes.SHEVRON,
- className: ['sendbird-channel-settings__panel-icon-right', 'sendbird-channel-settings__panel-icon--chevron', showAccordion ? 'sendbird-channel-settings__panel-icon--open' : ''].join(' '),
- height: "24px",
- width: "24px"
- })), showAccordion && React.createElement(MemebersAccordion, {
- currentUser: userId,
- disabled: !isOnline // eslint-disable-next-line
- ,
- userQueryCreator: function userQueryCreator() {
- return userListQuery && typeof userListQuery === 'function' ? userListQuery() : createDefaultUserListQuery({
- sdk: sdk,
- userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
- });
- },
- swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
- channel: channel,
- members: channel.members,
- onInviteMemebers: function onInviteMemebers(selectedMemebers) {
- logger.info('ChannelSettings: Inviting new users');
- channel.inviteWithUserIds(selectedMemebers).then(function (res) {
- _onChannelModified(res);
-
- setChannelUpdateId(uuidv4());
- logger.info('ChannelSettings: Inviting new users success!', res);
- });
- }
- })), React.createElement("div", {
- className: "sendbird-channel-settings__panel-item\n sendbird-channel-settings__leave-channel\n ".concat(!isOnline ? 'sendbird-channel-settings__panel-item__disabled' : ''),
- role: "button",
- tabIndex: 0,
- disabled: true,
- onKeyDown: function onKeyDown() {
- if (!isOnline) {
- return;
- }
-
- setShowLeaveChannelModal(true);
- },
- onClick: function onClick() {
- if (!isOnline) {
- return;
- }
-
- setShowLeaveChannelModal(true);
- }
- }, React.createElement(Icon, {
- type: IconTypes.LEAVE,
- className: ['sendbird-channel-settings__panel-icon-left', 'sendbird-channel-settings__panel-icon__leave'].join(' '),
- height: "24px",
- width: "24px"
- }), React.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE)), showLeaveChannelModal && React.createElement(LeaveChannel, {
- onCloseModal: function onCloseModal() {
- return setShowLeaveChannelModal(false);
- },
- onLeaveChannel: function onLeaveChannel() {
- logger.info('ChannelSettings: Leaving channel', channel);
- channel.leave().then(function () {
- logger.info('ChannelSettings: Leaving channel successful!', channel);
- onCloseClick();
- });
- }
- })));
-}
-
-ChannelSettings.propTypes = {
- onCloseClick: PropTypes.func,
- onChannelModified: PropTypes.func,
- onBeforeUpdateChannel: PropTypes.func,
- renderChannelProfile: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- channelUrl: PropTypes.string.isRequired,
- queries: PropTypes.shape({
- applicationUserListQuery: PropTypes.shape({
- limit: PropTypes.number,
- userIdsFilter: PropTypes.arrayOf(PropTypes.string),
- metaDataKeyFilter: PropTypes.string,
- metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string)
- })
- }),
- // from withSendbirdContext
- stores: PropTypes.shape({
- sdkStore: PropTypes.shape({
- sdk: PropTypes.shape({
- getErrorFirstCallback: PropTypes.func,
- GroupChannel: PropTypes.oneOfType([PropTypes.shape({
- getChannel: PropTypes.func
- }), PropTypes.func]),
- createApplicationUserListQuery: PropTypes.any
- }),
- initialized: PropTypes.bool
- })
- }).isRequired,
- config: PropTypes.shape({
- userId: PropTypes.string,
- theme: PropTypes.string,
- userListQuery: PropTypes.func,
- isOnline: PropTypes.bool,
- logger: PropTypes.shape({
- info: PropTypes.func,
- error: PropTypes.func,
- warning: PropTypes.func
- })
- }).isRequired
-};
-ChannelSettings.defaultProps = {
- onBeforeUpdateChannel: null,
- queries: {},
- disableUserProfile: false,
- renderUserProfile: null,
- renderChannelProfile: null,
- onCloseClick: function onCloseClick() {},
- onChannelModified: function onChannelModified() {}
-};
-var ChannelSettings$1 = withSendbirdContext(ChannelSettings);
-
-function App(props) {
- var appId = props.appId,
- userId = props.userId,
- accessToken = props.accessToken,
- theme = props.theme,
- userListQuery = props.userListQuery,
- nickname = props.nickname,
- profileUrl = props.profileUrl,
- _props$config = props.config,
- config = _props$config === void 0 ? {} : _props$config,
- useReaction = props.useReaction,
- useMessageGrouping = props.useMessageGrouping,
- colorSet = props.colorSet,
- stringSet = props.stringSet,
- allowProfileEdit = props.allowProfileEdit,
- disableUserProfile = props.disableUserProfile,
- renderUserProfile = props.renderUserProfile,
- onProfileEditSuccess = props.onProfileEditSuccess;
-
- var _useState = useState(null),
- _useState2 = _slicedToArray(_useState, 2),
- currentChannelUrl = _useState2[0],
- setCurrentChannelUrl = _useState2[1];
-
- var _useState3 = useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- showSettings = _useState4[0],
- setShowSettings = _useState4[1];
-
- return React.createElement(Sendbird, {
- stringSet: stringSet,
- appId: appId,
- userId: userId,
- accessToken: accessToken,
- theme: theme,
- nickname: nickname,
- profileUrl: profileUrl,
- userListQuery: userListQuery,
- config: config,
- colorSet: colorSet,
- disableUserProfile: disableUserProfile,
- renderUserProfile: renderUserProfile
- }, React.createElement("div", {
- className: "sendbird-app__wrap"
- }, React.createElement("div", {
- className: "sendbird-app__channellist-wrap"
- }, React.createElement(ChannelList$1, {
- allowProfileEdit: allowProfileEdit,
- onProfileEditSuccess: onProfileEditSuccess,
- onChannelSelect: function onChannelSelect(channel) {
- if (channel && channel.url) {
- setCurrentChannelUrl(channel.url);
- } else {
- setCurrentChannelUrl('');
- }
- }
- })), React.createElement("div", {
- className: "\n ".concat(showSettings ? 'sendbird-app__conversation--settings-open' : '', "\n sendbird-app__conversation-wrap\n ")
- }, React.createElement(Conversation, {
- channelUrl: currentChannelUrl,
- onChatHeaderActionClick: function onChatHeaderActionClick() {
- if (showSettings) {
- setShowSettings(false);
- } else {
- setShowSettings(true);
- }
- },
- useReaction: useReaction,
- useMessageGrouping: useMessageGrouping
- })), showSettings && React.createElement("div", {
- className: "sendbird-app__settingspanel-wrap"
- }, React.createElement(ChannelSettings$1, {
- channelUrl: currentChannelUrl,
- onCloseClick: function onCloseClick() {
- setShowSettings(false);
- }
- }))));
-}
-App.propTypes = {
- appId: PropTypes.string.isRequired,
- userId: PropTypes.string.isRequired,
- accessToken: PropTypes.string,
- theme: PropTypes.string,
- userListQuery: PropTypes.func,
- nickname: PropTypes.string,
- profileUrl: PropTypes.string,
- allowProfileEdit: PropTypes.bool,
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- onProfileEditSuccess: PropTypes.func,
- config: PropTypes.shape({
- // None Error Warning Info 'All/Debug'
- logLevel: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
- }),
- useReaction: PropTypes.bool,
- useMessageGrouping: PropTypes.bool,
- stringSet: PropTypes.objectOf(PropTypes.string),
- colorSet: PropTypes.objectOf(PropTypes.string)
-};
-App.defaultProps = {
- accessToken: '',
- theme: 'light',
- nickname: '',
- profileUrl: '',
- userListQuery: null,
- allowProfileEdit: false,
- onProfileEditSuccess: null,
- disableUserProfile: false,
- renderUserProfile: null,
- config: {},
- useReaction: true,
- useMessageGrouping: true,
- stringSet: null,
- colorSet: null
-};
-
-export { App, Conversation as Channel, ChannelList$1 as ChannelList, ChannelSettings$1 as ChannelSettings, Sendbird as SendBirdProvider, getAllEmojisFromEmojiContainer$1 as getAllEmojisFromEmojiContainer, getEmojiCategoriesFromEmojiContainer$1 as getEmojiCategoriesFromEmojiContainer, getEmojisFromEmojiContainer$1 as getEmojisFromEmojiContainer, getStringSet, selectors as sendBirdSelectors, withSendbirdContext as withSendBird };
-//# sourceMappingURL=index.es.js.map
diff --git a/dist/index.es.js.map b/dist/index.es.js.map
deleted file mode 100644
index e9d49f8..0000000
--- a/dist/index.es.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.es.js","sources":["../../src/lib/SendbirdSdkContext.jsx","../../src/lib/dux/sdk/actionTypes.js","../../src/lib/dux/user/actionTypes.js","../../src/lib/dux/sdk/thunks.js","../../node_modules/tslib/tslib.es6.js","../../src/lib/hooks/useTheme.ts","../../src/lib/dux/sdk/initialState.js","../../src/lib/dux/sdk/reducers.js","../../src/lib/dux/user/initialState.js","../../src/lib/dux/user/reducers.js","../../src/utils/uuid.ts","../../src/lib/hooks/useOnlineStatus.js","../../src/lib/Logger/index.js","../../src/lib/pubSub/index.js","../../src/hooks/useAppendDomNode.js","../../src/ui/Label/stringSet.js","../../src/lib/LocalizationContext.tsx","../../src/lib/Sendbird.jsx","../../src/lib/UserProfileContext.jsx","../../src/smart-components/ChannelList/dux/actionTypes.js","../../src/smart-components/ChannelList/dux/initialState.js","../../src/smart-components/ChannelList/dux/reducers.js","../../src/ui/ImageRenderer/index.jsx","../../src/ui/Icon/type.js","../../src/ui/Icon/index.jsx","../../src/ui/Avatar/index.tsx","../../src/ui/ChannelAvatar/utils.ts","../../src/ui/ChannelAvatar/index.tsx","../../src/ui/Label/types.js","../../src/ui/Label/utils.js","../../src/ui/Label/index.jsx","../../src/ui/Badge/index.jsx","../../src/ui/MessageStatus/type.js","../../src/ui/FileMessage/utils.js","../../src/ui/ChannelPreview/utils.js","../../src/ui/ChannelPreview/index.jsx","../../src/ui/IconButton/index.jsx","../../src/ui/ChannelHeader/index.jsx","../../src/hooks/useModal/ModalRoot/index.jsx","../../src/ui/Button/type.js","../../src/ui/Button/utils.js","../../src/ui/Button/index.jsx","../../src/ui/Modal/index.jsx","../../src/ui/Input/index.jsx","../../src/utils/color.js","../../src/ui/TextButton/index.jsx","../../src/utils/utils.js","../../src/ui/EditUserProfile/index.tsx","../../src/ui/PlaceHolder/type.js","../../src/ui/Avatar/MutedAvatarOverlay.tsx","../../src/ui/Checkbox/index.jsx","../../src/lib/pubSub/topics.js","../../src/lib/selectors.js","../../src/ui/UserProfile/index.tsx","../../src/ui/ContextMenu/items/MenuItems.jsx","../../src/ui/SortByRow/index.jsx","../../src/ui/ContextMenu/items/EmojiListItems.jsx","../../src/ui/ContextMenu/index.jsx","../../src/ui/UserListItem/index.jsx","../../src/smart-components/InviteMembers/index.jsx","../../src/smart-components/ChannelList/components/utils.js","../../src/smart-components/ChannelList/components/AddChannel.jsx","../../src/smart-components/ChannelSettings/components/LeaveChannel.jsx","../../src/smart-components/ChannelList/components/ChannelPreviewAction.jsx","../../src/ui/Loader/index.jsx","../../src/ui/PlaceHolder/index.jsx","../../src/smart-components/ChannelList/components/Placeholder.jsx","../../src/smart-components/ChannelList/utils.js","../../src/smart-components/ChannelList/index.jsx","../../src/smart-components/Conversation/dux/actionTypes.js","../../src/ui/FileViewer/types.js","../../src/smart-components/Conversation/types.js","../../src/smart-components/Conversation/utils.js","../../src/smart-components/Conversation/dux/initialState.js","../../src/utils/compareIds.js","../../src/smart-components/Conversation/dux/reducers.js","../../src/smart-components/Conversation/hooks/useHandleChannelEvents.js","../../src/smart-components/Conversation/hooks/useGetChannel.js","../../src/smart-components/Conversation/hooks/useInitialMessagesFetch.js","../../src/smart-components/Conversation/hooks/useHandleReconnect.js","../../src/smart-components/Conversation/hooks/useScrollCallback.js","../../src/smart-components/Conversation/hooks/useDeleteMessageCallback.js","../../src/smart-components/Conversation/hooks/useUpdateMessageCallback.js","../../src/smart-components/Conversation/hooks/useResendMessageCallback.js","../../src/smart-components/Conversation/hooks/useSendMessageCallback.js","../../src/smart-components/Conversation/hooks/useSendFileMessageCallback.js","../../src/smart-components/Conversation/hooks/useSetReadStatus.js","../../src/ui/ReactionButton/index.jsx","../../src/smart-components/Conversation/hooks/useMemoizedEmojiListItems.jsx","../../src/smart-components/Conversation/hooks/useToggleReactionCallback.js","../../src/ui/MessageStatus/index.jsx","../../src/ui/ReactionBadge/index.jsx","../../src/ui/Tooltip/index.jsx","../../src/ui/TooltipWrapper/index.jsx","../../src/ui/EmojiReactions/index.jsx","../../src/ui/Message/utils.js","../../src/ui/Message/memoizedMessageText.jsx","../../src/hooks/onMouseHover.jsx","../../src/ui/Message/index.jsx","../../src/ui/AdminMessage/index.jsx","../../src/ui/ThumbnailMessage/util.js","../../src/ui/ThumbnailMessage/index.jsx","../../src/ui/FileMessage/index.jsx","../../src/ui/DateSeparator/index.jsx","../../src/ui/MessageInput/index.jsx","../../src/ui/FileViewer/index.jsx","../../src/smart-components/Conversation/components/RemoveMessage.jsx","../../src/ui/UnknownMessage/utils.js","../../src/ui/UnknownMessage/index.jsx","../../src/ui/OGMessage/const.js","../../src/ui/OGMessage/utils.js","../../src/ui/LinkLabel/index.jsx","../../src/ui/OGMessage/memoizedMessageText.jsx","../../src/ui/OGMessage/index.jsx","../../src/smart-components/Conversation/components/MessageHOC.jsx","../../src/smart-components/Conversation/components/ConversationScroll.jsx","../../src/smart-components/Conversation/components/Notification.jsx","../../src/smart-components/Conversation/components/FrozenNotification.tsx","../../src/smart-components/Conversation/components/TypingIndicator.jsx","../../src/smart-components/Conversation/components/MessageInputWrapper.tsx","../../src/ui/ConnectionStatus/index.jsx","../../src/ui/ChatHeader/utils.js","../../src/ui/AutoRefresh/index.jsx","../../src/ui/ChatHeader/index.jsx","../../src/smart-components/Conversation/index.jsx","../../src/smart-components/ChannelSettings/components/EditDetails.jsx","../../src/smart-components/ChannelSettings/components/ChannelProfile.jsx","../../src/smart-components/ChannelSettings/components/AdminPanel/MembersModal.tsx","../../src/smart-components/ChannelSettings/components/MemebersAccordion.jsx","../../src/ui/Accordion/context.ts","../../src/ui/Accordion/AccordionGroup.tsx","../../src/ui/Accordion/index.tsx","../../src/smart-components/ChannelSettings/components/UserListItem.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/OperatorsModal.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/AddOperatorsModal.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/OperatorList.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/InviteMembersModal.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/MemberList.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/BannedMembersModal.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/BannedMemberList.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/MutedMembersModal.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/MutedMemberList.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/index.tsx","../../src/smart-components/ChannelSettings/index.jsx","../../src/smart-components/App/index.jsx"],"sourcesContent":["import React from 'react';\n\nexport const SendbirdSdkContext = React.createContext();\n\nconst withSendbirdContext = (OriginalComponent, mapStoreToProps) => {\n const ContextAwareComponent = (props) => (\n \n {(context) => {\n if (mapStoreToProps && typeof mapStoreToProps !== 'function') {\n // eslint-disable-next-line no-console\n console.warn('Second parameter to withSendbirdContext must be a pure function');\n }\n // todo - memoize\n const mergedProps = (mapStoreToProps && typeof mapStoreToProps === 'function')\n ? { ...mapStoreToProps(context), ...props }\n : { ...context, ...props };\n // eslint-disable-next-line react/jsx-props-no-spreading\n return ;\n }}\n \n );\n\n const componentName = OriginalComponent.displayName || OriginalComponent.name || 'Component';\n ContextAwareComponent.displayName = `SendbirdAware${componentName}`;\n\n return ContextAwareComponent;\n};\n\nexport default withSendbirdContext;\n","export const INIT_SDK = 'INIT_SDK';\nexport const SET_SDK_LOADING = 'SET_SDK_LOADING';\nexport const RESET_SDK = 'RESET_SDK';\nexport const SDK_ERROR = 'SDK_ERROR';\n","export const INIT_USER = 'INIT_USER';\nexport const RESET_USER = 'RESET_USER';\nexport const SET_USER_LOADING = 'SET_USER_LOADING';\nexport const UPDATE_USER_INFO = 'UPDATE_USER_INFO';\n","import Sb from 'sendbird';\n\nimport {\n INIT_SDK,\n SET_SDK_LOADING,\n RESET_SDK,\n SDK_ERROR,\n} from './actionTypes';\nimport { INIT_USER, UPDATE_USER_INFO, RESET_USER } from '../user/actionTypes';\n\nconst APP_VERSION_STRING = '__uikit_app_version__';\nconst IS_ROLLUP = '__is_rollup__';\nconst IS_ROLLUP_REPLACE = '__is_rollup_replace__';\n\nexport const disconnectSdk = ({\n sdkDispatcher,\n userDispatcher,\n sdk,\n onDisconnect,\n}) => {\n sdkDispatcher({ type: SET_SDK_LOADING, payload: true });\n if (sdk && sdk.disconnect) {\n sdk.disconnect()\n .then(() => {\n sdkDispatcher({ type: RESET_SDK });\n userDispatcher({ type: RESET_USER });\n })\n .finally(() => {\n onDisconnect();\n });\n } else {\n onDisconnect();\n }\n};\n\nexport const handleConnection = ({\n userId,\n appId,\n nickname,\n profileUrl,\n accessToken,\n sdk,\n logger,\n}, dispatchers) => {\n const {\n sdkDispatcher,\n userDispatcher,\n } = dispatchers;\n disconnectSdk({\n sdkDispatcher,\n userDispatcher,\n sdk,\n logger,\n onDisconnect: () => {\n logger.info('Setup connection');\n sdkDispatcher({ type: SET_SDK_LOADING, payload: true });\n if (userId && appId) {\n const newSdk = new Sb({ appId });\n // to check if code is released version from rollup and *not from storybook*\n // see rollup config file\n if (IS_ROLLUP === IS_ROLLUP_REPLACE) {\n newSdk.addExtension('sb_uikit', APP_VERSION_STRING);\n }\n const connectCbSucess = (user) => {\n sdkDispatcher({ type: INIT_SDK, payload: newSdk });\n userDispatcher({ type: INIT_USER, payload: user });\n // use nickname/profileUrl if provided\n // or set userID as nickname\n const newNickName = nickname || user.nickname;\n const newProfileUrl = profileUrl || user.profileUrl;\n newSdk.updateCurrentUserInfo(newNickName, newProfileUrl)\n .then((namedUser) => {\n userDispatcher({ type: UPDATE_USER_INFO, payload: namedUser });\n });\n };\n\n const connectCbError = (e) => {\n logger.error('Connection failed', `${e}`);\n sdkDispatcher({ type: RESET_SDK });\n sdkDispatcher({ type: RESET_USER });\n sdkDispatcher({ type: SDK_ERROR });\n };\n\n if (accessToken) {\n newSdk.connect(userId, accessToken)\n .then((res) => connectCbSucess(res))\n .catch((err) => connectCbError(err));\n } else {\n newSdk.connect(userId)\n .then((res) => connectCbSucess(res))\n .catch((err) => connectCbError(err));\n }\n } else {\n sdkDispatcher({ type: SDK_ERROR });\n logger.warning('Connection failed', 'UserId or appId missing');\n }\n },\n });\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { useLayoutEffect } from 'react';\nimport cssVars from 'css-vars-ponyfill';\n\nconst isEmpty = (obj) => {\n if (obj === null || obj === undefined) {\n return true;\n }\n\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n return JSON.stringify(obj) === JSON.stringify({});\n}\n\nconst useTheme = (overrides: Record): void => {\n useLayoutEffect(() => {\n if (!isEmpty(overrides)) {\n cssVars({\n variables: {\n ...{\n '--sendbird-dark-primary-500': '#4d2aa6',\n '--sendbird-dark-primary-400': '#6440C4',\n '--sendbird-dark-primary-300': '#7B53EF',\n '--sendbird-dark-primary-200': '#9E8CF5',\n '--sendbird-dark-primary-100': '#E2DFFF',\n\n '--sendbird-dark-secondary-500': '#007A7A',\n '--sendbird-dark-secondary-400': '#189A8D',\n '--sendbird-dark-secondary-300': '#2EBA9F',\n '--sendbird-dark-secondary-200': '#6FD6BE',\n '--sendbird-dark-secondary-100': '#AEF2DC',\n\n '--sendbird-dark-information-100': '#b2d9ff',\n\n '--sendbird-dark-error-500': '#A30E2D',\n '--sendbird-dark-error-400': '#C11F41',\n '--sendbird-dark-error-300': '#E53157',\n '--sendbird-dark-error-200': '#FF6183',\n '--sendbird-dark-error-100': '#FFABBD',\n\n '--sendbird-dark-background-700': '#000000',\n '--sendbird-dark-background-600': '#161616',\n '--sendbird-dark-background-500': '#2C2C2C',\n '--sendbird-dark-background-400': '#393939',\n '--sendbird-dark-background-300': '#A8A8A8',\n '--sendbird-dark-background-200': '#D9D9D9',\n '--sendbird-dark-background-100': '#F0F0F0',\n '--sendbird-dark-background-50': '#FFFFFF',\n\n '--sendbird-dark-overlay': 'rgba(0, 0, 0, 0.32)',\n\n '--sendbird-dark-onlight-01': 'rgba(0, 0, 0, 0.88)',\n '--sendbird-dark-onlight-02': 'rgba(0, 0, 0, 0.50)',\n '--sendbird-dark-onlight-03': 'rgba(0, 0, 0, 0.38)',\n '--sendbird-dark-onlight-04': 'rgba(0, 0, 0, 0.12)',\n\n '--sendbird-dark-ondark-01': 'rgba(255, 255, 255, 0.88)',\n '--sendbird-dark-ondark-02': 'rgba(255, 255, 255, 0.50)',\n '--sendbird-dark-ondark-03': 'rgba(255, 255, 255, 0.38)',\n '--sendbird-dark-ondark-04': 'rgba(255, 255, 255, 0.12)',\n\n '--sendbird-dark-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',\n\n '--sendbird-dark-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-primary-500': '#4d2aa6',\n '--sendbird-light-primary-400': '#6440C4',\n '--sendbird-light-primary-300': '#7B53EF',\n '--sendbird-light-primary-200': '#9E8CF5',\n '--sendbird-light-primary-100': '#E2DFFF',\n\n '--sendbird-light-secondary-500': '#007A7A',\n '--sendbird-light-secondary-400': '#189A8D',\n '--sendbird-light-secondary-300': '#2EBA9F',\n '--sendbird-light-secondary-200': '#6FD6BE',\n '--sendbird-light-secondary-100': '#AEF2DC',\n\n '--sendbird-light-information-100': '#b2d9ff',\n\n '--sendbird-light-error-500': '#A30E2D',\n '--sendbird-light-error-400': '#C11F41',\n '--sendbird-light-error-300': '#E53157',\n '--sendbird-light-error-200': '#FF6183',\n '--sendbird-light-error-100': '#FFABBD',\n\n '--sendbird-light-background-700': '#000000',\n '--sendbird-light-background-600': '#161616',\n '--sendbird-light-background-500': '#2C2C2C',\n '--sendbird-light-background-400': '#393939',\n '--sendbird-light-background-300': '#A8A8A8',\n '--sendbird-light-background-200': '#D9D9D9',\n '--sendbird-light-background-100': '#F0F0F0',\n '--sendbird-light-background-50': ' #FFFFFF',\n\n '--sendbird-light-overlay': 'rgba(0, 0, 0, 0.32)',\n\n '--sendbird-light-onlight-01': 'rgba(0, 0, 0, 0.88)',\n '--sendbird-light-onlight-02': 'rgba(0, 0, 0, 0.50)',\n '--sendbird-light-onlight-03': 'rgba(0, 0, 0, 0.38)',\n '--sendbird-light-onlight-04': 'rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-ondark-01': 'rgba(255, 255, 255, 0.88)',\n '--sendbird-light-ondark-02': 'rgba(255, 255, 255, 0.50)',\n '--sendbird-light-ondark-03': 'rgba(255, 255, 255, 0.38)',\n '--sendbird-light-ondark-04': 'rgba(255, 255, 255, 0.12)',\n\n '--sendbird-light-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-light-theme-surface-2': '#EAEAEA',\n },\n ...overrides,\n },\n });\n }\n }, [overrides]);\n};\n\nexport default useTheme;\n","export default {\n initialized: false,\n loading: false,\n sdk: {},\n error: false,\n};\n","import * as sdkActions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case sdkActions.SET_SDK_LOADING:\n return {\n ...state,\n initialized: false,\n loading: action.payload,\n };\n case sdkActions.SDK_ERROR:\n return {\n ...state,\n initialized: false,\n loading: false,\n error: true,\n };\n case sdkActions.INIT_SDK:\n return {\n sdk: action.payload,\n initialized: true,\n loading: false,\n error: false,\n };\n case sdkActions.RESET_SDK:\n return initialState;\n default:\n return state;\n }\n}\n","export default {\n initialized: false,\n loading: false,\n user: {},\n};\n","import * as actions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actions.INIT_USER:\n return {\n initialized: true,\n loading: false,\n user: action.payload,\n };\n case actions.RESET_USER:\n return initialState;\n case actions.UPDATE_USER_INFO:\n return {\n ...state,\n user: action.payload,\n };\n default:\n return state;\n }\n}\n","/* eslint-disable no-bitwise */\n/* eslint-disable eqeqeq */\n/* eslint-disable no-mixed-operators */\n// https://stackoverflow.com/a/2117523\n// used mainly for dom key generation\nexport const uuidv4 = (): string => 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n});\n\nexport default uuidv4;\n","import { useState, useEffect } from 'react';\n\nimport { uuidv4 } from '../../utils/uuid';\n\nfunction useConnectionStatus(sdk, logger) {\n const [isOnline, setIsOnline] = useState(true);\n\n useEffect(() => {\n const uniqueHandlerId = uuidv4();\n logger.warning('sdk changed', uniqueHandlerId);\n let handler;\n if (sdk && sdk.ConnectionHandler) {\n handler = new sdk.ConnectionHandler();\n\n handler.onReconnectStarted = () => {\n setIsOnline(false);\n logger.warning('onReconnectStarted', { isOnline });\n };\n handler.onReconnectSucceeded = () => {\n setIsOnline(true);\n logger.warning('onReconnectSucceeded', { isOnline });\n };\n handler.onReconnectFailed = () => {\n sdk.reconnect();\n logger.warning('onReconnectFailed');\n };\n logger.info('Added ConnectionHandler', uniqueHandlerId);\n sdk.addConnectionHandler(uniqueHandlerId, handler);\n }\n return () => {\n try {\n sdk.removeConnectionHandler(uniqueHandlerId);\n logger.info('Removed ConnectionHandler', uniqueHandlerId);\n } catch {\n //\n }\n };\n }, [sdk]);\n\n useEffect(() => {\n const tryReconnect = () => {\n try {\n logger.warning('Try reconnecting SDK');\n if (sdk.getConnectionState() !== 'OPEN') { // connection is not broken yet\n sdk.reconnect();\n }\n } catch {\n //\n }\n };\n // addEventListener version\n window.addEventListener('online', tryReconnect);\n return () => {\n window.removeEventListener('online', tryReconnect);\n };\n }, [sdk]);\n\n // add offline-class to body\n useEffect(() => {\n const body = document.querySelector('body');\n if (!isOnline) {\n try {\n body.classList.add('sendbird__offline');\n logger.info('Added class sendbird__offline to body');\n } catch (e) {\n //\n }\n } else {\n try {\n body.classList.remove('sendbird__offline');\n logger.info('Removed class sendbird__offline from body');\n } catch (e) {\n //\n }\n }\n }, [isOnline]);\n\n return isOnline;\n}\n\nexport default useConnectionStatus;\n","export const LOG_LEVELS = {\n DEBUG: 'debug',\n WARNING: 'warning',\n ERROR: 'error',\n INFO: 'info',\n ALL: 'all',\n};\n\nconst colorLog = (level) => {\n switch (level) {\n case LOG_LEVELS.WARNING:\n return ('color: Orange');\n case LOG_LEVELS.ERROR:\n return ('color: Red');\n default:\n return ('color: Gray');\n }\n};\n\nexport const printLog = ({\n level,\n title,\n description = '',\n}) => {\n // eslint-disable-next-line no-console\n console.log(\n `%c SendbirdUIKit | ${level} | ${new Date().toISOString()} | ${title} ${description && '|'}`, colorLog(level),\n description,\n );\n};\n\nexport const getDefaultLogger = () => ({\n info: () => {},\n error: () => {},\n warning: () => {},\n});\n\nexport const LoggerFactory = (lvl, customInterface) => {\n const logInterface = customInterface || printLog;\n const lvlArray = Array.isArray(lvl) ? lvl : [lvl];\n\n const applyLog = (lgLvl) => (title, description) => logInterface({\n level: lgLvl,\n title,\n description,\n });\n\n const logger = lvlArray.reduce((accumulator, currentLvl) => {\n if (currentLvl === LOG_LEVELS.DEBUG || currentLvl === LOG_LEVELS.ALL) {\n return ({\n ...accumulator,\n info: applyLog(LOG_LEVELS.INFO),\n error: applyLog(LOG_LEVELS.ERROR),\n warning: applyLog(LOG_LEVELS.WARNING),\n });\n }\n\n if (currentLvl === LOG_LEVELS.INFO) {\n return ({\n ...accumulator,\n info: applyLog(LOG_LEVELS.INFO),\n });\n }\n\n if (currentLvl === LOG_LEVELS.ERROR) {\n return ({\n ...accumulator,\n error: applyLog(LOG_LEVELS.ERROR),\n });\n }\n\n if (currentLvl === LOG_LEVELS.WARNING) {\n return ({\n ...accumulator,\n warning: applyLog(LOG_LEVELS.WARNING),\n });\n }\n\n return { ...accumulator };\n }, getDefaultLogger());\n return logger;\n};\n","// https://davidwalsh.name/pubsub-javascript\nexport default () => {\n const topics = {};\n const hOP = topics.hasOwnProperty;\n\n return {\n __getTopics: () => topics,\n subscribe: (topic, listener) => {\n // Create the topic's object if not yet created\n if (!hOP.call(topics, topic)) { topics[topic] = []; }\n\n // Add the listener to queue\n const index = topics[topic].push(listener) - 1;\n\n // Provide handle back for removal of topic\n return {\n remove: () => {\n delete topics[topic][index];\n },\n };\n },\n publish: (topic, info) => {\n // If the topic doesn't exist, or there's no listeners in queue, just leave\n if (!hOP.call(topics, topic)) { return; }\n\n // Cycle through topics queue, fire!\n topics[topic].forEach((item) => {\n item(info !== undefined ? info : {});\n });\n },\n };\n};\n","import { useEffect } from 'react';\n\nfunction useAppendDomNode(ids = [], rootSelector) {\n useEffect(() => {\n const root = document.querySelector(rootSelector);\n ids.forEach((id) => {\n const elem = document.createElement('div');\n elem.setAttribute('id', id);\n root.appendChild(elem);\n });\n return () => {\n ids.forEach((id) => {\n const target = document.getElementById(id);\n if (target) {\n root.removeChild(target);\n }\n });\n };\n }, []);\n}\n\nexport default useAppendDomNode;\n","const getStringSet = (lang = 'en') => {\n const stringSet = {\n en: {\n TRYING_TO_CONNECT: 'Trying to connect…',\n USER_PROFILE__MESSAGE: 'Message',\n USER_PROFILE__USER_ID: 'User ID',\n EDIT_PROFILE__TITLE: 'My profile',\n EDIT_PROFILE__IMAGE_LABEL: 'Profile image',\n EDIT_PROFILE__IMAGE_UPLOAD: 'Upload',\n EDIT_PROFILE__NICKNAME_LABEL: 'Nickname',\n EDIT_PROFILE__NICKNAME_PLACEHOLDER: 'Enter your nickname',\n EDIT_PROFILE__USERID_LABEL: 'User ID',\n EDIT_PROFILE__THEME_LABEL: 'Dark theme',\n CHANNEL_LIST__TITLE: 'Channels',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER: 'Enter message',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED: 'Chat is unavailable in this channel',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED: 'Chat is unavailable because you are being muted',\n CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE: 'new message(s) since',\n CHANNEL__MESSAGE_LIST__NOTIFICATION__ON: 'on',\n CHANNEL_SETTING__HEADER__TITLE: 'Channel information',\n CHANNEL_SETTING__PROFILE__EDIT: 'Edit',\n CHANNEL_SETTING__MEMBERS__TITLE: 'Members',\n CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS: 'All members',\n CHANNEL_SETTING__MEMBERS__INVITE_MEMBER: 'Invite users',\n CHANNEL_SETTING__LEAVE_CHANNEL__TITLE: 'Leave channel',\n CHANNEL_SETTING__OPERATORS__TITLE: 'Operators',\n CHANNEL_SETTING__OPERATORS__TITLE_ALL: 'All operators',\n CHANNEL_SETTING__OPERATORS__TITLE_ADD: 'Add operator',\n CHANNEL_SETTING__MUTED_MEMBERS__TITLE: 'Muted members',\n CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL: 'All muted members',\n CHANNEL_SETTING__BANNED_MEMBERS__TITLE: 'Banned members',\n CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL: 'All banned members',\n CHANNEL_SETTING__FREEZE_CHANNEL: 'Freeze Channel',\n BUTTON__CANCEL: 'Cancel',\n BUTTON__DELETE: 'Delete',\n BUTTON__SAVE: 'Save',\n BUTTON__CREATE: 'Create',\n BUTTON__INVITE: 'Invite',\n BUTTON__CLOSE: 'Close',\n BADGE__OVER: '+',\n MODAL__DELETE_MESSAGE__TITLE: 'Delete this message?',\n MODAL__CHANNEL_INFORMATION__TITLE: 'Edit channel information',\n MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE: 'Channel image',\n MODAL__CHANNEL_INFORMATION__UPLOAD: 'Upload',\n MODAL__CHANNEL_INFORMATION__CHANNEL_NAME: 'Channel name',\n MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER: 'Enter name',\n MODAL__INVITE_MEMBER__TITLE: 'Invite member',\n MODAL__INVITE_MEMBER__SELECTEC: 'selected',\n MODAL__CREATE_CHANNEL__TITLE: 'New channel',\n MODAL__CREATE_CHANNEL__SELECTED: 'selected',\n MODAL__USER_LIST__TITLE: 'members',\n TYPING_INDICATOR__IS_TYPING: 'is typing...',\n TYPING_INDICATOR__AND: 'and',\n TYPING_INDICATOR__ARE_TYPING: 'are typing...',\n TYPING_INDICATOR__MULTIPLE_TYPING: 'Several people are typing...',\n MESSAGE_STATUS__SENDING_FAILED: 'Couldn\\'t send message.',\n MESSAGE_STATUS__TRY_AGAIN: 'Try again',\n MESSAGE_STATUS__OR: 'or',\n MESSAGE_STATUS__DELETE: 'delete',\n PLACE_HOLDER__NO_CHANNEL: 'No channels',\n CHANNEL_FROZEN: 'Channel frozen',\n MUTED_PL: 'Channel frozen',\n PLACE_HOLDER__WRONG: 'Something went wrong',\n PLACE_HOLDER__RETRY_TO_CONNECT: 'Retry',\n NO_TITLE: 'No title',\n NO_NAME: '(No name)',\n NO_MEMBERS: '(No members)',\n TOOLTIP__AND_YOU: ', and you',\n TOOLTIP__YOU: 'you',\n TOOLTIP__UNKOWN_USER: '(no name)',\n UNKNOWN__UNKNOWN_MESSAGE_TYPE: '(Unknown message type)',\n UNKNOWN__CANNOT_READ_MESSAGE: 'Cannot read this message.',\n MESSAGE_EDITED: '(edited)',\n },\n };\n return stringSet[lang];\n};\n\nexport default getStringSet;\n","import React from 'react';\n\nimport getStringSet from '../ui/Label/stringSet';\n\nconst LocalizationContext = React.createContext({\n stringSet: getStringSet('en'),\n});\n\ninterface LocalizationProviderProps {\n stringSet: Record;\n children: React.Component;\n}\n\nconst LocalizationProvider = (props: LocalizationProviderProps): React.ReactNode => {\n const { children } = props;\n return (\n \n {children}\n \n );\n};\n\nexport { LocalizationContext, LocalizationProvider };\n","import './index.scss';\n\nimport React, { useEffect, useReducer, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { SendbirdSdkContext } from './SendbirdSdkContext';\nimport { handleConnection } from './dux/sdk/thunks';\n\nimport useTheme from './hooks/useTheme';\n\nimport sdkReducers from './dux/sdk/reducers';\nimport userReducers from './dux/user/reducers';\nimport sdkInitialState from './dux/sdk/initialState';\nimport userInitialState from './dux/user/initialState';\n\nimport useOnlineStatus from './hooks/useOnlineStatus';\n\nimport { LoggerFactory } from './Logger';\nimport pubSubFactory from './pubSub/index';\nimport useAppendDomNode from '../hooks/useAppendDomNode';\n\nimport { LocalizationProvider } from './LocalizationContext';\nimport getStringSet from '../ui/Label/stringSet';\n\nexport default function Sendbird(props) {\n const {\n userId,\n appId,\n accessToken,\n children,\n disableUserProfile,\n renderUserProfile,\n allowProfileEdit,\n theme,\n nickname,\n profileUrl,\n userListQuery,\n config = {},\n colorSet,\n stringSet,\n } = props;\n\n const {\n logLevel = '',\n } = config;\n const [logger, setLogger] = useState(LoggerFactory(logLevel));\n const [pubSub, setPubSub] = useState();\n const [sdkStore, sdkDispatcher] = useReducer(sdkReducers, sdkInitialState);\n const [userStore, userDispatcher] = useReducer(userReducers, userInitialState);\n\n useTheme(colorSet);\n\n useEffect(() => {\n setPubSub(pubSubFactory());\n }, []);\n\n useEffect(() => {\n logger.info('App Init');\n // dispatch action\n handleConnection({\n userId,\n appId,\n accessToken,\n sdkStore,\n nickname,\n profileUrl,\n sdk: sdkStore.sdk,\n logger,\n }, {\n sdkDispatcher,\n userDispatcher,\n });\n }, [userId, appId, accessToken]);\n\n // to create a pubsub to communicate between parent and child\n useEffect(() => {\n setLogger(LoggerFactory(logLevel));\n }, [logLevel]);\n\n useAppendDomNode([\n 'sendbird-modal-root',\n 'sendbird-dropdown-portal',\n 'sendbird-emoji-list-portal',\n ], 'body');\n\n // should move to reducer\n const [currenttheme, setCurrenttheme] = useState(theme);\n useEffect(() => {\n setCurrenttheme(theme);\n }, [theme]);\n // add-remove theme from body\n useEffect(() => {\n logger.info('Setup theme', `Theme: ${currenttheme}`);\n try {\n const body = document.querySelector('body');\n body.classList.add(`sendbird-theme--${currenttheme || 'light'}`);\n logger.info('Finish setup theme');\n // eslint-disable-next-line no-empty\n } catch (e) {\n logger.warning('Setup theme failed', `${e}`);\n }\n return () => {\n try {\n const body = document.querySelector('body');\n body.classList.remove('sendbird-theme--light');\n body.classList.remove('sendbird-theme--dark');\n // eslint-disable-next-line no-empty\n } catch { }\n };\n }, [currenttheme]);\n\n const isOnline = useOnlineStatus(sdkStore.sdk, logger);\n\n const localeStringSet = React.useMemo(() => {\n if (!stringSet) {\n return getStringSet('en');\n }\n return {\n ...getStringSet('en'),\n ...stringSet,\n };\n }, [stringSet]);\n\n return (\n {\n handleConnection({\n userId,\n appId,\n accessToken,\n sdkStore,\n nickname,\n profileUrl,\n logger,\n sdk: sdkStore.sdk,\n }, {\n sdkDispatcher,\n userDispatcher,\n });\n },\n },\n config: {\n disableUserProfile,\n renderUserProfile,\n allowProfileEdit,\n isOnline,\n userId,\n appId,\n accessToken,\n theme: currenttheme,\n setCurrenttheme,\n userListQuery,\n logger,\n pubSub,\n },\n }}\n >\n \n {children}\n \n \n );\n}\n\nSendbird.propTypes = {\n userId: PropTypes.string.isRequired,\n appId: PropTypes.string.isRequired,\n accessToken: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n theme: PropTypes.string,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n userListQuery: PropTypes.func,\n config: PropTypes.shape({\n // None Error Warning Info 'All/Debug'\n logLevel: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }),\n stringSet: PropTypes.objectOf(PropTypes.string),\n colorSet: PropTypes.objectOf(PropTypes.string),\n};\n\nSendbird.defaultProps = {\n accessToken: '',\n theme: 'light',\n nickname: '',\n profileUrl: '',\n disableUserProfile: false,\n renderUserProfile: null,\n allowProfileEdit: false,\n userListQuery: null,\n config: {},\n stringSet: null,\n colorSet: null,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst UserProfileContext = React.createContext({\n disableUserProfile: true,\n renderUserProfile: null,\n});\n\nconst UserProfileProvider = (props) => {\n const { children, className } = props;\n return (\n \n \n {children}\n
\n \n );\n};\n\nUserProfileProvider.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n disableUserProfile: PropTypes.bool,\n // eslint-disable-next-line react/no-unused-prop-types\n renderUserProfile: PropTypes.func,\n className: PropTypes.string,\n};\n\nUserProfileProvider.defaultProps = {\n className: null,\n disableUserProfile: false,\n renderUserProfile: null,\n};\n\nexport { UserProfileContext, UserProfileProvider };\n","export const RESET_CHANNEL_LIST = 'RESET_CHANNEL_LIST';\nexport const CREATE_CHANNEL = 'CREATE_CHANNEL';\nexport const UNLOAD_CHANNELS = 'UNLOAD_CHANNELS';\nexport const SET_CHANNEL_LOADING = 'SET_CHANNEL_LOADING';\nexport const LEAVE_CHANNEL_SUCCESS = 'LEAVE_CHANNEL_SUCCESS';\n\nexport const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\n\nexport const SHOW_CHANNEL_SETTINGS = 'SHOW_CHANNEL_SETTINGS';\nexport const HIDE_CHANNEL_SETTINGS = 'HIDE_CHANNEL_SETTINGS';\n\nexport const FETCH_CHANNELS_START = 'FETCH_CHANNELS_START';\nexport const FETCH_CHANNELS_SUCCESS = 'FETCH_CHANNELS_SUCCESS';\nexport const FETCH_CHANNELS_FAILURE = 'FETCH_CHANNELS_FAILURE';\n\nexport const INIT_CHANNELS_START = 'INIT_CHANNELS_START';\nexport const INIT_CHANNELS_SUCCESS = 'INIT_CHANNELS_SUCCESS';\nexport const INIT_CHANNELS_FAILURE = 'INIT_CHANNELS_FAILURE';\n\nexport const INVITE_MEMBERS_SUCESS = 'INVITE_MEMBERS_SUCESS';\n\nexport const ON_USER_JOINED = 'ON_USER_JOINED';\nexport const ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';\nexport const ON_LAST_MESSAGE_UPDATED = 'ON_LAST_MESSAGE_UPDATED';\nexport const ON_USER_LEFT = 'ON_USER_LEFT';\nexport const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';\nexport const ON_CHANNEL_ARCHIVED = 'ON_CHANNEL_ARCHIVED';\nexport const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';\nexport const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';\n\nexport const ON_READ_RECEIPT_UPDATED = 'ON_READ_RECEIPT_UPDATED';\nexport const ON_DELIVERY_RECEIPT_UPDATED = 'ON_DELIVERY_RECEIPT_UPDATED';\n\nexport const CHANNEL_REPLACED_TO_TOP = 'CHANNEL_REPLACED_TO_TOP';\n","export default {\n // we might not need this initialized state -> should remove\n initialized: false,\n loading: false,\n allChannels: [],\n currentChannel: null,\n showSettings: false,\n};\n","import * as actions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actions.INIT_CHANNELS_START:\n return {\n ...state,\n loading: true,\n };\n case actions.RESET_CHANNEL_LIST:\n return initialState;\n case actions.INIT_CHANNELS_SUCCESS:\n return {\n ...state,\n initialized: true,\n loading: false,\n allChannels: action.payload,\n currentChannel: (action.payload && action.payload.length && action.payload.length > 0)\n ? action.payload[0].url\n : null,\n };\n case actions.FETCH_CHANNELS_SUCCESS: {\n const currentChannels = state.allChannels.map((c) => c.url);\n const filteredChannels = action.payload.filter(\n ({ url }) => !(currentChannels.find((c) => c === url)),\n );\n return {\n ...state,\n allChannels: [\n ...state.allChannels,\n ...filteredChannels,\n ],\n };\n }\n case actions.CREATE_CHANNEL: {\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter(\n (channel) => channel.url !== action.payload.url,\n )],\n currentChannel: action.payload.url,\n };\n }\n case actions.ON_CHANNEL_ARCHIVED:\n case actions.LEAVE_CHANNEL_SUCCESS:\n case actions.ON_CHANNEL_DELETED: {\n const channelUrl = action.payload;\n const leftCurrentChannel = (state.currentChannel === channelUrl);\n const newAllChannels = state.allChannels.filter(({ url }) => url !== channelUrl);\n const currentChannel = leftCurrentChannel\n ? (() => (\n (newAllChannels.length > 0)\n ? newAllChannels[0].url\n : ''\n ))()\n : state.currentChannel;\n\n return {\n ...state,\n currentChannel,\n allChannels: newAllChannels,\n };\n }\n case actions.ON_USER_LEFT: {\n const { channel, isMe } = action.payload;\n const { url } = channel;\n if (isMe) {\n const leftCurrentChannel = (url === state.currentChannel);\n const newAllChannels = state.allChannels.filter((c) => (c.url !== url));\n const currentChannel = leftCurrentChannel\n ? (() => (\n (newAllChannels.length > 0)\n ? newAllChannels[0].url\n : ''\n ))()\n : state.currentChannel;\n\n return {\n ...state,\n currentChannel,\n allChannels: newAllChannels,\n };\n }\n // other user left\n const newAllChannels = state.allChannels.map((c) => ((c.url === url) ? channel : c));\n return {\n ...state,\n allChannels: newAllChannels,\n };\n }\n case actions.ON_USER_JOINED:\n case actions.ON_CHANNEL_CHANGED:\n case actions.ON_READ_RECEIPT_UPDATED:\n case actions.ON_DELIVERY_RECEIPT_UPDATED: {\n const { allChannels = [] } = state;\n const { unreadMessageCount } = action.payload;\n const channel = action.payload;\n if (!channel.lastMessage) {\n return state;\n }\n // if its only an unread message count change, dont push to top\n if (unreadMessageCount === 0) {\n const currentChannel = allChannels.find(({ url }) => url === channel.url);\n const currentUnReadCount = currentChannel && currentChannel.unreadMessageCount;\n if (currentUnReadCount === 0) {\n return {\n ...state,\n allChannels: allChannels.map((c) => {\n if (c.url === channel.url) {\n return channel;\n }\n return c;\n }),\n };\n }\n }\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter(({ url }) => url !== action.payload.url),\n ],\n };\n }\n case actions.SET_CURRENT_CHANNEL:\n return {\n ...state,\n currentChannel: action.payload,\n };\n case actions.SHOW_CHANNEL_SETTINGS:\n return {\n ...state,\n showSettings: true,\n };\n case actions.HIDE_CHANNEL_SETTINGS:\n return {\n ...state,\n showSettings: false,\n };\n case actions.ON_LAST_MESSAGE_UPDATED:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n return action.payload;\n }\n return channel;\n }),\n };\n case actions.ON_CHANNEL_FROZEN:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n // eslint-disable-next-line no-param-reassign\n channel.isFrozen = true;\n return channel;\n }\n return channel;\n }),\n };\n case actions.ON_CHANNEL_UNFROZEN:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n // eslint-disable-next-line no-param-reassign\n channel.isFrozen = false;\n return channel;\n }\n return channel;\n }),\n };\n case actions.CHANNEL_REPLACED_TO_TOP:\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter((channel) => channel.url !== action.payload.url),\n ],\n };\n default:\n return state;\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\n/*\n ImageRenderer displays image with url or source\n it checks if the source exist with img tag first\n if it exists onLoad is called, if not onError is called\n and those properties switch img tag to real purposing element\n*/\n\nexport default function ImageRenderer({\n alt,\n url,\n width,\n height,\n className,\n defaultComponent,\n circle,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift('sendbird-image-renderer');\n const [realElement, setRealElement] = useState(null);\n useEffect(() => {\n setRealElement(null);\n }, [url]);\n return (\n realElement || (\n {\n setRealElement(typeof defaultComponent === 'function' ? defaultComponent() : defaultComponent);\n }}\n onLoad={() => {\n setRealElement((\n
\n ));\n }}\n />\n )\n );\n}\n\nImageRenderer.propTypes = {\n alt: PropTypes.string,\n url: PropTypes.string.isRequired,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).isRequired,\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.string,\n ]),\n defaultComponent: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]).isRequired,\n circle: PropTypes.bool,\n};\nImageRenderer.defaultProps = {\n alt: '',\n className: '',\n circle: false,\n};\n","export default {\n ADD: 'ADD',\n ATTACH: 'ATTACH',\n ARROW_LEFT: 'ARROW_LEFT',\n AVATAR_DARK: 'AVATAR_DARK',\n AVATAR_LIGHT: 'AVATAR_LIGHT',\n BROADCAST_LARGE_DARK: 'BROADCAST_LARGE_DARK',\n BROADCAST_LARGE_LIGHT: 'BROADCAST_LARGE_LIGHT',\n BROADCAST_DARK: 'BROADCAST_DARK',\n BROADCAST_LIGHT: 'BROADCAST_LIGHT',\n BROADCAST: 'BROADCAST',\n FROZEN_DARK: 'FROZEN_DARK',\n FROZEN_LIGHT: 'FROZEN_LIGHT',\n CAMERA: 'CAMERA',\n MORE: 'MORE',\n MUTE: 'MUTE',\n NO_THUMBNAIL: 'NO_THUMBNAIL',\n CHECKBOX: 'CHECKBOX',\n CHECKBOX_OFF: 'CHECKBOX_OFF',\n CLOSE: 'CLOSE',\n COPY: 'COPY',\n CHAT: 'CHAT',\n CREATE: 'CREATE',\n DELETE: 'DELETE',\n DISCONNECTED: 'DISCONNECTED',\n DUMMY: 'DUMMY',\n EDIT: 'EDIT',\n ERROR: 'ERROR',\n ERROR_FILLED: 'ERROR_FILLED',\n EMOJI_FAILED: 'EMOJI_FAILED',\n EMOJI_REACTIONS_ADD: 'EMOJI_REACTIONS_ADD',\n EMOJI_REACTIONS_ADD_GRAY: 'EMOJI_REACTIONS_ADD_GRAY',\n DELIVERED: 'DELIVERED',\n DOCUMENT: 'DOCUMENT',\n DOWNLOAD: 'DOWNLOAD',\n FILE_AUDIO: 'FILE_AUDIO',\n FILE_DOCUMENT: 'FILE_DOCUMENT',\n GIF: 'GIF',\n INFO: 'INFO',\n LEAVE: 'LEAVE',\n MEMBERS: 'MEMBERS',\n NOTIFICATIONS: 'NOTIFICATIONS',\n PHOTO: 'PHOTO',\n PLAY: 'PLAY',\n PLUS: 'PLUS',\n READ: 'READ',\n REFRESH: 'REFRESH',\n SEND: 'SEND',\n SENT: 'SENT',\n SUPER_GROUP: 'SUPER_GROUP',\n SHEVRON: 'SHEVRON',\n SHEVRON_DOWN: 'SHEVRON_DOWN',\n SPINNER: 'SPINNER',\n SPINNER_LARGE: 'SPINNER_LARGE',\n USER: 'USER',\n ICON_OPERATOR: 'ICON_OPERATOR',\n ICON_BANNED: 'ICON_BANNED',\n ICON_FREEZE: 'ICON_FREEZE',\n ICON_MUTED: 'ICON_MUTED',\n ICON_MUTED_FG: 'ICON_MUTED_FG',\n TOGGLE_ON: 'TOGGLE_ON',\n TOGGLE_OFF: 'TOGGLE_OFF',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Type from './type';\n\nimport IconAdd from '../../svgs/icon-add.svg';\nimport IconAttach from '../../svgs/icon-attach.svg';\nimport IconArrowLeft from '../../svgs/icon-arrow-left.svg';\nimport IconAvatarDark from '../../svgs/icon-avatar-dark.svg';\nimport IconAvatarLight from '../../svgs/icon-avatar-light.svg';\nimport BroadcastLargeDark from '../../svgs/icon-broadcast-lrg-dark.svg';\nimport BroadcastLargeLight from '../../svgs/icon-broadcast-lrg-light.svg';\nimport BroadcastDark from '../../svgs/icon-broadcast-dark.svg';\nimport BroadcastLight from '../../svgs/icon-broadcast-light.svg';\nimport Broadcast from '../../svgs/icon-broadcast.svg';\nimport FrozenDark from '../../svgs/frozen-dark.svg';\nimport FrozenLight from '../../svgs/frozen-light.svg';\nimport IconCamera from '../../svgs/icon-camera.svg';\nimport IconMore from '../../svgs/icon-more.svg';\nimport IconMute from '../../svgs/icon-mute.svg';\nimport IconNoThumbnail from '../../svgs/icon-no-thumbnail.svg';\nimport IconCheckbox from '../../svgs/icon-checkbox.svg';\nimport IconCheckboxOff from '../../svgs/icon-checkbox-off.svg';\nimport IconClose from '../../svgs/icon-close.svg';\nimport IconCopy from '../../svgs/icon-copy.svg';\nimport IconChat from '../../svgs/icon-chat.svg';\nimport IconSupergroup from '../../svgs/icon-supergroup.svg';\nimport IconCreate from '../../svgs/icon-create.svg';\nimport IconDelete from '../../svgs/icon-delete.svg';\nimport IconDummy from '../../svgs/icon-dummy.svg';\nimport IconEdit from '../../svgs/icon-edit.svg';\nimport IconError from '../../svgs/icon-error.svg';\nimport IconErrorFilled from '../../svgs/icon-error-filled.svg';\nimport IconEmojiFailed from '../../svgs/emoji-fail.svg';\nimport IconEmojiReactionsAdd from '../../svgs/icon-reactions-add.svg';\nimport IconEmojiReactionsAddGray from '../../svgs/icon-emoji-reactions-add.svg';\nimport IconDelivered from '../../svgs/icon-delivered.svg';\nimport IconDisconnected from '../../svgs/icon-disconnected.svg';\nimport IconDocument from '../../svgs/icon-document.svg';\nimport IconDownload from '../../svgs/icon-download.svg';\nimport IconFileAudio from '../../svgs/icon-file-audio.svg';\nimport IconFileDocument from '../../svgs/icon-file-document.svg';\nimport IconGif from '../../svgs/icon-gif.svg';\nimport IconInfo from '../../svgs/icon-info.svg';\nimport IconLeave from '../../svgs/icon-leave.svg';\nimport IconMembers from '../../svgs/icon-members.svg';\nimport IconNotifications from '../../svgs/icon-notifications.svg';\nimport IconPhoto from '../../svgs/icon-photo.svg';\nimport IconPlay from '../../svgs/icon-play.svg';\nimport IconPlus from '../../svgs/icon-plus.svg';\nimport IconRead from '../../svgs/icon-read.svg';\nimport IconRefresh from '../../svgs/icon-refresh.svg';\nimport IconSend from '../../svgs/icon-send.svg';\nimport IconSent from '../../svgs/icon-sent.svg';\nimport IconShevron from '../../svgs/icon-shevron.svg';\nimport IconShevronDown from '../../svgs/icon-shevron-down.svg';\nimport IconSpinner from '../../svgs/icon-spinner-small.svg';\nimport IconSpinnerLarge from '../../svgs/icon-spinner-large.svg';\nimport IconUser from '../../svgs/icon-user.svg';\nimport IconOperator from '../../svgs/icon-operator.svg';\nimport IconBanned from '../../svgs/icon-banned.svg';\nimport IconMuted from '../../svgs/icon-muted.svg';\nimport IconMutedFg from '../../svgs/icon-muted-foreground.svg';\nimport IconFreeze from '../../svgs/icon-freeze.svg';\nimport ToggleOn from '../../svgs/icon-toggleon.svg';\nimport ToggleOff from '../../svgs/icon-toggleoff.svg';\n\nconst Colors = {\n DEFAULT: 'DEFAULT',\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n CONTENT: 'CONTENT',\n CONTENT_INVERSE: 'CONTENT_INVERSE',\n WHITE: 'WHITE',\n SENT: 'SENT',\n READ: 'READ',\n ON_BACKGROUND_3: 'ON_BACKGROUND_3',\n};\n\nfunction changeColorToClassName(color) {\n switch (color) {\n case Colors.PRIMARY: return 'sendbird-color--primary';\n case Colors.SECONDARY: return 'sendbird-color--secondary';\n case Colors.CONTENT: return 'sendbird-color--content';\n case Colors.CONTENT_INVERSE: return 'sendbird-color--content-inverse';\n case Colors.WHITE: return 'sendbird-color--white';\n case Colors.SENT: return 'sendbird-color--sent';\n case Colors.READ: return 'sendbird-color--read';\n case Colors.ON_BACKGROUND_3: return 'sendbird-color--on-background';\n default: return '';\n }\n}\n\nfunction changeTypeToIconComponent(type) {\n switch (type) {\n case Type.ADD: return ;\n case Type.ARROW_LEFT: return ;\n case Type.CAMERA: return ;\n case Type.ATTACH: return ;\n case Type.AVATAR_DARK: return ;\n case Type.AVATAR_LIGHT: return ;\n case Type.BROADCAST_LARGE_DARK: return ;\n case Type.BROADCAST_LARGE_LIGHT: return ;\n case Type.BROADCAST_DARK: return ;\n case Type.BROADCAST_LIGHT: return ;\n case Type.BROADCAST: return ;\n case Type.FROZEN_DARK: return ;\n case Type.FROZEN_LIGHT: return ;\n case Type.MORE: return ;\n case Type.MUTE: return ;\n case Type.NO_THUMBNAIL: return ;\n case Type.CHECKBOX: return ;\n case Type.CHECKBOX_OFF: return ;\n case Type.CLOSE: return ;\n case Type.COPY: return ;\n case Type.CHAT: return ;\n case Type.SUPER_GROUP: return ;\n case Type.CREATE: return ;\n case Type.DELETE: return ;\n case Type.DISCONNECTED: return ;\n case Type.DUMMY: return ;\n case Type.EDIT: return ;\n case Type.ERROR: return ;\n case Type.ERROR_FILLED: return ;\n case Type.EMOJI_FAILED: return ;\n case Type.EMOJI_REACTIONS_ADD: return ;\n case Type.EMOJI_REACTIONS_ADD_GRAY: return ;\n case Type.DELIVERED: return ;\n case Type.DOCUMENT: return ;\n case Type.DOWNLOAD: return ;\n case Type.FILE_AUDIO: return ;\n case Type.FILE_DOCUMENT: return ;\n case Type.GIF: return ;\n case Type.INFO: return ;\n case Type.LEAVE: return ;\n case Type.MEMBERS: return ;\n case Type.NOTIFICATIONS: return ;\n case Type.PHOTO: return ;\n case Type.PLAY: return ;\n case Type.PLUS: return ;\n case Type.READ: return ;\n case Type.REFRESH: return ;\n case Type.SEND: return ;\n case Type.SENT: return ;\n case Type.SHEVRON: return ;\n case Type.SHEVRON_DOWN: return ;\n case Type.SPINNER: return ;\n case Type.SPINNER_LARGE: return ;\n case Type.USER: return ;\n case Type.ICON_OPERATOR: return ;\n case Type.ICON_BANNED: return ;\n case Type.ICON_MUTED: return ;\n case Type.ICON_MUTED_FG: return ;\n case Type.ICON_FREEZE: return ;\n case Type.TOGGLE_ON: return ;\n case Type.TOGGLE_OFF: return ;\n default: return null;\n }\n}\n\nexport default function Icon({\n type,\n width,\n height,\n children,\n className,\n onClick,\n fillColor,\n}) {\n const iconStyle = {\n width: typeof width === 'string' ? width : `${width}px`,\n height: typeof height === 'string' ? height : `${height}px`,\n };\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {\n children || changeTypeToIconComponent(type)\n }\n
\n );\n}\n\nIcon.propTypes = {\n type: PropTypes.oneOfType([\n PropTypes.oneOf(Object.keys(Type)),\n PropTypes.string,\n ]).isRequired,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n onClick: PropTypes.func,\n children: PropTypes.element,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n fillColor: PropTypes.oneOf(Object.keys(Colors)),\n};\n\nIcon.defaultProps = {\n onClick: () => { },\n width: 26,\n height: 26,\n children: null,\n className: '',\n fillColor: Colors.DEFAULT,\n};\n\nexport const IconTypes = Type;\nexport const IconColors = Colors;\n","import React, { ReactElement } from 'react';\n\nimport ImageRenderer from '../ImageRenderer';\nimport Icon, { IconTypes } from '../Icon';\n\nimport './index.scss';\nimport { uuidv4 } from '../../utils/uuid';\n\nconst imageRendererClassName = 'sendbird-avatar-img';\n\ninterface DefaultComponentProps {\n width: string | number,\n height: string | number,\n}\n\nconst defaultComponent = (\n {\n width,\n height,\n }: DefaultComponentProps\n) => (): ReactElement => (\n document.querySelector('.sendbird-theme--dark')\n ? \n : \n);\n\ninterface AvatarInnerProps {\n height: string | number,\n width: string | number,\n src?: string | string[],\n alt?: string,\n}\n\nexport const AvatarInner = ({\n src = '',\n alt = '',\n height,\n width,\n}: AvatarInnerProps): ReactElement => {\n if (typeof src === 'string') {\n return (\n \n );\n }\n\n if (src && src.length) {\n if (src.length === 1) {\n return (\n \n );\n }\n\n if (src.length === 2) {\n return (\n \n \n \n
\n );\n }\n\n if (src.length === 3) {\n return (\n <>\n \n \n
\n \n \n \n
\n >\n );\n }\n\n return (\n \n {\n src.slice(0, 4)\n .map((i) => (\n \n ))\n }\n
\n );\n }\n // default img\n return (\n \n );\n};\n\ninterface AvatarProps {\n height?: string | number,\n width?: string | number,\n src?: string | string[],\n alt?: string,\n onClick?(): void,\n className?: string | string[],\n}\n\nfunction Avatar(\n {\n src = '',\n alt = '',\n width = '56px',\n height = '56px',\n onClick,\n className = '',\n }: AvatarProps,\n ref: React.Ref,\n): ReactElement {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n );\n}\n\nexport default React.forwardRef(Avatar);\n","import { SendbirdTypes } from \"../../types\";\n\nexport const DEFAULT_URL_PREFIX = 'https://static.sendbird.com/sample/cover/cover_';\n\nexport const getChannelAvatarSource = (channel: SendbirdTypes[\"GroupChannel\"], currentUserId: string): string | string[] => {\n if (channel && channel.coverUrl) {\n if (!(new RegExp(`^${DEFAULT_URL_PREFIX}`).test(channel.coverUrl))) {\n return channel.coverUrl;\n }\n }\n\n return channel && channel.members\n ? channel.members\n .filter((member) => member.userId !== currentUserId)\n .map(({ profileUrl }) => profileUrl)\n : [];\n};\n\n\nexport const useDefaultAvatar = (channel: SendbirdTypes[\"GroupChannel\"]): boolean => {\n if (channel && channel.coverUrl) {\n if (new RegExp(`^${DEFAULT_URL_PREFIX}`).test(channel.coverUrl)) {\n return true;\n }\n return false;\n }\n return true;\n}\n","import React, { useMemo } from 'react';\n\nimport { SendbirdTypes } from '../../types';\nimport Avatar from '../Avatar/index';\nimport Icon, { IconTypes } from '../Icon';\n\nimport * as utils from './utils';\n\ninterface Props {\n channel: SendbirdTypes[\"GroupChannel\"];\n userId: string;\n theme: string;\n height: number,\n width: number,\n}\n\nfunction ChannelAvatar({\n channel,\n userId,\n theme,\n height = 56,\n width = 56,\n}: Props): JSX.Element{\n const { isBroadcast } = channel;\n const memoizedAvatar = useMemo(() => (\n isBroadcast\n ? (\n utils.useDefaultAvatar(channel)\n ? (\n theme === 'dark'\n ? (\n \n )\n : (\n \n )\n )\n : (\n \n )\n )\n : (\n \n )\n ),[channel.members, channel.coverUrl, theme]);\n return (\n <>{ memoizedAvatar }>\n );\n}\n\nexport default ChannelAvatar;\n","export const Typography = {\n H_1: 'H_1',\n H_2: 'H_2',\n SUBTITLE_1: 'SUBTITLE_1',\n SUBTITLE_2: 'SUBTITLE_2',\n BODY_1: 'BODY_1',\n BODY_2: 'BODY_2',\n BUTTON_1: 'BUTTON_1',\n BUTTON_2: 'BUTTON_2',\n CAPTION_1: 'CAPTION_1',\n CAPTION_2: 'CAPTION_2',\n CAPTION_3: 'CAPTION_3',\n};\n\nexport const Colors = {\n ONBACKGROUND_1: 'ONBACKGROUND_1',\n ONBACKGROUND_2: 'ONBACKGROUND_2',\n ONBACKGROUND_3: 'ONBACKGROUND_3',\n ONCONTENT_1: 'ONCONTENT_1',\n ONCONTENT_2: 'ONCONTENT_2',\n PRIMARY: 'PRIMARY',\n ERROR: 'ERROR',\n};\n","import { Typography, Colors } from './types';\n\nexport function changeTypographyToClassName(type) {\n switch (type) {\n case Typography.H_1: return 'sendbird-label--h-1';\n case Typography.H_2: return 'sendbird-label--h-2';\n case Typography.SUBTITLE_1: return 'sendbird-label--subtitle-1';\n case Typography.SUBTITLE_2: return 'sendbird-label--subtitle-2';\n case Typography.BODY_1: return 'sendbird-label--body-1';\n case Typography.BODY_2: return 'sendbird-label--body-2';\n case Typography.BUTTON_1: return 'sendbird-label--button-1';\n case Typography.BUTTON_2: return 'sendbird-label--button-2';\n case Typography.CAPTION_1: return 'sendbird-label--caption-1';\n case Typography.CAPTION_2: return 'sendbird-label--caption-2';\n case Typography.CAPTION_3: return 'sendbird-label--caption-3';\n default: return null;\n }\n}\n\nexport function changeColorToClassName(color) {\n switch (color) {\n case Colors.ONBACKGROUND_1: return 'sendbird-label--color-onbackground-1';\n case Colors.ONBACKGROUND_2: return 'sendbird-label--color-onbackground-2';\n case Colors.ONBACKGROUND_3: return 'sendbird-label--color-onbackground-3';\n case Colors.ONCONTENT_1: return 'sendbird-label--color-oncontent-1';\n case Colors.ONCONTENT_2: return 'sendbird-label--color-oncontent-2';\n case Colors.PRIMARY: return 'sendbird-label--color-primary';\n case Colors.ERROR: return 'sendbird-label--color-error';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { Typography, Colors } from './types';\nimport { changeTypographyToClassName, changeColorToClassName } from './utils';\nimport getStringSet from './stringSet';\n\nconst CLASS_NAME = 'sendbird-label';\n\nexport default function Label({\n type,\n color,\n children,\n className,\n}) {\n const injectingClassName = (Array.isArray(className))\n ? [CLASS_NAME, ...className]\n : [CLASS_NAME, className];\n if (type) {\n injectingClassName.push(changeTypographyToClassName(type));\n }\n if (color) {\n injectingClassName.push(changeColorToClassName(color));\n }\n\n return (\n \n {children}\n \n );\n}\n\nLabel.propTypes = {\n type: PropTypes.oneOf([...Object.keys(Typography), '']),\n color: PropTypes.oneOf([...Object.keys(Colors), '']),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.element,\n PropTypes.any,\n ]),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nLabel.defaultProps = {\n type: '',\n color: '',\n className: [],\n children: null,\n};\n\nconst LabelTypography = Typography;\nconst LabelColors = Colors;\nconst LabelStringSet = getStringSet('en');\nexport { LabelTypography, LabelColors, LabelStringSet };\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nexport default function Badge({\n count,\n maxLevel,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const maximumNumber = parseInt('9'.repeat((maxLevel > 6) ? 6 : maxLevel), 10);\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n
\n \n {\n (count > maximumNumber)\n ? `${maximumNumber}${stringSet.BADGE__OVER}`\n : count\n }\n \n
\n
\n );\n}\n\nBadge.propTypes = {\n count: PropTypes.number.isRequired,\n maxLevel: PropTypes.number,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nBadge.defaultProps = {\n maxLevel: 2,\n className: [],\n};\n","const MessageStatusType = {\n PENDING: 'PENDING',\n SENT: 'SENT',\n DELIVERED: 'DELIVERED',\n READ: 'READ',\n FAILED: 'FAILED',\n};\n\nexport default MessageStatusType;\n","import MessageStatusType from '../MessageStatus/type';\n\nexport const truncate = (fullStr, strLen) => {\n if (fullStr === null || fullStr === undefined) return '';\n if (fullStr.length <= strLen) return fullStr;\n const separator = '...';\n const sepLen = separator.length;\n const charsToShow = strLen - sepLen;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n};\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport default {\n truncate,\n getIsSentFromStatus,\n};\n","import isToday from 'date-fns/isToday';\nimport format from 'date-fns/format';\nimport isYesterday from 'date-fns/isYesterday';\n\nimport { truncate } from '../FileMessage/utils';\nimport { LabelStringSet } from '../Label';\n\nexport const getChannelTitle = (channel = {}, currentUserId, stringSet = LabelStringSet) => {\n if (!channel || (!channel.name && !channel.members)) {\n return stringSet.NO_TITLE;\n }\n if (channel.name && channel.name !== 'Group Channel') {\n return channel.name;\n }\n if (channel.members.length === 1) {\n return stringSet.NO_MEMBERS;\n }\n\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => (nickname || stringSet.NO_NAME))\n .join(', ');\n};\n\nexport const getLastMessageCreatedAt = (channel) => {\n if (!channel || !channel.lastMessage) {\n return '';\n }\n const date = channel.lastMessage.createdAt;\n if (isToday(date)) {\n return format(date, 'p');\n }\n\n if (isYesterday(date)) {\n return 'Yesterday';\n }\n\n return format(date, 'MMM dd');\n};\n\nexport const getTotalMembers = (channel) => (\n channel && channel.memberCount\n ? channel.memberCount\n : 0\n);\n\nconst getPrettyLastMessage = (message = {}) => {\n const MAXLEN = 30;\n const { messageType, name } = message;\n if (messageType === 'file') {\n return truncate(name, MAXLEN);\n }\n return message.message;\n};\n\nexport const getLastMessage = (channel) => (\n channel && channel.lastMessage\n ? getPrettyLastMessage(channel.lastMessage)\n : ''\n);\n\nexport const getChannelUnreadMessageCount = (channel) => (\n (channel && channel.unreadMessageCount)\n ? channel.unreadMessageCount\n : 0\n);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport ChannelAvatar from '../ChannelAvatar/index';\nimport Badge from '../Badge';\nimport Icon, { IconTypes } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport * as utils from './utils';\n\nexport default function ChannelPreview({\n channel,\n isActive,\n ChannelAction,\n theme,\n onClick,\n tabIndex,\n currentUser,\n}) {\n const {\n userId,\n } = currentUser;\n const { isBroadcast, isFrozen } = channel;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n \n
\n
\n
\n
\n {\n isBroadcast\n && (\n
\n \n
\n )\n }\n
\n {utils.getChannelTitle(channel, userId, stringSet)}\n \n
\n {utils.getTotalMembers(channel)}\n \n {\n isFrozen\n && (\n
\n \n
\n )\n }\n
\n
\n {utils.getLastMessageCreatedAt(channel)}\n \n
\n\n
\n
\n {utils.getLastMessage(channel)}\n \n
\n {\n utils.getChannelUnreadMessageCount(channel)\n ? \n : null\n }\n
\n
\n
\n
\n {ChannelAction}\n
\n
\n );\n}\n\nChannelPreview.propTypes = {\n isActive: PropTypes.bool,\n theme: PropTypes.string,\n channel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n coverUrl: PropTypes.string,\n isBroadcast: PropTypes.bool,\n isFrozen: PropTypes.bool,\n }),\n ChannelAction: PropTypes.element.isRequired,\n onClick: PropTypes.func,\n tabIndex: PropTypes.number,\n currentUser: PropTypes.shape({\n userId: PropTypes.string,\n }),\n};\n\nChannelPreview.defaultProps = {\n channel: {},\n isActive: false,\n theme: 'light',\n onClick: () => { },\n tabIndex: 0,\n currentUser: {},\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst CLASS_NAME = 'sendbird-iconbutton';\n\nconst IconButton = React.forwardRef((props, ref) => {\n const {\n children,\n className,\n disabled = false,\n type,\n height,\n width,\n onClick,\n onBlur,\n } = props;\n\n const [pressed, setPressed] = useState('');\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n\n return (\n // eslint-disable-next-line react/button-has-type\n {\n if (disabled) { return; }\n setPressed('sendbird-iconbutton--pressed');\n onClick(e);\n }}\n onBlur={(e) => {\n setPressed('');\n onBlur(e);\n }}\n >\n \n {children}\n \n \n );\n});\n\nIconButton.propTypes = {\n height: PropTypes.string,\n width: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n type: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n onBlur: PropTypes.func,\n};\n\nIconButton.defaultProps = {\n height: '56px',\n width: '56px',\n className: '',\n type: 'button',\n disabled: false,\n onClick: () => { },\n onBlur: () => { },\n};\n\nexport default IconButton;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport IconButton from '../IconButton';\n\nimport './index.scss';\nimport Avatar from '../Avatar/index';\n\nexport default function ChannelHeader({\n user,\n iconButton,\n onEdit,\n renderHeader,\n allowProfileEdit,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n {\n renderHeader\n ? renderHeader()\n : (\n
\n
\n
\n \n {user.nickname || stringSet.NO_NAME}\n \n \n {user.userId}\n \n
\n
\n )\n }\n
\n {iconButton}\n
\n
\n );\n}\n\nChannelHeader.propTypes = {\n user: PropTypes.shape({\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n userId: PropTypes.string,\n }),\n renderHeader: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n onEdit: PropTypes.func.isRequired,\n iconButton: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.instanceOf(IconButton),\n ]),\n};\n\nChannelHeader.defaultProps = {\n user: {},\n renderHeader: null,\n allowProfileEdit: false,\n iconButton: null,\n};\n","// simple component to be used as modal root\nimport React from 'react';\n\nexport const MODAL_ROOT = 'sendbird-modal-root';\n\nexport default () => (\n
\n);\n","export const Type = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n DANGER: 'DANGER',\n DISABLED: 'DISABLED',\n};\n\nexport const Size = {\n BIG: 'BIG',\n SMALL: 'SMALL',\n};\n","import { Type, Size } from './type';\n\nexport function changeTypeToClassName(type) {\n switch (type) {\n case Type.PRIMARY: return 'sendbird-button--primary';\n case Type.SECONDARY: return 'sendbird-button--secondary';\n case Type.DANGER: return 'sendbird-button--danger';\n case Type.DISABLED: return 'sendbird-button--disabled';\n default: return null;\n }\n}\n\nexport function changeSizeToClassName(size) {\n switch (size) {\n case Size.BIG: return 'sendbird-button--big';\n case Size.SMALL: return 'sendbird-button--small';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { Type, Size } from './type';\nimport { changeTypeToClassName, changeSizeToClassName } from './utils';\n\nexport default function Button({\n type,\n size,\n children,\n disabled,\n onClick,\n className,\n}) {\n const injectingClassNames = [\n 'sendbird-button',\n (disabled ? 'sendbird-button__disabled' : ''),\n changeTypeToClassName(type),\n changeSizeToClassName(size),\n ...((Array.isArray(className)) ? className : [className]),\n ].join(' ');\n\n return (\n \n \n {children}\n \n \n );\n}\n\nButton.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]),\n disabled: PropTypes.bool,\n type: PropTypes.oneOf(Object.keys(Type)),\n size: PropTypes.oneOf(Object.keys(Size)),\n onClick: PropTypes.func,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nButton.defaultProps = {\n children: 'Button',\n type: Type.PRIMARY,\n disabled: false,\n size: Size.BIG,\n onClick: () => { },\n className: '',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\n\nimport './index.scss';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { MODAL_ROOT } from '../../hooks/useModal/ModalRoot';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Button from '../Button';\nimport { Type as ButtonTypes } from '../Button/type';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nexport const ModalHeader = ({ titleText }) => (\n \n \n {titleText}\n \n
\n);\nModalHeader.propTypes = {\n titleText: PropTypes.string.isRequired,\n};\n\nexport const ModalBody = ({ children }) => (\n {children}
\n);\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element.isRequired,\n PropTypes.arrayOf(PropTypes.element.isRequired),\n ]),\n};\nModalBody.defaultProps = {\n children: null,\n};\n\nexport const ModalFooter = ({\n onSubmit,\n onCancel,\n disabled = false,\n submitText,\n type,\n}) => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n \n {stringSet.BUTTON__CANCEL}\n \n \n \n {submitText}\n \n
\n );\n};\n\nModalFooter.propTypes = {\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n submitText: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\nModalFooter.defaultProps = {\n disabled: false,\n type: ButtonTypes.DANGER,\n};\n\nfunction Modal(props) {\n const {\n children,\n onCancel,\n onSubmit,\n disabled,\n submitText,\n titleText,\n hideFooter,\n type,\n } = props;\n return createPortal((\n \n
\n
\n
{children} \n {\n !hideFooter && (\n
\n )\n }\n
\n \n \n \n
\n
\n
\n
\n ), document.getElementById(MODAL_ROOT));\n}\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]),\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n hideFooter: PropTypes.bool,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\nModal.defaultProps = {\n children: null,\n hideFooter: false,\n disabled: false,\n type: ButtonTypes.DANGER,\n};\n\nexport default Modal;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport './index.scss';\n\nexport const InputLabel = ({ children }) => (\n \n {children}\n \n);\n\nInputLabel.propTypes = {\n children: PropTypes.string.isRequired,\n};\n\n// future: add validations? onChange? more props etc etc\nconst Input = React.forwardRef((props, ref) => {\n const {\n value,\n placeHolder,\n disabled,\n name,\n required,\n } = props;\n const [inputValue, setInputValue] = useState(value);\n return (\n \n {\n setInputValue(e.target.value);\n }}\n />\n {(placeHolder && !inputValue) && (\n \n {placeHolder}\n \n )}\n
\n );\n});\n\nInput.propTypes = {\n value: PropTypes.string,\n placeHolder: PropTypes.string,\n name: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n};\n\nInput.defaultProps = {\n value: '',\n placeHolder: '',\n disabled: false,\n required: false,\n};\n\nexport default Input;\n","import './color.scss';\n\nexport const Colors = {\n ONBACKGROUND_1: 'ONBACKGROUND_1',\n ONBACKGROUND_2: 'ONBACKGROUND_2',\n ONBACKGROUND_3: 'ONBACKGROUND_3',\n ONBACKGROUND_4: 'ONBACKGROUND_4',\n ONCONTENT_1: 'ONCONTENT_1',\n PRIMARY: 'PRIMARY',\n ERROR: 'ERROR',\n};\n\nexport function changeColorToClassName(color) {\n switch (color) {\n case Colors.ONBACKGROUND_1: return 'sendbird-color--onbackground-1';\n case Colors.ONBACKGROUND_2: return 'sendbird-color--onbackground-2';\n case Colors.ONBACKGROUND_3: return 'sendbird-color--onbackground-3';\n case Colors.ONBACKGROUND_4: return 'sendbird-color--onbackground-4';\n case Colors.ONCONTENT_1: return 'sendbird-color--oncontent-1';\n case Colors.PRIMARY: return 'sendbird-color--primary';\n case Colors.ERROR: return 'sendbird-color--error';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { changeColorToClassName, Colors } from '../../utils/color';\n\nexport default function TextButton({\n color,\n children,\n disabled,\n className,\n onClick,\n notUnderline,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {children}\n
\n );\n}\n\nTextButton.propTypes = {\n color: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n onClick: PropTypes.func,\n notUnderline: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nTextButton.defaultProps = {\n color: Colors.ONBACKGROUND_1,\n className: '',\n onClick: () => { },\n notUnderline: false,\n disabled: false,\n};\n","import format from 'date-fns/format';\n\nexport const noop = () => {};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport default {\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n};\n","import React, {\n ReactElement,\n useRef,\n useState,\n useContext,\n} from 'react';\nimport './index.scss';\n\nimport Modal from '../Modal';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport Input, { InputLabel } from '../Input';\nimport Avatar from '../Avatar';\nimport Icon, { IconTypes } from '../Icon';\nimport { Type as ButtonType } from '../Button/type';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport TextButton from '../TextButton';\nimport { SendbirdTypes } from '../../types';\nimport { noop } from '../../utils/utils';\n\ninterface Props {\n user: SendbirdTypes['User'];\n onCancel(): void;\n onSubmit(newFile: File, newNickname: string): void;\n onThemeChange?(theme: string): void;\n theme?: string;\n changeTheme?(theme: string): void;\n}\n\nexport function EditUserProfile({\n user,\n onCancel,\n onSubmit,\n onThemeChange = null,\n theme = 'light',\n changeTheme = noop,\n}: Props): ReactElement {\n const hiddenInputRef = useRef(null);\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n\n return (\n {\n if (user.nickname !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(inputRef.current.value, newFile);\n onCancel();\n }}\n type={ButtonType.PRIMARY}\n >\n { e.preventDefault(); }}\n >\n \n \n \n \n \n {stringSet.EDIT_PROFILE__THEME_LABEL}\n \n \n {\n theme === 'dark'\n ? (\n {\n changeTheme('light');\n if (onThemeChange && typeof onThemeChange === 'function') {\n onThemeChange('light');\n }\n }}\n type={IconTypes.TOGGLE_ON}\n width={44}\n height={24}\n />\n )\n : (\n {\n changeTheme('dark');\n if (onThemeChange && typeof onThemeChange === 'function') {\n onThemeChange('dark');\n }\n }}\n type={IconTypes.TOGGLE_OFF}\n width={44}\n height={24}\n />\n )\n }\n
\n \n \n \n );\n}\n\nconst mapStoreToProps = (store) => {\n return {\n theme: store.config.theme,\n changeTheme: store.config.setCurrenttheme,\n };\n};\n\ninterface ConnectedEditUserProfileProps {\n user: SendbirdTypes['User'];\n onCancel(): void;\n onSubmit(newFile: File, newNickname: string): void;\n onThemeChange?(theme: string): void;\n}\n\nconst ConnectedEditUserProfile: (\n props: ConnectedEditUserProfileProps\n) => React.Component = withSendbirdContext(EditUserProfile, mapStoreToProps);\n\nexport default ConnectedEditUserProfile;\n","export function Types() {\n return {\n LOADING: 'LOADING',\n NO_CHANNELS: 'NO_CHANNELS',\n WRONG: 'WRONG',\n };\n}\n\nexport default Types();\n","import './muted-avatar-overlay.scss';\n\nimport React, { ReactElement } from 'react'\nimport Icon, { IconTypes, IconColors } from '../Icon';\n\ninterface Props {\n height?: number;\n width?: number;\n}\n\nexport default function MutedAvatarOverlay(props: Props): ReactElement {\n const { height = 24, width = 24 } = props;\n return (\n \n );\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nexport default function Checkbox({\n id,\n checked,\n onChange,\n}) {\n const [isChecked, setCheck] = useState(checked);\n return (\n \n setCheck(!isChecked)}\n onChange={onChange}\n />\n \n \n );\n}\n\nCheckbox.propTypes = {\n id: PropTypes.string,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\nCheckbox.defaultProps = {\n id: 'sendbird-checkbox-input',\n checked: false,\n onChange: () => { },\n};\n","export const USER_UPDATED = 'USER_UPDATED';\nexport const SEND_MESSAGE_START = 'SEND_MESSAGE_START';\nexport const SEND_USER_MESSAGE = 'SEND_USER_MESSAGE';\nexport const SEND_FILE_MESSAGE = 'SEND_FILE_MESSAGE';\nexport const UPDATE_USER_MESSAGE = 'UPDATE_USER_MESSAGE';\nexport const DELETE_MESSAGE = 'DELETE_MESSAGE';\nexport const LEAVE_CHANNEL = 'LEAVE_CHANNEL';\nexport const CREATE_CHANNEL = 'CREATE_CHANNEL';\n","import * as topics from './pubSub/topics';\n\nexport const getSdk = (store) => {\n const { stores = {} } = store;\n const { sdkStore = {} } = stores;\n const { sdk } = sdkStore;\n return sdk;\n};\n\nexport const getPubSub = (store) => {\n const { config = {} } = store;\n const { pubSub } = config;\n return pubSub;\n};\n\n// SendBird disconnect. Invalidates currentUser\n// eslint-disable-next-line max-len\nexport const getConnect = (store) => (userId, accessToken) => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n if (!accessToken) {\n sdk.connect(userId)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n } else {\n sdk.connect(userId, accessToken)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n }\n});\n\n// SendBird disconnect. Invalidates currentUser\nexport const getDisconnect = (store) => () => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.disconnect()\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n});\n\n// Using the updateCurrentUserInfo() method\n// you can update a user's nickname and profile image with a URL\n// eslint-disable-next-line max-len\nexport const getUpdateUserInfo = (store) => (nickName, profileUrl) => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.updateCurrentUserInfo(nickName, profileUrl)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n});\n\nexport const getSendUserMessage = (store) => (channelUrl, userMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendUserMessage(userMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n });\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\nexport const getSendFileMessage = (store) => (channelUrl, fileMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendFileMessage(fileMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n });\n if (fileMessageParams.file) {\n // keep the file's local version in pendingMsg.localUrl\n // because promise doesnt allow overriding of pendingMsg.url\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);\n }\n if (fileMessageParams.fileUrl) {\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = fileMessageParams.fileUrl;\n }\n // eslint-disable-next-line no-param-reassign\n pendingMsg.requestState = 'pending';\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\nexport const getUpdateUserMessage = (store) => (channelUrl, messageId, params) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.updateUserMessage(messageId, params, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.UPDATE_USER_MESSAGE,\n {\n message,\n channel,\n // workaround for updating channelPreview on message-edit\n // https://sendbird.atlassian.net/browse/UIKIT-268\n fromSelector: true,\n },\n );\n });\n })\n .catch(reject);\n });\n};\nexport const getDeleteMessage = (store) => (channelUrl, message) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const { messageId } = message;\n channel.deleteMessage(message, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let error = err;\n if (swapParams) {\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.DELETE_MESSAGE,\n {\n messageId,\n channel,\n },\n );\n });\n })\n .catch(reject);\n });\n};\n\nexport const getResendUserMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendUserMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getResendFileMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendFileMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getCreateChannel = (store) => (params) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.createChannel(params)\n .then((channel) => {\n resolve(channel);\n pubsub.publish(\n topics.CREATE_CHANNEL,\n {\n channel,\n },\n );\n })\n .catch(reject);\n });\n};\n\nexport const getLeaveChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.leave()\n .then(() => {\n resolve(channel);\n pubsub.publish(\n topics.LEAVE_CHANNEL,\n {\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getFreezeChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.freeze()\n .then(() => {\n // do not need pubsub here - event listener works\n resolve(channel);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getUnFreezeChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.unfreeze()\n .then(() => {\n // do not need pubsub here - event listener works\n resolve(channel);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport default {\n getSdk,\n getConnect,\n getDisconnect,\n getUpdateUserInfo,\n getSendUserMessage,\n getSendFileMessage,\n getUpdateUserMessage,\n getDeleteMessage,\n getResendUserMessage,\n getResendFileMessage,\n getFreezeChannel,\n getUnFreezeChannel,\n getCreateChannel,\n getLeaveChannel,\n};\n","import React, { ReactElement, useContext } from 'react';\nimport { SendbirdTypes } from '../../types';\nimport './index.scss';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { getSdk, getCreateChannel } from '../../lib/selectors';\nimport Avatar from '../Avatar/index';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport Button from '../Button';\nimport { Type as ButtonTypes } from '../Button/type';\n\ninterface Logger {\n info?(message: string, channel: SendbirdTypes['GroupChannel']): void;\n}\n\ninterface Props {\n user: SendbirdTypes['User'];\n currentUserId?: string;\n sdk?: SendbirdTypes['SendBirdInstance'];\n logger?: Logger;\n createChannel?(params: SendbirdTypes['GroupChannelParams']): Promise;\n onSuccess?(): void;\n}\n\nfunction UserProfile({\n user,\n currentUserId,\n sdk,\n logger,\n createChannel,\n onSuccess,\n}: Props): ReactElement {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
\n \n {user.nickname || stringSet.NO_NAME}\n \n \n {\n user.userId !== currentUserId && (\n
\n {\n const params = new sdk.GroupChannelParams();\n params.isDistinct = true;\n params.addUserIds([user.userId]);\n onSuccess();\n createChannel(params)\n .then((groupChannel) => {\n logger.info('UserProfile, channel create', groupChannel);\n });\n }}\n >\n {stringSet.USER_PROFILE__MESSAGE}\n \n \n )\n }\n
\n
\n \n {stringSet.USER_PROFILE__USER_ID}\n \n \n {user.userId}\n \n \n
\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n createChannel: getCreateChannel(store),\n logger: store.config.logger,\n pubsub: store.config.pubSub,\n});\n\nconst ConnectedUserProfile = withSendbirdContext(UserProfile, mapStoreToProps);\n\nexport default ConnectedUserProfile;\n","import React, { Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\n\nexport default class MenuItems extends Component {\n constructor(props) {\n super(props);\n this.menuRef = React.createRef();\n this.state = {\n menuStyle: {},\n handleClickOutside: () => { },\n };\n }\n\n componentDidMount() {\n this.setupEvents();\n this.getMenuPosition();\n this.showParent();\n }\n\n componentWillUnmount() {\n this.cleanUpEvents();\n this.hideParent();\n }\n\n showParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.add('sendbird-icon--pressed');\n }\n }\n\n hideParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.remove('sendbird-icon--pressed');\n }\n }\n\n setupEvents = () => {\n const { closeDropdown } = this.props;\n const { menuRef } = this;\n const handleClickOutside = (event) => {\n if (menuRef.current && !menuRef.current.contains(event.target)) {\n closeDropdown();\n }\n };\n this.setState({\n handleClickOutside,\n });\n\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n cleanUpEvents = () => {\n const {\n handleClickOutside,\n } = this.state;\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n getMenuPosition = () => {\n const { parentRef, openLeft } = this.props;\n const parentRect = parentRef.current.getBoundingClientRect();\n const x = parentRect.x || parentRect.left;\n const y = parentRect.y || parentRect.top;\n const menuStyle = {\n top: y,\n left: x,\n };\n\n if (!this.menuRef.current) return menuStyle;\n\n const { innerWidth, innerHeight } = window;\n const rect = this.menuRef.current.getBoundingClientRect();\n if (y + rect.height > innerHeight) {\n menuStyle.top -= rect.height;\n }\n\n if (x + rect.width > innerWidth && !openLeft) {\n menuStyle.left -= rect.width;\n }\n\n if (menuStyle.top < 0) {\n menuStyle.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;\n }\n\n if (menuStyle.left < 0) {\n menuStyle.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;\n }\n\n menuStyle.top += 32;\n if (openLeft) {\n const padding = Number.isNaN(rect.width - 30)\n ? 108 // default\n : rect.width - 30;\n menuStyle.left -= padding;\n }\n\n return this.setState({ menuStyle });\n }\n\n render() {\n const { menuStyle } = this.state;\n const { children, style } = this.props;\n return (\n createPortal(\n (\n <>\n
\n \n >\n ),\n document.getElementById('sendbird-dropdown-portal'),\n )\n );\n }\n}\nMenuItems.propTypes = {\n closeDropdown: PropTypes.func.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n style: PropTypes.shape({}),\n // https://stackoverflow.com/a/51127130\n parentRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n parentContainRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n openLeft: PropTypes.bool,\n};\nMenuItems.defaultProps = {\n style: {},\n openLeft: false,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst componentClassName = 'sendbird-sort-by-row';\nexport default function SortByRow({\n className,\n maxItemCount,\n itemWidth,\n itemHeight,\n children,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(componentClassName);\n\n if (children.length > maxItemCount) {\n const result = [];\n for (let i = 0; i < children.length; i += maxItemCount) {\n result.push(\n \n {\n children.slice(i, i + maxItemCount)\n }\n
,\n );\n }\n\n return result;\n }\n return (\n \n {children}\n
\n );\n}\n\nSortByRow.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n maxItemCount: PropTypes.number.isRequired,\n itemWidth: PropTypes.number.isRequired,\n itemHeight: PropTypes.number.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]).isRequired,\n};\n\nSortByRow.defaultProps = {\n className: '',\n};\n","import React, { Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport SortByRow from '../../SortByRow';\n\nexport default class EmojiListItems extends Component {\n constructor(props) {\n super(props);\n this.reactionRef = React.createRef();\n this.state = {\n reactionStyle: {},\n handleClickOutside: () => { },\n };\n }\n\n componentDidMount() {\n this.setupEvents();\n this.getBarPosition();\n this.showParent();\n }\n\n componentWillUnmount() {\n this.cleanUpEvents();\n this.hideParent();\n }\n\n showParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.add('sendbird-reactions--pressed');\n }\n }\n\n hideParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.remove('sendbird-reactions--pressed');\n }\n }\n\n setupEvents = () => {\n const { closeDropdown } = this.props;\n const { reactionRef } = this;\n const handleClickOutside = (event) => {\n if (reactionRef.current && !reactionRef.current.contains(event.target)) {\n closeDropdown();\n }\n };\n this.setState({\n handleClickOutside,\n });\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n cleanUpEvents = () => {\n const {\n handleClickOutside,\n } = this.state;\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n getBarPosition = () => {\n const {\n parentRef,\n spaceFromTrigger,\n } = this.props;\n const spaceFromTriggerX = spaceFromTrigger.x || 0;\n const spaceFromTriggerY = spaceFromTrigger.y || 0;\n\n const parentRect = parentRef.current.getBoundingClientRect();\n\n const x = parentRect.x || parentRect.left;\n const y = parentRect.y || parentRect.top;\n\n const reactionStyle = {\n top: y,\n left: x,\n };\n\n if (!this.reactionRef.current) return reactionStyle;\n const rect = this.reactionRef.current.getBoundingClientRect();\n // const childRect = this.reactionRef.current.children[0].getBoundingClientRect();\n\n if (reactionStyle.top < rect.height) {\n reactionStyle.top += parentRect.height;\n reactionStyle.top += spaceFromTriggerY;\n } else {\n reactionStyle.top -= rect.height;\n reactionStyle.top -= spaceFromTriggerY;\n }\n\n reactionStyle.left -= (rect.width / 2);\n reactionStyle.left += (parentRect.height / 2) - 2;\n reactionStyle.left += spaceFromTriggerX;\n\n const maximumLeft = (window.innerWidth - rect.width);\n if (maximumLeft < reactionStyle.left) {\n reactionStyle.left = maximumLeft;\n }\n if (reactionStyle.left < 0) {\n reactionStyle.left = 0;\n }\n\n return this.setState({ reactionStyle });\n }\n\n render() {\n const { reactionStyle } = this.state;\n const { children } = this.props;\n return (\n createPortal(\n <>\n
\n \n >,\n document.getElementById('sendbird-emoji-list-portal'),\n )\n );\n }\n}\nEmojiListItems.propTypes = {\n closeDropdown: PropTypes.func.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n parentRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n parentContainRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n spaceFromTrigger: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n }),\n};\nEmojiListItems.defaultProps = {\n spaceFromTrigger: {},\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport MenuItems_ from './items/MenuItems';\nimport EmojiListItems_ from './items/EmojiListItems';\n\nconst ENTER = 13;\n\nexport const MenuItems = MenuItems_;\nexport const EmojiListItems = EmojiListItems_;\n\nexport const MenuItem = ({ children, onClick, className }) => {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n {\n if (e.keyCode === ENTER) {\n onClick(e);\n }\n }}\n role=\"menuitem\"\n >\n \n {children}\n \n \n );\n};\n\nMenuItem.propTypes = {\n onClick: PropTypes.func.isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]).isRequired,\n};\n\nMenuItem.defaultProps = {\n className: '',\n};\n\nexport const MenuRoot = () => (\n
\n);\n\nexport const EmojiReactionListRoot = () => (\n
\n);\n\nexport default function ContextMenu({ menuTrigger, menuItems }) {\n const [showMenu, setShowMenu] = useState(false);\n\n return (\n \n {menuTrigger(() => setShowMenu(!showMenu))}\n {showMenu && menuItems(() => setShowMenu(false))}\n
\n );\n}\n\nContextMenu.propTypes = {\n menuTrigger: PropTypes.func.isRequired,\n menuItems: PropTypes.func.isRequired,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Avatar from '../Avatar/index';\nimport MutedAvatarOverlay from '../Avatar/MutedAvatarOverlay';\nimport Checkbox from '../Checkbox';\nimport UserProfile from '../UserProfile';\nimport ContextMenu, { MenuItems } from '../ContextMenu';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport './index.scss';\n\nconst COMPONENT_NAME = 'sendbird-user-list-item';\n\nexport default function UserListItem({\n user,\n className,\n checkBox,\n currentUser,\n checked,\n onChange,\n action,\n}) {\n const injectingClassNames = Array.isArray(className) ? className : [className];\n const uniqueKey = user.userId;\n const actionRef = React.useRef(null);\n const parentRef = React.useRef(null);\n const avatarRef = React.useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n {\n user.isMuted && (\n
\n )\n }\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n className={`${COMPONENT_NAME}__avatar`}\n src={user.profileUrl}\n width=\"40px\"\n height=\"40px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n {user.nickname || stringSet.NO_NAME}\n {\n (currentUser === user.userId) && (\n ' (You)'\n )\n }\n \n { // if there is now nickname, display userId\n !user.nickname && (\n \n {user.userId}\n \n )\n }\n {\n checkBox && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n \n onChange(event)}\n />\n \n )\n }\n {\n user.role === 'operator' && (\n \n Operator\n \n )\n }\n {\n action && (\n \n { action({ actionRef, parentRef }) }\n
\n )\n }\n \n );\n}\n\nUserListItem.propTypes = {\n user: PropTypes.shape({\n userId: PropTypes.string,\n role: PropTypes.string,\n isMuted: PropTypes.bool,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n }).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n currentUser: PropTypes.string,\n action: PropTypes.element,\n checkBox: PropTypes.bool,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\n\nUserListItem.defaultProps = {\n className: '',\n currentUser: '',\n checkBox: false,\n checked: false,\n action: null,\n onChange: () => { },\n};\n","import React, { useState, useEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../../ui/Label';\nimport Modal from '../../ui/Modal';\nimport { Type as ButtonTypes } from '../../ui/Button/type';\nimport UserListItem from '../../ui/UserListItem';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nconst filterUser = (idsToFilter) => (currentId) => idsToFilter.includes(currentId);\n\nconst InviteMembers = (props) => {\n const {\n userQueryCreator,\n closeModal,\n onSubmit,\n submitText,\n titleText,\n idsToFilter,\n swapParams,\n } = props;\n\n const [users, setUsers] = useState([]);\n const [selectedUsers, setSelectedUsers] = useState({});\n const { stringSet } = useContext(LocalizationContext);\n const [usersDataSource, setUsersDataSource] = useState({});\n const selectedCount = Object.keys(selectedUsers).length;\n\n useEffect(() => {\n const applicationUserListQuery = userQueryCreator();\n setUsersDataSource(applicationUserListQuery);\n applicationUserListQuery.next((res, err) => {\n // eslint-disable-next-line no-underscore-dangle\n let users_ = res;\n let error = err;\n if (swapParams) {\n users_ = err;\n error = users_;\n }\n if (error) {\n return;\n }\n setUsers(users_);\n });\n }, []);\n\n return (\n {\n const selectedUserList = Object.keys(selectedUsers);\n if (selectedUserList.length > 0) {\n onSubmit(selectedUserList);\n closeModal();\n }\n }}\n submitText={submitText}\n titleText={titleText}\n type={ButtonTypes.PRIMARY}\n >\n \n
0) ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3}\n type={LabelTypography.CAPTION_1}\n >\n {`${selectedCount} ${stringSet.MODAL__INVITE_MEMBER__SELECTEC}`}\n \n
{\n const { hasNext } = usersDataSource;\n const fetchMore = (\n e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n usersDataSource.next((usersBatch, error) => {\n if (error) {\n return;\n }\n setUsers([\n ...users,\n ...usersBatch,\n ]);\n });\n }\n }}\n >\n {\n users.map((user) => (!filterUser(idsToFilter)(user.userId)) && (\n {\n const modifiedSelectedUsers = {\n ...selectedUsers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedUsers[event.target.id];\n }\n setSelectedUsers(modifiedSelectedUsers);\n }\n }\n />\n ))\n }\n
\n
\n \n );\n};\n\nInviteMembers.propTypes = {\n idsToFilter: PropTypes.arrayOf(PropTypes.string),\n swapParams: PropTypes.bool,\n userQueryCreator: PropTypes.func.isRequired,\n closeModal: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n submitText: PropTypes.string,\n titleText: PropTypes.string,\n};\nInviteMembers.defaultProps = {\n swapParams: false,\n submitText: 'create',\n titleText: 'Create new channel',\n idsToFilter: [],\n};\n\nexport default InviteMembers;\n","export const createDefaultUserListQuery = ({ sdk, userFilledApplicationUserListQuery = {} }) => {\n const params = sdk.createApplicationUserListQuery();\n if (userFilledApplicationUserListQuery) {\n Object.keys(userFilledApplicationUserListQuery).forEach((key) => {\n params[key] = userFilledApplicationUserListQuery[key];\n });\n }\n return params;\n};\n\nconst getApplicationAttributes = (sdk = {}) => {\n const { appInfo = {} } = sdk;\n const { applicationAttributes = [] } = appInfo;\n return applicationAttributes;\n};\n\nexport const isBroadcastChannelEnabled = (sdk = {}) => {\n const ALLOW_BROADCAST_CHANNEL = 'allow_broadcast_channel';\n const applicationAttributes = getApplicationAttributes(sdk);\n\n if (Array.isArray(applicationAttributes)) {\n return applicationAttributes.includes(ALLOW_BROADCAST_CHANNEL);\n }\n\n return false;\n};\nexport const isSuperGroupChannelEnabled = (sdk = {}) => {\n const ALLOW_SUPER_GROUP_CHANNEL = 'allow_super_group_channel';\n const applicationAttributes = getApplicationAttributes(sdk);\n\n if (Array.isArray(applicationAttributes)) {\n return applicationAttributes.includes(ALLOW_SUPER_GROUP_CHANNEL);\n }\n\n return false;\n};\n\nexport const setChannelType = (params, type) => {\n if (type === 'broadcast') {\n // eslint-disable-next-line no-param-reassign\n params.isBroadcast = true;\n }\n if (type === 'supergroup') {\n // eslint-disable-next-line no-param-reassign\n params.isSuper = true;\n }\n return params;\n};\n\nexport const createChannel = (\n sdk,\n selectedUsers,\n onBeforeCreateChannel,\n userId,\n type = 'group',\n) => new Promise((resolve, reject) => {\n // have custom params\n if (onBeforeCreateChannel) {\n const params = onBeforeCreateChannel(selectedUsers);\n setChannelType(params, type);\n sdk.GroupChannel.createChannel(params, (response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let groupChannel = response;\n let err = error;\n if (swapParams) {\n groupChannel = error;\n err = response;\n }\n if (err) {\n reject(err);\n }\n resolve(groupChannel);\n });\n return;\n }\n\n const params = new sdk.GroupChannelParams();\n params.addUserIds(selectedUsers);\n params.isDistinct = false;\n\n if (userId) {\n params.operatorUserIds = [userId];\n }\n setChannelType(params, type);\n // do not have custom params\n sdk.GroupChannel.createChannel(\n params,\n (response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let groupChannel = response;\n let err = error;\n if (swapParams) {\n groupChannel = error;\n err = response;\n }\n if (err) {\n reject(err);\n }\n resolve(groupChannel);\n },\n );\n});\n\nexport default createChannel;\n","import './add-channel.scss';\n\nimport React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport IconButton from '../../../ui/IconButton';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport InviteMembers from '../../InviteMembers';\n\nimport {\n createChannel,\n createDefaultUserListQuery,\n isBroadcastChannelEnabled,\n isSuperGroupChannelEnabled,\n} from './utils';\nimport { CREATE_CHANNEL } from '../dux/actionTypes';\nimport Modal from '../../../ui/Modal';\n\nexport default function AddChannel({\n sdk,\n disabled,\n channelListDispatcher,\n onBeforeCreateChannel,\n userId,\n userFilledApplicationUserListQuery,\n userListQuery,\n}) {\n const [showModal, setShowModal] = useState(false);\n const [step, setStep] = useState(0);\n const [type, setType] = useState('group');\n const { stringSet } = useContext(LocalizationContext);\n\n if (!sdk || !sdk.createApplicationUserListQuery) {\n return null;\n }\n\n const isBroadcastAvailable = isBroadcastChannelEnabled(sdk);\n const isSupergroupAvailable = isSuperGroupChannelEnabled(sdk);\n\n return (\n <>\n {\n setShowModal(true);\n }}\n disabled={disabled}\n >\n \n \n {\n showModal && step === 0 && (\n { setShowModal(false); }}\n onSubmit={() => {}}\n >\n \n
{\n setType('group');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('group');\n setStep(1);\n }}\n >\n \n \n Group\n \n
\n {\n isSupergroupAvailable && (\n
{\n setType('supergroup');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('supergroup');\n setStep(1);\n }}\n >\n \n \n Super group\n \n
\n )\n }\n {\n isBroadcastAvailable && (\n
{\n setType('broadcast');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('broadcast');\n setStep(1);\n }}\n >\n \n \n Broadcast\n \n
\n )\n }\n
\n \n )\n }\n {\n showModal && step === 1 && (\n {\n setStep(0);\n setShowModal(false);\n }}\n idsToFilter={[userId]}\n userQueryCreator={() => ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )}\n onSubmit={(selectedUsers) => createChannel(\n sdk,\n selectedUsers,\n onBeforeCreateChannel,\n userId,\n type,\n ).then((channel) => {\n // maybe - do this in event listener\n channelListDispatcher({\n type: CREATE_CHANNEL,\n payload: channel,\n });\n })}\n />\n )\n }\n >\n );\n}\n\nAddChannel.propTypes = {\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n createApplicationUserListQuery: PropTypes.func,\n }).isRequired,\n disabled: PropTypes.bool,\n channelListDispatcher: PropTypes.func.isRequired,\n userFilledApplicationUserListQuery: PropTypes.shape({}),\n onBeforeCreateChannel: PropTypes.func,\n userId: PropTypes.string.isRequired,\n userListQuery: PropTypes.func,\n};\n\nAddChannel.defaultProps = {\n disabled: false,\n userFilledApplicationUserListQuery: {},\n onBeforeCreateChannel: null,\n userListQuery: null,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../../ui/Modal';\n\nconst LeaveChannel = (props) => {\n const {\n onCloseModal,\n onLeaveChannel,\n } = props;\n return (\n \n );\n};\n\nLeaveChannel.propTypes = {\n onCloseModal: PropTypes.func.isRequired,\n onLeaveChannel: PropTypes.func.isRequired,\n};\n\nexport default LeaveChannel;\n","import React, {\n useState,\n useRef,\n useContext,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../ui/ContextMenu';\nimport IconButton from '../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport LeaveChannelModal from '../../ChannelSettings/components/LeaveChannel';\n\nexport default function ChannelPreviewAction({ disabled, onLeaveChannel }) {\n const parentRef = useRef(null);\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n { e.stopPropagation(); }}\n tabIndex={0}\n onClick={(e) => { e.stopPropagation(); }}\n >\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if (disabled) { return; }\n setShowModal(true);\n closeDropdown();\n }}\n >\n {stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE}\n \n \n )}\n />\n {\n showModal && (\n setShowModal(false)}\n onLeaveChannel={onLeaveChannel}\n />\n )\n }\n
\n );\n}\n\nChannelPreviewAction.propTypes = {\n disabled: PropTypes.bool,\n onLeaveChannel: PropTypes.func.isRequired,\n};\n\nChannelPreviewAction.defaultProps = {\n disabled: false,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes } from '../Icon';\n\nexport default function Loader({\n children,\n className,\n width,\n height,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {children}\n
\n );\n}\n\nLoader.propTypes = {\n children: PropTypes.element,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n};\n\nLoader.defaultProps = {\n children: ,\n className: '',\n width: '26px',\n height: '26px',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Loader from '../Loader';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport PlaceHolderTypes from './type';\n\nexport default function PlaceHolder({\n className,\n type,\n retryToConnect,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {\n type === PlaceHolderTypes.LOADING\n ? (\n
\n \n \n )\n : null\n }\n {\n type === PlaceHolderTypes.NO_CHANNELS || type === PlaceHolderTypes.WRONG\n ? (\n
\n {\n type === PlaceHolderTypes.NO_CHANNELS && (\n
\n )\n }\n {\n type === PlaceHolderTypes.WRONG && (\n
\n )\n }\n
\n {\n type === PlaceHolderTypes.NO_CHANNELS\n ? stringSet.PLACE_HOLDER__NO_CHANNEL\n : stringSet.PLACE_HOLDER__WRONG\n }\n \n {\n retryToConnect\n ? (\n
\n \n \n {stringSet.PLACE_HOLDER__RETRY_TO_CONNECT}\n \n
\n )\n : null\n }\n
\n )\n : null\n }\n
\n );\n}\n\nPlaceHolder.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n type: PropTypes.oneOfType([\n PropTypes.oneOf(Object.keys(PlaceHolderTypes)),\n PropTypes.string,\n ]).isRequired,\n retryToConnect: PropTypes.func,\n};\n\nPlaceHolder.defaultProps = {\n className: '',\n retryToConnect: null,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Placeholder from '../../../ui/PlaceHolder';\n\nexport default function ChannelsPlaceholder({\n type,\n}) {\n return (\n \n );\n}\n\nChannelsPlaceholder.propTypes = {\n type: PropTypes.string.isRequired,\n};\n","import * as channelActions from './dux/actionTypes';\nimport * as topics from '../../lib/pubSub/topics';\n\nconst createEventHandler = ({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n logger,\n}) => {\n const ChannelHandler = new sdk.ChannelHandler();\n\n ChannelHandler.onChannelChanged = (channel) => {\n logger.info('ChannelList: onChannelChanged', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_CHANGED,\n payload: channel,\n });\n };\n ChannelHandler.onChannelDeleted = (channelUrl) => {\n logger.info('ChannelList: onChannelDeleted', channelUrl);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_DELETED,\n payload: channelUrl,\n });\n };\n ChannelHandler.onUserJoined = (channel) => {\n logger.info('ChannelList: onUserJoined', channel);\n if (channel.lastMessage) {\n channelListDispatcher({\n type: channelActions.ON_USER_JOINED,\n payload: channel,\n });\n }\n };\n ChannelHandler.onUserBanned = (channel, user) => {\n const { currentUser } = sdk;\n logger.info('Channel | useHandleChannelEvents: onUserBanned', channel);\n if (user.userId === currentUser.userId) {\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe: true,\n },\n });\n } else {\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe: false,\n },\n });\n }\n };\n ChannelHandler.onUserLeft = (channel, leftUser) => {\n const { currentUser } = sdk;\n const isMe = (currentUser.userId === leftUser.userId);\n logger.info('ChannelList: onUserLeft', channel);\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe,\n },\n });\n };\n\n ChannelHandler.onReadStatus = (channel) => {\n logger.info('ChannelList: onReadStatus', channel);\n channelListDispatcher({\n type: channelActions.ON_READ_RECEIPT_UPDATED,\n payload: channel,\n });\n };\n\n ChannelHandler.onDeliveryReceiptUpdated = (channel) => {\n logger.info('ChannelList: onDeliveryReceiptUpdated', channel);\n if (channel.lastMessage) {\n channelListDispatcher({\n type: channelActions.ON_DELIVERY_RECEIPT_UPDATED,\n payload: channel,\n });\n }\n };\n\n ChannelHandler.onMessageUpdated = (channel, message) => {\n if (channel.lastMessage.isEqual(message)) {\n logger.info('ChannelList: onMessageUpdated', channel);\n channelListDispatcher({\n type: channelActions.ON_LAST_MESSAGE_UPDATED,\n payload: channel,\n });\n }\n };\n\n ChannelHandler.onChannelHidden = (channel) => {\n logger.info('ChannelList: onChannelHidden', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_ARCHIVED,\n payload: channel.url,\n });\n };\n\n ChannelHandler.onChannelFrozen = (channel) => {\n logger.info('ChannelList: onChannelFrozen', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_FROZEN,\n payload: channel,\n });\n };\n\n ChannelHandler.onChannelUnfrozen = (channel) => {\n logger.info('ChannelList: onChannelUnfrozen', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_UNFROZEN,\n payload: channel,\n });\n };\n\n logger.info('ChannelList: Added channelHandler');\n sdk.addChannelHandler(sdkChannelHandlerId, ChannelHandler);\n};\n\nconst createApplicationUserListQuery = ({ sdk, userFilledChannelListQuery = {} }) => {\n const channelListQuery = sdk.GroupChannel.createMyGroupChannelListQuery();\n channelListQuery.includeEmpty = false;\n channelListQuery.order = 'latest_last_message'; // 'chronological', 'latest_last_message', 'channel_name_alphabetical', and 'metadata_value_alphabetical'\n channelListQuery.limit = 20; // The value of pagination limit could be set up to 100.\n\n if (userFilledChannelListQuery) {\n Object.keys(userFilledChannelListQuery).forEach((key) => {\n channelListQuery[key] = userFilledChannelListQuery[key];\n });\n }\n\n return channelListQuery;\n};\n\n/**\n * Setup event listener\n * create channel source query\n * addloading screen\n */\nfunction setupChannelList({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n setChannelSource,\n onChannelSelect,\n userFilledChannelListQuery,\n logger,\n sortChannelList,\n}) {\n createEventHandler({\n sdk,\n channelListDispatcher,\n sdkChannelHandlerId,\n logger,\n });\n\n logger.info('ChannelList - creating query', { userFilledChannelListQuery });\n const channelListQuery = createApplicationUserListQuery({ sdk, userFilledChannelListQuery });\n logger.info('ChannelList - created query', channelListQuery);\n\n setChannelSource(channelListQuery);\n\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_START,\n });\n\n logger.info('ChannelList - fetching channels');\n if (channelListQuery.hasNext) {\n channelListQuery.next((response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let channelList = response;\n let err = error;\n if (swapParams) {\n channelList = error;\n err = response;\n }\n logger.info('ChannelList - fetched channels', channelList);\n if (err) {\n logger.error('ChannelList - couldnt fetch channels', err);\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_FAILURE,\n });\n return;\n }\n // select first channel\n logger.info('ChannelList - highlight channel', channelList[0]);\n let sorted = channelList;\n if (sortChannelList && typeof sortChannelList === 'function') {\n sorted = sortChannelList(channelList);\n logger.info('ChannelList - channel list sorted', sorted);\n }\n onChannelSelect(sorted[0]);\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_SUCCESS,\n payload: sorted,\n });\n if (channelList && typeof channelList.forEach === 'function') {\n logger.info('ChannelList - mark all channels as delivered');\n channelList.forEach((c) => c.markAsDelivered());\n }\n });\n } else {\n logger.warning('ChannelList - there are no more channels');\n }\n}\n\nexport const pubSubHandleRemover = (subscriber) => {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n};\n\nexport const pubSubHandler = (pubSub, channelListDispatcher) => {\n const subScriber = new Map();\n if (!pubSub) return subScriber;\n subScriber.set(topics.CREATE_CHANNEL, pubSub.subscribe(topics.CREATE_CHANNEL, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: 'CREATE_CHANNEL',\n payload: channel,\n });\n }));\n\n subScriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n const updatedChannel = channel;\n updatedChannel.lastMessage = message;\n if (channel) {\n channelListDispatcher({\n type: channelActions.ON_LAST_MESSAGE_UPDATED,\n payload: updatedChannel,\n });\n }\n }));\n\n subScriber.set(topics.LEAVE_CHANNEL, pubSub.subscribe(topics.LEAVE_CHANNEL, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: channelActions.LEAVE_CHANNEL_SUCCESS,\n payload: channel.url,\n });\n }));\n\n subScriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: channelActions.CHANNEL_REPLACED_TO_TOP,\n payload: channel,\n });\n }));\n\n return subScriber;\n};\n\nexport default setupChannelList;\n","import React, { useEffect, useState, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport * as userActions from '../../lib/dux/user/actionTypes';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\n\nimport * as channelListActions from './dux/actionTypes';\nimport channelListInitialState from './dux/initialState';\nimport channelListReducers from './dux/reducers';\n\nimport ChannelPreview from '../../ui/ChannelPreview';\nimport ChannelHeader from '../../ui/ChannelHeader';\nimport EditUserProfile from '../../ui/EditUserProfile';\nimport PlaceholderTypes from '../../ui/PlaceHolder/type';\n\nimport AddChannel from './components/AddChannel';\nimport ChannelPreviewAction from './components/ChannelPreviewAction';\nimport PlaceHolder from './components/Placeholder';\n\nimport setupChannelList, {\n pubSubHandler,\n pubSubHandleRemover,\n} from './utils';\nimport { uuidv4 } from '../../utils/uuid';\n\nimport './index.scss';\n\nconst noop = () => { };\n\nfunction ChannelList(props) {\n const {\n stores: { sdkStore = {}, userStore = {} },\n config: {\n userId,\n isOnline,\n userListQuery,\n logger,\n pubSub,\n theme,\n },\n dispatchers: {\n userDispatcher,\n },\n queries = {},\n renderChannelPreview,\n renderHeader,\n renderUserProfile,\n disableUserProfile,\n allowProfileEdit,\n sortChannelList,\n onProfileEditSuccess,\n onThemeChange,\n onBeforeCreateChannel,\n onChannelSelect,\n } = props;\n const { config = {} } = props;\n // enable if it is true atleast once(both are flase by default)\n const enableEditProfile = allowProfileEdit || config.allowProfileEdit;\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n const { sdk = {} } = sdkStore;\n const userFilledChannelListQuery = queries.channelListQuery;\n const userFilledApplicationUserListQuery = queries.applicationUserListQuery;\n\n const sdkError = sdkStore.error;\n\n const [user, setUser] = useState({});\n\n useEffect(() => {\n setUser(userStore.user);\n }, [userStore.user]);\n\n\n const sdkIntialized = sdkStore.initialized;\n const [channelListStore, channelListDispatcher] = useReducer(\n channelListReducers,\n channelListInitialState,\n );\n const [channelSource, setChannelSource] = useState({});\n const [sdkChannelHandlerId, setSdkChannelHandlerId] = useState(null);\n const [showProfileEdit, setShowProfileEdit] = useState(false);\n\n const { loading, currentChannel } = channelListStore;\n\n useEffect(() => {\n const subscriber = pubSubHandler(pubSub, channelListDispatcher);\n return () => {\n pubSubHandleRemover(subscriber);\n };\n }, [sdkIntialized]);\n\n useEffect(() => {\n setSdkChannelHandlerId(uuidv4);\n if (sdkIntialized) {\n logger.info('ChannelList: Setup channelHandlers');\n setupChannelList({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n setChannelSource,\n onChannelSelect,\n userFilledChannelListQuery,\n logger,\n sortChannelList,\n });\n } else {\n logger.info('ChannelList: Removing channelHandlers');\n // remove previous channelHandlers\n if (sdk && sdk.removeChannelHandler) {\n sdk.removeChannelHandler(sdkChannelHandlerId);\n }\n // remove channelSource\n setChannelSource({});\n // cleanup\n channelListDispatcher({\n type: channelListActions.RESET_CHANNEL_LIST,\n });\n }\n return () => {\n logger.info('ChannelList: Removing channelHandlers');\n if (sdk && sdk.removeChannelHandler) {\n sdk.removeChannelHandler(sdkChannelHandlerId);\n }\n };\n }, [sdkIntialized, userFilledChannelListQuery, sortChannelList]);\n\n const { allChannels } = channelListStore;\n const sortedChannels = (sortChannelList && typeof sortChannelList === 'function')\n ? sortChannelList(allChannels)\n : allChannels;\n\n if (sortedChannels.length !== allChannels.length) {\n const warning = `ChannelList: You have removed/added extra channels on sortChannelList\n this could cause unexpected problems`;\n // eslint-disable-next-line no-console\n console.warn(warning, { before: allChannels, after: sortedChannels });\n logger.warning(warning, { before: allChannels, after: sortedChannels });\n }\n\n useEffect(() => {\n if (!sdk || !sdk.GroupChannel) { return; }\n sdk.GroupChannel.getChannel(currentChannel, (groupChannel) => {\n if (groupChannel) {\n onChannelSelect(groupChannel);\n } else {\n onChannelSelect(null);\n }\n });\n }, [currentChannel]);\n\n return (\n \n \n
{\n if (enableEditProfile) {\n setShowProfileEdit(true);\n }\n }}\n allowProfileEdit={enableEditProfile}\n iconButton={(\n \n )}\n />\n \n {\n showProfileEdit && (\n { setShowProfileEdit(false); }}\n onSubmit={(newName, newFile) => {\n sdk.updateCurrentUserInfoWithProfileImage(newName, newFile, (updatedUser) => {\n userDispatcher({ type: userActions.UPDATE_USER_INFO, payload: updatedUser });\n if (onProfileEditSuccess && typeof onProfileEditSuccess === 'function') {\n onProfileEditSuccess(updatedUser);\n }\n });\n }}\n />\n )\n }\n {\n const fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;\n if (fetchMore && channelSource.hasNext) {\n logger.info('ChannelList: Fetching more channels');\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_START,\n });\n channelSource.next((response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let channelList = response;\n let err = error;\n if (swapParams) {\n channelList = error;\n err = response;\n }\n if (err) {\n logger.info('ChannelList: Fetching channels failed', err);\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_FAILURE,\n payload: channelList,\n });\n return;\n }\n logger.info('ChannelList: Fetching channels successful', channelList);\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_SUCCESS,\n payload: channelList,\n });\n if (channelList && typeof channelList.forEach === 'function') {\n logger.info('ChannelList: Marking all channels as read');\n channelList.forEach((c) => c.markAsDelivered());\n }\n });\n }\n }}\n >\n {\n (sdkError) && (\n
\n )\n }\n {/*\n To do: Implement windowing\n Implement windowing if you are dealing with large number of messages/channels\n https://github.com/bvaughn/react-window -> recommendation\n We hesitate to bring one more dependency to our library,\n we are planning to implement it inside the library\n */}\n
\n {\n sortedChannels && sortedChannels.map((channel, idx) => {\n const onLeaveChannel = (c, cb) => {\n logger.info('ChannelList: Leaving channel', c);\n c.leave()\n .then((res) => {\n logger.info('ChannelList: Leaving channel success', res);\n if (cb && typeof cb === 'function') {\n cb(res, null);\n }\n channelListDispatcher({\n type: channelListActions.LEAVE_CHANNEL_SUCCESS,\n payload: channel.url,\n });\n })\n .catch((err) => {\n logger.error('ChannelList: Leaving channel failed', err);\n if (cb && typeof cb === 'function') {\n cb(null, err);\n }\n });\n };\n\n const onClick = () => {\n if (!isOnline) { return; }\n logger.info('ChannelList: Clicked on channel:', channel);\n channelListDispatcher({\n type: channelListActions.SET_CURRENT_CHANNEL,\n payload: channel.url,\n });\n };\n\n return (\n (renderChannelPreview)\n ? (\n // eslint-disable-next-line\n
\n {renderChannelPreview({ channel, onLeaveChannel })}\n
\n )\n : (\n
onLeaveChannel(channel)}\n />\n )}\n />\n )\n );\n })\n }\n \n {\n (!sdkIntialized || loading) && (\n
\n )\n }\n {\n // placeholder\n (!allChannels || allChannels.length === 0) && (\n
\n )\n }\n
\n \n );\n}\n\nChannelList.propTypes = {\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n initialized: PropTypes.bool,\n }),\n userStore: PropTypes.shape({\n user: PropTypes.shape({}),\n }),\n }).isRequired,\n dispatchers: PropTypes.shape({\n userDispatcher: PropTypes.func,\n }).isRequired,\n config: PropTypes.shape({\n userId: PropTypes.string.isRequired,\n userListQuery: PropTypes.func,\n theme: PropTypes.string,\n isOnline: PropTypes.bool,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }).isRequired,\n queries: PropTypes.shape({\n channelListQuery: PropTypes.shape({\n channelNameContainsFilter: PropTypes.string,\n channelUrlsFilter: PropTypes.arrayOf(PropTypes.string),\n customTypesFilter: PropTypes.arrayOf(PropTypes.string),\n customTypeStartsWithFilter: PropTypes.string,\n hiddenChannelFilter: PropTypes.string,\n includeEmpty: PropTypes.bool,\n limit: PropTypes.number,\n memberStateFilter: PropTypes.string,\n metadataOrderKeyFilter: PropTypes.string,\n nicknameContainsFilter: PropTypes.string,\n order: PropTypes.string,\n publicChannelFilter: PropTypes.string,\n superChannelFilter: PropTypes.string,\n unreadChannelFilter: PropTypes.string,\n userIdsExactFilter: PropTypes.arrayOf(PropTypes.string),\n userIdsIncludeFilter: PropTypes.arrayOf(PropTypes.string),\n userIdsIncludeFilterQueryType: PropTypes.string,\n }),\n applicationUserListQuery: PropTypes.shape({\n limit: PropTypes.number,\n userIdsFilter: PropTypes.arrayOf(PropTypes.string),\n metaDataKeyFilter: PropTypes.string,\n metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n onBeforeCreateChannel: PropTypes.func,\n renderChannelPreview: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n sortChannelList: PropTypes.func,\n onThemeChange: PropTypes.func,\n onProfileEditSuccess: PropTypes.func,\n renderHeader: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n onChannelSelect: PropTypes.func,\n};\n\nChannelList.defaultProps = {\n onBeforeCreateChannel: null,\n renderChannelPreview: null,\n renderHeader: null,\n disableUserProfile: false,\n renderUserProfile: null,\n allowProfileEdit: false,\n onThemeChange: null,\n sortChannelList: null,\n onProfileEditSuccess: null,\n queries: {},\n onChannelSelect: noop,\n};\n\nexport default withSendbirdContext(ChannelList);\n","export const RESET_MESSAGES = 'RESET_MESSAGES';\nexport const RESET_STATE = 'RESET_STATE';\nexport const CLEAR_SENT_MESSAGES = 'CLEAR_SENT_MESSAGES';\nexport const GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';\nexport const GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';\nexport const GET_PREV_MESSAGES_FAILURE = 'GET_PREV_MESSAGES_FAILURE';\n\nexport const SEND_MESSAGEGE_START = 'SEND_MESSAGEGE_START';\nexport const SEND_MESSAGEGE_SUCESS = 'SEND_MESSAGEGE_SUCESS';\nexport const SEND_MESSAGEGE_FAILURE = 'SEND_MESSAGEGE_FAILURE';\n\nexport const RESEND_MESSAGEGE_START = 'RESEND_MESSAGEGE_START';\n\nexport const ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';\nexport const ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';\nexport const ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';\nexport const ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';\n\nexport const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\nexport const SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';\nexport const MARK_AS_READ = 'MARK_AS_READ';\n\nexport const ON_REACTION_UPDATED = 'ON_REACTION_UPDATED';\nexport const SET_EMOJI_CONTAINER = 'SET_EMOJI_CONTAINER';\nexport const SET_READ_STATUS = 'SET_READ_STATUS';\n","// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\nconst SUPPORTED_MIMES = {\n IMAGE: [\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif',\n 'image/webp', // not supported in IE\n ],\n VIDEO: [\n 'video/mpeg',\n 'video/ogg',\n 'video/webm',\n 'video/mp4',\n ],\n};\n\nexport const isImage = (type) => SUPPORTED_MIMES.IMAGE.includes(type);\nexport const isVideo = (type) => SUPPORTED_MIMES.VIDEO.includes(type);\nexport const unSupported = (type) => !(isImage(type) || isVideo(type));\n\nexport default SUPPORTED_MIMES;\n","import { isImage, isVideo } from '../../ui/FileViewer/types';\n\nexport const MessageTypes = {\n ADMIN: 'ADMIN',\n USER: 'USER',\n FILE: 'FILE',\n THUMBNAIL: 'THUMBNAIL',\n OG: 'OG',\n};\n\nexport const SendingMessageStatus = {\n NONE: 'none',\n SUCCEEDED: 'succeeded',\n FAILED: 'failed',\n PENDING: 'pending',\n};\n\nexport const getMessageType = (message) => {\n if ((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user') {\n return (message.ogMetaData)\n ? MessageTypes.OG\n : MessageTypes.USER;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return MessageTypes.ADMIN;\n }\n if ((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file') {\n return (isImage(message.type) || isVideo(message.type))\n ? MessageTypes.THUMBNAIL\n : MessageTypes.FILE;\n }\n return '';\n};\n\nexport default {\n MessageTypes,\n SendingMessageStatus,\n getMessageType,\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../../ui/MessageStatus/type';\nimport * as channelActions from './dux/actionTypes';\nimport * as topics from '../../lib/pubSub/topics';\n\nimport { SendingMessageStatus } from './types';\n\nconst UNDEFINED = 'undefined';\nconst { SUCCEEDED, FAILED, PENDING } = SendingMessageStatus;\n\nexport const scrollIntoLast = (selector, intialTry = 0) => {\n const MAX_TRIES = 10;\n const currentTry = intialTry;\n if (currentTry > MAX_TRIES) {\n return;\n }\n try {\n const nodes = document.querySelectorAll(selector);\n const last = nodes[nodes.length - 1];\n last.scrollIntoView(false); /** alignToTop: false */\n } catch (error) {\n setTimeout(() => {\n scrollIntoLast(selector, currentTry + 1);\n }, 500 * currentTry);\n }\n};\n\nexport const pubSubHandleRemover = (subscriber) => {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n};\n\nexport const pubSubHandler = (channelUrl, pubSub, dispatcher) => {\n const subscriber = new Map();\n if (!pubSub || !pubSub.subscribe) return subscriber;\n subscriber.set(topics.SEND_USER_MESSAGE, pubSub.subscribe(topics.SEND_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel, message } = msg;\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_START,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message, fromSelector } = msg;\n if (fromSelector && channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.ON_MESSAGE_UPDATED,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.DELETE_MESSAGE, pubSub.subscribe(topics.DELETE_MESSAGE, (msg) => {\n const { channel, messageId } = msg;\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n }\n }));\n\n return subscriber;\n};\n\nexport const getParsedStatus = (message, currentGroupChannel) => {\n if (message.requestState === FAILED) {\n return MessageStatusType.FAILED;\n }\n\n if (message.requestState === PENDING) {\n return MessageStatusType.PENDING;\n }\n\n if (message.requestState === SUCCEEDED) {\n if (!currentGroupChannel) {\n return MessageStatusType.SENT;\n }\n\n const unreadCount = currentGroupChannel.getReadReceipt(message);\n if (unreadCount === 0) {\n return MessageStatusType.READ;\n }\n\n const isDelivered = currentGroupChannel.getDeliveryReceipt(message) === 0;\n if (isDelivered) {\n return MessageStatusType.DELIVERED;\n }\n\n return MessageStatusType.SENT;\n }\n\n return null;\n};\n\nexport const isOperator = (groupChannel = {}) => {\n const { myRole } = groupChannel;\n return myRole === 'operator';\n};\n\nexport const isDisabledBecauseFrozen = (groupChannel = {}) => {\n const { isFrozen } = groupChannel;\n return isFrozen && !isOperator(groupChannel);\n};\n\nexport const isDisabledBecauseMuted = (groupChannel = {}) => {\n const { myMutedState } = groupChannel;\n return myMutedState === 'muted';\n};\n\nexport const getEmojiCategoriesFromEmojiContainer = (emojiContainer = {}) => (\n emojiContainer.emojiCategories ? emojiContainer.emojiCategories : []\n);\n\nexport const getAllEmojisFromEmojiContainer = (emojiContainer = {}) => {\n const { emojiCategories = [] } = emojiContainer;\n const allEmojis = [];\n\n for (let categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {\n const { emojis } = emojiCategories[categoryIndex];\n for (let emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {\n allEmojis.push(emojis[emojiIndex]);\n }\n }\n return allEmojis;\n};\n\nexport const getEmojisFromEmojiContainer = (emojiContainer = {}, emojiCategoryId = '') => (\n emojiContainer.emojiCategories\n ? emojiContainer.emojiCategories\n .filter((emojiCategory) => emojiCategory.id === emojiCategoryId)[0].emojis\n : []\n);\n\nexport const getAllEmojisMapFromEmojiContainer = (emojiContainer = {}) => {\n const { emojiCategories = [] } = emojiContainer;\n const allEmojisMap = new Map();\n\n for (let categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {\n const { emojis } = emojiCategories[categoryIndex];\n for (let emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {\n const { key, url } = emojis[emojiIndex];\n allEmojisMap.set(key, url);\n }\n }\n return allEmojisMap;\n};\n\nexport const getNicknamesMapFromMembers = (members = []) => {\n const nicknamesMap = new Map();\n for (let memberIndex = 0; memberIndex < members.length; memberIndex += 1) {\n const { userId, nickname } = members[memberIndex];\n nicknamesMap.set(userId, nickname);\n }\n return nicknamesMap;\n};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const isSameGroup = (message, comparingMessage) => {\n if (\n !message\n || !comparingMessage\n || !message.sender\n || !comparingMessage.sender\n || !message.createdAt\n || !comparingMessage.createdAt\n || !message.sender.userId\n || !comparingMessage.sender.userId\n ) {\n return false;\n }\n return (\n message.sendingStatus === comparingMessage.sendingStatus\n && message.sender.userId === comparingMessage.sender.userId\n && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage)\n );\n};\n\nexport const compareMessagesForGrouping = (\n prevMessage,\n currMessage,\n nextMessage,\n) => (\n [\n isSameGroup(prevMessage, currMessage),\n isSameGroup(currMessage, nextMessage),\n ]\n);\n\nexport const passUnsuccessfullMessages = (allMessages, newMessage) => {\n const { sendingStatus = UNDEFINED } = newMessage;\n if (sendingStatus === SUCCEEDED || sendingStatus === PENDING) {\n const lastIndexOfSucceededMessage = allMessages\n .map((message) => (\n message.sendingStatus\n || ((message.isAdminMessage && message.isAdminMessage()) ? SUCCEEDED : UNDEFINED)\n ))\n .lastIndexOf(SUCCEEDED);\n if (lastIndexOfSucceededMessage + 1 < allMessages.length) {\n const messages = [...allMessages];\n messages.splice(lastIndexOfSucceededMessage + 1, 0, newMessage);\n return messages;\n }\n }\n return [\n ...allMessages,\n newMessage,\n ];\n};\n\nexport default getParsedStatus;\n","export default {\n initialized: false,\n loading: false,\n allMessages: [],\n currentGroupChannel: { members: [] },\n hasMore: false,\n lastMessageTimeStamp: 0,\n emojiContainer: {},\n readStatus: {},\n unreadCount: 0,\n unreadSince: null,\n isInvalid: false,\n};\n","const isEmpty = (val) => (val === null || val === undefined);\n\n// Some Ids return string and number inconsistently\n// only use to comapre IDs\nexport default function (a, b) {\n if (isEmpty(a) || isEmpty(b)) {\n return false;\n }\n const aString = a.toString();\n const bString = b.toString();\n return aString === bString;\n}\n","import format from 'date-fns/format';\n\nimport * as actionTypes from './actionTypes';\nimport initialState from './initialState';\n\nimport compareIds from '../../../utils/compareIds';\nimport { passUnsuccessfullMessages } from '../utils';\nimport { SendingMessageStatus } from '../types';\n\nconst {\n SUCCEEDED,\n FAILED,\n PENDING,\n} = SendingMessageStatus;\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actionTypes.RESET_STATE:\n return initialState;\n case actionTypes.RESET_MESSAGES:\n return {\n ...state,\n // when user switches channel, if the previous channel `hasMore`\n // the onScroll gets called twice, setting hasMore false prevents this\n hasMore: false,\n allMessages: [],\n };\n case actionTypes.GET_PREV_MESSAGES_START:\n return {\n ...state,\n loading: true,\n };\n case actionTypes.CLEAR_SENT_MESSAGES:\n return {\n ...state,\n allMessages: [\n ...state.allMessages.filter((m) => (\n m.sendingStatus !== SUCCEEDED\n )),\n ],\n };\n case actionTypes.GET_PREV_MESSAGES_SUCESS: {\n const recivedMessages = action.payload.messages || [];\n const { currentGroupChannel = {} } = action.payload;\n\n const stateChannel = state.currentGroupChannel || {};\n const stateChannelUrl = stateChannel.url;\n const actionChannelUrl = currentGroupChannel.url;\n if (actionChannelUrl !== stateChannelUrl) {\n return state;\n }\n\n // remove duplicate messages\n const filteredAllMessages = state.allMessages.filter((msg) => (\n !(recivedMessages.find(({ messageId }) => compareIds(messageId, msg.messageId)))\n ));\n return {\n ...state,\n loading: false,\n initialized: true,\n hasMore: action.payload.hasMore,\n lastMessageTimeStamp: action.payload.lastMessageTimeStamp,\n allMessages: [\n ...recivedMessages,\n ...filteredAllMessages,\n ],\n };\n }\n case actionTypes.SEND_MESSAGEGE_START:\n return {\n ...state,\n allMessages: [\n ...state.allMessages,\n { ...action.payload },\n ],\n };\n case actionTypes.SEND_MESSAGEGE_SUCESS: {\n const newMessages = state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId) ? action.payload : m\n ));\n [...newMessages].sort((a, b) => (\n (\n a.sendingStatus\n && b.sendingStatus\n && a.sendingStatus === SUCCEEDED\n && (\n b.sendingStatus === PENDING\n || b.sendingStatus === FAILED\n )\n ) ? -1 : 1\n ));\n return {\n ...state,\n allMessages: newMessages,\n };\n }\n case actionTypes.SEND_MESSAGEGE_FAILURE: {\n // eslint-disable-next-line no-param-reassign\n action.payload.failed = true;\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId)\n ? action.payload\n : m\n )),\n };\n }\n case actionTypes.SET_CURRENT_CHANNEL: {\n return {\n ...state,\n currentGroupChannel: action.payload,\n isInvalid: false,\n };\n }\n case actionTypes.SET_CHANNEL_INVALID: {\n return {\n ...state,\n isInvalid: true,\n };\n }\n case actionTypes.ON_MESSAGE_RECEIVED: {\n const { channel, message } = action.payload;\n const { currentGroupChannel = {}, unreadCount, unreadSince } = state;\n const currentGroupChannelUrl = currentGroupChannel.url;\n if (!compareIds(channel.url, currentGroupChannelUrl)) {\n return state;\n }\n // Excluded overlapping messages\n if (!(state.allMessages.map((msg) => msg.messageId).indexOf(message.messageId) < 0)) {\n return state;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return {\n ...state,\n allMessages: passUnsuccessfullMessages(state.allMessages, message),\n };\n }\n return {\n ...state,\n unreadCount: unreadCount + 1,\n unreadSince: (unreadCount === 0)\n ? format(new Date(), 'p MMM dd')\n : unreadSince,\n allMessages: passUnsuccessfullMessages(state.allMessages, message),\n };\n }\n case actionTypes.ON_MESSAGE_UPDATED:\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.messageId, action.payload.messageId)\n ? action.payload\n : m\n )),\n };\n case actionTypes.RESEND_MESSAGEGE_START:\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId)\n ? action.payload\n : m\n )),\n };\n case actionTypes.MARK_AS_READ:\n return {\n ...state,\n unreadCount: 0,\n unreadSince: null,\n };\n case actionTypes.ON_MESSAGE_DELETED:\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.messageId, action.payload)\n )),\n };\n case actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID:\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.reqId, action.payload)\n )),\n };\n case actionTypes.SET_EMOJI_CONTAINER: {\n return {\n ...state,\n emojiContainer: action.payload,\n };\n }\n case actionTypes.SET_READ_STATUS: {\n return {\n ...state,\n readStatus: action.payload,\n };\n }\n case actionTypes.ON_REACTION_UPDATED: {\n return {\n ...state,\n allMessages: state.allMessages.map((m) => {\n if (compareIds(m.messageId, action.payload.messageId)) {\n if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {\n m.applyReactionEvent(action.payload);\n }\n return m;\n }\n return m;\n }),\n };\n }\n default:\n return state;\n }\n}\n","import { useEffect } from 'react';\n\nimport * as messageActions from '../dux/actionTypes';\nimport { uuidv4 } from '../../../utils/uuid';\nimport compareIds from '../../../utils/compareIds';\n\n/**\n * Handles ChannelEvents and send values to dispatcher using messagesDispatcher\n * messagesDispatcher: Dispatcher\n * sdk: sdkInstance\n * logger: loggerInstance\n * channelUrl: string\n * sdkInit: bool\n */\nfunction useHandleChannelEvents({ currentGroupChannel, sdkInit }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n const channelUrl = currentGroupChannel && currentGroupChannel.url;\n useEffect(() => {\n const messageReciverId = uuidv4();\n if (channelUrl && sdk && sdk.ChannelHandler) {\n const ChannelHandler = new sdk.ChannelHandler();\n logger.info('Channel | useHandleChannelEvents: Setup event handler', messageReciverId);\n ChannelHandler.onMessageReceived = (channel, message) => {\n if (compareIds(channel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_RECEIVED,\n payload: { channel, message },\n });\n }\n };\n\n ChannelHandler.onMessageUpdated = (_, message) => {\n logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_UPDATED,\n payload: message,\n });\n };\n\n ChannelHandler.onMessageDeleted = (_, messageId) => {\n logger.info('Channel | useHandleChannelEvents: onMessageDeleted', messageId);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n };\n\n ChannelHandler.onReactionUpdated = (_, reactionEvent) => {\n logger.info('Channel | useHandleChannelEvents: onReactionUpdated', reactionEvent);\n messagesDispatcher({\n type: messageActions.ON_REACTION_UPDATED,\n payload: reactionEvent,\n });\n };\n\n ChannelHandler.onChannelChanged = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelChanged', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onChannelFrozen = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelFrozen', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onChannelUnfrozen = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserMuted = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserMuted', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserUnmuted = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserUnmuted', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserBanned = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserBanned', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onOperatorUpdated = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n // Add this channel event handler to the SendBird object.\n sdk.addChannelHandler(messageReciverId, ChannelHandler);\n }\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', messageReciverId);\n sdk.removeChannelHandler(messageReciverId);\n }\n };\n }, [channelUrl, sdkInit]);\n}\n\nexport default useHandleChannelEvents;\n","import { useEffect } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useSetChannel({ channelUrl, sdkInit }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n useEffect(() => {\n if (channelUrl && sdkInit && sdk && sdk.GroupChannel) {\n logger.info('Channel | useSetChannel fetching channel', channelUrl);\n sdk.GroupChannel.getChannel(channelUrl)\n .then((groupChannel) => {\n logger.info('Channel | useSetChannel fetched channel', groupChannel);\n messagesDispatcher({\n type: messageActionTypes.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n\n logger.info('Channel: Mark as read', groupChannel);\n // this order is important - this mark as read should update the event handler up above\n groupChannel.markAsRead();\n })\n .catch((e) => {\n logger.warning('Channel | useSetChannel fetch channel failed', { channelUrl, e });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n });\n });\n sdk.getAllEmoji((emojiContainer_, err) => {\n if (err) {\n logger.error('Channel: Getting emojis failed', err);\n return;\n }\n logger.info('Channel: Getting emojis success', emojiContainer_);\n messagesDispatcher({\n type: messageActionTypes.SET_EMOJI_CONTAINER,\n payload: emojiContainer_,\n });\n });\n }\n }, [channelUrl, sdkInit]);\n}\n\nexport default useSetChannel;\n","import { useEffect } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\nfunction useInitialMessagesFetch({ currentGroupChannel, userFilledMessageListQuery }, {\n sdk,\n logger,\n messagesDispatcher,\n}) {\n const channelUrl = currentGroupChannel && currentGroupChannel.url;\n useEffect(() => {\n logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);\n\n messagesDispatcher({\n type: messageActionTypes.RESET_MESSAGES,\n });\n\n if (sdk && sdk.MessageListParams\n && currentGroupChannel && currentGroupChannel.getMessagesByMessageId) {\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.isInclusive = true;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = true;\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n\n currentGroupChannel.getMessagesByTimestamp(\n new Date().getTime(),\n messageListParams,\n )\n .then((messages) => {\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimeStamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore,\n lastMessageTimeStamp,\n currentGroupChannel,\n },\n });\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages: [],\n hasMore: false,\n lastMessageTimeStamp: 0,\n currentGroupChannel,\n },\n });\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n });\n }\n }, [channelUrl, userFilledMessageListQuery]);\n}\n\nexport default useInitialMessagesFetch;\n","import { useEffect } from 'react';\n\nimport * as utils from '../utils';\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useHandleReconnect({ isOnline }, {\n logger,\n sdk,\n currentGroupChannel,\n messagesDispatcher,\n userFilledMessageListQuery,\n}) {\n useEffect(() => {\n const wasOffline = !isOnline;\n return () => {\n // state changed from offline to online\n if (wasOffline) {\n logger.info('Refreshing conversation state');\n const { appInfo = {} } = sdk;\n const useReaction = appInfo.isUsingReaction || false;\n\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = useReaction;\n\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_START,\n });\n\n sdk.GroupChannel.getChannel(currentGroupChannel.url)\n .then((groupChannel) => {\n const lastMessageTime = new Date().getTime();\n\n groupChannel.getMessagesByTimestamp(\n lastMessageTime,\n messageListParams,\n )\n .then((messages) => {\n messagesDispatcher({\n type: messageActionTypes.CLEAR_SENT_MESSAGES,\n });\n\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimeStamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore,\n lastMessageTimeStamp,\n currentGroupChannel,\n },\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n });\n });\n }\n };\n }, [isOnline]);\n}\n\nexport default useHandleReconnect;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useScrollCallback({\n currentGroupChannel,\n lastMessageTimeStamp,\n userFilledMessageListQuery,\n}, {\n hasMore,\n logger,\n messagesDispatcher,\n sdk,\n}) {\n return useCallback((cb) => {\n if (!hasMore) { return; }\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = true;\n\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n\n currentGroupChannel.getMessagesByTimestamp(\n lastMessageTimeStamp || new Date().getTime(),\n messageListParams,\n )\n .then((messages) => {\n const hasMoreMessages = (messages && messages.length > 0);\n const lastMessageTs = hasMoreMessages\n ? messages[0].createdAt\n : null;\n\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore: hasMoreMessages,\n lastMessageTimeStamp: lastMessageTs,\n currentGroupChannel,\n },\n });\n cb([messages, null]);\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages: [],\n hasMore: false,\n lastMessageTimeStamp: 0,\n currentGroupChannel,\n },\n });\n cb([null, error]);\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n });\n }, [currentGroupChannel, lastMessageTimeStamp]);\n}\n\nexport default useScrollCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useDeleteMessageCallback({ currentGroupChannel, messagesDispatcher }, { logger }) {\n return useCallback((message, cb) => {\n logger.info('Channel | useDeleteMessageCallback: Deleting message', message);\n const { requestState } = message;\n logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', requestState);\n\n // Message is only on local\n if (requestState === 'failed' || requestState === 'pending') {\n logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,\n payload: message.reqId,\n });\n if (cb) { cb(); }\n return;\n }\n\n // Message is on server\n currentGroupChannel.deleteMessage(message, (err) => {\n logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', requestState);\n if (cb) { cb(err); }\n if (!err) {\n logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: message.messageId,\n });\n } else {\n logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);\n }\n });\n }, [currentGroupChannel, messagesDispatcher]);\n}\n\nexport default useDeleteMessageCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as topics from '../../../lib/pubSub/topics';\n\nfunction useUpdateMessageCallback({\n currentGroupChannel,\n messagesDispatcher,\n onBeforeUpdateUserMessage,\n}, {\n logger,\n pubSub,\n sdk,\n}) {\n return useCallback((messageId, text, cb) => {\n const createParamsDefault = (txt) => {\n const params = new sdk.UserMessageParams();\n params.message = txt;\n return params;\n };\n\n const createCustomPrams = onBeforeUpdateUserMessage\n && typeof onBeforeUpdateUserMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creting params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);\n }\n\n const params = onBeforeUpdateUserMessage\n ? onBeforeUpdateUserMessage(text)\n : createParamsDefault(text);\n\n currentGroupChannel.updateUserMessage(messageId, params, (r, e) => {\n logger.info('Channel: Updating message!', params);\n const swapParams = sdk.getErrorFirstCallback();\n let message = r;\n let err = e;\n if (swapParams) {\n message = e;\n err = r;\n }\n if (cb) {\n cb(err, message);\n }\n if (!err) {\n logger.info('Channel: Updating message success!', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: message,\n });\n pubSub.publish(\n topics.UPDATE_USER_MESSAGE,\n {\n message,\n channel: currentGroupChannel,\n },\n );\n } else {\n logger.warning('Channel: Updating message failed!', err);\n }\n });\n }, [currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);\n}\n\nexport default useUpdateMessageCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useResendMessageCallback({\n currentGroupChannel,\n messagesDispatcher,\n}, {\n logger,\n}) {\n return useCallback((failedMessage) => {\n logger.info('Channel: Resending message has started', failedMessage);\n const { messageType, file } = failedMessage;\n if (failedMessage && typeof failedMessage.isResendable === 'function'\n && failedMessage.isResendable()\n ) {\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n\n // userMessage\n if (messageType === 'user') {\n currentGroupChannel\n .resendUserMessage(failedMessage)\n .then((message) => {\n logger.info('Channel: Resending message success!', { message });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n })\n .catch((e) => {\n logger.warning('Channel: Resending message failed!', { e });\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: failedMessage,\n });\n });\n\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n return;\n }\n\n if (messageType === 'file') {\n currentGroupChannel\n .resendFileMessage(failedMessage, file)\n .then((message) => {\n logger.info('Channel: Resending file message success!', { message });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n })\n .catch((e) => {\n logger.warning('Channel: Resending file message failed!', { e });\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: failedMessage,\n });\n });\n\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n }\n } else {\n // to alert user on console\n // eslint-disable-next-line no-console\n console.error('Message is not resendable');\n logger.warning('Message is not resendable', failedMessage);\n }\n }, [currentGroupChannel, messagesDispatcher]);\n}\n\nexport default useResendMessageCallback;\n","import { useRef, useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\nimport * as topics from '../../../lib/pubSub/topics';\n\nexport default function useSendMessageCallback({ currentGroupChannel, onBeforeSendUserMessage }, {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n}) {\n const messageInputRef = useRef(null);\n\n const sendMessage = useCallback(\n () => {\n const text = messageInputRef.current.value;\n const createParamsDefault = (txt) => {\n const message = (typeof txt === 'string') ? txt.trim() : txt;\n const params = new sdk.UserMessageParams();\n params.message = message;\n return params;\n };\n\n const createCustomPrams = onBeforeSendUserMessage\n && typeof onBeforeSendUserMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creting params using onBeforeSendUserMessage', onBeforeSendUserMessage);\n }\n\n const params = onBeforeSendUserMessage\n ? onBeforeSendUserMessage(text)\n : createParamsDefault(text);\n\n logger.info('Channel: Sending message has started', params);\n const pendingMsg = currentGroupChannel.sendUserMessage(params, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n // sending params instead of pending message\n // to make sure that we can resend the message once it fails\n if (error) {\n logger.warning('Channel: Sending message failed!', {\n message,\n });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: message,\n });\n return;\n }\n logger.info('Channel: Sending message success!', message);\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n });\n pubSub.publish(topics.SEND_MESSAGE_START, {\n /* pubSub is used instead of messagesDispatcher\n to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */\n message: pendingMsg,\n channel: currentGroupChannel,\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n },\n [currentGroupChannel, onBeforeSendUserMessage],\n );\n\n return [messageInputRef, sendMessage];\n}\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\nimport * as topics from '../../../lib/pubSub/topics';\n\nexport default function useSendFileMessageCallback({\n currentGroupChannel, onBeforeSendFileMessage,\n}, {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n}) {\n const sendMessage = useCallback((file) => {\n const createParamsDefault = (file_) => {\n const params = new sdk.FileMessageParams();\n params.file = file_;\n return params;\n };\n\n const createCustomPrams = onBeforeSendFileMessage\n && typeof onBeforeSendFileMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creting params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n\n const params = onBeforeSendFileMessage\n ? onBeforeSendFileMessage(file)\n : createParamsDefault(file);\n\n logger.info('Channel: Uploading file message start!', params);\n const pendingMsg = currentGroupChannel.sendFileMessage(params, (response, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = response;\n let error = err;\n if (swapParams) {\n message = err;\n error = response;\n }\n if (error) {\n // sending params instead of pending message\n // to make sure that we can resend the message once it fails\n logger.error('Channel: Sending file message failed!', message);\n message.localUrl = URL.createObjectURL(file);\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: message,\n });\n return;\n }\n logger.info('Channel: Sending message success!', message);\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n });\n pubSub.publish(topics.SEND_MESSAGE_START, {\n /* pubSub is used instead of messagesDispatcher\n to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */\n message: {\n ...pendingMsg,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentGroupChannel,\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'), 1000);\n }, [currentGroupChannel, onBeforeSendFileMessage]);\n return [sendMessage];\n}\n","import { useEffect } from 'react';\n\nimport * as utils from '../utils';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { uuidv4 } from '../../../utils/uuid';\n\nexport default function useSetReadStatus({ allMessages, currentGroupChannel }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n useEffect(() => {\n if (!sdk.ChannelHandler || !currentGroupChannel.url) {\n return () => {};\n }\n // todo: move to reducer?\n const setReadStatus = () => {\n const allReadStatus = allMessages.reduce((accumulator, msg) => {\n if (msg.messageId !== 0) {\n return {\n ...accumulator,\n [msg.messageId]: utils.getParsedStatus(msg, currentGroupChannel),\n };\n }\n return accumulator;\n }, {});\n messagesDispatcher({\n type: messageActionTypes.SET_READ_STATUS,\n payload: allReadStatus,\n });\n };\n if (allMessages.length > 0) {\n setReadStatus();\n }\n\n const channelUrl = currentGroupChannel.url;\n const handler = new sdk.ChannelHandler();\n const handleMessageStatus = (c) => {\n if (channelUrl === c.url) {\n setReadStatus();\n }\n };\n handler.onDeliveryReceiptUpdated = handleMessageStatus;\n handler.onReadReceiptUpdated = handleMessageStatus;\n // Add this channel event handler to the SendBird object.\n const handlerId = uuidv4();\n logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);\n sdk.addChannelHandler(handlerId, handler);\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);\n sdk.removeChannelHandler(handlerId);\n }\n };\n }, [allMessages, currentGroupChannel]);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst ReactionButton = React.forwardRef((props, ref) => {\n const {\n children,\n width,\n height,\n onClick,\n selected,\n className,\n } = props;\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n return (\n onClick(e)}\n role=\"button\"\n onKeyDown={(e) => onClick(e)}\n tabIndex={0}\n >\n
\n {children}\n
\n
\n );\n});\n\nReactionButton.propTypes = {\n children: PropTypes.element.isRequired,\n onClick: PropTypes.func,\n selected: PropTypes.bool,\n width: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nReactionButton.defaultProps = {\n selected: false,\n width: '36px',\n height: '36px',\n onClick: () => { },\n className: '',\n};\n\nexport default ReactionButton;\n","import React, { useMemo } from 'react';\n\nimport { EmojiListItems } from '../../../ui/ContextMenu';\nimport ReactionButton from '../../../ui/ReactionButton';\nimport ImageRenderer from '../../../ui/ImageRenderer';\nimport Icon, { IconTypes } from '../../../ui/Icon';\n\nexport default function useMemoizedEmojiListItems({\n emojiContainer, toggleReaction,\n}, {\n useReaction,\n logger,\n userId,\n emojiAllList,\n}) {\n return useMemo(() => ({\n parentRef,\n parentContainRef,\n message,\n closeDropdown,\n spaceFromTrigger = {},\n }) => {\n if (!useReaction || !(parentRef || parentContainRef || message || closeDropdown)) {\n logger.warning('Channel: Invalid Params in memoizedEmojiListItems');\n return null;\n }\n\n return (\n \n {\n emojiAllList.map((emoji) => {\n const reactedReaction = message.reactions\n .filter((reaction) => reaction.key === emoji.key)[0];\n const isReacted = reactedReaction\n ? !(reactedReaction.userIds.indexOf(userId) < 0)\n : false;\n return (\n {\n closeDropdown();\n toggleReaction(message, emoji.key, isReacted);\n }}\n >\n \n }\n />\n \n );\n })\n }\n \n );\n }, [emojiContainer, toggleReaction]);\n}\n","import { useCallback } from 'react';\n\nexport default function useToggleReactionCallback({ currentGroupChannel }, { logger }) {\n return useCallback((message, key, isReacted) => {\n if (isReacted) {\n currentGroupChannel.deleteReaction(message, key)\n .then((res) => {\n logger.info('Delete reaction success', res);\n })\n .catch((err) => {\n logger.warning('Delete reaction failed', err);\n });\n return;\n }\n currentGroupChannel.addReaction(message, key)\n .then((res) => {\n logger.info('Add reaction success', res);\n })\n .catch((err) => {\n logger.warning('Add reaction failed', err);\n });\n }, [currentGroupChannel]);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport Loader from '../Loader';\nimport MessageStatusType from './type';\n\nimport { getMessageCreatedAt } from '../../utils/utils';\n\nconst MessageStatusTypes = MessageStatusType;\nexport { MessageStatusTypes };\nexport default function MessageStatus({\n message,\n status,\n className,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n const label = () => {\n switch (status) {\n case MessageStatusType.FAILED:\n case MessageStatusType.PENDING: {\n return null;\n }\n case MessageStatusType.SENT:\n case MessageStatusType.DELIVERED:\n case MessageStatusType.READ: {\n return (\n \n {getMessageCreatedAt(message)}\n \n );\n }\n default: return null;\n }\n };\n\n const icon = {\n PENDING: (\n \n \n \n ),\n SENT: ,\n DELIVERED: ,\n READ: ,\n FAILED: ,\n };\n\n return (\n \n {icon[status]}\n \n {label(status)}\n
\n );\n}\n\nMessageStatus.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n status: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nMessageStatus.defaultProps = {\n message: null,\n status: '',\n className: '',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport './index.scss';\n\nconst ReactionBadge = React.forwardRef((props, ref) => {\n const {\n className,\n children,\n count,\n selected,\n isAdd,\n onClick,\n } = props;\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n if (selected && !isAdd) {\n injectingClassName.unshift('sendbird-reaction-badge--selected');\n } else if (isAdd) {\n injectingClassName.push('sendbird-reaction-badge--is-add');\n } else {\n injectingClassName.unshift('sendbird-reaction-badge');\n }\n\n return (\n \n
\n
\n {children}\n
\n
\n {count}\n \n
\n
\n );\n});\n\nReactionBadge.propTypes = {\n children: PropTypes.element.isRequired,\n count: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n selected: PropTypes.bool,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n isAdd: PropTypes.bool,\n onClick: PropTypes.func,\n};\n\nReactionBadge.defaultProps = {\n className: '',\n count: '',\n selected: false,\n isAdd: false,\n onClick: () => { },\n};\n\nexport default ReactionBadge;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport Label from '../Label';\n\nconst CLASS_NAME = 'sendbird-tooltip';\n\nexport default function Tooltip({\n className,\n children,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n\n return (\n \n \n {children}\n \n
\n );\n}\n\nTooltip.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.string,\n ]),\n};\n\nTooltip.defaultProps = {\n className: '',\n children: '',\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst CLASS_NAME = 'sendbird-tooltip-wrapper';\nconst SPACE_FROM_TRIGGER = 8;\n\nexport default function TooltipWrapper({\n className,\n children,\n hoverTooltip,\n // clickTooltip can be added later\n}) {\n const injectingClassName = Array.isArray(className)\n ? [CLASS_NAME, ...className]\n : [CLASS_NAME, className];\n const [showHoverTooltip, setShowHoverTooltip] = useState(false);\n const childrenRef = useRef(null);\n\n return (\n { setShowHoverTooltip(true); }}\n onFocus={() => { setShowHoverTooltip(true); }}\n onMouseOut={() => { setShowHoverTooltip(false); }}\n onBlur={() => { setShowHoverTooltip(false); }}\n >\n
\n {children}\n
\n {\n showHoverTooltip && (\n
\n
\n
\n {hoverTooltip}\n
\n
\n
\n )\n }\n
\n );\n}\n\nTooltipWrapper.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.element.isRequired,\n hoverTooltip: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]).isRequired,\n};\nTooltipWrapper.defaultProps = {\n className: '',\n};\n","import React, { useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport ReactionBadge from '../ReactionBadge';\nimport ImageRenderer from '../ImageRenderer';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport ContextMenu from '../ContextMenu';\nimport Tooltip from '../Tooltip';\nimport TooltipWrapper from '../TooltipWrapper';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nexport default function EmojiReactions({\n className,\n userId,\n message,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift('sendbird-emoji-reactions');\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const imageWidth = '20px';\n const imageHeight = '20px';\n const emojiReactionAddRef = useRef(null);\n const { reactions = [] } = message;\n const messageReactions = reactions;\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n
\n {\n messageReactions && (\n messageReactions.map((reaction) => {\n const { userIds = [] } = reaction;\n const emojiUrl = emojiAllMap.get(reaction.key) || '';\n const reactedUserCount = userIds.length;\n const reactedByMe = !(userIds.indexOf(userId) < 0);\n const nicknames = userIds\n .filter((currentUserId) => currentUserId !== userId)\n .map((currentUserId) => (\n membersMap.get(currentUserId) || stringSet.TOOLTIP__UNKOWN_USER\n ));\n const stringSetForMe = (nicknames.length > 0)\n ? stringSet.TOOLTIP__AND_YOU : stringSet.TOOLTIP__YOU;\n return (\n 0 && (\n \n <>\n {\n `${(\n nicknames.join(', ')\n )}${(\n reactedByMe\n ? stringSetForMe\n : ''\n )}`\n }\n >\n \n )\n }\n >\n toggleReaction(message, reaction.key, reactedByMe)}\n >\n \n )}\n />\n \n \n );\n })\n )\n }\n {\n (messageReactions.length < emojiAllMap.size)\n && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n
\n );\n}\n\nEmojiReactions.propTypes = {\n userId: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n message: PropTypes.shape({\n reactions: PropTypes.arrayOf(PropTypes.shape({})),\n }).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\nEmojiReactions.defaultProps = {\n className: '',\n membersMap: new Map(),\n userId: '',\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const copyToClipboard = (text) => {\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport const createUrlTester = (regexp) => (text) => regexp.test(text);\n\nexport default {\n copyToClipboard,\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n getIsSentFromStatus,\n createUrlTester,\n};\n","import React, { useMemo, useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport uuidv4 from '../../utils/uuid';\n\nconst WORD_TYPOGRAPHY = LabelTypography.BODY_1;\nconst EDITED_COLOR = LabelColors.ONBACKGROUND_2;\n\nexport default function useMemoizedMessageText({\n message,\n updatedAt,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return useMemo(() => () => {\n const splitMessage = message.split(/\\r/);\n const matchedMessage = splitMessage\n .map((word) => (word !== '' ? word : ));\n if (updatedAt > 0) {\n matchedMessage.push(\n \n {` ${stringSet.MESSAGE_EDITED} `}\n ,\n );\n }\n return matchedMessage;\n }, [message, updatedAt, className]);\n}\n","import { useEffect } from 'react';\n\nconst MOUSE_ENTER = 'mouseenter';\nconst MOUSE_LEAVE = 'mouseleave';\n\nconst useMouseHover = ({\n ref,\n setHover,\n}) => {\n const handleMouseOver = () => {\n if (ref.current) {\n setHover(true);\n }\n };\n const handleMouseOut = () => {\n if (ref.current) {\n setHover(false);\n }\n };\n\n useEffect(() => {\n const { current } = ref;\n current.addEventListener(MOUSE_ENTER, handleMouseOver);\n current.addEventListener(MOUSE_LEAVE, handleMouseOut);\n return () => {\n current.removeEventListener(MOUSE_ENTER, handleMouseOver);\n current.removeEventListener(MOUSE_LEAVE, handleMouseOut);\n };\n });\n};\n\nexport default useMouseHover;\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport './index.scss';\nimport UserProfile from '../UserProfile';\nimport Avatar from '../Avatar/index';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport MessageStatus from '../MessageStatus';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport EmojiReactions from '../EmojiReactions';\nimport {\n copyToClipboard,\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n getIsSentFromStatus,\n} from './utils';\nimport useMemoizedMessageText from './memoizedMessageText';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst noop = () => { };\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function Message(props) {\n const {\n isByMe,\n userId,\n message,\n className,\n resendMessage,\n disabled,\n showEdit,\n showRemove,\n status,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n } = props;\n\n if (!message) return null;\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n injectingClassName.push(`sendbird-message${isByMe ? '--outgoing' : '--incoming'}`);\n const memoizedMessageText = useMemoizedMessageText({\n message: message.message,\n updatedAt: message.updatedAt,\n className: 'sendbird-user-message-word',\n });\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n}\n\nMessage.propTypes = {\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n userId: PropTypes.string,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n showEdit: PropTypes.func,\n status: PropTypes.string,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nMessage.defaultProps = {\n isByMe: false,\n disabled: false,\n userId: '',\n resendMessage: noop,\n className: '',\n showEdit: noop,\n showRemove: noop,\n status: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nfunction OutgoingUserMessage({\n userId,\n message,\n showEdit,\n disabled,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n // TODO: when message.requestState is succeeded, consider if it's SENT or DELIVERED\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n const isMessageSent = getIsSentFromStatus(status);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n isMessageSent && (\n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n )\n }\n {\n isMessageSent && (\n {\n if (disabled) { return; }\n showEdit(true);\n closeDropdown();\n }}\n >\n Edit\n \n )\n }\n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n (isMessageSent && useReaction && (emojiAllMap.size > 0))\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n { showRemove(true); }}\n // onResend={() => resendMessage(message)}\n // duplicated and should replace to more\n />\n
\n )\n }\n
\n
\n
\n
\n \n \n \n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n
\n )\n }\n
\n
\n
\n
\n );\n}\n\nfunction IncomingUserMessage({\n userId,\n message,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n const avatarRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n {\n // showProfile && (
)\n }\n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className=\"sendbird-user-message__avatar\"\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n
\n
\n \n \n \n
\n {\n showEmojiReactions && (\n
\n )\n }\n
\n
\n \n
\n
\n {\n showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n \n )}\n />\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nIncomingUserMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nIncomingUserMessage.defaultProps = {\n message: {},\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nOutgoingUserMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n showEdit: PropTypes.func,\n showRemove: PropTypes.func,\n disabled: PropTypes.bool,\n resendMessage: PropTypes.func,\n status: PropTypes.string.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingUserMessage.defaultProps = {\n message: {},\n resendMessage: noop,\n showEdit: noop,\n showRemove: noop,\n disabled: false,\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelColors, LabelTypography } from '../Label';\n\nexport default function AdminMessage({\n className,\n message,\n}) {\n if (!message.messageType || message.messageType !== 'admin') { // change to use message.isAdminMessage()\n return null;\n }\n\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n \n {message.message}\n \n
\n );\n}\n\nAdminMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nAdminMessage.defaultProps = {\n message: {},\n className: '',\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport default {\n getMessageCreatedAt,\n getIsSentFromStatus,\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport {\n getMessageCreatedAt,\n getIsSentFromStatus,\n} from './util';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport Avatar from '../Avatar/index';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport MessageStatus from '../MessageStatus';\nimport EmojiReactions from '../EmojiReactions';\nimport {\n isImage,\n isVideo,\n unSupported,\n} from '../FileViewer/types';\nimport {\n getSenderName,\n getSenderProfileUrl,\n} from '../../utils/utils';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst noop = () => { };\n\nconst OUTGOING_THUMBNAIL_MESSAGE = 'sendbird-outgoing-thumbnail-message';\nconst INCOMING_THUMBNAIL_MESSAGE = 'sendbird-incoming-thumbnail-message';\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function ThumbnailMessage({\n message = {},\n userId,\n disabled,\n isByMe,\n onClick,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n return (\n isByMe\n ? (\n \n )\n : (\n \n )\n );\n}\n\nexport function OutgoingThumbnailMessage({\n message = {},\n userId,\n disabled,\n onClick,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n type,\n url,\n localUrl,\n } = message;\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const reactionAddRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showReactionAddButton = (useReaction && emojiAllMap && emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n isMessageSent && showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n )\n }\n
\n
\n
\n
onClick(true) : () => { }}\n onKeyDown={isMessageSent ? () => onClick(true) : () => { }}\n tabIndex={0}\n role=\"button\"\n >\n {\n isVideo(type) && (\n <>\n {/* eslint-disable-next-line jsx-a11y/media-has-caption */}\n
\n \n \n
\n >\n )\n }\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n Unknown type\n
\n )\n }\n
\n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n
\n )\n }\n
\n
\n
\n
\n );\n}\n\nexport function IncomingThumbnailMessage({\n message = {},\n userId,\n onClick,\n status,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n type,\n url,\n localUrl,\n } = message;\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const reactionAddRef = useRef(null);\n const avatarRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showReactionAddButton = (useReaction && emojiAllMap && emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n {\n !chainTop && (\n
\n {getSenderName(message) || ''}\n \n )\n }\n
\n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${INCOMING_THUMBNAIL_MESSAGE}__avatar`}\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n onClick(true) : () => { }}\n onKeyDown={isMessageSent ? () => onClick(true) : () => { }}\n >\n {\n isVideo(type) && (\n <>\n {/* eslint-disable-next-line jsx-a11y/media-has-caption */}\n
\n \n \n
\n >\n )\n }\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n Unknown type\n
\n )\n }\n
\n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n \n )\n }\n \n
\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n
\n
\n
\n );\n}\n\nThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string,\n resendMessage: PropTypes.func,\n status: PropTypes.string,\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n showRemove: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\nThumbnailMessage.defaultProps = {\n isByMe: false,\n disabled: false,\n resendMessage: noop,\n onClick: noop,\n showRemove: noop,\n status: '',\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nOutgoingThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n resendMessage: PropTypes.func.isRequired,\n status: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n showRemove: PropTypes.func.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\nOutgoingThumbnailMessage.defaultProps = {\n status: '',\n};\n\nIncomingThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n status: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\nIncomingThumbnailMessage.defaultProps = {\n status: '',\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport './index.scss';\nimport Avatar from '../Avatar/index';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport TextButton from '../TextButton';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport MessageStatus from '../MessageStatus';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport EmojiReactions from '../EmojiReactions';\n\nimport { getSenderProfileUrl, getSenderName, getMessageCreatedAt } from '../../utils/utils';\nimport {\n truncate,\n getIsSentFromStatus,\n} from './utils';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst MAX_TRUNCATE_LENGTH = 40;\nconst GROUPAING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\nconst noop = () => { };\n\nfunction checkFileType(fileUrl) {\n let result = null;\n const imageFile = /(\\.gif|\\.jpg|\\.jpeg|\\.txt|\\.pdf)$/i;\n const audioFile = /(\\.mp3)$/i;\n if (imageFile.test(fileUrl)) {\n result = IconTypes.FILE_DOCUMENT;\n } else if (audioFile.test(fileUrl)) {\n result = IconTypes.FILE_AUDIO;\n }\n return result;\n}\n\nexport function OutgoingFileMessage({\n message,\n userId,\n status,\n showRemove,\n disabled,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n url,\n } = message;\n const openFileUrl = () => { window.open(url); };\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const reactionAddButtonRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n const showEmojiReactions = isMessageSent && useReaction && message.reactions\n && (message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n {\n checkFileType(url)\n ? (\n \n )\n : null\n }\n \n \n {truncate(message.url, MAX_TRUNCATE_LENGTH)}\n \n \n
\n {\n showEmojiReactions && (\n
\n )\n }\n
\n
\n
\n );\n}\n\nexport function IncomingFileMessage({\n message,\n userId,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const openFileUrl = () => { window.open(message.url); };\n const messageRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const parentContainRef = useRef(null);\n const avatarRef = useRef(null);\n const reactionAddButtonRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className=\"sendbird-file-message__avatar\"\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n
\n {\n checkFileType(message.url)\n ? (\n \n )\n : null\n }\n \n \n {truncate(message.url, MAX_TRUNCATE_LENGTH)}\n \n \n
\n {\n (useReaction && message.reactions && (message.reactions.length > 0)) && (\n
\n )\n }\n
\n \n
\n
\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nOutgoingFileMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n userId: PropTypes.string,\n status: PropTypes.string,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n disabled: PropTypes.bool,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingFileMessage.defaultProps = {\n status: '',\n showRemove: noop,\n resendMessage: noop,\n message: {},\n userId: '',\n disabled: false,\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nIncomingFileMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n userId: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nIncomingFileMessage.defaultProps = {\n message: {},\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nconst MessageSwitch = ({\n message,\n userId,\n disabled,\n isByMe,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) => (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n);\n\n\nMessageSwitch.propTypes = {\n message: PropTypes.shape({}),\n userId: PropTypes.string,\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n status: PropTypes.string.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nMessageSwitch.defaultProps = {\n message: {},\n isByMe: false,\n disabled: false,\n showRemove: noop,\n resendMessage: noop,\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nexport default MessageSwitch;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { changeColorToClassName, Colors } from '../../utils/color';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nexport default function DateSeparator({\n className,\n children,\n separatorColor,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n );\n}\n\nDateSeparator.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.element,\n ]),\n separatorColor: PropTypes.string,\n};\n\nDateSeparator.defaultProps = {\n className: '',\n children: (\n \n Date Separator\n \n ),\n separatorColor: Colors.ONBACKGROUND_4,\n};\n","import React, {\n useState,\n useRef,\n useEffect,\n useContext,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport IconButton from '../IconButton';\nimport Button from '../Button';\nimport { Type, Size } from '../Button/type';\n\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n// import IconSend from '../../svgs/icon-send.svg';\n// import IconAttach from '../../svgs/icon-attach.svg';\n\nconst LINE_HEIGHT = 76;\nconst noop = () => { };\nconst KeyCode = {\n SHIFT: 16,\n ENTER: 13,\n};\n\nconst handleUploadFile = (callback) => (event) => {\n if (event.target.files && event.target.files[0]) {\n callback(event.target.files[0]);\n }\n // eslint-disable-next-line no-param-reassign\n event.target.value = '';\n};\n\nconst MessageInput = React.forwardRef((props, ref) => {\n const {\n isEdit,\n disabled,\n value,\n name,\n placeholder,\n maxLength,\n onFileUpload,\n onSendMessage,\n onCancelEdit,\n onStartTyping,\n } = props;\n\n const { stringSet } = useContext(LocalizationContext);\n const fileInputRef = useRef(null);\n const [inputValue, setInputValue] = useState(value);\n const [isShiftPressed, setIsShiftPressed] = useState(false);\n\n const setHeight = () => {\n const elem = ref.current;\n const MAX_HEIGHT = window.document.body.offsetHeight * 0.6;\n if (elem.scrollHeight >= LINE_HEIGHT) {\n if (MAX_HEIGHT < elem.scrollHeight) {\n elem.style.height = 'auto';\n elem.style.height = `${MAX_HEIGHT}px`;\n } else {\n elem.style.height = 'auto';\n elem.style.height = `${elem.scrollHeight}px`;\n }\n } else {\n elem.style.height = '';\n }\n };\n\n // after setHeight called twice, the textarea goes to the initialized\n useEffect(() => {\n setHeight();\n return setHeight;\n }, [inputValue]);\n\n const sendMessage = () => {\n if (inputValue) {\n const trimmedInputValue = inputValue.trim();\n if (isEdit) {\n onSendMessage(name, trimmedInputValue, () => {\n onCancelEdit();\n });\n } else {\n onSendMessage(trimmedInputValue);\n setInputValue('');\n }\n }\n };\n\n return (\n \n \n {\n setInputValue(e.target.value);\n onStartTyping();\n }}\n onKeyDown={(e) => {\n if (e.keyCode === KeyCode.SHIFT) {\n setIsShiftPressed(true);\n }\n if (!isShiftPressed && e.keyCode === KeyCode.ENTER) {\n e.preventDefault();\n sendMessage();\n }\n }}\n onKeyUp={(e) => {\n if (e.keyCode === KeyCode.SHIFT) {\n setIsShiftPressed(false);\n }\n }}\n />\n {/* placeholder */}\n {!inputValue && (\n \n {placeholder || stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER}\n \n )}\n {/* upload icon */}\n {\n (!isEdit && !inputValue) && (\n {\n // todo: clear previous input\n fileInputRef.current.click();\n }}\n >\n \n \n \n )\n }\n {/* send icon */}\n {\n (!isEdit && inputValue) && (\n \n \n \n )\n }\n
\n {/* Edit */}\n {\n isEdit && (\n \n \n {stringSet.BUTTON__CANCEL}\n \n {\n if (inputValue) {\n const trimmedInputValue = inputValue.trim();\n onSendMessage(name, trimmedInputValue, () => {\n onCancelEdit();\n });\n }\n }}\n >\n {stringSet.BUTTON__SAVE}\n \n
\n )\n }\n \n );\n});\n\nMessageInput.propTypes = {\n placeholder: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n isEdit: PropTypes.bool,\n name: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n value: PropTypes.string,\n disabled: PropTypes.bool,\n maxLength: PropTypes.number,\n onFileUpload: PropTypes.func,\n onSendMessage: PropTypes.func,\n onStartTyping: PropTypes.func,\n onCancelEdit: PropTypes.func,\n};\n\nMessageInput.defaultProps = {\n value: '',\n onSendMessage: noop,\n name: 'sendbird-message-input',\n isEdit: false,\n disabled: false,\n placeholder: '',\n maxLength: 5000,\n onFileUpload: noop,\n onCancelEdit: noop,\n onStartTyping: noop,\n};\n\nexport default MessageInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\n\nimport './index.scss';\nimport Avatar from '../Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconTypes } from '../Icon';\nimport { MODAL_ROOT } from '../../hooks/useModal/ModalRoot';\n\nimport { isImage, isVideo, unSupported } from './types';\n\nexport const FileViewerComponent = ({\n profileUrl,\n nickname,\n type,\n url,\n name,\n onClose,\n onDelete,\n isByMe,\n}) => (\n \n
\n
\n
\n
\n {name}\n \n
\n {nickname}\n \n
\n
\n {\n !unSupported(type) && (\n
\n
\n \n \n {\n onDelete && isByMe && (\n
\n \n
\n )\n }\n
\n )\n }\n
\n \n
\n
\n
\n
\n {isVideo(type) && (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n
\n \n \n )}\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n \n Unsupoprted message\n \n
\n )\n }\n
\n
\n);\n\nFileViewerComponent.propTypes = {\n profileUrl: PropTypes.string.isRequired,\n nickname: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n isByMe: PropTypes.bool,\n};\n\nFileViewerComponent.defaultProps = {\n isByMe: true,\n};\n\nexport default function FileViewer(props) {\n const {\n onClose,\n message,\n onDelete,\n isByMe,\n } = props;\n const {\n sender,\n type,\n url,\n name = '',\n } = message;\n const { profileUrl, nickname = '' } = sender;\n return createPortal(\n (\n \n ),\n document.getElementById(MODAL_ROOT),\n );\n}\n\nFileViewer.propTypes = {\n onClose: PropTypes.func.isRequired,\n message: PropTypes.shape({\n sender: PropTypes.shape({\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n }),\n type: PropTypes.string,\n url: PropTypes.string,\n name: PropTypes.string,\n }).isRequired,\n onDelete: PropTypes.func.isRequired,\n isByMe: PropTypes.bool,\n};\n\nFileViewer.defaultProps = {\n isByMe: true,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../../ui/Modal';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\nconst RemoveMessage = (props) => {\n const {\n onCloseModal,\n onDeleteMessage,\n } = props;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n );\n};\n\nRemoveMessage.propTypes = {\n onCloseModal: PropTypes.func.isRequired,\n onDeleteMessage: PropTypes.func.isRequired,\n};\n\nexport default RemoveMessage;\n","import format from 'date-fns/format';\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport default {\n getMessageCreatedAt,\n};\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Avatar from '../Avatar/index';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport MessageStatus from '../MessageStatus';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport IconButton from '../IconButton';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst CLASS_NAME = 'sendbird-unknown-message';\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function UnknownMessage({\n message,\n isByMe,\n status,\n className,\n showRemove,\n chainTop,\n chainBottom,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n injectingClassName.push(`${CLASS_NAME}${isByMe ? '--outgoing' : '--incoming'}`);\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n}\n\nUnknownMessage.propTypes = {\n message: PropTypes.shape({}).isRequired,\n isByMe: PropTypes.bool,\n status: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n showRemove: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nUnknownMessage.defaultProps = {\n isByMe: false,\n status: '',\n className: '',\n showRemove: () => { },\n chainTop: false,\n chainBottom: false,\n};\n\nfunction OutgoingUnknownMessage({\n message,\n status,\n showRemove,\n chainTop,\n chainBottom,\n}) {\n const className = 'sendbird-outgoing-unknown-message';\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { showRemove(true); closeDropdown(); }}\n >\n Delete\n \n \n )}\n />\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n \n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n \n \n {stringSet.UNKNOWN__CANNOT_READ_MESSAGE}\n \n
\n
\n
\n
\n );\n}\n\nfunction IncomingUnknownMessage({\n message,\n chainTop,\n chainBottom,\n}) {\n const className = 'sendbird-incoming-unknown-message';\n const { sender } = message;\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${className}__left__sender-profile-image`}\n src={sender.profileUrl}\n width=\"28px\"\n height=\"28px\"\n alt=\"sender-profile-image\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n {sender.nickname || stringSet.NO_NAME}\n \n )\n }\n
\n \n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n \n \n {stringSet.UNKNOWN__CANNOT_READ_MESSAGE}\n \n
\n
\n
\n {\n !chainBottom && (\n \n {utils.getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nOutgoingUnknownMessage.propTypes = {\n message: PropTypes.shape({}).isRequired,\n status: PropTypes.string.isRequired,\n showRemove: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingUnknownMessage.defaultProps = {\n showRemove: () => { },\n};\n\nIncomingUnknownMessage.propTypes = {\n message: PropTypes.shape({\n sender: PropTypes.shape({\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n }),\n }).isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n","export const URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;\nexport const OG_MESSAGE = 'sendbird-og-message';\nexport const OUTGOING_OG_MESSAGE = 'sendbird-outgoing-og-message';\nexport const INCOMING_OG_MESSAGE = 'sendbird-incoming-og-message';\nexport const generateMockMessage = (process) => {\n const message = {\n message: 'go to this link sendbird.com it will be usefull to you!!',\n ogMetaData: {\n title: 'This is the TITLE',\n description: 'I\\'m description I\\'m description I\\'m description I\\'m description ',\n url: 'https://sendbird.com/',\n defaultImage: {\n url: 'https://static.sendbird.com/sample/profiles/profile_12_512px.png',\n alt: 'test',\n },\n },\n sender: {\n profileUrl: 'https://static.sendbird.com/sample/profiles/profile_12_512px.png',\n nickname: 'Hoonying',\n },\n createdAt: 2000000,\n };\n if (process && typeof process === 'function') {\n return process(message);\n }\n return message;\n};\n\nexport default {\n URL_REG,\n OG_MESSAGE,\n OUTGOING_OG_MESSAGE,\n INCOMING_OG_MESSAGE,\n generateMockMessage,\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const createUrlTester = (regexp) => (text) => regexp.test(text);\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport const copyToClipboard = (text) => {\n try {\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path\n // to prevent textarea being shown while dialog is visible.\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n } catch (err) {\n return err;\n }\n};\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const checkOGIsEnalbed = (message) => {\n const { ogMetaData } = message;\n if (!ogMetaData) {\n return false;\n }\n const { url } = ogMetaData;\n if (!url) {\n return false;\n }\n return true;\n};\n\nexport default {\n getSenderName,\n createUrlTester,\n copyToClipboard,\n checkOGIsEnalbed,\n getMessageCreatedAt,\n getIsSentFromStatus,\n getSenderProfileUrl,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport './index.scss';\n\nconst LINK_LABEL = 'sendbird-link-label';\nconst http = /https?:\\/\\//;\n\nexport default function LinkLabel({\n className,\n src,\n type,\n color,\n children,\n}) {\n const injecingClassName = Array.isArray(className) ? className : [className];\n const url = (http.test(src)) ? src : `http://${src}`;\n\n return (\n \n \n {children}\n \n \n );\n}\n\nLinkLabel.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n src: PropTypes.string.isRequired,\n type: PropTypes.oneOf(Object.keys(LabelTypography)).isRequired,\n color: PropTypes.oneOf(Object.keys(LabelColors)).isRequired,\n};\n\nLinkLabel.defaultProps = {\n className: '',\n};\n\nexport const LinkLabelTypography = LabelTypography;\nexport const LinkLabelColors = LabelColors;\n","import React, { useMemo, useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport LinkLabel from '../LinkLabel';\nimport uuidv4 from '../../utils/uuid';\nimport { createUrlTester } from './utils';\nimport { URL_REG } from './const';\n\nconst WORD_TYPOGRAPHY = LabelTypography.BODY_1;\nconst WORD_COLOR = LabelColors.ONBACKGROUND_1;\nconst EDITED_COLOR = LabelColors.ONBACKGROUND_2;\nconst isUrl = createUrlTester(URL_REG);\n\nexport default function useMemoizedMessageText({\n message,\n updatedAt,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return useMemo(() => () => {\n const splitMessage = message.split(' ');\n const matchedMessage = splitMessage\n .map((word) => (\n isUrl(word)\n ? (\n \n {word}\n \n )\n : (\n \n {word}\n \n )\n ));\n if (updatedAt > 0) {\n matchedMessage.push(\n \n {stringSet.MESSAGE_EDITED}\n ,\n );\n }\n // return (<>{matchedMessage}>);\n return matchedMessage;\n }, [message, updatedAt, className]);\n}\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n OG_MESSAGE,\n OUTGOING_OG_MESSAGE,\n INCOMING_OG_MESSAGE,\n} from './const';\nimport {\n getSenderName,\n copyToClipboard,\n checkOGIsEnalbed,\n getMessageCreatedAt,\n getIsSentFromStatus,\n getSenderProfileUrl,\n} from './utils';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport useMemoizedMessageText from './memoizedMessageText';\nimport './index.scss';\n\nimport UserProfile from '../UserProfile';\nimport IconButton from '../IconButton';\nimport ImageRenderer from '../ImageRenderer';\nimport MessageStatus from '../MessageStatus';\nimport EmojiReactions from '../EmojiReactions';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport Avatar from '../Avatar/index';\n\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst GROUPING_PADDING = '1px';\nconst NORAML_PADDING = '8px';\n\nconst OGMessageSwitch = ({\n isByMe,\n userId,\n status,\n message,\n disabled,\n showEdit,\n chainTop,\n className,\n membersMap,\n showRemove,\n useReaction,\n emojiAllMap,\n chainBottom,\n resendMessage,\n toggleReaction,\n memoizedEmojiListItems,\n}) => {\n const { ogMetaData } = message;\n const injectingClassName = Array.isArray(className) ? className : [className];\n\n const memoizedMessageText = useMemoizedMessageText({\n message: message.message,\n updatedAt: message.updatedAt,\n className: 'sendbird-og-message-word',\n });\n const openLink = () => {\n if (checkOGIsEnalbed(message)) {\n const { url } = ogMetaData;\n window.open(url);\n }\n };\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n};\n\nfunction OutgoingOGMessage(props) {\n const {\n status,\n userId,\n message,\n disabled,\n openLink,\n showEdit,\n chainTop,\n showRemove,\n membersMap,\n chainBottom,\n emojiAllMap,\n useReaction,\n resendMessage,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n } = props;\n const {\n ogMetaData,\n } = message;\n const {\n defaultImage,\n } = ogMetaData;\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n\n const isMessageSent = getIsSentFromStatus(status);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n isMessageSent && (\n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n )\n }\n {\n isMessageSent && (\n {\n if (disabled) { return; }\n showEdit(true);\n closeDropdown();\n }}\n >\n Edit\n \n )\n }\n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n (isMessageSent && useReaction && (emojiAllMap.size > 0))\n && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n \n
\n
\n {\n defaultImage && (\n \n \n
\n )}\n />\n )\n }\n
\n
\n {\n ogMetaData.title && (\n
\n \n {ogMetaData.title}\n \n
\n )\n }\n {\n ogMetaData.description && (\n
\n \n {ogMetaData.description}\n \n
\n )\n }\n {\n ogMetaData.url && (\n
\n \n {ogMetaData.url}\n \n
\n )\n }\n {\n showEmojiReactions\n && (\n
event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"button\"\n tabIndex={0}\n >\n \n
\n )\n }\n
\n
\n
\n \n );\n}\n\nfunction IncomingOGMessage(props) {\n const {\n userId,\n message,\n openLink,\n chainTop,\n membersMap,\n chainBottom,\n useReaction,\n emojiAllMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n } = props;\n const {\n ogMetaData,\n } = message;\n const {\n defaultImage,\n } = ogMetaData;\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n\n const messageRef = useRef(null);\n const avatarRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${INCOMING_OG_MESSAGE}__avatar`}\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n alt=\"sender-profile-image\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n \n
\n \n {\n defaultImage && (\n \n \n
\n )}\n />\n )\n }\n \n
\n {\n ogMetaData.title && (\n
\n\n \n {ogMetaData.title}\n \n
\n )\n }\n {\n ogMetaData.description && (\n
\n \n {ogMetaData.description}\n \n
\n )\n }\n {\n ogMetaData.url && (\n
\n \n {ogMetaData.url}\n \n
\n )\n }\n {\n showEmojiReactions\n && (\n
event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"button\"\n tabIndex={0}\n >\n \n
\n )\n }\n
\n
\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n {\n showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n \n )}\n />\n
\n
\n
\n \n );\n}\n\nexport default OGMessageSwitch;\n\nconst noop = () => { };\n\nOGMessageSwitch.propTypes = {\n isByMe: PropTypes.bool.isRequired,\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n sender: PropTypes.shape({}),\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n }).isRequired,\n useReaction: PropTypes.bool.isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n status: PropTypes.string,\n disabled: PropTypes.bool,\n showEdit: PropTypes.func,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n toggleReaction: PropTypes.func,\n membersMap: PropTypes.instanceOf(Map),\n emojiAllMap: PropTypes.instanceOf(Map),\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nOGMessageSwitch.defaultProps = {\n className: '',\n status: '',\n disabled: false,\n showEdit: noop,\n showRemove: noop,\n resendMessage: noop,\n toggleReaction: noop,\n membersMap: new Map(),\n emojiAllMap: new Map(),\n memoizedEmojiListItems: noop,\n chainTop: false,\n chainBottom: false,\n};\n\nOutgoingOGMessage.propTypes = {\n status: PropTypes.string,\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n isResendable: PropTypes.func,\n errorCode: PropTypes.number,\n }).isRequired,\n disabled: PropTypes.bool.isRequired,\n openLink: PropTypes.func.isRequired,\n showEdit: PropTypes.func.isRequired,\n showRemove: PropTypes.func.isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n useReaction: PropTypes.bool.isRequired,\n resendMessage: PropTypes.func.isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingOGMessage.defaultProps = {\n status: '',\n};\n\nIncomingOGMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n sender: PropTypes.shape({}),\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n }).isRequired,\n openLink: PropTypes.func.isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n useReaction: PropTypes.bool.isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport format from 'date-fns/format';\n\nimport Message from '../../../ui/Message';\nimport AdminMessage from '../../../ui/AdminMessage';\nimport ThumbnailMessage from '../../../ui/ThumbnailMessage';\nimport FileMessage from '../../../ui/FileMessage';\nimport DateSeparator from '../../../ui/DateSeparator';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport MessageInput from '../../../ui/MessageInput';\nimport FileViewer from '../../../ui/FileViewer';\nimport RemoveMessageModal from './RemoveMessage';\nimport UnknownMessage from '../../../ui/UnknownMessage';\nimport OGMessage from '../../../ui/OGMessage';\n\nimport { MessageTypes, getMessageType } from '../types';\n\nexport default function MessageHoc({\n message,\n userId,\n disabled,\n editDisabled,\n hasSeperator,\n deleteMessage,\n updateMessage,\n status,\n resendMessage,\n useReaction,\n chainTop,\n chainBottom,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n}) {\n const { sender = {} } = message;\n const [showEdit, setShowEdit] = useState(false);\n const [showRemove, setShowRemove] = useState(false);\n const [showFileViewer, setShowFileViewer] = useState(false);\n const editMessageInputRef = useRef(null);\n\n const isByMe = (userId === sender.userId)\n || (message.requestState === 'pending')\n || (message.requestState === 'failed');\n\n if (showEdit) {\n return (\n { setShowEdit(false); }}\n value={message.message}\n />\n );\n }\n\n return (\n \n {/* date-seperator */}\n {\n hasSeperator && (\n
\n \n {format(message.createdAt, 'MMMM dd, yyyy')}\n \n \n )\n }\n {/* Message */}\n {\n {\n [MessageTypes.ADMIN]:
,\n [MessageTypes.FILE]: (\n
\n ),\n [MessageTypes.OG]: (\n
\n ),\n [MessageTypes.THUMBNAIL]: (\n
\n ),\n [MessageTypes.USER]: (\n
\n ),\n }[getMessageType(message)]\n }\n {/* Modal */}\n {\n showRemove && (\n
setShowRemove(false)}\n onDeleteMessage={() => {\n deleteMessage(message);\n }}\n />\n )\n }\n {\n showFileViewer && (\n setShowFileViewer(false)}\n message={message}\n onDelete={() => {\n deleteMessage(message, () => {\n setShowFileViewer(false);\n });\n }}\n isByMe={isByMe}\n />\n )\n }\n {\n !((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file')\n && !(message.isAdminMessage && message.isAdminMessage())\n && !(((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user'))\n && !(showFileViewer)\n && (\n \n )\n }\n \n );\n}\n\nMessageHoc.propTypes = {\n userId: PropTypes.string,\n message: PropTypes.shape({\n isFileMessage: PropTypes.func,\n isAdminMessage: PropTypes.func,\n isUserMessage: PropTypes.func,\n isDateSeperator: PropTypes.func,\n // should be a number, but there's a bug in SDK shich returns string\n messageId: PropTypes.number,\n type: PropTypes.string,\n createdAt: PropTypes.number,\n message: PropTypes.string,\n requestState: PropTypes.string,\n messageType: PropTypes.string,\n sender: PropTypes.shape({ userId: PropTypes.string }),\n ogMetaData: PropTypes.shape({}),\n }),\n hasSeperator: PropTypes.bool,\n disabled: PropTypes.bool,\n editDisabled: PropTypes.bool,\n deleteMessage: PropTypes.func.isRequired,\n updateMessage: PropTypes.func.isRequired,\n resendMessage: PropTypes.func.isRequired,\n status: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\n\nMessageHoc.defaultProps = {\n userId: '',\n editDisabled: false,\n message: {},\n hasSeperator: false,\n disabled: false,\n status: '',\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport isSameDay from 'date-fns/isSameDay';\n\nimport './conversation-scroll.scss';\nimport * as messageActionTypes from '../dux/actionTypes';\n\nimport MessageHOC from './MessageHOC';\nimport {\n getParsedStatus,\n compareMessagesForGrouping,\n} from '../utils';\n\nexport default class ConversationScroll extends Component {\n onScroll = (e) => {\n const {\n scrollRef,\n hasMore,\n messagesDispatcher,\n onScroll,\n currentGroupChannel,\n } = this.props;\n\n const element = e.target;\n const {\n scrollTop,\n clientHeight,\n scrollHeight,\n } = element;\n if (scrollTop === 0) {\n if (!hasMore) {\n return;\n }\n const nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');\n const first = nodes[0];\n onScroll(([messages]) => {\n if (messages) {\n // https://github.com/scabbiaza/react-scroll-position-on-updating-dom\n first.scrollIntoView();\n }\n });\n }\n\n setTimeout(() => {\n // mark as read if scroll is at end\n if (clientHeight + scrollTop === scrollHeight) {\n messagesDispatcher({\n type: messageActionTypes.MARK_AS_READ,\n });\n currentGroupChannel.markAsRead();\n }\n }, 500);\n }\n\n render() {\n const {\n userId,\n disabled,\n scrollRef,\n readStatus,\n membersMap,\n initialized,\n allMessages,\n useReaction,\n emojiAllMap,\n editDisabled,\n deleteMessage,\n updateMessage,\n resendMessage,\n renderChatItem,\n emojiContainer,\n toggleReaction,\n useMessageGrouping,\n currentGroupChannel,\n memoizedEmojiListItems,\n } = this.props;\n return (\n \n
\n
\n {/*\n To do: Implement windowing\n Implement windowing if you are dealing with large number of messages/channels\n https://github.com/bvaughn/react-window -> recommendation\n We hesitate to bring one more dependency to our library,\n we are planning to implement it inside the library\n */}\n
\n {\n initialized\n && allMessages.map(\n (m, idx) => {\n const previousMessage = allMessages[idx - 1];\n const nextMessage = allMessages[idx + 1];\n const [chainTop, chainBottom] = useMessageGrouping\n ? compareMessagesForGrouping(previousMessage, m, nextMessage)\n : [false, false];\n const previousMessageCreatedAt = previousMessage && previousMessage.createdAt;\n const currentCreatedAt = m.createdAt;\n // https://stackoverflow.com/a/41855608\n const hasSeperator = !(previousMessageCreatedAt && (\n isSameDay(currentCreatedAt, previousMessageCreatedAt)\n ));\n if (renderChatItem) {\n return (\n
\n {\n renderChatItem({\n message: m,\n channel: currentGroupChannel,\n onDeleteMessage: deleteMessage,\n onUpdateMessage: updateMessage,\n onResendMessage: resendMessage,\n emojiContainer,\n })\n }\n
\n );\n }\n\n return (\n
\n );\n },\n )\n }\n
\n
\n
\n );\n }\n}\n\nConversationScroll.propTypes = {\n // https://stackoverflow.com/a/52646941\n scrollRef: PropTypes.shape({\n current: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.shape({}),\n ]),\n }).isRequired,\n hasMore: PropTypes.bool,\n messagesDispatcher: PropTypes.func.isRequired,\n onScroll: PropTypes.func,\n initialized: PropTypes.bool,\n editDisabled: PropTypes.bool,\n disabled: PropTypes.bool,\n userId: PropTypes.string,\n allMessages: PropTypes.arrayOf(PropTypes.shape({\n createdAt: PropTypes.number,\n })).isRequired,\n deleteMessage: PropTypes.func.isRequired,\n resendMessage: PropTypes.func.isRequired,\n updateMessage: PropTypes.func.isRequired,\n readStatus: PropTypes.shape({}).isRequired,\n currentGroupChannel: PropTypes.shape({\n markAsRead: PropTypes.func,\n members: PropTypes.arrayOf(PropTypes.shape({})),\n }).isRequired,\n renderChatItem: PropTypes.element,\n useReaction: PropTypes.bool,\n emojiContainer: PropTypes.shape({}),\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n useMessageGrouping: PropTypes.bool,\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\n\nConversationScroll.defaultProps = {\n hasMore: false,\n editDisabled: false,\n disabled: false,\n initialized: false,\n userId: '',\n renderChatItem: null,\n onScroll: null,\n useReaction: true,\n emojiContainer: {},\n emojiAllMap: new Map(),\n membersMap: new Map(),\n useMessageGrouping: true,\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './notification.scss';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\n\nexport default function Notification({\n count,\n time,\n onClick,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const timeArray = time.split(' ');\n timeArray.splice(-2, 0, stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__ON);\n return (\n // eslint-disable-next-line\n \n \n {`${count} `}\n {stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE}\n {` ${timeArray.join(' ')}`}\n \n \n
\n );\n}\n\nNotification.propTypes = {\n count: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n time: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n};\n\nNotification.defaultProps = {\n count: 0,\n time: '',\n};\n","import React, { useContext } from 'react';\n\nimport './notification.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography } from '../../../ui/Label';\n\nconst FrozenNotification = (): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n {stringSet.CHANNEL_FROZEN}\n \n
\n );\n}\n\nexport default FrozenNotification;\n","import React, { useEffect, useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { uuidv4 } from '../../../utils/uuid';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\n\nconst TypingIndicatorText = ({ members }) => {\n const { stringSet } = useContext(LocalizationContext);\n if (!members || members.length === 0) {\n return '';\n }\n\n if (members && members.length === 1) {\n return `${members[0].nickname} ${stringSet.TYPING_INDICATOR__IS_TYPING}`;\n }\n\n if (members && members.length === 2) {\n return `${members[0].nickname} ${stringSet.TYPING_INDICATOR__AND} ${members[1].nickname} ${stringSet.TYPING_INDICATOR__ARE_TYPING}`;\n }\n\n return stringSet.TYPING_INDICATOR__MULTIPLE_TYPING;\n};\n\nfunction TypingIndicator({ channelUrl, sb, logger }) {\n const [handlerId, setHandlerId] = useState(uuidv4());\n const [typingMembers, setTypingMembers] = useState([]);\n\n useEffect(() => {\n if (sb && sb.ChannelHandler) {\n sb.removeChannelHandler(handlerId);\n const newHandlerId = uuidv4();\n const handler = new sb.ChannelHandler();\n // there is a possible warning in here - setState called after unmount\n handler.onTypingStatusUpdated = (groupChannel) => {\n logger.info('Channel > Typing Indicator: onTypingStatusUpdated', groupChannel);\n const members = groupChannel.getTypingMembers();\n if (groupChannel.url === channelUrl) {\n setTypingMembers(members);\n }\n };\n sb.addChannelHandler(newHandlerId, handler);\n setHandlerId(newHandlerId);\n }\n\n return () => {\n setTypingMembers([]);\n if (sb && sb.removeChannelHandler) {\n sb.removeChannelHandler(handlerId);\n }\n };\n }, [channelUrl]);\n\n return (\n \n \n \n );\n}\n\nTypingIndicator.propTypes = {\n channelUrl: PropTypes.string.isRequired,\n sb: PropTypes.shape({\n ChannelHandler: PropTypes.func,\n removeChannelHandler: PropTypes.func,\n addChannelHandler: PropTypes.func,\n }).isRequired,\n logger: PropTypes.shape({\n info: PropTypes.func,\n }).isRequired,\n};\n\nexport default TypingIndicator;\n","// Logic required to handle message input rendering\n\nimport React, { useContext } from 'react';\n\nimport { SendbirdTypes } from '../../../types';\nimport { RenderMessageInputProps } from '../../../index';\nimport * as utils from '../utils.js';\n\nimport MessageInput from '../../../ui/MessageInput';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n channel: SendbirdTypes[\"GroupChannel\"];\n user: SendbirdTypes[\"User\"];\n isOnline: boolean;\n initialized: boolean;\n onSendMessage(): void;\n onFileUpload(): void;\n renderMessageInput(renderProps: RenderMessageInputProps): JSX.Element;\n}\n\nconst MessageInputWrapper = ({\n channel,\n user,\n onSendMessage,\n onFileUpload,\n renderMessageInput,\n isOnline,\n initialized,\n}: Props, ref: React.RefObject): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n const disabled = !initialized\n || utils.isDisabledBecauseFrozen(channel)\n || utils.isDisabledBecauseMuted(channel)\n || !isOnline;\n\n const isOperator = utils.isOperator(channel);\n const { isBroadcast } = channel;\n\n // custom message\n if (renderMessageInput) {\n return renderMessageInput({ channel, user, disabled });\n }\n\n // broadcast channel + not operator\n if (isBroadcast && !isOperator) {\n return null;\n }\n\n // other conditions\n return (\n {\n channel.startTyping();\n }}\n onSendMessage={onSendMessage}\n onFileUpload={onFileUpload}\n />\n );\n}\n\nexport default React.forwardRef(MessageInputWrapper);\n","import React, { useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, {\n LabelTypography,\n LabelColors,\n} from '../Label';\nimport Icon, { IconTypes, IconColors } from '../Icon';\n\nimport './index.scss';\n\nfunction ConnectionStatus() {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n { stringSet.TRYING_TO_CONNECT }\n \n \n
\n );\n}\n\nexport default ConnectionStatus;\n","import formatDistanceToNowStrict from 'date-fns/formatDistanceToNowStrict';\nimport { LabelStringSet } from '../Label';\n\nexport const prettyDate = (date) => formatDistanceToNowStrict(date, { addSuffix: true });\n\nexport const getOthersLastSeenAt = (channel) => {\n if (!channel || !channel.getReadStatus || !channel.members || channel.members.length !== 2) {\n return '';\n }\n const lastSeenList = [...Object.values(channel.getReadStatus())];\n const lastSeenAt = lastSeenList.length > 0\n ? lastSeenList[0].last_seen_at\n : 0;\n if (lastSeenAt === 0) {\n return '';\n }\n return prettyDate(lastSeenAt);\n};\n\nexport const getChannelTitle = (channel = {}, currentUserId, stringSet = LabelStringSet) => {\n if (!channel || (!channel.name && !channel.members)) {\n return stringSet.NO_TITLE;\n }\n if (channel.name && channel.name !== 'Group Channel') {\n return channel.name;\n }\n\n if (channel.members.length === 1) {\n return stringSet.NO_MEMBERS;\n }\n\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => (nickname || stringSet.NO_NAME))\n .join(', ');\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default function AutoRefresh({\n repeatFunc,\n}) {\n const [label, setLabel] = useState(repeatFunc());\n\n useEffect(() => {\n const interval = setInterval(() => {\n if (label !== repeatFunc()) {\n setLabel(repeatFunc());\n }\n }, 10000);\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return ({label}
);\n}\n\nAutoRefresh.propTypes = {\n repeatFunc: PropTypes.func.isRequired,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport AutoRefresh from '../AutoRefresh';\nimport ChannelAvatar from '../ChannelAvatar/index';\n\nexport default function ChatHeader(props) {\n const {\n currentGroupChannel,\n currentUser,\n title,\n subTitle,\n isActive,\n isMuted,\n onActionClick,\n theme,\n } = props;\n const { userId } = currentUser;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
\n
\n {title || utils.getChannelTitle(currentGroupChannel, userId, stringSet)}\n \n {\n (typeof isActive === 'string' && isActive === 'true') || (typeof isActive === 'boolean' && isActive)\n ?
\n : null\n }\n
\n {\n subTitle\n || utils.getOthersLastSeenAt(currentGroupChannel)} />\n }\n \n
\n
\n {\n (typeof isMuted === 'string' && isMuted === 'true') || (typeof isMuted === 'boolean' && isMuted)\n ? \n : null\n }\n \n \n \n
\n
\n );\n}\n\nChatHeader.propTypes = {\n currentGroupChannel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n coverUrl: PropTypes.string,\n }),\n theme: PropTypes.string,\n currentUser: PropTypes.shape({\n userId: PropTypes.string,\n }),\n title: PropTypes.string,\n subTitle: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n isActive: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n isMuted: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n onActionClick: PropTypes.func,\n};\n\nChatHeader.defaultProps = {\n currentGroupChannel: {},\n title: '',\n theme: 'light',\n subTitle: '',\n isActive: false,\n isMuted: false,\n currentUser: {},\n onActionClick: () => { },\n};\n","import React, {\n useEffect,\n useRef,\n useReducer,\n useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport * as messageActionTypes from './dux/actionTypes';\nimport messagesInitialState from './dux/initialState';\nimport messagesReducer from './dux/reducers';\n\nimport useHandleChannelEvents from './hooks/useHandleChannelEvents';\nimport useGetChannel from './hooks/useGetChannel';\nimport useInitialMessagesFetch from './hooks/useInitialMessagesFetch';\nimport useHandleReconnect from './hooks/useHandleReconnect';\nimport useScrollCallback from './hooks/useScrollCallback';\nimport useDeleteMessageCallback from './hooks/useDeleteMessageCallback';\nimport useUpdateMessageCallback from './hooks/useUpdateMessageCallback';\nimport useResendMessageCallback from './hooks/useResendMessageCallback';\nimport useSendMessageCallback from './hooks/useSendMessageCallback';\nimport useSendFileMessageCallback from './hooks/useSendFileMessageCallback';\nimport useSetReadStatus from './hooks/useSetReadStatus';\nimport useMemoizedEmojiListItems from './hooks/useMemoizedEmojiListItems';\nimport useToggleReactionCallback from './hooks/useToggleReactionCallback';\n\nimport ConversationScroll from './components/ConversationScroll';\nimport Notification from './components/Notification';\nimport FrozenNotification from './components/FrozenNotification';\nimport TypingIndicator from './components/TypingIndicator';\nimport MessageInputWrapper from './components/MessageInputWrapper';\nimport ConnectionStatus from '../../ui/ConnectionStatus';\nimport ChatHeader from '../../ui/ChatHeader';\nimport PlaceHolder from '../../ui/PlaceHolder';\nimport PlaceHolderTypes from '../../ui/PlaceHolder/type';\n\nconst noop = () => { };\n\nexport const ConversationPanel = (props) => {\n const {\n channelUrl,\n stores: { sdkStore, userStore },\n config: {\n userId,\n logger,\n pubSub,\n isOnline,\n theme,\n },\n dispatchers: {\n reconnect,\n },\n queries = {},\n useReaction,\n renderChatItem,\n renderChatHeader,\n renderMessageInput,\n useMessageGrouping,\n onChatHeaderActionClick,\n onBeforeSendUserMessage,\n onBeforeSendFileMessage,\n onBeforeUpdateUserMessage,\n } = props;\n const { sdk } = sdkStore;\n const { config } = props;\n const sdkError = sdkStore.error;\n const sdkInit = sdkStore.initialized;\n const { user } = userStore;\n\n if (queries.messageListQuery) {\n // eslint-disable-next-line no-console\n console.warn('messageListQuery will be deprecared in v1.3.0, please use messageListParams instead');\n }\n\n const userFilledMessageListQuery = queries.messageListParams || queries.messageListQuery;\n\n const [messagesStore, messagesDispatcher] = useReducer(messagesReducer, messagesInitialState);\n const scrollRef = useRef(null);\n\n const {\n allMessages,\n loading,\n hasMore,\n initialized,\n unreadCount,\n disableUserProfile,\n renderUserProfile,\n unreadSince,\n invalidChannel,\n currentGroupChannel = {},\n lastMessageTimeStamp,\n emojiContainer,\n readStatus,\n } = messagesStore;\n const { isFrozen, isBroadcast } = currentGroupChannel;\n const { appInfo = {} } = sdk;\n const usingReaction = (\n (appInfo.isUsingReaction && !isBroadcast) || useReaction || false\n );\n\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n const emojiAllMap = useMemo(() => (\n usingReaction\n ? utils.getAllEmojisMapFromEmojiContainer(emojiContainer)\n : new Map()\n ), [emojiContainer]);\n\n const emojiAllList = useMemo(() => (\n usingReaction\n ? utils.getAllEmojisFromEmojiContainer(emojiContainer)\n : []\n ), [emojiContainer]);\n\n const nicknamesMap = useMemo(() => (\n usingReaction\n ? utils.getNicknamesMapFromMembers(currentGroupChannel.members)\n : new Map()\n ), [currentGroupChannel.members]);\n\n const onScrollCallback = useScrollCallback({\n currentGroupChannel, lastMessageTimeStamp, userFilledMessageListQuery,\n }, {\n hasMore,\n logger,\n messagesDispatcher,\n sdk,\n });\n\n const toggleReaction = useToggleReactionCallback({ currentGroupChannel }, { logger });\n\n const memoizedEmojiListItems = useMemoizedEmojiListItems({\n emojiContainer, toggleReaction,\n }, {\n useReaction: usingReaction,\n logger,\n userId,\n emojiAllList,\n });\n\n // to create message-datasource\n useGetChannel(\n { channelUrl, sdkInit },\n { messagesDispatcher, sdk, logger },\n );\n\n // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher\n useHandleChannelEvents(\n { currentGroupChannel, sdkInit, userId },\n { messagesDispatcher, sdk, logger },\n );\n\n useInitialMessagesFetch({ currentGroupChannel, userFilledMessageListQuery }, {\n sdk,\n logger,\n messagesDispatcher,\n });\n\n // handles API calls from withSendbird\n useEffect(() => {\n const subScriber = utils.pubSubHandler(channelUrl, pubSub, messagesDispatcher);\n return () => {\n utils.pubSubHandleRemover(subScriber);\n };\n }, [channelUrl, sdkInit]);\n\n // to create initial read status\n useSetReadStatus(\n { allMessages, currentGroupChannel },\n { messagesDispatcher, sdk, logger },\n );\n\n // handling connection breaks\n useHandleReconnect({ isOnline }, {\n logger,\n sdk,\n currentGroupChannel,\n messagesDispatcher,\n userFilledMessageListQuery,\n });\n\n const deleteMessage = useDeleteMessageCallback({ currentGroupChannel, messagesDispatcher },\n { logger });\n const updateMessage = useUpdateMessageCallback(\n { currentGroupChannel, messagesDispatcher, onBeforeUpdateUserMessage },\n { logger, sdk, pubSub },\n );\n const resendMessage = useResendMessageCallback(\n { currentGroupChannel, messagesDispatcher },\n { logger },\n );\n const [messageInputRef, onSendMessage] = useSendMessageCallback(\n { currentGroupChannel, onBeforeSendUserMessage },\n {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n },\n );\n const [onSendFileMessage] = useSendFileMessageCallback(\n { currentGroupChannel, onBeforeSendFileMessage },\n {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n },\n );\n\n if (sdkError) {\n return (\n \n
{\n logger.info('Channel: reconnecting');\n reconnect();\n }}\n />\n \n );\n }\n if (!channelUrl) {\n return ();\n }\n if (loading) {\n return ();\n }\n if (invalidChannel) {\n return ();\n }\n return (\n \n {\n renderChatHeader\n ? renderChatHeader({ channel: currentGroupChannel, user })\n : (\n \n )\n }\n {\n isFrozen && (\n \n )\n }\n {\n unreadCount > 0 && (\n {\n utils.scrollIntoLast('.sendbird-msg--scroll-ref');\n // there is no scroll\n if (scrollRef.current.scrollTop === 0) {\n currentGroupChannel.markAsRead();\n messagesDispatcher({\n type: messageActionTypes.MARK_AS_READ,\n });\n }\n }}\n time={unreadSince}\n />\n )\n }\n \n \n
\n
\n \n
\n {\n !isOnline && (\n
\n )\n }\n
\n \n );\n};\n\nConversationPanel.propTypes = {\n channelUrl: PropTypes.string,\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n initialized: PropTypes.bool,\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n removeChannelHandler: PropTypes.func,\n GroupChannel: PropTypes.any,\n ChannelHandler: PropTypes.any,\n addChannelHandler: PropTypes.func,\n UserMessageParams: PropTypes.any,\n FileMessageParams: PropTypes.any,\n getAllEmoji: PropTypes.func,\n appInfo: PropTypes.shape({}),\n }),\n error: PropTypes.bool,\n }),\n userStore: PropTypes.shape({\n user: PropTypes.shape({}),\n }),\n }).isRequired,\n dispatchers: PropTypes.shape({\n reconnect: PropTypes.func,\n }).isRequired,\n config: PropTypes.shape({\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n userId: PropTypes.string.isRequired,\n isOnline: PropTypes.bool.isRequired,\n theme: PropTypes.string,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }).isRequired,\n queries: PropTypes.shape({\n messageListParams: PropTypes.shape({\n includeMetaArray: PropTypes.bool,\n includeParentMessageText: PropTypes.bool,\n includeReaction: PropTypes.bool,\n includeReplies: PropTypes.bool,\n includeThreadInfo: PropTypes.bool,\n limit: PropTypes.number,\n reverse: PropTypes.bool,\n senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n // deprecate in v1.3\n messageListQuery: PropTypes.shape({\n includeMetaArray: PropTypes.bool,\n includeParentMessageText: PropTypes.bool,\n includeReaction: PropTypes.bool,\n includeReplies: PropTypes.bool,\n includeThreadInfo: PropTypes.bool,\n limit: PropTypes.number,\n reverse: PropTypes.bool,\n senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n onBeforeSendUserMessage: PropTypes.func, // onBeforeSendUserMessage(text)\n onBeforeSendFileMessage: PropTypes.func, // onBeforeSendFileMessage(File)\n onBeforeUpdateUserMessage: PropTypes.func,\n renderChatItem: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n renderMessageInput: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n renderChatHeader: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n onChatHeaderActionClick: PropTypes.func,\n useReaction: PropTypes.bool,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n useMessageGrouping: PropTypes.bool,\n};\n\nConversationPanel.defaultProps = {\n channelUrl: null,\n queries: {},\n onBeforeSendUserMessage: null,\n onBeforeSendFileMessage: null,\n onBeforeUpdateUserMessage: null,\n renderChatItem: null,\n renderMessageInput: null,\n renderChatHeader: null,\n useReaction: true,\n disableUserProfile: false,\n renderUserProfile: null,\n useMessageGrouping: true,\n onChatHeaderActionClick: noop,\n};\n\nexport const {\n getEmojiCategoriesFromEmojiContainer,\n getAllEmojisFromEmojiContainer,\n getEmojisFromEmojiContainer,\n} = utils;\n\nexport default withSendbirdContext(ConversationPanel);\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Modal from '../../../ui/Modal';\nimport Input, { InputLabel } from '../../../ui/Input';\nimport Avatar from '../../../ui/Avatar/index';\nimport { Type as ButtonType } from '../../../ui/Button/type';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport TextButton from '../../../ui/TextButton';\nimport ChannelAvatar from '../../../ui/ChannelAvatar/index';\n\nconst EditDetails = (props) => {\n const {\n onSubmit,\n onCancel,\n channel,\n userId,\n theme,\n } = props;\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const hiddenInputRef = useRef(null);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n const title = channel.name;\n return (\n {\n if (title !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(newFile, inputRef.current.value);\n onCancel();\n }}\n type={ButtonType.PRIMARY}\n >\n { e.preventDefault(); }}\n >\n \n
\n {stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE}\n \n
\n {\n currentImg\n ? (\n
\n ) : (\n
\n )\n }\n
\n
{\n setCurrentImg(URL.createObjectURL(e.target.files[0]));\n setNewFile(e.target.files[0]);\n hiddenInputRef.current.value = '';\n }}\n />\n
hiddenInputRef.current.click()}\n notUnderline\n >\n \n {stringSet.MODAL__CHANNEL_INFORMATION__UPLOAD}\n \n \n
\n \n \n {stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_NAME}\n \n \n
\n \n \n );\n};\n\nEditDetails.propTypes = {\n onSubmit: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n channel: PropTypes.shape({\n name: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n theme: PropTypes.string.isRequired,\n};\n\nexport default EditDetails;\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './channel-profile.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport EditDetailsModal from './EditDetails';\nimport TextButton from '../../../ui/TextButton';\nimport ChannelAvatar from '../../../ui/ChannelAvatar/index';\n\nconst ChannelProfile = (props) => {\n const {\n disabled,\n channel,\n userId,\n theme,\n onChannelInfoChange,\n } = props;\n const title = channel.name;\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n
\n
\n \n
\n
\n {title}\n \n
{\n if (disabled) { return; }\n setShowModal(true);\n }}\n notUnderline\n >\n \n {stringSet.CHANNEL_SETTING__PROFILE__EDIT}\n \n \n {\n showModal && (\n
setShowModal(false)}\n onSubmit={onChannelInfoChange}\n channel={channel}\n userId={userId}\n theme={theme}\n />\n )\n }\n \n
\n );\n};\n\nChannelProfile.propTypes = {\n channel: PropTypes.shape({\n name: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n theme: PropTypes.string,\n disabled: PropTypes.bool,\n onChannelInfoChange: PropTypes.func,\n};\n\nChannelProfile.defaultProps = {\n theme: 'light',\n disabled: false,\n onChannelInfoChange: () => { },\n};\n\nexport default ChannelProfile;\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n currentUser?: string;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function MembersModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const memberListQuery = channel.createMemberListQuery();\n memberListQuery.limit = 20;\n memberListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"All Members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n <>\n {channel.myRole === 'operator' && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if ((member.role !== 'operator')) {\n channel.addOperators([member.userId], () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n role: 'operator',\n };\n }\n return m;\n }));\n closeDropdown();\n });\n } else {\n channel.removeOperators([member.userId], () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n role: '',\n };\n }\n return m;\n }));\n closeDropdown();\n });\n }\n }}\n >\n { member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'}\n \n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n {\n if (member.isMuted) {\n channel.unmuteUser(member, () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n isMuted: false,\n };\n }\n return m;\n }));\n closeDropdown();\n })\n } else {\n channel.muteUser(member, () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n isMuted: true,\n };\n }\n return m;\n }));\n closeDropdown();\n });\n }\n }}\n >\n { member.isMuted ? 'Unmute' : 'Mute' }\n \n )\n }\n {\n channel.banUser(member, -1, '', () => {\n setMembers(members.filter(({ userId }) => {\n return userId !== member.userId;\n }));\n });\n }}\n >\n Ban\n \n \n )}\n />\n )}\n >\n )}\n />\n ))}\n
\n \n
\n );\n}\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './members-accordion.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { UserProfileContext } from '../../../lib/UserProfileContext';\nimport Button from '../../../ui/Button';\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../ui/Button/type';\nimport Avatar from '../../../ui/Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport InviteMembers from '../../InviteMembers';\nimport MembersModal from './AdminPanel/MembersModal';\nimport UserProfile from '../../../ui/UserProfile';\nimport ContextMenu, { MenuItems } from '../../../ui/ContextMenu';\n\nconst SHOWN_MEMBER_MAX = 10;\n\nconst UserListItem = ({ member = {}, currentUser = '' }) => {\n const avatarRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n src={member.profileUrl}\n width={24}\n height={24}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: member,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n
\n {member.nickname || stringSet.NO_NAME}\n {\n (currentUser === member.userId) && (\n ' (You)'\n )\n }\n \n
\n );\n};\n\nUserListItem.propTypes = {\n member: PropTypes.shape({\n userId: PropTypes.string,\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n }).isRequired,\n currentUser: PropTypes.string.isRequired,\n};\n\nconst MemebersAccordion = ({\n channel,\n disabled,\n currentUser,\n userQueryCreator,\n onInviteMemebers,\n swapParams,\n}) => {\n const members = channel.members || [];\n const [showMoreModal, setShowMoreModal] = useState(false);\n const [showAddUserModal, setShowAddUserModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n {\n members.slice(0, SHOWN_MEMBER_MAX).map((member) => (\n \n ))\n }\n
\n
\n {\n members.length >= SHOWN_MEMBER_MAX && (\n setShowMoreModal(true)}\n >\n {stringSet.CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS}\n \n )\n }\n {\n members.length >= SHOWN_MEMBER_MAX && showMoreModal && (\n {\n setShowMoreModal(false);\n }}\n channel={channel}\n />\n )\n }\n {\n if (disabled) { return; }\n setShowAddUserModal(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__MEMBERS__INVITE_MEMBER}\n \n {\n showAddUserModal && (\n setShowAddUserModal(false)}\n idsToFilter={members.map((member) => (member.userId))}\n userQueryCreator={userQueryCreator}\n onSubmit={onInviteMemebers}\n />\n )\n }\n
\n
\n );\n};\n\nMemebersAccordion.propTypes = {\n swapParams: PropTypes.bool,\n disabled: PropTypes.bool,\n channel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n }),\n currentUser: PropTypes.string,\n userQueryCreator: PropTypes.func.isRequired,\n onInviteMemebers: PropTypes.func.isRequired,\n};\n\nMemebersAccordion.defaultProps = {\n swapParams: false,\n currentUser: '',\n disabled: false,\n channel: {},\n};\n\nexport default MemebersAccordion;\n","import React from 'react';\n\nimport { noop } from '../../utils/utils';\n\ninterface ContextValue {\n setOpened(accordion: string): void;\n opened: string;\n}\n\nconst Context = React.createContext({\n opened: '', // mock default value\n setOpened: noop,\n});\n\nexport const Consumer = Context.Consumer;\nexport const Provider = Context.Provider;\n","// Wraps all the accordions in an accordion set\n// keep one accordion open at a time\nimport React, { ReactElement, useState } from 'react';\n\nimport { Provider } from './context';\n\ninterface Props {\n children: ReactElement[];\n defaultOpened?: string;\n className?: string;\n}\n\nexport default function AccordionGroup({\n children,\n className = '',\n}: Props): ReactElement {\n const [opened, setOpened] = useState('');\n return (\n \n { children }
\n \n )\n}\n","import './index.scss';\n\nimport React, { ReactElement, useState } from 'react';\n\nimport AccordionGroup_ from './AccordionGroup';\nimport { Consumer } from './context';\n\nimport Icon, {\n IconTypes,\n} from '../Icon';\n\ninterface Props {\n id: string;\n className?: string;\n renderTitle(): ReactElement;\n renderContent(): ReactElement;\n renderFooter?(): ReactElement;\n}\n\nexport default function Accordion({\n id,\n renderTitle,\n renderContent,\n renderFooter,\n className,\n}: Props): ReactElement {\n const [showAccordion, setShowAccordion] = useState(false);\n return (\n \n {\n (value) => {\n const { opened, setOpened } = value;\n if (id === opened) {\n setShowAccordion(true);\n } else {\n setShowAccordion(false);\n }\n const handleClick = () => {\n if (showAccordion) {\n setOpened('');\n } else {\n setOpened(id);\n }\n }\n return (\n <>\n \n { renderTitle() }\n \n
\n {\n showAccordion && (\n \n
\n { renderContent() }\n
\n {\n renderFooter && (\n
\n { renderFooter() }\n
\n )\n }\n
\n )\n }\n >);\n }\n }\n \n )\n}\n\nexport const AccordionGroup = AccordionGroup_;\n","// might move to reusable/UI\n\nimport React, { ReactElement, useRef, useContext } from 'react';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { UserProfileContext } from '../../../lib/UserProfileContext';\nimport Avatar from '../../../ui/Avatar/index';\nimport MutedAvatarOverlay from '../../../ui/Avatar/MutedAvatarOverlay';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport UserProfile from '../../../ui/UserProfile';\nimport ContextMenu, { MenuItems } from '../../../ui/ContextMenu';\n\nimport './user-list-item.scss';\nimport { SendbirdTypes } from '../../../types';\n\nconst COMPONENT_NAME = 'sendbird-user-list-item--small';\n\ninterface ActionProps {\n actionRef: React.RefObject;\n parentRef: React.RefObject;\n}\n\ntype CustomUser = SendbirdTypes['User'] & {\n isMuted: boolean;\n role: string;\n};\n\ninterface Props {\n user: CustomUser;\n currentUser?: string;\n className?: string;\n action?(props: ActionProps): ReactElement;\n}\n\nconst UserListItem = ({\n user,\n className,\n currentUser,\n action,\n}: Props): ReactElement => {\n const actionRef = useRef(null);\n const parentRef = useRef(null);\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const injectingClassNames = Array.isArray(className) ? className : [className];\n return (\n \n {\n user.isMuted && (\n
\n )\n }\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n className={`${COMPONENT_NAME}__avatar`}\n src={user.profileUrl}\n width={24}\n height={24}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n {user.nickname || stringSet.NO_NAME}\n {\n (currentUser === user.userId) && (\n \" (You)\"\n )\n }\n \n { // if there is now nickname, display userId\n !user.nickname && (\n \n {user.userId}\n \n )\n }\n {\n user.role === 'operator' && (\n \n Operator\n \n )\n }\n {\n action && (\n \n { action({ actionRef, parentRef }) }\n
\n )\n }\n \n );\n}\n\nexport default UserListItem;\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n currentUser?: string;\n}\n\nexport default function OperatorsModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [operators, setOperators] = useState([]);\n const [operatorQuery, setOperatorQuery] = useState(null);\n\n useEffect(() => {\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 20;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n });\n setOperatorQuery(operatorListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"All operators\"\n >\n {\n const { hasNext } = operatorQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n operatorQuery.next((o, error) => {\n if (error) {\n return;\n }\n setOperators([\n ...operators,\n ...o,\n ])\n });\n }\n }}\n >\n { operators.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.removeOperators([member.userId], (response, error) => {\n if (error) {\n return;\n }\n setOperators(operators.filter(({ userId }) => {\n return userId !== member.userId;\n }));\n });\n closeDropdown();\n }}\n >\n Dismiss operator\n \n \n )}\n />\n )}\n />\n ))}\n
\n \n
\n )\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useContext,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport Modal from '../../../../ui/Modal';\nimport Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport { Type as ButtonType } from '../../../../ui/Button/type';\nimport UserListItem from '../../../../ui/UserListItem';\n\ninterface Props {\n hideModal(): void;\n onSubmit(members: string[]): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function AddOperatorsModal({\n hideModal,\n channel,\n onSubmit,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [selectedMembers, setSelectedMembers] = useState({});\n const [memberQuery, setMemberQuery] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n\n useEffect(() => {\n const memberListQuery = channel.createMemberListQuery();\n memberListQuery.limit = 20;\n memberListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberListQuery);\n }, [])\n\n const selectedCount = Object.keys(selectedMembers).filter((m) => selectedMembers[m]).length;\n return (\n \n
hideModal()}\n onSubmit={() => {\n const members = Object.keys(selectedMembers).filter((m) => selectedMembers[m]);\n onSubmit(members);\n }}\n titleText=\"Select members\"\n >\n 0) ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3}\n type={LabelTypography.CAPTION_1}\n >\n {`${selectedCount} ${stringSet.MODAL__INVITE_MEMBER__SELECTEC}`}\n \n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n {\n const modifiedSelectedMembers = {\n ...selectedMembers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedMembers[event.target.id];\n }\n setSelectedMembers(modifiedSelectedMembers);\n }\n }\n user={member}\n key={member.userId}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n useContext,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport OperatorsModal from './OperatorsModal';\nimport AddOperatorsModal from './AddOperatorsModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const OperatorList = ({ sdk, channel }: Props): ReactElement => {\n const [operators, setOperators] = useState([]);\n const [showMore, setShowMore] = useState(false);\n const [showAdd, setShowAdd] = useState(false);\n const [hasNext, setHasNext] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n useEffect(() => {\n if (!channel) {\n setOperators([]);\n return;\n }\n\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 10;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n setHasNext(operatorListQuery.hasNext);\n });\n }, [channel]);\n\n const refershList = useCallback(\n () => {\n if (!channel) {\n setOperators([]);\n return;\n }\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 10;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n setHasNext(operatorListQuery.hasNext);\n });\n },\n [channel],\n );\n\n return (\n <>\n {\n operators.map((operator) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.removeOperators([operator.userId], (response, error) => {\n if (error) {\n return;\n }\n setOperators(operators.filter(({ userId }) => {\n return userId !== operator.userId;\n }))\n });\n closeDropdown();\n }}\n >\n Dismiss operator\n \n \n )}\n />\n );\n }}\n />\n ))\n }\n {\n hasNext && (\n \n {\n setShowMore(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ALL}\n \n {\n setShowAdd(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ADD}\n \n
\n )\n }\n {\n showMore && (\n {\n setShowMore(false);\n refershList();\n }}\n channel={channel}\n />\n )\n }\n {\n showAdd && (\n setShowAdd(false)}\n channel={channel}\n onSubmit={(members) => {\n setShowAdd(false);\n channel.addOperators(members, () => {\n refershList();\n });\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(OperatorList, mapStoreToProps);\n","import React, { ReactElement, useEffect, useState } from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport { Type as ButtonType } from '../../../../ui/Button/type';\nimport UserListItem from '../../../../ui/UserListItem';\n\ninterface Props {\n hideModal(): void;\n onSubmit(members: string[]): void;\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport default function InviteMembers({\n hideModal,\n userQueryCreator,\n onSubmit,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [selectedMembers, setSelectedMembers] = useState({});\n const [userQuery, setUserQuery] = useState(null);\n\n useEffect(() => {\n const userListQuery = userQueryCreator();\n userListQuery.limit = 20;\n userListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setUserQuery(userListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={() => {\n const members = Object.keys(selectedMembers).filter((m) => selectedMembers[m]);\n onSubmit(members);\n }}\n titleText=\"Select members\"\n >\n {\n const { hasNext } = userQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n userQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n {\n const modifiedSelectedMembers = {\n ...selectedMembers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedMembers[event.target.id];\n }\n setSelectedMembers(modifiedSelectedMembers);\n }\n }\n user={member}\n key={member.userId}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport MembersModal from './MembersModal';\nimport InviteMembers from './InviteMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes['SendBirdInstance'];\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport const MemberList = ({ sdk, channel, userQueryCreator }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showAllMembers, setShowAllMembers] = useState(false);\n const [showInviteMembers, setShowInviteMembers] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refershList = useCallback(\n () => {\n if (!channel) {\n setMembers([]);\n return;\n }\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n },\n [channel],\n );\n\n return (\n <>\n {\n members.map((member) => (\n {\n return ( (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if ((member.role !== 'operator')) {\n channel.addOperators([member.userId], () => {\n refershList();\n closeDropdown();\n });\n } else {\n channel.removeOperators([member.userId], () => {\n refershList();\n closeDropdown();\n });\n }\n }}\n >\n { member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'}\n \n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n {\n if (member.isMuted) {\n channel.unmuteUser(member, () => {\n refershList();\n closeDropdown();\n })\n } else {\n channel.muteUser(member, () => {\n refershList();\n closeDropdown();\n });\n }\n }}\n >\n { member.isMuted ? 'Unmute' : 'Mute' }\n \n )\n }\n {\n channel.banUser(member, -1, '', () => {\n refershList();\n closeDropdown();\n });\n }}\n >\n Ban\n \n \n )}\n />)}\n }\n />\n ))\n }\n \n {\n hasNext && (\n setShowAllMembers(true)}\n >\n All members\n \n )\n }\n setShowInviteMembers(true)}\n >\n Invite members\n \n
\n {\n showAllMembers && (\n {\n setShowAllMembers(false);\n refershList();\n }}\n />\n )\n }\n {\n showInviteMembers && (\n {\n channel.inviteWithUserIds(selectedMemebers, () => {\n setShowInviteMembers(false);\n refershList();\n });\n }}\n channel={channel}\n hideModal={() => setShowInviteMembers(false)}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(MemberList, mapStoreToProps);\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function BannedMembersModal({\n hideModal,\n channel,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next((users, error) => {\n if (error) {\n return;\n }\n setMembers(users);\n });\n setMemberQuery(bannedUserListQuery);\n }, []);\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"Muted members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unbanUser(member, () => {\n closeDropdown();\n setMembers(members.filter(m => {\n return (m.userId !== member.userId);\n }));\n })\n }}\n >\n Unban\n \n \n )}\n />\n )\n }\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport BannedMembersModal from './BannedMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const BannedMemberList = ({ channel }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next((users, error) => {\n if (error) {\n return;\n }\n setMembers(users);\n setHasNext(bannedUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refreshList = useCallback(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next(function(users, error) {\n if (error) {\n return;\n }\n setMembers(users);\n setHasNext(bannedUserListQuery.hasNext);\n });\n }, [channel]);\n return (\n <>\n {\n members.map((member) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unbanUser(member, () => {\n closeDropdown();\n refreshList();\n })\n }}\n >\n Unban\n \n \n )}\n />\n )\n }}\n />\n ))\n }\n {\n members && members.length === 0 && (\n \n No banned members yet\n \n )\n }\n {\n hasNext && (\n \n {\n setShowModal(true);\n }}\n >\n All banned members\n \n
\n )\n }\n {\n showModal && (\n {\n setShowModal(false);\n refreshList();\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(BannedMemberList, mapStoreToProps);\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n currentUser?: string;\n}\n\nexport default function MutedMembersModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberUserListQuery);\n }, []);\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"Muted members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unmuteUser(member, () => {\n closeDropdown();\n setMembers(members.filter(m => {\n return (m.userId !== member.userId);\n }));\n })\n }}\n >\n Unmute\n \n \n )}\n />\n )}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport MutedMembersModal from './MutedMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const MutedMemberList = ({ sdk, channel }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refreshList = useCallback(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n return (\n <>\n {\n members.map((member) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unmuteUser(member, () => {\n refreshList();\n closeDropdown();\n })\n }}\n >\n Unmute\n \n \n )}\n />\n );\n }\n }\n />\n ))\n }\n {\n members && members.length === 0 && (\n \n No muted members yet\n \n )\n }\n {\n hasNext && (\n \n {\n setShowModal(true);\n }}\n >\n All muted members\n \n
\n )\n }\n {\n showModal && (\n {\n setShowModal(false);\n refreshList();\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(MutedMemberList, mapStoreToProps);\n","import './index.scss';\nimport React, {\n ReactElement,\n useEffect,\n useState,\n useContext,\n} from 'react';\nimport { SendbirdTypes } from '../../../../types';\n\nimport Accordion, { AccordionGroup } from '../../../../ui/Accordion';\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport Badge from '../../../../ui/Badge';\n\nimport OperatorList from './OperatorList';\nimport MemberList from './MemberList';\nimport BannedMemberList from './BannedMemberList';\nimport MutedMemberList from './MutedMemberList';\n\nconst kFormatter = (num: number): string|number => {\n return Math.abs(num) > 999\n ? `${(Math.abs(num)/1000).toFixed(1)}K`\n : num;\n}\n\ninterface Props {\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport default function index({\n userQueryCreator,\n channel,\n}: Props): ReactElement {\n const [frozen, setFrozen] = useState(false);\n\n // work around for\n // https://sendbird.slack.com/archives/G01290GCDCN/p1595922832000900\n // SDK bug - after frozen/unfrozen myRole becomes \"none\"\n useEffect(() => {\n setFrozen(channel.isFrozen);\n }, [channel]);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__MEMBERS__TITLE}\n \n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__MUTED_MEMBERS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n )\n }\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__BANNED_MEMBERS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n {\n // cannot frozen broadcast channel\n !channel.isBroadcast && (\n \n
\n
\n {stringSet.CHANNEL_SETTING__FREEZE_CHANNEL}\n \n
\n {\n frozen\n ? (\n {\n channel.unfreeze(() => {\n setFrozen(false);\n });\n }}\n type={IconTypes.TOGGLE_ON}\n width={44}\n height={24}\n />\n )\n : (\n {\n channel.freeze(() => {\n setFrozen(true);\n });\n }}\n type={IconTypes.TOGGLE_OFF}\n width={44}\n height={24}\n />\n )\n }\n
\n
\n )\n }\n \n );\n}\n","import React, { useEffect, useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport './index.scss';\nimport Badge from '../../ui/Badge';\nimport Label, { LabelTypography, LabelColors } from '../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../ui/Icon';\nimport IconButton from '../../ui/IconButton';\n\nimport ChannelProfile from './components/ChannelProfile';\nimport MemebersAccordion from './components/MemebersAccordion';\nimport LeaveChannelModal from './components/LeaveChannel';\nimport AdminPanel from './components/AdminPanel';\nimport PlaceHolder from '../../ui/PlaceHolder';\nimport PlaceHolderTypes from '../../ui/PlaceHolder/type';\nimport { uuidv4 } from '../../utils/uuid';\nimport { createDefaultUserListQuery } from '../ChannelList/components/utils';\n\n\nconst kFormatter = (num) => (\n Math.abs(num) > 999\n ? `${(Math.abs(num) / 1000).toFixed(1)}K`\n : num\n);\n\nfunction ChannelSettings(props) {\n const {\n onCloseClick,\n channelUrl,\n disableUserProfile,\n renderUserProfile,\n onChannelModified,\n renderChannelProfile,\n onBeforeUpdateChannel,\n } = props;\n\n const {\n stores: { sdkStore },\n config: {\n userListQuery,\n theme,\n userId,\n logger,\n isOnline,\n },\n queries = {},\n } = props;\n\n const { config = {} } = props;\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n const userFilledApplicationUserListQuery = queries.applicationUserListQuery;\n const { stringSet } = useContext(LocalizationContext);\n\n const { sdk, initialized } = sdkStore;\n\n // hack to kepp track of channel updates by triggering useEffect\n const [channelUpdateId, setChannelUpdateId] = useState(uuidv4());\n const [channel, setChannel] = useState(null);\n const [invalidChannel, setInvalidChannel] = useState(false);\n const [showAccordion, setShowAccordion] = useState(false);\n const [showLeaveChannelModal, setShowLeaveChannelModal] = useState(false);\n\n useEffect(() => {\n logger.info('ChannelSettings: Setting up');\n if (!channelUrl || !initialized || !sdk) {\n logger.warning('ChannelSettings: Setting up failed', 'No channelUrl or sdk uninitialized');\n setInvalidChannel(false);\n } else {\n if (!sdk || !sdk.GroupChannel) {\n logger.warning('ChannelSettings: No GroupChannel');\n return;\n }\n sdk.GroupChannel.getChannel(channelUrl, (groupChannel) => {\n if (!groupChannel) {\n logger.warning('ChannelSettings: Channel not found');\n setInvalidChannel(true);\n } else {\n logger.info('ChannelSettings: Fetched group channel', groupChannel);\n setInvalidChannel(false);\n setChannel(groupChannel);\n }\n });\n }\n }, [channelUrl, initialized, channelUpdateId]);\n\n if (!channel || invalidChannel) {\n return (\n \n
\n \n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n {\n logger.info('ChannelSettings: Click close');\n onCloseClick();\n }}\n />\n
\n
\n
\n );\n }\n\n return (\n \n \n
\n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n
\n {\n logger.info('ChannelSettings: Click close');\n onCloseClick();\n }}\n >\n \n \n
\n
\n \n {\n renderChannelProfile\n ? renderChannelProfile({ channel })\n : (\n
{\n logger.info('ChannelSettings: Channel information being updated');\n const swapParams = sdk.getErrorFirstCallback();\n if (onBeforeUpdateChannel) {\n const params = onBeforeUpdateChannel(currentTitle, currentImg, channel.data);\n // swapParams\n channel.updateChannel(params, (response, error) => {\n let groupChannel = response;\n if (swapParams) {\n groupChannel = error;\n }\n\n onChannelModified(groupChannel);\n setChannelUpdateId(uuidv4());\n });\n return;\n }\n channel.updateChannel(\n currentTitle,\n currentImg,\n channel.data,\n (response, error) => {\n let groupChannel = response;\n if (swapParams) {\n groupChannel = error;\n }\n logger.info('ChannelSettings: Channel information updated', groupChannel);\n onChannelModified(groupChannel);\n setChannelUpdateId(uuidv4());\n },\n );\n }}\n />\n )\n }\n {\n channel.myRole === 'operator'\n ? (\n {\n // setChannelUpdateId(uuidv4());\n onChannelModified(groupChannel);\n }}\n userQueryCreator={\n () => ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )\n }\n />\n )\n : (\n <>\n {/* Move to different file */}\n setShowAccordion(!showAccordion)}\n className={`\n sendbird-channel-settings__panel-item\n sendbird-channel-settings__members\n `}\n onClick={() => setShowAccordion(!showAccordion)}\n >\n \n \n {`${stringSet.CHANNEL_SETTING__MEMBERS__TITLE}`}\n \n \n \n
\n {\n showAccordion && (\n ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )\n }\n swapParams={\n sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback()\n }\n channel={channel}\n members={channel.members}\n onInviteMemebers={(selectedMemebers) => {\n logger.info('ChannelSettings: Inviting new users');\n channel.inviteWithUserIds(selectedMemebers)\n .then((res) => {\n onChannelModified(res);\n setChannelUpdateId(uuidv4());\n logger.info('ChannelSettings: Inviting new users success!', res);\n });\n }}\n />\n )\n }\n >\n )\n }\n\n {\n if (!isOnline) { return; }\n setShowLeaveChannelModal(true);\n }}\n onClick={() => {\n if (!isOnline) { return; }\n setShowLeaveChannelModal(true);\n }}\n >\n \n \n {stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE}\n \n
\n {\n showLeaveChannelModal && (\n setShowLeaveChannelModal(false)}\n onLeaveChannel={() => {\n logger.info('ChannelSettings: Leaving channel', channel);\n channel.leave()\n .then(() => {\n logger.info('ChannelSettings: Leaving channel successful!', channel);\n onCloseClick();\n });\n }}\n />\n )\n }\n \n \n );\n}\n\nChannelSettings.propTypes = {\n onCloseClick: PropTypes.func,\n onChannelModified: PropTypes.func,\n onBeforeUpdateChannel: PropTypes.func,\n renderChannelProfile: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n channelUrl: PropTypes.string.isRequired,\n queries: PropTypes.shape({\n applicationUserListQuery: PropTypes.shape({\n limit: PropTypes.number,\n userIdsFilter: PropTypes.arrayOf(PropTypes.string),\n metaDataKeyFilter: PropTypes.string,\n metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n // from withSendbirdContext\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n GroupChannel: PropTypes.oneOfType([\n PropTypes.shape({\n getChannel: PropTypes.func,\n }),\n PropTypes.func,\n ]),\n createApplicationUserListQuery: PropTypes.any,\n }),\n initialized: PropTypes.bool,\n }),\n }).isRequired,\n config: PropTypes.shape({\n userId: PropTypes.string,\n theme: PropTypes.string,\n userListQuery: PropTypes.func,\n isOnline: PropTypes.bool,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n }).isRequired,\n};\n\nChannelSettings.defaultProps = {\n onBeforeUpdateChannel: null,\n queries: {},\n disableUserProfile: false,\n renderUserProfile: null,\n renderChannelProfile: null,\n onCloseClick: () => { },\n onChannelModified: () => { },\n};\n\nexport default withSendbirdContext(ChannelSettings);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Sendbird from '../../lib/Sendbird';\n\nimport ChannelList from '../ChannelList';\nimport Conversation from '../Conversation';\nimport ChannelSettings from '../ChannelSettings';\n\nimport './index.scss';\n\nexport default function App(props) {\n const {\n appId,\n userId,\n accessToken,\n theme,\n userListQuery,\n nickname,\n profileUrl,\n config = {},\n useReaction,\n useMessageGrouping,\n colorSet,\n stringSet,\n allowProfileEdit,\n disableUserProfile,\n renderUserProfile,\n onProfileEditSuccess,\n } = props;\n const [currentChannelUrl, setCurrentChannelUrl] = useState(null);\n const [showSettings, setShowSettings] = useState(false);\n return (\n \n \n
\n {\n if (channel && channel.url) {\n setCurrentChannelUrl(channel.url);\n } else {\n setCurrentChannelUrl('');\n }\n }}\n />\n
\n
\n {\n if (showSettings) {\n setShowSettings(false);\n } else {\n setShowSettings(true);\n }\n }}\n useReaction={useReaction}\n useMessageGrouping={useMessageGrouping}\n />\n
\n {showSettings && (\n
\n { setShowSettings(false); }}\n />\n
\n )}\n
\n \n );\n}\n\nApp.propTypes = {\n appId: PropTypes.string.isRequired,\n userId: PropTypes.string.isRequired,\n accessToken: PropTypes.string,\n theme: PropTypes.string,\n userListQuery: PropTypes.func,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n allowProfileEdit: PropTypes.bool,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n onProfileEditSuccess: PropTypes.func,\n config: PropTypes.shape({\n // None Error Warning Info 'All/Debug'\n logLevel: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n }),\n useReaction: PropTypes.bool,\n useMessageGrouping: PropTypes.bool,\n stringSet: PropTypes.objectOf(PropTypes.string),\n colorSet: PropTypes.objectOf(PropTypes.string),\n};\n\nApp.defaultProps = {\n accessToken: '',\n theme: 'light',\n nickname: '',\n profileUrl: '',\n userListQuery: null,\n allowProfileEdit: false,\n onProfileEditSuccess: null,\n disableUserProfile: false,\n renderUserProfile: null,\n config: {},\n useReaction: true,\n useMessageGrouping: true,\n stringSet: null,\n colorSet: null,\n};\n"],"names":["SendbirdSdkContext","React","createContext","withSendbirdContext","OriginalComponent","mapStoreToProps","ContextAwareComponent","props","context","console","warn","mergedProps","componentName","displayName","name","INIT_SDK","SET_SDK_LOADING","RESET_SDK","SDK_ERROR","INIT_USER","RESET_USER","UPDATE_USER_INFO","APP_VERSION_STRING","disconnectSdk","sdkDispatcher","userDispatcher","sdk","onDisconnect","type","payload","disconnect","then","finally","handleConnection","dispatchers","userId","appId","nickname","profileUrl","accessToken","logger","info","newSdk","Sb","addExtension","connectCbSucess","user","newNickName","newProfileUrl","updateCurrentUserInfo","namedUser","connectCbError","e","error","connect","res","catch","err","warning","isEmpty","obj","undefined","prop","hasOwnProperty","JSON","stringify","useTheme","overrides","useLayoutEffect","cssVars","variables","initialized","loading","reducer","state","action","sdkActions","initialState","actions","uuidv4","replace","c","r","Math","random","v","toString","useConnectionStatus","useState","isOnline","setIsOnline","useEffect","uniqueHandlerId","handler","ConnectionHandler","onReconnectStarted","onReconnectSucceeded","onReconnectFailed","reconnect","addConnectionHandler","removeConnectionHandler","tryReconnect","getConnectionState","window","addEventListener","removeEventListener","body","document","querySelector","classList","add","remove","LOG_LEVELS","DEBUG","WARNING","ERROR","INFO","ALL","colorLog","level","printLog","title","description","log","Date","toISOString","getDefaultLogger","LoggerFactory","lvl","customInterface","logInterface","lvlArray","Array","isArray","applyLog","lgLvl","reduce","accumulator","currentLvl","topics","hOP","__getTopics","subscribe","topic","listener","call","index","push","publish","forEach","item","useAppendDomNode","ids","rootSelector","root","id","elem","createElement","setAttribute","appendChild","target","getElementById","removeChild","getStringSet","lang","stringSet","en","TRYING_TO_CONNECT","USER_PROFILE__MESSAGE","USER_PROFILE__USER_ID","EDIT_PROFILE__TITLE","EDIT_PROFILE__IMAGE_LABEL","EDIT_PROFILE__IMAGE_UPLOAD","EDIT_PROFILE__NICKNAME_LABEL","EDIT_PROFILE__NICKNAME_PLACEHOLDER","EDIT_PROFILE__USERID_LABEL","EDIT_PROFILE__THEME_LABEL","CHANNEL_LIST__TITLE","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED","CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE","CHANNEL__MESSAGE_LIST__NOTIFICATION__ON","CHANNEL_SETTING__HEADER__TITLE","CHANNEL_SETTING__PROFILE__EDIT","CHANNEL_SETTING__MEMBERS__TITLE","CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS","CHANNEL_SETTING__MEMBERS__INVITE_MEMBER","CHANNEL_SETTING__LEAVE_CHANNEL__TITLE","CHANNEL_SETTING__OPERATORS__TITLE","CHANNEL_SETTING__OPERATORS__TITLE_ALL","CHANNEL_SETTING__OPERATORS__TITLE_ADD","CHANNEL_SETTING__MUTED_MEMBERS__TITLE","CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL","CHANNEL_SETTING__BANNED_MEMBERS__TITLE","CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL","CHANNEL_SETTING__FREEZE_CHANNEL","BUTTON__CANCEL","BUTTON__DELETE","BUTTON__SAVE","BUTTON__CREATE","BUTTON__INVITE","BUTTON__CLOSE","BADGE__OVER","MODAL__DELETE_MESSAGE__TITLE","MODAL__CHANNEL_INFORMATION__TITLE","MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE","MODAL__CHANNEL_INFORMATION__UPLOAD","MODAL__CHANNEL_INFORMATION__CHANNEL_NAME","MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER","MODAL__INVITE_MEMBER__TITLE","MODAL__INVITE_MEMBER__SELECTEC","MODAL__CREATE_CHANNEL__TITLE","MODAL__CREATE_CHANNEL__SELECTED","MODAL__USER_LIST__TITLE","TYPING_INDICATOR__IS_TYPING","TYPING_INDICATOR__AND","TYPING_INDICATOR__ARE_TYPING","TYPING_INDICATOR__MULTIPLE_TYPING","MESSAGE_STATUS__SENDING_FAILED","MESSAGE_STATUS__TRY_AGAIN","MESSAGE_STATUS__OR","MESSAGE_STATUS__DELETE","PLACE_HOLDER__NO_CHANNEL","CHANNEL_FROZEN","MUTED_PL","PLACE_HOLDER__WRONG","PLACE_HOLDER__RETRY_TO_CONNECT","NO_TITLE","NO_NAME","NO_MEMBERS","TOOLTIP__AND_YOU","TOOLTIP__YOU","TOOLTIP__UNKOWN_USER","UNKNOWN__UNKNOWN_MESSAGE_TYPE","UNKNOWN__CANNOT_READ_MESSAGE","MESSAGE_EDITED","LocalizationContext","LocalizationProvider","children","Sendbird","disableUserProfile","renderUserProfile","allowProfileEdit","theme","userListQuery","config","colorSet","logLevel","setLogger","pubSub","setPubSub","useReducer","sdkReducers","sdkInitialState","sdkStore","userReducers","userInitialState","userStore","pubSubFactory","currenttheme","setCurrenttheme","useOnlineStatus","localeStringSet","useMemo","stores","propTypes","PropTypes","string","isRequired","oneOfType","element","arrayOf","any","bool","func","shape","objectOf","defaultProps","UserProfileContext","UserProfileProvider","className","RESET_CHANNEL_LIST","CREATE_CHANNEL","LEAVE_CHANNEL_SUCCESS","SET_CURRENT_CHANNEL","SHOW_CHANNEL_SETTINGS","HIDE_CHANNEL_SETTINGS","FETCH_CHANNELS_START","FETCH_CHANNELS_SUCCESS","FETCH_CHANNELS_FAILURE","INIT_CHANNELS_START","INIT_CHANNELS_SUCCESS","INIT_CHANNELS_FAILURE","ON_USER_JOINED","ON_CHANNEL_DELETED","ON_LAST_MESSAGE_UPDATED","ON_USER_LEFT","ON_CHANNEL_CHANGED","ON_CHANNEL_ARCHIVED","ON_CHANNEL_FROZEN","ON_CHANNEL_UNFROZEN","ON_READ_RECEIPT_UPDATED","ON_DELIVERY_RECEIPT_UPDATED","CHANNEL_REPLACED_TO_TOP","allChannels","currentChannel","showSettings","length","url","currentChannels","map","filteredChannels","filter","find","channel","channelUrl","leftCurrentChannel","newAllChannels","isMe","unreadMessageCount","lastMessage","currentUnReadCount","isFrozen","ImageRenderer","alt","width","height","defaultComponent","circle","injectingClassName","unshift","realElement","setRealElement","join","backgroundRepeat","backgroundPosition","backgroundSize","backgroundImage","borderRadius","number","ADD","ATTACH","ARROW_LEFT","AVATAR_DARK","AVATAR_LIGHT","BROADCAST_LARGE_DARK","BROADCAST_LARGE_LIGHT","BROADCAST_DARK","BROADCAST_LIGHT","BROADCAST","FROZEN_DARK","FROZEN_LIGHT","CAMERA","MORE","MUTE","NO_THUMBNAIL","CHECKBOX","CHECKBOX_OFF","CLOSE","COPY","CHAT","CREATE","DELETE","DISCONNECTED","DUMMY","EDIT","ERROR_FILLED","EMOJI_FAILED","EMOJI_REACTIONS_ADD","EMOJI_REACTIONS_ADD_GRAY","DELIVERED","DOCUMENT","DOWNLOAD","FILE_AUDIO","FILE_DOCUMENT","GIF","LEAVE","MEMBERS","NOTIFICATIONS","PHOTO","PLAY","PLUS","READ","REFRESH","SEND","SENT","SUPER_GROUP","SHEVRON","SHEVRON_DOWN","SPINNER","SPINNER_LARGE","USER","ICON_OPERATOR","ICON_BANNED","ICON_FREEZE","ICON_MUTED","ICON_MUTED_FG","TOGGLE_ON","TOGGLE_OFF","Colors","DEFAULT","PRIMARY","SECONDARY","CONTENT","CONTENT_INVERSE","WHITE","ON_BACKGROUND_3","changeColorToClassName","color","changeTypeToIconComponent","Type","IconAdd","IconArrowLeft","IconCamera","IconAttach","IconAvatarDark","IconAvatarLight","BroadcastLargeDark","BroadcastLargeLight","BroadcastDark","BroadcastLight","Broadcast","FrozenDark","FrozenLight","IconMore","IconMute","IconNoThumbnail","IconCheckbox","IconCheckboxOff","IconClose","IconCopy","IconChat","IconSupergroup","IconCreate","IconDelete","IconDisconnected","IconDummy","IconEdit","IconError","IconErrorFilled","IconEmojiFailed","IconEmojiReactionsAdd","IconEmojiReactionsAddGray","IconDelivered","IconDocument","IconDownload","IconFileAudio","IconFileDocument","IconGif","IconInfo","IconLeave","IconMembers","IconNotifications","IconPhoto","IconPlay","IconPlus","IconRead","IconRefresh","IconSend","IconSent","IconShevron","IconShevronDown","IconSpinner","IconSpinnerLarge","IconUser","IconOperator","IconBanned","IconMuted","IconMutedFg","IconFreeze","ToggleOn","ToggleOff","Icon","onClick","fillColor","iconStyle","oneOf","Object","keys","IconTypes","IconColors","imageRendererClassName","_a","AvatarInner","_b","src","_c","slice","i","Avatar","ref","_d","_e","_f","__spreadArrays","forwardRef","DEFAULT_URL_PREFIX","getChannelAvatarSource","currentUserId","coverUrl","RegExp","test","members","member","useDefaultAvatar","ChannelAvatar","isBroadcast","memoizedAvatar","utils","Typography","H_1","H_2","SUBTITLE_1","SUBTITLE_2","BODY_1","BODY_2","BUTTON_1","BUTTON_2","CAPTION_1","CAPTION_2","CAPTION_3","ONBACKGROUND_1","ONBACKGROUND_2","ONBACKGROUND_3","ONCONTENT_1","ONCONTENT_2","changeTypographyToClassName","CLASS_NAME","Label","LabelTypography","LabelColors","LabelStringSet","Badge","count","maxLevel","useContext","maximumNumber","parseInt","repeat","MessageStatusType","PENDING","FAILED","truncate","fullStr","strLen","separator","sepLen","charsToShow","frontChars","ceil","backChars","floor","substr","getIsSentFromStatus","status","getChannelTitle","getLastMessageCreatedAt","date","createdAt","isToday","format","isYesterday","getTotalMembers","memberCount","getPrettyLastMessage","message","MAXLEN","messageType","getLastMessage","getChannelUnreadMessageCount","ChannelPreview","isActive","ChannelAction","tabIndex","currentUser","IconButton","disabled","onBlur","pressed","setPressed","ChannelHeader","iconButton","onEdit","renderHeader","instanceOf","MODAL_ROOT","DANGER","DISABLED","Size","BIG","SMALL","changeTypeToClassName","changeSizeToClassName","size","Button","injectingClassNames","ModalHeader","titleText","ModalBody","ModalFooter","onSubmit","onCancel","submitText","ButtonTypes","Modal","hideFooter","createPortal","InputLabel","Input","value","placeHolder","required","inputValue","setInputValue","ONBACKGROUND_4","TextButton","notUnderline","noop","getMessageCreatedAt","getSenderName","sender","friendName","getSenderProfileUrl","EditUserProfile","onThemeChange","changeTheme","hiddenInputRef","useRef","inputRef","formRef","currentImg","setCurrentImg","newFile","setNewFile","current","reportValidity","ButtonType","preventDefault","display","URL","createObjectURL","files","click","store","ConnectedEditUserProfile","Types","LOADING","NO_CHANNELS","WRONG","MutedAvatarOverlay","Checkbox","checked","onChange","isChecked","setCheck","SEND_MESSAGE_START","SEND_USER_MESSAGE","SEND_FILE_MESSAGE","UPDATE_USER_MESSAGE","DELETE_MESSAGE","LEAVE_CHANNEL","getSdk","getPubSub","getConnect","Promise","resolve","reject","Error","getDisconnect","getUpdateUserInfo","nickName","getSendUserMessage","userMessageParams","pubsub","GroupChannel","getChannel","promisify","pendingMsg","pendingPromise","resolve_","reject_","sendUserMessage","swapParams","getErrorFirstCallback","get","getSendFileMessage","fileMessageParams","sendFileMessage","file","localUrl","fileUrl","requestState","getUpdateUserMessage","messageId","params","updateUserMessage","fromSelector","getDeleteMessage","deleteMessage","getResendUserMessage","failedMessage","resendUserMessage","getResendFileMessage","resendFileMessage","getCreateChannel","createChannel","getLeaveChannel","leave","getFreezeChannel","freeze","getUnFreezeChannel","unfreeze","UserProfile","onSuccess","GroupChannelParams","isDistinct","addUserIds","groupChannel","ConnectedUserProfile","MenuItems","parentContainRef","closeDropdown","menuRef","handleClickOutside","event","contains","setState","parentRef","openLeft","parentRect","getBoundingClientRect","x","left","y","top","menuStyle","innerWidth","innerHeight","rect","padding","Number","isNaN","createRef","setupEvents","getMenuPosition","showParent","cleanUpEvents","hideParent","style","position","round","Component","Element","componentClassName","SortByRow","maxItemCount","itemWidth","itemHeight","result","EmojiListItems","reactionRef","spaceFromTrigger","spaceFromTriggerX","spaceFromTriggerY","reactionStyle","maximumLeft","getBarPosition","ENTER","MenuItems_","EmojiListItems_","MenuItem","keyCode","ContextMenu","menuTrigger","menuItems","showMenu","setShowMenu","COMPONENT_NAME","UserListItem","checkBox","uniqueKey","actionRef","avatarRef","isMuted","toggleDropdown","paddingTop","paddingBottom","close","role","filterUser","idsToFilter","currentId","includes","InviteMembers","userQueryCreator","closeModal","users","setUsers","selectedUsers","setSelectedUsers","usersDataSource","setUsersDataSource","selectedCount","applicationUserListQuery","next","users_","selectedUserList","hasNext","fetchMore","clientHeight","scrollTop","scrollHeight","usersBatch","modifiedSelectedUsers","createDefaultUserListQuery","userFilledApplicationUserListQuery","createApplicationUserListQuery","key","getApplicationAttributes","appInfo","applicationAttributes","isBroadcastChannelEnabled","ALLOW_BROADCAST_CHANNEL","isSuperGroupChannelEnabled","ALLOW_SUPER_GROUP_CHANNEL","setChannelType","isSuper","onBeforeCreateChannel","response","operatorUserIds","AddChannel","channelListDispatcher","showModal","setShowModal","step","setStep","setType","isBroadcastAvailable","isSupergroupAvailable","LeaveChannel","onCloseModal","onLeaveChannel","ChannelPreviewAction","stopPropagation","LeaveChannelModal","Loader","PlaceHolder","retryToConnect","PlaceHolderTypes","ChannelsPlaceholder","Placeholder","createEventHandler","sdkChannelHandlerId","ChannelHandler","onChannelChanged","channelActions","onChannelDeleted","onUserJoined","onUserBanned","onUserLeft","leftUser","onReadStatus","onDeliveryReceiptUpdated","onMessageUpdated","isEqual","onChannelHidden","onChannelFrozen","onChannelUnfrozen","addChannelHandler","userFilledChannelListQuery","channelListQuery","createMyGroupChannelListQuery","includeEmpty","order","limit","setupChannelList","setChannelSource","onChannelSelect","sortChannelList","channelList","sorted","markAsDelivered","pubSubHandleRemover","subscriber","s","pubSubHandler","subScriber","Map","set","msg","updatedChannel","ChannelList","queries","renderChannelPreview","onProfileEditSuccess","enableEditProfile","userDefinedDisableUserProfile","userDefinedRenderProfile","sdkError","setUser","sdkIntialized","channelListReducers","channelListInitialState","channelListStore","channelSource","setSdkChannelHandlerId","showProfileEdit","setShowProfileEdit","removeChannelHandler","channelListActions","sortedChannels","before","after","newName","updateCurrentUserInfoWithProfileImage","updatedUser","userActions","PlaceholderTypes","idx","cb","channelNameContainsFilter","channelUrlsFilter","customTypesFilter","customTypeStartsWithFilter","hiddenChannelFilter","memberStateFilter","metadataOrderKeyFilter","nicknameContainsFilter","publicChannelFilter","superChannelFilter","unreadChannelFilter","userIdsExactFilter","userIdsIncludeFilter","userIdsIncludeFilterQueryType","userIdsFilter","metaDataKeyFilter","metaDataValuesFilter","RESET_MESSAGES","RESET_STATE","CLEAR_SENT_MESSAGES","GET_PREV_MESSAGES_START","GET_PREV_MESSAGES_SUCESS","SEND_MESSAGEGE_START","SEND_MESSAGEGE_SUCESS","SEND_MESSAGEGE_FAILURE","RESEND_MESSAGEGE_START","ON_MESSAGE_RECEIVED","ON_MESSAGE_UPDATED","ON_MESSAGE_DELETED","ON_MESSAGE_DELETED_BY_REQ_ID","SET_CHANNEL_INVALID","MARK_AS_READ","ON_REACTION_UPDATED","SET_EMOJI_CONTAINER","SET_READ_STATUS","SUPPORTED_MIMES","IMAGE","VIDEO","isImage","isVideo","unSupported","MessageTypes","ADMIN","FILE","THUMBNAIL","OG","SendingMessageStatus","NONE","SUCCEEDED","getMessageType","isUserMessage","ogMetaData","isAdminMessage","isFileMessage","UNDEFINED","scrollIntoLast","selector","intialTry","MAX_TRIES","currentTry","nodes","querySelectorAll","last","scrollIntoView","setTimeout","dispatcher","getParsedStatus","currentGroupChannel","unreadCount","getReadReceipt","isDelivered","getDeliveryReceipt","isOperator","myRole","isDisabledBecauseFrozen","isDisabledBecauseMuted","myMutedState","getEmojiCategoriesFromEmojiContainer","emojiContainer","emojiCategories","getAllEmojisFromEmojiContainer","allEmojis","categoryIndex","emojis","emojiIndex","getEmojisFromEmojiContainer","emojiCategoryId","emojiCategory","getAllEmojisMapFromEmojiContainer","allEmojisMap","getNicknamesMapFromMembers","nicknamesMap","memberIndex","isSameGroup","comparingMessage","sendingStatus","compareMessagesForGrouping","prevMessage","currMessage","nextMessage","passUnsuccessfullMessages","allMessages","newMessage","lastIndexOfSucceededMessage","lastIndexOf","messages","splice","hasMore","lastMessageTimeStamp","readStatus","unreadSince","isInvalid","val","a","b","aString","bString","actionTypes","m","recivedMessages","stateChannel","stateChannelUrl","actionChannelUrl","filteredAllMessages","compareIds","newMessages","reqId","sort","failed","currentGroupChannelUrl","indexOf","applyReactionEvent","useHandleChannelEvents","sdkInit","messagesDispatcher","messageReciverId","onMessageReceived","messageActions","_","onMessageDeleted","onReactionUpdated","reactionEvent","onUserMuted","onUserUnmuted","onOperatorUpdated","useSetChannel","messageActionTypes","markAsRead","getAllEmoji","emojiContainer_","useInitialMessagesFetch","userFilledMessageListQuery","MessageListParams","getMessagesByMessageId","messageListParams","prevResultSize","isInclusive","includeReplies","includeReaction","getMessagesByTimestamp","getTime","useHandleReconnect","wasOffline","useReaction","isUsingReaction","lastMessageTime","useScrollCallback","useCallback","hasMoreMessages","lastMessageTs","useDeleteMessageCallback","useUpdateMessageCallback","onBeforeUpdateUserMessage","text","createParamsDefault","txt","UserMessageParams","createCustomPrams","useResendMessageCallback","isResendable","useSendMessageCallback","onBeforeSendUserMessage","messageInputRef","sendMessage","trim","useSendFileMessageCallback","onBeforeSendFileMessage","file_","FileMessageParams","useSetReadStatus","setReadStatus","allReadStatus","handleMessageStatus","onReadReceiptUpdated","handlerId","ReactionButton","selected","useMemoizedEmojiListItems","toggleReaction","emojiAllList","emoji","reactedReaction","reactions","reaction","isReacted","userIds","useToggleReactionCallback","deleteReaction","addReaction","MessageStatus","label","icon","array","object","ReactionBadge","isAdd","Tooltip","SPACE_FROM_TRIGGER","TooltipWrapper","hoverTooltip","showHoverTooltip","setShowHoverTooltip","childrenRef","bottom","offsetWidth","EmojiReactions","emojiAllMap","membersMap","memoizedEmojiListItems","MemoizedEmojiListItems","imageWidth","imageHeight","emojiReactionAddRef","messageReactions","emojiUrl","reactedUserCount","reactedByMe","nicknames","stringSetForMe","copyToClipboard","clipboardData","setData","queryCommandSupported","textarea","textContent","select","execCommand","ex","WORD_TYPOGRAPHY","EDITED_COLOR","useMemoizedMessageText","updatedAt","splitMessage","split","matchedMessage","word","MOUSE_ENTER","MOUSE_LEAVE","useMouseHover","setHover","handleMouseOver","handleMouseOut","GROUPING_PADDING","NORMAL_PADDING","Message","isByMe","resendMessage","showEdit","showRemove","chainTop","chainBottom","memoizedMessageText","OutgoingUserMessage","MemoizedMessageText","messageRef","parentRefReactions","parentRefMenus","isMessageSent","mousehover","setMousehover","moreActive","setMoreActive","handleMoreIconClick","handleMoreIconBlur","IncomingUserMessage","showReactionAddButton","showEmojiReactions","AdminMessage","OUTGOING_THUMBNAIL_MESSAGE","INCOMING_THUMBNAIL_MESSAGE","ThumbnailMessage","OutgoingThumbnailMessage","reactionAddRef","IncomingThumbnailMessage","MAX_TRUNCATE_LENGTH","GROUPAING_PADDING","checkFileType","imageFile","audioFile","OutgoingFileMessage","openFileUrl","open","reactionAddButtonRef","IncomingFileMessage","MessageSwitch","DateSeparator","separatorColor","LINE_HEIGHT","KeyCode","SHIFT","handleUploadFile","callback","MessageInput","isEdit","placeholder","maxLength","onFileUpload","onSendMessage","onCancelEdit","onStartTyping","fileInputRef","isShiftPressed","setIsShiftPressed","setHeight","MAX_HEIGHT","offsetHeight","trimmedInputValue","FileViewerComponent","onClose","onDelete","FileViewer","RemoveMessage","onDeleteMessage","UnknownMessage","OutgoingUnknownMessage","IncomingUnknownMessage","URL_REG","OG_MESSAGE","OUTGOING_OG_MESSAGE","INCOMING_OG_MESSAGE","createUrlTester","regexp","checkOGIsEnalbed","LINK_LABEL","http","LinkLabel","injecingClassName","WORD_COLOR","isUrl","NORAML_PADDING","OGMessageSwitch","openLink","OutgoingOGMessage","defaultImage","IncomingOGMessage","errorCode","MessageHoc","editDisabled","hasSeperator","updateMessage","setShowEdit","setShowRemove","showFileViewer","setShowFileViewer","editMessageInputRef","FileMessage","OGMessage","RemoveMessageModal","isDateSeperator","ConversationScroll","scrollRef","onScroll","first","renderChatItem","useMessageGrouping","previousMessage","previousMessageCreatedAt","currentCreatedAt","isSameDay","onUpdateMessage","onResendMessage","MessageHOC","Notification","time","timeArray","FrozenNotification","TypingIndicatorText","TypingIndicator","sb","setHandlerId","typingMembers","setTypingMembers","newHandlerId","onTypingStatusUpdated","getTypingMembers","MessageInputWrapper","renderMessageInput","startTyping","ConnectionStatus","prettyDate","formatDistanceToNowStrict","addSuffix","getOthersLastSeenAt","getReadStatus","lastSeenList","values","lastSeenAt","last_seen_at","AutoRefresh","repeatFunc","setLabel","interval","setInterval","clearInterval","ChatHeader","subTitle","onActionClick","ConversationPanel","renderChatHeader","onChatHeaderActionClick","messageListQuery","messagesReducer","messagesInitialState","messagesStore","invalidChannel","usingReaction","onScrollCallback","useGetChannel","onSendFileMessage","includeMetaArray","includeParentMessageText","includeThreadInfo","reverse","senderUserIdsFilter","EditDetails","ChannelProfile","onChannelInfoChange","EditDetailsModal","MembersModal","hideModal","setMembers","memberQuery","setMemberQuery","memberListQuery","createMemberListQuery","o","addOperators","removeOperators","unmuteUser","muteUser","banUser","SHOWN_MEMBER_MAX","MemebersAccordion","onInviteMemebers","showMoreModal","setShowMoreModal","showAddUserModal","setShowAddUserModal","ButtonSizes","Context","opened","setOpened","Consumer","Provider","AccordionGroup","Accordion","renderTitle","renderContent","renderFooter","showAccordion","setShowAccordion","handleClick","AccordionGroup_","OperatorsModal","operators","setOperators","operatorQuery","setOperatorQuery","operatorListQuery","createOperatorListQuery","AddOperatorsModal","selectedMembers","setSelectedMembers","modifiedSelectedMembers","OperatorList","showMore","setShowMore","showAdd","setShowAdd","setHasNext","refershList","operator","userQuery","setUserQuery","MemberList","showAllMembers","setShowAllMembers","showInviteMembers","setShowInviteMembers","memberUserListQuery","selectedMemebers","inviteWithUserIds","BannedMembersModal","bannedUserListQuery","createBannedUserListQuery","unbanUser","BannedMemberList","refreshList","MutedMembersModal","mutedMemberFilter","MutedMemberList","kFormatter","num","abs","toFixed","frozen","setFrozen","ChannelSettings","onCloseClick","onChannelModified","renderChannelProfile","onBeforeUpdateChannel","channelUpdateId","setChannelUpdateId","setChannel","setInvalidChannel","showLeaveChannelModal","setShowLeaveChannelModal","currentTitle","data","updateChannel","AdminPanel","App","currentChannelUrl","setCurrentChannelUrl","setShowSettings"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/index.js b/dist/index.js
deleted file mode 100644
index c5633e8..0000000
--- a/dist/index.js
+++ /dev/null
@@ -1,14582 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-
-var React = require('react');
-var React__default = _interopDefault(React);
-var PropTypes = _interopDefault(require('prop-types'));
-var Sb = _interopDefault(require('sendbird'));
-var cssVars = _interopDefault(require('css-vars-ponyfill'));
-var isToday = _interopDefault(require('date-fns/isToday'));
-var format = _interopDefault(require('date-fns/format'));
-var isYesterday = _interopDefault(require('date-fns/isYesterday'));
-var reactDom = require('react-dom');
-var isSameDay = _interopDefault(require('date-fns/isSameDay'));
-var formatDistanceToNowStrict = _interopDefault(require('date-fns/formatDistanceToNowStrict'));
-
-function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
-}
-
-function _defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
- }
-}
-
-function _createClass(Constructor, protoProps, staticProps) {
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
- if (staticProps) _defineProperties(Constructor, staticProps);
- return Constructor;
-}
-
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-}
-
-function ownKeys(object, enumerableOnly) {
- var keys = Object.keys(object);
-
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(object);
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
- });
- keys.push.apply(keys, symbols);
- }
-
- return keys;
-}
-
-function _objectSpread2(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
-
- if (i % 2) {
- ownKeys(Object(source), true).forEach(function (key) {
- _defineProperty(target, key, source[key]);
- });
- } else if (Object.getOwnPropertyDescriptors) {
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
- } else {
- ownKeys(Object(source)).forEach(function (key) {
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
- });
- }
- }
-
- return target;
-}
-
-function _inherits(subClass, superClass) {
- if (typeof superClass !== "function" && superClass !== null) {
- throw new TypeError("Super expression must either be null or a function");
- }
-
- subClass.prototype = Object.create(superClass && superClass.prototype, {
- constructor: {
- value: subClass,
- writable: true,
- configurable: true
- }
- });
- if (superClass) _setPrototypeOf(subClass, superClass);
-}
-
-function _getPrototypeOf(o) {
- _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
- return o.__proto__ || Object.getPrototypeOf(o);
- };
- return _getPrototypeOf(o);
-}
-
-function _setPrototypeOf(o, p) {
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
- o.__proto__ = p;
- return o;
- };
-
- return _setPrototypeOf(o, p);
-}
-
-function _assertThisInitialized(self) {
- if (self === void 0) {
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
- }
-
- return self;
-}
-
-function _possibleConstructorReturn(self, call) {
- if (call && (typeof call === "object" || typeof call === "function")) {
- return call;
- }
-
- return _assertThisInitialized(self);
-}
-
-function _slicedToArray(arr, i) {
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
-}
-
-function _toConsumableArray(arr) {
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
-}
-
-function _arrayWithoutHoles(arr) {
- if (Array.isArray(arr)) {
- for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
-
- return arr2;
- }
-}
-
-function _arrayWithHoles(arr) {
- if (Array.isArray(arr)) return arr;
-}
-
-function _iterableToArray(iter) {
- if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
-}
-
-function _iterableToArrayLimit(arr, i) {
- if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
- return;
- }
-
- var _arr = [];
- var _n = true;
- var _d = false;
- var _e = undefined;
-
- try {
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
- _arr.push(_s.value);
-
- if (i && _arr.length === i) break;
- }
- } catch (err) {
- _d = true;
- _e = err;
- } finally {
- try {
- if (!_n && _i["return"] != null) _i["return"]();
- } finally {
- if (_d) throw _e;
- }
- }
-
- return _arr;
-}
-
-function _nonIterableSpread() {
- throw new TypeError("Invalid attempt to spread non-iterable instance");
-}
-
-function _nonIterableRest() {
- throw new TypeError("Invalid attempt to destructure non-iterable instance");
-}
-
-var SendbirdSdkContext = React__default.createContext();
-
-var withSendbirdContext = function withSendbirdContext(OriginalComponent, mapStoreToProps) {
- var ContextAwareComponent = function ContextAwareComponent(props) {
- return React__default.createElement(SendbirdSdkContext.Consumer, null, function (context) {
- if (mapStoreToProps && typeof mapStoreToProps !== 'function') {
- // eslint-disable-next-line no-console
- console.warn('Second parameter to withSendbirdContext must be a pure function');
- } // todo - memoize
-
-
- var mergedProps = mapStoreToProps && typeof mapStoreToProps === 'function' ? _objectSpread2({}, mapStoreToProps(context), {}, props) : _objectSpread2({}, context, {}, props); // eslint-disable-next-line react/jsx-props-no-spreading
-
- return React__default.createElement(OriginalComponent, mergedProps);
- });
- };
-
- var componentName = OriginalComponent.displayName || OriginalComponent.name || 'Component';
- ContextAwareComponent.displayName = "SendbirdAware".concat(componentName);
- return ContextAwareComponent;
-};
-
-var INIT_SDK = 'INIT_SDK';
-var SET_SDK_LOADING = 'SET_SDK_LOADING';
-var RESET_SDK = 'RESET_SDK';
-var SDK_ERROR = 'SDK_ERROR';
-
-var INIT_USER = 'INIT_USER';
-var RESET_USER = 'RESET_USER';
-var UPDATE_USER_INFO = 'UPDATE_USER_INFO';
-
-var APP_VERSION_STRING = '1.3.0';
-var disconnectSdk = function disconnectSdk(_ref) {
- var sdkDispatcher = _ref.sdkDispatcher,
- userDispatcher = _ref.userDispatcher,
- sdk = _ref.sdk,
- onDisconnect = _ref.onDisconnect;
- sdkDispatcher({
- type: SET_SDK_LOADING,
- payload: true
- });
-
- if (sdk && sdk.disconnect) {
- sdk.disconnect().then(function () {
- sdkDispatcher({
- type: RESET_SDK
- });
- userDispatcher({
- type: RESET_USER
- });
- }).finally(function () {
- onDisconnect();
- });
- } else {
- onDisconnect();
- }
-};
-var handleConnection = function handleConnection(_ref2, dispatchers) {
- var userId = _ref2.userId,
- appId = _ref2.appId,
- nickname = _ref2.nickname,
- profileUrl = _ref2.profileUrl,
- accessToken = _ref2.accessToken,
- sdk = _ref2.sdk,
- logger = _ref2.logger;
- var sdkDispatcher = dispatchers.sdkDispatcher,
- userDispatcher = dispatchers.userDispatcher;
- disconnectSdk({
- sdkDispatcher: sdkDispatcher,
- userDispatcher: userDispatcher,
- sdk: sdk,
- logger: logger,
- onDisconnect: function onDisconnect() {
- logger.info('Setup connection');
- sdkDispatcher({
- type: SET_SDK_LOADING,
- payload: true
- });
-
- if (userId && appId) {
- var newSdk = new Sb({
- appId: appId
- }); // to check if code is released version from rollup and *not from storybook*
- // see rollup config file
-
- {
- newSdk.addExtension('sb_uikit', APP_VERSION_STRING);
- }
-
- var connectCbSucess = function connectCbSucess(user) {
- sdkDispatcher({
- type: INIT_SDK,
- payload: newSdk
- });
- userDispatcher({
- type: INIT_USER,
- payload: user
- }); // use nickname/profileUrl if provided
- // or set userID as nickname
-
- var newNickName = nickname || user.nickname;
- var newProfileUrl = profileUrl || user.profileUrl;
- newSdk.updateCurrentUserInfo(newNickName, newProfileUrl).then(function (namedUser) {
- userDispatcher({
- type: UPDATE_USER_INFO,
- payload: namedUser
- });
- });
- };
-
- var connectCbError = function connectCbError(e) {
- logger.error('Connection failed', "".concat(e));
- sdkDispatcher({
- type: RESET_SDK
- });
- sdkDispatcher({
- type: RESET_USER
- });
- sdkDispatcher({
- type: SDK_ERROR
- });
- };
-
- if (accessToken) {
- newSdk.connect(userId, accessToken).then(function (res) {
- return connectCbSucess(res);
- }).catch(function (err) {
- return connectCbError(err);
- });
- } else {
- newSdk.connect(userId).then(function (res) {
- return connectCbSucess(res);
- }).catch(function (err) {
- return connectCbError(err);
- });
- }
- } else {
- sdkDispatcher({
- type: SDK_ERROR
- });
- logger.warning('Connection failed', 'UserId or appId missing');
- }
- }
- });
-};
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-
-var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
-};
-
-function __spreadArrays() {
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
- r[k] = a[j];
- return r;
-}
-
-var isEmpty = function isEmpty(obj) {
- if (obj === null || obj === undefined) {
- return true;
- }
-
- for (var prop in obj) {
- if (obj.hasOwnProperty(prop)) {
- return false;
- }
- }
-
- return JSON.stringify(obj) === JSON.stringify({});
-};
-
-var useTheme = function useTheme(overrides) {
- React.useLayoutEffect(function () {
- if (!isEmpty(overrides)) {
- cssVars({
- variables: __assign({
- '--sendbird-dark-primary-500': '#4d2aa6',
- '--sendbird-dark-primary-400': '#6440C4',
- '--sendbird-dark-primary-300': '#7B53EF',
- '--sendbird-dark-primary-200': '#9E8CF5',
- '--sendbird-dark-primary-100': '#E2DFFF',
- '--sendbird-dark-secondary-500': '#007A7A',
- '--sendbird-dark-secondary-400': '#189A8D',
- '--sendbird-dark-secondary-300': '#2EBA9F',
- '--sendbird-dark-secondary-200': '#6FD6BE',
- '--sendbird-dark-secondary-100': '#AEF2DC',
- '--sendbird-dark-information-100': '#b2d9ff',
- '--sendbird-dark-error-500': '#A30E2D',
- '--sendbird-dark-error-400': '#C11F41',
- '--sendbird-dark-error-300': '#E53157',
- '--sendbird-dark-error-200': '#FF6183',
- '--sendbird-dark-error-100': '#FFABBD',
- '--sendbird-dark-background-700': '#000000',
- '--sendbird-dark-background-600': '#161616',
- '--sendbird-dark-background-500': '#2C2C2C',
- '--sendbird-dark-background-400': '#393939',
- '--sendbird-dark-background-300': '#A8A8A8',
- '--sendbird-dark-background-200': '#D9D9D9',
- '--sendbird-dark-background-100': '#F0F0F0',
- '--sendbird-dark-background-50': '#FFFFFF',
- '--sendbird-dark-overlay': 'rgba(0, 0, 0, 0.32)',
- '--sendbird-dark-onlight-01': 'rgba(0, 0, 0, 0.88)',
- '--sendbird-dark-onlight-02': 'rgba(0, 0, 0, 0.50)',
- '--sendbird-dark-onlight-03': 'rgba(0, 0, 0, 0.38)',
- '--sendbird-dark-onlight-04': 'rgba(0, 0, 0, 0.12)',
- '--sendbird-dark-ondark-01': 'rgba(255, 255, 255, 0.88)',
- '--sendbird-dark-ondark-02': 'rgba(255, 255, 255, 0.50)',
- '--sendbird-dark-ondark-03': 'rgba(255, 255, 255, 0.38)',
- '--sendbird-dark-ondark-04': 'rgba(255, 255, 255, 0.12)',
- '--sendbird-dark-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',
- '--sendbird-dark-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',
- '--sendbird-dark-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',
- '--sendbird-dark-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',
- '--sendbird-dark-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',
- '--sendbird-light-primary-500': '#4d2aa6',
- '--sendbird-light-primary-400': '#6440C4',
- '--sendbird-light-primary-300': '#7B53EF',
- '--sendbird-light-primary-200': '#9E8CF5',
- '--sendbird-light-primary-100': '#E2DFFF',
- '--sendbird-light-secondary-500': '#007A7A',
- '--sendbird-light-secondary-400': '#189A8D',
- '--sendbird-light-secondary-300': '#2EBA9F',
- '--sendbird-light-secondary-200': '#6FD6BE',
- '--sendbird-light-secondary-100': '#AEF2DC',
- '--sendbird-light-information-100': '#b2d9ff',
- '--sendbird-light-error-500': '#A30E2D',
- '--sendbird-light-error-400': '#C11F41',
- '--sendbird-light-error-300': '#E53157',
- '--sendbird-light-error-200': '#FF6183',
- '--sendbird-light-error-100': '#FFABBD',
- '--sendbird-light-background-700': '#000000',
- '--sendbird-light-background-600': '#161616',
- '--sendbird-light-background-500': '#2C2C2C',
- '--sendbird-light-background-400': '#393939',
- '--sendbird-light-background-300': '#A8A8A8',
- '--sendbird-light-background-200': '#D9D9D9',
- '--sendbird-light-background-100': '#F0F0F0',
- '--sendbird-light-background-50': ' #FFFFFF',
- '--sendbird-light-overlay': 'rgba(0, 0, 0, 0.32)',
- '--sendbird-light-onlight-01': 'rgba(0, 0, 0, 0.88)',
- '--sendbird-light-onlight-02': 'rgba(0, 0, 0, 0.50)',
- '--sendbird-light-onlight-03': 'rgba(0, 0, 0, 0.38)',
- '--sendbird-light-onlight-04': 'rgba(0, 0, 0, 0.12)',
- '--sendbird-light-ondark-01': 'rgba(255, 255, 255, 0.88)',
- '--sendbird-light-ondark-02': 'rgba(255, 255, 255, 0.50)',
- '--sendbird-light-ondark-03': 'rgba(255, 255, 255, 0.38)',
- '--sendbird-light-ondark-04': 'rgba(255, 255, 255, 0.12)',
- '--sendbird-light-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',
- '--sendbird-light-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',
- '--sendbird-light-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',
- '--sendbird-light-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',
- '--sendbird-light-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',
- '--sendbird-light-theme-surface-2': '#EAEAEA'
- }, overrides)
- });
- }
- }, [overrides]);
-};
-
-var sdkInitialState = {
- initialized: false,
- loading: false,
- sdk: {},
- error: false
-};
-
-function reducer(state, action) {
- switch (action.type) {
- case SET_SDK_LOADING:
- return _objectSpread2({}, state, {
- initialized: false,
- loading: action.payload
- });
-
- case SDK_ERROR:
- return _objectSpread2({}, state, {
- initialized: false,
- loading: false,
- error: true
- });
-
- case INIT_SDK:
- return {
- sdk: action.payload,
- initialized: true,
- loading: false,
- error: false
- };
-
- case RESET_SDK:
- return sdkInitialState;
-
- default:
- return state;
- }
-}
-
-var userInitialState = {
- initialized: false,
- loading: false,
- user: {}
-};
-
-function reducer$1(state, action) {
- switch (action.type) {
- case INIT_USER:
- return {
- initialized: true,
- loading: false,
- user: action.payload
- };
-
- case RESET_USER:
- return userInitialState;
-
- case UPDATE_USER_INFO:
- return _objectSpread2({}, state, {
- user: action.payload
- });
-
- default:
- return state;
- }
-}
-
-/* eslint-disable no-bitwise */
-
-/* eslint-disable eqeqeq */
-
-/* eslint-disable no-mixed-operators */
-// https://stackoverflow.com/a/2117523
-// used mainly for dom key generation
-var uuidv4 = function uuidv4() {
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
- var r = Math.random() * 16 | 0;
- var v = c === 'x' ? r : r & 0x3 | 0x8;
- return v.toString(16);
- });
-};
-
-function useConnectionStatus(sdk, logger) {
- var _useState = React.useState(true),
- _useState2 = _slicedToArray(_useState, 2),
- isOnline = _useState2[0],
- setIsOnline = _useState2[1];
-
- React.useEffect(function () {
- var uniqueHandlerId = uuidv4();
- logger.warning('sdk changed', uniqueHandlerId);
- var handler;
-
- if (sdk && sdk.ConnectionHandler) {
- handler = new sdk.ConnectionHandler();
-
- handler.onReconnectStarted = function () {
- setIsOnline(false);
- logger.warning('onReconnectStarted', {
- isOnline: isOnline
- });
- };
-
- handler.onReconnectSucceeded = function () {
- setIsOnline(true);
- logger.warning('onReconnectSucceeded', {
- isOnline: isOnline
- });
- };
-
- handler.onReconnectFailed = function () {
- sdk.reconnect();
- logger.warning('onReconnectFailed');
- };
-
- logger.info('Added ConnectionHandler', uniqueHandlerId);
- sdk.addConnectionHandler(uniqueHandlerId, handler);
- }
-
- return function () {
- try {
- sdk.removeConnectionHandler(uniqueHandlerId);
- logger.info('Removed ConnectionHandler', uniqueHandlerId);
- } catch (_unused) {//
- }
- };
- }, [sdk]);
- React.useEffect(function () {
- var tryReconnect = function tryReconnect() {
- try {
- logger.warning('Try reconnecting SDK');
-
- if (sdk.getConnectionState() !== 'OPEN') {
- // connection is not broken yet
- sdk.reconnect();
- }
- } catch (_unused2) {//
- }
- }; // addEventListener version
-
-
- window.addEventListener('online', tryReconnect);
- return function () {
- window.removeEventListener('online', tryReconnect);
- };
- }, [sdk]); // add offline-class to body
-
- React.useEffect(function () {
- var body = document.querySelector('body');
-
- if (!isOnline) {
- try {
- body.classList.add('sendbird__offline');
- logger.info('Added class sendbird__offline to body');
- } catch (e) {//
- }
- } else {
- try {
- body.classList.remove('sendbird__offline');
- logger.info('Removed class sendbird__offline from body');
- } catch (e) {//
- }
- }
- }, [isOnline]);
- return isOnline;
-}
-
-var LOG_LEVELS = {
- DEBUG: 'debug',
- WARNING: 'warning',
- ERROR: 'error',
- INFO: 'info',
- ALL: 'all'
-};
-
-var colorLog = function colorLog(level) {
- switch (level) {
- case LOG_LEVELS.WARNING:
- return 'color: Orange';
-
- case LOG_LEVELS.ERROR:
- return 'color: Red';
-
- default:
- return 'color: Gray';
- }
-};
-
-var printLog = function printLog(_ref) {
- var level = _ref.level,
- title = _ref.title,
- _ref$description = _ref.description,
- description = _ref$description === void 0 ? '' : _ref$description;
- // eslint-disable-next-line no-console
- console.log("%c SendbirdUIKit | ".concat(level, " | ").concat(new Date().toISOString(), " | ").concat(title, " ").concat(description && '|'), colorLog(level), description);
-};
-var getDefaultLogger = function getDefaultLogger() {
- return {
- info: function info() {},
- error: function error() {},
- warning: function warning() {}
- };
-};
-var LoggerFactory = function LoggerFactory(lvl, customInterface) {
- var logInterface = customInterface || printLog;
- var lvlArray = Array.isArray(lvl) ? lvl : [lvl];
-
- var applyLog = function applyLog(lgLvl) {
- return function (title, description) {
- return logInterface({
- level: lgLvl,
- title: title,
- description: description
- });
- };
- };
-
- var logger = lvlArray.reduce(function (accumulator, currentLvl) {
- if (currentLvl === LOG_LEVELS.DEBUG || currentLvl === LOG_LEVELS.ALL) {
- return _objectSpread2({}, accumulator, {
- info: applyLog(LOG_LEVELS.INFO),
- error: applyLog(LOG_LEVELS.ERROR),
- warning: applyLog(LOG_LEVELS.WARNING)
- });
- }
-
- if (currentLvl === LOG_LEVELS.INFO) {
- return _objectSpread2({}, accumulator, {
- info: applyLog(LOG_LEVELS.INFO)
- });
- }
-
- if (currentLvl === LOG_LEVELS.ERROR) {
- return _objectSpread2({}, accumulator, {
- error: applyLog(LOG_LEVELS.ERROR)
- });
- }
-
- if (currentLvl === LOG_LEVELS.WARNING) {
- return _objectSpread2({}, accumulator, {
- warning: applyLog(LOG_LEVELS.WARNING)
- });
- }
-
- return _objectSpread2({}, accumulator);
- }, getDefaultLogger());
- return logger;
-};
-
-// https://davidwalsh.name/pubsub-javascript
-var pubSubFactory = (function () {
- var topics = {};
- var hOP = topics.hasOwnProperty;
- return {
- __getTopics: function __getTopics() {
- return topics;
- },
- subscribe: function subscribe(topic, listener) {
- // Create the topic's object if not yet created
- if (!hOP.call(topics, topic)) {
- topics[topic] = [];
- } // Add the listener to queue
-
-
- var index = topics[topic].push(listener) - 1; // Provide handle back for removal of topic
-
- return {
- remove: function remove() {
- delete topics[topic][index];
- }
- };
- },
- publish: function publish(topic, info) {
- // If the topic doesn't exist, or there's no listeners in queue, just leave
- if (!hOP.call(topics, topic)) {
- return;
- } // Cycle through topics queue, fire!
-
-
- topics[topic].forEach(function (item) {
- item(info !== undefined ? info : {});
- });
- }
- };
-});
-
-function useAppendDomNode() {
- var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
- var rootSelector = arguments.length > 1 ? arguments[1] : undefined;
- React.useEffect(function () {
- var root = document.querySelector(rootSelector);
- ids.forEach(function (id) {
- var elem = document.createElement('div');
- elem.setAttribute('id', id);
- root.appendChild(elem);
- });
- return function () {
- ids.forEach(function (id) {
- var target = document.getElementById(id);
-
- if (target) {
- root.removeChild(target);
- }
- });
- };
- }, []);
-}
-
-var getStringSet = function getStringSet() {
- var lang = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
- var stringSet = {
- en: {
- TRYING_TO_CONNECT: 'Trying to connect…',
- USER_PROFILE__MESSAGE: 'Message',
- USER_PROFILE__USER_ID: 'User ID',
- EDIT_PROFILE__TITLE: 'My profile',
- EDIT_PROFILE__IMAGE_LABEL: 'Profile image',
- EDIT_PROFILE__IMAGE_UPLOAD: 'Upload',
- EDIT_PROFILE__NICKNAME_LABEL: 'Nickname',
- EDIT_PROFILE__NICKNAME_PLACEHOLDER: 'Enter your nickname',
- EDIT_PROFILE__USERID_LABEL: 'User ID',
- EDIT_PROFILE__THEME_LABEL: 'Dark theme',
- CHANNEL_LIST__TITLE: 'Channels',
- CHANNEL__MESSAGE_INPUT__PLACE_HOLDER: 'Enter message',
- CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED: 'Chat is unavailable in this channel',
- CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED: 'Chat is unavailable because you are being muted',
- CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE: 'new message(s) since',
- CHANNEL__MESSAGE_LIST__NOTIFICATION__ON: 'on',
- CHANNEL_SETTING__HEADER__TITLE: 'Channel information',
- CHANNEL_SETTING__PROFILE__EDIT: 'Edit',
- CHANNEL_SETTING__MEMBERS__TITLE: 'Members',
- CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS: 'All members',
- CHANNEL_SETTING__MEMBERS__INVITE_MEMBER: 'Invite users',
- CHANNEL_SETTING__LEAVE_CHANNEL__TITLE: 'Leave channel',
- CHANNEL_SETTING__OPERATORS__TITLE: 'Operators',
- CHANNEL_SETTING__OPERATORS__TITLE_ALL: 'All operators',
- CHANNEL_SETTING__OPERATORS__TITLE_ADD: 'Add operator',
- CHANNEL_SETTING__MUTED_MEMBERS__TITLE: 'Muted members',
- CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL: 'All muted members',
- CHANNEL_SETTING__BANNED_MEMBERS__TITLE: 'Banned members',
- CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL: 'All banned members',
- CHANNEL_SETTING__FREEZE_CHANNEL: 'Freeze Channel',
- BUTTON__CANCEL: 'Cancel',
- BUTTON__DELETE: 'Delete',
- BUTTON__SAVE: 'Save',
- BUTTON__CREATE: 'Create',
- BUTTON__INVITE: 'Invite',
- BUTTON__CLOSE: 'Close',
- BADGE__OVER: '+',
- MODAL__DELETE_MESSAGE__TITLE: 'Delete this message?',
- MODAL__CHANNEL_INFORMATION__TITLE: 'Edit channel information',
- MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE: 'Channel image',
- MODAL__CHANNEL_INFORMATION__UPLOAD: 'Upload',
- MODAL__CHANNEL_INFORMATION__CHANNEL_NAME: 'Channel name',
- MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER: 'Enter name',
- MODAL__INVITE_MEMBER__TITLE: 'Invite member',
- MODAL__INVITE_MEMBER__SELECTEC: 'selected',
- MODAL__CREATE_CHANNEL__TITLE: 'New channel',
- MODAL__CREATE_CHANNEL__SELECTED: 'selected',
- MODAL__USER_LIST__TITLE: 'members',
- TYPING_INDICATOR__IS_TYPING: 'is typing...',
- TYPING_INDICATOR__AND: 'and',
- TYPING_INDICATOR__ARE_TYPING: 'are typing...',
- TYPING_INDICATOR__MULTIPLE_TYPING: 'Several people are typing...',
- MESSAGE_STATUS__SENDING_FAILED: 'Couldn\'t send message.',
- MESSAGE_STATUS__TRY_AGAIN: 'Try again',
- MESSAGE_STATUS__OR: 'or',
- MESSAGE_STATUS__DELETE: 'delete',
- PLACE_HOLDER__NO_CHANNEL: 'No channels',
- CHANNEL_FROZEN: 'Channel frozen',
- MUTED_PL: 'Channel frozen',
- PLACE_HOLDER__WRONG: 'Something went wrong',
- PLACE_HOLDER__RETRY_TO_CONNECT: 'Retry',
- NO_TITLE: 'No title',
- NO_NAME: '(No name)',
- NO_MEMBERS: '(No members)',
- TOOLTIP__AND_YOU: ', and you',
- TOOLTIP__YOU: 'you',
- TOOLTIP__UNKOWN_USER: '(no name)',
- UNKNOWN__UNKNOWN_MESSAGE_TYPE: '(Unknown message type)',
- UNKNOWN__CANNOT_READ_MESSAGE: 'Cannot read this message.',
- MESSAGE_EDITED: '(edited)'
- }
- };
- return stringSet[lang];
-};
-
-var LocalizationContext = React__default.createContext({
- stringSet: getStringSet('en')
-});
-
-var LocalizationProvider = function LocalizationProvider(props) {
- var children = props.children;
- return React__default.createElement(LocalizationContext.Provider, {
- value: props
- }, children);
-};
-
-function Sendbird(props) {
- var userId = props.userId,
- appId = props.appId,
- accessToken = props.accessToken,
- children = props.children,
- disableUserProfile = props.disableUserProfile,
- renderUserProfile = props.renderUserProfile,
- allowProfileEdit = props.allowProfileEdit,
- theme = props.theme,
- nickname = props.nickname,
- profileUrl = props.profileUrl,
- userListQuery = props.userListQuery,
- _props$config = props.config,
- config = _props$config === void 0 ? {} : _props$config,
- colorSet = props.colorSet,
- stringSet = props.stringSet;
- var _config$logLevel = config.logLevel,
- logLevel = _config$logLevel === void 0 ? '' : _config$logLevel;
-
- var _useState = React.useState(LoggerFactory(logLevel)),
- _useState2 = _slicedToArray(_useState, 2),
- logger = _useState2[0],
- setLogger = _useState2[1];
-
- var _useState3 = React.useState(),
- _useState4 = _slicedToArray(_useState3, 2),
- pubSub = _useState4[0],
- setPubSub = _useState4[1];
-
- var _useReducer = React.useReducer(reducer, sdkInitialState),
- _useReducer2 = _slicedToArray(_useReducer, 2),
- sdkStore = _useReducer2[0],
- sdkDispatcher = _useReducer2[1];
-
- var _useReducer3 = React.useReducer(reducer$1, userInitialState),
- _useReducer4 = _slicedToArray(_useReducer3, 2),
- userStore = _useReducer4[0],
- userDispatcher = _useReducer4[1];
-
- useTheme(colorSet);
- React.useEffect(function () {
- setPubSub(pubSubFactory());
- }, []);
- React.useEffect(function () {
- logger.info('App Init'); // dispatch action
-
- handleConnection({
- userId: userId,
- appId: appId,
- accessToken: accessToken,
- sdkStore: sdkStore,
- nickname: nickname,
- profileUrl: profileUrl,
- sdk: sdkStore.sdk,
- logger: logger
- }, {
- sdkDispatcher: sdkDispatcher,
- userDispatcher: userDispatcher
- });
- }, [userId, appId, accessToken]); // to create a pubsub to communicate between parent and child
-
- React.useEffect(function () {
- setLogger(LoggerFactory(logLevel));
- }, [logLevel]);
- useAppendDomNode(['sendbird-modal-root', 'sendbird-dropdown-portal', 'sendbird-emoji-list-portal'], 'body'); // should move to reducer
-
- var _useState5 = React.useState(theme),
- _useState6 = _slicedToArray(_useState5, 2),
- currenttheme = _useState6[0],
- setCurrenttheme = _useState6[1];
-
- React.useEffect(function () {
- setCurrenttheme(theme);
- }, [theme]); // add-remove theme from body
-
- React.useEffect(function () {
- logger.info('Setup theme', "Theme: ".concat(currenttheme));
-
- try {
- var body = document.querySelector('body');
- body.classList.add("sendbird-theme--".concat(currenttheme || 'light'));
- logger.info('Finish setup theme'); // eslint-disable-next-line no-empty
- } catch (e) {
- logger.warning('Setup theme failed', "".concat(e));
- }
-
- return function () {
- try {
- var _body = document.querySelector('body');
-
- _body.classList.remove('sendbird-theme--light');
-
- _body.classList.remove('sendbird-theme--dark'); // eslint-disable-next-line no-empty
-
- } catch (_unused) {}
- };
- }, [currenttheme]);
- var isOnline = useConnectionStatus(sdkStore.sdk, logger);
- var localeStringSet = React__default.useMemo(function () {
- if (!stringSet) {
- return getStringSet('en');
- }
-
- return _objectSpread2({}, getStringSet('en'), {}, stringSet);
- }, [stringSet]);
- return React__default.createElement(SendbirdSdkContext.Provider, {
- value: {
- stores: {
- sdkStore: sdkStore,
- userStore: userStore
- },
- dispatchers: {
- sdkDispatcher: sdkDispatcher,
- userDispatcher: userDispatcher,
- reconnect: function reconnect() {
- handleConnection({
- userId: userId,
- appId: appId,
- accessToken: accessToken,
- sdkStore: sdkStore,
- nickname: nickname,
- profileUrl: profileUrl,
- logger: logger,
- sdk: sdkStore.sdk
- }, {
- sdkDispatcher: sdkDispatcher,
- userDispatcher: userDispatcher
- });
- }
- },
- config: {
- disableUserProfile: disableUserProfile,
- renderUserProfile: renderUserProfile,
- allowProfileEdit: allowProfileEdit,
- isOnline: isOnline,
- userId: userId,
- appId: appId,
- accessToken: accessToken,
- theme: currenttheme,
- setCurrenttheme: setCurrenttheme,
- userListQuery: userListQuery,
- logger: logger,
- pubSub: pubSub
- }
- }
- }, React__default.createElement(LocalizationProvider, {
- stringSet: localeStringSet
- }, children));
-}
-Sendbird.propTypes = {
- userId: PropTypes.string.isRequired,
- appId: PropTypes.string.isRequired,
- accessToken: PropTypes.string,
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
- theme: PropTypes.string,
- nickname: PropTypes.string,
- profileUrl: PropTypes.string,
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- allowProfileEdit: PropTypes.bool,
- userListQuery: PropTypes.func,
- config: PropTypes.shape({
- // None Error Warning Info 'All/Debug'
- logLevel: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- pubSub: PropTypes.shape({
- subscribe: PropTypes.func,
- publish: PropTypes.func
- })
- }),
- stringSet: PropTypes.objectOf(PropTypes.string),
- colorSet: PropTypes.objectOf(PropTypes.string)
-};
-Sendbird.defaultProps = {
- accessToken: '',
- theme: 'light',
- nickname: '',
- profileUrl: '',
- disableUserProfile: false,
- renderUserProfile: null,
- allowProfileEdit: false,
- userListQuery: null,
- config: {},
- stringSet: null,
- colorSet: null
-};
-
-var UserProfileContext = React__default.createContext({
- disableUserProfile: true,
- renderUserProfile: null
-});
-
-var UserProfileProvider = function UserProfileProvider(props) {
- var children = props.children,
- className = props.className;
- return React__default.createElement(UserProfileContext.Provider, {
- value: props
- }, React__default.createElement("div", {
- className: className
- }, children));
-};
-
-UserProfileProvider.propTypes = {
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
- // eslint-disable-next-line react/no-unused-prop-types
- disableUserProfile: PropTypes.bool,
- // eslint-disable-next-line react/no-unused-prop-types
- renderUserProfile: PropTypes.func,
- className: PropTypes.string
-};
-UserProfileProvider.defaultProps = {
- className: null,
- disableUserProfile: false,
- renderUserProfile: null
-};
-
-var RESET_CHANNEL_LIST = 'RESET_CHANNEL_LIST';
-var CREATE_CHANNEL = 'CREATE_CHANNEL';
-var LEAVE_CHANNEL_SUCCESS = 'LEAVE_CHANNEL_SUCCESS';
-var SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';
-var SHOW_CHANNEL_SETTINGS = 'SHOW_CHANNEL_SETTINGS';
-var HIDE_CHANNEL_SETTINGS = 'HIDE_CHANNEL_SETTINGS';
-var FETCH_CHANNELS_START = 'FETCH_CHANNELS_START';
-var FETCH_CHANNELS_SUCCESS = 'FETCH_CHANNELS_SUCCESS';
-var FETCH_CHANNELS_FAILURE = 'FETCH_CHANNELS_FAILURE';
-var INIT_CHANNELS_START = 'INIT_CHANNELS_START';
-var INIT_CHANNELS_SUCCESS = 'INIT_CHANNELS_SUCCESS';
-var INIT_CHANNELS_FAILURE = 'INIT_CHANNELS_FAILURE';
-var ON_USER_JOINED = 'ON_USER_JOINED';
-var ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';
-var ON_LAST_MESSAGE_UPDATED = 'ON_LAST_MESSAGE_UPDATED';
-var ON_USER_LEFT = 'ON_USER_LEFT';
-var ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';
-var ON_CHANNEL_ARCHIVED = 'ON_CHANNEL_ARCHIVED';
-var ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';
-var ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';
-var ON_READ_RECEIPT_UPDATED = 'ON_READ_RECEIPT_UPDATED';
-var ON_DELIVERY_RECEIPT_UPDATED = 'ON_DELIVERY_RECEIPT_UPDATED';
-var CHANNEL_REPLACED_TO_TOP = 'CHANNEL_REPLACED_TO_TOP';
-
-var channelListInitialState = {
- // we might not need this initialized state -> should remove
- initialized: false,
- loading: false,
- allChannels: [],
- currentChannel: null,
- showSettings: false
-};
-
-function reducer$2(state, action) {
- switch (action.type) {
- case INIT_CHANNELS_START:
- return _objectSpread2({}, state, {
- loading: true
- });
-
- case RESET_CHANNEL_LIST:
- return channelListInitialState;
-
- case INIT_CHANNELS_SUCCESS:
- return _objectSpread2({}, state, {
- initialized: true,
- loading: false,
- allChannels: action.payload,
- currentChannel: action.payload && action.payload.length && action.payload.length > 0 ? action.payload[0].url : null
- });
-
- case FETCH_CHANNELS_SUCCESS:
- {
- var currentChannels = state.allChannels.map(function (c) {
- return c.url;
- });
- var filteredChannels = action.payload.filter(function (_ref) {
- var url = _ref.url;
- return !currentChannels.find(function (c) {
- return c === url;
- });
- });
- return _objectSpread2({}, state, {
- allChannels: [].concat(_toConsumableArray(state.allChannels), _toConsumableArray(filteredChannels))
- });
- }
-
- case CREATE_CHANNEL:
- {
- return _objectSpread2({}, state, {
- allChannels: [action.payload].concat(_toConsumableArray(state.allChannels.filter(function (channel) {
- return channel.url !== action.payload.url;
- }))),
- currentChannel: action.payload.url
- });
- }
-
- case ON_CHANNEL_ARCHIVED:
- case LEAVE_CHANNEL_SUCCESS:
- case ON_CHANNEL_DELETED:
- {
- var channelUrl = action.payload;
- var leftCurrentChannel = state.currentChannel === channelUrl;
- var newAllChannels = state.allChannels.filter(function (_ref2) {
- var url = _ref2.url;
- return url !== channelUrl;
- });
- var currentChannel = leftCurrentChannel ? function () {
- return newAllChannels.length > 0 ? newAllChannels[0].url : '';
- }() : state.currentChannel;
- return _objectSpread2({}, state, {
- currentChannel: currentChannel,
- allChannels: newAllChannels
- });
- }
-
- case ON_USER_LEFT:
- {
- var _action$payload = action.payload,
- channel = _action$payload.channel,
- isMe = _action$payload.isMe;
- var url = channel.url;
-
- if (isMe) {
- var _leftCurrentChannel = url === state.currentChannel;
-
- var _newAllChannels2 = state.allChannels.filter(function (c) {
- return c.url !== url;
- });
-
- var _currentChannel = _leftCurrentChannel ? function () {
- return _newAllChannels2.length > 0 ? _newAllChannels2[0].url : '';
- }() : state.currentChannel;
-
- return _objectSpread2({}, state, {
- currentChannel: _currentChannel,
- allChannels: _newAllChannels2
- });
- } // other user left
-
-
- var _newAllChannels = state.allChannels.map(function (c) {
- return c.url === url ? channel : c;
- });
-
- return _objectSpread2({}, state, {
- allChannels: _newAllChannels
- });
- }
-
- case ON_USER_JOINED:
- case ON_CHANNEL_CHANGED:
- case ON_READ_RECEIPT_UPDATED:
- case ON_DELIVERY_RECEIPT_UPDATED:
- {
- var _state$allChannels = state.allChannels,
- allChannels = _state$allChannels === void 0 ? [] : _state$allChannels;
- var unreadMessageCount = action.payload.unreadMessageCount;
- var _channel = action.payload;
-
- if (!_channel.lastMessage) {
- return state;
- } // if its only an unread message count change, dont push to top
-
-
- if (unreadMessageCount === 0) {
- var _currentChannel2 = allChannels.find(function (_ref3) {
- var url = _ref3.url;
- return url === _channel.url;
- });
-
- var currentUnReadCount = _currentChannel2 && _currentChannel2.unreadMessageCount;
-
- if (currentUnReadCount === 0) {
- return _objectSpread2({}, state, {
- allChannels: allChannels.map(function (c) {
- if (c.url === _channel.url) {
- return _channel;
- }
-
- return c;
- })
- });
- }
- }
-
- return _objectSpread2({}, state, {
- allChannels: [action.payload].concat(_toConsumableArray(state.allChannels.filter(function (_ref4) {
- var url = _ref4.url;
- return url !== action.payload.url;
- })))
- });
- }
-
- case SET_CURRENT_CHANNEL:
- return _objectSpread2({}, state, {
- currentChannel: action.payload
- });
-
- case SHOW_CHANNEL_SETTINGS:
- return _objectSpread2({}, state, {
- showSettings: true
- });
-
- case HIDE_CHANNEL_SETTINGS:
- return _objectSpread2({}, state, {
- showSettings: false
- });
-
- case ON_LAST_MESSAGE_UPDATED:
- return _objectSpread2({}, state, {
- allChannels: state.allChannels.map(function (channel) {
- if (channel.url === action.payload.url) {
- return action.payload;
- }
-
- return channel;
- })
- });
-
- case ON_CHANNEL_FROZEN:
- return _objectSpread2({}, state, {
- allChannels: state.allChannels.map(function (channel) {
- if (channel.url === action.payload.url) {
- // eslint-disable-next-line no-param-reassign
- channel.isFrozen = true;
- return channel;
- }
-
- return channel;
- })
- });
-
- case ON_CHANNEL_UNFROZEN:
- return _objectSpread2({}, state, {
- allChannels: state.allChannels.map(function (channel) {
- if (channel.url === action.payload.url) {
- // eslint-disable-next-line no-param-reassign
- channel.isFrozen = false;
- return channel;
- }
-
- return channel;
- })
- });
-
- case CHANNEL_REPLACED_TO_TOP:
- return _objectSpread2({}, state, {
- allChannels: [action.payload].concat(_toConsumableArray(state.allChannels.filter(function (channel) {
- return channel.url !== action.payload.url;
- })))
- });
-
- default:
- return state;
- }
-}
-
-/*
- ImageRenderer displays image with url or source
- it checks if the source exist with img tag first
- if it exists onLoad is called, if not onError is called
- and those properties switch img tag to real purposing element
-*/
-
-function ImageRenderer(_ref) {
- var alt = _ref.alt,
- url = _ref.url,
- width = _ref.width,
- height = _ref.height,
- className = _ref.className,
- defaultComponent = _ref.defaultComponent,
- circle = _ref.circle;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift('sendbird-image-renderer');
-
- var _useState = React.useState(null),
- _useState2 = _slicedToArray(_useState, 2),
- realElement = _useState2[0],
- setRealElement = _useState2[1];
-
- React.useEffect(function () {
- setRealElement(null);
- }, [url]);
- return realElement || React__default.createElement("img", {
- className: "sendbird-image-renderer--hidden-placeholder",
- src: url,
- alt: alt,
- onError: function onError() {
- setRealElement(typeof defaultComponent === 'function' ? defaultComponent() : defaultComponent);
- },
- onLoad: function onLoad() {
- setRealElement(React__default.createElement("div", {
- className: injectingClassName.join(' '),
- style: {
- height: height,
- width: width,
- backgroundRepeat: 'no-repeat',
- backgroundPosition: 'center',
- backgroundSize: 'cover',
- backgroundImage: "url(".concat(url, ")"),
- borderRadius: circle ? '50%' : null
- }
- }));
- }
- });
-}
-ImageRenderer.propTypes = {
- alt: PropTypes.string,
- url: PropTypes.string.isRequired,
- width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
- height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
- className: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),
- defaultComponent: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired,
- circle: PropTypes.bool
-};
-ImageRenderer.defaultProps = {
- alt: '',
- className: '',
- circle: false
-};
-
-var Type = {
- ADD: 'ADD',
- ATTACH: 'ATTACH',
- ARROW_LEFT: 'ARROW_LEFT',
- AVATAR_DARK: 'AVATAR_DARK',
- AVATAR_LIGHT: 'AVATAR_LIGHT',
- BROADCAST_LARGE_DARK: 'BROADCAST_LARGE_DARK',
- BROADCAST_LARGE_LIGHT: 'BROADCAST_LARGE_LIGHT',
- BROADCAST_DARK: 'BROADCAST_DARK',
- BROADCAST_LIGHT: 'BROADCAST_LIGHT',
- BROADCAST: 'BROADCAST',
- FROZEN_DARK: 'FROZEN_DARK',
- FROZEN_LIGHT: 'FROZEN_LIGHT',
- CAMERA: 'CAMERA',
- MORE: 'MORE',
- MUTE: 'MUTE',
- NO_THUMBNAIL: 'NO_THUMBNAIL',
- CHECKBOX: 'CHECKBOX',
- CHECKBOX_OFF: 'CHECKBOX_OFF',
- CLOSE: 'CLOSE',
- COPY: 'COPY',
- CHAT: 'CHAT',
- CREATE: 'CREATE',
- DELETE: 'DELETE',
- DISCONNECTED: 'DISCONNECTED',
- DUMMY: 'DUMMY',
- EDIT: 'EDIT',
- ERROR: 'ERROR',
- ERROR_FILLED: 'ERROR_FILLED',
- EMOJI_FAILED: 'EMOJI_FAILED',
- EMOJI_REACTIONS_ADD: 'EMOJI_REACTIONS_ADD',
- EMOJI_REACTIONS_ADD_GRAY: 'EMOJI_REACTIONS_ADD_GRAY',
- DELIVERED: 'DELIVERED',
- DOCUMENT: 'DOCUMENT',
- DOWNLOAD: 'DOWNLOAD',
- FILE_AUDIO: 'FILE_AUDIO',
- FILE_DOCUMENT: 'FILE_DOCUMENT',
- GIF: 'GIF',
- INFO: 'INFO',
- LEAVE: 'LEAVE',
- MEMBERS: 'MEMBERS',
- NOTIFICATIONS: 'NOTIFICATIONS',
- PHOTO: 'PHOTO',
- PLAY: 'PLAY',
- PLUS: 'PLUS',
- READ: 'READ',
- REFRESH: 'REFRESH',
- SEND: 'SEND',
- SENT: 'SENT',
- SUPER_GROUP: 'SUPER_GROUP',
- SHEVRON: 'SHEVRON',
- SHEVRON_DOWN: 'SHEVRON_DOWN',
- SPINNER: 'SPINNER',
- SPINNER_LARGE: 'SPINNER_LARGE',
- USER: 'USER',
- ICON_OPERATOR: 'ICON_OPERATOR',
- ICON_BANNED: 'ICON_BANNED',
- ICON_FREEZE: 'ICON_FREEZE',
- ICON_MUTED: 'ICON_MUTED',
- ICON_MUTED_FG: 'ICON_MUTED_FG',
- TOGGLE_ON: 'TOGGLE_ON',
- TOGGLE_OFF: 'TOGGLE_OFF'
-};
-
-function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
-
-var _ref =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-add_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M19 2a3 3 0 013 3v14a3 3 0 01-3 3H5a3 3 0 01-3-3V5a3 3 0 013-3zm0 2H5a1 1 0 00-1 1v14a1 1 0 001 1h14a1 1 0 001-1V5a1 1 0 00-1-1zm-7 3a1 1 0 01.993.883L13 8v3h3a1 1 0 01.117 1.993L16 13h-3v3a1 1 0 01-1.993.117L11 16v-3H8a1 1 0 01-.117-1.993L8 11h3V8a1 1 0 011-1z"
-});
-
-function SvgIconAdd(props) {
- return React__default.createElement("svg", _extends({
- viewBox: "0 0 24 24"
- }, props), _ref);
-}
-
-function _extends$1() { _extends$1 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }
-
-var _ref$1 =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-attach_svg__fill",
- fillOpacity: 0.88,
- fillRule: "evenodd",
- d: "M19.021 9.943l-8.424 8.023c-1.795 1.71-4.723 1.71-6.518 0-1.77-1.685-1.77-4.398 0-6.084l8.424-8.023c1.079-1.027 2.845-1.027 3.924 0a2.461 2.461 0 010 3.614l-8.433 8.022a.984.984 0 01-1.33 0 .772.772 0 010-1.142l7.782-7.403a.917.917 0 00-1.264-1.328L5.4 13.025a2.605 2.605 0 000 3.798 2.816 2.816 0 003.858 0l8.433-8.022a4.294 4.294 0 000-6.27C15.905.83 13.025.83 11.24 2.531l-8.425 8.023c-2.528 2.408-2.528 6.332 0 8.74 2.504 2.384 6.544 2.384 9.047 0l8.425-8.023a.917.917 0 10-1.265-1.328z"
-});
-
-function SvgIconAttach(props) {
- return React__default.createElement("svg", _extends$1({
- viewBox: "0 0 22 22"
- }, props), _ref$1);
-}
-
-function _extends$2() { _extends$2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$2.apply(this, arguments); }
-
-var _ref$2 =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-arrow-left_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12.707 3.293a1 1 0 01.083 1.32l-.083.094L6.415 11H21a1 1 0 01.117 1.993L21 13H6.415l6.292 6.293a1 1 0 01.083 1.32l-.083.094a1 1 0 01-1.32.083l-.094-.083-8-8a1 1 0 01-.083-1.32l.083-.094 8-8a1 1 0 011.414 0z"
-});
-
-function SvgIconArrowLeft(props) {
- return React__default.createElement("svg", _extends$2({
- viewBox: "0 0 24 24"
- }, props), _ref$2);
-}
-
-function _extends$3() { _extends$3 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3.apply(this, arguments); }
-
-var _ref$3 =
-/*#__PURE__*/
-React__default.createElement("path", {
- fill: "#393939",
- d: "M0 0h56v56H0z"
-});
-
-var _ref2 =
-/*#__PURE__*/
-React__default.createElement("path", {
- fillOpacity: 0.88,
- d: "M34.667 31.333a8.334 8.334 0 018.325 7.972l.008.362V43a1.667 1.667 0 01-3.322.194L39.667 43v-3.333a5 5 0 00-4.707-4.992l-.293-.008H21.333a5 5 0 00-4.991 4.706l-.009.294V43a1.667 1.667 0 01-3.322.194L13 43v-3.333a8.333 8.333 0 017.972-8.326l.361-.008h13.334zm-6.667-20A8.333 8.333 0 1128 28a8.333 8.333 0 010-16.667zm0 3.334a5 5 0 100 10 5 5 0 000-10z"
-});
-
-function SvgIconAvatarDark(props) {
- return React__default.createElement("svg", _extends$3({
- viewBox: "0 0 56 56"
- }, props), _ref$3, _ref2);
-}
-
-function _extends$4() { _extends$4 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$4.apply(this, arguments); }
-
-var _ref$4 =
-/*#__PURE__*/
-React__default.createElement("path", {
- fill: "#A8A8A8",
- d: "M0 0h56v56H0z"
-});
-
-var _ref2$1 =
-/*#__PURE__*/
-React__default.createElement("path", {
- fill: "#FFF",
- fillOpacity: 0.88,
- d: "M34.667 31.333a8.334 8.334 0 018.325 7.972l.008.362V43a1.667 1.667 0 01-3.322.194L39.667 43v-3.333a5 5 0 00-4.707-4.992l-.293-.008H21.333a5 5 0 00-4.991 4.706l-.009.294V43a1.667 1.667 0 01-3.322.194L13 43v-3.333a8.333 8.333 0 017.972-8.326l.361-.008h13.334zm-6.667-20A8.333 8.333 0 1128 28a8.333 8.333 0 010-16.667zm0 3.334a5 5 0 100 10 5 5 0 000-10z"
-});
-
-function SvgIconAvatarLight(props) {
- return React__default.createElement("svg", _extends$4({
- viewBox: "0 0 56 56"
- }, props), _ref$4, _ref2$1);
-}
-
-function _extends$5() { _extends$5 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$5.apply(this, arguments); }
-
-var _ref$5 =
-/*#__PURE__*/
-React__default.createElement("g", {
- className: "icon-broadcast-lrg-dark_svg__fill",
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("circle", {
- cx: 28,
- cy: 28,
- r: 28,
- fill: "#6FD6BE"
-}), React__default.createElement("path", {
- fill: "#000",
- fillOpacity: 0.88,
- d: "M41.273 16.083c.04.128.06.262.06.397v23.04a1.333 1.333 0 01-1.731 1.273l-8.975-2.805A5.335 5.335 0 0120 37.333v-2.666h-2.667a4 4 0 01-3.995-3.8l-.005-.2v-5.334a4 4 0 014-4H20l19.602-6.125a1.332 1.332 0 011.67.875zM22.667 35.627v1.706a2.667 2.667 0 005.326.199l.007-.239-5.333-1.666zm16-17.334l-16 4.999v9.415l16 4.998V18.293zM20 24h-2.667c-.683 0-1.247.515-1.324 1.178l-.009.155v5.334c0 .736.597 1.333 1.333 1.333H20v-8z"
-}));
-
-function SvgIconBroadcastLrgDark(props) {
- return React__default.createElement("svg", _extends$5({
- viewBox: "0 0 56 56"
- }, props), _ref$5);
-}
-
-function _extends$6() { _extends$6 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$6.apply(this, arguments); }
-
-var _ref$6 =
-/*#__PURE__*/
-React__default.createElement("g", {
- className: "icon-broadcast-lrg-light_svg__fill",
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("circle", {
- cx: 28,
- cy: 28,
- r: 28,
- fill: "#2EBA9F"
-}), React__default.createElement("path", {
- fill: "#FFF",
- fillOpacity: 0.88,
- d: "M41.273 16.083c.04.128.06.262.06.397v23.04a1.333 1.333 0 01-1.731 1.273l-8.975-2.805A5.335 5.335 0 0120 37.333v-2.666h-2.667a4 4 0 01-3.995-3.8l-.005-.2v-5.334a4 4 0 014-4H20l19.602-6.125a1.332 1.332 0 011.67.875zM22.667 35.627v1.706a2.667 2.667 0 005.326.199l.007-.239-5.333-1.666zm16-17.334l-16 4.999v9.415l16 4.998V18.293zM20 24h-2.667c-.683 0-1.247.515-1.324 1.178l-.009.155v5.334c0 .736.597 1.333 1.333 1.333H20v-8z"
-}));
-
-function SvgIconBroadcastLrgLight(props) {
- return React__default.createElement("svg", _extends$6({
- viewBox: "0 0 56 56"
- }, props), _ref$6);
-}
-
-function _extends$7() { _extends$7 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$7.apply(this, arguments); }
-
-var _ref$7 =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-broadcast-dark_svg__fill",
- fill: "#6FD6BE",
- fillRule: "evenodd",
- d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
-});
-
-function SvgIconBroadcastDark(props) {
- return React__default.createElement("svg", _extends$7({
- viewBox: "0 0 16 16"
- }, props), _ref$7);
-}
-
-function _extends$8() { _extends$8 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$8.apply(this, arguments); }
-
-var _ref$8 =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-broadcast-light_svg__fill",
- fill: "#2EBA9F",
- fillRule: "evenodd",
- d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
-});
-
-function SvgIconBroadcastLight(props) {
- return React__default.createElement("svg", _extends$8({
- viewBox: "0 0 16 16"
- }, props), _ref$8);
-}
-
-function _extends$9() { _extends$9 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$9.apply(this, arguments); }
-
-var _ref$9 =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-broadcast_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M14.636 2.041c.02.065.03.132.03.2V13.76a.667.667 0 01-.865.637l-4.488-1.403A2.667 2.667 0 014 12.666v-1.334H2.667a2 2 0 01-1.995-1.85l-.005-.15V6.667a2 2 0 012-2H4l9.801-3.063a.666.666 0 01.835.437zm-9.303 9.772v.854a1.333 1.333 0 002.664.099l.003-.12-2.667-.833zm8-8.666l-8 2.499v4.707l8 2.5V3.147zM4 6H2.667a.668.668 0 00-.663.589L2 6.667v2.666c0 .369.298.667.667.667H4V6z"
-});
-
-function SvgIconBroadcast(props) {
- return React__default.createElement("svg", _extends$9({
- viewBox: "0 0 16 16"
- }, props), _ref$9);
-}
-
-function _extends$a() { _extends$a = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$a.apply(this, arguments); }
-
-var _ref$a =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "frozen-dark_svg__fill",
- fill: "#9E8CF5",
- fillRule: "evenodd",
- d: "M10.409.806l.063.056c.24.24.259.618.055.88l-.055.063-1.805 1.804v3.236l2.801-1.618.662-2.465a.665.665 0 011.304.263l-.016.082-.56 2.088 2.088.56a.665.665 0 01.488.734l-.016.082a.666.666 0 01-.735.488l-.082-.016-2.465-.661L9.334 8l2.801 1.618 2.466-.66.082-.017a.667.667 0 01.735.488l.016.082a.666.666 0 01-.488.734l-2.088.56.56 2.088.016.082a.666.666 0 01-1.304.263l-.662-2.465-2.801-1.618v3.236l1.805 1.804a.668.668 0 01-.88.999l-.063-.056L8 13.61l-1.528 1.53a.668.668 0 01-.88.055l-.063-.056a.668.668 0 01-.056-.88l.056-.063 1.804-1.805V9.155L4.53 10.773l-.66 2.465a.667.667 0 01-1.304-.263l.017-.082.559-2.088-2.088-.56a.667.667 0 01-.488-.734l.017-.082a.665.665 0 01.734-.488l.082.016 2.466.66L6.666 8 3.864 6.382l-2.465.66-.082.017a.666.666 0 01-.734-.488L.566 6.49a.667.667 0 01.488-.734l2.088-.56-.56-2.088-.016-.082a.667.667 0 011.305-.263l.659 2.465 2.803 1.618V3.61L5.529 1.805a.668.668 0 01.88-.999l.063.056L8 2.39 9.53.862a.668.668 0 01.88-.056z"
-});
-
-function SvgFrozenDark(props) {
- return React__default.createElement("svg", _extends$a({
- viewBox: "0 0 16 16"
- }, props), _ref$a);
-}
-
-function _extends$b() { _extends$b = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$b.apply(this, arguments); }
-
-var _ref$b =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "frozen-light_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M10.409.806l.063.056c.24.24.259.618.055.88l-.055.063-1.805 1.804v3.236l2.801-1.618.662-2.465a.665.665 0 011.304.263l-.016.082-.56 2.088 2.088.56a.665.665 0 01.488.734l-.016.082a.666.666 0 01-.735.488l-.082-.016-2.465-.661L9.334 8l2.801 1.618 2.466-.66.082-.017a.667.667 0 01.735.488l.016.082a.666.666 0 01-.488.734l-2.088.56.56 2.088.016.082a.666.666 0 01-1.304.263l-.662-2.465-2.801-1.618v3.236l1.805 1.804a.668.668 0 01-.88.999l-.063-.056L8 13.61l-1.528 1.53a.668.668 0 01-.88.055l-.063-.056a.668.668 0 01-.056-.88l.056-.063 1.804-1.805V9.155L4.53 10.773l-.66 2.465a.667.667 0 01-1.304-.263l.017-.082.559-2.088-2.088-.56a.667.667 0 01-.488-.734l.017-.082a.665.665 0 01.734-.488l.082.016 2.466.66L6.666 8 3.864 6.382l-2.465.66-.082.017a.666.666 0 01-.734-.488L.566 6.49a.667.667 0 01.488-.734l2.088-.56-.56-2.088-.016-.082a.667.667 0 011.305-.263l.659 2.465 2.803 1.618V3.61L5.529 1.805a.668.668 0 01.88-.999l.063.056L8 2.39 9.53.862a.668.668 0 01.88-.056z"
-});
-
-function SvgFrozenLight(props) {
- return React__default.createElement("svg", _extends$b({
- viewBox: "0 0 16 16"
- }, props), _ref$b);
-}
-
-function _extends$c() { _extends$c = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$c.apply(this, arguments); }
-
-var _ref$c =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-camera_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M15 2a1 1 0 01.832.445L17.535 5H21a3 3 0 012.995 2.824L24 8v11a3 3 0 01-3 3H3a3 3 0 01-3-3V8a3 3 0 013-3h3.464l1.704-2.555a1 1 0 01.708-.437L9 2zm-.536 2H9.535L7.832 6.555a1 1 0 01-.708.437L7 7H3a1 1 0 00-1 1v11a1 1 0 001 1h18a1 1 0 001-1V8a1 1 0 00-1-1h-4a1 1 0 01-.832-.445L14.464 4zM12 8a5 5 0 110 10 5 5 0 010-10zm0 2a3 3 0 100 6 3 3 0 000-6z"
-});
-
-function SvgIconCamera(props) {
- return React__default.createElement("svg", _extends$c({
- viewBox: "0 0 24 24"
- }, props), _ref$c);
-}
-
-function _extends$d() { _extends$d = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$d.apply(this, arguments); }
-
-var _ref$d =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-more_svg__fill",
- fillRule: "evenodd",
- d: "M12 17a2 2 0 110 4 2 2 0 010-4zm0-6.5a2 2 0 110 4 2 2 0 010-4zM12 4a2 2 0 110 4 2 2 0 010-4z"
-});
-
-function SvgIconMore(props) {
- return React__default.createElement("svg", _extends$d({
- viewBox: "0 0 24 24"
- }, props), _ref$d);
-}
-
-function _extends$e() { _extends$e = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$e.apply(this, arguments); }
-
-var _ref$e =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-mute_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M15.125 20.09c0 .602-.694 2.41-2.778 2.41-1.389 0-2.315-.804-2.778-2.41zM12.789 1.606a6.496 6.496 0 015.388 2.861l2.464-2.463a.788.788 0 011.025-.077l.088.077a.788.788 0 010 1.113L3.378 21.494a.788.788 0 01-1.025.077l-.088-.077a.788.788 0 010-1.113l1.9-1.903-.04-.004a.387.387 0 01-.241-.596l1.557-2.295.001-.208a545.875 545.875 0 00-.028-6.563l-.008-.614a6.503 6.503 0 016.414-6.59h.969zm6.381 5.246c.08.407.122.827.122 1.257l-.001 7.53 1.52 2.238a.387.387 0 01-.32.604H7.54l3.214-3.214 8.415-8.415z"
-});
-
-function SvgIconMute(props) {
- return React__default.createElement("svg", _extends$e({
- viewBox: "0 0 24 24"
- }, props), _ref$e);
-}
-
-function _extends$f() { _extends$f = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$f.apply(this, arguments); }
-
-var _ref$f =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-no-thumbnail_svg__fill",
- fillOpacity: 0.5,
- fillRule: "evenodd",
- d: "M30.333 4.667a2.333 2.333 0 110 4.666H11.667a2.334 2.334 0 00-2.334 2.334v32.666c0 1.001.63 1.855 1.516 2.186l24.834-24.836a2.336 2.336 0 013.3 0l7.684 7.683v-3.7c0-1.234.96-2.245 2.173-2.327l.16-.006a2.333 2.333 0 012.333 2.334v18.666a7 7 0 01-7 7H11.665a6.999 6.999 0 01-6.998-7V11.667a7 7 0 017-7zm7 21.966L17.3 46.666h27.034a2.333 2.333 0 002.328-2.173l.006-.16v-8.367l-9.334-9.333zM19.833 14a5.834 5.834 0 110 11.668 5.834 5.834 0 010-11.668zm0 4.667a1.166 1.166 0 100 2.332 1.166 1.166 0 000-2.332zm29.85-15.65a2.334 2.334 0 013.3 3.3L48.8 10.499l4.184 4.184c.87.87.91 2.256.119 3.173l-.119.127a2.334 2.334 0 01-3.3 0L45.5 13.8l-4.183 4.184c-.87.87-2.256.91-3.173.119l-.127-.119a2.334 2.334 0 010-3.3L42.2 10.5l-4.183-4.182a2.334 2.334 0 01-.119-3.173l.119-.127a2.334 2.334 0 013.3 0L45.5 7.2z"
-});
-
-function SvgIconNoThumbnail(props) {
- return React__default.createElement("svg", _extends$f({
- viewBox: "0 0 56 56"
- }, props), _ref$f);
-}
-
-function _extends$g() { _extends$g = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$g.apply(this, arguments); }
-
-var _ref$g =
-/*#__PURE__*/
-React__default.createElement("g", {
- className: "icon-checkbox_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd"
-}, React__default.createElement("path", {
- d: "M18 1H6a5 5 0 00-5 5v12a5 5 0 005 5h12a5 5 0 005-5V6a5 5 0 00-5-5zm0 2a3 3 0 013 3v12a3 3 0 01-3 3H6a3 3 0 01-3-3V6a3 3 0 013-3h12z"
-}), React__default.createElement("path", {
- d: "M19 3H5a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V5a2 2 0 00-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
-}));
-
-function SvgIconCheckbox(props) {
- return React__default.createElement("svg", _extends$g({
- viewBox: "0 0 24 24"
- }, props), _ref$g);
-}
-
-function _extends$h() { _extends$h = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$h.apply(this, arguments); }
-
-var _ref$h =
-/*#__PURE__*/
-React__default.createElement("g", {
- className: "icon-checkbox-off_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd"
-}, React__default.createElement("path", {
- d: "M18 1H6a5 5 0 00-5 5v12a5 5 0 005 5h12a5 5 0 005-5V6a5 5 0 00-5-5zm0 2a3 3 0 013 3v12a3 3 0 01-3 3H6a3 3 0 01-3-3V6a3 3 0 013-3h12z"
-}), React__default.createElement("path", {
- d: "M19 19H5V5h14v14zm0-16H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
-}));
-
-function SvgIconCheckboxOff(props) {
- return React__default.createElement("svg", _extends$h({
- viewBox: "0 0 24 24"
- }, props), _ref$h);
-}
-
-function _extends$i() { _extends$i = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$i.apply(this, arguments); }
-
-var _ref$i =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-close_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M6.613 5.21l.094.083L12 10.585l5.293-5.292a1 1 0 011.497 1.32l-.083.094L13.415 12l5.292 5.293a1 1 0 01-1.32 1.497l-.094-.083L12 13.415l-5.293 5.292a1 1 0 01-1.497-1.32l.083-.094L10.585 12 5.293 6.707a1 1 0 011.32-1.497z"
-});
-
-function SvgIconClose(props) {
- return React__default.createElement("svg", _extends$i({
- viewBox: "0 0 24 24"
- }, props), _ref$i);
-}
-
-function _extends$j() { _extends$j = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$j.apply(this, arguments); }
-
-var _ref$j =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-copy_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M20 8a3 3 0 013 3v9a3 3 0 01-3 3h-9a3 3 0 01-3-3v-9a3 3 0 013-3zm0 2h-9a1 1 0 00-1 1v9a1 1 0 001 1h9a1 1 0 001-1v-9a1 1 0 00-1-1zm-7-9a3 3 0 012.995 2.824L16 4v1a1 1 0 01-1.993.117L14 5V4a1 1 0 00-.883-.993L13 3H4a1 1 0 00-.993.883L3 4v9a1 1 0 00.883.993L4 14h1a1 1 0 01.117 1.993L5 16H4a3 3 0 01-2.995-2.824L1 13V4a3 3 0 012.824-2.995L4 1h9z"
-});
-
-function SvgIconCopy(props) {
- return React__default.createElement("svg", _extends$j({
- viewBox: "0 0 24 24"
- }, props), _ref$j);
-}
-
-function _extends$k() { _extends$k = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$k.apply(this, arguments); }
-
-var _ref$k =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-chat_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11c-1.67 0-3.255-.373-4.673-1.039l-.657.218c-2.237.716-3.8.964-4.69.742-1.049-.261-1.256-.72-.62-1.373.439-.524.805-1.178 1.097-1.963.234-.625.142-1.5-.276-2.625A10.933 10.933 0 011 12C1 5.925 5.925 1 12 1zm0 2a9 9 0 00-8.187 12.742l.152.314.051.101.04.107c.569 1.532.709 2.859.275 4.02l-.143.365-.072.162.088-.019a23.181 23.181 0 001.832-.511l.646-.213.765-.26.73.343A8.962 8.962 0 0012 21a9 9 0 000-18z"
-});
-
-function SvgIconChat(props) {
- return React__default.createElement("svg", _extends$k({
- viewBox: "0 0 24 24"
- }, props), _ref$k);
-}
-
-function _extends$l() { _extends$l = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$l.apply(this, arguments); }
-
-var _ref$l =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-supergroup_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M16.139 18.818c2.89 0 5.303 2.05 5.438 4.696l.006.235v1.626a1.166 1.166 0 01-2.326.136l-.007-.136v-1.626c0-1.343-1.255-2.501-2.903-2.592l-.208-.006H11.86c-1.679 0-3.001 1.105-3.105 2.431l-.006.167v1.626a1.166 1.166 0 01-2.325.136l-.008-.136v-1.626c0-2.68 2.329-4.806 5.19-4.926l.254-.005h4.278zm8.128-7.565c.116 0 .232.018.343.052 2.026.624 3.289 2.1 3.384 4.239l.006.26v5.6a1.166 1.166 0 01-2.325.136l-.008-.137v-5.599c-.001-1.135-.509-1.825-1.543-2.202l-.046-.016h-1.095c-.598 0-1.091-.45-1.158-1.03l-.008-.136c0-.598.45-1.092 1.03-1.159l.136-.008h1.284zm-19.25 0l.136.008c.58.067 1.03.56 1.03 1.159l-.008.136c-.067.58-.56 1.03-1.158 1.03H3.919l-.052.018c-.983.372-1.533 1.126-1.534 2.252v5.547l-.008.136A1.166 1.166 0 010 21.404v-5.548l.006-.259c.099-2.132 1.402-3.681 3.374-4.29.112-.035.228-.053.345-.053h1.292zM14 8.732c2.412 0 4.375 1.928 4.375 4.318 0 2.39-1.963 4.319-4.375 4.319S9.625 15.44 9.625 13.05c0-2.39 1.963-4.318 4.375-4.318zm0 2.333c-1.132 0-2.042.893-2.042 1.985s.91 1.986 2.042 1.986c1.132 0 2.042-.894 2.042-1.986s-.91-1.985-2.042-1.985zM7.583 1.167c2.412 0 4.375 1.929 4.375 4.318 0 2.39-1.963 4.32-4.375 4.32-2.411 0-4.375-1.93-4.375-4.32 0-2.39 1.964-4.318 4.375-4.318zm12.834 0c2.411 0 4.375 1.929 4.375 4.318 0 2.39-1.964 4.32-4.375 4.32-2.412 0-4.375-1.93-4.375-4.32 0-2.39 1.963-4.318 4.375-4.318zM7.583 3.5c-1.132 0-2.041.894-2.041 1.985 0 1.092.91 1.986 2.041 1.986 1.132 0 2.042-.894 2.042-1.986 0-1.091-.91-1.985-2.042-1.985zm12.834 0c-1.132 0-2.042.894-2.042 1.985 0 1.092.91 1.986 2.042 1.986 1.132 0 2.041-.894 2.041-1.986 0-1.091-.91-1.985-2.041-1.985z"
-});
-
-function SvgIconSupergroup(props) {
- return React__default.createElement("svg", _extends$l({
- viewBox: "0 0 28 28"
- }, props), _ref$l);
-}
-
-function _extends$m() { _extends$m = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$m.apply(this, arguments); }
-
-var _ref$m =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-create_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11c-1.67 0-3.255-.373-4.673-1.039l-.657.218c-2.237.716-3.8.964-4.69.742-1.049-.261-1.256-.72-.62-1.373.439-.524.805-1.178 1.097-1.963.234-.625.142-1.5-.276-2.625A10.933 10.933 0 011 12C1 5.925 5.925 1 12 1zm0 2a9 9 0 00-8.187 12.742l.152.314.051.101.04.107c.569 1.532.709 2.859.275 4.02l-.143.365-.072.162.088-.019a23.181 23.181 0 001.832-.511l.646-.213.765-.26.73.343A8.962 8.962 0 0012 21a9 9 0 000-18zm1 6v2h2c1.333 0 1.333 2 0 2h-2v2c0 1.333-2 1.333-2 0v-2H9c-1.333 0-1.333-2 0-2h2V9c0-1.333 2-1.333 2 0z"
-});
-
-function SvgIconCreate(props) {
- return React__default.createElement("svg", _extends$m({
- viewBox: "0 0 24 24"
- }, props), _ref$m);
-}
-
-function _extends$n() { _extends$n = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$n.apply(this, arguments); }
-
-var _ref$n =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-delete_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M14 1a3 3 0 012.995 2.824L17 4v1h4a1 1 0 01.117 1.993L21 7h-1v13a3 3 0 01-2.824 2.995L17 23H7a3 3 0 01-2.995-2.824L4 20V7H3a1 1 0 01-.117-1.993L3 5h4V4a3 3 0 012.824-2.995L10 1h4zm4 6H6v13a1 1 0 00.883.993L7 21h10a1 1 0 00.993-.883L18 20V7zm-8 3a1 1 0 01.993.883L11 11v6a1 1 0 01-1.993.117L9 17v-6a1 1 0 011-1zm4 0a1 1 0 01.993.883L15 11v6a1 1 0 01-1.993.117L13 17v-6a1 1 0 011-1zm0-7h-4a1 1 0 00-.993.883L9 4v1h6V4a1 1 0 00-.883-.993L14 3z"
-});
-
-function SvgIconDelete(props) {
- return React__default.createElement("svg", _extends$n({
- viewBox: "0 0 24 24"
- }, props), _ref$n);
-}
-
-function _extends$o() { _extends$o = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$o.apply(this, arguments); }
-
-var _ref$o =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-dummy_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
-});
-
-function SvgIconDummy(props) {
- return React__default.createElement("svg", _extends$o({
- viewBox: "0 0 24 24"
- }, props), _ref$o);
-}
-
-function _extends$p() { _extends$p = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$p.apply(this, arguments); }
-
-var _ref$p =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-edit_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M21.875 21.875a1.042 1.042 0 01.121 2.076l-.121.007H3.125a1.042 1.042 0 01-.121-2.076l.121-.007h18.75zM13.847 1.347a1.042 1.042 0 011.473 0l4.167 4.166a1.042 1.042 0 010 1.474L8.028 18.445c-.195.195-.46.305-.736.305H3.125a1.042 1.042 0 01-1.042-1.042v-4.166c0-.277.11-.542.305-.737zm.736 2.21L4.167 13.973v2.694h2.691L17.276 6.25l-2.693-2.693z"
-});
-
-function SvgIconEdit(props) {
- return React__default.createElement("svg", _extends$p({
- viewBox: "0 0 26 26"
- }, props), _ref$p);
-}
-
-function _extends$q() { _extends$q = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$q.apply(this, arguments); }
-
-var _ref$q =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-error_svg__fill",
- fill: "#E53157",
- fillRule: "evenodd",
- d: "M8 1.265c.655 0 1.266.32 1.64.856l.072.11 5.652 9.436c.355.615.357 1.373.006 1.99-.33.579-.925.953-1.59 1.004l-.133.006H2.346a2.001 2.001 0 01-1.772-2.883l.067-.127 5.649-9.43A2 2 0 018 1.266zm0 1.333a.669.669 0 00-.52.248l-.048.07-5.641 9.417a.669.669 0 00.477.994l.085.006H13.64a.664.664 0 00.612-.914l-.036-.076L8.57 2.919a.663.663 0 00-.57-.32zm0 8.069A.667.667 0 118 12a.667.667 0 010-1.333zm0-5.334c.342 0 .624.258.662.59L8.667 6v2.667a.667.667 0 01-1.329.077l-.005-.077V6c0-.368.299-.667.667-.667z"
-});
-
-function SvgIconError(props) {
- return React__default.createElement("svg", _extends$q({
- viewBox: "0 0 16 16"
- }, props), _ref$q);
-}
-
-function _extends$r() { _extends$r = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$r.apply(this, arguments); }
-
-var _ref$r =
-/*#__PURE__*/
-React__default.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("path", {
- className: "icon-error-filled_svg__fill",
- fill: "#E53157",
- d: "M10.281 4.18L1.77 17.85a1.87 1.87 0 00-.005 1.924c.353.597 1.01.968 1.724.976h17.024a2.024 2.024 0 001.724-.976 1.87 1.87 0 00-.005-1.924L13.719 4.18A2.028 2.028 0 0012 3.25a2.03 2.03 0 00-1.719.93z"
-}), React__default.createElement("path", {
- fill: "#FFF",
- fillRule: "nonzero",
- d: "M11.125 12.875V8.5c0-1.167 1.75-1.167 1.75 0v4.375c0 1.167-1.75 1.167-1.75 0zm0 3.5c0-1.167 1.75-1.167 1.75 0s-1.75 1.167-1.75 0z"
-}));
-
-function SvgIconErrorFilled(props) {
- return React__default.createElement("svg", _extends$r({
- viewBox: "0 0 24 24"
- }, props), _ref$r);
-}
-
-function _extends$s() { _extends$s = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$s.apply(this, arguments); }
-
-var _ref$s =
-/*#__PURE__*/
-React__default.createElement("g", {
- className: "emoji-fail_svg__fill",
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("rect", {
- width: 26.526,
- height: 26.526,
- x: 0.737,
- y: 0.737,
- fill: "#FFF",
- rx: 4
-}), React__default.createElement("path", {
- fill: "#000",
- fillOpacity: 0.12,
- d: "M14 23.456a9.457 9.457 0 11.001-18.913A9.457 9.457 0 0114 23.456zm0-1.72a7.736 7.736 0 100-15.473 7.737 7.737 0 000 15.474zm.714-6.005a.86.86 0 11-1.72 0v-.867a.86.86 0 01.588-.816 5.248 5.248 0 001.084-.544c.592-.395.907-.815.907-1.22a1.72 1.72 0 00-3.341-.574.86.86 0 11-1.622-.57 3.438 3.438 0 016.682 1.145c0 1.1-.651 1.969-1.672 2.65a6.81 6.81 0 01-.906.508v.288zm-1.72 2.425a.86.86 0 011.72 0v.142a.86.86 0 11-1.72 0V18.156z"
-}));
-
-function SvgEmojiFail(props) {
- return React__default.createElement("svg", _extends$s({
- viewBox: "0 0 28 28"
- }, props), _ref$s);
-}
-
-function _extends$t() { _extends$t = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$t.apply(this, arguments); }
-
-var _ref$t =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-reactions-add_svg__fill",
- fillOpacity: 0.88,
- fillRule: "evenodd",
- d: "M11.033 1.107a9.98 9.98 0 012.669.362.734.734 0 01-.393 1.413A8.466 8.466 0 002.567 11.04 8.466 8.466 0 1019.2 8.8a.736.736 0 01.514-.902.735.735 0 01.901.514c.233.85.352 1.731.352 2.628 0 5.486-4.448 9.933-9.934 9.933-5.486 0-9.933-4.447-9.933-9.933s4.447-9.933 9.933-9.933zm3.68 11.96c.5 0 .854.49.696.965-.644 1.933-2.385 3.261-4.376 3.261-1.99 0-3.732-1.328-4.375-3.261a.733.733 0 01.597-.959l.098-.006h7.36zm-1.195 1.466h-4.97l.101.131a3.115 3.115 0 002.012 1.14l.198.018.174.005c.868 0 1.672-.38 2.254-1.012l.13-.15.101-.132zM7.353 7.547c.374 0 .683.28.728.641l.006.092v1.84a.734.734 0 01-1.461.092l-.006-.092V8.28c0-.405.328-.733.733-.733zm7.36 0c.374 0 .683.28.728.641l.006.092v1.84a.734.734 0 01-1.461.092l-.006-.092V8.28c0-.405.328-.733.733-.733zM18.398 0c.405 0 .733.328.733.733v2.218h2.209a.734.734 0 010 1.467h-2.21v2.209a.732.732 0 11-1.466 0V4.418h-2.217a.734.734 0 110-1.466l2.216-.001.001-2.218c0-.405.328-.733.733-.733z"
-});
-
-function SvgIconReactionsAdd(props) {
- return React__default.createElement("svg", _extends$t({
- viewBox: "0 0 22 22"
- }, props), _ref$t);
-}
-
-function _extends$u() { _extends$u = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$u.apply(this, arguments); }
-
-var _ref$u =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-emoji-reactions-add_svg__fill",
- fillOpacity: 0.38,
- fillRule: "evenodd",
- d: "M10.03 1.006c.828 0 1.643.112 2.426.33a.666.666 0 11-.357 1.284 7.741 7.741 0 00-2.069-.28 7.697 7.697 0 107.697 7.696c0-.696-.092-1.379-.272-2.037a.667.667 0 011.287-.352c.21.773.319 1.574.319 2.39a9.03 9.03 0 01-9.03 9.03 9.03 9.03 0 11-.001-18.06zm3.346 10.873c.455 0 .776.445.632.877-.585 1.757-2.168 2.965-3.978 2.965s-3.392-1.208-3.978-2.965a.667.667 0 01.538-.87l.095-.007h6.69zm-1.087 1.333H7.771l.092.12c.46.563 1.103.938 1.813 1.033l.196.018.158.005c.784 0 1.512-.341 2.04-.91l.128-.147.091-.12zM6.685 6.86c.34 0 .62.254.661.583l.006.083V9.2a.667.667 0 01-1.329.084L6.018 9.2V7.527c0-.368.299-.666.667-.666zm6.69 0c.34 0 .621.254.662.583l.005.083V9.2a.667.667 0 01-1.328.084L12.71 9.2V7.527c0-.368.299-.666.667-.666zM16.726 0c.368 0 .667.298.667.667l-.001 2.016H19.4a.667.667 0 010 1.334l-2.01-.001.002 2.008a.667.667 0 01-1.334 0V4.016h-2.016a.666.666 0 110-1.333h2.016V.667c0-.369.299-.667.667-.667z"
-});
-
-function SvgIconEmojiReactionsAdd(props) {
- return React__default.createElement("svg", _extends$u({
- viewBox: "0 0 20 20"
- }, props), _ref$u);
-}
-
-function _extends$v() { _extends$v = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$v.apply(this, arguments); }
-
-var _ref$v =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-delivered_svg__fill",
- fillOpacity: 0.38,
- fillRule: "evenodd",
- d: "M2.207 11.793l5 5a1 1 0 01-1.414 1.414l-5-5a1 1 0 011.414-1.414zm19.586-6a1 1 0 011.414 1.414l-11 11a1 1 0 01-1.414 0l-5-5a1 1 0 011.414-1.414l4.293 4.293zm-3.586 0a1 1 0 010 1.414l-5.999 5.999a1 1 0 01-1.414-1.414l5.999-6a1 1 0 011.414 0z"
-});
-
-function SvgIconDelivered(props) {
- return React__default.createElement("svg", _extends$v({
- viewBox: "0 0 24 24"
- }, props), _ref$v);
-}
-
-function _extends$w() { _extends$w = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$w.apply(this, arguments); }
-
-var _ref$w =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-disconnected_svg__fill",
- fillRule: "evenodd",
- d: "M3.55 2.276l.093.081L10.9 9.615a.895.895 0 01.148.147l10.594 10.595a.91.91 0 01-1.193 1.367l-.093-.081-5.015-5.015a.913.913 0 01-.705-.15 4.545 4.545 0 00-5.265 0 .91.91 0 01-1.053-1.483 6.358 6.358 0 014.24-1.151l-2.529-2.53c-1.4.316-2.706.96-3.81 1.883a.91.91 0 01-1.167-1.394 10.854 10.854 0 013.504-1.962L6.445 7.728a13.518 13.518 0 00-3.461 2.226.909.909 0 01-1.204-1.362 15.38 15.38 0 013.299-2.229l-2.722-2.72A.91.91 0 013.55 2.276zm13.14 8.052c.812.397 1.572.894 2.262 1.479a.908.908 0 11-1.177 1.386 9.015 9.015 0 00-1.883-1.23.91.91 0 01.798-1.635zm5.53-1.737a.91.91 0 01-1.203 1.363A13.642 13.642 0 0010.9 6.588a.91.91 0 01-.146-1.813A15.457 15.457 0 0122.22 8.591z"
-});
-
-function SvgIconDisconnected(props) {
- return React__default.createElement("svg", _extends$w({
- viewBox: "0 0 24 24"
- }, props), _ref$w);
-}
-
-function _extends$x() { _extends$x = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$x.apply(this, arguments); }
-
-var _ref$x =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-document_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M14 1a1.01 1.01 0 01.25.031l.03.009c.03.009.061.02.091.031l.027.012a.914.914 0 01.195.112c.04.03.078.062.114.098l-.093-.082.011.009.082.073 6 6a1.006 1.006 0 01.21.309l.012.027c.012.03.022.06.031.091l.008.03A.921.921 0 0121 8l-.008-.126.001.01L21 8v12a3 3 0 01-3 3H6a3 3 0 01-3-3V4a3 3 0 013-3h8zm-1 2H6a1 1 0 00-1 1v16a1 1 0 001 1h12a1 1 0 001-1V9h-5a1 1 0 01-.993-.883L13 8V3zm4.585 4L15 4.415V7h2.585z"
-});
-
-function SvgIconDocument(props) {
- return React__default.createElement("svg", _extends$x({
- viewBox: "0 0 24 24"
- }, props), _ref$x);
-}
-
-function _extends$y() { _extends$y = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$y.apply(this, arguments); }
-
-var _ref$y =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-download_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M21 16a1 1 0 01.993.883L22 17v3a3 3 0 01-2.824 2.995L19 23H5a3 3 0 01-2.995-2.824L2 20v-3a1 1 0 011.993-.117L4 17v3a1 1 0 00.883.993L5 21h14a1 1 0 00.993-.883L20 20v-3a1 1 0 011-1zM12 1a1 1 0 01.993.883L13 2v11.585l2.293-2.292a1 1 0 011.32-.083l.094.083a1 1 0 01.083 1.32l-.083.094-4 4a1.006 1.006 0 01-.09.08l.09-.08a1.008 1.008 0 01-.674.292L12 17h-.032l-.054-.004L12 17a1.008 1.008 0 01-.613-.21 1.037 1.037 0 01-.094-.083l-4-4a1 1 0 011.32-1.497l.094.083L11 13.585V2a1 1 0 011-1z"
-});
-
-function SvgIconDownload(props) {
- return React__default.createElement("svg", _extends$y({
- viewBox: "0 0 24 24"
- }, props), _ref$y);
-}
-
-function _extends$z() { _extends$z = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$z.apply(this, arguments); }
-
-var _ref$z =
-/*#__PURE__*/
-React__default.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("rect", {
- fill: "#FFF",
- fillRule: "nonzero",
- rx: 10
-}), React__default.createElement("path", {
- className: "icon-file-audio_svg__fill",
- fill: "#7B53EF",
- d: "M18.815 9.185c2.913 2.934 2.913 7.696 0 10.63a.617.617 0 01-.894-.013.67.67 0 01.012-.925 6.215 6.215 0 000-8.754.67.67 0 01-.012-.925.617.617 0 01.894-.013zm-5.291 0a.646.646 0 011.044.517v9.596c0 .544-.62.85-1.044.516l-3.31-2.702H7.646A.65.65 0 017 16.458v-3.916a.65.65 0 01.647-.654h2.566zm2.886 2.42a4.113 4.113 0 010 5.783.617.617 0 01-.893-.012.67.67 0 01.012-.925 2.772 2.772 0 000-3.908.67.67 0 01-.012-.925.617.617 0 01.893-.013z"
-}));
-
-function SvgIconFileAudio(props) {
- return React__default.createElement("svg", _extends$z({
- viewBox: "0 0 28 28"
- }, props), _ref$z);
-}
-
-function _extends$A() { _extends$A = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$A.apply(this, arguments); }
-
-var _ref$A =
-/*#__PURE__*/
-React__default.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("rect", {
- fill: "#FFF",
- fillRule: "nonzero",
- rx: 10
-}), React__default.createElement("path", {
- className: "icon-file-document_svg__fill",
- fill: "#7B53EF",
- d: "M16.317 5.667H9.05C7.907 5.667 7 6.58 7 7.687v12.625c0 1.107.907 2.021 2.05 2.021h9.9c1.143 0 2.05-.914 2.05-2.02v-9.97a.673.673 0 00-.198-.473l-3.95-3.984a.753.753 0 00-.535-.22z"
-}), React__default.createElement("path", {
- fill: "#FFF",
- d: "M17.025 16.667c.354 0 .642.302.642.675 0 .372-.288.675-.642.675h-6.383c-.355 0-.642-.303-.642-.675 0-.373.287-.675.642-.675zm0-2.667c.354 0 .642.302.642.675 0 .373-.288.675-.642.675h-6.383c-.355 0-.642-.302-.642-.675 0-.373.287-.675.642-.675zm-3.357-2.667c.369 0 .668.303.668.675 0 .373-.3.675-.668.675h-3a.672.672 0 01-.668-.675c0-.372.3-.675.668-.675z"
-}));
-
-function SvgIconFileDocument(props) {
- return React__default.createElement("svg", _extends$A({
- viewBox: "0 0 28 28"
- }, props), _ref$A);
-}
-
-function _extends$B() { _extends$B = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$B.apply(this, arguments); }
-
-var _ref$B =
-/*#__PURE__*/
-React__default.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("circle", {
- cx: 28,
- cy: 28,
- r: 28,
- fill: "#FFF",
- fillOpacity: 0.88
-}), React__default.createElement("path", {
- className: "icon-gif_svg__fill",
- fill: "#000",
- fillOpacity: 0.55,
- d: "M20.608 35.182c1.094 0 2.09-.162 2.99-.487.899-.325 1.595-.783 2.087-1.372v-5.296h-5.223v2.015h2.489v2.287c-.438.438-1.17.657-2.197.657-1.02 0-1.796-.356-2.324-1.067-.529-.71-.793-1.762-.793-3.153v-.848c.006-1.38.252-2.418.738-3.117.486-.699 1.194-1.048 2.124-1.048.729 0 1.302.176 1.718.528.416.353.685.909.806 1.668h2.662c-.164-1.434-.69-2.526-1.577-3.276s-2.118-1.126-3.691-1.126c-1.13 0-2.116.257-2.958.77-.842.514-1.486 1.255-1.932 2.224-.447.97-.67 2.116-.67 3.44v.903c.012 1.288.253 2.41.724 3.363.471.954 1.14 1.682 2.006 2.183.865.502 1.873.752 3.021.752zm10.2-.182V21.73h-2.735V35h2.734zm5.268 0v-5.423h5.25V27.37h-5.25v-3.427h5.906v-2.215h-8.64V35h2.734z"
-}));
-
-function SvgIconGif(props) {
- return React__default.createElement("svg", _extends$B({
- viewBox: "0 0 56 56"
- }, props), _ref$B);
-}
-
-function _extends$C() { _extends$C = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$C.apply(this, arguments); }
-
-var _ref$C =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-info_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1zm0 2a9 9 0 100 18 9 9 0 000-18zm0 8a1 1 0 011 1v4a1 1 0 01-2 0v-4a1 1 0 011-1zm0-3a1 1 0 110 2 1 1 0 010-2z"
-});
-
-function SvgIconInfo(props) {
- return React__default.createElement("svg", _extends$C({
- viewBox: "0 0 24 24"
- }, props), _ref$C);
-}
-
-function _extends$D() { _extends$D = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$D.apply(this, arguments); }
-
-var _ref$D =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-leave_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 2a1 1 0 01.117 1.993L12 4H4a1 1 0 00-.993.883L3 5v14a1 1 0 00.883.993L4 20h8a1 1 0 01.117 1.993L12 22H4a3 3 0 01-2.995-2.824L1 19V5a3 3 0 012.824-2.995L4 2h8zm6.613 5.21l.094.083 4 4a1 1 0 01.083 1.32l-.083.094-4 4a1 1 0 01-1.497-1.32l.083-.094 1.792-1.793H7.5a1 1 0 01-.117-1.993L7.5 11.5h12.585l-2.792-2.793a1 1 0 01-.083-1.32l.083-.094a1 1 0 011.32-.083z"
-});
-
-function SvgIconLeave(props) {
- return React__default.createElement("svg", _extends$D({
- viewBox: "0 0 24 24"
- }, props), _ref$D);
-}
-
-function _extends$E() { _extends$E = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$E.apply(this, arguments); }
-
-var _ref$E =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-members_svg__fill",
- fillRule: "evenodd",
- d: "M13 14a5 5 0 014.995 4.783L18 19v2a1 1 0 01-1.993.117L16 21v-2a3 3 0 00-2.824-2.995L13 16H5a3 3 0 00-2.995 2.824L2 19v2a1 1 0 01-1.993.117L0 21v-2a5 5 0 014.783-4.995L5 14h8zm7.25.162a5 5 0 013.745 4.611L24 19v2a1 1 0 01-1.993.117L22 21v-2a3 3 0 00-2.25-2.902 1 1 0 11.5-1.936zM9 2a5 5 0 110 10A5 5 0 019 2zm7.248.161a5 5 0 010 9.688 1 1 0 01-.496-1.938 3 3 0 000-5.812 1 1 0 11.496-1.938zM9 4a3 3 0 100 6 3 3 0 000-6z"
-});
-
-function SvgIconMembers(props) {
- return React__default.createElement("svg", _extends$E({
- viewBox: "0 0 24 24"
- }, props), _ref$E);
-}
-
-function _extends$F() { _extends$F = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$F.apply(this, arguments); }
-
-var _ref$F =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-notifications_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M13.73 20a1 1 0 01.865 1.502 3 3 0 01-5.19 0 1 1 0 01.752-1.496L10.27 20h3.46zM12 1a8 8 0 017.996 7.75L20 9v5a2 2 0 001.85 1.995l.283.012c1.111.12 1.154 1.73.128 1.965l-.128.021L22 18H2l-.133-.007c-1.156-.124-1.156-1.862 0-1.986l.282-.012a2 2 0 001.845-1.838L4 14V9a8 8 0 018-8zm0 2a6 6 0 00-5.996 5.775L6 9v5c0 .586-.126 1.142-.352 1.643l-.103.212-.082.145h13.073l-.08-.145a3.973 3.973 0 01-.43-1.402l-.021-.253L18 14V9a6 6 0 00-6-6z"
-});
-
-function SvgIconNotifications(props) {
- return React__default.createElement("svg", _extends$F({
- viewBox: "0 0 24 24"
- }, props), _ref$F);
-}
-
-function _extends$G() { _extends$G = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$G.apply(this, arguments); }
-
-var _ref$G =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-photo_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M19 2a3 3 0 013 3v14a3 3 0 01-3 3H4.941v-.002l-.117-.003A3 3 0 012 19V5a3 3 0 013-3zm-3 9.415L7.414 20H19a1 1 0 00.993-.883L20 19v-3.585l-4-4zM19 4H5a1 1 0 00-1 1v14a1 1 0 00.65.937L15.292 9.293a1 1 0 011.32-.083l.094.083L20 12.585V5a1 1 0 00-.883-.993L19 4zM8.5 6a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm0 2a.5.5 0 100 1 .5.5 0 000-1z"
-});
-
-function SvgIconPhoto(props) {
- return React__default.createElement("svg", _extends$G({
- viewBox: "0 0 24 24"
- }, props), _ref$G);
-}
-
-function _extends$H() { _extends$H = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$H.apply(this, arguments); }
-
-var _ref$H =
-/*#__PURE__*/
-React__default.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("circle", {
- cx: 28,
- cy: 28,
- r: 28,
- fill: "#FFF",
- fillOpacity: 0.88
-}), React__default.createElement("path", {
- className: "icon-play_svg__fill",
- fill: "#000",
- fillOpacity: 0.55,
- d: "M38.91 29.987c1.009-.63 1.007-1.664.007-2.304l-17.29-11.055c-1.006-.643-1.809-.2-1.793 1.004l.277 21.891c.015 1.198.847 1.657 1.855 1.029L38.91 29.987z"
-}));
-
-function SvgIconPlay(props) {
- return React__default.createElement("svg", _extends$H({
- viewBox: "0 0 56 56"
- }, props), _ref$H);
-}
-
-function _extends$I() { _extends$I = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$I.apply(this, arguments); }
-
-var _ref$I =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-plus_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M13 11h7c1.333 0 1.333 2 0 2h-7v7c0 1.333-2 1.333-2 0v-7H4c-1.333 0-1.333-2 0-2h7V4c0-1.333 2-1.333 2 0v7z"
-});
-
-function SvgIconPlus(props) {
- return React__default.createElement("svg", _extends$I({
- viewBox: "0 0 24 24"
- }, props), _ref$I);
-}
-
-function _extends$J() { _extends$J = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$J.apply(this, arguments); }
-
-var _ref$J =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-read_svg__fill",
- fill: "#2EBA9F",
- fillRule: "evenodd",
- d: "M2.207 11.793l5 5a1 1 0 01-1.414 1.414l-5-5a1 1 0 011.414-1.414zm19.586-6a1 1 0 011.414 1.414l-11 11a1 1 0 01-1.414 0l-5-5a1 1 0 011.414-1.414l4.293 4.293zm-3.586 0a1 1 0 010 1.414l-5.999 5.999a1 1 0 01-1.414-1.414l5.999-6a1 1 0 011.414 0z"
-});
-
-function SvgIconRead(props) {
- return React__default.createElement("svg", _extends$J({
- viewBox: "0 0 24 24"
- }, props), _ref$J);
-}
-
-function _extends$K() { _extends$K = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$K.apply(this, arguments); }
-
-var _ref$K =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-refresh_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M14.419 4.51l.175.167 2.073 1.927V4.167c0-.428.321-.78.736-.828l.097-.006c.427 0 .78.322.828.736l.005.098v5c0 .427-.321.78-.736.827L17.5 10h-5a.833.833 0 01-.097-1.661l.097-.006h3.578L13.44 5.88a5.982 5.982 0 00-7.05-.986C4.083 6.15 2.898 8.756 3.48 11.286c.58 2.534 2.792 4.385 5.425 4.537 2.635.152 5.05-1.433 5.928-3.883a.833.833 0 011.569.561c-1.127 3.15-4.223 5.18-7.593 4.986-3.37-.195-6.206-2.57-6.954-5.828-.748-3.261.778-6.617 3.738-8.229 2.884-1.57 6.453-1.118 8.826 1.08z"
-});
-
-function SvgIconRefresh(props) {
- return React__default.createElement("svg", _extends$K({
- width: 20,
- height: 20
- }, props), _ref$K);
-}
-
-function _extends$L() { _extends$L = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$L.apply(this, arguments); }
-
-var _ref$L =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-send_svg__fill",
- fillRule: "evenodd",
- d: "M20.554 10.117L2.52 1.024C1.613.619.605 1.428 1.008 2.337l2.115 5.685a2 2 0 001.545 1.275l10.345 1.73-10.345 1.728a2 2 0 00-1.545 1.275l-2.115 5.685c-.302.91.605 1.718 1.511 1.213l18.035-9.094c.706-.303.706-1.313 0-1.717z"
-});
-
-function SvgIconSend(props) {
- return React__default.createElement("svg", _extends$L({
- viewBox: "0 0 22 22"
- }, props), _ref$L);
-}
-
-function _extends$M() { _extends$M = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$M.apply(this, arguments); }
-
-var _ref$M =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-sent_svg__fill",
- fillOpacity: 0.38,
- fillRule: "evenodd",
- d: "M4.707 11.793a1 1 0 10-1.414 1.414l5 5a1 1 0 001.414 0l11-11a1 1 0 10-1.414-1.414L9 16.086l-4.293-4.293z"
-});
-
-function SvgIconSent(props) {
- return React__default.createElement("svg", _extends$M({
- viewBox: "0 0 24 24"
- }, props), _ref$M);
-}
-
-function _extends$N() { _extends$N = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$N.apply(this, arguments); }
-
-var _ref$N =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-shevron_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M8.293 17.293a1 1 0 001.414 1.414l6-6a1 1 0 000-1.414l-6-6a1 1 0 00-1.414 1.414L13.586 12l-5.293 5.293z"
-});
-
-function SvgIconShevron(props) {
- return React__default.createElement("svg", _extends$N({
- viewBox: "0 0 24 24"
- }, props), _ref$N);
-}
-
-function _extends$O() { _extends$O = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$O.apply(this, arguments); }
-
-var _ref$O =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-shevron-down_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M6.045 8.205a1.125 1.125 0 10-1.59 1.59l6.75 6.75c.439.44 1.151.44 1.59 0l6.75-6.75a1.125 1.125 0 10-1.59-1.59L12 14.159 6.045 8.205z"
-});
-
-function SvgIconShevronDown(props) {
- return React__default.createElement("svg", _extends$O({
- viewBox: "0 0 24 24"
- }, props), _ref$O);
-}
-
-function _extends$P() { _extends$P = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$P.apply(this, arguments); }
-
-var _ref$P =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-spinner-small_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 22.5c5.799 0 10.5-4.701 10.5-10.5S17.799 1.5 12 1.5 1.5 6.201 1.5 12a1.432 1.432 0 002.864 0A7.636 7.636 0 1112 19.636a1.432 1.432 0 000 2.864z"
-});
-
-function SvgIconSpinnerSmall(props) {
- return React__default.createElement("svg", _extends$P({
- viewBox: "0 0 24 24"
- }, props), _ref$P);
-}
-
-function _extends$Q() { _extends$Q = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Q.apply(this, arguments); }
-
-var _ref$Q =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-spinner-large_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24a2.323 2.323 0 104.645 0C4.645 13.31 13.311 4.645 24 4.645c10.69 0 19.355 8.666 19.355 19.355 0 10.69-8.666 19.355-19.355 19.355A2.323 2.323 0 0024 48z"
-});
-
-function SvgIconSpinnerLarge(props) {
- return React__default.createElement("svg", _extends$Q({
- viewBox: "0 0 48 48"
- }, props), _ref$Q);
-}
-
-function _extends$R() { _extends$R = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$R.apply(this, arguments); }
-
-var _ref$R =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-user_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M16 14a5 5 0 014.995 4.783L21 19v2a1 1 0 01-1.993.117L19 21v-2a3 3 0 00-2.824-2.995L16 16H8a3 3 0 00-2.995 2.824L5 19v2a1 1 0 01-1.993.117L3 21v-2a5 5 0 014.783-4.995L8 14h8zM12 2a5 5 0 110 10 5 5 0 010-10zm0 2a3 3 0 100 6 3 3 0 000-6z"
-});
-
-function SvgIconUser(props) {
- return React__default.createElement("svg", _extends$R({
- viewBox: "0 0 24 24"
- }, props), _ref$R);
-}
-
-function _extends$S() { _extends$S = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$S.apply(this, arguments); }
-
-var _ref$S =
-/*#__PURE__*/
-React__default.createElement("g", {
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("path", {
- className: "icon-operator_svg__stroke",
- d: "M2 6l5 4 5-7 5 7 5-4-3 14H5z"
-}), React__default.createElement("circle", {
- className: "icon-operator_svg__fill",
- cx: 12,
- cy: 14,
- r: 2
-}));
-
-function SvgIconOperator(props) {
- return React__default.createElement("svg", _extends$S({
- viewBox: "0 0 24 24"
- }, props), _ref$S);
-}
-
-function _extends$T() { _extends$T = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$T.apply(this, arguments); }
-
-var _ref$T =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-banned_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1zm0 2a9 9 0 10.001 18.001A9 9 0 0012 3zm4 8a1 1 0 010 2H8a1 1 0 010-2h8z"
-});
-
-function SvgIconBanned(props) {
- return React__default.createElement("svg", _extends$T({
- viewBox: "0 0 24 24"
- }, props), _ref$T);
-}
-
-function _extends$U() { _extends$U = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$U.apply(this, arguments); }
-
-var _ref$U =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-muted_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M20.857 7.357l.026.045A9.96 9.96 0 0122 12a9.937 9.937 0 01-1.074 4.51c-.38 1.021-.463 1.817-.25 2.386.265.713.598 1.308.997 1.784.578.594.39 1.01-.565 1.249-.763.19-2.073 0-3.929-.571l-.333-.105-.598-.198A9.965 9.965 0 0112 22a9.952 9.952 0 01-4.622-1.13l-.022-.011 1.5-1.5c.982.42 2.046.641 3.144.641 1.073 0 2.114-.21 3.079-.613l.318-.142.722-.339 1.355.449.26.082c.228.07.445.133.65.19l.298.08.182.045-.063-.157-.075-.223c-.295-.974-.189-2.057.225-3.275l.1-.284.04-.107.198-.406A7.949 7.949 0 0020 12a7.97 7.97 0 00-.64-3.143l1.497-1.5zM12 2c2.401 0 4.604.846 6.328 2.257l1.965-1.964a1 1 0 011.497 1.32l-.083.094-18 18a1 1 0 01-1.497-1.32l.083-.094 1.963-1.965a9.956 9.956 0 01-2.25-5.998L2 12C2 6.477 6.477 2 12 2zm0 2a8 8 0 00-6.32 12.906L16.905 5.68a7.957 7.957 0 00-4.607-1.675L12 4z"
-});
-
-function SvgIconMuted(props) {
- return React__default.createElement("svg", _extends$U({
- viewBox: "0 0 24 24"
- }, props), _ref$U);
-}
-
-function _extends$V() { _extends$V = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$V.apply(this, arguments); }
-
-var _ref$V =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-muted-foreground_svg__fill",
- fill: "#FFF",
- fillOpacity: 0.88,
- fillRule: "evenodd",
- d: "M13.904 4.904l.018.03c.476.919.745 1.96.745 3.066a6.628 6.628 0 01-.716 3.006c-.253.682-.309 1.212-.168 1.591.178.476.4.872.666 1.19.385.396.26.674-.377.832-.503.125-1.361.003-2.576-.367l-.266-.083-.398-.132c-.86.404-1.82.63-2.832.63a6.632 6.632 0 01-3.082-.754l-.014-.007 1-1c.655.28 1.364.427 2.096.427a5.32 5.32 0 001.999-.386l.266-.117.481-.226.903.299.174.055c.152.047.296.089.433.126l.199.054.121.03-.042-.105-.05-.149c-.192-.635-.129-1.34.133-2.132l.084-.24.026-.071.132-.271a5.294 5.294 0 00.474-2.2c0-.732-.147-1.44-.427-2.096l.998-1zm.567-3.375c.24.24.26.618.056.88l-.056.062-12 12a.666.666 0 01-.998-.88l.056-.062 1.31-1.31a6.636 6.636 0 01-1.5-3.94L1.333 8A6.667 6.667 0 0112.22 2.838l1.309-1.31c.26-.26.682-.26.942 0zM8 2.667a5.332 5.332 0 00-4.213 8.603l7.484-7.484a5.32 5.32 0 00-3.006-1.113L8 2.667z"
-});
-
-function SvgIconMutedForeground(props) {
- return React__default.createElement("svg", _extends$V({
- viewBox: "0 0 16 16"
- }, props), _ref$V);
-}
-
-function _extends$W() { _extends$W = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$W.apply(this, arguments); }
-
-var _ref$W =
-/*#__PURE__*/
-React__default.createElement("path", {
- className: "icon-freeze_svg__fill",
- fill: "#7B53EF",
- fillRule: "evenodd",
- d: "M9.613 1.21l.095.083L12 3.585l2.293-2.292a1 1 0 011.32-.083l.095.083a1 1 0 01.083 1.32l-.083.094L13 5.414v4.853l4.203-2.427.992-3.697a1 1 0 011.957.395l-.025.123-.84 3.131 3.133.84c.492.132.8.61.732 1.102l-.025.123c-.132.492-.61.8-1.102.732l-.123-.025-3.698-.991L14.001 12l4.203 2.426 3.698-.99.123-.025c.492-.068.97.24 1.102.732l.025.123a1 1 0 01-.732 1.102l-3.133.839.84 3.132.025.123a1 1 0 01-1.957.395l-.992-3.698L13 13.732v4.853l2.708 2.708a1 1 0 01-1.32 1.497l-.095-.083L12 20.414l-2.292 2.293a1 1 0 01-1.32.083l-.095-.083a1 1 0 01-.083-1.32l.083-.094L11 18.585v-4.853l-4.203 2.427-.99 3.698a1.002 1.002 0 01-1.958-.395l.025-.123.839-3.131-3.132-.84c-.492-.132-.8-.61-.732-1.102l.025-.123c.132-.492.61-.8 1.102-.732l.123.025 3.697.99 4.203-2.427-4.203-2.426-3.697.991-.123.025c-.492.068-.97-.24-1.102-.732L.85 9.734a1 1 0 01.732-1.102l3.132-.84-.839-3.131-.025-.123a1 1 0 011.957-.395l.991 3.697L11 10.267V5.414L8.293 2.707a1 1 0 011.32-1.497z"
-});
-
-function SvgIconFreeze(props) {
- return React__default.createElement("svg", _extends$W({
- viewBox: "0 0 24 24"
- }, props), _ref$W);
-}
-
-function _extends$X() { _extends$X = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$X.apply(this, arguments); }
-
-var _ref$X =
-/*#__PURE__*/
-React__default.createElement("g", {
- className: "icon-toggleon_svg__fill",
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("rect", {
- width: 40,
- height: 20,
- x: 2,
- y: 2,
- fill: "#7B53EF",
- rx: 10
-}), React__default.createElement("circle", {
- cx: 32,
- cy: 12,
- r: 6,
- fill: "#FFF"
-}), React__default.createElement("path", {
- fill: "#7B53EF",
- d: "M32 0H12C5.373 0 0 5.373 0 12s5.373 12 12 12h20c6.627 0 12-5.373 12-12S38.627 0 32 0zm0 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20z"
-}));
-
-function SvgIconToggleon(props) {
- return React__default.createElement("svg", _extends$X({
- viewBox: "0 0 44 24"
- }, props), _ref$X);
-}
-
-function _extends$Y() { _extends$Y = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Y.apply(this, arguments); }
-
-var _ref$Y =
-/*#__PURE__*/
-React__default.createElement("g", {
- className: "icon-toggleoff_svg__fill",
- fill: "none",
- fillRule: "evenodd"
-}, React__default.createElement("rect", {
- width: 40,
- height: 20,
- x: 2,
- y: 2,
- fill: "#A8A8A8",
- rx: 10
-}), React__default.createElement("circle", {
- cx: 12,
- cy: 12,
- r: 6,
- fill: "#FFF"
-}), React__default.createElement("path", {
- fill: "#A8A8A8",
- d: "M32 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20zm0 1H12a9 9 0 00-.265 17.996L12 21h20a9 9 0 00.265-17.996L32 3z"
-}), React__default.createElement("path", {
- fill: "#FFF",
- d: "M32 0H12C5.373 0 0 5.373 0 12s5.373 12 12 12h20c6.627 0 12-5.373 12-12S38.627 0 32 0zm0 2c5.523 0 10 4.477 10 10s-4.477 10-10 10H12C6.477 22 2 17.523 2 12S6.477 2 12 2h20z"
-}));
-
-function SvgIconToggleoff(props) {
- return React__default.createElement("svg", _extends$Y({
- viewBox: "0 0 44 24"
- }, props), _ref$Y);
-}
-
-var Colors = {
- DEFAULT: 'DEFAULT',
- PRIMARY: 'PRIMARY',
- SECONDARY: 'SECONDARY',
- CONTENT: 'CONTENT',
- CONTENT_INVERSE: 'CONTENT_INVERSE',
- WHITE: 'WHITE',
- SENT: 'SENT',
- READ: 'READ',
- ON_BACKGROUND_3: 'ON_BACKGROUND_3'
-};
-
-function changeColorToClassName(color) {
- switch (color) {
- case Colors.PRIMARY:
- return 'sendbird-color--primary';
-
- case Colors.SECONDARY:
- return 'sendbird-color--secondary';
-
- case Colors.CONTENT:
- return 'sendbird-color--content';
-
- case Colors.CONTENT_INVERSE:
- return 'sendbird-color--content-inverse';
-
- case Colors.WHITE:
- return 'sendbird-color--white';
-
- case Colors.SENT:
- return 'sendbird-color--sent';
-
- case Colors.READ:
- return 'sendbird-color--read';
-
- case Colors.ON_BACKGROUND_3:
- return 'sendbird-color--on-background';
-
- default:
- return '';
- }
-}
-
-function changeTypeToIconComponent(type) {
- switch (type) {
- case Type.ADD:
- return React__default.createElement(SvgIconAdd, null);
-
- case Type.ARROW_LEFT:
- return React__default.createElement(SvgIconArrowLeft, null);
-
- case Type.CAMERA:
- return React__default.createElement(SvgIconCamera, null);
-
- case Type.ATTACH:
- return React__default.createElement(SvgIconAttach, null);
-
- case Type.AVATAR_DARK:
- return React__default.createElement(SvgIconAvatarDark, null);
-
- case Type.AVATAR_LIGHT:
- return React__default.createElement(SvgIconAvatarLight, null);
-
- case Type.BROADCAST_LARGE_DARK:
- return React__default.createElement(SvgIconBroadcastLrgDark, null);
-
- case Type.BROADCAST_LARGE_LIGHT:
- return React__default.createElement(SvgIconBroadcastLrgLight, null);
-
- case Type.BROADCAST_DARK:
- return React__default.createElement(SvgIconBroadcastDark, null);
-
- case Type.BROADCAST_LIGHT:
- return React__default.createElement(SvgIconBroadcastLight, null);
-
- case Type.BROADCAST:
- return React__default.createElement(SvgIconBroadcast, null);
-
- case Type.FROZEN_DARK:
- return React__default.createElement(SvgFrozenDark, null);
-
- case Type.FROZEN_LIGHT:
- return React__default.createElement(SvgFrozenLight, null);
-
- case Type.MORE:
- return React__default.createElement(SvgIconMore, null);
-
- case Type.MUTE:
- return React__default.createElement(SvgIconMute, null);
-
- case Type.NO_THUMBNAIL:
- return React__default.createElement(SvgIconNoThumbnail, null);
-
- case Type.CHECKBOX:
- return React__default.createElement(SvgIconCheckbox, null);
-
- case Type.CHECKBOX_OFF:
- return React__default.createElement(SvgIconCheckboxOff, null);
-
- case Type.CLOSE:
- return React__default.createElement(SvgIconClose, null);
-
- case Type.COPY:
- return React__default.createElement(SvgIconCopy, null);
-
- case Type.CHAT:
- return React__default.createElement(SvgIconChat, null);
-
- case Type.SUPER_GROUP:
- return React__default.createElement(SvgIconSupergroup, null);
-
- case Type.CREATE:
- return React__default.createElement(SvgIconCreate, null);
-
- case Type.DELETE:
- return React__default.createElement(SvgIconDelete, null);
-
- case Type.DISCONNECTED:
- return React__default.createElement(SvgIconDisconnected, null);
-
- case Type.DUMMY:
- return React__default.createElement(SvgIconDummy, null);
-
- case Type.EDIT:
- return React__default.createElement(SvgIconEdit, null);
-
- case Type.ERROR:
- return React__default.createElement(SvgIconError, null);
-
- case Type.ERROR_FILLED:
- return React__default.createElement(SvgIconErrorFilled, null);
-
- case Type.EMOJI_FAILED:
- return React__default.createElement(SvgEmojiFail, null);
-
- case Type.EMOJI_REACTIONS_ADD:
- return React__default.createElement(SvgIconReactionsAdd, null);
-
- case Type.EMOJI_REACTIONS_ADD_GRAY:
- return React__default.createElement(SvgIconEmojiReactionsAdd, null);
-
- case Type.DELIVERED:
- return React__default.createElement(SvgIconDelivered, null);
-
- case Type.DOCUMENT:
- return React__default.createElement(SvgIconDocument, null);
-
- case Type.DOWNLOAD:
- return React__default.createElement(SvgIconDownload, null);
-
- case Type.FILE_AUDIO:
- return React__default.createElement(SvgIconFileAudio, null);
-
- case Type.FILE_DOCUMENT:
- return React__default.createElement(SvgIconFileDocument, null);
-
- case Type.GIF:
- return React__default.createElement(SvgIconGif, null);
-
- case Type.INFO:
- return React__default.createElement(SvgIconInfo, null);
-
- case Type.LEAVE:
- return React__default.createElement(SvgIconLeave, null);
-
- case Type.MEMBERS:
- return React__default.createElement(SvgIconMembers, null);
-
- case Type.NOTIFICATIONS:
- return React__default.createElement(SvgIconNotifications, null);
-
- case Type.PHOTO:
- return React__default.createElement(SvgIconPhoto, null);
-
- case Type.PLAY:
- return React__default.createElement(SvgIconPlay, null);
-
- case Type.PLUS:
- return React__default.createElement(SvgIconPlus, null);
-
- case Type.READ:
- return React__default.createElement(SvgIconRead, null);
-
- case Type.REFRESH:
- return React__default.createElement(SvgIconRefresh, null);
-
- case Type.SEND:
- return React__default.createElement(SvgIconSend, null);
-
- case Type.SENT:
- return React__default.createElement(SvgIconSent, null);
-
- case Type.SHEVRON:
- return React__default.createElement(SvgIconShevron, null);
-
- case Type.SHEVRON_DOWN:
- return React__default.createElement(SvgIconShevronDown, null);
-
- case Type.SPINNER:
- return React__default.createElement(SvgIconSpinnerSmall, null);
-
- case Type.SPINNER_LARGE:
- return React__default.createElement(SvgIconSpinnerLarge, null);
-
- case Type.USER:
- return React__default.createElement(SvgIconUser, null);
-
- case Type.ICON_OPERATOR:
- return React__default.createElement(SvgIconOperator, null);
-
- case Type.ICON_BANNED:
- return React__default.createElement(SvgIconBanned, null);
-
- case Type.ICON_MUTED:
- return React__default.createElement(SvgIconMuted, null);
-
- case Type.ICON_MUTED_FG:
- return React__default.createElement(SvgIconMutedForeground, null);
-
- case Type.ICON_FREEZE:
- return React__default.createElement(SvgIconFreeze, null);
-
- case Type.TOGGLE_ON:
- return React__default.createElement(SvgIconToggleon, null);
-
- case Type.TOGGLE_OFF:
- return React__default.createElement(SvgIconToggleoff, null);
-
- default:
- return null;
- }
-}
-
-function Icon(_ref) {
- var type = _ref.type,
- width = _ref.width,
- height = _ref.height,
- children = _ref.children,
- className = _ref.className,
- onClick = _ref.onClick,
- fillColor = _ref.fillColor;
- var iconStyle = {
- width: typeof width === 'string' ? width : "".concat(width, "px"),
- height: typeof height === 'string' ? height : "".concat(height, "px")
- };
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React__default.createElement("div", {
- onClick: onClick,
- onKeyDown: onClick,
- role: "button",
- tabIndex: "0",
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-icon', changeColorToClassName(fillColor)]).join(' '),
- style: iconStyle
- }, children || changeTypeToIconComponent(type));
-}
-Icon.propTypes = {
- type: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(Type)), PropTypes.string]).isRequired,
- width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- onClick: PropTypes.func,
- children: PropTypes.element,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- fillColor: PropTypes.oneOf(Object.keys(Colors))
-};
-Icon.defaultProps = {
- onClick: function onClick() {},
- width: 26,
- height: 26,
- children: null,
- className: '',
- fillColor: Colors.DEFAULT
-};
-var IconTypes = Type;
-var IconColors = Colors;
-
-var imageRendererClassName = 'sendbird-avatar-img';
-
-var defaultComponent = function defaultComponent(_a) {
- var width = _a.width,
- height = _a.height;
- return function () {
- return document.querySelector('.sendbird-theme--dark') ? React__default.createElement(Icon, {
- className: imageRendererClassName,
- type: IconTypes.AVATAR_DARK,
- width: width,
- height: height
- }) : React__default.createElement(Icon, {
- className: imageRendererClassName,
- type: IconTypes.AVATAR_LIGHT,
- width: width,
- height: height
- });
- };
-};
-
-var AvatarInner = function AvatarInner(_a) {
- var _b = _a.src,
- src = _b === void 0 ? '' : _b,
- _c = _a.alt,
- alt = _c === void 0 ? '' : _c,
- height = _a.height,
- width = _a.width;
-
- if (typeof src === 'string') {
- return React__default.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src,
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- });
- }
-
- if (src && src.length) {
- if (src.length === 1) {
- return React__default.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[0],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- });
- }
-
- if (src.length === 2) {
- return React__default.createElement("div", {
- className: "sendbird-avatar--inner__two-child"
- }, React__default.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[0],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- }), React__default.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[1],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- }));
- }
-
- if (src.length === 3) {
- return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
- className: "sendbird-avatar--inner__three-child--upper"
- }, React__default.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[0],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- })), React__default.createElement("div", {
- className: "sendbird-avatar--inner__three-child--lower"
- }, React__default.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[1],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- }), React__default.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: src[2],
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- })));
- }
-
- return React__default.createElement("div", {
- className: "sendbird-avatar--inner__four-child"
- }, src.slice(0, 4).map(function (i) {
- return React__default.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: i,
- height: height,
- width: width,
- alt: alt,
- key: uuidv4(),
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- });
- }));
- } // default img
-
-
- return React__default.createElement(ImageRenderer, {
- className: imageRendererClassName,
- url: "",
- height: height,
- width: width,
- alt: alt,
- defaultComponent: defaultComponent({
- height: height,
- width: width
- })
- });
-};
-
-function Avatar(_a, ref) {
- var _b = _a.src,
- src = _b === void 0 ? '' : _b,
- _c = _a.alt,
- alt = _c === void 0 ? '' : _c,
- _d = _a.width,
- width = _d === void 0 ? '56px' : _d,
- _e = _a.height,
- height = _e === void 0 ? '56px' : _e,
- onClick = _a.onClick,
- _f = _a.className,
- className = _f === void 0 ? '' : _f;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React__default.createElement("div", {
- className: __spreadArrays(injectingClassName, ['sendbird-avatar']).join(' '),
- ref: ref,
- style: {
- height: height,
- width: width
- },
- onClick: onClick,
- role: "button",
- tabIndex: 0,
- onKeyDown: onClick
- }, React__default.createElement(AvatarInner, {
- src: src,
- height: height,
- width: width,
- alt: alt
- }));
-}
-
-var Avatar$1 = React__default.forwardRef(Avatar);
-
-var DEFAULT_URL_PREFIX = 'https://static.sendbird.com/sample/cover/cover_';
-var getChannelAvatarSource = function getChannelAvatarSource(channel, currentUserId) {
- if (channel && channel.coverUrl) {
- if (!new RegExp("^" + DEFAULT_URL_PREFIX).test(channel.coverUrl)) {
- return channel.coverUrl;
- }
- }
-
- return channel && channel.members ? channel.members.filter(function (member) {
- return member.userId !== currentUserId;
- }).map(function (_a) {
- var profileUrl = _a.profileUrl;
- return profileUrl;
- }) : [];
-};
-var useDefaultAvatar = function useDefaultAvatar(channel) {
- if (channel && channel.coverUrl) {
- if (new RegExp("^" + DEFAULT_URL_PREFIX).test(channel.coverUrl)) {
- return true;
- }
-
- return false;
- }
-
- return true;
-};
-
-function ChannelAvatar(_a) {
- var channel = _a.channel,
- userId = _a.userId,
- theme = _a.theme,
- _b = _a.height,
- height = _b === void 0 ? 56 : _b,
- _c = _a.width,
- width = _c === void 0 ? 56 : _c;
- var isBroadcast = channel.isBroadcast;
- var memoizedAvatar = React.useMemo(function () {
- return isBroadcast ? useDefaultAvatar(channel) ? theme === 'dark' ? React__default.createElement(Icon, {
- type: IconTypes.BROADCAST_LARGE_DARK,
- width: width,
- height: height,
- className: "sendbird-chat-header__default--broadcast-channel-dark"
- }) : React__default.createElement(Icon, {
- type: IconTypes.BROADCAST_LARGE_LIGHT,
- width: width,
- height: height,
- className: "sendbird-chat-header__default--broadcast-channel-light"
- }) : React__default.createElement(Avatar$1, {
- className: "sendbird-chat-header__avatar--broadcast-channel",
- src: getChannelAvatarSource(channel, userId),
- width: width,
- height: height,
- alt: channel.name
- }) : React__default.createElement(Avatar$1, {
- className: "sendbird-chat-header__avatar--group-channel",
- src: getChannelAvatarSource(channel, userId),
- width: width + "px",
- height: height + "px",
- alt: channel.name
- });
- }, [channel.members, channel.coverUrl, theme]);
- return React__default.createElement(React__default.Fragment, null, memoizedAvatar);
-}
-
-var Typography = {
- H_1: 'H_1',
- H_2: 'H_2',
- SUBTITLE_1: 'SUBTITLE_1',
- SUBTITLE_2: 'SUBTITLE_2',
- BODY_1: 'BODY_1',
- BODY_2: 'BODY_2',
- BUTTON_1: 'BUTTON_1',
- BUTTON_2: 'BUTTON_2',
- CAPTION_1: 'CAPTION_1',
- CAPTION_2: 'CAPTION_2',
- CAPTION_3: 'CAPTION_3'
-};
-var Colors$1 = {
- ONBACKGROUND_1: 'ONBACKGROUND_1',
- ONBACKGROUND_2: 'ONBACKGROUND_2',
- ONBACKGROUND_3: 'ONBACKGROUND_3',
- ONCONTENT_1: 'ONCONTENT_1',
- ONCONTENT_2: 'ONCONTENT_2',
- PRIMARY: 'PRIMARY',
- ERROR: 'ERROR'
-};
-
-function changeTypographyToClassName(type) {
- switch (type) {
- case Typography.H_1:
- return 'sendbird-label--h-1';
-
- case Typography.H_2:
- return 'sendbird-label--h-2';
-
- case Typography.SUBTITLE_1:
- return 'sendbird-label--subtitle-1';
-
- case Typography.SUBTITLE_2:
- return 'sendbird-label--subtitle-2';
-
- case Typography.BODY_1:
- return 'sendbird-label--body-1';
-
- case Typography.BODY_2:
- return 'sendbird-label--body-2';
-
- case Typography.BUTTON_1:
- return 'sendbird-label--button-1';
-
- case Typography.BUTTON_2:
- return 'sendbird-label--button-2';
-
- case Typography.CAPTION_1:
- return 'sendbird-label--caption-1';
-
- case Typography.CAPTION_2:
- return 'sendbird-label--caption-2';
-
- case Typography.CAPTION_3:
- return 'sendbird-label--caption-3';
-
- default:
- return null;
- }
-}
-function changeColorToClassName$1(color) {
- switch (color) {
- case Colors$1.ONBACKGROUND_1:
- return 'sendbird-label--color-onbackground-1';
-
- case Colors$1.ONBACKGROUND_2:
- return 'sendbird-label--color-onbackground-2';
-
- case Colors$1.ONBACKGROUND_3:
- return 'sendbird-label--color-onbackground-3';
-
- case Colors$1.ONCONTENT_1:
- return 'sendbird-label--color-oncontent-1';
-
- case Colors$1.ONCONTENT_2:
- return 'sendbird-label--color-oncontent-2';
-
- case Colors$1.PRIMARY:
- return 'sendbird-label--color-primary';
-
- case Colors$1.ERROR:
- return 'sendbird-label--color-error';
-
- default:
- return null;
- }
-}
-
-var CLASS_NAME = 'sendbird-label';
-function Label(_ref) {
- var type = _ref.type,
- color = _ref.color,
- children = _ref.children,
- className = _ref.className;
- var injectingClassName = Array.isArray(className) ? [CLASS_NAME].concat(_toConsumableArray(className)) : [CLASS_NAME, className];
-
- if (type) {
- injectingClassName.push(changeTypographyToClassName(type));
- }
-
- if (color) {
- injectingClassName.push(changeColorToClassName$1(color));
- }
-
- return React__default.createElement("span", {
- className: injectingClassName.join(' ')
- }, children);
-}
-Label.propTypes = {
- type: PropTypes.oneOf([].concat(_toConsumableArray(Object.keys(Typography)), [''])),
- color: PropTypes.oneOf([].concat(_toConsumableArray(Object.keys(Colors$1)), [''])),
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.element, PropTypes.any]),
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-Label.defaultProps = {
- type: '',
- color: '',
- className: [],
- children: null
-};
-var LabelTypography = Typography;
-var LabelColors = Colors$1;
-var LabelStringSet = getStringSet('en');
-
-function Badge(_ref) {
- var count = _ref.count,
- maxLevel = _ref.maxLevel,
- className = _ref.className;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var maximumNumber = parseInt('9'.repeat(maxLevel > 6 ? 6 : maxLevel), 10);
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React__default.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-badge']).join(' ')
- }, React__default.createElement("div", {
- className: "sendbird-badge__text"
- }, React__default.createElement(Label, {
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONCONTENT_1
- }, count > maximumNumber ? "".concat(maximumNumber).concat(stringSet.BADGE__OVER) : count)));
-}
-Badge.propTypes = {
- count: PropTypes.number.isRequired,
- maxLevel: PropTypes.number,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-Badge.defaultProps = {
- maxLevel: 2,
- className: []
-};
-
-var MessageStatusType = {
- PENDING: 'PENDING',
- SENT: 'SENT',
- DELIVERED: 'DELIVERED',
- READ: 'READ',
- FAILED: 'FAILED'
-};
-
-var truncate = function truncate(fullStr, strLen) {
- if (fullStr === null || fullStr === undefined) return '';
- if (fullStr.length <= strLen) return fullStr;
- var separator = '...';
- var sepLen = separator.length;
- var charsToShow = strLen - sepLen;
- var frontChars = Math.ceil(charsToShow / 2);
- var backChars = Math.floor(charsToShow / 2);
- return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);
-};
-var getIsSentFromStatus = function getIsSentFromStatus(status) {
- return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
-};
-
-var getChannelTitle = function getChannelTitle() {
- var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var currentUserId = arguments.length > 1 ? arguments[1] : undefined;
- var stringSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : LabelStringSet;
-
- if (!channel || !channel.name && !channel.members) {
- return stringSet.NO_TITLE;
- }
-
- if (channel.name && channel.name !== 'Group Channel') {
- return channel.name;
- }
-
- if (channel.members.length === 1) {
- return stringSet.NO_MEMBERS;
- }
-
- return channel.members.filter(function (_ref) {
- var userId = _ref.userId;
- return userId !== currentUserId;
- }).map(function (_ref2) {
- var nickname = _ref2.nickname;
- return nickname || stringSet.NO_NAME;
- }).join(', ');
-};
-var getLastMessageCreatedAt = function getLastMessageCreatedAt(channel) {
- if (!channel || !channel.lastMessage) {
- return '';
- }
-
- var date = channel.lastMessage.createdAt;
-
- if (isToday(date)) {
- return format(date, 'p');
- }
-
- if (isYesterday(date)) {
- return 'Yesterday';
- }
-
- return format(date, 'MMM dd');
-};
-var getTotalMembers = function getTotalMembers(channel) {
- return channel && channel.memberCount ? channel.memberCount : 0;
-};
-
-var getPrettyLastMessage = function getPrettyLastMessage() {
- var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var MAXLEN = 30;
- var messageType = message.messageType,
- name = message.name;
-
- if (messageType === 'file') {
- return truncate(name, MAXLEN);
- }
-
- return message.message;
-};
-
-var getLastMessage = function getLastMessage(channel) {
- return channel && channel.lastMessage ? getPrettyLastMessage(channel.lastMessage) : '';
-};
-var getChannelUnreadMessageCount = function getChannelUnreadMessageCount(channel) {
- return channel && channel.unreadMessageCount ? channel.unreadMessageCount : 0;
-};
-
-function ChannelPreview(_ref) {
- var channel = _ref.channel,
- isActive = _ref.isActive,
- ChannelAction = _ref.ChannelAction,
- theme = _ref.theme,
- onClick = _ref.onClick,
- tabIndex = _ref.tabIndex,
- currentUser = _ref.currentUser;
- var userId = currentUser.userId;
- var isBroadcast = channel.isBroadcast,
- isFrozen = channel.isFrozen;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React__default.createElement("div", {
- role: "link",
- tabIndex: tabIndex,
- onClick: onClick,
- onKeyPress: onClick,
- className: "\n sendbird-channel-preview\n ".concat(isActive ? 'sendbird-channel-preview--active' : null, "\n ")
- }, React__default.createElement("div", {
- className: "sendbird-channel-preview__avatar"
- }, React__default.createElement(ChannelAvatar, {
- channel: channel,
- userId: userId,
- theme: theme
- })), React__default.createElement("div", {
- className: "sendbird-channel-preview__content"
- }, React__default.createElement("div", {
- className: "sendbird-channel-preview__content__upper"
- }, React__default.createElement("div", {
- className: "sendbird-channel-preview__content__upper__header"
- }, isBroadcast && React__default.createElement("div", {
- className: "sendbird-channel-preview__broadcast-icon"
- }, React__default.createElement(Icon, {
- type: theme === 'dark' ? IconTypes.BROADCAST_DARK : IconTypes.BROADCAST_LIGHT,
- height: 12,
- width: 12
- })), React__default.createElement(Label, {
- className: "sendbird-channel-preview__content__upper__header__channel-name",
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1
- }, getChannelTitle(channel, userId, stringSet)), React__default.createElement(Label, {
- className: "sendbird-channel-preview__content__upper__header__total-members",
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, getTotalMembers(channel)), isFrozen && React__default.createElement("div", {
- title: "Frozen",
- className: "sendbird-channel-preview__frozen-icon"
- }, React__default.createElement(Icon, {
- type: theme === 'dark' ? IconTypes.FROZEN_DARK : IconTypes.FROZEN_LIGHT,
- height: 12,
- width: 12
- }))), React__default.createElement(Label, {
- className: "sendbird-channel-preview__content__upper__last-message-at",
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getLastMessageCreatedAt(channel))), React__default.createElement("div", {
- className: "sendbird-channel-preview__content__lower"
- }, React__default.createElement(Label, {
- className: "sendbird-channel-preview__content__lower__last-message",
- type: LabelTypography.BODY_2,
- color: LabelColors.ONBACKGROUND_3
- }, getLastMessage(channel)), React__default.createElement("div", {
- className: "sendbird-channel-preview__content__lower__unread-message-count"
- }, getChannelUnreadMessageCount(channel) ? React__default.createElement(Badge, {
- count: getChannelUnreadMessageCount(channel)
- }) : null))), React__default.createElement("div", {
- className: "sendbird-channel-preview__action"
- }, ChannelAction));
-}
-ChannelPreview.propTypes = {
- isActive: PropTypes.bool,
- theme: PropTypes.string,
- channel: PropTypes.shape({
- members: PropTypes.arrayOf(PropTypes.shape({})),
- coverUrl: PropTypes.string,
- isBroadcast: PropTypes.bool,
- isFrozen: PropTypes.bool
- }),
- ChannelAction: PropTypes.element.isRequired,
- onClick: PropTypes.func,
- tabIndex: PropTypes.number,
- currentUser: PropTypes.shape({
- userId: PropTypes.string
- })
-};
-ChannelPreview.defaultProps = {
- channel: {},
- isActive: false,
- theme: 'light',
- onClick: function onClick() {},
- tabIndex: 0,
- currentUser: {}
-};
-
-var CLASS_NAME$1 = 'sendbird-iconbutton';
-var IconButton = React__default.forwardRef(function (props, ref) {
- var children = props.children,
- className = props.className,
- _props$disabled = props.disabled,
- disabled = _props$disabled === void 0 ? false : _props$disabled,
- type = props.type,
- height = props.height,
- width = props.width,
- _onClick = props.onClick,
- _onBlur = props.onBlur;
-
- var _useState = React.useState(''),
- _useState2 = _slicedToArray(_useState, 2),
- pressed = _useState2[0],
- setPressed = _useState2[1];
-
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift(CLASS_NAME$1);
- return (// eslint-disable-next-line react/button-has-type
- React__default.createElement("button", {
- className: "".concat(injectingClassName.join(' '), " ").concat(pressed),
- disabled: disabled,
- ref: ref,
- type: type,
- style: {
- height: height,
- width: width
- },
- onClick: function onClick(e) {
- if (disabled) {
- return;
- }
-
- setPressed('sendbird-iconbutton--pressed');
-
- _onClick(e);
- },
- onBlur: function onBlur(e) {
- setPressed('');
-
- _onBlur(e);
- }
- }, React__default.createElement("span", {
- className: "sendbird-iconbutton__inner"
- }, children))
- );
-});
-IconButton.propTypes = {
- height: PropTypes.string,
- width: PropTypes.string,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.any]).isRequired,
- type: PropTypes.string,
- disabled: PropTypes.bool,
- onClick: PropTypes.func,
- onBlur: PropTypes.func
-};
-IconButton.defaultProps = {
- height: '56px',
- width: '56px',
- className: '',
- type: 'button',
- disabled: false,
- onClick: function onClick() {},
- onBlur: function onBlur() {}
-};
-
-function ChannelHeader(_ref) {
- var user = _ref.user,
- iconButton = _ref.iconButton,
- onEdit = _ref.onEdit,
- renderHeader = _ref.renderHeader,
- allowProfileEdit = _ref.allowProfileEdit;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React__default.createElement("div", {
- className: "\n ".concat(allowProfileEdit && 'sendbird-channel-header--allow-edit', "\n sendbird-channel-header\n ")
- }, renderHeader ? renderHeader() : React__default.createElement("div", {
- className: "sendbird-channel-header__title",
- role: "button",
- onKeyDown: onEdit,
- onClick: onEdit,
- tabIndex: "0"
- }, React__default.createElement("div", {
- className: "sendbird-channel-header__title--left"
- }, React__default.createElement(Avatar$1, {
- height: "32px",
- width: "32px",
- src: user.profileUrl,
- alt: user.nickname
- })), React__default.createElement("div", {
- className: "sendbird-channel-header__title--right"
- }, React__default.createElement(Label, {
- className: "sendbird-channel-header__title--name",
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1
- }, user.nickname || stringSet.NO_NAME), React__default.createElement(Label, {
- className: "sendbird-channel-header__title--user-id",
- type: LabelTypography.BODY_2,
- color: LabelColors.ONBACKGROUND_2
- }, user.userId))), React__default.createElement("div", {
- className: "sendbird-channel-header__right-icon"
- }, iconButton));
-}
-ChannelHeader.propTypes = {
- user: PropTypes.shape({
- profileUrl: PropTypes.string,
- nickname: PropTypes.string,
- userId: PropTypes.string
- }),
- renderHeader: PropTypes.func,
- allowProfileEdit: PropTypes.bool,
- onEdit: PropTypes.func.isRequired,
- iconButton: PropTypes.oneOfType([PropTypes.element, PropTypes.instanceOf(IconButton)])
-};
-ChannelHeader.defaultProps = {
- user: {},
- renderHeader: null,
- allowProfileEdit: false,
- iconButton: null
-};
-
-// simple component to be used as modal root
-var MODAL_ROOT = 'sendbird-modal-root';
-
-var Type$1 = {
- PRIMARY: 'PRIMARY',
- SECONDARY: 'SECONDARY',
- DANGER: 'DANGER',
- DISABLED: 'DISABLED'
-};
-var Size = {
- BIG: 'BIG',
- SMALL: 'SMALL'
-};
-
-function changeTypeToClassName(type) {
- switch (type) {
- case Type$1.PRIMARY:
- return 'sendbird-button--primary';
-
- case Type$1.SECONDARY:
- return 'sendbird-button--secondary';
-
- case Type$1.DANGER:
- return 'sendbird-button--danger';
-
- case Type$1.DISABLED:
- return 'sendbird-button--disabled';
-
- default:
- return null;
- }
-}
-function changeSizeToClassName(size) {
- switch (size) {
- case Size.BIG:
- return 'sendbird-button--big';
-
- case Size.SMALL:
- return 'sendbird-button--small';
-
- default:
- return null;
- }
-}
-
-function Button(_ref) {
- var type = _ref.type,
- size = _ref.size,
- children = _ref.children,
- disabled = _ref.disabled,
- onClick = _ref.onClick,
- className = _ref.className;
- var injectingClassNames = ['sendbird-button', disabled ? 'sendbird-button__disabled' : '', changeTypeToClassName(type), changeSizeToClassName(size)].concat(_toConsumableArray(Array.isArray(className) ? className : [className])).join(' ');
- return React__default.createElement("button", {
- type: "button",
- className: injectingClassNames,
- onClick: onClick,
- disabled: disabled
- }, React__default.createElement(Label, {
- className: "sendbird-button__text",
- type: LabelTypography.BUTTON_1,
- color: LabelColors.ONCONTENT_1
- }, children));
-}
-Button.propTypes = {
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),
- disabled: PropTypes.bool,
- type: PropTypes.oneOf(Object.keys(Type$1)),
- size: PropTypes.oneOf(Object.keys(Size)),
- onClick: PropTypes.func,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-Button.defaultProps = {
- children: 'Button',
- type: Type$1.PRIMARY,
- disabled: false,
- size: Size.BIG,
- onClick: function onClick() {},
- className: ''
-};
-
-var ModalHeader = function ModalHeader(_ref) {
- var titleText = _ref.titleText;
- return React__default.createElement("div", {
- className: "sendbird-modal-header"
- }, React__default.createElement(Label, {
- type: LabelTypography.H_1,
- color: LabelColors.ONBACKGROUND_1
- }, titleText));
-};
-ModalHeader.propTypes = {
- titleText: PropTypes.string.isRequired
-};
-var ModalBody = function ModalBody(_ref2) {
- var children = _ref2.children;
- return React__default.createElement("div", {
- className: "sendbird-modal-body"
- }, children);
-};
-ModalBody.propTypes = {
- children: PropTypes.oneOfType([PropTypes.element.isRequired, PropTypes.arrayOf(PropTypes.element.isRequired)])
-};
-ModalBody.defaultProps = {
- children: null
-};
-var ModalFooter = function ModalFooter(_ref3) {
- var onSubmit = _ref3.onSubmit,
- onCancel = _ref3.onCancel,
- _ref3$disabled = _ref3.disabled,
- disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
- submitText = _ref3.submitText,
- type = _ref3.type;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React__default.createElement("div", {
- className: "sendbird-modal-footer"
- }, React__default.createElement(Button, {
- type: Type$1.SECONDARY,
- onClick: onCancel
- }, React__default.createElement(Label, {
- type: LabelTypography.BUTTON_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.BUTTON__CANCEL)), React__default.createElement(Button, {
- type: type,
- disabled: disabled,
- onClick: onSubmit
- }, submitText));
-};
-ModalFooter.propTypes = {
- onCancel: PropTypes.func.isRequired,
- onSubmit: PropTypes.func.isRequired,
- submitText: PropTypes.string.isRequired,
- disabled: PropTypes.bool,
- type: PropTypes.string
-};
-ModalFooter.defaultProps = {
- disabled: false,
- type: Type$1.DANGER
-};
-
-function Modal(props) {
- var children = props.children,
- onCancel = props.onCancel,
- onSubmit = props.onSubmit,
- disabled = props.disabled,
- submitText = props.submitText,
- titleText = props.titleText,
- hideFooter = props.hideFooter,
- type = props.type;
- return reactDom.createPortal(React__default.createElement("div", {
- className: "sendbird-modal"
- }, React__default.createElement("div", {
- className: "sendbird-modal-content"
- }, React__default.createElement(ModalHeader, {
- titleText: titleText
- }), React__default.createElement(ModalBody, null, children), !hideFooter && React__default.createElement(ModalFooter, {
- disabled: disabled,
- onCancel: onCancel,
- onSubmit: onSubmit,
- submitText: submitText,
- type: type
- }), React__default.createElement("div", {
- className: "sendbird-modal-close"
- }, React__default.createElement(IconButton, {
- width: "32px",
- height: "32px",
- onClick: onCancel
- }, React__default.createElement(Icon, {
- type: IconTypes.CLOSE,
- fillColor: IconColors.SECONDARY,
- width: "24px",
- height: "24px"
- })))), React__default.createElement("div", {
- className: "sendbird-modal-backdrop"
- })), document.getElementById(MODAL_ROOT));
-}
-
-Modal.propTypes = {
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),
- onCancel: PropTypes.func.isRequired,
- onSubmit: PropTypes.func.isRequired,
- hideFooter: PropTypes.bool,
- disabled: PropTypes.bool,
- type: PropTypes.string
-};
-Modal.defaultProps = {
- children: null,
- hideFooter: false,
- disabled: false,
- type: Type$1.DANGER
-};
-
-var InputLabel = function InputLabel(_ref) {
- var children = _ref.children;
- return React__default.createElement(Label, {
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_1,
- className: "sendbird-input-label"
- }, children);
-};
-InputLabel.propTypes = {
- children: PropTypes.string.isRequired
-}; // future: add validations? onChange? more props etc etc
-
-var Input = React__default.forwardRef(function (props, ref) {
- var value = props.value,
- placeHolder = props.placeHolder,
- disabled = props.disabled,
- name = props.name,
- required = props.required;
-
- var _useState = React.useState(value),
- _useState2 = _slicedToArray(_useState, 2),
- inputValue = _useState2[0],
- setInputValue = _useState2[1];
-
- return React__default.createElement("div", {
- className: "sendbird-input"
- }, React__default.createElement("input", {
- required: required,
- ref: ref,
- name: name,
- disabled: disabled,
- value: inputValue,
- className: "sendbird-input--input",
- onChange: function onChange(e) {
- setInputValue(e.target.value);
- }
- }), placeHolder && !inputValue && React__default.createElement(Label, {
- className: "sendbird-input--placeholder",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_3
- }, placeHolder));
-});
-Input.propTypes = {
- value: PropTypes.string,
- placeHolder: PropTypes.string,
- name: PropTypes.string.isRequired,
- disabled: PropTypes.bool,
- required: PropTypes.bool
-};
-Input.defaultProps = {
- value: '',
- placeHolder: '',
- disabled: false,
- required: false
-};
-
-var Colors$2 = {
- ONBACKGROUND_1: 'ONBACKGROUND_1',
- ONBACKGROUND_2: 'ONBACKGROUND_2',
- ONBACKGROUND_3: 'ONBACKGROUND_3',
- ONBACKGROUND_4: 'ONBACKGROUND_4',
- ONCONTENT_1: 'ONCONTENT_1',
- PRIMARY: 'PRIMARY',
- ERROR: 'ERROR'
-};
-function changeColorToClassName$2(color) {
- switch (color) {
- case Colors$2.ONBACKGROUND_1:
- return 'sendbird-color--onbackground-1';
-
- case Colors$2.ONBACKGROUND_2:
- return 'sendbird-color--onbackground-2';
-
- case Colors$2.ONBACKGROUND_3:
- return 'sendbird-color--onbackground-3';
-
- case Colors$2.ONBACKGROUND_4:
- return 'sendbird-color--onbackground-4';
-
- case Colors$2.ONCONTENT_1:
- return 'sendbird-color--oncontent-1';
-
- case Colors$2.PRIMARY:
- return 'sendbird-color--primary';
-
- case Colors$2.ERROR:
- return 'sendbird-color--error';
-
- default:
- return null;
- }
-}
-
-function TextButton(_ref) {
- var color = _ref.color,
- children = _ref.children,
- disabled = _ref.disabled,
- className = _ref.className,
- onClick = _ref.onClick,
- notUnderline = _ref.notUnderline;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React__default.createElement("div", {
- role: "button",
- tabIndex: 0,
- className: [].concat(_toConsumableArray(injectingClassName), [changeColorToClassName$2(color), notUnderline ? 'sendbird-textbutton--not-underline' : 'sendbird-textbutton', disabled ? 'sendbird-textbutton--disabled' : '']).join(' '),
- onClick: onClick,
- onKeyPress: onClick
- }, children);
-}
-TextButton.propTypes = {
- color: PropTypes.string,
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- onClick: PropTypes.func,
- notUnderline: PropTypes.bool,
- disabled: PropTypes.bool
-};
-TextButton.defaultProps = {
- color: Colors$2.ONBACKGROUND_1,
- className: '',
- onClick: function onClick() {},
- notUnderline: false,
- disabled: false
-};
-
-var noop = function noop() {};
-var getMessageCreatedAt = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-var getSenderName = function getSenderName(message) {
- return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
-};
-var getSenderProfileUrl = function getSenderProfileUrl(message) {
- return message.sender && message.sender.profileUrl;
-};
-
-function EditUserProfile(_a) {
- var user = _a.user,
- onCancel = _a.onCancel,
- _onSubmit = _a.onSubmit,
- _b = _a.onThemeChange,
- onThemeChange = _b === void 0 ? null : _b,
- _c = _a.theme,
- theme = _c === void 0 ? 'light' : _c,
- _d = _a.changeTheme,
- changeTheme = _d === void 0 ? noop : _d;
- var hiddenInputRef = React.useRef(null);
- var inputRef = React.useRef(null);
- var formRef = React.useRef(null);
- var stringSet = React.useContext(LocalizationContext).stringSet;
-
- var _e = React.useState(null),
- currentImg = _e[0],
- setCurrentImg = _e[1];
-
- var _f = React.useState(null),
- newFile = _f[0],
- setNewFile = _f[1];
-
- return React__default.createElement(Modal, {
- titleText: stringSet.EDIT_PROFILE__TITLE,
- submitText: stringSet.BUTTON__SAVE,
- onCancel: onCancel,
- onSubmit: function onSubmit() {
- if (user.nickname !== '' && !inputRef.current.value) {
- if (formRef.current.reportValidity) {
- // might not work in explorer
- formRef.current.reportValidity();
- }
-
- return;
- }
-
- _onSubmit(inputRef.current.value, newFile);
-
- onCancel();
- },
- type: Type$1.PRIMARY
- }, React__default.createElement("form", {
- className: "sendbird__edit-user-profile",
- ref: formRef,
- onSubmit: function onSubmit(e) {
- e.preventDefault();
- }
- }, React__default.createElement("section", {
- className: "sendbird__edit-user-profile__img"
- }, React__default.createElement(InputLabel, null, stringSet.EDIT_PROFILE__IMAGE_LABEL), React__default.createElement("div", {
- className: "sendbird__edit-user__avatar"
- }, React__default.createElement(Avatar$1, {
- height: "80px",
- width: "80px",
- src: currentImg || user.profileUrl
- })), React__default.createElement("input", {
- ref: hiddenInputRef,
- type: "file",
- accept: "image/gif, image/jpeg, image/png",
- style: {
- display: 'none'
- },
- onChange: function onChange(e) {
- setCurrentImg(URL.createObjectURL(e.target.files[0]));
- setNewFile(e.target.files[0]);
- hiddenInputRef.current.value = '';
- }
- }), React__default.createElement(TextButton, {
- className: "sendbird__edit-user__avatar-button",
- onClick: function onClick() {
- return hiddenInputRef.current.click();
- },
- notUnderline: true
- }, React__default.createElement(Label, {
- type: LabelTypography.BUTTON_1,
- color: LabelColors.PRIMARY
- }, stringSet.EDIT_PROFILE__IMAGE_UPLOAD))), React__default.createElement("section", {
- className: "sendbird__edit-user__name"
- }, React__default.createElement(InputLabel, null, stringSet.EDIT_PROFILE__NICKNAME_LABEL), React__default.createElement(Input, {
- required: user.nickname !== '',
- name: "sendbird__edit-user__name",
- ref: inputRef,
- value: user.nickname,
- placeHolder: stringSet.EDIT_PROFILE__NICKNAME_PLACEHOLDER
- })), React__default.createElement("section", {
- className: "sendbird__edit-user__userid"
- }, React__default.createElement(InputLabel, null, stringSet.EDIT_PROFILE__USERID_LABEL), React__default.createElement(Input, {
- disabled: true,
- name: "sendbird__edit-user__userid",
- value: user.userId
- })), React__default.createElement("section", {
- className: "sendbird__edit-user__theme"
- }, React__default.createElement(InputLabel, null, stringSet.EDIT_PROFILE__THEME_LABEL), React__default.createElement("div", {
- className: "sendbird__edit-user__theme-icon"
- }, theme === 'dark' ? React__default.createElement(Icon, {
- onClick: function onClick() {
- changeTheme('light');
-
- if (onThemeChange && typeof onThemeChange === 'function') {
- onThemeChange('light');
- }
- },
- type: IconTypes.TOGGLE_ON,
- width: 44,
- height: 24
- }) : React__default.createElement(Icon, {
- onClick: function onClick() {
- changeTheme('dark');
-
- if (onThemeChange && typeof onThemeChange === 'function') {
- onThemeChange('dark');
- }
- },
- type: IconTypes.TOGGLE_OFF,
- width: 44,
- height: 24
- })))));
-}
-
-var mapStoreToProps = function mapStoreToProps(store) {
- return {
- theme: store.config.theme,
- changeTheme: store.config.setCurrenttheme
- };
-};
-
-var ConnectedEditUserProfile = withSendbirdContext(EditUserProfile, mapStoreToProps);
-
-function Types() {
- return {
- LOADING: 'LOADING',
- NO_CHANNELS: 'NO_CHANNELS',
- WRONG: 'WRONG'
- };
-}
-var PlaceHolderTypes = Types();
-
-function MutedAvatarOverlay(props) {
- var _a = props.height,
- height = _a === void 0 ? 24 : _a,
- _b = props.width,
- width = _b === void 0 ? 24 : _b;
- return React__default.createElement("div", {
- className: "sendbird-muted-avatar",
- style: {
- height: height + "px",
- width: width + "px"
- }
- }, React__default.createElement("div", {
- className: "sendbird-muted-avatar__icon"
- }, React__default.createElement("div", {
- className: "sendbird-muted-avatar__bg",
- style: {
- height: height + "px",
- width: width + "px"
- }
- }), React__default.createElement(Icon, {
- fillColor: IconColors.WHITE,
- type: IconTypes.ICON_MUTED,
- width: height - 8 + "px",
- height: width - 8 + "px"
- })));
-}
-
-function Checkbox(_ref) {
- var id = _ref.id,
- checked = _ref.checked,
- onChange = _ref.onChange;
-
- var _useState = React.useState(checked),
- _useState2 = _slicedToArray(_useState, 2),
- isChecked = _useState2[0],
- setCheck = _useState2[1];
-
- return React__default.createElement("label", {
- className: "sendbird-checkbox",
- htmlFor: id
- }, React__default.createElement("input", {
- id: id,
- type: "checkbox",
- checked: isChecked,
- onClick: function onClick() {
- return setCheck(!isChecked);
- },
- onChange: onChange
- }), React__default.createElement("span", {
- className: "sendbird-checkbox--checkmark"
- }));
-}
-Checkbox.propTypes = {
- id: PropTypes.string,
- checked: PropTypes.bool,
- onChange: PropTypes.func
-};
-Checkbox.defaultProps = {
- id: 'sendbird-checkbox-input',
- checked: false,
- onChange: function onChange() {}
-};
-
-var SEND_MESSAGE_START = 'SEND_MESSAGE_START';
-var SEND_USER_MESSAGE = 'SEND_USER_MESSAGE';
-var SEND_FILE_MESSAGE = 'SEND_FILE_MESSAGE';
-var UPDATE_USER_MESSAGE = 'UPDATE_USER_MESSAGE';
-var DELETE_MESSAGE = 'DELETE_MESSAGE';
-var LEAVE_CHANNEL = 'LEAVE_CHANNEL';
-var CREATE_CHANNEL$1 = 'CREATE_CHANNEL';
-
-var getSdk = function getSdk(store) {
- var _store$stores = store.stores,
- stores = _store$stores === void 0 ? {} : _store$stores;
- var _stores$sdkStore = stores.sdkStore,
- sdkStore = _stores$sdkStore === void 0 ? {} : _stores$sdkStore;
- var sdk = sdkStore.sdk;
- return sdk;
-};
-var getPubSub = function getPubSub(store) {
- var _store$config = store.config,
- config = _store$config === void 0 ? {} : _store$config;
- var pubSub = config.pubSub;
- return pubSub;
-}; // SendBird disconnect. Invalidates currentUser
-// eslint-disable-next-line max-len
-
-var getConnect = function getConnect(store) {
- return function (userId, accessToken) {
- return new Promise(function (resolve, reject) {
- var sdk = getSdk(store);
-
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- if (!accessToken) {
- sdk.connect(userId).then(function (res) {
- return resolve(res);
- }).catch(function (err) {
- return reject(err);
- });
- } else {
- sdk.connect(userId, accessToken).then(function (res) {
- return resolve(res);
- }).catch(function (err) {
- return reject(err);
- });
- }
- });
- };
-}; // SendBird disconnect. Invalidates currentUser
-
-var getDisconnect = function getDisconnect(store) {
- return function () {
- return new Promise(function (resolve, reject) {
- var sdk = getSdk(store);
-
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.disconnect().then(function (res) {
- return resolve(res);
- }).catch(function (err) {
- return reject(err);
- });
- });
- };
-}; // Using the updateCurrentUserInfo() method
-// you can update a user's nickname and profile image with a URL
-// eslint-disable-next-line max-len
-
-var getUpdateUserInfo = function getUpdateUserInfo(store) {
- return function (nickName, profileUrl) {
- return new Promise(function (resolve, reject) {
- var sdk = getSdk(store);
-
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.updateCurrentUserInfo(nickName, profileUrl).then(function (res) {
- return resolve(res);
- }).catch(function (err) {
- return reject(err);
- });
- });
- };
-};
-var getSendUserMessage = function getSendUserMessage(store) {
- return function (channelUrl, userMessageParams) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- var promisify = function promisify() {
- var pendingMsg = null;
- var pendingPromise = new Promise(function (resolve_, reject_) {
- pendingMsg = channel.sendUserMessage(userMessageParams, function (res, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var message = res;
- var error = err;
-
- if (swapParams) {
- message = err;
- error = res;
- }
-
- if (error) {
- reject_(error);
- return;
- }
-
- resolve_(message);
- pubsub.publish(SEND_USER_MESSAGE, {
- message: message,
- channel: channel
- });
- });
- pubsub.publish(SEND_MESSAGE_START, {
- message: pendingMsg,
- channel: channel
- });
- });
-
- pendingPromise.get = function () {
- return pendingMsg;
- };
-
- return pendingPromise;
- };
-
- resolve(promisify());
- }).catch(reject);
- });
- };
-};
-var getSendFileMessage = function getSendFileMessage(store) {
- return function (channelUrl, fileMessageParams) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- var promisify = function promisify() {
- var pendingMsg = null;
- var pendingPromise = new Promise(function (resolve_, reject_) {
- pendingMsg = channel.sendFileMessage(fileMessageParams, function (res, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var message = res;
- var error = err;
-
- if (swapParams) {
- message = err;
- error = res;
- }
-
- if (error) {
- reject_(error);
- return;
- }
-
- resolve_(message);
- pubsub.publish(SEND_FILE_MESSAGE, {
- message: message,
- channel: channel
- });
- });
- });
-
- if (fileMessageParams.file) {
- // keep the file's local version in pendingMsg.localUrl
- // because promise doesnt allow overriding of pendingMsg.url
- // eslint-disable-next-line no-param-reassign
- pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);
- }
-
- if (fileMessageParams.fileUrl) {
- // eslint-disable-next-line no-param-reassign
- pendingMsg.localUrl = fileMessageParams.fileUrl;
- } // eslint-disable-next-line no-param-reassign
-
-
- pendingMsg.requestState = 'pending';
- pubsub.publish(SEND_MESSAGE_START, {
- message: pendingMsg,
- channel: channel
- });
-
- pendingPromise.get = function () {
- return pendingMsg;
- };
-
- return pendingPromise;
- };
-
- resolve(promisify());
- }).catch(reject);
- });
- };
-};
-var getUpdateUserMessage = function getUpdateUserMessage(store) {
- return function (channelUrl, messageId, params) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.updateUserMessage(messageId, params, function (res, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var message = res;
- var error = err;
-
- if (swapParams) {
- message = err;
- error = res;
- }
-
- if (error) {
- reject(error);
- return;
- }
-
- resolve(message);
- pubsub.publish(UPDATE_USER_MESSAGE, {
- message: message,
- channel: channel,
- // workaround for updating channelPreview on message-edit
- // https://sendbird.atlassian.net/browse/UIKIT-268
- fromSelector: true
- });
- });
- }).catch(reject);
- });
- };
-};
-var getDeleteMessage = function getDeleteMessage(store) {
- return function (channelUrl, message) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- var messageId = message.messageId;
- channel.deleteMessage(message, function (res, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var error = err;
-
- if (swapParams) {
- error = res;
- }
-
- if (error) {
- reject(error);
- return;
- }
-
- resolve(message);
- pubsub.publish(DELETE_MESSAGE, {
- messageId: messageId,
- channel: channel
- });
- });
- }).catch(reject);
- });
- };
-};
-var getResendUserMessage = function getResendUserMessage(store) {
- return function (channelUrl, failedMessage) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.resendUserMessage(failedMessage).then(function (message) {
- resolve(message);
- pubsub.publish(SEND_USER_MESSAGE, {
- message: message,
- channel: channel
- });
- }).catch(reject);
- }).catch(reject);
- });
- };
-};
-var getResendFileMessage = function getResendFileMessage(store) {
- return function (channelUrl, failedMessage) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.resendFileMessage(failedMessage).then(function (message) {
- resolve(message);
- pubsub.publish(SEND_FILE_MESSAGE, {
- message: message,
- channel: channel
- });
- }).catch(reject);
- }).catch(reject);
- });
- };
-};
-var getCreateChannel = function getCreateChannel(store) {
- return function (params) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.createChannel(params).then(function (channel) {
- resolve(channel);
- pubsub.publish(CREATE_CHANNEL$1, {
- channel: channel
- });
- }).catch(reject);
- });
- };
-};
-var getLeaveChannel = function getLeaveChannel(store) {
- return function (channelUrl) {
- var sdk = getSdk(store);
- var pubsub = getPubSub(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.leave().then(function () {
- resolve(channel);
- pubsub.publish(LEAVE_CHANNEL, {
- channel: channel
- });
- }).catch(reject);
- }).catch(reject);
- });
- };
-};
-var getFreezeChannel = function getFreezeChannel(store) {
- return function (channelUrl) {
- var sdk = getSdk(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.freeze().then(function () {
- // do not need pubsub here - event listener works
- resolve(channel);
- }).catch(reject);
- }).catch(reject);
- });
- };
-};
-var getUnFreezeChannel = function getUnFreezeChannel(store) {
- return function (channelUrl) {
- var sdk = getSdk(store);
- return new Promise(function (resolve, reject) {
- if (!sdk) {
- reject(new Error('Sdk not found'));
- }
-
- sdk.GroupChannel.getChannel(channelUrl).then(function (channel) {
- channel.unfreeze().then(function () {
- // do not need pubsub here - event listener works
- resolve(channel);
- }).catch(reject);
- }).catch(reject);
- });
- };
-};
-var selectors = {
- getSdk: getSdk,
- getConnect: getConnect,
- getDisconnect: getDisconnect,
- getUpdateUserInfo: getUpdateUserInfo,
- getSendUserMessage: getSendUserMessage,
- getSendFileMessage: getSendFileMessage,
- getUpdateUserMessage: getUpdateUserMessage,
- getDeleteMessage: getDeleteMessage,
- getResendUserMessage: getResendUserMessage,
- getResendFileMessage: getResendFileMessage,
- getFreezeChannel: getFreezeChannel,
- getUnFreezeChannel: getUnFreezeChannel,
- getCreateChannel: getCreateChannel,
- getLeaveChannel: getLeaveChannel
-};
-
-function UserProfile(_a) {
- var user = _a.user,
- currentUserId = _a.currentUserId,
- sdk = _a.sdk,
- logger = _a.logger,
- createChannel = _a.createChannel,
- onSuccess = _a.onSuccess;
- var stringSet = React.useContext(LocalizationContext).stringSet;
- return React__default.createElement("div", {
- className: "sendbird__user-profile"
- }, React__default.createElement("section", {
- className: "sendbird__user-profile-avatar"
- }, React__default.createElement(Avatar$1, {
- height: "80px",
- width: "80px",
- src: user.profileUrl
- })), React__default.createElement("section", {
- className: "sendbird__user-profile-name"
- }, React__default.createElement(Label, {
- type: LabelTypography.H_2,
- color: LabelColors.ONBACKGROUND_1
- }, user.nickname || stringSet.NO_NAME)), user.userId !== currentUserId && React__default.createElement("section", {
- className: "sendbird__user-profile-message"
- }, React__default.createElement(Button, {
- type: Type$1.SECONDARY,
- onClick: function onClick() {
- var params = new sdk.GroupChannelParams();
- params.isDistinct = true;
- params.addUserIds([user.userId]);
- onSuccess();
- createChannel(params).then(function (groupChannel) {
- logger.info('UserProfile, channel create', groupChannel);
- });
- }
- }, stringSet.USER_PROFILE__MESSAGE)), React__default.createElement("div", {
- className: "sendbird__user-profile-seperator"
- }), React__default.createElement("section", {
- className: "sendbird__user-profile-userId"
- }, React__default.createElement(Label, {
- className: "sendbird__user-profile-userId--label",
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, stringSet.USER_PROFILE__USER_ID), React__default.createElement(Label, {
- className: "sendbird__user-profile-userId--value",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, user.userId)));
-}
-
-var mapStoreToProps$1 = function mapStoreToProps(store) {
- return {
- sdk: getSdk(store),
- createChannel: getCreateChannel(store),
- logger: store.config.logger,
- pubsub: store.config.pubSub
- };
-};
-
-var ConnectedUserProfile = withSendbirdContext(UserProfile, mapStoreToProps$1);
-
-var MenuItems =
-/*#__PURE__*/
-function (_Component) {
- _inherits(MenuItems, _Component);
-
- function MenuItems(props) {
- var _this;
-
- _classCallCheck(this, MenuItems);
-
- _this = _possibleConstructorReturn(this, _getPrototypeOf(MenuItems).call(this, props));
-
- _defineProperty(_assertThisInitialized(_this), "showParent", function () {
- var _this$props$parentCon = _this.props.parentContainRef,
- parentContainRef = _this$props$parentCon === void 0 ? {} : _this$props$parentCon;
- var current = parentContainRef.current;
-
- if (parentContainRef && current) {
- current.classList.add('sendbird-icon--pressed');
- }
- });
-
- _defineProperty(_assertThisInitialized(_this), "hideParent", function () {
- var _this$props$parentCon2 = _this.props.parentContainRef,
- parentContainRef = _this$props$parentCon2 === void 0 ? {} : _this$props$parentCon2;
- var current = parentContainRef.current;
-
- if (parentContainRef && current) {
- current.classList.remove('sendbird-icon--pressed');
- }
- });
-
- _defineProperty(_assertThisInitialized(_this), "setupEvents", function () {
- var closeDropdown = _this.props.closeDropdown;
-
- var _assertThisInitialize = _assertThisInitialized(_this),
- menuRef = _assertThisInitialize.menuRef;
-
- var handleClickOutside = function handleClickOutside(event) {
- if (menuRef.current && !menuRef.current.contains(event.target)) {
- closeDropdown();
- }
- };
-
- _this.setState({
- handleClickOutside: handleClickOutside
- });
-
- document.addEventListener('mousedown', handleClickOutside);
- });
-
- _defineProperty(_assertThisInitialized(_this), "cleanUpEvents", function () {
- var handleClickOutside = _this.state.handleClickOutside;
- document.removeEventListener('mousedown', handleClickOutside);
- });
-
- _defineProperty(_assertThisInitialized(_this), "getMenuPosition", function () {
- var _this$props = _this.props,
- parentRef = _this$props.parentRef,
- openLeft = _this$props.openLeft;
- var parentRect = parentRef.current.getBoundingClientRect();
- var x = parentRect.x || parentRect.left;
- var y = parentRect.y || parentRect.top;
- var menuStyle = {
- top: y,
- left: x
- };
- if (!_this.menuRef.current) return menuStyle;
- var _window = window,
- innerWidth = _window.innerWidth,
- innerHeight = _window.innerHeight;
-
- var rect = _this.menuRef.current.getBoundingClientRect();
-
- if (y + rect.height > innerHeight) {
- menuStyle.top -= rect.height;
- }
-
- if (x + rect.width > innerWidth && !openLeft) {
- menuStyle.left -= rect.width;
- }
-
- if (menuStyle.top < 0) {
- menuStyle.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;
- }
-
- if (menuStyle.left < 0) {
- menuStyle.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;
- }
-
- menuStyle.top += 32;
-
- if (openLeft) {
- var padding = Number.isNaN(rect.width - 30) ? 108 // default
- : rect.width - 30;
- menuStyle.left -= padding;
- }
-
- return _this.setState({
- menuStyle: menuStyle
- });
- });
-
- _this.menuRef = React__default.createRef();
- _this.state = {
- menuStyle: {},
- handleClickOutside: function handleClickOutside() {}
- };
- return _this;
- }
-
- _createClass(MenuItems, [{
- key: "componentDidMount",
- value: function componentDidMount() {
- this.setupEvents();
- this.getMenuPosition();
- this.showParent();
- }
- }, {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- this.cleanUpEvents();
- this.hideParent();
- }
- }, {
- key: "render",
- value: function render() {
- var menuStyle = this.state.menuStyle;
- var _this$props2 = this.props,
- children = _this$props2.children,
- style = _this$props2.style;
- return reactDom.createPortal(React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
- className: "sendbird-dropdown__menu-backdrop"
- }), React__default.createElement("ul", {
- className: "sendbird-dropdown__menu",
- ref: this.menuRef,
- style: _objectSpread2({
- display: 'inline-block',
- position: 'fixed',
- left: "".concat(Math.round(menuStyle.left), "px"),
- top: "".concat(Math.round(menuStyle.top), "px")
- }, style)
- }, children)), document.getElementById('sendbird-dropdown-portal'));
- }
- }]);
-
- return MenuItems;
-}(React.Component);
-MenuItems.propTypes = {
- closeDropdown: PropTypes.func.isRequired,
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired,
- style: PropTypes.shape({}),
- // https://stackoverflow.com/a/51127130
- parentRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
- current: PropTypes.instanceOf(Element)
- })]).isRequired,
- parentContainRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
- current: PropTypes.instanceOf(Element)
- })]).isRequired,
- openLeft: PropTypes.bool
-};
-MenuItems.defaultProps = {
- style: {},
- openLeft: false
-};
-
-var componentClassName = 'sendbird-sort-by-row';
-function SortByRow(_ref) {
- var className = _ref.className,
- maxItemCount = _ref.maxItemCount,
- itemWidth = _ref.itemWidth,
- itemHeight = _ref.itemHeight,
- children = _ref.children;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift(componentClassName);
-
- if (children.length > maxItemCount) {
- var result = [];
-
- for (var i = 0; i < children.length; i += maxItemCount) {
- result.push(React__default.createElement("div", {
- className: injectingClassName.join(' '),
- style: {
- width: itemWidth * maxItemCount,
- height: itemHeight
- },
- key: className + i
- }, children.slice(i, i + maxItemCount)));
- }
-
- return result;
- }
-
- return React__default.createElement("div", {
- className: injectingClassName.join(' '),
- style: {
- width: itemWidth * children.length,
- height: itemHeight
- }
- }, children);
-}
-SortByRow.propTypes = {
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- maxItemCount: PropTypes.number.isRequired,
- itemWidth: PropTypes.number.isRequired,
- itemHeight: PropTypes.number.isRequired,
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element), PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).isRequired
-};
-SortByRow.defaultProps = {
- className: ''
-};
-
-var EmojiListItems =
-/*#__PURE__*/
-function (_Component) {
- _inherits(EmojiListItems, _Component);
-
- function EmojiListItems(props) {
- var _this;
-
- _classCallCheck(this, EmojiListItems);
-
- _this = _possibleConstructorReturn(this, _getPrototypeOf(EmojiListItems).call(this, props));
-
- _defineProperty(_assertThisInitialized(_this), "showParent", function () {
- var _this$props$parentCon = _this.props.parentContainRef,
- parentContainRef = _this$props$parentCon === void 0 ? {} : _this$props$parentCon;
- var current = parentContainRef.current;
-
- if (parentContainRef && current) {
- current.classList.add('sendbird-reactions--pressed');
- }
- });
-
- _defineProperty(_assertThisInitialized(_this), "hideParent", function () {
- var _this$props$parentCon2 = _this.props.parentContainRef,
- parentContainRef = _this$props$parentCon2 === void 0 ? {} : _this$props$parentCon2;
- var current = parentContainRef.current;
-
- if (parentContainRef && current) {
- current.classList.remove('sendbird-reactions--pressed');
- }
- });
-
- _defineProperty(_assertThisInitialized(_this), "setupEvents", function () {
- var closeDropdown = _this.props.closeDropdown;
-
- var _assertThisInitialize = _assertThisInitialized(_this),
- reactionRef = _assertThisInitialize.reactionRef;
-
- var handleClickOutside = function handleClickOutside(event) {
- if (reactionRef.current && !reactionRef.current.contains(event.target)) {
- closeDropdown();
- }
- };
-
- _this.setState({
- handleClickOutside: handleClickOutside
- });
-
- document.addEventListener('mousedown', handleClickOutside);
- });
-
- _defineProperty(_assertThisInitialized(_this), "cleanUpEvents", function () {
- var handleClickOutside = _this.state.handleClickOutside;
- document.removeEventListener('mousedown', handleClickOutside);
- });
-
- _defineProperty(_assertThisInitialized(_this), "getBarPosition", function () {
- var _this$props = _this.props,
- parentRef = _this$props.parentRef,
- spaceFromTrigger = _this$props.spaceFromTrigger;
- var spaceFromTriggerX = spaceFromTrigger.x || 0;
- var spaceFromTriggerY = spaceFromTrigger.y || 0;
- var parentRect = parentRef.current.getBoundingClientRect();
- var x = parentRect.x || parentRect.left;
- var y = parentRect.y || parentRect.top;
- var reactionStyle = {
- top: y,
- left: x
- };
- if (!_this.reactionRef.current) return reactionStyle;
-
- var rect = _this.reactionRef.current.getBoundingClientRect(); // const childRect = this.reactionRef.current.children[0].getBoundingClientRect();
-
-
- if (reactionStyle.top < rect.height) {
- reactionStyle.top += parentRect.height;
- reactionStyle.top += spaceFromTriggerY;
- } else {
- reactionStyle.top -= rect.height;
- reactionStyle.top -= spaceFromTriggerY;
- }
-
- reactionStyle.left -= rect.width / 2;
- reactionStyle.left += parentRect.height / 2 - 2;
- reactionStyle.left += spaceFromTriggerX;
- var maximumLeft = window.innerWidth - rect.width;
-
- if (maximumLeft < reactionStyle.left) {
- reactionStyle.left = maximumLeft;
- }
-
- if (reactionStyle.left < 0) {
- reactionStyle.left = 0;
- }
-
- return _this.setState({
- reactionStyle: reactionStyle
- });
- });
-
- _this.reactionRef = React__default.createRef();
- _this.state = {
- reactionStyle: {},
- handleClickOutside: function handleClickOutside() {}
- };
- return _this;
- }
-
- _createClass(EmojiListItems, [{
- key: "componentDidMount",
- value: function componentDidMount() {
- this.setupEvents();
- this.getBarPosition();
- this.showParent();
- }
- }, {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- this.cleanUpEvents();
- this.hideParent();
- }
- }, {
- key: "render",
- value: function render() {
- var reactionStyle = this.state.reactionStyle;
- var children = this.props.children;
- return reactDom.createPortal(React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
- className: "sendbird-dropdown__menu-backdrop"
- }), React__default.createElement("ul", {
- className: "sendbird-dropdown__reaction-bar",
- ref: this.reactionRef,
- style: {
- display: 'inline-block',
- position: 'fixed',
- left: "".concat(Math.round(reactionStyle.left), "px"),
- top: "".concat(Math.round(reactionStyle.top), "px")
- }
- }, React__default.createElement(SortByRow, {
- className: "sendbird-dropdown__reaction-bar__row",
- maxItemCount: 8,
- itemWidth: 44,
- itemHeight: 40
- }, children))), document.getElementById('sendbird-emoji-list-portal'));
- }
- }]);
-
- return EmojiListItems;
-}(React.Component);
-EmojiListItems.propTypes = {
- closeDropdown: PropTypes.func.isRequired,
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired,
- parentRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
- current: PropTypes.instanceOf(Element)
- })]).isRequired,
- parentContainRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
- current: PropTypes.instanceOf(Element)
- })]).isRequired,
- spaceFromTrigger: PropTypes.shape({
- x: PropTypes.number,
- y: PropTypes.number
- })
-};
-EmojiListItems.defaultProps = {
- spaceFromTrigger: {}
-};
-
-var ENTER = 13;
-var MenuItems$1 = MenuItems;
-var EmojiListItems$1 = EmojiListItems;
-var MenuItem = function MenuItem(_ref) {
- var children = _ref.children,
- onClick = _ref.onClick,
- className = _ref.className;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React__default.createElement("li", {
- tabIndex: 0,
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-dropdown__menu-item']).join(' '),
- onClick: onClick,
- onKeyPress: function onKeyPress(e) {
- if (e.keyCode === ENTER) {
- onClick(e);
- }
- },
- role: "menuitem"
- }, React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1,
- className: "sendbird-dropdown__menu-item__text"
- }, children));
-};
-MenuItem.propTypes = {
- onClick: PropTypes.func.isRequired,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired
-};
-MenuItem.defaultProps = {
- className: ''
-};
-function ContextMenu(_ref2) {
- var menuTrigger = _ref2.menuTrigger,
- menuItems = _ref2.menuItems;
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showMenu = _useState2[0],
- setShowMenu = _useState2[1];
-
- return React__default.createElement("div", {
- className: "sendbird-context-menu",
- style: {
- display: 'inline'
- }
- }, menuTrigger(function () {
- return setShowMenu(!showMenu);
- }), showMenu && menuItems(function () {
- return setShowMenu(false);
- }));
-}
-ContextMenu.propTypes = {
- menuTrigger: PropTypes.func.isRequired,
- menuItems: PropTypes.func.isRequired
-};
-
-var COMPONENT_NAME = 'sendbird-user-list-item';
-function UserListItem(_ref) {
- var user = _ref.user,
- className = _ref.className,
- checkBox = _ref.checkBox,
- currentUser = _ref.currentUser,
- checked = _ref.checked,
- _onChange = _ref.onChange,
- action = _ref.action;
- var injectingClassNames = Array.isArray(className) ? className : [className];
- var uniqueKey = user.userId;
- var actionRef = React__default.useRef(null);
- var parentRef = React__default.useRef(null);
- var avatarRef = React__default.useRef(null);
-
- var _useContext = React.useContext(UserProfileContext),
- disableUserProfile = _useContext.disableUserProfile,
- renderUserProfile = _useContext.renderUserProfile;
-
- var _useContext2 = React.useContext(LocalizationContext),
- stringSet = _useContext2.stringSet;
-
- return React__default.createElement("div", {
- ref: parentRef,
- className: [COMPONENT_NAME].concat(_toConsumableArray(injectingClassNames)).join(' ')
- }, user.isMuted && React__default.createElement(MutedAvatarOverlay, {
- height: 40,
- width: 40
- }), React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(Avatar$1, {
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- ref: avatarRef,
- className: "".concat(COMPONENT_NAME, "__avatar"),
- src: user.profileUrl,
- width: "40px",
- height: "40px"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- openLeft: true,
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: user,
- currentUserId: currentUser,
- close: closeDropdown
- }) : React__default.createElement(ConnectedUserProfile, {
- user: user,
- currentUserId: currentUser,
- onSuccess: closeDropdown
- }));
- }
- }), React__default.createElement(Label, {
- className: "".concat(COMPONENT_NAME, "__title"),
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, user.nickname || stringSet.NO_NAME, currentUser === user.userId && ' (You)'), // if there is now nickname, display userId
- !user.nickname && React__default.createElement(Label, {
- className: "".concat(COMPONENT_NAME, "__subtitle"),
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, user.userId), checkBox && // eslint-disable-next-line jsx-a11y/label-has-associated-control
- React__default.createElement("label", {
- className: "".concat(COMPONENT_NAME, "__checkbox"),
- htmlFor: uniqueKey
- }, React__default.createElement(Checkbox, {
- id: uniqueKey,
- checked: checked,
- onChange: function onChange(event) {
- return _onChange(event);
- }
- })), user.role === 'operator' && React__default.createElement(Label, {
- className: "".concat(COMPONENT_NAME, "__operator"),
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_2
- }, "Operator"), action && React__default.createElement("div", {
- ref: actionRef,
- className: "".concat(COMPONENT_NAME, "__action")
- }, action({
- actionRef: actionRef,
- parentRef: parentRef
- })));
-}
-UserListItem.propTypes = {
- user: PropTypes.shape({
- userId: PropTypes.string,
- role: PropTypes.string,
- isMuted: PropTypes.bool,
- nickname: PropTypes.string,
- profileUrl: PropTypes.string
- }).isRequired,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- currentUser: PropTypes.string,
- action: PropTypes.element,
- checkBox: PropTypes.bool,
- checked: PropTypes.bool,
- onChange: PropTypes.func
-};
-UserListItem.defaultProps = {
- className: '',
- currentUser: '',
- checkBox: false,
- checked: false,
- action: null,
- onChange: function onChange() {}
-};
-
-var filterUser = function filterUser(idsToFilter) {
- return function (currentId) {
- return idsToFilter.includes(currentId);
- };
-};
-
-var InviteMembers = function InviteMembers(props) {
- var userQueryCreator = props.userQueryCreator,
- closeModal = props.closeModal,
- _onSubmit = props.onSubmit,
- submitText = props.submitText,
- titleText = props.titleText,
- idsToFilter = props.idsToFilter,
- swapParams = props.swapParams;
-
- var _useState = React.useState([]),
- _useState2 = _slicedToArray(_useState, 2),
- users = _useState2[0],
- setUsers = _useState2[1];
-
- var _useState3 = React.useState({}),
- _useState4 = _slicedToArray(_useState3, 2),
- selectedUsers = _useState4[0],
- setSelectedUsers = _useState4[1];
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var _useState5 = React.useState({}),
- _useState6 = _slicedToArray(_useState5, 2),
- usersDataSource = _useState6[0],
- setUsersDataSource = _useState6[1];
-
- var selectedCount = Object.keys(selectedUsers).length;
- React.useEffect(function () {
- var applicationUserListQuery = userQueryCreator();
- setUsersDataSource(applicationUserListQuery);
- applicationUserListQuery.next(function (res, err) {
- // eslint-disable-next-line no-underscore-dangle
- var users_ = res;
- var error = err;
-
- if (swapParams) {
- users_ = err;
- error = users_;
- }
-
- if (error) {
- return;
- }
-
- setUsers(users_);
- });
- }, []);
- return React__default.createElement(Modal, {
- onCancel: closeModal,
- onSubmit: function onSubmit() {
- var selectedUserList = Object.keys(selectedUsers);
-
- if (selectedUserList.length > 0) {
- _onSubmit(selectedUserList);
-
- closeModal();
- }
- },
- submitText: submitText,
- titleText: titleText,
- type: Type$1.PRIMARY
- }, React__default.createElement("div", null, React__default.createElement(Label, {
- color: selectedCount > 0 ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3,
- type: LabelTypography.CAPTION_1
- }, "".concat(selectedCount, " ").concat(stringSet.MODAL__INVITE_MEMBER__SELECTEC)), React__default.createElement("div", {
- className: "sendbird-create-channel--scroll",
- onScroll: function onScroll(e) {
- var hasNext = usersDataSource.hasNext;
- var fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;
-
- if (hasNext && fetchMore) {
- usersDataSource.next(function (usersBatch, error) {
- if (error) {
- return;
- }
-
- setUsers([].concat(_toConsumableArray(users), _toConsumableArray(usersBatch)));
- });
- }
- }
- }, users.map(function (user) {
- return !filterUser(idsToFilter)(user.userId) && React__default.createElement(UserListItem, {
- key: user.userId,
- user: user,
- checkBox: true,
- checked: selectedUsers[user.userId],
- onChange: function onChange(event) {
- var modifiedSelectedUsers = _objectSpread2({}, selectedUsers, _defineProperty({}, event.target.id, event.target.checked));
-
- if (!event.target.checked) {
- delete modifiedSelectedUsers[event.target.id];
- }
-
- setSelectedUsers(modifiedSelectedUsers);
- }
- });
- }))));
-};
-
-InviteMembers.propTypes = {
- idsToFilter: PropTypes.arrayOf(PropTypes.string),
- swapParams: PropTypes.bool,
- userQueryCreator: PropTypes.func.isRequired,
- closeModal: PropTypes.func.isRequired,
- onSubmit: PropTypes.func.isRequired,
- submitText: PropTypes.string,
- titleText: PropTypes.string
-};
-InviteMembers.defaultProps = {
- swapParams: false,
- submitText: 'create',
- titleText: 'Create new channel',
- idsToFilter: []
-};
-
-var createDefaultUserListQuery = function createDefaultUserListQuery(_ref) {
- var sdk = _ref.sdk,
- _ref$userFilledApplic = _ref.userFilledApplicationUserListQuery,
- userFilledApplicationUserListQuery = _ref$userFilledApplic === void 0 ? {} : _ref$userFilledApplic;
- var params = sdk.createApplicationUserListQuery();
-
- if (userFilledApplicationUserListQuery) {
- Object.keys(userFilledApplicationUserListQuery).forEach(function (key) {
- params[key] = userFilledApplicationUserListQuery[key];
- });
- }
-
- return params;
-};
-
-var getApplicationAttributes = function getApplicationAttributes() {
- var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var _sdk$appInfo = sdk.appInfo,
- appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
- var _appInfo$applicationA = appInfo.applicationAttributes,
- applicationAttributes = _appInfo$applicationA === void 0 ? [] : _appInfo$applicationA;
- return applicationAttributes;
-};
-
-var isBroadcastChannelEnabled = function isBroadcastChannelEnabled() {
- var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var ALLOW_BROADCAST_CHANNEL = 'allow_broadcast_channel';
- var applicationAttributes = getApplicationAttributes(sdk);
-
- if (Array.isArray(applicationAttributes)) {
- return applicationAttributes.includes(ALLOW_BROADCAST_CHANNEL);
- }
-
- return false;
-};
-var isSuperGroupChannelEnabled = function isSuperGroupChannelEnabled() {
- var sdk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var ALLOW_SUPER_GROUP_CHANNEL = 'allow_super_group_channel';
- var applicationAttributes = getApplicationAttributes(sdk);
-
- if (Array.isArray(applicationAttributes)) {
- return applicationAttributes.includes(ALLOW_SUPER_GROUP_CHANNEL);
- }
-
- return false;
-};
-var setChannelType = function setChannelType(params, type) {
- if (type === 'broadcast') {
- // eslint-disable-next-line no-param-reassign
- params.isBroadcast = true;
- }
-
- if (type === 'supergroup') {
- // eslint-disable-next-line no-param-reassign
- params.isSuper = true;
- }
-
- return params;
-};
-var createChannel = function createChannel(sdk, selectedUsers, onBeforeCreateChannel, userId) {
- var type = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'group';
- return new Promise(function (resolve, reject) {
- // have custom params
- if (onBeforeCreateChannel) {
- var _params = onBeforeCreateChannel(selectedUsers);
-
- setChannelType(_params, type);
- sdk.GroupChannel.createChannel(_params, function (response, error) {
- var swapParams = sdk.getErrorFirstCallback();
- var groupChannel = response;
- var err = error;
-
- if (swapParams) {
- groupChannel = error;
- err = response;
- }
-
- if (err) {
- reject(err);
- }
-
- resolve(groupChannel);
- });
- return;
- }
-
- var params = new sdk.GroupChannelParams();
- params.addUserIds(selectedUsers);
- params.isDistinct = false;
-
- if (userId) {
- params.operatorUserIds = [userId];
- }
-
- setChannelType(params, type); // do not have custom params
-
- sdk.GroupChannel.createChannel(params, function (response, error) {
- var swapParams = sdk.getErrorFirstCallback();
- var groupChannel = response;
- var err = error;
-
- if (swapParams) {
- groupChannel = error;
- err = response;
- }
-
- if (err) {
- reject(err);
- }
-
- resolve(groupChannel);
- });
- });
-};
-
-function AddChannel(_ref) {
- var sdk = _ref.sdk,
- disabled = _ref.disabled,
- channelListDispatcher = _ref.channelListDispatcher,
- onBeforeCreateChannel = _ref.onBeforeCreateChannel,
- userId = _ref.userId,
- userFilledApplicationUserListQuery = _ref.userFilledApplicationUserListQuery,
- userListQuery = _ref.userListQuery;
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showModal = _useState2[0],
- setShowModal = _useState2[1];
-
- var _useState3 = React.useState(0),
- _useState4 = _slicedToArray(_useState3, 2),
- step = _useState4[0],
- setStep = _useState4[1];
-
- var _useState5 = React.useState('group'),
- _useState6 = _slicedToArray(_useState5, 2),
- type = _useState6[0],
- setType = _useState6[1];
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- if (!sdk || !sdk.createApplicationUserListQuery) {
- return null;
- }
-
- var isBroadcastAvailable = isBroadcastChannelEnabled(sdk);
- var isSupergroupAvailable = isSuperGroupChannelEnabled(sdk);
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(IconButton, {
- height: "32px",
- width: "32px",
- onClick: function onClick() {
- setShowModal(true);
- },
- disabled: disabled
- }, React__default.createElement(Icon, {
- type: IconTypes.CREATE,
- fillColor: IconColors.PRIMARY,
- width: "24px",
- height: "24px"
- })), showModal && step === 0 && React__default.createElement(Modal, {
- titleText: "New channel",
- hideFooter: true,
- onCancel: function onCancel() {
- setShowModal(false);
- },
- onSubmit: function onSubmit() {}
- }, React__default.createElement("div", {
- className: "sendbird-add-channel__rectangle-wrap"
- }, React__default.createElement("div", {
- className: "sendbird-add-channel__rectangle",
- onClick: function onClick() {
- setType('group');
- setStep(1);
- },
- role: "button",
- tabIndex: 0,
- onKeyDown: function onKeyDown() {
- setType('group');
- setStep(1);
- }
- }, React__default.createElement(Icon, {
- type: IconTypes.CHAT
- }), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, "Group")), isSupergroupAvailable && React__default.createElement("div", {
- className: "sendbird-add-channel__rectangle",
- onClick: function onClick() {
- setType('supergroup');
- setStep(1);
- },
- role: "button",
- tabIndex: 0,
- onKeyDown: function onKeyDown() {
- setType('supergroup');
- setStep(1);
- }
- }, React__default.createElement(Icon, {
- type: IconTypes.SUPER_GROUP
- }), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, "Super group")), isBroadcastAvailable && React__default.createElement("div", {
- className: "sendbird-add-channel__rectangle",
- onClick: function onClick() {
- setType('broadcast');
- setStep(1);
- },
- role: "button",
- tabIndex: 0,
- onKeyDown: function onKeyDown() {
- setType('broadcast');
- setStep(1);
- }
- }, React__default.createElement(Icon, {
- type: IconTypes.BROADCAST
- }), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, "Broadcast")))), showModal && step === 1 && React__default.createElement(InviteMembers, {
- swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
- titleText: stringSet.MODAL__CREATE_CHANNEL__TITLE,
- submitText: stringSet.BUTTON__CREATE,
- closeModal: function closeModal() {
- setStep(0);
- setShowModal(false);
- },
- idsToFilter: [userId],
- userQueryCreator: function userQueryCreator() {
- return userListQuery && typeof userListQuery === 'function' ? userListQuery() : createDefaultUserListQuery({
- sdk: sdk,
- userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
- });
- },
- onSubmit: function onSubmit(selectedUsers) {
- return createChannel(sdk, selectedUsers, onBeforeCreateChannel, userId, type).then(function (channel) {
- // maybe - do this in event listener
- channelListDispatcher({
- type: CREATE_CHANNEL,
- payload: channel
- });
- });
- }
- }));
-}
-AddChannel.propTypes = {
- sdk: PropTypes.shape({
- getErrorFirstCallback: PropTypes.func,
- createApplicationUserListQuery: PropTypes.func
- }).isRequired,
- disabled: PropTypes.bool,
- channelListDispatcher: PropTypes.func.isRequired,
- userFilledApplicationUserListQuery: PropTypes.shape({}),
- onBeforeCreateChannel: PropTypes.func,
- userId: PropTypes.string.isRequired,
- userListQuery: PropTypes.func
-};
-AddChannel.defaultProps = {
- disabled: false,
- userFilledApplicationUserListQuery: {},
- onBeforeCreateChannel: null,
- userListQuery: null
-};
-
-var LeaveChannel = function LeaveChannel(props) {
- var onCloseModal = props.onCloseModal,
- onLeaveChannel = props.onLeaveChannel;
- return React__default.createElement(Modal, {
- onCancel: onCloseModal,
- onSubmit: onLeaveChannel,
- submitText: "Leave",
- titleText: "Leave this channel?"
- });
-};
-
-LeaveChannel.propTypes = {
- onCloseModal: PropTypes.func.isRequired,
- onLeaveChannel: PropTypes.func.isRequired
-};
-
-function ChannelPreviewAction(_ref) {
- var disabled = _ref.disabled,
- onLeaveChannel = _ref.onLeaveChannel;
- var parentRef = React.useRef(null);
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showModal = _useState2[0],
- setShowModal = _useState2[1];
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React__default.createElement("div", {
- role: "button",
- style: {
- display: 'inline-block'
- },
- onKeyDown: function onKeyDown(e) {
- e.stopPropagation();
- },
- tabIndex: 0,
- onClick: function onClick(e) {
- e.stopPropagation();
- }
- }, React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: parentRef,
- onClick: toggleDropdown,
- height: "32px",
- width: "32px"
- }, React__default.createElement(Icon, {
- type: IconTypes.MORE,
- fillColor: IconColors.PRIMARY,
- width: "24px",
- height: "24px"
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: parentRef,
- parentContainRef: parentRef,
- closeDropdown: closeDropdown
- }, React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- setShowModal(true);
- closeDropdown();
- }
- }, stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE));
- }
- }), showModal && React__default.createElement(LeaveChannel, {
- onCloseModal: function onCloseModal() {
- return setShowModal(false);
- },
- onLeaveChannel: onLeaveChannel
- }));
-}
-ChannelPreviewAction.propTypes = {
- disabled: PropTypes.bool,
- onLeaveChannel: PropTypes.func.isRequired
-};
-ChannelPreviewAction.defaultProps = {
- disabled: false
-};
-
-function Loader(_ref) {
- var children = _ref.children,
- className = _ref.className,
- width = _ref.width,
- height = _ref.height;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React__default.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-loader']).join(' '),
- style: {
- width: typeof width === 'string' ? width : "".concat(width, "px"),
- height: typeof height === 'string' ? height : "".concat(height, "px")
- }
- }, children);
-}
-Loader.propTypes = {
- children: PropTypes.element,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
-};
-Loader.defaultProps = {
- children: React__default.createElement(Icon, {
- type: IconTypes.SPINNER,
- width: "26px",
- height: "26px"
- }),
- className: '',
- width: '26px',
- height: '26px'
-};
-
-function PlaceHolder(_ref) {
- var className = _ref.className,
- type = _ref.type,
- retryToConnect = _ref.retryToConnect;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React__default.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-place-holder']).join(' ')
- }, type === PlaceHolderTypes.LOADING ? React__default.createElement(Loader, {
- width: "48px",
- height: "48px"
- }, React__default.createElement(Icon, {
- type: IconTypes.SPINNER_LARGE,
- width: "48px",
- height: "48px"
- })) : null, type === PlaceHolderTypes.NO_CHANNELS || type === PlaceHolderTypes.WRONG ? React__default.createElement("div", {
- className: "sendbird-place-holder__body"
- }, type === PlaceHolderTypes.NO_CHANNELS && React__default.createElement(Icon, {
- className: "sendbird-place-holder__body__icon",
- type: IconTypes.CHAT,
- fillColor: IconColors.ON_BACKGROUND_3,
- width: "64px",
- height: "64px"
- }), type === PlaceHolderTypes.WRONG && React__default.createElement(Icon, {
- className: "sendbird-place-holder__body__icon",
- type: IconTypes.ERROR,
- fillColor: IconColors.ON_BACKGROUND_3,
- width: "64px",
- height: "64px"
- }), React__default.createElement(Label, {
- className: "sendbird-place-holder__body__text",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_2
- }, type === PlaceHolderTypes.NO_CHANNELS ? stringSet.PLACE_HOLDER__NO_CHANNEL : stringSet.PLACE_HOLDER__WRONG), retryToConnect ? React__default.createElement("div", {
- className: "sendbird-place-holder__body__reconnect",
- role: "button",
- tabIndex: 0,
- onClick: retryToConnect,
- onKeyPress: retryToConnect
- }, React__default.createElement(Icon, {
- className: "sendbird-place-holder__body__reconnect__icon",
- type: IconTypes.REFRESH,
- fillColor: IconColors.PRIMARY,
- width: "20px",
- height: "20px"
- }), React__default.createElement(Label, {
- className: "sendbird-place-holder__body__reconnect__text",
- type: LabelTypography.BUTTON_1,
- color: LabelColors.PRIMARY
- }, stringSet.PLACE_HOLDER__RETRY_TO_CONNECT)) : null) : null);
-}
-PlaceHolder.propTypes = {
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- type: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(PlaceHolderTypes)), PropTypes.string]).isRequired,
- retryToConnect: PropTypes.func
-};
-PlaceHolder.defaultProps = {
- className: '',
- retryToConnect: null
-};
-
-function ChannelsPlaceholder(_ref) {
- var type = _ref.type;
- return React__default.createElement("div", {
- className: "sendbird-channel-list"
- }, React__default.createElement(PlaceHolder, {
- type: type
- }));
-}
-ChannelsPlaceholder.propTypes = {
- type: PropTypes.string.isRequired
-};
-
-var createEventHandler = function createEventHandler(_ref) {
- var sdk = _ref.sdk,
- sdkChannelHandlerId = _ref.sdkChannelHandlerId,
- channelListDispatcher = _ref.channelListDispatcher,
- logger = _ref.logger;
- var ChannelHandler = new sdk.ChannelHandler();
-
- ChannelHandler.onChannelChanged = function (channel) {
- logger.info('ChannelList: onChannelChanged', channel);
- channelListDispatcher({
- type: ON_CHANNEL_CHANGED,
- payload: channel
- });
- };
-
- ChannelHandler.onChannelDeleted = function (channelUrl) {
- logger.info('ChannelList: onChannelDeleted', channelUrl);
- channelListDispatcher({
- type: ON_CHANNEL_DELETED,
- payload: channelUrl
- });
- };
-
- ChannelHandler.onUserJoined = function (channel) {
- logger.info('ChannelList: onUserJoined', channel);
-
- if (channel.lastMessage) {
- channelListDispatcher({
- type: ON_USER_JOINED,
- payload: channel
- });
- }
- };
-
- ChannelHandler.onUserBanned = function (channel, user) {
- var currentUser = sdk.currentUser;
- logger.info('Channel | useHandleChannelEvents: onUserBanned', channel);
-
- if (user.userId === currentUser.userId) {
- channelListDispatcher({
- type: ON_USER_LEFT,
- payload: {
- channel: channel,
- isMe: true
- }
- });
- } else {
- channelListDispatcher({
- type: ON_USER_LEFT,
- payload: {
- channel: channel,
- isMe: false
- }
- });
- }
- };
-
- ChannelHandler.onUserLeft = function (channel, leftUser) {
- var currentUser = sdk.currentUser;
- var isMe = currentUser.userId === leftUser.userId;
- logger.info('ChannelList: onUserLeft', channel);
- channelListDispatcher({
- type: ON_USER_LEFT,
- payload: {
- channel: channel,
- isMe: isMe
- }
- });
- };
-
- ChannelHandler.onReadStatus = function (channel) {
- logger.info('ChannelList: onReadStatus', channel);
- channelListDispatcher({
- type: ON_READ_RECEIPT_UPDATED,
- payload: channel
- });
- };
-
- ChannelHandler.onDeliveryReceiptUpdated = function (channel) {
- logger.info('ChannelList: onDeliveryReceiptUpdated', channel);
-
- if (channel.lastMessage) {
- channelListDispatcher({
- type: ON_DELIVERY_RECEIPT_UPDATED,
- payload: channel
- });
- }
- };
-
- ChannelHandler.onMessageUpdated = function (channel, message) {
- if (channel.lastMessage.isEqual(message)) {
- logger.info('ChannelList: onMessageUpdated', channel);
- channelListDispatcher({
- type: ON_LAST_MESSAGE_UPDATED,
- payload: channel
- });
- }
- };
-
- ChannelHandler.onChannelHidden = function (channel) {
- logger.info('ChannelList: onChannelHidden', channel);
- channelListDispatcher({
- type: ON_CHANNEL_ARCHIVED,
- payload: channel.url
- });
- };
-
- ChannelHandler.onChannelFrozen = function (channel) {
- logger.info('ChannelList: onChannelFrozen', channel);
- channelListDispatcher({
- type: ON_CHANNEL_FROZEN,
- payload: channel
- });
- };
-
- ChannelHandler.onChannelUnfrozen = function (channel) {
- logger.info('ChannelList: onChannelUnfrozen', channel);
- channelListDispatcher({
- type: ON_CHANNEL_UNFROZEN,
- payload: channel
- });
- };
-
- logger.info('ChannelList: Added channelHandler');
- sdk.addChannelHandler(sdkChannelHandlerId, ChannelHandler);
-};
-
-var createApplicationUserListQuery = function createApplicationUserListQuery(_ref2) {
- var sdk = _ref2.sdk,
- _ref2$userFilledChann = _ref2.userFilledChannelListQuery,
- userFilledChannelListQuery = _ref2$userFilledChann === void 0 ? {} : _ref2$userFilledChann;
- var channelListQuery = sdk.GroupChannel.createMyGroupChannelListQuery();
- channelListQuery.includeEmpty = false;
- channelListQuery.order = 'latest_last_message'; // 'chronological', 'latest_last_message', 'channel_name_alphabetical', and 'metadata_value_alphabetical'
-
- channelListQuery.limit = 20; // The value of pagination limit could be set up to 100.
-
- if (userFilledChannelListQuery) {
- Object.keys(userFilledChannelListQuery).forEach(function (key) {
- channelListQuery[key] = userFilledChannelListQuery[key];
- });
- }
-
- return channelListQuery;
-};
-/**
- * Setup event listener
- * create channel source query
- * addloading screen
- */
-
-
-function setupChannelList(_ref3) {
- var sdk = _ref3.sdk,
- sdkChannelHandlerId = _ref3.sdkChannelHandlerId,
- channelListDispatcher = _ref3.channelListDispatcher,
- setChannelSource = _ref3.setChannelSource,
- onChannelSelect = _ref3.onChannelSelect,
- userFilledChannelListQuery = _ref3.userFilledChannelListQuery,
- logger = _ref3.logger,
- sortChannelList = _ref3.sortChannelList;
- createEventHandler({
- sdk: sdk,
- channelListDispatcher: channelListDispatcher,
- sdkChannelHandlerId: sdkChannelHandlerId,
- logger: logger
- });
- logger.info('ChannelList - creating query', {
- userFilledChannelListQuery: userFilledChannelListQuery
- });
- var channelListQuery = createApplicationUserListQuery({
- sdk: sdk,
- userFilledChannelListQuery: userFilledChannelListQuery
- });
- logger.info('ChannelList - created query', channelListQuery);
- setChannelSource(channelListQuery);
- channelListDispatcher({
- type: INIT_CHANNELS_START
- });
- logger.info('ChannelList - fetching channels');
-
- if (channelListQuery.hasNext) {
- channelListQuery.next(function (response, error) {
- var swapParams = sdk.getErrorFirstCallback();
- var channelList = response;
- var err = error;
-
- if (swapParams) {
- channelList = error;
- err = response;
- }
-
- logger.info('ChannelList - fetched channels', channelList);
-
- if (err) {
- logger.error('ChannelList - couldnt fetch channels', err);
- channelListDispatcher({
- type: INIT_CHANNELS_FAILURE
- });
- return;
- } // select first channel
-
-
- logger.info('ChannelList - highlight channel', channelList[0]);
- var sorted = channelList;
-
- if (sortChannelList && typeof sortChannelList === 'function') {
- sorted = sortChannelList(channelList);
- logger.info('ChannelList - channel list sorted', sorted);
- }
-
- onChannelSelect(sorted[0]);
- channelListDispatcher({
- type: INIT_CHANNELS_SUCCESS,
- payload: sorted
- });
-
- if (channelList && typeof channelList.forEach === 'function') {
- logger.info('ChannelList - mark all channels as delivered');
- channelList.forEach(function (c) {
- return c.markAsDelivered();
- });
- }
- });
- } else {
- logger.warning('ChannelList - there are no more channels');
- }
-}
-
-var pubSubHandleRemover = function pubSubHandleRemover(subscriber) {
- subscriber.forEach(function (s) {
- try {
- s.remove();
- } catch (_unused) {//
- }
- });
-};
-var pubSubHandler = function pubSubHandler(pubSub, channelListDispatcher) {
- var subScriber = new Map();
- if (!pubSub) return subScriber;
- subScriber.set(CREATE_CHANNEL$1, pubSub.subscribe(CREATE_CHANNEL$1, function (msg) {
- var channel = msg.channel;
- channelListDispatcher({
- type: 'CREATE_CHANNEL',
- payload: channel
- });
- }));
- subScriber.set(UPDATE_USER_MESSAGE, pubSub.subscribe(UPDATE_USER_MESSAGE, function (msg) {
- var channel = msg.channel,
- message = msg.message;
- var updatedChannel = channel;
- updatedChannel.lastMessage = message;
-
- if (channel) {
- channelListDispatcher({
- type: ON_LAST_MESSAGE_UPDATED,
- payload: updatedChannel
- });
- }
- }));
- subScriber.set(LEAVE_CHANNEL, pubSub.subscribe(LEAVE_CHANNEL, function (msg) {
- var channel = msg.channel;
- channelListDispatcher({
- type: LEAVE_CHANNEL_SUCCESS,
- payload: channel.url
- });
- }));
- subScriber.set(SEND_MESSAGE_START, pubSub.subscribe(SEND_MESSAGE_START, function (msg) {
- var channel = msg.channel;
- channelListDispatcher({
- type: CHANNEL_REPLACED_TO_TOP,
- payload: channel
- });
- }));
- return subScriber;
-};
-
-var noop$1 = function noop() {};
-
-function ChannelList(props) {
- var _props$stores = props.stores,
- _props$stores$sdkStor = _props$stores.sdkStore,
- sdkStore = _props$stores$sdkStor === void 0 ? {} : _props$stores$sdkStor,
- _props$stores$userSto = _props$stores.userStore,
- userStore = _props$stores$userSto === void 0 ? {} : _props$stores$userSto,
- _props$config = props.config,
- userId = _props$config.userId,
- isOnline = _props$config.isOnline,
- userListQuery = _props$config.userListQuery,
- logger = _props$config.logger,
- pubSub = _props$config.pubSub,
- theme = _props$config.theme,
- userDispatcher = props.dispatchers.userDispatcher,
- _props$queries = props.queries,
- queries = _props$queries === void 0 ? {} : _props$queries,
- renderChannelPreview = props.renderChannelPreview,
- renderHeader = props.renderHeader,
- renderUserProfile = props.renderUserProfile,
- disableUserProfile = props.disableUserProfile,
- allowProfileEdit = props.allowProfileEdit,
- sortChannelList = props.sortChannelList,
- onProfileEditSuccess = props.onProfileEditSuccess,
- onThemeChange = props.onThemeChange,
- onBeforeCreateChannel = props.onBeforeCreateChannel,
- onChannelSelect = props.onChannelSelect;
- var _props$config2 = props.config,
- config = _props$config2 === void 0 ? {} : _props$config2; // enable if it is true atleast once(both are flase by default)
-
- var enableEditProfile = allowProfileEdit || config.allowProfileEdit;
- var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
- var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
- var _sdkStore$sdk = sdkStore.sdk,
- sdk = _sdkStore$sdk === void 0 ? {} : _sdkStore$sdk;
- var userFilledChannelListQuery = queries.channelListQuery;
- var userFilledApplicationUserListQuery = queries.applicationUserListQuery;
- var sdkError = sdkStore.error;
-
- var _useState = React.useState({}),
- _useState2 = _slicedToArray(_useState, 2),
- user = _useState2[0],
- setUser = _useState2[1];
-
- React.useEffect(function () {
- setUser(userStore.user);
- }, [userStore.user]);
- var sdkIntialized = sdkStore.initialized;
-
- var _useReducer = React.useReducer(reducer$2, channelListInitialState),
- _useReducer2 = _slicedToArray(_useReducer, 2),
- channelListStore = _useReducer2[0],
- channelListDispatcher = _useReducer2[1];
-
- var _useState3 = React.useState({}),
- _useState4 = _slicedToArray(_useState3, 2),
- channelSource = _useState4[0],
- setChannelSource = _useState4[1];
-
- var _useState5 = React.useState(null),
- _useState6 = _slicedToArray(_useState5, 2),
- sdkChannelHandlerId = _useState6[0],
- setSdkChannelHandlerId = _useState6[1];
-
- var _useState7 = React.useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- showProfileEdit = _useState8[0],
- setShowProfileEdit = _useState8[1];
-
- var loading = channelListStore.loading,
- currentChannel = channelListStore.currentChannel;
- React.useEffect(function () {
- var subscriber = pubSubHandler(pubSub, channelListDispatcher);
- return function () {
- pubSubHandleRemover(subscriber);
- };
- }, [sdkIntialized]);
- React.useEffect(function () {
- setSdkChannelHandlerId(uuidv4);
-
- if (sdkIntialized) {
- logger.info('ChannelList: Setup channelHandlers');
- setupChannelList({
- sdk: sdk,
- sdkChannelHandlerId: sdkChannelHandlerId,
- channelListDispatcher: channelListDispatcher,
- setChannelSource: setChannelSource,
- onChannelSelect: onChannelSelect,
- userFilledChannelListQuery: userFilledChannelListQuery,
- logger: logger,
- sortChannelList: sortChannelList
- });
- } else {
- logger.info('ChannelList: Removing channelHandlers'); // remove previous channelHandlers
-
- if (sdk && sdk.removeChannelHandler) {
- sdk.removeChannelHandler(sdkChannelHandlerId);
- } // remove channelSource
-
-
- setChannelSource({}); // cleanup
-
- channelListDispatcher({
- type: RESET_CHANNEL_LIST
- });
- }
-
- return function () {
- logger.info('ChannelList: Removing channelHandlers');
-
- if (sdk && sdk.removeChannelHandler) {
- sdk.removeChannelHandler(sdkChannelHandlerId);
- }
- };
- }, [sdkIntialized, userFilledChannelListQuery, sortChannelList]);
- var allChannels = channelListStore.allChannels;
- var sortedChannels = sortChannelList && typeof sortChannelList === 'function' ? sortChannelList(allChannels) : allChannels;
-
- if (sortedChannels.length !== allChannels.length) {
- var warning = "ChannelList: You have removed/added extra channels on sortChannelList\n this could cause unexpected problems"; // eslint-disable-next-line no-console
-
- console.warn(warning, {
- before: allChannels,
- after: sortedChannels
- });
- logger.warning(warning, {
- before: allChannels,
- after: sortedChannels
- });
- }
-
- React.useEffect(function () {
- if (!sdk || !sdk.GroupChannel) {
- return;
- }
-
- sdk.GroupChannel.getChannel(currentChannel, function (groupChannel) {
- if (groupChannel) {
- onChannelSelect(groupChannel);
- } else {
- onChannelSelect(null);
- }
- });
- }, [currentChannel]);
- return React__default.createElement(UserProfileProvider, {
- disableUserProfile: userDefinedDisableUserProfile,
- renderUserProfile: userDefinedRenderProfile,
- className: "sendbird-channel-list"
- }, React__default.createElement("div", {
- className: "sendbird-channel-list__header"
- }, React__default.createElement(ChannelHeader, {
- renderHeader: renderHeader,
- user: user,
- onEdit: function onEdit() {
- if (enableEditProfile) {
- setShowProfileEdit(true);
- }
- },
- allowProfileEdit: enableEditProfile,
- iconButton: React__default.createElement(AddChannel, {
- disabled: !isOnline,
- userListQuery: userListQuery,
- sdk: sdk,
- channelListDispatcher: channelListDispatcher,
- userId: userId,
- userFilledApplicationUserListQuery: userFilledApplicationUserListQuery,
- onBeforeCreateChannel: onBeforeCreateChannel
- })
- })), showProfileEdit && React__default.createElement(ConnectedEditUserProfile, {
- onThemeChange: onThemeChange,
- user: user,
- onCancel: function onCancel() {
- setShowProfileEdit(false);
- },
- onSubmit: function onSubmit(newName, newFile) {
- sdk.updateCurrentUserInfoWithProfileImage(newName, newFile, function (updatedUser) {
- userDispatcher({
- type: UPDATE_USER_INFO,
- payload: updatedUser
- });
-
- if (onProfileEditSuccess && typeof onProfileEditSuccess === 'function') {
- onProfileEditSuccess(updatedUser);
- }
- });
- }
- }), React__default.createElement("div", {
- className: "sendbird-channel-list__body",
- onScroll: function onScroll(e) {
- var fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;
-
- if (fetchMore && channelSource.hasNext) {
- logger.info('ChannelList: Fetching more channels');
- channelListDispatcher({
- type: FETCH_CHANNELS_START
- });
- channelSource.next(function (response, error) {
- var swapParams = sdk.getErrorFirstCallback();
- var channelList = response;
- var err = error;
-
- if (swapParams) {
- channelList = error;
- err = response;
- }
-
- if (err) {
- logger.info('ChannelList: Fetching channels failed', err);
- channelListDispatcher({
- type: FETCH_CHANNELS_FAILURE,
- payload: channelList
- });
- return;
- }
-
- logger.info('ChannelList: Fetching channels successful', channelList);
- channelListDispatcher({
- type: FETCH_CHANNELS_SUCCESS,
- payload: channelList
- });
-
- if (channelList && typeof channelList.forEach === 'function') {
- logger.info('ChannelList: Marking all channels as read');
- channelList.forEach(function (c) {
- return c.markAsDelivered();
- });
- }
- });
- }
- }
- }, sdkError && React__default.createElement(ChannelsPlaceholder, {
- type: PlaceHolderTypes.WRONG
- }), React__default.createElement("div", null, sortedChannels && sortedChannels.map(function (channel, idx) {
- var _onLeaveChannel = function onLeaveChannel(c, cb) {
- logger.info('ChannelList: Leaving channel', c);
- c.leave().then(function (res) {
- logger.info('ChannelList: Leaving channel success', res);
-
- if (cb && typeof cb === 'function') {
- cb(res, null);
- }
-
- channelListDispatcher({
- type: LEAVE_CHANNEL_SUCCESS,
- payload: channel.url
- });
- }).catch(function (err) {
- logger.error('ChannelList: Leaving channel failed', err);
-
- if (cb && typeof cb === 'function') {
- cb(null, err);
- }
- });
- };
-
- var onClick = function onClick() {
- if (!isOnline) {
- return;
- }
-
- logger.info('ChannelList: Clicked on channel:', channel);
- channelListDispatcher({
- type: SET_CURRENT_CHANNEL,
- payload: channel.url
- });
- };
-
- return renderChannelPreview ? // eslint-disable-next-line
- React__default.createElement("div", {
- key: channel.url,
- onClick: onClick
- }, renderChannelPreview({
- channel: channel,
- onLeaveChannel: _onLeaveChannel
- })) : React__default.createElement(ChannelPreview, {
- key: channel.url,
- tabIndex: idx,
- onClick: onClick,
- channel: channel,
- currentUser: user,
- theme: theme,
- isActive: channel.url === currentChannel // todo - potential performance hit refactor
- ,
- ChannelAction: React__default.createElement(ChannelPreviewAction, {
- disabled: !isOnline,
- onLeaveChannel: function onLeaveChannel() {
- return _onLeaveChannel(channel);
- }
- })
- });
- })), (!sdkIntialized || loading) && React__default.createElement(ChannelsPlaceholder, {
- type: PlaceHolderTypes.LOADING
- }), // placeholder
- (!allChannels || allChannels.length === 0) && React__default.createElement(ChannelsPlaceholder, {
- type: PlaceHolderTypes.NO_CHANNELS
- })));
-}
-
-ChannelList.propTypes = {
- stores: PropTypes.shape({
- sdkStore: PropTypes.shape({
- initialized: PropTypes.bool
- }),
- userStore: PropTypes.shape({
- user: PropTypes.shape({})
- })
- }).isRequired,
- dispatchers: PropTypes.shape({
- userDispatcher: PropTypes.func
- }).isRequired,
- config: PropTypes.shape({
- userId: PropTypes.string.isRequired,
- userListQuery: PropTypes.func,
- theme: PropTypes.string,
- isOnline: PropTypes.bool,
- logger: PropTypes.shape({
- info: PropTypes.func,
- error: PropTypes.func,
- warning: PropTypes.func
- }),
- pubSub: PropTypes.shape({
- subscribe: PropTypes.func,
- publish: PropTypes.func
- })
- }).isRequired,
- queries: PropTypes.shape({
- channelListQuery: PropTypes.shape({
- channelNameContainsFilter: PropTypes.string,
- channelUrlsFilter: PropTypes.arrayOf(PropTypes.string),
- customTypesFilter: PropTypes.arrayOf(PropTypes.string),
- customTypeStartsWithFilter: PropTypes.string,
- hiddenChannelFilter: PropTypes.string,
- includeEmpty: PropTypes.bool,
- limit: PropTypes.number,
- memberStateFilter: PropTypes.string,
- metadataOrderKeyFilter: PropTypes.string,
- nicknameContainsFilter: PropTypes.string,
- order: PropTypes.string,
- publicChannelFilter: PropTypes.string,
- superChannelFilter: PropTypes.string,
- unreadChannelFilter: PropTypes.string,
- userIdsExactFilter: PropTypes.arrayOf(PropTypes.string),
- userIdsIncludeFilter: PropTypes.arrayOf(PropTypes.string),
- userIdsIncludeFilterQueryType: PropTypes.string
- }),
- applicationUserListQuery: PropTypes.shape({
- limit: PropTypes.number,
- userIdsFilter: PropTypes.arrayOf(PropTypes.string),
- metaDataKeyFilter: PropTypes.string,
- metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string)
- })
- }),
- onBeforeCreateChannel: PropTypes.func,
- renderChannelPreview: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- allowProfileEdit: PropTypes.bool,
- sortChannelList: PropTypes.func,
- onThemeChange: PropTypes.func,
- onProfileEditSuccess: PropTypes.func,
- renderHeader: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- onChannelSelect: PropTypes.func
-};
-ChannelList.defaultProps = {
- onBeforeCreateChannel: null,
- renderChannelPreview: null,
- renderHeader: null,
- disableUserProfile: false,
- renderUserProfile: null,
- allowProfileEdit: false,
- onThemeChange: null,
- sortChannelList: null,
- onProfileEditSuccess: null,
- queries: {},
- onChannelSelect: noop$1
-};
-var ChannelList$1 = withSendbirdContext(ChannelList);
-
-var RESET_MESSAGES = 'RESET_MESSAGES';
-var RESET_STATE = 'RESET_STATE';
-var CLEAR_SENT_MESSAGES = 'CLEAR_SENT_MESSAGES';
-var GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';
-var GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';
-var SEND_MESSAGEGE_START = 'SEND_MESSAGEGE_START';
-var SEND_MESSAGEGE_SUCESS = 'SEND_MESSAGEGE_SUCESS';
-var SEND_MESSAGEGE_FAILURE = 'SEND_MESSAGEGE_FAILURE';
-var RESEND_MESSAGEGE_START = 'RESEND_MESSAGEGE_START';
-var ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';
-var ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';
-var ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';
-var ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';
-var SET_CURRENT_CHANNEL$1 = 'SET_CURRENT_CHANNEL';
-var SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';
-var MARK_AS_READ = 'MARK_AS_READ';
-var ON_REACTION_UPDATED = 'ON_REACTION_UPDATED';
-var SET_EMOJI_CONTAINER = 'SET_EMOJI_CONTAINER';
-var SET_READ_STATUS = 'SET_READ_STATUS';
-
-// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
-var SUPPORTED_MIMES = {
- IMAGE: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp' // not supported in IE
- ],
- VIDEO: ['video/mpeg', 'video/ogg', 'video/webm', 'video/mp4']
-};
-var isImage = function isImage(type) {
- return SUPPORTED_MIMES.IMAGE.includes(type);
-};
-var isVideo = function isVideo(type) {
- return SUPPORTED_MIMES.VIDEO.includes(type);
-};
-var unSupported = function unSupported(type) {
- return !(isImage(type) || isVideo(type));
-};
-
-var MessageTypes = {
- ADMIN: 'ADMIN',
- USER: 'USER',
- FILE: 'FILE',
- THUMBNAIL: 'THUMBNAIL',
- OG: 'OG'
-};
-var SendingMessageStatus = {
- NONE: 'none',
- SUCCEEDED: 'succeeded',
- FAILED: 'failed',
- PENDING: 'pending'
-};
-var getMessageType = function getMessageType(message) {
- if (message.isUserMessage && message.isUserMessage() || message.messageType === 'user') {
- return message.ogMetaData ? MessageTypes.OG : MessageTypes.USER;
- }
-
- if (message.isAdminMessage && message.isAdminMessage()) {
- return MessageTypes.ADMIN;
- }
-
- if (message.isFileMessage && message.isFileMessage() || message.messageType === 'file') {
- return isImage(message.type) || isVideo(message.type) ? MessageTypes.THUMBNAIL : MessageTypes.FILE;
- }
-
- return '';
-};
-
-var UNDEFINED = 'undefined';
-var SUCCEEDED = SendingMessageStatus.SUCCEEDED,
- FAILED = SendingMessageStatus.FAILED,
- PENDING = SendingMessageStatus.PENDING;
-var scrollIntoLast = function scrollIntoLast(selector) {
- var intialTry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
- var MAX_TRIES = 10;
- var currentTry = intialTry;
-
- if (currentTry > MAX_TRIES) {
- return;
- }
-
- try {
- var nodes = document.querySelectorAll(selector);
- var last = nodes[nodes.length - 1];
- last.scrollIntoView(false);
- /** alignToTop: false */
- } catch (error) {
- setTimeout(function () {
- scrollIntoLast(selector, currentTry + 1);
- }, 500 * currentTry);
- }
-};
-var pubSubHandleRemover$1 = function pubSubHandleRemover(subscriber) {
- subscriber.forEach(function (s) {
- try {
- s.remove();
- } catch (_unused) {//
- }
- });
-};
-var pubSubHandler$1 = function pubSubHandler(channelUrl, pubSub, dispatcher) {
- var subscriber = new Map();
- if (!pubSub || !pubSub.subscribe) return subscriber;
- subscriber.set(SEND_USER_MESSAGE, pubSub.subscribe(SEND_USER_MESSAGE, function (msg) {
- var channel = msg.channel,
- message = msg.message;
- scrollIntoLast('.sendbird-msg--scroll-ref');
-
- if (channel && channelUrl === channel.url) {
- dispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- }
- }));
- subscriber.set(SEND_MESSAGE_START, pubSub.subscribe(SEND_MESSAGE_START, function (msg) {
- var channel = msg.channel,
- message = msg.message;
-
- if (channel && channelUrl === channel.url) {
- dispatcher({
- type: SEND_MESSAGEGE_START,
- payload: message
- });
- }
- }));
- subscriber.set(SEND_FILE_MESSAGE, pubSub.subscribe(SEND_FILE_MESSAGE, function (msg) {
- var channel = msg.channel,
- message = msg.message;
- scrollIntoLast('.sendbird-msg--scroll-ref');
-
- if (channel && channelUrl === channel.url) {
- dispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- }
- }));
- subscriber.set(UPDATE_USER_MESSAGE, pubSub.subscribe(UPDATE_USER_MESSAGE, function (msg) {
- var channel = msg.channel,
- message = msg.message,
- fromSelector = msg.fromSelector;
-
- if (fromSelector && channel && channelUrl === channel.url) {
- dispatcher({
- type: ON_MESSAGE_UPDATED,
- payload: message
- });
- }
- }));
- subscriber.set(DELETE_MESSAGE, pubSub.subscribe(DELETE_MESSAGE, function (msg) {
- var channel = msg.channel,
- messageId = msg.messageId;
-
- if (channel && channelUrl === channel.url) {
- dispatcher({
- type: ON_MESSAGE_DELETED,
- payload: messageId
- });
- }
- }));
- return subscriber;
-};
-var getParsedStatus = function getParsedStatus(message, currentGroupChannel) {
- if (message.requestState === FAILED) {
- return MessageStatusType.FAILED;
- }
-
- if (message.requestState === PENDING) {
- return MessageStatusType.PENDING;
- }
-
- if (message.requestState === SUCCEEDED) {
- if (!currentGroupChannel) {
- return MessageStatusType.SENT;
- }
-
- var unreadCount = currentGroupChannel.getReadReceipt(message);
-
- if (unreadCount === 0) {
- return MessageStatusType.READ;
- }
-
- var isDelivered = currentGroupChannel.getDeliveryReceipt(message) === 0;
-
- if (isDelivered) {
- return MessageStatusType.DELIVERED;
- }
-
- return MessageStatusType.SENT;
- }
-
- return null;
-};
-var isOperator = function isOperator() {
- var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var myRole = groupChannel.myRole;
- return myRole === 'operator';
-};
-var isDisabledBecauseFrozen = function isDisabledBecauseFrozen() {
- var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var isFrozen = groupChannel.isFrozen;
- return isFrozen && !isOperator(groupChannel);
-};
-var isDisabledBecauseMuted = function isDisabledBecauseMuted() {
- var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var myMutedState = groupChannel.myMutedState;
- return myMutedState === 'muted';
-};
-var getEmojiCategoriesFromEmojiContainer = function getEmojiCategoriesFromEmojiContainer() {
- var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- return emojiContainer.emojiCategories ? emojiContainer.emojiCategories : [];
-};
-var getAllEmojisFromEmojiContainer = function getAllEmojisFromEmojiContainer() {
- var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var _emojiContainer$emoji = emojiContainer.emojiCategories,
- emojiCategories = _emojiContainer$emoji === void 0 ? [] : _emojiContainer$emoji;
- var allEmojis = [];
-
- for (var categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {
- var emojis = emojiCategories[categoryIndex].emojis;
-
- for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {
- allEmojis.push(emojis[emojiIndex]);
- }
- }
-
- return allEmojis;
-};
-var getEmojisFromEmojiContainer = function getEmojisFromEmojiContainer() {
- var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var emojiCategoryId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
- return emojiContainer.emojiCategories ? emojiContainer.emojiCategories.filter(function (emojiCategory) {
- return emojiCategory.id === emojiCategoryId;
- })[0].emojis : [];
-};
-var getAllEmojisMapFromEmojiContainer = function getAllEmojisMapFromEmojiContainer() {
- var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var _emojiContainer$emoji2 = emojiContainer.emojiCategories,
- emojiCategories = _emojiContainer$emoji2 === void 0 ? [] : _emojiContainer$emoji2;
- var allEmojisMap = new Map();
-
- for (var categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {
- var emojis = emojiCategories[categoryIndex].emojis;
-
- for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {
- var _emojis$emojiIndex = emojis[emojiIndex],
- key = _emojis$emojiIndex.key,
- url = _emojis$emojiIndex.url;
- allEmojisMap.set(key, url);
- }
- }
-
- return allEmojisMap;
-};
-var getNicknamesMapFromMembers = function getNicknamesMapFromMembers() {
- var members = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
- var nicknamesMap = new Map();
-
- for (var memberIndex = 0; memberIndex < members.length; memberIndex += 1) {
- var _members$memberIndex = members[memberIndex],
- userId = _members$memberIndex.userId,
- nickname = _members$memberIndex.nickname;
- nicknamesMap.set(userId, nickname);
- }
-
- return nicknamesMap;
-};
-var getMessageCreatedAt$1 = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-var isSameGroup = function isSameGroup(message, comparingMessage) {
- if (!message || !comparingMessage || !message.sender || !comparingMessage.sender || !message.createdAt || !comparingMessage.createdAt || !message.sender.userId || !comparingMessage.sender.userId) {
- return false;
- }
-
- return message.sendingStatus === comparingMessage.sendingStatus && message.sender.userId === comparingMessage.sender.userId && getMessageCreatedAt$1(message) === getMessageCreatedAt$1(comparingMessage);
-};
-var compareMessagesForGrouping = function compareMessagesForGrouping(prevMessage, currMessage, nextMessage) {
- return [isSameGroup(prevMessage, currMessage), isSameGroup(currMessage, nextMessage)];
-};
-var passUnsuccessfullMessages = function passUnsuccessfullMessages(allMessages, newMessage) {
- var _newMessage$sendingSt = newMessage.sendingStatus,
- sendingStatus = _newMessage$sendingSt === void 0 ? UNDEFINED : _newMessage$sendingSt;
-
- if (sendingStatus === SUCCEEDED || sendingStatus === PENDING) {
- var lastIndexOfSucceededMessage = allMessages.map(function (message) {
- return message.sendingStatus || (message.isAdminMessage && message.isAdminMessage() ? SUCCEEDED : UNDEFINED);
- }).lastIndexOf(SUCCEEDED);
-
- if (lastIndexOfSucceededMessage + 1 < allMessages.length) {
- var messages = _toConsumableArray(allMessages);
-
- messages.splice(lastIndexOfSucceededMessage + 1, 0, newMessage);
- return messages;
- }
- }
-
- return [].concat(_toConsumableArray(allMessages), [newMessage]);
-};
-
-var messagesInitialState = {
- initialized: false,
- loading: false,
- allMessages: [],
- currentGroupChannel: {
- members: []
- },
- hasMore: false,
- lastMessageTimeStamp: 0,
- emojiContainer: {},
- readStatus: {},
- unreadCount: 0,
- unreadSince: null,
- isInvalid: false
-};
-
-var isEmpty$1 = function isEmpty(val) {
- return val === null || val === undefined;
-}; // Some Ids return string and number inconsistently
-// only use to comapre IDs
-
-
-function compareIds (a, b) {
- if (isEmpty$1(a) || isEmpty$1(b)) {
- return false;
- }
-
- var aString = a.toString();
- var bString = b.toString();
- return aString === bString;
-}
-
-var SUCCEEDED$1 = SendingMessageStatus.SUCCEEDED,
- FAILED$1 = SendingMessageStatus.FAILED,
- PENDING$1 = SendingMessageStatus.PENDING;
-function reducer$3(state, action) {
- switch (action.type) {
- case RESET_STATE:
- return messagesInitialState;
-
- case RESET_MESSAGES:
- return _objectSpread2({}, state, {
- // when user switches channel, if the previous channel `hasMore`
- // the onScroll gets called twice, setting hasMore false prevents this
- hasMore: false,
- allMessages: []
- });
-
- case GET_PREV_MESSAGES_START:
- return _objectSpread2({}, state, {
- loading: true
- });
-
- case CLEAR_SENT_MESSAGES:
- return _objectSpread2({}, state, {
- allMessages: _toConsumableArray(state.allMessages.filter(function (m) {
- return m.sendingStatus !== SUCCEEDED$1;
- }))
- });
-
- case GET_PREV_MESSAGES_SUCESS:
- {
- var recivedMessages = action.payload.messages || [];
- var _action$payload$curre = action.payload.currentGroupChannel,
- currentGroupChannel = _action$payload$curre === void 0 ? {} : _action$payload$curre;
- var stateChannel = state.currentGroupChannel || {};
- var stateChannelUrl = stateChannel.url;
- var actionChannelUrl = currentGroupChannel.url;
-
- if (actionChannelUrl !== stateChannelUrl) {
- return state;
- } // remove duplicate messages
-
-
- var filteredAllMessages = state.allMessages.filter(function (msg) {
- return !recivedMessages.find(function (_ref) {
- var messageId = _ref.messageId;
- return compareIds(messageId, msg.messageId);
- });
- });
- return _objectSpread2({}, state, {
- loading: false,
- initialized: true,
- hasMore: action.payload.hasMore,
- lastMessageTimeStamp: action.payload.lastMessageTimeStamp,
- allMessages: [].concat(_toConsumableArray(recivedMessages), _toConsumableArray(filteredAllMessages))
- });
- }
-
- case SEND_MESSAGEGE_START:
- return _objectSpread2({}, state, {
- allMessages: [].concat(_toConsumableArray(state.allMessages), [_objectSpread2({}, action.payload)])
- });
-
- case SEND_MESSAGEGE_SUCESS:
- {
- var newMessages = state.allMessages.map(function (m) {
- return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
- });
-
- _toConsumableArray(newMessages).sort(function (a, b) {
- return a.sendingStatus && b.sendingStatus && a.sendingStatus === SUCCEEDED$1 && (b.sendingStatus === PENDING$1 || b.sendingStatus === FAILED$1) ? -1 : 1;
- });
-
- return _objectSpread2({}, state, {
- allMessages: newMessages
- });
- }
-
- case SEND_MESSAGEGE_FAILURE:
- {
- // eslint-disable-next-line no-param-reassign
- action.payload.failed = true;
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.map(function (m) {
- return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
- })
- });
- }
-
- case SET_CURRENT_CHANNEL$1:
- {
- return _objectSpread2({}, state, {
- currentGroupChannel: action.payload,
- isInvalid: false
- });
- }
-
- case SET_CHANNEL_INVALID:
- {
- return _objectSpread2({}, state, {
- isInvalid: true
- });
- }
-
- case ON_MESSAGE_RECEIVED:
- {
- var _action$payload = action.payload,
- channel = _action$payload.channel,
- message = _action$payload.message;
-
- var _state$currentGroupCh = state.currentGroupChannel,
- _currentGroupChannel = _state$currentGroupCh === void 0 ? {} : _state$currentGroupCh,
- unreadCount = state.unreadCount,
- unreadSince = state.unreadSince;
-
- var currentGroupChannelUrl = _currentGroupChannel.url;
-
- if (!compareIds(channel.url, currentGroupChannelUrl)) {
- return state;
- } // Excluded overlapping messages
-
-
- if (!(state.allMessages.map(function (msg) {
- return msg.messageId;
- }).indexOf(message.messageId) < 0)) {
- return state;
- }
-
- if (message.isAdminMessage && message.isAdminMessage()) {
- return _objectSpread2({}, state, {
- allMessages: passUnsuccessfullMessages(state.allMessages, message)
- });
- }
-
- return _objectSpread2({}, state, {
- unreadCount: unreadCount + 1,
- unreadSince: unreadCount === 0 ? format(new Date(), 'p MMM dd') : unreadSince,
- allMessages: passUnsuccessfullMessages(state.allMessages, message)
- });
- }
-
- case ON_MESSAGE_UPDATED:
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.map(function (m) {
- return compareIds(m.messageId, action.payload.messageId) ? action.payload : m;
- })
- });
-
- case RESEND_MESSAGEGE_START:
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.map(function (m) {
- return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
- })
- });
-
- case MARK_AS_READ:
- return _objectSpread2({}, state, {
- unreadCount: 0,
- unreadSince: null
- });
-
- case ON_MESSAGE_DELETED:
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.filter(function (m) {
- return !compareIds(m.messageId, action.payload);
- })
- });
-
- case ON_MESSAGE_DELETED_BY_REQ_ID:
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.filter(function (m) {
- return !compareIds(m.reqId, action.payload);
- })
- });
-
- case SET_EMOJI_CONTAINER:
- {
- return _objectSpread2({}, state, {
- emojiContainer: action.payload
- });
- }
-
- case SET_READ_STATUS:
- {
- return _objectSpread2({}, state, {
- readStatus: action.payload
- });
- }
-
- case ON_REACTION_UPDATED:
- {
- return _objectSpread2({}, state, {
- allMessages: state.allMessages.map(function (m) {
- if (compareIds(m.messageId, action.payload.messageId)) {
- if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {
- m.applyReactionEvent(action.payload);
- }
-
- return m;
- }
-
- return m;
- })
- });
- }
-
- default:
- return state;
- }
-}
-
-/**
- * Handles ChannelEvents and send values to dispatcher using messagesDispatcher
- * messagesDispatcher: Dispatcher
- * sdk: sdkInstance
- * logger: loggerInstance
- * channelUrl: string
- * sdkInit: bool
- */
-
-function useHandleChannelEvents(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- sdkInit = _ref.sdkInit;
- var messagesDispatcher = _ref2.messagesDispatcher,
- sdk = _ref2.sdk,
- logger = _ref2.logger;
- var channelUrl = currentGroupChannel && currentGroupChannel.url;
- React.useEffect(function () {
- var messageReciverId = uuidv4();
-
- if (channelUrl && sdk && sdk.ChannelHandler) {
- var ChannelHandler = new sdk.ChannelHandler();
- logger.info('Channel | useHandleChannelEvents: Setup event handler', messageReciverId);
-
- ChannelHandler.onMessageReceived = function (channel, message) {
- if (compareIds(channel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);
- messagesDispatcher({
- type: ON_MESSAGE_RECEIVED,
- payload: {
- channel: channel,
- message: message
- }
- });
- }
- };
-
- ChannelHandler.onMessageUpdated = function (_, message) {
- logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);
- messagesDispatcher({
- type: ON_MESSAGE_UPDATED,
- payload: message
- });
- };
-
- ChannelHandler.onMessageDeleted = function (_, messageId) {
- logger.info('Channel | useHandleChannelEvents: onMessageDeleted', messageId);
- messagesDispatcher({
- type: ON_MESSAGE_DELETED,
- payload: messageId
- });
- };
-
- ChannelHandler.onReactionUpdated = function (_, reactionEvent) {
- logger.info('Channel | useHandleChannelEvents: onReactionUpdated', reactionEvent);
- messagesDispatcher({
- type: ON_REACTION_UPDATED,
- payload: reactionEvent
- });
- };
-
- ChannelHandler.onChannelChanged = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onChannelChanged', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onChannelFrozen = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onChannelFrozen', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onChannelUnfrozen = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onUserMuted = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onUserMuted', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onUserUnmuted = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onUserUnmuted', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onUserBanned = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onUserBanned', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- };
-
- ChannelHandler.onOperatorUpdated = function (groupChannel) {
- if (compareIds(groupChannel.url, currentGroupChannel.url)) {
- logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- }
- }; // Add this channel event handler to the SendBird object.
-
-
- sdk.addChannelHandler(messageReciverId, ChannelHandler);
- }
-
- return function () {
- if (sdk && sdk.removeChannelHandler) {
- logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', messageReciverId);
- sdk.removeChannelHandler(messageReciverId);
- }
- };
- }, [channelUrl, sdkInit]);
-}
-
-function useSetChannel(_ref, _ref2) {
- var channelUrl = _ref.channelUrl,
- sdkInit = _ref.sdkInit;
- var messagesDispatcher = _ref2.messagesDispatcher,
- sdk = _ref2.sdk,
- logger = _ref2.logger;
- React.useEffect(function () {
- if (channelUrl && sdkInit && sdk && sdk.GroupChannel) {
- logger.info('Channel | useSetChannel fetching channel', channelUrl);
- sdk.GroupChannel.getChannel(channelUrl).then(function (groupChannel) {
- logger.info('Channel | useSetChannel fetched channel', groupChannel);
- messagesDispatcher({
- type: SET_CURRENT_CHANNEL$1,
- payload: groupChannel
- });
- logger.info('Channel: Mark as read', groupChannel); // this order is important - this mark as read should update the event handler up above
-
- groupChannel.markAsRead();
- }).catch(function (e) {
- logger.warning('Channel | useSetChannel fetch channel failed', {
- channelUrl: channelUrl,
- e: e
- });
- messagesDispatcher({
- type: SET_CHANNEL_INVALID
- });
- });
- sdk.getAllEmoji(function (emojiContainer_, err) {
- if (err) {
- logger.error('Channel: Getting emojis failed', err);
- return;
- }
-
- logger.info('Channel: Getting emojis success', emojiContainer_);
- messagesDispatcher({
- type: SET_EMOJI_CONTAINER,
- payload: emojiContainer_
- });
- });
- }
- }, [channelUrl, sdkInit]);
-}
-
-function useInitialMessagesFetch(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- userFilledMessageListQuery = _ref.userFilledMessageListQuery;
- var sdk = _ref2.sdk,
- logger = _ref2.logger,
- messagesDispatcher = _ref2.messagesDispatcher;
- var channelUrl = currentGroupChannel && currentGroupChannel.url;
- React.useEffect(function () {
- logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);
- messagesDispatcher({
- type: RESET_MESSAGES
- });
-
- if (sdk && sdk.MessageListParams && currentGroupChannel && currentGroupChannel.getMessagesByMessageId) {
- var messageListParams = new sdk.MessageListParams();
- messageListParams.prevResultSize = 30;
- messageListParams.isInclusive = true;
- messageListParams.includeReplies = false;
- messageListParams.includeReaction = true;
-
- if (userFilledMessageListQuery) {
- Object.keys(userFilledMessageListQuery).forEach(function (key) {
- messageListParams[key] = userFilledMessageListQuery[key];
- });
- }
-
- logger.info('Channel: Fetching messages', {
- currentGroupChannel: currentGroupChannel,
- userFilledMessageListQuery: userFilledMessageListQuery
- });
- currentGroupChannel.getMessagesByTimestamp(new Date().getTime(), messageListParams).then(function (messages) {
- var hasMore = messages && messages.length > 0;
- var lastMessageTimeStamp = hasMore ? messages[0].createdAt : null;
- messagesDispatcher({
- type: GET_PREV_MESSAGES_SUCESS,
- payload: {
- messages: messages,
- hasMore: hasMore,
- lastMessageTimeStamp: lastMessageTimeStamp,
- currentGroupChannel: currentGroupChannel
- }
- });
- }).catch(function (error) {
- logger.error('Channel: Fetching messages failed', error);
- messagesDispatcher({
- type: GET_PREV_MESSAGES_SUCESS,
- payload: {
- messages: [],
- hasMore: false,
- lastMessageTimeStamp: 0,
- currentGroupChannel: currentGroupChannel
- }
- });
- }).finally(function () {
- currentGroupChannel.markAsRead();
- setTimeout(function () {
- return scrollIntoLast('.sendbird-msg--scroll-ref');
- });
- });
- }
- }, [channelUrl, userFilledMessageListQuery]);
-}
-
-function useHandleReconnect(_ref, _ref2) {
- var isOnline = _ref.isOnline;
- var logger = _ref2.logger,
- sdk = _ref2.sdk,
- currentGroupChannel = _ref2.currentGroupChannel,
- messagesDispatcher = _ref2.messagesDispatcher,
- userFilledMessageListQuery = _ref2.userFilledMessageListQuery;
- React.useEffect(function () {
- var wasOffline = !isOnline;
- return function () {
- // state changed from offline to online
- if (wasOffline) {
- logger.info('Refreshing conversation state');
- var _sdk$appInfo = sdk.appInfo,
- appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
- var useReaction = appInfo.isUsingReaction || false;
- var messageListParams = new sdk.MessageListParams();
- messageListParams.prevResultSize = 30;
- messageListParams.includeReplies = false;
- messageListParams.includeReaction = useReaction;
-
- if (userFilledMessageListQuery) {
- Object.keys(userFilledMessageListQuery).forEach(function (key) {
- messageListParams[key] = userFilledMessageListQuery[key];
- });
- }
-
- logger.info('Channel: Fetching messages', {
- currentGroupChannel: currentGroupChannel,
- userFilledMessageListQuery: userFilledMessageListQuery
- });
- messagesDispatcher({
- type: GET_PREV_MESSAGES_START
- });
- sdk.GroupChannel.getChannel(currentGroupChannel.url).then(function (groupChannel) {
- var lastMessageTime = new Date().getTime();
- groupChannel.getMessagesByTimestamp(lastMessageTime, messageListParams).then(function (messages) {
- messagesDispatcher({
- type: CLEAR_SENT_MESSAGES
- });
- var hasMore = messages && messages.length > 0;
- var lastMessageTimeStamp = hasMore ? messages[0].createdAt : null;
- messagesDispatcher({
- type: GET_PREV_MESSAGES_SUCESS,
- payload: {
- messages: messages,
- hasMore: hasMore,
- lastMessageTimeStamp: lastMessageTimeStamp,
- currentGroupChannel: currentGroupChannel
- }
- });
- setTimeout(function () {
- return scrollIntoLast('.sendbird-msg--scroll-ref');
- });
- }).catch(function (error) {
- logger.error('Channel: Fetching messages failed', error);
- }).finally(function () {
- currentGroupChannel.markAsRead();
- });
- });
- }
- };
- }, [isOnline]);
-}
-
-function useScrollCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- lastMessageTimeStamp = _ref.lastMessageTimeStamp,
- userFilledMessageListQuery = _ref.userFilledMessageListQuery;
- var hasMore = _ref2.hasMore,
- logger = _ref2.logger,
- messagesDispatcher = _ref2.messagesDispatcher,
- sdk = _ref2.sdk;
- return React.useCallback(function (cb) {
- if (!hasMore) {
- return;
- }
-
- var messageListParams = new sdk.MessageListParams();
- messageListParams.prevResultSize = 30;
- messageListParams.includeReplies = false;
- messageListParams.includeReaction = true;
-
- if (userFilledMessageListQuery) {
- Object.keys(userFilledMessageListQuery).forEach(function (key) {
- messageListParams[key] = userFilledMessageListQuery[key];
- });
- }
-
- logger.info('Channel: Fetching messages', {
- currentGroupChannel: currentGroupChannel,
- userFilledMessageListQuery: userFilledMessageListQuery
- });
- currentGroupChannel.getMessagesByTimestamp(lastMessageTimeStamp || new Date().getTime(), messageListParams).then(function (messages) {
- var hasMoreMessages = messages && messages.length > 0;
- var lastMessageTs = hasMoreMessages ? messages[0].createdAt : null;
- messagesDispatcher({
- type: GET_PREV_MESSAGES_SUCESS,
- payload: {
- messages: messages,
- hasMore: hasMoreMessages,
- lastMessageTimeStamp: lastMessageTs,
- currentGroupChannel: currentGroupChannel
- }
- });
- cb([messages, null]);
- }).catch(function (error) {
- logger.error('Channel: Fetching messages failed', error);
- messagesDispatcher({
- type: GET_PREV_MESSAGES_SUCESS,
- payload: {
- messages: [],
- hasMore: false,
- lastMessageTimeStamp: 0,
- currentGroupChannel: currentGroupChannel
- }
- });
- cb([null, error]);
- }).finally(function () {
- currentGroupChannel.markAsRead();
- });
- }, [currentGroupChannel, lastMessageTimeStamp]);
-}
-
-function useDeleteMessageCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- messagesDispatcher = _ref.messagesDispatcher;
- var logger = _ref2.logger;
- return React.useCallback(function (message, cb) {
- logger.info('Channel | useDeleteMessageCallback: Deleting message', message);
- var requestState = message.requestState;
- logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', requestState); // Message is only on local
-
- if (requestState === 'failed' || requestState === 'pending') {
- logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);
- messagesDispatcher({
- type: ON_MESSAGE_DELETED_BY_REQ_ID,
- payload: message.reqId
- });
-
- if (cb) {
- cb();
- }
-
- return;
- } // Message is on server
-
-
- currentGroupChannel.deleteMessage(message, function (err) {
- logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', requestState);
-
- if (cb) {
- cb(err);
- }
-
- if (!err) {
- logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);
- messagesDispatcher({
- type: ON_MESSAGE_DELETED,
- payload: message.messageId
- });
- } else {
- logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);
- }
- });
- }, [currentGroupChannel, messagesDispatcher]);
-}
-
-function useUpdateMessageCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- messagesDispatcher = _ref.messagesDispatcher,
- onBeforeUpdateUserMessage = _ref.onBeforeUpdateUserMessage;
- var logger = _ref2.logger,
- pubSub = _ref2.pubSub,
- sdk = _ref2.sdk;
- return React.useCallback(function (messageId, text, cb) {
- var createParamsDefault = function createParamsDefault(txt) {
- var params = new sdk.UserMessageParams();
- params.message = txt;
- return params;
- };
-
- var createCustomPrams = onBeforeUpdateUserMessage && typeof onBeforeUpdateUserMessage === 'function';
-
- if (createCustomPrams) {
- logger.info('Channel: creting params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);
- }
-
- var params = onBeforeUpdateUserMessage ? onBeforeUpdateUserMessage(text) : createParamsDefault(text);
- currentGroupChannel.updateUserMessage(messageId, params, function (r, e) {
- logger.info('Channel: Updating message!', params);
- var swapParams = sdk.getErrorFirstCallback();
- var message = r;
- var err = e;
-
- if (swapParams) {
- message = e;
- err = r;
- }
-
- if (cb) {
- cb(err, message);
- }
-
- if (!err) {
- logger.info('Channel: Updating message success!', message);
- messagesDispatcher({
- type: ON_MESSAGE_UPDATED,
- payload: message
- });
- pubSub.publish(UPDATE_USER_MESSAGE, {
- message: message,
- channel: currentGroupChannel
- });
- } else {
- logger.warning('Channel: Updating message failed!', err);
- }
- });
- }, [currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);
-}
-
-function useResendMessageCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- messagesDispatcher = _ref.messagesDispatcher;
- var logger = _ref2.logger;
- return React.useCallback(function (failedMessage) {
- logger.info('Channel: Resending message has started', failedMessage);
- var messageType = failedMessage.messageType,
- file = failedMessage.file;
-
- if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable()) {
- // eslint-disable-next-line no-param-reassign
- failedMessage.requestState = 'pending';
- messagesDispatcher({
- type: RESEND_MESSAGEGE_START,
- payload: failedMessage
- }); // userMessage
-
- if (messageType === 'user') {
- currentGroupChannel.resendUserMessage(failedMessage).then(function (message) {
- logger.info('Channel: Resending message success!', {
- message: message
- });
- messagesDispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- }).catch(function (e) {
- logger.warning('Channel: Resending message failed!', {
- e: e
- }); // eslint-disable-next-line no-param-reassign
-
- failedMessage.requestState = 'failed';
- messagesDispatcher({
- type: SEND_MESSAGEGE_FAILURE,
- payload: failedMessage
- });
- }); // eslint-disable-next-line no-param-reassign
-
- failedMessage.requestState = 'pending';
- messagesDispatcher({
- type: RESEND_MESSAGEGE_START,
- payload: failedMessage
- });
- return;
- }
-
- if (messageType === 'file') {
- currentGroupChannel.resendFileMessage(failedMessage, file).then(function (message) {
- logger.info('Channel: Resending file message success!', {
- message: message
- });
- messagesDispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- }).catch(function (e) {
- logger.warning('Channel: Resending file message failed!', {
- e: e
- }); // eslint-disable-next-line no-param-reassign
-
- failedMessage.requestState = 'failed';
- messagesDispatcher({
- type: SEND_MESSAGEGE_FAILURE,
- payload: failedMessage
- });
- }); // eslint-disable-next-line no-param-reassign
-
- failedMessage.requestState = 'pending';
- messagesDispatcher({
- type: RESEND_MESSAGEGE_START,
- payload: failedMessage
- });
- }
- } else {
- // to alert user on console
- // eslint-disable-next-line no-console
- console.error('Message is not resendable');
- logger.warning('Message is not resendable', failedMessage);
- }
- }, [currentGroupChannel, messagesDispatcher]);
-}
-
-function useSendMessageCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- onBeforeSendUserMessage = _ref.onBeforeSendUserMessage;
- var sdk = _ref2.sdk,
- logger = _ref2.logger,
- pubSub = _ref2.pubSub,
- messagesDispatcher = _ref2.messagesDispatcher;
- var messageInputRef = React.useRef(null);
- var sendMessage = React.useCallback(function () {
- var text = messageInputRef.current.value;
-
- var createParamsDefault = function createParamsDefault(txt) {
- var message = typeof txt === 'string' ? txt.trim() : txt;
- var params = new sdk.UserMessageParams();
- params.message = message;
- return params;
- };
-
- var createCustomPrams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
-
- if (createCustomPrams) {
- logger.info('Channel: creting params using onBeforeSendUserMessage', onBeforeSendUserMessage);
- }
-
- var params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);
- logger.info('Channel: Sending message has started', params);
- var pendingMsg = currentGroupChannel.sendUserMessage(params, function (res, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var message = res;
- var error = err;
-
- if (swapParams) {
- message = err;
- error = res;
- } // sending params instead of pending message
- // to make sure that we can resend the message once it fails
-
-
- if (error) {
- logger.warning('Channel: Sending message failed!', {
- message: message
- });
- messagesDispatcher({
- type: SEND_MESSAGEGE_FAILURE,
- payload: message
- });
- return;
- }
-
- logger.info('Channel: Sending message success!', message);
- messagesDispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- });
- pubSub.publish(SEND_MESSAGE_START, {
- /* pubSub is used instead of messagesDispatcher
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
- message: pendingMsg,
- channel: currentGroupChannel
- });
- setTimeout(function () {
- return scrollIntoLast('.sendbird-msg--scroll-ref');
- });
- }, [currentGroupChannel, onBeforeSendUserMessage]);
- return [messageInputRef, sendMessage];
-}
-
-function useSendFileMessageCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel,
- onBeforeSendFileMessage = _ref.onBeforeSendFileMessage;
- var sdk = _ref2.sdk,
- logger = _ref2.logger,
- pubSub = _ref2.pubSub,
- messagesDispatcher = _ref2.messagesDispatcher;
- var sendMessage = React.useCallback(function (file) {
- var createParamsDefault = function createParamsDefault(file_) {
- var params = new sdk.FileMessageParams();
- params.file = file_;
- return params;
- };
-
- var createCustomPrams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';
-
- if (createCustomPrams) {
- logger.info('Channel: creting params using onBeforeSendFileMessage', onBeforeSendFileMessage);
- }
-
- var params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file) : createParamsDefault(file);
- logger.info('Channel: Uploading file message start!', params);
- var pendingMsg = currentGroupChannel.sendFileMessage(params, function (response, err) {
- var swapParams = sdk.getErrorFirstCallback();
- var message = response;
- var error = err;
-
- if (swapParams) {
- message = err;
- error = response;
- }
-
- if (error) {
- // sending params instead of pending message
- // to make sure that we can resend the message once it fails
- logger.error('Channel: Sending file message failed!', message);
- message.localUrl = URL.createObjectURL(file);
- message.file = file;
- messagesDispatcher({
- type: SEND_MESSAGEGE_FAILURE,
- payload: message
- });
- return;
- }
-
- logger.info('Channel: Sending message success!', message);
- messagesDispatcher({
- type: SEND_MESSAGEGE_SUCESS,
- payload: message
- });
- });
- pubSub.publish(SEND_MESSAGE_START, {
- /* pubSub is used instead of messagesDispatcher
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
- message: _objectSpread2({}, pendingMsg, {
- url: URL.createObjectURL(file),
- // pending thumbnail message seems to be failed
- requestState: 'pending'
- }),
- channel: currentGroupChannel
- });
- setTimeout(function () {
- return scrollIntoLast('.sendbird-msg--scroll-ref');
- }, 1000);
- }, [currentGroupChannel, onBeforeSendFileMessage]);
- return [sendMessage];
-}
-
-function useSetReadStatus(_ref, _ref2) {
- var allMessages = _ref.allMessages,
- currentGroupChannel = _ref.currentGroupChannel;
- var messagesDispatcher = _ref2.messagesDispatcher,
- sdk = _ref2.sdk,
- logger = _ref2.logger;
- React.useEffect(function () {
- if (!sdk.ChannelHandler || !currentGroupChannel.url) {
- return function () {};
- } // todo: move to reducer?
-
-
- var setReadStatus = function setReadStatus() {
- var allReadStatus = allMessages.reduce(function (accumulator, msg) {
- if (msg.messageId !== 0) {
- return _objectSpread2({}, accumulator, _defineProperty({}, msg.messageId, getParsedStatus(msg, currentGroupChannel)));
- }
-
- return accumulator;
- }, {});
- messagesDispatcher({
- type: SET_READ_STATUS,
- payload: allReadStatus
- });
- };
-
- if (allMessages.length > 0) {
- setReadStatus();
- }
-
- var channelUrl = currentGroupChannel.url;
- var handler = new sdk.ChannelHandler();
-
- var handleMessageStatus = function handleMessageStatus(c) {
- if (channelUrl === c.url) {
- setReadStatus();
- }
- };
-
- handler.onDeliveryReceiptUpdated = handleMessageStatus;
- handler.onReadReceiptUpdated = handleMessageStatus; // Add this channel event handler to the SendBird object.
-
- var handlerId = uuidv4();
- logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);
- sdk.addChannelHandler(handlerId, handler);
- return function () {
- if (sdk && sdk.removeChannelHandler) {
- logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);
- sdk.removeChannelHandler(handlerId);
- }
- };
- }, [allMessages, currentGroupChannel]);
-}
-
-var ReactionButton = React__default.forwardRef(function (props, ref) {
- var children = props.children,
- width = props.width,
- height = props.height,
- _onClick = props.onClick,
- selected = props.selected,
- className = props.className;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React__default.createElement("div", {
- ref: ref,
- className: "sendbird-reaction-button".concat(selected ? '--selected' : '', " ").concat(injectingClassName.join(' ')),
- style: {
- width: typeof width === 'string' ? "".concat(width.slice(0, -2) - 2, "px") : "".concat(width - 2, "px"),
- height: typeof height === 'string' ? "".concat(height.slice(0, -2) - 2, "px") : "".concat(height - 2, "px")
- },
- onClick: function onClick(e) {
- return _onClick(e);
- },
- role: "button",
- onKeyDown: function onKeyDown(e) {
- return _onClick(e);
- },
- tabIndex: 0
- }, React__default.createElement("div", {
- className: "sendbird-reaction-button__inner"
- }, children));
-});
-ReactionButton.propTypes = {
- children: PropTypes.element.isRequired,
- onClick: PropTypes.func,
- selected: PropTypes.bool,
- width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
- height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-ReactionButton.defaultProps = {
- selected: false,
- width: '36px',
- height: '36px',
- onClick: function onClick() {},
- className: ''
-};
-
-function useMemoizedEmojiListItems(_ref, _ref2) {
- var emojiContainer = _ref.emojiContainer,
- toggleReaction = _ref.toggleReaction;
- var useReaction = _ref2.useReaction,
- logger = _ref2.logger,
- userId = _ref2.userId,
- emojiAllList = _ref2.emojiAllList;
- return React.useMemo(function () {
- return function (_ref3) {
- var parentRef = _ref3.parentRef,
- parentContainRef = _ref3.parentContainRef,
- message = _ref3.message,
- closeDropdown = _ref3.closeDropdown,
- _ref3$spaceFromTrigge = _ref3.spaceFromTrigger,
- spaceFromTrigger = _ref3$spaceFromTrigge === void 0 ? {} : _ref3$spaceFromTrigge;
-
- if (!useReaction || !(parentRef || parentContainRef || message || closeDropdown)) {
- logger.warning('Channel: Invalid Params in memoizedEmojiListItems');
- return null;
- }
-
- return React__default.createElement(EmojiListItems$1, {
- parentRef: parentRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: spaceFromTrigger
- }, emojiAllList.map(function (emoji) {
- var reactedReaction = message.reactions.filter(function (reaction) {
- return reaction.key === emoji.key;
- })[0];
- var isReacted = reactedReaction ? !(reactedReaction.userIds.indexOf(userId) < 0) : false;
- return React__default.createElement(ReactionButton, {
- key: emoji.key,
- width: "36px",
- height: "36px",
- selected: isReacted,
- onClick: function onClick() {
- closeDropdown();
- toggleReaction(message, emoji.key, isReacted);
- }
- }, React__default.createElement(ImageRenderer, {
- url: emoji.url,
- width: "28px",
- height: "28px",
- defaultComponent: React__default.createElement(Icon, {
- width: "28px",
- height: "28px",
- type: IconTypes.EMOJI_FAILED
- })
- }));
- }));
- };
- }, [emojiContainer, toggleReaction]);
-}
-
-function useToggleReactionCallback(_ref, _ref2) {
- var currentGroupChannel = _ref.currentGroupChannel;
- var logger = _ref2.logger;
- return React.useCallback(function (message, key, isReacted) {
- if (isReacted) {
- currentGroupChannel.deleteReaction(message, key).then(function (res) {
- logger.info('Delete reaction success', res);
- }).catch(function (err) {
- logger.warning('Delete reaction failed', err);
- });
- return;
- }
-
- currentGroupChannel.addReaction(message, key).then(function (res) {
- logger.info('Add reaction success', res);
- }).catch(function (err) {
- logger.warning('Add reaction failed', err);
- });
- }, [currentGroupChannel]);
-}
-
-function MessageStatus(_ref) {
- var message = _ref.message,
- status = _ref.status,
- className = _ref.className;
- var injectingClassName = Array.isArray(className) ? className : [className];
-
- var label = function label() {
- switch (status) {
- case MessageStatusType.FAILED:
- case MessageStatusType.PENDING:
- {
- return null;
- }
-
- case MessageStatusType.SENT:
- case MessageStatusType.DELIVERED:
- case MessageStatusType.READ:
- {
- return React__default.createElement(Label, {
- className: "sendbird-message-status__text",
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt(message));
- }
-
- default:
- return null;
- }
- };
-
- var icon = {
- PENDING: React__default.createElement(Loader, {
- className: "sendbird-message-status__icon",
- width: "16px",
- height: "16px"
- }, React__default.createElement(Icon, {
- type: IconTypes.SPINNER,
- width: "16px",
- height: "16px"
- })),
- SENT: React__default.createElement(Icon, {
- className: "sendbird-message-status__icon",
- width: "16px",
- height: "16px",
- type: IconTypes.SENT,
- fillColor: IconColors.SENT
- }),
- DELIVERED: React__default.createElement(Icon, {
- className: "sendbird-message-status__icon",
- width: "16px",
- height: "16px",
- type: IconTypes.DELIVERED,
- fillColor: IconColors.SENT
- }),
- READ: React__default.createElement(Icon, {
- className: "sendbird-message-status__icon",
- width: "16px",
- height: "16px",
- type: IconTypes.READ,
- fillColor: IconColors.READ
- }),
- FAILED: React__default.createElement(Icon, {
- className: "sendbird-message-status__icon",
- width: "16px",
- height: "16px",
- type: IconTypes.ERROR
- })
- };
- return React__default.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-message-status']).join(' ')
- }, icon[status], React__default.createElement("br", null), label());
-}
-MessageStatus.propTypes = {
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- status: PropTypes.string,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-MessageStatus.defaultProps = {
- message: null,
- status: '',
- className: ''
-};
-
-var ReactionBadge = React__default.forwardRef(function (props, ref) {
- var className = props.className,
- children = props.children,
- count = props.count,
- selected = props.selected,
- isAdd = props.isAdd,
- onClick = props.onClick;
- var injectingClassName = Array.isArray(className) ? className : [className];
-
- if (selected && !isAdd) {
- injectingClassName.unshift('sendbird-reaction-badge--selected');
- } else if (isAdd) {
- injectingClassName.push('sendbird-reaction-badge--is-add');
- } else {
- injectingClassName.unshift('sendbird-reaction-badge');
- }
-
- return React__default.createElement("div", {
- ref: ref,
- tabIndex: 0,
- role: "button",
- className: injectingClassName.join(' '),
- onClick: onClick,
- onKeyDown: onClick
- }, React__default.createElement("div", {
- className: "sendbird-reaction-badge__inner"
- }, React__default.createElement("div", {
- className: "sendbird-reaction-badge__inner__icon"
- }, children), React__default.createElement(Label, {
- className: children && count ? 'sendbird-reaction-badge__inner__count' : '',
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_1
- }, count)));
-});
-ReactionBadge.propTypes = {
- children: PropTypes.element.isRequired,
- count: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
- selected: PropTypes.bool,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- isAdd: PropTypes.bool,
- onClick: PropTypes.func
-};
-ReactionBadge.defaultProps = {
- className: '',
- count: '',
- selected: false,
- isAdd: false,
- onClick: function onClick() {}
-};
-
-var CLASS_NAME$2 = 'sendbird-tooltip';
-function Tooltip(_ref) {
- var className = _ref.className,
- children = _ref.children;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift(CLASS_NAME$2);
- return React__default.createElement("div", {
- className: injectingClassName.join(' ')
- }, React__default.createElement(Label, {
- className: "".concat(CLASS_NAME$2, "__text")
- }, children));
-}
-Tooltip.propTypes = {
- className: PropTypes.string,
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.string), PropTypes.string])
-};
-Tooltip.defaultProps = {
- className: '',
- children: ''
-};
-
-var CLASS_NAME$3 = 'sendbird-tooltip-wrapper';
-var SPACE_FROM_TRIGGER = 8;
-function TooltipWrapper(_ref) {
- var className = _ref.className,
- children = _ref.children,
- hoverTooltip = _ref.hoverTooltip;
- var injectingClassName = Array.isArray(className) ? [CLASS_NAME$3].concat(_toConsumableArray(className)) : [CLASS_NAME$3, className];
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showHoverTooltip = _useState2[0],
- setShowHoverTooltip = _useState2[1];
-
- var childrenRef = React.useRef(null);
- return React__default.createElement("div", {
- className: injectingClassName.join(' '),
- onMouseOver: function onMouseOver() {
- setShowHoverTooltip(true);
- },
- onFocus: function onFocus() {
- setShowHoverTooltip(true);
- },
- onMouseOut: function onMouseOut() {
- setShowHoverTooltip(false);
- },
- onBlur: function onBlur() {
- setShowHoverTooltip(false);
- }
- }, React__default.createElement("div", {
- className: "".concat(CLASS_NAME$3, "__children"),
- ref: childrenRef
- }, children), showHoverTooltip && React__default.createElement("div", {
- className: "".concat(CLASS_NAME$3, "__hover-tooltip"),
- style: {
- bottom: "calc(100% + ".concat(SPACE_FROM_TRIGGER, "px)")
- }
- }, React__default.createElement("div", {
- className: "".concat(CLASS_NAME$3, "__hover-tooltip__inner")
- }, React__default.createElement("div", {
- className: "".concat(CLASS_NAME$3, "__hover-tooltip__inner__tooltip-container"),
- style: {
- left: childrenRef.current && "calc(".concat(childrenRef.current.offsetWidth / 2, "px - 50%)")
- }
- }, hoverTooltip))));
-}
-TooltipWrapper.propTypes = {
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- children: PropTypes.element.isRequired,
- hoverTooltip: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired
-};
-TooltipWrapper.defaultProps = {
- className: ''
-};
-
-function EmojiReactions(_ref) {
- var className = _ref.className,
- userId = _ref.userId,
- message = _ref.message,
- emojiAllMap = _ref.emojiAllMap,
- membersMap = _ref.membersMap,
- toggleReaction = _ref.toggleReaction,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift('sendbird-emoji-reactions');
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var imageWidth = '20px';
- var imageHeight = '20px';
- var emojiReactionAddRef = React.useRef(null);
- var _message$reactions = message.reactions,
- reactions = _message$reactions === void 0 ? [] : _message$reactions;
- var messageReactions = reactions;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React__default.createElement("div", {
- className: injectingClassName.join(' ')
- }, React__default.createElement("div", {
- className: "sendbird-emoji-reactions--inner"
- }, messageReactions && messageReactions.map(function (reaction) {
- var _reaction$userIds = reaction.userIds,
- userIds = _reaction$userIds === void 0 ? [] : _reaction$userIds;
- var emojiUrl = emojiAllMap.get(reaction.key) || '';
- var reactedUserCount = userIds.length;
- var reactedByMe = !(userIds.indexOf(userId) < 0);
- var nicknames = userIds.filter(function (currentUserId) {
- return currentUserId !== userId;
- }).map(function (currentUserId) {
- return membersMap.get(currentUserId) || stringSet.TOOLTIP__UNKOWN_USER;
- });
- var stringSetForMe = nicknames.length > 0 ? stringSet.TOOLTIP__AND_YOU : stringSet.TOOLTIP__YOU;
- return React__default.createElement(TooltipWrapper, {
- className: "sendbird-emoji-reactions__emoji-reaction",
- key: reaction.key,
- hoverTooltip: userIds.length > 0 && React__default.createElement(Tooltip, null, React__default.createElement(React__default.Fragment, null, "".concat(nicknames.join(', ')).concat(reactedByMe ? stringSetForMe : '')))
- }, React__default.createElement(ReactionBadge, {
- count: reactedUserCount,
- selected: reactedByMe,
- onClick: function onClick() {
- return toggleReaction(message, reaction.key, reactedByMe);
- }
- }, React__default.createElement(ImageRenderer, {
- circle: true,
- url: emojiUrl,
- width: imageWidth,
- height: imageHeight,
- defaultComponent: React__default.createElement(Icon, {
- width: imageWidth,
- height: imageHeight,
- type: IconTypes.EMOJI_FAILED
- })
- })));
- }), messageReactions.length < emojiAllMap.size && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(ReactionBadge, {
- isAdd: true,
- onClick: toggleDropdown,
- className: "sendbird-emoji-reactions__emoji-reaction-add",
- ref: emojiReactionAddRef
- }, React__default.createElement(Icon, {
- width: imageWidth,
- height: imageHeight,
- fillColor: IconColors.ON_BACKGROUND_3,
- type: IconTypes.EMOJI_REACTIONS_ADD
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: emojiReactionAddRef,
- parentContainRef: emojiReactionAddRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 4
- }
- });
- }
- })));
-}
-EmojiReactions.propTypes = {
- userId: PropTypes.string,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- message: PropTypes.shape({
- reactions: PropTypes.arrayOf(PropTypes.shape({}))
- }).isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func
-};
-EmojiReactions.defaultProps = {
- className: '',
- membersMap: new Map(),
- userId: '',
- toggleReaction: function toggleReaction() {},
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-
-var copyToClipboard = function copyToClipboard(text) {
- if (window.clipboardData && window.clipboardData.setData) {
- // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.
- return window.clipboardData.setData('Text', text);
- }
-
- if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
- var textarea = document.createElement('textarea');
- textarea.textContent = text;
- textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.
-
- document.body.appendChild(textarea);
- textarea.select();
-
- try {
- return document.execCommand('copy'); // Security exception may be thrown by some browsers.
- } catch (ex) {
- return false;
- } finally {
- document.body.removeChild(textarea);
- }
- }
-
- return false;
-};
-var getMessageCreatedAt$2 = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-var getSenderName$1 = function getSenderName(message) {
- return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
-};
-var getSenderProfileUrl$1 = function getSenderProfileUrl(message) {
- return message.sender && message.sender.profileUrl;
-};
-var getIsSentFromStatus$1 = function getIsSentFromStatus(status) {
- return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
-};
-
-var WORD_TYPOGRAPHY = LabelTypography.BODY_1;
-var EDITED_COLOR = LabelColors.ONBACKGROUND_2;
-function useMemoizedMessageText(_ref) {
- var message = _ref.message,
- updatedAt = _ref.updatedAt,
- className = _ref.className;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.useMemo(function () {
- return function () {
- var splitMessage = message.split(/\r/);
- var matchedMessage = splitMessage.map(function (word) {
- return word !== '' ? word : React__default.createElement("br", null);
- });
-
- if (updatedAt > 0) {
- matchedMessage.push(React__default.createElement(Label, {
- key: uuidv4(),
- className: className,
- type: WORD_TYPOGRAPHY,
- color: EDITED_COLOR
- }, " ".concat(stringSet.MESSAGE_EDITED, " ")));
- }
-
- return matchedMessage;
- };
- }, [message, updatedAt, className]);
-}
-
-var MOUSE_ENTER = 'mouseenter';
-var MOUSE_LEAVE = 'mouseleave';
-
-var useMouseHover = function useMouseHover(_ref) {
- var ref = _ref.ref,
- setHover = _ref.setHover;
-
- var handleMouseOver = function handleMouseOver() {
- if (ref.current) {
- setHover(true);
- }
- };
-
- var handleMouseOut = function handleMouseOut() {
- if (ref.current) {
- setHover(false);
- }
- };
-
- React.useEffect(function () {
- var current = ref.current;
- current.addEventListener(MOUSE_ENTER, handleMouseOver);
- current.addEventListener(MOUSE_LEAVE, handleMouseOut);
- return function () {
- current.removeEventListener(MOUSE_ENTER, handleMouseOver);
- current.removeEventListener(MOUSE_LEAVE, handleMouseOut);
- };
- });
-};
-
-var noop$2 = function noop() {};
-
-var GROUPING_PADDING = '1px';
-var NORMAL_PADDING = '8px';
-function Message(props) {
- var isByMe = props.isByMe,
- userId = props.userId,
- message = props.message,
- className = props.className,
- resendMessage = props.resendMessage,
- disabled = props.disabled,
- showEdit = props.showEdit,
- showRemove = props.showRemove,
- status = props.status,
- useReaction = props.useReaction,
- emojiAllMap = props.emojiAllMap,
- membersMap = props.membersMap,
- toggleReaction = props.toggleReaction,
- memoizedEmojiListItems = props.memoizedEmojiListItems,
- chainTop = props.chainTop,
- chainBottom = props.chainBottom;
- if (!message) return null;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.push("sendbird-message".concat(isByMe ? '--outgoing' : '--incoming'));
- var memoizedMessageText = useMemoizedMessageText({
- message: message.message,
- updatedAt: message.updatedAt,
- className: 'sendbird-user-message-word'
- });
- return React__default.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-message']).join(' ')
- }, isByMe ? React__default.createElement(OutgoingUserMessage, {
- userId: userId,
- message: message,
- resendMessage: resendMessage,
- disabled: disabled,
- showEdit: showEdit,
- showRemove: showRemove,
- status: status,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedMessageText: memoizedMessageText,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- }) : React__default.createElement(IncomingUserMessage, {
- userId: userId,
- message: message,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedMessageText: memoizedMessageText,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- }));
-}
-Message.propTypes = {
- isByMe: PropTypes.bool,
- disabled: PropTypes.bool,
- userId: PropTypes.string,
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])).isRequired,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- showEdit: PropTypes.func,
- status: PropTypes.string,
- showRemove: PropTypes.func,
- resendMessage: PropTypes.func,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool,
- chainBottom: PropTypes.bool
-};
-Message.defaultProps = {
- isByMe: false,
- disabled: false,
- userId: '',
- resendMessage: noop$2,
- className: '',
- showEdit: noop$2,
- showRemove: noop$2,
- status: '',
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$2,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- },
- chainTop: false,
- chainBottom: false
-};
-
-function OutgoingUserMessage(_ref) {
- var userId = _ref.userId,
- message = _ref.message,
- showEdit = _ref.showEdit,
- disabled = _ref.disabled,
- showRemove = _ref.showRemove,
- status = _ref.status,
- resendMessage = _ref.resendMessage,
- useReaction = _ref.useReaction,
- emojiAllMap = _ref.emojiAllMap,
- membersMap = _ref.membersMap,
- toggleReaction = _ref.toggleReaction,
- memoizedMessageText = _ref.memoizedMessageText,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems,
- chainTop = _ref.chainTop,
- chainBottom = _ref.chainBottom;
- var MemoizedMessageText = memoizedMessageText;
- var MemoizedEmojiListItems = memoizedEmojiListItems; // TODO: when message.requestState is succeeded, consider if it's SENT or DELIVERED
-
- var messageRef = React.useRef(null);
- var parentRefReactions = React.useRef(null);
- var parentRefMenus = React.useRef(null);
- var parentContainRef = React.useRef(null);
- var isMessageSent = getIsSentFromStatus$1(status);
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- mousehover = _useState2[0],
- setMousehover = _useState2[1];
-
- var _useState3 = React.useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- moreActive = _useState4[0],
- setMoreActive = _useState4[1];
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React__default.createElement("div", {
- className: "sendbird-user-message--outgoing",
- ref: messageRef,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING : NORMAL_PADDING,
- paddingBottom: chainBottom ? GROUPING_PADDING : NORMAL_PADDING
- }
- }, React__default.createElement("div", {
- className: "sendbird-user-message--inner"
- }, React__default.createElement("div", {
- className: "sendbird-user-message__left-padding"
- }, React__default.createElement("div", {
- className: "sendbird-user-message__more",
- ref: parentContainRef
- }, React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- ref: parentRefMenus,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: parentRefMenus // for catching location(x, y) of MenuItems
- ,
- parentContainRef: parentContainRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, isMessageSent && React__default.createElement(MenuItem, {
- className: "sendbird-user-message--copy",
- onClick: function onClick() {
- copyToClipboard(message.message);
- closeDropdown();
- }
- }, "Copy"), isMessageSent && React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showEdit(true);
- closeDropdown();
- }
- }, "Edit"), message && message.isResendable && message.isResendable() && React__default.createElement(MenuItem, {
- onClick: function onClick() {
- resendMessage(message);
- closeDropdown();
- }
- }, "Resend"), React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showRemove(true);
- closeDropdown();
- }
- }, "Delete"));
- }
- }), isMessageSent && useReaction && emojiAllMap.size > 0 && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "sendbird-user-message__more__add-reaction",
- ref: parentRefReactions,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: parentRefReactions,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })), !chainBottom && !(mousehover || moreActive) && React__default.createElement("div", {
- className: "sendbird-user-message__status"
- }, React__default.createElement(MessageStatus, {
- message: message,
- status: status // onDelete={() => { showRemove(true); }}
- // onResend={() => resendMessage(message)}
- // duplicated and should replace to more
-
- }))), React__default.createElement("div", {
- className: "sendbird-user-message__text-balloon"
- }, React__default.createElement("div", {
- className: "sendbird-user-message__text-balloon__inner"
- }, React__default.createElement("div", {
- className: "sendbird-user-message__text-balloon__inner__text-place"
- }, React__default.createElement(Label, {
- className: "sendbird-user-message__text-balloon__inner__text-place__text",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, React__default.createElement(MemoizedMessageText, null))), useReaction && message.reactions && message.reactions.length > 0 && React__default.createElement(EmojiReactions, {
- className: "sendbird-user-message__text-balloon__inner__emoji-reactions",
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- })))));
-}
-
-function IncomingUserMessage(_ref2) {
- var userId = _ref2.userId,
- message = _ref2.message,
- useReaction = _ref2.useReaction,
- emojiAllMap = _ref2.emojiAllMap,
- membersMap = _ref2.membersMap,
- toggleReaction = _ref2.toggleReaction,
- memoizedMessageText = _ref2.memoizedMessageText,
- memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
- chainTop = _ref2.chainTop,
- chainBottom = _ref2.chainBottom;
- var MemoizedMessageText = memoizedMessageText;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var messageRef = React.useRef(null);
- var parentRefReactions = React.useRef(null);
- var parentRefMenus = React.useRef(null);
- var parentContainRef = React.useRef(null);
- var avatarRef = React.useRef(null);
-
- var _React$useContext = React__default.useContext(UserProfileContext),
- disableUserProfile = _React$useContext.disableUserProfile,
- renderUserProfile = _React$useContext.renderUserProfile;
-
- var _useState5 = React.useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- mousehover = _useState6[0],
- setMousehover = _useState6[1];
-
- var _useState7 = React.useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- moreActive = _useState8[0],
- setMoreActive = _useState8[1];
-
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
- var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React__default.createElement("div", {
- ref: messageRef,
- className: "sendbird-user-message--incoming",
- style: {
- paddingTop: chainTop ? GROUPING_PADDING : NORMAL_PADDING,
- paddingBottom: chainBottom ? GROUPING_PADDING : NORMAL_PADDING
- }
- }, React__default.createElement("div", {
- className: "sendbird-user-message--inner"
- }, React__default.createElement("div", {
- className: "sendbird-user-message--body"
- }, !chainBottom && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(Avatar$1, {
- ref: avatarRef,
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- className: "sendbird-user-message__avatar",
- src: getSenderProfileUrl$1(message),
- width: "28px",
- height: "28px"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: message.sender,
- close: closeDropdown
- }) : React__default.createElement(ConnectedUserProfile, {
- user: message.sender,
- onSuccess: closeDropdown
- }));
- }
- }), !chainTop && React__default.createElement(Label, {
- className: "sendbird-user-message__sender-name",
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, getSenderName$1(message)), React__default.createElement("div", {
- className: "sendbird-user-message__text-balloon"
- }, React__default.createElement("div", {
- className: "sendbird-user-message__text-balloon__inner"
- }, React__default.createElement("div", {
- className: "sendbird-user-message__text-balloon__inner__text-place"
- }, React__default.createElement(Label, {
- className: "sendbird-user-message__text-balloon__inner__text-place__text",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, React__default.createElement(MemoizedMessageText, null))), showEmojiReactions && React__default.createElement(EmojiReactions, {
- className: "sendbird-user-message__text-balloon__inner__emoji-reactions",
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- })))), React__default.createElement("div", {
- className: "sendbird-user-message__right-padding"
- }, React__default.createElement("div", {
- className: "sendbird-user-message__more",
- ref: parentContainRef
- }, showReactionAddButton && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: parentRefReactions,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MemoizedEmojiListItems, {
- parentRef: parentRefReactions,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- message: message,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- }), React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: parentRefMenus,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: parentRefMenus,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown
- }, React__default.createElement(MenuItem, {
- className: "sendbird-user-message--copy",
- onClick: function onClick() {
- copyToClipboard(message.message);
- closeDropdown();
- }
- }, "Copy"));
- }
- })), !chainBottom && !(mousehover || moreActive) && React__default.createElement(Label, {
- className: "sendbird-user-message__sent-at",
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt$2(message)))));
-}
-
-IncomingUserMessage.propTypes = {
- userId: PropTypes.string.isRequired,
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedMessageText: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-IncomingUserMessage.defaultProps = {
- message: {},
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$2,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-OutgoingUserMessage.propTypes = {
- userId: PropTypes.string.isRequired,
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- showEdit: PropTypes.func,
- showRemove: PropTypes.func,
- disabled: PropTypes.bool,
- resendMessage: PropTypes.func,
- status: PropTypes.string.isRequired,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedMessageText: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-OutgoingUserMessage.defaultProps = {
- message: {},
- resendMessage: noop$2,
- showEdit: noop$2,
- showRemove: noop$2,
- disabled: false,
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$2,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-
-function AdminMessage(_ref) {
- var className = _ref.className,
- message = _ref.message;
-
- if (!message.messageType || message.messageType !== 'admin') {
- // change to use message.isAdminMessage()
- return null;
- }
-
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React__default.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-admin-message']).join(' ')
- }, React__default.createElement(Label, {
- className: "sendbird-admin-message__text",
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, message.message));
-}
-AdminMessage.propTypes = {
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
-};
-AdminMessage.defaultProps = {
- message: {},
- className: ''
-};
-
-var getMessageCreatedAt$3 = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-var getIsSentFromStatus$2 = function getIsSentFromStatus(status) {
- return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
-};
-
-var noop$3 = function noop() {};
-
-var OUTGOING_THUMBNAIL_MESSAGE = 'sendbird-outgoing-thumbnail-message';
-var INCOMING_THUMBNAIL_MESSAGE = 'sendbird-incoming-thumbnail-message';
-var GROUPING_PADDING$1 = '1px';
-var NORMAL_PADDING$1 = '8px';
-function ThumbnailMessage(_ref) {
- var _ref$message = _ref.message,
- message = _ref$message === void 0 ? {} : _ref$message,
- userId = _ref.userId,
- disabled = _ref.disabled,
- isByMe = _ref.isByMe,
- onClick = _ref.onClick,
- showRemove = _ref.showRemove,
- status = _ref.status,
- resendMessage = _ref.resendMessage,
- useReaction = _ref.useReaction,
- emojiAllMap = _ref.emojiAllMap,
- membersMap = _ref.membersMap,
- toggleReaction = _ref.toggleReaction,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems,
- chainTop = _ref.chainTop,
- chainBottom = _ref.chainBottom;
- return isByMe ? React__default.createElement(OutgoingThumbnailMessage, {
- userId: userId,
- status: status,
- message: message,
- onClick: onClick,
- disabled: disabled,
- chainTop: chainTop,
- showRemove: showRemove,
- membersMap: membersMap,
- chainBottom: chainBottom,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- resendMessage: resendMessage,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- }) : React__default.createElement(IncomingThumbnailMessage, {
- userId: userId,
- status: status,
- message: message,
- onClick: onClick,
- chainTop: chainTop,
- membersMap: membersMap,
- chainBottom: chainBottom,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- });
-}
-function OutgoingThumbnailMessage(_ref2) {
- var _ref2$message = _ref2.message,
- message = _ref2$message === void 0 ? {} : _ref2$message,
- userId = _ref2.userId,
- disabled = _ref2.disabled,
- onClick = _ref2.onClick,
- showRemove = _ref2.showRemove,
- status = _ref2.status,
- resendMessage = _ref2.resendMessage,
- useReaction = _ref2.useReaction,
- emojiAllMap = _ref2.emojiAllMap,
- membersMap = _ref2.membersMap,
- toggleReaction = _ref2.toggleReaction,
- memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
- chainTop = _ref2.chainTop,
- chainBottom = _ref2.chainBottom;
- var type = message.type,
- url = message.url,
- localUrl = message.localUrl;
- var messageRef = React.useRef(null);
- var parentContainRef = React.useRef(null);
- var menuRef = React.useRef(null);
- var reactionAddRef = React.useRef(null);
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- mousehover = _useState2[0],
- setMousehover = _useState2[1];
-
- var _useState3 = React.useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- moreActive = _useState4[0],
- setMoreActive = _useState4[1];
-
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var isMessageSent = getIsSentFromStatus$2(status);
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React__default.createElement("div", {
- className: OUTGOING_THUMBNAIL_MESSAGE,
- ref: messageRef,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$1 : NORMAL_PADDING$1,
- paddingBottom: chainBottom ? GROUPING_PADDING$1 : NORMAL_PADDING$1
- }
- }, React__default.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "--inner")
- }, React__default.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "__left-padding")
- }, React__default.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-left-padding__more"),
- ref: parentContainRef
- }, React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: menuRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- color: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: menuRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- openLeft: true
- }, message && message.isResendable && message.isResendable() && React__default.createElement(MenuItem, {
- onClick: function onClick() {
- resendMessage(message);
- closeDropdown();
- }
- }, "Resend"), React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showRemove(true);
- closeDropdown();
- }
- }, "Delete"));
- }
- }), isMessageSent && showReactionAddButton && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: reactionAddRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- color: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: reactionAddRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })), !chainBottom && !(mousehover || moreActive) && React__default.createElement(MessageStatus, {
- message: message,
- status: status,
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-left-padding__status")
- })), React__default.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "__body")
- }, React__default.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap")
- }, React__default.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap--inner"),
- onClick: isMessageSent ? function () {
- return onClick(true);
- } : function () {},
- onKeyDown: isMessageSent ? function () {
- return onClick(true);
- } : function () {},
- tabIndex: 0,
- role: "button"
- }, isVideo(type) && React__default.createElement(React__default.Fragment, null, React__default.createElement("video", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__video")
- }, React__default.createElement("source", {
- src: url || localUrl,
- type: type
- })), React__default.createElement(Icon, {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__video-icon"),
- width: "56px",
- height: "56px",
- type: IconTypes.PLAY
- })), isImage(type) && React__default.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__img"),
- style: {
- backgroundImage: "url(".concat(url || localUrl, ")"),
- height: '280px',
- width: '404px',
- backgroundSize: 'cover',
- backgroundRepeat: 'no-repeat',
- backgroundPosition: 'center'
- }
- }), unSupported(type) && React__default.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__other")
- }, "Unknown type"), React__default.createElement("div", {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap__overlay")
- })), useReaction && message.reactions && message.reactions.length > 0 && React__default.createElement(EmojiReactions, {
- className: "".concat(OUTGOING_THUMBNAIL_MESSAGE, "-body__wrap__emoji-reactions"),
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- })))));
-}
-function IncomingThumbnailMessage(_ref3) {
- var _ref3$message = _ref3.message,
- message = _ref3$message === void 0 ? {} : _ref3$message,
- userId = _ref3.userId,
- onClick = _ref3.onClick,
- status = _ref3.status,
- useReaction = _ref3.useReaction,
- emojiAllMap = _ref3.emojiAllMap,
- membersMap = _ref3.membersMap,
- toggleReaction = _ref3.toggleReaction,
- memoizedEmojiListItems = _ref3.memoizedEmojiListItems,
- chainTop = _ref3.chainTop,
- chainBottom = _ref3.chainBottom;
- var type = message.type,
- url = message.url,
- localUrl = message.localUrl;
-
- var _React$useContext = React__default.useContext(UserProfileContext),
- disableUserProfile = _React$useContext.disableUserProfile,
- renderUserProfile = _React$useContext.renderUserProfile;
-
- var messageRef = React.useRef(null);
- var parentContainRef = React.useRef(null);
- var reactionAddRef = React.useRef(null);
- var avatarRef = React.useRef(null);
-
- var _useState5 = React.useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- mousehover = _useState6[0],
- setMousehover = _useState6[1];
-
- var _useState7 = React.useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- moreActive = _useState8[0],
- setMoreActive = _useState8[1];
-
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var isMessageSent = getIsSentFromStatus$2(status);
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React__default.createElement("div", {
- className: INCOMING_THUMBNAIL_MESSAGE,
- ref: messageRef,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$1 : NORMAL_PADDING$1,
- paddingBottom: chainBottom ? GROUPING_PADDING$1 : NORMAL_PADDING$1
- }
- }, !chainTop && React__default.createElement(Label, {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__sender-name"),
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, getSenderName(message) || ''), React__default.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "--inner")
- }, React__default.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__body")
- }, React__default.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap")
- }, !chainBottom && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(Avatar$1, {
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__avatar"),
- src: getSenderProfileUrl(message),
- width: "28px",
- height: "28px"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: message.sender,
- close: closeDropdown
- }) : React__default.createElement(ConnectedUserProfile, {
- user: message.sender,
- onSuccess: closeDropdown
- }));
- }
- }), React__default.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap--inner"),
- role: "button",
- tabIndex: 0,
- onClick: isMessageSent ? function () {
- return onClick(true);
- } : function () {},
- onKeyDown: isMessageSent ? function () {
- return onClick(true);
- } : function () {}
- }, isVideo(type) && React__default.createElement(React__default.Fragment, null, React__default.createElement("video", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__video")
- }, React__default.createElement("source", {
- src: url || localUrl,
- type: type
- })), React__default.createElement(Icon, {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__video-icon"),
- width: "56px",
- height: "56px",
- type: IconTypes.PLAY
- })), isImage(type) && React__default.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__img"),
- style: {
- backgroundImage: "url(".concat(url || localUrl, ")"),
- height: '280px',
- width: '404px',
- backgroundSize: 'cover',
- backgroundRepeat: 'no-repeat',
- backgroundPosition: 'center'
- }
- }), unSupported(type) && React__default.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__other")
- }, "Unknown type"), React__default.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "-body__wrap-overlay")
- })), useReaction && message.reactions && message.reactions.length > 0 && React__default.createElement(EmojiReactions, {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__wrap__emoji-reactions"),
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- }))), React__default.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__right-padding")
- }, !chainBottom && !(mousehover || moreActive) && React__default.createElement(Label, {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__sent-at"),
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt$3(message)), React__default.createElement("div", {
- className: "".concat(INCOMING_THUMBNAIL_MESSAGE, "__more"),
- ref: parentContainRef
- }, showReactionAddButton && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: reactionAddRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- color: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: reactionAddRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })))));
-}
-ThumbnailMessage.propTypes = {
- message: PropTypes.shape({
- type: PropTypes.string,
- url: PropTypes.string,
- localUrl: PropTypes.string
- }).isRequired,
- userId: PropTypes.string,
- resendMessage: PropTypes.func,
- status: PropTypes.string,
- isByMe: PropTypes.bool,
- disabled: PropTypes.bool,
- onClick: PropTypes.func,
- showRemove: PropTypes.func,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool,
- chainBottom: PropTypes.bool
-};
-ThumbnailMessage.defaultProps = {
- isByMe: false,
- disabled: false,
- resendMessage: noop$3,
- onClick: noop$3,
- showRemove: noop$3,
- status: '',
- userId: '',
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$3,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- },
- chainTop: false,
- chainBottom: false
-};
-OutgoingThumbnailMessage.propTypes = {
- message: PropTypes.shape({
- type: PropTypes.string,
- url: PropTypes.string,
- localUrl: PropTypes.string
- }).isRequired,
- userId: PropTypes.string.isRequired,
- disabled: PropTypes.bool.isRequired,
- resendMessage: PropTypes.func.isRequired,
- status: PropTypes.string,
- onClick: PropTypes.func.isRequired,
- showRemove: PropTypes.func.isRequired,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- membersMap: PropTypes.instanceOf(Map).isRequired,
- toggleReaction: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func.isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-OutgoingThumbnailMessage.defaultProps = {
- status: ''
-};
-IncomingThumbnailMessage.propTypes = {
- message: PropTypes.shape({
- type: PropTypes.string,
- url: PropTypes.string,
- localUrl: PropTypes.string
- }).isRequired,
- userId: PropTypes.string.isRequired,
- onClick: PropTypes.func.isRequired,
- status: PropTypes.string,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- membersMap: PropTypes.instanceOf(Map).isRequired,
- toggleReaction: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func.isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-IncomingThumbnailMessage.defaultProps = {
- status: ''
-};
-
-var MAX_TRUNCATE_LENGTH = 40;
-var GROUPAING_PADDING = '1px';
-var NORMAL_PADDING$2 = '8px';
-
-var noop$4 = function noop() {};
-
-function checkFileType(fileUrl) {
- var result = null;
- var imageFile = /(\.gif|\.jpg|\.jpeg|\.txt|\.pdf)$/i;
- var audioFile = /(\.mp3)$/i;
-
- if (imageFile.test(fileUrl)) {
- result = IconTypes.FILE_DOCUMENT;
- } else if (audioFile.test(fileUrl)) {
- result = IconTypes.FILE_AUDIO;
- }
-
- return result;
-}
-
-function OutgoingFileMessage(_ref) {
- var message = _ref.message,
- userId = _ref.userId,
- status = _ref.status,
- showRemove = _ref.showRemove,
- disabled = _ref.disabled,
- resendMessage = _ref.resendMessage,
- useReaction = _ref.useReaction,
- emojiAllMap = _ref.emojiAllMap,
- membersMap = _ref.membersMap,
- toggleReaction = _ref.toggleReaction,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems,
- chainTop = _ref.chainTop,
- chainBottom = _ref.chainBottom;
- var url = message.url;
-
- var openFileUrl = function openFileUrl() {
- window.open(url);
- };
-
- var messageRef = React.useRef(null);
- var parentContainRef = React.useRef(null);
- var menuRef = React.useRef(null);
- var reactionAddButtonRef = React.useRef(null);
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- mousehover = _useState2[0],
- setMousehover = _useState2[1];
-
- var _useState3 = React.useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- moreActive = _useState4[0],
- setMoreActive = _useState4[1];
-
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var isMessageSent = getIsSentFromStatus(status);
- var showEmojiReactions = isMessageSent && useReaction && message.reactions && message.reactions.length > 0;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React__default.createElement("div", {
- className: "sendbird-file-message__outgoing",
- ref: messageRef,
- style: {
- paddingTop: chainTop ? GROUPAING_PADDING : NORMAL_PADDING$2,
- paddingBottom: chainBottom ? GROUPAING_PADDING : NORMAL_PADDING$2
- }
- }, React__default.createElement("div", {
- className: "sendbird-file-message--inner"
- }, React__default.createElement("div", {
- className: "sendbird-file-message__left-padding"
- }, React__default.createElement("div", {
- className: "sendbird-file-message__more",
- ref: parentContainRef
- }, React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: menuRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: menuRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- openLeft: true
- }, message && message.isResendable && message.isResendable() && React__default.createElement(MenuItem, {
- onClick: function onClick() {
- resendMessage(message);
- closeDropdown();
- }
- }, "Resend"), React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showRemove(true);
- closeDropdown();
- }
- }, "Delete"));
- }
- }), showReactionAddButton && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: reactionAddButtonRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: reactionAddButtonRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })), !chainBottom && !(mousehover || moreActive) && React__default.createElement("div", {
- className: "sendbird-file-message__status"
- }, React__default.createElement(MessageStatus, {
- message: message,
- status: status
- }))), React__default.createElement("div", {
- className: "sendbird-file-message__tooltip"
- }, React__default.createElement("div", {
- className: "sendbird-file-message__tooltip__inner"
- }, checkFileType(url) ? React__default.createElement(Icon, {
- className: "sendbird-file-message__tooltip__icon",
- width: "28px",
- height: "28px",
- type: checkFileType(url)
- }) : null, React__default.createElement(TextButton, {
- className: "sendbird-file-message__tooltip__text",
- onClick: openFileUrl
- }, React__default.createElement(Label, {
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, truncate(message.url, MAX_TRUNCATE_LENGTH)))), showEmojiReactions && React__default.createElement(EmojiReactions, {
- className: "sendbird-file-message__tooltip__emoji-reactions",
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- }))));
-}
-function IncomingFileMessage(_ref2) {
- var message = _ref2.message,
- userId = _ref2.userId,
- useReaction = _ref2.useReaction,
- emojiAllMap = _ref2.emojiAllMap,
- membersMap = _ref2.membersMap,
- toggleReaction = _ref2.toggleReaction,
- memoizedEmojiListItems = _ref2.memoizedEmojiListItems,
- chainTop = _ref2.chainTop,
- chainBottom = _ref2.chainBottom;
-
- var openFileUrl = function openFileUrl() {
- window.open(message.url);
- };
-
- var messageRef = React.useRef(null);
-
- var _React$useContext = React__default.useContext(UserProfileContext),
- disableUserProfile = _React$useContext.disableUserProfile,
- renderUserProfile = _React$useContext.renderUserProfile;
-
- var parentContainRef = React.useRef(null);
- var avatarRef = React.useRef(null);
- var reactionAddButtonRef = React.useRef(null);
-
- var _useState5 = React.useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- mousehover = _useState6[0],
- setMousehover = _useState6[1];
-
- var _useState7 = React.useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- moreActive = _useState8[0],
- setMoreActive = _useState8[1];
-
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React__default.createElement("div", {
- className: "sendbird-file-message__incoming",
- ref: messageRef,
- style: {
- paddingTop: chainTop ? GROUPAING_PADDING : NORMAL_PADDING$2,
- paddingBottom: chainBottom ? GROUPAING_PADDING : NORMAL_PADDING$2
- }
- }, React__default.createElement("div", {
- className: "sendbird-file-message--inner"
- }, React__default.createElement("div", {
- className: "sendbird-file-message__body"
- }, !chainBottom && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(Avatar$1, {
- ref: avatarRef,
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- className: "sendbird-file-message__avatar",
- src: getSenderProfileUrl(message),
- width: "28px",
- height: "28px"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: message.sender,
- close: closeDropdown
- }) : React__default.createElement(ConnectedUserProfile, {
- user: message.sender,
- onSuccess: closeDropdown
- }));
- }
- }), !chainTop && React__default.createElement(Label, {
- className: "sendbird-file-message__sender-name",
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, getSenderName(message)), React__default.createElement("div", {
- className: "sendbird-file-message__tooltip"
- }, React__default.createElement("div", {
- className: "sendbird-file-message__tooltip__inner"
- }, checkFileType(message.url) ? React__default.createElement(Icon, {
- className: "sendbird-file-message__tooltip__icon",
- width: "28px",
- height: "28px",
- type: checkFileType(message.url)
- }) : null, React__default.createElement(TextButton, {
- className: "sendbird-file-message__tooltip__text",
- onClick: openFileUrl
- }, React__default.createElement(Label, {
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, truncate(message.url, MAX_TRUNCATE_LENGTH)))), useReaction && message.reactions && message.reactions.length > 0 && React__default.createElement(EmojiReactions, {
- className: "sendbird-file-message__tooltip__emoji-reactions",
- userId: userId,
- message: message,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- }))), React__default.createElement("div", {
- className: "sendbird-file-message__right-padding"
- }, React__default.createElement("div", {
- className: "sendbird-file-message__more",
- ref: parentContainRef
- }, showReactionAddButton && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: reactionAddButtonRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: reactionAddButtonRef,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })), !chainBottom && !(mousehover || moreActive) && React__default.createElement(Label, {
- className: "sendbird-file-message__sent-at",
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt(message)))));
-}
-OutgoingFileMessage.propTypes = {
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- userId: PropTypes.string,
- status: PropTypes.string,
- showRemove: PropTypes.func,
- resendMessage: PropTypes.func,
- useReaction: PropTypes.bool.isRequired,
- disabled: PropTypes.bool,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-OutgoingFileMessage.defaultProps = {
- status: '',
- showRemove: noop$4,
- resendMessage: noop$4,
- message: {},
- userId: '',
- disabled: false,
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$4,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-IncomingFileMessage.propTypes = {
- message: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.array, PropTypes.object])),
- userId: PropTypes.string,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-IncomingFileMessage.defaultProps = {
- message: {},
- userId: '',
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$4,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-
-var MessageSwitch = function MessageSwitch(_ref3) {
- var message = _ref3.message,
- userId = _ref3.userId,
- disabled = _ref3.disabled,
- isByMe = _ref3.isByMe,
- showRemove = _ref3.showRemove,
- status = _ref3.status,
- resendMessage = _ref3.resendMessage,
- useReaction = _ref3.useReaction,
- emojiAllMap = _ref3.emojiAllMap,
- membersMap = _ref3.membersMap,
- toggleReaction = _ref3.toggleReaction,
- memoizedEmojiListItems = _ref3.memoizedEmojiListItems,
- chainTop = _ref3.chainTop,
- chainBottom = _ref3.chainBottom;
- return React__default.createElement("div", {
- className: "sendbird-file-message".concat(isByMe ? '--outgoing' : '--incoming')
- }, isByMe ? React__default.createElement(OutgoingFileMessage, {
- message: message,
- userId: userId,
- disabled: disabled,
- showRemove: showRemove,
- status: status,
- resendMessage: resendMessage,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- }) : React__default.createElement(IncomingFileMessage, {
- userId: userId,
- message: message,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- }));
-};
-
-MessageSwitch.propTypes = {
- message: PropTypes.shape({}),
- userId: PropTypes.string,
- isByMe: PropTypes.bool,
- disabled: PropTypes.bool,
- showRemove: PropTypes.func,
- resendMessage: PropTypes.func,
- status: PropTypes.string.isRequired,
- useReaction: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool,
- chainBottom: PropTypes.bool
-};
-MessageSwitch.defaultProps = {
- message: {},
- isByMe: false,
- disabled: false,
- showRemove: noop$4,
- resendMessage: noop$4,
- userId: '',
- emojiAllMap: new Map(),
- membersMap: new Map(),
- toggleReaction: noop$4,
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- },
- chainTop: false,
- chainBottom: false
-};
-
-function DateSeparator(_ref) {
- var className = _ref.className,
- children = _ref.children,
- separatorColor = _ref.separatorColor;
- var injectingClassName = Array.isArray(className) ? className : [className];
- return React__default.createElement("div", {
- className: [].concat(_toConsumableArray(injectingClassName), ['sendbird-separator']).join(' ')
- }, React__default.createElement("div", {
- className: ["".concat(changeColorToClassName$2(separatorColor), "--background-color"), 'sendbird-separator__left'].join(' ')
- }), React__default.createElement("div", {
- className: "sendbird-separator__text"
- }, children), React__default.createElement("div", {
- className: ["".concat(changeColorToClassName$2(separatorColor), "--background-color"), 'sendbird-separator__right'].join(' ')
- }));
-}
-DateSeparator.propTypes = {
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string), PropTypes.element]),
- separatorColor: PropTypes.string
-};
-DateSeparator.defaultProps = {
- className: '',
- children: React__default.createElement(Label, {
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, "Date Separator"),
- separatorColor: Colors$2.ONBACKGROUND_4
-};
-
-// import IconAttach from '../../svgs/icon-attach.svg';
-
-var LINE_HEIGHT = 76;
-
-var noop$5 = function noop() {};
-
-var KeyCode = {
- SHIFT: 16,
- ENTER: 13
-};
-
-var handleUploadFile = function handleUploadFile(callback) {
- return function (event) {
- if (event.target.files && event.target.files[0]) {
- callback(event.target.files[0]);
- } // eslint-disable-next-line no-param-reassign
-
-
- event.target.value = '';
- };
-};
-
-var MessageInput = React__default.forwardRef(function (props, ref) {
- var isEdit = props.isEdit,
- disabled = props.disabled,
- value = props.value,
- name = props.name,
- placeholder = props.placeholder,
- maxLength = props.maxLength,
- onFileUpload = props.onFileUpload,
- onSendMessage = props.onSendMessage,
- onCancelEdit = props.onCancelEdit,
- onStartTyping = props.onStartTyping;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var fileInputRef = React.useRef(null);
-
- var _useState = React.useState(value),
- _useState2 = _slicedToArray(_useState, 2),
- inputValue = _useState2[0],
- setInputValue = _useState2[1];
-
- var _useState3 = React.useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- isShiftPressed = _useState4[0],
- setIsShiftPressed = _useState4[1];
-
- var setHeight = function setHeight() {
- var elem = ref.current;
- var MAX_HEIGHT = window.document.body.offsetHeight * 0.6;
-
- if (elem.scrollHeight >= LINE_HEIGHT) {
- if (MAX_HEIGHT < elem.scrollHeight) {
- elem.style.height = 'auto';
- elem.style.height = "".concat(MAX_HEIGHT, "px");
- } else {
- elem.style.height = 'auto';
- elem.style.height = "".concat(elem.scrollHeight, "px");
- }
- } else {
- elem.style.height = '';
- }
- }; // after setHeight called twice, the textarea goes to the initialized
-
-
- React.useEffect(function () {
- setHeight();
- return setHeight;
- }, [inputValue]);
-
- var sendMessage = function sendMessage() {
- if (inputValue) {
- var trimmedInputValue = inputValue.trim();
-
- if (isEdit) {
- onSendMessage(name, trimmedInputValue, function () {
- onCancelEdit();
- });
- } else {
- onSendMessage(trimmedInputValue);
- setInputValue('');
- }
- }
- };
-
- return React__default.createElement("form", {
- className: "\n ".concat(isEdit ? 'sendbird-message-input__edit' : '', "\n ").concat(disabled ? 'sendbird-message-input-form__disabled' : '', "\n ")
- }, React__default.createElement("div", {
- className: "\n sendbird-message-input\n ".concat(disabled ? 'sendbird-message-input__disabled' : '', "\n ")
- }, React__default.createElement("textarea", {
- disabled: disabled,
- ref: ref,
- name: name,
- value: inputValue,
- className: "sendbird-message-input--textarea",
- maxLength: maxLength,
- onChange: function onChange(e) {
- setInputValue(e.target.value);
- onStartTyping();
- },
- onKeyDown: function onKeyDown(e) {
- if (e.keyCode === KeyCode.SHIFT) {
- setIsShiftPressed(true);
- }
-
- if (!isShiftPressed && e.keyCode === KeyCode.ENTER) {
- e.preventDefault();
- sendMessage();
- }
- },
- onKeyUp: function onKeyUp(e) {
- if (e.keyCode === KeyCode.SHIFT) {
- setIsShiftPressed(false);
- }
- }
- }), !inputValue && React__default.createElement(Label, {
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_3,
- className: "sendbird-message-input--placeholder"
- }, placeholder || stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER), !isEdit && !inputValue && React__default.createElement(IconButton, {
- className: "sendbird-message-input--attach",
- height: "32px",
- width: "32px",
- onClick: function onClick() {
- // todo: clear previous input
- fileInputRef.current.click();
- }
- }, React__default.createElement(Icon, {
- type: IconTypes.ATTACH,
- width: "20px",
- height: "20px"
- }), React__default.createElement("input", {
- type: "file",
- ref: fileInputRef,
- onChange: handleUploadFile(onFileUpload),
- className: "sendbird-message-input--attach-input"
- })), !isEdit && inputValue && React__default.createElement(IconButton, {
- className: "sendbird-message-input--send",
- height: "32px",
- width: "32px",
- onClick: sendMessage
- }, React__default.createElement(Icon, {
- type: IconTypes.SEND,
- fillColor: IconColors.PRIMARY,
- width: "20px",
- height: "20px"
- }))), isEdit && React__default.createElement("div", {
- className: "sendbird-message-input--edit-action"
- }, React__default.createElement(Button, {
- className: "sendbird-message-input--edit-action__cancel",
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: onCancelEdit
- }, stringSet.BUTTON__CANCEL), React__default.createElement(Button, {
- className: "sendbird-message-input--edit-action__save",
- type: Type$1.PRIMARY,
- size: Size.SMALL,
- onClick: function onClick() {
- if (inputValue) {
- var trimmedInputValue = inputValue.trim();
- onSendMessage(name, trimmedInputValue, function () {
- onCancelEdit();
- });
- }
- }
- }, stringSet.BUTTON__SAVE)));
-});
-MessageInput.propTypes = {
- placeholder: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
- isEdit: PropTypes.bool,
- name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- value: PropTypes.string,
- disabled: PropTypes.bool,
- maxLength: PropTypes.number,
- onFileUpload: PropTypes.func,
- onSendMessage: PropTypes.func,
- onStartTyping: PropTypes.func,
- onCancelEdit: PropTypes.func
-};
-MessageInput.defaultProps = {
- value: '',
- onSendMessage: noop$5,
- name: 'sendbird-message-input',
- isEdit: false,
- disabled: false,
- placeholder: '',
- maxLength: 5000,
- onFileUpload: noop$5,
- onCancelEdit: noop$5,
- onStartTyping: noop$5
-};
-
-var FileViewerComponent = function FileViewerComponent(_ref) {
- var profileUrl = _ref.profileUrl,
- nickname = _ref.nickname,
- type = _ref.type,
- url = _ref.url,
- name = _ref.name,
- onClose = _ref.onClose,
- onDelete = _ref.onDelete,
- isByMe = _ref.isByMe;
- return React__default.createElement("div", {
- className: "sendbird-fileviewer"
- }, React__default.createElement("div", {
- className: "sendbird-fileviewer__header"
- }, React__default.createElement("div", {
- className: "sendbird-fileviewer__header-left"
- }, React__default.createElement("div", {
- className: "sendbird-fileviewer__header-avatar"
- }, React__default.createElement(Avatar$1, {
- height: "32px",
- width: "32px",
- src: profileUrl
- })), React__default.createElement(Label, {
- className: "sendbird-fileviewer__header-filename",
- type: LabelTypography.H_2,
- color: LabelColors.ONBACKGROUND_1
- }, name), React__default.createElement(Label, {
- className: "sendbird-fileviewer__header-sendername",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_2
- }, nickname)), React__default.createElement("div", {
- className: "sendbird-fileviewer__header-right"
- }, !unSupported(type) && React__default.createElement("div", {
- className: "sendbird-fileviewer__header-actions"
- }, React__default.createElement("a", {
- href: url,
- rel: "noopener noreferrer",
- target: "_blank",
- className: "sendbird-fileviewer__header-download"
- }, React__default.createElement(Icon, {
- type: IconTypes.DOWNLOAD,
- height: "24px",
- width: "24px"
- })), onDelete && isByMe && React__default.createElement("div", {
- className: "sendbird-fileviewer__header-delete"
- }, React__default.createElement(Icon, {
- type: IconTypes.DELETE,
- height: "24px",
- width: "24px",
- onClick: onDelete
- }))), React__default.createElement("div", {
- className: "sendbird-fileviewer__header-close"
- }, React__default.createElement(Icon, {
- type: IconTypes.CLOSE,
- height: "24px",
- width: "24px",
- onClick: onClose
- })))), React__default.createElement("div", {
- className: "sendbird-fileviewer__content"
- }, isVideo(type) && // eslint-disable-next-line jsx-a11y/media-has-caption
- React__default.createElement("video", {
- controls: true,
- className: "sendbird-fileviewer__video"
- }, React__default.createElement("source", {
- src: url,
- type: type
- })), isImage(type) && React__default.createElement("img", {
- src: url,
- alt: name,
- className: "sendbird-fileviewer__img"
- }), unSupported(type) && React__default.createElement("div", {
- className: "sendbird-fileviewer__unsupported"
- }, React__default.createElement(Label, {
- type: LabelTypography.H_1,
- color: LabelColors.ONBACKGROUND_1
- }, "Unsupoprted message"))));
-};
-FileViewerComponent.propTypes = {
- profileUrl: PropTypes.string.isRequired,
- nickname: PropTypes.string.isRequired,
- type: PropTypes.string.isRequired,
- url: PropTypes.string.isRequired,
- name: PropTypes.string.isRequired,
- onClose: PropTypes.func.isRequired,
- onDelete: PropTypes.func.isRequired,
- isByMe: PropTypes.bool
-};
-FileViewerComponent.defaultProps = {
- isByMe: true
-};
-function FileViewer(props) {
- var onClose = props.onClose,
- message = props.message,
- onDelete = props.onDelete,
- isByMe = props.isByMe;
- var sender = message.sender,
- type = message.type,
- url = message.url,
- _message$name = message.name,
- name = _message$name === void 0 ? '' : _message$name;
- var profileUrl = sender.profileUrl,
- _sender$nickname = sender.nickname,
- nickname = _sender$nickname === void 0 ? '' : _sender$nickname;
- return reactDom.createPortal(React__default.createElement(FileViewerComponent, {
- profileUrl: profileUrl,
- nickname: nickname,
- type: type,
- url: url,
- name: name,
- onClose: onClose,
- onDelete: onDelete,
- isByMe: isByMe
- }), document.getElementById(MODAL_ROOT));
-}
-FileViewer.propTypes = {
- onClose: PropTypes.func.isRequired,
- message: PropTypes.shape({
- sender: PropTypes.shape({
- profileUrl: PropTypes.string,
- nickname: PropTypes.string
- }),
- type: PropTypes.string,
- url: PropTypes.string,
- name: PropTypes.string
- }).isRequired,
- onDelete: PropTypes.func.isRequired,
- isByMe: PropTypes.bool
-};
-FileViewer.defaultProps = {
- isByMe: true
-};
-
-var RemoveMessage = function RemoveMessage(props) {
- var onCloseModal = props.onCloseModal,
- onDeleteMessage = props.onDeleteMessage;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React__default.createElement(Modal, {
- onCancel: onCloseModal,
- onSubmit: onDeleteMessage,
- submitText: "Delete",
- titleText: stringSet.MODAL__DELETE_MESSAGE__TITLE
- });
-};
-
-RemoveMessage.propTypes = {
- onCloseModal: PropTypes.func.isRequired,
- onDeleteMessage: PropTypes.func.isRequired
-};
-
-var getMessageCreatedAt$4 = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-
-var CLASS_NAME$4 = 'sendbird-unknown-message';
-var GROUPING_PADDING$2 = '1px';
-var NORMAL_PADDING$3 = '8px';
-function UnknownMessage(_ref) {
- var message = _ref.message,
- isByMe = _ref.isByMe,
- status = _ref.status,
- className = _ref.className,
- showRemove = _ref.showRemove,
- chainTop = _ref.chainTop,
- chainBottom = _ref.chainBottom;
- var injectingClassName = Array.isArray(className) ? className : [className];
- injectingClassName.unshift(CLASS_NAME$4);
- injectingClassName.push("".concat(CLASS_NAME$4).concat(isByMe ? '--outgoing' : '--incoming'));
- return React__default.createElement("div", {
- className: injectingClassName.join(' ')
- }, isByMe ? React__default.createElement(OutgoingUnknownMessage, {
- status: status,
- message: message,
- chainTop: chainTop,
- showRemove: showRemove,
- chainBottom: chainBottom
- }) : React__default.createElement(IncomingUnknownMessage, {
- message: message,
- chainTop: chainTop,
- chainBottom: chainBottom
- }));
-}
-UnknownMessage.propTypes = {
- message: PropTypes.shape({}).isRequired,
- isByMe: PropTypes.bool,
- status: PropTypes.string,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- showRemove: PropTypes.func,
- chainTop: PropTypes.bool,
- chainBottom: PropTypes.bool
-};
-UnknownMessage.defaultProps = {
- isByMe: false,
- status: '',
- className: '',
- showRemove: function showRemove() {},
- chainTop: false,
- chainBottom: false
-};
-
-function OutgoingUnknownMessage(_ref2) {
- var message = _ref2.message,
- status = _ref2.status,
- showRemove = _ref2.showRemove,
- chainTop = _ref2.chainTop,
- chainBottom = _ref2.chainBottom;
- var className = 'sendbird-outgoing-unknown-message';
- var messageRef = React.useRef(null);
- var parentContainRef = React.useRef(null);
- var menuRef = React.useRef(null);
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- mousehover = _useState2[0],
- setMousehover = _useState2[1];
-
- var _useState3 = React.useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- moreActive = _useState4[0],
- setMoreActive = _useState4[1];
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React__default.createElement("div", {
- ref: messageRef,
- className: className,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$2 : NORMAL_PADDING$3,
- paddingBottom: chainBottom ? GROUPING_PADDING$2 : NORMAL_PADDING$3
- }
- }, React__default.createElement("div", {
- className: "".concat(className, "--inner")
- }, React__default.createElement("div", {
- className: "".concat(className, "--left-padding")
- }, React__default.createElement("div", {
- className: "".concat(className, "__more"),
- ref: parentContainRef
- }, React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "".concat(className, "__more__menu"),
- ref: menuRef,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: menuRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: parentContainRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React__default.createElement(MenuItem, {
- onClick: function onClick() {
- showRemove(true);
- closeDropdown();
- }
- }, "Delete"));
- }
- })), !chainBottom && !(mousehover || moreActive) && React__default.createElement("div", {
- className: "".concat(className, "__message-status")
- }, React__default.createElement(MessageStatus, {
- message: message,
- status: status
- }))), React__default.createElement("div", {
- className: "".concat(className, "__body")
- }, React__default.createElement("div", {
- className: "".concat(className, "__body__text-balloon")
- }, React__default.createElement(Label, {
- className: "".concat(className, "__body__text-balloon__header"),
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React__default.createElement(Label, {
- className: "".concat(className, "__body__text-balloon__description"),
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_2
- }, stringSet.UNKNOWN__CANNOT_READ_MESSAGE)))));
-}
-
-function IncomingUnknownMessage(_ref3) {
- var message = _ref3.message,
- chainTop = _ref3.chainTop,
- chainBottom = _ref3.chainBottom;
- var className = 'sendbird-incoming-unknown-message';
- var sender = message.sender;
- var avatarRef = React.useRef(null);
-
- var _useContext2 = React.useContext(LocalizationContext),
- stringSet = _useContext2.stringSet;
-
- var _React$useContext = React__default.useContext(UserProfileContext),
- disableUserProfile = _React$useContext.disableUserProfile,
- renderUserProfile = _React$useContext.renderUserProfile;
-
- return React__default.createElement("div", {
- className: className,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$2 : NORMAL_PADDING$3,
- paddingBottom: chainBottom ? GROUPING_PADDING$2 : NORMAL_PADDING$3
- }
- }, React__default.createElement("div", {
- className: "".concat(className, "--inner")
- }, React__default.createElement("div", {
- className: "".concat(className, "__left")
- }, !chainBottom && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(Avatar$1, {
- ref: avatarRef,
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- className: "".concat(className, "__left__sender-profile-image"),
- src: sender.profileUrl,
- width: "28px",
- height: "28px",
- alt: "sender-profile-image"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: message.sender,
- close: closeDropdown
- }) : React__default.createElement(ConnectedUserProfile, {
- user: message.sender,
- onSuccess: closeDropdown
- }));
- }
- })), React__default.createElement("div", {
- className: "".concat(className, "__body")
- }, !chainTop && React__default.createElement(Label, {
- className: "".concat(className, "__body__sender-name"),
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, sender.nickname || stringSet.NO_NAME), React__default.createElement("div", {
- className: "".concat(className, "__body__text-balloon")
- }, React__default.createElement(Label, {
- className: "".concat(className, "__body__text-balloon__header"),
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE), React__default.createElement(Label, {
- className: "".concat(className, "__body__text-balloon__description"),
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_2
- }, stringSet.UNKNOWN__CANNOT_READ_MESSAGE))), React__default.createElement("div", {
- className: "".concat(className, "--right-padding")
- }, !chainBottom && React__default.createElement(Label, {
- className: "".concat(className, "__sent-at"),
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt$4(message)))));
-}
-
-OutgoingUnknownMessage.propTypes = {
- message: PropTypes.shape({}).isRequired,
- status: PropTypes.string.isRequired,
- showRemove: PropTypes.func,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-OutgoingUnknownMessage.defaultProps = {
- showRemove: function showRemove() {}
-};
-IncomingUnknownMessage.propTypes = {
- message: PropTypes.shape({
- sender: PropTypes.shape({
- nickname: PropTypes.string,
- profileUrl: PropTypes.string
- })
- }).isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-
-var URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;
-var OG_MESSAGE = 'sendbird-og-message';
-var OUTGOING_OG_MESSAGE = 'sendbird-outgoing-og-message';
-var INCOMING_OG_MESSAGE = 'sendbird-incoming-og-message';
-
-var createUrlTester = function createUrlTester(regexp) {
- return function (text) {
- return regexp.test(text);
- };
-};
-var getIsSentFromStatus$3 = function getIsSentFromStatus(status) {
- return status === MessageStatusType.SENT || status === MessageStatusType.DELIVERED || status === MessageStatusType.READ;
-};
-var copyToClipboard$1 = function copyToClipboard(text) {
- try {
- if (window.clipboardData && window.clipboardData.setData) {
- // Internet Explorer-specific code path
- // to prevent textarea being shown while dialog is visible.
- return window.clipboardData.setData('Text', text);
- }
-
- if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
- var textarea = document.createElement('textarea');
- textarea.textContent = text;
- textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.
-
- document.body.appendChild(textarea);
- textarea.select();
-
- try {
- return document.execCommand('copy'); // Security exception may be thrown by some browsers.
- } catch (ex) {
- return false;
- } finally {
- document.body.removeChild(textarea);
- }
- }
-
- return false;
- } catch (err) {
- return err;
- }
-};
-var getSenderProfileUrl$2 = function getSenderProfileUrl(message) {
- return message.sender && message.sender.profileUrl;
-};
-var getSenderName$2 = function getSenderName(message) {
- return message.sender && (message.sender.friendName || message.sender.nickname || message.sender.userId);
-};
-var getMessageCreatedAt$5 = function getMessageCreatedAt(message) {
- return format(message.createdAt, 'p');
-};
-var checkOGIsEnalbed = function checkOGIsEnalbed(message) {
- var ogMetaData = message.ogMetaData;
-
- if (!ogMetaData) {
- return false;
- }
-
- var url = ogMetaData.url;
-
- if (!url) {
- return false;
- }
-
- return true;
-};
-
-var LINK_LABEL = 'sendbird-link-label';
-var http = /https?:\/\//;
-function LinkLabel(_ref) {
- var className = _ref.className,
- src = _ref.src,
- type = _ref.type,
- color = _ref.color,
- children = _ref.children;
- var injecingClassName = Array.isArray(className) ? className : [className];
- var url = http.test(src) ? src : "http://".concat(src);
- return React__default.createElement("a", {
- className: "".concat(LINK_LABEL, " ").concat(injecingClassName.join(' ')),
- href: url
- }, React__default.createElement(Label, {
- type: type,
- color: color,
- className: "".concat(LINK_LABEL, "__label")
- }, children));
-}
-LinkLabel.propTypes = {
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.element)]).isRequired,
- src: PropTypes.string.isRequired,
- type: PropTypes.oneOf(Object.keys(LabelTypography)).isRequired,
- color: PropTypes.oneOf(Object.keys(LabelColors)).isRequired
-};
-LinkLabel.defaultProps = {
- className: ''
-};
-
-var WORD_TYPOGRAPHY$1 = LabelTypography.BODY_1;
-var WORD_COLOR = LabelColors.ONBACKGROUND_1;
-var EDITED_COLOR$1 = LabelColors.ONBACKGROUND_2;
-var isUrl = createUrlTester(URL_REG);
-function useMemoizedMessageText$1(_ref) {
- var message = _ref.message,
- updatedAt = _ref.updatedAt,
- className = _ref.className;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React.useMemo(function () {
- return function () {
- var splitMessage = message.split(' ');
- var matchedMessage = splitMessage.map(function (word) {
- return isUrl(word) ? React__default.createElement(LinkLabel, {
- key: uuidv4(),
- className: className,
- src: word,
- type: WORD_TYPOGRAPHY$1,
- color: WORD_COLOR
- }, word) : React__default.createElement(Label, {
- key: uuidv4(),
- className: className,
- type: WORD_TYPOGRAPHY$1,
- color: WORD_COLOR
- }, word);
- });
-
- if (updatedAt > 0) {
- matchedMessage.push(React__default.createElement(Label, {
- key: uuidv4(),
- className: className,
- type: WORD_TYPOGRAPHY$1,
- color: EDITED_COLOR$1
- }, stringSet.MESSAGE_EDITED));
- } // return (<>{matchedMessage}>);
-
-
- return matchedMessage;
- };
- }, [message, updatedAt, className]);
-}
-
-var GROUPING_PADDING$3 = '1px';
-var NORAML_PADDING = '8px';
-
-var OGMessageSwitch = function OGMessageSwitch(_ref) {
- var isByMe = _ref.isByMe,
- userId = _ref.userId,
- status = _ref.status,
- message = _ref.message,
- disabled = _ref.disabled,
- showEdit = _ref.showEdit,
- chainTop = _ref.chainTop,
- className = _ref.className,
- membersMap = _ref.membersMap,
- showRemove = _ref.showRemove,
- useReaction = _ref.useReaction,
- emojiAllMap = _ref.emojiAllMap,
- chainBottom = _ref.chainBottom,
- resendMessage = _ref.resendMessage,
- toggleReaction = _ref.toggleReaction,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems;
- var ogMetaData = message.ogMetaData;
- var injectingClassName = Array.isArray(className) ? className : [className];
- var memoizedMessageText = useMemoizedMessageText$1({
- message: message.message,
- updatedAt: message.updatedAt,
- className: 'sendbird-og-message-word'
- });
-
- var openLink = function openLink() {
- if (checkOGIsEnalbed(message)) {
- var url = ogMetaData.url;
- window.open(url);
- }
- };
-
- return React__default.createElement("div", {
- className: "".concat(OG_MESSAGE, " ").concat(OG_MESSAGE).concat(isByMe ? '--outgoing' : '--incoming', " ").concat(injectingClassName.join(' '))
- }, isByMe ? React__default.createElement(OutgoingOGMessage, {
- status: status,
- userId: userId,
- message: message,
- disabled: disabled,
- openLink: openLink,
- showEdit: showEdit,
- chainTop: chainTop,
- showRemove: showRemove,
- membersMap: membersMap,
- chainBottom: chainBottom,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- resendMessage: resendMessage,
- toggleReaction: toggleReaction,
- memoizedMessageText: memoizedMessageText,
- memoizedEmojiListItems: memoizedEmojiListItems
- }) : React__default.createElement(IncomingOGMessage, {
- userId: userId,
- message: message,
- openLink: openLink,
- chainTop: chainTop,
- membersMap: membersMap,
- chainBottom: chainBottom,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- toggleReaction: toggleReaction,
- memoizedMessageText: memoizedMessageText,
- memoizedEmojiListItems: memoizedEmojiListItems
- }));
-};
-
-function OutgoingOGMessage(props) {
- var status = props.status,
- userId = props.userId,
- message = props.message,
- disabled = props.disabled,
- openLink = props.openLink,
- showEdit = props.showEdit,
- chainTop = props.chainTop,
- showRemove = props.showRemove,
- membersMap = props.membersMap,
- chainBottom = props.chainBottom,
- emojiAllMap = props.emojiAllMap,
- useReaction = props.useReaction,
- resendMessage = props.resendMessage,
- toggleReaction = props.toggleReaction,
- memoizedMessageText = props.memoizedMessageText,
- memoizedEmojiListItems = props.memoizedEmojiListItems;
- var ogMetaData = message.ogMetaData;
- var defaultImage = ogMetaData.defaultImage;
- var MemoizedMessageText = memoizedMessageText;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var messageRef = React.useRef(null);
- var parentRefReactions = React.useRef(null);
- var parentRefMenus = React.useRef(null);
- var parentContainRef = React.useRef(null);
- var isMessageSent = getIsSentFromStatus$3(status);
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- mousehover = _useState2[0],
- setMousehover = _useState2[1];
-
- var _useState3 = React.useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- moreActive = _useState4[0],
- setMoreActive = _useState4[1];
-
- var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React__default.createElement("div", {
- ref: messageRef,
- className: OUTGOING_OG_MESSAGE,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$3 : NORAML_PADDING,
- paddingBottom: chainBottom ? GROUPING_PADDING$3 : NORAML_PADDING
- }
- }, React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "--inner")
- }, React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "--left-padding")
- }, React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__more"),
- ref: parentContainRef
- }, React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "".concat(OUTGOING_OG_MESSAGE, "__more__menu"),
- ref: parentRefMenus,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: parentRefMenus // for catching location(x, y) of MenuItems
- ,
- parentContainRef: parentContainRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, isMessageSent && React__default.createElement(MenuItem, {
- className: "".concat(OUTGOING_OG_MESSAGE, "__more__menu__copy"),
- onClick: function onClick() {
- copyToClipboard$1(message.message);
- closeDropdown();
- }
- }, "Copy"), isMessageSent && React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showEdit(true);
- closeDropdown();
- }
- }, "Edit"), message && message.isResendable && message.isResendable() && React__default.createElement(MenuItem, {
- onClick: function onClick() {
- resendMessage(message);
- closeDropdown();
- }
- }, "Resend"), React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- showRemove(true);
- closeDropdown();
- }
- }, "Delete"));
- }
- }), isMessageSent && useReaction && emojiAllMap.size > 0 && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "".concat(OUTGOING_OG_MESSAGE, "__more__add-reaction"),
- ref: parentRefReactions,
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MemoizedEmojiListItems, {
- message: message,
- parentRef: parentRefReactions,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- })), !chainBottom && !(mousehover || moreActive) && React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__message-status")
- }, React__default.createElement(MessageStatus, {
- message: message,
- status: status
- }))), React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "--body")
- }, React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__text-balloon")
- }, React__default.createElement(MemoizedMessageText, null)), React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail ").concat(checkOGIsEnalbed(message) ? '' : "".concat(OUTGOING_OG_MESSAGE, "__thumbnail--disabled")),
- onClick: openLink,
- onKeyDown: openLink,
- role: "button",
- tabIndex: 0
- }, defaultImage && React__default.createElement(ImageRenderer, {
- url: defaultImage.url || '',
- alt: defaultImage.alt,
- className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail__image"),
- width: "320px",
- height: "180px",
- defaultComponent: React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__thumbnail__image__placeholder")
- }, React__default.createElement(Icon, {
- width: "56px",
- height: "56px",
- type: IconTypes.NO_THUMBNAIL
- }))
- })), React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag ").concat(checkOGIsEnalbed(message) ? '' : "".concat(OUTGOING_OG_MESSAGE, "__og-tag--disabled")),
- onClick: openLink,
- onKeyDown: openLink,
- role: "button",
- tabIndex: 0
- }, ogMetaData.title && React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__title")
- }, React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1
- }, ogMetaData.title)), ogMetaData.description && React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__description")
- }, React__default.createElement(Label, {
- type: LabelTypography.BODY_2,
- color: LabelColors.ONBACKGROUND_1,
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__description__label")
- }, ogMetaData.description)), ogMetaData.url && React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__url")
- }, React__default.createElement(Label, {
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2,
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__url__label")
- }, ogMetaData.url)), showEmojiReactions && React__default.createElement("div", {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__emoji-reactions--wrapper"),
- onClick: function onClick(event) {
- return event.stopPropagation();
- },
- onKeyDown: function onKeyDown(event) {
- return event.stopPropagation();
- },
- role: "button",
- tabIndex: 0
- }, React__default.createElement(EmojiReactions, {
- className: "".concat(OUTGOING_OG_MESSAGE, "__og-tag__emoji-reactions"),
- userId: userId,
- message: message,
- membersMap: membersMap,
- emojiAllMap: emojiAllMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- }))))));
-}
-
-function IncomingOGMessage(props) {
- var userId = props.userId,
- message = props.message,
- openLink = props.openLink,
- chainTop = props.chainTop,
- membersMap = props.membersMap,
- chainBottom = props.chainBottom,
- useReaction = props.useReaction,
- emojiAllMap = props.emojiAllMap,
- toggleReaction = props.toggleReaction,
- memoizedMessageText = props.memoizedMessageText,
- memoizedEmojiListItems = props.memoizedEmojiListItems;
- var ogMetaData = message.ogMetaData;
- var defaultImage = ogMetaData.defaultImage;
- var MemoizedMessageText = memoizedMessageText;
- var MemoizedEmojiListItems = memoizedEmojiListItems;
- var messageRef = React.useRef(null);
- var avatarRef = React.useRef(null);
- var parentRefReactions = React.useRef(null);
- var parentRefMenus = React.useRef(null);
- var parentContainRef = React.useRef(null);
-
- var _React$useContext = React__default.useContext(UserProfileContext),
- disableUserProfile = _React$useContext.disableUserProfile,
- renderUserProfile = _React$useContext.renderUserProfile;
-
- var _useState5 = React.useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- mousehover = _useState6[0],
- setMousehover = _useState6[1];
-
- var _useState7 = React.useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- moreActive = _useState8[0],
- setMoreActive = _useState8[1];
-
- var showEmojiReactions = useReaction && message.reactions && message.reactions.length > 0;
- var showReactionAddButton = useReaction && emojiAllMap && emojiAllMap.size > 0;
-
- var handleMoreIconClick = function handleMoreIconClick() {
- setMoreActive(true);
- };
-
- var handleMoreIconBlur = function handleMoreIconBlur() {
- setMoreActive(false);
- };
-
- useMouseHover({
- ref: messageRef,
- setHover: setMousehover
- });
- return React__default.createElement("div", {
- ref: messageRef,
- className: INCOMING_OG_MESSAGE,
- style: {
- paddingTop: chainTop ? GROUPING_PADDING$3 : NORAML_PADDING,
- paddingBottom: chainBottom ? GROUPING_PADDING$3 : NORAML_PADDING
- }
- }, React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "--inner")
- }, React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "--body")
- }, !chainBottom && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(Avatar$1, {
- ref: avatarRef,
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- className: "".concat(INCOMING_OG_MESSAGE, "__avatar"),
- src: getSenderProfileUrl$2(message),
- width: "28px",
- height: "28px",
- alt: "sender-profile-image"
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: message.sender,
- close: closeDropdown
- }) : React__default.createElement(ConnectedUserProfile, {
- user: message.sender,
- onSuccess: closeDropdown
- }));
- }
- }), !chainTop && React__default.createElement(Label, {
- className: "".concat(INCOMING_OG_MESSAGE, "__sender-name"),
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, getSenderName$2(message)), React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__text-balloon")
- }, React__default.createElement(MemoizedMessageText, null)), React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail ").concat(checkOGIsEnalbed(message) ? '' : "".concat(INCOMING_OG_MESSAGE, "__thumbnail--disabled")),
- onClick: openLink,
- onKeyDown: openLink,
- role: "button",
- tabIndex: 0
- }, defaultImage && React__default.createElement(ImageRenderer, {
- url: defaultImage.url || '',
- alt: defaultImage.alt || '',
- className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail__image"),
- width: "320px",
- height: "180px",
- defaultComponent: React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__thumbnail__image__placeholder")
- }, React__default.createElement(Icon, {
- width: "56px",
- height: "56px",
- type: IconTypes.NO_THUMBNAIL
- }))
- })), React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag ").concat(checkOGIsEnalbed(message) ? '' : "".concat(INCOMING_OG_MESSAGE, "__og-tag--disabled")),
- onClick: openLink,
- onKeyDown: openLink,
- role: "button",
- tabIndex: 0
- }, ogMetaData.title && React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__title")
- }, React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1
- }, ogMetaData.title)), ogMetaData.description && React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__description")
- }, React__default.createElement(Label, {
- type: LabelTypography.BODY_2,
- color: LabelColors.ONBACKGROUND_1,
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__description__label")
- }, ogMetaData.description)), ogMetaData.url && React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__url")
- }, React__default.createElement(Label, {
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2,
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__url__label")
- }, ogMetaData.url)), showEmojiReactions && React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__emoji-reactions--wrapper"),
- onClick: function onClick(event) {
- return event.stopPropagation();
- },
- onKeyDown: function onKeyDown(event) {
- return event.stopPropagation();
- },
- role: "button",
- tabIndex: 0
- }, React__default.createElement(EmojiReactions, {
- className: "".concat(INCOMING_OG_MESSAGE, "__og-tag__emoji-reactions"),
- userId: userId,
- message: message,
- membersMap: membersMap,
- emojiAllMap: emojiAllMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- })))), React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "--right-padding")
- }, !chainBottom && !(mousehover || moreActive) && React__default.createElement(Label, {
- className: "".concat(INCOMING_OG_MESSAGE, "__sent-at"),
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, getMessageCreatedAt$5(message)), React__default.createElement("div", {
- className: "".concat(INCOMING_OG_MESSAGE, "__more"),
- ref: parentContainRef
- }, showReactionAddButton && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: parentRefReactions,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.EMOJI_REACTIONS_ADD,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MemoizedEmojiListItems, {
- parentRef: parentRefReactions,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown,
- message: message,
- spaceFromTrigger: {
- y: 2
- }
- });
- }
- }), React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- ref: parentRefMenus,
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- toggleDropdown();
- handleMoreIconClick();
- },
- onBlur: function onBlur() {
- handleMoreIconBlur();
- }
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentRef: parentRefMenus,
- parentContainRef: parentContainRef,
- closeDropdown: closeDropdown
- }, React__default.createElement(MenuItem, {
- className: "".concat(INCOMING_OG_MESSAGE, "__more__menu__copy"),
- onClick: function onClick() {
- copyToClipboard$1(message.message);
- closeDropdown();
- }
- }, "Copy"));
- }
- })))));
-}
-
-var noop$6 = function noop() {};
-
-OGMessageSwitch.propTypes = {
- isByMe: PropTypes.bool.isRequired,
- userId: PropTypes.string.isRequired,
- message: PropTypes.shape({
- message: PropTypes.string,
- sender: PropTypes.shape({}),
- ogMetaData: PropTypes.shape({
- title: PropTypes.string,
- description: PropTypes.string,
- url: PropTypes.string,
- defaultImage: PropTypes.shape({
- url: PropTypes.string,
- alt: PropTypes.string
- })
- }),
- reactions: PropTypes.array,
- updatedAt: PropTypes.number
- }).isRequired,
- useReaction: PropTypes.bool.isRequired,
- className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
- status: PropTypes.string,
- disabled: PropTypes.bool,
- showEdit: PropTypes.func,
- showRemove: PropTypes.func,
- resendMessage: PropTypes.func,
- toggleReaction: PropTypes.func,
- membersMap: PropTypes.instanceOf(Map),
- emojiAllMap: PropTypes.instanceOf(Map),
- memoizedEmojiListItems: PropTypes.func,
- chainTop: PropTypes.bool,
- chainBottom: PropTypes.bool
-};
-OGMessageSwitch.defaultProps = {
- className: '',
- status: '',
- disabled: false,
- showEdit: noop$6,
- showRemove: noop$6,
- resendMessage: noop$6,
- toggleReaction: noop$6,
- membersMap: new Map(),
- emojiAllMap: new Map(),
- memoizedEmojiListItems: noop$6,
- chainTop: false,
- chainBottom: false
-};
-OutgoingOGMessage.propTypes = {
- status: PropTypes.string,
- userId: PropTypes.string.isRequired,
- message: PropTypes.shape({
- message: PropTypes.string,
- ogMetaData: PropTypes.shape({
- title: PropTypes.string,
- description: PropTypes.string,
- url: PropTypes.string,
- defaultImage: PropTypes.shape({
- url: PropTypes.string,
- alt: PropTypes.string
- })
- }),
- reactions: PropTypes.array,
- updatedAt: PropTypes.number,
- isResendable: PropTypes.func,
- errorCode: PropTypes.number
- }).isRequired,
- disabled: PropTypes.bool.isRequired,
- openLink: PropTypes.func.isRequired,
- showEdit: PropTypes.func.isRequired,
- showRemove: PropTypes.func.isRequired,
- membersMap: PropTypes.instanceOf(Map).isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- useReaction: PropTypes.bool.isRequired,
- resendMessage: PropTypes.func.isRequired,
- toggleReaction: PropTypes.func.isRequired,
- memoizedMessageText: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func.isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-OutgoingOGMessage.defaultProps = {
- status: ''
-};
-IncomingOGMessage.propTypes = {
- userId: PropTypes.string.isRequired,
- message: PropTypes.shape({
- message: PropTypes.string,
- sender: PropTypes.shape({}),
- ogMetaData: PropTypes.shape({
- title: PropTypes.string,
- description: PropTypes.string,
- url: PropTypes.string,
- defaultImage: PropTypes.shape({
- url: PropTypes.string,
- alt: PropTypes.string
- })
- }),
- reactions: PropTypes.array,
- updatedAt: PropTypes.number
- }).isRequired,
- openLink: PropTypes.func.isRequired,
- membersMap: PropTypes.instanceOf(Map).isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- useReaction: PropTypes.bool.isRequired,
- toggleReaction: PropTypes.func.isRequired,
- memoizedMessageText: PropTypes.func.isRequired,
- memoizedEmojiListItems: PropTypes.func.isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired
-};
-
-function MessageHoc(_ref) {
- var _MessageTypes$ADMIN$M;
-
- var message = _ref.message,
- userId = _ref.userId,
- disabled = _ref.disabled,
- editDisabled = _ref.editDisabled,
- hasSeperator = _ref.hasSeperator,
- deleteMessage = _ref.deleteMessage,
- updateMessage = _ref.updateMessage,
- status = _ref.status,
- resendMessage = _ref.resendMessage,
- useReaction = _ref.useReaction,
- chainTop = _ref.chainTop,
- chainBottom = _ref.chainBottom,
- emojiAllMap = _ref.emojiAllMap,
- membersMap = _ref.membersMap,
- toggleReaction = _ref.toggleReaction,
- memoizedEmojiListItems = _ref.memoizedEmojiListItems;
- var _message$sender = message.sender,
- sender = _message$sender === void 0 ? {} : _message$sender;
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showEdit = _useState2[0],
- setShowEdit = _useState2[1];
-
- var _useState3 = React.useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- showRemove = _useState4[0],
- setShowRemove = _useState4[1];
-
- var _useState5 = React.useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- showFileViewer = _useState6[0],
- setShowFileViewer = _useState6[1];
-
- var editMessageInputRef = React.useRef(null);
- var isByMe = userId === sender.userId || message.requestState === 'pending' || message.requestState === 'failed';
-
- if (showEdit) {
- return React__default.createElement(MessageInput, {
- isEdit: true,
- disabled: editDisabled,
- ref: editMessageInputRef,
- name: message.messageId,
- onSendMessage: updateMessage,
- onCancelEdit: function onCancelEdit() {
- setShowEdit(false);
- },
- value: message.message
- });
- }
-
- return React__default.createElement("div", {
- className: "sendbird-msg-hoc sendbird-msg--scroll-ref"
- }, hasSeperator && React__default.createElement(DateSeparator, null, React__default.createElement(Label, {
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, format(message.createdAt, 'MMMM dd, yyyy'))), (_MessageTypes$ADMIN$M = {}, _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.ADMIN, React__default.createElement(AdminMessage, {
- message: message
- })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.FILE, React__default.createElement(MessageSwitch, {
- message: message,
- userId: userId,
- disabled: disabled,
- isByMe: isByMe,
- showRemove: setShowRemove,
- resendMessage: resendMessage,
- status: status,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.OG, React__default.createElement(OGMessageSwitch, {
- message: message,
- status: status,
- isByMe: isByMe,
- userId: userId,
- showEdit: setShowEdit,
- disabled: disabled,
- showRemove: setShowRemove,
- resendMessage: resendMessage,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.THUMBNAIL, React__default.createElement(ThumbnailMessage, {
- disabled: disabled,
- message: message,
- userId: userId,
- isByMe: isByMe,
- showRemove: setShowRemove,
- resendMessage: resendMessage,
- onClick: setShowFileViewer,
- status: status,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- })), _defineProperty(_MessageTypes$ADMIN$M, MessageTypes.USER, React__default.createElement(Message, {
- message: message,
- disabled: disabled,
- isByMe: isByMe,
- userId: userId,
- showEdit: setShowEdit,
- showRemove: setShowRemove,
- resendMessage: resendMessage,
- status: status,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- membersMap: membersMap,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems,
- chainTop: chainTop,
- chainBottom: chainBottom
- })), _MessageTypes$ADMIN$M)[getMessageType(message)], showRemove && React__default.createElement(RemoveMessage, {
- onCloseModal: function onCloseModal() {
- return setShowRemove(false);
- },
- onDeleteMessage: function onDeleteMessage() {
- deleteMessage(message);
- }
- }), showFileViewer && React__default.createElement(FileViewer, {
- onClose: function onClose() {
- return setShowFileViewer(false);
- },
- message: message,
- onDelete: function onDelete() {
- deleteMessage(message, function () {
- setShowFileViewer(false);
- });
- },
- isByMe: isByMe
- }), !(message.isFileMessage && message.isFileMessage() || message.messageType === 'file') && !(message.isAdminMessage && message.isAdminMessage()) && !(message.isUserMessage && message.isUserMessage() || message.messageType === 'user') && !showFileViewer && React__default.createElement(UnknownMessage, {
- message: message,
- status: status,
- isByMe: isByMe,
- showRemove: setShowRemove,
- chainTop: chainTop,
- chainBottom: chainBottom
- }));
-}
-MessageHoc.propTypes = {
- userId: PropTypes.string,
- message: PropTypes.shape({
- isFileMessage: PropTypes.func,
- isAdminMessage: PropTypes.func,
- isUserMessage: PropTypes.func,
- isDateSeperator: PropTypes.func,
- // should be a number, but there's a bug in SDK shich returns string
- messageId: PropTypes.number,
- type: PropTypes.string,
- createdAt: PropTypes.number,
- message: PropTypes.string,
- requestState: PropTypes.string,
- messageType: PropTypes.string,
- sender: PropTypes.shape({
- userId: PropTypes.string
- }),
- ogMetaData: PropTypes.shape({})
- }),
- hasSeperator: PropTypes.bool,
- disabled: PropTypes.bool,
- editDisabled: PropTypes.bool,
- deleteMessage: PropTypes.func.isRequired,
- updateMessage: PropTypes.func.isRequired,
- resendMessage: PropTypes.func.isRequired,
- status: PropTypes.string,
- useReaction: PropTypes.bool.isRequired,
- chainTop: PropTypes.bool.isRequired,
- chainBottom: PropTypes.bool.isRequired,
- emojiAllMap: PropTypes.instanceOf(Map).isRequired,
- membersMap: PropTypes.instanceOf(Map).isRequired,
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func
-};
-MessageHoc.defaultProps = {
- userId: '',
- editDisabled: false,
- message: {},
- hasSeperator: false,
- disabled: false,
- status: '',
- toggleReaction: function toggleReaction() {},
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-
-var ConversationScroll =
-/*#__PURE__*/
-function (_Component) {
- _inherits(ConversationScroll, _Component);
-
- function ConversationScroll() {
- var _getPrototypeOf2;
-
- var _this;
-
- _classCallCheck(this, ConversationScroll);
-
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
-
- _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ConversationScroll)).call.apply(_getPrototypeOf2, [this].concat(args)));
-
- _defineProperty(_assertThisInitialized(_this), "onScroll", function (e) {
- var _this$props = _this.props,
- scrollRef = _this$props.scrollRef,
- hasMore = _this$props.hasMore,
- messagesDispatcher = _this$props.messagesDispatcher,
- onScroll = _this$props.onScroll,
- currentGroupChannel = _this$props.currentGroupChannel;
- var element = e.target;
- var scrollTop = element.scrollTop,
- clientHeight = element.clientHeight,
- scrollHeight = element.scrollHeight;
-
- if (scrollTop === 0) {
- if (!hasMore) {
- return;
- }
-
- var nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');
- var first = nodes[0];
- onScroll(function (_ref) {
- var _ref2 = _slicedToArray(_ref, 1),
- messages = _ref2[0];
-
- if (messages) {
- // https://github.com/scabbiaza/react-scroll-position-on-updating-dom
- first.scrollIntoView();
- }
- });
- }
-
- setTimeout(function () {
- // mark as read if scroll is at end
- if (clientHeight + scrollTop === scrollHeight) {
- messagesDispatcher({
- type: MARK_AS_READ
- });
- currentGroupChannel.markAsRead();
- }
- }, 500);
- });
-
- return _this;
- }
-
- _createClass(ConversationScroll, [{
- key: "render",
- value: function render() {
- var _this$props2 = this.props,
- userId = _this$props2.userId,
- disabled = _this$props2.disabled,
- scrollRef = _this$props2.scrollRef,
- readStatus = _this$props2.readStatus,
- membersMap = _this$props2.membersMap,
- initialized = _this$props2.initialized,
- allMessages = _this$props2.allMessages,
- useReaction = _this$props2.useReaction,
- emojiAllMap = _this$props2.emojiAllMap,
- editDisabled = _this$props2.editDisabled,
- deleteMessage = _this$props2.deleteMessage,
- updateMessage = _this$props2.updateMessage,
- resendMessage = _this$props2.resendMessage,
- renderChatItem = _this$props2.renderChatItem,
- emojiContainer = _this$props2.emojiContainer,
- toggleReaction = _this$props2.toggleReaction,
- useMessageGrouping = _this$props2.useMessageGrouping,
- currentGroupChannel = _this$props2.currentGroupChannel,
- memoizedEmojiListItems = _this$props2.memoizedEmojiListItems;
- return React__default.createElement("div", {
- className: "sendbird-conversation__messages"
- }, React__default.createElement("div", {
- ref: scrollRef,
- className: "sendbird-conversation__scroll-container",
- onScroll: this.onScroll
- }, React__default.createElement("div", {
- className: "sendbird-conversation__padding"
- }), React__default.createElement("div", {
- className: "sendbird-conversation__messages-padding"
- }, initialized && allMessages.map(function (m, idx) {
- var previousMessage = allMessages[idx - 1];
- var nextMessage = allMessages[idx + 1];
-
- var _ref3 = useMessageGrouping ? compareMessagesForGrouping(previousMessage, m, nextMessage) : [false, false],
- _ref4 = _slicedToArray(_ref3, 2),
- chainTop = _ref4[0],
- chainBottom = _ref4[1];
-
- var previousMessageCreatedAt = previousMessage && previousMessage.createdAt;
- var currentCreatedAt = m.createdAt; // https://stackoverflow.com/a/41855608
-
- var hasSeperator = !(previousMessageCreatedAt && isSameDay(currentCreatedAt, previousMessageCreatedAt));
-
- if (renderChatItem) {
- return React__default.createElement("div", {
- key: m.messageId || m.reqId,
- className: "sendbird-msg--scroll-ref"
- }, renderChatItem({
- message: m,
- channel: currentGroupChannel,
- onDeleteMessage: deleteMessage,
- onUpdateMessage: updateMessage,
- onResendMessage: resendMessage,
- emojiContainer: emojiContainer
- }));
- }
-
- return React__default.createElement(MessageHoc, {
- key: m.messageId || m.reqId,
- userId: userId,
- status: readStatus[m.messageId] || getParsedStatus(m, currentGroupChannel) // show status for pending/failed messages
- ,
- message: m,
- disabled: disabled,
- membersMap: membersMap,
- chainTop: chainTop,
- useReaction: useReaction,
- emojiAllMap: emojiAllMap,
- editDisabled: editDisabled,
- hasSeperator: hasSeperator,
- chainBottom: chainBottom,
- updateMessage: updateMessage,
- deleteMessage: deleteMessage,
- resendMessage: resendMessage,
- toggleReaction: toggleReaction,
- memoizedEmojiListItems: memoizedEmojiListItems
- });
- }))));
- }
- }]);
-
- return ConversationScroll;
-}(React.Component);
-ConversationScroll.propTypes = {
- // https://stackoverflow.com/a/52646941
- scrollRef: PropTypes.shape({
- current: PropTypes.oneOfType([PropTypes.element, PropTypes.shape({})])
- }).isRequired,
- hasMore: PropTypes.bool,
- messagesDispatcher: PropTypes.func.isRequired,
- onScroll: PropTypes.func,
- initialized: PropTypes.bool,
- editDisabled: PropTypes.bool,
- disabled: PropTypes.bool,
- userId: PropTypes.string,
- allMessages: PropTypes.arrayOf(PropTypes.shape({
- createdAt: PropTypes.number
- })).isRequired,
- deleteMessage: PropTypes.func.isRequired,
- resendMessage: PropTypes.func.isRequired,
- updateMessage: PropTypes.func.isRequired,
- readStatus: PropTypes.shape({}).isRequired,
- currentGroupChannel: PropTypes.shape({
- markAsRead: PropTypes.func,
- members: PropTypes.arrayOf(PropTypes.shape({}))
- }).isRequired,
- renderChatItem: PropTypes.element,
- useReaction: PropTypes.bool,
- emojiContainer: PropTypes.shape({}),
- emojiAllMap: PropTypes.instanceOf(Map),
- membersMap: PropTypes.instanceOf(Map),
- useMessageGrouping: PropTypes.bool,
- toggleReaction: PropTypes.func,
- memoizedEmojiListItems: PropTypes.func
-};
-ConversationScroll.defaultProps = {
- hasMore: false,
- editDisabled: false,
- disabled: false,
- initialized: false,
- userId: '',
- renderChatItem: null,
- onScroll: null,
- useReaction: true,
- emojiContainer: {},
- emojiAllMap: new Map(),
- membersMap: new Map(),
- useMessageGrouping: true,
- toggleReaction: function toggleReaction() {},
- memoizedEmojiListItems: function memoizedEmojiListItems() {
- return '';
- }
-};
-
-function Notification(_ref) {
- var count = _ref.count,
- time = _ref.time,
- onClick = _ref.onClick;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var timeArray = time.split(' ');
- timeArray.splice(-2, 0, stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__ON);
- return (// eslint-disable-next-line
- React__default.createElement("div", {
- className: "sendbird-notification",
- onClick: onClick
- }, React__default.createElement(Label, {
- className: "sendbird-notification__text",
- color: LabelColors.ONCONTENT_1,
- type: LabelTypography.CAPTION_2
- }, "".concat(count, " "), stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE, " ".concat(timeArray.join(' '))), React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.SHEVRON_DOWN,
- fillColor: IconColors.CONTENT
- }))
- );
-}
-Notification.propTypes = {
- count: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- time: PropTypes.string,
- onClick: PropTypes.func.isRequired
-};
-Notification.defaultProps = {
- count: 0,
- time: ''
-};
-
-var FrozenNotification = function FrozenNotification() {
- var stringSet = React.useContext(LocalizationContext).stringSet;
- return React__default.createElement("div", {
- className: "sendbird-notification sendbird-notification--frozen"
- }, React__default.createElement(Label, {
- className: "sendbird-notification__text",
- type: LabelTypography.CAPTION_2
- }, stringSet.CHANNEL_FROZEN));
-};
-
-var TypingIndicatorText = function TypingIndicatorText(_ref) {
- var members = _ref.members;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- if (!members || members.length === 0) {
- return '';
- }
-
- if (members && members.length === 1) {
- return "".concat(members[0].nickname, " ").concat(stringSet.TYPING_INDICATOR__IS_TYPING);
- }
-
- if (members && members.length === 2) {
- return "".concat(members[0].nickname, " ").concat(stringSet.TYPING_INDICATOR__AND, " ").concat(members[1].nickname, " ").concat(stringSet.TYPING_INDICATOR__ARE_TYPING);
- }
-
- return stringSet.TYPING_INDICATOR__MULTIPLE_TYPING;
-};
-
-function TypingIndicator(_ref2) {
- var channelUrl = _ref2.channelUrl,
- sb = _ref2.sb,
- logger = _ref2.logger;
-
- var _useState = React.useState(uuidv4()),
- _useState2 = _slicedToArray(_useState, 2),
- handlerId = _useState2[0],
- setHandlerId = _useState2[1];
-
- var _useState3 = React.useState([]),
- _useState4 = _slicedToArray(_useState3, 2),
- typingMembers = _useState4[0],
- setTypingMembers = _useState4[1];
-
- React.useEffect(function () {
- if (sb && sb.ChannelHandler) {
- sb.removeChannelHandler(handlerId);
- var newHandlerId = uuidv4();
- var handler = new sb.ChannelHandler(); // there is a possible warning in here - setState called after unmount
-
- handler.onTypingStatusUpdated = function (groupChannel) {
- logger.info('Channel > Typing Indicator: onTypingStatusUpdated', groupChannel);
- var members = groupChannel.getTypingMembers();
-
- if (groupChannel.url === channelUrl) {
- setTypingMembers(members);
- }
- };
-
- sb.addChannelHandler(newHandlerId, handler);
- setHandlerId(newHandlerId);
- }
-
- return function () {
- setTypingMembers([]);
-
- if (sb && sb.removeChannelHandler) {
- sb.removeChannelHandler(handlerId);
- }
- };
- }, [channelUrl]);
- return React__default.createElement(Label, {
- type: LabelTypography.CAPTION_2,
- color: LabelColors.ONBACKGROUND_2
- }, React__default.createElement(TypingIndicatorText, {
- members: typingMembers
- }));
-}
-
-TypingIndicator.propTypes = {
- channelUrl: PropTypes.string.isRequired,
- sb: PropTypes.shape({
- ChannelHandler: PropTypes.func,
- removeChannelHandler: PropTypes.func,
- addChannelHandler: PropTypes.func
- }).isRequired,
- logger: PropTypes.shape({
- info: PropTypes.func
- }).isRequired
-};
-
-// Logic required to handle message input rendering
-
-var MessageInputWrapper = function MessageInputWrapper(_a, ref) {
- var channel = _a.channel,
- user = _a.user,
- onSendMessage = _a.onSendMessage,
- onFileUpload = _a.onFileUpload,
- renderMessageInput = _a.renderMessageInput,
- isOnline = _a.isOnline,
- initialized = _a.initialized;
- var stringSet = React.useContext(LocalizationContext).stringSet;
- var disabled = !initialized || isDisabledBecauseFrozen(channel) || isDisabledBecauseMuted(channel) || !isOnline;
- var isOperator$1 = isOperator(channel);
- var isBroadcast = channel.isBroadcast; // custom message
-
- if (renderMessageInput) {
- return renderMessageInput({
- channel: channel,
- user: user,
- disabled: disabled
- });
- } // broadcast channel + not operator
-
-
- if (isBroadcast && !isOperator$1) {
- return null;
- } // other conditions
-
-
- return React__default.createElement(MessageInput, {
- placeholder: isDisabledBecauseFrozen(channel) && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED || isDisabledBecauseMuted(channel) && stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED,
- ref: ref,
- disabled: disabled,
- onStartTyping: function onStartTyping() {
- channel.startTyping();
- },
- onSendMessage: onSendMessage,
- onFileUpload: onFileUpload
- });
-};
-
-var MessageInputWrapper$1 = React__default.forwardRef(MessageInputWrapper);
-
-function ConnectionStatus() {
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React__default.createElement("div", {
- className: "sendbird-conversation__connection-status"
- }, React__default.createElement(Label, {
- type: LabelTypography.BODY_2,
- color: LabelColors.ONBACKGROUND_2
- }, stringSet.TRYING_TO_CONNECT), React__default.createElement(Icon, {
- type: IconTypes.DISCONNECTED,
- fillColor: IconColors.SENT,
- height: "14px",
- width: "14px"
- }));
-}
-
-var prettyDate = function prettyDate(date) {
- return formatDistanceToNowStrict(date, {
- addSuffix: true
- });
-};
-var getOthersLastSeenAt = function getOthersLastSeenAt(channel) {
- if (!channel || !channel.getReadStatus || !channel.members || channel.members.length !== 2) {
- return '';
- }
-
- var lastSeenList = _toConsumableArray(Object.values(channel.getReadStatus()));
-
- var lastSeenAt = lastSeenList.length > 0 ? lastSeenList[0].last_seen_at : 0;
-
- if (lastSeenAt === 0) {
- return '';
- }
-
- return prettyDate(lastSeenAt);
-};
-var getChannelTitle$1 = function getChannelTitle() {
- var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var currentUserId = arguments.length > 1 ? arguments[1] : undefined;
- var stringSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : LabelStringSet;
-
- if (!channel || !channel.name && !channel.members) {
- return stringSet.NO_TITLE;
- }
-
- if (channel.name && channel.name !== 'Group Channel') {
- return channel.name;
- }
-
- if (channel.members.length === 1) {
- return stringSet.NO_MEMBERS;
- }
-
- return channel.members.filter(function (_ref) {
- var userId = _ref.userId;
- return userId !== currentUserId;
- }).map(function (_ref2) {
- var nickname = _ref2.nickname;
- return nickname || stringSet.NO_NAME;
- }).join(', ');
-};
-
-function AutoRefresh(_ref) {
- var repeatFunc = _ref.repeatFunc;
-
- var _useState = React.useState(repeatFunc()),
- _useState2 = _slicedToArray(_useState, 2),
- label = _useState2[0],
- setLabel = _useState2[1];
-
- React.useEffect(function () {
- var interval = setInterval(function () {
- if (label !== repeatFunc()) {
- setLabel(repeatFunc());
- }
- }, 10000);
- return function () {
- clearInterval(interval);
- };
- }, []);
- return React__default.createElement("div", {
- className: "sendbird-repeat-text"
- }, label);
-}
-AutoRefresh.propTypes = {
- repeatFunc: PropTypes.func.isRequired
-};
-
-function ChatHeader(props) {
- var currentGroupChannel = props.currentGroupChannel,
- currentUser = props.currentUser,
- title = props.title,
- subTitle = props.subTitle,
- isActive = props.isActive,
- isMuted = props.isMuted,
- onActionClick = props.onActionClick,
- theme = props.theme;
- var userId = currentUser.userId;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React__default.createElement("div", {
- className: "sendbird-chat-header"
- }, React__default.createElement("div", {
- className: "sendbird-chat-header__left"
- }, React__default.createElement(ChannelAvatar, {
- theme: theme,
- channel: currentGroupChannel,
- userId: userId,
- height: 32,
- width: 32
- }), React__default.createElement(Label, {
- className: "sendbird-chat-header__title",
- type: LabelTypography.H_2,
- color: LabelColors.ONBACKGROUND_1
- }, title || getChannelTitle$1(currentGroupChannel, userId, stringSet)), typeof isActive === 'string' && isActive === 'true' || typeof isActive === 'boolean' && isActive ? React__default.createElement("div", {
- className: "sendbird-chat-header__active"
- }) : null, React__default.createElement(Label, {
- className: "sendbird-chat-header__subtitle",
- type: LabelTypography.BODY_1,
- color: LabelColors.ONBACKGROUND_2
- }, subTitle || React__default.createElement(AutoRefresh, {
- repeatFunc: function repeatFunc() {
- return getOthersLastSeenAt(currentGroupChannel);
- }
- }))), React__default.createElement("div", {
- className: "sendbird-chat-header__right"
- }, typeof isMuted === 'string' && isMuted === 'true' || typeof isMuted === 'boolean' && isMuted ? React__default.createElement(Icon, {
- className: "sendbird-chat-header__mute",
- type: IconTypes.MUTE,
- width: "24px",
- height: "24px"
- }) : null, React__default.createElement(IconButton, {
- className: "sendbird-chat-header__info",
- width: "32px",
- height: "32px",
- onClick: onActionClick
- }, React__default.createElement(Icon, {
- type: IconTypes.INFO,
- fillColor: IconColors.PRIMARY,
- width: "24px",
- height: "24px"
- }))));
-}
-ChatHeader.propTypes = {
- currentGroupChannel: PropTypes.shape({
- members: PropTypes.arrayOf(PropTypes.shape({})),
- coverUrl: PropTypes.string
- }),
- theme: PropTypes.string,
- currentUser: PropTypes.shape({
- userId: PropTypes.string
- }),
- title: PropTypes.string,
- subTitle: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
- isActive: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
- isMuted: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
- onActionClick: PropTypes.func
-};
-ChatHeader.defaultProps = {
- currentGroupChannel: {},
- title: '',
- theme: 'light',
- subTitle: '',
- isActive: false,
- isMuted: false,
- currentUser: {},
- onActionClick: function onActionClick() {}
-};
-
-var noop$7 = function noop() {};
-
-var ConversationPanel = function ConversationPanel(props) {
- var channelUrl = props.channelUrl,
- _props$stores = props.stores,
- sdkStore = _props$stores.sdkStore,
- userStore = _props$stores.userStore,
- _props$config = props.config,
- userId = _props$config.userId,
- logger = _props$config.logger,
- pubSub = _props$config.pubSub,
- isOnline = _props$config.isOnline,
- theme = _props$config.theme,
- reconnect = props.dispatchers.reconnect,
- _props$queries = props.queries,
- queries = _props$queries === void 0 ? {} : _props$queries,
- useReaction = props.useReaction,
- renderChatItem = props.renderChatItem,
- renderChatHeader = props.renderChatHeader,
- renderMessageInput = props.renderMessageInput,
- useMessageGrouping = props.useMessageGrouping,
- onChatHeaderActionClick = props.onChatHeaderActionClick,
- onBeforeSendUserMessage = props.onBeforeSendUserMessage,
- onBeforeSendFileMessage = props.onBeforeSendFileMessage,
- onBeforeUpdateUserMessage = props.onBeforeUpdateUserMessage;
- var sdk = sdkStore.sdk;
- var config = props.config;
- var sdkError = sdkStore.error;
- var sdkInit = sdkStore.initialized;
- var user = userStore.user;
-
- if (queries.messageListQuery) {
- // eslint-disable-next-line no-console
- console.warn('messageListQuery will be deprecared in v1.3.0, please use messageListParams instead');
- }
-
- var userFilledMessageListQuery = queries.messageListParams || queries.messageListQuery;
-
- var _useReducer = React.useReducer(reducer$3, messagesInitialState),
- _useReducer2 = _slicedToArray(_useReducer, 2),
- messagesStore = _useReducer2[0],
- messagesDispatcher = _useReducer2[1];
-
- var scrollRef = React.useRef(null);
- var allMessages = messagesStore.allMessages,
- loading = messagesStore.loading,
- hasMore = messagesStore.hasMore,
- initialized = messagesStore.initialized,
- unreadCount = messagesStore.unreadCount,
- disableUserProfile = messagesStore.disableUserProfile,
- renderUserProfile = messagesStore.renderUserProfile,
- unreadSince = messagesStore.unreadSince,
- invalidChannel = messagesStore.invalidChannel,
- _messagesStore$curren = messagesStore.currentGroupChannel,
- currentGroupChannel = _messagesStore$curren === void 0 ? {} : _messagesStore$curren,
- lastMessageTimeStamp = messagesStore.lastMessageTimeStamp,
- emojiContainer = messagesStore.emojiContainer,
- readStatus = messagesStore.readStatus;
- var isFrozen = currentGroupChannel.isFrozen,
- isBroadcast = currentGroupChannel.isBroadcast;
- var _sdk$appInfo = sdk.appInfo,
- appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
- var usingReaction = appInfo.isUsingReaction && !isBroadcast || useReaction || false;
- var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
- var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
- var emojiAllMap = React.useMemo(function () {
- return usingReaction ? getAllEmojisMapFromEmojiContainer(emojiContainer) : new Map();
- }, [emojiContainer]);
- var emojiAllList = React.useMemo(function () {
- return usingReaction ? getAllEmojisFromEmojiContainer(emojiContainer) : [];
- }, [emojiContainer]);
- var nicknamesMap = React.useMemo(function () {
- return usingReaction ? getNicknamesMapFromMembers(currentGroupChannel.members) : new Map();
- }, [currentGroupChannel.members]);
- var onScrollCallback = useScrollCallback({
- currentGroupChannel: currentGroupChannel,
- lastMessageTimeStamp: lastMessageTimeStamp,
- userFilledMessageListQuery: userFilledMessageListQuery
- }, {
- hasMore: hasMore,
- logger: logger,
- messagesDispatcher: messagesDispatcher,
- sdk: sdk
- });
- var toggleReaction = useToggleReactionCallback({
- currentGroupChannel: currentGroupChannel
- }, {
- logger: logger
- });
- var memoizedEmojiListItems = useMemoizedEmojiListItems({
- emojiContainer: emojiContainer,
- toggleReaction: toggleReaction
- }, {
- useReaction: usingReaction,
- logger: logger,
- userId: userId,
- emojiAllList: emojiAllList
- }); // to create message-datasource
-
- useSetChannel({
- channelUrl: channelUrl,
- sdkInit: sdkInit
- }, {
- messagesDispatcher: messagesDispatcher,
- sdk: sdk,
- logger: logger
- }); // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher
-
- useHandleChannelEvents({
- currentGroupChannel: currentGroupChannel,
- sdkInit: sdkInit,
- userId: userId
- }, {
- messagesDispatcher: messagesDispatcher,
- sdk: sdk,
- logger: logger
- });
- useInitialMessagesFetch({
- currentGroupChannel: currentGroupChannel,
- userFilledMessageListQuery: userFilledMessageListQuery
- }, {
- sdk: sdk,
- logger: logger,
- messagesDispatcher: messagesDispatcher
- }); // handles API calls from withSendbird
-
- React.useEffect(function () {
- var subScriber = pubSubHandler$1(channelUrl, pubSub, messagesDispatcher);
- return function () {
- pubSubHandleRemover$1(subScriber);
- };
- }, [channelUrl, sdkInit]); // to create initial read status
-
- useSetReadStatus({
- allMessages: allMessages,
- currentGroupChannel: currentGroupChannel
- }, {
- messagesDispatcher: messagesDispatcher,
- sdk: sdk,
- logger: logger
- }); // handling connection breaks
-
- useHandleReconnect({
- isOnline: isOnline
- }, {
- logger: logger,
- sdk: sdk,
- currentGroupChannel: currentGroupChannel,
- messagesDispatcher: messagesDispatcher,
- userFilledMessageListQuery: userFilledMessageListQuery
- });
- var deleteMessage = useDeleteMessageCallback({
- currentGroupChannel: currentGroupChannel,
- messagesDispatcher: messagesDispatcher
- }, {
- logger: logger
- });
- var updateMessage = useUpdateMessageCallback({
- currentGroupChannel: currentGroupChannel,
- messagesDispatcher: messagesDispatcher,
- onBeforeUpdateUserMessage: onBeforeUpdateUserMessage
- }, {
- logger: logger,
- sdk: sdk,
- pubSub: pubSub
- });
- var resendMessage = useResendMessageCallback({
- currentGroupChannel: currentGroupChannel,
- messagesDispatcher: messagesDispatcher
- }, {
- logger: logger
- });
-
- var _useSendMessageCallba = useSendMessageCallback({
- currentGroupChannel: currentGroupChannel,
- onBeforeSendUserMessage: onBeforeSendUserMessage
- }, {
- sdk: sdk,
- logger: logger,
- pubSub: pubSub,
- messagesDispatcher: messagesDispatcher
- }),
- _useSendMessageCallba2 = _slicedToArray(_useSendMessageCallba, 2),
- messageInputRef = _useSendMessageCallba2[0],
- onSendMessage = _useSendMessageCallba2[1];
-
- var _useSendFileMessageCa = useSendFileMessageCallback({
- currentGroupChannel: currentGroupChannel,
- onBeforeSendFileMessage: onBeforeSendFileMessage
- }, {
- sdk: sdk,
- logger: logger,
- pubSub: pubSub,
- messagesDispatcher: messagesDispatcher
- }),
- _useSendFileMessageCa2 = _slicedToArray(_useSendFileMessageCa, 1),
- onSendFileMessage = _useSendFileMessageCa2[0];
-
- if (sdkError) {
- return React__default.createElement("div", {
- className: "sendbird-conversation"
- }, React__default.createElement(PlaceHolder, {
- type: PlaceHolderTypes.WRONG,
- retryToConnect: function retryToConnect() {
- logger.info('Channel: reconnecting');
- reconnect();
- }
- }));
- }
-
- if (!channelUrl) {
- return React__default.createElement("div", {
- className: "sendbird-conversation"
- }, React__default.createElement(PlaceHolder, {
- type: PlaceHolderTypes.NO_CHANNELS
- }));
- }
-
- if (loading) {
- return React__default.createElement("div", {
- className: "sendbird-conversation"
- }, React__default.createElement(PlaceHolder, {
- type: PlaceHolderTypes.LOADING
- }));
- }
-
- if (invalidChannel) {
- return React__default.createElement("div", {
- className: "sendbird-conversation"
- }, React__default.createElement(PlaceHolder, {
- type: PlaceHolderTypes.WRONG
- }));
- }
-
- return React__default.createElement(UserProfileProvider, {
- className: "sendbird-conversation",
- disableUserProfile: userDefinedDisableUserProfile,
- renderUserProfile: userDefinedRenderProfile
- }, renderChatHeader ? renderChatHeader({
- channel: currentGroupChannel,
- user: user
- }) : React__default.createElement(ChatHeader, {
- theme: theme,
- currentGroupChannel: currentGroupChannel,
- currentUser: user,
- onActionClick: onChatHeaderActionClick,
- subTitle: currentGroupChannel.members && currentGroupChannel.members.length !== 2,
- isActive: false,
- isMuted: false
- }), isFrozen && React__default.createElement(FrozenNotification, null), unreadCount > 0 && React__default.createElement(Notification, {
- count: unreadCount,
- onClick: function onClick() {
- scrollIntoLast('.sendbird-msg--scroll-ref'); // there is no scroll
-
- if (scrollRef.current.scrollTop === 0) {
- currentGroupChannel.markAsRead();
- messagesDispatcher({
- type: MARK_AS_READ
- });
- }
- },
- time: unreadSince
- }), React__default.createElement(ConversationScroll, {
- swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
- userId: userId,
- hasMore: hasMore,
- disabled: !isOnline,
- onScroll: onScrollCallback,
- scrollRef: scrollRef,
- readStatus: readStatus,
- initialized: initialized,
- useReaction: usingReaction,
- allMessages: allMessages,
- emojiAllMap: emojiAllMap,
- membersMap: nicknamesMap,
- editDisabled: isDisabledBecauseFrozen(currentGroupChannel),
- deleteMessage: deleteMessage,
- updateMessage: updateMessage,
- resendMessage: resendMessage,
- toggleReaction: toggleReaction,
- emojiContainer: emojiContainer,
- renderChatItem: renderChatItem,
- useMessageGrouping: useMessageGrouping,
- messagesDispatcher: messagesDispatcher,
- currentGroupChannel: currentGroupChannel,
- memoizedEmojiListItems: memoizedEmojiListItems
- }), React__default.createElement("div", {
- className: "sendbird-conversation__footer"
- }, React__default.createElement(MessageInputWrapper$1, {
- channel: currentGroupChannel,
- user: user,
- ref: messageInputRef,
- onSendMessage: onSendMessage,
- onFileUpload: onSendFileMessage,
- renderMessageInput: renderMessageInput,
- isOnline: isOnline,
- initialized: initialized
- }), React__default.createElement("div", {
- className: "sendbird-conversation__typing-indicator"
- }, React__default.createElement(TypingIndicator, {
- channelUrl: channelUrl,
- sb: sdk,
- logger: logger
- })), !isOnline && React__default.createElement(ConnectionStatus, {
- sdkInit: sdkInit,
- sb: sdk,
- logger: logger
- })));
-};
-ConversationPanel.propTypes = {
- channelUrl: PropTypes.string,
- stores: PropTypes.shape({
- sdkStore: PropTypes.shape({
- initialized: PropTypes.bool,
- sdk: PropTypes.shape({
- getErrorFirstCallback: PropTypes.func,
- removeChannelHandler: PropTypes.func,
- GroupChannel: PropTypes.any,
- ChannelHandler: PropTypes.any,
- addChannelHandler: PropTypes.func,
- UserMessageParams: PropTypes.any,
- FileMessageParams: PropTypes.any,
- getAllEmoji: PropTypes.func,
- appInfo: PropTypes.shape({})
- }),
- error: PropTypes.bool
- }),
- userStore: PropTypes.shape({
- user: PropTypes.shape({})
- })
- }).isRequired,
- dispatchers: PropTypes.shape({
- reconnect: PropTypes.func
- }).isRequired,
- config: PropTypes.shape({
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- userId: PropTypes.string.isRequired,
- isOnline: PropTypes.bool.isRequired,
- theme: PropTypes.string,
- logger: PropTypes.shape({
- info: PropTypes.func,
- error: PropTypes.func,
- warning: PropTypes.func
- }),
- pubSub: PropTypes.shape({
- subscribe: PropTypes.func,
- publish: PropTypes.func
- })
- }).isRequired,
- queries: PropTypes.shape({
- messageListParams: PropTypes.shape({
- includeMetaArray: PropTypes.bool,
- includeParentMessageText: PropTypes.bool,
- includeReaction: PropTypes.bool,
- includeReplies: PropTypes.bool,
- includeThreadInfo: PropTypes.bool,
- limit: PropTypes.number,
- reverse: PropTypes.bool,
- senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string)
- }),
- // deprecate in v1.3
- messageListQuery: PropTypes.shape({
- includeMetaArray: PropTypes.bool,
- includeParentMessageText: PropTypes.bool,
- includeReaction: PropTypes.bool,
- includeReplies: PropTypes.bool,
- includeThreadInfo: PropTypes.bool,
- limit: PropTypes.number,
- reverse: PropTypes.bool,
- senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string)
- })
- }),
- onBeforeSendUserMessage: PropTypes.func,
- // onBeforeSendUserMessage(text)
- onBeforeSendFileMessage: PropTypes.func,
- // onBeforeSendFileMessage(File)
- onBeforeUpdateUserMessage: PropTypes.func,
- renderChatItem: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- renderMessageInput: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- renderChatHeader: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- onChatHeaderActionClick: PropTypes.func,
- useReaction: PropTypes.bool,
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- useMessageGrouping: PropTypes.bool
-};
-ConversationPanel.defaultProps = {
- channelUrl: null,
- queries: {},
- onBeforeSendUserMessage: null,
- onBeforeSendFileMessage: null,
- onBeforeUpdateUserMessage: null,
- renderChatItem: null,
- renderMessageInput: null,
- renderChatHeader: null,
- useReaction: true,
- disableUserProfile: false,
- renderUserProfile: null,
- useMessageGrouping: true,
- onChatHeaderActionClick: noop$7
-};
-var getEmojiCategoriesFromEmojiContainer$1 = getEmojiCategoriesFromEmojiContainer,
- getAllEmojisFromEmojiContainer$1 = getAllEmojisFromEmojiContainer,
- getEmojisFromEmojiContainer$1 = getEmojisFromEmojiContainer;
-var Conversation = withSendbirdContext(ConversationPanel);
-
-var EditDetails = function EditDetails(props) {
- var _onSubmit = props.onSubmit,
- onCancel = props.onCancel,
- channel = props.channel,
- userId = props.userId,
- theme = props.theme;
- var inputRef = React.useRef(null);
- var formRef = React.useRef(null);
- var hiddenInputRef = React.useRef(null);
-
- var _useState = React.useState(null),
- _useState2 = _slicedToArray(_useState, 2),
- currentImg = _useState2[0],
- setCurrentImg = _useState2[1];
-
- var _useState3 = React.useState(null),
- _useState4 = _slicedToArray(_useState3, 2),
- newFile = _useState4[0],
- setNewFile = _useState4[1];
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var title = channel.name;
- return React__default.createElement(Modal, {
- titleText: stringSet.MODAL__CHANNEL_INFORMATION__TITLE,
- submitText: stringSet.BUTTON__SAVE,
- onCancel: onCancel,
- onSubmit: function onSubmit() {
- if (title !== '' && !inputRef.current.value) {
- if (formRef.current.reportValidity) {
- // might not work in explorer
- formRef.current.reportValidity();
- }
-
- return;
- }
-
- _onSubmit(newFile, inputRef.current.value);
-
- onCancel();
- },
- type: Type$1.PRIMARY
- }, React__default.createElement("form", {
- className: "channel-profile-form",
- ref: formRef,
- onSubmit: function onSubmit(e) {
- e.preventDefault();
- }
- }, React__default.createElement("div", {
- className: "channel-profile-form__img-section"
- }, React__default.createElement(InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE), React__default.createElement("div", {
- className: "channel-profile-form__avatar"
- }, currentImg ? React__default.createElement(Avatar$1, {
- height: "80px",
- width: "80px",
- src: currentImg
- }) : React__default.createElement(ChannelAvatar, {
- height: 80,
- width: 80,
- channel: channel,
- userId: userId,
- theme: theme
- })), React__default.createElement("input", {
- ref: hiddenInputRef,
- type: "file",
- accept: "image/gif, image/jpeg, image/png",
- style: {
- display: 'none'
- },
- onChange: function onChange(e) {
- setCurrentImg(URL.createObjectURL(e.target.files[0]));
- setNewFile(e.target.files[0]);
- hiddenInputRef.current.value = '';
- }
- }), React__default.createElement(TextButton, {
- className: "channel-profile-form__avatar-button",
- onClick: function onClick() {
- return hiddenInputRef.current.click();
- },
- notUnderline: true
- }, React__default.createElement(Label, {
- type: LabelTypography.BUTTON_1,
- color: LabelColors.PRIMARY
- }, stringSet.MODAL__CHANNEL_INFORMATION__UPLOAD))), React__default.createElement("div", {
- className: "channel-profile-form__name-section"
- }, React__default.createElement(InputLabel, null, stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_NAME), React__default.createElement(Input, {
- required: title !== '',
- name: "channel-profile-form__name",
- ref: inputRef,
- value: title,
- placeHolder: stringSet.MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER
- }))));
-};
-
-EditDetails.propTypes = {
- onSubmit: PropTypes.func.isRequired,
- onCancel: PropTypes.func.isRequired,
- channel: PropTypes.shape({
- name: PropTypes.string
- }).isRequired,
- userId: PropTypes.string.isRequired,
- theme: PropTypes.string.isRequired
-};
-
-var ChannelProfile = function ChannelProfile(props) {
- var disabled = props.disabled,
- channel = props.channel,
- userId = props.userId,
- theme = props.theme,
- onChannelInfoChange = props.onChannelInfoChange;
- var title = channel.name;
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showModal = _useState2[0],
- setShowModal = _useState2[1];
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- return React__default.createElement("div", {
- className: "sendbird-channel-profile"
- }, React__default.createElement("div", {
- className: "sendbird-channel-profile--inner"
- }, React__default.createElement("div", {
- className: "sendbird-channel-profile__avatar"
- }, React__default.createElement(ChannelAvatar, {
- channel: channel,
- userId: userId,
- theme: theme
- })), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1,
- className: "sendbird-channel-profile__title"
- }, title), React__default.createElement(TextButton, {
- disabled: disabled,
- className: "sendbird-channel-profile__edit",
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- setShowModal(true);
- },
- notUnderline: true
- }, React__default.createElement(Label, {
- type: LabelTypography.BUTTON_1,
- color: disabled ? LabelColors.ONBACKGROUND_2 : LabelColors.PRIMARY
- }, stringSet.CHANNEL_SETTING__PROFILE__EDIT)), showModal && React__default.createElement(EditDetails, {
- onCancel: function onCancel() {
- return setShowModal(false);
- },
- onSubmit: onChannelInfoChange,
- channel: channel,
- userId: userId,
- theme: theme
- })));
-};
-
-ChannelProfile.propTypes = {
- channel: PropTypes.shape({
- name: PropTypes.string
- }).isRequired,
- userId: PropTypes.string.isRequired,
- theme: PropTypes.string,
- disabled: PropTypes.bool,
- onChannelInfoChange: PropTypes.func
-};
-ChannelProfile.defaultProps = {
- theme: 'light',
- disabled: false,
- onChannelInfoChange: function onChannelInfoChange() {}
-};
-
-function MembersModal(_a) {
- var hideModal = _a.hideModal,
- channel = _a.channel,
- currentUser = _a.currentUser;
-
- var _b = React.useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = React.useState(null),
- memberQuery = _c[0],
- setMemberQuery = _c[1];
-
- React.useEffect(function () {
- var memberListQuery = channel.createMemberListQuery();
- memberListQuery.limit = 20;
- memberListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- });
- setMemberQuery(memberListQuery);
- }, []);
- return React__default.createElement("div", null, React__default.createElement(Modal, {
- hideFooter: true,
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: noop,
- titleText: "All Members"
- }, React__default.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = memberQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- memberQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setMembers(__spreadArrays(members, o));
- });
- }
- }
- }, members.map(function (member) {
- return React__default.createElement(UserListItem, {
- user: member,
- key: member.userId,
- currentUser: currentUser,
- action: function action(_a) {
- var parentRef = _a.parentRef,
- actionRef = _a.actionRef;
- return React__default.createElement(React__default.Fragment, null, channel.myRole === 'operator' && React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (member.role !== 'operator') {
- channel.addOperators([member.userId], function () {
- setMembers(members.map(function (m) {
- if (m.userId === member.userId) {
- return __assign(__assign({}, member), {
- role: 'operator'
- });
- }
-
- return m;
- }));
- closeDropdown();
- });
- } else {
- channel.removeOperators([member.userId], function () {
- setMembers(members.map(function (m) {
- if (m.userId === member.userId) {
- return __assign(__assign({}, member), {
- role: ''
- });
- }
-
- return m;
- }));
- closeDropdown();
- });
- }
- }
- }, member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'), // No muted members in broadcast channel
- !channel.isBroadcast && React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (member.isMuted) {
- channel.unmuteUser(member, function () {
- setMembers(members.map(function (m) {
- if (m.userId === member.userId) {
- return __assign(__assign({}, member), {
- isMuted: false
- });
- }
-
- return m;
- }));
- closeDropdown();
- });
- } else {
- channel.muteUser(member, function () {
- setMembers(members.map(function (m) {
- if (m.userId === member.userId) {
- return __assign(__assign({}, member), {
- isMuted: true
- });
- }
-
- return m;
- }));
- closeDropdown();
- });
- }
- }
- }, member.isMuted ? 'Unmute' : 'Mute'), React__default.createElement(MenuItem, {
- onClick: function onClick() {
- channel.banUser(member, -1, '', function () {
- setMembers(members.filter(function (_a) {
- var userId = _a.userId;
- return userId !== member.userId;
- }));
- });
- }
- }, "Ban"));
- }
- }));
- }
- });
- }))));
-}
-
-var SHOWN_MEMBER_MAX = 10;
-
-var UserListItem$1 = function UserListItem(_ref) {
- var _ref$member = _ref.member,
- member = _ref$member === void 0 ? {} : _ref$member,
- _ref$currentUser = _ref.currentUser,
- currentUser = _ref$currentUser === void 0 ? '' : _ref$currentUser;
- var avatarRef = React.useRef(null);
-
- var _useContext = React.useContext(UserProfileContext),
- disableUserProfile = _useContext.disableUserProfile,
- renderUserProfile = _useContext.renderUserProfile;
-
- var _useContext2 = React.useContext(LocalizationContext),
- stringSet = _useContext2.stringSet;
-
- return React__default.createElement("div", {
- className: "sendbird-members-accordion__member"
- }, React__default.createElement("div", {
- className: "sendbird-members-accordion__member-avatar"
- }, React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(Avatar$1, {
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- ref: avatarRef,
- src: member.profileUrl,
- width: 24,
- height: 24
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- openLeft: true,
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: member,
- currentUserId: currentUser,
- close: closeDropdown
- }) : React__default.createElement(ConnectedUserProfile, {
- user: member,
- currentUserId: currentUser,
- onSuccess: closeDropdown
- }));
- }
- })), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_1
- }, member.nickname || stringSet.NO_NAME, currentUser === member.userId && ' (You)'));
-};
-
-UserListItem$1.propTypes = {
- member: PropTypes.shape({
- userId: PropTypes.string,
- profileUrl: PropTypes.string,
- nickname: PropTypes.string
- }).isRequired,
- currentUser: PropTypes.string.isRequired
-};
-
-var MemebersAccordion = function MemebersAccordion(_ref2) {
- var channel = _ref2.channel,
- disabled = _ref2.disabled,
- currentUser = _ref2.currentUser,
- userQueryCreator = _ref2.userQueryCreator,
- onInviteMemebers = _ref2.onInviteMemebers,
- swapParams = _ref2.swapParams;
- var members = channel.members || [];
-
- var _useState = React.useState(false),
- _useState2 = _slicedToArray(_useState, 2),
- showMoreModal = _useState2[0],
- setShowMoreModal = _useState2[1];
-
- var _useState3 = React.useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- showAddUserModal = _useState4[0],
- setShowAddUserModal = _useState4[1];
-
- var _useContext3 = React.useContext(LocalizationContext),
- stringSet = _useContext3.stringSet;
-
- return React__default.createElement("div", {
- className: "sendbird-members-accordion"
- }, React__default.createElement("div", {
- className: "sendbird-members-accordion__list"
- }, members.slice(0, SHOWN_MEMBER_MAX).map(function (member) {
- return React__default.createElement(UserListItem$1, {
- member: member,
- currentUser: currentUser,
- key: member.userId
- });
- })), React__default.createElement("div", {
- className: "sendbird-members-accordion__footer"
- }, members.length >= SHOWN_MEMBER_MAX && React__default.createElement(Button, {
- className: "sendbird-members-accordion__footer__all-members",
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- return setShowMoreModal(true);
- }
- }, stringSet.CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS), members.length >= SHOWN_MEMBER_MAX && showMoreModal && React__default.createElement(MembersModal, {
- currentUser: currentUser,
- hideModal: function hideModal() {
- setShowMoreModal(false);
- },
- channel: channel
- }), React__default.createElement(Button, {
- className: "sendbird-members-accordion__footer__invite-users",
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- disabled: disabled,
- onClick: function onClick() {
- if (disabled) {
- return;
- }
-
- setShowAddUserModal(true);
- }
- }, stringSet.CHANNEL_SETTING__MEMBERS__INVITE_MEMBER), showAddUserModal && React__default.createElement(InviteMembers, {
- swapParams: swapParams,
- titleText: stringSet.MODAL__INVITE_MEMBER__TITLE,
- submitText: stringSet.BUTTON__INVITE,
- closeModal: function closeModal() {
- return setShowAddUserModal(false);
- },
- idsToFilter: members.map(function (member) {
- return member.userId;
- }),
- userQueryCreator: userQueryCreator,
- onSubmit: onInviteMemebers
- })));
-};
-
-MemebersAccordion.propTypes = {
- swapParams: PropTypes.bool,
- disabled: PropTypes.bool,
- channel: PropTypes.shape({
- members: PropTypes.arrayOf(PropTypes.shape({}))
- }),
- currentUser: PropTypes.string,
- userQueryCreator: PropTypes.func.isRequired,
- onInviteMemebers: PropTypes.func.isRequired
-};
-MemebersAccordion.defaultProps = {
- swapParams: false,
- currentUser: '',
- disabled: false,
- channel: {}
-};
-
-var Context = React__default.createContext({
- opened: '',
- setOpened: noop
-});
-var Consumer = Context.Consumer;
-var Provider = Context.Provider;
-
-// Wraps all the accordions in an accordion set
-function AccordionGroup(_a) {
- var children = _a.children,
- _b = _a.className,
- className = _b === void 0 ? '' : _b;
-
- var _c = React.useState(''),
- opened = _c[0],
- setOpened = _c[1];
-
- return React__default.createElement(Provider, {
- value: {
- opened: opened,
- setOpened: setOpened
- }
- }, React__default.createElement("div", {
- className: className
- }, children));
-}
-
-function Accordion(_a) {
- var id = _a.id,
- renderTitle = _a.renderTitle,
- renderContent = _a.renderContent,
- renderFooter = _a.renderFooter,
- className = _a.className;
-
- var _b = React.useState(false),
- showAccordion = _b[0],
- setShowAccordion = _b[1];
-
- return React__default.createElement(Consumer, null, function (value) {
- var opened = value.opened,
- setOpened = value.setOpened;
-
- if (id === opened) {
- setShowAccordion(true);
- } else {
- setShowAccordion(false);
- }
-
- var handleClick = function handleClick() {
- if (showAccordion) {
- setOpened('');
- } else {
- setOpened(id);
- }
- };
-
- return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
- id: id,
- role: "switch",
- "aria-checked": false,
- tabIndex: 0,
- onKeyDown: handleClick,
- className: "sendbird-accordion__panel-heder " + className,
- onClick: handleClick
- }, renderTitle(), React__default.createElement(Icon, {
- type: IconTypes.SHEVRON,
- className: ['sendbird-accordion__panel-icon-right', 'sendbird-accordion__panel-icon--chevron', showAccordion ? 'sendbird-accordion__panel-icon--open' : ''].join(' '),
- height: "24px",
- width: "24px"
- })), showAccordion && React__default.createElement("div", {
- className: "sendbird-accordion"
- }, React__default.createElement("div", {
- className: "sendbird-accordion__list"
- }, renderContent()), renderFooter && React__default.createElement("div", {
- className: "sendbird-accordion__footer"
- }, renderFooter())));
- });
-}
-var AccordionGroup$1 = AccordionGroup;
-
-// might move to reusable/UI
-var COMPONENT_NAME$1 = 'sendbird-user-list-item--small';
-
-var UserListItem$2 = function UserListItem(_a) {
- var user = _a.user,
- className = _a.className,
- currentUser = _a.currentUser,
- action = _a.action;
- var actionRef = React.useRef(null);
- var parentRef = React.useRef(null);
- var avatarRef = React.useRef(null);
- var stringSet = React.useContext(LocalizationContext).stringSet;
-
- var _b = React.useContext(UserProfileContext),
- disableUserProfile = _b.disableUserProfile,
- renderUserProfile = _b.renderUserProfile;
-
- var injectingClassNames = Array.isArray(className) ? className : [className];
- return React__default.createElement("div", {
- ref: parentRef,
- className: __spreadArrays([COMPONENT_NAME$1], injectingClassNames).join(' ')
- }, user.isMuted && React__default.createElement(MutedAvatarOverlay, null), React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(Avatar$1, {
- onClick: function onClick() {
- if (!disableUserProfile) {
- toggleDropdown();
- }
- },
- ref: avatarRef,
- className: COMPONENT_NAME$1 + "__avatar",
- src: user.profileUrl,
- width: 24,
- height: 24
- });
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- openLeft: true,
- parentRef: avatarRef // for catching location(x, y) of MenuItems
- ,
- parentContainRef: avatarRef // for toggling more options(menus & reactions)
- ,
- closeDropdown: closeDropdown,
- style: {
- paddingTop: 0,
- paddingBottom: 0
- }
- }, renderUserProfile ? renderUserProfile({
- user: user,
- currentUserId: currentUser,
- close: closeDropdown
- }) : React__default.createElement(ConnectedUserProfile, {
- user: user,
- currentUserId: currentUser,
- onSuccess: closeDropdown
- }));
- }
- }), React__default.createElement(Label, {
- className: COMPONENT_NAME$1 + "__title",
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, user.nickname || stringSet.NO_NAME, currentUser === user.userId && " (You)"), !user.nickname && React__default.createElement(Label, {
- className: COMPONENT_NAME$1 + "__subtitle",
- type: LabelTypography.CAPTION_3,
- color: LabelColors.ONBACKGROUND_2
- }, user.userId), user.role === 'operator' && React__default.createElement(Label, {
- className: COMPONENT_NAME$1 + "__operator",
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_2
- }, "Operator"), action && React__default.createElement("div", {
- ref: actionRef,
- className: COMPONENT_NAME$1 + "__action"
- }, action({
- actionRef: actionRef,
- parentRef: parentRef
- })));
-};
-
-function OperatorsModal(_a) {
- var hideModal = _a.hideModal,
- channel = _a.channel,
- currentUser = _a.currentUser;
-
- var _b = React.useState([]),
- operators = _b[0],
- setOperators = _b[1];
-
- var _c = React.useState(null),
- operatorQuery = _c[0],
- setOperatorQuery = _c[1];
-
- React.useEffect(function () {
- var operatorListQuery = channel.createOperatorListQuery();
- operatorListQuery.limit = 20;
- operatorListQuery.next(function (operators, error) {
- if (error) {
- return;
- }
-
- setOperators(operators);
- });
- setOperatorQuery(operatorListQuery);
- }, []);
- return React__default.createElement("div", null, React__default.createElement(Modal, {
- hideFooter: true,
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: noop,
- titleText: "All operators"
- }, React__default.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = operatorQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- operatorQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setOperators(__spreadArrays(operators, o));
- });
- }
- }
- }, operators.map(function (member) {
- return React__default.createElement(UserListItem, {
- currentUser: currentUser,
- user: member,
- key: member.userId,
- action: function action(_a) {
- var parentRef = _a.parentRef,
- actionRef = _a.actionRef;
- return React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React__default.createElement(MenuItem, {
- onClick: function onClick() {
- channel.removeOperators([member.userId], function (response, error) {
- if (error) {
- return;
- }
-
- setOperators(operators.filter(function (_a) {
- var userId = _a.userId;
- return userId !== member.userId;
- }));
- });
- closeDropdown();
- }
- }, "Dismiss operator"));
- }
- });
- }
- });
- }))));
-}
-
-function AddOperatorsModal(_a) {
- var hideModal = _a.hideModal,
- channel = _a.channel,
- _onSubmit = _a.onSubmit;
-
- var _b = React.useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = React.useState({}),
- selectedMembers = _c[0],
- setSelectedMembers = _c[1];
-
- var _d = React.useState(null),
- memberQuery = _d[0],
- setMemberQuery = _d[1];
-
- var stringSet = React.useContext(LocalizationContext).stringSet;
- React.useEffect(function () {
- var memberListQuery = channel.createMemberListQuery();
- memberListQuery.limit = 20;
- memberListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- });
- setMemberQuery(memberListQuery);
- }, []);
- var selectedCount = Object.keys(selectedMembers).filter(function (m) {
- return selectedMembers[m];
- }).length;
- return React__default.createElement("div", null, React__default.createElement(Modal, {
- type: Type$1.PRIMARY,
- submitText: "Add",
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: function onSubmit() {
- var members = Object.keys(selectedMembers).filter(function (m) {
- return selectedMembers[m];
- });
-
- _onSubmit(members);
- },
- titleText: "Select members"
- }, React__default.createElement(Label, {
- color: selectedCount > 0 ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3,
- type: LabelTypography.CAPTION_1
- }, selectedCount + " " + stringSet.MODAL__INVITE_MEMBER__SELECTEC), React__default.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = memberQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- memberQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setMembers(__spreadArrays(members, o));
- });
- }
- }
- }, members.map(function (member) {
- return React__default.createElement(UserListItem, {
- checkBox: true,
- checked: selectedMembers[member.userId],
- onChange: function onChange(event) {
- var _a;
-
- var modifiedSelectedMembers = __assign(__assign({}, selectedMembers), (_a = {}, _a[event.target.id] = event.target.checked, _a));
-
- if (!event.target.checked) {
- delete modifiedSelectedMembers[event.target.id];
- }
-
- setSelectedMembers(modifiedSelectedMembers);
- },
- user: member,
- key: member.userId
- });
- }))));
-}
-
-var OperatorList = function OperatorList(_a) {
- var sdk = _a.sdk,
- channel = _a.channel;
-
- var _b = React.useState([]),
- operators = _b[0],
- setOperators = _b[1];
-
- var _c = React.useState(false),
- showMore = _c[0],
- setShowMore = _c[1];
-
- var _d = React.useState(false),
- showAdd = _d[0],
- setShowAdd = _d[1];
-
- var _e = React.useState(false),
- hasNext = _e[0],
- setHasNext = _e[1];
-
- var stringSet = React.useContext(LocalizationContext).stringSet;
- React.useEffect(function () {
- if (!channel) {
- setOperators([]);
- return;
- }
-
- var operatorListQuery = channel.createOperatorListQuery();
- operatorListQuery.limit = 10;
- operatorListQuery.next(function (operators, error) {
- if (error) {
- return;
- }
-
- setOperators(operators);
- setHasNext(operatorListQuery.hasNext);
- });
- }, [channel]);
- var refershList = React.useCallback(function () {
- if (!channel) {
- setOperators([]);
- return;
- }
-
- var operatorListQuery = channel.createOperatorListQuery();
- operatorListQuery.limit = 10;
- operatorListQuery.next(function (operators, error) {
- if (error) {
- return;
- }
-
- setOperators(operators);
- setHasNext(operatorListQuery.hasNext);
- });
- }, [channel]);
- return React__default.createElement(React__default.Fragment, null, operators.map(function (operator) {
- return React__default.createElement(UserListItem$2, {
- key: operator.userId,
- user: operator,
- currentUser: sdk.currentUser.userId,
- action: function action(_a) {
- var actionRef = _a.actionRef,
- parentRef = _a.parentRef;
- return React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React__default.createElement(MenuItem, {
- onClick: function onClick() {
- channel.removeOperators([operator.userId], function (response, error) {
- if (error) {
- return;
- }
-
- setOperators(operators.filter(function (_a) {
- var userId = _a.userId;
- return userId !== operator.userId;
- }));
- });
- closeDropdown();
- }
- }, "Dismiss operator"));
- }
- });
- }
- });
- }), hasNext && React__default.createElement("div", {
- className: "sendbird-channel-settings-accordion__footer"
- }, React__default.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- setShowMore(true);
- }
- }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ALL), React__default.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- setShowAdd(true);
- }
- }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ADD)), showMore && React__default.createElement(OperatorsModal, {
- currentUser: sdk.currentUser.userId,
- hideModal: function hideModal() {
- setShowMore(false);
- refershList();
- },
- channel: channel
- }), showAdd && React__default.createElement(AddOperatorsModal, {
- hideModal: function hideModal() {
- return setShowAdd(false);
- },
- channel: channel,
- onSubmit: function onSubmit(members) {
- setShowAdd(false);
- channel.addOperators(members, function () {
- refershList();
- });
- }
- }));
-};
-
-var mapStoreToProps$2 = function mapStoreToProps(store) {
- return {
- sdk: getSdk(store)
- };
-};
-
-var OperatorList$1 = withSendbirdContext(OperatorList, mapStoreToProps$2);
-
-function InviteMembers$1(_a) {
- var hideModal = _a.hideModal,
- userQueryCreator = _a.userQueryCreator,
- _onSubmit = _a.onSubmit;
-
- var _b = React.useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = React.useState({}),
- selectedMembers = _c[0],
- setSelectedMembers = _c[1];
-
- var _d = React.useState(null),
- userQuery = _d[0],
- setUserQuery = _d[1];
-
- React.useEffect(function () {
- var userListQuery = userQueryCreator();
- userListQuery.limit = 20;
- userListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- });
- setUserQuery(userListQuery);
- }, []);
- return React__default.createElement("div", null, React__default.createElement(Modal, {
- disabled: Object.keys(selectedMembers).length === 0,
- submitText: "Invite",
- type: Type$1.PRIMARY,
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: function onSubmit() {
- var members = Object.keys(selectedMembers).filter(function (m) {
- return selectedMembers[m];
- });
-
- _onSubmit(members);
- },
- titleText: "Select members"
- }, React__default.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = userQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- userQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setMembers(__spreadArrays(members, o));
- });
- }
- }
- }, members.map(function (member) {
- return React__default.createElement(UserListItem, {
- checkBox: true,
- checked: selectedMembers[member.userId],
- onChange: function onChange(event) {
- var _a;
-
- var modifiedSelectedMembers = __assign(__assign({}, selectedMembers), (_a = {}, _a[event.target.id] = event.target.checked, _a));
-
- if (!event.target.checked) {
- delete modifiedSelectedMembers[event.target.id];
- }
-
- setSelectedMembers(modifiedSelectedMembers);
- },
- user: member,
- key: member.userId
- });
- }))));
-}
-
-var MemberList = function MemberList(_a) {
- var sdk = _a.sdk,
- channel = _a.channel,
- userQueryCreator = _a.userQueryCreator;
-
- var _b = React.useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = React.useState(false),
- hasNext = _c[0],
- setHasNext = _c[1];
-
- var _d = React.useState(false),
- showAllMembers = _d[0],
- setShowAllMembers = _d[1];
-
- var _e = React.useState(false),
- showInviteMembers = _e[0],
- setShowInviteMembers = _e[1];
-
- React.useEffect(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var memberUserListQuery = channel.createMemberListQuery();
- memberUserListQuery.limit = 10;
- memberUserListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- setHasNext(memberUserListQuery.hasNext);
- });
- }, [channel]);
- var refershList = React.useCallback(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var memberUserListQuery = channel.createMemberListQuery();
- memberUserListQuery.limit = 10;
- memberUserListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- setHasNext(memberUserListQuery.hasNext);
- });
- }, [channel]);
- return React__default.createElement(React__default.Fragment, null, members.map(function (member) {
- return React__default.createElement(UserListItem$2, {
- key: member.userId,
- user: member,
- currentUser: sdk.currentUser.userId,
- action: function action(_a) {
- var actionRef = _a.actionRef,
- parentRef = _a.parentRef;
- return React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (member.role !== 'operator') {
- channel.addOperators([member.userId], function () {
- refershList();
- closeDropdown();
- });
- } else {
- channel.removeOperators([member.userId], function () {
- refershList();
- closeDropdown();
- });
- }
- }
- }, member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'), // No muted members in broadcast channel
- !channel.isBroadcast && React__default.createElement(MenuItem, {
- onClick: function onClick() {
- if (member.isMuted) {
- channel.unmuteUser(member, function () {
- refershList();
- closeDropdown();
- });
- } else {
- channel.muteUser(member, function () {
- refershList();
- closeDropdown();
- });
- }
- }
- }, member.isMuted ? 'Unmute' : 'Mute'), React__default.createElement(MenuItem, {
- onClick: function onClick() {
- channel.banUser(member, -1, '', function () {
- refershList();
- closeDropdown();
- });
- }
- }, "Ban"));
- }
- });
- }
- });
- }), React__default.createElement("div", {
- className: "sendbird-channel-settings-accordion__footer"
- }, hasNext && React__default.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- return setShowAllMembers(true);
- }
- }, "All members"), React__default.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- return setShowInviteMembers(true);
- }
- }, "Invite members")), showAllMembers && React__default.createElement(MembersModal, {
- currentUser: sdk.currentUser.userId,
- channel: channel,
- hideModal: function hideModal() {
- setShowAllMembers(false);
- refershList();
- }
- }), showInviteMembers && React__default.createElement(InviteMembers$1, {
- userQueryCreator: userQueryCreator,
- onSubmit: function onSubmit(selectedMemebers) {
- channel.inviteWithUserIds(selectedMemebers, function () {
- setShowInviteMembers(false);
- refershList();
- });
- },
- channel: channel,
- hideModal: function hideModal() {
- return setShowInviteMembers(false);
- }
- }));
-};
-
-var mapStoreToProps$3 = function mapStoreToProps(store) {
- return {
- sdk: getSdk(store)
- };
-};
-
-var MemberList$1 = withSendbirdContext(MemberList, mapStoreToProps$3);
-
-function BannedMembersModal(_a) {
- var hideModal = _a.hideModal,
- channel = _a.channel;
-
- var _b = React.useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = React.useState(null),
- memberQuery = _c[0],
- setMemberQuery = _c[1];
-
- React.useEffect(function () {
- var bannedUserListQuery = channel.createBannedUserListQuery();
- bannedUserListQuery.next(function (users, error) {
- if (error) {
- return;
- }
-
- setMembers(users);
- });
- setMemberQuery(bannedUserListQuery);
- }, []);
- return React__default.createElement("div", null, React__default.createElement(Modal, {
- hideFooter: true,
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: noop,
- titleText: "Muted members"
- }, React__default.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = memberQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- memberQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setMembers(__spreadArrays(members, o));
- });
- }
- }
- }, members.map(function (member) {
- return React__default.createElement(UserListItem, {
- user: member,
- key: member.userId,
- action: function action(_a) {
- var parentRef = _a.parentRef,
- actionRef = _a.actionRef;
- return React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React__default.createElement(MenuItem, {
- onClick: function onClick() {
- channel.unbanUser(member, function () {
- closeDropdown();
- setMembers(members.filter(function (m) {
- return m.userId !== member.userId;
- }));
- });
- }
- }, "Unban"));
- }
- });
- }
- });
- }))));
-}
-
-var BannedMemberList = function BannedMemberList(_a) {
- var channel = _a.channel;
-
- var _b = React.useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = React.useState(false),
- hasNext = _c[0],
- setHasNext = _c[1];
-
- var _d = React.useState(false),
- showModal = _d[0],
- setShowModal = _d[1];
-
- React.useEffect(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var bannedUserListQuery = channel.createBannedUserListQuery();
- bannedUserListQuery.next(function (users, error) {
- if (error) {
- return;
- }
-
- setMembers(users);
- setHasNext(bannedUserListQuery.hasNext);
- });
- }, [channel]);
- var refreshList = React.useCallback(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var bannedUserListQuery = channel.createBannedUserListQuery();
- bannedUserListQuery.next(function (users, error) {
- if (error) {
- return;
- }
-
- setMembers(users);
- setHasNext(bannedUserListQuery.hasNext);
- });
- }, [channel]);
- return React__default.createElement(React__default.Fragment, null, members.map(function (member) {
- return React__default.createElement(UserListItem$2, {
- key: member.userId,
- user: member,
- action: function action(_a) {
- var actionRef = _a.actionRef,
- parentRef = _a.parentRef;
- return React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React__default.createElement(MenuItem, {
- onClick: function onClick() {
- channel.unbanUser(member, function () {
- closeDropdown();
- refreshList();
- });
- }
- }, "Unban"));
- }
- });
- }
- });
- }), members && members.length === 0 && React__default.createElement(Label, {
- className: "sendbird-channel-settings__empty-list",
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_3
- }, "No banned members yet"), hasNext && React__default.createElement("div", {
- className: "sendbird-channel-settings-accordion__footer"
- }, React__default.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- setShowModal(true);
- }
- }, "All banned members")), showModal && React__default.createElement(BannedMembersModal, {
- channel: channel,
- hideModal: function hideModal() {
- setShowModal(false);
- refreshList();
- }
- }));
-};
-
-var mapStoreToProps$4 = function mapStoreToProps(store) {
- return {
- sdk: getSdk(store)
- };
-};
-
-var BannedMemberList$1 = withSendbirdContext(BannedMemberList, mapStoreToProps$4);
-
-function MutedMembersModal(_a) {
- var hideModal = _a.hideModal,
- channel = _a.channel,
- currentUser = _a.currentUser;
-
- var _b = React.useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = React.useState(null),
- memberQuery = _c[0],
- setMemberQuery = _c[1];
-
- React.useEffect(function () {
- var memberUserListQuery = channel.createMemberListQuery();
- memberUserListQuery.limit = 10;
- memberUserListQuery.mutedMemberFilter = 'muted';
- memberUserListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- });
- setMemberQuery(memberUserListQuery);
- }, []);
- return React__default.createElement("div", null, React__default.createElement(Modal, {
- hideFooter: true,
- onCancel: function onCancel() {
- return hideModal();
- },
- onSubmit: noop,
- titleText: "Muted members"
- }, React__default.createElement("div", {
- className: "sendbird-more-members__popup-scroll",
- onScroll: function onScroll(e) {
- var hasNext = memberQuery.hasNext;
- var target = e.target;
- var fetchMore = target.clientHeight + target.scrollTop === target.scrollHeight;
-
- if (hasNext && fetchMore) {
- memberQuery.next(function (o, error) {
- if (error) {
- return;
- }
-
- setMembers(__spreadArrays(members, o));
- });
- }
- }
- }, members.map(function (member) {
- return React__default.createElement(UserListItem, {
- currentUser: currentUser,
- user: member,
- key: member.userId,
- action: function action(_a) {
- var actionRef = _a.actionRef,
- parentRef = _a.parentRef;
- return React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
- ,
- closeDropdown: closeDropdown,
- openLeft: true
- }, React__default.createElement(MenuItem, {
- onClick: function onClick() {
- channel.unmuteUser(member, function () {
- closeDropdown();
- setMembers(members.filter(function (m) {
- return m.userId !== member.userId;
- }));
- });
- }
- }, "Unmute"));
- }
- });
- }
- });
- }))));
-}
-
-var MutedMemberList = function MutedMemberList(_a) {
- var sdk = _a.sdk,
- channel = _a.channel;
-
- var _b = React.useState([]),
- members = _b[0],
- setMembers = _b[1];
-
- var _c = React.useState(false),
- hasNext = _c[0],
- setHasNext = _c[1];
-
- var _d = React.useState(false),
- showModal = _d[0],
- setShowModal = _d[1];
-
- React.useEffect(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var memberUserListQuery = channel.createMemberListQuery();
- memberUserListQuery.limit = 10;
- memberUserListQuery.mutedMemberFilter = 'muted';
- memberUserListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- setHasNext(memberUserListQuery.hasNext);
- });
- }, [channel]);
- var refreshList = React.useCallback(function () {
- if (!channel) {
- setMembers([]);
- return;
- }
-
- var memberUserListQuery = channel.createMemberListQuery();
- memberUserListQuery.limit = 10;
- memberUserListQuery.mutedMemberFilter = 'muted';
- memberUserListQuery.next(function (members, error) {
- if (error) {
- return;
- }
-
- setMembers(members);
- setHasNext(memberUserListQuery.hasNext);
- });
- }, [channel]);
- return React__default.createElement(React__default.Fragment, null, members.map(function (member) {
- return React__default.createElement(UserListItem$2, {
- key: member.userId,
- user: member,
- currentUser: sdk.currentUser.userId,
- action: function action(_a) {
- var actionRef = _a.actionRef,
- parentRef = _a.parentRef;
- return React__default.createElement(ContextMenu, {
- menuTrigger: function menuTrigger(toggleDropdown) {
- return React__default.createElement(IconButton, {
- className: "sendbird-user-message__more__menu",
- width: "32px",
- height: "32px",
- onClick: toggleDropdown
- }, React__default.createElement(Icon, {
- width: "24px",
- height: "24px",
- type: IconTypes.MORE,
- fillColor: IconColors.CONTENT_INVERSE
- }));
- },
- menuItems: function menuItems(closeDropdown) {
- return React__default.createElement(MenuItems$1, {
- closeDropdown: closeDropdown,
- openLeft: true,
- parentContainRef: parentRef,
- parentRef: actionRef // for catching location(x, y) of MenuItems
-
- }, React__default.createElement(MenuItem, {
- onClick: function onClick() {
- channel.unmuteUser(member, function () {
- refreshList();
- closeDropdown();
- });
- }
- }, "Unmute"));
- }
- });
- }
- });
- }), members && members.length === 0 && React__default.createElement(Label, {
- className: "sendbird-channel-settings__empty-list",
- type: LabelTypography.SUBTITLE_2,
- color: LabelColors.ONBACKGROUND_3
- }, "No muted members yet"), hasNext && React__default.createElement("div", {
- className: "sendbird-channel-settings-accordion__footer"
- }, React__default.createElement(Button, {
- type: Type$1.SECONDARY,
- size: Size.SMALL,
- onClick: function onClick() {
- setShowModal(true);
- }
- }, "All muted members")), showModal && React__default.createElement(MutedMembersModal, {
- currentUser: sdk.currentUser.userId,
- channel: channel,
- hideModal: function hideModal() {
- setShowModal(false);
- refreshList();
- }
- }));
-};
-
-var mapStoreToProps$5 = function mapStoreToProps(store) {
- return {
- sdk: getSdk(store)
- };
-};
-
-var MutedMemberList$1 = withSendbirdContext(MutedMemberList, mapStoreToProps$5);
-
-var kFormatter = function kFormatter(num) {
- return Math.abs(num) > 999 ? (Math.abs(num) / 1000).toFixed(1) + "K" : num;
-};
-
-function index(_a) {
- var userQueryCreator = _a.userQueryCreator,
- channel = _a.channel;
-
- var _b = React.useState(false),
- frozen = _b[0],
- setFrozen = _b[1]; // work around for
- // https://sendbird.slack.com/archives/G01290GCDCN/p1595922832000900
- // SDK bug - after frozen/unfrozen myRole becomes "none"
-
-
- React.useEffect(function () {
- setFrozen(channel.isFrozen);
- }, [channel]);
- var stringSet = React.useContext(LocalizationContext).stringSet;
- return React__default.createElement(AccordionGroup$1, {
- className: "sendbird-channel-settings__operator"
- }, React__default.createElement(Accordion, {
- className: "sendbird-channel-settings__operators-list",
- id: "operators",
- renderTitle: function renderTitle() {
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(Icon, {
- type: IconTypes.ICON_OPERATOR,
- fillColor: IconColors.PRIMARY,
- width: 24,
- height: 24,
- className: "sendbird-channel-settings__accordion-icon"
- }), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__OPERATORS__TITLE));
- },
- renderContent: function renderContent() {
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(OperatorList$1, {
- channel: channel
- }));
- }
- }), React__default.createElement(Accordion, {
- className: "sendbird-channel-settings__members-list",
- id: "members",
- renderTitle: function renderTitle() {
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(Icon, {
- type: IconTypes.MEMBERS,
- fillColor: IconColors.PRIMARY,
- width: 24,
- height: 24,
- className: "sendbird-channel-settings__accordion-icon"
- }), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__MEMBERS__TITLE), React__default.createElement(Badge, {
- count: kFormatter(channel.memberCount)
- }));
- },
- renderContent: function renderContent() {
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(MemberList$1, {
- userQueryCreator: userQueryCreator,
- channel: channel
- }));
- }
- }), // No muted members in broadcast channel
- !channel.isBroadcast && React__default.createElement(Accordion, {
- id: "mutedMembers",
- className: "sendbird-channel-settings__muted-members-list",
- renderTitle: function renderTitle() {
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(Icon, {
- type: IconTypes.ICON_MUTED,
- fillColor: IconColors.PRIMARY,
- width: 24,
- height: 24,
- className: "sendbird-channel-settings__accordion-icon"
- }), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__MUTED_MEMBERS__TITLE));
- },
- renderContent: function renderContent() {
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(MutedMemberList$1, {
- channel: channel
- }));
- }
- }), React__default.createElement(Accordion, {
- className: "sendbird-channel-settings__banned-members-list",
- id: "bannedMembers",
- renderTitle: function renderTitle() {
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(Icon, {
- type: IconTypes.ICON_BANNED,
- fillColor: IconColors.PRIMARY,
- width: 24,
- height: 24,
- className: "sendbird-channel-settings__accordion-icon"
- }), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__BANNED_MEMBERS__TITLE));
- },
- renderContent: function renderContent() {
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(BannedMemberList$1, {
- channel: channel
- }));
- }
- }), // cannot frozen broadcast channel
- !channel.isBroadcast && React__default.createElement("div", {
- className: "sendbird-channel-settings__freeze"
- }, React__default.createElement(Icon, {
- type: IconTypes.FROZEN_LIGHT,
- fillColor: IconColors.PRIMARY,
- width: 24,
- height: 24,
- className: "sendbird-channel-settings__accordion-icon"
- }), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__FREEZE_CHANNEL), React__default.createElement("div", {
- className: "sendbird-channel-settings__frozen-icon"
- }, frozen ? React__default.createElement(Icon, {
- onClick: function onClick() {
- channel.unfreeze(function () {
- setFrozen(false);
- });
- },
- type: IconTypes.TOGGLE_ON,
- width: 44,
- height: 24
- }) : React__default.createElement(Icon, {
- onClick: function onClick() {
- channel.freeze(function () {
- setFrozen(true);
- });
- },
- type: IconTypes.TOGGLE_OFF,
- width: 44,
- height: 24
- }))));
-}
-
-var kFormatter$1 = function kFormatter(num) {
- return Math.abs(num) > 999 ? "".concat((Math.abs(num) / 1000).toFixed(1), "K") : num;
-};
-
-function ChannelSettings(props) {
- var onCloseClick = props.onCloseClick,
- channelUrl = props.channelUrl,
- disableUserProfile = props.disableUserProfile,
- renderUserProfile = props.renderUserProfile,
- _onChannelModified = props.onChannelModified,
- renderChannelProfile = props.renderChannelProfile,
- onBeforeUpdateChannel = props.onBeforeUpdateChannel;
- var sdkStore = props.stores.sdkStore,
- _props$config = props.config,
- userListQuery = _props$config.userListQuery,
- theme = _props$config.theme,
- userId = _props$config.userId,
- logger = _props$config.logger,
- isOnline = _props$config.isOnline,
- _props$queries = props.queries,
- queries = _props$queries === void 0 ? {} : _props$queries;
- var _props$config2 = props.config,
- config = _props$config2 === void 0 ? {} : _props$config2;
- var userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;
- var userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;
- var userFilledApplicationUserListQuery = queries.applicationUserListQuery;
-
- var _useContext = React.useContext(LocalizationContext),
- stringSet = _useContext.stringSet;
-
- var sdk = sdkStore.sdk,
- initialized = sdkStore.initialized; // hack to kepp track of channel updates by triggering useEffect
-
- var _useState = React.useState(uuidv4()),
- _useState2 = _slicedToArray(_useState, 2),
- channelUpdateId = _useState2[0],
- setChannelUpdateId = _useState2[1];
-
- var _useState3 = React.useState(null),
- _useState4 = _slicedToArray(_useState3, 2),
- channel = _useState4[0],
- setChannel = _useState4[1];
-
- var _useState5 = React.useState(false),
- _useState6 = _slicedToArray(_useState5, 2),
- invalidChannel = _useState6[0],
- setInvalidChannel = _useState6[1];
-
- var _useState7 = React.useState(false),
- _useState8 = _slicedToArray(_useState7, 2),
- showAccordion = _useState8[0],
- setShowAccordion = _useState8[1];
-
- var _useState9 = React.useState(false),
- _useState10 = _slicedToArray(_useState9, 2),
- showLeaveChannelModal = _useState10[0],
- setShowLeaveChannelModal = _useState10[1];
-
- React.useEffect(function () {
- logger.info('ChannelSettings: Setting up');
-
- if (!channelUrl || !initialized || !sdk) {
- logger.warning('ChannelSettings: Setting up failed', 'No channelUrl or sdk uninitialized');
- setInvalidChannel(false);
- } else {
- if (!sdk || !sdk.GroupChannel) {
- logger.warning('ChannelSettings: No GroupChannel');
- return;
- }
-
- sdk.GroupChannel.getChannel(channelUrl, function (groupChannel) {
- if (!groupChannel) {
- logger.warning('ChannelSettings: Channel not found');
- setInvalidChannel(true);
- } else {
- logger.info('ChannelSettings: Fetched group channel', groupChannel);
- setInvalidChannel(false);
- setChannel(groupChannel);
- }
- });
- }
- }, [channelUrl, initialized, channelUpdateId]);
-
- if (!channel || invalidChannel) {
- return React__default.createElement("div", {
- className: "sendbird-channel-settings"
- }, React__default.createElement("div", {
- className: "sendbird-channel-settings__header"
- }, React__default.createElement(Label, {
- type: LabelTypography.H_2,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React__default.createElement(Icon, {
- type: IconTypes.CLOSE,
- className: "sendbird-channel-settings__close-icon",
- height: "24px",
- width: "24px",
- onClick: function onClick() {
- logger.info('ChannelSettings: Click close');
- onCloseClick();
- }
- })), React__default.createElement("div", null, React__default.createElement(PlaceHolder, {
- type: PlaceHolderTypes.WRONG
- })));
- }
-
- return React__default.createElement(UserProfileProvider, {
- disableUserProfile: userDefinedDisableUserProfile,
- renderUserProfile: userDefinedRenderProfile,
- className: "sendbird-channel-settings"
- }, React__default.createElement("div", {
- className: "sendbird-channel-settings__header"
- }, React__default.createElement(Label, {
- type: LabelTypography.H_2,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React__default.createElement("div", {
- className: "sendbird-channel-settings__header-icon"
- }, React__default.createElement(IconButton, {
- width: "32px",
- height: "32px",
- onClick: function onClick() {
- logger.info('ChannelSettings: Click close');
- onCloseClick();
- }
- }, React__default.createElement(Icon, {
- type: IconTypes.CLOSE,
- className: "sendbird-channel-settings__close-icon",
- height: "24px",
- width: "24px"
- })))), React__default.createElement("div", {
- className: "sendbird-channel-settings__scroll-area"
- }, renderChannelProfile ? renderChannelProfile({
- channel: channel
- }) : React__default.createElement(ChannelProfile, {
- disabled: !isOnline,
- channel: channel,
- userId: userId,
- theme: theme,
- onChannelInfoChange: function onChannelInfoChange(currentImg, currentTitle) {
- logger.info('ChannelSettings: Channel information being updated');
- var swapParams = sdk.getErrorFirstCallback();
-
- if (onBeforeUpdateChannel) {
- var params = onBeforeUpdateChannel(currentTitle, currentImg, channel.data); // swapParams
-
- channel.updateChannel(params, function (response, error) {
- var groupChannel = response;
-
- if (swapParams) {
- groupChannel = error;
- }
-
- _onChannelModified(groupChannel);
-
- setChannelUpdateId(uuidv4());
- });
- return;
- }
-
- channel.updateChannel(currentTitle, currentImg, channel.data, function (response, error) {
- var groupChannel = response;
-
- if (swapParams) {
- groupChannel = error;
- }
-
- logger.info('ChannelSettings: Channel information updated', groupChannel);
-
- _onChannelModified(groupChannel);
-
- setChannelUpdateId(uuidv4());
- });
- }
- }), channel.myRole === 'operator' ? React__default.createElement(index, {
- channel: channel,
- onChannelModified: function onChannelModified(groupChannel) {
- // setChannelUpdateId(uuidv4());
- _onChannelModified(groupChannel);
- },
- userQueryCreator: function userQueryCreator() {
- return userListQuery && typeof userListQuery === 'function' ? userListQuery() : createDefaultUserListQuery({
- sdk: sdk,
- userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
- });
- }
- }) : React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
- role: "switch",
- "aria-checked": showAccordion,
- tabIndex: 0,
- onKeyDown: function onKeyDown() {
- return setShowAccordion(!showAccordion);
- },
- className: "\n sendbird-channel-settings__panel-item\n sendbird-channel-settings__members\n ",
- onClick: function onClick() {
- return setShowAccordion(!showAccordion);
- }
- }, React__default.createElement(Icon, {
- type: IconTypes.MEMBERS,
- className: "sendbird-channel-settings__panel-icon-left",
- height: "24px",
- width: "24px",
- fillColor: IconColors.PRIMARY
- }), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, "".concat(stringSet.CHANNEL_SETTING__MEMBERS__TITLE), React__default.createElement(Badge, {
- count: kFormatter$1(channel.memberCount)
- })), React__default.createElement(Icon, {
- type: IconTypes.SHEVRON,
- className: ['sendbird-channel-settings__panel-icon-right', 'sendbird-channel-settings__panel-icon--chevron', showAccordion ? 'sendbird-channel-settings__panel-icon--open' : ''].join(' '),
- height: "24px",
- width: "24px"
- })), showAccordion && React__default.createElement(MemebersAccordion, {
- currentUser: userId,
- disabled: !isOnline // eslint-disable-next-line
- ,
- userQueryCreator: function userQueryCreator() {
- return userListQuery && typeof userListQuery === 'function' ? userListQuery() : createDefaultUserListQuery({
- sdk: sdk,
- userFilledApplicationUserListQuery: userFilledApplicationUserListQuery
- });
- },
- swapParams: sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback(),
- channel: channel,
- members: channel.members,
- onInviteMemebers: function onInviteMemebers(selectedMemebers) {
- logger.info('ChannelSettings: Inviting new users');
- channel.inviteWithUserIds(selectedMemebers).then(function (res) {
- _onChannelModified(res);
-
- setChannelUpdateId(uuidv4());
- logger.info('ChannelSettings: Inviting new users success!', res);
- });
- }
- })), React__default.createElement("div", {
- className: "sendbird-channel-settings__panel-item\n sendbird-channel-settings__leave-channel\n ".concat(!isOnline ? 'sendbird-channel-settings__panel-item__disabled' : ''),
- role: "button",
- tabIndex: 0,
- disabled: true,
- onKeyDown: function onKeyDown() {
- if (!isOnline) {
- return;
- }
-
- setShowLeaveChannelModal(true);
- },
- onClick: function onClick() {
- if (!isOnline) {
- return;
- }
-
- setShowLeaveChannelModal(true);
- }
- }, React__default.createElement(Icon, {
- type: IconTypes.LEAVE,
- className: ['sendbird-channel-settings__panel-icon-left', 'sendbird-channel-settings__panel-icon__leave'].join(' '),
- height: "24px",
- width: "24px"
- }), React__default.createElement(Label, {
- type: LabelTypography.SUBTITLE_1,
- color: LabelColors.ONBACKGROUND_1
- }, stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE)), showLeaveChannelModal && React__default.createElement(LeaveChannel, {
- onCloseModal: function onCloseModal() {
- return setShowLeaveChannelModal(false);
- },
- onLeaveChannel: function onLeaveChannel() {
- logger.info('ChannelSettings: Leaving channel', channel);
- channel.leave().then(function () {
- logger.info('ChannelSettings: Leaving channel successful!', channel);
- onCloseClick();
- });
- }
- })));
-}
-
-ChannelSettings.propTypes = {
- onCloseClick: PropTypes.func,
- onChannelModified: PropTypes.func,
- onBeforeUpdateChannel: PropTypes.func,
- renderChannelProfile: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- channelUrl: PropTypes.string.isRequired,
- queries: PropTypes.shape({
- applicationUserListQuery: PropTypes.shape({
- limit: PropTypes.number,
- userIdsFilter: PropTypes.arrayOf(PropTypes.string),
- metaDataKeyFilter: PropTypes.string,
- metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string)
- })
- }),
- // from withSendbirdContext
- stores: PropTypes.shape({
- sdkStore: PropTypes.shape({
- sdk: PropTypes.shape({
- getErrorFirstCallback: PropTypes.func,
- GroupChannel: PropTypes.oneOfType([PropTypes.shape({
- getChannel: PropTypes.func
- }), PropTypes.func]),
- createApplicationUserListQuery: PropTypes.any
- }),
- initialized: PropTypes.bool
- })
- }).isRequired,
- config: PropTypes.shape({
- userId: PropTypes.string,
- theme: PropTypes.string,
- userListQuery: PropTypes.func,
- isOnline: PropTypes.bool,
- logger: PropTypes.shape({
- info: PropTypes.func,
- error: PropTypes.func,
- warning: PropTypes.func
- })
- }).isRequired
-};
-ChannelSettings.defaultProps = {
- onBeforeUpdateChannel: null,
- queries: {},
- disableUserProfile: false,
- renderUserProfile: null,
- renderChannelProfile: null,
- onCloseClick: function onCloseClick() {},
- onChannelModified: function onChannelModified() {}
-};
-var ChannelSettings$1 = withSendbirdContext(ChannelSettings);
-
-function App(props) {
- var appId = props.appId,
- userId = props.userId,
- accessToken = props.accessToken,
- theme = props.theme,
- userListQuery = props.userListQuery,
- nickname = props.nickname,
- profileUrl = props.profileUrl,
- _props$config = props.config,
- config = _props$config === void 0 ? {} : _props$config,
- useReaction = props.useReaction,
- useMessageGrouping = props.useMessageGrouping,
- colorSet = props.colorSet,
- stringSet = props.stringSet,
- allowProfileEdit = props.allowProfileEdit,
- disableUserProfile = props.disableUserProfile,
- renderUserProfile = props.renderUserProfile,
- onProfileEditSuccess = props.onProfileEditSuccess;
-
- var _useState = React.useState(null),
- _useState2 = _slicedToArray(_useState, 2),
- currentChannelUrl = _useState2[0],
- setCurrentChannelUrl = _useState2[1];
-
- var _useState3 = React.useState(false),
- _useState4 = _slicedToArray(_useState3, 2),
- showSettings = _useState4[0],
- setShowSettings = _useState4[1];
-
- return React__default.createElement(Sendbird, {
- stringSet: stringSet,
- appId: appId,
- userId: userId,
- accessToken: accessToken,
- theme: theme,
- nickname: nickname,
- profileUrl: profileUrl,
- userListQuery: userListQuery,
- config: config,
- colorSet: colorSet,
- disableUserProfile: disableUserProfile,
- renderUserProfile: renderUserProfile
- }, React__default.createElement("div", {
- className: "sendbird-app__wrap"
- }, React__default.createElement("div", {
- className: "sendbird-app__channellist-wrap"
- }, React__default.createElement(ChannelList$1, {
- allowProfileEdit: allowProfileEdit,
- onProfileEditSuccess: onProfileEditSuccess,
- onChannelSelect: function onChannelSelect(channel) {
- if (channel && channel.url) {
- setCurrentChannelUrl(channel.url);
- } else {
- setCurrentChannelUrl('');
- }
- }
- })), React__default.createElement("div", {
- className: "\n ".concat(showSettings ? 'sendbird-app__conversation--settings-open' : '', "\n sendbird-app__conversation-wrap\n ")
- }, React__default.createElement(Conversation, {
- channelUrl: currentChannelUrl,
- onChatHeaderActionClick: function onChatHeaderActionClick() {
- if (showSettings) {
- setShowSettings(false);
- } else {
- setShowSettings(true);
- }
- },
- useReaction: useReaction,
- useMessageGrouping: useMessageGrouping
- })), showSettings && React__default.createElement("div", {
- className: "sendbird-app__settingspanel-wrap"
- }, React__default.createElement(ChannelSettings$1, {
- channelUrl: currentChannelUrl,
- onCloseClick: function onCloseClick() {
- setShowSettings(false);
- }
- }))));
-}
-App.propTypes = {
- appId: PropTypes.string.isRequired,
- userId: PropTypes.string.isRequired,
- accessToken: PropTypes.string,
- theme: PropTypes.string,
- userListQuery: PropTypes.func,
- nickname: PropTypes.string,
- profileUrl: PropTypes.string,
- allowProfileEdit: PropTypes.bool,
- disableUserProfile: PropTypes.bool,
- renderUserProfile: PropTypes.func,
- onProfileEditSuccess: PropTypes.func,
- config: PropTypes.shape({
- // None Error Warning Info 'All/Debug'
- logLevel: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
- }),
- useReaction: PropTypes.bool,
- useMessageGrouping: PropTypes.bool,
- stringSet: PropTypes.objectOf(PropTypes.string),
- colorSet: PropTypes.objectOf(PropTypes.string)
-};
-App.defaultProps = {
- accessToken: '',
- theme: 'light',
- nickname: '',
- profileUrl: '',
- userListQuery: null,
- allowProfileEdit: false,
- onProfileEditSuccess: null,
- disableUserProfile: false,
- renderUserProfile: null,
- config: {},
- useReaction: true,
- useMessageGrouping: true,
- stringSet: null,
- colorSet: null
-};
-
-exports.App = App;
-exports.Channel = Conversation;
-exports.ChannelList = ChannelList$1;
-exports.ChannelSettings = ChannelSettings$1;
-exports.SendBirdProvider = Sendbird;
-exports.getAllEmojisFromEmojiContainer = getAllEmojisFromEmojiContainer$1;
-exports.getEmojiCategoriesFromEmojiContainer = getEmojiCategoriesFromEmojiContainer$1;
-exports.getEmojisFromEmojiContainer = getEmojisFromEmojiContainer$1;
-exports.getStringSet = getStringSet;
-exports.sendBirdSelectors = selectors;
-exports.withSendBird = withSendbirdContext;
-//# sourceMappingURL=index.js.map
diff --git a/dist/index.js.map b/dist/index.js.map
deleted file mode 100644
index ffe97d7..0000000
--- a/dist/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sources":["../../src/lib/SendbirdSdkContext.jsx","../../src/lib/dux/sdk/actionTypes.js","../../src/lib/dux/user/actionTypes.js","../../src/lib/dux/sdk/thunks.js","../../node_modules/tslib/tslib.es6.js","../../src/lib/hooks/useTheme.ts","../../src/lib/dux/sdk/initialState.js","../../src/lib/dux/sdk/reducers.js","../../src/lib/dux/user/initialState.js","../../src/lib/dux/user/reducers.js","../../src/utils/uuid.ts","../../src/lib/hooks/useOnlineStatus.js","../../src/lib/Logger/index.js","../../src/lib/pubSub/index.js","../../src/hooks/useAppendDomNode.js","../../src/ui/Label/stringSet.js","../../src/lib/LocalizationContext.tsx","../../src/lib/Sendbird.jsx","../../src/lib/UserProfileContext.jsx","../../src/smart-components/ChannelList/dux/actionTypes.js","../../src/smart-components/ChannelList/dux/initialState.js","../../src/smart-components/ChannelList/dux/reducers.js","../../src/ui/ImageRenderer/index.jsx","../../src/ui/Icon/type.js","../../src/ui/Icon/index.jsx","../../src/ui/Avatar/index.tsx","../../src/ui/ChannelAvatar/utils.ts","../../src/ui/ChannelAvatar/index.tsx","../../src/ui/Label/types.js","../../src/ui/Label/utils.js","../../src/ui/Label/index.jsx","../../src/ui/Badge/index.jsx","../../src/ui/MessageStatus/type.js","../../src/ui/FileMessage/utils.js","../../src/ui/ChannelPreview/utils.js","../../src/ui/ChannelPreview/index.jsx","../../src/ui/IconButton/index.jsx","../../src/ui/ChannelHeader/index.jsx","../../src/hooks/useModal/ModalRoot/index.jsx","../../src/ui/Button/type.js","../../src/ui/Button/utils.js","../../src/ui/Button/index.jsx","../../src/ui/Modal/index.jsx","../../src/ui/Input/index.jsx","../../src/utils/color.js","../../src/ui/TextButton/index.jsx","../../src/utils/utils.js","../../src/ui/EditUserProfile/index.tsx","../../src/ui/PlaceHolder/type.js","../../src/ui/Avatar/MutedAvatarOverlay.tsx","../../src/ui/Checkbox/index.jsx","../../src/lib/pubSub/topics.js","../../src/lib/selectors.js","../../src/ui/UserProfile/index.tsx","../../src/ui/ContextMenu/items/MenuItems.jsx","../../src/ui/SortByRow/index.jsx","../../src/ui/ContextMenu/items/EmojiListItems.jsx","../../src/ui/ContextMenu/index.jsx","../../src/ui/UserListItem/index.jsx","../../src/smart-components/InviteMembers/index.jsx","../../src/smart-components/ChannelList/components/utils.js","../../src/smart-components/ChannelList/components/AddChannel.jsx","../../src/smart-components/ChannelSettings/components/LeaveChannel.jsx","../../src/smart-components/ChannelList/components/ChannelPreviewAction.jsx","../../src/ui/Loader/index.jsx","../../src/ui/PlaceHolder/index.jsx","../../src/smart-components/ChannelList/components/Placeholder.jsx","../../src/smart-components/ChannelList/utils.js","../../src/smart-components/ChannelList/index.jsx","../../src/smart-components/Conversation/dux/actionTypes.js","../../src/ui/FileViewer/types.js","../../src/smart-components/Conversation/types.js","../../src/smart-components/Conversation/utils.js","../../src/smart-components/Conversation/dux/initialState.js","../../src/utils/compareIds.js","../../src/smart-components/Conversation/dux/reducers.js","../../src/smart-components/Conversation/hooks/useHandleChannelEvents.js","../../src/smart-components/Conversation/hooks/useGetChannel.js","../../src/smart-components/Conversation/hooks/useInitialMessagesFetch.js","../../src/smart-components/Conversation/hooks/useHandleReconnect.js","../../src/smart-components/Conversation/hooks/useScrollCallback.js","../../src/smart-components/Conversation/hooks/useDeleteMessageCallback.js","../../src/smart-components/Conversation/hooks/useUpdateMessageCallback.js","../../src/smart-components/Conversation/hooks/useResendMessageCallback.js","../../src/smart-components/Conversation/hooks/useSendMessageCallback.js","../../src/smart-components/Conversation/hooks/useSendFileMessageCallback.js","../../src/smart-components/Conversation/hooks/useSetReadStatus.js","../../src/ui/ReactionButton/index.jsx","../../src/smart-components/Conversation/hooks/useMemoizedEmojiListItems.jsx","../../src/smart-components/Conversation/hooks/useToggleReactionCallback.js","../../src/ui/MessageStatus/index.jsx","../../src/ui/ReactionBadge/index.jsx","../../src/ui/Tooltip/index.jsx","../../src/ui/TooltipWrapper/index.jsx","../../src/ui/EmojiReactions/index.jsx","../../src/ui/Message/utils.js","../../src/ui/Message/memoizedMessageText.jsx","../../src/hooks/onMouseHover.jsx","../../src/ui/Message/index.jsx","../../src/ui/AdminMessage/index.jsx","../../src/ui/ThumbnailMessage/util.js","../../src/ui/ThumbnailMessage/index.jsx","../../src/ui/FileMessage/index.jsx","../../src/ui/DateSeparator/index.jsx","../../src/ui/MessageInput/index.jsx","../../src/ui/FileViewer/index.jsx","../../src/smart-components/Conversation/components/RemoveMessage.jsx","../../src/ui/UnknownMessage/utils.js","../../src/ui/UnknownMessage/index.jsx","../../src/ui/OGMessage/const.js","../../src/ui/OGMessage/utils.js","../../src/ui/LinkLabel/index.jsx","../../src/ui/OGMessage/memoizedMessageText.jsx","../../src/ui/OGMessage/index.jsx","../../src/smart-components/Conversation/components/MessageHOC.jsx","../../src/smart-components/Conversation/components/ConversationScroll.jsx","../../src/smart-components/Conversation/components/Notification.jsx","../../src/smart-components/Conversation/components/FrozenNotification.tsx","../../src/smart-components/Conversation/components/TypingIndicator.jsx","../../src/smart-components/Conversation/components/MessageInputWrapper.tsx","../../src/ui/ConnectionStatus/index.jsx","../../src/ui/ChatHeader/utils.js","../../src/ui/AutoRefresh/index.jsx","../../src/ui/ChatHeader/index.jsx","../../src/smart-components/Conversation/index.jsx","../../src/smart-components/ChannelSettings/components/EditDetails.jsx","../../src/smart-components/ChannelSettings/components/ChannelProfile.jsx","../../src/smart-components/ChannelSettings/components/AdminPanel/MembersModal.tsx","../../src/smart-components/ChannelSettings/components/MemebersAccordion.jsx","../../src/ui/Accordion/context.ts","../../src/ui/Accordion/AccordionGroup.tsx","../../src/ui/Accordion/index.tsx","../../src/smart-components/ChannelSettings/components/UserListItem.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/OperatorsModal.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/AddOperatorsModal.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/OperatorList.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/InviteMembersModal.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/MemberList.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/BannedMembersModal.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/BannedMemberList.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/MutedMembersModal.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/MutedMemberList.tsx","../../src/smart-components/ChannelSettings/components/AdminPanel/index.tsx","../../src/smart-components/ChannelSettings/index.jsx","../../src/smart-components/App/index.jsx"],"sourcesContent":["import React from 'react';\n\nexport const SendbirdSdkContext = React.createContext();\n\nconst withSendbirdContext = (OriginalComponent, mapStoreToProps) => {\n const ContextAwareComponent = (props) => (\n \n {(context) => {\n if (mapStoreToProps && typeof mapStoreToProps !== 'function') {\n // eslint-disable-next-line no-console\n console.warn('Second parameter to withSendbirdContext must be a pure function');\n }\n // todo - memoize\n const mergedProps = (mapStoreToProps && typeof mapStoreToProps === 'function')\n ? { ...mapStoreToProps(context), ...props }\n : { ...context, ...props };\n // eslint-disable-next-line react/jsx-props-no-spreading\n return ;\n }}\n \n );\n\n const componentName = OriginalComponent.displayName || OriginalComponent.name || 'Component';\n ContextAwareComponent.displayName = `SendbirdAware${componentName}`;\n\n return ContextAwareComponent;\n};\n\nexport default withSendbirdContext;\n","export const INIT_SDK = 'INIT_SDK';\nexport const SET_SDK_LOADING = 'SET_SDK_LOADING';\nexport const RESET_SDK = 'RESET_SDK';\nexport const SDK_ERROR = 'SDK_ERROR';\n","export const INIT_USER = 'INIT_USER';\nexport const RESET_USER = 'RESET_USER';\nexport const SET_USER_LOADING = 'SET_USER_LOADING';\nexport const UPDATE_USER_INFO = 'UPDATE_USER_INFO';\n","import Sb from 'sendbird';\n\nimport {\n INIT_SDK,\n SET_SDK_LOADING,\n RESET_SDK,\n SDK_ERROR,\n} from './actionTypes';\nimport { INIT_USER, UPDATE_USER_INFO, RESET_USER } from '../user/actionTypes';\n\nconst APP_VERSION_STRING = '__uikit_app_version__';\nconst IS_ROLLUP = '__is_rollup__';\nconst IS_ROLLUP_REPLACE = '__is_rollup_replace__';\n\nexport const disconnectSdk = ({\n sdkDispatcher,\n userDispatcher,\n sdk,\n onDisconnect,\n}) => {\n sdkDispatcher({ type: SET_SDK_LOADING, payload: true });\n if (sdk && sdk.disconnect) {\n sdk.disconnect()\n .then(() => {\n sdkDispatcher({ type: RESET_SDK });\n userDispatcher({ type: RESET_USER });\n })\n .finally(() => {\n onDisconnect();\n });\n } else {\n onDisconnect();\n }\n};\n\nexport const handleConnection = ({\n userId,\n appId,\n nickname,\n profileUrl,\n accessToken,\n sdk,\n logger,\n}, dispatchers) => {\n const {\n sdkDispatcher,\n userDispatcher,\n } = dispatchers;\n disconnectSdk({\n sdkDispatcher,\n userDispatcher,\n sdk,\n logger,\n onDisconnect: () => {\n logger.info('Setup connection');\n sdkDispatcher({ type: SET_SDK_LOADING, payload: true });\n if (userId && appId) {\n const newSdk = new Sb({ appId });\n // to check if code is released version from rollup and *not from storybook*\n // see rollup config file\n if (IS_ROLLUP === IS_ROLLUP_REPLACE) {\n newSdk.addExtension('sb_uikit', APP_VERSION_STRING);\n }\n const connectCbSucess = (user) => {\n sdkDispatcher({ type: INIT_SDK, payload: newSdk });\n userDispatcher({ type: INIT_USER, payload: user });\n // use nickname/profileUrl if provided\n // or set userID as nickname\n const newNickName = nickname || user.nickname;\n const newProfileUrl = profileUrl || user.profileUrl;\n newSdk.updateCurrentUserInfo(newNickName, newProfileUrl)\n .then((namedUser) => {\n userDispatcher({ type: UPDATE_USER_INFO, payload: namedUser });\n });\n };\n\n const connectCbError = (e) => {\n logger.error('Connection failed', `${e}`);\n sdkDispatcher({ type: RESET_SDK });\n sdkDispatcher({ type: RESET_USER });\n sdkDispatcher({ type: SDK_ERROR });\n };\n\n if (accessToken) {\n newSdk.connect(userId, accessToken)\n .then((res) => connectCbSucess(res))\n .catch((err) => connectCbError(err));\n } else {\n newSdk.connect(userId)\n .then((res) => connectCbSucess(res))\n .catch((err) => connectCbError(err));\n }\n } else {\n sdkDispatcher({ type: SDK_ERROR });\n logger.warning('Connection failed', 'UserId or appId missing');\n }\n },\n });\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { useLayoutEffect } from 'react';\nimport cssVars from 'css-vars-ponyfill';\n\nconst isEmpty = (obj) => {\n if (obj === null || obj === undefined) {\n return true;\n }\n\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n return JSON.stringify(obj) === JSON.stringify({});\n}\n\nconst useTheme = (overrides: Record): void => {\n useLayoutEffect(() => {\n if (!isEmpty(overrides)) {\n cssVars({\n variables: {\n ...{\n '--sendbird-dark-primary-500': '#4d2aa6',\n '--sendbird-dark-primary-400': '#6440C4',\n '--sendbird-dark-primary-300': '#7B53EF',\n '--sendbird-dark-primary-200': '#9E8CF5',\n '--sendbird-dark-primary-100': '#E2DFFF',\n\n '--sendbird-dark-secondary-500': '#007A7A',\n '--sendbird-dark-secondary-400': '#189A8D',\n '--sendbird-dark-secondary-300': '#2EBA9F',\n '--sendbird-dark-secondary-200': '#6FD6BE',\n '--sendbird-dark-secondary-100': '#AEF2DC',\n\n '--sendbird-dark-information-100': '#b2d9ff',\n\n '--sendbird-dark-error-500': '#A30E2D',\n '--sendbird-dark-error-400': '#C11F41',\n '--sendbird-dark-error-300': '#E53157',\n '--sendbird-dark-error-200': '#FF6183',\n '--sendbird-dark-error-100': '#FFABBD',\n\n '--sendbird-dark-background-700': '#000000',\n '--sendbird-dark-background-600': '#161616',\n '--sendbird-dark-background-500': '#2C2C2C',\n '--sendbird-dark-background-400': '#393939',\n '--sendbird-dark-background-300': '#A8A8A8',\n '--sendbird-dark-background-200': '#D9D9D9',\n '--sendbird-dark-background-100': '#F0F0F0',\n '--sendbird-dark-background-50': '#FFFFFF',\n\n '--sendbird-dark-overlay': 'rgba(0, 0, 0, 0.32)',\n\n '--sendbird-dark-onlight-01': 'rgba(0, 0, 0, 0.88)',\n '--sendbird-dark-onlight-02': 'rgba(0, 0, 0, 0.50)',\n '--sendbird-dark-onlight-03': 'rgba(0, 0, 0, 0.38)',\n '--sendbird-dark-onlight-04': 'rgba(0, 0, 0, 0.12)',\n\n '--sendbird-dark-ondark-01': 'rgba(255, 255, 255, 0.88)',\n '--sendbird-dark-ondark-02': 'rgba(255, 255, 255, 0.50)',\n '--sendbird-dark-ondark-03': 'rgba(255, 255, 255, 0.38)',\n '--sendbird-dark-ondark-04': 'rgba(255, 255, 255, 0.12)',\n\n '--sendbird-dark-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',\n '--sendbird-dark-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',\n\n '--sendbird-dark-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-primary-500': '#4d2aa6',\n '--sendbird-light-primary-400': '#6440C4',\n '--sendbird-light-primary-300': '#7B53EF',\n '--sendbird-light-primary-200': '#9E8CF5',\n '--sendbird-light-primary-100': '#E2DFFF',\n\n '--sendbird-light-secondary-500': '#007A7A',\n '--sendbird-light-secondary-400': '#189A8D',\n '--sendbird-light-secondary-300': '#2EBA9F',\n '--sendbird-light-secondary-200': '#6FD6BE',\n '--sendbird-light-secondary-100': '#AEF2DC',\n\n '--sendbird-light-information-100': '#b2d9ff',\n\n '--sendbird-light-error-500': '#A30E2D',\n '--sendbird-light-error-400': '#C11F41',\n '--sendbird-light-error-300': '#E53157',\n '--sendbird-light-error-200': '#FF6183',\n '--sendbird-light-error-100': '#FFABBD',\n\n '--sendbird-light-background-700': '#000000',\n '--sendbird-light-background-600': '#161616',\n '--sendbird-light-background-500': '#2C2C2C',\n '--sendbird-light-background-400': '#393939',\n '--sendbird-light-background-300': '#A8A8A8',\n '--sendbird-light-background-200': '#D9D9D9',\n '--sendbird-light-background-100': '#F0F0F0',\n '--sendbird-light-background-50': ' #FFFFFF',\n\n '--sendbird-light-overlay': 'rgba(0, 0, 0, 0.32)',\n\n '--sendbird-light-onlight-01': 'rgba(0, 0, 0, 0.88)',\n '--sendbird-light-onlight-02': 'rgba(0, 0, 0, 0.50)',\n '--sendbird-light-onlight-03': 'rgba(0, 0, 0, 0.38)',\n '--sendbird-light-onlight-04': 'rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-ondark-01': 'rgba(255, 255, 255, 0.88)',\n '--sendbird-light-ondark-02': 'rgba(255, 255, 255, 0.50)',\n '--sendbird-light-ondark-03': 'rgba(255, 255, 255, 0.38)',\n '--sendbird-light-ondark-04': 'rgba(255, 255, 255, 0.12)',\n\n '--sendbird-light-shadow-01': '0 1px 5px 0 rgba(33, 34, 66, 0.04), 0 0 3px 0 rgba(0, 0, 0, 0.08), 0 2px 1px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-02': '0 3px 5px -3px rgba(33, 34, 66, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.08), 0 8px 10px 1px rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-03': '0 6px 10px -5px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.08), 0 16px 24px 2px rgba(0, 0, 0, 0.12)',\n '--sendbird-light-shadow-04': '0 9px 15px -7px rgba(0, 0, 0, 0.04), 0 9px 46px 8px rgba(0, 0, 0, 0.08), 0 24px 38px 3px rgba(0, 0, 0, 0.12)',\n\n '--sendbird-light-shadow-message-input': '0 1px 5px 0 rgba(33, 34, 66, 0.12), 0 0 1px 0 rgba(33, 34, 66, 0.16), 0 2px 1px 0 rgba(33, 34, 66, 0.08), 0 1px 5px 0 rgba(0, 0, 0, 0.12)',\n '--sendbird-light-theme-surface-2': '#EAEAEA',\n },\n ...overrides,\n },\n });\n }\n }, [overrides]);\n};\n\nexport default useTheme;\n","export default {\n initialized: false,\n loading: false,\n sdk: {},\n error: false,\n};\n","import * as sdkActions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case sdkActions.SET_SDK_LOADING:\n return {\n ...state,\n initialized: false,\n loading: action.payload,\n };\n case sdkActions.SDK_ERROR:\n return {\n ...state,\n initialized: false,\n loading: false,\n error: true,\n };\n case sdkActions.INIT_SDK:\n return {\n sdk: action.payload,\n initialized: true,\n loading: false,\n error: false,\n };\n case sdkActions.RESET_SDK:\n return initialState;\n default:\n return state;\n }\n}\n","export default {\n initialized: false,\n loading: false,\n user: {},\n};\n","import * as actions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actions.INIT_USER:\n return {\n initialized: true,\n loading: false,\n user: action.payload,\n };\n case actions.RESET_USER:\n return initialState;\n case actions.UPDATE_USER_INFO:\n return {\n ...state,\n user: action.payload,\n };\n default:\n return state;\n }\n}\n","/* eslint-disable no-bitwise */\n/* eslint-disable eqeqeq */\n/* eslint-disable no-mixed-operators */\n// https://stackoverflow.com/a/2117523\n// used mainly for dom key generation\nexport const uuidv4 = (): string => 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n});\n\nexport default uuidv4;\n","import { useState, useEffect } from 'react';\n\nimport { uuidv4 } from '../../utils/uuid';\n\nfunction useConnectionStatus(sdk, logger) {\n const [isOnline, setIsOnline] = useState(true);\n\n useEffect(() => {\n const uniqueHandlerId = uuidv4();\n logger.warning('sdk changed', uniqueHandlerId);\n let handler;\n if (sdk && sdk.ConnectionHandler) {\n handler = new sdk.ConnectionHandler();\n\n handler.onReconnectStarted = () => {\n setIsOnline(false);\n logger.warning('onReconnectStarted', { isOnline });\n };\n handler.onReconnectSucceeded = () => {\n setIsOnline(true);\n logger.warning('onReconnectSucceeded', { isOnline });\n };\n handler.onReconnectFailed = () => {\n sdk.reconnect();\n logger.warning('onReconnectFailed');\n };\n logger.info('Added ConnectionHandler', uniqueHandlerId);\n sdk.addConnectionHandler(uniqueHandlerId, handler);\n }\n return () => {\n try {\n sdk.removeConnectionHandler(uniqueHandlerId);\n logger.info('Removed ConnectionHandler', uniqueHandlerId);\n } catch {\n //\n }\n };\n }, [sdk]);\n\n useEffect(() => {\n const tryReconnect = () => {\n try {\n logger.warning('Try reconnecting SDK');\n if (sdk.getConnectionState() !== 'OPEN') { // connection is not broken yet\n sdk.reconnect();\n }\n } catch {\n //\n }\n };\n // addEventListener version\n window.addEventListener('online', tryReconnect);\n return () => {\n window.removeEventListener('online', tryReconnect);\n };\n }, [sdk]);\n\n // add offline-class to body\n useEffect(() => {\n const body = document.querySelector('body');\n if (!isOnline) {\n try {\n body.classList.add('sendbird__offline');\n logger.info('Added class sendbird__offline to body');\n } catch (e) {\n //\n }\n } else {\n try {\n body.classList.remove('sendbird__offline');\n logger.info('Removed class sendbird__offline from body');\n } catch (e) {\n //\n }\n }\n }, [isOnline]);\n\n return isOnline;\n}\n\nexport default useConnectionStatus;\n","export const LOG_LEVELS = {\n DEBUG: 'debug',\n WARNING: 'warning',\n ERROR: 'error',\n INFO: 'info',\n ALL: 'all',\n};\n\nconst colorLog = (level) => {\n switch (level) {\n case LOG_LEVELS.WARNING:\n return ('color: Orange');\n case LOG_LEVELS.ERROR:\n return ('color: Red');\n default:\n return ('color: Gray');\n }\n};\n\nexport const printLog = ({\n level,\n title,\n description = '',\n}) => {\n // eslint-disable-next-line no-console\n console.log(\n `%c SendbirdUIKit | ${level} | ${new Date().toISOString()} | ${title} ${description && '|'}`, colorLog(level),\n description,\n );\n};\n\nexport const getDefaultLogger = () => ({\n info: () => {},\n error: () => {},\n warning: () => {},\n});\n\nexport const LoggerFactory = (lvl, customInterface) => {\n const logInterface = customInterface || printLog;\n const lvlArray = Array.isArray(lvl) ? lvl : [lvl];\n\n const applyLog = (lgLvl) => (title, description) => logInterface({\n level: lgLvl,\n title,\n description,\n });\n\n const logger = lvlArray.reduce((accumulator, currentLvl) => {\n if (currentLvl === LOG_LEVELS.DEBUG || currentLvl === LOG_LEVELS.ALL) {\n return ({\n ...accumulator,\n info: applyLog(LOG_LEVELS.INFO),\n error: applyLog(LOG_LEVELS.ERROR),\n warning: applyLog(LOG_LEVELS.WARNING),\n });\n }\n\n if (currentLvl === LOG_LEVELS.INFO) {\n return ({\n ...accumulator,\n info: applyLog(LOG_LEVELS.INFO),\n });\n }\n\n if (currentLvl === LOG_LEVELS.ERROR) {\n return ({\n ...accumulator,\n error: applyLog(LOG_LEVELS.ERROR),\n });\n }\n\n if (currentLvl === LOG_LEVELS.WARNING) {\n return ({\n ...accumulator,\n warning: applyLog(LOG_LEVELS.WARNING),\n });\n }\n\n return { ...accumulator };\n }, getDefaultLogger());\n return logger;\n};\n","// https://davidwalsh.name/pubsub-javascript\nexport default () => {\n const topics = {};\n const hOP = topics.hasOwnProperty;\n\n return {\n __getTopics: () => topics,\n subscribe: (topic, listener) => {\n // Create the topic's object if not yet created\n if (!hOP.call(topics, topic)) { topics[topic] = []; }\n\n // Add the listener to queue\n const index = topics[topic].push(listener) - 1;\n\n // Provide handle back for removal of topic\n return {\n remove: () => {\n delete topics[topic][index];\n },\n };\n },\n publish: (topic, info) => {\n // If the topic doesn't exist, or there's no listeners in queue, just leave\n if (!hOP.call(topics, topic)) { return; }\n\n // Cycle through topics queue, fire!\n topics[topic].forEach((item) => {\n item(info !== undefined ? info : {});\n });\n },\n };\n};\n","import { useEffect } from 'react';\n\nfunction useAppendDomNode(ids = [], rootSelector) {\n useEffect(() => {\n const root = document.querySelector(rootSelector);\n ids.forEach((id) => {\n const elem = document.createElement('div');\n elem.setAttribute('id', id);\n root.appendChild(elem);\n });\n return () => {\n ids.forEach((id) => {\n const target = document.getElementById(id);\n if (target) {\n root.removeChild(target);\n }\n });\n };\n }, []);\n}\n\nexport default useAppendDomNode;\n","const getStringSet = (lang = 'en') => {\n const stringSet = {\n en: {\n TRYING_TO_CONNECT: 'Trying to connect…',\n USER_PROFILE__MESSAGE: 'Message',\n USER_PROFILE__USER_ID: 'User ID',\n EDIT_PROFILE__TITLE: 'My profile',\n EDIT_PROFILE__IMAGE_LABEL: 'Profile image',\n EDIT_PROFILE__IMAGE_UPLOAD: 'Upload',\n EDIT_PROFILE__NICKNAME_LABEL: 'Nickname',\n EDIT_PROFILE__NICKNAME_PLACEHOLDER: 'Enter your nickname',\n EDIT_PROFILE__USERID_LABEL: 'User ID',\n EDIT_PROFILE__THEME_LABEL: 'Dark theme',\n CHANNEL_LIST__TITLE: 'Channels',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER: 'Enter message',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED: 'Chat is unavailable in this channel',\n CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED: 'Chat is unavailable because you are being muted',\n CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE: 'new message(s) since',\n CHANNEL__MESSAGE_LIST__NOTIFICATION__ON: 'on',\n CHANNEL_SETTING__HEADER__TITLE: 'Channel information',\n CHANNEL_SETTING__PROFILE__EDIT: 'Edit',\n CHANNEL_SETTING__MEMBERS__TITLE: 'Members',\n CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS: 'All members',\n CHANNEL_SETTING__MEMBERS__INVITE_MEMBER: 'Invite users',\n CHANNEL_SETTING__LEAVE_CHANNEL__TITLE: 'Leave channel',\n CHANNEL_SETTING__OPERATORS__TITLE: 'Operators',\n CHANNEL_SETTING__OPERATORS__TITLE_ALL: 'All operators',\n CHANNEL_SETTING__OPERATORS__TITLE_ADD: 'Add operator',\n CHANNEL_SETTING__MUTED_MEMBERS__TITLE: 'Muted members',\n CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL: 'All muted members',\n CHANNEL_SETTING__BANNED_MEMBERS__TITLE: 'Banned members',\n CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL: 'All banned members',\n CHANNEL_SETTING__FREEZE_CHANNEL: 'Freeze Channel',\n BUTTON__CANCEL: 'Cancel',\n BUTTON__DELETE: 'Delete',\n BUTTON__SAVE: 'Save',\n BUTTON__CREATE: 'Create',\n BUTTON__INVITE: 'Invite',\n BUTTON__CLOSE: 'Close',\n BADGE__OVER: '+',\n MODAL__DELETE_MESSAGE__TITLE: 'Delete this message?',\n MODAL__CHANNEL_INFORMATION__TITLE: 'Edit channel information',\n MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE: 'Channel image',\n MODAL__CHANNEL_INFORMATION__UPLOAD: 'Upload',\n MODAL__CHANNEL_INFORMATION__CHANNEL_NAME: 'Channel name',\n MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER: 'Enter name',\n MODAL__INVITE_MEMBER__TITLE: 'Invite member',\n MODAL__INVITE_MEMBER__SELECTEC: 'selected',\n MODAL__CREATE_CHANNEL__TITLE: 'New channel',\n MODAL__CREATE_CHANNEL__SELECTED: 'selected',\n MODAL__USER_LIST__TITLE: 'members',\n TYPING_INDICATOR__IS_TYPING: 'is typing...',\n TYPING_INDICATOR__AND: 'and',\n TYPING_INDICATOR__ARE_TYPING: 'are typing...',\n TYPING_INDICATOR__MULTIPLE_TYPING: 'Several people are typing...',\n MESSAGE_STATUS__SENDING_FAILED: 'Couldn\\'t send message.',\n MESSAGE_STATUS__TRY_AGAIN: 'Try again',\n MESSAGE_STATUS__OR: 'or',\n MESSAGE_STATUS__DELETE: 'delete',\n PLACE_HOLDER__NO_CHANNEL: 'No channels',\n CHANNEL_FROZEN: 'Channel frozen',\n MUTED_PL: 'Channel frozen',\n PLACE_HOLDER__WRONG: 'Something went wrong',\n PLACE_HOLDER__RETRY_TO_CONNECT: 'Retry',\n NO_TITLE: 'No title',\n NO_NAME: '(No name)',\n NO_MEMBERS: '(No members)',\n TOOLTIP__AND_YOU: ', and you',\n TOOLTIP__YOU: 'you',\n TOOLTIP__UNKOWN_USER: '(no name)',\n UNKNOWN__UNKNOWN_MESSAGE_TYPE: '(Unknown message type)',\n UNKNOWN__CANNOT_READ_MESSAGE: 'Cannot read this message.',\n MESSAGE_EDITED: '(edited)',\n },\n };\n return stringSet[lang];\n};\n\nexport default getStringSet;\n","import React from 'react';\n\nimport getStringSet from '../ui/Label/stringSet';\n\nconst LocalizationContext = React.createContext({\n stringSet: getStringSet('en'),\n});\n\ninterface LocalizationProviderProps {\n stringSet: Record;\n children: React.Component;\n}\n\nconst LocalizationProvider = (props: LocalizationProviderProps): React.ReactNode => {\n const { children } = props;\n return (\n \n {children}\n \n );\n};\n\nexport { LocalizationContext, LocalizationProvider };\n","import './index.scss';\n\nimport React, { useEffect, useReducer, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { SendbirdSdkContext } from './SendbirdSdkContext';\nimport { handleConnection } from './dux/sdk/thunks';\n\nimport useTheme from './hooks/useTheme';\n\nimport sdkReducers from './dux/sdk/reducers';\nimport userReducers from './dux/user/reducers';\nimport sdkInitialState from './dux/sdk/initialState';\nimport userInitialState from './dux/user/initialState';\n\nimport useOnlineStatus from './hooks/useOnlineStatus';\n\nimport { LoggerFactory } from './Logger';\nimport pubSubFactory from './pubSub/index';\nimport useAppendDomNode from '../hooks/useAppendDomNode';\n\nimport { LocalizationProvider } from './LocalizationContext';\nimport getStringSet from '../ui/Label/stringSet';\n\nexport default function Sendbird(props) {\n const {\n userId,\n appId,\n accessToken,\n children,\n disableUserProfile,\n renderUserProfile,\n allowProfileEdit,\n theme,\n nickname,\n profileUrl,\n userListQuery,\n config = {},\n colorSet,\n stringSet,\n } = props;\n\n const {\n logLevel = '',\n } = config;\n const [logger, setLogger] = useState(LoggerFactory(logLevel));\n const [pubSub, setPubSub] = useState();\n const [sdkStore, sdkDispatcher] = useReducer(sdkReducers, sdkInitialState);\n const [userStore, userDispatcher] = useReducer(userReducers, userInitialState);\n\n useTheme(colorSet);\n\n useEffect(() => {\n setPubSub(pubSubFactory());\n }, []);\n\n useEffect(() => {\n logger.info('App Init');\n // dispatch action\n handleConnection({\n userId,\n appId,\n accessToken,\n sdkStore,\n nickname,\n profileUrl,\n sdk: sdkStore.sdk,\n logger,\n }, {\n sdkDispatcher,\n userDispatcher,\n });\n }, [userId, appId, accessToken]);\n\n // to create a pubsub to communicate between parent and child\n useEffect(() => {\n setLogger(LoggerFactory(logLevel));\n }, [logLevel]);\n\n useAppendDomNode([\n 'sendbird-modal-root',\n 'sendbird-dropdown-portal',\n 'sendbird-emoji-list-portal',\n ], 'body');\n\n // should move to reducer\n const [currenttheme, setCurrenttheme] = useState(theme);\n useEffect(() => {\n setCurrenttheme(theme);\n }, [theme]);\n // add-remove theme from body\n useEffect(() => {\n logger.info('Setup theme', `Theme: ${currenttheme}`);\n try {\n const body = document.querySelector('body');\n body.classList.add(`sendbird-theme--${currenttheme || 'light'}`);\n logger.info('Finish setup theme');\n // eslint-disable-next-line no-empty\n } catch (e) {\n logger.warning('Setup theme failed', `${e}`);\n }\n return () => {\n try {\n const body = document.querySelector('body');\n body.classList.remove('sendbird-theme--light');\n body.classList.remove('sendbird-theme--dark');\n // eslint-disable-next-line no-empty\n } catch { }\n };\n }, [currenttheme]);\n\n const isOnline = useOnlineStatus(sdkStore.sdk, logger);\n\n const localeStringSet = React.useMemo(() => {\n if (!stringSet) {\n return getStringSet('en');\n }\n return {\n ...getStringSet('en'),\n ...stringSet,\n };\n }, [stringSet]);\n\n return (\n {\n handleConnection({\n userId,\n appId,\n accessToken,\n sdkStore,\n nickname,\n profileUrl,\n logger,\n sdk: sdkStore.sdk,\n }, {\n sdkDispatcher,\n userDispatcher,\n });\n },\n },\n config: {\n disableUserProfile,\n renderUserProfile,\n allowProfileEdit,\n isOnline,\n userId,\n appId,\n accessToken,\n theme: currenttheme,\n setCurrenttheme,\n userListQuery,\n logger,\n pubSub,\n },\n }}\n >\n \n {children}\n \n \n );\n}\n\nSendbird.propTypes = {\n userId: PropTypes.string.isRequired,\n appId: PropTypes.string.isRequired,\n accessToken: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n theme: PropTypes.string,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n userListQuery: PropTypes.func,\n config: PropTypes.shape({\n // None Error Warning Info 'All/Debug'\n logLevel: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }),\n stringSet: PropTypes.objectOf(PropTypes.string),\n colorSet: PropTypes.objectOf(PropTypes.string),\n};\n\nSendbird.defaultProps = {\n accessToken: '',\n theme: 'light',\n nickname: '',\n profileUrl: '',\n disableUserProfile: false,\n renderUserProfile: null,\n allowProfileEdit: false,\n userListQuery: null,\n config: {},\n stringSet: null,\n colorSet: null,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst UserProfileContext = React.createContext({\n disableUserProfile: true,\n renderUserProfile: null,\n});\n\nconst UserProfileProvider = (props) => {\n const { children, className } = props;\n return (\n \n \n {children}\n
\n \n );\n};\n\nUserProfileProvider.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n disableUserProfile: PropTypes.bool,\n // eslint-disable-next-line react/no-unused-prop-types\n renderUserProfile: PropTypes.func,\n className: PropTypes.string,\n};\n\nUserProfileProvider.defaultProps = {\n className: null,\n disableUserProfile: false,\n renderUserProfile: null,\n};\n\nexport { UserProfileContext, UserProfileProvider };\n","export const RESET_CHANNEL_LIST = 'RESET_CHANNEL_LIST';\nexport const CREATE_CHANNEL = 'CREATE_CHANNEL';\nexport const UNLOAD_CHANNELS = 'UNLOAD_CHANNELS';\nexport const SET_CHANNEL_LOADING = 'SET_CHANNEL_LOADING';\nexport const LEAVE_CHANNEL_SUCCESS = 'LEAVE_CHANNEL_SUCCESS';\n\nexport const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\n\nexport const SHOW_CHANNEL_SETTINGS = 'SHOW_CHANNEL_SETTINGS';\nexport const HIDE_CHANNEL_SETTINGS = 'HIDE_CHANNEL_SETTINGS';\n\nexport const FETCH_CHANNELS_START = 'FETCH_CHANNELS_START';\nexport const FETCH_CHANNELS_SUCCESS = 'FETCH_CHANNELS_SUCCESS';\nexport const FETCH_CHANNELS_FAILURE = 'FETCH_CHANNELS_FAILURE';\n\nexport const INIT_CHANNELS_START = 'INIT_CHANNELS_START';\nexport const INIT_CHANNELS_SUCCESS = 'INIT_CHANNELS_SUCCESS';\nexport const INIT_CHANNELS_FAILURE = 'INIT_CHANNELS_FAILURE';\n\nexport const INVITE_MEMBERS_SUCESS = 'INVITE_MEMBERS_SUCESS';\n\nexport const ON_USER_JOINED = 'ON_USER_JOINED';\nexport const ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';\nexport const ON_LAST_MESSAGE_UPDATED = 'ON_LAST_MESSAGE_UPDATED';\nexport const ON_USER_LEFT = 'ON_USER_LEFT';\nexport const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';\nexport const ON_CHANNEL_ARCHIVED = 'ON_CHANNEL_ARCHIVED';\nexport const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';\nexport const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';\n\nexport const ON_READ_RECEIPT_UPDATED = 'ON_READ_RECEIPT_UPDATED';\nexport const ON_DELIVERY_RECEIPT_UPDATED = 'ON_DELIVERY_RECEIPT_UPDATED';\n\nexport const CHANNEL_REPLACED_TO_TOP = 'CHANNEL_REPLACED_TO_TOP';\n","export default {\n // we might not need this initialized state -> should remove\n initialized: false,\n loading: false,\n allChannels: [],\n currentChannel: null,\n showSettings: false,\n};\n","import * as actions from './actionTypes';\nimport initialState from './initialState';\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actions.INIT_CHANNELS_START:\n return {\n ...state,\n loading: true,\n };\n case actions.RESET_CHANNEL_LIST:\n return initialState;\n case actions.INIT_CHANNELS_SUCCESS:\n return {\n ...state,\n initialized: true,\n loading: false,\n allChannels: action.payload,\n currentChannel: (action.payload && action.payload.length && action.payload.length > 0)\n ? action.payload[0].url\n : null,\n };\n case actions.FETCH_CHANNELS_SUCCESS: {\n const currentChannels = state.allChannels.map((c) => c.url);\n const filteredChannels = action.payload.filter(\n ({ url }) => !(currentChannels.find((c) => c === url)),\n );\n return {\n ...state,\n allChannels: [\n ...state.allChannels,\n ...filteredChannels,\n ],\n };\n }\n case actions.CREATE_CHANNEL: {\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter(\n (channel) => channel.url !== action.payload.url,\n )],\n currentChannel: action.payload.url,\n };\n }\n case actions.ON_CHANNEL_ARCHIVED:\n case actions.LEAVE_CHANNEL_SUCCESS:\n case actions.ON_CHANNEL_DELETED: {\n const channelUrl = action.payload;\n const leftCurrentChannel = (state.currentChannel === channelUrl);\n const newAllChannels = state.allChannels.filter(({ url }) => url !== channelUrl);\n const currentChannel = leftCurrentChannel\n ? (() => (\n (newAllChannels.length > 0)\n ? newAllChannels[0].url\n : ''\n ))()\n : state.currentChannel;\n\n return {\n ...state,\n currentChannel,\n allChannels: newAllChannels,\n };\n }\n case actions.ON_USER_LEFT: {\n const { channel, isMe } = action.payload;\n const { url } = channel;\n if (isMe) {\n const leftCurrentChannel = (url === state.currentChannel);\n const newAllChannels = state.allChannels.filter((c) => (c.url !== url));\n const currentChannel = leftCurrentChannel\n ? (() => (\n (newAllChannels.length > 0)\n ? newAllChannels[0].url\n : ''\n ))()\n : state.currentChannel;\n\n return {\n ...state,\n currentChannel,\n allChannels: newAllChannels,\n };\n }\n // other user left\n const newAllChannels = state.allChannels.map((c) => ((c.url === url) ? channel : c));\n return {\n ...state,\n allChannels: newAllChannels,\n };\n }\n case actions.ON_USER_JOINED:\n case actions.ON_CHANNEL_CHANGED:\n case actions.ON_READ_RECEIPT_UPDATED:\n case actions.ON_DELIVERY_RECEIPT_UPDATED: {\n const { allChannels = [] } = state;\n const { unreadMessageCount } = action.payload;\n const channel = action.payload;\n if (!channel.lastMessage) {\n return state;\n }\n // if its only an unread message count change, dont push to top\n if (unreadMessageCount === 0) {\n const currentChannel = allChannels.find(({ url }) => url === channel.url);\n const currentUnReadCount = currentChannel && currentChannel.unreadMessageCount;\n if (currentUnReadCount === 0) {\n return {\n ...state,\n allChannels: allChannels.map((c) => {\n if (c.url === channel.url) {\n return channel;\n }\n return c;\n }),\n };\n }\n }\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter(({ url }) => url !== action.payload.url),\n ],\n };\n }\n case actions.SET_CURRENT_CHANNEL:\n return {\n ...state,\n currentChannel: action.payload,\n };\n case actions.SHOW_CHANNEL_SETTINGS:\n return {\n ...state,\n showSettings: true,\n };\n case actions.HIDE_CHANNEL_SETTINGS:\n return {\n ...state,\n showSettings: false,\n };\n case actions.ON_LAST_MESSAGE_UPDATED:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n return action.payload;\n }\n return channel;\n }),\n };\n case actions.ON_CHANNEL_FROZEN:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n // eslint-disable-next-line no-param-reassign\n channel.isFrozen = true;\n return channel;\n }\n return channel;\n }),\n };\n case actions.ON_CHANNEL_UNFROZEN:\n return {\n ...state,\n allChannels: state.allChannels.map((channel) => {\n if (channel.url === action.payload.url) {\n // eslint-disable-next-line no-param-reassign\n channel.isFrozen = false;\n return channel;\n }\n return channel;\n }),\n };\n case actions.CHANNEL_REPLACED_TO_TOP:\n return {\n ...state,\n allChannels: [\n action.payload,\n ...state.allChannels.filter((channel) => channel.url !== action.payload.url),\n ],\n };\n default:\n return state;\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\n/*\n ImageRenderer displays image with url or source\n it checks if the source exist with img tag first\n if it exists onLoad is called, if not onError is called\n and those properties switch img tag to real purposing element\n*/\n\nexport default function ImageRenderer({\n alt,\n url,\n width,\n height,\n className,\n defaultComponent,\n circle,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift('sendbird-image-renderer');\n const [realElement, setRealElement] = useState(null);\n useEffect(() => {\n setRealElement(null);\n }, [url]);\n return (\n realElement || (\n {\n setRealElement(typeof defaultComponent === 'function' ? defaultComponent() : defaultComponent);\n }}\n onLoad={() => {\n setRealElement((\n
\n ));\n }}\n />\n )\n );\n}\n\nImageRenderer.propTypes = {\n alt: PropTypes.string,\n url: PropTypes.string.isRequired,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).isRequired,\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.string,\n ]),\n defaultComponent: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]).isRequired,\n circle: PropTypes.bool,\n};\nImageRenderer.defaultProps = {\n alt: '',\n className: '',\n circle: false,\n};\n","export default {\n ADD: 'ADD',\n ATTACH: 'ATTACH',\n ARROW_LEFT: 'ARROW_LEFT',\n AVATAR_DARK: 'AVATAR_DARK',\n AVATAR_LIGHT: 'AVATAR_LIGHT',\n BROADCAST_LARGE_DARK: 'BROADCAST_LARGE_DARK',\n BROADCAST_LARGE_LIGHT: 'BROADCAST_LARGE_LIGHT',\n BROADCAST_DARK: 'BROADCAST_DARK',\n BROADCAST_LIGHT: 'BROADCAST_LIGHT',\n BROADCAST: 'BROADCAST',\n FROZEN_DARK: 'FROZEN_DARK',\n FROZEN_LIGHT: 'FROZEN_LIGHT',\n CAMERA: 'CAMERA',\n MORE: 'MORE',\n MUTE: 'MUTE',\n NO_THUMBNAIL: 'NO_THUMBNAIL',\n CHECKBOX: 'CHECKBOX',\n CHECKBOX_OFF: 'CHECKBOX_OFF',\n CLOSE: 'CLOSE',\n COPY: 'COPY',\n CHAT: 'CHAT',\n CREATE: 'CREATE',\n DELETE: 'DELETE',\n DISCONNECTED: 'DISCONNECTED',\n DUMMY: 'DUMMY',\n EDIT: 'EDIT',\n ERROR: 'ERROR',\n ERROR_FILLED: 'ERROR_FILLED',\n EMOJI_FAILED: 'EMOJI_FAILED',\n EMOJI_REACTIONS_ADD: 'EMOJI_REACTIONS_ADD',\n EMOJI_REACTIONS_ADD_GRAY: 'EMOJI_REACTIONS_ADD_GRAY',\n DELIVERED: 'DELIVERED',\n DOCUMENT: 'DOCUMENT',\n DOWNLOAD: 'DOWNLOAD',\n FILE_AUDIO: 'FILE_AUDIO',\n FILE_DOCUMENT: 'FILE_DOCUMENT',\n GIF: 'GIF',\n INFO: 'INFO',\n LEAVE: 'LEAVE',\n MEMBERS: 'MEMBERS',\n NOTIFICATIONS: 'NOTIFICATIONS',\n PHOTO: 'PHOTO',\n PLAY: 'PLAY',\n PLUS: 'PLUS',\n READ: 'READ',\n REFRESH: 'REFRESH',\n SEND: 'SEND',\n SENT: 'SENT',\n SUPER_GROUP: 'SUPER_GROUP',\n SHEVRON: 'SHEVRON',\n SHEVRON_DOWN: 'SHEVRON_DOWN',\n SPINNER: 'SPINNER',\n SPINNER_LARGE: 'SPINNER_LARGE',\n USER: 'USER',\n ICON_OPERATOR: 'ICON_OPERATOR',\n ICON_BANNED: 'ICON_BANNED',\n ICON_FREEZE: 'ICON_FREEZE',\n ICON_MUTED: 'ICON_MUTED',\n ICON_MUTED_FG: 'ICON_MUTED_FG',\n TOGGLE_ON: 'TOGGLE_ON',\n TOGGLE_OFF: 'TOGGLE_OFF',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Type from './type';\n\nimport IconAdd from '../../svgs/icon-add.svg';\nimport IconAttach from '../../svgs/icon-attach.svg';\nimport IconArrowLeft from '../../svgs/icon-arrow-left.svg';\nimport IconAvatarDark from '../../svgs/icon-avatar-dark.svg';\nimport IconAvatarLight from '../../svgs/icon-avatar-light.svg';\nimport BroadcastLargeDark from '../../svgs/icon-broadcast-lrg-dark.svg';\nimport BroadcastLargeLight from '../../svgs/icon-broadcast-lrg-light.svg';\nimport BroadcastDark from '../../svgs/icon-broadcast-dark.svg';\nimport BroadcastLight from '../../svgs/icon-broadcast-light.svg';\nimport Broadcast from '../../svgs/icon-broadcast.svg';\nimport FrozenDark from '../../svgs/frozen-dark.svg';\nimport FrozenLight from '../../svgs/frozen-light.svg';\nimport IconCamera from '../../svgs/icon-camera.svg';\nimport IconMore from '../../svgs/icon-more.svg';\nimport IconMute from '../../svgs/icon-mute.svg';\nimport IconNoThumbnail from '../../svgs/icon-no-thumbnail.svg';\nimport IconCheckbox from '../../svgs/icon-checkbox.svg';\nimport IconCheckboxOff from '../../svgs/icon-checkbox-off.svg';\nimport IconClose from '../../svgs/icon-close.svg';\nimport IconCopy from '../../svgs/icon-copy.svg';\nimport IconChat from '../../svgs/icon-chat.svg';\nimport IconSupergroup from '../../svgs/icon-supergroup.svg';\nimport IconCreate from '../../svgs/icon-create.svg';\nimport IconDelete from '../../svgs/icon-delete.svg';\nimport IconDummy from '../../svgs/icon-dummy.svg';\nimport IconEdit from '../../svgs/icon-edit.svg';\nimport IconError from '../../svgs/icon-error.svg';\nimport IconErrorFilled from '../../svgs/icon-error-filled.svg';\nimport IconEmojiFailed from '../../svgs/emoji-fail.svg';\nimport IconEmojiReactionsAdd from '../../svgs/icon-reactions-add.svg';\nimport IconEmojiReactionsAddGray from '../../svgs/icon-emoji-reactions-add.svg';\nimport IconDelivered from '../../svgs/icon-delivered.svg';\nimport IconDisconnected from '../../svgs/icon-disconnected.svg';\nimport IconDocument from '../../svgs/icon-document.svg';\nimport IconDownload from '../../svgs/icon-download.svg';\nimport IconFileAudio from '../../svgs/icon-file-audio.svg';\nimport IconFileDocument from '../../svgs/icon-file-document.svg';\nimport IconGif from '../../svgs/icon-gif.svg';\nimport IconInfo from '../../svgs/icon-info.svg';\nimport IconLeave from '../../svgs/icon-leave.svg';\nimport IconMembers from '../../svgs/icon-members.svg';\nimport IconNotifications from '../../svgs/icon-notifications.svg';\nimport IconPhoto from '../../svgs/icon-photo.svg';\nimport IconPlay from '../../svgs/icon-play.svg';\nimport IconPlus from '../../svgs/icon-plus.svg';\nimport IconRead from '../../svgs/icon-read.svg';\nimport IconRefresh from '../../svgs/icon-refresh.svg';\nimport IconSend from '../../svgs/icon-send.svg';\nimport IconSent from '../../svgs/icon-sent.svg';\nimport IconShevron from '../../svgs/icon-shevron.svg';\nimport IconShevronDown from '../../svgs/icon-shevron-down.svg';\nimport IconSpinner from '../../svgs/icon-spinner-small.svg';\nimport IconSpinnerLarge from '../../svgs/icon-spinner-large.svg';\nimport IconUser from '../../svgs/icon-user.svg';\nimport IconOperator from '../../svgs/icon-operator.svg';\nimport IconBanned from '../../svgs/icon-banned.svg';\nimport IconMuted from '../../svgs/icon-muted.svg';\nimport IconMutedFg from '../../svgs/icon-muted-foreground.svg';\nimport IconFreeze from '../../svgs/icon-freeze.svg';\nimport ToggleOn from '../../svgs/icon-toggleon.svg';\nimport ToggleOff from '../../svgs/icon-toggleoff.svg';\n\nconst Colors = {\n DEFAULT: 'DEFAULT',\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n CONTENT: 'CONTENT',\n CONTENT_INVERSE: 'CONTENT_INVERSE',\n WHITE: 'WHITE',\n SENT: 'SENT',\n READ: 'READ',\n ON_BACKGROUND_3: 'ON_BACKGROUND_3',\n};\n\nfunction changeColorToClassName(color) {\n switch (color) {\n case Colors.PRIMARY: return 'sendbird-color--primary';\n case Colors.SECONDARY: return 'sendbird-color--secondary';\n case Colors.CONTENT: return 'sendbird-color--content';\n case Colors.CONTENT_INVERSE: return 'sendbird-color--content-inverse';\n case Colors.WHITE: return 'sendbird-color--white';\n case Colors.SENT: return 'sendbird-color--sent';\n case Colors.READ: return 'sendbird-color--read';\n case Colors.ON_BACKGROUND_3: return 'sendbird-color--on-background';\n default: return '';\n }\n}\n\nfunction changeTypeToIconComponent(type) {\n switch (type) {\n case Type.ADD: return ;\n case Type.ARROW_LEFT: return ;\n case Type.CAMERA: return ;\n case Type.ATTACH: return ;\n case Type.AVATAR_DARK: return ;\n case Type.AVATAR_LIGHT: return ;\n case Type.BROADCAST_LARGE_DARK: return ;\n case Type.BROADCAST_LARGE_LIGHT: return ;\n case Type.BROADCAST_DARK: return ;\n case Type.BROADCAST_LIGHT: return ;\n case Type.BROADCAST: return ;\n case Type.FROZEN_DARK: return ;\n case Type.FROZEN_LIGHT: return ;\n case Type.MORE: return ;\n case Type.MUTE: return ;\n case Type.NO_THUMBNAIL: return ;\n case Type.CHECKBOX: return ;\n case Type.CHECKBOX_OFF: return ;\n case Type.CLOSE: return ;\n case Type.COPY: return ;\n case Type.CHAT: return ;\n case Type.SUPER_GROUP: return ;\n case Type.CREATE: return ;\n case Type.DELETE: return ;\n case Type.DISCONNECTED: return ;\n case Type.DUMMY: return ;\n case Type.EDIT: return ;\n case Type.ERROR: return ;\n case Type.ERROR_FILLED: return ;\n case Type.EMOJI_FAILED: return ;\n case Type.EMOJI_REACTIONS_ADD: return ;\n case Type.EMOJI_REACTIONS_ADD_GRAY: return ;\n case Type.DELIVERED: return ;\n case Type.DOCUMENT: return ;\n case Type.DOWNLOAD: return ;\n case Type.FILE_AUDIO: return ;\n case Type.FILE_DOCUMENT: return ;\n case Type.GIF: return ;\n case Type.INFO: return ;\n case Type.LEAVE: return ;\n case Type.MEMBERS: return ;\n case Type.NOTIFICATIONS: return ;\n case Type.PHOTO: return ;\n case Type.PLAY: return ;\n case Type.PLUS: return ;\n case Type.READ: return ;\n case Type.REFRESH: return ;\n case Type.SEND: return ;\n case Type.SENT: return ;\n case Type.SHEVRON: return ;\n case Type.SHEVRON_DOWN: return ;\n case Type.SPINNER: return ;\n case Type.SPINNER_LARGE: return ;\n case Type.USER: return ;\n case Type.ICON_OPERATOR: return ;\n case Type.ICON_BANNED: return ;\n case Type.ICON_MUTED: return ;\n case Type.ICON_MUTED_FG: return ;\n case Type.ICON_FREEZE: return ;\n case Type.TOGGLE_ON: return ;\n case Type.TOGGLE_OFF: return ;\n default: return null;\n }\n}\n\nexport default function Icon({\n type,\n width,\n height,\n children,\n className,\n onClick,\n fillColor,\n}) {\n const iconStyle = {\n width: typeof width === 'string' ? width : `${width}px`,\n height: typeof height === 'string' ? height : `${height}px`,\n };\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {\n children || changeTypeToIconComponent(type)\n }\n
\n );\n}\n\nIcon.propTypes = {\n type: PropTypes.oneOfType([\n PropTypes.oneOf(Object.keys(Type)),\n PropTypes.string,\n ]).isRequired,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n onClick: PropTypes.func,\n children: PropTypes.element,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n fillColor: PropTypes.oneOf(Object.keys(Colors)),\n};\n\nIcon.defaultProps = {\n onClick: () => { },\n width: 26,\n height: 26,\n children: null,\n className: '',\n fillColor: Colors.DEFAULT,\n};\n\nexport const IconTypes = Type;\nexport const IconColors = Colors;\n","import React, { ReactElement } from 'react';\n\nimport ImageRenderer from '../ImageRenderer';\nimport Icon, { IconTypes } from '../Icon';\n\nimport './index.scss';\nimport { uuidv4 } from '../../utils/uuid';\n\nconst imageRendererClassName = 'sendbird-avatar-img';\n\ninterface DefaultComponentProps {\n width: string | number,\n height: string | number,\n}\n\nconst defaultComponent = (\n {\n width,\n height,\n }: DefaultComponentProps\n) => (): ReactElement => (\n document.querySelector('.sendbird-theme--dark')\n ? \n : \n);\n\ninterface AvatarInnerProps {\n height: string | number,\n width: string | number,\n src?: string | string[],\n alt?: string,\n}\n\nexport const AvatarInner = ({\n src = '',\n alt = '',\n height,\n width,\n}: AvatarInnerProps): ReactElement => {\n if (typeof src === 'string') {\n return (\n \n );\n }\n\n if (src && src.length) {\n if (src.length === 1) {\n return (\n \n );\n }\n\n if (src.length === 2) {\n return (\n \n \n \n
\n );\n }\n\n if (src.length === 3) {\n return (\n <>\n \n \n
\n \n \n \n
\n >\n );\n }\n\n return (\n \n {\n src.slice(0, 4)\n .map((i) => (\n \n ))\n }\n
\n );\n }\n // default img\n return (\n \n );\n};\n\ninterface AvatarProps {\n height?: string | number,\n width?: string | number,\n src?: string | string[],\n alt?: string,\n onClick?(): void,\n className?: string | string[],\n}\n\nfunction Avatar(\n {\n src = '',\n alt = '',\n width = '56px',\n height = '56px',\n onClick,\n className = '',\n }: AvatarProps,\n ref: React.Ref,\n): ReactElement {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n );\n}\n\nexport default React.forwardRef(Avatar);\n","import { SendbirdTypes } from \"../../types\";\n\nexport const DEFAULT_URL_PREFIX = 'https://static.sendbird.com/sample/cover/cover_';\n\nexport const getChannelAvatarSource = (channel: SendbirdTypes[\"GroupChannel\"], currentUserId: string): string | string[] => {\n if (channel && channel.coverUrl) {\n if (!(new RegExp(`^${DEFAULT_URL_PREFIX}`).test(channel.coverUrl))) {\n return channel.coverUrl;\n }\n }\n\n return channel && channel.members\n ? channel.members\n .filter((member) => member.userId !== currentUserId)\n .map(({ profileUrl }) => profileUrl)\n : [];\n};\n\n\nexport const useDefaultAvatar = (channel: SendbirdTypes[\"GroupChannel\"]): boolean => {\n if (channel && channel.coverUrl) {\n if (new RegExp(`^${DEFAULT_URL_PREFIX}`).test(channel.coverUrl)) {\n return true;\n }\n return false;\n }\n return true;\n}\n","import React, { useMemo } from 'react';\n\nimport { SendbirdTypes } from '../../types';\nimport Avatar from '../Avatar/index';\nimport Icon, { IconTypes } from '../Icon';\n\nimport * as utils from './utils';\n\ninterface Props {\n channel: SendbirdTypes[\"GroupChannel\"];\n userId: string;\n theme: string;\n height: number,\n width: number,\n}\n\nfunction ChannelAvatar({\n channel,\n userId,\n theme,\n height = 56,\n width = 56,\n}: Props): JSX.Element{\n const { isBroadcast } = channel;\n const memoizedAvatar = useMemo(() => (\n isBroadcast\n ? (\n utils.useDefaultAvatar(channel)\n ? (\n theme === 'dark'\n ? (\n \n )\n : (\n \n )\n )\n : (\n \n )\n )\n : (\n \n )\n ),[channel.members, channel.coverUrl, theme]);\n return (\n <>{ memoizedAvatar }>\n );\n}\n\nexport default ChannelAvatar;\n","export const Typography = {\n H_1: 'H_1',\n H_2: 'H_2',\n SUBTITLE_1: 'SUBTITLE_1',\n SUBTITLE_2: 'SUBTITLE_2',\n BODY_1: 'BODY_1',\n BODY_2: 'BODY_2',\n BUTTON_1: 'BUTTON_1',\n BUTTON_2: 'BUTTON_2',\n CAPTION_1: 'CAPTION_1',\n CAPTION_2: 'CAPTION_2',\n CAPTION_3: 'CAPTION_3',\n};\n\nexport const Colors = {\n ONBACKGROUND_1: 'ONBACKGROUND_1',\n ONBACKGROUND_2: 'ONBACKGROUND_2',\n ONBACKGROUND_3: 'ONBACKGROUND_3',\n ONCONTENT_1: 'ONCONTENT_1',\n ONCONTENT_2: 'ONCONTENT_2',\n PRIMARY: 'PRIMARY',\n ERROR: 'ERROR',\n};\n","import { Typography, Colors } from './types';\n\nexport function changeTypographyToClassName(type) {\n switch (type) {\n case Typography.H_1: return 'sendbird-label--h-1';\n case Typography.H_2: return 'sendbird-label--h-2';\n case Typography.SUBTITLE_1: return 'sendbird-label--subtitle-1';\n case Typography.SUBTITLE_2: return 'sendbird-label--subtitle-2';\n case Typography.BODY_1: return 'sendbird-label--body-1';\n case Typography.BODY_2: return 'sendbird-label--body-2';\n case Typography.BUTTON_1: return 'sendbird-label--button-1';\n case Typography.BUTTON_2: return 'sendbird-label--button-2';\n case Typography.CAPTION_1: return 'sendbird-label--caption-1';\n case Typography.CAPTION_2: return 'sendbird-label--caption-2';\n case Typography.CAPTION_3: return 'sendbird-label--caption-3';\n default: return null;\n }\n}\n\nexport function changeColorToClassName(color) {\n switch (color) {\n case Colors.ONBACKGROUND_1: return 'sendbird-label--color-onbackground-1';\n case Colors.ONBACKGROUND_2: return 'sendbird-label--color-onbackground-2';\n case Colors.ONBACKGROUND_3: return 'sendbird-label--color-onbackground-3';\n case Colors.ONCONTENT_1: return 'sendbird-label--color-oncontent-1';\n case Colors.ONCONTENT_2: return 'sendbird-label--color-oncontent-2';\n case Colors.PRIMARY: return 'sendbird-label--color-primary';\n case Colors.ERROR: return 'sendbird-label--color-error';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { Typography, Colors } from './types';\nimport { changeTypographyToClassName, changeColorToClassName } from './utils';\nimport getStringSet from './stringSet';\n\nconst CLASS_NAME = 'sendbird-label';\n\nexport default function Label({\n type,\n color,\n children,\n className,\n}) {\n const injectingClassName = (Array.isArray(className))\n ? [CLASS_NAME, ...className]\n : [CLASS_NAME, className];\n if (type) {\n injectingClassName.push(changeTypographyToClassName(type));\n }\n if (color) {\n injectingClassName.push(changeColorToClassName(color));\n }\n\n return (\n \n {children}\n \n );\n}\n\nLabel.propTypes = {\n type: PropTypes.oneOf([...Object.keys(Typography), '']),\n color: PropTypes.oneOf([...Object.keys(Colors), '']),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.element,\n PropTypes.any,\n ]),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nLabel.defaultProps = {\n type: '',\n color: '',\n className: [],\n children: null,\n};\n\nconst LabelTypography = Typography;\nconst LabelColors = Colors;\nconst LabelStringSet = getStringSet('en');\nexport { LabelTypography, LabelColors, LabelStringSet };\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nexport default function Badge({\n count,\n maxLevel,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const maximumNumber = parseInt('9'.repeat((maxLevel > 6) ? 6 : maxLevel), 10);\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n
\n \n {\n (count > maximumNumber)\n ? `${maximumNumber}${stringSet.BADGE__OVER}`\n : count\n }\n \n
\n
\n );\n}\n\nBadge.propTypes = {\n count: PropTypes.number.isRequired,\n maxLevel: PropTypes.number,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nBadge.defaultProps = {\n maxLevel: 2,\n className: [],\n};\n","const MessageStatusType = {\n PENDING: 'PENDING',\n SENT: 'SENT',\n DELIVERED: 'DELIVERED',\n READ: 'READ',\n FAILED: 'FAILED',\n};\n\nexport default MessageStatusType;\n","import MessageStatusType from '../MessageStatus/type';\n\nexport const truncate = (fullStr, strLen) => {\n if (fullStr === null || fullStr === undefined) return '';\n if (fullStr.length <= strLen) return fullStr;\n const separator = '...';\n const sepLen = separator.length;\n const charsToShow = strLen - sepLen;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n};\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport default {\n truncate,\n getIsSentFromStatus,\n};\n","import isToday from 'date-fns/isToday';\nimport format from 'date-fns/format';\nimport isYesterday from 'date-fns/isYesterday';\n\nimport { truncate } from '../FileMessage/utils';\nimport { LabelStringSet } from '../Label';\n\nexport const getChannelTitle = (channel = {}, currentUserId, stringSet = LabelStringSet) => {\n if (!channel || (!channel.name && !channel.members)) {\n return stringSet.NO_TITLE;\n }\n if (channel.name && channel.name !== 'Group Channel') {\n return channel.name;\n }\n if (channel.members.length === 1) {\n return stringSet.NO_MEMBERS;\n }\n\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => (nickname || stringSet.NO_NAME))\n .join(', ');\n};\n\nexport const getLastMessageCreatedAt = (channel) => {\n if (!channel || !channel.lastMessage) {\n return '';\n }\n const date = channel.lastMessage.createdAt;\n if (isToday(date)) {\n return format(date, 'p');\n }\n\n if (isYesterday(date)) {\n return 'Yesterday';\n }\n\n return format(date, 'MMM dd');\n};\n\nexport const getTotalMembers = (channel) => (\n channel && channel.memberCount\n ? channel.memberCount\n : 0\n);\n\nconst getPrettyLastMessage = (message = {}) => {\n const MAXLEN = 30;\n const { messageType, name } = message;\n if (messageType === 'file') {\n return truncate(name, MAXLEN);\n }\n return message.message;\n};\n\nexport const getLastMessage = (channel) => (\n channel && channel.lastMessage\n ? getPrettyLastMessage(channel.lastMessage)\n : ''\n);\n\nexport const getChannelUnreadMessageCount = (channel) => (\n (channel && channel.unreadMessageCount)\n ? channel.unreadMessageCount\n : 0\n);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport ChannelAvatar from '../ChannelAvatar/index';\nimport Badge from '../Badge';\nimport Icon, { IconTypes } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport * as utils from './utils';\n\nexport default function ChannelPreview({\n channel,\n isActive,\n ChannelAction,\n theme,\n onClick,\n tabIndex,\n currentUser,\n}) {\n const {\n userId,\n } = currentUser;\n const { isBroadcast, isFrozen } = channel;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n \n
\n
\n
\n
\n {\n isBroadcast\n && (\n
\n \n
\n )\n }\n
\n {utils.getChannelTitle(channel, userId, stringSet)}\n \n
\n {utils.getTotalMembers(channel)}\n \n {\n isFrozen\n && (\n
\n \n
\n )\n }\n
\n
\n {utils.getLastMessageCreatedAt(channel)}\n \n
\n\n
\n
\n {utils.getLastMessage(channel)}\n \n
\n {\n utils.getChannelUnreadMessageCount(channel)\n ? \n : null\n }\n
\n
\n
\n
\n {ChannelAction}\n
\n
\n );\n}\n\nChannelPreview.propTypes = {\n isActive: PropTypes.bool,\n theme: PropTypes.string,\n channel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n coverUrl: PropTypes.string,\n isBroadcast: PropTypes.bool,\n isFrozen: PropTypes.bool,\n }),\n ChannelAction: PropTypes.element.isRequired,\n onClick: PropTypes.func,\n tabIndex: PropTypes.number,\n currentUser: PropTypes.shape({\n userId: PropTypes.string,\n }),\n};\n\nChannelPreview.defaultProps = {\n channel: {},\n isActive: false,\n theme: 'light',\n onClick: () => { },\n tabIndex: 0,\n currentUser: {},\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst CLASS_NAME = 'sendbird-iconbutton';\n\nconst IconButton = React.forwardRef((props, ref) => {\n const {\n children,\n className,\n disabled = false,\n type,\n height,\n width,\n onClick,\n onBlur,\n } = props;\n\n const [pressed, setPressed] = useState('');\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n\n return (\n // eslint-disable-next-line react/button-has-type\n {\n if (disabled) { return; }\n setPressed('sendbird-iconbutton--pressed');\n onClick(e);\n }}\n onBlur={(e) => {\n setPressed('');\n onBlur(e);\n }}\n >\n \n {children}\n \n \n );\n});\n\nIconButton.propTypes = {\n height: PropTypes.string,\n width: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.any,\n ]).isRequired,\n type: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n onBlur: PropTypes.func,\n};\n\nIconButton.defaultProps = {\n height: '56px',\n width: '56px',\n className: '',\n type: 'button',\n disabled: false,\n onClick: () => { },\n onBlur: () => { },\n};\n\nexport default IconButton;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport IconButton from '../IconButton';\n\nimport './index.scss';\nimport Avatar from '../Avatar/index';\n\nexport default function ChannelHeader({\n user,\n iconButton,\n onEdit,\n renderHeader,\n allowProfileEdit,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n {\n renderHeader\n ? renderHeader()\n : (\n
\n
\n
\n \n {user.nickname || stringSet.NO_NAME}\n \n \n {user.userId}\n \n
\n
\n )\n }\n
\n {iconButton}\n
\n
\n );\n}\n\nChannelHeader.propTypes = {\n user: PropTypes.shape({\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n userId: PropTypes.string,\n }),\n renderHeader: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n onEdit: PropTypes.func.isRequired,\n iconButton: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.instanceOf(IconButton),\n ]),\n};\n\nChannelHeader.defaultProps = {\n user: {},\n renderHeader: null,\n allowProfileEdit: false,\n iconButton: null,\n};\n","// simple component to be used as modal root\nimport React from 'react';\n\nexport const MODAL_ROOT = 'sendbird-modal-root';\n\nexport default () => (\n
\n);\n","export const Type = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n DANGER: 'DANGER',\n DISABLED: 'DISABLED',\n};\n\nexport const Size = {\n BIG: 'BIG',\n SMALL: 'SMALL',\n};\n","import { Type, Size } from './type';\n\nexport function changeTypeToClassName(type) {\n switch (type) {\n case Type.PRIMARY: return 'sendbird-button--primary';\n case Type.SECONDARY: return 'sendbird-button--secondary';\n case Type.DANGER: return 'sendbird-button--danger';\n case Type.DISABLED: return 'sendbird-button--disabled';\n default: return null;\n }\n}\n\nexport function changeSizeToClassName(size) {\n switch (size) {\n case Size.BIG: return 'sendbird-button--big';\n case Size.SMALL: return 'sendbird-button--small';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { Type, Size } from './type';\nimport { changeTypeToClassName, changeSizeToClassName } from './utils';\n\nexport default function Button({\n type,\n size,\n children,\n disabled,\n onClick,\n className,\n}) {\n const injectingClassNames = [\n 'sendbird-button',\n (disabled ? 'sendbird-button__disabled' : ''),\n changeTypeToClassName(type),\n changeSizeToClassName(size),\n ...((Array.isArray(className)) ? className : [className]),\n ].join(' ');\n\n return (\n \n \n {children}\n \n \n );\n}\n\nButton.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]),\n disabled: PropTypes.bool,\n type: PropTypes.oneOf(Object.keys(Type)),\n size: PropTypes.oneOf(Object.keys(Size)),\n onClick: PropTypes.func,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nButton.defaultProps = {\n children: 'Button',\n type: Type.PRIMARY,\n disabled: false,\n size: Size.BIG,\n onClick: () => { },\n className: '',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\n\nimport './index.scss';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { MODAL_ROOT } from '../../hooks/useModal/ModalRoot';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Button from '../Button';\nimport { Type as ButtonTypes } from '../Button/type';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nexport const ModalHeader = ({ titleText }) => (\n \n \n {titleText}\n \n
\n);\nModalHeader.propTypes = {\n titleText: PropTypes.string.isRequired,\n};\n\nexport const ModalBody = ({ children }) => (\n {children}
\n);\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element.isRequired,\n PropTypes.arrayOf(PropTypes.element.isRequired),\n ]),\n};\nModalBody.defaultProps = {\n children: null,\n};\n\nexport const ModalFooter = ({\n onSubmit,\n onCancel,\n disabled = false,\n submitText,\n type,\n}) => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n \n {stringSet.BUTTON__CANCEL}\n \n \n \n {submitText}\n \n
\n );\n};\n\nModalFooter.propTypes = {\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n submitText: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\nModalFooter.defaultProps = {\n disabled: false,\n type: ButtonTypes.DANGER,\n};\n\nfunction Modal(props) {\n const {\n children,\n onCancel,\n onSubmit,\n disabled,\n submitText,\n titleText,\n hideFooter,\n type,\n } = props;\n return createPortal((\n \n
\n
\n
{children} \n {\n !hideFooter && (\n
\n )\n }\n
\n \n \n \n
\n
\n
\n
\n ), document.getElementById(MODAL_ROOT));\n}\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]),\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n hideFooter: PropTypes.bool,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\nModal.defaultProps = {\n children: null,\n hideFooter: false,\n disabled: false,\n type: ButtonTypes.DANGER,\n};\n\nexport default Modal;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport './index.scss';\n\nexport const InputLabel = ({ children }) => (\n \n {children}\n \n);\n\nInputLabel.propTypes = {\n children: PropTypes.string.isRequired,\n};\n\n// future: add validations? onChange? more props etc etc\nconst Input = React.forwardRef((props, ref) => {\n const {\n value,\n placeHolder,\n disabled,\n name,\n required,\n } = props;\n const [inputValue, setInputValue] = useState(value);\n return (\n \n {\n setInputValue(e.target.value);\n }}\n />\n {(placeHolder && !inputValue) && (\n \n {placeHolder}\n \n )}\n
\n );\n});\n\nInput.propTypes = {\n value: PropTypes.string,\n placeHolder: PropTypes.string,\n name: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n};\n\nInput.defaultProps = {\n value: '',\n placeHolder: '',\n disabled: false,\n required: false,\n};\n\nexport default Input;\n","import './color.scss';\n\nexport const Colors = {\n ONBACKGROUND_1: 'ONBACKGROUND_1',\n ONBACKGROUND_2: 'ONBACKGROUND_2',\n ONBACKGROUND_3: 'ONBACKGROUND_3',\n ONBACKGROUND_4: 'ONBACKGROUND_4',\n ONCONTENT_1: 'ONCONTENT_1',\n PRIMARY: 'PRIMARY',\n ERROR: 'ERROR',\n};\n\nexport function changeColorToClassName(color) {\n switch (color) {\n case Colors.ONBACKGROUND_1: return 'sendbird-color--onbackground-1';\n case Colors.ONBACKGROUND_2: return 'sendbird-color--onbackground-2';\n case Colors.ONBACKGROUND_3: return 'sendbird-color--onbackground-3';\n case Colors.ONBACKGROUND_4: return 'sendbird-color--onbackground-4';\n case Colors.ONCONTENT_1: return 'sendbird-color--oncontent-1';\n case Colors.PRIMARY: return 'sendbird-color--primary';\n case Colors.ERROR: return 'sendbird-color--error';\n default: return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { changeColorToClassName, Colors } from '../../utils/color';\n\nexport default function TextButton({\n color,\n children,\n disabled,\n className,\n onClick,\n notUnderline,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {children}\n
\n );\n}\n\nTextButton.propTypes = {\n color: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n onClick: PropTypes.func,\n notUnderline: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nTextButton.defaultProps = {\n color: Colors.ONBACKGROUND_1,\n className: '',\n onClick: () => { },\n notUnderline: false,\n disabled: false,\n};\n","import format from 'date-fns/format';\n\nexport const noop = () => {};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport default {\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n};\n","import React, {\n ReactElement,\n useRef,\n useState,\n useContext,\n} from 'react';\nimport './index.scss';\n\nimport Modal from '../Modal';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport Input, { InputLabel } from '../Input';\nimport Avatar from '../Avatar';\nimport Icon, { IconTypes } from '../Icon';\nimport { Type as ButtonType } from '../Button/type';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport TextButton from '../TextButton';\nimport { SendbirdTypes } from '../../types';\nimport { noop } from '../../utils/utils';\n\ninterface Props {\n user: SendbirdTypes['User'];\n onCancel(): void;\n onSubmit(newFile: File, newNickname: string): void;\n onThemeChange?(theme: string): void;\n theme?: string;\n changeTheme?(theme: string): void;\n}\n\nexport function EditUserProfile({\n user,\n onCancel,\n onSubmit,\n onThemeChange = null,\n theme = 'light',\n changeTheme = noop,\n}: Props): ReactElement {\n const hiddenInputRef = useRef(null);\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n\n return (\n {\n if (user.nickname !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(inputRef.current.value, newFile);\n onCancel();\n }}\n type={ButtonType.PRIMARY}\n >\n { e.preventDefault(); }}\n >\n \n \n \n \n \n {stringSet.EDIT_PROFILE__THEME_LABEL}\n \n \n {\n theme === 'dark'\n ? (\n {\n changeTheme('light');\n if (onThemeChange && typeof onThemeChange === 'function') {\n onThemeChange('light');\n }\n }}\n type={IconTypes.TOGGLE_ON}\n width={44}\n height={24}\n />\n )\n : (\n {\n changeTheme('dark');\n if (onThemeChange && typeof onThemeChange === 'function') {\n onThemeChange('dark');\n }\n }}\n type={IconTypes.TOGGLE_OFF}\n width={44}\n height={24}\n />\n )\n }\n
\n \n \n \n );\n}\n\nconst mapStoreToProps = (store) => {\n return {\n theme: store.config.theme,\n changeTheme: store.config.setCurrenttheme,\n };\n};\n\ninterface ConnectedEditUserProfileProps {\n user: SendbirdTypes['User'];\n onCancel(): void;\n onSubmit(newFile: File, newNickname: string): void;\n onThemeChange?(theme: string): void;\n}\n\nconst ConnectedEditUserProfile: (\n props: ConnectedEditUserProfileProps\n) => React.Component = withSendbirdContext(EditUserProfile, mapStoreToProps);\n\nexport default ConnectedEditUserProfile;\n","export function Types() {\n return {\n LOADING: 'LOADING',\n NO_CHANNELS: 'NO_CHANNELS',\n WRONG: 'WRONG',\n };\n}\n\nexport default Types();\n","import './muted-avatar-overlay.scss';\n\nimport React, { ReactElement } from 'react'\nimport Icon, { IconTypes, IconColors } from '../Icon';\n\ninterface Props {\n height?: number;\n width?: number;\n}\n\nexport default function MutedAvatarOverlay(props: Props): ReactElement {\n const { height = 24, width = 24 } = props;\n return (\n \n );\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nexport default function Checkbox({\n id,\n checked,\n onChange,\n}) {\n const [isChecked, setCheck] = useState(checked);\n return (\n \n setCheck(!isChecked)}\n onChange={onChange}\n />\n \n \n );\n}\n\nCheckbox.propTypes = {\n id: PropTypes.string,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\nCheckbox.defaultProps = {\n id: 'sendbird-checkbox-input',\n checked: false,\n onChange: () => { },\n};\n","export const USER_UPDATED = 'USER_UPDATED';\nexport const SEND_MESSAGE_START = 'SEND_MESSAGE_START';\nexport const SEND_USER_MESSAGE = 'SEND_USER_MESSAGE';\nexport const SEND_FILE_MESSAGE = 'SEND_FILE_MESSAGE';\nexport const UPDATE_USER_MESSAGE = 'UPDATE_USER_MESSAGE';\nexport const DELETE_MESSAGE = 'DELETE_MESSAGE';\nexport const LEAVE_CHANNEL = 'LEAVE_CHANNEL';\nexport const CREATE_CHANNEL = 'CREATE_CHANNEL';\n","import * as topics from './pubSub/topics';\n\nexport const getSdk = (store) => {\n const { stores = {} } = store;\n const { sdkStore = {} } = stores;\n const { sdk } = sdkStore;\n return sdk;\n};\n\nexport const getPubSub = (store) => {\n const { config = {} } = store;\n const { pubSub } = config;\n return pubSub;\n};\n\n// SendBird disconnect. Invalidates currentUser\n// eslint-disable-next-line max-len\nexport const getConnect = (store) => (userId, accessToken) => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n if (!accessToken) {\n sdk.connect(userId)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n } else {\n sdk.connect(userId, accessToken)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n }\n});\n\n// SendBird disconnect. Invalidates currentUser\nexport const getDisconnect = (store) => () => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.disconnect()\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n});\n\n// Using the updateCurrentUserInfo() method\n// you can update a user's nickname and profile image with a URL\n// eslint-disable-next-line max-len\nexport const getUpdateUserInfo = (store) => (nickName, profileUrl) => new Promise((resolve, reject) => {\n const sdk = getSdk(store);\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.updateCurrentUserInfo(nickName, profileUrl)\n .then((res) => resolve(res))\n .catch((err) => reject(err));\n});\n\nexport const getSendUserMessage = (store) => (channelUrl, userMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendUserMessage(userMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n });\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\nexport const getSendFileMessage = (store) => (channelUrl, fileMessageParams) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const promisify = () => {\n let pendingMsg = null;\n const pendingPromise = new Promise((resolve_, reject_) => {\n pendingMsg = channel.sendFileMessage(fileMessageParams, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject_(error);\n return;\n }\n resolve_(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n });\n });\n if (fileMessageParams.file) {\n // keep the file's local version in pendingMsg.localUrl\n // because promise doesnt allow overriding of pendingMsg.url\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = URL.createObjectURL(fileMessageParams.file);\n }\n if (fileMessageParams.fileUrl) {\n // eslint-disable-next-line no-param-reassign\n pendingMsg.localUrl = fileMessageParams.fileUrl;\n }\n // eslint-disable-next-line no-param-reassign\n pendingMsg.requestState = 'pending';\n pubsub.publish(\n topics.SEND_MESSAGE_START,\n {\n message: pendingMsg,\n channel,\n },\n );\n pendingPromise.get = () => pendingMsg;\n return pendingPromise;\n };\n resolve(promisify());\n })\n .catch(reject);\n });\n};\nexport const getUpdateUserMessage = (store) => (channelUrl, messageId, params) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.updateUserMessage(messageId, params, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.UPDATE_USER_MESSAGE,\n {\n message,\n channel,\n // workaround for updating channelPreview on message-edit\n // https://sendbird.atlassian.net/browse/UIKIT-268\n fromSelector: true,\n },\n );\n });\n })\n .catch(reject);\n });\n};\nexport const getDeleteMessage = (store) => (channelUrl, message) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n const { messageId } = message;\n channel.deleteMessage(message, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let error = err;\n if (swapParams) {\n error = res;\n }\n\n if (error) {\n reject(error);\n return;\n }\n resolve(message);\n pubsub.publish(\n topics.DELETE_MESSAGE,\n {\n messageId,\n channel,\n },\n );\n });\n })\n .catch(reject);\n });\n};\n\nexport const getResendUserMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendUserMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_USER_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getResendFileMessage = (store) => (channelUrl, failedMessage) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.resendFileMessage(failedMessage)\n .then((message) => {\n resolve(message);\n pubsub.publish(\n topics.SEND_FILE_MESSAGE,\n {\n message,\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getCreateChannel = (store) => (params) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.createChannel(params)\n .then((channel) => {\n resolve(channel);\n pubsub.publish(\n topics.CREATE_CHANNEL,\n {\n channel,\n },\n );\n })\n .catch(reject);\n });\n};\n\nexport const getLeaveChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n const pubsub = getPubSub(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.leave()\n .then(() => {\n resolve(channel);\n pubsub.publish(\n topics.LEAVE_CHANNEL,\n {\n channel,\n },\n );\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getFreezeChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.freeze()\n .then(() => {\n // do not need pubsub here - event listener works\n resolve(channel);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport const getUnFreezeChannel = (store) => (channelUrl) => {\n const sdk = getSdk(store);\n return new Promise((resolve, reject) => {\n if (!sdk) {\n reject(new Error('Sdk not found'));\n }\n sdk.GroupChannel.getChannel(channelUrl)\n .then((channel) => {\n channel.unfreeze()\n .then(() => {\n // do not need pubsub here - event listener works\n resolve(channel);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n};\n\nexport default {\n getSdk,\n getConnect,\n getDisconnect,\n getUpdateUserInfo,\n getSendUserMessage,\n getSendFileMessage,\n getUpdateUserMessage,\n getDeleteMessage,\n getResendUserMessage,\n getResendFileMessage,\n getFreezeChannel,\n getUnFreezeChannel,\n getCreateChannel,\n getLeaveChannel,\n};\n","import React, { ReactElement, useContext } from 'react';\nimport { SendbirdTypes } from '../../types';\nimport './index.scss';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { getSdk, getCreateChannel } from '../../lib/selectors';\nimport Avatar from '../Avatar/index';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport Button from '../Button';\nimport { Type as ButtonTypes } from '../Button/type';\n\ninterface Logger {\n info?(message: string, channel: SendbirdTypes['GroupChannel']): void;\n}\n\ninterface Props {\n user: SendbirdTypes['User'];\n currentUserId?: string;\n sdk?: SendbirdTypes['SendBirdInstance'];\n logger?: Logger;\n createChannel?(params: SendbirdTypes['GroupChannelParams']): Promise;\n onSuccess?(): void;\n}\n\nfunction UserProfile({\n user,\n currentUserId,\n sdk,\n logger,\n createChannel,\n onSuccess,\n}: Props): ReactElement {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
\n \n {user.nickname || stringSet.NO_NAME}\n \n \n {\n user.userId !== currentUserId && (\n
\n {\n const params = new sdk.GroupChannelParams();\n params.isDistinct = true;\n params.addUserIds([user.userId]);\n onSuccess();\n createChannel(params)\n .then((groupChannel) => {\n logger.info('UserProfile, channel create', groupChannel);\n });\n }}\n >\n {stringSet.USER_PROFILE__MESSAGE}\n \n \n )\n }\n
\n
\n \n {stringSet.USER_PROFILE__USER_ID}\n \n \n {user.userId}\n \n \n
\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n createChannel: getCreateChannel(store),\n logger: store.config.logger,\n pubsub: store.config.pubSub,\n});\n\nconst ConnectedUserProfile = withSendbirdContext(UserProfile, mapStoreToProps);\n\nexport default ConnectedUserProfile;\n","import React, { Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\n\nexport default class MenuItems extends Component {\n constructor(props) {\n super(props);\n this.menuRef = React.createRef();\n this.state = {\n menuStyle: {},\n handleClickOutside: () => { },\n };\n }\n\n componentDidMount() {\n this.setupEvents();\n this.getMenuPosition();\n this.showParent();\n }\n\n componentWillUnmount() {\n this.cleanUpEvents();\n this.hideParent();\n }\n\n showParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.add('sendbird-icon--pressed');\n }\n }\n\n hideParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.remove('sendbird-icon--pressed');\n }\n }\n\n setupEvents = () => {\n const { closeDropdown } = this.props;\n const { menuRef } = this;\n const handleClickOutside = (event) => {\n if (menuRef.current && !menuRef.current.contains(event.target)) {\n closeDropdown();\n }\n };\n this.setState({\n handleClickOutside,\n });\n\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n cleanUpEvents = () => {\n const {\n handleClickOutside,\n } = this.state;\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n getMenuPosition = () => {\n const { parentRef, openLeft } = this.props;\n const parentRect = parentRef.current.getBoundingClientRect();\n const x = parentRect.x || parentRect.left;\n const y = parentRect.y || parentRect.top;\n const menuStyle = {\n top: y,\n left: x,\n };\n\n if (!this.menuRef.current) return menuStyle;\n\n const { innerWidth, innerHeight } = window;\n const rect = this.menuRef.current.getBoundingClientRect();\n if (y + rect.height > innerHeight) {\n menuStyle.top -= rect.height;\n }\n\n if (x + rect.width > innerWidth && !openLeft) {\n menuStyle.left -= rect.width;\n }\n\n if (menuStyle.top < 0) {\n menuStyle.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;\n }\n\n if (menuStyle.left < 0) {\n menuStyle.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;\n }\n\n menuStyle.top += 32;\n if (openLeft) {\n const padding = Number.isNaN(rect.width - 30)\n ? 108 // default\n : rect.width - 30;\n menuStyle.left -= padding;\n }\n\n return this.setState({ menuStyle });\n }\n\n render() {\n const { menuStyle } = this.state;\n const { children, style } = this.props;\n return (\n createPortal(\n (\n <>\n
\n \n >\n ),\n document.getElementById('sendbird-dropdown-portal'),\n )\n );\n }\n}\nMenuItems.propTypes = {\n closeDropdown: PropTypes.func.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n style: PropTypes.shape({}),\n // https://stackoverflow.com/a/51127130\n parentRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n parentContainRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n openLeft: PropTypes.bool,\n};\nMenuItems.defaultProps = {\n style: {},\n openLeft: false,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst componentClassName = 'sendbird-sort-by-row';\nexport default function SortByRow({\n className,\n maxItemCount,\n itemWidth,\n itemHeight,\n children,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(componentClassName);\n\n if (children.length > maxItemCount) {\n const result = [];\n for (let i = 0; i < children.length; i += maxItemCount) {\n result.push(\n \n {\n children.slice(i, i + maxItemCount)\n }\n
,\n );\n }\n\n return result;\n }\n return (\n \n {children}\n
\n );\n}\n\nSortByRow.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n maxItemCount: PropTypes.number.isRequired,\n itemWidth: PropTypes.number.isRequired,\n itemHeight: PropTypes.number.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]).isRequired,\n};\n\nSortByRow.defaultProps = {\n className: '',\n};\n","import React, { Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport SortByRow from '../../SortByRow';\n\nexport default class EmojiListItems extends Component {\n constructor(props) {\n super(props);\n this.reactionRef = React.createRef();\n this.state = {\n reactionStyle: {},\n handleClickOutside: () => { },\n };\n }\n\n componentDidMount() {\n this.setupEvents();\n this.getBarPosition();\n this.showParent();\n }\n\n componentWillUnmount() {\n this.cleanUpEvents();\n this.hideParent();\n }\n\n showParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.add('sendbird-reactions--pressed');\n }\n }\n\n hideParent = () => {\n const { parentContainRef = {} } = this.props;\n const { current } = parentContainRef;\n if (parentContainRef && current) {\n current.classList.remove('sendbird-reactions--pressed');\n }\n }\n\n setupEvents = () => {\n const { closeDropdown } = this.props;\n const { reactionRef } = this;\n const handleClickOutside = (event) => {\n if (reactionRef.current && !reactionRef.current.contains(event.target)) {\n closeDropdown();\n }\n };\n this.setState({\n handleClickOutside,\n });\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n cleanUpEvents = () => {\n const {\n handleClickOutside,\n } = this.state;\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n getBarPosition = () => {\n const {\n parentRef,\n spaceFromTrigger,\n } = this.props;\n const spaceFromTriggerX = spaceFromTrigger.x || 0;\n const spaceFromTriggerY = spaceFromTrigger.y || 0;\n\n const parentRect = parentRef.current.getBoundingClientRect();\n\n const x = parentRect.x || parentRect.left;\n const y = parentRect.y || parentRect.top;\n\n const reactionStyle = {\n top: y,\n left: x,\n };\n\n if (!this.reactionRef.current) return reactionStyle;\n const rect = this.reactionRef.current.getBoundingClientRect();\n // const childRect = this.reactionRef.current.children[0].getBoundingClientRect();\n\n if (reactionStyle.top < rect.height) {\n reactionStyle.top += parentRect.height;\n reactionStyle.top += spaceFromTriggerY;\n } else {\n reactionStyle.top -= rect.height;\n reactionStyle.top -= spaceFromTriggerY;\n }\n\n reactionStyle.left -= (rect.width / 2);\n reactionStyle.left += (parentRect.height / 2) - 2;\n reactionStyle.left += spaceFromTriggerX;\n\n const maximumLeft = (window.innerWidth - rect.width);\n if (maximumLeft < reactionStyle.left) {\n reactionStyle.left = maximumLeft;\n }\n if (reactionStyle.left < 0) {\n reactionStyle.left = 0;\n }\n\n return this.setState({ reactionStyle });\n }\n\n render() {\n const { reactionStyle } = this.state;\n const { children } = this.props;\n return (\n createPortal(\n <>\n
\n \n >,\n document.getElementById('sendbird-emoji-list-portal'),\n )\n );\n }\n}\nEmojiListItems.propTypes = {\n closeDropdown: PropTypes.func.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n parentRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n parentContainRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n spaceFromTrigger: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n }),\n};\nEmojiListItems.defaultProps = {\n spaceFromTrigger: {},\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport MenuItems_ from './items/MenuItems';\nimport EmojiListItems_ from './items/EmojiListItems';\n\nconst ENTER = 13;\n\nexport const MenuItems = MenuItems_;\nexport const EmojiListItems = EmojiListItems_;\n\nexport const MenuItem = ({ children, onClick, className }) => {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n {\n if (e.keyCode === ENTER) {\n onClick(e);\n }\n }}\n role=\"menuitem\"\n >\n \n {children}\n \n \n );\n};\n\nMenuItem.propTypes = {\n onClick: PropTypes.func.isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]).isRequired,\n};\n\nMenuItem.defaultProps = {\n className: '',\n};\n\nexport const MenuRoot = () => (\n
\n);\n\nexport const EmojiReactionListRoot = () => (\n
\n);\n\nexport default function ContextMenu({ menuTrigger, menuItems }) {\n const [showMenu, setShowMenu] = useState(false);\n\n return (\n \n {menuTrigger(() => setShowMenu(!showMenu))}\n {showMenu && menuItems(() => setShowMenu(false))}\n
\n );\n}\n\nContextMenu.propTypes = {\n menuTrigger: PropTypes.func.isRequired,\n menuItems: PropTypes.func.isRequired,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Avatar from '../Avatar/index';\nimport MutedAvatarOverlay from '../Avatar/MutedAvatarOverlay';\nimport Checkbox from '../Checkbox';\nimport UserProfile from '../UserProfile';\nimport ContextMenu, { MenuItems } from '../ContextMenu';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport './index.scss';\n\nconst COMPONENT_NAME = 'sendbird-user-list-item';\n\nexport default function UserListItem({\n user,\n className,\n checkBox,\n currentUser,\n checked,\n onChange,\n action,\n}) {\n const injectingClassNames = Array.isArray(className) ? className : [className];\n const uniqueKey = user.userId;\n const actionRef = React.useRef(null);\n const parentRef = React.useRef(null);\n const avatarRef = React.useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n {\n user.isMuted && (\n
\n )\n }\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n className={`${COMPONENT_NAME}__avatar`}\n src={user.profileUrl}\n width=\"40px\"\n height=\"40px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n {user.nickname || stringSet.NO_NAME}\n {\n (currentUser === user.userId) && (\n ' (You)'\n )\n }\n \n { // if there is now nickname, display userId\n !user.nickname && (\n \n {user.userId}\n \n )\n }\n {\n checkBox && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n \n onChange(event)}\n />\n \n )\n }\n {\n user.role === 'operator' && (\n \n Operator\n \n )\n }\n {\n action && (\n \n { action({ actionRef, parentRef }) }\n
\n )\n }\n \n );\n}\n\nUserListItem.propTypes = {\n user: PropTypes.shape({\n userId: PropTypes.string,\n role: PropTypes.string,\n isMuted: PropTypes.bool,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n }).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n currentUser: PropTypes.string,\n action: PropTypes.element,\n checkBox: PropTypes.bool,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\n\nUserListItem.defaultProps = {\n className: '',\n currentUser: '',\n checkBox: false,\n checked: false,\n action: null,\n onChange: () => { },\n};\n","import React, { useState, useEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelTypography, LabelColors } from '../../ui/Label';\nimport Modal from '../../ui/Modal';\nimport { Type as ButtonTypes } from '../../ui/Button/type';\nimport UserListItem from '../../ui/UserListItem';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nconst filterUser = (idsToFilter) => (currentId) => idsToFilter.includes(currentId);\n\nconst InviteMembers = (props) => {\n const {\n userQueryCreator,\n closeModal,\n onSubmit,\n submitText,\n titleText,\n idsToFilter,\n swapParams,\n } = props;\n\n const [users, setUsers] = useState([]);\n const [selectedUsers, setSelectedUsers] = useState({});\n const { stringSet } = useContext(LocalizationContext);\n const [usersDataSource, setUsersDataSource] = useState({});\n const selectedCount = Object.keys(selectedUsers).length;\n\n useEffect(() => {\n const applicationUserListQuery = userQueryCreator();\n setUsersDataSource(applicationUserListQuery);\n applicationUserListQuery.next((res, err) => {\n // eslint-disable-next-line no-underscore-dangle\n let users_ = res;\n let error = err;\n if (swapParams) {\n users_ = err;\n error = users_;\n }\n if (error) {\n return;\n }\n setUsers(users_);\n });\n }, []);\n\n return (\n {\n const selectedUserList = Object.keys(selectedUsers);\n if (selectedUserList.length > 0) {\n onSubmit(selectedUserList);\n closeModal();\n }\n }}\n submitText={submitText}\n titleText={titleText}\n type={ButtonTypes.PRIMARY}\n >\n \n
0) ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3}\n type={LabelTypography.CAPTION_1}\n >\n {`${selectedCount} ${stringSet.MODAL__INVITE_MEMBER__SELECTEC}`}\n \n
{\n const { hasNext } = usersDataSource;\n const fetchMore = (\n e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n usersDataSource.next((usersBatch, error) => {\n if (error) {\n return;\n }\n setUsers([\n ...users,\n ...usersBatch,\n ]);\n });\n }\n }}\n >\n {\n users.map((user) => (!filterUser(idsToFilter)(user.userId)) && (\n {\n const modifiedSelectedUsers = {\n ...selectedUsers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedUsers[event.target.id];\n }\n setSelectedUsers(modifiedSelectedUsers);\n }\n }\n />\n ))\n }\n
\n
\n \n );\n};\n\nInviteMembers.propTypes = {\n idsToFilter: PropTypes.arrayOf(PropTypes.string),\n swapParams: PropTypes.bool,\n userQueryCreator: PropTypes.func.isRequired,\n closeModal: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n submitText: PropTypes.string,\n titleText: PropTypes.string,\n};\nInviteMembers.defaultProps = {\n swapParams: false,\n submitText: 'create',\n titleText: 'Create new channel',\n idsToFilter: [],\n};\n\nexport default InviteMembers;\n","export const createDefaultUserListQuery = ({ sdk, userFilledApplicationUserListQuery = {} }) => {\n const params = sdk.createApplicationUserListQuery();\n if (userFilledApplicationUserListQuery) {\n Object.keys(userFilledApplicationUserListQuery).forEach((key) => {\n params[key] = userFilledApplicationUserListQuery[key];\n });\n }\n return params;\n};\n\nconst getApplicationAttributes = (sdk = {}) => {\n const { appInfo = {} } = sdk;\n const { applicationAttributes = [] } = appInfo;\n return applicationAttributes;\n};\n\nexport const isBroadcastChannelEnabled = (sdk = {}) => {\n const ALLOW_BROADCAST_CHANNEL = 'allow_broadcast_channel';\n const applicationAttributes = getApplicationAttributes(sdk);\n\n if (Array.isArray(applicationAttributes)) {\n return applicationAttributes.includes(ALLOW_BROADCAST_CHANNEL);\n }\n\n return false;\n};\nexport const isSuperGroupChannelEnabled = (sdk = {}) => {\n const ALLOW_SUPER_GROUP_CHANNEL = 'allow_super_group_channel';\n const applicationAttributes = getApplicationAttributes(sdk);\n\n if (Array.isArray(applicationAttributes)) {\n return applicationAttributes.includes(ALLOW_SUPER_GROUP_CHANNEL);\n }\n\n return false;\n};\n\nexport const setChannelType = (params, type) => {\n if (type === 'broadcast') {\n // eslint-disable-next-line no-param-reassign\n params.isBroadcast = true;\n }\n if (type === 'supergroup') {\n // eslint-disable-next-line no-param-reassign\n params.isSuper = true;\n }\n return params;\n};\n\nexport const createChannel = (\n sdk,\n selectedUsers,\n onBeforeCreateChannel,\n userId,\n type = 'group',\n) => new Promise((resolve, reject) => {\n // have custom params\n if (onBeforeCreateChannel) {\n const params = onBeforeCreateChannel(selectedUsers);\n setChannelType(params, type);\n sdk.GroupChannel.createChannel(params, (response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let groupChannel = response;\n let err = error;\n if (swapParams) {\n groupChannel = error;\n err = response;\n }\n if (err) {\n reject(err);\n }\n resolve(groupChannel);\n });\n return;\n }\n\n const params = new sdk.GroupChannelParams();\n params.addUserIds(selectedUsers);\n params.isDistinct = false;\n\n if (userId) {\n params.operatorUserIds = [userId];\n }\n setChannelType(params, type);\n // do not have custom params\n sdk.GroupChannel.createChannel(\n params,\n (response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let groupChannel = response;\n let err = error;\n if (swapParams) {\n groupChannel = error;\n err = response;\n }\n if (err) {\n reject(err);\n }\n resolve(groupChannel);\n },\n );\n});\n\nexport default createChannel;\n","import './add-channel.scss';\n\nimport React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport IconButton from '../../../ui/IconButton';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport InviteMembers from '../../InviteMembers';\n\nimport {\n createChannel,\n createDefaultUserListQuery,\n isBroadcastChannelEnabled,\n isSuperGroupChannelEnabled,\n} from './utils';\nimport { CREATE_CHANNEL } from '../dux/actionTypes';\nimport Modal from '../../../ui/Modal';\n\nexport default function AddChannel({\n sdk,\n disabled,\n channelListDispatcher,\n onBeforeCreateChannel,\n userId,\n userFilledApplicationUserListQuery,\n userListQuery,\n}) {\n const [showModal, setShowModal] = useState(false);\n const [step, setStep] = useState(0);\n const [type, setType] = useState('group');\n const { stringSet } = useContext(LocalizationContext);\n\n if (!sdk || !sdk.createApplicationUserListQuery) {\n return null;\n }\n\n const isBroadcastAvailable = isBroadcastChannelEnabled(sdk);\n const isSupergroupAvailable = isSuperGroupChannelEnabled(sdk);\n\n return (\n <>\n {\n setShowModal(true);\n }}\n disabled={disabled}\n >\n \n \n {\n showModal && step === 0 && (\n { setShowModal(false); }}\n onSubmit={() => {}}\n >\n \n
{\n setType('group');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('group');\n setStep(1);\n }}\n >\n \n \n Group\n \n
\n {\n isSupergroupAvailable && (\n
{\n setType('supergroup');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('supergroup');\n setStep(1);\n }}\n >\n \n \n Super group\n \n
\n )\n }\n {\n isBroadcastAvailable && (\n
{\n setType('broadcast');\n setStep(1);\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={() => {\n setType('broadcast');\n setStep(1);\n }}\n >\n \n \n Broadcast\n \n
\n )\n }\n
\n \n )\n }\n {\n showModal && step === 1 && (\n {\n setStep(0);\n setShowModal(false);\n }}\n idsToFilter={[userId]}\n userQueryCreator={() => ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )}\n onSubmit={(selectedUsers) => createChannel(\n sdk,\n selectedUsers,\n onBeforeCreateChannel,\n userId,\n type,\n ).then((channel) => {\n // maybe - do this in event listener\n channelListDispatcher({\n type: CREATE_CHANNEL,\n payload: channel,\n });\n })}\n />\n )\n }\n >\n );\n}\n\nAddChannel.propTypes = {\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n createApplicationUserListQuery: PropTypes.func,\n }).isRequired,\n disabled: PropTypes.bool,\n channelListDispatcher: PropTypes.func.isRequired,\n userFilledApplicationUserListQuery: PropTypes.shape({}),\n onBeforeCreateChannel: PropTypes.func,\n userId: PropTypes.string.isRequired,\n userListQuery: PropTypes.func,\n};\n\nAddChannel.defaultProps = {\n disabled: false,\n userFilledApplicationUserListQuery: {},\n onBeforeCreateChannel: null,\n userListQuery: null,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../../ui/Modal';\n\nconst LeaveChannel = (props) => {\n const {\n onCloseModal,\n onLeaveChannel,\n } = props;\n return (\n \n );\n};\n\nLeaveChannel.propTypes = {\n onCloseModal: PropTypes.func.isRequired,\n onLeaveChannel: PropTypes.func.isRequired,\n};\n\nexport default LeaveChannel;\n","import React, {\n useState,\n useRef,\n useContext,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../ui/ContextMenu';\nimport IconButton from '../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\nimport LeaveChannelModal from '../../ChannelSettings/components/LeaveChannel';\n\nexport default function ChannelPreviewAction({ disabled, onLeaveChannel }) {\n const parentRef = useRef(null);\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n { e.stopPropagation(); }}\n tabIndex={0}\n onClick={(e) => { e.stopPropagation(); }}\n >\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if (disabled) { return; }\n setShowModal(true);\n closeDropdown();\n }}\n >\n {stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE}\n \n \n )}\n />\n {\n showModal && (\n setShowModal(false)}\n onLeaveChannel={onLeaveChannel}\n />\n )\n }\n
\n );\n}\n\nChannelPreviewAction.propTypes = {\n disabled: PropTypes.bool,\n onLeaveChannel: PropTypes.func.isRequired,\n};\n\nChannelPreviewAction.defaultProps = {\n disabled: false,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes } from '../Icon';\n\nexport default function Loader({\n children,\n className,\n width,\n height,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {children}\n
\n );\n}\n\nLoader.propTypes = {\n children: PropTypes.element,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n};\n\nLoader.defaultProps = {\n children: ,\n className: '',\n width: '26px',\n height: '26px',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Loader from '../Loader';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport PlaceHolderTypes from './type';\n\nexport default function PlaceHolder({\n className,\n type,\n retryToConnect,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n {\n type === PlaceHolderTypes.LOADING\n ? (\n
\n \n \n )\n : null\n }\n {\n type === PlaceHolderTypes.NO_CHANNELS || type === PlaceHolderTypes.WRONG\n ? (\n
\n {\n type === PlaceHolderTypes.NO_CHANNELS && (\n
\n )\n }\n {\n type === PlaceHolderTypes.WRONG && (\n
\n )\n }\n
\n {\n type === PlaceHolderTypes.NO_CHANNELS\n ? stringSet.PLACE_HOLDER__NO_CHANNEL\n : stringSet.PLACE_HOLDER__WRONG\n }\n \n {\n retryToConnect\n ? (\n
\n \n \n {stringSet.PLACE_HOLDER__RETRY_TO_CONNECT}\n \n
\n )\n : null\n }\n
\n )\n : null\n }\n
\n );\n}\n\nPlaceHolder.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n type: PropTypes.oneOfType([\n PropTypes.oneOf(Object.keys(PlaceHolderTypes)),\n PropTypes.string,\n ]).isRequired,\n retryToConnect: PropTypes.func,\n};\n\nPlaceHolder.defaultProps = {\n className: '',\n retryToConnect: null,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Placeholder from '../../../ui/PlaceHolder';\n\nexport default function ChannelsPlaceholder({\n type,\n}) {\n return (\n \n );\n}\n\nChannelsPlaceholder.propTypes = {\n type: PropTypes.string.isRequired,\n};\n","import * as channelActions from './dux/actionTypes';\nimport * as topics from '../../lib/pubSub/topics';\n\nconst createEventHandler = ({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n logger,\n}) => {\n const ChannelHandler = new sdk.ChannelHandler();\n\n ChannelHandler.onChannelChanged = (channel) => {\n logger.info('ChannelList: onChannelChanged', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_CHANGED,\n payload: channel,\n });\n };\n ChannelHandler.onChannelDeleted = (channelUrl) => {\n logger.info('ChannelList: onChannelDeleted', channelUrl);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_DELETED,\n payload: channelUrl,\n });\n };\n ChannelHandler.onUserJoined = (channel) => {\n logger.info('ChannelList: onUserJoined', channel);\n if (channel.lastMessage) {\n channelListDispatcher({\n type: channelActions.ON_USER_JOINED,\n payload: channel,\n });\n }\n };\n ChannelHandler.onUserBanned = (channel, user) => {\n const { currentUser } = sdk;\n logger.info('Channel | useHandleChannelEvents: onUserBanned', channel);\n if (user.userId === currentUser.userId) {\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe: true,\n },\n });\n } else {\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe: false,\n },\n });\n }\n };\n ChannelHandler.onUserLeft = (channel, leftUser) => {\n const { currentUser } = sdk;\n const isMe = (currentUser.userId === leftUser.userId);\n logger.info('ChannelList: onUserLeft', channel);\n channelListDispatcher({\n type: channelActions.ON_USER_LEFT,\n payload: {\n channel,\n isMe,\n },\n });\n };\n\n ChannelHandler.onReadStatus = (channel) => {\n logger.info('ChannelList: onReadStatus', channel);\n channelListDispatcher({\n type: channelActions.ON_READ_RECEIPT_UPDATED,\n payload: channel,\n });\n };\n\n ChannelHandler.onDeliveryReceiptUpdated = (channel) => {\n logger.info('ChannelList: onDeliveryReceiptUpdated', channel);\n if (channel.lastMessage) {\n channelListDispatcher({\n type: channelActions.ON_DELIVERY_RECEIPT_UPDATED,\n payload: channel,\n });\n }\n };\n\n ChannelHandler.onMessageUpdated = (channel, message) => {\n if (channel.lastMessage.isEqual(message)) {\n logger.info('ChannelList: onMessageUpdated', channel);\n channelListDispatcher({\n type: channelActions.ON_LAST_MESSAGE_UPDATED,\n payload: channel,\n });\n }\n };\n\n ChannelHandler.onChannelHidden = (channel) => {\n logger.info('ChannelList: onChannelHidden', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_ARCHIVED,\n payload: channel.url,\n });\n };\n\n ChannelHandler.onChannelFrozen = (channel) => {\n logger.info('ChannelList: onChannelFrozen', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_FROZEN,\n payload: channel,\n });\n };\n\n ChannelHandler.onChannelUnfrozen = (channel) => {\n logger.info('ChannelList: onChannelUnfrozen', channel);\n channelListDispatcher({\n type: channelActions.ON_CHANNEL_UNFROZEN,\n payload: channel,\n });\n };\n\n logger.info('ChannelList: Added channelHandler');\n sdk.addChannelHandler(sdkChannelHandlerId, ChannelHandler);\n};\n\nconst createApplicationUserListQuery = ({ sdk, userFilledChannelListQuery = {} }) => {\n const channelListQuery = sdk.GroupChannel.createMyGroupChannelListQuery();\n channelListQuery.includeEmpty = false;\n channelListQuery.order = 'latest_last_message'; // 'chronological', 'latest_last_message', 'channel_name_alphabetical', and 'metadata_value_alphabetical'\n channelListQuery.limit = 20; // The value of pagination limit could be set up to 100.\n\n if (userFilledChannelListQuery) {\n Object.keys(userFilledChannelListQuery).forEach((key) => {\n channelListQuery[key] = userFilledChannelListQuery[key];\n });\n }\n\n return channelListQuery;\n};\n\n/**\n * Setup event listener\n * create channel source query\n * addloading screen\n */\nfunction setupChannelList({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n setChannelSource,\n onChannelSelect,\n userFilledChannelListQuery,\n logger,\n sortChannelList,\n}) {\n createEventHandler({\n sdk,\n channelListDispatcher,\n sdkChannelHandlerId,\n logger,\n });\n\n logger.info('ChannelList - creating query', { userFilledChannelListQuery });\n const channelListQuery = createApplicationUserListQuery({ sdk, userFilledChannelListQuery });\n logger.info('ChannelList - created query', channelListQuery);\n\n setChannelSource(channelListQuery);\n\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_START,\n });\n\n logger.info('ChannelList - fetching channels');\n if (channelListQuery.hasNext) {\n channelListQuery.next((response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let channelList = response;\n let err = error;\n if (swapParams) {\n channelList = error;\n err = response;\n }\n logger.info('ChannelList - fetched channels', channelList);\n if (err) {\n logger.error('ChannelList - couldnt fetch channels', err);\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_FAILURE,\n });\n return;\n }\n // select first channel\n logger.info('ChannelList - highlight channel', channelList[0]);\n let sorted = channelList;\n if (sortChannelList && typeof sortChannelList === 'function') {\n sorted = sortChannelList(channelList);\n logger.info('ChannelList - channel list sorted', sorted);\n }\n onChannelSelect(sorted[0]);\n channelListDispatcher({\n type: channelActions.INIT_CHANNELS_SUCCESS,\n payload: sorted,\n });\n if (channelList && typeof channelList.forEach === 'function') {\n logger.info('ChannelList - mark all channels as delivered');\n channelList.forEach((c) => c.markAsDelivered());\n }\n });\n } else {\n logger.warning('ChannelList - there are no more channels');\n }\n}\n\nexport const pubSubHandleRemover = (subscriber) => {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n};\n\nexport const pubSubHandler = (pubSub, channelListDispatcher) => {\n const subScriber = new Map();\n if (!pubSub) return subScriber;\n subScriber.set(topics.CREATE_CHANNEL, pubSub.subscribe(topics.CREATE_CHANNEL, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: 'CREATE_CHANNEL',\n payload: channel,\n });\n }));\n\n subScriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n const updatedChannel = channel;\n updatedChannel.lastMessage = message;\n if (channel) {\n channelListDispatcher({\n type: channelActions.ON_LAST_MESSAGE_UPDATED,\n payload: updatedChannel,\n });\n }\n }));\n\n subScriber.set(topics.LEAVE_CHANNEL, pubSub.subscribe(topics.LEAVE_CHANNEL, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: channelActions.LEAVE_CHANNEL_SUCCESS,\n payload: channel.url,\n });\n }));\n\n subScriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel } = msg;\n channelListDispatcher({\n type: channelActions.CHANNEL_REPLACED_TO_TOP,\n payload: channel,\n });\n }));\n\n return subScriber;\n};\n\nexport default setupChannelList;\n","import React, { useEffect, useState, useReducer } from 'react';\nimport PropTypes from 'prop-types';\n\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport * as userActions from '../../lib/dux/user/actionTypes';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\n\nimport * as channelListActions from './dux/actionTypes';\nimport channelListInitialState from './dux/initialState';\nimport channelListReducers from './dux/reducers';\n\nimport ChannelPreview from '../../ui/ChannelPreview';\nimport ChannelHeader from '../../ui/ChannelHeader';\nimport EditUserProfile from '../../ui/EditUserProfile';\nimport PlaceholderTypes from '../../ui/PlaceHolder/type';\n\nimport AddChannel from './components/AddChannel';\nimport ChannelPreviewAction from './components/ChannelPreviewAction';\nimport PlaceHolder from './components/Placeholder';\n\nimport setupChannelList, {\n pubSubHandler,\n pubSubHandleRemover,\n} from './utils';\nimport { uuidv4 } from '../../utils/uuid';\n\nimport './index.scss';\n\nconst noop = () => { };\n\nfunction ChannelList(props) {\n const {\n stores: { sdkStore = {}, userStore = {} },\n config: {\n userId,\n isOnline,\n userListQuery,\n logger,\n pubSub,\n theme,\n },\n dispatchers: {\n userDispatcher,\n },\n queries = {},\n renderChannelPreview,\n renderHeader,\n renderUserProfile,\n disableUserProfile,\n allowProfileEdit,\n sortChannelList,\n onProfileEditSuccess,\n onThemeChange,\n onBeforeCreateChannel,\n onChannelSelect,\n } = props;\n const { config = {} } = props;\n // enable if it is true atleast once(both are flase by default)\n const enableEditProfile = allowProfileEdit || config.allowProfileEdit;\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n const { sdk = {} } = sdkStore;\n const userFilledChannelListQuery = queries.channelListQuery;\n const userFilledApplicationUserListQuery = queries.applicationUserListQuery;\n\n const sdkError = sdkStore.error;\n\n const [user, setUser] = useState({});\n\n useEffect(() => {\n setUser(userStore.user);\n }, [userStore.user]);\n\n\n const sdkIntialized = sdkStore.initialized;\n const [channelListStore, channelListDispatcher] = useReducer(\n channelListReducers,\n channelListInitialState,\n );\n const [channelSource, setChannelSource] = useState({});\n const [sdkChannelHandlerId, setSdkChannelHandlerId] = useState(null);\n const [showProfileEdit, setShowProfileEdit] = useState(false);\n\n const { loading, currentChannel } = channelListStore;\n\n useEffect(() => {\n const subscriber = pubSubHandler(pubSub, channelListDispatcher);\n return () => {\n pubSubHandleRemover(subscriber);\n };\n }, [sdkIntialized]);\n\n useEffect(() => {\n setSdkChannelHandlerId(uuidv4);\n if (sdkIntialized) {\n logger.info('ChannelList: Setup channelHandlers');\n setupChannelList({\n sdk,\n sdkChannelHandlerId,\n channelListDispatcher,\n setChannelSource,\n onChannelSelect,\n userFilledChannelListQuery,\n logger,\n sortChannelList,\n });\n } else {\n logger.info('ChannelList: Removing channelHandlers');\n // remove previous channelHandlers\n if (sdk && sdk.removeChannelHandler) {\n sdk.removeChannelHandler(sdkChannelHandlerId);\n }\n // remove channelSource\n setChannelSource({});\n // cleanup\n channelListDispatcher({\n type: channelListActions.RESET_CHANNEL_LIST,\n });\n }\n return () => {\n logger.info('ChannelList: Removing channelHandlers');\n if (sdk && sdk.removeChannelHandler) {\n sdk.removeChannelHandler(sdkChannelHandlerId);\n }\n };\n }, [sdkIntialized, userFilledChannelListQuery, sortChannelList]);\n\n const { allChannels } = channelListStore;\n const sortedChannels = (sortChannelList && typeof sortChannelList === 'function')\n ? sortChannelList(allChannels)\n : allChannels;\n\n if (sortedChannels.length !== allChannels.length) {\n const warning = `ChannelList: You have removed/added extra channels on sortChannelList\n this could cause unexpected problems`;\n // eslint-disable-next-line no-console\n console.warn(warning, { before: allChannels, after: sortedChannels });\n logger.warning(warning, { before: allChannels, after: sortedChannels });\n }\n\n useEffect(() => {\n if (!sdk || !sdk.GroupChannel) { return; }\n sdk.GroupChannel.getChannel(currentChannel, (groupChannel) => {\n if (groupChannel) {\n onChannelSelect(groupChannel);\n } else {\n onChannelSelect(null);\n }\n });\n }, [currentChannel]);\n\n return (\n \n \n
{\n if (enableEditProfile) {\n setShowProfileEdit(true);\n }\n }}\n allowProfileEdit={enableEditProfile}\n iconButton={(\n \n )}\n />\n \n {\n showProfileEdit && (\n { setShowProfileEdit(false); }}\n onSubmit={(newName, newFile) => {\n sdk.updateCurrentUserInfoWithProfileImage(newName, newFile, (updatedUser) => {\n userDispatcher({ type: userActions.UPDATE_USER_INFO, payload: updatedUser });\n if (onProfileEditSuccess && typeof onProfileEditSuccess === 'function') {\n onProfileEditSuccess(updatedUser);\n }\n });\n }}\n />\n )\n }\n {\n const fetchMore = e.target.clientHeight + e.target.scrollTop === e.target.scrollHeight;\n if (fetchMore && channelSource.hasNext) {\n logger.info('ChannelList: Fetching more channels');\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_START,\n });\n channelSource.next((response, error) => {\n const swapParams = sdk.getErrorFirstCallback();\n let channelList = response;\n let err = error;\n if (swapParams) {\n channelList = error;\n err = response;\n }\n if (err) {\n logger.info('ChannelList: Fetching channels failed', err);\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_FAILURE,\n payload: channelList,\n });\n return;\n }\n logger.info('ChannelList: Fetching channels successful', channelList);\n channelListDispatcher({\n type: channelListActions.FETCH_CHANNELS_SUCCESS,\n payload: channelList,\n });\n if (channelList && typeof channelList.forEach === 'function') {\n logger.info('ChannelList: Marking all channels as read');\n channelList.forEach((c) => c.markAsDelivered());\n }\n });\n }\n }}\n >\n {\n (sdkError) && (\n
\n )\n }\n {/*\n To do: Implement windowing\n Implement windowing if you are dealing with large number of messages/channels\n https://github.com/bvaughn/react-window -> recommendation\n We hesitate to bring one more dependency to our library,\n we are planning to implement it inside the library\n */}\n
\n {\n sortedChannels && sortedChannels.map((channel, idx) => {\n const onLeaveChannel = (c, cb) => {\n logger.info('ChannelList: Leaving channel', c);\n c.leave()\n .then((res) => {\n logger.info('ChannelList: Leaving channel success', res);\n if (cb && typeof cb === 'function') {\n cb(res, null);\n }\n channelListDispatcher({\n type: channelListActions.LEAVE_CHANNEL_SUCCESS,\n payload: channel.url,\n });\n })\n .catch((err) => {\n logger.error('ChannelList: Leaving channel failed', err);\n if (cb && typeof cb === 'function') {\n cb(null, err);\n }\n });\n };\n\n const onClick = () => {\n if (!isOnline) { return; }\n logger.info('ChannelList: Clicked on channel:', channel);\n channelListDispatcher({\n type: channelListActions.SET_CURRENT_CHANNEL,\n payload: channel.url,\n });\n };\n\n return (\n (renderChannelPreview)\n ? (\n // eslint-disable-next-line\n
\n {renderChannelPreview({ channel, onLeaveChannel })}\n
\n )\n : (\n
onLeaveChannel(channel)}\n />\n )}\n />\n )\n );\n })\n }\n \n {\n (!sdkIntialized || loading) && (\n
\n )\n }\n {\n // placeholder\n (!allChannels || allChannels.length === 0) && (\n
\n )\n }\n
\n \n );\n}\n\nChannelList.propTypes = {\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n initialized: PropTypes.bool,\n }),\n userStore: PropTypes.shape({\n user: PropTypes.shape({}),\n }),\n }).isRequired,\n dispatchers: PropTypes.shape({\n userDispatcher: PropTypes.func,\n }).isRequired,\n config: PropTypes.shape({\n userId: PropTypes.string.isRequired,\n userListQuery: PropTypes.func,\n theme: PropTypes.string,\n isOnline: PropTypes.bool,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }).isRequired,\n queries: PropTypes.shape({\n channelListQuery: PropTypes.shape({\n channelNameContainsFilter: PropTypes.string,\n channelUrlsFilter: PropTypes.arrayOf(PropTypes.string),\n customTypesFilter: PropTypes.arrayOf(PropTypes.string),\n customTypeStartsWithFilter: PropTypes.string,\n hiddenChannelFilter: PropTypes.string,\n includeEmpty: PropTypes.bool,\n limit: PropTypes.number,\n memberStateFilter: PropTypes.string,\n metadataOrderKeyFilter: PropTypes.string,\n nicknameContainsFilter: PropTypes.string,\n order: PropTypes.string,\n publicChannelFilter: PropTypes.string,\n superChannelFilter: PropTypes.string,\n unreadChannelFilter: PropTypes.string,\n userIdsExactFilter: PropTypes.arrayOf(PropTypes.string),\n userIdsIncludeFilter: PropTypes.arrayOf(PropTypes.string),\n userIdsIncludeFilterQueryType: PropTypes.string,\n }),\n applicationUserListQuery: PropTypes.shape({\n limit: PropTypes.number,\n userIdsFilter: PropTypes.arrayOf(PropTypes.string),\n metaDataKeyFilter: PropTypes.string,\n metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n onBeforeCreateChannel: PropTypes.func,\n renderChannelPreview: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n allowProfileEdit: PropTypes.bool,\n sortChannelList: PropTypes.func,\n onThemeChange: PropTypes.func,\n onProfileEditSuccess: PropTypes.func,\n renderHeader: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n onChannelSelect: PropTypes.func,\n};\n\nChannelList.defaultProps = {\n onBeforeCreateChannel: null,\n renderChannelPreview: null,\n renderHeader: null,\n disableUserProfile: false,\n renderUserProfile: null,\n allowProfileEdit: false,\n onThemeChange: null,\n sortChannelList: null,\n onProfileEditSuccess: null,\n queries: {},\n onChannelSelect: noop,\n};\n\nexport default withSendbirdContext(ChannelList);\n","export const RESET_MESSAGES = 'RESET_MESSAGES';\nexport const RESET_STATE = 'RESET_STATE';\nexport const CLEAR_SENT_MESSAGES = 'CLEAR_SENT_MESSAGES';\nexport const GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';\nexport const GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';\nexport const GET_PREV_MESSAGES_FAILURE = 'GET_PREV_MESSAGES_FAILURE';\n\nexport const SEND_MESSAGEGE_START = 'SEND_MESSAGEGE_START';\nexport const SEND_MESSAGEGE_SUCESS = 'SEND_MESSAGEGE_SUCESS';\nexport const SEND_MESSAGEGE_FAILURE = 'SEND_MESSAGEGE_FAILURE';\n\nexport const RESEND_MESSAGEGE_START = 'RESEND_MESSAGEGE_START';\n\nexport const ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';\nexport const ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';\nexport const ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';\nexport const ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';\n\nexport const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';\nexport const SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';\nexport const MARK_AS_READ = 'MARK_AS_READ';\n\nexport const ON_REACTION_UPDATED = 'ON_REACTION_UPDATED';\nexport const SET_EMOJI_CONTAINER = 'SET_EMOJI_CONTAINER';\nexport const SET_READ_STATUS = 'SET_READ_STATUS';\n","// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\nconst SUPPORTED_MIMES = {\n IMAGE: [\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif',\n 'image/webp', // not supported in IE\n ],\n VIDEO: [\n 'video/mpeg',\n 'video/ogg',\n 'video/webm',\n 'video/mp4',\n ],\n};\n\nexport const isImage = (type) => SUPPORTED_MIMES.IMAGE.includes(type);\nexport const isVideo = (type) => SUPPORTED_MIMES.VIDEO.includes(type);\nexport const unSupported = (type) => !(isImage(type) || isVideo(type));\n\nexport default SUPPORTED_MIMES;\n","import { isImage, isVideo } from '../../ui/FileViewer/types';\n\nexport const MessageTypes = {\n ADMIN: 'ADMIN',\n USER: 'USER',\n FILE: 'FILE',\n THUMBNAIL: 'THUMBNAIL',\n OG: 'OG',\n};\n\nexport const SendingMessageStatus = {\n NONE: 'none',\n SUCCEEDED: 'succeeded',\n FAILED: 'failed',\n PENDING: 'pending',\n};\n\nexport const getMessageType = (message) => {\n if ((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user') {\n return (message.ogMetaData)\n ? MessageTypes.OG\n : MessageTypes.USER;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return MessageTypes.ADMIN;\n }\n if ((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file') {\n return (isImage(message.type) || isVideo(message.type))\n ? MessageTypes.THUMBNAIL\n : MessageTypes.FILE;\n }\n return '';\n};\n\nexport default {\n MessageTypes,\n SendingMessageStatus,\n getMessageType,\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../../ui/MessageStatus/type';\nimport * as channelActions from './dux/actionTypes';\nimport * as topics from '../../lib/pubSub/topics';\n\nimport { SendingMessageStatus } from './types';\n\nconst UNDEFINED = 'undefined';\nconst { SUCCEEDED, FAILED, PENDING } = SendingMessageStatus;\n\nexport const scrollIntoLast = (selector, intialTry = 0) => {\n const MAX_TRIES = 10;\n const currentTry = intialTry;\n if (currentTry > MAX_TRIES) {\n return;\n }\n try {\n const nodes = document.querySelectorAll(selector);\n const last = nodes[nodes.length - 1];\n last.scrollIntoView(false); /** alignToTop: false */\n } catch (error) {\n setTimeout(() => {\n scrollIntoLast(selector, currentTry + 1);\n }, 500 * currentTry);\n }\n};\n\nexport const pubSubHandleRemover = (subscriber) => {\n subscriber.forEach((s) => {\n try {\n s.remove();\n } catch {\n //\n }\n });\n};\n\nexport const pubSubHandler = (channelUrl, pubSub, dispatcher) => {\n const subscriber = new Map();\n if (!pubSub || !pubSub.subscribe) return subscriber;\n subscriber.set(topics.SEND_USER_MESSAGE, pubSub.subscribe(topics.SEND_USER_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_MESSAGE_START, pubSub.subscribe(topics.SEND_MESSAGE_START, (msg) => {\n const { channel, message } = msg;\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_START,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (msg) => {\n const { channel, message } = msg;\n scrollIntoLast('.sendbird-msg--scroll-ref');\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.UPDATE_USER_MESSAGE, (msg) => {\n const { channel, message, fromSelector } = msg;\n if (fromSelector && channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.ON_MESSAGE_UPDATED,\n payload: message,\n });\n }\n }));\n subscriber.set(topics.DELETE_MESSAGE, pubSub.subscribe(topics.DELETE_MESSAGE, (msg) => {\n const { channel, messageId } = msg;\n if (channel && (channelUrl === channel.url)) {\n dispatcher({\n type: channelActions.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n }\n }));\n\n return subscriber;\n};\n\nexport const getParsedStatus = (message, currentGroupChannel) => {\n if (message.requestState === FAILED) {\n return MessageStatusType.FAILED;\n }\n\n if (message.requestState === PENDING) {\n return MessageStatusType.PENDING;\n }\n\n if (message.requestState === SUCCEEDED) {\n if (!currentGroupChannel) {\n return MessageStatusType.SENT;\n }\n\n const unreadCount = currentGroupChannel.getReadReceipt(message);\n if (unreadCount === 0) {\n return MessageStatusType.READ;\n }\n\n const isDelivered = currentGroupChannel.getDeliveryReceipt(message) === 0;\n if (isDelivered) {\n return MessageStatusType.DELIVERED;\n }\n\n return MessageStatusType.SENT;\n }\n\n return null;\n};\n\nexport const isOperator = (groupChannel = {}) => {\n const { myRole } = groupChannel;\n return myRole === 'operator';\n};\n\nexport const isDisabledBecauseFrozen = (groupChannel = {}) => {\n const { isFrozen } = groupChannel;\n return isFrozen && !isOperator(groupChannel);\n};\n\nexport const isDisabledBecauseMuted = (groupChannel = {}) => {\n const { myMutedState } = groupChannel;\n return myMutedState === 'muted';\n};\n\nexport const getEmojiCategoriesFromEmojiContainer = (emojiContainer = {}) => (\n emojiContainer.emojiCategories ? emojiContainer.emojiCategories : []\n);\n\nexport const getAllEmojisFromEmojiContainer = (emojiContainer = {}) => {\n const { emojiCategories = [] } = emojiContainer;\n const allEmojis = [];\n\n for (let categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {\n const { emojis } = emojiCategories[categoryIndex];\n for (let emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {\n allEmojis.push(emojis[emojiIndex]);\n }\n }\n return allEmojis;\n};\n\nexport const getEmojisFromEmojiContainer = (emojiContainer = {}, emojiCategoryId = '') => (\n emojiContainer.emojiCategories\n ? emojiContainer.emojiCategories\n .filter((emojiCategory) => emojiCategory.id === emojiCategoryId)[0].emojis\n : []\n);\n\nexport const getAllEmojisMapFromEmojiContainer = (emojiContainer = {}) => {\n const { emojiCategories = [] } = emojiContainer;\n const allEmojisMap = new Map();\n\n for (let categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {\n const { emojis } = emojiCategories[categoryIndex];\n for (let emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {\n const { key, url } = emojis[emojiIndex];\n allEmojisMap.set(key, url);\n }\n }\n return allEmojisMap;\n};\n\nexport const getNicknamesMapFromMembers = (members = []) => {\n const nicknamesMap = new Map();\n for (let memberIndex = 0; memberIndex < members.length; memberIndex += 1) {\n const { userId, nickname } = members[memberIndex];\n nicknamesMap.set(userId, nickname);\n }\n return nicknamesMap;\n};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const isSameGroup = (message, comparingMessage) => {\n if (\n !message\n || !comparingMessage\n || !message.sender\n || !comparingMessage.sender\n || !message.createdAt\n || !comparingMessage.createdAt\n || !message.sender.userId\n || !comparingMessage.sender.userId\n ) {\n return false;\n }\n return (\n message.sendingStatus === comparingMessage.sendingStatus\n && message.sender.userId === comparingMessage.sender.userId\n && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage)\n );\n};\n\nexport const compareMessagesForGrouping = (\n prevMessage,\n currMessage,\n nextMessage,\n) => (\n [\n isSameGroup(prevMessage, currMessage),\n isSameGroup(currMessage, nextMessage),\n ]\n);\n\nexport const passUnsuccessfullMessages = (allMessages, newMessage) => {\n const { sendingStatus = UNDEFINED } = newMessage;\n if (sendingStatus === SUCCEEDED || sendingStatus === PENDING) {\n const lastIndexOfSucceededMessage = allMessages\n .map((message) => (\n message.sendingStatus\n || ((message.isAdminMessage && message.isAdminMessage()) ? SUCCEEDED : UNDEFINED)\n ))\n .lastIndexOf(SUCCEEDED);\n if (lastIndexOfSucceededMessage + 1 < allMessages.length) {\n const messages = [...allMessages];\n messages.splice(lastIndexOfSucceededMessage + 1, 0, newMessage);\n return messages;\n }\n }\n return [\n ...allMessages,\n newMessage,\n ];\n};\n\nexport default getParsedStatus;\n","export default {\n initialized: false,\n loading: false,\n allMessages: [],\n currentGroupChannel: { members: [] },\n hasMore: false,\n lastMessageTimeStamp: 0,\n emojiContainer: {},\n readStatus: {},\n unreadCount: 0,\n unreadSince: null,\n isInvalid: false,\n};\n","const isEmpty = (val) => (val === null || val === undefined);\n\n// Some Ids return string and number inconsistently\n// only use to comapre IDs\nexport default function (a, b) {\n if (isEmpty(a) || isEmpty(b)) {\n return false;\n }\n const aString = a.toString();\n const bString = b.toString();\n return aString === bString;\n}\n","import format from 'date-fns/format';\n\nimport * as actionTypes from './actionTypes';\nimport initialState from './initialState';\n\nimport compareIds from '../../../utils/compareIds';\nimport { passUnsuccessfullMessages } from '../utils';\nimport { SendingMessageStatus } from '../types';\n\nconst {\n SUCCEEDED,\n FAILED,\n PENDING,\n} = SendingMessageStatus;\n\nexport default function reducer(state, action) {\n switch (action.type) {\n case actionTypes.RESET_STATE:\n return initialState;\n case actionTypes.RESET_MESSAGES:\n return {\n ...state,\n // when user switches channel, if the previous channel `hasMore`\n // the onScroll gets called twice, setting hasMore false prevents this\n hasMore: false,\n allMessages: [],\n };\n case actionTypes.GET_PREV_MESSAGES_START:\n return {\n ...state,\n loading: true,\n };\n case actionTypes.CLEAR_SENT_MESSAGES:\n return {\n ...state,\n allMessages: [\n ...state.allMessages.filter((m) => (\n m.sendingStatus !== SUCCEEDED\n )),\n ],\n };\n case actionTypes.GET_PREV_MESSAGES_SUCESS: {\n const recivedMessages = action.payload.messages || [];\n const { currentGroupChannel = {} } = action.payload;\n\n const stateChannel = state.currentGroupChannel || {};\n const stateChannelUrl = stateChannel.url;\n const actionChannelUrl = currentGroupChannel.url;\n if (actionChannelUrl !== stateChannelUrl) {\n return state;\n }\n\n // remove duplicate messages\n const filteredAllMessages = state.allMessages.filter((msg) => (\n !(recivedMessages.find(({ messageId }) => compareIds(messageId, msg.messageId)))\n ));\n return {\n ...state,\n loading: false,\n initialized: true,\n hasMore: action.payload.hasMore,\n lastMessageTimeStamp: action.payload.lastMessageTimeStamp,\n allMessages: [\n ...recivedMessages,\n ...filteredAllMessages,\n ],\n };\n }\n case actionTypes.SEND_MESSAGEGE_START:\n return {\n ...state,\n allMessages: [\n ...state.allMessages,\n { ...action.payload },\n ],\n };\n case actionTypes.SEND_MESSAGEGE_SUCESS: {\n const newMessages = state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId) ? action.payload : m\n ));\n [...newMessages].sort((a, b) => (\n (\n a.sendingStatus\n && b.sendingStatus\n && a.sendingStatus === SUCCEEDED\n && (\n b.sendingStatus === PENDING\n || b.sendingStatus === FAILED\n )\n ) ? -1 : 1\n ));\n return {\n ...state,\n allMessages: newMessages,\n };\n }\n case actionTypes.SEND_MESSAGEGE_FAILURE: {\n // eslint-disable-next-line no-param-reassign\n action.payload.failed = true;\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId)\n ? action.payload\n : m\n )),\n };\n }\n case actionTypes.SET_CURRENT_CHANNEL: {\n return {\n ...state,\n currentGroupChannel: action.payload,\n isInvalid: false,\n };\n }\n case actionTypes.SET_CHANNEL_INVALID: {\n return {\n ...state,\n isInvalid: true,\n };\n }\n case actionTypes.ON_MESSAGE_RECEIVED: {\n const { channel, message } = action.payload;\n const { currentGroupChannel = {}, unreadCount, unreadSince } = state;\n const currentGroupChannelUrl = currentGroupChannel.url;\n if (!compareIds(channel.url, currentGroupChannelUrl)) {\n return state;\n }\n // Excluded overlapping messages\n if (!(state.allMessages.map((msg) => msg.messageId).indexOf(message.messageId) < 0)) {\n return state;\n }\n if (message.isAdminMessage && message.isAdminMessage()) {\n return {\n ...state,\n allMessages: passUnsuccessfullMessages(state.allMessages, message),\n };\n }\n return {\n ...state,\n unreadCount: unreadCount + 1,\n unreadSince: (unreadCount === 0)\n ? format(new Date(), 'p MMM dd')\n : unreadSince,\n allMessages: passUnsuccessfullMessages(state.allMessages, message),\n };\n }\n case actionTypes.ON_MESSAGE_UPDATED:\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.messageId, action.payload.messageId)\n ? action.payload\n : m\n )),\n };\n case actionTypes.RESEND_MESSAGEGE_START:\n return {\n ...state,\n allMessages: state.allMessages.map((m) => (\n compareIds(m.reqId, action.payload.reqId)\n ? action.payload\n : m\n )),\n };\n case actionTypes.MARK_AS_READ:\n return {\n ...state,\n unreadCount: 0,\n unreadSince: null,\n };\n case actionTypes.ON_MESSAGE_DELETED:\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.messageId, action.payload)\n )),\n };\n case actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID:\n return {\n ...state,\n allMessages: state.allMessages.filter((m) => (\n !compareIds(m.reqId, action.payload)\n )),\n };\n case actionTypes.SET_EMOJI_CONTAINER: {\n return {\n ...state,\n emojiContainer: action.payload,\n };\n }\n case actionTypes.SET_READ_STATUS: {\n return {\n ...state,\n readStatus: action.payload,\n };\n }\n case actionTypes.ON_REACTION_UPDATED: {\n return {\n ...state,\n allMessages: state.allMessages.map((m) => {\n if (compareIds(m.messageId, action.payload.messageId)) {\n if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {\n m.applyReactionEvent(action.payload);\n }\n return m;\n }\n return m;\n }),\n };\n }\n default:\n return state;\n }\n}\n","import { useEffect } from 'react';\n\nimport * as messageActions from '../dux/actionTypes';\nimport { uuidv4 } from '../../../utils/uuid';\nimport compareIds from '../../../utils/compareIds';\n\n/**\n * Handles ChannelEvents and send values to dispatcher using messagesDispatcher\n * messagesDispatcher: Dispatcher\n * sdk: sdkInstance\n * logger: loggerInstance\n * channelUrl: string\n * sdkInit: bool\n */\nfunction useHandleChannelEvents({ currentGroupChannel, sdkInit }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n const channelUrl = currentGroupChannel && currentGroupChannel.url;\n useEffect(() => {\n const messageReciverId = uuidv4();\n if (channelUrl && sdk && sdk.ChannelHandler) {\n const ChannelHandler = new sdk.ChannelHandler();\n logger.info('Channel | useHandleChannelEvents: Setup event handler', messageReciverId);\n ChannelHandler.onMessageReceived = (channel, message) => {\n if (compareIds(channel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_RECEIVED,\n payload: { channel, message },\n });\n }\n };\n\n ChannelHandler.onMessageUpdated = (_, message) => {\n logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_UPDATED,\n payload: message,\n });\n };\n\n ChannelHandler.onMessageDeleted = (_, messageId) => {\n logger.info('Channel | useHandleChannelEvents: onMessageDeleted', messageId);\n messagesDispatcher({\n type: messageActions.ON_MESSAGE_DELETED,\n payload: messageId,\n });\n };\n\n ChannelHandler.onReactionUpdated = (_, reactionEvent) => {\n logger.info('Channel | useHandleChannelEvents: onReactionUpdated', reactionEvent);\n messagesDispatcher({\n type: messageActions.ON_REACTION_UPDATED,\n payload: reactionEvent,\n });\n };\n\n ChannelHandler.onChannelChanged = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelChanged', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onChannelFrozen = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelFrozen', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onChannelUnfrozen = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserMuted = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserMuted', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserUnmuted = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserUnmuted', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onUserBanned = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onUserBanned', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n ChannelHandler.onOperatorUpdated = (groupChannel) => {\n if (compareIds(groupChannel.url, currentGroupChannel.url)) {\n logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', groupChannel);\n messagesDispatcher({\n type: messageActions.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n }\n };\n\n // Add this channel event handler to the SendBird object.\n sdk.addChannelHandler(messageReciverId, ChannelHandler);\n }\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', messageReciverId);\n sdk.removeChannelHandler(messageReciverId);\n }\n };\n }, [channelUrl, sdkInit]);\n}\n\nexport default useHandleChannelEvents;\n","import { useEffect } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useSetChannel({ channelUrl, sdkInit }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n useEffect(() => {\n if (channelUrl && sdkInit && sdk && sdk.GroupChannel) {\n logger.info('Channel | useSetChannel fetching channel', channelUrl);\n sdk.GroupChannel.getChannel(channelUrl)\n .then((groupChannel) => {\n logger.info('Channel | useSetChannel fetched channel', groupChannel);\n messagesDispatcher({\n type: messageActionTypes.SET_CURRENT_CHANNEL,\n payload: groupChannel,\n });\n\n logger.info('Channel: Mark as read', groupChannel);\n // this order is important - this mark as read should update the event handler up above\n groupChannel.markAsRead();\n })\n .catch((e) => {\n logger.warning('Channel | useSetChannel fetch channel failed', { channelUrl, e });\n messagesDispatcher({\n type: messageActionTypes.SET_CHANNEL_INVALID,\n });\n });\n sdk.getAllEmoji((emojiContainer_, err) => {\n if (err) {\n logger.error('Channel: Getting emojis failed', err);\n return;\n }\n logger.info('Channel: Getting emojis success', emojiContainer_);\n messagesDispatcher({\n type: messageActionTypes.SET_EMOJI_CONTAINER,\n payload: emojiContainer_,\n });\n });\n }\n }, [channelUrl, sdkInit]);\n}\n\nexport default useSetChannel;\n","import { useEffect } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\n\nfunction useInitialMessagesFetch({ currentGroupChannel, userFilledMessageListQuery }, {\n sdk,\n logger,\n messagesDispatcher,\n}) {\n const channelUrl = currentGroupChannel && currentGroupChannel.url;\n useEffect(() => {\n logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);\n\n messagesDispatcher({\n type: messageActionTypes.RESET_MESSAGES,\n });\n\n if (sdk && sdk.MessageListParams\n && currentGroupChannel && currentGroupChannel.getMessagesByMessageId) {\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.isInclusive = true;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = true;\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n\n currentGroupChannel.getMessagesByTimestamp(\n new Date().getTime(),\n messageListParams,\n )\n .then((messages) => {\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimeStamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore,\n lastMessageTimeStamp,\n currentGroupChannel,\n },\n });\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages: [],\n hasMore: false,\n lastMessageTimeStamp: 0,\n currentGroupChannel,\n },\n });\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n });\n }\n }, [channelUrl, userFilledMessageListQuery]);\n}\n\nexport default useInitialMessagesFetch;\n","import { useEffect } from 'react';\n\nimport * as utils from '../utils';\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useHandleReconnect({ isOnline }, {\n logger,\n sdk,\n currentGroupChannel,\n messagesDispatcher,\n userFilledMessageListQuery,\n}) {\n useEffect(() => {\n const wasOffline = !isOnline;\n return () => {\n // state changed from offline to online\n if (wasOffline) {\n logger.info('Refreshing conversation state');\n const { appInfo = {} } = sdk;\n const useReaction = appInfo.isUsingReaction || false;\n\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = useReaction;\n\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_START,\n });\n\n sdk.GroupChannel.getChannel(currentGroupChannel.url)\n .then((groupChannel) => {\n const lastMessageTime = new Date().getTime();\n\n groupChannel.getMessagesByTimestamp(\n lastMessageTime,\n messageListParams,\n )\n .then((messages) => {\n messagesDispatcher({\n type: messageActionTypes.CLEAR_SENT_MESSAGES,\n });\n\n const hasMore = (messages && messages.length > 0);\n const lastMessageTimeStamp = hasMore\n ? messages[0].createdAt\n : null;\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore,\n lastMessageTimeStamp,\n currentGroupChannel,\n },\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n });\n });\n }\n };\n }, [isOnline]);\n}\n\nexport default useHandleReconnect;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useScrollCallback({\n currentGroupChannel,\n lastMessageTimeStamp,\n userFilledMessageListQuery,\n}, {\n hasMore,\n logger,\n messagesDispatcher,\n sdk,\n}) {\n return useCallback((cb) => {\n if (!hasMore) { return; }\n const messageListParams = new sdk.MessageListParams();\n messageListParams.prevResultSize = 30;\n messageListParams.includeReplies = false;\n messageListParams.includeReaction = true;\n\n if (userFilledMessageListQuery) {\n Object.keys(userFilledMessageListQuery).forEach((key) => {\n messageListParams[key] = userFilledMessageListQuery[key];\n });\n }\n logger.info('Channel: Fetching messages', { currentGroupChannel, userFilledMessageListQuery });\n\n currentGroupChannel.getMessagesByTimestamp(\n lastMessageTimeStamp || new Date().getTime(),\n messageListParams,\n )\n .then((messages) => {\n const hasMoreMessages = (messages && messages.length > 0);\n const lastMessageTs = hasMoreMessages\n ? messages[0].createdAt\n : null;\n\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages,\n hasMore: hasMoreMessages,\n lastMessageTimeStamp: lastMessageTs,\n currentGroupChannel,\n },\n });\n cb([messages, null]);\n })\n .catch((error) => {\n logger.error('Channel: Fetching messages failed', error);\n messagesDispatcher({\n type: messageActionTypes.GET_PREV_MESSAGES_SUCESS,\n payload: {\n messages: [],\n hasMore: false,\n lastMessageTimeStamp: 0,\n currentGroupChannel,\n },\n });\n cb([null, error]);\n })\n .finally(() => {\n currentGroupChannel.markAsRead();\n });\n }, [currentGroupChannel, lastMessageTimeStamp]);\n}\n\nexport default useScrollCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useDeleteMessageCallback({ currentGroupChannel, messagesDispatcher }, { logger }) {\n return useCallback((message, cb) => {\n logger.info('Channel | useDeleteMessageCallback: Deleting message', message);\n const { requestState } = message;\n logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', requestState);\n\n // Message is only on local\n if (requestState === 'failed' || requestState === 'pending') {\n logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,\n payload: message.reqId,\n });\n if (cb) { cb(); }\n return;\n }\n\n // Message is on server\n currentGroupChannel.deleteMessage(message, (err) => {\n logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', requestState);\n if (cb) { cb(err); }\n if (!err) {\n logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_DELETED,\n payload: message.messageId,\n });\n } else {\n logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);\n }\n });\n }, [currentGroupChannel, messagesDispatcher]);\n}\n\nexport default useDeleteMessageCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as topics from '../../../lib/pubSub/topics';\n\nfunction useUpdateMessageCallback({\n currentGroupChannel,\n messagesDispatcher,\n onBeforeUpdateUserMessage,\n}, {\n logger,\n pubSub,\n sdk,\n}) {\n return useCallback((messageId, text, cb) => {\n const createParamsDefault = (txt) => {\n const params = new sdk.UserMessageParams();\n params.message = txt;\n return params;\n };\n\n const createCustomPrams = onBeforeUpdateUserMessage\n && typeof onBeforeUpdateUserMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creting params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);\n }\n\n const params = onBeforeUpdateUserMessage\n ? onBeforeUpdateUserMessage(text)\n : createParamsDefault(text);\n\n currentGroupChannel.updateUserMessage(messageId, params, (r, e) => {\n logger.info('Channel: Updating message!', params);\n const swapParams = sdk.getErrorFirstCallback();\n let message = r;\n let err = e;\n if (swapParams) {\n message = e;\n err = r;\n }\n if (cb) {\n cb(err, message);\n }\n if (!err) {\n logger.info('Channel: Updating message success!', message);\n messagesDispatcher({\n type: messageActionTypes.ON_MESSAGE_UPDATED,\n payload: message,\n });\n pubSub.publish(\n topics.UPDATE_USER_MESSAGE,\n {\n message,\n channel: currentGroupChannel,\n },\n );\n } else {\n logger.warning('Channel: Updating message failed!', err);\n }\n });\n }, [currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);\n}\n\nexport default useUpdateMessageCallback;\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\n\nfunction useResendMessageCallback({\n currentGroupChannel,\n messagesDispatcher,\n}, {\n logger,\n}) {\n return useCallback((failedMessage) => {\n logger.info('Channel: Resending message has started', failedMessage);\n const { messageType, file } = failedMessage;\n if (failedMessage && typeof failedMessage.isResendable === 'function'\n && failedMessage.isResendable()\n ) {\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n\n // userMessage\n if (messageType === 'user') {\n currentGroupChannel\n .resendUserMessage(failedMessage)\n .then((message) => {\n logger.info('Channel: Resending message success!', { message });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n })\n .catch((e) => {\n logger.warning('Channel: Resending message failed!', { e });\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: failedMessage,\n });\n });\n\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n return;\n }\n\n if (messageType === 'file') {\n currentGroupChannel\n .resendFileMessage(failedMessage, file)\n .then((message) => {\n logger.info('Channel: Resending file message success!', { message });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n })\n .catch((e) => {\n logger.warning('Channel: Resending file message failed!', { e });\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'failed';\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: failedMessage,\n });\n });\n\n // eslint-disable-next-line no-param-reassign\n failedMessage.requestState = 'pending';\n messagesDispatcher({\n type: messageActionTypes.RESEND_MESSAGEGE_START,\n payload: failedMessage,\n });\n }\n } else {\n // to alert user on console\n // eslint-disable-next-line no-console\n console.error('Message is not resendable');\n logger.warning('Message is not resendable', failedMessage);\n }\n }, [currentGroupChannel, messagesDispatcher]);\n}\n\nexport default useResendMessageCallback;\n","import { useRef, useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\nimport * as topics from '../../../lib/pubSub/topics';\n\nexport default function useSendMessageCallback({ currentGroupChannel, onBeforeSendUserMessage }, {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n}) {\n const messageInputRef = useRef(null);\n\n const sendMessage = useCallback(\n () => {\n const text = messageInputRef.current.value;\n const createParamsDefault = (txt) => {\n const message = (typeof txt === 'string') ? txt.trim() : txt;\n const params = new sdk.UserMessageParams();\n params.message = message;\n return params;\n };\n\n const createCustomPrams = onBeforeSendUserMessage\n && typeof onBeforeSendUserMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creting params using onBeforeSendUserMessage', onBeforeSendUserMessage);\n }\n\n const params = onBeforeSendUserMessage\n ? onBeforeSendUserMessage(text)\n : createParamsDefault(text);\n\n logger.info('Channel: Sending message has started', params);\n const pendingMsg = currentGroupChannel.sendUserMessage(params, (res, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = res;\n let error = err;\n if (swapParams) {\n message = err;\n error = res;\n }\n // sending params instead of pending message\n // to make sure that we can resend the message once it fails\n if (error) {\n logger.warning('Channel: Sending message failed!', {\n message,\n });\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: message,\n });\n return;\n }\n logger.info('Channel: Sending message success!', message);\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n });\n pubSub.publish(topics.SEND_MESSAGE_START, {\n /* pubSub is used instead of messagesDispatcher\n to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */\n message: pendingMsg,\n channel: currentGroupChannel,\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'));\n },\n [currentGroupChannel, onBeforeSendUserMessage],\n );\n\n return [messageInputRef, sendMessage];\n}\n","import { useCallback } from 'react';\n\nimport * as messageActionTypes from '../dux/actionTypes';\nimport * as utils from '../utils';\nimport * as topics from '../../../lib/pubSub/topics';\n\nexport default function useSendFileMessageCallback({\n currentGroupChannel, onBeforeSendFileMessage,\n}, {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n}) {\n const sendMessage = useCallback((file) => {\n const createParamsDefault = (file_) => {\n const params = new sdk.FileMessageParams();\n params.file = file_;\n return params;\n };\n\n const createCustomPrams = onBeforeSendFileMessage\n && typeof onBeforeSendFileMessage === 'function';\n\n if (createCustomPrams) {\n logger.info('Channel: creting params using onBeforeSendFileMessage', onBeforeSendFileMessage);\n }\n\n const params = onBeforeSendFileMessage\n ? onBeforeSendFileMessage(file)\n : createParamsDefault(file);\n\n logger.info('Channel: Uploading file message start!', params);\n const pendingMsg = currentGroupChannel.sendFileMessage(params, (response, err) => {\n const swapParams = sdk.getErrorFirstCallback();\n let message = response;\n let error = err;\n if (swapParams) {\n message = err;\n error = response;\n }\n if (error) {\n // sending params instead of pending message\n // to make sure that we can resend the message once it fails\n logger.error('Channel: Sending file message failed!', message);\n message.localUrl = URL.createObjectURL(file);\n message.file = file;\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_FAILURE,\n payload: message,\n });\n return;\n }\n logger.info('Channel: Sending message success!', message);\n messagesDispatcher({\n type: messageActionTypes.SEND_MESSAGEGE_SUCESS,\n payload: message,\n });\n });\n pubSub.publish(topics.SEND_MESSAGE_START, {\n /* pubSub is used instead of messagesDispatcher\n to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */\n message: {\n ...pendingMsg,\n url: URL.createObjectURL(file),\n // pending thumbnail message seems to be failed\n requestState: 'pending',\n },\n channel: currentGroupChannel,\n });\n setTimeout(() => utils.scrollIntoLast('.sendbird-msg--scroll-ref'), 1000);\n }, [currentGroupChannel, onBeforeSendFileMessage]);\n return [sendMessage];\n}\n","import { useEffect } from 'react';\n\nimport * as utils from '../utils';\nimport * as messageActionTypes from '../dux/actionTypes';\nimport { uuidv4 } from '../../../utils/uuid';\n\nexport default function useSetReadStatus({ allMessages, currentGroupChannel }, {\n messagesDispatcher,\n sdk,\n logger,\n}) {\n useEffect(() => {\n if (!sdk.ChannelHandler || !currentGroupChannel.url) {\n return () => {};\n }\n // todo: move to reducer?\n const setReadStatus = () => {\n const allReadStatus = allMessages.reduce((accumulator, msg) => {\n if (msg.messageId !== 0) {\n return {\n ...accumulator,\n [msg.messageId]: utils.getParsedStatus(msg, currentGroupChannel),\n };\n }\n return accumulator;\n }, {});\n messagesDispatcher({\n type: messageActionTypes.SET_READ_STATUS,\n payload: allReadStatus,\n });\n };\n if (allMessages.length > 0) {\n setReadStatus();\n }\n\n const channelUrl = currentGroupChannel.url;\n const handler = new sdk.ChannelHandler();\n const handleMessageStatus = (c) => {\n if (channelUrl === c.url) {\n setReadStatus();\n }\n };\n handler.onDeliveryReceiptUpdated = handleMessageStatus;\n handler.onReadReceiptUpdated = handleMessageStatus;\n // Add this channel event handler to the SendBird object.\n const handlerId = uuidv4();\n logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);\n sdk.addChannelHandler(handlerId, handler);\n return () => {\n if (sdk && sdk.removeChannelHandler) {\n logger.info('Channel | useSetReadStatus: Removing message reciver handler', handlerId);\n sdk.removeChannelHandler(handlerId);\n }\n };\n }, [allMessages, currentGroupChannel]);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst ReactionButton = React.forwardRef((props, ref) => {\n const {\n children,\n width,\n height,\n onClick,\n selected,\n className,\n } = props;\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n return (\n onClick(e)}\n role=\"button\"\n onKeyDown={(e) => onClick(e)}\n tabIndex={0}\n >\n
\n {children}\n
\n
\n );\n});\n\nReactionButton.propTypes = {\n children: PropTypes.element.isRequired,\n onClick: PropTypes.func,\n selected: PropTypes.bool,\n width: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n height: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nReactionButton.defaultProps = {\n selected: false,\n width: '36px',\n height: '36px',\n onClick: () => { },\n className: '',\n};\n\nexport default ReactionButton;\n","import React, { useMemo } from 'react';\n\nimport { EmojiListItems } from '../../../ui/ContextMenu';\nimport ReactionButton from '../../../ui/ReactionButton';\nimport ImageRenderer from '../../../ui/ImageRenderer';\nimport Icon, { IconTypes } from '../../../ui/Icon';\n\nexport default function useMemoizedEmojiListItems({\n emojiContainer, toggleReaction,\n}, {\n useReaction,\n logger,\n userId,\n emojiAllList,\n}) {\n return useMemo(() => ({\n parentRef,\n parentContainRef,\n message,\n closeDropdown,\n spaceFromTrigger = {},\n }) => {\n if (!useReaction || !(parentRef || parentContainRef || message || closeDropdown)) {\n logger.warning('Channel: Invalid Params in memoizedEmojiListItems');\n return null;\n }\n\n return (\n \n {\n emojiAllList.map((emoji) => {\n const reactedReaction = message.reactions\n .filter((reaction) => reaction.key === emoji.key)[0];\n const isReacted = reactedReaction\n ? !(reactedReaction.userIds.indexOf(userId) < 0)\n : false;\n return (\n {\n closeDropdown();\n toggleReaction(message, emoji.key, isReacted);\n }}\n >\n \n }\n />\n \n );\n })\n }\n \n );\n }, [emojiContainer, toggleReaction]);\n}\n","import { useCallback } from 'react';\n\nexport default function useToggleReactionCallback({ currentGroupChannel }, { logger }) {\n return useCallback((message, key, isReacted) => {\n if (isReacted) {\n currentGroupChannel.deleteReaction(message, key)\n .then((res) => {\n logger.info('Delete reaction success', res);\n })\n .catch((err) => {\n logger.warning('Delete reaction failed', err);\n });\n return;\n }\n currentGroupChannel.addReaction(message, key)\n .then((res) => {\n logger.info('Add reaction success', res);\n })\n .catch((err) => {\n logger.warning('Add reaction failed', err);\n });\n }, [currentGroupChannel]);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport Loader from '../Loader';\nimport MessageStatusType from './type';\n\nimport { getMessageCreatedAt } from '../../utils/utils';\n\nconst MessageStatusTypes = MessageStatusType;\nexport { MessageStatusTypes };\nexport default function MessageStatus({\n message,\n status,\n className,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n const label = () => {\n switch (status) {\n case MessageStatusType.FAILED:\n case MessageStatusType.PENDING: {\n return null;\n }\n case MessageStatusType.SENT:\n case MessageStatusType.DELIVERED:\n case MessageStatusType.READ: {\n return (\n \n {getMessageCreatedAt(message)}\n \n );\n }\n default: return null;\n }\n };\n\n const icon = {\n PENDING: (\n \n \n \n ),\n SENT: ,\n DELIVERED: ,\n READ: ,\n FAILED: ,\n };\n\n return (\n \n {icon[status]}\n \n {label(status)}\n
\n );\n}\n\nMessageStatus.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n status: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nMessageStatus.defaultProps = {\n message: null,\n status: '',\n className: '',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nimport './index.scss';\n\nconst ReactionBadge = React.forwardRef((props, ref) => {\n const {\n className,\n children,\n count,\n selected,\n isAdd,\n onClick,\n } = props;\n\n const injectingClassName = Array.isArray(className) ? className : [className];\n if (selected && !isAdd) {\n injectingClassName.unshift('sendbird-reaction-badge--selected');\n } else if (isAdd) {\n injectingClassName.push('sendbird-reaction-badge--is-add');\n } else {\n injectingClassName.unshift('sendbird-reaction-badge');\n }\n\n return (\n \n
\n
\n {children}\n
\n
\n {count}\n \n
\n
\n );\n});\n\nReactionBadge.propTypes = {\n children: PropTypes.element.isRequired,\n count: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n selected: PropTypes.bool,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n isAdd: PropTypes.bool,\n onClick: PropTypes.func,\n};\n\nReactionBadge.defaultProps = {\n className: '',\n count: '',\n selected: false,\n isAdd: false,\n onClick: () => { },\n};\n\nexport default ReactionBadge;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport Label from '../Label';\n\nconst CLASS_NAME = 'sendbird-tooltip';\n\nexport default function Tooltip({\n className,\n children,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n\n return (\n \n \n {children}\n \n
\n );\n}\n\nTooltip.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.string,\n ]),\n};\n\nTooltip.defaultProps = {\n className: '',\n children: '',\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nconst CLASS_NAME = 'sendbird-tooltip-wrapper';\nconst SPACE_FROM_TRIGGER = 8;\n\nexport default function TooltipWrapper({\n className,\n children,\n hoverTooltip,\n // clickTooltip can be added later\n}) {\n const injectingClassName = Array.isArray(className)\n ? [CLASS_NAME, ...className]\n : [CLASS_NAME, className];\n const [showHoverTooltip, setShowHoverTooltip] = useState(false);\n const childrenRef = useRef(null);\n\n return (\n { setShowHoverTooltip(true); }}\n onFocus={() => { setShowHoverTooltip(true); }}\n onMouseOut={() => { setShowHoverTooltip(false); }}\n onBlur={() => { setShowHoverTooltip(false); }}\n >\n
\n {children}\n
\n {\n showHoverTooltip && (\n
\n
\n
\n {hoverTooltip}\n
\n
\n
\n )\n }\n
\n );\n}\n\nTooltipWrapper.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.element.isRequired,\n hoverTooltip: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]).isRequired,\n};\nTooltipWrapper.defaultProps = {\n className: '',\n};\n","import React, { useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport ReactionBadge from '../ReactionBadge';\nimport ImageRenderer from '../ImageRenderer';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport ContextMenu from '../ContextMenu';\nimport Tooltip from '../Tooltip';\nimport TooltipWrapper from '../TooltipWrapper';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nexport default function EmojiReactions({\n className,\n userId,\n message,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift('sendbird-emoji-reactions');\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const imageWidth = '20px';\n const imageHeight = '20px';\n const emojiReactionAddRef = useRef(null);\n const { reactions = [] } = message;\n const messageReactions = reactions;\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n
\n {\n messageReactions && (\n messageReactions.map((reaction) => {\n const { userIds = [] } = reaction;\n const emojiUrl = emojiAllMap.get(reaction.key) || '';\n const reactedUserCount = userIds.length;\n const reactedByMe = !(userIds.indexOf(userId) < 0);\n const nicknames = userIds\n .filter((currentUserId) => currentUserId !== userId)\n .map((currentUserId) => (\n membersMap.get(currentUserId) || stringSet.TOOLTIP__UNKOWN_USER\n ));\n const stringSetForMe = (nicknames.length > 0)\n ? stringSet.TOOLTIP__AND_YOU : stringSet.TOOLTIP__YOU;\n return (\n 0 && (\n \n <>\n {\n `${(\n nicknames.join(', ')\n )}${(\n reactedByMe\n ? stringSetForMe\n : ''\n )}`\n }\n >\n \n )\n }\n >\n toggleReaction(message, reaction.key, reactedByMe)}\n >\n \n )}\n />\n \n \n );\n })\n )\n }\n {\n (messageReactions.length < emojiAllMap.size)\n && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n
\n );\n}\n\nEmojiReactions.propTypes = {\n userId: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n message: PropTypes.shape({\n reactions: PropTypes.arrayOf(PropTypes.shape({})),\n }).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\nEmojiReactions.defaultProps = {\n className: '',\n membersMap: new Map(),\n userId: '',\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const copyToClipboard = (text) => {\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n};\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport const createUrlTester = (regexp) => (text) => regexp.test(text);\n\nexport default {\n copyToClipboard,\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n getIsSentFromStatus,\n createUrlTester,\n};\n","import React, { useMemo, useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport uuidv4 from '../../utils/uuid';\n\nconst WORD_TYPOGRAPHY = LabelTypography.BODY_1;\nconst EDITED_COLOR = LabelColors.ONBACKGROUND_2;\n\nexport default function useMemoizedMessageText({\n message,\n updatedAt,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return useMemo(() => () => {\n const splitMessage = message.split(/\\r/);\n const matchedMessage = splitMessage\n .map((word) => (word !== '' ? word : ));\n if (updatedAt > 0) {\n matchedMessage.push(\n \n {` ${stringSet.MESSAGE_EDITED} `}\n ,\n );\n }\n return matchedMessage;\n }, [message, updatedAt, className]);\n}\n","import { useEffect } from 'react';\n\nconst MOUSE_ENTER = 'mouseenter';\nconst MOUSE_LEAVE = 'mouseleave';\n\nconst useMouseHover = ({\n ref,\n setHover,\n}) => {\n const handleMouseOver = () => {\n if (ref.current) {\n setHover(true);\n }\n };\n const handleMouseOut = () => {\n if (ref.current) {\n setHover(false);\n }\n };\n\n useEffect(() => {\n const { current } = ref;\n current.addEventListener(MOUSE_ENTER, handleMouseOver);\n current.addEventListener(MOUSE_LEAVE, handleMouseOut);\n return () => {\n current.removeEventListener(MOUSE_ENTER, handleMouseOver);\n current.removeEventListener(MOUSE_LEAVE, handleMouseOut);\n };\n });\n};\n\nexport default useMouseHover;\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport './index.scss';\nimport UserProfile from '../UserProfile';\nimport Avatar from '../Avatar/index';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport MessageStatus from '../MessageStatus';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport EmojiReactions from '../EmojiReactions';\nimport {\n copyToClipboard,\n getMessageCreatedAt,\n getSenderName,\n getSenderProfileUrl,\n getIsSentFromStatus,\n} from './utils';\nimport useMemoizedMessageText from './memoizedMessageText';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst noop = () => { };\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function Message(props) {\n const {\n isByMe,\n userId,\n message,\n className,\n resendMessage,\n disabled,\n showEdit,\n showRemove,\n status,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n } = props;\n\n if (!message) return null;\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n injectingClassName.push(`sendbird-message${isByMe ? '--outgoing' : '--incoming'}`);\n const memoizedMessageText = useMemoizedMessageText({\n message: message.message,\n updatedAt: message.updatedAt,\n className: 'sendbird-user-message-word',\n });\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n}\n\nMessage.propTypes = {\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n userId: PropTypes.string,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])).isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n showEdit: PropTypes.func,\n status: PropTypes.string,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nMessage.defaultProps = {\n isByMe: false,\n disabled: false,\n userId: '',\n resendMessage: noop,\n className: '',\n showEdit: noop,\n showRemove: noop,\n status: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nfunction OutgoingUserMessage({\n userId,\n message,\n showEdit,\n disabled,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n // TODO: when message.requestState is succeeded, consider if it's SENT or DELIVERED\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n const isMessageSent = getIsSentFromStatus(status);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n isMessageSent && (\n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n )\n }\n {\n isMessageSent && (\n {\n if (disabled) { return; }\n showEdit(true);\n closeDropdown();\n }}\n >\n Edit\n \n )\n }\n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n (isMessageSent && useReaction && (emojiAllMap.size > 0))\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n { showRemove(true); }}\n // onResend={() => resendMessage(message)}\n // duplicated and should replace to more\n />\n
\n )\n }\n
\n
\n
\n
\n \n \n \n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n
\n )\n }\n
\n
\n
\n
\n );\n}\n\nfunction IncomingUserMessage({\n userId,\n message,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n const avatarRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n {\n // showProfile && (
)\n }\n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className=\"sendbird-user-message__avatar\"\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n
\n
\n \n \n \n
\n {\n showEmojiReactions && (\n
\n )\n }\n
\n
\n \n
\n
\n {\n showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n \n )}\n />\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nIncomingUserMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nIncomingUserMessage.defaultProps = {\n message: {},\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nOutgoingUserMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n showEdit: PropTypes.func,\n showRemove: PropTypes.func,\n disabled: PropTypes.bool,\n resendMessage: PropTypes.func,\n status: PropTypes.string.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingUserMessage.defaultProps = {\n message: {},\n resendMessage: noop,\n showEdit: noop,\n showRemove: noop,\n disabled: false,\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport Label, { LabelColors, LabelTypography } from '../Label';\n\nexport default function AdminMessage({\n className,\n message,\n}) {\n if (!message.messageType || message.messageType !== 'admin') { // change to use message.isAdminMessage()\n return null;\n }\n\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n \n {message.message}\n \n
\n );\n}\n\nAdminMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n};\n\nAdminMessage.defaultProps = {\n message: {},\n className: '',\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport default {\n getMessageCreatedAt,\n getIsSentFromStatus,\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport {\n getMessageCreatedAt,\n getIsSentFromStatus,\n} from './util';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport Avatar from '../Avatar/index';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport MessageStatus from '../MessageStatus';\nimport EmojiReactions from '../EmojiReactions';\nimport {\n isImage,\n isVideo,\n unSupported,\n} from '../FileViewer/types';\nimport {\n getSenderName,\n getSenderProfileUrl,\n} from '../../utils/utils';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst noop = () => { };\n\nconst OUTGOING_THUMBNAIL_MESSAGE = 'sendbird-outgoing-thumbnail-message';\nconst INCOMING_THUMBNAIL_MESSAGE = 'sendbird-incoming-thumbnail-message';\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function ThumbnailMessage({\n message = {},\n userId,\n disabled,\n isByMe,\n onClick,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n return (\n isByMe\n ? (\n \n )\n : (\n \n )\n );\n}\n\nexport function OutgoingThumbnailMessage({\n message = {},\n userId,\n disabled,\n onClick,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n type,\n url,\n localUrl,\n } = message;\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const reactionAddRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showReactionAddButton = (useReaction && emojiAllMap && emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n isMessageSent && showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n )\n }\n
\n
\n
\n
onClick(true) : () => { }}\n onKeyDown={isMessageSent ? () => onClick(true) : () => { }}\n tabIndex={0}\n role=\"button\"\n >\n {\n isVideo(type) && (\n <>\n {/* eslint-disable-next-line jsx-a11y/media-has-caption */}\n
\n \n \n
\n >\n )\n }\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n Unknown type\n
\n )\n }\n
\n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n
\n )\n }\n
\n
\n
\n
\n );\n}\n\nexport function IncomingThumbnailMessage({\n message = {},\n userId,\n onClick,\n status,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n type,\n url,\n localUrl,\n } = message;\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const reactionAddRef = useRef(null);\n const avatarRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showReactionAddButton = (useReaction && emojiAllMap && emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n {\n !chainTop && (\n
\n {getSenderName(message) || ''}\n \n )\n }\n
\n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${INCOMING_THUMBNAIL_MESSAGE}__avatar`}\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n onClick(true) : () => { }}\n onKeyDown={isMessageSent ? () => onClick(true) : () => { }}\n >\n {\n isVideo(type) && (\n <>\n {/* eslint-disable-next-line jsx-a11y/media-has-caption */}\n
\n \n \n
\n >\n )\n }\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n Unknown type\n
\n )\n }\n
\n
\n {\n (useReaction && message.reactions && message.reactions.length > 0)\n && (\n \n )\n }\n \n
\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n
\n
\n
\n );\n}\n\nThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string,\n resendMessage: PropTypes.func,\n status: PropTypes.string,\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n showRemove: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\nThumbnailMessage.defaultProps = {\n isByMe: false,\n disabled: false,\n resendMessage: noop,\n onClick: noop,\n showRemove: noop,\n status: '',\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nOutgoingThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n resendMessage: PropTypes.func.isRequired,\n status: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n showRemove: PropTypes.func.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\nOutgoingThumbnailMessage.defaultProps = {\n status: '',\n};\n\nIncomingThumbnailMessage.propTypes = {\n message: PropTypes.shape({\n type: PropTypes.string,\n url: PropTypes.string,\n localUrl: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n status: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\nIncomingThumbnailMessage.defaultProps = {\n status: '',\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport './index.scss';\nimport Avatar from '../Avatar/index';\nimport IconButton from '../IconButton';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport TextButton from '../TextButton';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelColors, LabelTypography } from '../Label';\nimport MessageStatus from '../MessageStatus';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport EmojiReactions from '../EmojiReactions';\n\nimport { getSenderProfileUrl, getSenderName, getMessageCreatedAt } from '../../utils/utils';\nimport {\n truncate,\n getIsSentFromStatus,\n} from './utils';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst MAX_TRUNCATE_LENGTH = 40;\nconst GROUPAING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\nconst noop = () => { };\n\nfunction checkFileType(fileUrl) {\n let result = null;\n const imageFile = /(\\.gif|\\.jpg|\\.jpeg|\\.txt|\\.pdf)$/i;\n const audioFile = /(\\.mp3)$/i;\n if (imageFile.test(fileUrl)) {\n result = IconTypes.FILE_DOCUMENT;\n } else if (audioFile.test(fileUrl)) {\n result = IconTypes.FILE_AUDIO;\n }\n return result;\n}\n\nexport function OutgoingFileMessage({\n message,\n userId,\n status,\n showRemove,\n disabled,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const {\n url,\n } = message;\n const openFileUrl = () => { window.open(url); };\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const reactionAddButtonRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const isMessageSent = getIsSentFromStatus(status);\n const showEmojiReactions = isMessageSent && useReaction && message.reactions\n && (message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n {\n checkFileType(url)\n ? (\n \n )\n : null\n }\n \n \n {truncate(message.url, MAX_TRUNCATE_LENGTH)}\n \n \n
\n {\n showEmojiReactions && (\n
\n )\n }\n
\n
\n
\n );\n}\n\nexport function IncomingFileMessage({\n message,\n userId,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) {\n const openFileUrl = () => { window.open(message.url); };\n const messageRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n const parentContainRef = useRef(null);\n const avatarRef = useRef(null);\n const reactionAddButtonRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className=\"sendbird-file-message__avatar\"\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n
\n {\n checkFileType(message.url)\n ? (\n \n )\n : null\n }\n \n \n {truncate(message.url, MAX_TRUNCATE_LENGTH)}\n \n \n
\n {\n (useReaction && message.reactions && (message.reactions.length > 0)) && (\n
\n )\n }\n
\n \n
\n
\n {\n showReactionAddButton && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nOutgoingFileMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n userId: PropTypes.string,\n status: PropTypes.string,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n useReaction: PropTypes.bool.isRequired,\n disabled: PropTypes.bool,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingFileMessage.defaultProps = {\n status: '',\n showRemove: noop,\n resendMessage: noop,\n message: {},\n userId: '',\n disabled: false,\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nIncomingFileMessage.propTypes = {\n message: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array,\n PropTypes.object,\n ])),\n userId: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nIncomingFileMessage.defaultProps = {\n message: {},\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n};\n\nconst MessageSwitch = ({\n message,\n userId,\n disabled,\n isByMe,\n showRemove,\n status,\n resendMessage,\n useReaction,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n chainTop,\n chainBottom,\n}) => (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n);\n\n\nMessageSwitch.propTypes = {\n message: PropTypes.shape({}),\n userId: PropTypes.string,\n isByMe: PropTypes.bool,\n disabled: PropTypes.bool,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n status: PropTypes.string.isRequired,\n useReaction: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nMessageSwitch.defaultProps = {\n message: {},\n isByMe: false,\n disabled: false,\n showRemove: noop,\n resendMessage: noop,\n userId: '',\n emojiAllMap: new Map(),\n membersMap: new Map(),\n toggleReaction: noop,\n memoizedEmojiListItems: () => '',\n chainTop: false,\n chainBottom: false,\n};\n\nexport default MessageSwitch;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { changeColorToClassName, Colors } from '../../utils/color';\nimport Label, { LabelTypography, LabelColors } from '../Label';\n\nexport default function DateSeparator({\n className,\n children,\n separatorColor,\n}) {\n const injectingClassName = (Array.isArray(className)) ? className : [className];\n return (\n \n );\n}\n\nDateSeparator.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.element,\n ]),\n separatorColor: PropTypes.string,\n};\n\nDateSeparator.defaultProps = {\n className: '',\n children: (\n \n Date Separator\n \n ),\n separatorColor: Colors.ONBACKGROUND_4,\n};\n","import React, {\n useState,\n useRef,\n useEffect,\n useContext,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\n\nimport IconButton from '../IconButton';\nimport Button from '../Button';\nimport { Type, Size } from '../Button/type';\n\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n// import IconSend from '../../svgs/icon-send.svg';\n// import IconAttach from '../../svgs/icon-attach.svg';\n\nconst LINE_HEIGHT = 76;\nconst noop = () => { };\nconst KeyCode = {\n SHIFT: 16,\n ENTER: 13,\n};\n\nconst handleUploadFile = (callback) => (event) => {\n if (event.target.files && event.target.files[0]) {\n callback(event.target.files[0]);\n }\n // eslint-disable-next-line no-param-reassign\n event.target.value = '';\n};\n\nconst MessageInput = React.forwardRef((props, ref) => {\n const {\n isEdit,\n disabled,\n value,\n name,\n placeholder,\n maxLength,\n onFileUpload,\n onSendMessage,\n onCancelEdit,\n onStartTyping,\n } = props;\n\n const { stringSet } = useContext(LocalizationContext);\n const fileInputRef = useRef(null);\n const [inputValue, setInputValue] = useState(value);\n const [isShiftPressed, setIsShiftPressed] = useState(false);\n\n const setHeight = () => {\n const elem = ref.current;\n const MAX_HEIGHT = window.document.body.offsetHeight * 0.6;\n if (elem.scrollHeight >= LINE_HEIGHT) {\n if (MAX_HEIGHT < elem.scrollHeight) {\n elem.style.height = 'auto';\n elem.style.height = `${MAX_HEIGHT}px`;\n } else {\n elem.style.height = 'auto';\n elem.style.height = `${elem.scrollHeight}px`;\n }\n } else {\n elem.style.height = '';\n }\n };\n\n // after setHeight called twice, the textarea goes to the initialized\n useEffect(() => {\n setHeight();\n return setHeight;\n }, [inputValue]);\n\n const sendMessage = () => {\n if (inputValue) {\n const trimmedInputValue = inputValue.trim();\n if (isEdit) {\n onSendMessage(name, trimmedInputValue, () => {\n onCancelEdit();\n });\n } else {\n onSendMessage(trimmedInputValue);\n setInputValue('');\n }\n }\n };\n\n return (\n \n \n {\n setInputValue(e.target.value);\n onStartTyping();\n }}\n onKeyDown={(e) => {\n if (e.keyCode === KeyCode.SHIFT) {\n setIsShiftPressed(true);\n }\n if (!isShiftPressed && e.keyCode === KeyCode.ENTER) {\n e.preventDefault();\n sendMessage();\n }\n }}\n onKeyUp={(e) => {\n if (e.keyCode === KeyCode.SHIFT) {\n setIsShiftPressed(false);\n }\n }}\n />\n {/* placeholder */}\n {!inputValue && (\n \n {placeholder || stringSet.CHANNEL__MESSAGE_INPUT__PLACE_HOLDER}\n \n )}\n {/* upload icon */}\n {\n (!isEdit && !inputValue) && (\n {\n // todo: clear previous input\n fileInputRef.current.click();\n }}\n >\n \n \n \n )\n }\n {/* send icon */}\n {\n (!isEdit && inputValue) && (\n \n \n \n )\n }\n
\n {/* Edit */}\n {\n isEdit && (\n \n \n {stringSet.BUTTON__CANCEL}\n \n {\n if (inputValue) {\n const trimmedInputValue = inputValue.trim();\n onSendMessage(name, trimmedInputValue, () => {\n onCancelEdit();\n });\n }\n }}\n >\n {stringSet.BUTTON__SAVE}\n \n
\n )\n }\n \n );\n});\n\nMessageInput.propTypes = {\n placeholder: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n isEdit: PropTypes.bool,\n name: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n value: PropTypes.string,\n disabled: PropTypes.bool,\n maxLength: PropTypes.number,\n onFileUpload: PropTypes.func,\n onSendMessage: PropTypes.func,\n onStartTyping: PropTypes.func,\n onCancelEdit: PropTypes.func,\n};\n\nMessageInput.defaultProps = {\n value: '',\n onSendMessage: noop,\n name: 'sendbird-message-input',\n isEdit: false,\n disabled: false,\n placeholder: '',\n maxLength: 5000,\n onFileUpload: noop,\n onCancelEdit: noop,\n onStartTyping: noop,\n};\n\nexport default MessageInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\n\nimport './index.scss';\nimport Avatar from '../Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconTypes } from '../Icon';\nimport { MODAL_ROOT } from '../../hooks/useModal/ModalRoot';\n\nimport { isImage, isVideo, unSupported } from './types';\n\nexport const FileViewerComponent = ({\n profileUrl,\n nickname,\n type,\n url,\n name,\n onClose,\n onDelete,\n isByMe,\n}) => (\n \n
\n
\n
\n
\n {name}\n \n
\n {nickname}\n \n
\n
\n {\n !unSupported(type) && (\n
\n
\n \n \n {\n onDelete && isByMe && (\n
\n \n
\n )\n }\n
\n )\n }\n
\n \n
\n
\n
\n
\n {isVideo(type) && (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n
\n \n \n )}\n {\n isImage(type) && (\n
\n )\n }\n {\n unSupported(type) && (\n
\n \n Unsupoprted message\n \n
\n )\n }\n
\n
\n);\n\nFileViewerComponent.propTypes = {\n profileUrl: PropTypes.string.isRequired,\n nickname: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n isByMe: PropTypes.bool,\n};\n\nFileViewerComponent.defaultProps = {\n isByMe: true,\n};\n\nexport default function FileViewer(props) {\n const {\n onClose,\n message,\n onDelete,\n isByMe,\n } = props;\n const {\n sender,\n type,\n url,\n name = '',\n } = message;\n const { profileUrl, nickname = '' } = sender;\n return createPortal(\n (\n \n ),\n document.getElementById(MODAL_ROOT),\n );\n}\n\nFileViewer.propTypes = {\n onClose: PropTypes.func.isRequired,\n message: PropTypes.shape({\n sender: PropTypes.shape({\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n }),\n type: PropTypes.string,\n url: PropTypes.string,\n name: PropTypes.string,\n }).isRequired,\n onDelete: PropTypes.func.isRequired,\n isByMe: PropTypes.bool,\n};\n\nFileViewer.defaultProps = {\n isByMe: true,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../../ui/Modal';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\nconst RemoveMessage = (props) => {\n const {\n onCloseModal,\n onDeleteMessage,\n } = props;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n );\n};\n\nRemoveMessage.propTypes = {\n onCloseModal: PropTypes.func.isRequired,\n onDeleteMessage: PropTypes.func.isRequired,\n};\n\nexport default RemoveMessage;\n","import format from 'date-fns/format';\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport default {\n getMessageCreatedAt,\n};\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Avatar from '../Avatar/index';\nimport UserProfile from '../UserProfile';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport MessageStatus from '../MessageStatus';\nimport ContextMenu, { MenuItems, MenuItem } from '../ContextMenu';\nimport IconButton from '../IconButton';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst CLASS_NAME = 'sendbird-unknown-message';\nconst GROUPING_PADDING = '1px';\nconst NORMAL_PADDING = '8px';\n\nexport default function UnknownMessage({\n message,\n isByMe,\n status,\n className,\n showRemove,\n chainTop,\n chainBottom,\n}) {\n const injectingClassName = Array.isArray(className) ? className : [className];\n injectingClassName.unshift(CLASS_NAME);\n injectingClassName.push(`${CLASS_NAME}${isByMe ? '--outgoing' : '--incoming'}`);\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n}\n\nUnknownMessage.propTypes = {\n message: PropTypes.shape({}).isRequired,\n isByMe: PropTypes.bool,\n status: PropTypes.string,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n showRemove: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nUnknownMessage.defaultProps = {\n isByMe: false,\n status: '',\n className: '',\n showRemove: () => { },\n chainTop: false,\n chainBottom: false,\n};\n\nfunction OutgoingUnknownMessage({\n message,\n status,\n showRemove,\n chainTop,\n chainBottom,\n}) {\n const className = 'sendbird-outgoing-unknown-message';\n const messageRef = useRef(null);\n const parentContainRef = useRef(null);\n const menuRef = useRef(null);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { showRemove(true); closeDropdown(); }}\n >\n Delete\n \n \n )}\n />\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n \n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n \n \n {stringSet.UNKNOWN__CANNOT_READ_MESSAGE}\n \n
\n
\n
\n
\n );\n}\n\nfunction IncomingUnknownMessage({\n message,\n chainTop,\n chainBottom,\n}) {\n const className = 'sendbird-incoming-unknown-message';\n const { sender } = message;\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${className}__left__sender-profile-image`}\n src={sender.profileUrl}\n width=\"28px\"\n height=\"28px\"\n alt=\"sender-profile-image\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n \n
\n {\n !chainTop && (\n
\n {sender.nickname || stringSet.NO_NAME}\n \n )\n }\n
\n \n {stringSet.UNKNOWN__UNKNOWN_MESSAGE_TYPE}\n \n \n {stringSet.UNKNOWN__CANNOT_READ_MESSAGE}\n \n
\n
\n
\n {\n !chainBottom && (\n \n {utils.getMessageCreatedAt(message)}\n \n )\n }\n
\n
\n
\n );\n}\n\nOutgoingUnknownMessage.propTypes = {\n message: PropTypes.shape({}).isRequired,\n status: PropTypes.string.isRequired,\n showRemove: PropTypes.func,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingUnknownMessage.defaultProps = {\n showRemove: () => { },\n};\n\nIncomingUnknownMessage.propTypes = {\n message: PropTypes.shape({\n sender: PropTypes.shape({\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n }),\n }).isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n","export const URL_REG = /[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;\nexport const OG_MESSAGE = 'sendbird-og-message';\nexport const OUTGOING_OG_MESSAGE = 'sendbird-outgoing-og-message';\nexport const INCOMING_OG_MESSAGE = 'sendbird-incoming-og-message';\nexport const generateMockMessage = (process) => {\n const message = {\n message: 'go to this link sendbird.com it will be usefull to you!!',\n ogMetaData: {\n title: 'This is the TITLE',\n description: 'I\\'m description I\\'m description I\\'m description I\\'m description ',\n url: 'https://sendbird.com/',\n defaultImage: {\n url: 'https://static.sendbird.com/sample/profiles/profile_12_512px.png',\n alt: 'test',\n },\n },\n sender: {\n profileUrl: 'https://static.sendbird.com/sample/profiles/profile_12_512px.png',\n nickname: 'Hoonying',\n },\n createdAt: 2000000,\n };\n if (process && typeof process === 'function') {\n return process(message);\n }\n return message;\n};\n\nexport default {\n URL_REG,\n OG_MESSAGE,\n OUTGOING_OG_MESSAGE,\n INCOMING_OG_MESSAGE,\n generateMockMessage,\n};\n","import format from 'date-fns/format';\nimport MessageStatusType from '../MessageStatus/type';\n\nexport const createUrlTester = (regexp) => (text) => regexp.test(text);\n\nexport const getIsSentFromStatus = (status) => (\n status === MessageStatusType.SENT\n || status === MessageStatusType.DELIVERED\n || status === MessageStatusType.READ\n);\n\nexport const copyToClipboard = (text) => {\n try {\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path\n // to prevent textarea being shown while dialog is visible.\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n } catch (err) {\n return err;\n }\n};\n\nexport const getSenderProfileUrl = (message) => message.sender && message.sender.profileUrl;\n\nexport const getSenderName = (message) => (\n message.sender && (\n message.sender.friendName\n || message.sender.nickname\n || message.sender.userId\n )\n);\n\nexport const getMessageCreatedAt = (message) => format(message.createdAt, 'p');\n\nexport const checkOGIsEnalbed = (message) => {\n const { ogMetaData } = message;\n if (!ogMetaData) {\n return false;\n }\n const { url } = ogMetaData;\n if (!url) {\n return false;\n }\n return true;\n};\n\nexport default {\n getSenderName,\n createUrlTester,\n copyToClipboard,\n checkOGIsEnalbed,\n getMessageCreatedAt,\n getIsSentFromStatus,\n getSenderProfileUrl,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport './index.scss';\n\nconst LINK_LABEL = 'sendbird-link-label';\nconst http = /https?:\\/\\//;\n\nexport default function LinkLabel({\n className,\n src,\n type,\n color,\n children,\n}) {\n const injecingClassName = Array.isArray(className) ? className : [className];\n const url = (http.test(src)) ? src : `http://${src}`;\n\n return (\n \n \n {children}\n \n \n );\n}\n\nLinkLabel.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.element),\n ]).isRequired,\n src: PropTypes.string.isRequired,\n type: PropTypes.oneOf(Object.keys(LabelTypography)).isRequired,\n color: PropTypes.oneOf(Object.keys(LabelColors)).isRequired,\n};\n\nLinkLabel.defaultProps = {\n className: '',\n};\n\nexport const LinkLabelTypography = LabelTypography;\nexport const LinkLabelColors = LabelColors;\n","import React, { useMemo, useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport LinkLabel from '../LinkLabel';\nimport uuidv4 from '../../utils/uuid';\nimport { createUrlTester } from './utils';\nimport { URL_REG } from './const';\n\nconst WORD_TYPOGRAPHY = LabelTypography.BODY_1;\nconst WORD_COLOR = LabelColors.ONBACKGROUND_1;\nconst EDITED_COLOR = LabelColors.ONBACKGROUND_2;\nconst isUrl = createUrlTester(URL_REG);\n\nexport default function useMemoizedMessageText({\n message,\n updatedAt,\n className,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n return useMemo(() => () => {\n const splitMessage = message.split(' ');\n const matchedMessage = splitMessage\n .map((word) => (\n isUrl(word)\n ? (\n \n {word}\n \n )\n : (\n \n {word}\n \n )\n ));\n if (updatedAt > 0) {\n matchedMessage.push(\n \n {stringSet.MESSAGE_EDITED}\n ,\n );\n }\n // return (<>{matchedMessage}>);\n return matchedMessage;\n }, [message, updatedAt, className]);\n}\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n OG_MESSAGE,\n OUTGOING_OG_MESSAGE,\n INCOMING_OG_MESSAGE,\n} from './const';\nimport {\n getSenderName,\n copyToClipboard,\n checkOGIsEnalbed,\n getMessageCreatedAt,\n getIsSentFromStatus,\n getSenderProfileUrl,\n} from './utils';\nimport { UserProfileContext } from '../../lib/UserProfileContext';\nimport useMemoizedMessageText from './memoizedMessageText';\nimport './index.scss';\n\nimport UserProfile from '../UserProfile';\nimport IconButton from '../IconButton';\nimport ImageRenderer from '../ImageRenderer';\nimport MessageStatus from '../MessageStatus';\nimport EmojiReactions from '../EmojiReactions';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport ContextMenu, { MenuItem, MenuItems } from '../ContextMenu';\nimport Avatar from '../Avatar/index';\n\nimport useMouseHover from '../../hooks/onMouseHover';\n\nconst GROUPING_PADDING = '1px';\nconst NORAML_PADDING = '8px';\n\nconst OGMessageSwitch = ({\n isByMe,\n userId,\n status,\n message,\n disabled,\n showEdit,\n chainTop,\n className,\n membersMap,\n showRemove,\n useReaction,\n emojiAllMap,\n chainBottom,\n resendMessage,\n toggleReaction,\n memoizedEmojiListItems,\n}) => {\n const { ogMetaData } = message;\n const injectingClassName = Array.isArray(className) ? className : [className];\n\n const memoizedMessageText = useMemoizedMessageText({\n message: message.message,\n updatedAt: message.updatedAt,\n className: 'sendbird-og-message-word',\n });\n const openLink = () => {\n if (checkOGIsEnalbed(message)) {\n const { url } = ogMetaData;\n window.open(url);\n }\n };\n\n return (\n \n {\n isByMe\n ? (\n \n )\n : (\n \n )\n }\n
\n );\n};\n\nfunction OutgoingOGMessage(props) {\n const {\n status,\n userId,\n message,\n disabled,\n openLink,\n showEdit,\n chainTop,\n showRemove,\n membersMap,\n chainBottom,\n emojiAllMap,\n useReaction,\n resendMessage,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n } = props;\n const {\n ogMetaData,\n } = message;\n const {\n defaultImage,\n } = ogMetaData;\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n const messageRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n\n const isMessageSent = getIsSentFromStatus(status);\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n
\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n isMessageSent && (\n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n )\n }\n {\n isMessageSent && (\n {\n if (disabled) { return; }\n showEdit(true);\n closeDropdown();\n }}\n >\n Edit\n \n )\n }\n {\n (message && message.isResendable && message.isResendable()) && (\n {\n resendMessage(message);\n closeDropdown();\n }}\n >\n Resend\n \n )\n }\n {\n if (disabled) { return; }\n showRemove(true);\n closeDropdown();\n }}\n >\n Delete\n \n \n )}\n />\n {\n (isMessageSent && useReaction && (emojiAllMap.size > 0))\n && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n \n
\n )\n }\n
\n
\n
\n \n
\n
\n {\n defaultImage && (\n \n \n
\n )}\n />\n )\n }\n
\n
\n {\n ogMetaData.title && (\n
\n \n {ogMetaData.title}\n \n
\n )\n }\n {\n ogMetaData.description && (\n
\n \n {ogMetaData.description}\n \n
\n )\n }\n {\n ogMetaData.url && (\n
\n \n {ogMetaData.url}\n \n
\n )\n }\n {\n showEmojiReactions\n && (\n
event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"button\"\n tabIndex={0}\n >\n \n
\n )\n }\n
\n
\n
\n \n );\n}\n\nfunction IncomingOGMessage(props) {\n const {\n userId,\n message,\n openLink,\n chainTop,\n membersMap,\n chainBottom,\n useReaction,\n emojiAllMap,\n toggleReaction,\n memoizedMessageText,\n memoizedEmojiListItems,\n } = props;\n const {\n ogMetaData,\n } = message;\n const {\n defaultImage,\n } = ogMetaData;\n const MemoizedMessageText = memoizedMessageText;\n const MemoizedEmojiListItems = memoizedEmojiListItems;\n\n const messageRef = useRef(null);\n const avatarRef = useRef(null);\n const parentRefReactions = useRef(null);\n const parentRefMenus = useRef(null);\n const parentContainRef = useRef(null);\n\n const {\n disableUserProfile,\n renderUserProfile,\n } = React.useContext(UserProfileContext);\n\n const [mousehover, setMousehover] = useState(false);\n const [moreActive, setMoreActive] = useState(false);\n\n const showEmojiReactions = (useReaction && message.reactions && message.reactions.length > 0);\n const showReactionAddButton = useReaction && emojiAllMap && (emojiAllMap.size > 0);\n\n const handleMoreIconClick = () => {\n setMoreActive(true);\n };\n const handleMoreIconBlur = () => {\n setMoreActive(false);\n };\n\n useMouseHover({\n ref: messageRef,\n setHover: setMousehover,\n });\n\n return (\n \n
\n
\n {\n !chainBottom && (\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n className={`${INCOMING_OG_MESSAGE}__avatar`}\n src={getSenderProfileUrl(message)}\n width=\"28px\"\n height=\"28px\"\n alt=\"sender-profile-image\"\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: message.sender,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n )\n }\n {\n !chainTop && (\n \n {getSenderName(message)}\n \n )\n }\n \n \n
\n \n {\n defaultImage && (\n \n \n
\n )}\n />\n )\n }\n \n
\n {\n ogMetaData.title && (\n
\n\n \n {ogMetaData.title}\n \n
\n )\n }\n {\n ogMetaData.description && (\n
\n \n {ogMetaData.description}\n \n
\n )\n }\n {\n ogMetaData.url && (\n
\n \n {ogMetaData.url}\n \n
\n )\n }\n {\n showEmojiReactions\n && (\n
event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"button\"\n tabIndex={0}\n >\n \n
\n )\n }\n
\n
\n
\n {\n !chainBottom && !(mousehover || moreActive) && (\n
\n {getMessageCreatedAt(message)}\n \n )\n }\n
\n {\n showReactionAddButton\n && (\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n )}\n />\n )\n }\n (\n {\n toggleDropdown();\n handleMoreIconClick();\n }}\n onBlur={() => {\n handleMoreIconBlur();\n }}\n >\n \n \n )}\n menuItems={(closeDropdown) => (\n \n { copyToClipboard(message.message); closeDropdown(); }}\n >\n Copy\n \n \n )}\n />\n
\n
\n
\n \n );\n}\n\nexport default OGMessageSwitch;\n\nconst noop = () => { };\n\nOGMessageSwitch.propTypes = {\n isByMe: PropTypes.bool.isRequired,\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n sender: PropTypes.shape({}),\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n }).isRequired,\n useReaction: PropTypes.bool.isRequired,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n status: PropTypes.string,\n disabled: PropTypes.bool,\n showEdit: PropTypes.func,\n showRemove: PropTypes.func,\n resendMessage: PropTypes.func,\n toggleReaction: PropTypes.func,\n membersMap: PropTypes.instanceOf(Map),\n emojiAllMap: PropTypes.instanceOf(Map),\n memoizedEmojiListItems: PropTypes.func,\n chainTop: PropTypes.bool,\n chainBottom: PropTypes.bool,\n};\n\nOGMessageSwitch.defaultProps = {\n className: '',\n status: '',\n disabled: false,\n showEdit: noop,\n showRemove: noop,\n resendMessage: noop,\n toggleReaction: noop,\n membersMap: new Map(),\n emojiAllMap: new Map(),\n memoizedEmojiListItems: noop,\n chainTop: false,\n chainBottom: false,\n};\n\nOutgoingOGMessage.propTypes = {\n status: PropTypes.string,\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n isResendable: PropTypes.func,\n errorCode: PropTypes.number,\n }).isRequired,\n disabled: PropTypes.bool.isRequired,\n openLink: PropTypes.func.isRequired,\n showEdit: PropTypes.func.isRequired,\n showRemove: PropTypes.func.isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n useReaction: PropTypes.bool.isRequired,\n resendMessage: PropTypes.func.isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n\nOutgoingOGMessage.defaultProps = {\n status: '',\n};\n\nIncomingOGMessage.propTypes = {\n userId: PropTypes.string.isRequired,\n message: PropTypes.shape({\n message: PropTypes.string,\n sender: PropTypes.shape({}),\n ogMetaData: PropTypes.shape({\n title: PropTypes.string,\n description: PropTypes.string,\n url: PropTypes.string,\n defaultImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n }),\n reactions: PropTypes.array,\n updatedAt: PropTypes.number,\n }).isRequired,\n openLink: PropTypes.func.isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n useReaction: PropTypes.bool.isRequired,\n toggleReaction: PropTypes.func.isRequired,\n memoizedMessageText: PropTypes.func.isRequired,\n memoizedEmojiListItems: PropTypes.func.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n};\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport format from 'date-fns/format';\n\nimport Message from '../../../ui/Message';\nimport AdminMessage from '../../../ui/AdminMessage';\nimport ThumbnailMessage from '../../../ui/ThumbnailMessage';\nimport FileMessage from '../../../ui/FileMessage';\nimport DateSeparator from '../../../ui/DateSeparator';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport MessageInput from '../../../ui/MessageInput';\nimport FileViewer from '../../../ui/FileViewer';\nimport RemoveMessageModal from './RemoveMessage';\nimport UnknownMessage from '../../../ui/UnknownMessage';\nimport OGMessage from '../../../ui/OGMessage';\n\nimport { MessageTypes, getMessageType } from '../types';\n\nexport default function MessageHoc({\n message,\n userId,\n disabled,\n editDisabled,\n hasSeperator,\n deleteMessage,\n updateMessage,\n status,\n resendMessage,\n useReaction,\n chainTop,\n chainBottom,\n emojiAllMap,\n membersMap,\n toggleReaction,\n memoizedEmojiListItems,\n}) {\n const { sender = {} } = message;\n const [showEdit, setShowEdit] = useState(false);\n const [showRemove, setShowRemove] = useState(false);\n const [showFileViewer, setShowFileViewer] = useState(false);\n const editMessageInputRef = useRef(null);\n\n const isByMe = (userId === sender.userId)\n || (message.requestState === 'pending')\n || (message.requestState === 'failed');\n\n if (showEdit) {\n return (\n { setShowEdit(false); }}\n value={message.message}\n />\n );\n }\n\n return (\n \n {/* date-seperator */}\n {\n hasSeperator && (\n
\n \n {format(message.createdAt, 'MMMM dd, yyyy')}\n \n \n )\n }\n {/* Message */}\n {\n {\n [MessageTypes.ADMIN]:
,\n [MessageTypes.FILE]: (\n
\n ),\n [MessageTypes.OG]: (\n
\n ),\n [MessageTypes.THUMBNAIL]: (\n
\n ),\n [MessageTypes.USER]: (\n
\n ),\n }[getMessageType(message)]\n }\n {/* Modal */}\n {\n showRemove && (\n
setShowRemove(false)}\n onDeleteMessage={() => {\n deleteMessage(message);\n }}\n />\n )\n }\n {\n showFileViewer && (\n setShowFileViewer(false)}\n message={message}\n onDelete={() => {\n deleteMessage(message, () => {\n setShowFileViewer(false);\n });\n }}\n isByMe={isByMe}\n />\n )\n }\n {\n !((message.isFileMessage && message.isFileMessage()) || message.messageType === 'file')\n && !(message.isAdminMessage && message.isAdminMessage())\n && !(((message.isUserMessage && message.isUserMessage()) || message.messageType === 'user'))\n && !(showFileViewer)\n && (\n \n )\n }\n \n );\n}\n\nMessageHoc.propTypes = {\n userId: PropTypes.string,\n message: PropTypes.shape({\n isFileMessage: PropTypes.func,\n isAdminMessage: PropTypes.func,\n isUserMessage: PropTypes.func,\n isDateSeperator: PropTypes.func,\n // should be a number, but there's a bug in SDK shich returns string\n messageId: PropTypes.number,\n type: PropTypes.string,\n createdAt: PropTypes.number,\n message: PropTypes.string,\n requestState: PropTypes.string,\n messageType: PropTypes.string,\n sender: PropTypes.shape({ userId: PropTypes.string }),\n ogMetaData: PropTypes.shape({}),\n }),\n hasSeperator: PropTypes.bool,\n disabled: PropTypes.bool,\n editDisabled: PropTypes.bool,\n deleteMessage: PropTypes.func.isRequired,\n updateMessage: PropTypes.func.isRequired,\n resendMessage: PropTypes.func.isRequired,\n status: PropTypes.string,\n useReaction: PropTypes.bool.isRequired,\n chainTop: PropTypes.bool.isRequired,\n chainBottom: PropTypes.bool.isRequired,\n emojiAllMap: PropTypes.instanceOf(Map).isRequired,\n membersMap: PropTypes.instanceOf(Map).isRequired,\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\n\nMessageHoc.defaultProps = {\n userId: '',\n editDisabled: false,\n message: {},\n hasSeperator: false,\n disabled: false,\n status: '',\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport isSameDay from 'date-fns/isSameDay';\n\nimport './conversation-scroll.scss';\nimport * as messageActionTypes from '../dux/actionTypes';\n\nimport MessageHOC from './MessageHOC';\nimport {\n getParsedStatus,\n compareMessagesForGrouping,\n} from '../utils';\n\nexport default class ConversationScroll extends Component {\n onScroll = (e) => {\n const {\n scrollRef,\n hasMore,\n messagesDispatcher,\n onScroll,\n currentGroupChannel,\n } = this.props;\n\n const element = e.target;\n const {\n scrollTop,\n clientHeight,\n scrollHeight,\n } = element;\n if (scrollTop === 0) {\n if (!hasMore) {\n return;\n }\n const nodes = scrollRef.current.querySelectorAll('.sendbird-msg--scroll-ref');\n const first = nodes[0];\n onScroll(([messages]) => {\n if (messages) {\n // https://github.com/scabbiaza/react-scroll-position-on-updating-dom\n first.scrollIntoView();\n }\n });\n }\n\n setTimeout(() => {\n // mark as read if scroll is at end\n if (clientHeight + scrollTop === scrollHeight) {\n messagesDispatcher({\n type: messageActionTypes.MARK_AS_READ,\n });\n currentGroupChannel.markAsRead();\n }\n }, 500);\n }\n\n render() {\n const {\n userId,\n disabled,\n scrollRef,\n readStatus,\n membersMap,\n initialized,\n allMessages,\n useReaction,\n emojiAllMap,\n editDisabled,\n deleteMessage,\n updateMessage,\n resendMessage,\n renderChatItem,\n emojiContainer,\n toggleReaction,\n useMessageGrouping,\n currentGroupChannel,\n memoizedEmojiListItems,\n } = this.props;\n return (\n \n
\n
\n {/*\n To do: Implement windowing\n Implement windowing if you are dealing with large number of messages/channels\n https://github.com/bvaughn/react-window -> recommendation\n We hesitate to bring one more dependency to our library,\n we are planning to implement it inside the library\n */}\n
\n {\n initialized\n && allMessages.map(\n (m, idx) => {\n const previousMessage = allMessages[idx - 1];\n const nextMessage = allMessages[idx + 1];\n const [chainTop, chainBottom] = useMessageGrouping\n ? compareMessagesForGrouping(previousMessage, m, nextMessage)\n : [false, false];\n const previousMessageCreatedAt = previousMessage && previousMessage.createdAt;\n const currentCreatedAt = m.createdAt;\n // https://stackoverflow.com/a/41855608\n const hasSeperator = !(previousMessageCreatedAt && (\n isSameDay(currentCreatedAt, previousMessageCreatedAt)\n ));\n if (renderChatItem) {\n return (\n
\n {\n renderChatItem({\n message: m,\n channel: currentGroupChannel,\n onDeleteMessage: deleteMessage,\n onUpdateMessage: updateMessage,\n onResendMessage: resendMessage,\n emojiContainer,\n })\n }\n
\n );\n }\n\n return (\n
\n );\n },\n )\n }\n
\n
\n
\n );\n }\n}\n\nConversationScroll.propTypes = {\n // https://stackoverflow.com/a/52646941\n scrollRef: PropTypes.shape({\n current: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.shape({}),\n ]),\n }).isRequired,\n hasMore: PropTypes.bool,\n messagesDispatcher: PropTypes.func.isRequired,\n onScroll: PropTypes.func,\n initialized: PropTypes.bool,\n editDisabled: PropTypes.bool,\n disabled: PropTypes.bool,\n userId: PropTypes.string,\n allMessages: PropTypes.arrayOf(PropTypes.shape({\n createdAt: PropTypes.number,\n })).isRequired,\n deleteMessage: PropTypes.func.isRequired,\n resendMessage: PropTypes.func.isRequired,\n updateMessage: PropTypes.func.isRequired,\n readStatus: PropTypes.shape({}).isRequired,\n currentGroupChannel: PropTypes.shape({\n markAsRead: PropTypes.func,\n members: PropTypes.arrayOf(PropTypes.shape({})),\n }).isRequired,\n renderChatItem: PropTypes.element,\n useReaction: PropTypes.bool,\n emojiContainer: PropTypes.shape({}),\n emojiAllMap: PropTypes.instanceOf(Map),\n membersMap: PropTypes.instanceOf(Map),\n useMessageGrouping: PropTypes.bool,\n toggleReaction: PropTypes.func,\n memoizedEmojiListItems: PropTypes.func,\n};\n\nConversationScroll.defaultProps = {\n hasMore: false,\n editDisabled: false,\n disabled: false,\n initialized: false,\n userId: '',\n renderChatItem: null,\n onScroll: null,\n useReaction: true,\n emojiContainer: {},\n emojiAllMap: new Map(),\n membersMap: new Map(),\n useMessageGrouping: true,\n toggleReaction: () => { },\n memoizedEmojiListItems: () => '',\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './notification.scss';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../ui/Icon';\n\nexport default function Notification({\n count,\n time,\n onClick,\n}) {\n const { stringSet } = useContext(LocalizationContext);\n const timeArray = time.split(' ');\n timeArray.splice(-2, 0, stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__ON);\n return (\n // eslint-disable-next-line\n \n \n {`${count} `}\n {stringSet.CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE}\n {` ${timeArray.join(' ')}`}\n \n \n
\n );\n}\n\nNotification.propTypes = {\n count: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n time: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n};\n\nNotification.defaultProps = {\n count: 0,\n time: '',\n};\n","import React, { useContext } from 'react';\n\nimport './notification.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelTypography } from '../../../ui/Label';\n\nconst FrozenNotification = (): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n {stringSet.CHANNEL_FROZEN}\n \n
\n );\n}\n\nexport default FrozenNotification;\n","import React, { useEffect, useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { uuidv4 } from '../../../utils/uuid';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\n\nconst TypingIndicatorText = ({ members }) => {\n const { stringSet } = useContext(LocalizationContext);\n if (!members || members.length === 0) {\n return '';\n }\n\n if (members && members.length === 1) {\n return `${members[0].nickname} ${stringSet.TYPING_INDICATOR__IS_TYPING}`;\n }\n\n if (members && members.length === 2) {\n return `${members[0].nickname} ${stringSet.TYPING_INDICATOR__AND} ${members[1].nickname} ${stringSet.TYPING_INDICATOR__ARE_TYPING}`;\n }\n\n return stringSet.TYPING_INDICATOR__MULTIPLE_TYPING;\n};\n\nfunction TypingIndicator({ channelUrl, sb, logger }) {\n const [handlerId, setHandlerId] = useState(uuidv4());\n const [typingMembers, setTypingMembers] = useState([]);\n\n useEffect(() => {\n if (sb && sb.ChannelHandler) {\n sb.removeChannelHandler(handlerId);\n const newHandlerId = uuidv4();\n const handler = new sb.ChannelHandler();\n // there is a possible warning in here - setState called after unmount\n handler.onTypingStatusUpdated = (groupChannel) => {\n logger.info('Channel > Typing Indicator: onTypingStatusUpdated', groupChannel);\n const members = groupChannel.getTypingMembers();\n if (groupChannel.url === channelUrl) {\n setTypingMembers(members);\n }\n };\n sb.addChannelHandler(newHandlerId, handler);\n setHandlerId(newHandlerId);\n }\n\n return () => {\n setTypingMembers([]);\n if (sb && sb.removeChannelHandler) {\n sb.removeChannelHandler(handlerId);\n }\n };\n }, [channelUrl]);\n\n return (\n \n \n \n );\n}\n\nTypingIndicator.propTypes = {\n channelUrl: PropTypes.string.isRequired,\n sb: PropTypes.shape({\n ChannelHandler: PropTypes.func,\n removeChannelHandler: PropTypes.func,\n addChannelHandler: PropTypes.func,\n }).isRequired,\n logger: PropTypes.shape({\n info: PropTypes.func,\n }).isRequired,\n};\n\nexport default TypingIndicator;\n","// Logic required to handle message input rendering\n\nimport React, { useContext } from 'react';\n\nimport { SendbirdTypes } from '../../../types';\nimport { RenderMessageInputProps } from '../../../index';\nimport * as utils from '../utils.js';\n\nimport MessageInput from '../../../ui/MessageInput';\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\n\ninterface Props {\n channel: SendbirdTypes[\"GroupChannel\"];\n user: SendbirdTypes[\"User\"];\n isOnline: boolean;\n initialized: boolean;\n onSendMessage(): void;\n onFileUpload(): void;\n renderMessageInput(renderProps: RenderMessageInputProps): JSX.Element;\n}\n\nconst MessageInputWrapper = ({\n channel,\n user,\n onSendMessage,\n onFileUpload,\n renderMessageInput,\n isOnline,\n initialized,\n}: Props, ref: React.RefObject): JSX.Element => {\n const { stringSet } = useContext(LocalizationContext);\n const disabled = !initialized\n || utils.isDisabledBecauseFrozen(channel)\n || utils.isDisabledBecauseMuted(channel)\n || !isOnline;\n\n const isOperator = utils.isOperator(channel);\n const { isBroadcast } = channel;\n\n // custom message\n if (renderMessageInput) {\n return renderMessageInput({ channel, user, disabled });\n }\n\n // broadcast channel + not operator\n if (isBroadcast && !isOperator) {\n return null;\n }\n\n // other conditions\n return (\n {\n channel.startTyping();\n }}\n onSendMessage={onSendMessage}\n onFileUpload={onFileUpload}\n />\n );\n}\n\nexport default React.forwardRef(MessageInputWrapper);\n","import React, { useContext } from 'react';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, {\n LabelTypography,\n LabelColors,\n} from '../Label';\nimport Icon, { IconTypes, IconColors } from '../Icon';\n\nimport './index.scss';\n\nfunction ConnectionStatus() {\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n \n { stringSet.TRYING_TO_CONNECT }\n \n \n
\n );\n}\n\nexport default ConnectionStatus;\n","import formatDistanceToNowStrict from 'date-fns/formatDistanceToNowStrict';\nimport { LabelStringSet } from '../Label';\n\nexport const prettyDate = (date) => formatDistanceToNowStrict(date, { addSuffix: true });\n\nexport const getOthersLastSeenAt = (channel) => {\n if (!channel || !channel.getReadStatus || !channel.members || channel.members.length !== 2) {\n return '';\n }\n const lastSeenList = [...Object.values(channel.getReadStatus())];\n const lastSeenAt = lastSeenList.length > 0\n ? lastSeenList[0].last_seen_at\n : 0;\n if (lastSeenAt === 0) {\n return '';\n }\n return prettyDate(lastSeenAt);\n};\n\nexport const getChannelTitle = (channel = {}, currentUserId, stringSet = LabelStringSet) => {\n if (!channel || (!channel.name && !channel.members)) {\n return stringSet.NO_TITLE;\n }\n if (channel.name && channel.name !== 'Group Channel') {\n return channel.name;\n }\n\n if (channel.members.length === 1) {\n return stringSet.NO_MEMBERS;\n }\n\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => (nickname || stringSet.NO_NAME))\n .join(', ');\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default function AutoRefresh({\n repeatFunc,\n}) {\n const [label, setLabel] = useState(repeatFunc());\n\n useEffect(() => {\n const interval = setInterval(() => {\n if (label !== repeatFunc()) {\n setLabel(repeatFunc());\n }\n }, 10000);\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return ({label}
);\n}\n\nAutoRefresh.propTypes = {\n repeatFunc: PropTypes.func.isRequired,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport IconButton from '../IconButton';\nimport AutoRefresh from '../AutoRefresh';\nimport ChannelAvatar from '../ChannelAvatar/index';\n\nexport default function ChatHeader(props) {\n const {\n currentGroupChannel,\n currentUser,\n title,\n subTitle,\n isActive,\n isMuted,\n onActionClick,\n theme,\n } = props;\n const { userId } = currentUser;\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
\n
\n {title || utils.getChannelTitle(currentGroupChannel, userId, stringSet)}\n \n {\n (typeof isActive === 'string' && isActive === 'true') || (typeof isActive === 'boolean' && isActive)\n ?
\n : null\n }\n
\n {\n subTitle\n || utils.getOthersLastSeenAt(currentGroupChannel)} />\n }\n \n
\n
\n {\n (typeof isMuted === 'string' && isMuted === 'true') || (typeof isMuted === 'boolean' && isMuted)\n ? \n : null\n }\n \n \n \n
\n
\n );\n}\n\nChatHeader.propTypes = {\n currentGroupChannel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n coverUrl: PropTypes.string,\n }),\n theme: PropTypes.string,\n currentUser: PropTypes.shape({\n userId: PropTypes.string,\n }),\n title: PropTypes.string,\n subTitle: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n isActive: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n isMuted: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n onActionClick: PropTypes.func,\n};\n\nChatHeader.defaultProps = {\n currentGroupChannel: {},\n title: '',\n theme: 'light',\n subTitle: '',\n isActive: false,\n isMuted: false,\n currentUser: {},\n onActionClick: () => { },\n};\n","import React, {\n useEffect,\n useRef,\n useReducer,\n useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport * as utils from './utils';\n\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport * as messageActionTypes from './dux/actionTypes';\nimport messagesInitialState from './dux/initialState';\nimport messagesReducer from './dux/reducers';\n\nimport useHandleChannelEvents from './hooks/useHandleChannelEvents';\nimport useGetChannel from './hooks/useGetChannel';\nimport useInitialMessagesFetch from './hooks/useInitialMessagesFetch';\nimport useHandleReconnect from './hooks/useHandleReconnect';\nimport useScrollCallback from './hooks/useScrollCallback';\nimport useDeleteMessageCallback from './hooks/useDeleteMessageCallback';\nimport useUpdateMessageCallback from './hooks/useUpdateMessageCallback';\nimport useResendMessageCallback from './hooks/useResendMessageCallback';\nimport useSendMessageCallback from './hooks/useSendMessageCallback';\nimport useSendFileMessageCallback from './hooks/useSendFileMessageCallback';\nimport useSetReadStatus from './hooks/useSetReadStatus';\nimport useMemoizedEmojiListItems from './hooks/useMemoizedEmojiListItems';\nimport useToggleReactionCallback from './hooks/useToggleReactionCallback';\n\nimport ConversationScroll from './components/ConversationScroll';\nimport Notification from './components/Notification';\nimport FrozenNotification from './components/FrozenNotification';\nimport TypingIndicator from './components/TypingIndicator';\nimport MessageInputWrapper from './components/MessageInputWrapper';\nimport ConnectionStatus from '../../ui/ConnectionStatus';\nimport ChatHeader from '../../ui/ChatHeader';\nimport PlaceHolder from '../../ui/PlaceHolder';\nimport PlaceHolderTypes from '../../ui/PlaceHolder/type';\n\nconst noop = () => { };\n\nexport const ConversationPanel = (props) => {\n const {\n channelUrl,\n stores: { sdkStore, userStore },\n config: {\n userId,\n logger,\n pubSub,\n isOnline,\n theme,\n },\n dispatchers: {\n reconnect,\n },\n queries = {},\n useReaction,\n renderChatItem,\n renderChatHeader,\n renderMessageInput,\n useMessageGrouping,\n onChatHeaderActionClick,\n onBeforeSendUserMessage,\n onBeforeSendFileMessage,\n onBeforeUpdateUserMessage,\n } = props;\n const { sdk } = sdkStore;\n const { config } = props;\n const sdkError = sdkStore.error;\n const sdkInit = sdkStore.initialized;\n const { user } = userStore;\n\n if (queries.messageListQuery) {\n // eslint-disable-next-line no-console\n console.warn('messageListQuery will be deprecared in v1.3.0, please use messageListParams instead');\n }\n\n const userFilledMessageListQuery = queries.messageListParams || queries.messageListQuery;\n\n const [messagesStore, messagesDispatcher] = useReducer(messagesReducer, messagesInitialState);\n const scrollRef = useRef(null);\n\n const {\n allMessages,\n loading,\n hasMore,\n initialized,\n unreadCount,\n disableUserProfile,\n renderUserProfile,\n unreadSince,\n invalidChannel,\n currentGroupChannel = {},\n lastMessageTimeStamp,\n emojiContainer,\n readStatus,\n } = messagesStore;\n const { isFrozen, isBroadcast } = currentGroupChannel;\n const { appInfo = {} } = sdk;\n const usingReaction = (\n (appInfo.isUsingReaction && !isBroadcast) || useReaction || false\n );\n\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n const emojiAllMap = useMemo(() => (\n usingReaction\n ? utils.getAllEmojisMapFromEmojiContainer(emojiContainer)\n : new Map()\n ), [emojiContainer]);\n\n const emojiAllList = useMemo(() => (\n usingReaction\n ? utils.getAllEmojisFromEmojiContainer(emojiContainer)\n : []\n ), [emojiContainer]);\n\n const nicknamesMap = useMemo(() => (\n usingReaction\n ? utils.getNicknamesMapFromMembers(currentGroupChannel.members)\n : new Map()\n ), [currentGroupChannel.members]);\n\n const onScrollCallback = useScrollCallback({\n currentGroupChannel, lastMessageTimeStamp, userFilledMessageListQuery,\n }, {\n hasMore,\n logger,\n messagesDispatcher,\n sdk,\n });\n\n const toggleReaction = useToggleReactionCallback({ currentGroupChannel }, { logger });\n\n const memoizedEmojiListItems = useMemoizedEmojiListItems({\n emojiContainer, toggleReaction,\n }, {\n useReaction: usingReaction,\n logger,\n userId,\n emojiAllList,\n });\n\n // to create message-datasource\n useGetChannel(\n { channelUrl, sdkInit },\n { messagesDispatcher, sdk, logger },\n );\n\n // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher\n useHandleChannelEvents(\n { currentGroupChannel, sdkInit, userId },\n { messagesDispatcher, sdk, logger },\n );\n\n useInitialMessagesFetch({ currentGroupChannel, userFilledMessageListQuery }, {\n sdk,\n logger,\n messagesDispatcher,\n });\n\n // handles API calls from withSendbird\n useEffect(() => {\n const subScriber = utils.pubSubHandler(channelUrl, pubSub, messagesDispatcher);\n return () => {\n utils.pubSubHandleRemover(subScriber);\n };\n }, [channelUrl, sdkInit]);\n\n // to create initial read status\n useSetReadStatus(\n { allMessages, currentGroupChannel },\n { messagesDispatcher, sdk, logger },\n );\n\n // handling connection breaks\n useHandleReconnect({ isOnline }, {\n logger,\n sdk,\n currentGroupChannel,\n messagesDispatcher,\n userFilledMessageListQuery,\n });\n\n const deleteMessage = useDeleteMessageCallback({ currentGroupChannel, messagesDispatcher },\n { logger });\n const updateMessage = useUpdateMessageCallback(\n { currentGroupChannel, messagesDispatcher, onBeforeUpdateUserMessage },\n { logger, sdk, pubSub },\n );\n const resendMessage = useResendMessageCallback(\n { currentGroupChannel, messagesDispatcher },\n { logger },\n );\n const [messageInputRef, onSendMessage] = useSendMessageCallback(\n { currentGroupChannel, onBeforeSendUserMessage },\n {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n },\n );\n const [onSendFileMessage] = useSendFileMessageCallback(\n { currentGroupChannel, onBeforeSendFileMessage },\n {\n sdk,\n logger,\n pubSub,\n messagesDispatcher,\n },\n );\n\n if (sdkError) {\n return (\n \n
{\n logger.info('Channel: reconnecting');\n reconnect();\n }}\n />\n \n );\n }\n if (!channelUrl) {\n return ();\n }\n if (loading) {\n return ();\n }\n if (invalidChannel) {\n return ();\n }\n return (\n \n {\n renderChatHeader\n ? renderChatHeader({ channel: currentGroupChannel, user })\n : (\n \n )\n }\n {\n isFrozen && (\n \n )\n }\n {\n unreadCount > 0 && (\n {\n utils.scrollIntoLast('.sendbird-msg--scroll-ref');\n // there is no scroll\n if (scrollRef.current.scrollTop === 0) {\n currentGroupChannel.markAsRead();\n messagesDispatcher({\n type: messageActionTypes.MARK_AS_READ,\n });\n }\n }}\n time={unreadSince}\n />\n )\n }\n \n \n
\n
\n \n
\n {\n !isOnline && (\n
\n )\n }\n
\n \n );\n};\n\nConversationPanel.propTypes = {\n channelUrl: PropTypes.string,\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n initialized: PropTypes.bool,\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n removeChannelHandler: PropTypes.func,\n GroupChannel: PropTypes.any,\n ChannelHandler: PropTypes.any,\n addChannelHandler: PropTypes.func,\n UserMessageParams: PropTypes.any,\n FileMessageParams: PropTypes.any,\n getAllEmoji: PropTypes.func,\n appInfo: PropTypes.shape({}),\n }),\n error: PropTypes.bool,\n }),\n userStore: PropTypes.shape({\n user: PropTypes.shape({}),\n }),\n }).isRequired,\n dispatchers: PropTypes.shape({\n reconnect: PropTypes.func,\n }).isRequired,\n config: PropTypes.shape({\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n userId: PropTypes.string.isRequired,\n isOnline: PropTypes.bool.isRequired,\n theme: PropTypes.string,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n pubSub: PropTypes.shape({\n subscribe: PropTypes.func,\n publish: PropTypes.func,\n }),\n }).isRequired,\n queries: PropTypes.shape({\n messageListParams: PropTypes.shape({\n includeMetaArray: PropTypes.bool,\n includeParentMessageText: PropTypes.bool,\n includeReaction: PropTypes.bool,\n includeReplies: PropTypes.bool,\n includeThreadInfo: PropTypes.bool,\n limit: PropTypes.number,\n reverse: PropTypes.bool,\n senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n // deprecate in v1.3\n messageListQuery: PropTypes.shape({\n includeMetaArray: PropTypes.bool,\n includeParentMessageText: PropTypes.bool,\n includeReaction: PropTypes.bool,\n includeReplies: PropTypes.bool,\n includeThreadInfo: PropTypes.bool,\n limit: PropTypes.number,\n reverse: PropTypes.bool,\n senderUserIdsFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n onBeforeSendUserMessage: PropTypes.func, // onBeforeSendUserMessage(text)\n onBeforeSendFileMessage: PropTypes.func, // onBeforeSendFileMessage(File)\n onBeforeUpdateUserMessage: PropTypes.func,\n renderChatItem: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n renderMessageInput: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n renderChatHeader: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n onChatHeaderActionClick: PropTypes.func,\n useReaction: PropTypes.bool,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n useMessageGrouping: PropTypes.bool,\n};\n\nConversationPanel.defaultProps = {\n channelUrl: null,\n queries: {},\n onBeforeSendUserMessage: null,\n onBeforeSendFileMessage: null,\n onBeforeUpdateUserMessage: null,\n renderChatItem: null,\n renderMessageInput: null,\n renderChatHeader: null,\n useReaction: true,\n disableUserProfile: false,\n renderUserProfile: null,\n useMessageGrouping: true,\n onChatHeaderActionClick: noop,\n};\n\nexport const {\n getEmojiCategoriesFromEmojiContainer,\n getAllEmojisFromEmojiContainer,\n getEmojisFromEmojiContainer,\n} = utils;\n\nexport default withSendbirdContext(ConversationPanel);\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Modal from '../../../ui/Modal';\nimport Input, { InputLabel } from '../../../ui/Input';\nimport Avatar from '../../../ui/Avatar/index';\nimport { Type as ButtonType } from '../../../ui/Button/type';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport TextButton from '../../../ui/TextButton';\nimport ChannelAvatar from '../../../ui/ChannelAvatar/index';\n\nconst EditDetails = (props) => {\n const {\n onSubmit,\n onCancel,\n channel,\n userId,\n theme,\n } = props;\n const inputRef = useRef(null);\n const formRef = useRef(null);\n const hiddenInputRef = useRef(null);\n const [currentImg, setCurrentImg] = useState(null);\n const [newFile, setNewFile] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n const title = channel.name;\n return (\n {\n if (title !== '' && !inputRef.current.value) {\n if (formRef.current.reportValidity) { // might not work in explorer\n formRef.current.reportValidity();\n }\n return;\n }\n onSubmit(newFile, inputRef.current.value);\n onCancel();\n }}\n type={ButtonType.PRIMARY}\n >\n { e.preventDefault(); }}\n >\n \n
\n {stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE}\n \n
\n {\n currentImg\n ? (\n
\n ) : (\n
\n )\n }\n
\n
{\n setCurrentImg(URL.createObjectURL(e.target.files[0]));\n setNewFile(e.target.files[0]);\n hiddenInputRef.current.value = '';\n }}\n />\n
hiddenInputRef.current.click()}\n notUnderline\n >\n \n {stringSet.MODAL__CHANNEL_INFORMATION__UPLOAD}\n \n \n
\n \n \n {stringSet.MODAL__CHANNEL_INFORMATION__CHANNEL_NAME}\n \n \n
\n \n \n );\n};\n\nEditDetails.propTypes = {\n onSubmit: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n channel: PropTypes.shape({\n name: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n theme: PropTypes.string.isRequired,\n};\n\nexport default EditDetails;\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './channel-profile.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport Label, { LabelColors, LabelTypography } from '../../../ui/Label';\nimport EditDetailsModal from './EditDetails';\nimport TextButton from '../../../ui/TextButton';\nimport ChannelAvatar from '../../../ui/ChannelAvatar/index';\n\nconst ChannelProfile = (props) => {\n const {\n disabled,\n channel,\n userId,\n theme,\n onChannelInfoChange,\n } = props;\n const title = channel.name;\n const [showModal, setShowModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n \n
\n
\n \n
\n
\n {title}\n \n
{\n if (disabled) { return; }\n setShowModal(true);\n }}\n notUnderline\n >\n \n {stringSet.CHANNEL_SETTING__PROFILE__EDIT}\n \n \n {\n showModal && (\n
setShowModal(false)}\n onSubmit={onChannelInfoChange}\n channel={channel}\n userId={userId}\n theme={theme}\n />\n )\n }\n \n
\n );\n};\n\nChannelProfile.propTypes = {\n channel: PropTypes.shape({\n name: PropTypes.string,\n }).isRequired,\n userId: PropTypes.string.isRequired,\n theme: PropTypes.string,\n disabled: PropTypes.bool,\n onChannelInfoChange: PropTypes.func,\n};\n\nChannelProfile.defaultProps = {\n theme: 'light',\n disabled: false,\n onChannelInfoChange: () => { },\n};\n\nexport default ChannelProfile;\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n currentUser?: string;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function MembersModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const memberListQuery = channel.createMemberListQuery();\n memberListQuery.limit = 20;\n memberListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"All Members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n <>\n {channel.myRole === 'operator' && (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if ((member.role !== 'operator')) {\n channel.addOperators([member.userId], () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n role: 'operator',\n };\n }\n return m;\n }));\n closeDropdown();\n });\n } else {\n channel.removeOperators([member.userId], () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n role: '',\n };\n }\n return m;\n }));\n closeDropdown();\n });\n }\n }}\n >\n { member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'}\n \n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n {\n if (member.isMuted) {\n channel.unmuteUser(member, () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n isMuted: false,\n };\n }\n return m;\n }));\n closeDropdown();\n })\n } else {\n channel.muteUser(member, () => {\n setMembers(members.map(m => {\n if(m.userId === member.userId) {\n return {\n ...member,\n isMuted: true,\n };\n }\n return m;\n }));\n closeDropdown();\n });\n }\n }}\n >\n { member.isMuted ? 'Unmute' : 'Mute' }\n \n )\n }\n {\n channel.banUser(member, -1, '', () => {\n setMembers(members.filter(({ userId }) => {\n return userId !== member.userId;\n }));\n });\n }}\n >\n Ban\n \n \n )}\n />\n )}\n >\n )}\n />\n ))}\n
\n \n
\n );\n}\n","import React, { useState, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './members-accordion.scss';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { UserProfileContext } from '../../../lib/UserProfileContext';\nimport Button from '../../../ui/Button';\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../ui/Button/type';\nimport Avatar from '../../../ui/Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport InviteMembers from '../../InviteMembers';\nimport MembersModal from './AdminPanel/MembersModal';\nimport UserProfile from '../../../ui/UserProfile';\nimport ContextMenu, { MenuItems } from '../../../ui/ContextMenu';\n\nconst SHOWN_MEMBER_MAX = 10;\n\nconst UserListItem = ({ member = {}, currentUser = '' }) => {\n const avatarRef = useRef(null);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n src={member.profileUrl}\n width={24}\n height={24}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user: member,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n
\n {member.nickname || stringSet.NO_NAME}\n {\n (currentUser === member.userId) && (\n ' (You)'\n )\n }\n \n
\n );\n};\n\nUserListItem.propTypes = {\n member: PropTypes.shape({\n userId: PropTypes.string,\n profileUrl: PropTypes.string,\n nickname: PropTypes.string,\n }).isRequired,\n currentUser: PropTypes.string.isRequired,\n};\n\nconst MemebersAccordion = ({\n channel,\n disabled,\n currentUser,\n userQueryCreator,\n onInviteMemebers,\n swapParams,\n}) => {\n const members = channel.members || [];\n const [showMoreModal, setShowMoreModal] = useState(false);\n const [showAddUserModal, setShowAddUserModal] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n
\n {\n members.slice(0, SHOWN_MEMBER_MAX).map((member) => (\n \n ))\n }\n
\n
\n {\n members.length >= SHOWN_MEMBER_MAX && (\n setShowMoreModal(true)}\n >\n {stringSet.CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS}\n \n )\n }\n {\n members.length >= SHOWN_MEMBER_MAX && showMoreModal && (\n {\n setShowMoreModal(false);\n }}\n channel={channel}\n />\n )\n }\n {\n if (disabled) { return; }\n setShowAddUserModal(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__MEMBERS__INVITE_MEMBER}\n \n {\n showAddUserModal && (\n setShowAddUserModal(false)}\n idsToFilter={members.map((member) => (member.userId))}\n userQueryCreator={userQueryCreator}\n onSubmit={onInviteMemebers}\n />\n )\n }\n
\n
\n );\n};\n\nMemebersAccordion.propTypes = {\n swapParams: PropTypes.bool,\n disabled: PropTypes.bool,\n channel: PropTypes.shape({\n members: PropTypes.arrayOf(PropTypes.shape({})),\n }),\n currentUser: PropTypes.string,\n userQueryCreator: PropTypes.func.isRequired,\n onInviteMemebers: PropTypes.func.isRequired,\n};\n\nMemebersAccordion.defaultProps = {\n swapParams: false,\n currentUser: '',\n disabled: false,\n channel: {},\n};\n\nexport default MemebersAccordion;\n","import React from 'react';\n\nimport { noop } from '../../utils/utils';\n\ninterface ContextValue {\n setOpened(accordion: string): void;\n opened: string;\n}\n\nconst Context = React.createContext({\n opened: '', // mock default value\n setOpened: noop,\n});\n\nexport const Consumer = Context.Consumer;\nexport const Provider = Context.Provider;\n","// Wraps all the accordions in an accordion set\n// keep one accordion open at a time\nimport React, { ReactElement, useState } from 'react';\n\nimport { Provider } from './context';\n\ninterface Props {\n children: ReactElement[];\n defaultOpened?: string;\n className?: string;\n}\n\nexport default function AccordionGroup({\n children,\n className = '',\n}: Props): ReactElement {\n const [opened, setOpened] = useState('');\n return (\n \n { children }
\n \n )\n}\n","import './index.scss';\n\nimport React, { ReactElement, useState } from 'react';\n\nimport AccordionGroup_ from './AccordionGroup';\nimport { Consumer } from './context';\n\nimport Icon, {\n IconTypes,\n} from '../Icon';\n\ninterface Props {\n id: string;\n className?: string;\n renderTitle(): ReactElement;\n renderContent(): ReactElement;\n renderFooter?(): ReactElement;\n}\n\nexport default function Accordion({\n id,\n renderTitle,\n renderContent,\n renderFooter,\n className,\n}: Props): ReactElement {\n const [showAccordion, setShowAccordion] = useState(false);\n return (\n \n {\n (value) => {\n const { opened, setOpened } = value;\n if (id === opened) {\n setShowAccordion(true);\n } else {\n setShowAccordion(false);\n }\n const handleClick = () => {\n if (showAccordion) {\n setOpened('');\n } else {\n setOpened(id);\n }\n }\n return (\n <>\n \n { renderTitle() }\n \n
\n {\n showAccordion && (\n \n
\n { renderContent() }\n
\n {\n renderFooter && (\n
\n { renderFooter() }\n
\n )\n }\n
\n )\n }\n >);\n }\n }\n \n )\n}\n\nexport const AccordionGroup = AccordionGroup_;\n","// might move to reusable/UI\n\nimport React, { ReactElement, useRef, useContext } from 'react';\n\nimport { LocalizationContext } from '../../../lib/LocalizationContext';\nimport { UserProfileContext } from '../../../lib/UserProfileContext';\nimport Avatar from '../../../ui/Avatar/index';\nimport MutedAvatarOverlay from '../../../ui/Avatar/MutedAvatarOverlay';\nimport Label, { LabelTypography, LabelColors } from '../../../ui/Label';\nimport UserProfile from '../../../ui/UserProfile';\nimport ContextMenu, { MenuItems } from '../../../ui/ContextMenu';\n\nimport './user-list-item.scss';\nimport { SendbirdTypes } from '../../../types';\n\nconst COMPONENT_NAME = 'sendbird-user-list-item--small';\n\ninterface ActionProps {\n actionRef: React.RefObject;\n parentRef: React.RefObject;\n}\n\ntype CustomUser = SendbirdTypes['User'] & {\n isMuted: boolean;\n role: string;\n};\n\ninterface Props {\n user: CustomUser;\n currentUser?: string;\n className?: string;\n action?(props: ActionProps): ReactElement;\n}\n\nconst UserListItem = ({\n user,\n className,\n currentUser,\n action,\n}: Props): ReactElement => {\n const actionRef = useRef(null);\n const parentRef = useRef(null);\n const avatarRef = useRef(null);\n const { stringSet } = useContext(LocalizationContext);\n const {\n disableUserProfile,\n renderUserProfile,\n } = useContext(UserProfileContext);\n const injectingClassNames = Array.isArray(className) ? className : [className];\n return (\n \n {\n user.isMuted && (\n
\n )\n }\n
(\n {\n if (!disableUserProfile) {\n toggleDropdown();\n }\n }}\n ref={avatarRef}\n className={`${COMPONENT_NAME}__avatar`}\n src={user.profileUrl}\n width={24}\n height={24}\n />\n )}\n menuItems={(closeDropdown) => (\n \n {\n renderUserProfile\n ? renderUserProfile({\n user,\n currentUserId: currentUser,\n close: closeDropdown,\n })\n : (\n \n )\n }\n \n )}\n />\n \n {user.nickname || stringSet.NO_NAME}\n {\n (currentUser === user.userId) && (\n \" (You)\"\n )\n }\n \n { // if there is now nickname, display userId\n !user.nickname && (\n \n {user.userId}\n \n )\n }\n {\n user.role === 'operator' && (\n \n Operator\n \n )\n }\n {\n action && (\n \n { action({ actionRef, parentRef }) }\n
\n )\n }\n \n );\n}\n\nexport default UserListItem;\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n currentUser?: string;\n}\n\nexport default function OperatorsModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [operators, setOperators] = useState([]);\n const [operatorQuery, setOperatorQuery] = useState(null);\n\n useEffect(() => {\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 20;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n });\n setOperatorQuery(operatorListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"All operators\"\n >\n {\n const { hasNext } = operatorQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n operatorQuery.next((o, error) => {\n if (error) {\n return;\n }\n setOperators([\n ...operators,\n ...o,\n ])\n });\n }\n }}\n >\n { operators.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.removeOperators([member.userId], (response, error) => {\n if (error) {\n return;\n }\n setOperators(operators.filter(({ userId }) => {\n return userId !== member.userId;\n }));\n });\n closeDropdown();\n }}\n >\n Dismiss operator\n \n \n )}\n />\n )}\n />\n ))}\n
\n \n
\n )\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useContext,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport Modal from '../../../../ui/Modal';\nimport Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport { Type as ButtonType } from '../../../../ui/Button/type';\nimport UserListItem from '../../../../ui/UserListItem';\n\ninterface Props {\n hideModal(): void;\n onSubmit(members: string[]): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function AddOperatorsModal({\n hideModal,\n channel,\n onSubmit,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [selectedMembers, setSelectedMembers] = useState({});\n const [memberQuery, setMemberQuery] = useState(null);\n const { stringSet } = useContext(LocalizationContext);\n\n useEffect(() => {\n const memberListQuery = channel.createMemberListQuery();\n memberListQuery.limit = 20;\n memberListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberListQuery);\n }, [])\n\n const selectedCount = Object.keys(selectedMembers).filter((m) => selectedMembers[m]).length;\n return (\n \n
hideModal()}\n onSubmit={() => {\n const members = Object.keys(selectedMembers).filter((m) => selectedMembers[m]);\n onSubmit(members);\n }}\n titleText=\"Select members\"\n >\n 0) ? LabelColors.PRIMARY : LabelColors.ONBACKGROUND_3}\n type={LabelTypography.CAPTION_1}\n >\n {`${selectedCount} ${stringSet.MODAL__INVITE_MEMBER__SELECTEC}`}\n \n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n {\n const modifiedSelectedMembers = {\n ...selectedMembers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedMembers[event.target.id];\n }\n setSelectedMembers(modifiedSelectedMembers);\n }\n }\n user={member}\n key={member.userId}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n useContext,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport OperatorsModal from './OperatorsModal';\nimport AddOperatorsModal from './AddOperatorsModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const OperatorList = ({ sdk, channel }: Props): ReactElement => {\n const [operators, setOperators] = useState([]);\n const [showMore, setShowMore] = useState(false);\n const [showAdd, setShowAdd] = useState(false);\n const [hasNext, setHasNext] = useState(false);\n const { stringSet } = useContext(LocalizationContext);\n\n useEffect(() => {\n if (!channel) {\n setOperators([]);\n return;\n }\n\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 10;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n setHasNext(operatorListQuery.hasNext);\n });\n }, [channel]);\n\n const refershList = useCallback(\n () => {\n if (!channel) {\n setOperators([]);\n return;\n }\n const operatorListQuery = channel.createOperatorListQuery();\n operatorListQuery.limit = 10;\n operatorListQuery.next((operators, error) => {\n if (error) {\n return;\n }\n setOperators(operators);\n setHasNext(operatorListQuery.hasNext);\n });\n },\n [channel],\n );\n\n return (\n <>\n {\n operators.map((operator) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.removeOperators([operator.userId], (response, error) => {\n if (error) {\n return;\n }\n setOperators(operators.filter(({ userId }) => {\n return userId !== operator.userId;\n }))\n });\n closeDropdown();\n }}\n >\n Dismiss operator\n \n \n )}\n />\n );\n }}\n />\n ))\n }\n {\n hasNext && (\n \n {\n setShowMore(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ALL}\n \n {\n setShowAdd(true);\n }}\n >\n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE_ADD}\n \n
\n )\n }\n {\n showMore && (\n {\n setShowMore(false);\n refershList();\n }}\n channel={channel}\n />\n )\n }\n {\n showAdd && (\n setShowAdd(false)}\n channel={channel}\n onSubmit={(members) => {\n setShowAdd(false);\n channel.addOperators(members, () => {\n refershList();\n });\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(OperatorList, mapStoreToProps);\n","import React, { ReactElement, useEffect, useState } from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport { Type as ButtonType } from '../../../../ui/Button/type';\nimport UserListItem from '../../../../ui/UserListItem';\n\ninterface Props {\n hideModal(): void;\n onSubmit(members: string[]): void;\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport default function InviteMembers({\n hideModal,\n userQueryCreator,\n onSubmit,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [selectedMembers, setSelectedMembers] = useState({});\n const [userQuery, setUserQuery] = useState(null);\n\n useEffect(() => {\n const userListQuery = userQueryCreator();\n userListQuery.limit = 20;\n userListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setUserQuery(userListQuery);\n }, [])\n return (\n \n
hideModal()}\n onSubmit={() => {\n const members = Object.keys(selectedMembers).filter((m) => selectedMembers[m]);\n onSubmit(members);\n }}\n titleText=\"Select members\"\n >\n {\n const { hasNext } = userQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n userQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n {\n const modifiedSelectedMembers = {\n ...selectedMembers,\n [event.target.id]: event.target.checked,\n };\n if (!event.target.checked) {\n delete modifiedSelectedMembers[event.target.id];\n }\n setSelectedMembers(modifiedSelectedMembers);\n }\n }\n user={member}\n key={member.userId}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport MembersModal from './MembersModal';\nimport InviteMembers from './InviteMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes['SendBirdInstance'];\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport const MemberList = ({ sdk, channel, userQueryCreator }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showAllMembers, setShowAllMembers] = useState(false);\n const [showInviteMembers, setShowInviteMembers] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refershList = useCallback(\n () => {\n if (!channel) {\n setMembers([]);\n return;\n }\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n },\n [channel],\n );\n\n return (\n <>\n {\n members.map((member) => (\n {\n return ( (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n if ((member.role !== 'operator')) {\n channel.addOperators([member.userId], () => {\n refershList();\n closeDropdown();\n });\n } else {\n channel.removeOperators([member.userId], () => {\n refershList();\n closeDropdown();\n });\n }\n }}\n >\n { member.role !== 'operator' ? 'Promote to operator' : 'Demote operator'}\n \n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n {\n if (member.isMuted) {\n channel.unmuteUser(member, () => {\n refershList();\n closeDropdown();\n })\n } else {\n channel.muteUser(member, () => {\n refershList();\n closeDropdown();\n });\n }\n }}\n >\n { member.isMuted ? 'Unmute' : 'Mute' }\n \n )\n }\n {\n channel.banUser(member, -1, '', () => {\n refershList();\n closeDropdown();\n });\n }}\n >\n Ban\n \n \n )}\n />)}\n }\n />\n ))\n }\n \n {\n hasNext && (\n setShowAllMembers(true)}\n >\n All members\n \n )\n }\n setShowInviteMembers(true)}\n >\n Invite members\n \n
\n {\n showAllMembers && (\n {\n setShowAllMembers(false);\n refershList();\n }}\n />\n )\n }\n {\n showInviteMembers && (\n {\n channel.inviteWithUserIds(selectedMemebers, () => {\n setShowInviteMembers(false);\n refershList();\n });\n }}\n channel={channel}\n hideModal={() => setShowInviteMembers(false)}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(MemberList, mapStoreToProps);\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport default function BannedMembersModal({\n hideModal,\n channel,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next((users, error) => {\n if (error) {\n return;\n }\n setMembers(users);\n });\n setMemberQuery(bannedUserListQuery);\n }, []);\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"Muted members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unbanUser(member, () => {\n closeDropdown();\n setMembers(members.filter(m => {\n return (m.userId !== member.userId);\n }));\n })\n }}\n >\n Unban\n \n \n )}\n />\n )\n }\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\n\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport BannedMembersModal from './BannedMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const BannedMemberList = ({ channel }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next((users, error) => {\n if (error) {\n return;\n }\n setMembers(users);\n setHasNext(bannedUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refreshList = useCallback(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const bannedUserListQuery = channel.createBannedUserListQuery();\n bannedUserListQuery.next(function(users, error) {\n if (error) {\n return;\n }\n setMembers(users);\n setHasNext(bannedUserListQuery.hasNext);\n });\n }, [channel]);\n return (\n <>\n {\n members.map((member) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unbanUser(member, () => {\n closeDropdown();\n refreshList();\n })\n }}\n >\n Unban\n \n \n )}\n />\n )\n }}\n />\n ))\n }\n {\n members && members.length === 0 && (\n \n No banned members yet\n \n )\n }\n {\n hasNext && (\n \n {\n setShowModal(true);\n }}\n >\n All banned members\n \n
\n )\n }\n {\n showModal && (\n {\n setShowModal(false);\n refreshList();\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(BannedMemberList, mapStoreToProps);\n","import React, {\n ReactElement,\n useEffect,\n useState,\n} from 'react'\n\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport Modal from '../../../../ui/Modal';\nimport UserListItem from '../../../../ui/UserListItem';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport { noop } from '../../../../utils/utils';\n\ninterface Props {\n hideModal(): void;\n channel: SendbirdTypes[\"GroupChannel\"];\n currentUser?: string;\n}\n\nexport default function MutedMembersModal({\n hideModal,\n channel,\n currentUser,\n}: Props): ReactElement {\n const [members, setMembers] = useState([]);\n const [memberQuery, setMemberQuery] = useState(null);\n\n useEffect(() => {\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n });\n setMemberQuery(memberUserListQuery);\n }, []);\n return (\n \n
hideModal()}\n onSubmit={noop}\n titleText=\"Muted members\"\n >\n {\n const { hasNext } = memberQuery;\n const target = e.target as HTMLTextAreaElement;\n const fetchMore = (\n target.clientHeight + target.scrollTop === target.scrollHeight\n );\n\n if (hasNext && fetchMore) {\n memberQuery.next((o, error) => {\n if (error) {\n return;\n }\n setMembers([\n ...members,\n ...o,\n ])\n });\n }\n }}\n >\n { members.map((member) => (\n (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unmuteUser(member, () => {\n closeDropdown();\n setMembers(members.filter(m => {\n return (m.userId !== member.userId);\n }));\n })\n }}\n >\n Unmute\n \n \n )}\n />\n )}\n />\n ))}\n
\n \n
\n );\n}\n","import React, {\n ReactElement,\n useEffect,\n useState,\n useCallback,\n} from 'react';\n\nimport { SendbirdTypes } from '../../../../types';\n\nimport withSendbirdContext from '../../../../lib/SendbirdSdkContext';\nimport { getSdk } from '../../../../lib/selectors';\nimport Button from '../../../../ui/Button';\nimport IconButton from '../../../../ui/IconButton';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport ContextMenu, { MenuItem, MenuItems } from '../../../../ui/ContextMenu';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport {\n Type as ButtonTypes,\n Size as ButtonSizes,\n} from '../../../../ui/Button/type';\nimport UserListItem from '../UserListItem';\nimport MutedMembersModal from './MutedMembersModal';\n\ninterface Props {\n sdk: SendbirdTypes[\"SendBirdInstance\"];\n channel: SendbirdTypes[\"GroupChannel\"];\n}\n\nexport const MutedMemberList = ({ sdk, channel }: Props): ReactElement => {\n const [members, setMembers] = useState([]);\n const [hasNext, setHasNext] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n useEffect(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n\n const refreshList = useCallback(() => {\n if (!channel) {\n setMembers([]);\n return;\n }\n\n const memberUserListQuery = channel.createMemberListQuery();\n memberUserListQuery.limit = 10;\n memberUserListQuery.mutedMemberFilter = 'muted';\n memberUserListQuery.next((members, error) => {\n if (error) {\n return;\n }\n setMembers(members);\n setHasNext(memberUserListQuery.hasNext);\n });\n }, [channel]);\n return (\n <>\n {\n members.map((member) => (\n {\n return (\n (\n \n \n \n )}\n menuItems={(closeDropdown) => (\n \n {\n channel.unmuteUser(member, () => {\n refreshList();\n closeDropdown();\n })\n }}\n >\n Unmute\n \n \n )}\n />\n );\n }\n }\n />\n ))\n }\n {\n members && members.length === 0 && (\n \n No muted members yet\n \n )\n }\n {\n hasNext && (\n \n {\n setShowModal(true);\n }}\n >\n All muted members\n \n
\n )\n }\n {\n showModal && (\n {\n setShowModal(false);\n refreshList();\n }}\n />\n )\n }\n >\n );\n}\n\nconst mapStoreToProps = (store) => ({\n sdk: getSdk(store),\n});\n\nexport default withSendbirdContext(MutedMemberList, mapStoreToProps);\n","import './index.scss';\nimport React, {\n ReactElement,\n useEffect,\n useState,\n useContext,\n} from 'react';\nimport { SendbirdTypes } from '../../../../types';\n\nimport Accordion, { AccordionGroup } from '../../../../ui/Accordion';\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport\n Label, {\n LabelTypography,\n LabelColors,\n} from '../../../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport Badge from '../../../../ui/Badge';\n\nimport OperatorList from './OperatorList';\nimport MemberList from './MemberList';\nimport BannedMemberList from './BannedMemberList';\nimport MutedMemberList from './MutedMemberList';\n\nconst kFormatter = (num: number): string|number => {\n return Math.abs(num) > 999\n ? `${(Math.abs(num)/1000).toFixed(1)}K`\n : num;\n}\n\ninterface Props {\n channel: SendbirdTypes['GroupChannel'];\n userQueryCreator(): SendbirdTypes['UserListQuery'];\n}\n\nexport default function index({\n userQueryCreator,\n channel,\n}: Props): ReactElement {\n const [frozen, setFrozen] = useState(false);\n\n // work around for\n // https://sendbird.slack.com/archives/G01290GCDCN/p1595922832000900\n // SDK bug - after frozen/unfrozen myRole becomes \"none\"\n useEffect(() => {\n setFrozen(channel.isFrozen);\n }, [channel]);\n const { stringSet } = useContext(LocalizationContext);\n return (\n \n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__OPERATORS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__MEMBERS__TITLE}\n \n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n {\n // No muted members in broadcast channel\n !channel.isBroadcast && (\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__MUTED_MEMBERS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n )\n }\n (\n <>\n \n \n {stringSet.CHANNEL_SETTING__BANNED_MEMBERS__TITLE}\n \n >\n )}\n renderContent={() => (\n <>\n \n >\n )}\n />\n {\n // cannot frozen broadcast channel\n !channel.isBroadcast && (\n \n
\n
\n {stringSet.CHANNEL_SETTING__FREEZE_CHANNEL}\n \n
\n {\n frozen\n ? (\n {\n channel.unfreeze(() => {\n setFrozen(false);\n });\n }}\n type={IconTypes.TOGGLE_ON}\n width={44}\n height={24}\n />\n )\n : (\n {\n channel.freeze(() => {\n setFrozen(true);\n });\n }}\n type={IconTypes.TOGGLE_OFF}\n width={44}\n height={24}\n />\n )\n }\n
\n
\n )\n }\n \n );\n}\n","import React, { useEffect, useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport withSendbirdContext from '../../lib/SendbirdSdkContext';\nimport { UserProfileProvider } from '../../lib/UserProfileContext';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\n\nimport './index.scss';\nimport Badge from '../../ui/Badge';\nimport Label, { LabelTypography, LabelColors } from '../../ui/Label';\nimport Icon, { IconTypes, IconColors } from '../../ui/Icon';\nimport IconButton from '../../ui/IconButton';\n\nimport ChannelProfile from './components/ChannelProfile';\nimport MemebersAccordion from './components/MemebersAccordion';\nimport LeaveChannelModal from './components/LeaveChannel';\nimport AdminPanel from './components/AdminPanel';\nimport PlaceHolder from '../../ui/PlaceHolder';\nimport PlaceHolderTypes from '../../ui/PlaceHolder/type';\nimport { uuidv4 } from '../../utils/uuid';\nimport { createDefaultUserListQuery } from '../ChannelList/components/utils';\n\n\nconst kFormatter = (num) => (\n Math.abs(num) > 999\n ? `${(Math.abs(num) / 1000).toFixed(1)}K`\n : num\n);\n\nfunction ChannelSettings(props) {\n const {\n onCloseClick,\n channelUrl,\n disableUserProfile,\n renderUserProfile,\n onChannelModified,\n renderChannelProfile,\n onBeforeUpdateChannel,\n } = props;\n\n const {\n stores: { sdkStore },\n config: {\n userListQuery,\n theme,\n userId,\n logger,\n isOnline,\n },\n queries = {},\n } = props;\n\n const { config = {} } = props;\n const userDefinedDisableUserProfile = disableUserProfile || config.disableUserProfile;\n const userDefinedRenderProfile = renderUserProfile || config.renderUserProfile;\n\n const userFilledApplicationUserListQuery = queries.applicationUserListQuery;\n const { stringSet } = useContext(LocalizationContext);\n\n const { sdk, initialized } = sdkStore;\n\n // hack to kepp track of channel updates by triggering useEffect\n const [channelUpdateId, setChannelUpdateId] = useState(uuidv4());\n const [channel, setChannel] = useState(null);\n const [invalidChannel, setInvalidChannel] = useState(false);\n const [showAccordion, setShowAccordion] = useState(false);\n const [showLeaveChannelModal, setShowLeaveChannelModal] = useState(false);\n\n useEffect(() => {\n logger.info('ChannelSettings: Setting up');\n if (!channelUrl || !initialized || !sdk) {\n logger.warning('ChannelSettings: Setting up failed', 'No channelUrl or sdk uninitialized');\n setInvalidChannel(false);\n } else {\n if (!sdk || !sdk.GroupChannel) {\n logger.warning('ChannelSettings: No GroupChannel');\n return;\n }\n sdk.GroupChannel.getChannel(channelUrl, (groupChannel) => {\n if (!groupChannel) {\n logger.warning('ChannelSettings: Channel not found');\n setInvalidChannel(true);\n } else {\n logger.info('ChannelSettings: Fetched group channel', groupChannel);\n setInvalidChannel(false);\n setChannel(groupChannel);\n }\n });\n }\n }, [channelUrl, initialized, channelUpdateId]);\n\n if (!channel || invalidChannel) {\n return (\n \n
\n \n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n {\n logger.info('ChannelSettings: Click close');\n onCloseClick();\n }}\n />\n
\n
\n
\n );\n }\n\n return (\n \n \n
\n {stringSet.CHANNEL_SETTING__HEADER__TITLE}\n \n
\n {\n logger.info('ChannelSettings: Click close');\n onCloseClick();\n }}\n >\n \n \n
\n
\n \n {\n renderChannelProfile\n ? renderChannelProfile({ channel })\n : (\n
{\n logger.info('ChannelSettings: Channel information being updated');\n const swapParams = sdk.getErrorFirstCallback();\n if (onBeforeUpdateChannel) {\n const params = onBeforeUpdateChannel(currentTitle, currentImg, channel.data);\n // swapParams\n channel.updateChannel(params, (response, error) => {\n let groupChannel = response;\n if (swapParams) {\n groupChannel = error;\n }\n\n onChannelModified(groupChannel);\n setChannelUpdateId(uuidv4());\n });\n return;\n }\n channel.updateChannel(\n currentTitle,\n currentImg,\n channel.data,\n (response, error) => {\n let groupChannel = response;\n if (swapParams) {\n groupChannel = error;\n }\n logger.info('ChannelSettings: Channel information updated', groupChannel);\n onChannelModified(groupChannel);\n setChannelUpdateId(uuidv4());\n },\n );\n }}\n />\n )\n }\n {\n channel.myRole === 'operator'\n ? (\n {\n // setChannelUpdateId(uuidv4());\n onChannelModified(groupChannel);\n }}\n userQueryCreator={\n () => ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )\n }\n />\n )\n : (\n <>\n {/* Move to different file */}\n setShowAccordion(!showAccordion)}\n className={`\n sendbird-channel-settings__panel-item\n sendbird-channel-settings__members\n `}\n onClick={() => setShowAccordion(!showAccordion)}\n >\n \n \n {`${stringSet.CHANNEL_SETTING__MEMBERS__TITLE}`}\n \n \n \n
\n {\n showAccordion && (\n ((userListQuery && typeof userListQuery === 'function')\n ? userListQuery()\n : createDefaultUserListQuery({ sdk, userFilledApplicationUserListQuery })\n )\n }\n swapParams={\n sdk && sdk.getErrorFirstCallback && sdk.getErrorFirstCallback()\n }\n channel={channel}\n members={channel.members}\n onInviteMemebers={(selectedMemebers) => {\n logger.info('ChannelSettings: Inviting new users');\n channel.inviteWithUserIds(selectedMemebers)\n .then((res) => {\n onChannelModified(res);\n setChannelUpdateId(uuidv4());\n logger.info('ChannelSettings: Inviting new users success!', res);\n });\n }}\n />\n )\n }\n >\n )\n }\n\n {\n if (!isOnline) { return; }\n setShowLeaveChannelModal(true);\n }}\n onClick={() => {\n if (!isOnline) { return; }\n setShowLeaveChannelModal(true);\n }}\n >\n \n \n {stringSet.CHANNEL_SETTING__LEAVE_CHANNEL__TITLE}\n \n
\n {\n showLeaveChannelModal && (\n setShowLeaveChannelModal(false)}\n onLeaveChannel={() => {\n logger.info('ChannelSettings: Leaving channel', channel);\n channel.leave()\n .then(() => {\n logger.info('ChannelSettings: Leaving channel successful!', channel);\n onCloseClick();\n });\n }}\n />\n )\n }\n \n \n );\n}\n\nChannelSettings.propTypes = {\n onCloseClick: PropTypes.func,\n onChannelModified: PropTypes.func,\n onBeforeUpdateChannel: PropTypes.func,\n renderChannelProfile: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n channelUrl: PropTypes.string.isRequired,\n queries: PropTypes.shape({\n applicationUserListQuery: PropTypes.shape({\n limit: PropTypes.number,\n userIdsFilter: PropTypes.arrayOf(PropTypes.string),\n metaDataKeyFilter: PropTypes.string,\n metaDataValuesFilter: PropTypes.arrayOf(PropTypes.string),\n }),\n }),\n // from withSendbirdContext\n stores: PropTypes.shape({\n sdkStore: PropTypes.shape({\n sdk: PropTypes.shape({\n getErrorFirstCallback: PropTypes.func,\n GroupChannel: PropTypes.oneOfType([\n PropTypes.shape({\n getChannel: PropTypes.func,\n }),\n PropTypes.func,\n ]),\n createApplicationUserListQuery: PropTypes.any,\n }),\n initialized: PropTypes.bool,\n }),\n }).isRequired,\n config: PropTypes.shape({\n userId: PropTypes.string,\n theme: PropTypes.string,\n userListQuery: PropTypes.func,\n isOnline: PropTypes.bool,\n logger: PropTypes.shape({\n info: PropTypes.func,\n error: PropTypes.func,\n warning: PropTypes.func,\n }),\n }).isRequired,\n};\n\nChannelSettings.defaultProps = {\n onBeforeUpdateChannel: null,\n queries: {},\n disableUserProfile: false,\n renderUserProfile: null,\n renderChannelProfile: null,\n onCloseClick: () => { },\n onChannelModified: () => { },\n};\n\nexport default withSendbirdContext(ChannelSettings);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Sendbird from '../../lib/Sendbird';\n\nimport ChannelList from '../ChannelList';\nimport Conversation from '../Conversation';\nimport ChannelSettings from '../ChannelSettings';\n\nimport './index.scss';\n\nexport default function App(props) {\n const {\n appId,\n userId,\n accessToken,\n theme,\n userListQuery,\n nickname,\n profileUrl,\n config = {},\n useReaction,\n useMessageGrouping,\n colorSet,\n stringSet,\n allowProfileEdit,\n disableUserProfile,\n renderUserProfile,\n onProfileEditSuccess,\n } = props;\n const [currentChannelUrl, setCurrentChannelUrl] = useState(null);\n const [showSettings, setShowSettings] = useState(false);\n return (\n \n \n
\n {\n if (channel && channel.url) {\n setCurrentChannelUrl(channel.url);\n } else {\n setCurrentChannelUrl('');\n }\n }}\n />\n
\n
\n {\n if (showSettings) {\n setShowSettings(false);\n } else {\n setShowSettings(true);\n }\n }}\n useReaction={useReaction}\n useMessageGrouping={useMessageGrouping}\n />\n
\n {showSettings && (\n
\n { setShowSettings(false); }}\n />\n
\n )}\n
\n \n );\n}\n\nApp.propTypes = {\n appId: PropTypes.string.isRequired,\n userId: PropTypes.string.isRequired,\n accessToken: PropTypes.string,\n theme: PropTypes.string,\n userListQuery: PropTypes.func,\n nickname: PropTypes.string,\n profileUrl: PropTypes.string,\n allowProfileEdit: PropTypes.bool,\n disableUserProfile: PropTypes.bool,\n renderUserProfile: PropTypes.func,\n onProfileEditSuccess: PropTypes.func,\n config: PropTypes.shape({\n // None Error Warning Info 'All/Debug'\n logLevel: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n }),\n useReaction: PropTypes.bool,\n useMessageGrouping: PropTypes.bool,\n stringSet: PropTypes.objectOf(PropTypes.string),\n colorSet: PropTypes.objectOf(PropTypes.string),\n};\n\nApp.defaultProps = {\n accessToken: '',\n theme: 'light',\n nickname: '',\n profileUrl: '',\n userListQuery: null,\n allowProfileEdit: false,\n onProfileEditSuccess: null,\n disableUserProfile: false,\n renderUserProfile: null,\n config: {},\n useReaction: true,\n useMessageGrouping: true,\n stringSet: null,\n colorSet: null,\n};\n"],"names":["SendbirdSdkContext","React","createContext","withSendbirdContext","OriginalComponent","mapStoreToProps","ContextAwareComponent","props","context","console","warn","mergedProps","componentName","displayName","name","INIT_SDK","SET_SDK_LOADING","RESET_SDK","SDK_ERROR","INIT_USER","RESET_USER","UPDATE_USER_INFO","APP_VERSION_STRING","disconnectSdk","sdkDispatcher","userDispatcher","sdk","onDisconnect","type","payload","disconnect","then","finally","handleConnection","dispatchers","userId","appId","nickname","profileUrl","accessToken","logger","info","newSdk","Sb","addExtension","connectCbSucess","user","newNickName","newProfileUrl","updateCurrentUserInfo","namedUser","connectCbError","e","error","connect","res","catch","err","warning","isEmpty","obj","undefined","prop","hasOwnProperty","JSON","stringify","useTheme","overrides","useLayoutEffect","cssVars","variables","initialized","loading","reducer","state","action","sdkActions","initialState","actions","uuidv4","replace","c","r","Math","random","v","toString","useConnectionStatus","useState","isOnline","setIsOnline","useEffect","uniqueHandlerId","handler","ConnectionHandler","onReconnectStarted","onReconnectSucceeded","onReconnectFailed","reconnect","addConnectionHandler","removeConnectionHandler","tryReconnect","getConnectionState","window","addEventListener","removeEventListener","body","document","querySelector","classList","add","remove","LOG_LEVELS","DEBUG","WARNING","ERROR","INFO","ALL","colorLog","level","printLog","title","description","log","Date","toISOString","getDefaultLogger","LoggerFactory","lvl","customInterface","logInterface","lvlArray","Array","isArray","applyLog","lgLvl","reduce","accumulator","currentLvl","topics","hOP","__getTopics","subscribe","topic","listener","call","index","push","publish","forEach","item","useAppendDomNode","ids","rootSelector","root","id","elem","createElement","setAttribute","appendChild","target","getElementById","removeChild","getStringSet","lang","stringSet","en","TRYING_TO_CONNECT","USER_PROFILE__MESSAGE","USER_PROFILE__USER_ID","EDIT_PROFILE__TITLE","EDIT_PROFILE__IMAGE_LABEL","EDIT_PROFILE__IMAGE_UPLOAD","EDIT_PROFILE__NICKNAME_LABEL","EDIT_PROFILE__NICKNAME_PLACEHOLDER","EDIT_PROFILE__USERID_LABEL","EDIT_PROFILE__THEME_LABEL","CHANNEL_LIST__TITLE","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__DISABLED","CHANNEL__MESSAGE_INPUT__PLACE_HOLDER__MUTED","CHANNEL__MESSAGE_LIST__NOTIFICATION__NEW_MESSAGE","CHANNEL__MESSAGE_LIST__NOTIFICATION__ON","CHANNEL_SETTING__HEADER__TITLE","CHANNEL_SETTING__PROFILE__EDIT","CHANNEL_SETTING__MEMBERS__TITLE","CHANNEL_SETTING__MEMBERS__SEE_ALL_MEMBERS","CHANNEL_SETTING__MEMBERS__INVITE_MEMBER","CHANNEL_SETTING__LEAVE_CHANNEL__TITLE","CHANNEL_SETTING__OPERATORS__TITLE","CHANNEL_SETTING__OPERATORS__TITLE_ALL","CHANNEL_SETTING__OPERATORS__TITLE_ADD","CHANNEL_SETTING__MUTED_MEMBERS__TITLE","CHANNEL_SETTING__MUTED_MEMBERS__TITLE_ALL","CHANNEL_SETTING__BANNED_MEMBERS__TITLE","CHANNEL_SETTING__BANNED_MEMBERS__TITLE_ALL","CHANNEL_SETTING__FREEZE_CHANNEL","BUTTON__CANCEL","BUTTON__DELETE","BUTTON__SAVE","BUTTON__CREATE","BUTTON__INVITE","BUTTON__CLOSE","BADGE__OVER","MODAL__DELETE_MESSAGE__TITLE","MODAL__CHANNEL_INFORMATION__TITLE","MODAL__CHANNEL_INFORMATION__CHANNEL_IMAGE","MODAL__CHANNEL_INFORMATION__UPLOAD","MODAL__CHANNEL_INFORMATION__CHANNEL_NAME","MODAL__CHANNEL_INFORMATION__INPUT__PLACE_HOLDER","MODAL__INVITE_MEMBER__TITLE","MODAL__INVITE_MEMBER__SELECTEC","MODAL__CREATE_CHANNEL__TITLE","MODAL__CREATE_CHANNEL__SELECTED","MODAL__USER_LIST__TITLE","TYPING_INDICATOR__IS_TYPING","TYPING_INDICATOR__AND","TYPING_INDICATOR__ARE_TYPING","TYPING_INDICATOR__MULTIPLE_TYPING","MESSAGE_STATUS__SENDING_FAILED","MESSAGE_STATUS__TRY_AGAIN","MESSAGE_STATUS__OR","MESSAGE_STATUS__DELETE","PLACE_HOLDER__NO_CHANNEL","CHANNEL_FROZEN","MUTED_PL","PLACE_HOLDER__WRONG","PLACE_HOLDER__RETRY_TO_CONNECT","NO_TITLE","NO_NAME","NO_MEMBERS","TOOLTIP__AND_YOU","TOOLTIP__YOU","TOOLTIP__UNKOWN_USER","UNKNOWN__UNKNOWN_MESSAGE_TYPE","UNKNOWN__CANNOT_READ_MESSAGE","MESSAGE_EDITED","LocalizationContext","LocalizationProvider","children","Sendbird","disableUserProfile","renderUserProfile","allowProfileEdit","theme","userListQuery","config","colorSet","logLevel","setLogger","pubSub","setPubSub","useReducer","sdkReducers","sdkInitialState","sdkStore","userReducers","userInitialState","userStore","pubSubFactory","currenttheme","setCurrenttheme","useOnlineStatus","localeStringSet","useMemo","stores","propTypes","PropTypes","string","isRequired","oneOfType","element","arrayOf","any","bool","func","shape","objectOf","defaultProps","UserProfileContext","UserProfileProvider","className","RESET_CHANNEL_LIST","CREATE_CHANNEL","LEAVE_CHANNEL_SUCCESS","SET_CURRENT_CHANNEL","SHOW_CHANNEL_SETTINGS","HIDE_CHANNEL_SETTINGS","FETCH_CHANNELS_START","FETCH_CHANNELS_SUCCESS","FETCH_CHANNELS_FAILURE","INIT_CHANNELS_START","INIT_CHANNELS_SUCCESS","INIT_CHANNELS_FAILURE","ON_USER_JOINED","ON_CHANNEL_DELETED","ON_LAST_MESSAGE_UPDATED","ON_USER_LEFT","ON_CHANNEL_CHANGED","ON_CHANNEL_ARCHIVED","ON_CHANNEL_FROZEN","ON_CHANNEL_UNFROZEN","ON_READ_RECEIPT_UPDATED","ON_DELIVERY_RECEIPT_UPDATED","CHANNEL_REPLACED_TO_TOP","allChannels","currentChannel","showSettings","length","url","currentChannels","map","filteredChannels","filter","find","channel","channelUrl","leftCurrentChannel","newAllChannels","isMe","unreadMessageCount","lastMessage","currentUnReadCount","isFrozen","ImageRenderer","alt","width","height","defaultComponent","circle","injectingClassName","unshift","realElement","setRealElement","join","backgroundRepeat","backgroundPosition","backgroundSize","backgroundImage","borderRadius","number","ADD","ATTACH","ARROW_LEFT","AVATAR_DARK","AVATAR_LIGHT","BROADCAST_LARGE_DARK","BROADCAST_LARGE_LIGHT","BROADCAST_DARK","BROADCAST_LIGHT","BROADCAST","FROZEN_DARK","FROZEN_LIGHT","CAMERA","MORE","MUTE","NO_THUMBNAIL","CHECKBOX","CHECKBOX_OFF","CLOSE","COPY","CHAT","CREATE","DELETE","DISCONNECTED","DUMMY","EDIT","ERROR_FILLED","EMOJI_FAILED","EMOJI_REACTIONS_ADD","EMOJI_REACTIONS_ADD_GRAY","DELIVERED","DOCUMENT","DOWNLOAD","FILE_AUDIO","FILE_DOCUMENT","GIF","LEAVE","MEMBERS","NOTIFICATIONS","PHOTO","PLAY","PLUS","READ","REFRESH","SEND","SENT","SUPER_GROUP","SHEVRON","SHEVRON_DOWN","SPINNER","SPINNER_LARGE","USER","ICON_OPERATOR","ICON_BANNED","ICON_FREEZE","ICON_MUTED","ICON_MUTED_FG","TOGGLE_ON","TOGGLE_OFF","Colors","DEFAULT","PRIMARY","SECONDARY","CONTENT","CONTENT_INVERSE","WHITE","ON_BACKGROUND_3","changeColorToClassName","color","changeTypeToIconComponent","Type","IconAdd","IconArrowLeft","IconCamera","IconAttach","IconAvatarDark","IconAvatarLight","BroadcastLargeDark","BroadcastLargeLight","BroadcastDark","BroadcastLight","Broadcast","FrozenDark","FrozenLight","IconMore","IconMute","IconNoThumbnail","IconCheckbox","IconCheckboxOff","IconClose","IconCopy","IconChat","IconSupergroup","IconCreate","IconDelete","IconDisconnected","IconDummy","IconEdit","IconError","IconErrorFilled","IconEmojiFailed","IconEmojiReactionsAdd","IconEmojiReactionsAddGray","IconDelivered","IconDocument","IconDownload","IconFileAudio","IconFileDocument","IconGif","IconInfo","IconLeave","IconMembers","IconNotifications","IconPhoto","IconPlay","IconPlus","IconRead","IconRefresh","IconSend","IconSent","IconShevron","IconShevronDown","IconSpinner","IconSpinnerLarge","IconUser","IconOperator","IconBanned","IconMuted","IconMutedFg","IconFreeze","ToggleOn","ToggleOff","Icon","onClick","fillColor","iconStyle","oneOf","Object","keys","IconTypes","IconColors","imageRendererClassName","_a","AvatarInner","_b","src","_c","slice","i","Avatar","ref","_d","_e","_f","__spreadArrays","forwardRef","DEFAULT_URL_PREFIX","getChannelAvatarSource","currentUserId","coverUrl","RegExp","test","members","member","useDefaultAvatar","ChannelAvatar","isBroadcast","memoizedAvatar","utils","Typography","H_1","H_2","SUBTITLE_1","SUBTITLE_2","BODY_1","BODY_2","BUTTON_1","BUTTON_2","CAPTION_1","CAPTION_2","CAPTION_3","ONBACKGROUND_1","ONBACKGROUND_2","ONBACKGROUND_3","ONCONTENT_1","ONCONTENT_2","changeTypographyToClassName","CLASS_NAME","Label","LabelTypography","LabelColors","LabelStringSet","Badge","count","maxLevel","useContext","maximumNumber","parseInt","repeat","MessageStatusType","PENDING","FAILED","truncate","fullStr","strLen","separator","sepLen","charsToShow","frontChars","ceil","backChars","floor","substr","getIsSentFromStatus","status","getChannelTitle","getLastMessageCreatedAt","date","createdAt","isToday","format","isYesterday","getTotalMembers","memberCount","getPrettyLastMessage","message","MAXLEN","messageType","getLastMessage","getChannelUnreadMessageCount","ChannelPreview","isActive","ChannelAction","tabIndex","currentUser","IconButton","disabled","onBlur","pressed","setPressed","ChannelHeader","iconButton","onEdit","renderHeader","instanceOf","MODAL_ROOT","DANGER","DISABLED","Size","BIG","SMALL","changeTypeToClassName","changeSizeToClassName","size","Button","injectingClassNames","ModalHeader","titleText","ModalBody","ModalFooter","onSubmit","onCancel","submitText","ButtonTypes","Modal","hideFooter","createPortal","InputLabel","Input","value","placeHolder","required","inputValue","setInputValue","ONBACKGROUND_4","TextButton","notUnderline","noop","getMessageCreatedAt","getSenderName","sender","friendName","getSenderProfileUrl","EditUserProfile","onThemeChange","changeTheme","hiddenInputRef","useRef","inputRef","formRef","currentImg","setCurrentImg","newFile","setNewFile","current","reportValidity","ButtonType","preventDefault","display","URL","createObjectURL","files","click","store","ConnectedEditUserProfile","Types","LOADING","NO_CHANNELS","WRONG","MutedAvatarOverlay","Checkbox","checked","onChange","isChecked","setCheck","SEND_MESSAGE_START","SEND_USER_MESSAGE","SEND_FILE_MESSAGE","UPDATE_USER_MESSAGE","DELETE_MESSAGE","LEAVE_CHANNEL","getSdk","getPubSub","getConnect","Promise","resolve","reject","Error","getDisconnect","getUpdateUserInfo","nickName","getSendUserMessage","userMessageParams","pubsub","GroupChannel","getChannel","promisify","pendingMsg","pendingPromise","resolve_","reject_","sendUserMessage","swapParams","getErrorFirstCallback","get","getSendFileMessage","fileMessageParams","sendFileMessage","file","localUrl","fileUrl","requestState","getUpdateUserMessage","messageId","params","updateUserMessage","fromSelector","getDeleteMessage","deleteMessage","getResendUserMessage","failedMessage","resendUserMessage","getResendFileMessage","resendFileMessage","getCreateChannel","createChannel","getLeaveChannel","leave","getFreezeChannel","freeze","getUnFreezeChannel","unfreeze","UserProfile","onSuccess","GroupChannelParams","isDistinct","addUserIds","groupChannel","ConnectedUserProfile","MenuItems","parentContainRef","closeDropdown","menuRef","handleClickOutside","event","contains","setState","parentRef","openLeft","parentRect","getBoundingClientRect","x","left","y","top","menuStyle","innerWidth","innerHeight","rect","padding","Number","isNaN","createRef","setupEvents","getMenuPosition","showParent","cleanUpEvents","hideParent","style","position","round","Component","Element","componentClassName","SortByRow","maxItemCount","itemWidth","itemHeight","result","EmojiListItems","reactionRef","spaceFromTrigger","spaceFromTriggerX","spaceFromTriggerY","reactionStyle","maximumLeft","getBarPosition","ENTER","MenuItems_","EmojiListItems_","MenuItem","keyCode","ContextMenu","menuTrigger","menuItems","showMenu","setShowMenu","COMPONENT_NAME","UserListItem","checkBox","uniqueKey","actionRef","avatarRef","isMuted","toggleDropdown","paddingTop","paddingBottom","close","role","filterUser","idsToFilter","currentId","includes","InviteMembers","userQueryCreator","closeModal","users","setUsers","selectedUsers","setSelectedUsers","usersDataSource","setUsersDataSource","selectedCount","applicationUserListQuery","next","users_","selectedUserList","hasNext","fetchMore","clientHeight","scrollTop","scrollHeight","usersBatch","modifiedSelectedUsers","createDefaultUserListQuery","userFilledApplicationUserListQuery","createApplicationUserListQuery","key","getApplicationAttributes","appInfo","applicationAttributes","isBroadcastChannelEnabled","ALLOW_BROADCAST_CHANNEL","isSuperGroupChannelEnabled","ALLOW_SUPER_GROUP_CHANNEL","setChannelType","isSuper","onBeforeCreateChannel","response","operatorUserIds","AddChannel","channelListDispatcher","showModal","setShowModal","step","setStep","setType","isBroadcastAvailable","isSupergroupAvailable","LeaveChannel","onCloseModal","onLeaveChannel","ChannelPreviewAction","stopPropagation","LeaveChannelModal","Loader","PlaceHolder","retryToConnect","PlaceHolderTypes","ChannelsPlaceholder","Placeholder","createEventHandler","sdkChannelHandlerId","ChannelHandler","onChannelChanged","channelActions","onChannelDeleted","onUserJoined","onUserBanned","onUserLeft","leftUser","onReadStatus","onDeliveryReceiptUpdated","onMessageUpdated","isEqual","onChannelHidden","onChannelFrozen","onChannelUnfrozen","addChannelHandler","userFilledChannelListQuery","channelListQuery","createMyGroupChannelListQuery","includeEmpty","order","limit","setupChannelList","setChannelSource","onChannelSelect","sortChannelList","channelList","sorted","markAsDelivered","pubSubHandleRemover","subscriber","s","pubSubHandler","subScriber","Map","set","msg","updatedChannel","ChannelList","queries","renderChannelPreview","onProfileEditSuccess","enableEditProfile","userDefinedDisableUserProfile","userDefinedRenderProfile","sdkError","setUser","sdkIntialized","channelListReducers","channelListInitialState","channelListStore","channelSource","setSdkChannelHandlerId","showProfileEdit","setShowProfileEdit","removeChannelHandler","channelListActions","sortedChannels","before","after","newName","updateCurrentUserInfoWithProfileImage","updatedUser","userActions","PlaceholderTypes","idx","cb","channelNameContainsFilter","channelUrlsFilter","customTypesFilter","customTypeStartsWithFilter","hiddenChannelFilter","memberStateFilter","metadataOrderKeyFilter","nicknameContainsFilter","publicChannelFilter","superChannelFilter","unreadChannelFilter","userIdsExactFilter","userIdsIncludeFilter","userIdsIncludeFilterQueryType","userIdsFilter","metaDataKeyFilter","metaDataValuesFilter","RESET_MESSAGES","RESET_STATE","CLEAR_SENT_MESSAGES","GET_PREV_MESSAGES_START","GET_PREV_MESSAGES_SUCESS","SEND_MESSAGEGE_START","SEND_MESSAGEGE_SUCESS","SEND_MESSAGEGE_FAILURE","RESEND_MESSAGEGE_START","ON_MESSAGE_RECEIVED","ON_MESSAGE_UPDATED","ON_MESSAGE_DELETED","ON_MESSAGE_DELETED_BY_REQ_ID","SET_CHANNEL_INVALID","MARK_AS_READ","ON_REACTION_UPDATED","SET_EMOJI_CONTAINER","SET_READ_STATUS","SUPPORTED_MIMES","IMAGE","VIDEO","isImage","isVideo","unSupported","MessageTypes","ADMIN","FILE","THUMBNAIL","OG","SendingMessageStatus","NONE","SUCCEEDED","getMessageType","isUserMessage","ogMetaData","isAdminMessage","isFileMessage","UNDEFINED","scrollIntoLast","selector","intialTry","MAX_TRIES","currentTry","nodes","querySelectorAll","last","scrollIntoView","setTimeout","dispatcher","getParsedStatus","currentGroupChannel","unreadCount","getReadReceipt","isDelivered","getDeliveryReceipt","isOperator","myRole","isDisabledBecauseFrozen","isDisabledBecauseMuted","myMutedState","getEmojiCategoriesFromEmojiContainer","emojiContainer","emojiCategories","getAllEmojisFromEmojiContainer","allEmojis","categoryIndex","emojis","emojiIndex","getEmojisFromEmojiContainer","emojiCategoryId","emojiCategory","getAllEmojisMapFromEmojiContainer","allEmojisMap","getNicknamesMapFromMembers","nicknamesMap","memberIndex","isSameGroup","comparingMessage","sendingStatus","compareMessagesForGrouping","prevMessage","currMessage","nextMessage","passUnsuccessfullMessages","allMessages","newMessage","lastIndexOfSucceededMessage","lastIndexOf","messages","splice","hasMore","lastMessageTimeStamp","readStatus","unreadSince","isInvalid","val","a","b","aString","bString","actionTypes","m","recivedMessages","stateChannel","stateChannelUrl","actionChannelUrl","filteredAllMessages","compareIds","newMessages","reqId","sort","failed","currentGroupChannelUrl","indexOf","applyReactionEvent","useHandleChannelEvents","sdkInit","messagesDispatcher","messageReciverId","onMessageReceived","messageActions","_","onMessageDeleted","onReactionUpdated","reactionEvent","onUserMuted","onUserUnmuted","onOperatorUpdated","useSetChannel","messageActionTypes","markAsRead","getAllEmoji","emojiContainer_","useInitialMessagesFetch","userFilledMessageListQuery","MessageListParams","getMessagesByMessageId","messageListParams","prevResultSize","isInclusive","includeReplies","includeReaction","getMessagesByTimestamp","getTime","useHandleReconnect","wasOffline","useReaction","isUsingReaction","lastMessageTime","useScrollCallback","useCallback","hasMoreMessages","lastMessageTs","useDeleteMessageCallback","useUpdateMessageCallback","onBeforeUpdateUserMessage","text","createParamsDefault","txt","UserMessageParams","createCustomPrams","useResendMessageCallback","isResendable","useSendMessageCallback","onBeforeSendUserMessage","messageInputRef","sendMessage","trim","useSendFileMessageCallback","onBeforeSendFileMessage","file_","FileMessageParams","useSetReadStatus","setReadStatus","allReadStatus","handleMessageStatus","onReadReceiptUpdated","handlerId","ReactionButton","selected","useMemoizedEmojiListItems","toggleReaction","emojiAllList","emoji","reactedReaction","reactions","reaction","isReacted","userIds","useToggleReactionCallback","deleteReaction","addReaction","MessageStatus","label","icon","array","object","ReactionBadge","isAdd","Tooltip","SPACE_FROM_TRIGGER","TooltipWrapper","hoverTooltip","showHoverTooltip","setShowHoverTooltip","childrenRef","bottom","offsetWidth","EmojiReactions","emojiAllMap","membersMap","memoizedEmojiListItems","MemoizedEmojiListItems","imageWidth","imageHeight","emojiReactionAddRef","messageReactions","emojiUrl","reactedUserCount","reactedByMe","nicknames","stringSetForMe","copyToClipboard","clipboardData","setData","queryCommandSupported","textarea","textContent","select","execCommand","ex","WORD_TYPOGRAPHY","EDITED_COLOR","useMemoizedMessageText","updatedAt","splitMessage","split","matchedMessage","word","MOUSE_ENTER","MOUSE_LEAVE","useMouseHover","setHover","handleMouseOver","handleMouseOut","GROUPING_PADDING","NORMAL_PADDING","Message","isByMe","resendMessage","showEdit","showRemove","chainTop","chainBottom","memoizedMessageText","OutgoingUserMessage","MemoizedMessageText","messageRef","parentRefReactions","parentRefMenus","isMessageSent","mousehover","setMousehover","moreActive","setMoreActive","handleMoreIconClick","handleMoreIconBlur","IncomingUserMessage","showReactionAddButton","showEmojiReactions","AdminMessage","OUTGOING_THUMBNAIL_MESSAGE","INCOMING_THUMBNAIL_MESSAGE","ThumbnailMessage","OutgoingThumbnailMessage","reactionAddRef","IncomingThumbnailMessage","MAX_TRUNCATE_LENGTH","GROUPAING_PADDING","checkFileType","imageFile","audioFile","OutgoingFileMessage","openFileUrl","open","reactionAddButtonRef","IncomingFileMessage","MessageSwitch","DateSeparator","separatorColor","LINE_HEIGHT","KeyCode","SHIFT","handleUploadFile","callback","MessageInput","isEdit","placeholder","maxLength","onFileUpload","onSendMessage","onCancelEdit","onStartTyping","fileInputRef","isShiftPressed","setIsShiftPressed","setHeight","MAX_HEIGHT","offsetHeight","trimmedInputValue","FileViewerComponent","onClose","onDelete","FileViewer","RemoveMessage","onDeleteMessage","UnknownMessage","OutgoingUnknownMessage","IncomingUnknownMessage","URL_REG","OG_MESSAGE","OUTGOING_OG_MESSAGE","INCOMING_OG_MESSAGE","createUrlTester","regexp","checkOGIsEnalbed","LINK_LABEL","http","LinkLabel","injecingClassName","WORD_COLOR","isUrl","NORAML_PADDING","OGMessageSwitch","openLink","OutgoingOGMessage","defaultImage","IncomingOGMessage","errorCode","MessageHoc","editDisabled","hasSeperator","updateMessage","setShowEdit","setShowRemove","showFileViewer","setShowFileViewer","editMessageInputRef","FileMessage","OGMessage","RemoveMessageModal","isDateSeperator","ConversationScroll","scrollRef","onScroll","first","renderChatItem","useMessageGrouping","previousMessage","previousMessageCreatedAt","currentCreatedAt","isSameDay","onUpdateMessage","onResendMessage","MessageHOC","Notification","time","timeArray","FrozenNotification","TypingIndicatorText","TypingIndicator","sb","setHandlerId","typingMembers","setTypingMembers","newHandlerId","onTypingStatusUpdated","getTypingMembers","MessageInputWrapper","renderMessageInput","startTyping","ConnectionStatus","prettyDate","formatDistanceToNowStrict","addSuffix","getOthersLastSeenAt","getReadStatus","lastSeenList","values","lastSeenAt","last_seen_at","AutoRefresh","repeatFunc","setLabel","interval","setInterval","clearInterval","ChatHeader","subTitle","onActionClick","ConversationPanel","renderChatHeader","onChatHeaderActionClick","messageListQuery","messagesReducer","messagesInitialState","messagesStore","invalidChannel","usingReaction","onScrollCallback","useGetChannel","onSendFileMessage","includeMetaArray","includeParentMessageText","includeThreadInfo","reverse","senderUserIdsFilter","EditDetails","ChannelProfile","onChannelInfoChange","EditDetailsModal","MembersModal","hideModal","setMembers","memberQuery","setMemberQuery","memberListQuery","createMemberListQuery","o","addOperators","removeOperators","unmuteUser","muteUser","banUser","SHOWN_MEMBER_MAX","MemebersAccordion","onInviteMemebers","showMoreModal","setShowMoreModal","showAddUserModal","setShowAddUserModal","ButtonSizes","Context","opened","setOpened","Consumer","Provider","AccordionGroup","Accordion","renderTitle","renderContent","renderFooter","showAccordion","setShowAccordion","handleClick","AccordionGroup_","OperatorsModal","operators","setOperators","operatorQuery","setOperatorQuery","operatorListQuery","createOperatorListQuery","AddOperatorsModal","selectedMembers","setSelectedMembers","modifiedSelectedMembers","OperatorList","showMore","setShowMore","showAdd","setShowAdd","setHasNext","refershList","operator","userQuery","setUserQuery","MemberList","showAllMembers","setShowAllMembers","showInviteMembers","setShowInviteMembers","memberUserListQuery","selectedMemebers","inviteWithUserIds","BannedMembersModal","bannedUserListQuery","createBannedUserListQuery","unbanUser","BannedMemberList","refreshList","MutedMembersModal","mutedMemberFilter","MutedMemberList","kFormatter","num","abs","toFixed","frozen","setFrozen","ChannelSettings","onCloseClick","onChannelModified","renderChannelProfile","onBeforeUpdateChannel","channelUpdateId","setChannelUpdateId","setChannel","setInvalidChannel","showLeaveChannelModal","setShowLeaveChannelModal","currentTitle","data","updateChannel","AdminPanel","App","currentChannelUrl","setCurrentChannelUrl","setShowSettings"],"mappings":"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"}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 2996f37..23d5b51 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "sendbird-uikit",
- "version": "1.3.0",
+ "version": "2.0.0-alpha.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -24973,9 +24973,9 @@
}
},
"sendbird": {
- "version": "3.0.133",
- "resolved": "https://registry.npmjs.org/sendbird/-/sendbird-3.0.133.tgz",
- "integrity": "sha512-L/PgaqFaXowX2b2NsnM9dgiFxH50t0xySUCvlsdot77yrcyTwjz9py3qTdI+HOdFll6o7d7W67C0PsmwAtK9sw==",
+ "version": "3.0.140",
+ "resolved": "https://registry.npmjs.org/sendbird/-/sendbird-3.0.140.tgz",
+ "integrity": "sha512-miUEJZaZ1W0tv+iwQC/aF50sijIX5CAc1wLOLfWi8ybA6q9160g/Yvocb/BGUzbfhTAyodbYCIV5OhJPCOpQ8A==",
"requires": {
"agentkeepalive": "2.2.0",
"axios": "^0.19.2",
diff --git a/package.json b/package.json
index 3655fbe..f74458b 100644
--- a/package.json
+++ b/package.json
@@ -1,12 +1,10 @@
{
"name": "sendbird-uikit",
- "version": "1.3.0",
+ "version": "2.0.0-alpha.0",
"description": "React based UI kit for sendbird",
- "main": "dist/index.js",
+ "main": "dist/esm/index.js",
"typings": "dist/index.d.js",
"style": "dist/styles.css",
- "module": "dist/index.es.js",
- "jsnext:main": "dist/index.es.js",
"scripts": {
"test": "jest",
"test-update-snapshot": "jest -u",
@@ -33,7 +31,7 @@
"date-fns": "^2.16.1",
"react": "^16.8.6 | ^17.0.0",
"react-dom": "^16.8.6 | ^17.0.0",
- "sendbird": "^3.0.133"
+ "sendbird": "^3.0.140"
},
"bugs": {
"url": "https://github.com/sendbird/uikit-js/issues"
@@ -93,6 +91,6 @@
"dependencies": {
"css-vars-ponyfill": "^2.3.2",
"date-fns": "^2.16.1",
- "sendbird": "^3.0.133"
+ "sendbird": "^3.0.140"
}
}