import React, { useState, useEffect } from 'react'; import '../Components/RangeSlider.scss'; const RangeSlider = ({ min = 1, max = 100, step = 1, onChange, Defaultvalue, }) => { const [value, setValue] = useState(min); const [displayValue, setDisplayValue] = useState(min); const handleChange = (e) => { const newValue = parseInt(e.target.value, 10); setValue(newValue); if (onChange) onChange(newValue); }; useEffect(() => { setValue(Defaultvalue); }, [Defaultvalue]); useEffect(() => { let animationInterval; if (displayValue !== value) { const stepAmount = Math.abs(value - displayValue) / 3; animationInterval = setInterval(() => { setDisplayValue((prev) => { if (Math.abs(prev - value) < 1) { clearInterval(animationInterval); return value; } return prev < value ? prev + Math.ceil(stepAmount) : prev - Math.ceil(stepAmount); }); }, 50); } return () => clearInterval(animationInterval); }, [value, displayValue]); const progress = ((value - min) / (max - min)) * 100; return (
); }; export default RangeSlider;