UNPKG

@haxiomic/event-signal

Version:

A single event emitter with priority support for TypeScript

46 lines (45 loc) 1.62 kB
/** * Event emitter with a notion of explicit ordering via priority */ export declare class EventSignal<Payload = undefined, E = EventSignal.Emitted<Payload>> { private listeners; addListener(listener: (event: E) => void, priority?: number): { priority: number; listener: (event: E) => void; remove: () => void; }; /** Alias for addListener */ on(listener: (event: E) => void, priority?: number): { priority: number; listener: (event: E) => void; remove: () => void; }; removeListener(listener: (event: E) => void): void; once(listener: (event: E) => void, priority?: number): { priority: number; listener: (event: E) => void; remove: () => void; }; /** * Dispatch an event by providing a payload * The underlying event object will be created and populated with the payload * * @param maxPriority If provided, only listeners with a priority equal or lower than this will be called */ dispatch(payload: Payload, maxPriority?: number): void; /** * Dispatch an event with an existing event object * * This is useful if you want to forward an event from another source like a DOM event */ dispatchWithExistingEvent(payload: Payload, maxPriority?: number): void; hasListeners(): boolean; private sortPriorityDescending; private patchPayload; } export declare namespace EventSignal { type Emitted<T> = T extends Event ? T & { propagationStopped?: boolean; } : T; type Listener = ReturnType<EventSignal['addListener']>; }