Вход Регистрация
Файл: concrete5.7.5.6/concrete/js/build/vendor/jquery-mousewheel/jquery.mousewheel.js
Строк: 264
<?php
/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)
 * Licensed under the MIT License (LICENSE.txt).
 *
 * Version: 3.1.12
 *
 * Requires: jQuery 1.2.2+
 */

(function (factory) {
    if ( 
typeof define === 'function' && define.amd ) {
        
// AMD. Register as an anonymous module.
        
define(['jquery'], factory);
    } else if (
typeof exports === 'object') {
        
// Node/CommonJS style for Browserify
        
module.exports factory;
    } else {
        
// Browser globals
        
factory(jQuery);
    }
}(function ($) {

    var 
toFix  = ['wheel''mousewheel''DOMMouseScroll''MozMousePixelScroll'],
        
toBind = ( 'onwheel' in document || document.documentMode >= ) ?
            [
'wheel'] : ['mousewheel''DomMouseScroll''MozMousePixelScroll'],
        
slice  = Array.prototype.slice,
        
nullLowestDeltaTimeoutlowestDelta;

    if ( $.
event.fixHooks ) {
        for ( var 
toFix.lengthi; ) {
            $.
event.fixHookstoFix[--i] ] = $.event.mouseHooks;
        }
    }

    var 
special = $.event.special.mousewheel = {
        
version'3.1.12',

        
setup: function() {
            if ( 
this.addEventListener ) {
                for ( var 
toBind.lengthi; ) {
                    
this.addEventListenertoBind[--i], handlerfalse );
                }
            } else {
                
this.onmousewheel handler;
            }
            
// Store the line height and page height for this particular element
            
$.data(this'mousewheel-line-height'special.getLineHeight(this));
            $.
data(this'mousewheel-page-height'special.getPageHeight(this));
        },

        
teardown: function() {
            if ( 
this.removeEventListener ) {
                for ( var 
toBind.lengthi; ) {
                    
this.removeEventListenertoBind[--i], handlerfalse );
                }
            } else {
                
this.onmousewheel null;
            }
            
// Clean up the data we added to the element
            
$.removeData(this'mousewheel-line-height');
            $.
removeData(this'mousewheel-page-height');
        },

        
getLineHeight: function(elem) {
            var 
$elem = $(elem),
                
$parent $elem['offsetParent' in $.fn 'offsetParent' 'parent']();
            if (!
$parent.length) {
                
$parent = $('body');
            }
            return 
parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
        },

        
getPageHeight: function(elem) {
            return $(
elem).height();
        },

        
settings: {
            
adjustOldDeltastrue// see shouldAdjustOldDeltas() below
            
normalizeOffsettrue  // calls getBoundingClientRect for each event
        
}
    };

    $.
fn.extend({
        
mousewheel: function(fn) {
            return 
fn this.bind('mousewheel'fn) : this.trigger('mousewheel');
        },

        
unmousewheel: function(fn) {
            return 
this.unbind('mousewheel'fn);
        }
    });


    function 
handler(event) {
        var 
orgEvent   event || window.event,
            
args       slice.call(arguments1),
            
delta      0,
            
deltaX     0,
            
deltaY     0,
            
absDelta   0,
            
offsetX    0,
            
offsetY    0;
        
event = $.event.fix(orgEvent);
        
event.type 'mousewheel';

        
// Old school scrollwheel delta
        
if ( 'detail'      in orgEvent ) { deltaY orgEvent.detail * -1;      }
        if ( 
'wheelDelta'  in orgEvent ) { deltaY orgEvent.wheelDelta;       }
        if ( 
'wheelDeltaY' in orgEvent ) { deltaY orgEvent.wheelDeltaY;      }
        if ( 
'wheelDeltaX' in orgEvent ) { deltaX orgEvent.wheelDeltaX * -1; }

        
// Firefox < 17 horizontal scrolling related to DOMMouseScroll event
        
if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
            
deltaX deltaY * -1;
            
deltaY 0;
        }

        
// Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
        
delta deltaY === deltaX deltaY;

        
// New school wheel delta (wheel event)
        
if ( 'deltaY' in orgEvent ) {
            
deltaY orgEvent.deltaY * -1;
            
delta  deltaY;
        }
        if ( 
'deltaX' in orgEvent ) {
            
deltaX orgEvent.deltaX;
            if ( 
deltaY === ) { delta  deltaX * -1; }
        }

        
// No change actually happened, no reason to go any further
        
if ( deltaY === && deltaX === ) { return; }

        
// Need to convert lines and pages to pixels if we aren't already in pixels
        // There are three delta modes:
        //   * deltaMode 0 is by pixels, nothing to do
        //   * deltaMode 1 is by lines
        //   * deltaMode 2 is by pages
        
if ( orgEvent.deltaMode === ) {
            var 
lineHeight = $.data(this'mousewheel-line-height');
            
delta  *= lineHeight;
            
deltaY *= lineHeight;
            
deltaX *= lineHeight;
        } else if ( 
orgEvent.deltaMode === ) {
            var 
pageHeight = $.data(this'mousewheel-page-height');
            
delta  *= pageHeight;
            
deltaY *= pageHeight;
            
deltaX *= pageHeight;
        }

        
// Store lowest absolute delta to normalize the delta values
        
absDelta Math.maxMath.abs(deltaY), Math.abs(deltaX) );

        if ( !
lowestDelta || absDelta lowestDelta ) {
            
lowestDelta absDelta;

            
// Adjust older deltas if necessary
            
if ( shouldAdjustOldDeltas(orgEventabsDelta) ) {
                
lowestDelta /= 40;
            }
        }

        
// Adjust older deltas if necessary
        
if ( shouldAdjustOldDeltas(orgEventabsDelta) ) {
            
// Divide all the things by 40!
            
delta  /= 40;
            
deltaX /= 40;
            
deltaY /= 40;
        }

        
// Get a whole, normalized value for the deltas
        
delta  Mathdelta  >= 'floor' 'ceil' ](delta  lowestDelta);
        
deltaX MathdeltaX >= 'floor' 'ceil' ](deltaX lowestDelta);
        
deltaY MathdeltaY >= 'floor' 'ceil' ](deltaY lowestDelta);

        
// Normalise offsetX and offsetY properties
        
if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
            var 
boundingRect this.getBoundingClientRect();
            
offsetX event.clientX boundingRect.left;
            
offsetY event.clientY boundingRect.top;
        }

        
// Add information to the event object
        
event.deltaX deltaX;
        
event.deltaY deltaY;
        
event.deltaFactor lowestDelta;
        
event.offsetX offsetX;
        
event.offsetY offsetY;
        
// Go ahead and set deltaMode to 0 since we converted to pixels
        // Although this is a little odd since we overwrite the deltaX/Y
        // properties with normalized deltas.
        
event.deltaMode 0;

        
// Add event and delta to the front of the arguments
        
args.unshift(eventdeltadeltaXdeltaY);

        
// Clearout lowestDelta after sometime to better
        // handle multiple device types that give different
        // a different lowestDelta
        // Ex: trackpad = 3 and mouse wheel = 120
        
if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
        
nullLowestDeltaTimeout setTimeout(nullLowestDelta200);

        return ($.
event.dispatch || $.event.handle).apply(thisargs);
    }

    function 
nullLowestDelta() {
        
lowestDelta null;
    }

    function 
shouldAdjustOldDeltas(orgEventabsDelta) {
        
// If this is an older event and the delta is divisable by 120,
        // then we are assuming that the browser is treating this as an
        // older mouse wheel event and that we should divide the deltas
        // by 40 to try and get a more usable deltaFactor.
        // Side note, this actually impacts the reported scroll distance
        // in older browsers and can cause scrolling to be slower than native.
        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
        
return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta 120 === 0;
    }

}));
?>
Онлайн: 0
Реклама