@lyonbot/interactive-blocks
Version:
Make interactive selectable, drag-and-drop, copy-and-paste ready, Block and Slot components easily! Works with Vue, React and any MV* framework.
18 lines (17 loc) • 668 B
TypeScript
declare type AnyFn = (...args: any[]) => any;
declare type DefaultListener = Record<string, AnyFn>;
declare type ListenerItem<F extends AnyFn> = {
listener: F;
once?: boolean;
};
export declare class EventEmitter<L extends Record<keyof L, AnyFn> = DefaultListener> {
_listeners: {
[k in keyof L]?: ListenerItem<L[k]>[] | null;
};
on<U extends keyof L>(event: U, listener: L[U]): this;
once<U extends keyof L>(event: U, listener: L[U]): this;
off<U extends keyof L>(event: U, listener: L[U]): this;
emit<U extends keyof L>(event: U, ...args: Parameters<L[U]>): void;
removeAllListeners(): this;
}
export {};