UNPKG

appeerjs

Version:

A basic encapsulation of Native WebRTC, this would offer an easy to use and understand API for beginners out there

91 lines (64 loc) 2.19 kB
/** * @author mrdoob / http://mrdoob.com/ */ 'use strict'; function EventDispatcher() {} Object.assign(EventDispatcher.prototype, { addEventListener: function (type, listener) { if (this._listeners === undefined) this._listeners = {}; var listeners = this._listeners; if (listeners[type] === undefined) { listeners[type] = []; } if (listeners[type].indexOf(listener) === - 1) { listeners[type].push(listener); } }, hasEventListener: function (type, listener) { if (this._listeners === undefined) return false; var listeners = this._listeners; if (listeners[type] !== undefined && listeners[type].indexOf(listener) !== -1) { return true; } return false; }, removeEventListener: function (type, listener) { if (this._listeners === undefined) return; var listeners = this._listeners; var listenerArray = listeners[ type ]; if (listenerArray !== undefined) { var index = listenerArray.indexOf(listener); if (index !== -1) { listenerArray.splice(index, 1); } } }, dispatchEvent: function (event) { if (this._listeners === undefined) return; var listeners = this._listeners; var listenerArray = listeners[event.type]; if (listenerArray !== undefined) { event.target = this; var i = 0, array = [], length = listenerArray.length; for (i = 0; i < length; i++) { array[i] = listenerArray[i]; } for (i = 0; i < length; i++) { array[i].call(this, event); } } }, on: function (eventName, listener) { this.addEventListener(eventName, listener); }, emit: function (eventName, data) { var event = { type: eventName, data: data }; this.dispatchEvent(event); } }); module.exports = EventDispatcher;