// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only

import * as log from '../../logging/log';
import { getHSL } from './color';
import { missingCaseError } from '../../util/missingCaseError';

export enum TextStyle {
  Regular = 'Regular',
  Highlight = 'Highlight',
  Outline = 'Outline',
}

export function getTextStyleAttributes(
  textStyle: TextStyle,
  hueSliderValue: number
): {
  fill: string;
  stroke?: string;
  strokeWidth: number;
  textBackgroundColor: string;
} {
  const color = getHSL(hueSliderValue);
  switch (textStyle) {
    case TextStyle.Regular:
      return { fill: color, strokeWidth: 0, textBackgroundColor: '' };
    case TextStyle.Highlight:
      return {
        fill: hueSliderValue <= 5 ? '#000' : '#fff',
        strokeWidth: 0,
        textBackgroundColor: color,
      };
    case TextStyle.Outline:
      return {
        fill: hueSliderValue <= 5 ? '#000' : '#fff',
        stroke: color,
        strokeWidth: 2,
        textBackgroundColor: '',
      };
    default:
      log.error(missingCaseError(textStyle));
      return getTextStyleAttributes(TextStyle.Regular, hueSliderValue);
  }
}
