{"version":3,"file":"utils.mjs","sources":["../../../../../../packages/components/table/src/utils.ts"],"sourcesContent":["import { isMeaningful } from \"@xplus/utils/utils\";\nimport type { ColumnItem, ColumnOption, ColumnItemOption } from \"./table\";\n\n/** 有 default header footer  几种注册插槽 */\nconst slotTypes = [\n  \"default\",\n  \"content\",\n  \"header\",\n  \"title\",\n  \"footer\",\n  \"checkbox\",\n];\n/** 获取插槽 */\nexport const getSlots = (columns: ColumnItem[]) =>\n  columns\n    .filter((v) => v.slots)\n    .map((v) => v.slots)\n    .map((v) => {\n      return Object.keys(v as Record<string, string>)\n        .map((i) => (slotTypes.includes(i) ? v[i] : null))\n        .filter((v) => v);\n    })\n    .flat();\n\n/**\n * 处理后缀 柯里化 TODO: 根据需求扩展更多\n * @param {String} symbol '后缀的标识'\n */\nexport const handleSuffix = (symbol: string) => {\n  return function ({ cellValue }) {\n    return isMeaningful(cellValue) ? `${cellValue}${symbol}` : \"\";\n  };\n};\n/**\n * 处理前缀 柯里化 TODO: 根据需求扩展更多\n * 如果标识为currencySymbol和确定要格式化金额\n * @param {String} symbol '后缀的标识'\n * @param {String} amount '金额标识'\n */\nexport const handlePrefix = (symbol: string, amount?: string) => {\n  return function ({ cellValue, row }) {\n    if (!isMeaningful(cellValue)) return \"\";\n    if (symbol === \"currencySymbol\" || amount) {\n      cellValue = handleAmount(cellValue);\n    }\n    return `${row[symbol]}${cellValue}`;\n  };\n};\n\n/** 处理默认值 */\nexport const handleDefaultShow = () => {\n  return function ({ cellValue }) {\n    return isMeaningful(cellValue) ? cellValue : \"-\";\n  };\n};\n/**\n * 处理枚举 柯里化\n * @param {Array} options '枚举的项列表'\n */\nexport const handleEnum = (options: ColumnOption) => {\n  return function ({ cellValue }) {\n    if (!isMeaningful(cellValue)) return \"-\";\n    options = typeof options === \"function\" ? options() : options;\n    const element = (options as ColumnItemOption[]).find(\n      (v) => v.id === cellValue\n    );\n    return element ? element.text : cellValue;\n  };\n};\n/**\n * 格式化数据\n *\n * @param { number} num - 要格式化的数据\n * @param { number} digits - 小数点后数字的个数 默认为2\n * @returns number\n */\nexport const toFixed = (num: number, digits = 2) => {\n  if (typeof num === \"number\" && isNaN(num)) return null;\n  return Number.parseFloat(num.toString()).toFixed(digits);\n};\n// 金额  参数：数值、保留几位小数\nexport function handleAmount(val: number, num = 2) {\n  const result = toFixed(val, num);\n  if (!result) {\n    return val;\n  }\n  const thousandResult = amountThousandFormat(result);\n  const arr = thousandResult.split(\".\");\n  if (arr.length === 2) {\n    return arr[1].length >= 2 ? thousandResult : `${thousandResult}0`;\n  } else {\n    return `${thousandResult}.00`;\n  }\n}\n// 金额千分位格式化\nfunction amountThousandFormat(num) {\n  return num.toString().replace(/\\d+/, (n) => {\n    return n.replace(/(\\d)(?=(\\d{3})+$)/g, ($1) => `${$1},`);\n  });\n}\n\n/** * 处理内容的格式化 */\nexport const handleFormatter = (columns: ColumnItem[]) => {\n  columns.forEach((v) => {\n    if (v.suffix) {\n      v.formatter = handleSuffix(v.suffix);\n    }\n    if (v.prefix) {\n      v.formatter = handlePrefix(v.prefix);\n    }\n    // 没有前缀 后缀 插槽 和已有格式化 才取处理默认值\n    if (!v.suffix && !v.prefix && !v.slots && !v.formatter && !v.noFormat) {\n      v.formatter = handleDefaultShow();\n    }\n    if (v.options) {\n      v.formatter = handleEnum(v.options);\n    }\n  });\n  return columns;\n};\n"],"names":[],"mappings":"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"}