2 * Simple global events manager
11 * Emit a custom event for any handlers to pick-up.
12 * @param {String} eventName
13 * @param {*} eventData
16 emit(eventName, eventData) {
17 this.stack.push({name: eventName, data: eventData});
18 if (typeof this.listeners[eventName] === 'undefined') return this;
19 let eventsToStart = this.listeners[eventName];
20 for (let i = 0; i < eventsToStart.length; i++) {
21 let event = eventsToStart[i];
28 * Listen to a custom event and run the given callback when that event occurs.
29 * @param {String} eventName
30 * @param {Function} callback
33 listen(eventName, callback) {
34 if (typeof this.listeners[eventName] === 'undefined') this.listeners[eventName] = [];
35 this.listeners[eventName].push(callback);
40 * Emit an event for public use.
41 * Sends the event via the native DOM event handling system.
42 * @param {Element} targetElement
43 * @param {String} eventName
44 * @param {Object} eventData
46 emitPublic(targetElement, eventName, eventData) {
47 const event = new CustomEvent(eventName, {
51 targetElement.dispatchEvent(event);
55 export default Events;