@mui/x-charts
Version:
The community edition of MUI X Charts components.
24 lines • 1.13 kB
JavaScript
import { isBandScaleConfig, isPointScaleConfig, isSymlogScaleConfig } from "../../../../models/axis.js";
import { getScale } from "../../../getScale.js";
import { scaleBand, scalePoint } from "../../../scales/index.js";
const DEFAULT_CATEGORY_GAP_RATIO = 0.2;
export function getRange(drawingArea, axisDirection, axis) {
const range = axisDirection === 'x' ? [drawingArea.left, drawingArea.left + drawingArea.width] : [drawingArea.top + drawingArea.height, drawingArea.top];
return axis.reverse ? [range[1], range[0]] : range;
}
export function getNormalizedAxisScale(axis, domain) {
const range = [0, 1];
if (isBandScaleConfig(axis)) {
const categoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;
return scaleBand(domain, range).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2);
}
if (isPointScaleConfig(axis)) {
return scalePoint(domain, range);
}
const scaleType = axis.scaleType ?? 'linear';
const scale = getScale(scaleType, domain, range);
if (isSymlogScaleConfig(axis) && axis.constant != null) {
scale.constant(axis.constant);
}
return scale;
}