]>
git.proxmox.com Git - mirror_novnc.git/blob - core/util/eventtarget.js
2 * noVNC: HTML5 VNC client
3 * Copyright 2017 Pierre Ossman for Cendio AB
4 * Licensed under MPL 2.0 (see LICENSE.txt)
6 * See README.md for usage and integration instructions.
9 export default class EventTargetMixin
{
11 this._listeners
= null;
14 addEventListener(type
, callback
) {
15 if (!this._listeners
) {
16 this._listeners
= new Map();
18 if (!this._listeners
.has(type
)) {
19 this._listeners
.set(type
, new Set());
21 this._listeners
.get(type
).add(callback
);
24 removeEventListener(type
, callback
) {
25 if (!this._listeners
|| !this._listeners
.has(type
)) {
28 this._listeners
.get(type
).delete(callback
);
31 dispatchEvent(event
) {
32 if (!this._listeners
|| !this._listeners
.has(event
.type
)) {
35 this._listeners
.get(event
.type
).forEach((callback
) => {
36 callback
.call(this, event
);
38 return !event
.defaultPrevented
;