UNPKG

nestablejs

Version:

NestableJS is a javascript library for creating drag & drop heirarchical lists.

47 lines (44 loc) 1.6 kB
export default class Emitter { /** * Add custom event listener * @param {String} event * @param {Function} callback * @return {Void} */ on(listener, fn, capture) { if (typeof listener === "string") { this.listeners = this.listeners || {}; this.listeners[listener] = this.listeners[listener] || []; this.listeners[listener].push(fn); } else { arguments[0].addEventListener(arguments[1], arguments[2], false); } } /** * Remove custom listener listener * @param {String} listener * @param {Function} callback * @return {Void} */ off(listener, fn) { if (typeof listener === "string") { this.listeners = this.listeners || {}; if (listener in this.listeners === false) return; this.listeners[listener].splice(this.listeners[listener].indexOf(fn), 1); } else { arguments[0].removeEventListener(arguments[1], arguments[2]); } } /** * Fire custom listener * @param {String} listener * @return {Void} */ emit(listener) { this.listeners = this.listeners || {}; if (listener in this.listeners === false) return; for (var i = 0; i < this.listeners[listener].length; i++) { this.listeners[listener][i].apply(this, Array.prototype.slice.call(arguments, 1)); } } }