From de1f9d6ab669b8e699d98b8855e125e21030b5b3 Mon Sep 17 00:00:00 2001 From: Max Richter Date: Fri, 6 Feb 2026 15:44:24 +0100 Subject: [PATCH] feat(ui): change inputnumber to snap to values when alt is pressed --- packages/ui/src/lib/inputs/InputNumber.svelte | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/ui/src/lib/inputs/InputNumber.svelte b/packages/ui/src/lib/inputs/InputNumber.svelte index 1118f96..da0d8be 100644 --- a/packages/ui/src/lib/inputs/InputNumber.svelte +++ b/packages/ui/src/lib/inputs/InputNumber.svelte @@ -26,11 +26,18 @@ return Math.min(max, Math.max(min, v)); } - function snap(v: number) { - if (step) v = Math.round(v / step) * step; + function snap(v: number, s = step) { + if (s) v = Math.round(v / s) * s; return +v.toFixed(3); } + function getAutoStep(v: number): number { + const abs = Math.abs(v); + if (abs === 0) return 0.1; // fallback for 0 + const exponent = Math.floor(Math.log10(abs)); + return Math.pow(10, exponent); + } + let dragging = $state(false); let startValue = 0; let rect: DOMRect; @@ -58,7 +65,8 @@ value = snap( e.ctrlKey ? startValue + delta - : clamp(startValue + delta) + : clamp(startValue + delta), + (e.altKey && !step) ? getAutoStep(value) : step ); } @@ -129,7 +137,7 @@