UNPKG

844 BJavaScriptView Raw
1module.exports = raf
2
3var EE = require('events').EventEmitter
4 , _raf = require('./polyfill.js')
5 , now = global.performance && global.performance.now ? function() {
6 return performance.now()
7 } : Date.now || function () {
8 return +new Date()
9 }
10
11
12function raf(el, tick) {
13 var now = raf.now()
14 , ee = new EE
15
16 if(typeof el === 'function') {
17 tick = el
18 el = undefined
19 }
20
21 ee.pause = function() { ee.paused = true }
22 ee.resume = function() { ee.paused = false }
23
24 _raf.call(window, iter, el)
25
26 if(tick) {
27 ee.on('data', function(dt) {
28 tick(dt)
29 })
30 }
31
32 return ee
33
34 function iter(timestamp) {
35 var _now = raf.now()
36 , dt = _now - now
37
38 now = _now
39
40 if(!ee.paused) {
41 ee.emit('data', dt)
42 }
43
44 _raf.call(window, iter, el)
45 }
46}
47
48raf.polyfill = _raf
49raf.now = now
50