Files
noVNC/core/util/eventtarget.js
T

36 lines
896 B
JavaScript
Raw Normal View History

/*
* noVNC: HTML5 VNC client
2019-09-30 15:35:33 +02:00
* Copyright (C) 2019 The noVNC Authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.
*/
2018-07-05 21:31:56 +02:00
export default class EventTargetMixin {
constructor() {
2018-11-24 20:18:24 +02:00
this._listeners = new Map();
2018-07-05 21:31:56 +02:00
}
2018-09-06 16:17:43 +02:00
addEventListener(type, callback) {
if (!this._listeners.has(type)) {
this._listeners.set(type, new Set());
}
this._listeners.get(type).add(callback);
}
2018-09-06 16:17:43 +02:00
removeEventListener(type, callback) {
2018-11-24 20:18:24 +02:00
if (this._listeners.has(type)) {
this._listeners.get(type).delete(callback);
2018-09-06 16:17:43 +02:00
}
}
2018-09-06 16:17:43 +02:00
dispatchEvent(event) {
2018-11-24 20:18:24 +02:00
if (!this._listeners.has(event.type)) {
2018-09-06 16:17:43 +02:00
return true;
}
2018-11-24 20:18:24 +02:00
this._listeners.get(event.type)
2019-02-16 23:34:13 +02:00
.forEach(callback => callback.call(this, event));
2018-09-06 16:17:43 +02:00
return !event.defaultPrevented;
}
2018-07-05 21:31:56 +02:00
}