/** * @license * Copyright 2024 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { LitElement } from 'lit'; import type { ChatMessage, ChatUser } from './chat-panel.types.js'; /** * Shared chat panel — renders messages, input bar, reactions, context menu. * Used inside both the floating presence chat and the full messages page. * * @fires message-send - User sends a message. Detail: `{ text, replyTo? }` * @fires message-edit - User edits a message. Detail: `{ messageId, content }` * @fires message-delete - User deletes a message. Detail: `{ messageId }` * @fires message-react - User reacts to a message. Detail: `{ messageId, emoji }` * @fires typing-start * @fires typing-stop * @fires file-select - User selected a file. Detail: `{ file: File, imageOnly: boolean }` */ export declare class NrChatPanelElement extends LitElement { static styles: import("lit").CSSResult; /** Messages to display */ messages: ChatMessage[]; /** Current user info */ currentUser: ChatUser | null; /** Conversation ID */ conversationId: string; /** Whether this is a group conversation */ isGroup: boolean; /** Loading state */ loading: boolean; /** Compact mode for floating panels */ compact: boolean; /** Empty state text */ emptyText: string; /** Hide the built-in input bar (for pages that provide their own) */ hideInput: boolean; private _showEmoji; private _contextMenu; private _replyTo; private _editingIdx; private _typing; private _typingTimer; private _longPressTimer; private _touchMoved; updated(changed: Map): void; /** Add a typing indicator */ addTyping(userName: string): void; /** Remove a typing indicator */ removeTyping(userName: string): void; private _sendMessage; private _onInputKeydown; private _toggleEmoji; private _insertEmoji; private _menuPos; private _showContextMenuHandler; private _onTouchStart; private _onTouchEnd; private _onTouchMove; private _onMsgTap; private _hideContextMenu; private _deleteMsg; private _replyMsg; private _editMsg; private _confirmEdit; private _onEditKeydown; private _reactMsg; private _toggleAudioPlay; private _onAudioTimeUpdate; private _onAudioEnded; private _pickFile; private _playSound; render(): import("lit-html").TemplateResult<1>; private _renderMessage; private _renderAttachment; private _renderContextMenu; private _renderEmojiPicker; private _renderInputBar; } declare global { interface HTMLElementTagNameMap { 'nr-chat-panel': NrChatPanelElement; } } //# sourceMappingURL=chat-panel.component.d.ts.map