react-plot
Version:
Library of React components to render SVG 2D plots.
63 lines • 2.27 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { usePlotContext } from '../../contexts/plotContext.js';
import { getInnerOffset } from '../../utils/axis.js';
import LinearAxis from './LinearAxis.js';
import LogAxis from './LogAxis.js';
import TimeAxis from './TimeAxis.js';
function parallelPosition(position) {
switch (position) {
case 'bottom': {
return 'top';
}
case 'top': {
return 'bottom';
}
case 'left': {
return 'right';
}
case 'right': {
return 'left';
}
default: {
throw new Error(`Unknown position ${position}`);
}
}
}
export function ParallelAxis(props) {
const { id, hidden = false, primaryTickLength = 5, secondaryTickLength = 3, tickPosition = 'outer', hiddenLine = false, hiddenTicks = false, tickLabelFormat: newTickLabelFormat, ...otherProps } = props;
const { axisContext, plotWidth, plotHeight } = usePlotContext();
const innerOffset = getInnerOffset(hidden, hiddenTicks, tickPosition, primaryTickLength);
// Don't display axis if parent id not in context
const parentAxis = axisContext[id];
if (!parentAxis)
return null;
// Get position opposite to parent axis
const position = parallelPosition(parentAxis.position);
// Renders according to position and scale
const { type, scale, tickLabelFormat: oldTickLabelFormat } = parentAxis;
const tickLabelFormat = newTickLabelFormat ?? oldTickLabelFormat;
const childProps = {
plotWidth,
plotHeight,
position,
displayPrimaryGridLines: false,
hidden,
primaryTickLength,
tickPosition,
hiddenLine,
hiddenTicks,
innerOffset,
secondaryTickLength,
...otherProps,
};
if (type === 'linear') {
return (_jsx(LinearAxis, { ...childProps, tickLabelFormat: tickLabelFormat, scale: scale }));
}
else if (type === 'time') {
return (_jsx(TimeAxis, { ...childProps, tickLabelFormat: tickLabelFormat, scale: scale }));
}
else {
return (_jsx(LogAxis, { ...childProps, tickLabelFormat: tickLabelFormat, scale: scale }));
}
}
//# sourceMappingURL=ParallelAxis.js.map