useStickyOffsets.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _vue = require("vue");
  7. /**
  8. * Get sticky column offset width
  9. */
  10. function useStickyOffsets(colWidthsRef, columnCountRef, directionRef) {
  11. const stickyOffsets = (0, _vue.computed)(() => {
  12. const leftOffsets = [];
  13. const rightOffsets = [];
  14. let left = 0;
  15. let right = 0;
  16. const colWidths = colWidthsRef.value;
  17. const columnCount = columnCountRef.value;
  18. const direction = directionRef.value;
  19. for (let start = 0; start < columnCount; start += 1) {
  20. if (direction === 'rtl') {
  21. // Left offset
  22. rightOffsets[start] = right;
  23. right += colWidths[start] || 0;
  24. // Right offset
  25. const end = columnCount - start - 1;
  26. leftOffsets[end] = left;
  27. left += colWidths[end] || 0;
  28. } else {
  29. // Left offset
  30. leftOffsets[start] = left;
  31. left += colWidths[start] || 0;
  32. // Right offset
  33. const end = columnCount - start - 1;
  34. rightOffsets[end] = right;
  35. right += colWidths[end] || 0;
  36. }
  37. }
  38. return {
  39. left: leftOffsets,
  40. right: rightOffsets
  41. };
  42. });
  43. return stickyOffsets;
  44. }
  45. var _default = exports.default = useStickyOffsets;