{"version":3,"file":"tr.mjs","sources":["../../../../components/table/components/tr.tsx"],"sourcesContent":["import {\n  defineComponent,\n  PropType,\n  SetupContext,\n  h,\n  computed,\n  ref,\n  reactive,\n  toRefs,\n  onUpdated,\n  nextTick,\n  onMounted,\n} from 'vue';\nimport { get, pick, isString, isFunction, upperFirst } from 'lodash-es';\n\nimport { formatClassNames, formatRowAttributes, formatRowClassNames } from '../utils';\nimport { getRowFixedStyles, getColumnFixedStyles } from '../hooks/useFixed';\nimport useClassName from '../hooks/useClassName';\nimport TEllipsis from './ellipsis';\nimport { BaseTableCellParams, TableRowData, RowspanColspan, TdPrimaryTableProps, TdBaseTableProps } from '../type';\nimport baseTableProps from '../base-table-props';\nimport useLazyLoad from '../hooks/useLazyLoad';\nimport { RowAndColFixedPosition } from '../types';\nimport { getCellKey, SkipSpansValue } from '../hooks/useRowspanAndColspan';\nimport { TooltipProps } from '../../tooltip';\nimport { PaginationProps } from '../../pagination';\nimport type { VirtualScrollConfig } from '@tdesign/shared-hooks';\nimport { AttachNode, SlotReturnValue } from '../../common';\n\nexport interface RenderTdExtra {\n  rowAndColFixedPosition: RowAndColFixedPosition;\n  columnLength: number;\n  dataLength: number;\n  cellSpans: RowspanColspan;\n  cellEmptyContent: TdBaseTableProps['cellEmptyContent'];\n}\n\nexport interface RenderEllipsisCellParams {\n  cellNode: any;\n}\n\nexport type TrCommonProps = Pick<TdPrimaryTableProps, TrPropsKeys>;\n\nexport const TABLE_PROPS = [\n  'rowKey',\n  'rowClassName',\n  'columns',\n  'fixedRows',\n  'footData',\n  'rowAttributes',\n  'rowspanAndColspan',\n  'scroll',\n  'cellEmptyContent',\n  'pagination',\n  'attach',\n  'onCellClick',\n  'onRowClick',\n  'onRowDblclick',\n  'onRowMouseover',\n  'onRowMousedown',\n  'onRowMouseenter',\n  'onRowMouseleave',\n  'onRowMouseup',\n] as const;\n\nexport type TrPropsKeys = typeof TABLE_PROPS[number];\n\nexport interface TrProps extends TrCommonProps {\n  rowKey: string;\n  row: TableRowData;\n  rowIndex: number;\n  ellipsisOverlayClassName: string;\n  classPrefix: string;\n  dataLength: number;\n  rowAndColFixedPosition?: RowAndColFixedPosition;\n  skipSpansMap?: Map<string, SkipSpansValue>;\n  tableElm?: any;\n  // HTMLDivElement\n  tableContentElm?: any;\n  cellEmptyContent: TdBaseTableProps['cellEmptyContent'];\n  virtualConfig: VirtualScrollConfig;\n  attach?: AttachNode;\n  active?: boolean;\n  isHover?: boolean;\n}\n\nexport const ROW_LISTENERS = [\n  'click',\n  'dblclick',\n  'mouseover',\n  'mousedown',\n  'mouseenter',\n  'mouseleave',\n  'mouseup',\n] as const;\n\nexport function renderCell(\n  params: BaseTableCellParams<TableRowData>,\n  slots: SetupContext['slots'],\n  extra?: {\n    cellEmptyContent?: TdBaseTableProps['cellEmptyContent'];\n    pagination?: PaginationProps;\n  },\n) {\n  const { col, row, rowIndex } = params;\n  // support serial number column\n  if (col.colKey === 'serial-number') {\n    const { current, pageSize, defaultCurrent, defaultPageSize } = extra?.pagination || {};\n    const tCurrent = current || defaultCurrent;\n    const tPageSize = pageSize || defaultPageSize;\n    if (tPageSize && tCurrent) {\n      return tPageSize * (tCurrent - 1) + rowIndex + 1;\n    }\n    return rowIndex + 1;\n  }\n  if (isFunction(col.cell)) {\n    return col.cell(h, params);\n  }\n  if (slots[col.colKey]) {\n    return slots[col.colKey](params);\n  }\n  if (isString(col.cell) && slots[col.cell]) {\n    return slots[col.cell](params);\n  }\n  if (isFunction(col.render)) {\n    return col.render(h, { ...params, type: 'cell' });\n  }\n  const r = get(row, col.colKey);\n  // 0 和 false 属于正常可用之，不能使用兜底逻辑 cellEmptyContent\n  if (![undefined, '', null].includes(r)) return r;\n  // cellEmptyContent 作为空数据兜底显示，用户可自定义\n  if (extra?.cellEmptyContent) {\n    return isFunction(extra.cellEmptyContent) ? extra.cellEmptyContent(h, params) : extra.cellEmptyContent;\n  }\n  if (slots.cellEmptyContent) return slots.cellEmptyContent(params);\n  if (slots['cell-empty-content']) return slots['cell-empty-content'](params);\n  return r;\n}\n\n// 表格行组件\nexport default defineComponent({\n  name: 'TR',\n  props: {\n    row: Object as PropType<TableRowData>,\n    rowIndex: Number,\n    dataLength: Number,\n    ellipsisOverlayClassName: String,\n    classPrefix: String,\n    rowAndColFixedPosition: Map as PropType<RowAndColFixedPosition>,\n    // 合并单元格，是否跳过渲染\n    skipSpansMap: Map as PropType<TrProps['skipSpansMap']>,\n    virtualConfig: Object as PropType<TrProps['virtualConfig']>,\n    active: Boolean,\n    isHover: Boolean,\n    ...pick(baseTableProps, TABLE_PROPS),\n    // eslint-disable-next-line\n    tableElm: {},\n    // eslint-disable-next-line\n    tableContentElm: {},\n    onRowMounted: Function,\n  },\n  emits: ['row-mounted'],\n  setup(props: TrProps, context: SetupContext) {\n    const { tableContentElm, active, isHover } = toRefs(props);\n    const trRef = ref(null);\n    const {\n      tdEllipsisClass,\n      tableBaseClass,\n      tableColFixedClasses,\n      tableRowFixedClasses,\n      tdAlignClasses,\n      tableDraggableClasses,\n    } = useClassName();\n    const trStyles = computed(() =>\n      getRowFixedStyles(\n        get(props.row, props.rowKey || 'id'),\n        props.rowIndex,\n        props.dataLength,\n        props.fixedRows,\n        props.rowAndColFixedPosition,\n        tableRowFixedClasses,\n        props.virtualConfig.isVirtualScroll.value ? props.virtualConfig.translateY.value : 0,\n      ),\n    );\n\n    const trAttributes = computed(\n      () => formatRowAttributes(props.rowAttributes, { row: props.row, rowIndex: props.rowIndex, type: 'body' }) || {},\n    );\n\n    const classes = computed(() => {\n      const customClasses = formatRowClassNames(\n        props.rowClassName,\n        { row: props.row, rowKey: props.rowKey, rowIndex: props.rowIndex, type: 'body' },\n        props.rowKey || 'id',\n      );\n      return [\n        trStyles.value?.classes,\n        customClasses,\n        {\n          [`${props.classPrefix}-table__row--active`]: active.value,\n          [`${props.classPrefix}-table__row--hover`]: isHover.value,\n        },\n      ].filter((v) => v);\n    });\n\n    const { hasLazyLoadHolder, tRowHeight } = useLazyLoad(\n      tableContentElm,\n      trRef,\n      reactive({ ...props.scroll, rowIndex: props.rowIndex }),\n    );\n\n    const getTrListeners = (row: TableRowData, rowIndex: number) => {\n      const trListeners: { [eventName: string]: (e: MouseEvent) => void } = {};\n      // add events to row\n      ROW_LISTENERS.forEach((eventName) => {\n        trListeners[`on${upperFirst(eventName)}`] = (e: MouseEvent) => {\n          const p = { e, row, index: rowIndex };\n          props[`onRow${upperFirst(eventName)}` as `onRow${Capitalize<typeof ROW_LISTENERS[number]>}`]?.(p);\n        };\n      });\n      return trListeners;\n    };\n\n    // 触发 row 的更新行高事件，通知虚拟滚动相关逻辑\n    const notifyVirtualSizeUpdate = () => {\n      if (props.virtualConfig?.isVirtualScroll.value) {\n        context.emit('row-mounted', {\n          ref: trRef,\n          data: props.row,\n        });\n      }\n    };\n\n    onMounted(() => {\n      nextTick(() => {\n        notifyVirtualSizeUpdate();\n      });\n    });\n\n    // 有可能因为 row-key 带来组件复用，这时候通过 update 进行更新\n    onUpdated(() => {\n      nextTick(() => {\n        notifyVirtualSizeUpdate();\n      });\n    });\n\n    function renderEllipsisCell(cellParams: BaseTableCellParams<TableRowData>, params: RenderEllipsisCellParams) {\n      const { cellNode } = params;\n      const { col, colIndex } = cellParams;\n\n      let content: SlotReturnValue;\n      if (isFunction(col.ellipsis)) {\n        content = col.ellipsis(h, cellParams);\n      } else if (typeof col.ellipsis === 'object' && isFunction(col.ellipsis.content)) {\n        content = col.ellipsis.content(h, cellParams);\n      } else if (context.slots[`ellipsis-${col.colKey}`]) {\n        // support ellipsis-<colKey> to define one column cell ellipsis-content\n        content = context.slots[`ellipsis-${col.colKey}`](cellParams);\n      } else if (context.slots.ellipsis) {\n        // support ellipsis slot to define all table cell ellipsis-content\n        content = context.slots.ellipsis(cellParams);\n      }\n\n      let tooltipProps = {};\n      if (typeof col.ellipsis === 'object') {\n        tooltipProps = 'props' in col.ellipsis ? col.ellipsis.props : col.ellipsis || undefined;\n      }\n      const tableElement = props.tableElm as HTMLDivElement;\n      let placement: TooltipProps['placement'] = colIndex === 0 ? 'top-left' : 'top';\n      placement = colIndex === props.columns.length - 1 ? 'top-right' : placement;\n      return (\n        <TEllipsis\n          placement={placement}\n          attach={tableElement ? () => tableElement : undefined}\n          tooltipContent={content && (() => content)}\n          tooltipProps={tooltipProps}\n          overlayClassName={props.ellipsisOverlayClassName}\n          classPrefix={props.classPrefix}\n        >\n          {cellNode}\n        </TEllipsis>\n      );\n    }\n\n    function renderTd(params: BaseTableCellParams<TableRowData>, extra: RenderTdExtra) {\n      const { col, colIndex, rowIndex } = params;\n      const { cellSpans, dataLength, rowAndColFixedPosition } = extra;\n      const cellNode = renderCell(params, context.slots, {\n        cellEmptyContent: extra.cellEmptyContent,\n        pagination: props.pagination,\n      });\n      const tdStyles = getColumnFixedStyles(col, colIndex, rowAndColFixedPosition, tableColFixedClasses);\n      const customClasses = formatClassNames(col.className, { ...params, type: 'td' });\n      const classes = [\n        tdStyles.classes,\n        customClasses,\n        {\n          [tdEllipsisClass]: col.ellipsis,\n          [tableBaseClass.tdLastRow]: rowIndex + cellSpans.rowspan === dataLength,\n          [tableBaseClass.tdFirstCol]: colIndex === 0 && props.rowspanAndColspan,\n          [tdAlignClasses[col.align]]: col.align && col.align !== 'left',\n          // 标记可拖拽列\n          [tableDraggableClasses.handle]: col.colKey === 'drag',\n        },\n      ];\n      const onClick = (e: MouseEvent) => {\n        const p = { ...params, e };\n        if (col.stopPropagation) {\n          e.stopPropagation();\n        }\n        props.onCellClick?.(p);\n      };\n      const normalAttrs = isFunction(col.attrs) ? col.attrs({ ...params, type: 'td' }) : col.attrs;\n      const attrs = { ...normalAttrs, ...cellSpans };\n      return (\n        <td key={col.colKey || colIndex} class={classes} style={tdStyles.style} {...attrs} onClick={onClick}>\n          {col.ellipsis ? renderEllipsisCell(params, { cellNode }) : cellNode}\n        </td>\n      );\n    }\n\n    return () => {\n      const { columns, skipSpansMap, row, dataLength, rowAndColFixedPosition } = props;\n      const columnVNodeList = columns?.map((col, colIndex) => {\n        const cellSpans: RowspanColspan = {};\n        const params = {\n          row,\n          col,\n          rowIndex: props.rowIndex,\n          colIndex,\n        };\n        let spanState = null;\n        if (props.skipSpansMap.size) {\n          const cellKey = getCellKey(row, props.rowKey, col.colKey, colIndex);\n          spanState = skipSpansMap.get(cellKey) || {};\n          spanState?.rowspan > 1 && (cellSpans.rowspan = spanState.rowspan);\n          spanState?.colspan > 1 && (cellSpans.colspan = spanState.colspan);\n          if (spanState.skipped) return null;\n        }\n        return renderTd(params, {\n          dataLength,\n          rowAndColFixedPosition,\n          columnLength: columns.length,\n          cellSpans,\n          cellEmptyContent: props.cellEmptyContent,\n        });\n      });\n\n      return (\n        <tr\n          ref={trRef}\n          {...trAttributes.value}\n          style={trStyles.value?.style}\n          class={classes.value}\n          {...getTrListeners(row, props.rowIndex)}\n        >\n          {hasLazyLoadHolder.value\n            ? [<td style={{ height: `${tRowHeight.value}px`, border: 'none' }} />]\n            : columnVNodeList}\n        </tr>\n      );\n    };\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","TABLE_PROPS","ROW_LISTENERS","renderCell","params","slots","extra","col","row","rowIndex","colKey","_ref","pagination","current","pageSize","defaultCurrent","defaultPageSize","tCurrent","tPageSize","isFunction","cell","h","isString","render","_objectSpread","type","r","get","includes","cellEmptyContent","defineComponent","name","props","Number","dataLength","ellipsisOverlayClassName","String","classPrefix","rowAndColFixedPosition","Map","skipSpansMap","virtualConfig","active","Boolean","isHover","pick","baseTableProps","tableElm","tableContentElm","onRowMounted","Function","emits","setup","context","_toRefs","toRefs","trRef","ref","_useClassName","useClassName","tdEllipsisClass","tableBaseClass","tableColFixedClasses","tableRowFixedClasses","tdAlignClasses","tableDraggableClasses","trStyles","computed","getRowFixedStyles","rowKey","fixedRows","isVirtualScroll","value","translateY","trAttributes","formatRowAttributes","rowAttributes","classes","_trStyles$value","customClasses","formatRowClassNames","rowClassName","_defineProperty","concat","filter","v","_useLazyLoad","useLazyLoad","reactive","scroll","hasLazyLoadHolder","tRowHeight","getTrListeners","trListeners","forEach","eventName","upperFirst","e","_props","p","index","notifyVirtualSizeUpdate","_props$virtualConfig","emit","data","onMounted","nextTick","onUpdated","renderEllipsisCell","cellParams","cellNode","colIndex","content","ellipsis","_typeof","tooltipProps","tableElement","placement","columns","length","_createVNode","TEllipsis","_default","renderTd","cellSpans","tdStyles","getColumnFixedStyles","formatClassNames","className","tdLastRow","rowspan","tdFirstCol","rowspanAndColspan","align","handle","onClick","_props$onCellClick","stopPropagation","onCellClick","normalAttrs","attrs","_mergeProps","style","_trStyles$value2","columnVNodeList","map","spanState","size","_spanState","_spanState2","cellKey","getCellKey","colspan","skipped","columnLength","height","border"],"mappings":"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"}