@disflyer/event-bus
Version:
a micro event bus (not only) for react ``` shell npm install @disflyer/event-bus yarn add @disflyer/event-bus ``` ``` javascript eventBus.on('your-event-name', () => { // some callback code }) // or eventBus.once('your-event-name', () => { // some callbac
2 lines (1 loc) • 776 B
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self)["@disflyer/event-bus"]=t()}(this,(function(){"use strict";return new class{constructor(){this.events=new Map}emit(e,t){const n=this.events.get(e);if(!n)return console.warn(`[${e}]`,"no event listening");n.forEach((e=>e(t)))}on(e,t){const n=this.events.get(e);if(null==n?void 0:n.some(t))return console.warn(`[${e}]`,"same callback has been add more than one time");n?this.events.set(e,[...n,t]):this.events.set(e,[t])}once(e,t){this.on(e,(async()=>{await t(),this.off(e,t)}))}off(e,t){const n=this.events.get(e);n&&(t?this.events.set(e,n.filter((e=>t!==e))):this.events.delete(e))}}}));