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>
)
);
}