azure-devops-ui
Version:
React components for building web UI in Azure DevOps
33 lines (32 loc) • 988 B
JavaScript
export class EventDispatch {
constructor() {
this.listeners = {};
}
addEventListener(eventType, callback) {
if (!(eventType in this.listeners)) {
this.listeners[eventType] = [];
}
this.listeners[eventType].push(callback);
}
dispatchEvent(event, data, type) {
const delegates = this.listeners[type || event.type];
if (delegates) {
const stack = delegates.slice();
for (let i = 0, l = stack.length; i < l; i++) {
stack[i].call(this, event, data);
}
}
}
removeEventListener(eventType, callback) {
if (!(eventType in this.listeners)) {
return;
}
const stack = this.listeners[eventType];
for (let i = 0, l = stack.length; i < l; i++) {
if (stack[i] === callback) {
stack.splice(i, 1);
return;
}
}
}
}