@@ -277,6 +277,69 @@ app.service('GridUtil', ['$window', function ($window) {
277
277
*/
278
278
elementHeight : function ( elem ) {
279
279
280
+ } ,
281
+
282
+ normalizeWheelEvent : function ( event ) {
283
+ // var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'];
284
+ // var toBind = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'];
285
+ var lowestDelta , lowestDeltaXY ;
286
+
287
+ var orgEvent = event || window . event ,
288
+ args = [ ] . slice . call ( arguments , 1 ) ,
289
+ delta = 0 ,
290
+ deltaX = 0 ,
291
+ deltaY = 0 ,
292
+ absDelta = 0 ,
293
+ absDeltaXY = 0 ,
294
+ fn ;
295
+
296
+ // event = $.event.fix(orgEvent);
297
+ // event.type = 'mousewheel';
298
+
299
+ // Old school scrollwheel delta
300
+ if ( orgEvent . wheelDelta ) { delta = orgEvent . wheelDelta ; }
301
+ if ( orgEvent . detail ) { delta = orgEvent . detail * - 1 ; }
302
+
303
+ // At a minimum, setup the deltaY to be delta
304
+ deltaY = delta ;
305
+
306
+ // Firefox < 17 related to DOMMouseScroll event
307
+ if ( orgEvent . axis !== undefined && orgEvent . axis === orgEvent . HORIZONTAL_AXIS ) {
308
+ deltaY = 0 ;
309
+ deltaX = delta * - 1 ;
310
+ }
311
+
312
+ // New school wheel delta (wheel event)
313
+ if ( orgEvent . deltaY ) {
314
+ deltaY = orgEvent . deltaY * - 1 ;
315
+ delta = deltaY ;
316
+ }
317
+ if ( orgEvent . deltaX ) {
318
+ deltaX = orgEvent . deltaX ;
319
+ delta = deltaX * - 1 ;
320
+ }
321
+
322
+ // Webkit
323
+ if ( orgEvent . wheelDeltaY !== undefined ) { deltaY = orgEvent . wheelDeltaY ; }
324
+ if ( orgEvent . wheelDeltaX !== undefined ) { deltaX = orgEvent . wheelDeltaX * - 1 ; }
325
+
326
+ // Look for lowest delta to normalize the delta values
327
+ absDelta = Math . abs ( delta ) ;
328
+ if ( ! lowestDelta || absDelta < lowestDelta ) { lowestDelta = absDelta ; }
329
+ absDeltaXY = Math . max ( Math . abs ( deltaY ) , Math . abs ( deltaX ) ) ;
330
+ if ( ! lowestDeltaXY || absDeltaXY < lowestDeltaXY ) { lowestDeltaXY = absDeltaXY ; }
331
+
332
+ // Get a whole value for the deltas
333
+ fn = delta > 0 ? 'floor' : 'ceil' ;
334
+ delta = Math [ fn ] ( delta / lowestDelta ) ;
335
+ deltaX = Math [ fn ] ( deltaX / lowestDeltaXY ) ;
336
+ deltaY = Math [ fn ] ( deltaY / lowestDeltaXY ) ;
337
+
338
+ return {
339
+ delta : delta ,
340
+ deltaX : deltaX ,
341
+ deltaY : deltaY
342
+ } ;
280
343
}
281
344
} ;
282
345
0 commit comments