@diffusionstudio/core-v4
Version:
A fast, browser based video compositing engine powered by WebCodecs
48 lines (47 loc) • 2.06 kB
TypeScript
type HandlerOptions = {
once?: boolean;
};
type RemoveHandler = () => void;
type Callback<T> = (event: T) => void;
type Detail<K, T extends keyof K> = {
type: T;
detail: K[T];
};
type Constructor<T = {}> = new (...args: any[]) => T;
export declare function EventEmitterMixin<Events = {}, T extends Constructor = Constructor>(Base: T): {
new (...args: any[]): {
_handlers: { [T_1 in keyof Events]?: {
callback: Callback<Events[T_1]>;
once?: boolean;
}[]; };
_regexHandlers: {
pattern: RegExp;
callback: Callback<Detail<Events, any>>;
once?: boolean;
}[];
on<K extends keyof Events>(eventType: RegExp, callback: Callback<Detail<Events, K>>, options?: HandlerOptions): RemoveHandler;
on<K extends keyof Events>(eventType: K, callback: Callback<Events[K]>, options?: HandlerOptions): RemoveHandler;
off<K extends keyof Events>(handle: K | RemoveHandler | RemoveHandler[] | RegExp, callback?: Callback<Events[K]>): void;
offAny(): void;
emit<K extends keyof Events>(eventType: K, detail: Events[K]): void;
};
} & T;
export declare function EventEmitter<Events = {}>(): {
new (...args: any[]): {
_handlers: { [T in keyof Events]?: {
callback: Callback<Events[T]>;
once?: boolean;
}[] | undefined; };
_regexHandlers: {
pattern: RegExp;
callback: Callback<Detail<Events, any>>;
once?: boolean;
}[];
on<K extends keyof Events>(eventType: RegExp, callback: Callback<Detail<Events, K>>, options?: HandlerOptions): RemoveHandler;
on<K extends keyof Events>(eventType: K, callback: Callback<Events[K]>, options?: HandlerOptions): RemoveHandler;
off<K extends keyof Events>(handle: RegExp | RemoveHandler | RemoveHandler[] | K, callback?: Callback<Events[K]> | undefined): void;
offAny(): void;
emit<K extends keyof Events>(eventType: K, detail: Events[K]): void;
};
};
export {};