22 lines
1009 B
JavaScript
22 lines
1009 B
JavaScript
import { useBrowserTimer } from './useBrowserTimer';
|
|
import { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';
|
|
const setAnimationFrameNoop = (callback)=>{
|
|
callback(0);
|
|
return 0;
|
|
};
|
|
const cancelAnimationFrameNoop = (handle)=>handle;
|
|
/**
|
|
* @internal
|
|
* Helper to manage a browser requestAnimationFrame.
|
|
* Ensures that the requestAnimationFrame isn't set multiple times at once and is cleaned up
|
|
* when the component is unloaded.
|
|
*
|
|
* @returns A pair of [requestAnimationFrame, cancelAnimationFrame] that are stable between renders.
|
|
*/ export function useAnimationFrame() {
|
|
const { targetDocument } = useFluent();
|
|
const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;
|
|
const setAnimationFrame = win ? win.requestAnimationFrame : setAnimationFrameNoop;
|
|
const clearAnimationFrame = win ? win.cancelAnimationFrame : cancelAnimationFrameNoop;
|
|
return useBrowserTimer(setAnimationFrame, clearAnimationFrame);
|
|
}
|