| 1234567891011121314151617181920212223242526272829303132333435 |
- /*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2018 The noVNC Authors
- * Licensed under MPL 2.0 (see LICENSE.txt)
- *
- * See README.md for usage and integration instructions.
- */
- export default class EventTargetMixin {
- constructor() {
- this._listeners = new Map();
- }
- addEventListener(type, callback) {
- if (!this._listeners.has(type)) {
- this._listeners.set(type, new Set());
- }
- this._listeners.get(type).add(callback);
- }
- removeEventListener(type, callback) {
- if (this._listeners.has(type)) {
- this._listeners.get(type).delete(callback);
- }
- }
- dispatchEvent(event) {
- if (!this._listeners.has(event.type)) {
- return true;
- }
- this._listeners.get(event.type)
- .forEach(callback => callback.call(this, event));
- return !event.defaultPrevented;
- }
- }
|