@lightningjs/renderer
Version:
Lightning 3 Renderer
39 lines (38 loc) • 1.72 kB
TypeScript
import type { IEventEmitter } from './IEventEmitter.js';
export type EventListener = (target: any, data: any) => void;
/**
* EventEmitter base class
*
* @remarks
* The `eventListeners` map is allocated lazily on the first `on()` call.
* Many objects (e.g. CoreNodes that never have listeners attached) avoid
* the cost of allocating an empty `{}` at construction time.
*/
export declare class EventEmitter implements IEventEmitter {
private eventListeners;
on(event: string, listener: EventListener): void;
off(event: string, listener?: EventListener): void;
once(event: string, listener: EventListener): void;
emit(event: string, data?: any): void;
/**
* Check whether this emitter has any listeners registered.
*
* @param event - Optional event name. When provided, checks only that
* event. When omitted, checks all events.
* @returns `true` if at least one listener is registered.
*/
hasListeners(event?: string): boolean;
removeAllListeners(): void;
/**
* Clear all listeners for the given event names by setting their array
* length to 0, WITHOUT deleting the keys. This keeps the eventListeners
* object in V8's fast-properties mode and avoids re-allocating the arrays
* on the next on() call. Use this for objects with a known fixed set of
* event names (e.g. CoreAnimation, CoreAnimationController).
*
* Only writes arr.length = 0 when the array is non-empty -- skips the write
* (and the write barrier on old-gen objects) when already empty, which is
* the common case after unregisterAnimation() has removed all listeners.
*/
clearListeners(events: readonly string[]): void;
}