|
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