import {
  FONT_SIZE_CONVERSION_RATIO_PX_TO_PT,
  FONT_SIZE_CONVERSION_RATIO_REMS_TO_PX
} from './fontSizeRatios';

export const toPt = (value: string | number) => {
  if (!value) {
    return '';
  }
  if (typeof value === 'string') {
    if (value.indexOf('rem') >= 0) {
      return `${parseFloat(value) * FONT_SIZE_CONVERSION_RATIO_REMS_TO_PX}pt`;
    }
    if (value.indexOf('px') >= 0) {
      return `${parseFloat(value) * FONT_SIZE_CONVERSION_RATIO_PX_TO_PT}pt`;
    }

    if (value.indexOf('pt') >= 0) {
      return `${parseFloat(value) * FONT_SIZE_CONVERSION_RATIO_PX_TO_PT}pt`;
    }

    if (value.indexOf('sp') >= 0) {
      return `${parseFloat(value)}sp`;
    }

    if (isNaN(parseFloat(value))) {
      return `0pt`;
    }
    return `${parseFloat(value) * FONT_SIZE_CONVERSION_RATIO_PX_TO_PT}pt`;
  }

  if (typeof value === 'number') {
    return `${value * FONT_SIZE_CONVERSION_RATIO_PX_TO_PT}pt`;
  }
  return value;
};
