{"version":3,"file":"index.mjs","sources":["../../../src/table/utils/index.ts"],"sourcesContent":["import { isFunction, get, isObject } from 'lodash-es';\nimport { CellData, RowClassNameParams, TableColumnClassName, TableRowData, TdBaseTableProps } from '../type';\nimport { ClassName, HTMLElementAttributes } from '../../common';\nimport { SkipSpansValue } from '../hooks/useRowspanAndColspan';\n\nexport function toString(obj: any): string {\n  return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();\n}\n\nexport function debounce<T = any>(fn: Function, delay = 200): () => void {\n  let timer: ReturnType<typeof setTimeout>;\n  return function newFn(this: T, ...args: Array<any>): void {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const context = this;\n    clearTimeout(timer);\n    timer = setTimeout(() => {\n      fn.apply(context, args);\n    }, delay);\n  };\n}\n\nexport interface FormatRowAttributesParams {\n  row: TableRowData;\n  rowIndex: number;\n  type: 'body' | 'foot';\n}\n\n// 行属性\nexport function formatRowAttributes(attributes: TdBaseTableProps['rowAttributes'], params: FormatRowAttributesParams) {\n  if (!attributes) return undefined;\n  const attrList = attributes instanceof Array ? attributes : [attributes];\n  let result: HTMLElementAttributes = {};\n  for (let i = 0; i < attrList.length; i++) {\n    const attrItem = attrList[i];\n    if (!attrItem) continue;\n    const attrProperty = isFunction(attrItem) ? attrItem(params) : attrItem;\n    result =\n      attrProperty instanceof Array ? formatRowAttributes(attrProperty, params) : Object.assign(result, attrProperty);\n  }\n  return result;\n}\n\n// 行类名，['A', 'B']，[() => 'A', () => 'B']\nexport function formatRowClassNames(\n  rowClassNames: TdBaseTableProps['rowClassName'],\n  params: RowClassNameParams<TableRowData>,\n  rowKey: string,\n) {\n  const rowClassList = rowClassNames instanceof Array ? rowClassNames : [rowClassNames];\n  const { row, rowIndex } = params;\n  // 自定义行类名\n  let customClasses: ClassName = [];\n  for (let i = 0, len = rowClassList.length; i < len; i++) {\n    const rName = rowClassList[i];\n    let tClass = isFunction(rName) ? rName(params) : rName;\n    if (isObject(tClass) && !(tClass instanceof Array)) {\n      // TODO: 这里其实是两点原因导致的\n      // 1. isObject(tClass) && !(tClass instanceof Array) 直接用 isPlainObject 就可以了吧，或者 tClass && typeof tClass === 'object'\n      // 2. lodash-es 类型不全\n      // 根据下标设置行类名\n      (tClass as Record<string, any>)[rowIndex] && (tClass = (tClass as Record<string, any>)[rowIndex]);\n      // 根据行唯一标识设置行类名\n      const rowId = get(row, rowKey || 'id');\n      tClass[rowId] && (tClass = tClass[rowId]);\n    } else if (tClass instanceof Array) {\n      tClass = formatRowClassNames(tClass, params, rowKey);\n    }\n    customClasses = customClasses.concat(tClass);\n  }\n  return customClasses;\n}\n\nexport function formatClassNames(\n  classNames: TableColumnClassName<TableRowData> | TableColumnClassName<TableRowData>[],\n  params: CellData<TableRowData>,\n) {\n  const classes = classNames instanceof Array ? classNames : [classNames];\n  const arr: any[] = [];\n  for (let i = 0, len = classes.length; i < len; i++) {\n    const cls = classes[i];\n    if (isFunction(cls)) {\n      arr.push(cls(params));\n    } else {\n      arr.push(cls);\n    }\n  }\n  return arr;\n}\n\nexport const INNER_PRE_NAME = '@@inner-';\n\n// 多级表头，列配置场景，获取 currentRow\nexport function getCurrentRowByKey<T extends { colKey?: string; children?: any[] }>(columns: T[], key: string): T {\n  if (!columns || !key) return;\n  const col = columns?.find((t) => t.colKey === key);\n  if (col) return col;\n  for (let i = 0, len = columns.length; i < len; i++) {\n    if (columns[i]?.children?.length) {\n      return getCurrentRowByKey(columns[i]?.children, key);\n    }\n  }\n}\n\nexport interface CellSpanResult {\n  /** 单元格的 rowspan 属性 */\n  rowspan?: number;\n  /** 单元格的 colspan 属性 */\n  colspan?: number;\n  /** 是否跳过渲染该单元格 */\n  skipped: boolean;\n}\n\n/**\n * 获取单元格合并状态\n * @param cellKey 单元格唯一标识\n * @param skipSpansMap 合并单元格映射表\n * @returns 合并单元格的结果\n */\nexport const handleCellSpan = (cellKey: string, skipSpansMap?: Map<string, SkipSpansValue>): CellSpanResult => {\n  const result: CellSpanResult = { skipped: false };\n\n  if (!skipSpansMap?.size) return result;\n\n  const spanState = skipSpansMap.get(cellKey);\n  if (!spanState) return result;\n\n  if (spanState.rowspan > 1) result.rowspan = spanState.rowspan;\n  if (spanState.colspan > 1) result.colspan = spanState.colspan;\n  if (spanState.skipped) result.skipped = true;\n\n  return result;\n};\n\n/**\n * 判断单元格是否是最后一行（合并单元格场景移除底部边框）\n */\nexport const isLastRowInSpan = (rowIndex: number, rowspan?: number, totalDataLength?: number): boolean => {\n  return !!(rowspan && totalDataLength && rowIndex + rowspan === totalDataLength);\n};\n\n/**\n * 判断单元格是否是第一列（合并单元格场景移除左边框）\n * 在合并单元格场景下，所有行的第一列都应该移除左边框\n */\nexport const isFirstColumnInSpan = (colIndex: number, rowspan?: number): boolean => {\n  return colIndex === 0;\n};\n"],"names":["toString","obj","Object","prototype","call","slice","toLowerCase","debounce","fn","delay","arguments","length","undefined","timer","newFn","_len","args","Array","_key","context","clearTimeout","setTimeout","apply","formatRowAttributes","attributes","params","attrList","result","i","attrItem","attrProperty","isFunction","assign","formatRowClassNames","rowClassNames","rowKey","rowClassList","row","rowIndex","customClasses","len","rName","tClass","isObject","rowId","get","concat","formatClassNames","classNames","classes","arr","cls","push","INNER_PRE_NAME","getCurrentRowByKey","columns","key","col","find","t","colKey","_columns$i","children","_columns$i2","handleCellSpan","cellKey","skipSpansMap","skipped","size","spanState","rowspan","colspan","isLastRowInSpan","totalDataLength","isFirstColumnInSpan","colIndex"],"mappings":"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"}