{"version":3,"file":"EventEmitter.cjs","names":[],"sources":["../../src/lib/EventEmitter.ts"],"sourcesContent":["export type Listener<T> = (event: T) => void\n\nexport type EventMap = {\n\t[K in string]: unknown\n}\n\nexport abstract class EventEmitter<TEventMap = EventMap> {\n\tprivate _listeners: {\n\t\t[K in keyof TEventMap]?: [Listener<TEventMap[K]>, string | null][]\n\t} = {}\n\n\ton<TEventType extends keyof TEventMap>(\n\t\tevent: TEventType,\n\t\tlistener: Listener<TEventMap[TEventType]>,\n\t\tkey: string | null = null,\n\t): void {\n\t\tthis._listeners[event] = [...(this._listeners[event] ?? []), [listener, key]]\n\t}\n\n\toff<TEventType extends keyof TEventMap>(\n\t\tevent: TEventType,\n\t\tlistenerOrKey: Listener<TEventMap[TEventType]> | string,\n\t): void {\n\t\tthis._listeners[event] = (this._listeners[event] ?? []).filter(([listener, key]) =>\n\t\t\ttypeof listenerOrKey === \"function\" ? listener !== listenerOrKey : key !== listenerOrKey,\n\t\t)\n\t}\n\n\temit<TEventType extends keyof TEventMap>(\n\t\tevent: TEventType,\n\t\tpayload: TEventMap[TEventType],\n\t): void {\n\t\t;(this._listeners[event] ?? []).forEach((listener) => listener[0](payload))\n\t}\n}\n"],"mappings":";AAMA,IAAsB,eAAtB,MAAyD;CACxD,aAEI,EAAE;CAEN,GACC,OACA,UACA,MAAqB,MACd;AACP,OAAK,WAAW,SAAS,CAAC,GAAI,KAAK,WAAW,UAAU,EAAE,EAAG,CAAC,UAAU,IAAI,CAAC;;CAG9E,IACC,OACA,eACO;AACP,OAAK,WAAW,UAAU,KAAK,WAAW,UAAU,EAAE,EAAE,QAAQ,CAAC,UAAU,SAC1E,OAAO,kBAAkB,aAAa,aAAa,gBAAgB,QAAQ,cAC3E;;CAGF,KACC,OACA,SACO;AACN,GAAC,KAAK,WAAW,UAAU,EAAE,EAAE,SAAS,aAAa,SAAS,GAAG,QAAQ,CAAC"}