import React from 'react'; import { ReactSVG } from 'react-svg'; class StepMenu extends React.Component { constructor(props) { super(props); this.performRedo = this.performRedo.bind(this); this.performUndo = this.performUndo.bind(this); this.state = {}; } handleClick(event, step, disabled) { event.preventDefault(); if (!disabled) { // Must update color before updating props to allow component to // render with the proper current color rather than the state before this.props.setStep(step); } } performUndo(evt) { let { changeHistory, steps, redoHistory } = this.props.state; let prev = changeHistory.pop(); if (prev) { redoHistory.push(steps); this.props.setState(changeHistory, prev.steps, redoHistory); } } performRedo(evt) { let { changeHistory, steps, redoHistory } = this.props.state; let prevSteps = redoHistory.pop(); if (prevSteps) { changeHistory.push({ redoHistory, steps }); this.props.setState(changeHistory, prevSteps, redoHistory); } } getColor(disabled) { return disabled ? "rgb(136, 136, 136)" : "rgb(68, 68, 68)"; } disable(st, obj) { return st.concat(obj.length > 0 ? "" : " disabled") } render() { let { hide, currentStep, stepInfo, state } = this.props; let { changeHistory, redoHistory } = state; if (hide) return (); let backEnabled = currentStep === (stepInfo.length - 1); let forwardEnabled = currentStep === 0; return ( this.handleClick(event, 0, forwardEnabled)}> this.handleClick(event, currentStep - 1, forwardEnabled)}> this.handleClick(event, currentStep + 1, backEnabled)}> this.handleClick(event, stepInfo.length - 1, backEnabled)}> Step {currentStep + 1} of {stepInfo.length} ); } } export default StepMenu;