@shockpkg/core
Version:
shockpkg core
1 lines • 2.01 kB
Source Map (JSON)
{"version":3,"file":"dispatcher.mjs","names":["Dispatcher","_handlers","Set","constructor","context","_context","on","handler","add","off","delete","trigger","event","self","i","cb","call"],"sources":["../src/dispatcher.ts"],"sourcesContent":["/**\n * Event dispatcher.\n */\nexport class Dispatcher<T> {\n\t/**\n\t * Event context.\n\t */\n\tprotected readonly _context: unknown;\n\n\t/**\n\t * Event handlers.\n\t */\n\tprotected readonly _handlers = new Set<(event: T) => unknown>();\n\n\t/**\n\t * Event dispatcher constructor.\n\t *\n\t * @param context Context object.\n\t */\n\tconstructor(context: unknown) {\n\t\tthis._context = context;\n\t}\n\n\t/**\n\t * Add listener.\n\t *\n\t * @param handler Event handler.\n\t */\n\tpublic on(handler: (event: T) => unknown) {\n\t\tthis._handlers.add(handler);\n\t}\n\n\t/**\n\t * Remove listener.\n\t *\n\t * @param handler Event handler.\n\t */\n\tpublic off(handler: (event: T) => unknown) {\n\t\tthis._handlers.delete(handler);\n\t}\n\n\t/**\n\t * Trigger handlers.\n\t *\n\t * @param event Event data.\n\t * @returns Handler count.\n\t */\n\tpublic trigger(event: T) {\n\t\tconst self = this._context;\n\t\tlet i = 0;\n\t\tfor (const cb of this._handlers) {\n\t\t\tcb.call(self, event);\n\t\t\ti++;\n\t\t}\n\t\treturn i;\n\t}\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,MAAMA,UAAU,CAAI;EAC1B;AACD;AACA;;EAGC;AACD;AACA;EACoBC,SAAS,GAAG,IAAIC,GAAG,CAAwB,CAAC;;EAE/D;AACD;AACA;AACA;AACA;EACCC,WAAWA,CAACC,OAAgB,EAAE;IAC7B,IAAI,CAACC,QAAQ,GAAGD,OAAO;EACxB;;EAEA;AACD;AACA;AACA;AACA;EACQE,EAAEA,CAACC,OAA8B,EAAE;IACzC,IAAI,CAACN,SAAS,CAACO,GAAG,CAACD,OAAO,CAAC;EAC5B;;EAEA;AACD;AACA;AACA;AACA;EACQE,GAAGA,CAACF,OAA8B,EAAE;IAC1C,IAAI,CAACN,SAAS,CAACS,MAAM,CAACH,OAAO,CAAC;EAC/B;;EAEA;AACD;AACA;AACA;AACA;AACA;EACQI,OAAOA,CAACC,KAAQ,EAAE;IACxB,MAAMC,IAAI,GAAG,IAAI,CAACR,QAAQ;IAC1B,IAAIS,CAAC,GAAG,CAAC;IACT,KAAK,MAAMC,EAAE,IAAI,IAAI,CAACd,SAAS,EAAE;MAChCc,EAAE,CAACC,IAAI,CAACH,IAAI,EAAED,KAAK,CAAC;MACpBE,CAAC,EAAE;IACJ;IACA,OAAOA,CAAC;EACT;AACD","ignoreList":[]}