useStickyOffsets.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _react = require("react");
  7. /**
  8. * Get sticky column offset width
  9. */
  10. function useStickyOffsets(colWidths, flattenColumns, direction) {
  11. var stickyOffsets = (0, _react.useMemo)(function () {
  12. var columnCount = flattenColumns.length;
  13. var getOffsets = function getOffsets(startIndex, endIndex, offset) {
  14. var offsets = [];
  15. var total = 0;
  16. for (var i = startIndex; i !== endIndex; i += offset) {
  17. offsets.push(total);
  18. if (flattenColumns[i].fixed) {
  19. total += colWidths[i] || 0;
  20. }
  21. }
  22. return offsets;
  23. };
  24. var startOffsets = getOffsets(0, columnCount, 1);
  25. var endOffsets = getOffsets(columnCount - 1, -1, -1).reverse();
  26. return direction === 'rtl' ? {
  27. left: endOffsets,
  28. right: startOffsets
  29. } : {
  30. left: startOffsets,
  31. right: endOffsets
  32. };
  33. }, [colWidths, flattenColumns, direction]);
  34. return stickyOffsets;
  35. }
  36. var _default = exports.default = useStickyOffsets;