From 25a095e489ef025b4caf04bad508149b96f5038f Mon Sep 17 00:00:00 2001 From: Simon Seyock Date: Wed, 23 Jun 2021 14:27:14 +0200 Subject: [PATCH] Observable workaround for on. --- src/ol/Observable.js | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/src/ol/Observable.js b/src/ol/Observable.js index 16c6ea3307..a95197e441 100644 --- a/src/ol/Observable.js +++ b/src/ol/Observable.js @@ -7,8 +7,13 @@ import {listen, listenOnce, unlistenByKey} from './events.js'; /*** * @template {string} Type - * @template {Event|import("./events/Event.js").default} EventClass - * @typedef {(type: Type|Type[], listener: (event: EventClass) => (void|boolean)) => import("./events.js").EventsKey|Array} OnSignature + * @template {import("./events/Event.js").default} EventClass + * @typedef {(type: Type|Type[], listener: (event: EventClass) => (void|boolean)) => import("./events").EventsKey|Array} OnSignature + */ + +/*** + * @template {string} Type + * @typedef {(type: Type[], listener: (event: import("./events/Event").default) => (void|boolean)) => import("./events").EventsKey|Array} CombinedOnSignature */ /** @@ -30,6 +35,11 @@ class Observable extends EventTarget { constructor() { super(); + /*** + * @type {OnSignature} + */ + this.on = this.onInternal; + /** * @private * @type {number} @@ -57,15 +67,13 @@ class Observable extends EventTarget { } /** - * Listen for a certain type of event. - * @param {string|Array} type The event type or array of event types. - * @param {function(?): ?} listener The listener function. - * @return {import("./events.js").EventsKey|Array} Unique key for the listener. If - * called with an array of event types as the first argument, the return - * will be an array of keys. - * @api + * @param {string|Array} type Type. + * @param {function(import("./events/Event").default): (void|boolean)} listener Listener. + * @return {import("./events.js").EventsKey|Array} Event key. + * @protected */ - on(type, listener) { + // the jsdoc api annotation follows below the class declaration. + onInternal(type, listener) { if (Array.isArray(type)) { const len = type.length; const keys = new Array(len); @@ -122,6 +130,18 @@ class Observable extends EventTarget { } } +/** + * Listen for a certain type of event. + * @function + * @param {string|Array} type The event type or array of event types. + * @param {function(?): ?} listener The listener function. + * @return {import("./events.js").EventsKey|Array} Unique key for the listener. If + * called with an array of event types as the first argument, the return + * will be an array of keys. + * @api + */ +Observable.prototype.on; + /** * Removes an event listener using the key returned by `on()` or `once()`. * @param {import("./events.js").EventsKey|Array} key The key returned by `on()`