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 ( ); } } 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);