use onMouseUp

pull/5370/head
yann300 3 years ago
parent 3f986ed745
commit e17e253671
  1. 31
      libs/remix-ui/debugger-ui/src/lib/slider/slider.tsx

@ -1,35 +1,28 @@
import React, { useState, useEffect, useRef } from 'react' // eslint-disable-line import React, { useState, useEffect, useRef } from 'react' // eslint-disable-line
export const Slider = ({ jumpTo, sliderValue, traceLength }) => { export const Slider = ({ jumpTo, sliderValue, traceLength }) => {
const [state, setState] = useState({
currentValue: 0
})
const onChangeId = useRef(null) const onChangeId = useRef(null)
const slider = useRef(null)
useEffect(() => { useEffect(() => {
setValue(sliderValue) setValue(sliderValue)
}, [sliderValue]) }, [sliderValue])
const setValue = (value) => { const setValue = (value) => {
if (value === state.currentValue) return if (value === slider.current.value) return
setState(prevState => { slider.current.value = value
return { ...prevState, currentValue: value }
})
jumpTo && jumpTo(value)
}
const handleChange = (e) => {
if (onChangeId.current) { if (onChangeId.current) {
window.clearTimeout(onChangeId.current) clearTimeout(onChangeId.current)
} }
((value) => { ((value) => {
onChangeId.current = setTimeout(() => { onChangeId.current = setTimeout(() => {
console.log(value) jumpTo && jumpTo(value)
value = parseInt(value)
setValue(value)
}, 100) }, 100)
})(e.target.value) })(value)
}
const handleChange = (e) => {
setValue(parseInt(e.target.value))
} }
return ( return (
@ -37,11 +30,11 @@ export const Slider = ({ jumpTo, sliderValue, traceLength }) => {
<input id='slider' <input id='slider'
data-id="slider" data-id="slider"
className='w-100 my-0' className='w-100 my-0'
ref={slider}
type='range' type='range'
min={0} min={0}
max={traceLength ? traceLength - 1 : 0} max={traceLength ? traceLength - 1 : 0}
value={state.currentValue} onMouseUp={handleChange}
onChange={handleChange}
disabled={traceLength ? traceLength === 0 : true} disabled={traceLength ? traceLength === 0 : true}
/> />
</div> </div>

Loading…
Cancel
Save