{"version":3,"file":"styles.mjs","sources":["../../../../../../src/components/ivue-table/table-body/styles.ts"],"sourcesContent":["import { inject } from 'vue';\r\n\r\nimport {\r\n  getFixedColumnsClass,\r\n  getFixedColumnOffset,\r\n  ensurePosition,\r\n} from '../utils';\r\n\r\n// type\r\nimport type { TableBodyProps } from './defaults';\r\nimport type { TableColumnCtx } from '../table-column/defaults';\r\nimport { TableContextKey } from '../table/defaults';\r\n\r\nconst prefixCls = 'ivue-table';\r\n\r\nfunction useStyles(props: Partial<TableBodyProps>) {\r\n  // inject\r\n  const IvueTable = inject(TableContextKey);\r\n\r\n  // 行样式\r\n  const getRowStyle = (row: TableColumnCtx, rowIndex: number) => {\r\n    const rowStyle = IvueTable?.props.rowStyle;\r\n\r\n    // function\r\n    if (typeof rowStyle === 'function') {\r\n      return rowStyle.call(null, {\r\n        row,\r\n        rowIndex,\r\n      });\r\n    }\r\n\r\n    return rowStyle || null;\r\n  };\r\n\r\n  // 行样式\r\n  const getRowClass = (row: TableColumnCtx, rowIndex: number) => {\r\n    const classes = [\r\n      `${prefixCls}-row`,\r\n      {\r\n        // 斑马纹\r\n        [`${prefixCls}-row--stripe`]: props.stripe && rowIndex % 2 === 1,\r\n        // 高亮当前行\r\n        ['highlight-current-row']:\r\n          IvueTable?.props.highlightCurrentRow &&\r\n          row === props.store?.states.currentRow.value,\r\n      },\r\n    ];\r\n\r\n    // 行的 className 的回调方法，也可以使用字符串为所有行设置一个固定的 className。\r\n    const rowClassName = IvueTable?.props.rowClassName;\r\n\r\n    // 字符串\r\n    if (typeof rowClassName === 'string') {\r\n      classes.push(rowClassName);\r\n    }\r\n    // function\r\n    else if (typeof rowClassName === 'function') {\r\n      classes.push(\r\n        // 执行方法\r\n        rowClassName.call(null, {\r\n          row,\r\n          rowIndex,\r\n        })\r\n      );\r\n    }\r\n\r\n    return classes;\r\n  };\r\n\r\n  // 获取单元格样式\r\n  const getTableSpan = (\r\n    row: TableColumnCtx,\r\n    column: TableColumnCtx,\r\n    rowIndex: number,\r\n    columnIndex: number\r\n  ) => {\r\n    // 单元格可横跨的列数\r\n    let rowspan = 1;\r\n    // 单元格可横跨的列数\r\n    let colspan = 1;\r\n\r\n    const spanMethod = IvueTable?.props.spanMethod;\r\n\r\n    // 合并行或列的计算方法\r\n    if (typeof spanMethod === 'function') {\r\n      const result = spanMethod({\r\n        // 当前行\r\n        row,\r\n        // 当前列\r\n        column,\r\n        // 当前行号\r\n        rowIndex,\r\n        // 当前列号\r\n        columnIndex,\r\n      });\r\n\r\n      // 数组\r\n      if (Array.isArray(result)) {\r\n        rowspan = result[0];\r\n        colspan = result[1];\r\n      }\r\n      // 对象\r\n      else if (typeof result === 'object') {\r\n        rowspan = result.rowspan;\r\n        colspan = result.colspan;\r\n      }\r\n    }\r\n\r\n    return { rowspan, colspan };\r\n  };\r\n\r\n  // 单元格样式\r\n  const getCellClass = (\r\n    rowIndex: number,\r\n    columnIndex: number,\r\n    row: TableColumnCtx,\r\n    column: TableColumnCtx\r\n  ) => {\r\n    // 是否是嵌套的子列\r\n    const fixedClasses = column.isSubColumn\r\n      ? []\r\n      : getFixedColumnsClass(prefixCls, columnIndex, props?.fixed, props.store);\r\n\r\n    // classes\r\n    const classes = [\r\n      column.id,\r\n      column.align,\r\n      column.className,\r\n      ...fixedClasses,\r\n    ];\r\n\r\n    const cellClassName = IvueTable?.props.cellClassName;\r\n\r\n    // 字符串\r\n    if (typeof cellClassName === 'string') {\r\n      classes.push(cellClassName);\r\n    }\r\n    // 方法\r\n    else if (typeof cellClassName === 'function') {\r\n      classes.push(\r\n        cellClassName.call(null, {\r\n          rowIndex,\r\n          columnIndex,\r\n          row,\r\n          column,\r\n        })\r\n      );\r\n    }\r\n\r\n    classes.push('ivue-table-cell');\r\n\r\n    return classes.filter((className) => Boolean(className)).join(' ');\r\n  };\r\n\r\n  // 单元格样式\r\n  const getCellStyle = (\r\n    rowIndex: number,\r\n    columnIndex: number,\r\n    row: TableColumnCtx,\r\n    column: TableColumnCtx\r\n  ) => {\r\n    // 单元格的 style 的回调方法\r\n    const cellStyle = IvueTable?.props.cellStyle;\r\n\r\n    let cellStyles = cellStyle ?? {};\r\n\r\n    // 方法\r\n    if (typeof cellStyle === 'function') {\r\n      cellStyles = cellStyle.call(null, {\r\n        rowIndex,\r\n        columnIndex,\r\n        row,\r\n        column,\r\n      });\r\n    }\r\n\r\n    // 是否是嵌套的子列\r\n    const fixedStyle = column.isSubColumn\r\n      ? null\r\n      : getFixedColumnOffset(columnIndex, props?.fixed, props.store);\r\n\r\n    // 左边\r\n    ensurePosition(fixedStyle, 'left');\r\n    // 右边\r\n    ensurePosition(fixedStyle, 'right');\r\n\r\n    return Object.assign({}, cellStyles, fixedStyle);\r\n  };\r\n\r\n  return {\r\n    getRowClass,\r\n    getRowStyle,\r\n    getTableSpan,\r\n    getCellClass,\r\n    getCellStyle,\r\n  };\r\n}\r\n\r\nexport default useStyles;\r\n"],"names":[],"mappings":"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"}