diff --git a/components/converter/MainConverter.tsx b/components/converter/MainConverter.tsx index 5f02efc..be2ea9e 100644 --- a/components/converter/MainConverter.tsx +++ b/components/converter/MainConverter.tsx @@ -125,11 +125,10 @@ export default function MainConverter() { // Handle value change from draggable bars const handleValueChange = useCallback((value: number, unit: string) => { - // Convert the dragged unit's value back to the currently selected unit - const convertedValue = convertUnit(value, unit, selectedUnit); - setInputValue(convertedValue.toString()); - // Keep selectedUnit the same - user is still inputting in that unit - }, [selectedUnit]); + // When dragging a bar, switch to that unit as the source + setInputValue(value.toString()); + setSelectedUnit(unit); + }, []); return (
diff --git a/components/converter/VisualComparison.tsx b/components/converter/VisualComparison.tsx index 26f549e..6869be9 100644 --- a/components/converter/VisualComparison.tsx +++ b/components/converter/VisualComparison.tsx @@ -16,7 +16,6 @@ export default function VisualComparison({ onValueChange, }: VisualComparisonProps) { const [draggingUnit, setDraggingUnit] = useState(null); - const [draggedPercentage, setDraggedPercentage] = useState(null); const dragStartX = useRef(0); const dragStartWidth = useRef(0); const activeBarRef = useRef(null); @@ -101,9 +100,6 @@ export default function VisualComparison({ let newPercentage = dragStartWidth.current + deltaPercentage; newPercentage = Math.max(3, Math.min(100, newPercentage)); - // Update the visual percentage immediately - setDraggedPercentage(newPercentage); - // Find the conversion result for this unit const conversion = conversions.find(c => c.unit === draggingUnit); if (!conversion) return; @@ -121,7 +117,6 @@ export default function VisualComparison({ const handleMouseUp = useCallback(() => { setDraggingUnit(null); - setDraggedPercentage(null); activeBarRef.current = null; }, []); @@ -148,9 +143,6 @@ export default function VisualComparison({ let newPercentage = dragStartWidth.current + deltaPercentage; newPercentage = Math.max(3, Math.min(100, newPercentage)); - // Update the visual percentage immediately - setDraggedPercentage(newPercentage); - const conversion = conversions.find(c => c.unit === draggingUnit); if (!conversion) return; @@ -165,7 +157,6 @@ export default function VisualComparison({ const handleTouchEnd = useCallback(() => { setDraggingUnit(null); - setDraggedPercentage(null); activeBarRef.current = null; }, []); @@ -199,8 +190,6 @@ export default function VisualComparison({ {withPercentages.map(item => { const isDragging = draggingUnit === item.unit; const isDraggable = !!onValueChange; - // Use dragged percentage if this bar is being dragged, otherwise use calculated percentage - const displayPercentage = isDragging && draggedPercentage !== null ? draggedPercentage : item.percentage; return (
@@ -241,14 +230,14 @@ export default function VisualComparison({ draggingUnit ? "transition-none" : "transition-all duration-500 ease-out" )} style={{ - width: `${displayPercentage}%`, + width: `${item.percentage}%`, backgroundColor: color, }} /> {/* Percentage label overlay */}
- {Math.round(displayPercentage)}% + {Math.round(item.percentage)}%