import * as React from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faTrash } from '@fortawesome/free-solid-svg-icons'; import { GlobalState } from '../../../../globalState'; import { FactorGradient } from 'babylonjs/Misc/gradients'; import { LockObject } from '../lockObject'; interface IFactorGradientStepGridComponent { globalState: GlobalState; gradient: FactorGradient; lockObject: LockObject; lineIndex: number; onDelete: () => void; onUpdateGradient: () => void; onCheckForReOrder: () => void; } export class FactorGradientStepGridComponent extends React.Component { constructor(props: IFactorGradientStepGridComponent) { super(props); this.state={gradient: props.gradient.gradient}; } updateFactor1(factor: number) { this.props.gradient.factor1 = factor; this.props.onUpdateGradient(); this.forceUpdate(); } updateFactor2(factor: number) { this.props.gradient.factor2 = factor; this.props.onUpdateGradient(); this.forceUpdate(); } updateGradient(gradient: number) { this.props.gradient.gradient = gradient; this.setState({gradient: gradient}); this.props.onUpdateGradient(); } onPointerUp() { this.props.onCheckForReOrder(); } lock() { if (this.props.lockObject) { this.props.lockObject.lock = true; } } unlock() { if (this.props.lockObject) { this.props.lockObject.lock = false; } } render() { let gradient = this.props.gradient; return (
{`#${this.props.lineIndex}`}
this.unlock()} onFocus={() => this.lock()} onChange={evt => this.updateFactor1(parseFloat(evt.target.value))} />
this.unlock()} onFocus={() => this.lock()} onChange={evt => this.updateFactor2(parseFloat(evt.target.value))} />
{gradient.gradient.toFixed(2)}
this.onPointerUp()} onChange={evt => this.updateGradient(parseFloat(evt.target.value))} />
this.props.onDelete()}>
) } }