{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/vue-components/vc-table/src/Body/index.tsx"],"sourcesContent":["import type { GetComponentProps, GetRowKey, Key } from '../interface';\n\n// base rc-table@7.17.2\nimport { defineComponent, shallowRef, toRef } from 'vue';\nimport { useInjectBody } from '../context/BodyContext';\nimport { useProvideHover } from '../context/HoverContext';\nimport { useInjectResize } from '../context/ResizeContext';\nimport { useInjectTable } from '../context/TableContext';\nimport useFlattenRecords from '../hooks/useFlattenRecords';\nimport { getColumnsKey } from '../utils/valueUtil';\nimport BodyRow from './BodyRow';\nimport ExpandedRow from './ExpandedRow';\nimport MeasureCell from './MeasureCell';\n\nexport interface BodyProps<RecordType> {\n  data: RecordType[];\n  getRowKey: GetRowKey<RecordType>;\n  measureColumnWidth: boolean;\n  expandedKeys: Set<Key>;\n  customRow: GetComponentProps<RecordType>;\n  rowExpandable: (record: RecordType) => boolean;\n  childrenColumnName: string;\n}\n\nexport default defineComponent<BodyProps<any>>({\n  name: 'TableBody',\n  props: [\n    'data',\n    'getRowKey',\n    'measureColumnWidth',\n    'expandedKeys',\n    'customRow',\n    'rowExpandable',\n    'childrenColumnName',\n  ] as any,\n  setup(props, { slots }) {\n    const resizeContext = useInjectResize();\n    const tableContext = useInjectTable();\n    const bodyContext = useInjectBody();\n\n    const flattenData = useFlattenRecords(\n      toRef(props, 'data'),\n      toRef(props, 'childrenColumnName'),\n      toRef(props, 'expandedKeys'),\n      toRef(props, 'getRowKey'),\n    );\n    const startRow = shallowRef(-1);\n    const endRow = shallowRef(-1);\n    let timeoutId: any;\n    useProvideHover({\n      startRow,\n      endRow,\n      onHover: (start, end) => {\n        clearTimeout(timeoutId);\n        timeoutId = setTimeout(() => {\n          startRow.value = start;\n          endRow.value = end;\n        }, 100);\n      },\n    });\n    return () => {\n      const {\n        data,\n        getRowKey,\n        measureColumnWidth,\n        expandedKeys,\n        customRow,\n        rowExpandable,\n        childrenColumnName,\n      } = props;\n      const { onColumnResize } = resizeContext;\n      const { prefixCls, getComponent } = tableContext;\n      const { flattenColumns } = bodyContext;\n      const WrapperComponent = getComponent(['body', 'wrapper'], 'tbody');\n      const trComponent = getComponent(['body', 'row'], 'tr');\n      const tdComponent = getComponent(['body', 'cell'], 'td');\n\n      let rows;\n      if (data.length) {\n        rows = flattenData.value.map((item, idx) => {\n          const { record, indent, index: renderIndex } = item;\n\n          const key = getRowKey(record, idx);\n\n          return (\n            <BodyRow\n              key={key}\n              rowKey={key}\n              record={record}\n              recordKey={key}\n              index={idx}\n              renderIndex={renderIndex}\n              rowComponent={trComponent}\n              cellComponent={tdComponent}\n              expandedKeys={expandedKeys}\n              customRow={customRow}\n              getRowKey={getRowKey}\n              rowExpandable={rowExpandable}\n              childrenColumnName={childrenColumnName}\n              indent={indent}\n            />\n          );\n        });\n      } else {\n        rows = (\n          <ExpandedRow\n            expanded\n            class={`${prefixCls}-placeholder`}\n            prefixCls={prefixCls}\n            component={trComponent}\n            cellComponent={tdComponent}\n            colSpan={flattenColumns.length}\n            isEmpty\n          >\n            {slots.emptyNode?.()}\n          </ExpandedRow>\n        );\n      }\n\n      const columnsKey = getColumnsKey(flattenColumns);\n\n      return (\n        <WrapperComponent class={`${prefixCls}-tbody`}>\n          {/* Measure body column width with additional hidden col */}\n          {measureColumnWidth && (\n            <tr\n              aria-hidden=\"true\"\n              class={`${prefixCls}-measure-row`}\n              style={{ height: 0, fontSize: 0 }}\n            >\n              {columnsKey.map(columnKey => (\n                <MeasureCell\n                  key={columnKey}\n                  columnKey={columnKey}\n                  onColumnResize={onColumnResize}\n                />\n              ))}\n            </tr>\n          )}\n\n          {rows}\n        </WrapperComponent>\n      );\n    };\n  },\n});\n"],"names":["name","props","setup","slots","resizeContext","useInjectResize","tableContext","useInjectTable","bodyContext","useInjectBody","flattenData","useFlattenRecords","toRef","startRow","shallowRef","endRow","timeoutId","useProvideHover","onHover","start","end","clearTimeout","setTimeout","value","data","getRowKey","measureColumnWidth","expandedKeys","customRow","rowExpandable","childrenColumnName","onColumnResize","prefixCls","getComponent","flattenColumns","WrapperComponent","trComponent","tdComponent","rows","length","map","item","idx","record","indent","index","renderIndex","key","_createVNode","BodyRow","ExpandedRow","default","emptyNode","columnsKey","getColumnsKey","height","fontSize","columnKey","MeasureCell"],"mappings":"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"}