parent
971cdb172a
commit
2ce18276cb
@ -1,3 +1,3 @@ |
|||||||
{ |
{ |
||||||
"presets": ["@babel/preset-env"] |
"presets": ["@babel/preset-env", "@babel/preset-react"] |
||||||
} |
} |
||||||
|
@ -1,3 +1,4 @@ |
|||||||
module.exports = { |
module.exports = { |
||||||
|
"presets": ["@babel/preset-react"], |
||||||
"plugins": ["@babel/plugin-transform-modules-commonjs"] |
"plugins": ["@babel/plugin-transform-modules-commonjs"] |
||||||
} |
} |
@ -1 +1,4 @@ |
|||||||
export * from './lib/debugger-ui'; |
import Slider from './lib/slider' |
||||||
|
import * as debuggerUI from './lib/debugger-ui' |
||||||
|
|
||||||
|
export { Slider, debuggerUI } |
||||||
|
@ -0,0 +1,65 @@ |
|||||||
|
import React, { useState, useRef } from 'react' |
||||||
|
|
||||||
|
const Slider = ({ event }) => { |
||||||
|
const [state, setState] = useState({ |
||||||
|
max: null, |
||||||
|
disabled: true, |
||||||
|
previousValue: null, |
||||||
|
currentValue: null |
||||||
|
}) |
||||||
|
const sliderRef = useRef(null) |
||||||
|
|
||||||
|
const setSliderLength = (length) => { |
||||||
|
sliderRef.current.setAttribute('max', length - 1) |
||||||
|
setState({ |
||||||
|
...state, |
||||||
|
max: length - 1, |
||||||
|
disabled: (length === 0) |
||||||
|
}) |
||||||
|
|
||||||
|
if (state.disabled) { |
||||||
|
sliderRef.current.setAttribute('disabled', true) |
||||||
|
} else { |
||||||
|
sliderRef.current.removeAttribute('disabled') |
||||||
|
} |
||||||
|
|
||||||
|
setValue(0) |
||||||
|
} |
||||||
|
|
||||||
|
const setValue = (value) => { |
||||||
|
setState({ |
||||||
|
...state, |
||||||
|
currentValue: value |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
const handleChange = (e) => { |
||||||
|
const value = parseInt(e.target.value) |
||||||
|
|
||||||
|
if (value === state.previousValue) return |
||||||
|
setState({ |
||||||
|
...state, |
||||||
|
previousValue: value, |
||||||
|
currentValue: value |
||||||
|
}) |
||||||
|
event.trigger('sliderMoved', [value]) |
||||||
|
} |
||||||
|
|
||||||
|
return ( |
||||||
|
<div> |
||||||
|
<input id='slider' |
||||||
|
data-id="slider" |
||||||
|
className='w-100 my-0' |
||||||
|
type='range' |
||||||
|
min={0} |
||||||
|
max={state.max} |
||||||
|
value={state.currentValue} |
||||||
|
onChange={handleChange} |
||||||
|
disabled={state.disabled} |
||||||
|
ref={sliderRef} |
||||||
|
/> |
||||||
|
</div> |
||||||
|
) |
||||||
|
} |
||||||
|
|
||||||
|
export default Slider |
Loading…
Reference in new issue