import type { ScaleLinear } from 'd3-scale'; import { memo, useRef } from 'react'; import { useLinearPrimaryTicks } from 'react-d3-utils'; import HorizontalAxis from './HorizontalAxis.js'; import VerticalAxis from './VerticalAxis.js'; import type { AxisChildProps } from './types.js'; interface LinearAxisProps extends AxisChildProps { scale: ScaleLinear; } function LinearAxis(props: LinearAxisProps) { const { position, tickLabelFormat, scale, ...otherProps } = props; const axisRef = useRef(null); const direction = position === 'left' || position === 'right' ? 'vertical' : 'horizontal'; const { ticks: primaryTicks } = useLinearPrimaryTicks( scale, direction, axisRef, { tickFormat: tickLabelFormat, }, ); const AxisComponent = direction === 'vertical' ? VerticalAxis : HorizontalAxis; return ( ); } export default memo(LinearAxis);