derby
Version:
MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.
78 lines (77 loc) • 4.15 kB
TypeScript
import { type Controller } from './Controller';
type ListenerFn<K extends keyof EventMap> = K extends 'destroy' ? () => void : (event: EventMap[K]) => void;
interface EventMap extends DocumentEventMap {
'destroy': never;
}
export declare class Dom {
controller: Controller;
_listeners: DomListener<keyof EventMap>[];
constructor(controller: any);
_initListeners(): any[];
_listenerIndex(domListener: any): number;
/**
* Adds a DOM event listener that will get cleaned up when this component is cleaned up.
*
* @param type - Name of the DOM event to listen to
* @param target - Optional target to add the DOM listener to. If not provided, the target is `document`.
* @param listener - Listener to be called when the DOM event occurs
* @param useCapture - Optional, defaults to false. If true, add the listener as a capturing listener.
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
*/
addListener<K extends keyof EventMap>(type: K, target: EventTarget, listener: ListenerFn<K>, useCapture?: boolean): void;
addListener<K extends keyof EventMap>(type: K, listener: ListenerFn<K>, useCapture?: boolean): void;
/**
* Adds a DOM event listener that will get cleaned up when this component is cleaned up.
*
* @param type - Name of the DOM event to listen to
* @param target - Optional target to add the DOM listener to. If not provided, the target is `document`.
* @param listener - Listener to be called when the DOM event occurs
* @param useCapture - Optional, defaults to false. If true, add the listener as a capturing listener.
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
*/
on<K extends keyof EventMap>(type: K, target: EventTarget, listener: ListenerFn<K>, useCapture?: boolean): void;
on<K extends keyof EventMap>(type: K, listener: ListenerFn<K>, useCapture?: boolean): void;
/**
* Adds a one-time DOM event listener that will get cleaned up when this component is cleaned up.
*
* @param type - Name of the DOM event to listen to
* @param target - Optional target to add the DOM listener to. If not provided, the target is `document`.
* @param listener - Listener to be called when the DOM event occurs
* @param useCapture - Optional, defaults to false. If true, add the listener as a capturing listener.
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
*/
once<K extends keyof EventMap>(type: K, target: EventTarget, listener: ListenerFn<K>, useCapture?: boolean): void;
once<K extends keyof EventMap>(type: K, listener: ListenerFn<K>, useCapture?: boolean): void;
/**
* Removes a DOM event listener that was added via `#addListener`, `#on`, or `#once`, using the same
* parameters as those methods.
*
* @param type - Name of the DOM event
* @param target - Optional target for the DOM listener. If not provided, the target is `document`.
* @param listener - Listener function that was passed to `#addListener`, `#on`, or `#once`.
* @param useCapture - Optional, defaults to false. If true, removes a capturing listener.
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
*/
removeListener<K extends keyof EventMap>(type: K, target: EventTarget, listener: ListenerFn<K>, useCapture?: boolean): void;
removeListener<K extends keyof EventMap>(type: K, listener: ListenerFn<K>, useCapture?: boolean): void;
}
export declare class DomListener<K extends keyof EventMap> {
type: string;
target: EventTarget;
listener: ListenerFn<K>;
useCapture: boolean;
constructor(type: string, target: EventTarget, listener: ListenerFn<K>, useCapture?: boolean);
equals(domListener: any): boolean;
add(): void;
remove(): void;
}
export declare class DestroyListener extends DomListener<'destroy'> {
constructor(target: EventTarget, listener: ListenerFn<'destroy'>);
add(): void;
remove(): void;
}
export {};