victory-native
Version:
A charting library for React Native with a focus on performance and customization.
30 lines (24 loc) • 743 B
text/typescript
import type { AxisScaleType } from "../../types";
export const getYScaleDomain = ({
yMin,
yMax,
yAxisScale = "linear",
}: {
yMin: number;
yMax: number;
yAxisScale?: AxisScaleType;
}): [number, number] => {
const fallbackYScaleDomain = yAxisScale === "log" ? [10, 1] : [1, -1];
const singleValueYScaleDomain =
yAxisScale === "log" ? [yMax * 10, yMin / 10] : [yMax + 1, yMin - 1];
if (!Number.isFinite(yMin) || !Number.isFinite(yMax)) {
return fallbackYScaleDomain as [number, number];
}
if (yAxisScale === "log" && (yMin <= 0 || yMax <= 0)) {
return fallbackYScaleDomain as [number, number];
}
if (yMax === yMin) {
return singleValueYScaleDomain as [number, number];
}
return [yMax, yMin];
};