{"version":3,"file":"number.mjs","sources":["../../../../../../../packages/components/captcha/src/hooks/number.ts"],"sourcesContent":["export const numberRE = /^\\s*[+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?\\s*$/\n\n/**\n * 返回数字的小数位数\n *\n * @param number 指定的数字\n *\n * @returns 数字的小数位数\n */\nexport function decimalLength(number: number | string) {\n  // Get digit length of e\n  const eSplit = number.toString().split(/[eE]/)\n  const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0)\n\n  return len > 0 ? len : 0\n}\n\n/**\n * 将给定的实数保留一定的小数\n *\n * @param number 需要处理的实数\n * @param decimal 需要保留的小数\n *\n * @returns 保留小数后的值\n */\nexport function toFixed(number: number, decimal: number) {\n  if (decimal === 0) return Math.round(number)\n\n  let snum = number.toFixed(decimalLength(number))\n\n  const pointPos = snum.indexOf('.')\n\n  if (pointPos === -1) return number\n\n  const nums = snum.replace('.', '').split('')\n  const targetPos = pointPos + decimal\n  const datum = nums[targetPos]\n\n  if (!datum) return number\n\n  if (snum.charAt(targetPos + 1) === '5') {\n    snum = `${snum.slice(0, Math.max(0, targetPos + 1))}6`\n  } else {\n    snum = snum.slice(0, Math.max(0, targetPos + 2))\n  }\n\n  return Number.parseFloat(Number(snum).toFixed(decimal))\n}\n\n/**\n * 将给定的数字限定在指定的范围内\n *\n * @param number 需要限定范围的数\n * @param min 边界最小值，包含该值\n * @param max 边界最大值，包含该值\n *\n * @returns 限定在范围内的值\n */\nexport function boundRange(number: number | string, min: number, max: number) {\n  return Math.max(min, Math.min(max, Number.parseFloat(number as string)))\n}\n\n/**\n * 在给定的范围内随机一个数\n *\n * @param max 最大值\n * @param min 最小值，默认为 0\n *\n * @returns 生成的随机数\n */\nexport function random(max: number, min = 0) {\n  if (min === max) return min\n\n  if (min > max) {\n    ;[min, max] = [max, min]\n  }\n\n  return Math.random() * (max - min) + min\n}\n"],"names":[],"mappings":"AAAY,MAAC,QAAQ,GAAG,0CAA0C;AAC3D,SAAS,aAAa,CAAC,MAAM,EAAE;AACtC,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjD,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,EAAE,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B,CAAC;AACM,SAAS,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AACzC,EAAE,IAAI,OAAO,KAAK,CAAC;AACnB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9B,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,EAAE,IAAI,QAAQ,KAAK,CAAC,CAAC;AACrB,IAAI,OAAO,MAAM,CAAC;AAClB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/C,EAAE,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AACvC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,KAAK;AACZ,IAAI,OAAO,MAAM,CAAC;AAClB,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAC1C,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,GAAG,MAAM;AACT,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AACrD,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC;AACM,SAAS,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7C,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AACM,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;AACrC,EAAE,IAAI,GAAG,KAAK,GAAG;AACjB,IAAI,OAAO,GAAG,CAAC;AACf,EAAE,IAAI,GAAG,GAAG,GAAG,EAAE;AACjB,IAAI,CAAC;AACL,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3C;;;;"}