import React from 'react' import color from 'color' import GlSpec from 'mapbox-gl-style-spec/reference/latest.min.js' import ColorField from './ColorField' import NumberInput from '../inputs/NumberInput' import CheckboxInput from '../inputs/CheckboxInput' import StringInput from '../inputs/StringInput' import SelectInput from '../inputs/SelectInput' import input from '../../config/input.js' function labelFromFieldName(fieldName) { let label = fieldName.split('-').slice(1).join(' ') if(label.length > 0) { label = label.charAt(0).toUpperCase() + label.slice(1); } return label } /** Display any field from the Mapbox GL style spec and * choose the correct field component based on the @{fieldSpec} * to display @{value}. */ export default class SpecField extends React.Component { static propTypes = { onChange: React.PropTypes.func.isRequired, fieldName: React.PropTypes.string.isRequired, fieldSpec: React.PropTypes.object.isRequired, value: React.PropTypes.oneOfType([ React.PropTypes.string, React.PropTypes.number, ]), /** Override the style of the field */ style: React.PropTypes.object, } render() { const commonProps = { style: this.props.style, value: this.props.value, name: this.props.fieldName, onChange: newValue => this.props.onChange(this.props.fieldName, newValue) } console.log(this.props.fieldName, this.props.fieldSpec.type) switch(this.props.fieldSpec.type) { case 'number': return ( ) case 'enum': return ( [v, v])} /> ) case 'string': return ( ) case 'color': return ( ) case 'boolean': return ( ) default: return null } } }