{"version":3,"file":"format.mjs","sources":["../../../../../packages/utils/format.ts"],"sourcesContent":["import { addUnit, isDef } from '@xzx-design/utils'\n\nimport type { CSSProperties } from 'vue'\nimport type { Numeric } from '@xzx-design/utils'\n\nfunction trimExtraChar(value: string, char: string, regExp: RegExp) {\n  const index = value.indexOf(char)\n\n  if (index === -1) {\n    return value\n  }\n\n  if (char === '-' && index !== 0) {\n    return value.slice(0, index)\n  }\n\n  return value.slice(0, index + 1) + value.slice(index).replace(regExp, '')\n}\n\n/**\n * 格式化数字\n * @param value\n * @param allowDot 是否允许小数点\n * @param allowMinus 是否允许负号\n * @param allowLeadingZero 是否允许前导零 例如 0123 -> 123, 0000.123 -> 0.123\n * @param decimalPlaces 小数位数\n * @returns value\n */\nexport function formatNumber(\n  value: string,\n  allowDot = true,\n  allowMinus = true,\n  allowLeadingZero = false,\n  decimalPlaces = -1\n) {\n  if (allowDot) {\n    value = trimExtraChar(value, '.', /\\./g)\n  } else {\n    value = value.split('.')[0]\n  }\n\n  if (allowMinus) {\n    value = trimExtraChar(value, '-', /-/g)\n  } else {\n    value = value.replace(/-/, '')\n  }\n\n  if (decimalPlaces > 0 && value.split('.')[1]) {\n    value = `${value.split('.')[0]}.${value\n      .split('.')[1]\n      ?.slice(0, decimalPlaces)}`\n  }\n\n  const regExp = allowDot ? /[^-0-9.]/g : /[^-0-9]/g\n  value = value.replace(regExp, '')\n\n  // 处理前导零\n  if (!allowLeadingZero) {\n    const parts = value.split('.')\n    parts[0] = parts[0].replace(/^0+(?=\\d)/, '') // 去除整数部分的前导零\n    value = parts.join('.')\n  }\n\n  return value\n}\n\nexport function getZIndexStyle(zIndex?: Numeric) {\n  const style: CSSProperties = {}\n  if (zIndex !== undefined) {\n    style.zIndex = +zIndex\n  }\n  return style\n}\n\nexport function getSizeStyle(\n  originSize?: Numeric | Numeric[]\n): CSSProperties | undefined {\n  if (isDef(originSize)) {\n    if (Array.isArray(originSize)) {\n      return {\n        width: addUnit(originSize[0]),\n        height: addUnit(originSize[1]),\n      }\n    }\n    const size = addUnit(originSize)\n    return {\n      width: size,\n      height: size,\n    }\n  }\n}\n\nconst camelizeRE = /-(\\w)/g\n\nexport const camelizeX = (str: string): string =>\n  str.replace(camelizeRE, (_, c) => c.toUpperCase())\n\nexport function padZero(num: Numeric, targetLength = 2): string {\n  let str = `${num}`\n\n  while (str.length < targetLength) {\n    str = `0${str}`\n  }\n\n  return str\n}\n"],"names":[],"mappings":"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"}