impr: add debounced animation frame util

!nuf
This commit is contained in:
Miodec 2025-09-22 13:10:50 +02:00
parent 1479a26927
commit 02e92d0f3b

View file

@ -0,0 +1,21 @@
const pendingFrames = new Map<string, number>();
export function requestDebouncedAnimationFrame(
frameId: string,
callback: () => void
): void {
cancelIfPending(frameId);
const frame = requestAnimationFrame(() => {
pendingFrames.delete(frameId);
callback();
});
pendingFrames.set(frameId, frame);
}
function cancelIfPending(frameId: string): void {
const pending = pendingFrames.get(frameId);
if (pending !== undefined) {
cancelAnimationFrame(pending);
pendingFrames.delete(frameId);
}
}