MeasureRow.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import * as React from 'react';
  2. import ResizeObserver from 'rc-resize-observer';
  3. import MeasureCell from "./MeasureCell";
  4. import isVisible from "rc-util/es/Dom/isVisible";
  5. import { useContext } from '@rc-component/context';
  6. import TableContext from "../context/TableContext";
  7. export default function MeasureRow(_ref) {
  8. var prefixCls = _ref.prefixCls,
  9. columnsKey = _ref.columnsKey,
  10. onColumnResize = _ref.onColumnResize,
  11. columns = _ref.columns;
  12. var ref = React.useRef(null);
  13. var _useContext = useContext(TableContext, ['measureRowRender']),
  14. measureRowRender = _useContext.measureRowRender;
  15. var measureRow = /*#__PURE__*/React.createElement("tr", {
  16. "aria-hidden": "true",
  17. className: "".concat(prefixCls, "-measure-row"),
  18. style: {
  19. height: 0
  20. },
  21. ref: ref
  22. }, /*#__PURE__*/React.createElement(ResizeObserver.Collection, {
  23. onBatchResize: function onBatchResize(infoList) {
  24. if (isVisible(ref.current)) {
  25. infoList.forEach(function (_ref2) {
  26. var columnKey = _ref2.data,
  27. size = _ref2.size;
  28. onColumnResize(columnKey, size.offsetWidth);
  29. });
  30. }
  31. }
  32. }, columnsKey.map(function (columnKey) {
  33. var column = columns.find(function (col) {
  34. return col.key === columnKey;
  35. });
  36. return /*#__PURE__*/React.createElement(MeasureCell, {
  37. key: columnKey,
  38. columnKey: columnKey,
  39. onColumnResize: onColumnResize,
  40. column: column
  41. });
  42. })));
  43. return measureRowRender ? measureRowRender(measureRow) : measureRow;
  44. }