2023-09-26 13:10:02 -07:00
|
|
|
import usePrevious from 'hooks/usePrevious'
|
|
|
|
import { useEffect, useState } from 'react'
|
2023-09-22 06:33:36 -07:00
|
|
|
import RangeSlider from 'react-range-slider-input'
|
2023-09-12 17:37:41 -07:00
|
|
|
|
|
|
|
const LeverageSlider = ({
|
|
|
|
leverageMax,
|
|
|
|
onChange,
|
|
|
|
step,
|
|
|
|
}: {
|
|
|
|
leverageMax: number
|
2023-09-22 06:33:36 -07:00
|
|
|
onChange: (x: number) => void
|
2023-09-12 17:37:41 -07:00
|
|
|
step: number
|
|
|
|
}) => {
|
2023-09-22 06:33:36 -07:00
|
|
|
const [value, setValue] = useState([0, 1])
|
2023-09-26 13:10:02 -07:00
|
|
|
const prevMax = usePrevious(leverageMax)
|
|
|
|
|
|
|
|
// if leverageMax changes, force rerender
|
|
|
|
useEffect(() => {
|
|
|
|
if (prevMax !== leverageMax) {
|
|
|
|
window.dispatchEvent(new Event('resize'))
|
|
|
|
}
|
|
|
|
}, [leverageMax, prevMax])
|
2023-09-12 17:37:41 -07:00
|
|
|
|
2023-09-22 06:33:36 -07:00
|
|
|
const handleSliderChange = (v: number[]) => {
|
|
|
|
setValue(v)
|
|
|
|
onChange(v[1])
|
2023-09-12 17:37:41 -07:00
|
|
|
}
|
|
|
|
|
2023-09-26 13:10:02 -07:00
|
|
|
console.log('leverage max', leverageMax)
|
|
|
|
|
2023-09-12 17:37:41 -07:00
|
|
|
return (
|
2023-09-26 13:10:02 -07:00
|
|
|
<RangeSlider
|
|
|
|
id="range-slider-gradient"
|
|
|
|
onInput={handleSliderChange}
|
|
|
|
min={1}
|
|
|
|
max={leverageMax}
|
|
|
|
value={value}
|
|
|
|
step={step}
|
|
|
|
thumbsDisabled={[true, false]}
|
|
|
|
/>
|
2023-09-12 17:37:41 -07:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default LeverageSlider
|