diff --git a/components/converter/VisualComparison.tsx b/components/converter/VisualComparison.tsx index f77f2bb..b158f4f 100644 --- a/components/converter/VisualComparison.tsx +++ b/components/converter/VisualComparison.tsx @@ -137,9 +137,9 @@ export default function VisualComparison({ } } setDraggingUnit(null); - setDraggedPercentage(null); + // Don't clear draggedPercentage yet - let it clear when conversions update activeBarRef.current = null; - baseConversionsRef.current = []; + // baseConversionsRef cleared after conversions update }, [draggingUnit, conversions, onValueChange]); // Touch drag handlers @@ -197,9 +197,9 @@ export default function VisualComparison({ } } setDraggingUnit(null); - setDraggedPercentage(null); + // Don't clear draggedPercentage yet - let it clear when conversions update activeBarRef.current = null; - baseConversionsRef.current = []; + // baseConversionsRef cleared after conversions update }, [draggingUnit, conversions, onValueChange]); // Add/remove global event listeners for drag @@ -219,6 +219,15 @@ export default function VisualComparison({ } }, [draggingUnit, handleMouseMove, handleMouseUp, handleTouchMove, handleTouchEnd]); + // Clear drag state when conversions update after drag ends + useEffect(() => { + if (!draggingUnit && draggedPercentage !== null) { + // Drag has ended, conversions have updated, now clear visual state + setDraggedPercentage(null); + baseConversionsRef.current = []; + } + }, [conversions, draggingUnit, draggedPercentage]); + if (conversions.length === 0) { return (