{"version":3,"file":"styles-helper.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/table-body/styles-helper.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { isArray, isFunction, isObject, isString } from '@element-plus/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"],"mappings":";;;;;;;AAcA,SAAS,UAAgC,OAAmC;CAC1E,MAAM,SAAS,OAAO,oBAAoB;CAC1C,MAAM,KAAK,aAAa,QAAQ;CAEhC,MAAM,eAAe,KAAQ,aAAqB;EAChD,MAAM,WAAW,QAAQ,MAAM;AAC/B,MAAI,WAAW,SAAS,CACtB,QAAO,SAAS,KAAK,MAAM;GACzB;GACA;GACD,CAAC;AAEJ,SAAO,YAAY;;CAGrB,MAAM,eAAe,KAAQ,UAAkB,iBAAyB;EACtE,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;AAC7B,MACE,QAAQ,MAAM,uBACd,QAAQ,MAAM,OAAO,OAAO,WAAW,MAEvC,SAAQ,KAAK,cAAc;AAE7B,MAAI,MAAM,UAAU,eAAe,MAAM,EACvC,SAAQ,KAAK,GAAG,GAAG,OAAO,UAAU,CAAC;EAEvC,MAAM,eAAe,QAAQ,MAAM;AACnC,MAAI,SAAS,aAAa,CACxB,SAAQ,KAAK,aAAa;WACjB,WAAW,aAAa,CACjC,SAAQ,KACN,aAAa,KAAK,MAAM;GACtB;GACA;GACD,CAAC,CACH;AAEH,SAAO;;CAGT,MAAM,gBACJ,UACA,aACA,KACA,WACG;EACH,MAAM,YAAY,QAAQ,MAAM;EAChC,IAAI,aAAa,aAAa,EAAE;AAChC,MAAI,WAAW,UAAU,CACvB,cAAa,UAAU,KAAK,MAAM;GAChC;GACA;GACA;GACA;GACD,CAAC;EAEJ,MAAM,aAAa,qBACjB,aACA,OAAO,OACP,MAAM,MACP;AACD,iBAAe,YAAY,OAAO;AAClC,iBAAe,YAAY,QAAQ;AACnC,SAAO,OAAO,OAAO,EAAE,EAAE,YAAY,WAAW;;CAGlD,MAAM,gBACJ,UACA,aACA,KACA,QACA,WACG;EACH,MAAM,eAAe,qBACnB,GAAG,GAAG,EACN,aACA,OAAO,OACP,MAAM,OACN,QACA,OACD;EACD,MAAM,UAAU;GAAC,OAAO;GAAI,OAAO;GAAO,OAAO;GAAW,GAAG;GAAa;EAC5E,MAAM,gBAAgB,QAAQ,MAAM;AACpC,MAAI,SAAS,cAAc,CACzB,SAAQ,KAAK,cAAc;WAClB,WAAW,cAAc,CAClC,SAAQ,KACN,cAAc,KAAK,MAAM;GACvB;GACA;GACA;GACA;GACD,CAAC,CACH;AAEH,UAAQ,KAAK,GAAG,EAAE,OAAO,CAAC;AAC1B,SAAO,QAAQ,QAAQ,cAAc,QAAQ,UAAU,CAAC,CAAC,KAAK,IAAI;;CAEpE,MAAM,WACJ,KACA,QACA,UACA,gBACG;EACH,IAAI,UAAU;EACd,IAAI,UAAU;EACd,MAAM,KAAK,QAAQ,MAAM;AACzB,MAAI,WAAW,GAAG,EAAE;GAClB,MAAM,SAAS,GAAG;IAChB;IACA;IACA;IACA;IACD,CAAC;AACF,OAAI,QAAQ,OAAO,EAAE;AACnB,cAAU,OAAO;AACjB,cAAU,OAAO;cACR,SAAS,OAAO,EAAE;AAC3B,cAAU,OAAO;AACjB,cAAU,OAAO;;;AAGrB,SAAO;GAAE;GAAS;GAAS;;CAE7B,MAAM,uBACJ,SACA,SACA,UACW;AACX,MAAI,UAAU,EACZ,QAAO,QAAQ,OAAO;EAExB,MAAM,WAAW,QACd,KAAK,EAAE,WAAW,YAAY,aAAa,MAAM,CACjD,MAAM,OAAO,QAAQ,QAAQ;AAChC,SAAO,OACL,SAAS,QAAQ,KAAK,UAAU,OAAO,IAAI,GAAG,OAAO,MAAM,EAAE,GAAG,CACjE;;AAGH,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACD"}