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);
|
||
|
}
|