{"version":3,"file":"cascade-pro2.mjs","sources":["../../../../../../../../packages/components/cascade-pro/src/utils/cascade-pro.ts"],"sourcesContent":["import pinyin from 'js-pinyin'\nimport type { CascadeProOption } from '../types'\n\n/**\n * 获取汉字拼音首字母\n *\n * @param name\n * @param idx 第几位，默认为 0\n * @returns\n */\nexport function getLetter(name: string | undefined, idx = 0): string {\n  if (!name) return 'Z' // 无值则归属最后一个字母\n  if (name.indexOf('重庆') > -1) return 'C' // 多音字修正\n  return pinyin.getCamelChars(name)[idx]\n}\n\nexport function createGroupOptions(level: number) {\n  const cache = [] as any[]\n  for (let i = 0; i < level; i++) {\n    cache[i] = []\n  }\n  return cache as CascadeProOption[][]\n}\n\nconst DEFAULT_CONFIG = {\n  name: 'name',\n  id: 'id',\n  children: 'children',\n  pid: 'pid',\n}\n\ntype TreeHelperConfig = typeof DEFAULT_CONFIG\n\nconst getConfig = (config: Partial<TreeHelperConfig>) => Object.assign({}, DEFAULT_CONFIG, config)\n\n/**\n * 重新生成地址信息，原数据依赖于 geo.ts 中的 ProvinceCityOptions。目前只支持三级联动（省-市-区）\n *\n * @param tree 原始数据\n * @param deleteParentChildren\n * @returns\n */\n\n/**\n * 重新生成组件所需数据，默认options原数据为地址数据，依赖于 geo.ts 中的 ProvinceCityOptions。目前只支持三级联动（省-市-区）\n *\n * @param options props 中传入 options 原始数据\n * @param keyConfig\n * @param fieldLength 即 fields.length\n * @param isFirstLetterVisible\n * @returns\n */\nexport function handleOptions(\n  options: any[],\n  keyConfig,\n  fieldLength,\n  isFirstLetterVisible\n): {\n  tree: CascadeProOption[]\n  group: CascadeProOption[][]\n  list: CascadeProOption[]\n} {\n  /** 处理后的原始数据 */\n  const treeOptions: CascadeProOption[] = []\n  /** 根据 fields 分组后的数据 */\n  const groupOptions: CascadeProOption[][] = createGroupOptions(fieldLength)\n  /** 扁平化数据 */\n  const listOptions: CascadeProOption[] = [] // TODO 删掉 children 减少内存做优化\n\n  if (fieldLength <= 0)\n    return {\n      tree: treeOptions,\n      group: groupOptions,\n      list: listOptions,\n    }\n\n  /** 根据 level 创建二维数组数据，一层代表一个field */\n  let level = 0\n  /** 处理数据 */\n  const conf = getConfig(keyConfig) as TreeHelperConfig\n  const { name, id, children } = conf\n\n  function handler(\n    options: any[],\n    tree: any[],\n    group: any[],\n    list: any[],\n    pid = '',\n    idPath = '',\n    namePath = ''\n  ) {\n    for (let i = 0; i < options.length; i++) {\n      const temp = {\n        ...options[i],\n        name: `${options[i][name]}`,\n        id: `${options[i][id]}`,\n        pid: pid ? `${pid}` : '',\n        idPath: idPath ? `${idPath}-${options[i][id]}` : `${options[i][id]}`,\n        namePath: namePath ? `${namePath}-${options[i][name]}` : `${options[i][name]}`,\n        isIdSameAsOnlyOneChild:\n          options[i][children] &&\n          options[i][children].length &&\n          options[i][children].length === 1 &&\n          options[i][children][0][id] === options[i][id]\n            ? true\n            : false,\n      }\n\n      if (isFirstLetterVisible) {\n        temp['firstLetter'] = getLetter(options[i][name])\n      }\n\n      level = temp.idPath.split('-').length - 1\n\n      if (level <= fieldLength - 1) {\n        if (options[i][children] && options[i][children].length) {\n          temp['children'] = []\n          tree.push(temp)\n\n          group[level].push(temp)\n\n          list.push(temp)\n\n          handler(\n            options[i][children],\n            temp['children'],\n            group,\n            list,\n            temp.id,\n            temp.idPath || temp.id,\n            temp.namePath || temp.name\n          )\n        } else {\n          tree.push(temp)\n\n          group[level].push(temp)\n\n          list.push(temp)\n        }\n      }\n\n      if (i === options.length - 1 && level === fieldLength - 1) level = 0\n    }\n  }\n\n  handler(options, treeOptions, groupOptions, listOptions)\n\n  return {\n    tree: treeOptions,\n    group: groupOptions,\n    list: listOptions,\n  }\n}\n\nexport const DEFAULT_CASCADE_PRO_SELECT_RECORD: CascadeProOption = {\n  name: '',\n  id: '',\n  pid: '',\n  idPath: '',\n  namePath: '',\n}\n\nexport const DEFAULT_CASCADE_PRO_SELECT_RECORDS: CascadeProOption[] = [\n  DEFAULT_CASCADE_PRO_SELECT_RECORD,\n]\n\n/**\n * 后端以对象数组存储，对象中key顺序不固定，所以这里需要使用 fields 将其修改为组件内需要的数据结构\n *\n * @param defaultValue\n * @param fields\n * @returns\n */\nexport function getDefaultValue(\n  defaultValue: any[],\n  fields: string[]\n): {\n  selectRecord: CascadeProOption\n  selectRecords: CascadeProOption[]\n} {\n  if (defaultValue && defaultValue.length > 0) {\n    const selectRecords = defaultValue.map((option) => {\n      const temp: CascadeProOption = { ...option }\n      let name = ''\n      let id = ''\n      let pid = ''\n      let idPath = ''\n      let namePath = ''\n\n      for (let i = 0; i < fields.length; i++) {\n        const key = fields[i]\n        if (option[key]) {\n          name = `${option[`${key}Name`]}`\n          id = `${option[key]}`\n          idPath = idPath ? `${idPath}-${option[key]}` : `${option[key]}`\n          namePath = namePath ? `${namePath}-${option[`${key}Name`]}` : `${option[`${key}Name`]}`\n        }\n      }\n\n      const idPathSplitResult = idPath.split('-')\n      pid = idPathSplitResult[idPathSplitResult.length - 1 - 1]\n        ? idPathSplitResult[idPathSplitResult.length - 1 - 1]\n        : ''\n\n      return {\n        ...temp,\n        name,\n        id,\n        pid,\n        idPath,\n        namePath,\n      }\n    })\n    const selectRecord = selectRecords.slice(-1)[0]\n    return {\n      selectRecord,\n      selectRecords,\n    }\n  } else {\n    return {\n      selectRecord: DEFAULT_CASCADE_PRO_SELECT_RECORD,\n      selectRecords: DEFAULT_CASCADE_PRO_SELECT_RECORDS,\n    }\n  }\n}\n"],"names":[],"mappings":"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"}