import { formatNumber } from '@pisell/utils';
import { convertToPercent } from "./rangeConverter";

/**
 * 百分比格式化选项
 */

/**
 * 格式化百分比数值
 * 
 * @param value 数值
 * @param options 格式化选项
 * @returns 格式化后的百分比字符串
 * 
 * @example
 * formatPercent(85.5, { showPercentSymbol: true, precision: 1, range: [0, 100] })
 * // 返回: '85.5%'
 * 
 * @example
 * formatPercent(0.855, { showPercentSymbol: true, precision: 1, range: [0, 1] })
 * // 返回: '85.5%'
 */
export function formatPercent(value, options) {
  if (value === null || value === undefined) {
    return null;
  }
  var showPercentSymbol = options.showPercentSymbol,
    precision = options.precision,
    range = options.range;

  // 1. 范围转换（转为 0-100 百分比）
  var percentValue = convertToPercent(value, range);
  if (percentValue === null) {
    return null;
  }

  // 2. 数值格式化（精度处理）
  var formatted = formatNumber(percentValue, {
    precision: precision
  });
  if (!formatted) {
    return null;
  }

  // 3. 添加百分号（符号与数值之间无空格）
  if (showPercentSymbol) {
    return "".concat(formatted, "%");
  }
  return formatted;
}