From 552edd3fcdc1cc89b7e2ca62fbd70896c35eb3ed Mon Sep 17 00:00:00 2001
From: Konrad Mohrfeldt <konrad.mohrfeldt@farbdev.org>
Date: Thu, 15 Jun 2023 15:55:35 +0200
Subject: [PATCH] feat: add mapToDomain helper function

---
 src/util.ts | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/util.ts b/src/util.ts
index d292a5e2..44d9279d 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -142,3 +142,18 @@ export function secondsToDurationString(seconds: number): string {
   const s = Math.round(seconds % 60)
   return `${h ? h + 'h ' : ''}${m ? m + 'min ' : ''}${s ? s + 's' : ''}`
 }
+
+export function clamp(value: number, min: number, max: number): number {
+  return Math.min(Math.max(value, min), max)
+}
+
+export function mapToDomain(
+  value: number,
+  inputDomain: [number, number],
+  outputDomain: [number, number],
+) {
+  const [x1, y1] = inputDomain
+  const [x2, y2] = outputDomain
+  value = clamp(value, x1, y1)
+  return ((value - x1) * (y2 - x2)) / (y1 - x1) + x2
+}
-- 
GitLab