main
Raw Download raw file
 1/*
 2 * noVNC: HTML5 VNC client
 3 * Copyright (C) 2019 The noVNC authors
 4 * Licensed under MPL 2.0 (see LICENSE.txt)
 5 *
 6 * See README.md for usage and integration instructions.
 7 */
 8
 9export default class EventTargetMixin {
10    constructor() {
11        this._listeners = new Map();
12    }
13
14    addEventListener(type, callback) {
15        if (!this._listeners.has(type)) {
16            this._listeners.set(type, new Set());
17        }
18        this._listeners.get(type).add(callback);
19    }
20
21    removeEventListener(type, callback) {
22        if (this._listeners.has(type)) {
23            this._listeners.get(type).delete(callback);
24        }
25    }
26
27    dispatchEvent(event) {
28        if (!this._listeners.has(event.type)) {
29            return true;
30        }
31        this._listeners.get(event.type)
32            .forEach(callback => callback.call(this, event));
33        return !event.defaultPrevented;
34    }
35}