UNPKG

@cometchat/chat-uikit-angular

Version:

Ready-to-use Chat UI Components for Angular (JavaScript/Web)

1 lines 1.97 MB
{"version":3,"file":"cometchat-chat-uikit-angular.mjs","sources":["../../../projects/chat-uikit-angular/src/Shared/Utils/MessageUtils.ts","../../../projects/chat-uikit-angular/src/Shared/Framework/ChatConfigurator.ts","../../../projects/chat-uikit-angular/src/Shared/Framework/DataSourceDecorator.ts","../../../projects/chat-uikit-angular/src/Calls/CallingExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Calls/CallingExtension.ts","../../../projects/chat-uikit-angular/src/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.ts","../../../projects/chat-uikit-angular/src/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.ts","../../../projects/chat-uikit-angular/src/Extensions/ImageModeration/ImageModerationExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Extensions/ImageModeration/ImageModerationExtension.ts","../../../projects/chat-uikit-angular/src/Extensions/LinkPreviewExtension/LinkPreviewExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Extensions/LinkPreviewExtension/LinkPreviewExtension.ts","../../../projects/chat-uikit-angular/src/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Extensions/MessageTranslation/MessageTranslationExtension.ts","../../../projects/chat-uikit-angular/src/Extensions/PollsExtension/PollsExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Extensions/PollsExtension/PollsExtension.ts","../../../projects/chat-uikit-angular/src/Extensions/SmartReplies/SmartRepliesExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Extensions/SmartReplies/SmartRepliesExtension.ts","../../../projects/chat-uikit-angular/src/Shared/Utils/ComeChatException.ts","../../../projects/chat-uikit-angular/src/Extensions/Stickers/StickersExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Extensions/Stickers/StickersExtension.ts","../../../projects/chat-uikit-angular/src/Extensions/TextModerator/TextModeratorExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Extensions/TextModerator/TextModeratorExtension.ts","../../../projects/chat-uikit-angular/src/Extensions/ThumbnailGeneration/ThumbnailGenerationExtensionDecorator.ts","../../../projects/chat-uikit-angular/src/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.ts","../../../projects/chat-uikit-angular/src/Shared/Framework/AIExtensionDataSource.ts","../../../projects/chat-uikit-angular/src/AI/AIConversationSummary/AIConversationSummaryDecorator.ts","../../../projects/chat-uikit-angular/src/AI/AIConversationSummary/AIConversationSummary.ts","../../../projects/chat-uikit-angular/src/AI/AISmartReplies/AISmartRepliesDecorator.ts","../../../projects/chat-uikit-angular/src/AI/AISmartReplies/AISmartReplies.ts","../../../projects/chat-uikit-angular/src/AI/AIConversationStarter/AIConversationStarterDecorator.ts","../../../projects/chat-uikit-angular/src/AI/AIConversationStarter/AIConversationStarter.ts","../../../projects/chat-uikit-angular/src/AI/AIAssistBot/AIAssistBotDecorator.ts","../../../projects/chat-uikit-angular/src/AI/AIAssistBot/AIAssistBot.ts","../../../projects/chat-uikit-angular/src/Shared/CometChatUIkit/CometChatUIKit.ts","../../../projects/chat-uikit-angular/src/Shared/Framework/DataSource.ts","../../../projects/chat-uikit-angular/src/Shared/Framework/ExtensionDataSource.ts","../../../projects/chat-uikit-angular/src/CometChatTheme.service.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.html","../../../projects/chat-uikit-angular/src/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.html","../../../projects/chat-uikit-angular/src/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.html","../../../projects/chat-uikit-angular/src/CometChatList/cometchat-list.component.ts","../../../projects/chat-uikit-angular/src/CometChatList/cometchat-list.component.html","../../../projects/chat-uikit-angular/src/CometChatList/cometchat-list.module.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatOutgoingCall/cometchat-outgoing-call.module.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatOngoingCall/cometchat-ongoing-call.module.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallButtons/cometchat-call-buttons.module.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.html","../../../projects/chat-uikit-angular/src/Calls/CometChatIncomingCall/cometchat-incoming-call.module.ts","../../../projects/chat-uikit-angular/src/CometChatUsers/cometchat-users/cometchat-users.component.ts","../../../projects/chat-uikit-angular/src/CometChatUsers/cometchat-users/cometchat-users.component.html","../../../projects/chat-uikit-angular/src/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.ts","../../../projects/chat-uikit-angular/src/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.html","../../../projects/chat-uikit-angular/src/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.ts","../../../projects/chat-uikit-angular/src/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.html","../../../projects/chat-uikit-angular/src/CometChatMessageHeader/cometchat-message-header.module.ts","../../../projects/chat-uikit-angular/src/CometChatUsers/cometchat-users.module.ts","../../../projects/chat-uikit-angular/src/CometChatAddMembers/cometchat-add-members.module.ts","../../../projects/chat-uikit-angular/src/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.ts","../../../projects/chat-uikit-angular/src/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.html","../../../projects/chat-uikit-angular/src/CometChatBannedMembers/cometchat-banned-members.module.ts","../../../projects/chat-uikit-angular/src/CometChatConversations/cometchat-conversations/cometchat-conversations.component.ts","../../../projects/chat-uikit-angular/src/CometChatConversations/cometchat-conversations/cometchat-conversations.component.html","../../../projects/chat-uikit-angular/src/CometChatConversations/cometchat-conversations.module.ts","../../../projects/chat-uikit-angular/src/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.ts","../../../projects/chat-uikit-angular/src/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.html","../../../projects/chat-uikit-angular/src/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list/aiassist-bot-message-list.component.ts","../../../projects/chat-uikit-angular/src/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list/aiassist-bot-message-list.component.html","../../../projects/chat-uikit-angular/src/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.ts","../../../projects/chat-uikit-angular/src/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.html","../../../projects/chat-uikit-angular/src/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.ts","../../../projects/chat-uikit-angular/src/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.html","../../../projects/chat-uikit-angular/src/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.ts","../../../projects/chat-uikit-angular/src/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.html","../../../projects/chat-uikit-angular/src/CometChatUserMemberWrapper/cometchat-user-member-wrapper.component.ts","../../../projects/chat-uikit-angular/src/CometChatUserMemberWrapper/cometchat-user-member-wrapper.component.html","../../../projects/chat-uikit-angular/src/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.ts","../../../projects/chat-uikit-angular/src/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.html","../../../projects/chat-uikit-angular/src/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.ts","../../../projects/chat-uikit-angular/src/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.html","../../../projects/chat-uikit-angular/src/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.ts","../../../projects/chat-uikit-angular/src/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.html","../../../projects/chat-uikit-angular/src/CometChatDetails/cometchat-details/cometchat-details.component.ts","../../../projects/chat-uikit-angular/src/CometChatDetails/cometchat-details/cometchat-details.component.html","../../../projects/chat-uikit-angular/src/CometChatMessages/cometchat-messages/cometchat-messages.component.ts","../../../projects/chat-uikit-angular/src/CometChatMessages/cometchat-messages/cometchat-messages.component.html","../../../projects/chat-uikit-angular/src/Shared/Views/CometChatTabs/cometchat-tabs/cometchat-tabs.component.ts","../../../projects/chat-uikit-angular/src/Shared/Views/CometChatTabs/cometchat-tabs/cometchat-tabs.component.html","../../../projects/chat-uikit-angular/src/CometChatGroups/cometchat-groups/cometchat-groups.component.ts","../../../projects/chat-uikit-angular/src/CometChatGroups/cometchat-groups/cometchat-groups.component.html","../../../projects/chat-uikit-angular/src/CometChatContacts/cometchat-contacts/cometchat-contacts.component.ts","../../../projects/chat-uikit-angular/src/CometChatContacts/cometchat-contacts/cometchat-contacts.component.html","../../../projects/chat-uikit-angular/src/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.ts","../../../projects/chat-uikit-angular/src/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.html","../../../projects/chat-uikit-angular/src/CometChatMessageBubble/cometchat-message-bubble.module.ts","../../../projects/chat-uikit-angular/src/Shared/Views/CometChatTabs/cometchat-tabs.module.ts","../../../projects/chat-uikit-angular/src/CometChatGroups/cometchat-groups.module.ts","../../../projects/chat-uikit-angular/src/CometChatContacts/cometchat-contacts.module.ts","../../../projects/chat-uikit-angular/src/CometChatMessageInformation/cometchat-message-information.module.ts","../../../projects/chat-uikit-angular/src/CometChatMessageList/cometchat-message-list.module.ts","../../../projects/chat-uikit-angular/src/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list.module.ts","../../../projects/chat-uikit-angular/src/CometChatGroupMembers/cometchat-group-members.module.ts","../../../projects/chat-uikit-angular/src/CometChatUserMemberWrapper/cometchat-user-member-wrapper.module.ts","../../../projects/chat-uikit-angular/src/CometChatMessageComposer/cometchat-message-composer.module.ts","../../../projects/chat-uikit-angular/src/CometChatThreadedMessages/cometchat-threaded-messages.module.ts","../../../projects/chat-uikit-angular/src/CometChatTransferOwnership/cometchat-transfer-ownership.module.ts","../../../projects/chat-uikit-angular/src/CometChatDetails/cometchat-details.module.ts","../../../projects/chat-uikit-angular/src/CometChatMessages/cometchat-messages.module.ts","../../../projects/chat-uikit-angular/src/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.ts","../../../projects/chat-uikit-angular/src/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.ts","../../../projects/chat-uikit-angular/src/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.html","../../../projects/chat-uikit-angular/src/CometChatGroupsWithMessages/cometchat-groups-with-messages.module.ts","../../../projects/chat-uikit-angular/src/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.ts","../../../projects/chat-uikit-angular/src/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.html","../../../projects/chat-uikit-angular/src/CometChatUsersWithMessages/cometchat-users-with-messages.module.ts","../../../projects/chat-uikit-angular/src/Shared/Utils/CallLogUtils.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogs/cometchat-call-logs/cometchat-call-logs.component.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogs/cometchat-call-logs/cometchat-call-logs.component.html","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogs/cometchat-call-logs.module.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogParticipants/cometchat-call-log-participants/cometchat-call-log-participants.component.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogParticipants/cometchat-call-log-participants/cometchat-call-log-participants.component.html","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogParticipants/cometchat-call-log-participants.module.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings/cometchat-call-log-recordings.component.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings/cometchat-call-log-recordings.component.html","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings.module.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogHistory/cometchat-call-log-history/cometchat-call-log-history.component.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogHistory/cometchat-call-log-history/cometchat-call-log-history.component.html","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogHistory/cometchat-call-log-history.module.ts","../../../projects/chat-uikit-angular/src/Shared/Utils/CallDetailUtils.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogDetails/cometchat-call-log-details/cometchat-call-log-details.component.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogDetails/cometchat-call-log-details/cometchat-call-log-details.component.html","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogDetails/cometchat-call-log-details.module.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details/cometchat-call-logs-with-details.component.ts","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details/cometchat-call-logs-with-details.component.html","../../../projects/chat-uikit-angular/src/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details.module.ts","../../../projects/chat-uikit-angular/src/public-api.ts","../../../projects/chat-uikit-angular/src/cometchat-chat-uikit-angular.ts"],"sourcesContent":["import {\n CometChatMessageOption,\n MessageBubbleAlignment,\n CometChatMessageTemplate,\n CometChatMessageComposerAction,\n CometChatTheme,\n localize,\n CometChatUIKitConstants,\n fontHelper,\n CometChatActionsView,\n MentionsTargetElement,\n} from \"@cometchat/uikit-resources\";\nimport {\n CometChatMentionsFormatter,\n CometChatTextFormatter,\n CometChatUIKitLoginListener,\n CometChatUrlsFormatter,\n ConversationUtils,\n UserMentionStyle,\n} from \"@cometchat/uikit-shared\";\nimport { CometChat } from \"@cometchat/chat-sdk-javascript\";\nimport { DataSource } from \"../Framework/DataSource\";\nimport { ChatConfigurator } from \"../Framework/ChatConfigurator\";\nimport { CometChatUIKit } from \"../CometChatUIkit/CometChatUIKit\";\nexport class MessageUtils implements DataSource {\n /**\n * Creates an option to edit message.\n * @param {CometChatTheme} theme - The theme object.\n * @return {CometChatMessageOption} - Returns a new message option.\n */\n\n getEditOption(theme: CometChatTheme): CometChatMessageOption {\n return new CometChatMessageOption({\n id: CometChatUIKitConstants.MessageOption.editMessage,\n title: localize(\"EDIT\"),\n iconURL: \"assets/editicon.svg\",\n onClick: null,\n iconTint: theme.palette.getAccent600(),\n backgroundColor: \"transparent\",\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent600(),\n });\n }\n /**\n * Creates an option to react to a message.\n * @param {CometChatTheme} theme - The theme object.\n * @return {CometChatMessageOption} - Returns a new message option.\n */\n\n getReactionOption(theme: CometChatTheme): CometChatMessageOption {\n return new CometChatMessageOption({\n id: CometChatUIKitConstants.MessageOption.reactToMessage,\n title: localize(\"REACT\"),\n iconURL: \"assets/addreaction.svg\",\n onClick: undefined,\n iconTint: theme.palette.getAccent600(),\n backgroundColor: \"transparent\",\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent600(),\n });\n }\n /**\n * Creates an option to get info about a message.\n * @param {CometChatTheme} theme - The theme object.\n * @return {CometChatMessageOption} - Returns a new message option.\n */\n\n getMessageInfoOption(theme: CometChatTheme): CometChatMessageOption {\n return new CometChatMessageOption({\n id: CometChatUIKitConstants.MessageOption.messageInformation,\n title: localize(\"INFO\"),\n iconURL: \"assets/Info.svg\",\n onClick: null,\n iconTint: theme.palette.getAccent600(),\n backgroundColor: \"transparent\",\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent600(),\n });\n }\n /**\n * Creates an option to send a private message.\n * @param {CometChatTheme} theme - The theme object.\n * @return {CometChatMessageOption} - Returns a new message option.\n */\n getMessagePrivatelyOption(theme: CometChatTheme): CometChatMessageOption {\n return new CometChatMessageOption({\n id: CometChatUIKitConstants.MessageOption.sendMessagePrivately,\n title: localize(\"MESSAGE_PRIVATELY\"),\n iconURL: \"assets/message-privately.svg\",\n onClick: null,\n iconTint: theme.palette.getAccent600(),\n backgroundColor: \"transparent\",\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent600(),\n });\n }\n /**\n * Creates an option to delete a message.\n * @param {CometChatTheme} theme - The theme object.\n * @return {CometChatMessageOption} - Returns a new message option.\n */\n\n getDeleteOption(theme: CometChatTheme): CometChatMessageOption {\n return new CometChatMessageOption({\n id: CometChatUIKitConstants.MessageOption.deleteMessage,\n title: localize(\"DELETE\"),\n iconURL: \"assets/deleteicon.svg\",\n onClick: null,\n iconTint: theme.palette.getAccent600(),\n backgroundColor: \"transparent\",\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent600(),\n });\n }\n /**\n * Creates an option to reply to a message in a thread.\n * @param {CometChatTheme} theme - The theme object.\n * @return {CometChatMessageOption} - Returns a new message option.\n */\n\n getReplyInThreadOption(theme: CometChatTheme): CometChatMessageOption {\n return new CometChatMessageOption({\n id: CometChatUIKitConstants.MessageOption.replyInThread,\n title: localize(\"REPLY\"),\n iconURL: \"assets/threadicon.svg\",\n onClick: null,\n iconTint: theme.palette.getAccent600(),\n backgroundColor: \"transparent\",\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent600(),\n });\n }\n /**\n * Creates an option to copy a message.\n * @param {CometChatTheme} theme - The theme object.\n * @return {CometChatMessageOption} - Returns a new message option.\n */\n getCopyOption(theme: CometChatTheme): CometChatMessageOption {\n return new CometChatMessageOption({\n id: CometChatUIKitConstants.MessageOption.copyMessage,\n title: localize(\"COPY\"),\n iconURL: \"assets/Copy.svg\",\n onClick: null,\n iconTint: theme.palette.getAccent600(),\n backgroundColor: \"transparent\",\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent600(),\n });\n }\n /**\n * Checks if a message is sent by current logged in user.\n * @param {CometChat.User} loggedInUser - The current logged in user.\n * @param {CometChat.BaseMessage} message - The message to check.\n * @return {boolean} - Returns true if message is sent by current logged in user, otherwise false.\n */\n\n isSentByMe(\n loggedInUser: CometChat.User,\n message: CometChat.BaseMessage\n ): boolean {\n return loggedInUser.getUid() === message.getSender().getUid();\n }\n /**\n * Fetches options for text messages.\n * @param {CometChat.User} loggedInUser - The current logged in user.\n * @param {CometChat.BaseMessage} messageObject - The message object.\n * @param {CometChatTheme} theme - The theme object.\n * @param {CometChat.Group} group - The group object.\n * @return {Array<CometChatMessageOption>} - Returns an array of message options.\n */\n\n getTextMessageOptions(\n loggedInUser: CometChat.User,\n messageObject: CometChat.BaseMessage,\n theme: CometChatTheme,\n group?: CometChat.Group\n ): Array<CometChatMessageOption> {\n let isSentByMe: boolean = this.isSentByMe(loggedInUser, messageObject);\n let isParticipant: boolean = false;\n if (\n group?.getScope() == CometChatUIKitConstants.groupMemberScope.participant\n ) {\n isParticipant = true;\n }\n let messageOptionList: Array<CometChatMessageOption> = [];\n messageOptionList.push(this.getReactionOption(theme));\n if (!messageObject.getParentMessageId()) {\n messageOptionList.push(this.getReplyInThreadOption(theme));\n }\n messageOptionList.push(this.getCopyOption(theme));\n if (isSentByMe || (!isParticipant && group)) {\n messageOptionList.push(this.getEditOption(theme));\n }\n if (isSentByMe) {\n messageOptionList.push(this.getMessageInfoOption(theme));\n }\n if (isSentByMe || (!isParticipant && group))\n messageOptionList.push(this.getDeleteOption(theme));\n if (group && !isSentByMe) {\n messageOptionList.push(this.getMessagePrivatelyOption(theme));\n }\n return messageOptionList;\n }\n /**\n * Fetches options for image messages.\n * @param {CometChat.User} loggedInUser - The current logged in user.\n * @param {CometChat.BaseMessage} messageObject - The message object.\n * @param {CometChatTheme} theme - The theme object.\n * @param {CometChat.Group} group - The group object.\n * @return {Array<CometChatMessageOption>} - Returns an array of message options.\n */\n getImageMessageOptions(\n loggedInUser: CometChat.User,\n messageObject: CometChat.BaseMessage,\n theme: CometChatTheme,\n group?: CometChat.Group\n ): Array<CometChatMessageOption> {\n let messageOptionList: CometChatMessageOption[] = [];\n messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(\n loggedInUser,\n messageObject,\n theme,\n group\n );\n return messageOptionList;\n }\n /**\n * Fetches options for video messages.\n * @param {CometChat.User} loggedInUser - The current logged in user.\n * @param {CometChat.BaseMessage} messageObject - The message object.\n * @param {CometChatTheme} theme - The theme object.\n * @param {CometChat.Group} group - (Optional) The group object.\n * @return {Array<CometChatMessageOption>} - Returns an array of message options.\n */\n getVideoMessageOptions(\n loggedInUser: CometChat.User,\n messageObject: CometChat.BaseMessage,\n theme: CometChatTheme,\n group?: CometChat.Group\n ): Array<CometChatMessageOption> {\n let messageOptionList: CometChatMessageOption[] = [];\n messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(\n loggedInUser,\n messageObject,\n theme,\n group\n );\n return messageOptionList;\n }\n /**\n * Fetches options for audio messages.\n * @param {CometChat.User} loggedInUser - The current logged in user.\n * @param {CometChat.BaseMessage} messageObject - The message object.\n * @param {CometChatTheme} theme - The theme object.\n * @param {CometChat.Group} group - (Optional) The group object.\n * @return {Array<CometChatMessageOption>} - Returns an array of message options.\n */\n getAudioMessageOptions(\n loggedInUser: CometChat.User,\n messageObject: CometChat.BaseMessage,\n theme: CometChatTheme,\n group?: CometChat.Group\n ): Array<CometChatMessageOption> {\n let messageOptionList: CometChatMessageOption[] = [];\n messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(\n loggedInUser,\n messageObject,\n theme,\n group\n );\n return messageOptionList;\n }\n /**\n * Fetches options for file messages.\n * @param {CometChat.User} loggedInUser - The current logged in user.\n * @param {CometChat.BaseMessage} messageObject - The message object.\n * @param {CometChatTheme} theme - The theme object.\n * @param {CometChat.Group} group - (Optional) The group object.\n * @return {Array<CometChatMessageOption>} - Returns an array of message options.\n */\n getFileMessageOptions(\n loggedInUser: CometChat.User,\n messageObject: CometChat.BaseMessage,\n theme: CometChatTheme,\n group?: CometChat.Group\n ): Array<CometChatMessageOption> {\n let messageOptionList: CometChatMessageOption[] = [];\n messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(\n loggedInUser,\n messageObject,\n theme,\n group\n );\n return messageOptionList;\n }\n getBottomView(\n _messageObject: CometChat.BaseMessage,\n _alignment: MessageBubbleAlignment\n ) {\n return null;\n }\n getSchedulerMessageTemplate(): CometChatMessageTemplate {\n return new CometChatMessageTemplate({\n type: CometChatUIKitConstants.MessageTypes.scheduler,\n category: CometChatUIKitConstants.MessageCategory.interactive,\n options: ChatConfigurator.getDataSource().getMessageOptions,\n });\n }\n getTextMessageTemplate(): CometChatMessageTemplate {\n return new CometChatMessageTemplate({\n type: CometChatUIKitConstants.MessageTypes.text,\n category: CometChatUIKitConstants.MessageCategory.message,\n options: ChatConfigurator.getDataSource().getMessageOptions,\n });\n }\n getAudioMessageTemplate(): CometChatMessageTemplate {\n return new CometChatMessageTemplate({\n type: CometChatUIKitConstants.MessageTypes.audio,\n category: CometChatUIKitConstants.MessageCategory.message,\n options: ChatConfigurator.getDataSource().getMessageOptions,\n });\n }\n getVideoMessageTemplate(): CometChatMessageTemplate {\n return new CometChatMessageTemplate({\n type: CometChatUIKitConstants.MessageTypes.video,\n category: CometChatUIKitConstants.MessageCategory.message,\n options: ChatConfigurator.getDataSource().getMessageOptions,\n });\n }\n getImageMessageTemplate(): CometChatMessageTemplate {\n return new CometChatMessageTemplate({\n type: CometChatUIKitConstants.MessageTypes.image,\n category: CometChatUIKitConstants.MessageCategory.message,\n options: ChatConfigurator.getDataSource().getMessageOptions,\n });\n }\n getGroupActionTemplate(): CometChatMessageTemplate {\n return new CometChatMessageTemplate({\n type: CometChatUIKitConstants.MessageTypes.groupMember,\n category: CometChatUIKitConstants.MessageCategory.action,\n });\n }\n getFileMessageTemplate(): CometChatMessageTemplate {\n return new CometChatMessageTemplate({\n type: CometChatUIKitConstants.MessageTypes.file,\n category: CometChatUIKitConstants.MessageCategory.message,\n options: ChatConfigurator.getDataSource().getMessageOptions,\n });\n }\n getFormMessageTemplate(): CometChatMessageTemplate {\n return new CometChatMessageTemplate({\n type: CometChatUIKitConstants.MessageTypes.form,\n category: CometChatUIKitConstants.MessageCategory.interactive,\n options: ChatConfigurator.getDataSource().getMessageOptions,\n });\n }\n\n getCardMessageTemplate(): CometChatMessageTemplate {\n return new CometChatMessageTemplate({\n type: CometChatUIKitConstants.MessageTypes.card,\n category: CometChatUIKitConstants.MessageCategory.interactive,\n options: ChatConfigurator.getDataSource().getMessageOptions,\n });\n }\n /**\n * Function to check if a user's status should be visible\n * @param {CometChat.User | CometChat.GroupMember} user - The user whose status visibility is to be checked.\n * @return {boolean} - Returns `true` if the user's status should be hidden (blocked or offline), `false` otherwise.\n */\n getUserStatusVisibility(\n user?: CometChat.User | CometChat.GroupMember\n ) {\n let userBlockedFlag = false;\n if (user) {\n if (user.getBlockedByMe() || user.getHasBlockedMe() || user.getStatus() === CometChatUIKitConstants.userStatusType.offline) {\n userBlockedFlag = true;\n }\n }\n return userBlockedFlag;\n }\n getAllMessageTemplates(): Array<CometChatMessageTemplate> {\n return [\n ChatConfigurator.getDataSource().getTextMessageTemplate(),\n ChatConfigurator.getDataSource().getImageMessageTemplate(),\n ChatConfigurator.getDataSource().getVideoMessageTemplate(),\n ChatConfigurator.getDataSource().getAudioMessageTemplate(),\n ChatConfigurator.getDataSource().getFileMessageTemplate(),\n ChatConfigurator.getDataSource().getGroupActionTemplate(),\n ChatConfigurator.getDataSource().getFormMessageTemplate(),\n ChatConfigurator.getDataSource().getCardMessageTemplate(),\n ChatConfigurator.getDataSource().getSchedulerMessageTemplate(),\n ];\n }\n getMessageTemplate(\n messageType: string,\n messageCategory: string\n ): CometChatMessageTemplate | null {\n let _template: CometChatMessageTemplate | null = null;\n if (messageCategory != CometChatUIKitConstants.MessageCategory.call) {\n switch (messageType) {\n case CometChatUIKitConstants.MessageTypes.text:\n _template = ChatConfigurator.getDataSource().getTextMessageTemplate();\n break;\n case CometChatUIKitConstants.MessageTypes.image:\n _template =\n ChatConfigurator.getDataSource().getImageMessageTemplate();\n break;\n case CometChatUIKitConstants.MessageTypes.video:\n _template =\n ChatConfigurator.getDataSource().getVideoMessageTemplate();\n break;\n case CometChatUIKitConstants.MessageTypes.groupMember:\n _template = ChatConfigurator.getDataSource().getGroupActionTemplate();\n break;\n case CometChatUIKitConstants.MessageTypes.file:\n _template = ChatConfigurator.getDataSource().getFileMessageTemplate();\n break;\n case CometChatUIKitConstants.MessageTypes.audio:\n _template =\n ChatConfigurator.getDataSource().getAudioMessageTemplate();\n break;\n case CometChatUIKitConstants.MessageTypes.form:\n _template = ChatConfigurator.getDataSource().getFormMessageTemplate();\n break;\n case CometChatUIKitConstants.MessageTypes.card:\n _template = ChatConfigurator.getDataSource().getCardMessageTemplate();\n break;\n case CometChatUIKitConstants.MessageTypes.scheduler:\n _template =\n ChatConfigurator.getDataSource().getSchedulerMessageTemplate();\n break;\n }\n }\n return _template;\n }\n getMessageOptions(\n loggedInUser: CometChat.User,\n messageObject: CometChat.BaseMessage,\n theme: CometChatTheme,\n group?: CometChat.Group\n ): Array<CometChatMessageOption> {\n let _optionList: Array<CometChatMessageOption> = [];\n if (\n messageObject.getCategory() ==\n CometChatUIKitConstants.MessageCategory.message\n ) {\n switch (messageObject.getType()) {\n case CometChatUIKitConstants.MessageTypes.text:\n _optionList = ChatConfigurator.getDataSource().getTextMessageOptions(\n loggedInUser,\n messageObject,\n theme,\n group\n );\n break;\n case CometChatUIKitConstants.MessageTypes.image:\n _optionList = ChatConfigurator.getDataSource().getImageMessageOptions(\n loggedInUser,\n messageObject,\n theme,\n group\n );\n break;\n case CometChatUIKitConstants.MessageTypes.video:\n _optionList = ChatConfigurator.getDataSource().getVideoMessageOptions(\n loggedInUser,\n messageObject,\n theme,\n group\n );\n break;\n case CometChatUIKitConstants.MessageTypes.groupMember:\n _optionList = [];\n break;\n case CometChatUIKitConstants.MessageTypes.file:\n _optionList = ChatConfigurator.getDataSource().getFileMessageOptions(\n loggedInUser,\n messageObject,\n theme,\n group\n );\n break;\n case CometChatUIKitConstants.MessageTypes.audio:\n _optionList = ChatConfigurator.getDataSource().getAudioMessageOptions(\n loggedInUser,\n messageObject,\n theme,\n group\n );\n break;\n }\n } else if (\n messageObject.getCategory() ==\n CometChatUIKitConstants.MessageCategory.custom ||\n messageObject.getCategory() ==\n CometChatUIKitConstants.MessageCategory.interactive\n ) {\n _optionList = ChatConfigurator.getDataSource().getCommonOptions(\n loggedInUser,\n messageObject,\n theme,\n group\n );\n }\n return _optionList;\n }\n getCommonOptions(\n loggedInUser: CometChat.User,\n messageObject: CometChat.BaseMessage,\n theme: CometChatTheme,\n group?: CometChat.Group\n ): Array<CometChatMessageOption> {\n let isSentByMe: boolean = this.isSentByMe(loggedInUser, messageObject);\n let isParticipant: boolean = false;\n if (group?.getScope() == CometChatUIKitConstants.groupMemberScope.participant)\n isParticipant = true;\n let messageOptionList: Array<CometChatMessageOption> = [];\n messageOptionList.push(this.getReactionOption(theme));\n if (!messageObject?.getParentMessageId()) {\n messageOptionList.push(this.getReplyInThreadOption(theme));\n }\n if (isSentByMe) {\n messageOptionList.push(this.getMessageInfoOption(theme));\n }\n if (isSentByMe || (!isParticipant && group))\n messageOptionList.push(this.getDeleteOption(theme));\n if (group && !isSentByMe) {\n messageOptionList.push(this.getMessagePrivatelyOption(theme));\n }\n return messageOptionList;\n }\n getAllMessageTypes(): Array<string> {\n return [\n CometChatUIKitConstants.MessageTypes.text,\n CometChatUIKitConstants.MessageTypes.image,\n CometChatUIKitConstants.MessageTypes.audio,\n CometChatUIKitConstants.MessageTypes.video,\n CometChatUIKitConstants.MessageTypes.file,\n CometChatUIKitConstants.MessageTypes.groupMember,\n CometChatUIKitConstants.MessageTypes.form,\n CometChatUIKitConstants.MessageTypes.card,\n CometChatUIKitConstants.MessageTypes.scheduler,\n ];\n }\n addList(): string {\n return \"<Message Utils>\";\n }\n getAllMessageCategories(): Array<string> {\n return [\n CometChatUIKitConstants.MessageCategory.message,\n CometChatUIKitConstants.MessageCategory.action,\n CometChatUIKitConstants.MessageCategory.interactive,\n ];\n }\n getAuxiliaryOptions(\n id: ComposerId,\n user?: CometChat.User,\n group?: CometChat.Group\n ): any {\n return null;\n }\n getId(): string {\n return \"messageUtils\";\n }\n getActionMessage(message: CometChat.Action): string {\n try {\n if (message instanceof CometChat.Action) {\n const action = message.getAction();\n const actionBy = message.getActionBy();\n const actionOn = message.getActionOn();\n\n const byString = (actionBy as CometChat.User).getName();\n const forString =\n action === CometChatUIKitConstants.groupMemberAction.JOINED ||\n action === CometChatUIKitConstants.groupMemberAction.LEFT\n ? \"\"\n : (actionOn as CometChat.User).getName();\n\n switch (action) {\n case CometChatUIKitConstants.groupMemberAction.ADDED:\n return `${byString} ${localize(\"ADDED\")} ${forString}`;\n case CometChatUIKitConstants.groupMemberAction.JOINED:\n return `${byString} ${localize(\"JOINED\")}`;\n case CometChatUIKitConstants.groupMemberAction.LEFT:\n return `${byString} ${localize(\"LEFT\")}`;\n case CometChatUIKitConstants.groupMemberAction.KICKED:\n return `${byString} ${localize(\"KICKED\")} ${forString}`;\n case CometChatUIKitConstants.groupMemberAction.BANNED:\n return `${byString} ${localize(\"BANNED\")} ${forString}`;\n case CometChatUIKitConstants.groupMemberAction.UNBANNED:\n return `${byString} ${localize(\"UNBANNED\")} ${forString}`;\n case CometChatUIKitConstants.groupMemberAction.SCOPE_CHANGE:\n return `${byString} ${localize(\n \"MADE\"\n )} ${forString} ${message.getNewScope()}`;\n default:\n return \"\";\n }\n } else {\n return \"\";\n }\n } catch (e) {\n return \"\";\n }\n }\n\n imageAttachmentOption(theme: CometChatTheme): CometChatMessageComposerAction {\n return new CometChatMessageComposerAction({\n id: CometChatUIKitConstants.MessageTypes.image,\n title: localize(\"ATTACH_IMAGE\"),\n iconURL: \"assets/photolibrary.svg\",\n onClick: null,\n iconTint: theme.palette.getAccent700(),\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent700(),\n borderRadius: \"8px\",\n background: theme.palette.getAccent100(),\n });\n }\n videoAttachmentOption(theme: CometChatTheme): CometChatMessageComposerAction {\n return new CometChatMessageComposerAction({\n id: CometChatUIKitConstants.MessageTypes.video,\n title: localize(\"ATTACH_VIDEO\"),\n iconURL: \"assets/video.svg\",\n onClick: null,\n iconTint: theme.palette.getAccent700(),\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent700(),\n borderRadius: \"8px\",\n background: theme.palette.getAccent100(),\n });\n }\n audioAttachmentOption(theme: CometChatTheme): CometChatMessageComposerAction {\n return new CometChatMessageComposerAction({\n id: CometChatUIKitConstants.MessageTypes.audio,\n title: localize(\"ATTACH_AUDIO\"),\n iconURL: \"assets/audio-file.svg\",\n onClick: null,\n iconTint: theme.palette.getAccent700(),\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent700(),\n borderRadius: \"8px\",\n background: theme.palette.getAccent100(),\n });\n }\n fileAttachmentOption(theme: CometChatTheme): CometChatMessageComposerAction {\n return new CometChatMessageComposerAction({\n id: CometChatUIKitConstants.MessageTypes.file,\n title: localize(\"ATTACH_FILE\"),\n iconURL: \"assets/attachment-file.svg\",\n onClick: null,\n iconTint: theme.palette.getAccent700(),\n titleFont: fontHelper(theme.typography.subtitle1),\n titleColor: theme.palette.getAccent700(),\n borderRadius: \"8px\",\n background: theme.palette.getAccent100(),\n });\n }\n getAttachmentOptions(\n theme: CometChatTheme,\n user?: CometChat.User,\n group?: CometChat.Group,\n id?: ComposerId\n ): CometChatMessageComposerAction[] {\n let actions: Array<CometChatMessageComposerAction> = [\n this.imageAttachmentOption(theme),\n this.videoAttachmentOption(theme),\n this.audioAttachmentOption(theme),\n this.fileAttachmentOption(theme),\n ];\n return actions;\n }\n\n getLastConversationMessage(\n conversation: CometChat.Conversation,\n loggedInUser: CometChat.User,\n additionalConfigurations: any\n ): string {\n let config = {\n ...additionalConfigurations,\n textFormatters:\n additionalConfigurations?.textFormatters &&\n additionalConfigurations?.textFormatters.length\n ? [...additionalConfigurations.textFormatters]\n : [this.getMentionsTextFormatter({ theme: additionalConfigurations.theme, disableMentions: additionalConfigurations.disableMentions })],\n };\n let message = ConversationUtils.getLastConversationMessage(\n conversation,\n loggedInUser,\n config\n );\n let messageObject = conversation?.getLastMessage();\n if (messageObject) {\n let textFormatters: Array<CometChatTextFormatter> = config.textFormatters;\n if (config && !config.disableMentions) {\n let mentionsTextFormatter!: CometChatMentionsFormatter;\n for (let i = 0; i < textFormatters.length; i++) {\n if (textFormatters[i] instanceof CometChatMentionsFormatter) {\n mentionsTextFormatter = textFormatters[\n i\n ] as CometChatMentionsFormatter;\n mentionsTextFormatter.setMessage(messageObject);\n if (messageObject.getMentionedUsers().length) {\n mentionsTextFormatter.setCometChatUserGroupMembers(\n messageObject.getMentionedUsers()\n );\n }\n mentionsTextFormatter.setLoggedInUser(\n CometChatUIKitLoginListener.getLoggedInUser()!\n );\n }\n if (mentionsTextFormatter) {\n break;\n }\n }\n if (!mentionsTextFormatter) {\n mentionsTextFormatter =\n ChatConfigurator.getDataSource().getMentionsTextFormatter({\n messageObject,\n ...config,\n alignment: null,\n theme: additionalConfigurations.theme,\n });\n textFormatters.push(mentionsTextFormatter);\n }\n }\n\n if (\n messageObject &&\n messageObject instanceof CometChat.TextMessage\n ) {\n for (let i = 0; i < textFormatters.length; i++) {\n message = textFormatters[i].getFormattedText(message, { mentionsTargetElement: MentionsTargetElement.conversation });\n }\n }\n }\n return message;\n }\n\n /**\n * Adds styled @ for every mention in the text by matching uid\n *\n * @param {CometChat.TextMessage} message\n * @param {string} subtitle\n * @returns {void}\n */\n getMentionsFormattedText(\n message: CometChat.TextMessage,\n subtitle: string,\n mentionsFormatterParams: {\n mentionsTargetElement: MentionsTargetElement;\n theme: CometChatTheme;\n }\n ) {\n const regex = /<@uid:(.*?)>/g;\n let messageText = message.getText();\n let messageTextTmp: string = subtitle;\n let match = regex.exec(messageText);\n let cometChatUsers: Array<CometChat.User | CometChat.GroupMember> = [];\n let mentionedUsers = message.getMentionedUsers();\n while (match !== null) {\n let user;\n for (let i = 0; i < mentionedUsers.length; i++) {\n if (match[1] == mentionedUsers[i].getUid()) {\n user = mentionedUsers[i];\n }\n }\n if (user) {\n cometChatUsers.push(user);\n }\n match = regex.exec(messageText);\n }\n let mentionsFormatter = this.getMentionsTextFormatter(\n mentionsFormatterParams\n );\n mentionsFormatter.setClasses([\"cc-mentions\"]);\n mentionsFormatter.setCometChatUserGroupMembers(cometChatUsers);\n messageTextTmp = mentionsFormatter.getFormattedText(\n messageTextTmp,\n mentionsFormatterParams\n ) as string;\n return messageTextTmp;\n }\n\n getAIOptions(\n theme: CometChatTheme,\n id?: Map<String, any>\n ): Array<CometChatMessageComposerAction | CometChatActionsView> {\n return [];\n }\n\n getAllTextFormatters(formatterParams: any): CometChatTextFormatter[] {\n let formatters = [];\n const mentionsFormatter = formatterParams.disableMentions ? null : ChatConfigurator.getDataSource().getMentionsTextFormatter(\n formatterParams\n );\n const urlTextFormatter = ChatConfigurator.getDataSource().getUrlTextFormatter(formatterParams);\n if (mentionsFormatter) {\n formatters.push(mentionsFormatter);\n }\n if (urlTextFormatter) {\n formatters.push(urlTextFormatter);\n }\n return formatters;\n }\n\n getMentionsTextFormatter(params: any): CometChatMentionsFormatter {\n let mentionsTextFormatter = new CometChatMentionsFormatter();\n if (params && params.theme) {\n mentionsTextFormatter.setComposerMentionStyle(\n new UserMentionStyle({\n loggedInUserTextFont: fontHelper(params.theme.typography.text2),\n loggedInUserTextColor: params.theme.palette.getPrimary(),\n loggedInUserTextBackground: \"\",\n mentionTextFont: fontHelper(params.theme.typography.text2),\n mentionTextColor: params.theme.palette.getPrimary(),\n mentionTextBackground: \"\",\n })\n );\n mentionsTextFormatter.setConversationMentionStyle(\n new UserMentionStyle({\n loggedInUserTextFont: fontHelper(params.theme.typography.text3),\n loggedInUserTextColor: params.theme.palette.getPrimary(),\n loggedInUserTextBackground: \"\",\n mentionTextFont: fontHelper(params.theme.typography.text3),\n mentionTextColor: params.theme.palette.getPrimary(),\n mentionTextBackground: \"\",\n })\n );\n mentionsTextFormatter.setRightBubbleMentionStyle(\n new UserMentionStyle({\n loggedInUserTextFont: fontHelper(params.theme.typography.text3),\n loggedInUserTextColor: params.theme.palette.getTertiary(),\n loggedInUserTextBackground: \"\",\n mentionTextFont: fontHelper(params.theme.typography.text3),\n mentionTextColor: params.theme.palette.getTertiary(),\n mentionTextBackground: \"\",\n })\n );\n mentionsTextFormatter.setLeftBubbleMentionStyle(\n new UserMentionStyle({\n loggedInUserTextFont: fontHelper(params.theme.typography.text3),\n loggedInUserTextColor: params.theme.palette.getPrimary(),\n loggedInUserTextBackground: \"\",\n mentionTextFont: fontHelper(params.theme.typography.text3),\n mentionTextColor: params.theme.palette.getPrimary(),\n mentionTextBackground: \"\",\n })\n );\n }\n return mentionsTextFormatter;\n }\n\n getUrlTextFormatter(params: any = {}): CometChatUrlsFormatter {\n let urlTextFormatter = new CometChatUrlsFormatter([\n /(https?:\\/\\/[^\\s]+)/g,\n ]);\n if (params.alignment == MessageBubbleAlignment.left) {\n urlTextFormatter.setStyle({\n formattedTextColor: params.theme.palette.getPrimary(),\n formattedTextFont: fontHelper(params.theme.typography.text3),\n });\n } else {\n urlTextFormatter.setStyle({\n formattedTextColor: params.theme.palette.getTertiary(),\n formattedTextFont: fontHelper(params.theme.typography.text3),\n });\n }\n return urlTextFormatter;\n }\n}\nexport type ComposerId = {\n parentMessageId: number | null;\n user: string | null;\n group: string | null;\n};\n","import { MessageUtils } from \"../Utils/MessageUtils\";\nimport { DataSource } from \"./DataSource\";\n\nexport class ChatConfigurator {\n static dataSource: DataSource;\n static names: Array<string> = [\"message utils\"];\n\n static init(initialSource?: DataSource) {\n this.dataSource = initialSource ?? new MessageUtils();\n if (!initialSource) {\n this.names = [];\n }\n this.names.push(this.dataSource.getId());\n }\n\n static enable(callback: (dataSource: DataSource) => DataSource) {\n let oldSource: DataSource = this.dataSource;\n let newSource: DataSource = callback(oldSource);\n if (!this.names.find((nm) => nm == newSource.getId())) {\n this.dataSource = newSource;\n this.names.push(this.dataSource.getId());\n }\n }\n\n static getDataSource(): DataSource {\n return this.dataSource;\n }\n}\n","import {\n