_renderSetting()

in examples/layer-browser/src/components/layer-controls.js [219:268]


  _renderSetting({settingName, value, propType, data, transitions}) {
    const originalValue = value;

    if (typeof value === 'function' && isAccessor(settingName)) {
      try {
        // infer type by executing an accessor
        value = value(data && data[0]);
      } catch (err) {
        // ignore
      }
    }

    const type = propType && propType.type;

    switch (propType && propType.type) {
      case 'compound':
        const {settings, propTypes = {}} = this.props;
        return propType.elements.map(name =>
          this._renderSetting({
            settingName: name,
            value: settings[name],
            propType: propTypes[name],
            data
          })
        );
      default:
        break;
    }

    const renderer =
      this.renderers[type] ||
      (/color/i.test(settingName) && Array.isArray(value) && this.renderers.color) ||
      this.renderers[typeof value];

    return (
      renderer && (
        <div key={settingName}>
          <div className="input-group">
            <label>{settingName}</label>
            <div className="input">{renderer({settingName, value, propType, originalValue})}</div>
            {this._renderTransitionSelector({
              settingName,
              transition: transitions && transitions[settingName]
            })}
            {this._renderConstantSelector({settingName, value, originalValue})}
          </div>
        </div>
      )
    );
  }