2 * noVNC: HTML5 VNC client
3 * Copyright (C) 2019 The noVNC Authors
4 * Licensed under MPL 2.0 (see LICENSE.txt)
6 * See README.md for usage and integration instructions.
9export default class EventTargetMixin {
11 this._listeners = new Map();
14 addEventListener(type, callback) {
15 if (!this._listeners.has(type)) {
16 this._listeners.set(type, new Set());
18 this._listeners.get(type).add(callback);
21 removeEventListener(type, callback) {
22 if (this._listeners.has(type)) {
23 this._listeners.get(type).delete(callback);
27 dispatchEvent(event) {
28 if (!this._listeners.has(event.type)) {
31 this._listeners.get(event.type)
32 .forEach(callback => callback.call(this, event));
33 return !event.defaultPrevented;