import React from 'react'

import PropertyGroup from '../fields/PropertyGroup'
import input from '../../config/input.js'

/** Choose tileset (source) and the source layer */
export default class SourceEditor extends React.Component {
	static propTypes = {
		source: React.PropTypes.string.isRequired,
		sourceLayer: React.PropTypes.string.isRequired,

    onSourceChange: React.PropTypes.func.isRequired,
    onSourceLayerChange: React.PropTypes.func.isRequired,

    /** List of available sources in the style
     * https://www.mapbox.com/mapbox-gl-style-spec/#root-sources */
    sources: React.PropTypes.object.isRequired,
  }

  render() {
		const options = Object.keys(this.props.sources).map(sourceId => {
			return <option key={sourceId} value={sourceId}>{sourceId}</option>
		})

    const layerOptions = this.props.sources[this.props.source].map(vectorLayerId => {
      const id = vectorLayerId
			return <option key={id} value={id}>{id}</option>
		})

	  return <div>
      <div style={input.property}>
        <label style={input.label}>Source</label>
        <select
          style={input.select}
          value={this.props.source}
          onChange={(e) => this.onSourceChange(e.target.value)}
        >
          {options}
        </select>
      </div>
	    <div style={input.property}>
        <label style={input.label}>Source Layer</label>
        <select
          style={input.select}
          value={this.props.sourceLayer}
          onChange={(e) => this.onSourceLayerChange(e.target.value)}
        >
          {layerOptions}
        </select>
		  </div>
		</div>

	}
}