{"version":3,"file":"EventEmitter.cjs","sources":["../../../src/lib/EventEmitter.tsx"],"sourcesContent":["export interface Listener<T> {\n  (event: T): void;\n}\n\nexport interface Disposable {\n  dispose: () => void;\n}\n\n/** passes through events as they happen. You will not get events from before you start listening */\nexport class EventEmitter<T> {\n  private listeners: Listener<T>[] = [];\n\n  on = (listener: Listener<T>): Disposable => {\n    this.listeners.push(listener);\n    return {\n      dispose: () => this.off(listener),\n    };\n  };\n\n  off = (listener: Listener<T>) => {\n    const callbackIndex = this.listeners.indexOf(listener);\n    if (callbackIndex > -1) {\n      this.listeners.splice(callbackIndex, 1);\n    }\n  };\n\n  emit = (event: T) => {\n    /** Update any general listeners */\n    this.listeners.forEach((listener: Listener<T>) => listener(event));\n  };\n}\n"],"names":[],"mappings":";;;;AASO,MAAM,YAAA,CAAgB;AAAA,EACnB,YAA2B,EAAC;AAAA,EAEpC,EAAA,GAAK,CAAC,QAAA,KAAsC;AAC1C,IAAA,IAAA,CAAK,SAAA,CAAU,KAAK,QAAQ,CAAA;AAC5B,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,MAAM,IAAA,CAAK,GAAA,CAAI,QAAQ;AAAA,KAClC;AAAA,EACF,CAAA;AAAA,EAEA,GAAA,GAAM,CAAC,QAAA,KAA0B;AAC/B,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,QAAQ,CAAA;AACrD,IAAA,IAAI,gBAAgB,EAAA,EAAI;AACtB,MAAA,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,aAAA,EAAe,CAAC,CAAA;AAAA,IACxC;AAAA,EACF,CAAA;AAAA,EAEA,IAAA,GAAO,CAAC,KAAA,KAAa;AAEnB,IAAA,IAAA,CAAK,UAAU,OAAA,CAAQ,CAAC,QAAA,KAA0B,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,EACnE,CAAA;AACF;;"}