Repository navigation
Expand file tree
/
Copy pathangular-adaptive-scroll.min.js
More file actions
6 lines (6 loc) · 2.3 KB
/
Copy pathangular-adaptive-scroll.min.js
File metadata and controls
6 lines (6 loc) · 2.3 KB
1
2
3
4
5
6
/*!
* angular-adaptive-scroll v0.2.0
* The MIT License
* Copyright (c) 2013 Jan Antala
*/
!function(){var a=angular.module("adaptive.scroll",[]);a.factory("$gyroscope",["$rootScope",function(a){var b,c,d,e,f,g,h,i,j,k=20,l=!1;window.ondeviceorientation=function(a){if(!l)return!1;e=Math.round(a.alpha),f=Math.round(a.beta),g=Math.round(a.gamma),b||c||d||(b=e,c=f,d=g);var h=m(b,e,-360),i=m(c,f,360),j=m(d,g,180);Math.abs(h)<=k&&Math.abs(i)<=k&&Math.abs(j)<=k?o():n(h,i,j)};var m=function(a,b,c){return d1=a-b,d2=a-b-c,Math.abs(d1)<Math.abs(d2)?d1:d2},n=function(b,c,d){Math.abs(b)>k&&(b=0>b?b+k:b-k),Math.abs(c)>k&&(c=0>c?c+k:c-k),Math.abs(d)>k&&(d=0>d?d+k:d-k),a.$broadcast("adaptive.scroll:deviceorientation",{event:"ondeviceorientation",alphaDiff:b,betaDiff:c,gammaDiff:d}),h&&0!==b&&h(b),i&&0!==c&&i(c),j&&0!==d&&j(d)},o=function(){a.$broadcast("adaptive.scroll:deviceorientation",{event:"ondeviceorientationstop"})},p=function(a){console.log("trashold",a),k=a||k,l=!0},q=function(){l=!1,b=null,c=null,d=null,o()};return{watchPosition:function(a){p(a)},ignorePosition:function(){q()},onalpha:function(a){h=a},onbeta:function(a){i=a},ongamma:function(a){j=a}}}]),a.directive("adaptivescroll",["$rootScope",function(a){return{restrict:"A",link:function(b,c,d){var e=function(){return angular.extend({},b.$eval(d.adaptivescroll))},f=e();console.log(f),function(){for(var a=0,b=["webkit","moz"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=window.setTimeout(function(){b(c+d)},d);return a=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)})}();var g,h=0,i=0,j=0,k=function(){(h||i)&&(c[0].scrollTop=c[0].scrollTop+i,c[0].scrollLeft=c[0].scrollLeft+j),g=window.requestAnimationFrame(k)};a.$on("adaptive.scroll:deviceorientation",function(a,b){console.log("received",b),"ondeviceorientation"===b.event&&(h=b.alphaDiff,i=b.betaDiff,j=b.gammaDiff),"ondeviceorientation"!==b.event||g||(g=window.requestAnimationFrame(k)),"ondeviceorientationstop"===b.event&&g&&(window.cancelAnimationFrame(g),g=null)})}}}])}();