/// import { INotifyPropertyChanged } from '@syncfusion/ej2-base'; import { ChildProperty, EmitType, BaseEventArgs } from '@syncfusion/ej2-base'; import { InterActiveChatBase } from '../interactive-chat-base/interactive-chat-base'; import { ToolbarItemModel, ToolbarSettingsModel } from '../interactive-chat-base/interactive-chat-base-model'; import { ChatUIModel, MessageModel, UserModel, MessageStatusModel, MessageReplyModel, MessageToolbarSettingsModel, FileAttachmentSettingsModel } from './chat-ui-model'; import { ItemModel } from '@syncfusion/ej2-navigations'; import { FieldSettingsModel } from '@syncfusion/ej2-dropdowns'; import { BeforeUploadEventArgs, FailureEventArgs, FileInfo, RemovingEventArgs, SuccessEventArgs } from '@syncfusion/ej2-inputs'; /** * Specifies that the attachment will be saved as a Blob object. * This format is used for storing binary data. * * Specifies that the attachment will be saved as a Base64-encoded string. * This format is used for storing data as a text representation. * */ export declare type SaveFormat = 'Base64' | 'Blob'; export declare class MessageStatus extends ChildProperty { /** * Specifies the icon CSS class for the message status shown in messages. * This property represents the CSS class applied to the icons in the sent message, allowing for customization of the status icon's appearance. * * @type {string} * @default '' */ iconCss: string; /** * Specifies the text associated with the message status. * This property holds the textual representation of the message status, such as "Sent", "Received", or "Read", providing users with clear status updates. * * @type {string} * @default '' */ text: string; /** * Specifies the tooltip text for the message status icon. * This property provides additional information about the message status when the user hovers over the status icon, enhancing the user experience with context. * * @type {string} * @default '' */ tooltip: string; } /** * Represents a user model for a messages in the chatUI component. */ export declare class User extends ChildProperty { /** * Specifies the unique identifier for each user in the Chat UI component. * Represents a string that uniquely identifies a user for tracking and managing individual users within the chat. * * @type {string} * @default ''' */ id: string; /** * Represents the display name of the user in the Chat UI component. * * @type {string} * @default 'Default' */ user: string; /** * Specifies the URL of the user's avatar image. * If the URL is not provided, the user's first and last name initial letters will be used as the avatar. * * @type {string} * @default '' */ avatarUrl: string; /** * Defines the background color for the user's avatar in the Chat UI component. * This property accepts a color in hexadecimal format (e.g., `#FFFFFF` for white), allowing for custom styling of the avatar's background. * * @type {string} * @default '' */ avatarBgColor: string; /** * Represents additional CSS classes to style the user's messages in the Chat UI component. * This property allows for custom styling by accepting one or more class names as a string. * * @type {string} * @default '' */ cssClass: string; /** * Specifies the CSS class for the status bar icon in the Chat UI component. * This allows customization of the status icon's appearance using custom styles. * * @type {string} * @default '' */ statusIconCss: string; } /** * Configures the toolbar displayed on each message in the Chat UI component. */ export declare class MessageToolbarSettings extends ChildProperty { /** * Specifies the width of the message toolbar in the Chat UI component. * Represents the width of the toolbar, which can be defined using various CSS units and values such as 'auto', '100%', or pixel-based measurements. * * @type {string} * @default '100%' * @aspType string */ width: string | number; /** * Specifies the collection of toolbar items in the message toolbar of the Chat UI component. * Represents an array of items that are rendered in the toolbar, allowing for customization and interaction within the response section. * * @type {ToolbarItemModel[]} * @default null */ items: ToolbarItemModel[]; /** * Event raised when a toolbar item is clicked in the message toolbar of the Chat UI component. * * @event itemClicked */ itemClicked: EmitType; } /** * Represents a model for a reply messages in the chatUI component. */ export declare class MessageReply extends ChildProperty { /** * Specifies the author of the message in the Chat UI component. * This property references a `UserModel` object that contains details about the user who sent the message. * * @default null */ user: UserModel; /** * Represents the content of the message sent by a user in the Chat UI component. * * @type {string} * @default '' */ text: string; /** * Represents the mentioned Users of the message sent by the replied user in the Chat UI component. * * @type {UserModel[]} * @default [] */ mentionUsers: UserModel[]; /** * Represents the id of the message sent by the replied user in the Chat UI component. * * @type {string} * @default '' */ messageID: string; /** * Specifies the timestamp of when the replied message was sent. * This property holds a `Date` object that represents the exact time the message was created, providing context to the conversation flow. * * @type {Date} * @default '' */ timestamp: Date; /** * Specifies the format of the timestamp for displaying the reply message's sending time. * If empty, the format is determined by the application's culture settings. * Supports format strings like 'dd/MM/yyyy hh:mm'. * * @type {string} * @default '' */ timestampFormat: string; /** * Represents the attached files of the message sent by a user in the Chat UI component. * * @type {FileInfo} * @default null */ attachedFile: FileInfo; } /** * Represents a model for a messages in the chatUI component. */ export declare class Message extends ChildProperty { /** * Specifies the unique identifier for each message sent in the Chat UI component. * Represents a string that uniquely identifies a message for tracking and managing individual messages within the chat. * * @type {string} * @default ''' */ id: string; /** * Represents the content of the message sent by a user in the Chat UI component. * * @type {string} * @default '' */ text: string; /** * Specifies the author of the message in the Chat UI component. * This property references a `UserModel` object that contains details about the user who sent the message. * * @default null */ author: UserModel; /** * Specifies the timestamp of when the message was sent. * This property holds a `Date` object that represents the exact time the message was created, providing context to the conversation flow. * * @type {Date} * @default '' */ timeStamp: Date; /** * Specifies the format of the timestamp for displaying the message's sending time. * By default, the format is set based on the culture of the application. * You can customize the format using a specific pattern, such as "'dd/MM/yyyy hh:mm'" in string format. * * @type {string} * @default '' */ timeStampFormat: string; /** * Specifies the status of the message in the Chat UI component. * Represents the current status of the message, such as sent, received, or read. It helps in tracking the messages within the chat component. * * @default null */ status: MessageStatusModel; /** * Specifies whether the message is pinned. * When set to true, the message will be visually highlighted and can appear in the pinned messages section. * * @type {boolean} * @default false */ isPinned: boolean; /** * Specifies the reference to the original message when this message is a reply. * Contains the `MessageReplyModel` of the message being replied to. * * @default null */ replyTo: MessageReplyModel; /** * Specifies whether the message has been forwarded. * When set to true, the message is visually marked as forwarded. * * @type {boolean} * @default false */ isForwarded: boolean; /** * Specifies the list of files attached within the Chat UI. * This property accepts an array of FileInfo objects that represent the files to be attached. * By providing these files, they will be rendered during the initial rendering of the component. * * @type {FileInfo} * @default null */ attachedFile: FileInfo; /** * Represents an array of users mentioned in the message. * This field contains the list of users referenced via the @mention feature in the message text, populated when mentions are selected from the suggestion popup. * The field is optional and defaults to an empty array if no mentions are included in the message. * * @type {UserModel[]} * @default [] */ mentionUsers: UserModel[]; } export declare class FileAttachmentSettings extends ChildProperty { /** * Specifies the URL to save the uploaded files. * * @type {string} * @default '' */ saveUrl: string; /** * Specifies the URL to remove the files from the server. * * @type {string} * @default '' */ removeUrl: string; /** * Specifies the path for storing and displaying images. * If both `saveFormat` and `path` are configured, the `path` property takes priority. * * @type {string} * @default '' */ path: string; /** * Specifies the format in which the attachment will be saved. * Accepts values such as 'Blob' or other supported formats. * * @type {SaveFormat} * @default 'Blob' */ saveFormat: SaveFormat; /** * Specifies the allowed file types for attachments. * Accepts a comma-separated string (e.g., ".jpg,.png"). * * @type {string} * @default '' */ allowedFileTypes: string; /** * Specifies the maximum file size (in bytes) for attachments. * Prevents uploading files larger than this size. * * @type {number} * @default 30000000 */ maxFileSize: number; /** * Specifies whether drag and drop is enabled for attachments. * Allows users to drag files into the upload area. * * @type {boolean} * @default true */ enableDragAndDrop: boolean; /** * Specifies the maximum number of attachments allowed per message. * Limits the number of files that can be uploaded and attached to a single message. * Must be a positive integer. * * @type {number} * @default 10 */ maximumCount: number; /** * Specifies a custom template for rendering attachment previews. * Accepts a string or function to define the HTML structure or rendering logic for attachment previews (e.g., thumbnails, icons, file metadata). * If not provided, the default preview will be rendered. * * @default '' * @angularType string | object | HTMLElement * @reactType string | function | JSX.Element | HTMLElement * @vueType string | function | HTMLElement * @aspType string */ previewTemplate: string | Function; /** * Specifies a custom template for rendering attachments in footer. * Accepts a string or function to define the HTML structure or rendering logic for attachments (e.g., thumbnails, icons, file metadata). * If not provided, the default attachments will be rendered. * * @default '' * @angularType string | object | HTMLElement * @reactType string | function | JSX.Element | HTMLElement * @vueType string | function | HTMLElement * @aspType string */ attachmentTemplate: string | Function; /** * Event raised when a attachment item is clicked in the Chat UI component wither before sending or after the attachment is sent. * * @event attachmentClick */ attachmentClick: EmitType; } export interface ChatAttachmentClickEventArgs extends BaseEventArgs { /** * Specifies the event object associated with the click event args. * Represents the underlying event that triggered the action, providing details about the event. * * @type {Event} * @default null * */ event?: Event; /** * Indicates whether rendering preview should be canceled. * Setting this boolean property to `true` will prevent the preview rendering. * * @type {boolean} * @default false * */ cancel?: boolean; /** * Represents the file that is intended to be previewed. * This property holds a `file` object containing all relevant details of the file. It can be canceled or previewed before the message is sent. * * @type {FileInfo} * @default null * */ file?: FileInfo; } export interface MessageSendEventArgs extends BaseEventArgs { /** * Indicates whether the message sending action should be canceled. * Setting this boolean property to `true` will prevent the message from being sent, allowing for validation or modification before the final send. * * @type {boolean} * @default false * */ cancel?: boolean; /** * Represents the message that is intended to be sent. * This property holds a `MessageModel` object containing all relevant details of the message, including content, author, and timestamp. It can be modified before the message is sent. * * @type {MessageModel} * @default null * */ message?: MessageModel; } export interface TypingEventArgs extends BaseEventArgs { /** * Represents the current user in the Chat UI component. * This property holds the user information, such as username and other relevant details. * * @type {UserModel} * @default null * */ user?: UserModel; /** * Represents the content of the message sent by a user in the Chat UI component. * * @type {string} * @default '' */ message?: string; /** * Specifies the event object associated with the input event args. * Represents the underlying event that triggered the action, providing details about the event. * * @type {Event} * @default null * */ event?: Event; /** * Specifies the whether the user is typing in the chat UI component. * Returns `true`, when the user ends typing and `false` when the message is sent or user value is cleared. * * @type {boolean} * @default false * */ isTyping?: boolean; } export interface MentionSelectEventArgs extends BaseEventArgs { /** * Specifies whether the default mention insertion behavior should be canceled. * Set to `true` to prevent the selected mention from being inserted into the chat input field, allowing custom handling of the mention selection. * * @type {boolean} * @default false */ cancel?: boolean; /** * The native event that triggered the mention selection. * This can be a mouse event (e.g., clicking a user in the suggestion popup), a keyboard event (e.g., pressing Enter to select), or a touch event (e.g., tapping on a mobile device). * Provides access to low-level event details for advanced use cases, such as determining the input method or coordinates. * * @type {MouseEvent | KeyboardEvent | TouchEvent} */ event?: MouseEvent | KeyboardEvent | TouchEvent; /** * Indicates whether the mention selection was triggered by user interaction. * Set to `true` if the selection resulted from a user action (e.g., mouse click, keyboard Enter, or touch tap), or `false` if triggered programmatically or by other means. * * @type {boolean} * @default false */ isInteracted?: boolean; /** * Returns the selected item data from the data source. * This property provides access to all fields and values of the currently selected item. * * @type {FieldSettingsModel} * @default {} */ itemData?: FieldSettingsModel; } /** * Represents the event arguments for a toolbar item click event in the component. */ export interface MessageToolbarItemClickedEventArgs extends BaseEventArgs { /** * Specifies the toolbar item that was clicked. * Represents the model of the toolbar item that triggered the click event. * * @type {ToolbarItemModel} * @default null * */ item?: ItemModel; /** * Specifies the message that was clicked. * * @type {MessageModel} * @default null * */ message?: MessageModel; /** * Specifies the event object associated with the toolbar item click. * Represents the underlying event that triggered the click action, providing details about the event. * * @type {Event} * @default null * */ event?: Event; /** * Specifies whether the click event should be cancelled. * Determines if the default action associated with the click event should be prevented. * * @type {boolean} * @default false * */ cancel?: boolean; } export declare class ChatUI extends InterActiveChatBase implements INotifyPropertyChanged { /** * Specifies the width of the Chat UI component. * * @type {string | number} * @default '100%' * @aspType string */ width: string | number; /** * Specifies the height of the Chat UI component. * * @type {string | number} * @default '100%' * @aspType string */ height: string | number; /** * Represents the current user interacting with the Chat UI. * Uses the `UserModel` object, which contains current user information. * Messages from the current user are displayed on the right side of the Chat UI for differentiation from other participants. * * @default null */ user: UserModel; /** * Specifies the header text to be displayed in the Chat UI component. * This property defines the text that appears in the header, which can indicate the current participant's username or the group name, providing context for the conversation. * * @type {string} * @default 'Chat' */ headerText: string; /** * Specifies the CSS class for the header icon in the Chat UI component. * This property allows for custom styling of the header icon. * * @type {string} * @default '' */ headerIconCss: string; /** * Specifies the placeholder text for the message input textarea in the Chat UI component. * * @type {string} * @default 'Type your message…' */ placeholder: string; /** * Specifies custom CSS classes for the Chat UI component. * This property enables the application of additional styling options to customize the visual appearance of the chat interface. * * @type {string} * @default '' */ cssClass: string; /** * Specifies whether the header is displayed in the Chat UI component. * This property controls the visibility of the header, allowing users to show or hide it as needed. * When set to `false`, the header will be hidden from view. * * @type {boolean} * @default true */ showHeader: boolean; /** * Specifies whether to show or hide footer in the Chat UI component. * When set to `true`, the footer will be visible in the Chat UI component. If `false`, the footer will be hidden. * * @type {boolean} * @default true */ showFooter: boolean; /** * Specifies the header toolbar settings for the Chat UI component. * Represents the configuration for toolbar items and actions within the component. * * @default null */ headerToolbar: ToolbarSettingsModel; /** * Specifies the list of message suggestions displayed above the input textarea in the Chat UI component. * This property represents an array of suggestions that can assist the user in composing messages, providing quick replies. * * @type {string[]} * @default null */ suggestions: string[]; /** * Specifies whether time breaks are enabled for grouping chat messages by date. * When set to `true`, messages will be grouped based on their timestamp, creating date-wise separators within the chat. * * @type {boolean} * @default false */ showTimeBreak: boolean; /** * Specifies a collection of messages within the Chat UI component. * Each message is represented by a MessageModel object, containing properties such as text, author, timestamp, and status. * * @type {MessageModel[]} * @default null */ messages: MessageModel[]; /** * Specifies a list of users who are currently typing in the chat. * This property is updated to indicate active participants typing responses. * * @type {UserModel[]} * @default null * @aspType List */ typingUsers: UserModel[]; /** * Specifies the format of the value that to be displayed in component. * By default, the format will be set based on the culture. You can set the format to "format:'dd/MM/yyyy hh:mm a'" in string. * * @type {string} * @default 'dd/MM/yyyy hh:mm a' */ timeStampFormat: string; /** * Specifies whether timestamps are displayed alongside each message in the Chat UI component. * When set to true, timestamps will appear with each message, helping users track the timing of conversations. * * @type {boolean} * @default true */ showTimeStamp: boolean; /** * Specifies whether the UI should automatically scroll to the bottom when a new message is added to the Chat UI component. * When set to `true`, the chat will automatically scroll to display the latest message, ensuring that users can see new messages without manual intervention. * * @type {boolean} * @default false */ autoScrollToBottom: boolean; /** * Enables on-demand loading of messages, typically triggered as the user scrolls through the chat history. * When set to `true`, older messages will load progressively, improving performance for large message histories by avoiding initial loading of all messages. * * @type {boolean} * @default false */ loadOnDemand: boolean; /** * Specifies the list of users available for mention in the chat UI. * This property defines an array of user objects that populate the @mention suggestion popup when the mention trigger character is typed. * When typing the `mentionTriggerChar` (e.g., '@') followed by characters filters this list to show matching users. * * @type {UserModel[]} * @default null * @aspType List */ mentionUsers: UserModel[]; /** * Specifies the character that triggers the @mention suggestion popup in the chat input. * The trigger character must be a single character, such as '@' or '#', and is case-sensitive in the input. * * @type {string} * @default '@' */ mentionTriggerChar: string; /** * Specifies the template for rendering suggestion items in the Chat UI component. * Defines the content or layout used to render suggestion items, and can be either a string or a function. * The template context includes the index and suggestion text. * * @type {string | Function} * @default '' * @angularType string | object * @reactType string | function | JSX.Element * @vueType string | function * @aspType string */ suggestionTemplate: string | Function; /** * Specifies the template for the footer area in the Chat UI component. * Defines the content or layout used to render the footer, which can be provided as a string or a function. * * @default '' * @angularType string | object * @reactType string | function | JSX.Element * @vueType string | function * @aspType string */ footerTemplate: string | Function; /** * Specifies the template for rendering the empty state of the Chat UI component. * This property can accept either a string or a function to customize the appearance when there are no messages to display in the chat. * * @default '' * @angularType string | object * @reactType string | function | JSX.Element * @vueType string | function * @aspType string */ emptyChatTemplate: string | Function; /** * Specifies the template for rendering individual messages in the Chat UI component. * This property can accept either a string or a function to customize the appearance of messages. The template context includes message and index. * * @default '' * @angularType string | object * @reactType string | function | JSX.Element * @vueType string | function * @aspType string */ messageTemplate: string | Function; /** * Defines a custom template for rendering time breaks in the Chat UI component. * Accepts a string or function that formats the appearance of date-based separators, allowing customization of how messages are visually grouped by date. * * @default '' * @angularType string | object * @reactType string | function | JSX.Element * @vueType string | function * @aspType string */ timeBreakTemplate: string | Function; /** * Template for displaying users currently typing in the chat interface. * Accepts a string or function to customize the display format. * * @default '' * @angularType string | object * @reactType string | function | JSX.Element * @vueType string | function * @aspType string */ typingUsersTemplate: string | Function; /** * Enables the compact mode layout in the Chat UI component. * When enabled, all messages are aligned to the left side regardless of the sender, creating a simplified chat view. * This mode is useful for dense group conversations or compact displays (e.g., mobile,embedded). * Example: `compactMode: true` * * @type {boolean} * @default false */ enableCompactMode: boolean; /** * Specifies the settings for the message toolbar in the Chat UI component. * Configures the toolbar options associated with each message such as Reply, Forward, Copy, Pin, and Delete. * If 'items' is not provided, default toolbar actions ['Copy', 'Reply', 'Pin', 'Delete'] will be rendered. * * @default [] */ messageToolbarSettings: MessageToolbarSettingsModel; /** * Event triggered when a message is about to be sent in the Chat UI component. * This event allows for cancelling the send action if needed. * * @event messageSend */ messageSend: EmitType; /** * Event triggered when the user is typing a message in the Chat UI component. * This event provides updates on the user's typing status. * * @event userTyping */ userTyping: EmitType; /** * Triggered when a user selects a mention from the suggestion popup in the chat UI. * This event provides details about the selected user and the current message text, allowing developers to handle mention-related logic, such as custom notifications or validation. * The `cancel` property in the event arguments can be set to `true` to prevent the default behavior of inserting the mention into the input field. * * @event mentionSelect */ mentionSelect: EmitType; /** * Specifies whether the attachments is enabled in the Chat UI component. * * @type {boolean} * @default false */ enableAttachments: boolean; /** * Specifies the configuration options for attachment handling. * Includes save URL, allowed file types, and maximum file size. * * * @default null */ attachmentSettings: FileAttachmentSettingsModel; /** * Fires before an attachment upload begins. * Allows inspection or cancellation of the upload process. * * @event beforeAttachmentUpload * * @param {BeforeUploadEventArgs} args - Details about the file to be uploaded. */ beforeAttachmentUpload: EmitType; /** * Fires when an attachment is uploaded successfully. * * @event attachmentUploadSuccess * * @param {object} args - Details about the uploaded file. */ attachmentUploadSuccess: EmitType; /** * Fires when an attachment upload fails. * * @event attachmentUploadFailure * * @param {object} args - Details about the failed file and error information. */ attachmentUploadFailure: EmitType; /** * Fires when an attachment is removed. * * @event attachmentRemoved * * @param {object} args - Details about the removed file. */ attachmentRemoved: EmitType; private l10n; private viewWrapper; private chatHeader; private messageWrapper; private downArrowIcon; private intl; private indicatorWrapper; private isEmptyChatTemplateRendered; private startIndex; private multiplier; private toolbar; private isScrollAtBottom; private currentReplyTo; private pinnedMessageWrapper; private dropDownButton; private lastPinnedToolbar; private mentionObj; private attachmentIcon; private uploadedFiles; private uploaderObj; private dropArea; /** * Constructor for creating the component * * @param {ChatUIModel} options - Specifies the ChatUIModel model. * @param {string | HTMLElement} element - Specifies the element to render as component. * @private */ constructor(options?: ChatUIModel, element?: string | HTMLElement); /** * Initialize the event handler * * @private * @returns {void} */ protected preRender(): void; protected getDirective(): string; /** * To get component name. * * @returns {string} - It returns the current module name. * @private */ getModuleName(): string; /** * Get the properties to be maintained in the persisted state. * * @private * @returns {string} - It returns the persisted data. */ protected getPersistData(): string; protected render(): void; private renderChatUIView; private initializeLocale; private updateScrollPosition; private renderChatHeader; private renderChatHeaderToolbar; private addReactToolbarPortals; private updateHeaderToolbar; private renderChatContentElement; private updateEmptyChatTemplate; private renderChatMessageToolbar; private triggerMsgClickedEvent; private handleMessageToolbarClick; private togglePin; private handleDeleteAction; private cleanupTimeBreaks; private handleCopyAction; private handleReplyAction; private renderReplyElement; private createFileReplyContent; private renderPinnedMessage; private updatePinnedMessage; private pinAttachmentMessage; private togglePinnedIcon; private unpinMessage; private wireMessageToolbarEvents; private handleMessageMouseEvents; private setChatMsgId; private renderScrollDown; private loadBatch; private renderMessageGroup; private isTimeBreakAdded; private getLastUser; private initializeCompactMode; private renderGroup; private isTimeVaries; private loadLeftGroupOnDemand; private createLeftGroupItems; private getInitials; private createAvatarIcon; private chatStatus; private getTimeStampElement; private updateTimeFormats; private getFormattedTime; private getFormat; private renderForwardElement; private getMessageText; private getMentionChipElement; private addGroupItems; private createAttachmentContent; private createVideoContent; private updateForwardAndReplyElement; private manageChatContent; private createTimebreakElement; private handleTimeBreak; private renderNewMessage; private loadMoreMessages; private updateMessageTimeFormats; private getMessageDate; private renderChatSuggestionsElement; private handleSuggestionUpdate; private onSuggestionClick; private renderChatFooterContent; private renderChatFooter; private getMentionDataSource; private initializeMention; private onMentionSelect; private hasAttachment; private isImageFile; private isVideoFile; private updateAttachmentElement; private renderAttachmentIcon; private triggerUploaderAction; private showFailureAlert; private createFailureAlert; private handleFileSelection; private readFileAsBase64; private onUploadStart; private onUploadProgress; private onUploadSuccess; private cleanupFileItem; private onUploadFailure; private createFileItem; private handleRemoveUploadedFile; private handleAttachmentPreview; private getFilePreview; private removeFilesPreview; private renderPreviewTemplate; private showMediaPreview; private createImageContent; private updateAttachmentSettings; private clearUploadedFiles; private refreshTextareaUI; private handleInput; private onFocusEditableTextarea; private onBlurEditableTextarea; private triggerUserTyping; private renderTypingIndicator; private updateUserText; private getTypingMessage; private updateTypingUsers; private updateHeaderIcon; private updateHeaderText; private renderUpdatedMessage; private getUserMentionFromContent; private onSendIconClick; private replaceMentionChipsWithPlaceholders; private clearReplyWrapper; private getContextObject; private handleAutoScroll; private footerKeyHandler; private scrollBottomKeyHandler; private keyHandler; private applyPromptChange; private updateFooter; private handleScroll; private toggleClassName; private toggleScrollIcon; private scrollBtnClick; private updateMessageItem; private updateMentionObj; private updateLocale; private wireEvents; private unwireEvents; private destroyAttachments; private destroyChatUI; /** * Scrolls to the last message in the conversation area of the Chat UI component. * This method allows programmatic control to ensure the chat view is scrolled to the bottom, typically used when new messages are added or to refocus on the most recent conversation. * * @returns {void} */ scrollToBottom(): void; /** * Appends a new message to the end of the Chat UI conversation area. * This method adds the specified message as the latest entry in the chat: * * @function addMessage * @param {string | MessageModel} message - The message to be added to the conversation. Accepts either a plain text string or a `MessageModel` object. * - If `message` is a string, a `MessageModel` will be automatically created with the current user’s details, and the message will be appended. * - If `message` is an instance of `MessageModel`, it can represent a message from either the current user or another participant and will be appended directly. * @returns {void} No return value. */ addMessage(message: string | MessageModel): void; /** * prepends messages to the beginning of the Chat UI conversation area. * This method adds the specified messages as the first entries in the chat: * * @function prependMessages * @param {string[] | MessageModel[]} messages - The messages to be added to the conversation. Accepts an array of plain text strings or `MessageModel` objects. * - If an element is a string, a `MessageModel` will be automatically created with the current user's details, and the message will be prepended. * - If an element is an instance of `MessageModel`, it can represent a message from either the current user or another participant and will be prepended directly. * @returns {void} No return value. */ prependMessages(messages: string[] | MessageModel[]): void; /** * Updates an existing message in the Chat UI component. * This method allows for modifying a message that has already been added to the conversation. * It requires the unique identifier of the message to be updated and the new message content as a `MessageModel`. * * @function updateMessage * @param {MessageModel} message - The updated message content represented as a `MessageModel`. * @param {string} msgId - The unique identifier of the message to be updated. * @returns {void} No return value. */ updateMessage(message: MessageModel, msgId: string): void; /** * Scrolls to a specific message in the Chat UI component based on the provided message ID. * Locates the message with the specified ID and scrolls it to the view. * * @function scrollToMessage * @param {string} messageId - The unique identifier of the message to navigate to the corresponding message rendered in the chat UI. * @returns {void}. */ scrollToMessage(messageId: string): void; /** * Sets focus for the input textarea in the Chat UI component. * Ensures that user input is directed to the chat input field. * * @function focus * @returns {void}. */ focus(): void; destroy(): void; /** * Called if any of the property value is changed. * * @param {ChatUIModel} newProp - Specifies new properties * @param {ChatUIModel} oldProp - Specifies old properties * @returns {void} * @private */ onPropertyChanged(newProp: ChatUIModel, oldProp?: ChatUIModel): void; }