‘use strict’;

(angular.version.minor < 3 && angular.version.dot < 14) && angular.module(‘ng’)

.factory(‘$$rAF’, function($window, $timeout) {

var requestAnimationFrame = $window.requestAnimationFrame ||
                            $window.webkitRequestAnimationFrame ||
                            $window.mozRequestAnimationFrame;

var cancelAnimationFrame = $window.cancelAnimationFrame ||
                           $window.webkitCancelAnimationFrame ||
                           $window.mozCancelAnimationFrame ||
                           $window.webkitCancelRequestAnimationFrame;

var rafSupported = !!requestAnimationFrame;
var raf = rafSupported ?
  function(fn) {
    var id = requestAnimationFrame(fn);
    return function() {
      cancelAnimationFrame(id);
    };
  } :
  function(fn) {
    var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666
    return function() {
      $timeout.cancel(timer);
    };
  };

raf.supported = rafSupported;

return raf;

});

// .factory(‘$$animateReflow’, function($$rAF, $document) {

// var bodyEl = $document.body;

// return function(fn) { // //the returned function acts as the cancellation function // return $$rAF(function() { // //the line below will force the browser to perform a repaint // //so that all the animated elements within the animation frame // //will be properly updated and drawn on screen. This is // //required to perform multi-class CSS based animations with // //Firefox. DO NOT REMOVE THIS LINE. // var a = bodyEl.offsetWidth + 1; // fn(); // }); // };

// });