virtual-scroller 1.13.1 → 1.15.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 (231) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +825 -578
  3. package/bundle/index-dom-bypass.html +198 -0
  4. package/bundle/index-dom-grid.html +204 -0
  5. package/bundle/index-dom-scrollableContainer.html +215 -0
  6. package/bundle/index-dom-tbody-scrollableContainer.html +81 -0
  7. package/bundle/index-dom-tbody.html +65 -0
  8. package/bundle/index-dom.html +116 -83
  9. package/bundle/{index-bypass.html → index-react-bypass.html} +83 -78
  10. package/bundle/{index-grid.html → index-react-grid.html} +78 -91
  11. package/bundle/{index-scrollableContainer.html → index-react-scrollableContainer.html} +96 -91
  12. package/bundle/index-react-strictMode.html +199 -0
  13. package/bundle/index-react-tbody-scrollableContainer.html +96 -0
  14. package/bundle/index-react-tbody.html +80 -0
  15. package/bundle/{messages.js → items.js} +1 -1
  16. package/bundle/lib/babel.min.js +25 -0
  17. package/bundle/lib/prop-types.min.js +1 -0
  18. package/bundle/lib/react-dom.development.js +29924 -0
  19. package/bundle/lib/react-dom.production.min.js +267 -0
  20. package/bundle/lib/react.development.js +3343 -0
  21. package/bundle/lib/react.production.min.js +31 -0
  22. package/bundle/style.base.css +33 -0
  23. package/{website/style.css → bundle/style.list.css} +10 -43
  24. package/bundle/style.list.grid.css +23 -0
  25. package/bundle/virtual-scroller-dom.js +1 -1
  26. package/bundle/virtual-scroller-dom.js.map +1 -1
  27. package/bundle/virtual-scroller-react.js +1 -1
  28. package/bundle/virtual-scroller-react.js.map +1 -1
  29. package/bundle/virtual-scroller.js +1 -1
  30. package/bundle/virtual-scroller.js.map +1 -1
  31. package/commonjs/BeforeResize.js +1 -2
  32. package/commonjs/BeforeResize.js.map +1 -1
  33. package/commonjs/DOM/VirtualScroller.js +67 -44
  34. package/commonjs/DOM/VirtualScroller.js.map +1 -1
  35. package/commonjs/DOM/tbody.js +15 -15
  36. package/commonjs/DOM/tbody.js.map +1 -1
  37. package/commonjs/ItemHeights.js +10 -13
  38. package/commonjs/ItemHeights.js.map +1 -1
  39. package/commonjs/Layout.defaults.js +21 -0
  40. package/commonjs/Layout.defaults.js.map +1 -0
  41. package/commonjs/Layout.js +78 -67
  42. package/commonjs/Layout.js.map +1 -1
  43. package/commonjs/Layout.test.js +8 -4
  44. package/commonjs/Layout.test.js.map +1 -1
  45. package/commonjs/Scroll.js +3 -3
  46. package/commonjs/Scroll.js.map +1 -1
  47. package/commonjs/ScrollableContainerResizeHandler.js +4 -5
  48. package/commonjs/ScrollableContainerResizeHandler.js.map +1 -1
  49. package/commonjs/VirtualScroller.constructor.js +53 -31
  50. package/commonjs/VirtualScroller.constructor.js.map +1 -1
  51. package/commonjs/VirtualScroller.items.js +50 -4
  52. package/commonjs/VirtualScroller.items.js.map +1 -1
  53. package/commonjs/VirtualScroller.js +44 -28
  54. package/commonjs/VirtualScroller.js.map +1 -1
  55. package/commonjs/VirtualScroller.layout.js +42 -31
  56. package/commonjs/VirtualScroller.layout.js.map +1 -1
  57. package/commonjs/VirtualScroller.onContainerResize.js +1 -2
  58. package/commonjs/VirtualScroller.onContainerResize.js.map +1 -1
  59. package/commonjs/VirtualScroller.onRender.js +1 -1
  60. package/commonjs/VirtualScroller.onRender.js.map +1 -1
  61. package/commonjs/VirtualScroller.state.js +18 -9
  62. package/commonjs/VirtualScroller.state.js.map +1 -1
  63. package/commonjs/VirtualScroller.verticalSpacing.js +39 -6
  64. package/commonjs/VirtualScroller.verticalSpacing.js.map +1 -1
  65. package/commonjs/react/VirtualScroller.js +98 -37
  66. package/commonjs/react/VirtualScroller.js.map +1 -1
  67. package/commonjs/react/useClassName.js +2 -2
  68. package/commonjs/react/useClassName.js.map +1 -1
  69. package/commonjs/react/useForwardedRef.js +50 -0
  70. package/commonjs/react/useForwardedRef.js.map +1 -0
  71. package/commonjs/react/useInstanceMethods.js +4 -4
  72. package/commonjs/react/useInstanceMethods.js.map +1 -1
  73. package/commonjs/react/useItemKeys.js +28 -5
  74. package/commonjs/react/useItemKeys.js.map +1 -1
  75. package/commonjs/react/useOnItemHeightDidChange.js +28 -12
  76. package/commonjs/react/useOnItemHeightDidChange.js.map +1 -1
  77. package/commonjs/react/useSetItemState.js +31 -12
  78. package/commonjs/react/useSetItemState.js.map +1 -1
  79. package/commonjs/react/useState.js +10 -11
  80. package/commonjs/react/useState.js.map +1 -1
  81. package/commonjs/react/{useStateNoStaleBug.js → useStateWithRepeatableRead.js} +3 -3
  82. package/commonjs/react/useStateWithRepeatableRead.js.map +1 -0
  83. package/commonjs/react/useStyle.js +10 -4
  84. package/commonjs/react/useStyle.js.map +1 -1
  85. package/commonjs/react/useValidateTableBodyItemsContainer.js +24 -0
  86. package/commonjs/react/useValidateTableBodyItemsContainer.js.map +1 -0
  87. package/commonjs/react/useVirtualScroller.js +12 -14
  88. package/commonjs/react/useVirtualScroller.js.map +1 -1
  89. package/commonjs/test/ItemsContainer.js +10 -10
  90. package/commonjs/test/ItemsContainer.js.map +1 -1
  91. package/commonjs/test/VirtualScroller.js +25 -10
  92. package/commonjs/test/VirtualScroller.js.map +1 -1
  93. package/dom/index.d.ts +11 -9
  94. package/index.d.ts +19 -9
  95. package/modules/BeforeResize.js +1 -2
  96. package/modules/BeforeResize.js.map +1 -1
  97. package/modules/DOM/VirtualScroller.js +67 -44
  98. package/modules/DOM/VirtualScroller.js.map +1 -1
  99. package/modules/DOM/tbody.js +14 -13
  100. package/modules/DOM/tbody.js.map +1 -1
  101. package/modules/ItemHeights.js +11 -14
  102. package/modules/ItemHeights.js.map +1 -1
  103. package/modules/Layout.defaults.js +11 -0
  104. package/modules/Layout.defaults.js.map +1 -0
  105. package/modules/Layout.js +77 -67
  106. package/modules/Layout.js.map +1 -1
  107. package/modules/Layout.test.js +8 -4
  108. package/modules/Layout.test.js.map +1 -1
  109. package/modules/Scroll.js +3 -3
  110. package/modules/Scroll.js.map +1 -1
  111. package/modules/ScrollableContainerResizeHandler.js +4 -5
  112. package/modules/ScrollableContainerResizeHandler.js.map +1 -1
  113. package/modules/VirtualScroller.constructor.js +53 -31
  114. package/modules/VirtualScroller.constructor.js.map +1 -1
  115. package/modules/VirtualScroller.items.js +51 -5
  116. package/modules/VirtualScroller.items.js.map +1 -1
  117. package/modules/VirtualScroller.js +44 -28
  118. package/modules/VirtualScroller.js.map +1 -1
  119. package/modules/VirtualScroller.layout.js +42 -31
  120. package/modules/VirtualScroller.layout.js.map +1 -1
  121. package/modules/VirtualScroller.onContainerResize.js +1 -2
  122. package/modules/VirtualScroller.onContainerResize.js.map +1 -1
  123. package/modules/VirtualScroller.onRender.js +1 -1
  124. package/modules/VirtualScroller.onRender.js.map +1 -1
  125. package/modules/VirtualScroller.state.js +18 -9
  126. package/modules/VirtualScroller.state.js.map +1 -1
  127. package/modules/VirtualScroller.verticalSpacing.js +38 -6
  128. package/modules/VirtualScroller.verticalSpacing.js.map +1 -1
  129. package/modules/react/VirtualScroller.js +97 -38
  130. package/modules/react/VirtualScroller.js.map +1 -1
  131. package/modules/react/useClassName.js +3 -3
  132. package/modules/react/useClassName.js.map +1 -1
  133. package/modules/react/useForwardedRef.js +42 -0
  134. package/modules/react/useForwardedRef.js.map +1 -0
  135. package/modules/react/useInstanceMethods.js +4 -4
  136. package/modules/react/useInstanceMethods.js.map +1 -1
  137. package/modules/react/useItemKeys.js +28 -5
  138. package/modules/react/useItemKeys.js.map +1 -1
  139. package/modules/react/useOnItemHeightDidChange.js +28 -12
  140. package/modules/react/useOnItemHeightDidChange.js.map +1 -1
  141. package/modules/react/useSetItemState.js +31 -12
  142. package/modules/react/useSetItemState.js.map +1 -1
  143. package/modules/react/useState.js +10 -11
  144. package/modules/react/useState.js.map +1 -1
  145. package/modules/react/{useStateNoStaleBug.js → useStateWithRepeatableRead.js} +2 -2
  146. package/modules/react/useStateWithRepeatableRead.js.map +1 -0
  147. package/modules/react/useStyle.js +10 -4
  148. package/modules/react/useStyle.js.map +1 -1
  149. package/modules/react/useValidateTableBodyItemsContainer.js +16 -0
  150. package/modules/react/useValidateTableBodyItemsContainer.js.map +1 -0
  151. package/modules/react/useVirtualScroller.js +10 -12
  152. package/modules/react/useVirtualScroller.js.map +1 -1
  153. package/modules/test/ItemsContainer.js +10 -10
  154. package/modules/test/ItemsContainer.js.map +1 -1
  155. package/modules/test/VirtualScroller.js +25 -10
  156. package/modules/test/VirtualScroller.js.map +1 -1
  157. package/package.json +1 -1
  158. package/react/as.d.ts +42 -0
  159. package/react/index.d.ts +204 -63
  160. package/source/BeforeResize.js +1 -2
  161. package/source/DOM/VirtualScroller.js +65 -40
  162. package/source/DOM/tbody.js +15 -14
  163. package/source/ItemHeights.js +11 -12
  164. package/source/Layout.defaults.js +8 -0
  165. package/source/Layout.js +69 -56
  166. package/source/Layout.test.js +7 -2
  167. package/source/Scroll.js +3 -3
  168. package/source/ScrollableContainerResizeHandler.js +4 -4
  169. package/source/VirtualScroller.constructor.js +40 -31
  170. package/source/VirtualScroller.items.js +47 -2
  171. package/source/VirtualScroller.js +49 -27
  172. package/source/VirtualScroller.layout.js +43 -30
  173. package/source/VirtualScroller.onContainerResize.js +1 -2
  174. package/source/VirtualScroller.onRender.js +1 -1
  175. package/source/VirtualScroller.state.js +18 -11
  176. package/source/VirtualScroller.verticalSpacing.js +32 -6
  177. package/source/react/VirtualScroller.js +111 -36
  178. package/source/react/useClassName.js +3 -3
  179. package/source/react/useForwardedRef.js +39 -0
  180. package/source/react/useInstanceMethods.js +12 -4
  181. package/source/react/useItemKeys.js +22 -4
  182. package/source/react/useOnItemHeightDidChange.js +29 -10
  183. package/source/react/useSetItemState.js +32 -10
  184. package/source/react/useState.js +7 -8
  185. package/source/react/{useStateNoStaleBug.js → useStateWithRepeatableRead.js} +1 -1
  186. package/source/react/useStyle.js +3 -2
  187. package/source/react/useValidateTableBodyItemsContainer.js +16 -0
  188. package/source/react/useVirtualScroller.js +4 -6
  189. package/source/test/ItemsContainer.js +10 -10
  190. package/source/test/VirtualScroller.js +16 -10
  191. package/website/index-dom-bypass.html +198 -0
  192. package/website/index-dom-grid.html +204 -0
  193. package/website/index-dom-scrollableContainer.html +215 -0
  194. package/website/index-dom-tbody-scrollableContainer.html +81 -0
  195. package/website/index-dom-tbody.html +65 -0
  196. package/website/index-dom.html +117 -84
  197. package/website/index-react-bypass.html +200 -0
  198. package/website/{index-grid.html → index-react-grid.html} +79 -92
  199. package/website/index-react-scrollableContainer.html +213 -0
  200. package/website/index-react-strictMode.html +199 -0
  201. package/website/index-react-tbody-scrollableContainer.html +96 -0
  202. package/website/index-react-tbody.html +80 -0
  203. package/website/{index-bypass.html → index-react.html} +84 -70
  204. package/website/index.html +84 -69
  205. package/website/{messages.js → items.js} +1 -1
  206. package/website/lib/babel.min.js +25 -0
  207. package/website/lib/prop-types.min.js +1 -0
  208. package/website/lib/react-dom.development.js +29924 -0
  209. package/website/lib/react-dom.production.min.js +267 -0
  210. package/website/lib/react.development.js +3343 -0
  211. package/website/lib/react.production.min.js +31 -0
  212. package/website/style.base.css +33 -0
  213. package/website/style.list.css +92 -0
  214. package/website/style.list.grid.css +23 -0
  215. package/bundle/index-tbody-scrollableContainer.html +0 -70
  216. package/bundle/index-tbody.html +0 -57
  217. package/bundle/on-scroll-to-dom.js +0 -2
  218. package/bundle/on-scroll-to-dom.js.map +0 -1
  219. package/bundle/on-scroll-to-react.js +0 -2
  220. package/bundle/on-scroll-to-react.js.map +0 -1
  221. package/bundle/on-scroll-to.js +0 -2
  222. package/bundle/on-scroll-to.js.map +0 -1
  223. package/commonjs/react/useStateNoStaleBug.js.map +0 -1
  224. package/modules/react/useStateNoStaleBug.js.map +0 -1
  225. package/website/index-scrollableContainer.html +0 -208
  226. package/website/index-tbody-scrollableContainer.html +0 -70
  227. package/website/index-tbody.html +0 -57
  228. package/website/lib/on-scroll-to-dom.js +0 -2
  229. package/website/lib/on-scroll-to-dom.js.map +0 -1
  230. package/website/lib/on-scroll-to-react.js +0 -2
  231. package/website/lib/on-scroll-to-react.js.map +0 -1
