From 02e92d0f3b191eec7916f1759e48a1a2b5d766b0 Mon Sep 17 00:00:00 2001 From: Miodec Date: Mon, 22 Sep 2025 13:10:50 +0200 Subject: [PATCH] impr: add debounced animation frame util !nuf --- .../src/ts/utils/debounced-animation-frame.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 frontend/src/ts/utils/debounced-animation-frame.ts diff --git a/frontend/src/ts/utils/debounced-animation-frame.ts b/frontend/src/ts/utils/debounced-animation-frame.ts new file mode 100644 index 000000000..afb60c3e9 --- /dev/null +++ b/frontend/src/ts/utils/debounced-animation-frame.ts @@ -0,0 +1,21 @@ +const pendingFrames = new Map(); + +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); + } +}