scaleExponent = (domain = [0, 1], range = [0, 1]) => {
let m,
b,
n = 2;
function up() {
m = (range[1] - range[0]) / (domain[1] - domain[0]);
}
up();
const exp = (x) => Math.pow(n, m * (x - domain[0]) + range[0]);
exp.exponent = (x) => m * (x - domain[0]) + range[0];
exp.number = (_) => (_ === undefined ? n : ((n = _ ?? 2), exp));
exp.domain = (_) =>
_ === undefined ? domain : ((domain = _ ?? [0, 1]), up(), exp);
exp.range = (_) =>
_ === undefined ? range : ((range = _ ?? [0, 1]), up(), exp);
exp.invert = (x) => (Math.log(x) / Math.log(n) - range[0]) / m + domain[0];
exp.invert2 = (x) =>
((domain[1] - domain[0]) / (range[1] - range[0])) *
(Math.log(x) / Math.log(n) - range[0]) +
domain[0];
exp.ticks = function (count) {
var d = exp.domain();
return d3.ticks(d[0], d[d.length - 1], count == null ? 10 : count);
};
return exp;
}