victory-native
Version:
A charting library for React Native with a focus on performance and customization.
45 lines (44 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeScale = void 0;
const d3_scale_1 = require("d3-scale");
const makeScale = ({ inputBounds, outputBounds, padStart, padEnd, viewport, isNice = false, axisScale = "linear", }) => {
let scale;
const hasViewport = viewport !== undefined;
const hasPadding = padStart !== undefined || padEnd !== undefined;
const viewOutputBounds = hasViewport && hasPadding
? [outputBounds[0] + (padStart !== null && padStart !== void 0 ? padStart : 0), outputBounds[1] - (padEnd !== null && padEnd !== void 0 ? padEnd : 0)]
: outputBounds;
switch (axisScale) {
case "log": {
const viewScale = (0, d3_scale_1.scaleLog)()
.domain(viewport !== null && viewport !== void 0 ? viewport : inputBounds)
.range(viewOutputBounds);
scale = (0, d3_scale_1.scaleLog)()
.domain(inputBounds)
.range([viewScale(inputBounds[0]), viewScale(inputBounds[1])]);
break;
}
default: {
const viewScale = (0, d3_scale_1.scaleLinear)()
.domain(viewport !== null && viewport !== void 0 ? viewport : inputBounds)
.range(viewOutputBounds);
scale = (0, d3_scale_1.scaleLinear)()
.domain(inputBounds)
.range([viewScale(inputBounds[0]), viewScale(inputBounds[1])]);
break;
}
}
if (!hasViewport && hasPadding) {
scale
.domain([
scale.invert(outputBounds[0] - (padStart !== null && padStart !== void 0 ? padStart : 0)),
scale.invert(outputBounds[1] + (padEnd !== null && padEnd !== void 0 ? padEnd : 0)),
])
.range(outputBounds);
}
if (isNice)
scale.nice();
return scale;
};
exports.makeScale = makeScale;