import { formatAmountWithOptions } from '@pisell/utils';
/**
 * 格式化指标数值
 * 
 * 支持以下格式化选项：
 * - 小数精度控制
 * - 千分位分隔符
 * - 货币符号显示
 * - 自定义格式化函数
 * - 整数时隐藏小数部分
 * 
 * @param value 数值
 * @param options 格式化选项
 * @returns 格式化后的字符串，null 时返回 null
 * 
 * @example
 * formatMetricValue(1234.56, { precision: 2, useGrouping: true })
 * // 返回: "1,234.56"
 * 
 * @example
 * formatMetricValue(1580, { 
 *   showCurrencySymbol: true, 
 *   currencySymbol: '$' 
 * })
 * // 返回: "$1580"
 * 
 * @example
 * formatMetricValue(100.00, { 
 *   precision: 2,
 *   hideDecimalForWholeNumbers: true 
 * })
 * // 返回: "100"
 */
export function formatMetricValue(value) {
  var _options$precision, _options$useGrouping, _options$showCurrency, _options$hideDecimalF;
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  // 处理空值
  if (value === null || value === undefined) {
    return null;
  }

  // 转换为数字
  var numValue = typeof value === 'string' ? parseFloat(value) : value;

  // 处理非数字
  if (isNaN(numValue)) {
    return null;
  }

  // 优先使用自定义格式化函数
  if (options.formatter) {
    return options.formatter(numValue);
  }

  // 使用 @pisell/utils 的格式化工具
  var formatted = formatAmountWithOptions(numValue, options.currencySymbol || '', {
    precision: (_options$precision = options.precision) !== null && _options$precision !== void 0 ? _options$precision : 0,
    useThousandsSeparator: (_options$useGrouping = options.useGrouping) !== null && _options$useGrouping !== void 0 ? _options$useGrouping : false,
    showCurrencySymbol: (_options$showCurrency = options.showCurrencySymbol) !== null && _options$showCurrency !== void 0 ? _options$showCurrency : false,
    hideDecimalForWholeNumbers: (_options$hideDecimalF = options.hideDecimalForWholeNumbers) !== null && _options$hideDecimalF !== void 0 ? _options$hideDecimalF : true
  });
  return String(formatted);
}