useVisibleRange.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = useVisibleRange;
  6. var _react = require("react");
  7. var DEFAULT_SIZE = {
  8. width: 0,
  9. height: 0,
  10. left: 0,
  11. top: 0,
  12. right: 0
  13. };
  14. function useVisibleRange(tabOffsets, visibleTabContentValue, transform, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, _ref) {
  15. var tabs = _ref.tabs,
  16. tabPosition = _ref.tabPosition,
  17. rtl = _ref.rtl;
  18. var charUnit;
  19. var position;
  20. var transformSize;
  21. if (['top', 'bottom'].includes(tabPosition)) {
  22. charUnit = 'width';
  23. position = rtl ? 'right' : 'left';
  24. transformSize = Math.abs(transform);
  25. } else {
  26. charUnit = 'height';
  27. position = 'top';
  28. transformSize = -transform;
  29. }
  30. return (0, _react.useMemo)(function () {
  31. if (!tabs.length) {
  32. return [0, 0];
  33. }
  34. var len = tabs.length;
  35. var endIndex = len;
  36. for (var i = 0; i < len; i += 1) {
  37. var offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;
  38. if (Math.floor(offset[position] + offset[charUnit]) > Math.floor(transformSize + visibleTabContentValue)) {
  39. endIndex = i - 1;
  40. break;
  41. }
  42. }
  43. var startIndex = 0;
  44. for (var _i = len - 1; _i >= 0; _i -= 1) {
  45. var _offset = tabOffsets.get(tabs[_i].key) || DEFAULT_SIZE;
  46. if (_offset[position] < transformSize) {
  47. startIndex = _i + 1;
  48. break;
  49. }
  50. }
  51. return startIndex > endIndex ? [0, -1] : [startIndex, endIndex];
  52. }, [tabOffsets, visibleTabContentValue, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, transformSize, tabPosition, tabs.map(function (tab) {
  53. return tab.key;
  54. }).join('_'), rtl]);
  55. }