@@ -1,5 +1,3 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
-
3
1
  import { useMemo } from 'react';
4
2
  import VirtualScroller from '../VirtualScroller.js'; // Creates a `VirtualScroller` instance.
5
3
 
@@ -8,8 +6,8 @@ export default function useVirtualScroller(_ref, _ref2) {
8
6
  estimatedItemHeight = _ref.estimatedItemHeight,
9
7
  getEstimatedItemHeight = _ref.getEstimatedItemHeight,
10
8
  getEstimatedVisibleItemRowsCount = _ref.getEstimatedVisibleItemRowsCount,
9
+ getEstimatedInterItemVerticalSpacing = _ref.getEstimatedInterItemVerticalSpacing,
11
10
  bypass = _ref.bypass,
12
- tbody = _ref.tbody,
13
11
  onItemInitialRender = _ref.onItemInitialRender,
14
12
  onItemFirstRender = _ref.onItemFirstRender,
15
13
  initialScrollPosition = _ref.initialScrollPosition,
@@ -19,26 +17,23 @@ export default function useVirtualScroller(_ref, _ref2) {
19
17
  getScrollableContainer = _ref.getScrollableContainer,
20
18
  getColumnsCount = _ref.getColumnsCount,
21
19
  getItemId = _ref.getItemId,
22
- AsComponent = _ref.AsComponent,
23
20
  initialState = _ref.initialState,
24
21
  getInitialItemState = _ref.getInitialItemState,
25
22
  onStateChange = _ref.onStateChange;
26
- var container = _ref2.container;
23
+ var itemsContainer = _ref2.itemsContainer;
27
24
  return useMemo(function () {
28
- var _VirtualScroller;
29
-
30
25
  // Create `virtual-scroller` instance.
31
26
  return new VirtualScroller(function () {
32
- return container.current;
33
- }, items, (_VirtualScroller = {
27
+ return itemsContainer.current;
28
+ }, items, {
34
29
  _useTimeoutInRenderLoop: true,
35
30
  // `estimatedItemHeight` is deprecated, use `getEstimatedItemHeight()` instead.
36
31
  estimatedItemHeight: estimatedItemHeight,
37
32
  getEstimatedItemHeight: getEstimatedItemHeight,
38
33
  getEstimatedVisibleItemRowsCount: getEstimatedVisibleItemRowsCount,
34
+ getEstimatedInterItemVerticalSpacing: getEstimatedInterItemVerticalSpacing,
39
35
  bypass: bypass,
40
36
  // bypassBatchSize,
41
- tbody: tbody,
42
37
  onItemInitialRender: onItemInitialRender,
43
38
  // `onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.
44
39
  onItemFirstRender: onItemFirstRender,
@@ -50,8 +45,11 @@ export default function useVirtualScroller(_ref, _ref2) {
50
45
  scrollableContainer: scrollableContainer,
51
46
  getScrollableContainer: getScrollableContainer,
52
47
  getColumnsCount: getColumnsCount,
53
- getItemId: getItemId
54
- }, _defineProperty(_VirtualScroller, "tbody", AsComponent === 'tbody'), _defineProperty(_VirtualScroller, "state", initialState), _defineProperty(_VirtualScroller, "getInitialItemState", getInitialItemState), _defineProperty(_VirtualScroller, "onStateChange", onStateChange), _VirtualScroller));
48
+ getItemId: getItemId,
49
+ state: initialState,
50
+ getInitialItemState: getInitialItemState,
51
+ onStateChange: onStateChange
52
+ });
55
53
  }, []);
56
54
  }
