UNPKG

ez-shp-storefront

Version:

A helper function collection for Shopify storefront.

42 lines (41 loc) 1.43 kB
/** * Create an Event Bus object which has the registration and publishing API. * addEventListener and emitEventListeners functions * lets the subscriber and publisher to subscribe and publish on events respectively. */ export class EventBus { constructor() { this.eventTopics = {}; } static getInstance() { if (!this.instance) { this.instance = new EventBus(); } return this.instance; } addEventListener(eventName, listener) { if (!this.eventTopics[eventName] || this.eventTopics[eventName].length < 1) { this.eventTopics[eventName] = []; } this.eventTopics[eventName].push(listener); return listener; } emitEventListeners(eventName, params) { if (!this.eventTopics[eventName] || this.eventTopics[eventName].length < 1) return; this.eventTopics[eventName].forEach(function (listener) { listener(!!params ? params : {}); }); } removeListener(eventName, listener) { if (!this.eventTopics[eventName] || this.eventTopics[eventName].length < 1) return; const index = this.eventTopics[eventName].findIndex((f) => f === listener); // delete listener by event name delete this.eventTopics[eventName][index]; } getListener(eventName) { return this.eventTopics[eventName]; } } EventBus.instance = null;