@depup/react-virtualized 9.22.6-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +34 -0
  3. package/changes.json +22 -0
  4. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.example.js +184 -0
  5. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.jest.js +338 -0
  6. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.js +204 -0
  7. package/dist/commonjs/ArrowKeyStepper/index.js +19 -0
  8. package/dist/commonjs/ArrowKeyStepper/types.js +5 -0
  9. package/dist/commonjs/AutoSizer/AutoSizer.example.js +104 -0
  10. package/dist/commonjs/AutoSizer/AutoSizer.jest.js +341 -0
  11. package/dist/commonjs/AutoSizer/AutoSizer.js +199 -0
  12. package/dist/commonjs/AutoSizer/AutoSizer.ssr.js +25 -0
  13. package/dist/commonjs/AutoSizer/index.js +19 -0
  14. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +100 -0
  15. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +99 -0
  16. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +107 -0
  17. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +102 -0
  18. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +107 -0
  19. package/dist/commonjs/CellMeasurer/CellMeasurer.example.js +129 -0
  20. package/dist/commonjs/CellMeasurer/CellMeasurer.jest.js +345 -0
  21. package/dist/commonjs/CellMeasurer/CellMeasurer.js +195 -0
  22. package/dist/commonjs/CellMeasurer/CellMeasurerCache.jest.js +298 -0
  23. package/dist/commonjs/CellMeasurer/CellMeasurerCache.js +202 -0
  24. package/dist/commonjs/CellMeasurer/index.js +22 -0
  25. package/dist/commonjs/CellMeasurer/types.js +14 -0
  26. package/dist/commonjs/Collection/Collection.example.js +231 -0
  27. package/dist/commonjs/Collection/Collection.jest.js +829 -0
  28. package/dist/commonjs/Collection/Collection.js +266 -0
  29. package/dist/commonjs/Collection/CollectionView.js +553 -0
  30. package/dist/commonjs/Collection/Section.jest.js +63 -0
  31. package/dist/commonjs/Collection/Section.js +57 -0
  32. package/dist/commonjs/Collection/SectionManager.jest.js +121 -0
  33. package/dist/commonjs/Collection/SectionManager.js +134 -0
  34. package/dist/commonjs/Collection/TestData.js +77 -0
  35. package/dist/commonjs/Collection/index.js +15 -0
  36. package/dist/commonjs/Collection/types.js +22 -0
  37. package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.jest.js +34 -0
  38. package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.js +38 -0
  39. package/dist/commonjs/ColumnSizer/ColumnSizer.example.js +159 -0
  40. package/dist/commonjs/ColumnSizer/ColumnSizer.jest.js +129 -0
  41. package/dist/commonjs/ColumnSizer/ColumnSizer.js +103 -0
  42. package/dist/commonjs/ColumnSizer/index.js +15 -0
  43. package/dist/commonjs/Grid/Grid.example.js +330 -0
  44. package/dist/commonjs/Grid/Grid.jest.js +2561 -0
  45. package/dist/commonjs/Grid/Grid.js +1432 -0
  46. package/dist/commonjs/Grid/Grid.ssr.js +62 -0
  47. package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.jest.js +92 -0
  48. package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.js +40 -0
  49. package/dist/commonjs/Grid/defaultCellRangeRenderer.js +139 -0
  50. package/dist/commonjs/Grid/defaultOverscanIndicesGetter.jest.js +92 -0
  51. package/dist/commonjs/Grid/defaultOverscanIndicesGetter.js +36 -0
  52. package/dist/commonjs/Grid/index.js +40 -0
  53. package/dist/commonjs/Grid/types.js +8 -0
  54. package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.jest.js +375 -0
  55. package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.js +296 -0
  56. package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +201 -0
  57. package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.js +204 -0
  58. package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +84 -0
  59. package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +59 -0
  60. package/dist/commonjs/Grid/utils/maxElementSize.js +22 -0
  61. package/dist/commonjs/Grid/utils/updateScrollIndexHelper.jest.js +180 -0
  62. package/dist/commonjs/Grid/utils/updateScrollIndexHelper.js +85 -0
  63. package/dist/commonjs/InfiniteLoader/InfiniteLoader.example.js +179 -0
  64. package/dist/commonjs/InfiniteLoader/InfiniteLoader.jest.js +571 -0
  65. package/dist/commonjs/InfiniteLoader/InfiniteLoader.js +274 -0
  66. package/dist/commonjs/InfiniteLoader/index.js +15 -0
  67. package/dist/commonjs/List/List.example.js +236 -0
  68. package/dist/commonjs/List/List.jest.js +517 -0
  69. package/dist/commonjs/List/List.js +318 -0
  70. package/dist/commonjs/List/index.js +19 -0
  71. package/dist/commonjs/List/types.js +6 -0
  72. package/dist/commonjs/Masonry/Masonry.example.js +287 -0
  73. package/dist/commonjs/Masonry/Masonry.jest.js +450 -0
  74. package/dist/commonjs/Masonry/Masonry.js +431 -0
  75. package/dist/commonjs/Masonry/PositionCache.js +88 -0
  76. package/dist/commonjs/Masonry/createCellPositioner.js +59 -0
  77. package/dist/commonjs/Masonry/index.js +22 -0
  78. package/dist/commonjs/MultiGrid/CellMeasurerCacheDecorator.js +106 -0
  79. package/dist/commonjs/MultiGrid/MultiGrid.example.js +131 -0
  80. package/dist/commonjs/MultiGrid/MultiGrid.jest.js +584 -0
  81. package/dist/commonjs/MultiGrid/MultiGrid.js +743 -0
  82. package/dist/commonjs/MultiGrid/index.js +15 -0
  83. package/dist/commonjs/ScrollSync/ScrollSync.example.js +257 -0
  84. package/dist/commonjs/ScrollSync/ScrollSync.jest.js +66 -0
  85. package/dist/commonjs/ScrollSync/ScrollSync.js +88 -0
  86. package/dist/commonjs/ScrollSync/index.js +15 -0
  87. package/dist/commonjs/Table/Column.jest.js +90 -0
  88. package/dist/commonjs/Table/Column.js +93 -0
  89. package/dist/commonjs/Table/SortDirection.js +19 -0
  90. package/dist/commonjs/Table/SortIndicator.js +40 -0
  91. package/dist/commonjs/Table/Table.example.js +325 -0
  92. package/dist/commonjs/Table/Table.jest.js +1257 -0
  93. package/dist/commonjs/Table/Table.js +742 -0
  94. package/dist/commonjs/Table/createMultiSort.jest.js +165 -0
  95. package/dist/commonjs/Table/createMultiSort.js +99 -0
  96. package/dist/commonjs/Table/defaultCellDataGetter.js +21 -0
  97. package/dist/commonjs/Table/defaultCellRenderer.js +19 -0
  98. package/dist/commonjs/Table/defaultHeaderRenderer.js +35 -0
  99. package/dist/commonjs/Table/defaultHeaderRowRenderer.js +21 -0
  100. package/dist/commonjs/Table/defaultRowRenderer.js +87 -0
  101. package/dist/commonjs/Table/index.js +78 -0
  102. package/dist/commonjs/Table/types.js +39 -0
  103. package/dist/commonjs/WindowScroller/WindowScroller.e2e.js +298 -0
  104. package/dist/commonjs/WindowScroller/WindowScroller.example.js +167 -0
  105. package/dist/commonjs/WindowScroller/WindowScroller.header-resize.e2e.js +359 -0
  106. package/dist/commonjs/WindowScroller/WindowScroller.jest.js +536 -0
  107. package/dist/commonjs/WindowScroller/WindowScroller.js +268 -0
  108. package/dist/commonjs/WindowScroller/WindowScroller.ssr.js +25 -0
  109. package/dist/commonjs/WindowScroller/index.js +23 -0
  110. package/dist/commonjs/WindowScroller/utils/dimensions.js +89 -0
  111. package/dist/commonjs/WindowScroller/utils/onScroll.js +70 -0
  112. package/dist/commonjs/index.js +180 -0
  113. package/dist/commonjs/jest-setup.js +7 -0
  114. package/dist/commonjs/utils/TestHelper.js +36 -0
  115. package/dist/commonjs/utils/animationFrame.js +29 -0
  116. package/dist/commonjs/utils/createCallbackMemoizer.jest.js +219 -0
  117. package/dist/commonjs/utils/createCallbackMemoizer.js +31 -0
  118. package/dist/commonjs/utils/getUpdatedOffsetForIndex.jest.js +68 -0
  119. package/dist/commonjs/utils/getUpdatedOffsetForIndex.js +38 -0
  120. package/dist/commonjs/utils/initCellMetadata.js +37 -0
  121. package/dist/commonjs/utils/requestAnimationTimeout.js +38 -0
  122. package/dist/commonjs/vendor/binarySearchBounds.js +200 -0
  123. package/dist/commonjs/vendor/detectElementResize.js +192 -0
  124. package/dist/commonjs/vendor/intervalTree.js +361 -0
  125. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.example.js +176 -0
  126. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.jest.js +332 -0
  127. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.js +197 -0
  128. package/dist/es/ArrowKeyStepper/index.js +3 -0
  129. package/dist/es/ArrowKeyStepper/types.js +4 -0
  130. package/dist/es/AutoSizer/AutoSizer.example.js +96 -0
  131. package/dist/es/AutoSizer/AutoSizer.jest.js +335 -0
  132. package/dist/es/AutoSizer/AutoSizer.js +190 -0
  133. package/dist/es/AutoSizer/AutoSizer.js.flow +200 -0
  134. package/dist/es/AutoSizer/AutoSizer.ssr.js +19 -0
  135. package/dist/es/AutoSizer/index.js +2 -0
  136. package/dist/es/AutoSizer/index.js.flow +4 -0
  137. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +91 -0
  138. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +90 -0
  139. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +98 -0
  140. package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +93 -0
  141. package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +98 -0
  142. package/dist/es/CellMeasurer/CellMeasurer.example.js +120 -0
  143. package/dist/es/CellMeasurer/CellMeasurer.jest.js +340 -0
  144. package/dist/es/CellMeasurer/CellMeasurer.js +187 -0
  145. package/dist/es/CellMeasurer/CellMeasurerCache.jest.js +293 -0
  146. package/dist/es/CellMeasurer/CellMeasurerCache.js +196 -0
  147. package/dist/es/CellMeasurer/index.js +4 -0
  148. package/dist/es/CellMeasurer/types.js +13 -0
  149. package/dist/es/Collection/Collection.example.js +223 -0
  150. package/dist/es/Collection/Collection.jest.js +824 -0
  151. package/dist/es/Collection/Collection.js +257 -0
  152. package/dist/es/Collection/CollectionView.js +544 -0
  153. package/dist/es/Collection/Section.jest.js +60 -0
  154. package/dist/es/Collection/Section.js +51 -0
  155. package/dist/es/Collection/SectionManager.jest.js +118 -0
  156. package/dist/es/Collection/SectionManager.js +128 -0
  157. package/dist/es/Collection/TestData.js +71 -0
  158. package/dist/es/Collection/index.js +3 -0
  159. package/dist/es/Collection/types.js +21 -0
  160. package/dist/es/Collection/utils/calculateSizeAndPositionData.jest.js +31 -0
  161. package/dist/es/Collection/utils/calculateSizeAndPositionData.js +31 -0
  162. package/dist/es/ColumnSizer/ColumnSizer.example.js +150 -0
  163. package/dist/es/ColumnSizer/ColumnSizer.jest.js +123 -0
  164. package/dist/es/ColumnSizer/ColumnSizer.js +95 -0
  165. package/dist/es/ColumnSizer/index.js +3 -0
  166. package/dist/es/Grid/Grid.example.js +321 -0
  167. package/dist/es/Grid/Grid.jest.js +2555 -0
  168. package/dist/es/Grid/Grid.js +1425 -0
  169. package/dist/es/Grid/Grid.ssr.js +57 -0
  170. package/dist/es/Grid/accessibilityOverscanIndicesGetter.jest.js +87 -0
  171. package/dist/es/Grid/accessibilityOverscanIndicesGetter.js +33 -0
  172. package/dist/es/Grid/defaultCellRangeRenderer.js +134 -0
  173. package/dist/es/Grid/defaultOverscanIndicesGetter.jest.js +87 -0
  174. package/dist/es/Grid/defaultOverscanIndicesGetter.js +29 -0
  175. package/dist/es/Grid/index.js +15 -0
  176. package/dist/es/Grid/types.js +96 -0
  177. package/dist/es/Grid/utils/CellSizeAndPositionManager.jest.js +372 -0
  178. package/dist/es/Grid/utils/CellSizeAndPositionManager.js +290 -0
  179. package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +198 -0
  180. package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js +198 -0
  181. package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +81 -0
  182. package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +53 -0
  183. package/dist/es/Grid/utils/maxElementSize.js +16 -0
  184. package/dist/es/Grid/utils/updateScrollIndexHelper.jest.js +174 -0
  185. package/dist/es/Grid/utils/updateScrollIndexHelper.js +79 -0
  186. package/dist/es/InfiniteLoader/InfiniteLoader.example.js +170 -0
  187. package/dist/es/InfiniteLoader/InfiniteLoader.jest.js +565 -0
  188. package/dist/es/InfiniteLoader/InfiniteLoader.js +263 -0
  189. package/dist/es/InfiniteLoader/index.js +3 -0
  190. package/dist/es/List/List.example.js +227 -0
  191. package/dist/es/List/List.jest.js +511 -0
  192. package/dist/es/List/List.js +312 -0
  193. package/dist/es/List/index.js +3 -0
  194. package/dist/es/List/types.js +21 -0
  195. package/dist/es/Masonry/Masonry.example.js +278 -0
  196. package/dist/es/Masonry/Masonry.jest.js +444 -0
  197. package/dist/es/Masonry/Masonry.js +421 -0
  198. package/dist/es/Masonry/PositionCache.js +82 -0
  199. package/dist/es/Masonry/createCellPositioner.js +53 -0
  200. package/dist/es/Masonry/index.js +4 -0
  201. package/dist/es/MultiGrid/CellMeasurerCacheDecorator.js +100 -0
  202. package/dist/es/MultiGrid/MultiGrid.example.js +122 -0
  203. package/dist/es/MultiGrid/MultiGrid.jest.js +579 -0
  204. package/dist/es/MultiGrid/MultiGrid.js +733 -0
  205. package/dist/es/MultiGrid/index.js +3 -0
  206. package/dist/es/ScrollSync/ScrollSync.example.js +248 -0
  207. package/dist/es/ScrollSync/ScrollSync.jest.js +60 -0
  208. package/dist/es/ScrollSync/ScrollSync.js +80 -0
  209. package/dist/es/ScrollSync/index.js +3 -0
  210. package/dist/es/Table/Column.jest.js +84 -0
  211. package/dist/es/Table/Column.js +85 -0
  212. package/dist/es/Table/SortDirection.js +13 -0
  213. package/dist/es/Table/SortIndicator.js +31 -0
  214. package/dist/es/Table/Table.example.js +316 -0
  215. package/dist/es/Table/Table.jest.js +1251 -0
  216. package/dist/es/Table/Table.js +735 -0
  217. package/dist/es/Table/createMultiSort.jest.js +162 -0
  218. package/dist/es/Table/createMultiSort.js +93 -0
  219. package/dist/es/Table/defaultCellDataGetter.js +15 -0
  220. package/dist/es/Table/defaultCellRenderer.js +13 -0
  221. package/dist/es/Table/defaultHeaderRenderer.js +25 -0
  222. package/dist/es/Table/defaultHeaderRowRenderer.js +12 -0
  223. package/dist/es/Table/defaultRowRenderer.js +77 -0
  224. package/dist/es/Table/index.js +12 -0
  225. package/dist/es/Table/types.js +38 -0
  226. package/dist/es/WindowScroller/WindowScroller.e2e.js +295 -0
  227. package/dist/es/WindowScroller/WindowScroller.example.js +158 -0
  228. package/dist/es/WindowScroller/WindowScroller.header-resize.e2e.js +356 -0
  229. package/dist/es/WindowScroller/WindowScroller.jest.js +530 -0
  230. package/dist/es/WindowScroller/WindowScroller.js +259 -0
  231. package/dist/es/WindowScroller/WindowScroller.js.flow +277 -0
  232. package/dist/es/WindowScroller/WindowScroller.ssr.js +19 -0
  233. package/dist/es/WindowScroller/index.js +3 -0
  234. package/dist/es/WindowScroller/index.js.flow +6 -0
  235. package/dist/es/WindowScroller/utils/dimensions.js +81 -0
  236. package/dist/es/WindowScroller/utils/dimensions.js.flow +91 -0
  237. package/dist/es/WindowScroller/utils/onScroll.js +64 -0
  238. package/dist/es/WindowScroller/utils/onScroll.js.flow +94 -0
  239. package/dist/es/index.js +13 -0
  240. package/dist/es/jest-setup.js +5 -0
  241. package/dist/es/utils/TestHelper.js +30 -0
  242. package/dist/es/utils/animationFrame.js +23 -0
  243. package/dist/es/utils/createCallbackMemoizer.jest.js +216 -0
  244. package/dist/es/utils/createCallbackMemoizer.js +25 -0
  245. package/dist/es/utils/getUpdatedOffsetForIndex.jest.js +65 -0
  246. package/dist/es/utils/getUpdatedOffsetForIndex.js +32 -0
  247. package/dist/es/utils/initCellMetadata.js +31 -0
  248. package/dist/es/utils/requestAnimationTimeout.js +32 -0
  249. package/dist/es/vendor/binarySearchBounds.js +194 -0
  250. package/dist/es/vendor/detectElementResize.js +186 -0
  251. package/dist/es/vendor/intervalTree.js +354 -0
  252. package/dist/umd/react-virtualized.js +4638 -0
  253. package/package.json +188 -0
  254. package/styles.css +80 -0
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _SectionManager = _interopRequireDefault(require("./SectionManager"));
5
+ var _TestData = require("./TestData");
6
+ function initSectionManager() {
7
+ var sectionManager = new _SectionManager["default"](_TestData.SECTION_SIZE);
8
+ _TestData.CELLS.forEach(function (cellMetadatum, index) {
9
+ sectionManager.registerCell({
10
+ cellMetadatum: cellMetadatum,
11
+ index: index
12
+ });
13
+ });
14
+ return sectionManager;
15
+ }
16
+ function verifySections(sectionManager, sizeAndPosition, expectedSizeAndPositionInfos) {
17
+ var sections = sectionManager.getSections(sizeAndPosition);
18
+ expect(sections.length).toEqual(expectedSizeAndPositionInfos.length);
19
+ expectedSizeAndPositionInfos.forEach(function (sizeAndPosition) {
20
+ var match = sections.find(function (section) {
21
+ return section.x === sizeAndPosition.x && section.y === sizeAndPosition.y;
22
+ });
23
+ expect(!!match).toEqual(true);
24
+ });
25
+ }
26
+ describe('SectionManager', function () {
27
+ it('creates the appropriate number of Sections', function () {
28
+ var sectionManager = initSectionManager();
29
+ expect(sectionManager.getTotalSectionCount()).toEqual(6);
30
+ });
31
+ it('returns the proper Sections based on the specified area', function () {
32
+ var sectionManager = initSectionManager();
33
+ verifySections(sectionManager, {
34
+ x: 0,
35
+ y: 0,
36
+ width: 1,
37
+ height: 1
38
+ }, [{
39
+ x: 0,
40
+ y: 0
41
+ }]);
42
+ verifySections(sectionManager, {
43
+ x: 1,
44
+ y: 1,
45
+ width: 1,
46
+ height: 1
47
+ }, [{
48
+ x: 0,
49
+ y: 0
50
+ }]);
51
+ verifySections(sectionManager, {
52
+ x: 0,
53
+ y: 0,
54
+ width: 4,
55
+ height: 4
56
+ }, [{
57
+ x: 0,
58
+ y: 0
59
+ }, {
60
+ x: 2,
61
+ y: 0
62
+ }, {
63
+ x: 0,
64
+ y: 2
65
+ }, {
66
+ x: 2,
67
+ y: 2
68
+ }]);
69
+ verifySections(sectionManager, {
70
+ x: 4,
71
+ y: 0,
72
+ width: 2,
73
+ height: 3
74
+ }, [{
75
+ x: 4,
76
+ y: 0
77
+ }, {
78
+ x: 4,
79
+ y: 2
80
+ }]);
81
+ });
82
+ it('assigns cells to the appropriate sections', function () {
83
+ var sectionManager = initSectionManager();
84
+ expect(sectionManager.getCellIndices({
85
+ x: 0,
86
+ y: 0,
87
+ width: 2,
88
+ height: 2
89
+ })).toEqual([0]);
90
+ expect(sectionManager.getCellIndices({
91
+ x: 2,
92
+ y: 0,
93
+ width: 2,
94
+ height: 2
95
+ })).toEqual([1, 2, 3]);
96
+ expect(sectionManager.getCellIndices({
97
+ x: 4,
98
+ y: 0,
99
+ width: 2,
100
+ height: 2
101
+ })).toEqual([6]);
102
+ expect(sectionManager.getCellIndices({
103
+ x: 0,
104
+ y: 2,
105
+ width: 2,
106
+ height: 2
107
+ })).toEqual([4]);
108
+ expect(sectionManager.getCellIndices({
109
+ x: 2,
110
+ y: 2,
111
+ width: 2,
112
+ height: 2
113
+ })).toEqual([3, 4, 5]);
114
+ expect(sectionManager.getCellIndices({
115
+ x: 4,
116
+ y: 2,
117
+ width: 2,
118
+ height: 2
119
+ })).toEqual([7, 8, 9]);
120
+ });
121
+ });
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _Section = _interopRequireDefault(require("./Section"));
11
+ /**
12
+ * Window Sections are used to group nearby cells.
13
+ * This enables us to more quickly determine which cells to display in a given region of the Window.
14
+ *
15
+ */
16
+ /*:: import type {Index, SizeAndPositionInfo} from './types';*/
17
+ var SECTION_SIZE = 100;
18
+ /*:: type RegisterCellParams = {
19
+ cellMetadatum: SizeAndPositionInfo,
20
+ index: number,
21
+ };*/
22
+ /**
23
+ * Contains 0 to many Sections.
24
+ * Grows (and adds Sections) dynamically as cells are registered.
25
+ * Automatically adds cells to the appropriate Section(s).
26
+ */
27
+ var SectionManager = exports["default"] = /*#__PURE__*/function () {
28
+ function SectionManager() {
29
+ var sectionSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SECTION_SIZE;
30
+ (0, _classCallCheck2["default"])(this, SectionManager);
31
+ this._sectionSize = sectionSize;
32
+ this._cellMetadata = [];
33
+ this._sections = {};
34
+ }
35
+
36
+ /**
37
+ * Gets all cell indices contained in the specified region.
38
+ * A region may encompass 1 or more Sections.
39
+ */
40
+ return (0, _createClass2["default"])(SectionManager, [{
41
+ key: "getCellIndices",
42
+ value: function getCellIndices(_ref /*:: */) /*: Array<number>*/{
43
+ var height = _ref /*:: */.height,
44
+ width = _ref /*:: */.width,
45
+ x = _ref /*:: */.x,
46
+ y = _ref /*:: */.y;
47
+ var indices = {};
48
+ this.getSections({
49
+ height: height,
50
+ width: width,
51
+ x: x,
52
+ y: y
53
+ }).forEach(function (section) {
54
+ return section.getCellIndices().forEach(function (index) {
55
+ indices[index] = index;
56
+ });
57
+ });
58
+
59
+ // Object keys are strings; this function returns numbers
60
+ return Object.keys(indices).map(function (index) {
61
+ return indices[index];
62
+ });
63
+ }
64
+
65
+ /** Get size and position information for the cell specified. */
66
+ }, {
67
+ key: "getCellMetadata",
68
+ value: function getCellMetadata(_ref2 /*:: */) /*: SizeAndPositionInfo*/{
69
+ var index = _ref2 /*:: */.index;
70
+ return this._cellMetadata[index];
71
+ }
72
+
73
+ /** Get all Sections overlapping the specified region. */
74
+ }, {
75
+ key: "getSections",
76
+ value: function getSections(_ref3 /*:: */) /*: Array<Section>*/{
77
+ var height = _ref3 /*:: */.height,
78
+ width = _ref3 /*:: */.width,
79
+ x = _ref3 /*:: */.x,
80
+ y = _ref3 /*:: */.y;
81
+ var sectionXStart = Math.floor(x / this._sectionSize);
82
+ var sectionXStop = Math.floor((x + width - 1) / this._sectionSize);
83
+ var sectionYStart = Math.floor(y / this._sectionSize);
84
+ var sectionYStop = Math.floor((y + height - 1) / this._sectionSize);
85
+ var sections = [];
86
+ for (var sectionX = sectionXStart; sectionX <= sectionXStop; sectionX++) {
87
+ for (var sectionY = sectionYStart; sectionY <= sectionYStop; sectionY++) {
88
+ var key = "".concat(sectionX, ".").concat(sectionY);
89
+ if (!this._sections[key]) {
90
+ this._sections[key] = new _Section["default"]({
91
+ height: this._sectionSize,
92
+ width: this._sectionSize,
93
+ x: sectionX * this._sectionSize,
94
+ y: sectionY * this._sectionSize
95
+ });
96
+ }
97
+ sections.push(this._sections[key]);
98
+ }
99
+ }
100
+ return sections;
101
+ }
102
+
103
+ /** Total number of Sections based on the currently registered cells. */
104
+ }, {
105
+ key: "getTotalSectionCount",
106
+ value: function getTotalSectionCount() {
107
+ return Object.keys(this._sections).length;
108
+ }
109
+
110
+ /** Intended for debugger/test purposes only */
111
+ }, {
112
+ key: "toString",
113
+ value: function toString() {
114
+ var _this = this;
115
+ return Object.keys(this._sections).map(function (index) {
116
+ return _this._sections[index].toString();
117
+ });
118
+ }
119
+
120
+ /** Adds a cell to the appropriate Sections and registers it metadata for later retrievable. */
121
+ }, {
122
+ key: "registerCell",
123
+ value: function registerCell(_ref4 /*:: */) {
124
+ var cellMetadatum = _ref4 /*:: */.cellMetadatum,
125
+ index = _ref4 /*:: */.index;
126
+ this._cellMetadata[index] = cellMetadatum;
127
+ this.getSections(cellMetadatum).forEach(function (section) {
128
+ return section.addCellIndex({
129
+ index: index
130
+ });
131
+ });
132
+ }
133
+ }]);
134
+ }();
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SECTION_SIZE = exports.CELLS = void 0;
7
+ /*
8
+ 0 1 2 3 4 5
9
+ ┏━━━┯━━━┯━━━┓
10
+ 0┃0 0┊1 3┊6 6┃
11
+ 1┃0 0┊2 3┊6 6┃
12
+ ┠┈┈┈┼┈┈┈┼┈┈┈┨
13
+ 2┃4 4┊4 3┊7 8┃
14
+ 3┃4 4┊4 5┊9 9┃
15
+ ┗━━━┷━━━┷━━━┛
16
+
17
+ Sections to Cells map:
18
+ 0.0 [0]
19
+ 1.0 [1, 2, 3]
20
+ 2.0 [6]
21
+ 0.1 [4]
22
+ 1.1 [3, 4, 5]
23
+ 2.1 [7, 8, 9]
24
+ */
25
+
26
+ var CELLS = exports.CELLS = [{
27
+ x: 0,
28
+ y: 0,
29
+ width: 2,
30
+ height: 2
31
+ }, {
32
+ x: 2,
33
+ y: 0,
34
+ width: 1,
35
+ height: 1
36
+ }, {
37
+ x: 2,
38
+ y: 1,
39
+ width: 1,
40
+ height: 1
41
+ }, {
42
+ x: 3,
43
+ y: 0,
44
+ width: 1,
45
+ height: 3
46
+ }, {
47
+ x: 0,
48
+ y: 2,
49
+ width: 3,
50
+ height: 2
51
+ }, {
52
+ x: 3,
53
+ y: 3,
54
+ width: 1,
55
+ height: 1
56
+ }, {
57
+ x: 4,
58
+ y: 0,
59
+ width: 2,
60
+ height: 2
61
+ }, {
62
+ x: 4,
63
+ y: 2,
64
+ width: 1,
65
+ height: 1
66
+ }, {
67
+ x: 5,
68
+ y: 2,
69
+ width: 1,
70
+ height: 1
71
+ }, {
72
+ x: 4,
73
+ y: 3,
74
+ width: 2,
75
+ height: 1
76
+ }];
77
+ var SECTION_SIZE = exports.SECTION_SIZE = 2;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "Collection", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _Collection["default"];
11
+ }
12
+ });
13
+ exports["default"] = void 0;
14
+ var _Collection = _interopRequireDefault(require("./Collection"));
15
+ var _default = exports["default"] = _Collection["default"];
@@ -0,0 +1,22 @@
1
+ /*:: export type Index = {
2
+ index: number,
3
+ };*/
4
+ /*:: export type PositionInfo = {
5
+ x: number,
6
+ y: number,
7
+ };*/
8
+ /*:: export type ScrollPosition = {
9
+ scrollLeft: number,
10
+ scrollTop: number,
11
+ };*/
12
+ /*:: export type SizeAndPositionInfo = {
13
+ height: number,
14
+ width: number,
15
+ x: number,
16
+ y: number,
17
+ };*/
18
+ /*:: export type SizeInfo = {
19
+ height: number,
20
+ width: number,
21
+ };*/
22
+ "use strict";
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _calculateSizeAndPositionData = _interopRequireDefault(require("./calculateSizeAndPositionData"));
5
+ describe('calculateSizeAndPositionData', function () {
6
+ it('should query for size and position of each cell', function () {
7
+ var cellSizeAndPositionGetterCalls = [];
8
+ function cellSizeAndPositionGetter(_ref) {
9
+ var index = _ref.index;
10
+ cellSizeAndPositionGetterCalls.push(index);
11
+ return {
12
+ x: index * 50,
13
+ y: 0,
14
+ width: 50,
15
+ height: 50
16
+ };
17
+ }
18
+ var _calculateSizeAndPosi = (0, _calculateSizeAndPositionData["default"])({
19
+ cellCount: 3,
20
+ cellSizeAndPositionGetter: cellSizeAndPositionGetter
21
+ }),
22
+ sectionManager = _calculateSizeAndPosi.sectionManager;
23
+ expect(cellSizeAndPositionGetterCalls).toEqual([0, 1, 2]);
24
+ expect(sectionManager.getTotalSectionCount()).toEqual(2);
25
+ });
26
+ it('should throw an error if invalid metadata is returned for a cell', function () {
27
+ expect(function () {
28
+ return (0, _calculateSizeAndPositionData["default"])({
29
+ cellCount: 3,
30
+ cellSizeAndPositionGetter: function cellSizeAndPositionGetter() {}
31
+ });
32
+ }).toThrow();
33
+ });
34
+ });
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = calculateSizeAndPositionData;
8
+ var _SectionManager = _interopRequireDefault(require("../SectionManager"));
9
+ function calculateSizeAndPositionData(_ref) {
10
+ var cellCount = _ref.cellCount,
11
+ cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter,
12
+ sectionSize = _ref.sectionSize;
13
+ var cellMetadata = [];
14
+ var sectionManager = new _SectionManager["default"](sectionSize);
15
+ var height = 0;
16
+ var width = 0;
17
+ for (var index = 0; index < cellCount; index++) {
18
+ var cellMetadatum = cellSizeAndPositionGetter({
19
+ index: index
20
+ });
21
+ if (cellMetadatum.height == null || isNaN(cellMetadatum.height) || cellMetadatum.width == null || isNaN(cellMetadatum.width) || cellMetadatum.x == null || isNaN(cellMetadatum.x) || cellMetadatum.y == null || isNaN(cellMetadatum.y)) {
22
+ throw Error("Invalid metadata returned for cell ".concat(index, ":\n x:").concat(cellMetadatum.x, ", y:").concat(cellMetadatum.y, ", width:").concat(cellMetadatum.width, ", height:").concat(cellMetadatum.height));
23
+ }
24
+ height = Math.max(height, cellMetadatum.y + cellMetadatum.height);
25
+ width = Math.max(width, cellMetadatum.x + cellMetadatum.width);
26
+ cellMetadata[index] = cellMetadatum;
27
+ sectionManager.registerCell({
28
+ cellMetadatum: cellMetadatum,
29
+ index: index
30
+ });
31
+ }
32
+ return {
33
+ cellMetadata: cellMetadata,
34
+ height: height,
35
+ sectionManager: sectionManager,
36
+ width: width
37
+ };
38
+ }
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
12
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
+ var React = _interopRequireWildcard(require("react"));
15
+ var _ColumnSizerExample = _interopRequireDefault(require("./ColumnSizer.example.css"));
16
+ var _AutoSizer = _interopRequireDefault(require("../AutoSizer"));
17
+ var _ColumnSizer = _interopRequireDefault(require("./ColumnSizer"));
18
+ var _Grid = _interopRequireDefault(require("../Grid"));
19
+ var _ContentBox = require("../demo/ContentBox");
20
+ var _LabeledInput = require("../demo/LabeledInput");
21
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
22
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
23
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
24
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
25
+ var ColumnSizerExample = exports["default"] = /*#__PURE__*/function (_React$PureComponent) {
26
+ function ColumnSizerExample(props) {
27
+ var _this;
28
+ (0, _classCallCheck2["default"])(this, ColumnSizerExample);
29
+ _this = _callSuper(this, ColumnSizerExample, [props]);
30
+ _this.state = {
31
+ columnMaxWidth: 100,
32
+ columnMinWidth: 75,
33
+ columnCount: 10
34
+ };
35
+ _this._noColumnMaxWidthChange = _this._noColumnMaxWidthChange.bind(_this);
36
+ _this._noColumnMinWidthChange = _this._noColumnMinWidthChange.bind(_this);
37
+ _this._onColumnCountChange = _this._onColumnCountChange.bind(_this);
38
+ _this._noContentRenderer = _this._noContentRenderer.bind(_this);
39
+ _this._cellRenderer = _this._cellRenderer.bind(_this);
40
+ return _this;
41
+ }
42
+ (0, _inherits2["default"])(ColumnSizerExample, _React$PureComponent);
43
+ return (0, _createClass2["default"])(ColumnSizerExample, [{
44
+ key: "render",
45
+ value: function render() {
46
+ var _this2 = this;
47
+ var _this$state = this.state,
48
+ columnMaxWidth = _this$state.columnMaxWidth,
49
+ columnMinWidth = _this$state.columnMinWidth,
50
+ columnCount = _this$state.columnCount;
51
+ return /*#__PURE__*/React.createElement(_ContentBox.ContentBox, null, /*#__PURE__*/React.createElement(_ContentBox.ContentBoxHeader, {
52
+ text: "ColumnSizer",
53
+ sourceLink: "https://github.com/bvaughn/react-virtualized/blob/master/source/ColumnSizer/ColumnSizer.example.js",
54
+ docsLink: "https://github.com/bvaughn/react-virtualized/blob/master/docs/ColumnSizer.md"
55
+ }), /*#__PURE__*/React.createElement(_ContentBox.ContentBoxParagraph, null, "This component decorates a ", /*#__PURE__*/React.createElement("code", null, "Grid"), " and calculates the width of its columns based on the current (", /*#__PURE__*/React.createElement("code", null, "Grid"), ") width."), /*#__PURE__*/React.createElement(_LabeledInput.InputRow, null, /*#__PURE__*/React.createElement(_LabeledInput.LabeledInput, {
56
+ label: "Num Columns",
57
+ name: "columnCount",
58
+ onChange: this._onColumnCountChange,
59
+ value: columnCount
60
+ }), /*#__PURE__*/React.createElement(_LabeledInput.LabeledInput, {
61
+ label: "Column Min Width",
62
+ name: "columnMinWidth",
63
+ onChange: this._noColumnMinWidthChange,
64
+ value: columnMinWidth
65
+ }), /*#__PURE__*/React.createElement(_LabeledInput.LabeledInput, {
66
+ label: "Column Max Width",
67
+ name: "columnMaxWidth",
68
+ onChange: this._noColumnMaxWidthChange,
69
+ value: columnMaxWidth
70
+ })), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_AutoSizer["default"], {
71
+ disableHeight: true
72
+ }, function (_ref) {
73
+ var width = _ref.width;
74
+ return /*#__PURE__*/React.createElement(_ColumnSizer["default"], {
75
+ columnMaxWidth: columnMaxWidth,
76
+ columnMinWidth: columnMinWidth,
77
+ columnCount: columnCount,
78
+ key: "GridColumnSizer",
79
+ width: width
80
+ }, function (_ref2) {
81
+ var adjustedWidth = _ref2.adjustedWidth,
82
+ columnWidth = _ref2.columnWidth,
83
+ registerChild = _ref2.registerChild;
84
+ return /*#__PURE__*/React.createElement("div", {
85
+ className: _ColumnSizerExample["default"].GridContainer,
86
+ style: {
87
+ height: 50,
88
+ width: adjustedWidth
89
+ }
90
+ }, /*#__PURE__*/React.createElement(_Grid["default"], {
91
+ ref: registerChild,
92
+ columnWidth: columnWidth,
93
+ columnCount: columnCount,
94
+ height: 50,
95
+ noContentRenderer: _this2._noContentRenderer,
96
+ cellRenderer: _this2._cellRenderer,
97
+ rowHeight: 50,
98
+ rowCount: 1,
99
+ width: adjustedWidth
100
+ }));
101
+ });
102
+ })));
103
+ }
104
+ }, {
105
+ key: "_noColumnMaxWidthChange",
106
+ value: function _noColumnMaxWidthChange(event) {
107
+ var columnMaxWidth = parseInt(event.target.value, 10);
108
+ if (isNaN(columnMaxWidth)) {
109
+ columnMaxWidth = undefined;
110
+ } else {
111
+ columnMaxWidth = Math.min(1000, columnMaxWidth);
112
+ }
113
+ this.setState({
114
+ columnMaxWidth: columnMaxWidth
115
+ });
116
+ }
117
+ }, {
118
+ key: "_noColumnMinWidthChange",
119
+ value: function _noColumnMinWidthChange(event) {
120
+ var columnMinWidth = parseInt(event.target.value, 10);
121
+ if (isNaN(columnMinWidth)) {
122
+ columnMinWidth = undefined;
123
+ } else {
124
+ columnMinWidth = Math.max(1, columnMinWidth);
125
+ }
126
+ this.setState({
127
+ columnMinWidth: columnMinWidth
128
+ });
129
+ }
130
+ }, {
131
+ key: "_onColumnCountChange",
132
+ value: function _onColumnCountChange(event) {
133
+ this.setState({
134
+ columnCount: parseInt(event.target.value, 10) || 0
135
+ });
136
+ }
137
+ }, {
138
+ key: "_noContentRenderer",
139
+ value: function _noContentRenderer() {
140
+ return /*#__PURE__*/React.createElement("div", {
141
+ className: _ColumnSizerExample["default"].noCells
142
+ }, "No cells");
143
+ }
144
+ }, {
145
+ key: "_cellRenderer",
146
+ value: function _cellRenderer(_ref3) {
147
+ var columnIndex = _ref3.columnIndex,
148
+ key = _ref3.key,
149
+ rowIndex = _ref3.rowIndex,
150
+ style = _ref3.style;
151
+ var className = columnIndex === 0 ? _ColumnSizerExample["default"].firstCell : _ColumnSizerExample["default"].cell;
152
+ return /*#__PURE__*/React.createElement("div", {
153
+ className: className,
154
+ key: key,
155
+ style: style
156
+ }, "R:".concat(rowIndex, ", C:").concat(columnIndex));
157
+ }
158
+ }]);
159
+ }(React.PureComponent);