virtual-scroller 1.8.0 → 1.9.1

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 (248) hide show
  1. package/.gitlab-ci.yml +1 -1
  2. package/CHANGELOG.md +57 -0
  3. package/README.md +337 -160
  4. package/bundle/virtual-scroller-dom.js +1 -1
  5. package/bundle/virtual-scroller-dom.js.map +1 -1
  6. package/bundle/virtual-scroller-react.js +1 -1
  7. package/bundle/virtual-scroller-react.js.map +1 -1
  8. package/bundle/virtual-scroller.js +1 -1
  9. package/bundle/virtual-scroller.js.map +1 -1
  10. package/commonjs/BeforeResize.js +23 -27
  11. package/commonjs/BeforeResize.js.map +1 -1
  12. package/commonjs/DOM/Engine.js +7 -7
  13. package/commonjs/DOM/Engine.js.map +1 -1
  14. package/commonjs/DOM/ItemsContainer.js +1 -1
  15. package/commonjs/DOM/ItemsContainer.js.map +1 -1
  16. package/commonjs/DOM/ListTopOffsetWatcher.js +15 -9
  17. package/commonjs/DOM/ListTopOffsetWatcher.js.map +1 -1
  18. package/commonjs/DOM/ScrollableContainer.js +28 -28
  19. package/commonjs/DOM/ScrollableContainer.js.map +1 -1
  20. package/commonjs/DOM/VirtualScroller.js +20 -17
  21. package/commonjs/DOM/VirtualScroller.js.map +1 -1
  22. package/commonjs/DOM/tbody.js +16 -10
  23. package/commonjs/DOM/tbody.js.map +1 -1
  24. package/commonjs/ItemHeights.js +23 -17
  25. package/commonjs/ItemHeights.js.map +1 -1
  26. package/commonjs/Layout.js +15 -13
  27. package/commonjs/Layout.js.map +1 -1
  28. package/commonjs/Layout.test.js +8 -3
  29. package/commonjs/Layout.test.js.map +1 -1
  30. package/commonjs/{ListHeightChangeWatcher.js → ListHeightMeasurement.js} +26 -28
  31. package/commonjs/ListHeightMeasurement.js.map +1 -0
  32. package/commonjs/Resize.js +38 -28
  33. package/commonjs/Resize.js.map +1 -1
  34. package/commonjs/Scroll.js +28 -44
  35. package/commonjs/Scroll.js.map +1 -1
  36. package/commonjs/VirtualScroller.columns.js +43 -0
  37. package/commonjs/VirtualScroller.columns.js.map +1 -0
  38. package/commonjs/VirtualScroller.constructor.js +408 -0
  39. package/commonjs/VirtualScroller.constructor.js.map +1 -0
  40. package/commonjs/VirtualScroller.items.js +305 -0
  41. package/commonjs/VirtualScroller.items.js.map +1 -0
  42. package/commonjs/VirtualScroller.js +132 -1872
  43. package/commonjs/VirtualScroller.js.map +1 -1
  44. package/commonjs/VirtualScroller.layout.js +562 -0
  45. package/commonjs/VirtualScroller.layout.js.map +1 -0
  46. package/commonjs/VirtualScroller.onRender.js +357 -0
  47. package/commonjs/VirtualScroller.onRender.js.map +1 -0
  48. package/commonjs/VirtualScroller.resize.js +186 -0
  49. package/commonjs/VirtualScroller.resize.js.map +1 -0
  50. package/commonjs/VirtualScroller.state.js +301 -0
  51. package/commonjs/VirtualScroller.state.js.map +1 -0
  52. package/commonjs/VirtualScroller.verticalSpacing.js +65 -0
  53. package/commonjs/VirtualScroller.verticalSpacing.js.map +1 -0
  54. package/commonjs/getItemCoordinates.js.map +1 -1
  55. package/commonjs/getItemsDiff.js.map +1 -1
  56. package/commonjs/getVerticalSpacing.js.map +1 -1
  57. package/commonjs/package.json +5 -0
  58. package/commonjs/react/VirtualScroller.js +184 -618
  59. package/commonjs/react/VirtualScroller.js.map +1 -1
  60. package/commonjs/react/useClassName.js +26 -0
  61. package/commonjs/react/useClassName.js.map +1 -0
  62. package/commonjs/react/useHandleItemsChange.js +116 -0
  63. package/commonjs/react/useHandleItemsChange.js.map +1 -0
  64. package/commonjs/react/useInstanceMethods.js +37 -0
  65. package/commonjs/react/useInstanceMethods.js.map +1 -0
  66. package/commonjs/react/useItemKeys.js +60 -0
  67. package/commonjs/react/useItemKeys.js.map +1 -0
  68. package/commonjs/react/useOnItemHeightChange.js +32 -0
  69. package/commonjs/react/useOnItemHeightChange.js.map +1 -0
  70. package/commonjs/react/useOnItemStateChange.js +32 -0
  71. package/commonjs/react/useOnItemStateChange.js.map +1 -0
  72. package/commonjs/react/useState.js +140 -0
  73. package/commonjs/react/useState.js.map +1 -0
  74. package/commonjs/react/useStyle.js +29 -0
  75. package/commonjs/react/useStyle.js.map +1 -0
  76. package/commonjs/react/useVirtualScroller.js +62 -0
  77. package/commonjs/react/useVirtualScroller.js.map +1 -0
  78. package/commonjs/react/useVirtualScrollerStartStop.js +20 -0
  79. package/commonjs/react/useVirtualScrollerStartStop.js.map +1 -0
  80. package/commonjs/test/Engine.js +23 -0
  81. package/commonjs/test/Engine.js.map +1 -0
  82. package/commonjs/test/ItemsContainer.js +127 -0
  83. package/commonjs/test/ItemsContainer.js.map +1 -0
  84. package/commonjs/test/ScrollableContainer.js +130 -0
  85. package/commonjs/test/ScrollableContainer.js.map +1 -0
  86. package/commonjs/test/VirtualScroller.js +281 -0
  87. package/commonjs/test/VirtualScroller.js.map +1 -0
  88. package/commonjs/utility/debounce.js +2 -2
  89. package/commonjs/utility/debounce.js.map +1 -1
  90. package/commonjs/utility/debug.js.map +1 -1
  91. package/commonjs/utility/getStateSnapshot.js +2 -2
  92. package/commonjs/utility/getStateSnapshot.js.map +1 -1
  93. package/commonjs/utility/px.js.map +1 -1
  94. package/commonjs/utility/px.test.js +1 -1
  95. package/commonjs/utility/px.test.js.map +1 -1
  96. package/commonjs/utility/shallowEqual.js +1 -1
  97. package/commonjs/utility/shallowEqual.js.map +1 -1
  98. package/commonjs/utility/throttle.js.map +1 -1
  99. package/dom/index.cjs +4 -0
  100. package/dom/index.cjs.js +9 -0
  101. package/dom/index.d.ts +6 -4
  102. package/dom/index.js +1 -1
  103. package/dom/package.json +10 -4
  104. package/index.cjs +4 -0
  105. package/index.cjs.js +9 -0
  106. package/index.d.ts +30 -15
  107. package/index.js +1 -1
  108. package/modules/BeforeResize.js +22 -27
  109. package/modules/BeforeResize.js.map +1 -1
  110. package/modules/DOM/Engine.js +6 -6
  111. package/modules/DOM/Engine.js.map +1 -1
  112. package/modules/DOM/ItemsContainer.js +1 -1
  113. package/modules/DOM/ItemsContainer.js.map +1 -1
  114. package/modules/DOM/ListTopOffsetWatcher.js +15 -9
  115. package/modules/DOM/ListTopOffsetWatcher.js.map +1 -1
  116. package/modules/DOM/ScrollableContainer.js +28 -28
  117. package/modules/DOM/ScrollableContainer.js.map +1 -1
  118. package/modules/DOM/VirtualScroller.js +19 -16
  119. package/modules/DOM/VirtualScroller.js.map +1 -1
  120. package/modules/DOM/tbody.js +11 -9
  121. package/modules/DOM/tbody.js.map +1 -1
  122. package/modules/ItemHeights.js +22 -16
  123. package/modules/ItemHeights.js.map +1 -1
  124. package/modules/Layout.js +14 -12
  125. package/modules/Layout.js.map +1 -1
  126. package/modules/Layout.test.js +8 -3
  127. package/modules/Layout.test.js.map +1 -1
  128. package/modules/{ListHeightChangeWatcher.js → ListHeightMeasurement.js} +25 -27
  129. package/modules/ListHeightMeasurement.js.map +1 -0
  130. package/modules/Resize.js +38 -28
  131. package/modules/Resize.js.map +1 -1
  132. package/modules/Scroll.js +28 -44
  133. package/modules/Scroll.js.map +1 -1
  134. package/modules/VirtualScroller.columns.js +36 -0
  135. package/modules/VirtualScroller.columns.js.map +1 -0
  136. package/modules/VirtualScroller.constructor.js +371 -0
  137. package/modules/VirtualScroller.constructor.js.map +1 -0
  138. package/modules/VirtualScroller.items.js +288 -0
  139. package/modules/VirtualScroller.items.js.map +1 -0
  140. package/modules/VirtualScroller.js +132 -1860
  141. package/modules/VirtualScroller.js.map +1 -1
  142. package/modules/VirtualScroller.layout.js +549 -0
  143. package/modules/VirtualScroller.layout.js.map +1 -0
  144. package/modules/VirtualScroller.onRender.js +337 -0
  145. package/modules/VirtualScroller.onRender.js.map +1 -0
  146. package/modules/VirtualScroller.resize.js +176 -0
  147. package/modules/VirtualScroller.resize.js.map +1 -0
  148. package/modules/VirtualScroller.state.js +283 -0
  149. package/modules/VirtualScroller.state.js.map +1 -0
  150. package/modules/VirtualScroller.verticalSpacing.js +54 -0
  151. package/modules/VirtualScroller.verticalSpacing.js.map +1 -0
  152. package/modules/getItemCoordinates.js.map +1 -1
  153. package/modules/getItemsDiff.js.map +1 -1
  154. package/modules/getVerticalSpacing.js.map +1 -1
  155. package/modules/react/VirtualScroller.js +176 -625
  156. package/modules/react/VirtualScroller.js.map +1 -1
  157. package/modules/react/useClassName.js +18 -0
  158. package/modules/react/useClassName.js.map +1 -0
  159. package/modules/react/useHandleItemsChange.js +108 -0
  160. package/modules/react/useHandleItemsChange.js.map +1 -0
  161. package/modules/react/useInstanceMethods.js +28 -0
  162. package/modules/react/useInstanceMethods.js.map +1 -0
  163. package/modules/react/useItemKeys.js +52 -0
  164. package/modules/react/useItemKeys.js.map +1 -0
  165. package/modules/react/useOnItemHeightChange.js +24 -0
  166. package/modules/react/useOnItemHeightChange.js.map +1 -0
  167. package/modules/react/useOnItemStateChange.js +24 -0
  168. package/modules/react/useOnItemStateChange.js.map +1 -0
  169. package/modules/react/useState.js +132 -0
  170. package/modules/react/useState.js.map +1 -0
  171. package/modules/react/useStyle.js +19 -0
  172. package/modules/react/useStyle.js.map +1 -0
  173. package/modules/react/useVirtualScroller.js +51 -0
  174. package/modules/react/useVirtualScroller.js.map +1 -0
  175. package/modules/react/useVirtualScrollerStartStop.js +12 -0
  176. package/modules/react/useVirtualScrollerStartStop.js.map +1 -0
  177. package/modules/test/Engine.js +11 -0
  178. package/modules/test/Engine.js.map +1 -0
  179. package/modules/test/ItemsContainer.js +120 -0
  180. package/modules/test/ItemsContainer.js.map +1 -0
  181. package/modules/test/ScrollableContainer.js +123 -0
  182. package/modules/test/ScrollableContainer.js.map +1 -0
  183. package/modules/test/VirtualScroller.js +270 -0
  184. package/modules/test/VirtualScroller.js.map +1 -0
  185. package/modules/utility/debounce.js +2 -2
  186. package/modules/utility/debounce.js.map +1 -1
  187. package/modules/utility/debug.js.map +1 -1
  188. package/modules/utility/getStateSnapshot.js +2 -2
  189. package/modules/utility/getStateSnapshot.js.map +1 -1
  190. package/modules/utility/px.js.map +1 -1
  191. package/modules/utility/px.test.js +1 -1
  192. package/modules/utility/px.test.js.map +1 -1
  193. package/modules/utility/shallowEqual.js +1 -1
  194. package/modules/utility/shallowEqual.js.map +1 -1
  195. package/modules/utility/throttle.js.map +1 -1
  196. package/package.json +46 -23
  197. package/react/index.cjs +4 -0
  198. package/react/index.cjs.js +9 -0
  199. package/react/index.d.ts +10 -9
  200. package/react/index.js +1 -1
  201. package/react/package.json +10 -4
  202. package/rollup.config.mjs +62 -0
  203. package/runnable/create-commonjs-package-json.js +11 -0
  204. package/source/BeforeResize.js +16 -21
  205. package/source/DOM/Engine.js +8 -10
  206. package/source/DOM/ListTopOffsetWatcher.js +13 -8
  207. package/source/DOM/ScrollableContainer.js +23 -21
  208. package/source/DOM/VirtualScroller.js +27 -11
  209. package/source/DOM/tbody.js +30 -21
  210. package/source/ItemHeights.js +19 -14
  211. package/source/Layout.js +12 -9
  212. package/source/Layout.test.js +8 -3
  213. package/source/{ListHeightChangeWatcher.js → ListHeightMeasurement.js} +21 -20
  214. package/source/Resize.js +41 -25
  215. package/source/Scroll.js +27 -35
  216. package/source/VirtualScroller.columns.js +26 -0
  217. package/source/VirtualScroller.constructor.js +336 -0
  218. package/source/VirtualScroller.items.js +302 -0
  219. package/source/VirtualScroller.js +144 -1872
  220. package/source/VirtualScroller.layout.js +539 -0
  221. package/source/VirtualScroller.onRender.js +345 -0
  222. package/source/VirtualScroller.resize.js +189 -0
  223. package/source/VirtualScroller.state.js +284 -0
  224. package/source/VirtualScroller.verticalSpacing.js +51 -0
  225. package/source/react/VirtualScroller.js +243 -587
  226. package/source/react/useClassName.js +14 -0
  227. package/source/react/useHandleItemsChange.js +115 -0
  228. package/source/react/useInstanceMethods.js +25 -0
  229. package/source/react/useItemKeys.js +59 -0
  230. package/source/react/useOnItemHeightChange.js +28 -0
  231. package/source/react/useOnItemStateChange.js +28 -0
  232. package/source/react/useState.js +114 -0
  233. package/source/react/useStyle.js +20 -0
  234. package/source/react/useVirtualScroller.js +59 -0
  235. package/source/react/useVirtualScrollerStartStop.js +12 -0
  236. package/source/test/Engine.js +11 -0
  237. package/source/test/ItemsContainer.js +87 -0
  238. package/source/test/ScrollableContainer.js +88 -0
  239. package/source/test/VirtualScroller.js +232 -0
  240. package/source/utility/debounce.js +2 -2
  241. package/source/utility/px.test.js +1 -1
  242. package/babel.config.js +0 -25
  243. package/babel.js +0 -5
  244. package/commonjs/ListHeightChangeWatcher.js.map +0 -1
  245. package/dom/index.commonjs.js +0 -4
  246. package/index.commonjs.js +0 -4
  247. package/modules/ListHeightChangeWatcher.js.map +0 -1
  248. package/react/index.commonjs.js +0 -4
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VirtualScroller=t(e.React,e.PropTypes)}(this,(function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),o=n(t),r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var s=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){(function(){var t,n,i,o,r,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-r)/1e6},n=process.hrtime,o=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),r=o-s):Date.now?(e.exports=function(){return Date.now()-i},i=Date.now()):(e.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(r)})),a="undefined"==typeof window?r:window,l=["moz","webkit"],u="AnimationFrame",h=a["request"+u],c=a["cancel"+u]||a["cancelRequest"+u],f=0;!h&&f<l.length;f++)h=a[l[f]+"Request"+u],c=a[l[f]+"Cancel"+u]||a[l[f]+"CancelRequest"+u];if(!h||!c){var d=0,m=0,g=[];h=function(e){if(0===g.length){var t=s(),n=Math.max(0,16.666666666666668-(t-d));d=n+t,setTimeout((function(){var e=g.slice(0);g.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(d)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return g.push({handle:++m,callback:e,cancelled:!1}),m},c=function(e){for(var t=0;t<g.length;t++)g[t].handle===e&&(g[t].cancelled=!0)}}var p=function(e){return h.call(a,e)};p.cancel=function(){c.apply(a,arguments)},p.polyfill=function(e){e||(e=a),e.requestAnimationFrame=h,e.cancelAnimationFrame=c};var I=p.cancel;function v(e,t){var n=Date.now(),i=p((function o(){Date.now()-n>=t?e():i=p(o)}));return{clear:function(){return I(i)}}}function S(e){e&&e.clear()}function y(e){return(e%1==0?e:e.toFixed(2))+"px"}var b="It looks like you're using Internet Explorer which doesn't support CSS variables required for a <tbody/> container. VirtualScroller has been switched into \"bypass\" mode (render all items). See: https://gitlab.com/catamphetamine/virtual-scroller/-/issues/1";function C(){return"undefined"==typeof window||!window.document.documentMode}function w(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var R=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getElement=t}var t,n,i;return t=e,(n=[{key:"getNthRenderedItemTopOffset",value:function(e){return this.getElement().childNodes[e].getBoundingClientRect().top-this.getElement().getBoundingClientRect().top}},{key:"getNthRenderedItemHeight",value:function(e){return this.getElement().childNodes[e].getBoundingClientRect().height}},{key:"getHeight",value:function(){return this.getElement().getBoundingClientRect().height}},{key:"clear",value:function(){for(;this.getElement().firstChild;)this.getElement().removeChild(this.getElement().firstChild)}}])&&w(t.prototype,n),i&&w(t,i),e}();function x(e){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},x(e)}function H(e,t){return H=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},H(e,t)}function O(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=P(e);if(t){var o=P(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return T(this,n)}}function T(e,t){if(t&&("object"===x(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function P(e){return P=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},P(e)}function L(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function z(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function k(e,t,n){return t&&z(e.prototype,t),n&&z(e,n),e}var A=function(){function e(t,n){L(this,e),this.element=t,this.getItemsContainerElement=n}return k(e,[{key:"getScrollY",value:function(){return this.element.scrollTop}},{key:"scrollToY",value:function(e){this.element.scrollTo?this.element.scrollTo(0,e):this.element.scrollTop=e}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"getHeight",value:function(){return this.element.offsetHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=this.element.getBoundingClientRect().top,t=this.element.clientTop;return this.getItemsContainerElement().getBoundingClientRect().top-e+this.getScrollY()-t}},{key:"onScroll",value:function(e){var t=this;return this.element.addEventListener("scroll",e),function(){return t.element.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e){var t,n=this;if("undefined"!=typeof ResizeObserver){var i=new ResizeObserver((function(t){t[0],e()}));i.observe(this.element),t=function(){return i.unobserve(n.element)}}var o=M(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),o()}}}]),e}(),B=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&H(e,t)}(n,e);var t=O(n);function n(e){return L(this,n),t.call(this,window,e)}return k(n,[{key:"getScrollY",value:function(){return window.pageYOffset}},{key:"getWidth",value:function(){return window.innerWidth}},{key:"getHeight",value:function(){return window.innerHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=document.clientTop||document.body.clientTop||0;return this.getItemsContainerElement().getBoundingClientRect().top+this.getScrollY()-e}},{key:"onResize",value:function(e){return M(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(A);function M(e,t){var n=t.itemsContainerElement,i=function(){document.fullscreenElement&&!document.fullscreenElement.contains(n)||e()};return window.addEventListener("resize",i),function(){return window.removeEventListener("resize",i)}}function j(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var E=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this.isRendered=!0,this.watchListTopOffset()}},{key:"stop",value:function(){this.isRendered=!1,this.watchListTopOffsetTimer&&(S(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e.isRendered&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=v(n,500)))}()}}])&&j(t.prototype,n),i&&j(t,i),e}(),U={createItemsContainer:function(e){return new R(e)},createScrollableContainer:function(e,t){return e?new A(e,t):"undefined"!=typeof window?new B(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new E({getListTopOffset:t,onListTopOffsetChange:n})}};function W(e){return function(e){if(Array.isArray(e))return N(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return N(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return N(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function V(){if(F()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,W(["[virtual-scroller]"].concat(n)))}}function _(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(Y())return D.apply(this,n);(e=console).warn.apply(e,W(["[virtual-scroller]"].concat(n)))}function D(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(V.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))}),0)):(i=console).error.apply(i,W(["[virtual-scroller]"].concat(t)))}function F(){var e=q("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function Y(){return q("VirtualScrollerWarningsAreErrors")}function q(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function K(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function J(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?K(Object(n),!0).forEach((function(t){$(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):K(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function $(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function G(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var Q=function(){function e(t){var n=t.bypass,i=t.estimatedItemHeight,o=t.measureItemsBatchSize,r=t.getPrerenderMargin,s=t.getVerticalSpacing,a=t.getVerticalSpacingBeforeResize,l=t.getColumnsCount,u=t.getColumnsCountBeforeResize,h=t.getItemHeight,c=t.getItemHeightBeforeResize,f=t.getBeforeResizeItemsCount,d=t.getAverageItemHeight,m=t.getMaxVisibleAreaHeight,g=t.getPreviouslyCalculatedLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.estimatedItemHeight=i,this.measureItemsBatchSize=o,this.getPrerenderMargin=r,this.getVerticalSpacing=s,this.getVerticalSpacingBeforeResize=a,this.getColumnsCount=l,this.getColumnsCountBeforeResize=u,this.getItemHeight=h,this.getItemHeightBeforeResize=c,this.getBeforeResizeItemsCount=f,this.getAverageItemHeight=d,this.getMaxVisibleAreaHeight=m,this.getPreviouslyCalculatedLayout=g}var t,n,i;return t=e,n=[{key:"getInitialLayoutValues",value:function(e){var t,n,i=e.itemsCount,o=e.columnsCount;return i>0&&(t=0,n=this.getInitialLastShownItemIndex({itemsCount:i,columnsCount:o,firstShownItemIndex:t})),{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var o=1;return this.getMaxVisibleAreaHeight()&&(o=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin())),Math.min(i+(o*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){return this.getAverageItemHeight()||this.estimatedItemHeight||0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,o=e.lastShownItemIndex,r=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,u=n.itemsCount,h=n.columnsCount,c=n.shouldRestoreScrollPosition,f=this.getAverageItemHeight(),d=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/h)*(d+f)),a>0&&(i+=a,o+=a,r+=Math.ceil(a/h)*(f+d),c&&(i=0,r=0),a%h>0)){_("~ Prepended items count",a,"is not divisible by Columns Count",h,"~"),_("Reset Layout");var m=o-i+1;if(i=0,r=0,!c&&a>m){var g=u-((o=this.getInitialLastShownItemIndex({itemsCount:u,columnsCount:h,firstShownItemIndex:i}))+1);s=Math.ceil(g/h)*(d+f)}}return{beforeItemsHeight:r,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:o}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,o=t.nonMeasuredAreaHeight,r=t.indexOfTheFirstItemInTheRow;V("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(o)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=r),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(r+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaTop,i=e.visibleAreaBottom,o=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaTop:n,visibleAreaBottom:i,findFirstShownItemIndex:!0});if(null===o)return this.getNonVisibleListShownItemIndexes();if(void 0!==o.firstNonMeasuredItemIndex)return o;var r=o,s=r.firstShownItemIndex,a=r.beforeItemsHeight;return null===(o=this._getShownItemIndex({itemsCount:t,fromIndex:s,beforeItemsHeight:a,visibleAreaTop:n,visibleAreaBottom:i,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==o.firstNonMeasuredItemIndex?o:{firstShownItemIndex:s,lastShownItemIndex:o.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaTop,o=e.visibleAreaBottom,r=e.findFirstShownItemIndex,s=e.findLastShownItemIndex,a=e.fromIndex,l=e.beforeItemsHeight;if(0===a&&(l=0),void 0===l)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+a);if(!t){var u=this.getBeforeResizeItemsCount();if(u>a){var h=this._getShownItemIndex(J(J({},e),{},{beforeResize:!0,itemsCount:u})),c=h.notFound,f=h.beforeItemsHeight,d=h.firstShownItemIndex,m=h.lastShownItemIndex;if(!c){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===d?void 0:Math.floor(d/g)*g,lastShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,beforeItemsHeight:f}}l=f,a+=u}}for(var p=t?this.getColumnsCountBeforeResize():this.getColumnsCount(),I=t?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing(),v=a;v<n;){for(var S=v,y=n>S+p?I:0,b=0,C=0;C<p&&v<n;){var w=t?this.getItemHeightBeforeResize(v):this.getItemHeight(v);if(void 0===w)return this.getItemNotMeasuredIndexes(v,{itemsCount:n,firstShownItemIndex:s?a:void 0,indexOfTheFirstItemInTheRow:S,nonMeasuredAreaHeight:o+this.getPrerenderMargin()-l});b=Math.max(b,w),C++,v++}var R=l+b,x=R>i-this.getPrerenderMargin(),H=R+y>=o+this.getPrerenderMargin();if(r){if(x)return{firstShownItemIndex:S,beforeItemsHeight:l}}else if(s&&H)return{lastShownItemIndex:Math.min(S+p-1,n-1)};l+=b+y}return t?{notFound:!0,beforeItemsHeight:l}:r?(_("The list is supposed to be visible but no visible item has been found"),null):s?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,o=0;if(!n){var r=this.getBeforeResizeItemsCount();r>0&&(i=this.getBeforeItemsHeight(Math.min(e,r),{beforeResize:!0}),o=r)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();o<e;){for(var l=0,u=0;u<s;){var h=n?this.getItemHeightBeforeResize(o):this.getItemHeight(o);void 0===h&&(h=this.getAverageItemHeight()),l=Math.max(l,h),o++,u++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,o=e+1;o<t;){for(var r=0,s=0;s<n&&o<t;){var a=this.getItemHeight(o);void 0===a&&(a=this.getAverageItemHeight()),r=Math.max(r,a),o++,s++}i+=this.getVerticalSpacing(),i+=r}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),o=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,r=0;r<o;)t+=this.getItemHeightBeforeResize(r*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),r++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,u=0;u<this.getColumnsCount();){var h=this.getItemHeight(n+a*this.getColumnsCount()+u);if(void 0===h)return;l=Math.max(l,h),u++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&G(t.prototype,n),i&&G(t,i),e}(),X="scroll",Z="stopped scrolling",ee="manual",te="mounted",ne="actual item heights have been measured",ie="viewport width changed",oe="viewport height changed",re="viewport size unchanged",se="item height changed",ae="items changed",le="list top offset changed";function ue(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var he=function(){function e(t){var n,i,o,r=this,s=t.bypass,a=t.scrollableContainer,l=t.onStart,u=t.onStop,h=t.onHeightChange,c=t.onWidthChange,f=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),o=function(){if(r.isRendered){var e=r.scrollableContainerWidth,t=r.scrollableContainerHeight;r.scrollableContainerWidth=r.scrollableContainer.getWidth(),r.scrollableContainerHeight=r.scrollableContainer.getHeight(),r.scrollableContainerWidth===e?r.scrollableContainerHeight===t?r.onNoChange():r.onHeightChange(t,r.scrollableContainerHeight):r.onWidthChange(e,r.scrollableContainerWidth)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o,this.bypass=s,this.scrollableContainer=a,this.onHeightChange=h,this.onWidthChange=c,this.onNoChange=f,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i.onStart,r=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?S(n):o&&o(),n=v((function(){n=void 0,r&&r(),e.apply(i,a),s()}),t)}))}}(this._onResize,ce,{onStart:l,onStop:u})}var t,n,i;return t=e,(n=[{key:"listen",value:function(){this.bypass||(this.isRendered=!0,this.scrollableContainerWidth=this.scrollableContainer.getWidth(),this.scrollableContainerHeight=this.scrollableContainer.getHeight(),this.scrollableContainerUnlistenResize=this.scrollableContainer.onResize(this.onResize))}},{key:"stop",value:function(){this.isRendered=!1,this.scrollableContainerUnlistenResize&&(this.scrollableContainerUnlistenResize(),this.scrollableContainerUnlistenResize=void 0)}}])&&ue(t.prototype,n),i&&ue(t,i),e}(),ce=250;function fe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function de(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?fe(Object(n),!0).forEach((function(t){me(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):fe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ge(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var pe=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,o=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=o}var t,n,i;return t=e,n=[{key:"onInitialState",value:function(e){e&&(e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e.beforeResize&&(this._includesBeforeResizeInState=!0))}},{key:"cleanUpBeforeResizeItemHeights",value:function(e){var t=this.getState(),n=t.firstShownItemIndex,i=t.lastShownItemIndex,o=t.itemHeights,r=t.beforeResize;if(r&&n<r.itemHeights.length){V('~ Clean up "before resize" item heights and correct scroll position ~');for(var s=0,a=Math.floor(r.itemHeights.length/this.getColumnsCount()),l=Math.min(a*this.getColumnsCount()-1,i),u=n;u<=l;){for(var h=0,c=0;c<this.getColumnsCount()&&u<=l;){var f=o[u];void 0===f&&(f=this.getAverageItemHeight()),h=Math.max(h,f),u++,c++}s+=h,s+=this.getVerticalSpacing()}for(var d=0,m=Math.min(r.itemHeights.length,i+1),g=Math.ceil(m/r.columnsCount),p=0===n?0:Math.floor((n-1)/r.columnsCount)+1;p<g;)d+=r.itemHeights[p*r.columnsCount],d+=r.verticalSpacing,p++;if(0===n)V('Drop all "before resize" item heights');else{var I=n,v=r.itemHeights.length-1;I===v?V("For item index",I,'— drop "before resize" height',r.itemHeights[I]):V("For item indexes from",I,"to",v,'— drop "before resize" heights',r.itemHeights.slice(I))}return r.itemHeights.splice(n,r.itemHeights.length-n),{scrollBy:s-d,beforeResize:0===n?void 0:de({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),o=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var r=this.getState(),s=r.beforeResize,a=r.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==o){for(var u=0,h=Math.ceil(l/s.columnsCount),c=0;c<h;)u+=s.itemHeights[c*s.columnsCount],u+=s.verticalSpacing,c++;for(var f=0,d=t;d<n;){for(var m=0,g=0;g<i&&d<n;)m=Math.max(m,a[d]),g++,d++;f+=m,f+=o}var p=u+f,I=Math.ceil(n/i);return new Array(n).fill(Math.max(0,p/I-o))}return s.itemHeights.concat(Ie(a,n,i).slice(s.itemHeights.length))}return Ie(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&ge(t.prototype,n),i&&ge(t,i),e}();function Ie(e,t,n){e=e.slice(0,Math.ceil(t/n)*n);for(var i=0;i*n<t;){for(var o=0,r=0;r<n;)o=Math.max(o,e[i*n+r]),r++;for(r=0;r<n;)e[i*n+r]=o,r++;i++}return e.slice(0,t)}function ve(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Se(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ye=function(){function e(t){var n=this,i=t.bypass,o=t.scrollableContainer,r=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,u=t.isImmediateLayoutScheduled,h=t.hasNonRenderedItemsAtTheTop,c=t.hasNonRenderedItemsAtTheBottom,f=t.getLatestLayoutVisibleArea,d=t.getListTopOffset,m=t.getPrerenderMargin,g=t.onScrolledToTop,p=t.waitForScrollingToStop;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Se(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),Se(this,"onScrollListener",(function(){if(n.onScrollPositionChange&&n.onScrollPositionChange(n.getScrollY()),n.onScrolledToTop&&n.getScrollY()<n.getListTopOffset()&&n.onScrolledToTop(),!n.bypass&&!n.ignoreScrollEvents){n.cancelOnStopScrollingTimer();var e=n.getLatestLayoutVisibleArea()&&(n.getScrollY()<n.getLatestLayoutVisibleArea().top-n.getPrerenderMargin()&&n.hasNonRenderedItemsAtTheTop()||n.getScrollY()+n.scrollableContainer.getHeight()>n.getLatestLayoutVisibleArea().bottom+n.getPrerenderMargin()&&n.hasNonRenderedItemsAtTheBottom());if(V(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.onScrollOnStopScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=o,this.itemsContainer=r,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=u,this.hasNonRenderedItemsAtTheTop=h,this.hasNonRenderedItemsAtTheBottom=c,this.getLatestLayoutVisibleArea=f,this.getListTopOffset=d,this.getPrerenderMargin=m,this.onScrolledToTop=g,this.waitForScrollingToStop=p}var t,n,i;return t=e,(n=[{key:"listen",value:function(){void 0!==this.initialScrollPosition&&this.scrollToY(this.initialScrollPosition),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopReportingScrollPositionChange&&(this.stopReportingScrollPositionChange(),this.stopReportingScrollPositionChange=void 0),this.stopListeningToScroll&&(this.stopListeningToScroll(),this.stopListeningToScroll=void 0),this.onStopScrollingListener&&(this.onStopScrollingListener=void 0),this.onScrollOnStopScrolling&&(this.onScrollOnStopScrolling=void 0),this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(S(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=v((function(){if(e.onStopScrollingTimer=void 0,e.onScrollOnStopScrolling&&(e.onScrollOnStopScrolling=void 0,e.onScroll({delayed:!0})),e.onStopScrollingListener){var t=e.onStopScrollingListener;e.onStopScrollingListener=void 0,V("~ The user has stopped scrolling ~"),t()}}),be)}},{key:"onStopScrolling",value:function(e){this.onStopScrollingListener=e,this.onStopScrollingTimer||this.watchOnStopScrolling()}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&ve(t.prototype,n),i&&ve(t,i),e}(),be=100;function Ce(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var we=function(){function e(t){var n=t.itemsContainer,i=t.getListTopOffset;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.itemsContainer=n,this.getListTopOffset=i}var t,n,i;return t=e,(n=[{key:"snapshot",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot&&this._snapshot.previousItems===t&&this._snapshot.newItems===n||(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()}))}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&Ce(t.prototype,n),i&&Ce(t,i),e}();function Re(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var xe=function(){function e(t,n,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=t,this._get=n,this._set=i,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"initialize",value:function(e){for(var t=0;t<e.length;){if(void 0===e[t]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=t-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=t),this.measuredItemsHeight+=e[t];t++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(V("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(V("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,o=this.lastMeasuredItemIndex,r=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);V("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,r||(this.firstMeasuredItemIndex=s,r=!0)),(void 0===o||s>o)&&(void 0!==o&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),u=this._measureItemHeight(s,e);l!==u&&_("Item index",s,"height was",l,"before it was hidden, but, after showing it again, its height is",u,". Perhaps you forgot to persist the item's state by calling `onItemStateChange(i, newState)` when it changed, and that state got lost when the item element was unmounted, which resulted in a different height when the item was shown again, but with the missing state.")}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&Re(t.prototype,n),i&&Re(t,i),e}();function He(e){return He="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},He(e)}var Oe=Object.prototype.hasOwnProperty;function Te(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function Pe(e,t){if(Te(e,t))return!0;if("object"!==He(e)||null===e||"object"!==He(t)||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var o=0;o<n.length;o++)if(!Oe.call(t,n[o])||!Te(e[n[o]],t[n[o]]))return!1;return!0}function Le(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ze(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Le(Object(n),!0).forEach((function(t){ke(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Le(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ae(e){var t=ze({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=ze({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function Be(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Me(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Be(Object(n),!0).forEach((function(t){Ue(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Be(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function je(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ee(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Ue(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var We=function(){function e(t,n){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};je(this,e),Ue(this,"getActualColumnsCountForState",(function(){return i._getColumnsCount?i._getColumnsCount(i.scrollableContainer):void 0})),Ue(this,"getVerticalSpacing",(function(){return i.verticalSpacing||0})),Ue(this,"getListTopOffsetInsideScrollableContainer",(function(){var e=i.scrollableContainer.getItemsContainerTopOffset();return i.listTopOffsetWatcher&&i.listTopOffsetWatcher.onListTopOffset(e),e})),Ue(this,"stop",(function(){i.isRendered=!1,i.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),Ue(this,"willUpdateState",(function(e,t){})),Ue(this,"didUpdateState",(function(e){var t=i.getState();if(i.onStateChange&&(Pe(t,e)||i.onStateChange(t,e)),e&&i.isRendered){var n;V("~ Rendered ~"),F()&&V("State",Ae(t)),void 0!==i.firstNonMeasuredItemIndex&&(n=ne),i.resetLayoutAfterResize&&(n=ie);var o=i.resetLayoutAfterResize;i.firstNonMeasuredItemIndex=void 0,i.resetLayoutAfterResize=void 0,i.newItemsWillBeRendered=void 0,i.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,i.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0,o&&(i.itemHeights.reset(),i.verticalSpacing=void 0);var r,s=e.items,a=t.items;if(a!==s){var l=i.getItemsDiff(s,a);if(l){var u=l.prependedItemsCount;i.itemHeights.onPrepend(u)}else i.itemHeights.reset(),i.itemHeights.initialize(t.itemHeights);o||"SEAMLESS_PREPEND"!==i.onNewItemsRendered(l,t)&&(n=ae)}if(t.firstShownItemIndex!==e.firstShownItemIndex||t.lastShownItemIndex!==e.lastShownItemIndex||t.items!==e.items||o){var h=i.measureItemHeightsAndSpacingAndUpdateTablePadding();h&&(r=Me(Me({},r),h))}var c=i.beforeResize.cleanUpBeforeResizeItemHeights(e);if(void 0!==c){var f=c.scrollBy,d=c.beforeResize;V("Correct scroll position by",f),i.scroll.scrollByY(f),r=Me(Me({},r),{},{beforeResize:d})}n?i.updateStateRightAfterRender({stateUpdate:r,reason:n}):r&&i.setState(r)}})),Ue(this,"updateShownItemIndexes",(function(e){var t=e.stateUpdate,n=Date.now(),o=i.getShownItemIndexes(),r=o.firstShownItemIndex,s=o.lastShownItemIndex,a=o.shownItemsHeight,l=o.firstNonMeasuredItemIndex;if(i.listHeightChangeWatcher.hasSnapshot()&&(s<i.listHeightChangeWatcher.getAnchorItemIndex()&&(s=i.listHeightChangeWatcher.getAnchorItemIndex()),l=void 0),!i.validateWillBeHiddenItemHeightsAreAccurate(r,s))return V("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),i.updateShownItemIndexes({stateUpdate:t});var u=i.layout.getBeforeItemsHeight(r),h=i.layout.getAfterItemsHeight(s,i.getItemsCount()),c=Date.now()-n;V("~ Layout values "+(i.bypass?"(bypass) ":"")+"~"),c<Ne||_("Layout calculated in",c,"ms"),i._getColumnsCount&&V("Columns count",i.getColumnsCount()),V("First shown item index",r),V("Last shown item index",s),V("Before items height",u),V("After items height (actual or estimated)",h),V("Average item height (used for estimated after items height calculation)",i.itemHeights.getAverage()),F()&&(V("Item heights",i.getState().itemHeights.slice()),V("Item states",i.getState().itemStates.slice())),i.onBeforeShowItems(i.getState().items,i.getState().itemHeights,r,s),i.firstNonMeasuredItemIndex=l,i.previouslyCalculatedLayout=void 0===a?void 0:{firstShownItemIndex:r,lastShownItemIndex:s,beforeItemsHeight:u,shownItemsHeight:a},i.setState(Me({firstShownItemIndex:r,lastShownItemIndex:s,beforeItemsHeight:u,afterItemsHeight:h},t))})),Ue(this,"onUpdateShownItemIndexes",(function(e){var t=e.reason,n=e.stateUpdate,o=function(){n&&i.setState(n)};return i.newItemsWillBeRendered||i.resetLayoutAfterResize||i.isResizing||0===i.getItemsCount()?o():(i.scroll.cancelScheduledLayout(),n=i.cancelLayoutTimer({stateUpdate:n}),V("~ Update Layout (on ".concat(t,") ~")),void i.updateShownItemIndexes({stateUpdate:n}))})),Ue(this,"updateLayout",(function(){return i.onUpdateShownItemIndexes({reason:ee})})),Ue(this,"layout",(function(){return i.updateLayout()}));var r=o.onStateChange,s=o.customState,a=o.initialScrollPosition,l=o.onScrollPositionChange,u=o.measureItemsBatchSize,h=o.getScrollableContainer,c=o.getColumnsCount,f=o.getItemId,d=o.tbody,m=o._useTimeoutInRenderLoop,g=o._waitForScrollingToStop,p=o.getState,I=o.setState,v=o.bypass,S=o.estimatedItemHeight,y=o.onItemInitialRender,w=o.onItemFirstRender,R=o.scrollableContainer,x=o.state,H=o.engine;if(V("~ Initialize ~"),x&&(n=x.items),!R&&h&&(R=h()),H||(H=U),this.getItemsContainerElement=t,this.itemsContainer=H.createItemsContainer(t),t()&&this.itemsContainer.clear(),this.scrollableContainer=H.createScrollableContainer(R,t),d){if(H!==U)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");V("~ <tbody/> detected ~"),this.tbody=!0,C()||(V("~ <tbody/> not supported ~"),D(b),v=!0)}if(v&&V('~ "bypass" mode ~'),this.bypass=v,this._useTimeoutInRenderLoop=m,this.isItemEqual=f?function(e,t){return f(e)===f(t)}:function(e,t){return e===t},this.initialItems=n,this.onStateChange=r,this._getColumnsCount=c,y?this.onItemInitialRender=y:w&&(this.onItemInitialRender=function(e){_("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=i.getState().items.indexOf(e);t>=0&&w(t)}),V("Items count",n.length),S&&V("Estimated item height",S),p||(p=function(){return i.state},I=function(e,t){var n=t.willUpdateState,o=t.didUpdateState,r=p(),s=Me(Me({},r),e);n(s,r),i.state=s,o(r)}),this.getState=p,this.setState=function(e){F()&&V("Set state",Ae(e)),I(e,{willUpdateState:i.willUpdateState,didUpdateState:i.didUpdateState})},x&&F()&&V("Initial state (passed)",Ae(x)),x){var O,T=this.getActualColumnsCountForState();T!==x.columnsCount&&(_("~ Columns Count changed from",x.columnsCount||1,"to",T||1,"~"),O=!0);var P=this.getActualColumnsCount(),L=Math.floor(x.firstShownItemIndex/P)*P;L!==x.firstShownItemIndex&&(_("~ First Shown Item Index",x.firstShownItemIndex,"is not divisible by Columns Count",P,"~"),O=!0),O&&(_("Reset Layout"),x=Me(Me({},x),this.getInitialLayoutState(x.items)))}x&&(x=Me(Me({},x),{},{verticalSpacing:void 0})),this.itemHeights=new xe(this.itemsContainer,(function(e){return i.getState().itemHeights[e]}),(function(e,t){return i.getState().itemHeights[e]=t})),x&&this.itemHeights.initialize(x.itemHeights),this.layout=new Q({bypass:v,estimatedItemHeight:S,measureItemsBatchSize:void 0===u?50:u,getPrerenderMargin:function(){return i.getPrerenderMargin()},getVerticalSpacing:function(){return i.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return i.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return i.getColumnsCount()},getColumnsCountBeforeResize:function(){return i.getState().beforeResize&&i.getState().beforeResize.columnsCount},getItemHeight:function(e){return i.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return i.getState().beforeResize&&i.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return i.getState().beforeResize?i.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return i.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return i.scrollableContainer&&i.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return i.previouslyCalculatedLayout}}),this.resize=new he({bypass:v,scrollableContainer:this.scrollableContainer,onStart:function(){V("~ Scrollable container resize started ~"),i.isResizing=!0},onStop:function(){V("~ Scrollable container resize finished ~"),i.isResizing=void 0},onNoChange:function(){i.onUpdateShownItemIndexes({reason:re})},onHeightChange:function(){return i.onUpdateShownItemIndexes({reason:oe})},onWidthChange:function(e,t){V("~ Scrollable container width changed from",e,"to",t,"~"),i.onResize()}}),this.scroll=new ye({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:g,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.delayed;i.onUpdateShownItemIndexes({reason:t?Z:X})},initialScrollPosition:a,onScrollPositionChange:l,isImmediateLayoutScheduled:function(){return i.layoutTimer},hasNonRenderedItemsAtTheTop:function(){return i.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return i.getState().lastShownItemIndex<i.getItemsCount()-1},getLatestLayoutVisibleArea:function(){return i.latestLayoutVisibleArea},getListTopOffset:this.getListTopOffsetInsideScrollableContainer,getPrerenderMargin:function(){return i.getPrerenderMargin()}}),this.listHeightChangeWatcher=new we({itemsContainer:this.itemsContainer,getListTopOffset:this.getListTopOffsetInsideScrollableContainer}),H.watchListTopOffset&&(this.listTopOffsetWatcher=H.watchListTopOffset({getListTopOffset:this.getListTopOffsetInsideScrollableContainer,onListTopOffsetChange:function(e){return e.reason,i.onUpdateShownItemIndexes({reason:le})}})),this.beforeResize=new pe({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount}),this.beforeResize.onInitialState(x),this.verticalSpacing=x?x.verticalSpacing:void 0,this.setState(x||this.getInitialState(s))}var t,n,i;return t=e,n=[{key:"getInitialState",value:function(e){var t=this.initialItems,n=Me(Me(Me({},e),this.getInitialLayoutState(t)),{},{items:t,itemStates:new Array(t.length)});return F()&&V("Initial state (autogenerated)",Ae(n)),V("First shown item index",n.firstShownItemIndex),V("Last shown item index",n.lastShownItemIndex),n}},{key:"getInitialLayoutState",value:function(e){var t=e.length,n=this.layout.getInitialLayoutValues({itemsCount:t,columnsCount:this.getColumnsCount()}),i=n.firstShownItemIndex,o=n.lastShownItemIndex,r=n.beforeItemsHeight,s=n.afterItemsHeight,a=new Array(t);return this.onBeforeShowItems(e,a,i,o),{itemHeights:a,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:i,lastShownItemIndex:o,beforeItemsHeight:r,afterItemsHeight:s}}},{key:"getActualColumnsCount",value:function(){return this.getActualColumnsCountForState()||1}},{key:"getVerticalSpacingBeforeResize",value:function(){return this.getState().beforeResize&&this.getState().beforeResize.verticalSpacing||0}},{key:"getColumnsCount",value:function(){return this.getState()&&this.getState().columnsCount||1}},{key:"getItemsCount",value:function(){return this.getState().items.length}},{key:"getPrerenderMargin",value:function(){return 1*this.scrollableContainer.getHeight()}},{key:"onBeforeShowItems",value:function(e,t,n,i){if(this.onItemInitialRender)for(var o=n;o<=i;)void 0===t[o]&&this.onItemInitialRender(e[o]),o++}},{key:"onMount",value:function(){_("`.onMount()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"render",value:function(){_("`.render()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"listen",value:function(){if(!1===this.isRendered)throw new Error("[virtual-scroller] Can't restart a `VirtualScroller` after it has been stopped");V("~ Rendered (initial) ~"),this.isRendered=!0;var e=this.measureItemHeightsAndSpacingAndUpdateTablePadding();this.resize.listen(),this.scroll.listen(),this.tbody&&function(e){e.classList.add("VirtualScroller");var t=document.getElementById("VirtualScrollerStyle");t||((t=document.createElement("style")).id="VirtualScrollerStyle",t.innerText="\n\t\t\ttbody.VirtualScroller:before {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t\t}\n\t\t\ttbody.VirtualScroller:after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t\t}\n\t\t".replace(/[\n\t]/g,""),document.head.appendChild(t))}(this.getItemsContainerElement()),this.onUpdateShownItemIndexes({reason:te,stateUpdate:e})}},{key:"measureItemHeightsAndSpacingAndUpdateTablePadding",value:function(){this.itemHeights.measureItemHeights(this.getState().firstShownItemIndex,this.getState().lastShownItemIndex);var e,t,n,i=this.measureVerticalSpacing();if(this.tbody&&(e=this.getItemsContainerElement(),t=this.getState().beforeItemsHeight,n=this.getState().afterItemsHeight,e.style.setProperty("--VirtualScroller-paddingTop",y(t)),e.style.setProperty("--VirtualScroller-paddingBottom",y(n))),void 0!==i)return{verticalSpacing:i}}},{key:"getVisibleArea",value:function(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onUnmount",value:function(){_("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"destroy",value:function(){_("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"cancelLayoutTimer",value:function(e){var t=e.stateUpdate;return this.layoutTimer?(S(this.layoutTimer),this.layoutTimer=void 0,t||this.layoutTimerStateUpdate?(t=Me(Me({},this.layoutTimerStateUpdate),t),this.layoutTimerStateUpdate=void 0,t):void 0):t}},{key:"scheduleLayoutTimer",value:function(e){var t=this,n=e.reason,i=e.stateUpdate;this.layoutTimerStateUpdate=i,this.layoutTimer=v((function(){t.layoutTimerStateUpdate=void 0,t.layoutTimer=void 0,t.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}},{key:"onNewItemsRendered",value:function(e,t){if(e){var n=e.prependedItemsCount;e.appendedItemsCount;var i=this.getState(),o=i.itemHeights,r=i.itemStates;if(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered)for(var s=0,a=Object.keys(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered);s<a.length;s++){var l=a[s];o[n+parseInt(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var u=0,h=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);u<h.length;u++){var c=h[u];r[n+parseInt(c)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[c]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(_('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "didUpdateState()" after appending items'),_("Previously calculated layout",this.previouslyCalculatedLayout),_("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightChangeWatcher.hasSnapshot()){if(0===t.firstShownItemIndex){V("~ Restore Scroll Position ~");var f=this.listHeightChangeWatcher.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightChangeWatcher.reset(),f?(V("Scroll down by",f),this.scroll.scrollByY(f)):V("Scroll position hasn't changed"),this.previouslyCalculatedLayout&&(0===this.previouslyCalculatedLayout.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex-n?this.previouslyCalculatedLayout={beforeItemsHeight:0,shownItemsHeight:this.previouslyCalculatedLayout.shownItemsHeight+f,firstShownItemIndex:0,lastShownItemIndex:t.lastShownItemIndex}:(_('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "didUpdateState()" after prepending items'),_("Previously calculated layout",this.previouslyCalculatedLayout),_("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}_('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "didUpdateState()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}},{key:"updateStateRightAfterRender",value:function(e){var t=e.reason,n=e.stateUpdate;this._useTimeoutInRenderLoop?(n=this.cancelLayoutTimer({stateUpdate:n}),this.scheduleLayoutTimer({reason:t,stateUpdate:n})):this.onUpdateShownItemIndexes({reason:t,stateUpdate:n})}},{key:"measureVerticalSpacing",value:function(){if(void 0===this.verticalSpacing){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;V("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),o=t.getNthRenderedItemHeight(0),r=1;r<n;){var s=t.getNthRenderedItemTopOffset(r),a=t.getNthRenderedItemHeight(r);if(s!==i)return s-(i+o);o=Math.max(o,a),r++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0===i)V("Not enough items rendered to measure vertical spacing");else if(V("Item vertical spacing",i),this.verticalSpacing=i,0!==i)return i}}},{key:"remeasureItemHeight",value:function(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}},{key:"onItemStateChange",value:function(e,t){F()&&(V("~ Item state changed ~"),V("Item",e),V("Previous state\n"+JSON.stringify(this.getState().itemStates[e],null,2)),V("New state\n"+JSON.stringify(t,null,2))),this.getState().itemStates[e]=t,this.newItemsWillBeRendered&&(this.itemStatesThatChangedWhileNewItemsWereBeingRendered||(this.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),this.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=t)}},{key:"onItemHeightChange",value:function(e){V("~ Re-measure item height ~"),V("Item",e);var t=this.getState(),n=t.itemHeights,i=t.firstShownItemIndex,o=t.lastShownItemIndex;if(!(e>=i&&e<=o))return _("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time.");var r=n[e];if(void 0===r)return D('"onItemHeightChange()" has been called for item '.concat(e,", but that item hasn't been rendered before."));var s=this.remeasureItemHeight(e);V("Previous height",r),V("New height",s),r!==s&&(V("~ Item height has changed ~"),this.updatePreviouslyCalculatedLayoutOnItemHeightChange(e,r,s),this.onUpdateShownItemIndexes({reason:se}),this.newItemsWillBeRendered&&(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered||(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered={}),this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[String(e)]=s))}},{key:"updatePreviouslyCalculatedLayoutOnItemHeightChange",value:function(e,t,n){if(this.previouslyCalculatedLayout){var i=n-t;e<this.previouslyCalculatedLayout.firstShownItemIndex?this.previouslyCalculatedLayout.beforeItemsHeight+=i:e>this.previouslyCalculatedLayout.lastShownItemIndex?void 0!==this.previouslyCalculatedLayout.afterItemsHeight&&(this.previouslyCalculatedLayout.afterItemsHeight+=i):this.previouslyCalculatedLayout.shownItemsHeight+=n-t}}},{key:"validateWillBeHiddenItemHeightsAreAccurate",value:function(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var o=this.getState().itemHeights[i],r=this.remeasureItemHeight(i);r!==o&&(n&&(V("~ Validate will-be-hidden item heights. ~"),this.updatePreviouslyCalculatedLayoutOnItemHeightChange(i,o,r)),n=!1,_("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",o,"to",r,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}},{key:"getShownItemIndexes",value:function(){var e=this.getItemsCount(),t=this.getVisibleArea(),n=t.top,i=t.bottom;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:n<this.itemsContainer.getHeight()&&i>0?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaTop:n,visibleAreaBottom:i}):(V("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}},{key:"updateItems",value:function(e,t){return this.setItems(e,t)}},{key:"setItems",value:function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=this.getState(),r=o.items,s=this.getState(),a=s.itemStates,l=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate:this.getState(),u=l.itemHeights;V("~ Update items ~");var h=this.getItemsDiff(r,e);if(h){var c=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate:this.getState(),f=c.firstShownItemIndex,d=c.lastShownItemIndex,m=c.beforeItemsHeight,g=c.afterItemsHeight,p=0===f&&(i.preserveScrollPositionOnPrependItems||i.preserveScrollPosition),I=h.prependedItemsCount,v=h.appendedItemsCount;t=this.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:f,lastShownItemIndex:d,beforeItemsHeight:m,afterItemsHeight:g},{prependedItemsCount:I,appendedItemsCount:v},{itemsCount:e.length,columnsCount:this.getActualColumnsCount(),shouldRestoreScrollPosition:p}),I>0&&(V("Prepend",I,"items"),u=new Array(I).concat(u),a&&(a=new Array(I).concat(a)),p?(V("Will restore scroll position"),this.listHeightChangeWatcher.snapshot({previousItems:r,newItems:e,prependedItemsCount:I}),void 0!==this.firstNonMeasuredItemIndex&&(this.firstNonMeasuredItemIndex+=I)):(V("Reset layout"),t=this.layout.getInitialLayoutValues({itemsCount:e.length,columnsCount:this.getActualColumnsCount()}),this.firstNonMeasuredItemIndex=void 0)),v>0&&(V("Append",v,"items"),u=u.concat(new Array(v)),a&&(a=a.concat(new Array(v)))),n={prepend:I>0,append:v>0}}else V("Items have changed, and",h?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),V("Previous items",r),V("New items",e),u=new Array(e.length),a=new Array(e.length),t=this.layout.getInitialLayoutValues({itemsCount:e.length,columnsCount:this.getActualColumnsCount()}),this.firstNonMeasuredItemIndex=void 0,this.listHeightChangeWatcher.reset(),n={replace:!0};V("~ Update state ~"),V("First shown item index",t.firstShownItemIndex),V("Last shown item index",t.lastShownItemIndex),V("Before items height",t.beforeItemsHeight),V("After items height (actual or estimated)",t.afterItemsHeight),this.onBeforeShowItems(e,u,t.firstShownItemIndex,t.lastShownItemIndex),this.newItemsWillBeRendered=Me(Me({},n),{},{count:e.length,layout:t});var S=Me(Me({},t),{},{items:e,itemStates:a,itemHeights:u});this.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(this.shouldDiscardBeforeResizeItemHeights()?S.beforeResize=void 0:S.beforeResize=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate.beforeResize:this.getState().beforeResize),this.setState(S)}},{key:"getItemsDiff",value:function(e,t){return function(e,t,n){var i=-1,o=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var o=0;o<e.length;){if(t.length<=n+o||!i(t[n+o],e[o]))return!1;o++}return!0}(e,t,i,n)&&(o=i+e.length-1)),i>=0&&o>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(o+1)}}(e,t,this.isItemEqual)}},{key:"shouldDiscardBeforeResizeItemHeights",value:function(){if(this.newItemsWillBeRendered){var e=this.newItemsWillBeRendered,t=e.prepend,n=e.replace;return t||n}}},{key:"onResize",value:function(){this.previouslyCalculatedLayout=void 0,this.listHeightChangeWatcher.reset();var e=this.newItemsWillBeRendered?this.newItemsWillBeRendered.count:this.getState().itemHeights.length,t=this.newItemsWillBeRendered?this.newItemsWillBeRendered.layout:this.getState(),n={firstShownItemIndex:t.firstShownItemIndex,lastShownItemIndex:t.lastShownItemIndex,beforeItemsHeight:t.beforeItemsHeight,afterItemsHeight:t.afterItemsHeight,itemHeights:new Array(e),columnsCount:this.getActualColumnsCountForState(),verticalSpacing:void 0},i=t.firstShownItemIndex,o=t.lastShownItemIndex,r=this.getActualColumnsCount(),s=Math.floor(i/r)*r,a=Math.ceil((o+1)/r)*r-1;s!==i&&(V("Columns Count changed from",this.getState().columnsCount||1,"to",r),V("First Shown Item Index needs to change from",i,"to",s)),n.firstShownItemIndex=s,n.lastShownItemIndex=a;var l=this.getVerticalSpacing(),u=this.getColumnsCount();this.shouldDiscardBeforeResizeItemHeights()||0===s?this.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(n.beforeResize=void 0):n.beforeResize={verticalSpacing:l,columnsCount:u,itemHeights:this.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:i,newFirstShownItemIndex:s,newColumnsCount:r})},this.resetLayoutAfterResize={stateUpdate:n},this.setState(n)}}],n&&Ee(t.prototype,n),i&&Ee(t,i),e}(),Ne=15,Ve=["as","itemComponent","itemComponentProps","items","estimatedItemHeight","bypass","preserveScrollPositionOnPrependItems","preserveScrollPosition","initialScrollPosition","onScrollPositionChange","measureItemsBatchSize","scrollableContainer","getScrollableContainer","getColumnsCount","initialState","initialCustomState","onStateChange","onItemInitialRender","onItemFirstRender","getItemId","onMount","className"];function _e(){return _e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},_e.apply(this,arguments)}function De(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n,i,o={},r=Object.keys(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Fe(e){return Fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fe(e)}function Ye(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function qe(e,t){return qe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},qe(e,t)}function Ke(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=Ge(e);if(t){var o=Ge(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return Je(this,n)}}function Je(e,t){if(t&&("object"===Fe(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return $e(e)}function $e(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Ge(e){return Ge=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Ge(e)}function Qe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Xe=o.default.elementType||o.default.oneOfType([o.default.string,o.default.func,o.default.object]),Ze=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&qe(e,t)}(s,e);var t,n,o,r=Ke(s);function s(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s),Qe($e(t=r.call(this,e)),"container",i.default.createRef()),Qe($e(t),"onItemStateChange",new Array(t.props.items.length)),Qe($e(t),"onItemHeightChange",new Array(t.props.items.length)),Qe($e(t),"itemRefs",new Array(t.props.items.length)),Qe($e(t),"itemKeyPrefixes",[]),Qe($e(t),"updateLayout",(function(){return t.virtualScroller.updateLayout()})),Qe($e(t),"layout",(function(){return t.updateLayout()})),Qe($e(t),"onItemInitialRender",(function(){var e=t.props.onItemInitialRender;e&&e.apply(void 0,arguments)})),Qe($e(t),"onItemFirstRender",(function(){var e=t.props.onItemFirstRender;e&&e.apply(void 0,arguments)})),t.previousItemsProperty=e.items,t.generateItemKeyPrefix(),t.createVirtualScroller(),t}return t=s,n=[{key:"createVirtualScroller",value:function(){var e=this,t=this.props,n=t.as,i=t.items,o=t.initialState,r=t.initialCustomState,s=t.onStateChange,a=t.estimatedItemHeight,l=t.initialScrollPosition,u=t.onScrollPositionChange,h=t.measureItemsBatchSize,c=t.scrollableContainer,f=t.getScrollableContainer,d=t.getColumnsCount,m=t.getItemId,g=t.bypass;this.virtualScroller=new We((function(){return e.container.current}),i,{_useTimeoutInRenderLoop:!0,estimatedItemHeight:a,bypass:g,onItemInitialRender:this.onItemInitialRender,onItemFirstRender:this.onItemFirstRender,initialScrollPosition:l,onScrollPositionChange:u,shouldUpdateLayoutOnScreenResize:this.shouldUpdateLayoutOnScreenResize,measureItemsBatchSize:h,scrollableContainer:c,getScrollableContainer:f,getColumnsCount:d,getItemId:m,tbody:"tbody"===n,state:o,customState:r,onStateChange:s,getState:function(){return e.state},setState:function(t,n){var i=n.willUpdateState,o=n.didUpdateState;e.willUpdateState=i,e.didUpdateState=o,e.state?e.setState(t):(i(t),e.state=t,o())}})}},{key:"shouldUseRefs",value:function(){var e,t=this.props.itemComponent;return(e=t).prototype&&e.prototype.isReactComponent}},{key:"getItemKey",value:function(e,t){var n=this.props.getItemId;return n?n(e):"".concat(this.itemKeyPrefix,":").concat(t)}},{key:"updateItem",value:function(e){return this.renderItem(e)}},{key:"renderItem",value:function(e){var t=this;if(void 0===(e=this.getItemIndex(e)))return D("Item ".concat(JSON.stringify(e),' not found when calling ".renderItem()"'));if(this.shouldUseRefs()&&this.itemRefs[e]&&this.itemRefs[e].current){var n=this.props.items,i=n[e];this.itemRefs[e].current.forceUpdate((function(){if(t._isMounted){var e=n.indexOf(i);e>=0&&t.virtualScroller.onItemHeightChange(e)}}))}}},{key:"getItemIndex",value:function(e){if("number"==typeof e)return e;if("object"===Fe(e)&&null!==e){var t=this.props,n=t.items,i=t.getItemId,o=e;for(e=0;e<n.length;){if(i){if(i(o)===i(n[e]))return e}else if(o===n[e])return e;e++}}}},{key:"getItemRef",value:function(e){return this.itemRefs[e]||(this.itemRefs[e]=i.default.createRef()),this.itemRefs[e]}},{key:"getOnItemStateChange",value:function(e){var t=this;return this.onItemStateChange[e]||(this.onItemStateChange[e]=function(n){return t.virtualScroller.onItemStateChange(e,n)}),this.onItemStateChange[e]}},{key:"getOnItemHeightChange",value:function(e){var t=this;return this.onItemHeightChange[e]||(this.onItemHeightChange[e]=function(){return t.virtualScroller.onItemHeightChange(e)}),this.onItemHeightChange[e]}},{key:"generateItemKeyPrefix",value:function(){var e=String(Math.random()).slice(2);if(this.itemKeyPrefixes.indexOf(e)>=0)return this.generateItemKeyPrefix();this.itemKeyPrefixes.push(e),this.itemKeyPrefix=e}},{key:"componentDidMount",value:function(){var e=this.props.onMount;e&&e(),this._isMounted=!0,this.virtualScroller.listen()}},{key:"getSnapshotBeforeUpdate",value:function(e,t){return this.state!==t&&this.willUpdateState(this.state,t),null}},{key:"componentDidUpdate",value:function(e,t){this.state!==t&&this.didUpdateState(t);var n=this.props,i=n.items,o=n.preserveScrollPosition,r=n.preserveScrollPositionOnPrependItems;i!==e.items&&this.virtualScroller.setItems(i,{preserveScrollPositionOnPrependItems:r||o})}},{key:"componentWillUnmount",value:function(){this._isMounted=!1,this.virtualScroller.stop()}},{key:"render",value:function(){var e=this,t=this.props,n=t.as,o=t.itemComponent,r=t.itemComponentProps;t.items,t.estimatedItemHeight,t.bypass;var s=t.preserveScrollPositionOnPrependItems,a=t.preserveScrollPosition;t.initialScrollPosition,t.onScrollPositionChange,t.measureItemsBatchSize,t.scrollableContainer,t.getScrollableContainer,t.getColumnsCount,t.initialState,t.initialCustomState,t.onStateChange,t.onItemInitialRender,t.onItemFirstRender;var l=t.getItemId;t.onMount;var u=t.className,h=De(t,Ve),c=this.virtualScroller.getState(),f=c.items,d=c.itemStates,m=c.firstShownItemIndex,g=c.lastShownItemIndex,p=c.beforeItemsHeight,I=c.afterItemsHeight,v=this.props.items,S=f;if(this.itemsPropertyWasChanged||(this.itemsPropertyWasChanged=this.props.items!==this.previousItemsProperty),this.previousItemsProperty=this.props.items,this.itemsPropertyWasChanged&&v!==S){var b=this.virtualScroller.getItemsDiff(S,v);if(b&&0===b.prependedItemsCount&&b.appendedItemsCount>0);else{if(b){var C=b.prependedItemsCount;C>0&&(s||a)&&0===m&&this.virtualScroller.listHeightChangeWatcher.snapshot({previousItems:S,newItems:v,prependedItemsCount:C})}l||this.generateItemKeyPrefix(),this.itemRefs=new Array(v.length)}}var w=this.virtualScroller.tbody;return i.default.createElement(n,_e({},h,{ref:this.container,className:w?u?u+" VirtualScroller":"VirtualScroller":u,style:{paddingTop:w?void 0:y(p),paddingBottom:w?void 0:y(I)}}),f.map((function(t,n){return n>=m&&n<=g?i.default.createElement(o,_e({},r,{key:e.getItemKey(t,n),ref:e.shouldUseRefs()?e.getItemRef(n):void 0,state:d&&d[n],onStateChange:e.getOnItemStateChange(n),onHeightChange:e.getOnItemHeightChange(n)}),t):null})))}}],n&&Ye(t.prototype,n),o&&Ye(t,o),s}(i.default.Component);return Qe(Ze,"propTypes",{as:Xe,items:o.default.arrayOf(o.default.any).isRequired,itemComponent:Xe.isRequired,itemComponentProps:o.default.object,estimatedItemHeight:o.default.number,bypass:o.default.bool,preserveScrollPositionOnPrependItems:o.default.bool,preserveScrollPosition:o.default.bool,measureItemsBatchSize:o.default.number,scrollableContainer:o.default.any,getScrollableContainer:o.default.func,getColumnsCount:o.default.func,getItemId:o.default.func,className:o.default.string,onMount:o.default.func,onItemInitialRender:o.default.func,onItemFirstRender:o.default.func,initialScrollPosition:o.default.number,onScrollPositionChange:o.default.func,onStateChange:o.default.func,initialCustomState:o.default.object,initialState:o.default.shape({items:o.default.arrayOf(o.default.object).isRequired,itemStates:o.default.arrayOf(o.default.any),firstShownItemIndex:o.default.number.isRequired,lastShownItemIndex:o.default.number.isRequired,beforeItemsHeight:o.default.number.isRequired,afterItemsHeight:o.default.number.isRequired,itemHeights:o.default.arrayOf(o.default.number).isRequired,columnsCount:o.default.number,verticalSpacing:o.default.number})}),Qe(Ze,"defaultProps",{as:"div"}),Ze}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VirtualScroller=t(e.React,e.PropTypes)}(this,(function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),r=n(t);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var i,r,o=[],s=!0,a=!1;try{for(n=n.call(e);!(s=(i=n.next()).done)&&(o.push(i.value),!t||o.length!==t);s=!0);}catch(e){a=!0,r=e}finally{try{s||null==n.return||n.return()}finally{if(a)throw r}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function h(e){return(e%1==0?e:e.toFixed(2))+"px"}var c="It looks like you're using Internet Explorer which doesn't support CSS variables required for a <tbody/> container. VirtualScroller has been switched into \"bypass\" mode (render all items). See: https://gitlab.com/catamphetamine/virtual-scroller/-/issues/1";function f(){return"undefined"==typeof window||!window.document.documentMode}var d="VirtualScroller",m="VirtualScrollerStyle";function g(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var p=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getElement=t}var t,n,i;return t=e,(n=[{key:"getNthRenderedItemTopOffset",value:function(e){return this.getElement().childNodes[e].getBoundingClientRect().top-this.getElement().getBoundingClientRect().top}},{key:"getNthRenderedItemHeight",value:function(e){return this.getElement().childNodes[e].getBoundingClientRect().height}},{key:"getHeight",value:function(){return this.getElement().getBoundingClientRect().height}},{key:"clear",value:function(){for(;this.getElement().firstChild;)this.getElement().removeChild(this.getElement().firstChild)}}])&&g(t.prototype,n),i&&g(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function I(e){return I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},I(e)}function v(e,t){return v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},v(e,t)}function S(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=b(e);if(t){var r=b(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return y(this,n)}}function y(e,t){if(t&&("object"===I(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function b(e){return b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},b(e)}function w(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function C(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function O(e,t,n){return t&&C(e.prototype,t),n&&C(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var H=function(){function e(t,n){w(this,e),this.getElement=t,this.getItemsContainerElement=n}return O(e,[{key:"getScrollY",value:function(){return this.getElement().scrollTop}},{key:"scrollToY",value:function(e){this.getElement().scrollTo?this.getElement().scrollTo(0,e):this.getElement().scrollTop=e}},{key:"getWidth",value:function(){return this.getElement().offsetWidth}},{key:"getHeight",value:function(){return this.getElement().offsetHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=this.getElement().getBoundingClientRect().top,t=this.getElement().clientTop;return this.getItemsContainerElement().getBoundingClientRect().top-e+this.getScrollY()-t}},{key:"onScroll",value:function(e){var t=this.getElement();return t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e){var t;if("undefined"!=typeof ResizeObserver){var n=new ResizeObserver((function(t){t[0],e()})),i=this.getElement();n.observe(i),t=function(){return n.unobserve(i)}}var r=x(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),r()}}}]),e}(),R=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&v(e,t)}(n,e);var t=S(n);function n(e){return w(this,n),t.call(this,(function(){return window}),e)}return O(n,[{key:"getScrollY",value:function(){return window.pageYOffset}},{key:"getWidth",value:function(){return window.innerWidth}},{key:"getHeight",value:function(){return window.innerHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=document.clientTop||document.body.clientTop||0;return this.getItemsContainerElement().getBoundingClientRect().top+this.getScrollY()-e}},{key:"onResize",value:function(e){return x(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(H);function x(e,t){var n=t.itemsContainerElement,i=function(){document.fullscreenElement&&!document.fullscreenElement.contains(n)||e()};return window.addEventListener("resize",i),function(){return window.removeEventListener("resize",i)}}var P="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var T=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){(function(){var t,n,i,r,o,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-o)/1e6},n=process.hrtime,r=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),o=r-s):Date.now?(e.exports=function(){return Date.now()-i},i=Date.now()):(e.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(P)})),j="undefined"==typeof window?P:window,L=["moz","webkit"],z="AnimationFrame",A=j["request"+z],B=j["cancel"+z]||j["cancelRequest"+z],M=0;!A&&M<L.length;M++)A=j[L[M]+"Request"+z],B=j[L[M]+"Cancel"+z]||j[L[M]+"CancelRequest"+z];if(!A||!B){var E=0,k=0,_=[];A=function(e){if(0===_.length){var t=T(),n=Math.max(0,16.666666666666668-(t-E));E=n+t,setTimeout((function(){var e=_.slice(0);_.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(E)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return _.push({handle:++k,callback:e,cancelled:!1}),k},B=function(e){for(var t=0;t<_.length;t++)_[t].handle===e&&(_[t].cancelled=!0)}}var N=function(e){return A.call(j,e)};N.cancel=function(){B.apply(j,arguments)},N.polyfill=function(e){e||(e=j),e.requestAnimationFrame=A,e.cancelAnimationFrame=B};var W=N.cancel;function V(e,t){var n=Date.now(),i=N((function r(){Date.now()-n>=t?e():i=N(r)}));return{clear:function(){return W(i)}}}function D(e){e&&e.clear()}function F(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var U=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this._isActive=!0,this.watchListTopOffset()}},{key:"isStarted",value:function(){return this._isActive}},{key:"stop",value:function(){this._isActive=!1,this.watchListTopOffsetTimer&&(D(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e._isActive&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=V(n,500)))}()}}])&&F(t.prototype,n),i&&F(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),Y={createItemsContainer:function(e){return new p(e)},createScrollableContainer:function(e,t){return e?new H(e,t):"undefined"!=typeof window?new R(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new U({getListTopOffset:t,onListTopOffsetChange:n})}};function q(e){return function(e){if(Array.isArray(e))return K(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return K(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return K(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function G(){if(X()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,q(["[virtual-scroller]"].concat(n)))}}function J(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(Q())return $.apply(this,n);(e=console).warn.apply(e,q(["[virtual-scroller]"].concat(n)))}function $(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(G.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))}),0)):(i=console).error.apply(i,q(["[virtual-scroller]"].concat(t)))}function X(){var e=Z("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function Q(){return Z("VirtualScrollerWarningsAreErrors")}function Z(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function te(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ee(Object(n),!0).forEach((function(t){ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ee(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ie(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var re=function(){function e(t){var n=t.bypass,i=t.estimatedItemHeight,r=t.measureItemsBatchSize,o=t.getPrerenderMargin,s=t.getVerticalSpacing,a=t.getVerticalSpacingBeforeResize,l=t.getColumnsCount,u=t.getColumnsCountBeforeResize,h=t.getItemHeight,c=t.getItemHeightBeforeResize,f=t.getBeforeResizeItemsCount,d=t.getAverageItemHeight,m=t.getMaxVisibleAreaHeight,g=t.getPreviouslyCalculatedLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.estimatedItemHeight=i,this.measureItemsBatchSize=r,this.getPrerenderMargin=o,this.getVerticalSpacing=s,this.getVerticalSpacingBeforeResize=a,this.getColumnsCount=l,this.getColumnsCountBeforeResize=u,this.getItemHeight=h,this.getItemHeightBeforeResize=c,this.getBeforeResizeItemsCount=f,this.getAverageItemHeight=d,this.getMaxVisibleAreaHeight=m,this.getPreviouslyCalculatedLayout=g}var t,n,i;return t=e,n=[{key:"getInitialLayoutValues",value:function(e){var t,n,i=e.itemsCount,r=e.columnsCount;return i>0&&(t=0,n=this.getInitialLastShownItemIndex({itemsCount:i,columnsCount:r,firstShownItemIndex:t})),{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var r=1;return this.getMaxVisibleAreaHeight()&&(r=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin())),Math.min(i+(r*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){return this.getAverageItemHeight()||this.estimatedItemHeight||0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,r=e.lastShownItemIndex,o=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,u=n.itemsCount,h=n.columnsCount,c=n.shouldRestoreScrollPosition,f=n.onResetGridLayout,d=this.getAverageItemHeight(),m=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/h)*(m+d)),a>0&&(i+=a,r+=a,o+=Math.ceil(a/h)*(d+m),c&&(i=0,o=0),a%h>0)){f(),J("~ Prepended items count",a,"is not divisible by Columns Count",h,"~"),J("Layout reset required");var g=r-i+1;if(i=0,o=0,!c&&a>g){var p=u-((r=this.getInitialLastShownItemIndex({itemsCount:u,columnsCount:h,firstShownItemIndex:i}))+1);s=Math.ceil(p/h)*(m+d)}}return{beforeItemsHeight:o,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:r}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,r=t.nonMeasuredAreaHeight,o=t.indexOfTheFirstItemInTheRow;G("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(r)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=o),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(o+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaTop,i=e.visibleAreaBottom,r=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaTop:n,visibleAreaBottom:i,findFirstShownItemIndex:!0});if(null===r)return this.getNonVisibleListShownItemIndexes();if(void 0!==r.firstNonMeasuredItemIndex)return r;var o=r,s=o.firstShownItemIndex,a=o.beforeItemsHeight;return null===(r=this._getShownItemIndex({itemsCount:t,fromIndex:s,beforeItemsHeight:a,visibleAreaTop:n,visibleAreaBottom:i,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==r.firstNonMeasuredItemIndex?r:{firstShownItemIndex:s,lastShownItemIndex:r.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaTop,r=e.visibleAreaBottom,o=e.findFirstShownItemIndex,s=e.findLastShownItemIndex,a=e.fromIndex,l=e.beforeItemsHeight;if(0===a&&(l=0),void 0===l)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+a);if(!t){var u=this.getBeforeResizeItemsCount();if(u>a){var h=this._getShownItemIndex(te(te({},e),{},{beforeResize:!0,itemsCount:u})),c=h.notFound,f=h.beforeItemsHeight,d=h.firstShownItemIndex,m=h.lastShownItemIndex;if(!c){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===d?void 0:Math.floor(d/g)*g,lastShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,beforeItemsHeight:f}}l=f,a+=u}}for(var p=t?this.getColumnsCountBeforeResize():this.getColumnsCount(),I=t?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing(),v=a;v<n;){for(var S=v,y=n>S+p?I:0,b=0,w=0;w<p&&v<n;){var C=t?this.getItemHeightBeforeResize(v):this.getItemHeight(v);if(void 0===C)return this.getItemNotMeasuredIndexes(v,{itemsCount:n,firstShownItemIndex:s?a:void 0,indexOfTheFirstItemInTheRow:S,nonMeasuredAreaHeight:r+this.getPrerenderMargin()-l});b=Math.max(b,C),w++,v++}var O=l+b,H=O>i-this.getPrerenderMargin(),R=O+y>=r+this.getPrerenderMargin();if(o){if(H)return{firstShownItemIndex:S,beforeItemsHeight:l}}else if(s&&R)return{lastShownItemIndex:Math.min(S+p-1,n-1)};l+=b+y}return t?{notFound:!0,beforeItemsHeight:l}:o?(J("The list is supposed to be visible but no visible item has been found"),null):s?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,r=0;if(!n){var o=this.getBeforeResizeItemsCount();o>0&&(i=this.getBeforeItemsHeight(Math.min(e,o),{beforeResize:!0}),r=o)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();r<e;){for(var l=0,u=0;u<s;){var h=n?this.getItemHeightBeforeResize(r):this.getItemHeight(r);void 0===h&&(h=this.getAverageItemHeight()),l=Math.max(l,h),r++,u++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,r=e+1;r<t;){for(var o=0,s=0;s<n&&r<t;){var a=this.getItemHeight(r);void 0===a&&(a=this.getAverageItemHeight()),o=Math.max(o,a),r++,s++}i+=this.getVerticalSpacing(),i+=o}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),r=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,o=0;o<r;)t+=this.getItemHeightBeforeResize(o*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),o++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,u=0;u<this.getColumnsCount();){var h=this.getItemHeight(n+a*this.getColumnsCount()+u);if(void 0===h)return;l=Math.max(l,h),u++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&ie(t.prototype,n),i&&ie(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),oe="scroll",se="stopped scrolling",ae="manual",le="started",ue="non-measured item heights have been measured",he="viewport width changed",ce="viewport height changed",fe="viewport size unchanged",de="item height changed",me="items changed",ge="list top offset changed";function pe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var Ie=function(){function e(t){var n,i,r,o=this,s=t.bypass,a=t.getWidth,l=t.getHeight,u=t.listenForResize,h=t.onResizeStart,c=t.onResizeStop,f=t.onHeightChange,d=t.onWidthChange,m=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r=function(){if(o.isActive){var e=o.width,t=o.height;o.width=o.getWidth(),o.height=o.getHeight(),o.width===e?o.height===t?o.onNoChange():o.onHeightChange(t,o.height):o.onWidthChange(e,o.width)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[i]=r,this.bypass=s,this.onHeightChange=f,this.onWidthChange=d,this.onNoChange=m,this.getWidth=a,this.getHeight=l,this.listenForResize=u,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.onStart,o=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?D(n):r&&r(),n=V((function(){n=void 0,o&&o(),e.apply(i,a),s()}),t)}))}}(this._onResize,ve,{onStart:h,onStop:c})}var t,n,i;return t=e,(n=[{key:"start",value:function(){this.isActive=!0,this.bypass||(this.width=this.getWidth(),this.height=this.getHeight(),this.unlistenResize=this.listenForResize(this.onResize))}},{key:"stop",value:function(){this.isActive=!1,this.width=void 0,this.height=void 0,this.unlistenResize&&(this.unlistenResize(),this.unlistenResize=void 0)}}])&&pe(t.prototype,n),i&&pe(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),ve=250;function Se(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ye(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Se(Object(n),!0).forEach((function(t){be(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Se(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function be(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function we(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var Ce=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,r=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=r}var t,n,i;return t=e,n=[{key:"initializeFromState",value:function(e){this._includesBeforeResizeInState=Boolean(e.beforeResize)}},{key:"cleanUpBeforeResizeItemHeights",value:function(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex,i=e.itemHeights,r=e.beforeResize;if(r&&t<r.itemHeights.length){G('~ Clean up "before resize" item heights and correct scroll position ~');for(var o=0,s=Math.floor(r.itemHeights.length/this.getColumnsCount()),a=Math.min(s*this.getColumnsCount()-1,n),l=t;l<=a;){for(var u=0,h=0;h<this.getColumnsCount()&&l<=a;){var c=i[l];void 0===c&&(c=this.getAverageItemHeight()),u=Math.max(u,c),l++,h++}o+=u,o+=this.getVerticalSpacing()}for(var f=0,d=Math.min(r.itemHeights.length,n+1),m=Math.ceil(d/r.columnsCount),g=0===t?0:Math.floor((t-1)/r.columnsCount)+1;g<m;)f+=r.itemHeights[g*r.columnsCount],f+=r.verticalSpacing,g++;if(0===t)G('Drop all "before resize" item heights');else{var p=t,I=r.itemHeights.length-1;p===I?G("For item index",p,'— drop "before resize" height',r.itemHeights[p]):G("For item indexes from",p,"to",I,'— drop "before resize" heights',r.itemHeights.slice(p))}return r.itemHeights.splice(t,r.itemHeights.length-t),{scrollBy:o-f,beforeResize:0===t?void 0:ye({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),r=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var o=this.getState(),s=o.beforeResize,a=o.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==r){for(var u=0,h=Math.ceil(l/s.columnsCount),c=0;c<h;)u+=s.itemHeights[c*s.columnsCount],u+=s.verticalSpacing,c++;for(var f=0,d=t;d<n;){for(var m=0,g=0;g<i&&d<n;)m=Math.max(m,a[d]),g++,d++;f+=m,f+=r}var p=u+f,I=Math.ceil(n/i);return new Array(n).fill(Math.max(0,p/I-r))}return s.itemHeights.concat(Oe(a,n,i).slice(s.itemHeights.length))}return Oe(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&we(t.prototype,n),i&&we(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Oe(e,t,n){e=e.slice(0,Math.ceil(t/n)*n);for(var i=0;i*n<t;){for(var r=0,o=0;o<n;)r=Math.max(r,e[i*n+o]),o++;for(o=0;o<n;)e[i*n+o]=r,o++;i++}return e.slice(0,t)}function He(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Re(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var xe=function(){function e(t){var n=this,i=t.bypass,r=t.scrollableContainer,o=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,u=t.isImmediateLayoutScheduled,h=t.hasNonRenderedItemsAtTheTop,c=t.hasNonRenderedItemsAtTheBottom,f=t.getLatestLayoutVisibleArea,d=t.getListTopOffset,m=t.getPrerenderMargin,g=t.onScrolledToTop,p=t.waitForScrollingToStop;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Re(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),Re(this,"onScrollListener",(function(){if(n.onScrollPositionChange&&n.onScrollPositionChange(n.getScrollY()),n.onScrolledToTop&&n.getScrollY()<n.getListTopOffset()&&n.onScrolledToTop(),!n.bypass&&!n.ignoreScrollEvents){n.cancelOnStopScrollingTimer();var e=n.getLatestLayoutVisibleArea()&&(n.getScrollY()<n.getLatestLayoutVisibleArea().top-n.getPrerenderMargin()&&n.hasNonRenderedItemsAtTheTop()||n.getScrollY()+n.scrollableContainer.getHeight()>n.getLatestLayoutVisibleArea().bottom+n.getPrerenderMargin()&&n.hasNonRenderedItemsAtTheBottom());if(G(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.shouldCallOnScrollListenerWhenStopsScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=r,this.itemsContainer=o,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=u,this.hasNonRenderedItemsAtTheTop=h,this.hasNonRenderedItemsAtTheBottom=c,this.getLatestLayoutVisibleArea=f,this.getListTopOffset=d,this.getPrerenderMargin=m,this.onScrolledToTop=g,this.waitForScrollingToStop=p}var t,n,i;return t=e,(n=[{key:"start",value:function(){void 0!==this.initialScrollPosition&&(this.scrollToY(this.initialScrollPosition),this.initialScrollPosition=void 0),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopListeningToScroll(),this.stopListeningToScroll=void 0,this.shouldCallOnScrollListenerWhenStopsScrolling=void 0,this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(D(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=V((function(){e.onStopScrollingTimer=void 0,e.shouldCallOnScrollListenerWhenStopsScrolling&&(e.shouldCallOnScrollListenerWhenStopsScrolling=void 0,e.onScroll({delayed:!0}))}),Pe)}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&He(t.prototype,n),i&&He(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),Pe=100;function Te(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var je=function(){function e(t){var n=t.itemsContainer,i=t.getListTopOffset;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.itemsContainer=n,this.getListTopOffset=i}var t,n,i;return t=e,(n=[{key:"snapshotListHeightBeforeAddingNewItems",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()})}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&Te(t.prototype,n),i&&Te(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Le(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ze=function(){function e(t){var n=t.container;t.itemHeights;var i=t.getItemHeight,r=t.setItemHeight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=n,this._get=i,this._set=r,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"readItemHeightsFromState",value:function(e){for(var t=e.itemHeights,n=0;n<t.length;){if(void 0===t[n]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=n-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=n),this.measuredItemsHeight+=t[n];n++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(G("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(G("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,r=this.lastMeasuredItemIndex,o=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);G("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,o||(this.firstMeasuredItemIndex=s,o=!0)),(void 0===r||s>r)&&(void 0!==r&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),u=this._measureItemHeight(s,e);l!==u&&(J("Item index",s,"height changed unexpectedly: it was",l,"before, but now it is",u,'. An item\'s height is allowed to change only in two cases: when the item\'s "state" changes and the developer calls `onItemStateChange(i, newState)`, or when the item\'s height changes for some other reason and the developer calls `onItemHeightChange(i)`. Perhaps you forgot to persist the item\'s "state" by calling `onItemStateChange(i, newState)` when it changed, and that "state" got lost when the item element was unmounted, which resulted in a different height when the item was shown again having its "state" reset.'),this._set(s,u))}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&Le(t.prototype,n),i&&Le(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Be(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(n),!0).forEach((function(t){Me(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e){var t=Be({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=Be({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function ke(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ke(Object(n),!0).forEach((function(t){Ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function We(e){var t=this,n=e.state,i=e.onStateChange,r=e.render,o=e.items;function s(){return this.state}function a(e){this.state=e}function l(e){this.state=_e(_e({},this.state),e),r(this.state,this.previousState),this.onRender()}function u(){var e=o,t=_e(_e({},c.call(this,e)),{},{items:e,itemStates:new Array(e.length)});return X()&&G("Initial state (autogenerated)",Ee(t)),G("First shown item index",t.firstShownItemIndex),G("Last shown item index",t.lastShownItemIndex),t}function h(e){return X()&&G("Restore state",Ee(e)),function(e,t){var n=t.columnsCount,i=e.columnsCount||1;if(i!==n)return J("~ Columns Count changed from",i,"to",n,"~"),!0;if(Math.floor(e.firstShownItemIndex/n)*n!==e.firstShownItemIndex)return J("~ First Shown Item Index",e.firstShownItemIndex,"is not divisible by Columns Count",n,"~"),!0}(e=_e(_e({},e=function(e){return e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e}(e)),{},{verticalSpacing:void 0}),{columnsCount:this.getActualColumnsCount()})&&(J("Reset Layout"),e=_e(_e({},e),c.call(this,e.items))),e}function c(e){var t=e.length,n=this.layout.getInitialLayoutValues({itemsCount:t,columnsCount:this.getActualColumnsCount()}),i=n.firstShownItemIndex,r=n.lastShownItemIndex,o=n.beforeItemsHeight,s=n.afterItemsHeight,a=new Array(t);return this.onBeforeShowItems(e,a,i,r),{itemHeights:a,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:i,lastShownItemIndex:r,beforeItemsHeight:o,afterItemsHeight:s}}this.onStateChange=i,this._render=r,this._onItemStateChange=function(e,n){X()&&(G("~ Item state changed ~"),G("Item",e),G("Previous state\n"+JSON.stringify(t.getState().itemStates[e],null,2)),G("New state\n"+JSON.stringify(n,null,2))),t.getState().itemStates[e]=n,t.newItemsWillBeRendered&&(t.itemStatesThatChangedWhileNewItemsWereBeingRendered||(t.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),t.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=n)},this.getState=function(){return t._getState()},this.updateState=function(e){X()&&(G("~ Set state ~"),G(Ee(e))),e.items&&(t._isSettingNewItems||$("A `stateUpdate` can only contain `items` property as a result of calling `.setItems()`")),t._isSettingNewItems=void 0,t.previousState=t.getState(),t._updateState(e)},this.getInitialState=function(){return n?h.call(t,n):u.call(t)},this.useState=function(e){var n=e.getState,i=e.updateState;if(t._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");if(t._getState)throw new Error("[virtual-scroller] Custom state storage has already been configured");if(r)throw new Error("[virtual-scroller] Creating a `VirtualScroller` class instance with a `render()` parameter means using the default (internal) state storage");if(!n||!i)throw new Error("[virtual-scroller] When using a custom state storage, one must supply both `getState()` and `updateState()` functions");t._usesCustomStateStorage=!0,t._getState=n,t._updateState=i},this.useDefaultStateStorage=function(){if(!r)throw new Error("[virtual-scroller] When using the default (internal) state management, one must supply a `render(state, prevState)` function parameter");t._getState=s.bind(t),t._updateState=l.bind(t),a.bind(t)(t.getInitialState())}}function Ve(){var e=this;function t(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;G("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),r=t.getNthRenderedItemHeight(0),o=1;o<n;){var s=t.getNthRenderedItemTopOffset(o),a=t.getNthRenderedItemHeight(o);if(s!==i)return s-(i+r);r=Math.max(r,a),o++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0!==i)return G("Item vertical spacing",i),i;G("Not enough items rendered to measure vertical spacing")}this.getVerticalSpacing=function(){return e.verticalSpacing||0},this.getVerticalSpacingBeforeResize=function(){var t=e.getState().beforeResize;return t&&t.verticalSpacing||0},this.measureVerticalSpacingIfNotMeasured=function(){if(void 0===e.verticalSpacing)return e.verticalSpacing=t.call(e),e.verticalSpacing}}function De(e){var t=this,n=e.getColumnsCount;if(n){var i={getWidth:function(){return t.scrollableContainer.getWidth()}};this.getActualColumnsCountForState=function(){var e=n(i);if(1!==e)return e}}else this.getActualColumnsCountForState=function(){};this.getActualColumnsCount=function(){return t.getActualColumnsCountForState()||1},this.getColumnsCount=function(){return t.getState()&&t.getState().columnsCount||1}}function Fe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Ue(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(n),!0).forEach((function(t){Ye(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qe(){var e=this;function t(e){var n=e.stateUpdate,o=Date.now(),s=i.call(this),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.shownItemsHeight,h=s.firstNonMeasuredItemIndex;if(this.listHeightMeasurement.hasSnapshot()&&(l<this.listHeightMeasurement.getAnchorItemIndex()&&(l=this.listHeightMeasurement.getAnchorItemIndex()),h=void 0),!r.call(this,a,l))return G("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),t.call(this,{stateUpdate:n});var c=this.layout.getBeforeItemsHeight(a),f=this.layout.getAfterItemsHeight(l,this.getItemsCount()),d=Date.now()-o;G("~ Calculated Layout"+(this.bypass?" (bypass)":"")+" ~"),d<Ke||J("Layout calculated in",d,"ms"),this.getColumnsCount()&&G("Columns count",this.getColumnsCount()),G("First shown item index",a),G("Last shown item index",l),G("Before items height",c),G("After items height (actual or estimated)",f),G("Average item height (used for estimated after items height calculation)",this.itemHeights.getAverage()),X()&&(G("Item heights",this.getState().itemHeights.slice()),G("Item states",this.getState().itemStates.slice())),this.onBeforeShowItems(this.getState().items,this.getState().itemHeights,a,l),this.firstNonMeasuredItemIndex=h,this.previouslyCalculatedLayout=void 0===u?void 0:{firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:c,shownItemsHeight:u},this.updateState(Ue({firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:c,afterItemsHeight:f},n))}function n(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}function i(){var e=this.getItemsCount(),t=n.call(this),i=t.top,r=t.bottom;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:i<this.itemsContainer.getHeight()&&r>0?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaTop:i,visibleAreaBottom:r}):(G("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}function r(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var r=this.getState().itemHeights[i],a=o.call(this,i);a!==r&&(n&&(G("~ Validate will-be-hidden item heights. ~"),s.call(this,i,r,a)),n=!1,J("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",r,"to",a,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}function o(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}function s(e,t,n){if(this.previouslyCalculatedLayout){var i=n-t;e<this.previouslyCalculatedLayout.firstShownItemIndex?this.previouslyCalculatedLayout.beforeItemsHeight+=i:e>this.previouslyCalculatedLayout.lastShownItemIndex?void 0!==this.previouslyCalculatedLayout.afterItemsHeight&&(this.previouslyCalculatedLayout.afterItemsHeight+=i):this.previouslyCalculatedLayout.shownItemsHeight+=n-t}}this.onUpdateShownItemIndexes=function(n){var i=n.reason,r=n.stateUpdate,o=function(){r&&e.updateState(r)};return e.newItemsWillBeRendered||e.widthHasChanged||e._isResizing||0===e.getItemsCount()?o():(e.scroll.cancelScheduledLayout(),r=e.cancelLayoutTimer({stateUpdate:r}),G("~ Update Layout (on ".concat(i,") ~")),void t.call(e,{stateUpdate:r}))},this.getListTopOffsetInsideScrollableContainer=function(){var t=e.scrollableContainer.getItemsContainerTopOffset();return e.listTopOffsetWatcher&&e.listTopOffsetWatcher.onListTopOffset(t),t},this._onItemHeightChange=function(t){G("~ Re-measure item height ~"),G("Item",t);var n=e.getState(),i=n.itemHeights,r=n.firstShownItemIndex,a=n.lastShownItemIndex;if(!(t>=r&&t<=a))return J("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time.");var l=i[t];if(void 0===l)return $('"onItemHeightChange()" has been called for item '.concat(t,", but that item hasn't been rendered before."));var u=o.call(e,t);G("Previous height",l),G("New height",u),l!==u&&(G("~ Item height has changed ~"),s.call(e,t,l,u),e.onUpdateShownItemIndexes({reason:de}),e.newItemsWillBeRendered&&(e.itemHeightsThatChangedWhileNewItemsWereBeingRendered||(e.itemHeightsThatChangedWhileNewItemsWereBeingRendered={}),e.itemHeightsThatChangedWhileNewItemsWereBeingRendered[String(t)]=u))},this.getPrerenderMargin=function(){return 1*e.scrollableContainer.getHeight()},this.onBeforeShowItems=function(t,n,i,r){if(e.onItemInitialRender)for(var o=i;o<=r;)void 0===n[o]&&e.onItemInitialRender(t[o]),o++},this.measureItemHeightsAndSpacing=function(){e.itemHeights.measureItemHeights(e.getState().firstShownItemIndex,e.getState().lastShownItemIndex);var t=e.measureVerticalSpacingIfNotMeasured();if(t&&0!==t)return{verticalSpacing:t}},this.cancelLayoutTimer=function(t){var n=t.stateUpdate;return e.layoutTimer?(D(e.layoutTimer),e.layoutTimer=void 0,n||e.layoutTimerStateUpdate?(n=Ue(Ue({},e.layoutTimerStateUpdate),n),e.layoutTimerStateUpdate=void 0,n):void 0):n},this.scheduleLayoutTimer=function(t){var n=t.reason,i=t.stateUpdate;e.layoutTimerStateUpdate=i,e.layoutTimer=V((function(){e.layoutTimerStateUpdate=void 0,e.layoutTimer=void 0,e.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}}var Ke=15;function Ge(e){return Ge="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ge(e)}var Je=Object.prototype.hasOwnProperty;function $e(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function Xe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Qe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xe(Object(n),!0).forEach((function(t){Ze(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ze(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function et(){var e=this;function t(e,t){if(e){var n=e.prependedItemsCount;e.appendedItemsCount;var i=this.getState(),r=i.itemHeights,o=i.itemStates;if(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered)for(var s=0,a=Object.keys(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered);s<a.length;s++){var l=a[s];r[n+parseInt(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var u=0,h=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);u<h.length;u++){var c=h[u];o[n+parseInt(c)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[c]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(J('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after appending items'),J("Previously calculated layout",this.previouslyCalculatedLayout),J("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightMeasurement.hasSnapshot()){if(0===t.firstShownItemIndex){G("~ Restore Scroll Position ~");var f=this.listHeightMeasurement.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightMeasurement.reset(),f?(G("Scroll down by",f),this.scroll.scrollByY(f)):G("Scroll position hasn't changed"),this.previouslyCalculatedLayout&&(0===this.previouslyCalculatedLayout.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex-n?this.previouslyCalculatedLayout={beforeItemsHeight:0,shownItemsHeight:this.previouslyCalculatedLayout.shownItemsHeight+f,firstShownItemIndex:0,lastShownItemIndex:t.lastShownItemIndex}:(J('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after prepending items'),J("Previously calculated layout",this.previouslyCalculatedLayout),J("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}J('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "onRender()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}function n(e){var t=e.reason,n=e.stateUpdate;this._useTimeoutInRenderLoop?(n=this.cancelLayoutTimer({stateUpdate:n}),this.scheduleLayoutTimer({reason:t,stateUpdate:n})):this.onUpdateShownItemIndexes({reason:t,stateUpdate:n})}function i(){var e=Boolean(this.widthHasChanged);this.widthHasChanged=void 0;var t=void 0!==this.firstNonMeasuredItemIndex;return this.firstNonMeasuredItemIndex=void 0,this.newItemsWillBeRendered=void 0,this.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,this.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0,{nonMeasuredItemsHaveBeenRendered:t,widthHasChanged:e}}this._onRender=function(r,o){var s,a,l;if(G("~ Rendered ~"),X()&&G("State",Ee(r)),e.onStateChange&&(function(e,t){if($e(e,t))return!0;if("object"!==Ge(e)||null===e||"object"!==Ge(t)||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var r=0;r<n.length;r++)if(!Je.call(t,n[r])||!$e(e[n[r]],t[n[r]]))return!1;return!0}(r,o)||e.onStateChange(r)),e.tbody&&(s=e.getItemsContainerElement(),a=r.beforeItemsHeight,l=r.afterItemsHeight,s.style.setProperty("--VirtualScroller-paddingTop",h(a)),s.style.setProperty("--VirtualScroller-paddingBottom",h(l))),o){var u,c=i.call(e),f=c.nonMeasuredItemsHaveBeenRendered,d=c.widthHasChanged;f&&(u=ue),d&&(u=he,e.itemHeights.reset(),e.verticalSpacing=void 0);var m,g=o.items,p=r.items;if(p!==g){var I=e.getItemsDiff(g,p);if(I){var v=I.prependedItemsCount;e.itemHeights.onPrepend(v)}else e.itemHeights.reset();d||"SEAMLESS_PREPEND"!==t.call(e,I,r)&&(u=me)}if(r.firstShownItemIndex!==o.firstShownItemIndex||r.lastShownItemIndex!==o.lastShownItemIndex||r.items!==o.items||d){var S=e.measureItemHeightsAndSpacing();S&&(m=Qe(Qe({},m),S))}var y=e.beforeResize.cleanUpBeforeResizeItemHeights();if(void 0!==y){var b=y.scrollBy,w=y.beforeResize;G("Correct scroll position by",b),e.scroll.scrollByY(b),m=Qe(Qe({},m),{},{beforeResize:w})}e._isActive?u?n.call(e,{stateUpdate:m,reason:u}):m?e.updateState(m):G("~ Finished Layout ~"):e._stoppedStateUpdate=m}}}function tt(){var e=this;this.onResize=function(){e.previouslyCalculatedLayout=void 0,e.listHeightMeasurement.reset();var t=e.newItemsWillBeRendered?e.newItemsWillBeRendered.count:e.getState().itemHeights.length,n=e.newItemsWillBeRendered?e.newItemsWillBeRendered.layout:e.getState(),i={scrollableContainerWidth:e.scrollableContainer.getWidth(),firstShownItemIndex:n.firstShownItemIndex,lastShownItemIndex:n.lastShownItemIndex,beforeItemsHeight:n.beforeItemsHeight,afterItemsHeight:n.afterItemsHeight,itemHeights:new Array(t),columnsCount:e.getActualColumnsCountForState(),verticalSpacing:void 0},r=n.firstShownItemIndex,o=n.lastShownItemIndex,s=e.getActualColumnsCount(),a=Math.floor(r/s)*s,l=Math.min(Math.ceil((o+1)/s)*s,t)-1;a!==r&&(G("Columns Count changed from",e.getState().columnsCount||1,"to",s),G("First Shown Item Index needs to change from",r,"to",a)),i.firstShownItemIndex=a,i.lastShownItemIndex=l;var u=e.getVerticalSpacing(),h=e.getColumnsCount();e.shouldDiscardBeforeResizeItemHeights()||0===a?e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(i.beforeResize=void 0):i.beforeResize={verticalSpacing:u,columnsCount:h,itemHeights:e.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:r,newFirstShownItemIndex:a,newColumnsCount:s})},e.widthHasChanged={stateUpdate:i},e.updateState(i)},this.shouldDiscardBeforeResizeItemHeights=function(){if(e.newItemsWillBeRendered){var t=e.newItemsWillBeRendered,n=t.prepend,i=t.replace;return n||i}}}function nt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function it(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?nt(Object(n),!0).forEach((function(t){rt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):nt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function rt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ot(){var e=this;this.getItemsCount=function(){return e.getState().items.length},this._setItems=function(t){var n,i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=e.getState(),s=o.items,a=e.getState(),l=a.itemStates,u=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),h=u.itemHeights;G("~ Update items ~");var c=e.getItemsDiff(s,t);if(c){var f,d=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),m=d.firstShownItemIndex,g=d.lastShownItemIndex,p=d.beforeItemsHeight,I=d.afterItemsHeight,v=0===m&&(r.preserveScrollPositionOnPrependItems||r.preserveScrollPosition),S=c.prependedItemsCount,y=c.appendedItemsCount;n=e.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:m,lastShownItemIndex:g,beforeItemsHeight:p,afterItemsHeight:I},{prependedItemsCount:S,appendedItemsCount:y},{itemsCount:t.length,columnsCount:e.getActualColumnsCount(),shouldRestoreScrollPosition:v,onResetGridLayout:function(){return f=!0}}),S>0&&(G("Prepend",S,"items"),h=new Array(S).concat(h),l&&(l=new Array(S).concat(l)),v?(G("Will restore scroll position"),e.listHeightMeasurement.snapshotListHeightBeforeAddingNewItems({previousItems:s,newItems:t,prependedItemsCount:S}),void 0!==e.firstNonMeasuredItemIndex&&(e.firstNonMeasuredItemIndex+=S)):(G("Reset layout"),f?(G("Reason: Prepended items count",S,"is not divisible by Columns Count",e.getActualColumnsCount()),h=new Array(t.length)):G("Reason: Prepended items' heights are unknown"),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0)),y>0&&(G("Append",y,"items"),h=h.concat(new Array(y)),l&&(l=l.concat(new Array(y)))),i={prepend:S>0,append:y>0}}else G("Items have changed, and",c?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),G("Previous items",s),G("New items",t),h=new Array(t.length),l=new Array(t.length),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0,e.listHeightMeasurement.reset(),i={replace:!0};G("~ Update state ~"),G("First shown item index",n.firstShownItemIndex),G("Last shown item index",n.lastShownItemIndex),G("Before items height",n.beforeItemsHeight),G("After items height (actual or estimated)",n.afterItemsHeight),e.onBeforeShowItems(t,h,n.firstShownItemIndex,n.lastShownItemIndex),e.newItemsWillBeRendered=it(it({},i),{},{count:t.length,layout:n});var b=it(it({},n),{},{items:t,itemStates:l,itemHeights:h});e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(e.shouldDiscardBeforeResizeItemHeights()?b.beforeResize=void 0:b.beforeResize=e.widthHasChanged?e.widthHasChanged.stateUpdate.beforeResize:e.getState().beforeResize),e._isSettingNewItems=!0,e.updateState(b)},this.getItemsDiff=function(t,n){return function(e,t,n){var i=-1,r=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var r=0;r<e.length;){if(t.length<=n+r||!i(t[n+r],e[r]))return!1;r++}return!0}(e,t,i,n)&&(r=i+e.length-1)),i>=0&&r>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(r+1)}}(t,n,e.isItemEqual)}}function st(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.render,o=i.state,s=i.onStateChange,a=i.initialScrollPosition,l=i.onScrollPositionChange,u=i.scrollableContainer,h=i.measureItemsBatchSize,d=void 0===h?50:h,m=i.getColumnsCount,g=i.getItemId,p=i.tbody,I=i.estimatedItemHeight,v=i.onItemInitialRender,S=i.onItemFirstRender,y=i._useTimeoutInRenderLoop,b=i._waitForScrollingToStop,w=i.engine,C=i.bypass,O=i.getScrollableContainer;if(G("~ Initialize ~"),this.engine=w||Y,!O&&u&&(O=function(){return u}),this.getItemsContainerElement=e,i.getState||i.setState)throw new Error("[virtual-scroller] `getState`/`setState` options usage has changed in the new version. See the readme for more details.");if(p){if(this.engine!==Y)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");G("~ <tbody/> detected ~"),this.tbody=!0,f()||(G("~ <tbody/> not supported ~"),$(c),C=!0)}C&&G('~ "bypass" mode ~'),this.bypass=C,this._useTimeoutInRenderLoop=y,this.isItemEqual=g?function(e,t){return g(e)===g(t)}:function(e,t){return e===t},v?this.onItemInitialRender=v:S&&(this.onItemInitialRender=function(e){J("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=n.getState().items.indexOf(e);t>=0&&S(t)}),o&&(t=o.items),G("Items count",t.length),I&&G("Estimated item height",I),We.call(this,{state:o,onStateChange:s,render:r,items:t}),Ve.call(this),De.call(this,{getColumnsCount:m}),qe.call(this),et.call(this),tt.call(this),ot.call(this),at.call(this,{getScrollableContainer:O,estimatedItemHeight:I,measureItemsBatchSize:d,initialScrollPosition:a,onScrollPositionChange:l,waitForScrollingToStop:b}),o&&(this.itemHeights.readItemHeightsFromState(o),this.beforeResize.initializeFromState(o))}function at(e){var t=this,n=e.getScrollableContainer,i=e.estimatedItemHeight,r=e.measureItemsBatchSize,o=e.initialScrollPosition,s=e.onScrollPositionChange,a=e.waitForScrollingToStop;this.itemsContainer=this.engine.createItemsContainer(this.getItemsContainerElement),this.getItemsContainerElement()&&this.itemsContainer.clear(),this.scrollableContainer=this.engine.createScrollableContainer(n,this.getItemsContainerElement),this.itemHeights=new ze({container:this.itemsContainer,getItemHeight:function(e){return t.getState().itemHeights[e]},setItemHeight:function(e,n){return t.getState().itemHeights[e]=n}}),this.layout=new re({bypass:this.bypass,estimatedItemHeight:i,measureItemsBatchSize:r,getPrerenderMargin:function(){return t.getPrerenderMargin()},getVerticalSpacing:function(){return t.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return t.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return t.getColumnsCount()},getColumnsCountBeforeResize:function(){return t.getState().beforeResize&&t.getState().beforeResize.columnsCount},getItemHeight:function(e){return t.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return t.getState().beforeResize&&t.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return t.getState().beforeResize?t.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return t.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return t.scrollableContainer&&t.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return t.previouslyCalculatedLayout}}),this.resize=new Ie({bypass:this.bypass,getWidth:function(){return t.scrollableContainer.getWidth()},getHeight:function(){return t.scrollableContainer.getHeight()},listenForResize:function(e){return t.scrollableContainer.onResize(e)},onResizeStart:function(){G("~ Scrollable container resize started ~"),t._isResizing=!0},onResizeStop:function(){G("~ Scrollable container resize finished ~"),t._isResizing=void 0},onNoChange:function(){t.onUpdateShownItemIndexes({reason:fe})},onHeightChange:function(){return t.onUpdateShownItemIndexes({reason:ce})},onWidthChange:function(e,n){G("~ Scrollable container width changed from",e,"to",n,"~"),t.onResize()}}),this.scroll=new xe({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:a,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delayed;t.onUpdateShownItemIndexes({reason:n?se:oe})},initialScrollPosition:o,onScrollPositionChange:s,isImmediateLayoutScheduled:function(){return Boolean(t.layoutTimer)},hasNonRenderedItemsAtTheTop:function(){return t.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return t.getState().lastShownItemIndex<t.getItemsCount()-1},getLatestLayoutVisibleArea:function(){return t.latestLayoutVisibleArea},getListTopOffset:this.getListTopOffsetInsideScrollableContainer,getPrerenderMargin:function(){return t.getPrerenderMargin()}}),this.listHeightMeasurement=new je({itemsContainer:this.itemsContainer,getListTopOffset:this.getListTopOffsetInsideScrollableContainer}),this.engine.watchListTopOffset&&(this.listTopOffsetWatcher=this.engine.watchListTopOffset({getListTopOffset:this.getListTopOffsetInsideScrollableContainer,onListTopOffsetChange:function(e){return e.reason,t.onUpdateShownItemIndexes({reason:ge})}})),this.beforeResize=new Ce({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount})}function lt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ut(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?lt(Object(n),!0).forEach((function(t){ft(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ht(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ct(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function ft(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var dt=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};ht(this,e),ft(this,"stop",(function(){if(!i._isActive)throw new Error("[virtual-scroller] Can't stop a `VirtualScroller` that hasn't been started");i._isActive=!1,G("~ Stop ~"),i.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.isStarted()&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),ft(this,"updateLayout",(function(){i.hasToBeStarted(),i.onUpdateShownItemIndexes({reason:ae})})),ft(this,"onRender",(function(){i._onRender(i.getState(),i.previousState)})),st.call(this,t,n,r)}var t,n,i;return t=e,n=[{key:"start",value:function(){if(this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");!1===this._isActive||(this._usesCustomStateStorage||this.useDefaultStateStorage(),this._render&&this._render(this.getState())),G("~ Start ~"),this._isActive=!0,this.listHeightMeasurement.reset(),this._isResizing=void 0,this._isSettingNewItems=void 0,this.tbody&&(this.getItemsContainerElement().classList.contains(d)&&Boolean(document.getElementById(m))||function(e){e.classList.add(d);var t=document.createElement("style");t.id=m,t.innerText="\n\t\ttbody.".concat(d,":before {\n\t\t\tcontent: '';\n\t\t\tdisplay: table-row;\n\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t}\n\t\ttbody.").concat(d,":after {\n\t\t\tcontent: '';\n\t\t\tdisplay: table-row;\n\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t}\n\t").replace(/[\n\t]/g,""),document.head.appendChild(t)}(this.getItemsContainerElement()));var e=this._stoppedStateUpdate;this._stoppedStateUpdate=void 0,this.verticalSpacing=void 0;var t=this.measureItemHeightsAndSpacing();if(t&&(e=ut(ut({},e),t)),this.resize.start(),this.scroll.start(),void 0===this.getState().scrollableContainerWidth){var n=this.scrollableContainer.getWidth();e=ut(ut({},e),{},{scrollableContainerWidth:n})}else{var i=this.scrollableContainer.getWidth(),r=this.getState().scrollableContainerWidth;if(i!==r)return G("~ Scrollable container width changed from",r,"to",i,"~"),this.onResize()}if(this._usesCustomStateStorage&&this.getActualColumnsCount()!==(this.getState().columnsCount||1))return this.onResize();this.onUpdateShownItemIndexes({reason:le,stateUpdate:e})}},{key:"hasToBeStarted",value:function(){if(!this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` hasn't been started")}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onItemHeightChange",value:function(e){this.hasToBeStarted(),this._onItemHeightChange(e)}},{key:"onItemStateChange",value:function(e,t){this.hasToBeStarted(),this._onItemStateChange(e,t)}},{key:"setItems",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.hasToBeStarted(),this._setItems(e,t)}}],n&&ct(t.prototype,n),i&&ct(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function mt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function gt(t){var n=t.getItemId,i=e.useRef(),r=e.useMemo((function(){var e=0;return function(){i.current=String((e===Number.MAX_SAFE_INTEGER&&(e=0),++e))}}),[i]);e.useMemo((function(){r()}),[]);var o=e.useCallback((function(){n||r()}),[n,r]),s=e.useCallback((function(e,t){return n?n(e):"".concat(i.current,":").concat(t)}),[n,i]);return{getItemKey:s,updateItemKeysForNewItems:o}}var pt=["as","items","itemComponent","itemComponentProps","estimatedItemHeight","bypass","tbody","preserveScrollPosition","preserveScrollPositionOnPrependItems","measureItemsBatchSize","scrollableContainer","getScrollableContainer","getColumnsCount","getItemId","className","onMount","onItemFirstRender","onItemInitialRender","initialScrollPosition","onScrollPositionChange","onStateChange","initialState"];function It(){return It=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},It.apply(this,arguments)}function vt(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function St(t,n){var r=t.as,o=t.items,a=t.itemComponent,u=t.itemComponentProps,c=t.estimatedItemHeight,f=t.bypass,m=t.tbody,g=t.preserveScrollPosition,p=t.preserveScrollPositionOnPrependItems,I=t.measureItemsBatchSize,v=t.scrollableContainer,S=t.getScrollableContainer,y=t.getColumnsCount,b=t.getItemId,w=t.className,C=t.onMount,O=t.onItemFirstRender,H=t.onItemInitialRender,R=t.initialScrollPosition,x=t.onScrollPositionChange,P=t.onStateChange,T=t.initialState,j=vt(t,pt),L=e.useRef(),z=function(t,n){var i=t.items,r=t.estimatedItemHeight,o=t.bypass,s=t.tbody,a=t.onItemInitialRender,l=t.onItemFirstRender,u=t.initialScrollPosition,h=t.onScrollPositionChange,c=t.measureItemsBatchSize,f=t.scrollableContainer,d=t.getScrollableContainer,m=t.getColumnsCount,g=t.getItemId,p=t.AsComponent,I=t.initialState,v=t.onStateChange,S=n.container;return e.useMemo((function(){var e;return new dt((function(){return S.current}),i,(mt(e={_useTimeoutInRenderLoop:!0,estimatedItemHeight:r,bypass:o,tbody:s,onItemInitialRender:a,onItemFirstRender:l,initialScrollPosition:u,onScrollPositionChange:h,measureItemsBatchSize:c,scrollableContainer:f,getScrollableContainer:d,getColumnsCount:m,getItemId:g},"tbody","tbody"===p),mt(e,"state",I),mt(e,"onStateChange",v),e))}),[])}({items:o,estimatedItemHeight:c,bypass:f,tbody:m,onItemInitialRender:H,onItemFirstRender:O,initialScrollPosition:R,onScrollPositionChange:x,measureItemsBatchSize:I,scrollableContainer:v,getScrollableContainer:S,getColumnsCount:y,getItemId:b,AsComponent:r,initialState:T,onStateChange:P},{container:L}),A=function(t){var n=t.initialState,i=t.onRender,r=t.items,o=l(e.useState(),2),a=o[0],u=o[1],h=e.useRef(n),c=e.useRef(n);return h.current!==c.current&&(h.current=a),e.useLayoutEffect((function(){i()}),[a,r]),{getState:function(){return h.current},updateState:function(e){var t=s(s({},c.current),e);c.current=t,e.items?h.current=t:u(t)}}}({initialState:e.useMemo((function(){return z.getInitialState()}),[]),onRender:z.onRender,items:o}),B=A.getState,M=A.updateState;e.useMemo((function(){z.useState({getState:B,updateState:M})}),[]),function(t){e.useLayoutEffect((function(){return t.start(),function(){t.stop()}}),[])}(z);var E=gt({getItemId:b}),k=E.getItemKey,_=E.updateItemKeysForNewItems,N=function(t){var n=t.items,i=t.virtualScroller,r=e.useMemo((function(){return new Array(n.length)}),[]),o=e.useRef(r),s=e.useCallback((function(e){return o.current[e]||(o.current[e]=function(t){return i.onItemStateChange(e,t)}),o.current[e]}),[i,o]);return s}({items:o,virtualScroller:z}),W=function(t){var n=t.items,i=t.virtualScroller,r=e.useMemo((function(){return new Array(n.length)}),[]),o=e.useRef(r),s=e.useCallback((function(e){return o.current[e]||(o.current[e]=function(){return i.onItemHeightChange(e)}),o.current[e]}),[i,o]);return s}({items:o,virtualScroller:z});!function(t,n){var i=n.virtualScroller,r=n.preserveScrollPosition,o=n.preserveScrollPositionOnPrependItems,s=n.updateItemKeysForNewItems,a=i.getState(),l=a.items;a.firstShownItemIndex;var u=e.useRef(t),h=t!==u.current;if(u.current=t,h){var c=!0,f=!0,d=i.getItemsDiff(l,t);if(d){var m=d.prependedItemsCount,g=d.appendedItemsCount;0===m&&0===g?(c=!1,f=!1):0===m&&g>0&&(f=!1)}c&&(i.setItems(t,{preserveScrollPositionOnPrependItems:o||r}),f&&s())}}(o,{virtualScroller:z,preserveScrollPosition:g,preserveScrollPositionOnPrependItems:p,updateItemKeysForNewItems:_}),function(t,n){var i=n.virtualScroller;e.useImperativeHandle(t,(function(){return{updateLayout:function(){return i.updateLayout()},layout:function(){return i.updateLayout()},updateItem:function(e){return $('[virtual-scroller] ".updateItem(i)" method of React <VirtualScroller/> has been removed')},renderItem:function(e){return $('[virtual-scroller] ".renderItem(i)" method of React <VirtualScroller/> has been removed')}}}),[i])}(n,{virtualScroller:z}),e.useLayoutEffect((function(){C&&C()}),[]),w=function(e,t){return t.tbody?e?e+" "+d:d:e}(w,{tbody:m});var V=function(e){var t=e.tbody,n=e.virtualScroller;if(!t){var i=n.getState(),r=i.beforeItemsHeight,o=i.afterItemsHeight;return{paddingTop:h(r),paddingBottom:h(o)}}}({tbody:m,virtualScroller:z}),D=z.getState(),F=D.items,U=D.itemStates,Y=D.firstShownItemIndex,q=D.lastShownItemIndex;return i.default.createElement(r,It({},j,{ref:L,className:w,style:V}),F.map((function(e,t){return t>=Y&&t<=q?i.default.createElement(a,It({},u,{key:k(e,t),state:U&&U[t],onStateChange:N(t),onHeightChange:W(t)}),e):null})))}var yt=St=i.default.forwardRef(St),bt=r.default.elementType||r.default.oneOfType([r.default.string,r.default.func,r.default.object]);return St.propTypes={as:bt,items:r.default.arrayOf(r.default.any).isRequired,itemComponent:bt.isRequired,itemComponentProps:r.default.object,estimatedItemHeight:r.default.number,bypass:r.default.bool,tbody:r.default.bool,preserveScrollPositionOnPrependItems:r.default.bool,preserveScrollPosition:r.default.bool,measureItemsBatchSize:r.default.number,scrollableContainer:r.default.any,getScrollableContainer:r.default.func,getColumnsCount:r.default.func,getItemId:r.default.func,className:r.default.string,onMount:r.default.func,onItemInitialRender:r.default.func,onItemFirstRender:r.default.func,initialScrollPosition:r.default.number,onScrollPositionChange:r.default.func,onStateChange:r.default.func,initialState:r.default.shape({items:r.default.arrayOf(r.default.object).isRequired,itemStates:r.default.arrayOf(r.default.any),firstShownItemIndex:r.default.number.isRequired,lastShownItemIndex:r.default.number.isRequired,beforeItemsHeight:r.default.number.isRequired,afterItemsHeight:r.default.number.isRequired,itemHeights:r.default.arrayOf(r.default.number).isRequired,columnsCount:r.default.number,verticalSpacing:r.default.number})},St.defaultProps={as:"div"},yt}));
2
2
  //# sourceMappingURL=virtual-scroller-react.js.map