@whitesev/pops
Version:
弹窗库,包含了alert、confirm、prompt、drawer、folder、loading、iframe、panel、tooltip、searchSuggestion、rightClickMenu组件
40 lines (39 loc) • 1.58 kB
TypeScript
import type { EventMap, CustomEventMap } from "../types/EventEmitter";
import type { PopsType } from "../types/main";
declare class EventEmiter<T extends CustomEventMap = CustomEventMap> {
[Symbol.toStringTag]: string;
type: PopsType;
data: Map<string, {
type: PopsType;
time: number;
callback: (...args: any[]) => IPromise<void>;
}[]>;
constructor(type: PopsType);
on<P extends keyof EventMap>(eventName: P, callback: EventMap[P]): {
off: () => IPromise<void>;
emit: (...args: Parameters<T[P]>) => IPromise<void>;
};
on<P extends keyof T>(eventName: P, callback: T[P]): {
off: () => IPromise<void>;
emit: (...args: Parameters<T[P]>) => IPromise<void>;
};
off<P extends keyof EventMap>(eventName: P, callback: EventMap[P]): IPromise<void>;
off<P extends keyof T>(eventName: P, callback: T[P]): IPromise<void>;
emit<P extends keyof T>(eventName: P, ...args: Parameters<T[P]>): IPromise<void>;
emit<P extends keyof EventMap>(eventName: P, ...args: Parameters<EventMap[P]>): IPromise<void>;
offAll<P extends keyof EventMap>(eventName?: P): IPromise<void>;
offAll<P extends keyof T>(eventName?: P): IPromise<void>;
/**
* 获取所有添加的事件
*/
getAllEvents(eventName?: string): {
type: PopsType;
time: number;
callback: (...args: any[]) => IPromise<void>;
}[] | {
type: PopsType;
time: number;
callback: (...args: any[]) => IPromise<void>;
}[][] | undefined;
}
export { EventEmiter };