|
1 | 1 | /*!
|
2 | 2 | * jQuery Mousewheel 3.1.13
|
3 | 3 | *
|
4 |
| - * Copyright jQuery Foundation and other contributors |
5 |
| - * Released under the MIT license |
6 |
| - * http://jquery.org/license |
| 4 | + * Copyright OpenJS Foundation and other contributors |
7 | 5 | */
|
8 | 6 |
|
9 |
| -(function (factory) { |
10 |
| - if ( typeof define === 'function' && define.amd ) { |
| 7 | +( function( factory ) { |
| 8 | + if ( typeof define === "function" && define.amd ) { |
| 9 | + |
11 | 10 | // AMD. Register as an anonymous module.
|
12 |
| - define(['jquery'], factory); |
13 |
| - } else if (typeof exports === 'object') { |
| 11 | + define( [ "jquery" ], factory ); |
| 12 | + } else if ( typeof exports === "object" ) { |
| 13 | + |
14 | 14 | // Node/CommonJS style for Browserify
|
15 | 15 | module.exports = factory;
|
16 | 16 | } else {
|
| 17 | + |
17 | 18 | // Browser globals
|
18 |
| - factory(jQuery); |
| 19 | + factory( jQuery ); |
19 | 20 | }
|
20 |
| -}(function ($) { |
| 21 | +} )( function( $ ) { |
21 | 22 |
|
22 |
| - var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], |
23 |
| - toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ? |
24 |
| - ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], |
| 23 | + var toFix = [ "wheel", "mousewheel", "DOMMouseScroll", "MozMousePixelScroll" ], |
| 24 | + toBind = ( "onwheel" in window.document || window.document.documentMode >= 9 ) ? |
| 25 | + [ "wheel" ] : [ "mousewheel", "DomMouseScroll", "MozMousePixelScroll" ], |
25 | 26 | slice = Array.prototype.slice,
|
26 | 27 | nullLowestDeltaTimeout, lowestDelta;
|
27 | 28 |
|
28 | 29 | if ( $.event.fixHooks ) {
|
29 | 30 | for ( var i = toFix.length; i; ) {
|
30 |
| - $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; |
| 31 | + $.event.fixHooks[ toFix[ --i ] ] = $.event.mouseHooks; |
31 | 32 | }
|
32 | 33 | }
|
33 | 34 |
|
34 | 35 | var special = $.event.special.mousewheel = {
|
35 |
| - version: '3.1.12', |
| 36 | + version: "3.1.12", |
36 | 37 |
|
37 | 38 | setup: function() {
|
38 | 39 | if ( this.addEventListener ) {
|
39 | 40 | for ( var i = toBind.length; i; ) {
|
40 |
| - this.addEventListener( toBind[--i], handler, false ); |
| 41 | + this.addEventListener( toBind[ --i ], handler, false ); |
41 | 42 | }
|
42 | 43 | } else {
|
43 | 44 | this.onmousewheel = handler;
|
44 | 45 | }
|
| 46 | + |
45 | 47 | // Store the line height and page height for this particular element
|
46 |
| - $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); |
47 |
| - $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); |
| 48 | + $.data( this, "mousewheel-line-height", special.getLineHeight( this ) ); |
| 49 | + $.data( this, "mousewheel-page-height", special.getPageHeight( this ) ); |
48 | 50 | },
|
49 | 51 |
|
50 | 52 | teardown: function() {
|
51 | 53 | if ( this.removeEventListener ) {
|
52 | 54 | for ( var i = toBind.length; i; ) {
|
53 |
| - this.removeEventListener( toBind[--i], handler, false ); |
| 55 | + this.removeEventListener( toBind[ --i ], handler, false ); |
54 | 56 | }
|
55 | 57 | } else {
|
56 | 58 | this.onmousewheel = null;
|
57 | 59 | }
|
| 60 | + |
58 | 61 | // Clean up the data we added to the element
|
59 |
| - $.removeData(this, 'mousewheel-line-height'); |
60 |
| - $.removeData(this, 'mousewheel-page-height'); |
| 62 | + $.removeData( this, "mousewheel-line-height" ); |
| 63 | + $.removeData( this, "mousewheel-page-height" ); |
61 | 64 | },
|
62 | 65 |
|
63 |
| - getLineHeight: function(elem) { |
64 |
| - var $elem = $(elem), |
65 |
| - $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent'](); |
66 |
| - if (!$parent.length) { |
67 |
| - $parent = $('body'); |
| 66 | + getLineHeight: function( elem ) { |
| 67 | + var $elem = $( elem ), |
| 68 | + $parent = $elem[ "offsetParent" in $.fn ? "offsetParent" : "parent" ](); |
| 69 | + if ( !$parent.length ) { |
| 70 | + $parent = $( "body" ); |
68 | 71 | }
|
69 |
| - return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16; |
| 72 | + return parseInt( $parent.css( "fontSize" ), 10 ) || |
| 73 | + parseInt( $elem.css( "fontSize" ), 10 ) || 16; |
70 | 74 | },
|
71 | 75 |
|
72 |
| - getPageHeight: function(elem) { |
73 |
| - return $(elem).height(); |
| 76 | + getPageHeight: function( elem ) { |
| 77 | + return $( elem ).height(); |
74 | 78 | },
|
75 | 79 |
|
76 | 80 | settings: {
|
|
79 | 83 | }
|
80 | 84 | };
|
81 | 85 |
|
82 |
| - $.fn.extend({ |
83 |
| - mousewheel: function(fn) { |
84 |
| - return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel'); |
| 86 | + $.fn.extend( { |
| 87 | + mousewheel: function( fn ) { |
| 88 | + return fn ? this.bind( "mousewheel", fn ) : this.trigger( "mousewheel" ); |
85 | 89 | },
|
86 | 90 |
|
87 |
| - unmousewheel: function(fn) { |
88 |
| - return this.unbind('mousewheel', fn); |
| 91 | + unmousewheel: function( fn ) { |
| 92 | + return this.unbind( "mousewheel", fn ); |
89 | 93 | }
|
90 |
| - }); |
| 94 | + } ); |
91 | 95 |
|
92 | 96 |
|
93 |
| - function handler(event) { |
| 97 | + function handler( event ) { |
94 | 98 | var orgEvent = event || window.event,
|
95 |
| - args = slice.call(arguments, 1), |
| 99 | + args = slice.call( arguments, 1 ), |
96 | 100 | delta = 0,
|
97 | 101 | deltaX = 0,
|
98 | 102 | deltaY = 0,
|
99 | 103 | absDelta = 0,
|
100 | 104 | offsetX = 0,
|
101 | 105 | offsetY = 0;
|
102 |
| - event = $.event.fix(orgEvent); |
103 |
| - event.type = 'mousewheel'; |
| 106 | + event = $.event.fix( orgEvent ); |
| 107 | + event.type = "mousewheel"; |
104 | 108 |
|
105 | 109 | // Old school scrollwheel delta
|
106 |
| - if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; } |
107 |
| - if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; } |
108 |
| - if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; } |
109 |
| - if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; } |
| 110 | + if ( "detail" in orgEvent ) { |
| 111 | + deltaY = orgEvent.detail * -1; |
| 112 | + } |
| 113 | + if ( "wheelDelta" in orgEvent ) { |
| 114 | + deltaY = orgEvent.wheelDelta; |
| 115 | + } |
| 116 | + if ( "wheelDeltaY" in orgEvent ) { |
| 117 | + deltaY = orgEvent.wheelDeltaY; |
| 118 | + } |
| 119 | + if ( "wheelDeltaX" in orgEvent ) { |
| 120 | + deltaX = orgEvent.wheelDeltaX * -1; |
| 121 | + } |
110 | 122 |
|
111 | 123 | // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
|
112 |
| - if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { |
| 124 | + if ( "axis" in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { |
113 | 125 | deltaX = deltaY * -1;
|
114 | 126 | deltaY = 0;
|
115 | 127 | }
|
|
118 | 130 | delta = deltaY === 0 ? deltaX : deltaY;
|
119 | 131 |
|
120 | 132 | // New school wheel delta (wheel event)
|
121 |
| - if ( 'deltaY' in orgEvent ) { |
| 133 | + if ( "deltaY" in orgEvent ) { |
122 | 134 | deltaY = orgEvent.deltaY * -1;
|
123 | 135 | delta = deltaY;
|
124 | 136 | }
|
125 |
| - if ( 'deltaX' in orgEvent ) { |
| 137 | + if ( "deltaX" in orgEvent ) { |
126 | 138 | deltaX = orgEvent.deltaX;
|
127 |
| - if ( deltaY === 0 ) { delta = deltaX * -1; } |
| 139 | + if ( deltaY === 0 ) { |
| 140 | + delta = deltaX * -1; |
| 141 | + } |
128 | 142 | }
|
129 | 143 |
|
130 | 144 | // No change actually happened, no reason to go any further
|
131 |
| - if ( deltaY === 0 && deltaX === 0 ) { return; } |
| 145 | + if ( deltaY === 0 && deltaX === 0 ) { |
| 146 | + return; |
| 147 | + } |
132 | 148 |
|
133 | 149 | // Need to convert lines and pages to pixels if we aren't already in pixels
|
134 | 150 | // There are three delta modes:
|
135 | 151 | // * deltaMode 0 is by pixels, nothing to do
|
136 | 152 | // * deltaMode 1 is by lines
|
137 | 153 | // * deltaMode 2 is by pages
|
138 | 154 | if ( orgEvent.deltaMode === 1 ) {
|
139 |
| - var lineHeight = $.data(this, 'mousewheel-line-height'); |
| 155 | + var lineHeight = $.data( this, "mousewheel-line-height" ); |
140 | 156 | delta *= lineHeight;
|
141 | 157 | deltaY *= lineHeight;
|
142 | 158 | deltaX *= lineHeight;
|
143 | 159 | } else if ( orgEvent.deltaMode === 2 ) {
|
144 |
| - var pageHeight = $.data(this, 'mousewheel-page-height'); |
| 160 | + var pageHeight = $.data( this, "mousewheel-page-height" ); |
145 | 161 | delta *= pageHeight;
|
146 | 162 | deltaY *= pageHeight;
|
147 | 163 | deltaX *= pageHeight;
|
148 | 164 | }
|
149 | 165 |
|
150 | 166 | // Store lowest absolute delta to normalize the delta values
|
151 |
| - absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) ); |
| 167 | + absDelta = Math.max( Math.abs( deltaY ), Math.abs( deltaX ) ); |
152 | 168 |
|
153 | 169 | if ( !lowestDelta || absDelta < lowestDelta ) {
|
154 | 170 | lowestDelta = absDelta;
|
155 | 171 |
|
156 | 172 | // Adjust older deltas if necessary
|
157 |
| - if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { |
| 173 | + if ( shouldAdjustOldDeltas( orgEvent, absDelta ) ) { |
158 | 174 | lowestDelta /= 40;
|
159 | 175 | }
|
160 | 176 | }
|
161 | 177 |
|
162 | 178 | // Adjust older deltas if necessary
|
163 |
| - if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { |
| 179 | + if ( shouldAdjustOldDeltas( orgEvent, absDelta ) ) { |
| 180 | + |
164 | 181 | // Divide all the things by 40!
|
165 | 182 | delta /= 40;
|
166 | 183 | deltaX /= 40;
|
167 | 184 | deltaY /= 40;
|
168 | 185 | }
|
169 | 186 |
|
170 | 187 | // Get a whole, normalized value for the deltas
|
171 |
| - delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta); |
172 |
| - deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta); |
173 |
| - deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta); |
| 188 | + delta = Math[ delta >= 1 ? "floor" : "ceil" ]( delta / lowestDelta ); |
| 189 | + deltaX = Math[ deltaX >= 1 ? "floor" : "ceil" ]( deltaX / lowestDelta ); |
| 190 | + deltaY = Math[ deltaY >= 1 ? "floor" : "ceil" ]( deltaY / lowestDelta ); |
174 | 191 |
|
175 | 192 | // Normalise offsetX and offsetY properties
|
176 | 193 | if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
|
|
185 | 202 | event.deltaFactor = lowestDelta;
|
186 | 203 | event.offsetX = offsetX;
|
187 | 204 | event.offsetY = offsetY;
|
| 205 | + |
188 | 206 | // Go ahead and set deltaMode to 0 since we converted to pixels
|
189 | 207 | // Although this is a little odd since we overwrite the deltaX/Y
|
190 | 208 | // properties with normalized deltas.
|
191 | 209 | event.deltaMode = 0;
|
192 | 210 |
|
193 | 211 | // Add event and delta to the front of the arguments
|
194 |
| - args.unshift(event, delta, deltaX, deltaY); |
| 212 | + args.unshift( event, delta, deltaX, deltaY ); |
195 | 213 |
|
196 | 214 | // Clearout lowestDelta after sometime to better
|
197 | 215 | // handle multiple device types that give different
|
198 | 216 | // a different lowestDelta
|
199 | 217 | // Ex: trackpad = 3 and mouse wheel = 120
|
200 |
| - if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); } |
201 |
| - nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); |
| 218 | + if ( nullLowestDeltaTimeout ) { |
| 219 | + window.clearTimeout( nullLowestDeltaTimeout ); |
| 220 | + } |
| 221 | + nullLowestDeltaTimeout = window.setTimeout( nullLowestDelta, 200 ); |
202 | 222 |
|
203 |
| - return ($.event.dispatch || $.event.handle).apply(this, args); |
| 223 | + return ( $.event.dispatch || $.event.handle ).apply( this, args ); |
204 | 224 | }
|
205 | 225 |
|
206 | 226 | function nullLowestDelta() {
|
207 | 227 | lowestDelta = null;
|
208 | 228 | }
|
209 | 229 |
|
210 |
| - function shouldAdjustOldDeltas(orgEvent, absDelta) { |
| 230 | + function shouldAdjustOldDeltas( orgEvent, absDelta ) { |
| 231 | + |
211 | 232 | // If this is an older event and the delta is divisable by 120,
|
212 | 233 | // then we are assuming that the browser is treating this as an
|
213 | 234 | // older mouse wheel event and that we should divide the deltas
|
214 | 235 | // by 40 to try and get a more usable deltaFactor.
|
215 | 236 | // Side note, this actually impacts the reported scroll distance
|
216 | 237 | // in older browsers and can cause scrolling to be slower than native.
|
217 | 238 | // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
|
218 |
| - return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0; |
| 239 | + return special.settings.adjustOldDeltas && orgEvent.type === "mousewheel" && |
| 240 | + absDelta % 120 === 0; |
219 | 241 | }
|
220 | 242 |
|
221 |
| -})); |
| 243 | +} ); |
0 commit comments