events.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.EventPayload = void 0;
  4. /**
  5. * Events allow for applications to use the observer pattern, which
  6. * allows subscribing and publishing events, outside the normal
  7. * execution paths.
  8. *
  9. * @_section api/utils/events:Events [about-events]
  10. */
  11. const properties_js_1 = require("./properties.js");
  12. /**
  13. * When an [[EventEmitterable]] triggers a [[Listener]], the
  14. * callback always ahas one additional argument passed, which is
  15. * an **EventPayload**.
  16. */
  17. class EventPayload {
  18. /**
  19. * The event filter.
  20. */
  21. filter;
  22. /**
  23. * The **EventEmitterable**.
  24. */
  25. emitter;
  26. #listener;
  27. /**
  28. * Create a new **EventPayload** for %%emitter%% with
  29. * the %%listener%% and for %%filter%%.
  30. */
  31. constructor(emitter, listener, filter) {
  32. this.#listener = listener;
  33. (0, properties_js_1.defineProperties)(this, { emitter, filter });
  34. }
  35. /**
  36. * Unregister the triggered listener for future events.
  37. */
  38. async removeListener() {
  39. if (this.#listener == null) {
  40. return;
  41. }
  42. await this.emitter.off(this.filter, this.#listener);
  43. }
  44. }
  45. exports.EventPayload = EventPayload;
  46. //# sourceMappingURL=events.js.map