Move public APIs into their own folder

And start writing actual tests for them
This commit is contained in:
Pat Cavit 2016-05-18 17:18:52 -07:00
parent 724361af6a
commit 960812308c
9 changed files with 192 additions and 6 deletions

35
api/limiter.js Normal file
View file

@ -0,0 +1,35 @@
var FRAME_BUDGET = 16 // 60 frames per second = 1 call per 16 ms
module.exports = function($window, render) {
var rAF = $window.requestAnimationFrame || $window.setTimeout
var cAF = $window.cancelAnimationFrame || $window.clearTimeout
var last = 0
var pending
return function() {
var now = new Date()
// First render, OR if the time since the last render is greater
// than the frame budget
// just immediately render
if(!last || now - last > FRAME_BUDGET) {
last = now;
return render()
}
// Redraw already pending, abort
if(pending) {
return
}
// Schedule a redraw for the next tick
pending = rAF(function() {
render()
last = new Date()
pending = null
}, FRAME_BUDGET - (now - last))
}
}