UNPKG

react-plot

Version:

Library of React components to render SVG 2D plots.

63 lines 2.27 kB
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