Spaces:
Running
Running
File size: 1,673 Bytes
f2bee8a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
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);
|