scratch-gui / src /containers /slider-monitor.jsx
soiz1's picture
Upload folder using huggingface_hub
8fd7a1d verified
import bindAll from 'lodash.bindall';
import PropTypes from 'prop-types';
import React from 'react';
import VM from 'scratch-vm';
import {setVariableValue} from '../lib/variable-utils';
import {connect} from 'react-redux';
import SliderMonitorComponent from '../components/monitor/slider-monitor.jsx';
class SliderMonitor extends React.Component {
constructor (props) {
super(props);
bindAll(this, [
'handleSliderUpdate'
]);
this.state = {
value: props.value
};
}
componentWillReceiveProps (nextProps) {
if (this.state.value !== nextProps.value) {
this.setState({value: nextProps.value});
}
}
handleSliderUpdate (e) {
this.setState({value: Number(e.target.value)});
const {vm, targetId, id: variableId} = this.props;
setVariableValue(vm, targetId, variableId, Number(e.target.value));
}
render () {
const {
vm, // eslint-disable-line no-unused-vars
value, // eslint-disable-line no-unused-vars
...props
} = this.props;
return (
<SliderMonitorComponent
{...props}
value={this.state.value}
onSliderUpdate={this.handleSliderUpdate}
/>
);
}
}
SliderMonitor.propTypes = {
id: PropTypes.string,
targetId: PropTypes.string,
value: PropTypes.oneOfType([
PropTypes.number,
PropTypes.string
]),
vm: PropTypes.instanceOf(VM)
};
const mapStateToProps = state => ({vm: state.scratchGui.vm});
export default connect(mapStateToProps)(SliderMonitor);