Named exports from ol/events
This commit is contained in:
+33
-38
@@ -2,25 +2,24 @@
|
||||
* @module ol/events
|
||||
*/
|
||||
import {clear} from './obj.js';
|
||||
const _ol_events_ = {};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.EventsKey} listenerObj Listener object.
|
||||
* @return {ol.EventsListenerFunctionType} Bound listener.
|
||||
*/
|
||||
_ol_events_.bindListener_ = function(listenerObj) {
|
||||
export function bindListener(listenerObj) {
|
||||
const boundListener = function(evt) {
|
||||
const listener = listenerObj.listener;
|
||||
const bindTo = listenerObj.bindTo || listenerObj.target;
|
||||
if (listenerObj.callOnce) {
|
||||
_ol_events_.unlistenByKey(listenerObj);
|
||||
unlistenByKey(listenerObj);
|
||||
}
|
||||
return listener.call(bindTo, evt);
|
||||
};
|
||||
listenerObj.boundListener = boundListener;
|
||||
return boundListener;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -33,9 +32,8 @@ _ol_events_.bindListener_ = function(listenerObj) {
|
||||
* @param {boolean=} opt_setDeleteIndex Set the deleteIndex on the matching
|
||||
* listener, for {@link ol.events.unlistenByKey}.
|
||||
* @return {ol.EventsKey|undefined} The matching listener object.
|
||||
* @private
|
||||
*/
|
||||
_ol_events_.findListener_ = function(listeners, listener, opt_this,
|
||||
export function findListener(listeners, listener, opt_this,
|
||||
opt_setDeleteIndex) {
|
||||
let listenerObj;
|
||||
for (let i = 0, ii = listeners.length; i < ii; ++i) {
|
||||
@@ -49,7 +47,7 @@ _ol_events_.findListener_ = function(listeners, listener, opt_this,
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -57,10 +55,10 @@ _ol_events_.findListener_ = function(listeners, listener, opt_this,
|
||||
* @param {string} type Type.
|
||||
* @return {Array.<ol.EventsKey>|undefined} Listeners.
|
||||
*/
|
||||
_ol_events_.getListeners = function(target, type) {
|
||||
export function getListeners(target, type) {
|
||||
const listenerMap = target.ol_lm;
|
||||
return listenerMap ? listenerMap[type] : undefined;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -69,15 +67,14 @@ _ol_events_.getListeners = function(target, type) {
|
||||
* @param {ol.EventTargetLike} target Target.
|
||||
* @return {!Object.<string, Array.<ol.EventsKey>>} Map of
|
||||
* listeners by event type.
|
||||
* @private
|
||||
*/
|
||||
_ol_events_.getListenerMap_ = function(target) {
|
||||
function getListenerMap(target) {
|
||||
let listenerMap = target.ol_lm;
|
||||
if (!listenerMap) {
|
||||
listenerMap = target.ol_lm = {};
|
||||
}
|
||||
return listenerMap;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -86,10 +83,9 @@ _ol_events_.getListenerMap_ = function(target) {
|
||||
* map, it will be removed from the target.
|
||||
* @param {ol.EventTargetLike} target Target.
|
||||
* @param {string} type Type.
|
||||
* @private
|
||||
*/
|
||||
_ol_events_.removeListeners_ = function(target, type) {
|
||||
const listeners = _ol_events_.getListeners(target, type);
|
||||
function removeListeners(target, type) {
|
||||
const listeners = getListeners(target, type);
|
||||
if (listeners) {
|
||||
for (let i = 0, ii = listeners.length; i < ii; ++i) {
|
||||
target.removeEventListener(type, listeners[i].boundListener);
|
||||
@@ -104,7 +100,7 @@ _ol_events_.removeListeners_ = function(target, type) {
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -122,13 +118,13 @@ _ol_events_.removeListeners_ = function(target, type) {
|
||||
* @param {boolean=} opt_once If true, add the listener as one-off listener.
|
||||
* @return {ol.EventsKey} Unique key for the listener.
|
||||
*/
|
||||
_ol_events_.listen = function(target, type, listener, opt_this, opt_once) {
|
||||
const listenerMap = _ol_events_.getListenerMap_(target);
|
||||
export function listen(target, type, listener, opt_this, opt_once) {
|
||||
const listenerMap = getListenerMap(target);
|
||||
let listeners = listenerMap[type];
|
||||
if (!listeners) {
|
||||
listeners = listenerMap[type] = [];
|
||||
}
|
||||
let listenerObj = _ol_events_.findListener_(listeners, listener, opt_this,
|
||||
let listenerObj = findListener(listeners, listener, opt_this,
|
||||
false);
|
||||
if (listenerObj) {
|
||||
if (!opt_once) {
|
||||
@@ -143,12 +139,12 @@ _ol_events_.listen = function(target, type, listener, opt_this, opt_once) {
|
||||
target: target,
|
||||
type: type
|
||||
});
|
||||
target.addEventListener(type, _ol_events_.bindListener_(listenerObj));
|
||||
target.addEventListener(type, bindListener(listenerObj));
|
||||
listeners.push(listenerObj);
|
||||
}
|
||||
|
||||
return listenerObj;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -171,9 +167,9 @@ _ol_events_.listen = function(target, type, listener, opt_this, opt_once) {
|
||||
* listener. Default is the `target`.
|
||||
* @return {ol.EventsKey} Key for unlistenByKey.
|
||||
*/
|
||||
_ol_events_.listenOnce = function(target, type, listener, opt_this) {
|
||||
return _ol_events_.listen(target, type, listener, opt_this, true);
|
||||
};
|
||||
export function listenOnce(target, type, listener, opt_this) {
|
||||
return listen(target, type, listener, opt_this, true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -189,16 +185,16 @@ _ol_events_.listenOnce = function(target, type, listener, opt_this) {
|
||||
* @param {Object=} opt_this Object referenced by the `this` keyword in the
|
||||
* listener. Default is the `target`.
|
||||
*/
|
||||
_ol_events_.unlisten = function(target, type, listener, opt_this) {
|
||||
const listeners = _ol_events_.getListeners(target, type);
|
||||
export function unlisten(target, type, listener, opt_this) {
|
||||
const listeners = getListeners(target, type);
|
||||
if (listeners) {
|
||||
const listenerObj = _ol_events_.findListener_(listeners, listener, opt_this,
|
||||
const listenerObj = findListener(listeners, listener, opt_this,
|
||||
true);
|
||||
if (listenerObj) {
|
||||
_ol_events_.unlistenByKey(listenerObj);
|
||||
unlistenByKey(listenerObj);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -210,22 +206,22 @@ _ol_events_.unlisten = function(target, type, listener, opt_this) {
|
||||
*
|
||||
* @param {ol.EventsKey} key The key.
|
||||
*/
|
||||
_ol_events_.unlistenByKey = function(key) {
|
||||
export function unlistenByKey(key) {
|
||||
if (key && key.target) {
|
||||
key.target.removeEventListener(key.type, key.boundListener);
|
||||
const listeners = _ol_events_.getListeners(key.target, key.type);
|
||||
const listeners = getListeners(key.target, key.type);
|
||||
if (listeners) {
|
||||
const i = 'deleteIndex' in key ? key.deleteIndex : listeners.indexOf(key);
|
||||
if (i !== -1) {
|
||||
listeners.splice(i, 1);
|
||||
}
|
||||
if (listeners.length === 0) {
|
||||
_ol_events_.removeListeners_(key.target, key.type);
|
||||
removeListeners(key.target, key.type);
|
||||
}
|
||||
}
|
||||
clear(key);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -234,10 +230,9 @@ _ol_events_.unlistenByKey = function(key) {
|
||||
*
|
||||
* @param {ol.EventTargetLike} target Target.
|
||||
*/
|
||||
_ol_events_.unlistenAll = function(target) {
|
||||
const listenerMap = _ol_events_.getListenerMap_(target);
|
||||
export function unlistenAll(target) {
|
||||
const listenerMap = getListenerMap(target);
|
||||
for (const type in listenerMap) {
|
||||
_ol_events_.removeListeners_(target, type);
|
||||
removeListeners(target, type);
|
||||
}
|
||||
};
|
||||
export default _ol_events_;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user