{"version":3,"file":"styles-helper.mjs","sources":["../../../../../../../../packages/components/table/src/table-body/styles-helper.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { useNamespace } from '@hd-front-end/hooks'\nimport { isArray, isFunction, isObject, isString } from '@hd-front-end/utils'\nimport {\n  ensurePosition,\n  getFixedColumnOffset,\n  getFixedColumnsClass,\n} from '../util'\nimport { TABLE_INJECTION_KEY } from '../tokens'\n\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { TableBodyProps } from './defaults'\nimport type { DefaultRow, Table } from '../table/defaults'\n\nfunction useStyles<T extends DefaultRow>(props: Partial<TableBodyProps<T>>) {\n  const parent = inject(TABLE_INJECTION_KEY) as Table<T>\n  const ns = useNamespace('table')\n\n  const getRowStyle = (row: T, rowIndex: number) => {\n    const rowStyle = parent?.props.rowStyle\n    if (isFunction(rowStyle)) {\n      return rowStyle.call(null, {\n        row,\n        rowIndex,\n      })\n    }\n    return rowStyle || null\n  }\n\n  const getRowClass = (row: T, rowIndex: number, displayIndex: number) => {\n    const classes = [ns.e('row')]\n    if (\n      parent?.props.highlightCurrentRow &&\n      row === props.store?.states.currentRow.value\n    ) {\n      classes.push('current-row')\n    }\n    if (props.stripe && displayIndex % 2 === 1) {\n      classes.push(ns.em('row', 'striped'))\n    }\n    const rowClassName = parent?.props.rowClassName\n    if (isString(rowClassName)) {\n      classes.push(rowClassName)\n    } else if (isFunction(rowClassName)) {\n      classes.push(\n        rowClassName.call(null, {\n          row,\n          rowIndex,\n        })\n      )\n    }\n    return classes\n  }\n\n  const getCellStyle = (\n    rowIndex: number,\n    columnIndex: number,\n    row: T,\n    column: TableColumnCtx<T>\n  ) => {\n    const cellStyle = parent?.props.cellStyle\n    let cellStyles = cellStyle ?? {}\n    if (isFunction(cellStyle)) {\n      cellStyles = cellStyle.call(null, {\n        rowIndex,\n        columnIndex,\n        row,\n        column,\n      })\n    }\n    const fixedStyle = getFixedColumnOffset(\n      columnIndex,\n      props?.fixed,\n      props.store\n    )\n    ensurePosition(fixedStyle, 'left')\n    ensurePosition(fixedStyle, 'right')\n    return Object.assign({}, cellStyles, fixedStyle)\n  }\n\n  const getCellClass = (\n    rowIndex: number,\n    columnIndex: number,\n    row: T,\n    column: TableColumnCtx<T>,\n    offset: number\n  ) => {\n    const fixedClasses = getFixedColumnsClass(\n      ns.b(),\n      columnIndex,\n      props?.fixed,\n      props.store,\n      undefined,\n      offset\n    )\n    const classes = [column.id, column.align, column.className, ...fixedClasses]\n    const cellClassName = parent?.props.cellClassName\n    if (isString(cellClassName)) {\n      classes.push(cellClassName)\n    } else if (isFunction(cellClassName)) {\n      classes.push(\n        cellClassName.call(null, {\n          rowIndex,\n          columnIndex,\n          row,\n          column,\n        })\n      )\n    }\n    classes.push(ns.e('cell'))\n    return classes.filter((className) => Boolean(className)).join(' ')\n  }\n  const getSpan = (\n    row: T,\n    column: TableColumnCtx<T>,\n    rowIndex: number,\n    columnIndex: number\n  ) => {\n    let rowspan = 1\n    let colspan = 1\n    const fn = parent?.props.spanMethod\n    if (isFunction(fn)) {\n      const result = fn({\n        row,\n        column,\n        rowIndex,\n        columnIndex,\n      })\n      if (isArray(result)) {\n        rowspan = result[0]\n        colspan = result[1]\n      } else if (isObject(result)) {\n        rowspan = result.rowspan\n        colspan = result.colspan\n      }\n    }\n    return { rowspan, colspan }\n  }\n  const getColspanRealWidth = (\n    columns: TableColumnCtx<T>[],\n    colspan: number,\n    index: number\n  ): number => {\n    if (colspan < 1) {\n      return columns[index].realWidth!\n    }\n    const widthArr = columns\n      .map(({ realWidth, width }) => realWidth || width)\n      .slice(index, index + colspan)\n    return Number(\n      widthArr.reduce((acc, width) => Number(acc) + Number(width), -1)\n    )\n  }\n\n  return {\n    getRowStyle,\n    getRowClass,\n    getCellStyle,\n    getCellClass,\n    getSpan,\n    getColspanRealWidth,\n  }\n}\n\nexport default useStyles\n"],"names":[],"mappings":"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"}