You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
devdocs/assets/javascripts/lib/events.js

52 lines
1.8 KiB

/*
* decaffeinate suggestions:
* DS101: Remove unnecessary use of Array.from
* DS102: Remove unnecessary code created because of implicit returns
* DS104: Avoid inline assignments
* DS207: Consider shorter variations of null checks
* DS208: Avoid top-level this
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md
*/
this.Events = {
on(event, callback) {
if (event.indexOf(' ') >= 0) {
for (var name of Array.from(event.split(' '))) { this.on(name, callback); }
} else {
let base;
(((base = this._callbacks != null ? this._callbacks : (this._callbacks = {})))[event] != null ? base[event] : (base[event] = [])).push(callback);
}
return this;
},
11 years ago
off(event, callback) {
let callbacks, index;
if (event.indexOf(' ') >= 0) {
for (var name of Array.from(event.split(' '))) { this.off(name, callback); }
} else if ((callbacks = this._callbacks != null ? this._callbacks[event] : undefined) && ((index = callbacks.indexOf(callback)) >= 0)) {
callbacks.splice(index, 1);
if (!callbacks.length) { delete this._callbacks[event]; }
}
return this;
},
11 years ago
trigger(event, ...args) {
let callbacks;
this.eventInProgress = { name: event, args };
if (callbacks = this._callbacks != null ? this._callbacks[event] : undefined) {
for (var callback of Array.from(callbacks.slice(0))) { if (typeof callback === 'function') {
callback(...Array.from(args || []));
} }
}
this.eventInProgress = null;
if (event !== 'all') { this.trigger('all', event, ...Array.from(args)); }
return this;
},
11 years ago
removeEvent(event) {
if (this._callbacks != null) {
for (var name of Array.from(event.split(' '))) { delete this._callbacks[name]; }
}
return this;
}
};