import { ChartTheme } from '@data-ui/theme';
import { Value } from 'encodable';
import XYChartLayout, { XYChartLayoutConfig } from './XYChartLayout';

export default function createXYChartLayoutWithTheme<XOutput extends Value, YOutput extends Value>(
  config: XYChartLayoutConfig<XOutput, YOutput> & {
    theme: ChartTheme;
  },
) {
  const { theme, ...rest } = config;

  return new XYChartLayout<XOutput, YOutput>({
    ...rest,
    // @ts-ignore
    xTickSize: theme.xTickStyles.length || theme.xTickStyles.tickLength,
    xTickTextStyle: theme.xTickStyles.label.bottom || theme.xTickStyles.label.top,
    // @ts-ignore
    yTickSize: theme.yTickStyles.length || theme.yTickStyles.tickLength,
    yTickTextStyle: theme.yTickStyles.label.left || theme.yTickStyles.label.right,
  });
}
