var now = require('./now');
|
var isBrowser = require('./isBrowser');
|
var raf, cancel;
|
var lastTime = 0;
|
if (isBrowser) {
|
raf = window.requestAnimationFrame;
|
cancel = window.cancelAnimationFrame;
|
var vendors = ['ms', 'moz', 'webkit', 'o'];
|
for (var i = 0, len = vendors.length; i < len && !raf; i++) {
|
raf = window[vendors[i] + 'RequestAnimationFrame'];
|
cancel =
|
window[vendors[i] + 'CancelAnimationFrame'] ||
|
window[vendors[i] + 'CancelRequestAnimationFrame'];
|
}
|
if (raf) {
|
raf = raf.bind(window);
|
cancel = cancel.bind(window);
|
}
|
}
|
raf =
|
raf ||
|
function(cb) {
|
var curTime = now();
|
var timeToCall = Math.max(0, 16 - (curTime - lastTime));
|
var id = setTimeout(function() {
|
cb(curTime + timeToCall);
|
}, timeToCall);
|
lastTime = curTime + timeToCall;
|
return id;
|
};
|
cancel =
|
cancel ||
|
function(id) {
|
clearTimeout(id);
|
};
|
raf.cancel = cancel;
|
exports = raf;
|
|
module.exports = exports;
|