/** * @license * Copyright 2023 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { BaseTextareaController, TextareaHost } from './base.controller.js'; import { ReactiveControllerHost } from 'lit'; /** * Extended textarea host interface for event handling */ export interface TextareaEventHost extends TextareaHost { readonly?: boolean; disabled?: boolean; clearable?: boolean; autoResize?: boolean; placeholder?: string; shadowRoot?: ShadowRoot | null; } /** * Event controller manages all event handling for textarea components * This controller handles: * - Input event handling with debouncing * - Focus and blur state management * - Keyboard interactions (Enter, Escape, etc.) * - Clear functionality * - Auto-resize functionality * - Event dispatching and custom events */ export declare class TextareaEventController extends BaseTextareaController { private _hasFocus; private _inputDebounceMs; private _inputTimeout?; private _clearButtonElement?; private _textareaElement?; constructor(host: TextareaEventHost & ReactiveControllerHost); /** * Get the event host with extended interface */ get eventHost(): TextareaEventHost & ReactiveControllerHost; /** * Get focus state */ get hasFocus(): boolean; /** * Set input debounce delay */ setInputDebounce(ms: number): void; /** * Initialize event controller after host is connected */ hostConnected(): void; /** * Cleanup event listeners on disconnect */ hostDisconnected(): void; /** * Setup event listeners for the textarea */ setupEventListeners(): void; /** * Cleanup event listeners */ cleanupEventListeners(): void; /** * Handle input event with debouncing */ handleInput(event: Event): void; /** * Handle focus event */ handleFocus(event: FocusEvent): void; /** * Handle blur event */ handleBlur(event: FocusEvent): void; /** * Handle keydown events */ handleKeyDown(event: KeyboardEvent): void; /** * Handle keyup events */ handleKeyUp(event: KeyboardEvent): void; /** * Handle paste events */ handlePaste(event: ClipboardEvent): void; /** * Handle clear button click */ handleClear(event?: Event): void; /** * Handle auto-resize functionality */ handleAutoResize(textareaElement?: HTMLTextAreaElement): void; /** * Focus the textarea programmatically */ focus(): void; /** * Blur the textarea programmatically */ blur(): void; /** * Select all text in the textarea */ selectAll(): void; /** * Set cursor position */ setCursorPosition(position: number): void; /** * Get cursor position */ getCursorPosition(): number; /** * Add textarea event listeners */ private addTextareaEventListeners; /** * Add clear button event listeners */ private addClearButtonEventListeners; /** * Handle Escape key press */ private handleEscape; /** * Handle submit (Ctrl/Cmd + Enter) */ private handleSubmit; /** * Dispatch input event */ private dispatchInputEvent; /** * Dispatch focus event */ private dispatchFocusEvent; /** * Dispatch blur event */ private dispatchBlurEvent; /** * Dispatch keydown event */ private dispatchKeydownEvent; /** * Dispatch keyup event */ private dispatchKeyupEvent; /** * Dispatch paste event */ private dispatchPasteEvent; /** * Dispatch clear event */ private dispatchClearEvent; /** * Dispatch escape event */ private dispatchEscapeEvent; /** * Dispatch submit event */ private dispatchSubmitEvent; } //# sourceMappingURL=event.controller.d.ts.map