UNPKG

@loopmode/dis-gui

Version:

An extensible, styleable, & React-based controller library inspired by the venerable dat-gui.

92 lines (83 loc) 2.4 kB
'use strict'; import React from 'react'; import update from 'react-addons-update'; import * as dg from '../src/index'; import * as gradient from './gradient'; export default class Demo extends React.Component { constructor(props) { super(props); this.state = { gradient: this.props.gradient, }; } render() { return ( <dg.GUI> <dg.Folder label='Text' expanded={true}> <dg.Text label='Text' value={this.props.text} onChange={this.props.onChangeText} /> <dg.Color label='Color' red={this.props.textColor.red} green={this.props.textColor.green} blue={this.props.textColor.blue} onChange={this.props.onChangeTextColor} /> </dg.Folder> <dg.Folder label='Background' expanded={true}> <dg.Select label='Noise' options={['Smooth', 'Fractal']} value={this.props.noise} onChange={this.props.onChangeNoise} /> <dg.Number label='Scale' min={1} max={20} value={this.props.scale} decimals={3} onChange={this.props.onChangeScale} /> <dg.Gradient label='Gradient' stops={this.state.gradient} onChange={this.props.onChangeGradient} /> <dg.Button label='Randomize Gradient' onClick={this.onClickRandomGradient.bind(this)} /> <dg.Folder label='Animation' expanded={true}> <dg.Number label='Speed' min={0} max={0.01} step={0.001} decimals={3} value={this.props.speed} onChange={this.props.onChangeSpeed} /> <dg.Checkbox label='Translate' checked={this.props.translate} onChange={this.props.onChangeTranslate} /> </dg.Folder> </dg.Folder> </dg.GUI> ) } onClickRandomGradient() { let stops = gradient.random(); let newState = update(this.state, { $set: { gradient: stops, } }); this.setState(newState); } }