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)}%