@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,421 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
4
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
5
+ import _inherits from "@babel/runtime/helpers/inherits";
6
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
7
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
10
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
11
+ import clsx from 'clsx';
12
+ import * as React from 'react';
13
+ import { polyfill } from 'react-lifecycles-compat';
14
+ import PositionCache from './PositionCache';
15
+ import { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';
16
+ /*:: import type {AnimationTimeoutId} from '../utils/requestAnimationTimeout';*/
17
+ /*:: type Props = {
18
+ autoHeight: boolean,
19
+ cellCount: number,
20
+ cellMeasurerCache: CellMeasurerCache,
21
+ cellPositioner: Positioner,
22
+ cellRenderer: CellRenderer,
23
+ className: ?string,
24
+ height: number,
25
+ id: ?string,
26
+ keyMapper: KeyMapper,
27
+ onCellsRendered: ?OnCellsRenderedCallback,
28
+ onScroll: ?OnScrollCallback,
29
+ overscanByPixels: number,
30
+ role: string,
31
+ scrollingResetTimeInterval: number,
32
+ style: mixed,
33
+ tabIndex: number,
34
+ width: number,
35
+ rowDirection: string,
36
+ scrollTop?: number,
37
+ };*/
38
+ /*:: type State = {
39
+ isScrolling: boolean,
40
+ scrollTop: number,
41
+ };*/
42
+ var emptyObject = {};
43
+
44
+ /**
45
+ * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.
46
+ * This improves performance and makes scrolling smoother.
47
+ */
48
+ export var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;
49
+
50
+ /**
51
+ * This component efficiently displays arbitrarily positioned cells using windowing techniques.
52
+ * Cell position is determined by an injected `cellPositioner` property.
53
+ * Windowing is vertical; this component does not support horizontal scrolling.
54
+ *
55
+ * Rendering occurs in two phases:
56
+ * 1) First pass uses estimated cell sizes (provided by the cache) to determine how many cells to measure in a batch.
57
+ * Batch size is chosen using a fast, naive layout algorithm that stacks images in order until the viewport has been filled.
58
+ * After measurement is complete (componentDidMount or componentDidUpdate) this component evaluates positioned cells
59
+ * in order to determine if another measurement pass is required (eg if actual cell sizes were less than estimated sizes).
60
+ * All measurements are permanently cached (keyed by `keyMapper`) for performance purposes.
61
+ * 2) Second pass uses the external `cellPositioner` to layout cells.
62
+ * At this time the positioner has access to cached size measurements for all cells.
63
+ * The positions it returns are cached by Masonry for fast access later.
64
+ * Phase one is repeated if the user scrolls beyond the current layout's bounds.
65
+ * If the layout is invalidated due to eg a resize, cached positions can be cleared using `recomputeCellPositions()`.
66
+ *
67
+ * Animation constraints:
68
+ * Simple animations are supported (eg translate/slide into place on initial reveal).
69
+ * More complex animations are not (eg flying from one position to another on resize).
70
+ *
71
+ * Layout constraints:
72
+ * This component supports multi-column layout.
73
+ * The height of each item may vary.
74
+ * The width of each item must not exceed the width of the column it is "in".
75
+ * The left position of all items within a column must align.
76
+ * (Items may not span multiple columns.)
77
+ */
78
+ var Masonry = /*#__PURE__*/function (_React$PureComponent) {
79
+ function Masonry() {
80
+ var _this;
81
+ _classCallCheck(this, Masonry);
82
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
83
+ args[_key] = arguments[_key];
84
+ }
85
+ _this = _callSuper(this, Masonry, [].concat(args));
86
+ _defineProperty(_this, "state", {
87
+ isScrolling: false,
88
+ scrollTop: 0
89
+ });
90
+ _defineProperty(_this, "_debounceResetIsScrollingId", void 0);
91
+ _defineProperty(_this, "_invalidateOnUpdateStartIndex", null);
92
+ _defineProperty(_this, "_invalidateOnUpdateStopIndex", null);
93
+ _defineProperty(_this, "_positionCache", new PositionCache());
94
+ _defineProperty(_this, "_startIndex", null);
95
+ _defineProperty(_this, "_startIndexMemoized", null);
96
+ _defineProperty(_this, "_stopIndex", null);
97
+ _defineProperty(_this, "_stopIndexMemoized", null);
98
+ _defineProperty(_this, "_debounceResetIsScrollingCallback", function () {
99
+ _this.setState({
100
+ isScrolling: false
101
+ });
102
+ });
103
+ _defineProperty(_this, "_setScrollingContainerRef", function (ref) {
104
+ _this._scrollingContainer = ref;
105
+ });
106
+ _defineProperty(_this, "_onScroll", function (event) {
107
+ var height = _this.props.height;
108
+ var eventScrollTop = event.currentTarget.scrollTop;
109
+
110
+ // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,
111
+ // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.
112
+ // This causes a series of rapid renders that is slow for long lists.
113
+ // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.
114
+ var scrollTop = Math.min(Math.max(0, _this._getEstimatedTotalHeight() - height), eventScrollTop);
115
+
116
+ // On iOS, we can arrive at negative offsets by swiping past the start or end.
117
+ // Avoid re-rendering in this case as it can cause problems; see #532 for more.
118
+ if (eventScrollTop !== scrollTop) {
119
+ return;
120
+ }
121
+
122
+ // Prevent pointer events from interrupting a smooth scroll
123
+ _this._debounceResetIsScrolling();
124
+
125
+ // Certain devices (like Apple touchpad) rapid-fire duplicate events.
126
+ // Don't force a re-render if this is the case.
127
+ // The mouse may move faster then the animation frame does.
128
+ // Use requestAnimationFrame to avoid over-updating.
129
+ if (_this.state.scrollTop !== scrollTop) {
130
+ _this.setState({
131
+ isScrolling: true,
132
+ scrollTop: scrollTop
133
+ });
134
+ }
135
+ });
136
+ return _this;
137
+ }
138
+ _inherits(Masonry, _React$PureComponent);
139
+ return _createClass(Masonry, [{
140
+ key: "clearCellPositions",
141
+ value: function clearCellPositions() {
142
+ this._positionCache = new PositionCache();
143
+ this.forceUpdate();
144
+ }
145
+
146
+ // HACK This method signature was intended for Grid
147
+ }, {
148
+ key: "invalidateCellSizeAfterRender",
149
+ value: function invalidateCellSizeAfterRender(_ref) {
150
+ var index = _ref.rowIndex;
151
+ if (this._invalidateOnUpdateStartIndex === null) {
152
+ this._invalidateOnUpdateStartIndex = index;
153
+ this._invalidateOnUpdateStopIndex = index;
154
+ } else {
155
+ this._invalidateOnUpdateStartIndex = Math.min(this._invalidateOnUpdateStartIndex, index);
156
+ this._invalidateOnUpdateStopIndex = Math.max(this._invalidateOnUpdateStopIndex, index);
157
+ }
158
+ }
159
+ }, {
160
+ key: "recomputeCellPositions",
161
+ value: function recomputeCellPositions() {
162
+ var stopIndex = this._positionCache.count - 1;
163
+ this._positionCache = new PositionCache();
164
+ this._populatePositionCache(0, stopIndex);
165
+ this.forceUpdate();
166
+ }
167
+ }, {
168
+ key: "componentDidMount",
169
+ value: function componentDidMount() {
170
+ this._checkInvalidateOnUpdate();
171
+ this._invokeOnScrollCallback();
172
+ this._invokeOnCellsRenderedCallback();
173
+ }
174
+ }, {
175
+ key: "componentDidUpdate",
176
+ value: function componentDidUpdate(prevProps /*: Props*/, prevState /*: State*/) {
177
+ this._checkInvalidateOnUpdate();
178
+ this._invokeOnScrollCallback();
179
+ this._invokeOnCellsRenderedCallback();
180
+ if (this.props.scrollTop !== prevProps.scrollTop) {
181
+ this._debounceResetIsScrolling();
182
+ }
183
+ }
184
+ }, {
185
+ key: "componentWillUnmount",
186
+ value: function componentWillUnmount() {
187
+ if (this._debounceResetIsScrollingId) {
188
+ cancelAnimationTimeout(this._debounceResetIsScrollingId);
189
+ }
190
+ }
191
+ }, {
192
+ key: "render",
193
+ value: function render() {
194
+ var _this2 = this;
195
+ var _this$props = this.props,
196
+ autoHeight = _this$props.autoHeight,
197
+ cellCount = _this$props.cellCount,
198
+ cellMeasurerCache = _this$props.cellMeasurerCache,
199
+ cellRenderer = _this$props.cellRenderer,
200
+ className = _this$props.className,
201
+ height = _this$props.height,
202
+ id = _this$props.id,
203
+ keyMapper = _this$props.keyMapper,
204
+ overscanByPixels = _this$props.overscanByPixels,
205
+ role = _this$props.role,
206
+ style = _this$props.style,
207
+ tabIndex = _this$props.tabIndex,
208
+ width = _this$props.width,
209
+ rowDirection = _this$props.rowDirection;
210
+ var _this$state = this.state,
211
+ isScrolling = _this$state.isScrolling,
212
+ scrollTop = _this$state.scrollTop;
213
+ var children = [];
214
+ var estimateTotalHeight = this._getEstimatedTotalHeight();
215
+ var shortestColumnSize = this._positionCache.shortestColumnSize;
216
+ var measuredCellCount = this._positionCache.count;
217
+ var startIndex = 0;
218
+ var stopIndex;
219
+ this._positionCache.range(Math.max(0, scrollTop - overscanByPixels), height + overscanByPixels * 2, function (index /*: number*/, left /*: number*/, top /*: number*/) {
220
+ if (typeof stopIndex === 'undefined') {
221
+ startIndex = index;
222
+ stopIndex = index;
223
+ } else {
224
+ startIndex = Math.min(startIndex, index);
225
+ stopIndex = Math.max(stopIndex, index);
226
+ }
227
+ children.push(cellRenderer({
228
+ index: index,
229
+ isScrolling: isScrolling,
230
+ key: keyMapper(index),
231
+ parent: _this2,
232
+ style: _defineProperty(_defineProperty(_defineProperty(_defineProperty({
233
+ height: cellMeasurerCache.getHeight(index)
234
+ }, rowDirection === 'ltr' ? 'left' : 'right', left), "position", 'absolute'), "top", top), "width", cellMeasurerCache.getWidth(index))
235
+ }));
236
+ });
237
+
238
+ // We need to measure additional cells for this layout
239
+ if (shortestColumnSize < scrollTop + height + overscanByPixels && measuredCellCount < cellCount) {
240
+ var batchSize = Math.min(cellCount - measuredCellCount, Math.ceil((scrollTop + height + overscanByPixels - shortestColumnSize) / cellMeasurerCache.defaultHeight * width / cellMeasurerCache.defaultWidth));
241
+ for (var _index = measuredCellCount; _index < measuredCellCount + batchSize; _index++) {
242
+ stopIndex = _index;
243
+ children.push(cellRenderer({
244
+ index: _index,
245
+ isScrolling: isScrolling,
246
+ key: keyMapper(_index),
247
+ parent: this,
248
+ style: {
249
+ width: cellMeasurerCache.getWidth(_index)
250
+ }
251
+ }));
252
+ }
253
+ }
254
+ this._startIndex = startIndex;
255
+ this._stopIndex = stopIndex;
256
+ return /*#__PURE__*/React.createElement("div", {
257
+ ref: this._setScrollingContainerRef,
258
+ "aria-label": this.props['aria-label'],
259
+ className: clsx('ReactVirtualized__Masonry', className),
260
+ id: id,
261
+ onScroll: this._onScroll,
262
+ role: role,
263
+ style: _objectSpread({
264
+ boxSizing: 'border-box',
265
+ direction: 'ltr',
266
+ height: autoHeight ? 'auto' : height,
267
+ overflowX: 'hidden',
268
+ overflowY: estimateTotalHeight < height ? 'hidden' : 'auto',
269
+ position: 'relative',
270
+ width: width,
271
+ WebkitOverflowScrolling: 'touch',
272
+ willChange: 'transform'
273
+ }, style),
274
+ tabIndex: tabIndex
275
+ }, /*#__PURE__*/React.createElement("div", {
276
+ className: "ReactVirtualized__Masonry__innerScrollContainer",
277
+ style: {
278
+ width: '100%',
279
+ height: estimateTotalHeight,
280
+ maxWidth: '100%',
281
+ maxHeight: estimateTotalHeight,
282
+ overflow: 'hidden',
283
+ pointerEvents: isScrolling ? 'none' : '',
284
+ position: 'relative'
285
+ }
286
+ }, children));
287
+ }
288
+ }, {
289
+ key: "_checkInvalidateOnUpdate",
290
+ value: function _checkInvalidateOnUpdate() {
291
+ if (typeof this._invalidateOnUpdateStartIndex === 'number') {
292
+ var startIndex = this._invalidateOnUpdateStartIndex;
293
+ var stopIndex = this._invalidateOnUpdateStopIndex;
294
+ this._invalidateOnUpdateStartIndex = null;
295
+ this._invalidateOnUpdateStopIndex = null;
296
+
297
+ // Query external layout logic for position of newly-measured cells
298
+ this._populatePositionCache(startIndex, stopIndex);
299
+ this.forceUpdate();
300
+ }
301
+ }
302
+ }, {
303
+ key: "_debounceResetIsScrolling",
304
+ value: function _debounceResetIsScrolling() {
305
+ var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;
306
+ if (this._debounceResetIsScrollingId) {
307
+ cancelAnimationTimeout(this._debounceResetIsScrollingId);
308
+ }
309
+ this._debounceResetIsScrollingId = requestAnimationTimeout(this._debounceResetIsScrollingCallback, scrollingResetTimeInterval);
310
+ }
311
+ }, {
312
+ key: "_getEstimatedTotalHeight",
313
+ value: function _getEstimatedTotalHeight() {
314
+ var _this$props2 = this.props,
315
+ cellCount = _this$props2.cellCount,
316
+ cellMeasurerCache = _this$props2.cellMeasurerCache,
317
+ width = _this$props2.width;
318
+ var estimatedColumnCount = Math.max(1, Math.floor(width / cellMeasurerCache.defaultWidth));
319
+ return this._positionCache.estimateTotalHeight(cellCount, estimatedColumnCount, cellMeasurerCache.defaultHeight);
320
+ }
321
+ }, {
322
+ key: "_invokeOnScrollCallback",
323
+ value: function _invokeOnScrollCallback() {
324
+ var _this$props3 = this.props,
325
+ height = _this$props3.height,
326
+ onScroll = _this$props3.onScroll;
327
+ var scrollTop = this.state.scrollTop;
328
+ if (this._onScrollMemoized !== scrollTop) {
329
+ onScroll({
330
+ clientHeight: height,
331
+ scrollHeight: this._getEstimatedTotalHeight(),
332
+ scrollTop: scrollTop
333
+ });
334
+ this._onScrollMemoized = scrollTop;
335
+ }
336
+ }
337
+ }, {
338
+ key: "_invokeOnCellsRenderedCallback",
339
+ value: function _invokeOnCellsRenderedCallback() {
340
+ if (this._startIndexMemoized !== this._startIndex || this._stopIndexMemoized !== this._stopIndex) {
341
+ var onCellsRendered = this.props.onCellsRendered;
342
+ onCellsRendered({
343
+ startIndex: this._startIndex,
344
+ stopIndex: this._stopIndex
345
+ });
346
+ this._startIndexMemoized = this._startIndex;
347
+ this._stopIndexMemoized = this._stopIndex;
348
+ }
349
+ }
350
+ }, {
351
+ key: "_populatePositionCache",
352
+ value: function _populatePositionCache(startIndex /*: number*/, stopIndex /*: number*/) {
353
+ var _this$props4 = this.props,
354
+ cellMeasurerCache = _this$props4.cellMeasurerCache,
355
+ cellPositioner = _this$props4.cellPositioner;
356
+ for (var _index2 = startIndex; _index2 <= stopIndex; _index2++) {
357
+ var _cellPositioner = cellPositioner(_index2),
358
+ left = _cellPositioner.left,
359
+ top = _cellPositioner.top;
360
+ this._positionCache.setPosition(_index2, left, top, cellMeasurerCache.getHeight(_index2));
361
+ }
362
+ }
363
+ }], [{
364
+ key: "getDerivedStateFromProps",
365
+ value: function getDerivedStateFromProps(nextProps /*: Props*/, prevState /*: State*/) /*: $Shape<State>*/{
366
+ if (nextProps.scrollTop !== undefined && prevState.scrollTop !== nextProps.scrollTop) {
367
+ return {
368
+ isScrolling: true,
369
+ scrollTop: nextProps.scrollTop
370
+ };
371
+ }
372
+ return null;
373
+ }
374
+ }]);
375
+ }(React.PureComponent);
376
+ _defineProperty(Masonry, "defaultProps", {
377
+ autoHeight: false,
378
+ keyMapper: identity,
379
+ onCellsRendered: noop,
380
+ onScroll: noop,
381
+ overscanByPixels: 20,
382
+ role: 'grid',
383
+ scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,
384
+ style: emptyObject,
385
+ tabIndex: 0,
386
+ rowDirection: 'ltr'
387
+ });
388
+ function identity(value) {
389
+ return value;
390
+ }
391
+ function noop() {}
392
+ /*:: type KeyMapper = (index: number) => mixed;*/
393
+ /*:: export type CellMeasurerCache = {
394
+ defaultHeight: number,
395
+ defaultWidth: number,
396
+ getHeight: (index: number) => number,
397
+ getWidth: (index: number) => number,
398
+ };*/
399
+ /*:: type CellRenderer = (params: {|
400
+ index: number,
401
+ isScrolling: boolean,
402
+ key: mixed,
403
+ parent: mixed,
404
+ style: mixed,
405
+ |}) => mixed;*/
406
+ /*:: type OnCellsRenderedCallback = (params: {|
407
+ startIndex: number,
408
+ stopIndex: number,
409
+ |}) => void;*/
410
+ /*:: type OnScrollCallback = (params: {|
411
+ clientHeight: number,
412
+ scrollHeight: number,
413
+ scrollTop: number,
414
+ |}) => void;*/
415
+ /*:: type Position = {
416
+ left: number,
417
+ top: number,
418
+ };*/
419
+ polyfill(Masonry);
420
+ export default Masonry;
421
+ /*:: export type Positioner = (index: number) => Position;*/
@@ -0,0 +1,82 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/createClass";
4
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
+ import createIntervalTree from '../vendor/intervalTree';
6
+ /*:: type RenderCallback = (index: number, left: number, top: number) => void;*/
7
+ // Position cache requirements:
8
+ // O(log(n)) lookup of cells to render for a given viewport size
9
+ // O(1) lookup of shortest measured column (so we know when to enter phase 1)
10
+ var PositionCache = /*#__PURE__*/function () {
11
+ function PositionCache() {
12
+ _classCallCheck(this, PositionCache);
13
+ // Tracks the height of each column
14
+ _defineProperty(this, "_columnSizeMap", {});
15
+ // Store tops and bottoms of each cell for fast intersection lookup.
16
+ _defineProperty(this, "_intervalTree", createIntervalTree());
17
+ // Maps cell index to x coordinates for quick lookup.
18
+ _defineProperty(this, "_leftMap", {});
19
+ }
20
+ return _createClass(PositionCache, [{
21
+ key: "estimateTotalHeight",
22
+ value: function estimateTotalHeight(cellCount /*: number*/, columnCount /*: number*/, defaultCellHeight /*: number*/) /*: number*/{
23
+ var unmeasuredCellCount = cellCount - this.count;
24
+ return this.tallestColumnSize + Math.ceil(unmeasuredCellCount / columnCount) * defaultCellHeight;
25
+ }
26
+
27
+ // Render all cells visible within the viewport range defined.
28
+ }, {
29
+ key: "range",
30
+ value: function range(scrollTop /*: number*/, clientHeight /*: number*/, renderCallback /*: RenderCallback*/) /*: void*/{
31
+ var _this = this;
32
+ this._intervalTree.queryInterval(scrollTop, scrollTop + clientHeight, function (_ref) {
33
+ var _ref2 = _slicedToArray(_ref, 3),
34
+ top = _ref2[0],
35
+ _ = _ref2[1],
36
+ index = _ref2[2];
37
+ return renderCallback(index, _this._leftMap[index], top);
38
+ });
39
+ }
40
+ }, {
41
+ key: "setPosition",
42
+ value: function setPosition(index /*: number*/, left /*: number*/, top /*: number*/, height /*: number*/) /*: void*/{
43
+ this._intervalTree.insert([top, top + height, index]);
44
+ this._leftMap[index] = left;
45
+ var columnSizeMap = this._columnSizeMap;
46
+ var columnHeight = columnSizeMap[left];
47
+ if (columnHeight === undefined) {
48
+ columnSizeMap[left] = top + height;
49
+ } else {
50
+ columnSizeMap[left] = Math.max(columnHeight, top + height);
51
+ }
52
+ }
53
+ }, {
54
+ key: "count",
55
+ get: function get() /*: number*/{
56
+ return this._intervalTree.count;
57
+ }
58
+ }, {
59
+ key: "shortestColumnSize",
60
+ get: function get() /*: number*/{
61
+ var columnSizeMap = this._columnSizeMap;
62
+ var size = 0;
63
+ for (var i in columnSizeMap) {
64
+ var height = columnSizeMap[(i /*: any*/)];
65
+ size = size === 0 ? height : Math.min(size, height);
66
+ }
67
+ return size;
68
+ }
69
+ }, {
70
+ key: "tallestColumnSize",
71
+ get: function get() /*: number*/{
72
+ var columnSizeMap = this._columnSizeMap;
73
+ var size = 0;
74
+ for (var i in columnSizeMap) {
75
+ var height = columnSizeMap[(i /*: any*/)];
76
+ size = Math.max(size, height);
77
+ }
78
+ return size;
79
+ }
80
+ }]);
81
+ }();
82
+ export { PositionCache as default };
@@ -0,0 +1,53 @@
1
+ /*:: import type {CellMeasurerCache, Positioner} from './Masonry';*/
2
+ /*:: type createCellPositionerParams = {
3
+ cellMeasurerCache: CellMeasurerCache,
4
+ columnCount: number,
5
+ columnWidth: number,
6
+ spacer?: number,
7
+ };*/
8
+ /*:: type resetParams = {
9
+ columnCount: number,
10
+ columnWidth: number,
11
+ spacer?: number,
12
+ };*/
13
+ export default function createCellPositioner(_ref /*:: */) /*: Positioner*/{
14
+ var cellMeasurerCache = _ref /*:: */.cellMeasurerCache,
15
+ columnCount = _ref /*:: */.columnCount,
16
+ columnWidth = _ref /*:: */.columnWidth,
17
+ _ref$spacer = _ref /*:: */.spacer,
18
+ spacer = _ref$spacer === void 0 ? 0 : _ref$spacer;
19
+ var columnHeights;
20
+ initOrResetDerivedValues();
21
+ function cellPositioner(index) {
22
+ // Find the shortest column and use it.
23
+ var columnIndex = 0;
24
+ for (var i = 1; i < columnHeights.length; i++) {
25
+ if (columnHeights[i] < columnHeights[columnIndex]) {
26
+ columnIndex = i;
27
+ }
28
+ }
29
+ var left = columnIndex * (columnWidth + spacer);
30
+ var top = columnHeights[columnIndex] || 0;
31
+ columnHeights[columnIndex] = top + cellMeasurerCache.getHeight(index) + spacer;
32
+ return {
33
+ left: left,
34
+ top: top
35
+ };
36
+ }
37
+ function initOrResetDerivedValues() /*: void*/{
38
+ // Track the height of each column.
39
+ // Layout algorithm below always inserts into the shortest column.
40
+ columnHeights = [];
41
+ for (var i = 0; i < columnCount; i++) {
42
+ columnHeights[i] = 0;
43
+ }
44
+ }
45
+ function reset(params /*: resetParams*/) /*: void*/{
46
+ columnCount = params.columnCount;
47
+ columnWidth = params.columnWidth;
48
+ spacer = params.spacer;
49
+ initOrResetDerivedValues();
50
+ }
51
+ cellPositioner.reset = reset;
52
+ return cellPositioner;
53
+ }
@@ -0,0 +1,4 @@
1
+ import createCellPositioner from './createCellPositioner';
2
+ import Masonry from './Masonry';
3
+ export default Masonry;
4
+ export { createCellPositioner, Masonry };
@@ -0,0 +1,100 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ import { CellMeasurerCache } from '../CellMeasurer';
5
+ /*:: type CellMeasurerCacheDecoratorParams = {
6
+ cellMeasurerCache: CellMeasurerCache,
7
+ columnIndexOffset: number,
8
+ rowIndexOffset: number,
9
+ };*/
10
+ /*:: type IndexParam = {
11
+ index: number,
12
+ };*/
13
+ /**
14
+ * Caches measurements for a given cell.
15
+ */
16
+ var CellMeasurerCacheDecorator = /*#__PURE__*/function () {
17
+ function CellMeasurerCacheDecorator() {
18
+ var _this = this;
19
+ var params /*: CellMeasurerCacheDecoratorParams*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
20
+ _classCallCheck(this, CellMeasurerCacheDecorator);
21
+ _defineProperty(this, "_cellMeasurerCache", void 0);
22
+ _defineProperty(this, "_columnIndexOffset", void 0);
23
+ _defineProperty(this, "_rowIndexOffset", void 0);
24
+ _defineProperty(this, "columnWidth", function (_ref /*:: */) {
25
+ var index = _ref /*:: */.index;
26
+ _this._cellMeasurerCache.columnWidth({
27
+ index: index + _this._columnIndexOffset
28
+ });
29
+ });
30
+ _defineProperty(this, "rowHeight", function (_ref2 /*:: */) {
31
+ var index = _ref2 /*:: */.index;
32
+ _this._cellMeasurerCache.rowHeight({
33
+ index: index + _this._rowIndexOffset
34
+ });
35
+ });
36
+ var cellMeasurerCache = params.cellMeasurerCache,
37
+ _params$columnIndexOf = params.columnIndexOffset,
38
+ columnIndexOffset = _params$columnIndexOf === void 0 ? 0 : _params$columnIndexOf,
39
+ _params$rowIndexOffse = params.rowIndexOffset,
40
+ rowIndexOffset = _params$rowIndexOffse === void 0 ? 0 : _params$rowIndexOffse;
41
+ this._cellMeasurerCache = cellMeasurerCache;
42
+ this._columnIndexOffset = columnIndexOffset;
43
+ this._rowIndexOffset = rowIndexOffset;
44
+ }
45
+ return _createClass(CellMeasurerCacheDecorator, [{
46
+ key: "clear",
47
+ value: function clear(rowIndex /*: number*/, columnIndex /*: number*/) /*: void*/{
48
+ this._cellMeasurerCache.clear(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);
49
+ }
50
+ }, {
51
+ key: "clearAll",
52
+ value: function clearAll() /*: void*/{
53
+ this._cellMeasurerCache.clearAll();
54
+ }
55
+ }, {
56
+ key: "defaultHeight",
57
+ get: function get() /*: number*/{
58
+ return this._cellMeasurerCache.defaultHeight;
59
+ }
60
+ }, {
61
+ key: "defaultWidth",
62
+ get: function get() /*: number*/{
63
+ return this._cellMeasurerCache.defaultWidth;
64
+ }
65
+ }, {
66
+ key: "hasFixedHeight",
67
+ value: function hasFixedHeight() /*: boolean*/{
68
+ return this._cellMeasurerCache.hasFixedHeight();
69
+ }
70
+ }, {
71
+ key: "hasFixedWidth",
72
+ value: function hasFixedWidth() /*: boolean*/{
73
+ return this._cellMeasurerCache.hasFixedWidth();
74
+ }
75
+ }, {
76
+ key: "getHeight",
77
+ value: function getHeight(rowIndex /*: number*/) /*: ?number*/{
78
+ var columnIndex /*: ?number*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
79
+ return this._cellMeasurerCache.getHeight(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);
80
+ }
81
+ }, {
82
+ key: "getWidth",
83
+ value: function getWidth(rowIndex /*: number*/) /*: ?number*/{
84
+ var columnIndex /*: ?number*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
85
+ return this._cellMeasurerCache.getWidth(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);
86
+ }
87
+ }, {
88
+ key: "has",
89
+ value: function has(rowIndex /*: number*/) /*: boolean*/{
90
+ var columnIndex /*: ?number*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
91
+ return this._cellMeasurerCache.has(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);
92
+ }
93
+ }, {
94
+ key: "set",
95
+ value: function set(rowIndex /*: number*/, columnIndex /*: number*/, width /*: number*/, height /*: number*/) /*: void*/{
96
+ this._cellMeasurerCache.set(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset, (width /*: number*/), (height /*: number*/));
97
+ }
98
+ }]);
99
+ }();
100
+ export { CellMeasurerCacheDecorator as default };