]> git.proxmox.com Git - mirror_novnc.git/blame - core/util/eventtarget.js
Use fat arrow functions `const foo = () => { ... };` for callbacks
[mirror_novnc.git] / core / util / eventtarget.js
CommitLineData
e89eef94
PO
1/*
2 * noVNC: HTML5 VNC client
3 * Copyright 2017 Pierre Ossman for Cendio AB
4 * Licensed under MPL 2.0 (see LICENSE.txt)
5 *
6 * See README.md for usage and integration instructions.
7 */
8
0e4808bf
JD
9export default class EventTargetMixin {
10 constructor() {
11 this._listeners = null;
12 }
e89eef94 13
0e4808bf 14 addEventListener(type, callback) {
e89eef94
PO
15 if (!this._listeners) {
16 this._listeners = new Map();
17 }
18 if (!this._listeners.has(type)) {
19 this._listeners.set(type, new Set());
20 }
21 this._listeners.get(type).add(callback);
0e4808bf 22 }
e89eef94 23
0e4808bf 24 removeEventListener(type, callback) {
e89eef94
PO
25 if (!this._listeners || !this._listeners.has(type)) {
26 return;
27 }
28 this._listeners.get(type).delete(callback);
0e4808bf 29 }
e89eef94 30
0e4808bf 31 dispatchEvent(event) {
e89eef94
PO
32 if (!this._listeners || !this._listeners.has(event.type)) {
33 return true;
34 }
651c23ec 35 this._listeners.get(event.type).forEach((callback) => {
e89eef94
PO
36 callback.call(this, event);
37 }, this);
38 return !event.defaultPrevented;
0e4808bf
JD
39 }
40}