Skip to content

Commit

Permalink
SSR changes
Browse files Browse the repository at this point in the history
  • Loading branch information
ShaMan123 committed Jan 31, 2023
1 parent c98d6e0 commit d29352e
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions src/util/animation/AnimationFrameProvider.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,28 @@
import { getEnv } from '../../env';

const _requestAnimFrame: AnimationFrameProvider['requestAnimationFrame'] =
getEnv().window.requestAnimationFrame ||
function (callback: FrameRequestCallback) {
return getEnv().window.setTimeout(callback, 1000 / 60);
};

const _cancelAnimFrame: AnimationFrameProvider['cancelAnimationFrame'] =
getEnv().window.cancelAnimationFrame || getEnv().window.clearTimeout;
let _requestAnimFrame: AnimationFrameProvider['requestAnimationFrame'];
let _cancelAnimFrame: AnimationFrameProvider['cancelAnimationFrame'];

/**
* requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/
* In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method
* @param {Function} callback Callback to invoke
*/
export function requestAnimFrame(callback: FrameRequestCallback): number {
if (!_requestAnimFrame) {
_requestAnimFrame =
getEnv().window.requestAnimationFrame ||
function requestAnimationFramePolyfill(callback: FrameRequestCallback) {
return getEnv().window.setTimeout(callback, 1000 / 60);
};
}
return _requestAnimFrame.call(getEnv().window, callback);
}

export function cancelAnimFrame(handle: number): void {
if (!_cancelAnimFrame) {
_cancelAnimFrame =
getEnv().window.cancelAnimationFrame || getEnv().window.clearTimeout;
}
return _cancelAnimFrame.call(getEnv().window, handle);
}

0 comments on commit d29352e

Please sign in to comment.