36 lines
896 B
JavaScript
36 lines
896 B
JavaScript
|
/*
|
||
|
* noVNC: HTML5 VNC client
|
||
|
* Copyright (C) 2018 The noVNC Authors
|
||
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||
|
*
|
||
|
* See README.md for usage and integration instructions.
|
||
|
*/
|
||
|
|
||
|
export default class EventTargetMixin {
|
||
|
constructor() {
|
||
|
this._listeners = new Map();
|
||
|
}
|
||
|
|
||
|
addEventListener(type, callback) {
|
||
|
if (!this._listeners.has(type)) {
|
||
|
this._listeners.set(type, new Set());
|
||
|
}
|
||
|
this._listeners.get(type).add(callback);
|
||
|
}
|
||
|
|
||
|
removeEventListener(type, callback) {
|
||
|
if (this._listeners.has(type)) {
|
||
|
this._listeners.get(type).delete(callback);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
dispatchEvent(event) {
|
||
|
if (!this._listeners.has(event.type)) {
|
||
|
return true;
|
||
|
}
|
||
|
this._listeners.get(event.type)
|
||
|
.forEach(callback => callback.call(this, event));
|
||
|
return !event.defaultPrevented;
|
||
|
}
|
||
|
}
|