pragma-views2
Version:
50 lines (42 loc) • 1.21 kB
JavaScript
export class EventEmitter {
constructor() {
this._events = new Map();
}
dispose() {
this._events.clear();
}
on(event, callback) {
let events = [];
if (this._events.has(event)) {
events = this._events.get(event);
} else {
this._events.set(event, events);
}
if (events.indexOf(callback) == -1) {
events.push(callback);
}
}
emit(event, args) {
if (this._events.has(event)) {
const events = this._events.get(event);
events.forEach(e => e(args));
}
}
remove(event, callback) {
if (this._events.has(event)) {
const events = this._events.get(event);
const index = events.indexOf(callback);
if (index != -1) {
events.splice(index, 1);
}
}
}
postMessage(query, args) {
const items = Array.from(document.querySelectorAll(query));
items.forEach(item => {
if (item.onMessage != undefined) {
item.onMessage.call(item, args);
}
});
}
}