eventtarget.js 896 B

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