import { EventType_default, VOID } from "./chunk-K25ZO44T.js"; import { clear } from "./chunk-5RHQVMYD.js"; // node_modules/ol/Disposable.js var Disposable = class { constructor() { this.disposed = false; } /** * Clean up. */ dispose() { if (!this.disposed) { this.disposed = true; this.disposeInternal(); } } /** * Extension point for disposable objects. * @protected */ disposeInternal() { } }; var Disposable_default = Disposable; // node_modules/ol/events/Event.js var BaseEvent = class { /** * @param {string} type Type. */ constructor(type) { this.propagationStopped; this.defaultPrevented; this.type = type; this.target = null; } /** * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events * will be fired. * @api */ preventDefault() { this.defaultPrevented = true; } /** * Stop event propagation. * @api */ stopPropagation() { this.propagationStopped = true; } }; var Event_default = BaseEvent; // node_modules/ol/events/Target.js var Target = class extends Disposable_default { /** * @param {*} [target] Default event target for dispatched events. */ constructor(target) { super(); this.eventTarget_ = target; this.pendingRemovals_ = null; this.dispatching_ = null; this.listeners_ = null; } /** * @param {string} type Type. * @param {import("../events.js").Listener} listener Listener. */ addEventListener(type, listener) { if (!type || !listener) { return; } const listeners = this.listeners_ || (this.listeners_ = {}); const listenersForType = listeners[type] || (listeners[type] = []); if (!listenersForType.includes(listener)) { listenersForType.push(listener); } } /** * Dispatches an event and calls all listeners listening for events * of this type. The event parameter can either be a string or an * Object with a `type` property. * * @param {import("./Event.js").default|string} event Event object. * @return {boolean|undefined} `false` if anyone called preventDefault on the * event object or if any of the listeners returned false. * @api */ dispatchEvent(event) { const isString = typeof event === "string"; const type = isString ? event : event.type; const listeners = this.listeners_ && this.listeners_[type]; if (!listeners) { return; } const evt = isString ? new Event_default(event) : ( /** @type {Event} */ event ); if (!evt.target) { evt.target = this.eventTarget_ || this; } const dispatching = this.dispatching_ || (this.dispatching_ = {}); const pendingRemovals = this.pendingRemovals_ || (this.pendingRemovals_ = {}); if (!(type in dispatching)) { dispatching[type] = 0; pendingRemovals[type] = 0; } ++dispatching[type]; let propagate; for (let i = 0, ii = listeners.length; i < ii; ++i) { if ("handleEvent" in listeners[i]) { propagate = /** @type {import("../events.js").ListenerObject} */ listeners[i].handleEvent(evt); } else { propagate = /** @type {import("../events.js").ListenerFunction} */ listeners[i].call(this, evt); } if (propagate === false || evt.propagationStopped) { propagate = false; break; } } if (--dispatching[type] === 0) { let pr = pendingRemovals[type]; delete pendingRemovals[type]; while (pr--) { this.removeEventListener(type, VOID); } delete dispatching[type]; } return propagate; } /** * Clean up. * @override */ disposeInternal() { this.listeners_ && clear(this.listeners_); } /** * Get the listeners for a specified event type. Listeners are returned in the * order that they will be called in. * * @param {string} type Type. * @return {Array|undefined} Listeners. */ getListeners(type) { return this.listeners_ && this.listeners_[type] || void 0; } /** * @param {string} [type] Type. If not provided, * `true` will be returned if this event target has any listeners. * @return {boolean} Has listeners. */ hasListener(type) { if (!this.listeners_) { return false; } return type ? type in this.listeners_ : Object.keys(this.listeners_).length > 0; } /** * @param {string} type Type. * @param {import("../events.js").Listener} listener Listener. */ removeEventListener(type, listener) { if (!this.listeners_) { return; } const listeners = this.listeners_[type]; if (!listeners) { return; } const index = listeners.indexOf(listener); if (index !== -1) { if (this.pendingRemovals_ && type in this.pendingRemovals_) { listeners[index] = VOID; ++this.pendingRemovals_[type]; } else { listeners.splice(index, 1); if (listeners.length === 0) { delete this.listeners_[type]; } } } } }; var Target_default = Target; // node_modules/ol/events.js function listen(target, type, listener, thisArg, once) { if (once) { const originalListener = listener; listener = function(event) { target.removeEventListener(type, listener); return originalListener.call(thisArg ?? this, event); }; } else if (thisArg && thisArg !== target) { listener = listener.bind(thisArg); } const eventsKey = { target, type, listener }; target.addEventListener(type, listener); return eventsKey; } function listenOnce(target, type, listener, thisArg) { return listen(target, type, listener, thisArg, true); } function unlistenByKey(key) { if (key && key.target) { key.target.removeEventListener(key.type, key.listener); clear(key); } } // node_modules/ol/Observable.js var Observable = class extends Target_default { constructor() { super(); this.on = /** @type {ObservableOnSignature} */ this.onInternal; this.once = /** @type {ObservableOnSignature} */ this.onceInternal; this.un = /** @type {ObservableOnSignature} */ this.unInternal; this.revision_ = 0; } /** * Increases the revision counter and dispatches a 'change' event. * @api */ changed() { ++this.revision_; this.dispatchEvent(EventType_default.CHANGE); } /** * Get the version number for this object. Each time the object is modified, * its version number will be incremented. * @return {number} Revision. * @api */ getRevision() { return this.revision_; } /** * @param {string|Array} type Type. * @param {function((Event|import("./events/Event").default)): ?} listener Listener. * @return {import("./events.js").EventsKey|Array} Event key. * @protected */ onInternal(type, listener) { if (Array.isArray(type)) { const len = type.length; const keys = new Array(len); for (let i = 0; i < len; ++i) { keys[i] = listen(this, type[i], listener); } return keys; } return listen( this, /** @type {string} */ type, listener ); } /** * @param {string|Array} type Type. * @param {function((Event|import("./events/Event").default)): ?} listener Listener. * @return {import("./events.js").EventsKey|Array} Event key. * @protected */ onceInternal(type, listener) { let key; if (Array.isArray(type)) { const len = type.length; key = new Array(len); for (let i = 0; i < len; ++i) { key[i] = listenOnce(this, type[i], listener); } } else { key = listenOnce( this, /** @type {string} */ type, listener ); } listener.ol_key = key; return key; } /** * Unlisten for a certain type of event. * @param {string|Array} type Type. * @param {function((Event|import("./events/Event").default)): ?} listener Listener. * @protected */ unInternal(type, listener) { const key = ( /** @type {Object} */ listener.ol_key ); if (key) { unByKey(key); } else if (Array.isArray(type)) { for (let i = 0, ii = type.length; i < ii; ++i) { this.removeEventListener(type[i], listener); } } else { this.removeEventListener(type, listener); } } }; Observable.prototype.on; Observable.prototype.once; Observable.prototype.un; function unByKey(key) { if (Array.isArray(key)) { for (let i = 0, ii = key.length; i < ii; ++i) { unlistenByKey(key[i]); } } else { unlistenByKey( /** @type {import("./events.js").EventsKey} */ key ); } } var Observable_default = Observable; export { Disposable_default, Event_default, Target_default, listen, listenOnce, unlistenByKey, unByKey, Observable_default }; //# sourceMappingURL=chunk-NGFXCWUF.js.map