{"version":3,"file":"utils-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-header/utils-helper.ts"],"sourcesContent":["import { getCurrentInstance, computed } from 'vue'\n\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { Table } from '../table/defaults'\nimport type { TableHeaderProps } from '.'\n\nconst getAllColumns = <T>(\n  columns: TableColumnCtx<T>[]\n): TableColumnCtx<T>[] => {\n  const result = []\n  columns.forEach((column) => {\n    if (column.children) {\n      result.push(column)\n      // eslint-disable-next-line prefer-spread\n      result.push.apply(result, getAllColumns(column.children))\n    } else {\n      result.push(column)\n    }\n  })\n  return result\n}\n\nconst convertToRows = <T>(\n  originColumns: TableColumnCtx<T>[]\n): TableColumnCtx<T>[] => {\n  let maxLevel = 1\n  const traverse = (column: TableColumnCtx<T>, parent: TableColumnCtx<T>) => {\n    if (parent) {\n      column.level = parent.level + 1\n      if (maxLevel < column.level) {\n        maxLevel = column.level\n      }\n    }\n    if (column.children) {\n      let colSpan = 0\n      column.children.forEach((subColumn) => {\n        traverse(subColumn, column)\n        colSpan += subColumn.colSpan\n      })\n      column.colSpan = colSpan\n    } else {\n      column.colSpan = 1\n    }\n  }\n\n  originColumns.forEach((column) => {\n    column.level = 1\n    traverse(column, undefined)\n  })\n\n  const rows = []\n  for (let i = 0; i < maxLevel; i++) {\n    rows.push([])\n  }\n\n  const allColumns = getAllColumns(originColumns)\n\n  allColumns.forEach((column) => {\n    if (!column.children) {\n      column.rowSpan = maxLevel - column.level + 1\n    } else {\n      column.rowSpan = 1\n    }\n    rows[column.level - 1].push(column)\n  })\n\n  return rows\n}\n\nfunction useUtils<T>(props: TableHeaderProps<T>) {\n  const instance = getCurrentInstance()\n  const parent = instance.parent as Table<T>\n  const columnRows = computed(() => {\n    return convertToRows(props.store.states.originColumns.value)\n  })\n  const isGroup = computed(() => {\n    const result = columnRows.value.length > 1\n    if (result) parent.state.isGroup.value = true\n    return result\n  })\n  const toggleAllSelection = (event: Event) => {\n    event.stopPropagation()\n    parent.store.commit('toggleAllSelection')\n  }\n  return {\n    isGroup,\n    toggleAllSelection,\n    columnRows,\n  }\n}\n\nexport default useUtils\n"],"names":[],"mappings":";;AAMA,MAAM,gBAAgB,CACpB,YACwB;AACxB,QAAM,SAAS;AACf,UAAQ,QAAQ,CAAC,WAAW;AAC1B,QAAI,OAAO,UAAU;AACnB,aAAO,KAAK;AAEZ,aAAO,KAAK,MAAM,QAAQ,cAAc,OAAO;AAAA,WAC1C;AACL,aAAO,KAAK;AAAA;AAAA;AAGhB,SAAO;AAAA;AAGT,MAAM,gBAAgB,CACpB,kBACwB;AACxB,MAAI,WAAW;AACf,QAAM,WAAW,CAAC,QAA2B,WAA8B;AACzE,QAAI,QAAQ;AACV,aAAO,QAAQ,OAAO,QAAQ;AAC9B,UAAI,WAAW,OAAO,OAAO;AAC3B,mBAAW,OAAO;AAAA;AAAA;AAGtB,QAAI,OAAO,UAAU;AACnB,UAAI,UAAU;AACd,aAAO,SAAS,QAAQ,CAAC,cAAc;AACrC,iBAAS,WAAW;AACpB,mBAAW,UAAU;AAAA;AAEvB,aAAO,UAAU;AAAA,WACZ;AACL,aAAO,UAAU;AAAA;AAAA;AAIrB,gBAAc,QAAQ,CAAC,WAAW;AAChC,WAAO,QAAQ;AACf,aAAS,QAAQ;AAAA;AAGnB,QAAM,OAAO;AACb,WAAS,IAAI,GAAG,IAAI,UAAU,KAAK;AACjC,SAAK,KAAK;AAAA;AAGZ,QAAM,aAAa,cAAc;AAEjC,aAAW,QAAQ,CAAC,WAAW;AAC7B,QAAI,CAAC,OAAO,UAAU;AACpB,aAAO,UAAU,WAAW,OAAO,QAAQ;AAAA,WACtC;AACL,aAAO,UAAU;AAAA;AAEnB,SAAK,OAAO,QAAQ,GAAG,KAAK;AAAA;AAG9B,SAAO;AAAA;AAGT,kBAAqB,OAA4B;AAC/C,QAAM,WAAW;AACjB,QAAM,SAAS,SAAS;AACxB,QAAM,aAAa,SAAS,MAAM;AAChC,WAAO,cAAc,MAAM,MAAM,OAAO,cAAc;AAAA;AAExD,QAAM,UAAU,SAAS,MAAM;AAC7B,UAAM,SAAS,WAAW,MAAM,SAAS;AACzC,QAAI;AAAQ,aAAO,MAAM,QAAQ,QAAQ;AACzC,WAAO;AAAA;AAET,QAAM,qBAAqB,CAAC,UAAiB;AAC3C,UAAM;AACN,WAAO,MAAM,OAAO;AAAA;AAEtB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA;AAAA;;;;"}