import React from 'react' import Color from 'color' import Button from '../Button' import SpecField from './SpecField' import DocLabel from './DocLabel' import AddIcon from 'react-icons/lib/md/add-circle-outline' import DeleteIcon from 'react-icons/lib/md/delete' import input from '../../config/input.js' import colors from '../../config/colors.js' import { margins, fontSizes } from '../../config/scales.js' function isZoomField(value) { return typeof value === 'object' && value.stops } const specFieldProps = { onChange: React.PropTypes.func.isRequired, fieldName: React.PropTypes.string.isRequired, fieldSpec: React.PropTypes.object.isRequired, } /** Supports displaying spec field for zoom function objects * https://www.mapbox.com/mapbox-gl-style-spec/#types-function-zoom-property */ export default class ZoomSpecField 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.object, React.PropTypes.string, React.PropTypes.number, React.PropTypes.bool, ]), } render() { let label = if(isZoomField(this.props.value)) { const zoomFields = this.props.value.stops.map((stop, idx) => { label = if(idx > 0) { label = } if(idx === 1) { label = } const zoomLevel = stop[0] const value = stop[1] return
{label}
}) return
{zoomFields}
} else { return
{label}
} } } function labelFromFieldName(fieldName) { let label = fieldName.split('-').slice(1).join(' ') if(label.length > 0) { label = label.charAt(0).toUpperCase() + label.slice(1); } return label }