{"version":3,"file":"utils.mjs","sources":["../../../../../../packages/components/table/src/utils.ts"],"sourcesContent":["import { compose, deepClone, getProp, getUniqueId } from '../../../shared/utils'\nimport type { TableData, TableDataWithRaw, TableColumnData } from './types'\n\nexport const injectPrivatePropToTableData = (data: TableData[]) => {\n  const travel = (data: TableData[]) => {\n    const result: TableDataWithRaw[] = []\n    for (const _record of data) {\n      const record: TableDataWithRaw = {\n        raw: _record,\n        disabled: _record.disabled,\n        expand: _record.expand,\n        isLeaf: _record.isLeaf\n      }\n      if (_record.children) {\n        record.isLeaf = false\n        record.children = travel(_record.children)\n      } else {\n        record.isLeaf = true\n      }\n      record.hasSubtree = false\n\n      result.push(record)\n    }\n    return result\n  }\n\n  return travel(data ?? [])\n}\n\n// 把columns按fixed left right排序\nexport const splitColumns = (columns: TableColumnData[]) => {\n  const normal: TableColumnData[] = []\n  const left: TableColumnData[] = []\n  const right: TableColumnData[] = []\n  columns.forEach((column) => {\n    if (column.fixed === 'left') {\n      left.push(column)\n      return\n    }\n    if (column.fixed === 'right') {\n      right.push(column)\n      return\n    }\n    normal.push(column)\n  })\n\n  return [...left, ...normal, ...right]\n}\n\n// 克隆column 添加一些属性\nconst cloneColumnAddProp = (columns: TableColumnData[]) => {\n  return columns.map((column) => {\n    const _column = deepClone(column)\n    _column.hidden = _column.hidden ?? false\n    _column.disabled = _column.disabled ?? false\n    _column.checked = !_column.hidden\n    _column.width = _column.width ?? ''\n    _column.key = _column.key ?? getUniqueId()\n    return _column\n  })\n}\n\nconst transformColumns = (columns: TableColumnData[]) => {\n  return compose(cloneColumnAddProp)(columns)\n}\n\nexport const injectPrivatePropToTableColumnData = (columns: TableColumnData[]) => {\n  const _columns = transformColumns(columns)\n  const dataColumns: TableColumnData[] = _columns\n  const groupColumns: TableColumnData[][] = [_columns]\n\n  return {\n    dataColumns,\n    groupColumns\n  }\n}\n\nexport const genSortFn = (prop: any, order: 'ascend' | 'descend' | '') => {\n  const compare = (a: TableData, b: TableData, reserve: number) => {\n    const v1 = getProp(a.raw, prop)\n    const v2 = getProp(b.raw, prop)\n\n    if (typeof v1 === 'string' && typeof v2 === 'string') {\n      if (v1.length > v2.length) {\n        return 1 * reserve\n      }\n      for (let i = 0; i < v1.length; i++) {\n        if (v1[i] < v2[i]) {\n          return -1 * reserve\n        }\n        if (v1[i] > v2[i]) {\n          return 1 * reserve\n        }\n      }\n      return 0\n    }\n\n    return (v1 - v2) * reserve\n  }\n\n  let sortFn\n  if (!prop) {\n    sortFn = (data: TableData[]) => data\n  }\n  if (order === 'ascend') {\n    sortFn = (data: TableData[]) => data.sort((a, b) => compare(a, b, 1))\n  }\n  if (order === 'descend') {\n    sortFn = (data: TableData[]) => data.sort((a, b) => compare(a, b, -1))\n  }\n  if (!order) {\n    sortFn = (data: TableData[]) => data\n  }\n  return sortFn\n}\n"],"names":["data"],"mappings":"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"}