57
55
  //# sourceMappingURL=useVirtualScroller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useVirtualScroller.js","names":["useMemo","VirtualScroller","useVirtualScroller","items","estimatedItemHeight","getEstimatedItemHeight","getEstimatedVisibleItemRowsCount","bypass","tbody","onItemInitialRender","onItemFirstRender","initialScrollPosition","onScrollPositionChange","measureItemsBatchSize","scrollableContainer","getScrollableContainer","getColumnsCount","getItemId","AsComponent","initialState","getInitialItemState","onStateChange","container","current","_useTimeoutInRenderLoop"],"sources":["../../source/react/useVirtualScroller.js"],"sourcesContent":["import { useMemo } from 'react'\r\n\r\nimport VirtualScroller from '../VirtualScroller.js'\r\n\r\n// Creates a `VirtualScroller` instance.\r\nexport default function useVirtualScroller({\r\n\titems,\r\n\t// `estimatedItemHeight` is deprecated, use `getEstimatedItemHeight()` instead.\r\n\testimatedItemHeight,\r\n\tgetEstimatedItemHeight,\r\n\tgetEstimatedVisibleItemRowsCount,\r\n\tbypass,\r\n\t// bypassBatchSize,\r\n\ttbody,\r\n\tonItemInitialRender,\r\n\t// `onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.\r\n\tonItemFirstRender,\r\n\tinitialScrollPosition,\r\n\tonScrollPositionChange,\r\n\tmeasureItemsBatchSize,\r\n\t// `scrollableContainer` property is deprecated.\r\n\t// Use `getScrollableContainer()` property instead.\r\n\tscrollableContainer,\r\n\tgetScrollableContainer,\r\n\tgetColumnsCount,\r\n\tgetItemId,\r\n\tAsComponent,\r\n\tinitialState,\r\n\tgetInitialItemState,\r\n\tonStateChange\r\n}, {\r\n\tcontainer\r\n}) {\r\n\treturn useMemo(() => {\r\n\t\t// Create `virtual-scroller` instance.\r\n\t\treturn new VirtualScroller(\r\n\t\t\t() => container.current,\r\n\t\t\titems,\r\n\t\t\t{\r\n\t\t\t\t_useTimeoutInRenderLoop: true,\r\n\t\t\t\t// `estimatedItemHeight` is deprecated, use `getEstimatedItemHeight()` instead.\r\n\t\t\t\testimatedItemHeight,\r\n\t\t\t\tgetEstimatedItemHeight,\r\n\t\t\t\tgetEstimatedVisibleItemRowsCount,\r\n\t\t\t\tbypass,\r\n\t\t\t\t// bypassBatchSize,\r\n\t\t\t\ttbody,\r\n\t\t\t\tonItemInitialRender,\r\n\t\t\t\t// `onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.\r\n\t\t\t\tonItemFirstRender,\r\n\t\t\t\tinitialScrollPosition,\r\n\t\t\t\tonScrollPositionChange,\r\n\t\t\t\tmeasureItemsBatchSize,\r\n\t\t\t\t// `scrollableContainer` property is deprecated.\r\n\t\t\t\t// Use `getScrollableContainer()` property instead.\r\n\t\t\t\tscrollableContainer,\r\n\t\t\t\tgetScrollableContainer,\r\n\t\t\t\tgetColumnsCount,\r\n\t\t\t\tgetItemId,\r\n\t\t\t\ttbody: AsComponent === 'tbody',\r\n\t\t\t\tstate: initialState,\r\n\t\t\t\tgetInitialItemState,\r\n\t\t\t\tonStateChange\r\n\t\t\t}\r\n\t\t)\r\n\t}, [])\r\n}"],"mappings":";;AAAA,SAASA,OAAT,QAAwB,OAAxB;AAEA,OAAOC,eAAP,MAA4B,uBAA5B,C,CAEA;;AACA,eAAe,SAASC,kBAAT,cA2BZ;EAAA,IA1BFC,KA0BE,QA1BFA,KA0BE;EAAA,IAxBFC,mBAwBE,QAxBFA,mBAwBE;EAAA,IAvBFC,sBAuBE,QAvBFA,sBAuBE;EAAA,IAtBFC,gCAsBE,QAtBFA,gCAsBE;EAAA,IArBFC,MAqBE,QArBFA,MAqBE;EAAA,IAnBFC,KAmBE,QAnBFA,KAmBE;EAAA,IAlBFC,mBAkBE,QAlBFA,mBAkBE;EAAA,IAhBFC,iBAgBE,QAhBFA,iBAgBE;EAAA,IAfFC,qBAeE,QAfFA,qBAeE;EAAA,IAdFC,sBAcE,QAdFA,sBAcE;EAAA,IAbFC,qBAaE,QAbFA,qBAaE;EAAA,IAVFC,mBAUE,QAVFA,mBAUE;EAAA,IATFC,sBASE,QATFA,sBASE;EAAA,IARFC,eAQE,QARFA,eAQE;EAAA,IAPFC,SAOE,QAPFA,SAOE;EAAA,IANFC,WAME,QANFA,WAME;EAAA,IALFC,YAKE,QALFA,YAKE;EAAA,IAJFC,mBAIE,QAJFA,mBAIE;EAAA,IAHFC,aAGE,QAHFA,aAGE;EAAA,IADFC,SACE,SADFA,SACE;EACF,OAAOtB,OAAO,CAAC,YAAM;IAAA;;IACpB;IACA,OAAO,IAAIC,eAAJ,CACN;MAAA,OAAMqB,SAAS,CAACC,OAAhB;IAAA,CADM,EAENpB,KAFM;MAILqB,uBAAuB,EAAE,IAJpB;MAKL;MACApB,mBAAmB,EAAnBA,mBANK;MAOLC,sBAAsB,EAAtBA,sBAPK;MAQLC,gCAAgC,EAAhCA,gCARK;MASLC,MAAM,EAANA,MATK;MAUL;MACAC,KAAK,EAALA,KAXK;MAYLC,mBAAmB,EAAnBA,mBAZK;MAaL;MACAC,iBAAiB,EAAjBA,iBAdK;MAeLC,qBAAqB,EAArBA,qBAfK;MAgBLC,sBAAsB,EAAtBA,sBAhBK;MAiBLC,qBAAqB,EAArBA,qBAjBK;MAkBL;MACA;MACAC,mBAAmB,EAAnBA,mBApBK;MAqBLC,sBAAsB,EAAtBA,sBArBK;MAsBLC,eAAe,EAAfA,eAtBK;MAuBLC,SAAS,EAATA;IAvBK,8CAwBEC,WAAW,KAAK,OAxBlB,8CAyBEC,YAzBF,4DA0BLC,mBA1BK,sDA2BLC,aA3BK,qBAAP;EA8BA,CAhCa,EAgCX,EAhCW,CAAd;AAiCA"}
