@cometchat/chat-uikit-angular
Version:
Ready-to-use Chat UI Components for Angular (JavaScript/Web)
682 lines • 103 kB
JavaScript
import { CometChatMessageOption, MessageBubbleAlignment, CometChatMessageTemplate, CometChatMessageComposerAction, localize, CometChatUIKitConstants, fontHelper, MentionsTargetElement, } from "@cometchat/uikit-resources";
import { CometChatMentionsFormatter, CometChatUIKitLoginListener, CometChatUrlsFormatter, ConversationUtils, UserMentionStyle, } from "@cometchat/uikit-shared";
import { CometChat } from "@cometchat/chat-sdk-javascript";
import { ChatConfigurator } from "../Framework/ChatConfigurator";
export class MessageUtils {
/**
* Creates an option to edit message.
* @param {CometChatTheme} theme - The theme object.
* @return {CometChatMessageOption} - Returns a new message option.
*/
getEditOption(theme) {
return new CometChatMessageOption({
id: CometChatUIKitConstants.MessageOption.editMessage,
title: localize("EDIT"),
iconURL: "assets/editicon.svg",
onClick: null,
iconTint: theme.palette.getAccent600(),
backgroundColor: "transparent",
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent600(),
});
}
/**
* Creates an option to react to a message.
* @param {CometChatTheme} theme - The theme object.
* @return {CometChatMessageOption} - Returns a new message option.
*/
getReactionOption(theme) {
return new CometChatMessageOption({
id: CometChatUIKitConstants.MessageOption.reactToMessage,
title: localize("REACT"),
iconURL: "assets/addreaction.svg",
onClick: undefined,
iconTint: theme.palette.getAccent600(),
backgroundColor: "transparent",
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent600(),
});
}
/**
* Creates an option to get info about a message.
* @param {CometChatTheme} theme - The theme object.
* @return {CometChatMessageOption} - Returns a new message option.
*/
getMessageInfoOption(theme) {
return new CometChatMessageOption({
id: CometChatUIKitConstants.MessageOption.messageInformation,
title: localize("INFO"),
iconURL: "assets/Info.svg",
onClick: null,
iconTint: theme.palette.getAccent600(),
backgroundColor: "transparent",
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent600(),
});
}
/**
* Creates an option to send a private message.
* @param {CometChatTheme} theme - The theme object.
* @return {CometChatMessageOption} - Returns a new message option.
*/
getMessagePrivatelyOption(theme) {
return new CometChatMessageOption({
id: CometChatUIKitConstants.MessageOption.sendMessagePrivately,
title: localize("MESSAGE_PRIVATELY"),
iconURL: "assets/message-privately.svg",
onClick: null,
iconTint: theme.palette.getAccent600(),
backgroundColor: "transparent",
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent600(),
});
}
/**
* Creates an option to delete a message.
* @param {CometChatTheme} theme - The theme object.
* @return {CometChatMessageOption} - Returns a new message option.
*/
getDeleteOption(theme) {
return new CometChatMessageOption({
id: CometChatUIKitConstants.MessageOption.deleteMessage,
title: localize("DELETE"),
iconURL: "assets/deleteicon.svg",
onClick: null,
iconTint: theme.palette.getAccent600(),
backgroundColor: "transparent",
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent600(),
});
}
/**
* Creates an option to reply to a message in a thread.
* @param {CometChatTheme} theme - The theme object.
* @return {CometChatMessageOption} - Returns a new message option.
*/
getReplyInThreadOption(theme) {
return new CometChatMessageOption({
id: CometChatUIKitConstants.MessageOption.replyInThread,
title: localize("REPLY"),
iconURL: "assets/threadicon.svg",
onClick: null,
iconTint: theme.palette.getAccent600(),
backgroundColor: "transparent",
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent600(),
});
}
/**
* Creates an option to copy a message.
* @param {CometChatTheme} theme - The theme object.
* @return {CometChatMessageOption} - Returns a new message option.
*/
getCopyOption(theme) {
return new CometChatMessageOption({
id: CometChatUIKitConstants.MessageOption.copyMessage,
title: localize("COPY"),
iconURL: "assets/Copy.svg",
onClick: null,
iconTint: theme.palette.getAccent600(),
backgroundColor: "transparent",
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent600(),
});
}
/**
* Checks if a message is sent by current logged in user.
* @param {CometChat.User} loggedInUser - The current logged in user.
* @param {CometChat.BaseMessage} message - The message to check.
* @return {boolean} - Returns true if message is sent by current logged in user, otherwise false.
*/
isSentByMe(loggedInUser, message) {
return loggedInUser.getUid() === message.getSender().getUid();
}
/**
* Fetches options for text messages.
* @param {CometChat.User} loggedInUser - The current logged in user.
* @param {CometChat.BaseMessage} messageObject - The message object.
* @param {CometChatTheme} theme - The theme object.
* @param {CometChat.Group} group - The group object.
* @return {Array<CometChatMessageOption>} - Returns an array of message options.
*/
getTextMessageOptions(loggedInUser, messageObject, theme, group) {
let isSentByMe = this.isSentByMe(loggedInUser, messageObject);
let isParticipant = false;
if (group?.getScope() == CometChatUIKitConstants.groupMemberScope.participant) {
isParticipant = true;
}
let messageOptionList = [];
messageOptionList.push(this.getReactionOption(theme));
if (!messageObject.getParentMessageId()) {
messageOptionList.push(this.getReplyInThreadOption(theme));
}
messageOptionList.push(this.getCopyOption(theme));
if (isSentByMe || (!isParticipant && group)) {
messageOptionList.push(this.getEditOption(theme));
}
if (isSentByMe) {
messageOptionList.push(this.getMessageInfoOption(theme));
}
if (isSentByMe || (!isParticipant && group))
messageOptionList.push(this.getDeleteOption(theme));
if (group && !isSentByMe) {
messageOptionList.push(this.getMessagePrivatelyOption(theme));
}
return messageOptionList;
}
/**
* Fetches options for image messages.
* @param {CometChat.User} loggedInUser - The current logged in user.
* @param {CometChat.BaseMessage} messageObject - The message object.
* @param {CometChatTheme} theme - The theme object.
* @param {CometChat.Group} group - The group object.
* @return {Array<CometChatMessageOption>} - Returns an array of message options.
*/
getImageMessageOptions(loggedInUser, messageObject, theme, group) {
let messageOptionList = [];
messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
return messageOptionList;
}
/**
* Fetches options for video messages.
* @param {CometChat.User} loggedInUser - The current logged in user.
* @param {CometChat.BaseMessage} messageObject - The message object.
* @param {CometChatTheme} theme - The theme object.
* @param {CometChat.Group} group - (Optional) The group object.
* @return {Array<CometChatMessageOption>} - Returns an array of message options.
*/
getVideoMessageOptions(loggedInUser, messageObject, theme, group) {
let messageOptionList = [];
messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
return messageOptionList;
}
/**
* Fetches options for audio messages.
* @param {CometChat.User} loggedInUser - The current logged in user.
* @param {CometChat.BaseMessage} messageObject - The message object.
* @param {CometChatTheme} theme - The theme object.
* @param {CometChat.Group} group - (Optional) The group object.
* @return {Array<CometChatMessageOption>} - Returns an array of message options.
*/
getAudioMessageOptions(loggedInUser, messageObject, theme, group) {
let messageOptionList = [];
messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
return messageOptionList;
}
/**
* Fetches options for file messages.
* @param {CometChat.User} loggedInUser - The current logged in user.
* @param {CometChat.BaseMessage} messageObject - The message object.
* @param {CometChatTheme} theme - The theme object.
* @param {CometChat.Group} group - (Optional) The group object.
* @return {Array<CometChatMessageOption>} - Returns an array of message options.
*/
getFileMessageOptions(loggedInUser, messageObject, theme, group) {
let messageOptionList = [];
messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
return messageOptionList;
}
getBottomView(_messageObject, _alignment) {
return null;
}
getSchedulerMessageTemplate() {
return new CometChatMessageTemplate({
type: CometChatUIKitConstants.MessageTypes.scheduler,
category: CometChatUIKitConstants.MessageCategory.interactive,
options: ChatConfigurator.getDataSource().getMessageOptions,
});
}
getTextMessageTemplate() {
return new CometChatMessageTemplate({
type: CometChatUIKitConstants.MessageTypes.text,
category: CometChatUIKitConstants.MessageCategory.message,
options: ChatConfigurator.getDataSource().getMessageOptions,
});
}
getAudioMessageTemplate() {
return new CometChatMessageTemplate({
type: CometChatUIKitConstants.MessageTypes.audio,
category: CometChatUIKitConstants.MessageCategory.message,
options: ChatConfigurator.getDataSource().getMessageOptions,
});
}
getVideoMessageTemplate() {
return new CometChatMessageTemplate({
type: CometChatUIKitConstants.MessageTypes.video,
category: CometChatUIKitConstants.MessageCategory.message,
options: ChatConfigurator.getDataSource().getMessageOptions,
});
}
getImageMessageTemplate() {
return new CometChatMessageTemplate({
type: CometChatUIKitConstants.MessageTypes.image,
category: CometChatUIKitConstants.MessageCategory.message,
options: ChatConfigurator.getDataSource().getMessageOptions,
});
}
getGroupActionTemplate() {
return new CometChatMessageTemplate({
type: CometChatUIKitConstants.MessageTypes.groupMember,
category: CometChatUIKitConstants.MessageCategory.action,
});
}
getFileMessageTemplate() {
return new CometChatMessageTemplate({
type: CometChatUIKitConstants.MessageTypes.file,
category: CometChatUIKitConstants.MessageCategory.message,
options: ChatConfigurator.getDataSource().getMessageOptions,
});
}
getFormMessageTemplate() {
return new CometChatMessageTemplate({
type: CometChatUIKitConstants.MessageTypes.form,
category: CometChatUIKitConstants.MessageCategory.interactive,
options: ChatConfigurator.getDataSource().getMessageOptions,
});
}
getCardMessageTemplate() {
return new CometChatMessageTemplate({
type: CometChatUIKitConstants.MessageTypes.card,
category: CometChatUIKitConstants.MessageCategory.interactive,
options: ChatConfigurator.getDataSource().getMessageOptions,
});
}
/**
* Function to check if a user's status should be visible
* @param {CometChat.User | CometChat.GroupMember} user - The user whose status visibility is to be checked.
* @return {boolean} - Returns `true` if the user's status should be hidden (blocked or offline), `false` otherwise.
*/
getUserStatusVisibility(user) {
let userBlockedFlag = false;
if (user) {
if (user.getBlockedByMe() || user.getHasBlockedMe() || user.getStatus() === CometChatUIKitConstants.userStatusType.offline) {
userBlockedFlag = true;
}
}
return userBlockedFlag;
}
getAllMessageTemplates() {
return [
ChatConfigurator.getDataSource().getTextMessageTemplate(),
ChatConfigurator.getDataSource().getImageMessageTemplate(),
ChatConfigurator.getDataSource().getVideoMessageTemplate(),
ChatConfigurator.getDataSource().getAudioMessageTemplate(),
ChatConfigurator.getDataSource().getFileMessageTemplate(),
ChatConfigurator.getDataSource().getGroupActionTemplate(),
ChatConfigurator.getDataSource().getFormMessageTemplate(),
ChatConfigurator.getDataSource().getCardMessageTemplate(),
ChatConfigurator.getDataSource().getSchedulerMessageTemplate(),
];
}
getMessageTemplate(messageType, messageCategory) {
let _template = null;
if (messageCategory != CometChatUIKitConstants.MessageCategory.call) {
switch (messageType) {
case CometChatUIKitConstants.MessageTypes.text:
_template = ChatConfigurator.getDataSource().getTextMessageTemplate();
break;
case CometChatUIKitConstants.MessageTypes.image:
_template =
ChatConfigurator.getDataSource().getImageMessageTemplate();
break;
case CometChatUIKitConstants.MessageTypes.video:
_template =
ChatConfigurator.getDataSource().getVideoMessageTemplate();
break;
case CometChatUIKitConstants.MessageTypes.groupMember:
_template = ChatConfigurator.getDataSource().getGroupActionTemplate();
break;
case CometChatUIKitConstants.MessageTypes.file:
_template = ChatConfigurator.getDataSource().getFileMessageTemplate();
break;
case CometChatUIKitConstants.MessageTypes.audio:
_template =
ChatConfigurator.getDataSource().getAudioMessageTemplate();
break;
case CometChatUIKitConstants.MessageTypes.form:
_template = ChatConfigurator.getDataSource().getFormMessageTemplate();
break;
case CometChatUIKitConstants.MessageTypes.card:
_template = ChatConfigurator.getDataSource().getCardMessageTemplate();
break;
case CometChatUIKitConstants.MessageTypes.scheduler:
_template =
ChatConfigurator.getDataSource().getSchedulerMessageTemplate();
break;
}
}
return _template;
}
getMessageOptions(loggedInUser, messageObject, theme, group) {
let _optionList = [];
if (messageObject.getCategory() ==
CometChatUIKitConstants.MessageCategory.message) {
switch (messageObject.getType()) {
case CometChatUIKitConstants.MessageTypes.text:
_optionList = ChatConfigurator.getDataSource().getTextMessageOptions(loggedInUser, messageObject, theme, group);
break;
case CometChatUIKitConstants.MessageTypes.image:
_optionList = ChatConfigurator.getDataSource().getImageMessageOptions(loggedInUser, messageObject, theme, group);
break;
case CometChatUIKitConstants.MessageTypes.video:
_optionList = ChatConfigurator.getDataSource().getVideoMessageOptions(loggedInUser, messageObject, theme, group);
break;
case CometChatUIKitConstants.MessageTypes.groupMember:
_optionList = [];
break;
case CometChatUIKitConstants.MessageTypes.file:
_optionList = ChatConfigurator.getDataSource().getFileMessageOptions(loggedInUser, messageObject, theme, group);
break;
case CometChatUIKitConstants.MessageTypes.audio:
_optionList = ChatConfigurator.getDataSource().getAudioMessageOptions(loggedInUser, messageObject, theme, group);
break;
}
}
else if (messageObject.getCategory() ==
CometChatUIKitConstants.MessageCategory.custom ||
messageObject.getCategory() ==
CometChatUIKitConstants.MessageCategory.interactive) {
_optionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
}
return _optionList;
}
getCommonOptions(loggedInUser, messageObject, theme, group) {
let isSentByMe = this.isSentByMe(loggedInUser, messageObject);
let isParticipant = false;
if (group?.getScope() == CometChatUIKitConstants.groupMemberScope.participant)
isParticipant = true;
let messageOptionList = [];
messageOptionList.push(this.getReactionOption(theme));
if (!messageObject?.getParentMessageId()) {
messageOptionList.push(this.getReplyInThreadOption(theme));
}
if (isSentByMe) {
messageOptionList.push(this.getMessageInfoOption(theme));
}
if (isSentByMe || (!isParticipant && group))
messageOptionList.push(this.getDeleteOption(theme));
if (group && !isSentByMe) {
messageOptionList.push(this.getMessagePrivatelyOption(theme));
}
return messageOptionList;
}
getAllMessageTypes() {
return [
CometChatUIKitConstants.MessageTypes.text,
CometChatUIKitConstants.MessageTypes.image,
CometChatUIKitConstants.MessageTypes.audio,
CometChatUIKitConstants.MessageTypes.video,
CometChatUIKitConstants.MessageTypes.file,
CometChatUIKitConstants.MessageTypes.groupMember,
CometChatUIKitConstants.MessageTypes.form,
CometChatUIKitConstants.MessageTypes.card,
CometChatUIKitConstants.MessageTypes.scheduler,
];
}
addList() {
return "<Message Utils>";
}
getAllMessageCategories() {
return [
CometChatUIKitConstants.MessageCategory.message,
CometChatUIKitConstants.MessageCategory.action,
CometChatUIKitConstants.MessageCategory.interactive,
];
}
getAuxiliaryOptions(id, user, group) {
return null;
}
getId() {
return "messageUtils";
}
getActionMessage(message) {
try {
if (message instanceof CometChat.Action) {
const action = message.getAction();
const actionBy = message.getActionBy();
const actionOn = message.getActionOn();
const byString = actionBy.getName();
const forString = action === CometChatUIKitConstants.groupMemberAction.JOINED ||
action === CometChatUIKitConstants.groupMemberAction.LEFT
? ""
: actionOn.getName();
switch (action) {
case CometChatUIKitConstants.groupMemberAction.ADDED:
return `${byString} ${localize("ADDED")} ${forString}`;
case CometChatUIKitConstants.groupMemberAction.JOINED:
return `${byString} ${localize("JOINED")}`;
case CometChatUIKitConstants.groupMemberAction.LEFT:
return `${byString} ${localize("LEFT")}`;
case CometChatUIKitConstants.groupMemberAction.KICKED:
return `${byString} ${localize("KICKED")} ${forString}`;
case CometChatUIKitConstants.groupMemberAction.BANNED:
return `${byString} ${localize("BANNED")} ${forString}`;
case CometChatUIKitConstants.groupMemberAction.UNBANNED:
return `${byString} ${localize("UNBANNED")} ${forString}`;
case CometChatUIKitConstants.groupMemberAction.SCOPE_CHANGE:
return `${byString} ${localize("MADE")} ${forString} ${message.getNewScope()}`;
default:
return "";
}
}
else {
return "";
}
}
catch (e) {
return "";
}
}
imageAttachmentOption(theme) {
return new CometChatMessageComposerAction({
id: CometChatUIKitConstants.MessageTypes.image,
title: localize("ATTACH_IMAGE"),
iconURL: "assets/photolibrary.svg",
onClick: null,
iconTint: theme.palette.getAccent700(),
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent700(),
borderRadius: "8px",
background: theme.palette.getAccent100(),
});
}
videoAttachmentOption(theme) {
return new CometChatMessageComposerAction({
id: CometChatUIKitConstants.MessageTypes.video,
title: localize("ATTACH_VIDEO"),
iconURL: "assets/video.svg",
onClick: null,
iconTint: theme.palette.getAccent700(),
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent700(),
borderRadius: "8px",
background: theme.palette.getAccent100(),
});
}
audioAttachmentOption(theme) {
return new CometChatMessageComposerAction({
id: CometChatUIKitConstants.MessageTypes.audio,
title: localize("ATTACH_AUDIO"),
iconURL: "assets/audio-file.svg",
onClick: null,
iconTint: theme.palette.getAccent700(),
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent700(),
borderRadius: "8px",
background: theme.palette.getAccent100(),
});
}
fileAttachmentOption(theme) {
return new CometChatMessageComposerAction({
id: CometChatUIKitConstants.MessageTypes.file,
title: localize("ATTACH_FILE"),
iconURL: "assets/attachment-file.svg",
onClick: null,
iconTint: theme.palette.getAccent700(),
titleFont: fontHelper(theme.typography.subtitle1),
titleColor: theme.palette.getAccent700(),
borderRadius: "8px",
background: theme.palette.getAccent100(),
});
}
getAttachmentOptions(theme, user, group, id) {
let actions = [
this.imageAttachmentOption(theme),
this.videoAttachmentOption(theme),
this.audioAttachmentOption(theme),
this.fileAttachmentOption(theme),
];
return actions;
}
getLastConversationMessage(conversation, loggedInUser, additionalConfigurations) {
let config = {
...additionalConfigurations,
textFormatters: additionalConfigurations?.textFormatters &&
additionalConfigurations?.textFormatters.length
? [...additionalConfigurations.textFormatters]
: [this.getMentionsTextFormatter({ theme: additionalConfigurations.theme, disableMentions: additionalConfigurations.disableMentions })],
};
let message = ConversationUtils.getLastConversationMessage(conversation, loggedInUser, config);
let messageObject = conversation?.getLastMessage();
if (messageObject) {
let textFormatters = config.textFormatters;
if (config && !config.disableMentions) {
let mentionsTextFormatter;
for (let i = 0; i < textFormatters.length; i++) {
if (textFormatters[i] instanceof CometChatMentionsFormatter) {
mentionsTextFormatter = textFormatters[i];
mentionsTextFormatter.setMessage(messageObject);
if (messageObject.getMentionedUsers().length) {
mentionsTextFormatter.setCometChatUserGroupMembers(messageObject.getMentionedUsers());
}
mentionsTextFormatter.setLoggedInUser(CometChatUIKitLoginListener.getLoggedInUser());
}
if (mentionsTextFormatter) {
break;
}
}
if (!mentionsTextFormatter) {
mentionsTextFormatter =
ChatConfigurator.getDataSource().getMentionsTextFormatter({
messageObject,
...config,
alignment: null,
theme: additionalConfigurations.theme,
});
textFormatters.push(mentionsTextFormatter);
}
}
if (messageObject &&
messageObject instanceof CometChat.TextMessage) {
for (let i = 0; i < textFormatters.length; i++) {
message = textFormatters[i].getFormattedText(message, { mentionsTargetElement: MentionsTargetElement.conversation });
}
}
}
return message;
}
/**
* Adds styled @ for every mention in the text by matching uid
*
* @param {CometChat.TextMessage} message
* @param {string} subtitle
* @returns {void}
*/
getMentionsFormattedText(message, subtitle, mentionsFormatterParams) {
const regex = /<@uid:(.*?)>/g;
let messageText = message.getText();
let messageTextTmp = subtitle;
let match = regex.exec(messageText);
let cometChatUsers = [];
let mentionedUsers = message.getMentionedUsers();
while (match !== null) {
let user;
for (let i = 0; i < mentionedUsers.length; i++) {
if (match[1] == mentionedUsers[i].getUid()) {
user = mentionedUsers[i];
}
}
if (user) {
cometChatUsers.push(user);
}
match = regex.exec(messageText);
}
let mentionsFormatter = this.getMentionsTextFormatter(mentionsFormatterParams);
mentionsFormatter.setClasses(["cc-mentions"]);
mentionsFormatter.setCometChatUserGroupMembers(cometChatUsers);
messageTextTmp = mentionsFormatter.getFormattedText(messageTextTmp, mentionsFormatterParams);
return messageTextTmp;
}
getAIOptions(theme, id) {
return [];
}
getAllTextFormatters(formatterParams) {
let formatters = [];
const mentionsFormatter = formatterParams.disableMentions ? null : ChatConfigurator.getDataSource().getMentionsTextFormatter(formatterParams);
const urlTextFormatter = ChatConfigurator.getDataSource().getUrlTextFormatter(formatterParams);
if (mentionsFormatter) {
formatters.push(mentionsFormatter);
}
if (urlTextFormatter) {
formatters.push(urlTextFormatter);
}
return formatters;
}
getMentionsTextFormatter(params) {
let mentionsTextFormatter = new CometChatMentionsFormatter();
if (params && params.theme) {
mentionsTextFormatter.setComposerMentionStyle(new UserMentionStyle({
loggedInUserTextFont: fontHelper(params.theme.typography.text2),
loggedInUserTextColor: params.theme.palette.getPrimary(),
loggedInUserTextBackground: "",
mentionTextFont: fontHelper(params.theme.typography.text2),
mentionTextColor: params.theme.palette.getPrimary(),
mentionTextBackground: "",
}));
mentionsTextFormatter.setConversationMentionStyle(new UserMentionStyle({
loggedInUserTextFont: fontHelper(params.theme.typography.text3),
loggedInUserTextColor: params.theme.palette.getPrimary(),
loggedInUserTextBackground: "",
mentionTextFont: fontHelper(params.theme.typography.text3),
mentionTextColor: params.theme.palette.getPrimary(),
mentionTextBackground: "",
}));
mentionsTextFormatter.setRightBubbleMentionStyle(new UserMentionStyle({
loggedInUserTextFont: fontHelper(params.theme.typography.text3),
loggedInUserTextColor: params.theme.palette.getTertiary(),
loggedInUserTextBackground: "",
mentionTextFont: fontHelper(params.theme.typography.text3),
mentionTextColor: params.theme.palette.getTertiary(),
mentionTextBackground: "",
}));
mentionsTextFormatter.setLeftBubbleMentionStyle(new UserMentionStyle({
loggedInUserTextFont: fontHelper(params.theme.typography.text3),
loggedInUserTextColor: params.theme.palette.getPrimary(),
loggedInUserTextBackground: "",
mentionTextFont: fontHelper(params.theme.typography.text3),
mentionTextColor: params.theme.palette.getPrimary(),
mentionTextBackground: "",
}));
}
return mentionsTextFormatter;
}
getUrlTextFormatter(params = {}) {
let urlTextFormatter = new CometChatUrlsFormatter([
/(https?:\/\/[^\s]+)/g,
]);
if (params.alignment == MessageBubbleAlignment.left) {
urlTextFormatter.setStyle({
formattedTextColor: params.theme.palette.getPrimary(),
formattedTextFont: fontHelper(params.theme.typography.text3),
});
}
else {
urlTextFormatter.setStyle({
formattedTextColor: params.theme.palette.getTertiary(),
formattedTextFont: fontHelper(params.theme.typography.text3),
});
}
return urlTextFormatter;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZVV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9TaGFyZWQvVXRpbHMvTWVzc2FnZVV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLHdCQUF3QixFQUN4Qiw4QkFBOEIsRUFFOUIsUUFBUSxFQUNSLHVCQUF1QixFQUN2QixVQUFVLEVBRVYscUJBQXFCLEdBQ3RCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUNMLDBCQUEwQixFQUUxQiwyQkFBMkIsRUFDM0Isc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsTUFBTSxPQUFPLFlBQVk7SUFDdkI7Ozs7S0FJQztJQUVELGFBQWEsQ0FBQyxLQUFxQjtRQUNqQyxPQUFPLElBQUksc0JBQXNCLENBQUM7WUFDaEMsRUFBRSxFQUFFLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxXQUFXO1lBQ3JELEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDdEMsZUFBZSxFQUFFLGFBQWE7WUFDOUIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztZQUNqRCxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7U0FDekMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7O0tBSUM7SUFF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