{"version":3,"file":"numberUtil.cjs","sources":["../../../../../../../packages/components/input-number/src/utils/numberUtil.ts"],"sourcesContent":["import { supportBigInt } from './supportUtil';\n\n/**\n * Format string number to readable number\n */\nexport function trimNumber(numStr: string) {\n  let str = numStr.trim();\n\n  let negative = str.startsWith('-');\n\n  if (negative)\n    str = str.slice(1);\n\n  str = str\n    // Remove decimal 0. `1.000` => `1.`, `1.100` => `1.1`\n    .replace(/(\\.\\d*[^0])0*$/, '$1')\n    // Remove useless decimal. `1.` => `1`\n    .replace(/\\.0*$/, '')\n    // Remove integer 0. `0001` => `1`, 000.1' => `.1`\n    .replace(/^0+/, '');\n\n  if (str.startsWith('.'))\n    str = `0${str}`;\n\n  const trimStr = str || '0';\n  const splitNumber = trimStr.split('.');\n\n  const integerStr = splitNumber[0] || '0';\n  const decimalStr = splitNumber[1] || '0';\n\n  if (integerStr === '0' && decimalStr === '0')\n    negative = false;\n\n  const negativeStr = negative ? '-' : '';\n\n  return {\n    negative,\n    negativeStr,\n    trimStr,\n    integerStr,\n    decimalStr,\n    fullStr: `${negativeStr}${trimStr}`,\n  };\n}\n\nexport function isE(number: string | number) {\n  const str = String(number);\n\n  return !Number.isNaN(Number(str)) && str.includes('e');\n}\n\n/**\n * [Legacy] Convert 1e-9 to 0.000000001.\n * This may lose some precision if user really want 1e-9.\n */\nexport function getNumberPrecision(number: string | number) {\n  const numStr = String(number);\n\n  if (isE(number)) {\n    let precision = Number(numStr.slice(numStr.indexOf('e-') + 2));\n\n    const decimalMatch = numStr.match(/\\.(\\d+)/);\n    if (decimalMatch?.[1])\n      precision += decimalMatch[1].length;\n\n    return precision;\n  }\n\n  return numStr.includes('.') && validateNumber(numStr)\n    ? numStr.length - numStr.indexOf('.') - 1\n    : 0;\n}\n\n/**\n * Convert number (includes scientific notation) to -xxx.yyy format\n */\nexport function num2str(number: number): string {\n  let numStr = String(number);\n  if (isE(number)) {\n    if (number > Number.MAX_SAFE_INTEGER)\n      return String(supportBigInt() ? BigInt(number).toString() : Number.MAX_SAFE_INTEGER);\n\n    if (number < Number.MIN_SAFE_INTEGER)\n      return String(supportBigInt() ? BigInt(number).toString() : Number.MIN_SAFE_INTEGER);\n\n    numStr = number.toFixed(getNumberPrecision(numStr));\n  }\n\n  return trimNumber(numStr).fullStr;\n}\n\nexport function validateNumber(num: string | number) {\n  if (typeof num === 'number')\n    return !Number.isNaN(num);\n\n  // Empty\n  if (!num)\n    return false;\n\n  return (\n    // Normal type: 11.28\n    /^\\s*-?\\d+(\\.\\d+)?\\s*$/.test(num)\n    // Pre-number: 1.\n    || /^\\s*-?\\d+\\.\\s*$/.test(num)\n    // Post-number: .1\n    || /^\\s*-?\\.\\d+\\s*$/.test(num)\n  );\n}\n"],"names":["supportBigInt"],"mappings":"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"}