From fc82b9374e2d156f5607f13fed1c9f6f17acfd03 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 14 Apr 2026 23:51:14 +0300 Subject: [PATCH] feat(print/pdf): debounce rendering when changing scale --- apps/client/src/widgets/dialogs/print_preview.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/client/src/widgets/dialogs/print_preview.tsx b/apps/client/src/widgets/dialogs/print_preview.tsx index 0728e68f88..acffc0652e 100644 --- a/apps/client/src/widgets/dialogs/print_preview.tsx +++ b/apps/client/src/widgets/dialogs/print_preview.tsx @@ -86,10 +86,16 @@ export default function PrintPreviewDialog() { regeneratePreview({ landscape, pageSize: newPageSize, scale }); } + const scaleDebounceRef = useRef>(); + function handleScaleChange(newScale: number) { const clamped = Math.min(2, Math.max(0.1, Math.round(newScale * 10) / 10)); setScaleStr(String(clamped)); - regeneratePreview({ landscape, pageSize, scale: clamped }); + + clearTimeout(scaleDebounceRef.current); + scaleDebounceRef.current = setTimeout(() => { + regeneratePreview({ landscape, pageSize, scale: clamped }); + }, 500); } function regeneratePreview(opts: { landscape: boolean; pageSize: string; scale: number }) {