in website/src/utils/layer-params.js [9:64]
export function propToParam(key, propType, value) {
if (blackList.indexOf(key) >= 0) {
return null;
}
const param = {
name: key,
displayName: key,
value
};
const type = !propType || propType.type === 'unknown' ? typeof value : propType.type;
switch (type) {
case 'boolean':
return {...param, type: 'checkbox'};
case 'number':
param.min = propType && 'min' in propType ? propType.min : 0;
param.max = propType && 'max' in propType ? propType.max : 100;
return {...param, type: 'range', step: param.max === 100 ? 1 : 0.01};
case 'accessor': {
const result = {...param, type: 'function'};
const altValue = propType.value;
let altType = typeof altValue;
if (Array.isArray(altValue) && key.endsWith('Color')) {
altType = 'color';
}
if (altType === 'boolean' || altType === 'color') {
result.altType = altType;
result.altValue = altValue;
}
if (altType === 'number') {
result.altType = 'range';
result.altValue = altValue;
result.step = 1;
result.min = 0;
result.max = 100;
}
return result;
}
case 'color':
return {...param, type: 'color'};
case 'url':
return {...param, type: 'link'};
case 'object':
if (/mapping|domain|range/i.test(key)) {
return {...param, type: 'json'};
}
if (propType && propType.async) {
return {...param, type: 'link'};
}
break;
default:
}
return null;
}