const formatter = new Intl.NumberFormat([], {
  style: "percent",
  minimumFractionDigits: 2,
  maximumFractionDigits: 4,
})

/**
 * Formats a number as a percentage
 * @param value - The value to format
 * @param isPercentageValue - Whether the value is already a percentage value (where `0` is 0%, `0.5` is 50%, `0.75` is 75%, etc). Defaults to false
 * @returns The formatted percentage in the form of a localized string
 *
 * @example
 * formatPercentage(0.5, true) // "50%"
 * formatPercentage(50) // "50%"
 */
export const formatPercentage = (
  value?: number | null,
  isPercentageValue = false
) => {
  let val = value || 0

  if (!isPercentageValue) {
    val = val / 100
  }

  return formatter.format(val)
}
