| 123456789101112131415161718192021222324252627282930313233 |
- /**
- * requestAnimationFrame polyfill
- */
- import { isServer } from './index';
- let prev = Date.now();
- /* istanbul ignore next */
- function fallback(fn: FrameRequestCallback): number {
- const curr = Date.now();
- const ms = Math.max(0, 16 - (curr - prev));
- const id = setTimeout(fn, ms);
- prev = curr + ms;
- return id;
- }
- /* istanbul ignore next */
- const root = <Window>(isServer ? global : window);
- /* istanbul ignore next */
- const iRaf = root.requestAnimationFrame || fallback;
- /* istanbul ignore next */
- const iCancel = root.cancelAnimationFrame || root.clearTimeout;
- export function raf(fn: FrameRequestCallback): number {
- return iRaf.call(root, fn);
- }
- export function cancel(id: number) {
- iCancel.call(root, id);
- }
|