Files
mtdb_movie/common/resources/client/utils/dom/create-ref-loop.ts
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01: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);
}