{"version":3,"file":"useMultiHeader.mjs","sources":["../../../../components/table/hooks/useMultiHeader.ts"],"sourcesContent":["/**\n * 多级表头相关逻辑\n ** */\n\nimport { RowspanColspan } from '../type';\nimport { BaseTableColumns, ThRowspanAndColspan } from '../types';\n\n// 获取节点深度，即表头总层级\nexport function getNodeDepth(columns: BaseTableColumns, depthMap: Map<any, number>, depth = 1): number {\n  let maxDepth = depth;\n  // 树形结构递归已有较多函数上下文，此处不使用 forEach 迭代\n  for (let i = 0, len = columns.length; i < len; i++) {\n    const col = columns[i];\n    depthMap.set(col, depth);\n    if (col?.children?.length) {\n      const deep = getNodeDepth(col.children, depthMap, depth + 1);\n      if (deep > maxDepth) {\n        maxDepth = deep;\n      }\n    }\n  }\n  return maxDepth;\n}\n\n// 或当前节点的叶子结点宽度\nexport function getChildrenNodeWidth(node: BaseTableColumns[0], count = 0) {\n  let countNew = count;\n  const childrenList = node?.children || [];\n  for (let i = 0, len = childrenList.length; i < len; i++) {\n    const item = childrenList[i];\n    if (item.children) {\n      countNew = getChildrenNodeWidth(item, countNew);\n    } else {\n      countNew += 1;\n    }\n  }\n  return countNew;\n}\n\n// 获取多级表头对应的 colspan 和 rowspan，以及叶子节点\nexport function getThRowspanAndColspan(columns: BaseTableColumns) {\n  const depthMap = new Map<any, number>();\n  const columnsDepth = getNodeDepth(columns, depthMap);\n  const rowspanAndColspanMap: ThRowspanAndColspan = new Map();\n  const loop = (nodes: BaseTableColumns, leafColumns: BaseTableColumns) => {\n    for (let i = 0, len = nodes.length; i < len; i++) {\n      const col = nodes[i];\n      const rowspan = col.children ? 1 : columnsDepth - depthMap.get(col) + 1;\n      const colspan = col.children ? getChildrenNodeWidth(col) : 1;\n      // 避免存在 rowspan 或者 colspan 空属性\n      const span: RowspanColspan = {};\n      rowspan > 1 && (span.rowspan = rowspan);\n      colspan > 1 && (span.colspan = colspan);\n      rowspanAndColspanMap.set(col, span);\n      if (col?.children?.length) {\n        loop(col.children, leafColumns);\n      } else {\n        leafColumns.push(col);\n      }\n    }\n  };\n  const leafColumns: BaseTableColumns = [];\n  loop(columns, leafColumns);\n  return { rowspanAndColspanMap, leafColumns };\n}\n\n// 表头渲染所需的二维数据\nexport function getThList(columns: BaseTableColumns): Array<BaseTableColumns> {\n  const loop = (nodes: BaseTableColumns, thRows: Array<BaseTableColumns>) => {\n    let thRowData: BaseTableColumns = [];\n    let children: BaseTableColumns = [];\n    for (let i = 0, len = nodes.length; i < len; i++) {\n      const node = nodes[i];\n      const thList = [node];\n      thRowData = thRowData.concat(thList);\n      if (node?.children?.length) {\n        children = children.concat(node.children);\n      }\n    }\n    if (children?.length) {\n      loop(children, thRows);\n    }\n    thRows.push(thRowData);\n    return thRowData;\n  };\n  let list: Array<BaseTableColumns> = [];\n  loop(columns, list);\n  list = list.reverse();\n  return list;\n}\n"],"names":["getNodeDepth","columns","depthMap","depth","arguments","length","undefined","maxDepth","i","len","_col$children","col","set","children","deep","getChildrenNodeWidth","node","count","countNew","childrenList","item","getThRowspanAndColspan","Map","columnsDepth","rowspanAndColspanMap","loop","nodes","leafColumns","_col$children2","rowspan","get","colspan","span","push","getThList","thRows","_children","thRowData","_node$children","thList","concat","list","reverse"],"mappings":"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"}