import type { ImageBaseSize } from '../ImageBase/ImageBase';

const MAX_FONT_SIZE = 30;
const MAX_IMAGE_BASE_SIZE: ImageBaseSize = 96;
const RELATIVE_SIZE = MAX_FONT_SIZE / MAX_IMAGE_BASE_SIZE;

export type GetInitialsFontSizeType = (avatarSize: number) => number;

/**
 * По возможности выставляем размеры по дизайн-системе. Иначе высчитываем.
 */
export const getInitialsFontSize: GetInitialsFontSizeType = (avatarSize) => {
  if (avatarSize <= 16) {
    return 5;
  } else if (avatarSize <= 24) {
    return 8;
  } else if (avatarSize <= 32) {
    return 10;
  } else if (avatarSize <= 36) {
    return 13;
  } else if (avatarSize <= 44) {
    return 14;
  } else if (avatarSize <= 48) {
    return 17;
  } else if (avatarSize < 56) {
    return 18;
  } else if (avatarSize <= 64) {
    return 21;
  } else if (avatarSize <= 88) {
    return 26;
  } else if (avatarSize <= MAX_IMAGE_BASE_SIZE) {
    return MAX_FONT_SIZE;
  }

  const calculatedFontSize = Math.ceil(avatarSize * RELATIVE_SIZE);
  const evenFix = calculatedFontSize % 2;
  return calculatedFontSize + evenFix;
};
