{"version":3,"file":"EventEmitter-CLwfmbqG.cjs","sources":["../src/util/EventEmitter.ts"],"sourcesContent":["// from https://raw.githubusercontent.com/ueberdosis/tiptap/develop/packages/core/src/EventEmitter.ts (MIT)\n\ntype StringKeyOf<T> = Extract<keyof T, string>;\ntype CallbackType<\n  T extends Record<string, any>,\n  EventName extends StringKeyOf<T>,\n> = T[EventName] extends any[] ? T[EventName] : [T[EventName]];\ntype CallbackFunction<\n  T extends Record<string, any>,\n  EventName extends StringKeyOf<T>,\n> = (...props: CallbackType<T, EventName>) => any;\n\nexport class EventEmitter<T extends Record<string, any>> {\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  private callbacks: { [key: string]: Function[] } = {};\n\n  public on<EventName extends StringKeyOf<T>>(\n    event: EventName,\n    fn: CallbackFunction<T, EventName>,\n  ) {\n    if (!this.callbacks[event]) {\n      this.callbacks[event] = [];\n    }\n\n    this.callbacks[event].push(fn);\n\n    return () => this.off(event, fn);\n  }\n\n  protected emit<EventName extends StringKeyOf<T>>(\n    event: EventName,\n    ...args: CallbackType<T, EventName>\n  ) {\n    const callbacks = this.callbacks[event];\n\n    if (callbacks) {\n      callbacks.forEach((callback) => callback.apply(this, args));\n    }\n  }\n\n  public off<EventName extends StringKeyOf<T>>(\n    event: EventName,\n    fn?: CallbackFunction<T, EventName>,\n  ) {\n    const callbacks = this.callbacks[event];\n\n    if (callbacks) {\n      if (fn) {\n        this.callbacks[event] = callbacks.filter((callback) => callback !== fn);\n      } else {\n        delete this.callbacks[event];\n      }\n    }\n  }\n\n  protected removeAllListeners(): void {\n    this.callbacks = {};\n  }\n}\n"],"names":["EventEmitter","__publicField","event","fn","args","callbacks","callback"],"mappings":"iLAYO,MAAMA,CAA4C,CAAlD,cAEGC,EAAA,iBAA2C,CAAA,GAE5C,GACLC,EACAC,EACA,CACA,OAAK,KAAK,UAAUD,CAAK,IACvB,KAAK,UAAUA,CAAK,EAAI,CAAA,GAG1B,KAAK,UAAUA,CAAK,EAAE,KAAKC,CAAE,EAEtB,IAAM,KAAK,IAAID,EAAOC,CAAE,CACjC,CAEU,KACRD,KACGE,EACH,CACA,MAAMC,EAAY,KAAK,UAAUH,CAAK,EAElCG,GACFA,EAAU,QAASC,GAAaA,EAAS,MAAM,KAAMF,CAAI,CAAC,CAE9D,CAEO,IACLF,EACAC,EACA,CACA,MAAME,EAAY,KAAK,UAAUH,CAAK,EAElCG,IACEF,EACF,KAAK,UAAUD,CAAK,EAAIG,EAAU,OAAQC,GAAaA,IAAaH,CAAE,EAEtE,OAAO,KAAK,UAAUD,CAAK,EAGjC,CAEU,oBAA2B,CACnC,KAAK,UAAY,CAAA,CACnB,CACF"}