123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /**
- * Events allow for applications to use the observer pattern, which
- * allows subscribing and publishing events, outside the normal
- * execution paths.
- *
- * @_section api/utils/events:Events [about-events]
- */
- import { defineProperties } from "./properties.js";
- /**
- * When an [[EventEmitterable]] triggers a [[Listener]], the
- * callback always ahas one additional argument passed, which is
- * an **EventPayload**.
- */
- export class EventPayload {
- /**
- * The event filter.
- */
- filter;
- /**
- * The **EventEmitterable**.
- */
- emitter;
- #listener;
- /**
- * Create a new **EventPayload** for %%emitter%% with
- * the %%listener%% and for %%filter%%.
- */
- constructor(emitter, listener, filter) {
- this.#listener = listener;
- defineProperties(this, { emitter, filter });
- }
- /**
- * Unregister the triggered listener for future events.
- */
- async removeListener() {
- if (this.#listener == null) {
- return;
- }
- await this.emitter.off(this.filter, this.#listener);
- }
- }
- //# sourceMappingURL=events.js.map
|