import { ref } from 'vue'

export function usePositiveDecimal(defaultPlaces = 2) {
  // 实时过滤（返回过滤后的字符串）
  const filterInput = (value, decimalPlaces = defaultPlaces) => {
    if (value === undefined || value === null) return ''
    let str = String(value)
    // 1. 只保留数字和小数点
    str = str.replace(/[^\d.]/g, '')
    // 2. 限制只有一个小数点
    const parts = str.split('.')
    if (parts.length > 2) {
      str = parts[0] + '.' + parts.slice(1).join('')
    }
    // 3. 限制小数位数
    if (parts.length === 2 && parts[1].length > decimalPlaces) {
      str = parts[0] + '.' + parts[1].slice(0, decimalPlaces)
    }
    return str
  }

  // 失焦时格式化（补零 / 截断）
  const formatBlur = (value, decimalPlaces = defaultPlaces) => {
    if (value === '' || value === null || value === undefined) {
      return ''
    }
    let num = parseFloat(value)
    if (isNaN(num) || num < 0) {
      return ''
    }
    return num.toFixed(decimalPlaces)
  }

  return { filterInput, formatBlur }
}
