/** * @license * Copyright 2023 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { LitElement } from 'lit'; type Constructor = new (...args: any[]) => T; /** * Interface for components that support event handling operations */ export interface EventHandlerCapable { /** * Dispatch a custom event with consistent structure * @param eventName - The name of the event * @param detail - The event detail object */ dispatchCustomEvent(eventName: string, detail: any): void; /** * Dispatch events with metadata */ dispatchEventWithMetadata(eventName: string, detail: any): void; /** * Dispatch input-related events */ dispatchInputEvent(eventName: string, detail: any): void; /** * Dispatch focus-related events */ dispatchFocusEvent(eventName: string, detail: any): void; /** * Dispatch validation events */ dispatchValidationEvent(eventName: string, detail: any): void; /** * Dispatch action events */ dispatchActionEvent(eventName: string, detail: any): void; /** * Check if a key is allowed when component is readonly */ isReadonlyKeyAllowed(keyDownEvent: KeyboardEvent): boolean; /** * Check if key is an activation key (Enter/Space) */ isActivationKey(keyDownEvent: KeyboardEvent): boolean; } /** * Mixin that provides standardized event handling capabilities * * @param superClass - The base class to extend * @returns Enhanced class with event handling capabilities * * @example * ```typescript * export class MyComponent extends EventHandlerMixin(LitElement) { * handleClick() { * this.dispatchCustomEvent('my-click', { value: 'test' }); * } * } * ``` */ export declare const EventHandlerMixin: >(superClass: T) => Constructor & T; export {}; //# sourceMappingURL=event-handler-mixin.d.ts.map