source: imaps-frontend/node_modules/raf/index.js

main
Last change on this file was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 4 days ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 1.9 KB
Line 
1var now = require('performance-now')
2 , root = typeof window === 'undefined' ? global : window
3 , vendors = ['moz', 'webkit']
4 , suffix = 'AnimationFrame'
5 , raf = root['request' + suffix]
6 , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]
7
8for(var i = 0; !raf && i < vendors.length; i++) {
9 raf = root[vendors[i] + 'Request' + suffix]
10 caf = root[vendors[i] + 'Cancel' + suffix]
11 || root[vendors[i] + 'CancelRequest' + suffix]
12}
13
14// Some versions of FF have rAF but not cAF
15if(!raf || !caf) {
16 var last = 0
17 , id = 0
18 , queue = []
19 , frameDuration = 1000 / 60
20
21 raf = function(callback) {
22 if(queue.length === 0) {
23 var _now = now()
24 , next = Math.max(0, frameDuration - (_now - last))
25 last = next + _now
26 setTimeout(function() {
27 var cp = queue.slice(0)
28 // Clear queue here to prevent
29 // callbacks from appending listeners
30 // to the current frame's queue
31 queue.length = 0
32 for(var i = 0; i < cp.length; i++) {
33 if(!cp[i].cancelled) {
34 try{
35 cp[i].callback(last)
36 } catch(e) {
37 setTimeout(function() { throw e }, 0)
38 }
39 }
40 }
41 }, Math.round(next))
42 }
43 queue.push({
44 handle: ++id,
45 callback: callback,
46 cancelled: false
47 })
48 return id
49 }
50
51 caf = function(handle) {
52 for(var i = 0; i < queue.length; i++) {
53 if(queue[i].handle === handle) {
54 queue[i].cancelled = true
55 }
56 }
57 }
58}
59
60module.exports = function(fn) {
61 // Wrap in a new function to prevent
62 // `cancel` potentially being assigned
63 // to the native rAF function
64 return raf.call(root, fn)
65}
66module.exports.cancel = function() {
67 caf.apply(root, arguments)
68}
69module.exports.polyfill = function(object) {
70 if (!object) {
71 object = root;
72 }
73 object.requestAnimationFrame = raf
74 object.cancelAnimationFrame = caf
75}
Note: See TracBrowser for help on using the repository browser.