Files
maher 511fad8199
Build / run (push) Has been cancelled
Initial commit
2026-05-14 13:42:10 +02:00

36 lines
713 B
TypeScript
Executable File

export function createRafLoop(callback: () => void) {
let id: number | undefined;
function start() {
// Time updates are already in progress.
if (!isUndefined(id)) return;
loop();
}
function loop() {
id = window.requestAnimationFrame(function rafLoop() {
if (isUndefined(id)) return;
callback();
loop();
});
}
function stop() {
if (isNumber(id)) window.cancelAnimationFrame(id);
id = undefined;
}
return {
start,
stop,
};
}
function isUndefined(value: unknown): value is undefined {
return typeof value === 'undefined';
}
function isNumber(value: any): value is number {
return typeof value === 'number' && !Number.isNaN(value);
}