first commit
This commit is contained in:
139
MessagesMap/Scripts/uniwheel.js
Normal file
139
MessagesMap/Scripts/uniwheel.js
Normal file
@@ -0,0 +1,139 @@
|
||||
// uniwheel 0.1.2 (customized)
|
||||
// A unified cross browser mouse wheel event handler
|
||||
// https://github.com/teemualap/uniwheel
|
||||
|
||||
module.exports = (function(){
|
||||
|
||||
//Full details: https://developer.mozilla.org/en-US/docs/Web/Reference/Events/wheel
|
||||
|
||||
var prefix = "", _addEventListener, _removeEventListener, support, fns = [];
|
||||
var passiveOption = {passive: true};
|
||||
|
||||
// detect event model
|
||||
if ( window.addEventListener ) {
|
||||
_addEventListener = "addEventListener";
|
||||
_removeEventListener = "removeEventListener";
|
||||
} else {
|
||||
_addEventListener = "attachEvent";
|
||||
_removeEventListener = "detachEvent";
|
||||
prefix = "on";
|
||||
}
|
||||
|
||||
// detect available wheel event
|
||||
support = "onwheel" in document.createElement("div") ? "wheel" : // Modern browsers support "wheel"
|
||||
document.onmousewheel !== undefined ? "mousewheel" : // Webkit and IE support at least "mousewheel"
|
||||
"DOMMouseScroll"; // let's assume that remaining browsers are older Firefox
|
||||
|
||||
|
||||
function createCallback(element,callback) {
|
||||
|
||||
var fn = function(originalEvent) {
|
||||
|
||||
!originalEvent && ( originalEvent = window.event );
|
||||
|
||||
// create a normalized event object
|
||||
var event = {
|
||||
// keep a ref to the original event object
|
||||
originalEvent: originalEvent,
|
||||
target: originalEvent.target || originalEvent.srcElement,
|
||||
type: "wheel",
|
||||
deltaMode: originalEvent.type == "MozMousePixelScroll" ? 0 : 1,
|
||||
deltaX: 0,
|
||||
delatZ: 0,
|
||||
preventDefault: function() {
|
||||
originalEvent.preventDefault ?
|
||||
originalEvent.preventDefault() :
|
||||
originalEvent.returnValue = false;
|
||||
}
|
||||
};
|
||||
|
||||
// calculate deltaY (and deltaX) according to the event
|
||||
if ( support == "mousewheel" ) {
|
||||
event.deltaY = - 1/40 * originalEvent.wheelDelta;
|
||||
// Webkit also support wheelDeltaX
|
||||
originalEvent.wheelDeltaX && ( event.deltaX = - 1/40 * originalEvent.wheelDeltaX );
|
||||
} else {
|
||||
event.deltaY = originalEvent.detail;
|
||||
}
|
||||
|
||||
// it's time to fire the callback
|
||||
return callback( event );
|
||||
|
||||
};
|
||||
|
||||
fns.push({
|
||||
element: element,
|
||||
fn: fn,
|
||||
});
|
||||
|
||||
return fn;
|
||||
}
|
||||
|
||||
function getCallback(element) {
|
||||
for (var i = 0; i < fns.length; i++) {
|
||||
if (fns[i].element === element) {
|
||||
return fns[i].fn;
|
||||
}
|
||||
}
|
||||
return function(){};
|
||||
}
|
||||
|
||||
function removeCallback(element) {
|
||||
for (var i = 0; i < fns.length; i++) {
|
||||
if (fns[i].element === element) {
|
||||
return fns.splice(i,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _addWheelListener(elem, eventName, callback, isPassiveListener ) {
|
||||
var cb;
|
||||
|
||||
if (support === "wheel") {
|
||||
cb = callback;
|
||||
} else {
|
||||
cb = createCallback(elem, callback);
|
||||
}
|
||||
|
||||
elem[_addEventListener](prefix + eventName, cb, isPassiveListener ? passiveOption : false);
|
||||
}
|
||||
|
||||
function _removeWheelListener(elem, eventName, callback, isPassiveListener ) {
|
||||
|
||||
var cb;
|
||||
|
||||
if (support === "wheel") {
|
||||
cb = callback;
|
||||
} else {
|
||||
cb = getCallback(elem);
|
||||
}
|
||||
|
||||
elem[_removeEventListener](prefix + eventName, cb, isPassiveListener ? passiveOption : false);
|
||||
|
||||
removeCallback(elem);
|
||||
}
|
||||
|
||||
function addWheelListener( elem, callback, isPassiveListener ) {
|
||||
_addWheelListener(elem, support, callback, isPassiveListener );
|
||||
|
||||
// handle MozMousePixelScroll in older Firefox
|
||||
if( support == "DOMMouseScroll" ) {
|
||||
_addWheelListener(elem, "MozMousePixelScroll", callback, isPassiveListener );
|
||||
}
|
||||
}
|
||||
|
||||
function removeWheelListener(elem, callback, isPassiveListener){
|
||||
_removeWheelListener(elem, support, callback, isPassiveListener);
|
||||
|
||||
// handle MozMousePixelScroll in older Firefox
|
||||
if( support == "DOMMouseScroll" ) {
|
||||
_removeWheelListener(elem, "MozMousePixelScroll", callback, isPassiveListener);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
on: addWheelListener,
|
||||
off: removeWheelListener
|
||||
};
|
||||
|
||||
})();
|
||||
Reference in New Issue
Block a user