36 lines
		
	
	
		
			739 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			739 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * requestAnimationFrame polyfill
 | |
|  */
 | |
| import { isServer } from '..';
 | |
| var prev = Date.now();
 | |
| /* istanbul ignore next */
 | |
| 
 | |
| function fallback(fn) {
 | |
|   var curr = Date.now();
 | |
|   var ms = Math.max(0, 16 - (curr - prev));
 | |
|   var id = setTimeout(fn, ms);
 | |
|   prev = curr + ms;
 | |
|   return id;
 | |
| }
 | |
| /* istanbul ignore next */
 | |
| 
 | |
| 
 | |
| var root = isServer ? global : window;
 | |
| /* istanbul ignore next */
 | |
| 
 | |
| var iRaf = root.requestAnimationFrame || fallback;
 | |
| /* istanbul ignore next */
 | |
| 
 | |
| var iCancel = root.cancelAnimationFrame || root.clearTimeout;
 | |
| export function raf(fn) {
 | |
|   return iRaf.call(root, fn);
 | |
| } // double raf for animation
 | |
| 
 | |
| export function doubleRaf(fn) {
 | |
|   raf(function () {
 | |
|     raf(fn);
 | |
|   });
 | |
| }
 | |
| export function cancelRaf(id) {
 | |
|   iCancel.call(root, id);
 | |
| } | 
