dragee-widgets
Version:
Widgets Based on Dragee Library
61 lines (48 loc) • 1.13 kB
JavaScript
export default class EventEmitter {
constructor (options = {}) {
this.events = {}
if (options && options.on) {
for (const [eventName, fn] of Object.entries(options.on)) {
this.on(eventName, fn)
}
}
}
emit(eventName) {
this.interrupted = false
const args = [].slice.call(arguments, 1)
if (!this.events[eventName]) return
for (const func of this.events[eventName]) {
func.apply(...args)
if (this.interrupted) {
return
}
}
}
interrupt() {
this.interrupted = true
}
on(eventName, fn) {
if (!this.events[eventName]) {
this.events[eventName] = []
}
this.events[eventName].push(fn)
}
prependOn(eventName, fn) {
if (!this.events[eventName]) {
this.events[eventName] = []
}
this.events[eventName].unshift(fn)
}
unsubscribe(eventName, fn) {
if (this.events[eventName]) {
const index = this.events[eventName].indexOf(fn)
this.events[eventName].splice(index, 1)
}
}
resetEmitter () {
this.events = {}
}
resetOn(eventName) {
this.events[eventName] = []
}
}