function slider(config = {}) {
let {value, min = 0, max = 1, step = "any", precision = 2, title, description, format, submit, scale} = config;
if (typeof config == "number") value = config;
if (value == null) value = (max + min) / 2;
precision = Math.pow(10, precision);
const roundVal = input => {
input = isNaN(input.valueAsNumber) ? input : input.valueAsNumber;
return Math.round(input * precision) / precision;
}
let scaleNew;
if (scale == null) {
scaleNew = roundVal;
} else {
scaleNew = input => roundVal(scale(input.valueAsNumber))
}
return input({
type: "range", title, description, submit, format,
attributes: {min, max, step, value},
getValue: scaleNew
});
}