@furman1331/page-scroller
Version:
Amazing plugin for creating smooth scroll on your website
16 lines • 1.27 kB
TypeScript
export type TEmitterEventType = string | symbol;
export type TEmitterEventHandler<T = unknown> = (event: T) => void;
export type TEmitterEventWildcardHandler<T = Record<string, unknown>> = (type: keyof T, event: T[keyof T]) => void;
export type TEmitterHandlerList<T = unknown> = Array<TEmitterEventHandler<T>>;
export type TEmitterWildcardHandlerList<T = Record<string, unknown>> = Array<TEmitterEventWildcardHandler<T>>;
export type IEventHandlerMap<Events extends Record<TEmitterEventType, unknown>> = Map<keyof Events | '*', TEmitterHandlerList<Events[keyof Events]> | TEmitterWildcardHandlerList<Events>>;
export interface IEmitter<Events extends Record<TEmitterEventType, unknown>> {
all: IEventHandlerMap<Events>;
on<Key extends keyof Events>(type: Key, handler: TEmitterEventHandler<Events[Key]>): void;
on(type: '*', handler: TEmitterEventWildcardHandler<Events>): void;
off<Key extends keyof Events>(type: Key, handler?: TEmitterEventHandler<Events[Key]>): void;
off(type: '*', handler: TEmitterEventWildcardHandler<Events>): void;
emit<Key extends keyof Events>(type: Key, event: Events[Key]): void;
emit<Key extends keyof Events>(type: undefined extends Events[Key] ? Key : never): void;
}
//# sourceMappingURL=emitter.d.ts.map