@blocknote/core
Version:
A "Notion-style" block-based extensible text editor built on top of Prosemirror and Tiptap.
1 lines • 2.38 kB
Source Map (JSON)
{"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"}