const MIN_DIMENSION_CM = 1; const MAX_DIMENSION_CM = 150; const MIN_WEIGHT_KG = 0.01; const DIMENSION_UNIT_TO_CM: Record = { mm: 0.1, cm: 1, m: 100, in: 2.54, yd: 91.44, }; const WEIGHT_UNIT_TO_KG: Record = { kg: 1, g: 0.001, lb: 0.45359237, lbs: 0.45359237, oz: 0.028349523125, }; function roundForInput(value: number): number { return Number(value.toFixed(6)); } function cmToStoreUnit(cm: number, dimensionUnit: string): number { const unitFactor = DIMENSION_UNIT_TO_CM[dimensionUnit] ?? 1; return cm / unitFactor; } function kgToStoreUnit(kg: number, weightUnit: string): number { const kgPerUnit = WEIGHT_UNIT_TO_KG[weightUnit] ?? 1; return kg / kgPerUnit; } export function getDimensionBounds(dimensionUnit: string): { min: number; max: number; step: number } { const min = roundForInput(cmToStoreUnit(MIN_DIMENSION_CM, dimensionUnit)); const max = roundForInput(cmToStoreUnit(MAX_DIMENSION_CM, dimensionUnit)); return { min, max, step: min, }; } export function getWeightBounds(weightUnit: string): { min: number; step: number } { const min = roundForInput(kgToStoreUnit(MIN_WEIGHT_KG, weightUnit)); return { min, step: min, }; }