json-joy
Version:
Collection of libraries for building collaborative editing apps.
22 lines (21 loc) • 1.76 kB
TypeScript
export declare const TypedEventTarget: {
new <EventMap>(): {
addEventListener<K extends keyof EventMap>(type: K, listener: (this: HTMLElement, ev: EventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean): void;
dispatchEvent(event: EventMap[keyof EventMap]): boolean;
dispatchEvent(event: Event): boolean;
removeEventListener<K extends keyof EventMap>(type: K, listener: (this: HTMLElement, ev: EventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;
};
};
export interface TypedEventTarget<EventMap> {
addEventListener<K extends keyof EventMap>(type: K, listener: (this: HTMLElement, ev: EventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean): void;
dispatchEvent(event: EventMap[keyof EventMap]): boolean;
dispatchEvent(event: Event): boolean;
removeEventListener<K extends keyof EventMap>(type: K, listener: (this: HTMLElement, ev: EventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;
}
export declare class SubscriptionEventTarget<EventMap> extends TypedEventTarget<EventMap> {
subscribe<K extends keyof EventMap>(type: K, listener: (ev: EventMap[K]) => void): () => void;
}