UNPKG

tiptap

Version:

A rich-text editor for Vue.js

46 lines (39 loc) 1.2 kB
export default class Emitter { // Add an event listener for given event on(event, fn) { this._callbacks = this._callbacks || {} // Create namespace for this event if (!this._callbacks[event]) { this._callbacks[event] = [] } this._callbacks[event].push(fn) return this } emit(event, ...args) { this._callbacks = this._callbacks || {} const callbacks = this._callbacks[event] if (callbacks) { callbacks.forEach(callback => callback.apply(this, args)) } return this } // Remove event listener for given event. // If fn is not provided, all event listeners for that event will be removed. // If neither is provided, all event listeners will be removed. off(event, fn) { if (!arguments.length) { this._callbacks = {} } else { // event listeners for the given event const callbacks = this._callbacks ? this._callbacks[event] : null if (callbacks) { if (fn) { this._callbacks[event] = callbacks.filter(cb => cb !== fn) // remove specific handler } else { delete this._callbacks[event] // remove all handlers } } } return this } }