UNPKG

1.77 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = useVisibleRange;
7
8var _react = require("react");
9
10var DEFAULT_SIZE = {
11 width: 0,
12 height: 0,
13 left: 0,
14 top: 0,
15 right: 0
16};
17
18function useVisibleRange(tabOffsets, containerSize, tabContentNodeSize, addNodeSize, _ref) {
19 var tabs = _ref.tabs,
20 tabPosition = _ref.tabPosition,
21 rtl = _ref.rtl;
22 var unit;
23 var position;
24 var transformSize;
25
26 if (['top', 'bottom'].includes(tabPosition)) {
27 unit = 'width';
28 position = rtl ? 'right' : 'left';
29 transformSize = Math.abs(containerSize.left);
30 } else {
31 unit = 'height';
32 position = 'top';
33 transformSize = -containerSize.top;
34 }
35
36 var basicSize = containerSize[unit];
37 var tabContentSize = tabContentNodeSize[unit];
38 var addSize = addNodeSize[unit];
39 var mergedBasicSize = basicSize;
40
41 if (tabContentSize + addSize > basicSize) {
42 mergedBasicSize = basicSize - addSize;
43 }
44
45 return (0, _react.useMemo)(function () {
46 if (!tabs.length) {
47 return [0, 0];
48 }
49
50 var len = tabs.length;
51 var endIndex = len;
52
53 for (var i = 0; i < len; i += 1) {
54 var offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;
55
56 if (offset[position] + offset[unit] > transformSize + mergedBasicSize) {
57 endIndex = i - 1;
58 break;
59 }
60 }
61
62 var startIndex = 0;
63
64 for (var _i = len - 1; _i >= 0; _i -= 1) {
65 var _offset = tabOffsets.get(tabs[_i].key) || DEFAULT_SIZE;
66
67 if (_offset[position] < transformSize) {
68 startIndex = _i + 1;
69 break;
70 }
71 }
72
73 return [startIndex, endIndex];
74 }, [tabOffsets, transformSize, mergedBasicSize, tabPosition, tabs.map(function (tab) {
75 return tab.key;
76 }).join('_'), rtl]);
77}
\No newline at end of file