1
+ {"version":3,"file":"useVirtualScroller.js","names":["useMemo","VirtualScroller","useVirtualScroller","items","estimatedItemHeight","getEstimatedItemHeight","getEstimatedVisibleItemRowsCount","getEstimatedInterItemVerticalSpacing","bypass","onItemInitialRender","onItemFirstRender","initialScrollPosition","onScrollPositionChange","measureItemsBatchSize","scrollableContainer","getScrollableContainer","getColumnsCount","getItemId","initialState","getInitialItemState","onStateChange","itemsContainer","current","_useTimeoutInRenderLoop","state"],"sources":["../../source/react/useVirtualScroller.js"],"sourcesContent":["import { useMemo } from 'react'\r\n\r\nimport VirtualScroller from '../VirtualScroller.js'\r\n\r\n// Creates a `VirtualScroller` instance.\r\nexport default function useVirtualScroller({\r\n\titems,\r\n\t// `estimatedItemHeight` is deprecated, use `getEstimatedItemHeight()` instead.\r\n\testimatedItemHeight,\r\n\tgetEstimatedItemHeight,\r\n\tgetEstimatedVisibleItemRowsCount,\r\n\tgetEstimatedInterItemVerticalSpacing,\r\n\tbypass,\r\n\t// bypassBatchSize,\r\n\tonItemInitialRender,\r\n\t// `onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.\r\n\tonItemFirstRender,\r\n\tinitialScrollPosition,\r\n\tonScrollPositionChange,\r\n\tmeasureItemsBatchSize,\r\n\t// `scrollableContainer` property is deprecated.\r\n\t// Use `getScrollableContainer()` property instead.\r\n\tscrollableContainer,\r\n\tgetScrollableContainer,\r\n\tgetColumnsCount,\r\n\tgetItemId,\r\n\tinitialState,\r\n\tgetInitialItemState,\r\n\tonStateChange\r\n}, {\r\n\titemsContainer\r\n}) {\r\n\treturn useMemo(() => {\r\n\t\t// Create `virtual-scroller` instance.\r\n\t\treturn new VirtualScroller(\r\n\t\t\t() => itemsContainer.current,\r\n\t\t\titems,\r\n\t\t\t{\r\n\t\t\t\t_useTimeoutInRenderLoop: true,\r\n\t\t\t\t// `estimatedItemHeight` is deprecated, use `getEstimatedItemHeight()` instead.\r\n\t\t\t\testimatedItemHeight,\r\n\t\t\t\tgetEstimatedItemHeight,\r\n\t\t\t\tgetEstimatedVisibleItemRowsCount,\r\n\t\t\t\tgetEstimatedInterItemVerticalSpacing,\r\n\t\t\t\tbypass,\r\n\t\t\t\t// bypassBatchSize,\r\n\t\t\t\tonItemInitialRender,\r\n\t\t\t\t// `onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.\r\n\t\t\t\tonItemFirstRender,\r\n\t\t\t\tinitialScrollPosition,\r\n\t\t\t\tonScrollPositionChange,\r\n\t\t\t\tmeasureItemsBatchSize,\r\n\t\t\t\t// `scrollableContainer` property is deprecated.\r\n\t\t\t\t// Use `getScrollableContainer()` property instead.\r\n\t\t\t\tscrollableContainer,\r\n\t\t\t\tgetScrollableContainer,\r\n\t\t\t\tgetColumnsCount,\r\n\t\t\t\tgetItemId,\r\n\t\t\t\tstate: initialState,\r\n\t\t\t\tgetInitialItemState,\r\n\t\t\t\tonStateChange\r\n\t\t\t}\r\n\t\t)\r\n\t}, [])\r\n}"],"mappings":"AAAA,SAASA,OAAT,QAAwB,OAAxB;AAEA,OAAOC,eAAP,MAA4B,uBAA5B,C,CAEA;;AACA,eAAe,SAASC,kBAAT,cA0BZ;EAAA,IAzBFC,KAyBE,QAzBFA,KAyBE;EAAA,IAvBFC,mBAuBE,QAvBFA,mBAuBE;EAAA,IAtBFC,sBAsBE,QAtBFA,sBAsBE;EAAA,IArBFC,gCAqBE,QArBFA,gCAqBE;EAAA,IApBFC,oCAoBE,QApBFA,oCAoBE;EAAA,IAnBFC,MAmBE,QAnBFA,MAmBE;EAAA,IAjBFC,mBAiBE,QAjBFA,mBAiBE;EAAA,IAfFC,iBAeE,QAfFA,iBAeE;EAAA,IAdFC,qBAcE,QAdFA,qBAcE;EAAA,IAbFC,sBAaE,QAbFA,sBAaE;EAAA,IAZFC,qBAYE,QAZFA,qBAYE;EAAA,IATFC,mBASE,QATFA,mBASE;EAAA,IARFC,sBAQE,QARFA,sBAQE;EAAA,IAPFC,eAOE,QAPFA,eAOE;EAAA,IANFC,SAME,QANFA,SAME;EAAA,IALFC,YAKE,QALFA,YAKE;EAAA,IAJFC,mBAIE,QAJFA,mBAIE;EAAA,IAHFC,aAGE,QAHFA,aAGE;EAAA,IADFC,cACE,SADFA,cACE;EACF,OAAOrB,OAAO,CAAC,YAAM;IACpB;IACA,OAAO,IAAIC,eAAJ,CACN;MAAA,OAAMoB,cAAc,CAACC,OAArB;IAAA,CADM,EAENnB,KAFM,EAGN;MACCoB,uBAAuB,EAAE,IAD1B;MAEC;MACAnB,mBAAmB,EAAnBA,mBAHD;MAICC,sBAAsB,EAAtBA,sBAJD;MAKCC,gCAAgC,EAAhCA,gCALD;MAMCC,oCAAoC,EAApCA,oCAND;MAOCC,MAAM,EAANA,MAPD;MAQC;MACAC,mBAAmB,EAAnBA,mBATD;MAUC;MACAC,iBAAiB,EAAjBA,iBAXD;MAYCC,qBAAqB,EAArBA,qBAZD;MAaCC,sBAAsB,EAAtBA,sBAbD;MAcCC,qBAAqB,EAArBA,qBAdD;MAeC;MACA;MACAC,mBAAmB,EAAnBA,mBAjBD;MAkBCC,sBAAsB,EAAtBA,sBAlBD;MAmBCC,eAAe,EAAfA,eAnBD;MAoBCC,SAAS,EAATA,SApBD;MAqBCO,KAAK,EAAEN,YArBR;MAsBCC,mBAAmB,EAAnBA,mBAtBD;MAuBCC,aAAa,EAAbA;IAvBD,CAHM,CAAP;EA6BA,CA/Ba,EA+BX,EA/BW,CAAd;AAgCA"}
@@ -43,14 +43,14 @@ var ItemsContainer = /*#__PURE__*/function () {
43
43
  var i = 0;
44
44
 
45
45
  while (i <= renderedElementIndex) {
46
- if (startNewRow || rowWidth + children[i].width > maxWidth) {
46
+ if (startNewRow || rowWidth + children[i].getWidth() > maxWidth) {
47
47
  if (i > 0) {
48
48
  topOffset += rowHeight;
49
- topOffset += children[i].marginTop;
49
+ topOffset += children[i].getMarginTop();
50
50
  }
51
51
 
52
- rowWidth = children[i].width;
53
- rowHeight = children[i].height;
52
+ rowWidth = children[i].getWidth();
53
+ rowHeight = children[i].getHeight();
54
54
 
55
55
  if (rowWidth > maxWidth) {
56
56
  startNewRow = true;
@@ -58,8 +58,8 @@ var ItemsContainer = /*#__PURE__*/function () {
58
58
  startNewRow = false;
59
59
  }
60
60
  } else {
61
- rowWidth += children[i].width;
62
- rowHeight = Math.max(rowHeight, children[i].height);
61
+ rowWidth += children[i].getWidth();
62
+ rowHeight = Math.max(rowHeight, children[i].getHeight());
63
63
  }
64
64
 
65
65
  i++;
@@ -85,7 +85,7 @@ var ItemsContainer = /*#__PURE__*/function () {
85
85
  });
86
86
  }
87
87
 
88
- return children[renderedElementIndex].height;
88
+ return children[renderedElementIndex].getHeight();
89
89
  }
90
90
  /**
91
91
  * Returns items container height.
@@ -106,12 +106,12 @@ var ItemsContainer = /*#__PURE__*/function () {
106
106
 
107
107
  while (rowWidth <= maxWidth && i < children.length) {
108
108
  if (rowWidth === 0 && i > 0) {
109
- var verticalSpacing = children[i].marginTop;
109
+ var verticalSpacing = children[i].getMarginTop();
110
110
  contentHeight += verticalSpacing;
111
111
  }
112
112
 
113
- rowWidth += children[i].width;
114
- rowHeight = Math.max(rowHeight, children[i].height);
113
+ rowWidth += children[i].getWidth();
114
+ rowHeight = Math.max(rowHeight, children[i].getHeight());
115
115
  i++;
116
116
  }
117
117
 
@@ -1 +1 @@
1
- {"version":3,"file":"ItemsContainer.js","names":["ItemNotRenderedError","ItemsContainer","getElement","renderedElementIndex","children","maxWidth","width","topOffset","paddingTop","rowWidth","rowHeight","startNewRow","length","renderedElementsCount","i","marginTop","height","Math","max","contentHeight","verticalSpacing","paddingBottom"],"sources":["../../source/test/ItemsContainer.js"],"sourcesContent":["import ItemNotRenderedError from '../ItemNotRenderedError.js'\r\n\r\nexport default class ItemsContainer {\r\n\t/**\r\n\t * Constructs a new \"container\" from an element.\r\n\t * @param {function} getElement\r\n\t */\r\n\tconstructor(getElement) {\r\n\t\tthis.getElement = getElement\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an item element's \"top offset\", relative to the items `container`'s top edge.\r\n\t * @param {number} renderedElementIndex — An index of an item relative to the \"first shown item index\". For example, if the list is showing items from index 8 to index 12 then `renderedElementIndex = 0` would mean the item at index `8`.\r\n\t * @return {number}\r\n\t */\r\n\tgetNthRenderedItemTopOffset(renderedElementIndex) {\r\n\t\tconst children = this.getElement().children\r\n\t\tconst maxWidth = this.getElement().width\r\n\t\tlet topOffset = this.getElement().paddingTop\r\n\r\n\t\tlet rowWidth\r\n\t\tlet rowHeight\r\n\t\tlet startNewRow = true\r\n\r\n\t\tif (renderedElementIndex > children.length - 1) {\r\n\t\t\tthrow new ItemNotRenderedError({\r\n\t\t\t\trenderedElementIndex,\r\n\t\t\t\trenderedElementsCount: children.length\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tlet i = 0\r\n\t\twhile (i <= renderedElementIndex) {\r\n\t\t\tif (startNewRow || rowWidth + children[i].width > maxWidth) {\r\n\t\t\t\tif (i > 0) {\r\n\t\t\t\t\ttopOffset += rowHeight\r\n\t\t\t\t\ttopOffset += children[i].marginTop\r\n\t\t\t\t}\r\n\t\t\t\trowWidth = children[i].width\r\n\t\t\t\trowHeight = children[i].height\r\n\t\t\t\tif (rowWidth > maxWidth) {\r\n\t\t\t\t\tstartNewRow = true\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstartNewRow = false\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\trowWidth += children[i].width\r\n\t\t\t\trowHeight = Math.max(rowHeight, children[i].height)\r\n\t\t\t}\r\n\t\t\ti++\r\n\t\t}\r\n\r\n\t\treturn topOffset\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an item element's height.\r\n\t * @param {number} renderedElementIndex — An index of an item relative to the \"first shown item index\". For example, if the list is showing items from index 8 to index 12 then `renderedElementIndex = 0` would mean the item at index `8`.\r\n\t * @return {number}\r\n\t */\r\n\tgetNthRenderedItemHeight(renderedElementIndex) {\r\n\t\tconst children = this.getElement().children\r\n\r\n\t\tif (renderedElementIndex > children.length - 1) {\r\n\t\t\tthrow new ItemNotRenderedError({\r\n\t\t\t\trenderedElementIndex,\r\n\t\t\t\trenderedElementsCount: children.length\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn children[renderedElementIndex].height\r\n\t}\r\n\r\n\t/**\r\n\t * Returns items container height.\r\n\t * @return {number}\r\n\t */\r\n\tgetHeight() {\r\n\t\tconst children = this.getElement().children\r\n\t\tconst maxWidth = this.getElement().width\r\n\t\tlet contentHeight = this.getElement().paddingTop\r\n\t\tlet i = 0\r\n\t\twhile (i < children.length) {\r\n\t\t\tlet rowWidth = 0\r\n\t\t\tlet rowHeight = 0\r\n\t\t\twhile (rowWidth <= maxWidth && i < children.length) {\r\n\t\t\t\tif (rowWidth === 0 && i > 0) {\r\n\t\t\t\t\tconst verticalSpacing = children[i].marginTop\r\n\t\t\t\t\tcontentHeight += verticalSpacing\r\n\t\t\t\t}\r\n\t\t\t\trowWidth += children[i].width\r\n\t\t\t\trowHeight = Math.max(rowHeight, children[i].height)\r\n\t\t\t\ti++\r\n\t\t\t}\r\n\t\t\tcontentHeight += rowHeight\r\n\t\t}\r\n\t\tcontentHeight += this.getElement().paddingBottom\r\n\t\treturn contentHeight\r\n\t}\r\n\r\n\t/**\r\n\t * Removes all item elements of an items container.\r\n\t */\r\n\tclear() {\r\n\t\tthis.getElement().children = []\r\n\t}\r\n}"],"mappings":"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"}
1
+ {"version":3,"file":"ItemsContainer.js","names":["ItemNotRenderedError","ItemsContainer","getElement","renderedElementIndex","children","maxWidth","width","topOffset","paddingTop","rowWidth","rowHeight","startNewRow","length","renderedElementsCount","i","getWidth","getMarginTop","getHeight","Math","max","contentHeight","verticalSpacing","paddingBottom"],"sources":["../../source/test/ItemsContainer.js"],"sourcesContent":["import ItemNotRenderedError from '../ItemNotRenderedError.js'\r\n\r\nexport default class ItemsContainer {\r\n\t/**\r\n\t * Constructs a new \"container\" from an element.\r\n\t * @param {function} getElement\r\n\t */\r\n\tconstructor(getElement) {\r\n\t\tthis.getElement = getElement\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an item element's \"top offset\", relative to the items `container`'s top edge.\r\n\t * @param {number} renderedElementIndex — An index of an item relative to the \"first shown item index\". For example, if the list is showing items from index 8 to index 12 then `renderedElementIndex = 0` would mean the item at index `8`.\r\n\t * @return {number}\r\n\t */\r\n\tgetNthRenderedItemTopOffset(renderedElementIndex) {\r\n\t\tconst children = this.getElement().children\r\n\t\tconst maxWidth = this.getElement().width\r\n\t\tlet topOffset = this.getElement().paddingTop\r\n\r\n\t\tlet rowWidth\r\n\t\tlet rowHeight\r\n\t\tlet startNewRow = true\r\n\r\n\t\tif (renderedElementIndex > children.length - 1) {\r\n\t\t\tthrow new ItemNotRenderedError({\r\n\t\t\t\trenderedElementIndex,\r\n\t\t\t\trenderedElementsCount: children.length\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tlet i = 0\r\n\t\twhile (i <= renderedElementIndex) {\r\n\t\t\tif (startNewRow || rowWidth + children[i].getWidth() > maxWidth) {\r\n\t\t\t\tif (i > 0) {\r\n\t\t\t\t\ttopOffset += rowHeight\r\n\t\t\t\t\ttopOffset += children[i].getMarginTop()\r\n\t\t\t\t}\r\n\t\t\t\trowWidth = children[i].getWidth()\r\n\t\t\t\trowHeight = children[i].getHeight()\r\n\t\t\t\tif (rowWidth > maxWidth) {\r\n\t\t\t\t\tstartNewRow = true\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstartNewRow = false\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\trowWidth += children[i].getWidth()\r\n\t\t\t\trowHeight = Math.max(rowHeight, children[i].getHeight())\r\n\t\t\t}\r\n\t\t\ti++\r\n\t\t}\r\n\r\n\t\treturn topOffset\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an item element's height.\r\n\t * @param {number} renderedElementIndex — An index of an item relative to the \"first shown item index\". For example, if the list is showing items from index 8 to index 12 then `renderedElementIndex = 0` would mean the item at index `8`.\r\n\t * @return {number}\r\n\t */\r\n\tgetNthRenderedItemHeight(renderedElementIndex) {\r\n\t\tconst children = this.getElement().children\r\n\r\n\t\tif (renderedElementIndex > children.length - 1) {\r\n\t\t\tthrow new ItemNotRenderedError({\r\n\t\t\t\trenderedElementIndex,\r\n\t\t\t\trenderedElementsCount: children.length\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn children[renderedElementIndex].getHeight()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns items container height.\r\n\t * @return {number}\r\n\t */\r\n\tgetHeight() {\r\n\t\tconst children = this.getElement().children\r\n\t\tconst maxWidth = this.getElement().width\r\n\t\tlet contentHeight = this.getElement().paddingTop\r\n\t\tlet i = 0\r\n\t\twhile (i < children.length) {\r\n\t\t\tlet rowWidth = 0\r\n\t\t\tlet rowHeight = 0\r\n\t\t\twhile (rowWidth <= maxWidth && i < children.length) {\r\n\t\t\t\tif (rowWidth === 0 && i > 0) {\r\n\t\t\t\t\tconst verticalSpacing = children[i].getMarginTop()\r\n\t\t\t\t\tcontentHeight += verticalSpacing\r\n\t\t\t\t}\r\n\t\t\t\trowWidth += children[i].getWidth()\r\n\t\t\t\trowHeight = Math.max(rowHeight, children[i].getHeight())\r\n\t\t\t\ti++\r\n\t\t\t}\r\n\t\t\tcontentHeight += rowHeight\r\n\t\t}\r\n\t\tcontentHeight += this.getElement().paddingBottom\r\n\t\treturn contentHeight\r\n\t}\r\n\r\n\t/**\r\n\t * Removes all item elements of an items container.\r\n\t */\r\n\tclear() {\r\n\t\tthis.getElement().children = []\r\n\t}\r\n}"],"mappings":"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"}
@@ -86,14 +86,19 @@ var TestVirtualScroller = /*#__PURE__*/function () {
86
86
  firstShownItemIndex = _this$virtualScroller.firstShownItemIndex,
87
87
  lastShownItemIndex = _this$virtualScroller.lastShownItemIndex;
88
88
 
89
- console.log('~ Render List ~');
90
89
  containerElement.paddingTop = beforeItemsHeight;
91
90
  containerElement.paddingBottom = afterItemsHeight;
92
91
  containerElement.children = items.slice(firstShownItemIndex, lastShownItemIndex + 1).map(function (item) {
93
92
  return {
94
- width: getItemWidth(),
95
- height: item.area / getItemWidth(),
96
- marginTop: verticalSpacing
93
+ getWidth: function getWidth() {
94
+ return getItemWidth();
95
+ },
96
+ getHeight: function getHeight() {
97
+ return (item.getArea ? item.getArea() : item.area) / getItemWidth();
98
+ },
99
+ getMarginTop: function getMarginTop() {
100
+ return verticalSpacing;
101
+ }
97
102
  };
98
103
  });
99
104
  };
@@ -190,8 +195,8 @@ var TestVirtualScroller = /*#__PURE__*/function () {
190
195
  this.virtualScroller.scrollableContainer.scrollToY(scrollPosition);
191
196
  }
192
197
  }, {
193
- key: "resize",
194
- value: function resize(_ref2) {
198
+ key: "updateScreenDimensions",
199
+ value: function updateScreenDimensions(_ref2) {
195
200
  var scrollableContainerWidth = _ref2.screenWidth,
196
201
  scrollableContainerHeight = _ref2.screenHeight,
197
202
  columnsCount = _ref2.columnsCount;
@@ -209,7 +214,7 @@ var TestVirtualScroller = /*#__PURE__*/function () {
209
214
  screenHeight = _ref3.screenHeight,
210
215
  columnsCount = _ref3.columnsCount,
211
216
  verticalSpacing = _ref3.verticalSpacing;
212
- this.resize({
217
+ this.updateScreenDimensions({
213
218
  screenWidth: screenWidth,
214
219
  screenHeight: screenHeight,
215
220
  columnsCount: columnsCount,
@@ -248,13 +253,23 @@ var TestVirtualScroller = /*#__PURE__*/function () {
248
253
  }
249
254
  }, {
250
255
  key: "getItemScrollPosition",
251
- value: function getItemScrollPosition(i) {
252
- return this.virtualScroller.getItemScrollPosition(i);
256
+ value: function getItemScrollPosition(itemOrIndex) {
257
+ return this.virtualScroller.getItemScrollPosition(itemOrIndex);
258
+ }
259
+ }, {
260
+ key: "onItemHeightDidChange",
261
+ value: function onItemHeightDidChange(itemOrIndex) {
262
+ this.virtualScroller.onItemHeightDidChange(itemOrIndex);
263
+ }
264
+ }, {
265
+ key: "setItemState",
266
+ value: function setItemState(itemOrIndex, newState) {
267
+ this.virtualScroller.setItemState(itemOrIndex, newState);
253
268
  }
254
269
  }, {
255
270
  key: "getAverageItemHeight",
256
271
  value: function getAverageItemHeight() {
257
- return this.virtualScroller.itemHeights.getAverage();
272
+ return this.virtualScroller.getAverageItemHeight();
258
273
  }
259
274
  }, {
260
275
  key: "setItems",
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualScroller.js","names":["VirtualScroller","Engine","DEBUG","TestVirtualScroller","scrollableContainerWidth","screenWidth","scrollableContainerHeight","screenHeight","columnsCount","verticalSpacing","items","initialState","state","expectedStateUpdates","scrollableContainerElement","width","height","containerElement","paddingTop","paddingBottom","children","setScrollableContainerWidth","setScrollableContainerHeight","getItemsContainerElement","__columnsCount","getColumnsCount","getItemWidth","hasPausedStateUpdates","undefined","pausedStateUpdate","pausedStateUpdateAction","onBeforeUpdateState","stateUpdate","length","expectedStateUpdate","shift","expect","to","deep","equal","callback","render","virtualScroller","getState","beforeItemsHeight","afterItemsHeight","firstShownItemIndex","lastShownItemIndex","console","log","slice","map","item","area","marginTop","scrollableContainer","engine","_waitForScrollingToStop","onStateChange","getInitialState","useState","updateState","stateUpdateAction","onRender","Error","expectedState","should","include","push","firstNonMeasuredItemIndex","getScrollY","scrollPosition","scrollToY","resize","_triggerResizeListener","JSON","stringify","stop","start","updateLayout","i","getItemScrollPosition","itemHeights","getAverage","newItems","options","setItems"],"sources":["../../source/test/VirtualScroller.js"],"sourcesContent":["import VirtualScroller from '../VirtualScroller.js'\r\nimport Engine from './Engine.js'\r\n\r\nconst DEBUG = false\r\n\r\nexport default class TestVirtualScroller {\r\n\tconstructor({\r\n\t\tscreenWidth: scrollableContainerWidth,\r\n\t\tscreenHeight: scrollableContainerHeight,\r\n\t\tcolumnsCount,\r\n\t\tverticalSpacing,\r\n\t\titems,\r\n\t\tstate: initialState\r\n\t}) {\r\n\t\tthis.expectedStateUpdates = []\r\n\r\n\t\tconst scrollableContainerElement = {\r\n\t\t\twidth: scrollableContainerWidth,\r\n\t\t\theight: scrollableContainerHeight\r\n\t\t}\r\n\r\n\t\tconst containerElement = {\r\n\t\t\tpaddingTop: 0,\r\n\t\t\tpaddingBottom: 0,\r\n\t\t\twidth: scrollableContainerElement.width,\r\n\t\t\tchildren: []\r\n\t\t}\r\n\r\n\t\tthis.setScrollableContainerWidth = (width) => {\r\n\t\t\tscrollableContainerElement.width = width\r\n\t\t\tcontainerElement.width = width\r\n\t\t}\r\n\r\n\t\tthis.setScrollableContainerHeight = (height) => {\r\n\t\t\tscrollableContainerElement.height = height\r\n\t\t}\r\n\r\n\t\tconst getItemsContainerElement = () => containerElement\r\n\r\n\t\tthis.__columnsCount = columnsCount\r\n\r\n\t\tconst getColumnsCount = () => this.__columnsCount\r\n\t\tconst getItemWidth = () => scrollableContainerElement.width / getColumnsCount()\r\n\r\n\t\tthis.hasPausedStateUpdates = undefined\r\n\t\tthis.pausedStateUpdate = undefined\r\n\t\tthis.pausedStateUpdateAction = undefined\r\n\r\n\t\tconst onBeforeUpdateState = (stateUpdate) => {\r\n\t\t\tif (this.expectedStateUpdates.length > 0) {\r\n\t\t\t\tconst expectedStateUpdate = this.expectedStateUpdates.shift()\r\n\t\t\t\texpect(stateUpdate).to.deep.equal(expectedStateUpdate.stateUpdate)\r\n\t\t\t\tif (expectedStateUpdate.callback) {\r\n\t\t\t\t\texpectedStateUpdate.callback()\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst render = () => {\r\n\t\t\tconst {\r\n\t\t\t\titems,\r\n\t\t\t\tbeforeItemsHeight,\r\n\t\t\t\tafterItemsHeight,\r\n\t\t\t\tfirstShownItemIndex,\r\n\t\t\t\tlastShownItemIndex\r\n\t\t\t} = this.virtualScroller.getState()\r\n\r\n\t\t\tconsole.log('~ Render List ~')\r\n\r\n\t\t\tcontainerElement.paddingTop = beforeItemsHeight\r\n\t\t\tcontainerElement.paddingBottom = afterItemsHeight\r\n\r\n\t\t\tcontainerElement.children = items\r\n\t\t\t\t.slice(firstShownItemIndex, lastShownItemIndex + 1)\r\n\t\t\t\t.map((item) => ({\r\n\t\t\t\t\twidth: getItemWidth(),\r\n\t\t\t\t\theight: item.area / getItemWidth(),\r\n\t\t\t\t\tmarginTop: verticalSpacing\r\n\t\t\t\t}))\r\n\t\t}\r\n\r\n\t\tthis.virtualScroller = new VirtualScroller(getItemsContainerElement, items, {\r\n\t\t\tscrollableContainer: scrollableContainerElement,\r\n\t\t\tengine: Engine,\r\n\t\t\t_waitForScrollingToStop: false,\r\n\t\t\tgetColumnsCount,\r\n\t\t\tstate: initialState,\r\n\t\t\tonStateChange(state) {\r\n\t\t\t\tif (DEBUG) {\r\n\t\t\t\t\tconsole.log('~ Updated State ~')\r\n\t\t\t\t\tconsole.log(state)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tlet state = this.virtualScroller.getInitialState()\r\n\r\n\t\tthis.virtualScroller.useState({\r\n\t\t\tgetState: () => state,\r\n\t\t\tupdateState: (stateUpdate) => {\r\n\t\t\t\tconst stateUpdateAction = (stateUpdate) => {\r\n\t\t\t\t\t// Is only used in tests.\r\n\t\t\t\t\tif (onBeforeUpdateState) {\r\n\t\t\t\t\t\tonBeforeUpdateState(stateUpdate)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstate = {\r\n\t\t\t\t\t\t...state,\r\n\t\t\t\t\t\t...stateUpdate\r\n\t\t\t\t\t}\r\n\t\t\t\t\trender()\r\n\t\t\t\t\tthis.virtualScroller.onRender()\r\n\t\t\t\t}\r\n\t\t\t\tif (this.hasPausedStateUpdates) {\r\n\t\t\t\t\tthis.pausedStateUpdate = {\r\n\t\t\t\t\t\t...this.pausedStateUpdate,\r\n\t\t\t\t\t\t...stateUpdate\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.pausedStateUpdateAction = stateUpdateAction\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstateUpdateAction(stateUpdate)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\trender()\r\n\t}\r\n\r\n\tpauseStateUpdates() {\r\n\t\tif (this.hasPausedStateUpdates) {\r\n\t\t\tthrow new Error('[virtual-scroller] State updates have already been paused')\r\n\t\t}\r\n\t\tthis.hasPausedStateUpdates = true\r\n\t}\r\n\r\n\tresumeStateUpdates() {\r\n\t\tif (this.pausedStateUpdate) {\r\n\t\t\tthis.pausedStateUpdateAction(this.pausedStateUpdate)\r\n\t\t\tthis.pausedStateUpdate = undefined\r\n\t\t\tthis.pausedStateUpdateAction = undefined\r\n\t\t}\r\n\t\tthis.hasPausedStateUpdates = false\r\n\t}\r\n\r\n\tverifyState(expectedState) {\r\n\t\t// `mocha`/`chai`.\r\n\t\tthis.virtualScroller.getState().should.deep.include(expectedState)\r\n\t}\r\n\r\n\texpectStateUpdate(stateUpdate, callback) {\r\n\t\tthis.expectedStateUpdates.push({\r\n\t\t\tstateUpdate,\r\n\t\t\tcallback\r\n\t\t})\r\n\t}\r\n\r\n\tgetFirstNonMeasuredItemIndex() {\r\n\t\treturn this.virtualScroller.firstNonMeasuredItemIndex\r\n\t}\r\n\r\n\tgetScrollY() {\r\n\t\treturn this.virtualScroller.scrollableContainer.getScrollY()\r\n\t}\r\n\r\n\tscrollTo(scrollPosition) {\r\n\t\tthis.virtualScroller.scrollableContainer.scrollToY(scrollPosition)\r\n\t}\r\n\r\n\tresize({\r\n\t\tscreenWidth: scrollableContainerWidth,\r\n\t\tscreenHeight: scrollableContainerHeight,\r\n\t\tcolumnsCount\r\n\t}) {\r\n\t\t// Resize scrollable container.\r\n\t\tthis.setScrollableContainerWidth(scrollableContainerWidth)\r\n\t\tthis.setScrollableContainerHeight(scrollableContainerHeight)\r\n\r\n\t\t// Update columns count.\r\n\t\tthis.__columnsCount = columnsCount\r\n\t}\r\n\r\n\t// Returns a `Promise`.\r\n\ttriggerResize({\r\n\t\tscreenWidth,\r\n\t\tscreenHeight,\r\n\t\tcolumnsCount,\r\n\t\tverticalSpacing\r\n\t}) {\r\n\t\tthis.resize({\r\n\t\t\tscreenWidth,\r\n\t\t\tscreenHeight,\r\n\t\t\tcolumnsCount,\r\n\t\t\tverticalSpacing\r\n\t\t})\r\n\r\n\t\t// Call \"on resize\" listener.\r\n\t\treturn this.virtualScroller.scrollableContainer._triggerResizeListener()\r\n\t}\r\n\r\n\tstop() {\r\n\t\tif (this.expectedStateUpdates.length > 0) {\r\n\t\t\tthrow new Error(`[virtual-scroller] Expected ${this.expectedStateUpdates.length} state updates which didn't happen:\\n${JSON.stringify(this.expectedStateUpdates, null, 2)}`)\r\n\t\t}\r\n\t\tif (this.pausedStateUpdate) {\r\n\t\t\tthrow new Error('[virtual-scroller] State updates were paused and haven\\'t been resumed afterwards')\r\n\t\t}\r\n\t\tthis.virtualScroller.stop()\r\n\t}\r\n\r\n\tstart() {\r\n\t\tthis.virtualScroller.start()\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn this.virtualScroller.getState()\r\n\t}\r\n\r\n\tupdateLayout() {\r\n\t\tthis.virtualScroller.updateLayout()\r\n\t}\r\n\r\n\tgetItemScrollPosition(i) {\r\n\t\treturn this.virtualScroller.getItemScrollPosition(i)\r\n\t}\r\n\r\n\tgetAverageItemHeight() {\r\n\t\treturn this.virtualScroller.itemHeights.getAverage()\r\n\t}\r\n\r\n\tsetItems(newItems, options) {\r\n\t\tthis.virtualScroller.setItems(newItems, options)\r\n\t}\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"VirtualScroller.js","names":["VirtualScroller","Engine","DEBUG","TestVirtualScroller","scrollableContainerWidth","screenWidth","scrollableContainerHeight","screenHeight","columnsCount","verticalSpacing","items","initialState","state","expectedStateUpdates","scrollableContainerElement","width","height","containerElement","paddingTop","paddingBottom","children","setScrollableContainerWidth","setScrollableContainerHeight","getItemsContainerElement","__columnsCount","getColumnsCount","getItemWidth","hasPausedStateUpdates","undefined","pausedStateUpdate","pausedStateUpdateAction","onBeforeUpdateState","stateUpdate","length","expectedStateUpdate","shift","expect","to","deep","equal","callback","render","virtualScroller","getState","beforeItemsHeight","afterItemsHeight","firstShownItemIndex","lastShownItemIndex","slice","map","item","getWidth","getHeight","getArea","area","getMarginTop","scrollableContainer","engine","_waitForScrollingToStop","onStateChange","console","log","getInitialState","useState","updateState","stateUpdateAction","onRender","Error","expectedState","should","include","push","firstNonMeasuredItemIndex","getScrollY","scrollPosition","scrollToY","updateScreenDimensions","_triggerResizeListener","JSON","stringify","stop","start","updateLayout","itemOrIndex","getItemScrollPosition","onItemHeightDidChange","newState","setItemState","getAverageItemHeight","newItems","options","setItems"],"sources":["../../source/test/VirtualScroller.js"],"sourcesContent":["import VirtualScroller from '../VirtualScroller.js'\r\nimport Engine from './Engine.js'\r\n\r\nconst DEBUG = false\r\n\r\nexport default class TestVirtualScroller {\r\n\tconstructor({\r\n\t\tscreenWidth: scrollableContainerWidth,\r\n\t\tscreenHeight: scrollableContainerHeight,\r\n\t\tcolumnsCount,\r\n\t\tverticalSpacing,\r\n\t\titems,\r\n\t\tstate: initialState\r\n\t}) {\r\n\t\tthis.expectedStateUpdates = []\r\n\r\n\t\tconst scrollableContainerElement = {\r\n\t\t\twidth: scrollableContainerWidth,\r\n\t\t\theight: scrollableContainerHeight\r\n\t\t}\r\n\r\n\t\tconst containerElement = {\r\n\t\t\tpaddingTop: 0,\r\n\t\t\tpaddingBottom: 0,\r\n\t\t\twidth: scrollableContainerElement.width,\r\n\t\t\tchildren: []\r\n\t\t}\r\n\r\n\t\tthis.setScrollableContainerWidth = (width) => {\r\n\t\t\tscrollableContainerElement.width = width\r\n\t\t\tcontainerElement.width = width\r\n\t\t}\r\n\r\n\t\tthis.setScrollableContainerHeight = (height) => {\r\n\t\t\tscrollableContainerElement.height = height\r\n\t\t}\r\n\r\n\t\tconst getItemsContainerElement = () => containerElement\r\n\r\n\t\tthis.__columnsCount = columnsCount\r\n\r\n\t\tconst getColumnsCount = () => this.__columnsCount\r\n\t\tconst getItemWidth = () => scrollableContainerElement.width / getColumnsCount()\r\n\r\n\t\tthis.hasPausedStateUpdates = undefined\r\n\t\tthis.pausedStateUpdate = undefined\r\n\t\tthis.pausedStateUpdateAction = undefined\r\n\r\n\t\tconst onBeforeUpdateState = (stateUpdate) => {\r\n\t\t\tif (this.expectedStateUpdates.length > 0) {\r\n\t\t\t\tconst expectedStateUpdate = this.expectedStateUpdates.shift()\r\n\t\t\t\texpect(stateUpdate).to.deep.equal(expectedStateUpdate.stateUpdate)\r\n\t\t\t\tif (expectedStateUpdate.callback) {\r\n\t\t\t\t\texpectedStateUpdate.callback()\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst render = () => {\r\n\t\t\tconst {\r\n\t\t\t\titems,\r\n\t\t\t\tbeforeItemsHeight,\r\n\t\t\t\tafterItemsHeight,\r\n\t\t\t\tfirstShownItemIndex,\r\n\t\t\t\tlastShownItemIndex\r\n\t\t\t} = this.virtualScroller.getState()\r\n\r\n\t\t\tcontainerElement.paddingTop = beforeItemsHeight\r\n\t\t\tcontainerElement.paddingBottom = afterItemsHeight\r\n\r\n\t\t\tcontainerElement.children = items\r\n\t\t\t\t.slice(firstShownItemIndex, lastShownItemIndex + 1)\r\n\t\t\t\t.map((item) => ({\r\n\t\t\t\t\tgetWidth: () => getItemWidth(),\r\n\t\t\t\t\tgetHeight: () => (item.getArea ? item.getArea() : item.area) / getItemWidth(),\r\n\t\t\t\t\tgetMarginTop: () => verticalSpacing\r\n\t\t\t\t}))\r\n\t\t}\r\n\r\n\t\tthis.virtualScroller = new VirtualScroller(getItemsContainerElement, items, {\r\n\t\t\tscrollableContainer: scrollableContainerElement,\r\n\t\t\tengine: Engine,\r\n\t\t\t_waitForScrollingToStop: false,\r\n\t\t\tgetColumnsCount,\r\n\t\t\tstate: initialState,\r\n\t\t\tonStateChange(state) {\r\n\t\t\t\tif (DEBUG) {\r\n\t\t\t\t\tconsole.log('~ Updated State ~')\r\n\t\t\t\t\tconsole.log(state)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tlet state = this.virtualScroller.getInitialState()\r\n\r\n\t\tthis.virtualScroller.useState({\r\n\t\t\tgetState: () => state,\r\n\t\t\tupdateState: (stateUpdate) => {\r\n\t\t\t\tconst stateUpdateAction = (stateUpdate) => {\r\n\t\t\t\t\t// Is only used in tests.\r\n\t\t\t\t\tif (onBeforeUpdateState) {\r\n\t\t\t\t\t\tonBeforeUpdateState(stateUpdate)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstate = {\r\n\t\t\t\t\t\t...state,\r\n\t\t\t\t\t\t...stateUpdate\r\n\t\t\t\t\t}\r\n\t\t\t\t\trender()\r\n\t\t\t\t\tthis.virtualScroller.onRender()\r\n\t\t\t\t}\r\n\t\t\t\tif (this.hasPausedStateUpdates) {\r\n\t\t\t\t\tthis.pausedStateUpdate = {\r\n\t\t\t\t\t\t...this.pausedStateUpdate,\r\n\t\t\t\t\t\t...stateUpdate\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.pausedStateUpdateAction = stateUpdateAction\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstateUpdateAction(stateUpdate)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\trender()\r\n\t}\r\n\r\n\tpauseStateUpdates() {\r\n\t\tif (this.hasPausedStateUpdates) {\r\n\t\t\tthrow new Error('[virtual-scroller] State updates have already been paused')\r\n\t\t}\r\n\t\tthis.hasPausedStateUpdates = true\r\n\t}\r\n\r\n\tresumeStateUpdates() {\r\n\t\tif (this.pausedStateUpdate) {\r\n\t\t\tthis.pausedStateUpdateAction(this.pausedStateUpdate)\r\n\t\t\tthis.pausedStateUpdate = undefined\r\n\t\t\tthis.pausedStateUpdateAction = undefined\r\n\t\t}\r\n\t\tthis.hasPausedStateUpdates = false\r\n\t}\r\n\r\n\tverifyState(expectedState) {\r\n\t\t// `mocha`/`chai`.\r\n\t\tthis.virtualScroller.getState().should.deep.include(expectedState)\r\n\t}\r\n\r\n\texpectStateUpdate(stateUpdate, callback) {\r\n\t\tthis.expectedStateUpdates.push({\r\n\t\t\tstateUpdate,\r\n\t\t\tcallback\r\n\t\t})\r\n\t}\r\n\r\n\tgetFirstNonMeasuredItemIndex() {\r\n\t\treturn this.virtualScroller.firstNonMeasuredItemIndex\r\n\t}\r\n\r\n\tgetScrollY() {\r\n\t\treturn this.virtualScroller.scrollableContainer.getScrollY()\r\n\t}\r\n\r\n\tscrollTo(scrollPosition) {\r\n\t\tthis.virtualScroller.scrollableContainer.scrollToY(scrollPosition)\r\n\t}\r\n\r\n\tupdateScreenDimensions({\r\n\t\tscreenWidth: scrollableContainerWidth,\r\n\t\tscreenHeight: scrollableContainerHeight,\r\n\t\tcolumnsCount\r\n\t}) {\r\n\t\t// Resize scrollable container.\r\n\t\tthis.setScrollableContainerWidth(scrollableContainerWidth)\r\n\t\tthis.setScrollableContainerHeight(scrollableContainerHeight)\r\n\r\n\t\t// Update columns count.\r\n\t\tthis.__columnsCount = columnsCount\r\n\t}\r\n\r\n\t// Returns a `Promise`.\r\n\ttriggerResize({\r\n\t\tscreenWidth,\r\n\t\tscreenHeight,\r\n\t\tcolumnsCount,\r\n\t\tverticalSpacing\r\n\t}) {\r\n\t\tthis.updateScreenDimensions({\r\n\t\t\tscreenWidth,\r\n\t\t\tscreenHeight,\r\n\t\t\tcolumnsCount,\r\n\t\t\tverticalSpacing\r\n\t\t})\r\n\r\n\t\t// Call \"on resize\" listener.\r\n\t\treturn this.virtualScroller.scrollableContainer._triggerResizeListener()\r\n\t}\r\n\r\n\tstop() {\r\n\t\tif (this.expectedStateUpdates.length > 0) {\r\n\t\t\tthrow new Error(`[virtual-scroller] Expected ${this.expectedStateUpdates.length} state updates which didn't happen:\\n${JSON.stringify(this.expectedStateUpdates, null, 2)}`)\r\n\t\t}\r\n\t\tif (this.pausedStateUpdate) {\r\n\t\t\tthrow new Error('[virtual-scroller] State updates were paused and haven\\'t been resumed afterwards')\r\n\t\t}\r\n\t\tthis.virtualScroller.stop()\r\n\t}\r\n\r\n\tstart() {\r\n\t\tthis.virtualScroller.start()\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn this.virtualScroller.getState()\r\n\t}\r\n\r\n\tupdateLayout() {\r\n\t\tthis.virtualScroller.updateLayout()\r\n\t}\r\n\r\n\tgetItemScrollPosition(itemOrIndex) {\r\n\t\treturn this.virtualScroller.getItemScrollPosition(itemOrIndex)\r\n\t}\r\n\r\n\tonItemHeightDidChange(itemOrIndex) {\r\n\t\tthis.virtualScroller.onItemHeightDidChange(itemOrIndex)\r\n\t}\r\n\r\n\tsetItemState(itemOrIndex, newState) {\r\n\t\tthis.virtualScroller.setItemState(itemOrIndex, newState)\r\n\t}\r\n\r\n\tgetAverageItemHeight() {\r\n\t\treturn this.virtualScroller.getAverageItemHeight()\r\n\t}\r\n\r\n\tsetItems(newItems, options) {\r\n\t\tthis.virtualScroller.setItems(newItems, options)\r\n\t}\r\n}\r\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "virtual-scroller",
3
- "version": "1.13.1",
3
+ "version": "1.15.0",
4
4
  "description": "A component for efficiently rendering large lists of variable height items",
5
5
  "main": "index.cjs",
6
6
  "module": "index.js",
package/react/as.d.ts ADDED
@@ -0,0 +1,42 @@
1
+ // The following is an `as` property implementation
2
+ // that was copy-pasted from https://www.benmvp.com/blog/polymorphic-react-components-typescript/
3
+ //
4
+ // P.S. `as` property is now deprecated, so this file is a legacy one.
5
+ // Use `itemsContainerComponent` property instead.
6
+ //
7
+ // "A more precise version of `React.ComponentPropsWithoutRef`".
8
+ // It's not clear what exactly they meant by that.
9
+ type PropsOf<
10
+ Component extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<any>
11
+ > = JSX.LibraryManagedAttributes<Component, React.ComponentPropsWithoutRef<Component>>
12
+ //
13
+ // Combines props with any additional props.
14
+ type CombineProps<
15
+ BaseProps = {},
16
+ AdditionalProps = {}
17
+ > = Omit<BaseProps, keyof AdditionalProps> & AdditionalProps
18
+ //
19
+ // Combines component props with any additional props.
20
+ type CombineComponentPropsWith<
21
+ Component extends React.ElementType,
22
+ Props = {}
23
+ > = CombineProps<PropsOf<Component>, Props>
24
+ //
25
+ // Adds an `as: AsComponent` property.
26
+ export type WithAsProperty<
27
+ AsComponent extends React.ElementType,
28
+ Props = {}
29
+ > = CombineComponentPropsWith<AsComponent, Props & { as?: AsComponent }>
30
+ // //
31
+ // // This is a type of a `ref` that will be passed to a given `Component`.
32
+ // export type ComponentRef<
33
+ // Component extends React.ElementType
34
+ // > = React.ComponentPropsWithRef<Component>['ref']
35
+ // //
36
+ // // Adds an `as: AsComponent` property along with a `ref` property.
37
+ // export type WithAsPropertyAndRef<
38
+ // AsComponent extends React.ElementType,
39
+ // Props = {}
40
+ // > = WithAsProperty<AsComponent, Props> & {
41
+ // ref?: ComponentRef<AsComponent>
42
+ // }