Named exports from ol/events

This commit is contained in:
Tim Schaub
2018-01-24 10:09:57 -07:00
parent 1786bbbe80
commit 7e7631c42a
74 changed files with 437 additions and 445 deletions
+33 -38
View File
@@ -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_;
}