virtual-scroller 1.7.6 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/README.md +139 -33
  3. package/babel.config.js +25 -0
  4. package/babel.js +5 -0
  5. package/bundle/index-bypass.html +1 -1
  6. package/bundle/index-dom.html +1 -1
  7. package/bundle/index-grid.html +1 -2
  8. package/bundle/index-scrollableContainer.html +1 -1
  9. package/bundle/index-tbody-scrollableContainer.html +2 -0
  10. package/bundle/index-tbody.html +2 -0
  11. package/bundle/virtual-scroller-dom.js +1 -1
  12. package/bundle/virtual-scroller-dom.js.map +1 -1
  13. package/bundle/virtual-scroller-react.js +1 -1
  14. package/bundle/virtual-scroller-react.js.map +1 -1
  15. package/bundle/virtual-scroller.js +1 -1
  16. package/bundle/virtual-scroller.js.map +1 -1
  17. package/commonjs/BeforeResize.js +319 -0
  18. package/commonjs/BeforeResize.js.map +1 -0
  19. package/commonjs/DOM/Engine.js +46 -0
  20. package/commonjs/DOM/Engine.js.map +1 -0
  21. package/commonjs/DOM/ItemsContainer.js +78 -0
  22. package/commonjs/DOM/ItemsContainer.js.map +1 -0
  23. package/commonjs/DOM/{WaitForStylesToLoad.js → ListTopOffsetWatcher.js} +56 -35
  24. package/commonjs/DOM/ListTopOffsetWatcher.js.map +1 -0
  25. package/commonjs/DOM/ScrollableContainer.js +56 -81
  26. package/commonjs/DOM/ScrollableContainer.js.map +1 -1
  27. package/commonjs/DOM/VirtualScroller.js +20 -15
  28. package/commonjs/DOM/VirtualScroller.js.map +1 -1
  29. package/commonjs/DOM/tbody.js +2 -2
  30. package/commonjs/ItemHeights.js +13 -20
  31. package/commonjs/ItemHeights.js.map +1 -1
  32. package/commonjs/Layout.js +588 -215
  33. package/commonjs/Layout.js.map +1 -1
  34. package/commonjs/Layout.test.js +191 -0
  35. package/commonjs/Layout.test.js.map +1 -0
  36. package/commonjs/ListHeightChangeWatcher.js +126 -0
  37. package/commonjs/ListHeightChangeWatcher.js.map +1 -0
  38. package/commonjs/Resize.js +22 -21
  39. package/commonjs/Resize.js.map +1 -1
  40. package/commonjs/Scroll.js +148 -88
  41. package/commonjs/Scroll.js.map +1 -1
  42. package/commonjs/VirtualScroller.js +1269 -390
  43. package/commonjs/VirtualScroller.js.map +1 -1
  44. package/commonjs/getItemCoordinates.js.map +1 -1
  45. package/commonjs/getItemsDiff.js.map +1 -1
  46. package/commonjs/getVerticalSpacing.js +8 -8
  47. package/commonjs/getVerticalSpacing.js.map +1 -1
  48. package/commonjs/react/VirtualScroller.js +31 -37
  49. package/commonjs/react/VirtualScroller.js.map +1 -1
  50. package/commonjs/utility/debounce.js +26 -4
  51. package/commonjs/utility/debounce.js.map +1 -1
  52. package/commonjs/utility/debug.js +51 -12
  53. package/commonjs/utility/debug.js.map +1 -1
  54. package/commonjs/utility/getStateSnapshot.js +50 -0
  55. package/commonjs/utility/getStateSnapshot.js.map +1 -0
  56. package/commonjs/utility/px.js +1 -1
  57. package/commonjs/utility/px.js.map +1 -1
  58. package/commonjs/utility/px.test.js +14 -0
  59. package/commonjs/utility/px.test.js.map +1 -0
  60. package/commonjs/utility/shallowEqual.js +1 -1
  61. package/commonjs/utility/shallowEqual.js.map +1 -1
  62. package/commonjs/utility/throttle.js.map +1 -1
  63. package/dom/index.d.ts +23 -0
  64. package/index.d.ts +84 -0
  65. package/modules/BeforeResize.js +310 -0
  66. package/modules/BeforeResize.js.map +1 -0
  67. package/modules/DOM/Engine.js +27 -0
  68. package/modules/DOM/Engine.js.map +1 -0
  69. package/modules/DOM/ItemsContainer.js +71 -0
  70. package/modules/DOM/ItemsContainer.js.map +1 -0
  71. package/modules/DOM/{WaitForStylesToLoad.js → ListTopOffsetWatcher.js} +57 -35
  72. package/modules/DOM/ListTopOffsetWatcher.js.map +1 -0
  73. package/modules/DOM/ScrollableContainer.js +55 -80
  74. package/modules/DOM/ScrollableContainer.js.map +1 -1
  75. package/modules/DOM/VirtualScroller.js +15 -14
  76. package/modules/DOM/VirtualScroller.js.map +1 -1
  77. package/modules/ItemHeights.js +8 -19
  78. package/modules/ItemHeights.js.map +1 -1
  79. package/modules/Layout.js +582 -213
  80. package/modules/Layout.js.map +1 -1
  81. package/modules/Layout.test.js +185 -0
  82. package/modules/Layout.test.js.map +1 -0
  83. package/modules/ListHeightChangeWatcher.js +119 -0
  84. package/modules/ListHeightChangeWatcher.js.map +1 -0
  85. package/modules/Resize.js +21 -20
  86. package/modules/Resize.js.map +1 -1
  87. package/modules/Scroll.js +148 -87
  88. package/modules/Scroll.js.map +1 -1
  89. package/modules/VirtualScroller.js +1263 -390
  90. package/modules/VirtualScroller.js.map +1 -1
  91. package/modules/getItemCoordinates.js.map +1 -1
  92. package/modules/getItemsDiff.js.map +1 -1
  93. package/modules/getVerticalSpacing.js +8 -8
  94. package/modules/getVerticalSpacing.js.map +1 -1
  95. package/modules/react/VirtualScroller.js +31 -37
  96. package/modules/react/VirtualScroller.js.map +1 -1
  97. package/modules/utility/debounce.js +26 -4
  98. package/modules/utility/debounce.js.map +1 -1
  99. package/modules/utility/debug.js +47 -10
  100. package/modules/utility/debug.js.map +1 -1
  101. package/modules/utility/getStateSnapshot.js +43 -0
  102. package/modules/utility/getStateSnapshot.js.map +1 -0
  103. package/modules/utility/px.js +1 -1
  104. package/modules/utility/px.js.map +1 -1
  105. package/modules/utility/px.test.js +9 -0
  106. package/modules/utility/px.test.js.map +1 -0
  107. package/modules/utility/shallowEqual.js +1 -1
  108. package/modules/utility/shallowEqual.js.map +1 -1
  109. package/modules/utility/throttle.js.map +1 -1
  110. package/package.json +24 -22
  111. package/react/index.d.ts +27 -0
  112. package/source/BeforeResize.js +317 -0
  113. package/source/DOM/Engine.js +32 -0
  114. package/source/DOM/ItemsContainer.js +48 -0
  115. package/source/DOM/{WaitForStylesToLoad.js → ListTopOffsetWatcher.js} +48 -22
  116. package/source/DOM/ScrollableContainer.js +39 -56
  117. package/source/DOM/VirtualScroller.js +6 -7
  118. package/source/ItemHeights.js +10 -15
  119. package/source/Layout.js +626 -252
  120. package/source/Layout.test.js +171 -0
  121. package/source/ListHeightChangeWatcher.js +94 -0
  122. package/source/Resize.js +23 -15
  123. package/source/Scroll.js +139 -78
  124. package/source/VirtualScroller.js +1240 -286
  125. package/source/getVerticalSpacing.js +7 -7
  126. package/source/react/VirtualScroller.js +2 -18
  127. package/source/utility/debounce.js +20 -3
  128. package/source/utility/debug.js +34 -3
  129. package/source/utility/getStateSnapshot.js +36 -0
  130. package/source/utility/px.js +1 -1
  131. package/source/utility/px.test.js +9 -0
  132. package/website/index-bypass.html +195 -0
  133. package/website/index-grid.html +0 -1
  134. package/website/index-scrollableContainer.html +208 -0
  135. package/website/index-tbody-scrollableContainer.html +68 -0
  136. package/website/index-tbody.html +55 -0
  137. package/commonjs/DOM/RenderingEngine.js +0 -33
  138. package/commonjs/DOM/RenderingEngine.js.map +0 -1
  139. package/commonjs/DOM/Screen.js +0 -87
  140. package/commonjs/DOM/Screen.js.map +0 -1
  141. package/commonjs/DOM/WaitForStylesToLoad.js.map +0 -1
  142. package/commonjs/RestoreScroll.js +0 -118
  143. package/commonjs/RestoreScroll.js.map +0 -1
  144. package/modules/DOM/RenderingEngine.js +0 -19
  145. package/modules/DOM/RenderingEngine.js.map +0 -1
  146. package/modules/DOM/Screen.js +0 -80
  147. package/modules/DOM/Screen.js.map +0 -1
  148. package/modules/DOM/WaitForStylesToLoad.js.map +0 -1
  149. package/modules/RestoreScroll.js +0 -111
  150. package/modules/RestoreScroll.js.map +0 -1
  151. package/source/DOM/RenderingEngine.js +0 -22
  152. package/source/DOM/Screen.js +0 -51
  153. package/source/RestoreScroll.js +0 -86
@@ -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=e||self).VirtualScroller=t(e.React,e.PropTypes)}(this,function(e,t){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e,t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var i,r=(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(n)}(i={exports:{}},i.exports),i.exports),o="undefined"==typeof window?n:window,s=["moz","webkit"],a="AnimationFrame",l=o["request"+a],u=o["cancel"+a]||o["cancelRequest"+a],h=0;!l&&h<s.length;h++)l=o[s[h]+"Request"+a],u=o[s[h]+"Cancel"+a]||o[s[h]+"CancelRequest"+a];if(!l||!u){var c=0,m=0,f=[];l=function(e){if(0===f.length){var t=r(),n=Math.max(0,1e3/60-(t-c));c=n+t,setTimeout(function(){var e=f.slice(0);f.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(c)}catch(e){setTimeout(function(){throw e},0)}},Math.round(n))}return f.push({handle:++m,callback:e,cancelled:!1}),m},u=function(e){for(var t=0;t<f.length;t++)f[t].handle===e&&(f[t].cancelled=!0)}}var d=function(e){return l.call(o,e)};d.cancel=function(){u.apply(o,arguments)},d.polyfill=function(e){e||(e=o),e.requestAnimationFrame=l,e.cancelAnimationFrame=u};var g=d.cancel;function p(e,t){var n=Date.now(),i=d(function r(){Date.now()-n>=t?e():i=d(r)});return{clear:function(){return g(i)}}}function I(e){e&&e.clear()}function y(e){return e.toFixed(2)+"px"}var v="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 S(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 b=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,n,i;return t=e,(n=[{key:"getChildElementTopOffset",value:function(e,t){return e.childNodes[t].getBoundingClientRect().top}},{key:"getChildElementHeight",value:function(e,t){return this.getElementHeight(e.childNodes[t])}},{key:"getChildElementsCount",value:function(e){return e.childNodes.length}},{key:"clearElement",value:function(e){for(;e.firstChild;)e.removeChild(e.firstChild)}},{key:"getElementHeight",value:function(e){return e.getBoundingClientRect().height}}])&&S(t.prototype,n),i&&S(t,i),e}();function w(e){return(w="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})(e)}function C(e,t){return!t||"object"!==w(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function O(e){return(O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function T(e,t){return(T=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function H(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function x(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 R(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),e}var P=function(){function e(t){H(this,e),this.element=t}return R(e,[{key:"getScrollY",value:function(){return this.element.scrollTop}},{key:"scrollToY",value:function(e){this.element.scrollTo(0,e)}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"getHeight",value:function(){return this.element.offsetHeight}},{key:"getContentHeight",value:function(){return this.element.scrollHeight}},{key:"getTopOffset",value:function(e){var t=this.element.getBoundingClientRect().top,n=this.element.clientTop;return e.getBoundingClientRect().top-t+this.getScrollY()-n}},{key:"addScrollListener",value:function(e){var t=this;return this.element.addEventListener("scroll",e),function(){return t.element.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e,t){var n,i=this,r=t.container;if("undefined"!=typeof ResizeObserver){var o=new ResizeObserver(function(t){t[0];e()});o.observe(this.element),n=function(){return o.unobserve(i.element)}}var s=k(e,{container:r});return function(){n&&n(),s()}}}]),e}(),L=function(e){function t(){return H(this,t),C(this,O(t).call(this,window))}return 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&&T(e,t)}(t,P),R(t,[{key:"getScrollY",value:function(){return window.pageYOffset}},{key:"getWidth",value:function(){return window.innerWidth}},{key:"getHeight",value:function(){return window.innerHeight}},{key:"getContentHeight",value:function(){return document.documentElement.scrollHeight}},{key:"getTopOffset",value:function(e){var t=document.clientTop||document.body.clientTop||0;return e.getBoundingClientRect().top+this.getScrollY()-t}},{key:"onResize",value:function(e,t){return k(e,{container:t.container})}}]),t}();function k(e,t){var n=t.container,i=function(){document.fullscreenElement&&!document.fullscreenElement.contains(n)||e()};return window.addEventListener("resize",i),function(){return window.removeEventListener("resize",i)}}var A={name:"DOM",createScreen:function(){return new b},createScrollableContainer:function(e){return e?new P(e):"undefined"!=typeof window?new L:void 0}};function M(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function E(){if(_()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,M(["[virtual-scroller]"].concat(n)))}}function B(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).warn.apply(e,M(["[virtual-scroller]"].concat(n)))}function V(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(E.apply(this,["ERROR"].concat(t)),setTimeout(function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))},0)):(i=console).error.apply(i,M(["[virtual-scroller]"].concat(t)))}function _(){if("undefined"!=typeof window)return!0===window.VirtualScrollerDebug||"debug"===window.VirtualScrollerDebug}function U(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 j=function(){function e(t){var n=t.bypass,i=t.estimatedItemHeight,r=t.measureItemsBatchSize,o=t.getVerticalSpacing,s=t.getColumnsCount,a=t.getItemHeight,l=t.getAverageItemHeight;!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.getVerticalSpacing=o,this.getColumnsCount=s,this.getItemHeight=a,this.getAverageItemHeight=l}var t,n,i;return t=e,(n=[{key:"getInitialLayoutValues",value:function(e){var t,n,i=e.bypass,r=e.itemsCount,o=e.visibleAreaHeightIncludingMargins,s=o?this.getEstimatedRowsCountForHeight(o):1;return r>0&&(t=0,n=this.getLastShownItemIndex(t,r,s,i)),{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getLastShownItemIndex",value:function(e,t,n,i){return this.bypass||i?t-1:Math.min(e+(n*this.getColumnsCount()-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight();return t?Math.ceil((e+this.getVerticalSpacing())/(t+this.getVerticalSpacing())):1}},{key:"getEstimatedItemHeight",value:function(){return this.getAverageItemHeight()||this.estimatedItemHeight||0}},{key:"updateLayoutForItemsDiff",value:function(e,t,n){var i=t.prependedItemsCount,r=t.appendedItemsCount,o=n.itemsCount;e.firstShownItemIndex+=i,e.lastShownItemIndex+=i;var s=this.getColumnsCount();if(i%s==0){var a=i/s,l=Math.ceil(r/s),u=this.getAverageItemHeight(),h=this.getVerticalSpacing();e.beforeItemsHeight+=a*(u+h),e.afterItemsHeight+=l*(h+u)}else e.beforeItemsHeight=this.getBeforeItemsHeight(firstShownItemIndex,lastShownItemIndex),e.afterItemsHeight=this.getAfterItemsHeight(firstShownItemIndex,lastShownItemIndex,o)}},{key:"_getVisibleItemIndexes",value:function(e,t,n,i){for(var r,o,s=this.getColumnsCount(),a=0,l=Math.ceil(i/s),u=0;u<l;){for(var h=i>(u+1)*s?this.getVerticalSpacing():0,c=0,m=0,f=void 0;m<s&&(f=u*s+m)<i;){var d=this.getItemHeight(f);if(void 0===d){E("Item index ".concat(f,' lies within the visible area or its "margins", but its height hasn\'t been measured yet. Mark the item as "shown", render the list, measure the item\'s height and redo the layout.')),void 0===r&&(r=u*s);var g=t-(n+a);return{firstNonMeasuredItemIndex:f,firstShownItemIndex:r,lastShownItemIndex:o=Math.min((u+this.getEstimatedRowsCountForHeight(g))*s-1,i-1)}}if(c=Math.max(c,d),void 0===r&&n+a+c>e&&(E("First shown row index",u),r=u*s),n+a+c+h>t)return E("Last shown row index",u),void 0!==r&&(o=Math.min((u+1)*s-1,i-1)),{firstShownItemIndex:r,lastShownItemIndex:o};m++}a+=c,a+=h,u++}return void 0!==r&&void 0===o&&E("Last item index (is fully visible)",o=i-1),{firstShownItemIndex:r,lastShownItemIndex:o}}},{key:"getVisibleItemIndexes",value:function(e,t,n,i){var r=this._getVisibleItemIndexes(e,t,n,i),o=r.firstNonMeasuredItemIndex,s=r.firstShownItemIndex,a=r.lastShownItemIndex,l=void 0!==o;if(l&&this.measureItemsBatchSize){var u=o+this.measureItemsBatchSize-1,h=this.getColumnsCount();a=Math.min(a,Math.ceil(u/h)*h-1)}return{firstShownItemIndex:s,lastShownItemIndex:a,redoLayoutAfterMeasuringItemHeights:l}}},{key:"getNonVisibleListShownItemIndexes",value:function(){return{firstShownItemIndex:0,lastShownItemIndex:0,redoLayoutAfterMeasuringItemHeights:void 0===this.getItemHeight(0)}}},{key:"getItemIndexes",value:function(e,t,n,i,r){if(n+i>e&&n<t){var o=this.getVisibleItemIndexes(e,t,n,r);if(void 0!==o.firstShownItemIndex)return o;E("The entire list is off-screen. No items are visible.")}else E("The entire list is off-screen. No items are visible.")}},{key:"getBeforeItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=Math.floor(e/n),r=0,o=0;o<i;){for(var s=0,a=0;a<n;)s=Math.max(s,this.getItemHeight(o*n+a)||this.getAverageItemHeight()),a++;r+=s,r+=this.getVerticalSpacing(),o++}return r}},{key:"getAfterItemsHeight",value:function(e,t,n){for(var i=this.getColumnsCount(),r=Math.ceil(n/i),o=0,s=Math.floor(t/i)+1;s<r;){for(var a=0,l=0,u=void 0;l<i&&(u=s*i+l)<n;)a=Math.max(a,this.getItemHeight(u)||this.getAverageItemHeight()),l++;o+=this.getVerticalSpacing(),o+=a,s++}return o}},{key:"getShownItemIndexes",value:function(e){var t=e.listHeight,n=e.itemsCount,i=e.visibleAreaIncludingMargins,r=e.listTopOffsetInsideScrollableContainer;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:n-1}:this.getItemIndexes(i.top,i.bottom,r,t,n)||this.getNonVisibleListShownItemIndexes()}},{key:"showItemsFromTheStart",value:function(e){e.firstShownItemIndex=0,e.beforeItemsHeight=0}}])&&U(t.prototype,n),i&&U(t,i),e}(),N={SCROLL:"scroll",STOPPED_SCROLLING:"stopped scrolling",MANUAL:"manual",MOUNT:"mount",ITEM_HEIGHT_NOT_MEASURED:"some item height wasn't measured",RESIZE:"resize",ITEM_HEIGHT_CHANGED:"item height changed",ITEMS_CHANGED:"items changed",TOP_OFFSET_CHANGED:"list top offset changed"};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)}}var D=function(){function e(t){var n=t.updateLayout,i=t.getListTopOffsetInsideScrollableContainer;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.updateLayout=n,this.getListTopOffsetInsideScrollableContainer=i}var t,n,i;return t=e,(n=[{key:"onGotListTopOffset",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,I(this.watchListTopOffsetTimer)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e.isRendered&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffsetInsideScrollableContainer()!==e.listTopOffsetInsideScrollableContainer&&e.updateLayout({reason:N.TOP_OFFSET_CHANGED}),Date.now()-t<Y&&(e.watchListTopOffsetTimer=p(n,F)))}()}}])&&z(t.prototype,n),i&&z(t,i),e}(),F=500,Y=3e3;function q(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 W=function(){function e(t){var n,i,r,o,s,a,l=this,u=t.bypass,h=t.scrollableContainer,c=t.getContainerElement,m=t.updateLayout,f=t.resetStateAndLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),o=function(){if(l.isRendered){var e=l.scrollableContainerWidth,t=l.scrollableContainerHeight;if(l.scrollableContainerWidth=l.scrollableContainer.getWidth(),l.scrollableContainerHeight=l.scrollableContainer.getHeight(),l.scrollableContainerWidth===e){if(l.scrollableContainerHeight===t)return;l.updateLayout({reason:N.RESIZE})}else l.resetStateAndLayout()}},s=G,r=function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];I(a),a=p(function(){return o.apply(e,n)},s)},(i="onResize")in(n=this)?Object.defineProperty(n,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[i]=r,this.bypass=u,this.scrollableContainer=h,this.getContainerElement=c,this.updateLayout=m,this.resetStateAndLayout=f}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,{container:this.getContainerElement()}))}},{key:"stop",value:function(){this.isRendered=!1,this.scrollableContainerUnlistenResize&&this.scrollableContainerUnlistenResize()}}])&&q(t.prototype,n),i&&q(t,i),e}(),G=250;function K(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 J(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Z=function(){function e(t){var n=this,i=t.bypass,r=t.scrollableContainer,o=t.updateLayout,s=t.initialScrollPosition,a=t.onScrollPositionChange,l=t.isImmediateLayoutScheduled,u=t.hasNonRenderedItemsAtTheTop,h=t.hasNonRenderedItemsAtTheBottom,c=t.getLatestLayoutVisibleAreaIncludingMargins,m=t.preserveScrollPositionOfTheBottomOfTheListOnMount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),J(this,"updateScrollPosition",function(){n.onScrollPositionChange(n.getScrollY())}),J(this,"onScroll",function(){n.cancelOnUserStopsScrollingTimer();var e=n.getLatestLayoutVisibleAreaIncludingMargins()&&(n.getScrollY()<n.getLatestLayoutVisibleAreaIncludingMargins().top&&n.hasNonRenderedItemsAtTheTop()||n.getScrollY()+n.scrollableContainer.getHeight()>n.getLatestLayoutVisibleAreaIncludingMargins().bottom&&n.hasNonRenderedItemsAtTheBottom());if(E(e?"The user has scrolled far enough: force re-layout":"The user hasn't scrolled too much: delay re-layout"),e)n.updateLayout({reason:N.SCROLL});else{if(n.isImmediateLayoutScheduled())return;n.onUserStopsScrollingTimer=p(function(){n.onUserStopsScrollingTimer=void 0,n.updateLayout({reason:N.STOPPED_SCROLLING})},Q)}}),this.bypass=i,this.scrollableContainer=r,this.updateLayout=o,this.initialScrollPosition=s,this.onScrollPositionChange=a,this.isImmediateLayoutScheduled=l,this.hasNonRenderedItemsAtTheTop=u,this.hasNonRenderedItemsAtTheBottom=h,this.getLatestLayoutVisibleAreaIncludingMargins=c,m&&r&&(this.preserveScrollPositionOfTheBottomOfTheListOnMount={scrollableContainerContentHeight:r.getContentHeight()})}var t,n,i;return t=e,(n=[{key:"listen",value:function(){void 0!==this.initialScrollPosition&&this.scrollToY(this.initialScrollPosition),this.onScrollPositionChange&&(this.updateScrollPosition(),this.removeScrollPositionListener=this.scrollableContainer.addScrollListener(this.updateScrollPosition)),this.bypass||(this.removeScrollListener=this.scrollableContainer.addScrollListener(this.onScroll)),this.preserveScrollPositionOfTheBottomOfTheListOnMount&&this.scrollToY(this.getScrollY()+(this.scrollableContainer.getContentHeight()-this.preserveScrollPositionOfTheBottomOfTheListOnMount.scrollableContainerContentHeight))}},{key:"stop",value:function(){this.removeScrollPositionListener&&this.removeScrollPositionListener(),this.removeScrollListener&&this.removeScrollListener(),this.cancelOnUserStopsScrollingTimer()}},{key:"scrollToY",value:function(e){this.scrollableContainer.scrollToY(e)}},{key:"scrollByY",value:function(e){this.scrollToY(this.getScrollY()+e)}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnUserStopsScrollingTimer",value:function(){this.onUserStopsScrollingTimer&&(I(this.onUserStopsScrollingTimer),this.onUserStopsScrollingTimer=void 0)}},{key:"onLayout",value:function(){this.cancelOnUserStopsScrollingTimer()}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&K(t.prototype,n),i&&K(t,i),e}(),Q=100;function X(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 $=function(){function e(t){var n=t.screen,i=t.getContainerElement,r=t.scrollBy;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.screen=n,this.getContainerElement=i,this.scrollBy=r}var t,n,i;return t=e,(n=[{key:"captureScroll",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;if(0!==t.length&&0!==i){var r=this.getContainerElement(),o=this.screen.getChildElementTopOffset(r,0);this.restoreScrollAfterRenderValues&&this.restoreScrollAfterRenderValues.previousItems===t&&this.restoreScrollAfterRenderValues.newItems===n||(this.restoreScrollAfterRenderValues={previousItems:t,newItems:n,index:i,visibleAreaTop:o})}}},{key:"getAnchorItemIndex",value:function(){return this.restoreScrollAfterRenderValues.index}},{key:"shouldRestoreScrollAfterRender",value:function(){return void 0!==this.restoreScrollAfterRenderValues}},{key:"getScrollDifference",value:function(){var e=this.restoreScrollAfterRenderValues,t=e.index,n=e.visibleAreaTop;return this.restoreScrollAfterRenderValues=void 0,this.screen.getChildElementTopOffset(this.getContainerElement(),t)-n}}])&&X(t.prototype,n),i&&X(t,i),e}();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)}}var te=function(){function e(t,n,i,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.screen=t,this.getContainerElement=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:"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){var n=this.getContainerElement();if(n){var i=e-t;if(i>=0&&i<this.screen.getChildElementsCount(n))return this.screen.getChildElementHeight(n,i)}}},{key:"measureItemHeights",value:function(e,t){if(void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(E("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),E("Item",s,"hasn't been previously measured");var a=this._measureItemHeight(s,e);E("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&&B("Item",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)}}])&&ee(t.prototype,n),i&&ee(t,i),e}();function ne(e){return(ne="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})(e)}var ie=Object.prototype.hasOwnProperty;function re(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function oe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},i=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),i.forEach(function(t){ae(e,t,n[t])})}return e}function se(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 ae(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var le=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),ae(this,"getListTopOffsetInsideScrollableContainer",function(){var e=i.scrollableContainer.getTopOffset(i.getContainerElement());return i.waitForStylesToLoad.onGotListTopOffset(e),e}),ae(this,"willUpdateState",function(e,t){}),ae(this,"didUpdateState",function(e){var t=i.getState();if(i.onStateChange&&(function(e,t){if(re(e,t))return!0;if("object"!==ne(e)||null===e||"object"!==ne(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(!ie.call(t,n[r])||!re(e[n[r]],t[n[r]]))return!1;return!0}(t,e)||i.onStateChange(t,e)),e&&i.isRendered){E("~ Rendered ~"),i.newItemsPending=void 0,i.layoutResetPending=void 0;var n=i.redoLayoutReason;i.redoLayoutReason=void 0;var r=e.items,o=t.items;if(o!==r){var s=!0,a=i.getItemsDiff(r,o);if(a){var l=a.prependedItemsCount;a.appendedItemsCount;if(l>0&&(i.itemHeights.onPrepend(l),i.restoreScroll.shouldRestoreScrollAfterRender())){s=!1,E("~ Restore Scroll Position ~");var u=i.restoreScroll.getScrollDifference();u?(E("Scroll down by",u),i.scroll.scrollByY(u)):E("Scroll position hasn't changed")}}else i.itemHeights.reset(),i.itemHeights.initialize(i.getState().itemHeights);s&&(n=N.ITEMS_CHANGED)}return t.firstShownItemIndex===e.firstShownItemIndex&&t.lastShownItemIndex===e.lastShownItemIndex&&t.items===e.items||i.onRenderedNewLayout(),n?i.redoLayoutRightAfterRender({reason:n}):void 0}}),ae(this,"updateShownItemIndexes",function(){E("~ Layout results "+(i.bypass?"(bypass) ":"")+"~");var e=i.getVisibleAreaBoundsIncludingMargins();i.latestLayoutVisibleAreaIncludingMargins=e;var t=i.getListTopOffsetInsideScrollableContainer(),n=i.layout.getShownItemIndexes({listHeight:i.screen.getElementHeight(i.getContainerElement()),itemsCount:i.getItemsCount(),visibleAreaIncludingMargins:e,listTopOffsetInsideScrollableContainer:t}),r=n.firstShownItemIndex,o=n.lastShownItemIndex,s=n.redoLayoutAfterMeasuringItemHeights;if(i.restoreScroll.shouldRestoreScrollAfterRender()&&(o<i.restoreScroll.getAnchorItemIndex()&&(o=i.restoreScroll.getAnchorItemIndex()),s=!1),!i.validateWillBeHiddenItemHeightsAreAccurate(r,o))return E("~ Some of the will-be-hidden item heights have changed since they've last been measured. Redo layout. ~"),i.updateShownItemIndexes();var a=i.layout.getBeforeItemsHeight(r,o),l=i.layout.getAfterItemsHeight(r,o,i.getItemsCount());i._getColumnsCount&&E("Columns count",i.getColumnsCount()),E("First shown item index",r),E("Last shown item index",o),E("Before items height",a),E("After items height (actual or estimated)",l),E("Average item height (calculated on previous render)",i.itemHeights.getAverage()),_()&&(E("Item heights",i.getState().itemHeights.slice()),E("Item states",i.getState().itemStates.slice())),s&&(i.redoLayoutReason=N.ITEM_HEIGHT_NOT_MEASURED),i.onBeforeShowItems(i.getState().items,i.getState().itemHeights,r,o),i.setState({firstShownItemIndex:r,lastShownItemIndex:o,beforeItemsHeight:a,afterItemsHeight:l})}),ae(this,"onUpdateShownItemIndexes",function(e){var t=e.reason;0!==i.getItemsCount()&&(i.scroll.onLayout(),i.layoutTimer&&(I(i.layoutTimer),i.layoutTimer=void 0),E("~ Calculate Layout (on ".concat(t,") ~")),i.updateShownItemIndexes())}),ae(this,"updateLayout",function(){return i.onUpdateShownItemIndexes({reason:N.MANUAL})}),ae(this,"layout",function(){return i.updateLayout()});var o=r.getState,s=r.setState,a=r.onStateChange,l=r.customState,u=r.preserveScrollPositionAtBottomOnMount,h=r.preserveScrollPositionOfTheBottomOfTheListOnMount,c=r.initialScrollPosition,m=r.onScrollPositionChange,f=r.measureItemsBatchSize,d=r.getScrollableContainer,g=r.getColumnsCount,p=r.getItemId,y=r.tbody,S=r._useTimeoutInRenderLoop,b=r.bypass,w=r.estimatedItemHeight,C=r.onItemInitialRender,O=r.onItemFirstRender,T=r.scrollableContainer,H=r.state,x=r.renderingEngine;if(E("~ Initialize ~"),H&&(n=H.items),!T&&d&&(T=d()),x||(x=A),this.screen=x.createScreen(),this.scrollableContainer=x.createScrollableContainer(T),y){if("DOM"!==x.name)throw new Error("`tbody` option is only supported for DOM rendering engine");E("~ <tbody/> detected ~"),this.tbody=!0,"undefined"!=typeof window&&window.document.documentMode&&(E("~ <tbody/> not supported ~"),V(v),b=!0)}b&&E('~ "bypass" mode ~'),this.bypass=b,this._useTimeoutInRenderLoop=S,this.isItemEqual=p?function(e,t){return p(e)===p(t)}:function(e,t){return e===t},this.initialItems=n,this.onStateChange=a,this._getColumnsCount=g,C?this.onItemInitialRender=C:O&&(this.onItemInitialRender=function(e){B("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=i.getState().items.indexOf(e);t>=0&&O(t)}),E("Items count",n.length),w&&E("Estimated item height",w),s?(this.getState=o,this.setState=function(e){E("Set state",e),s(e,{willUpdateState:i.willUpdateState,didUpdateState:i.didUpdateState})}):(this.getState=function(){return i.state},this.setState=function(e){E("Set state",e);var t=i.getState(),n=oe({},t,e);i.willUpdateState(n,t),i.state=n,i.didUpdateState(t)}),H&&E("Initial state (passed)",H),this.getContainerElement=t,t()&&this.screen.clearElement(t()),this.itemHeights=new te(this.screen,this.getContainerElement,function(e){return i.getState().itemHeights[e]},function(e,t){return i.getState().itemHeights[e]=t}),H&&this.itemHeights.initialize(H.itemHeights),this.layout=new j({bypass:b,estimatedItemHeight:w,measureItemsBatchSize:void 0===f?50:f,getVerticalSpacing:function(){return i.getVerticalSpacing()},getColumnsCount:function(){return i.getColumnsCount()},getItemHeight:function(e){return i.getState().itemHeights[e]},getAverageItemHeight:function(){return i.itemHeights.getAverage()}}),this.resize=new W({bypass:b,scrollableContainer:this.scrollableContainer,getContainerElement:this.getContainerElement,updateLayout:function(e){var t=e.reason;return i.onUpdateShownItemIndexes({reason:t})},resetStateAndLayout:function(){E("~ Scrollable container size changed, re-measure item heights. ~"),i.redoLayoutReason=N.RESIZE,i.layoutResetPending=!0,E("Reset state"),i.setState(i.getInitialLayoutState(i.newItemsPending||i.getState().items))}}),u&&B("`preserveScrollPositionAtBottomOnMount` option/property has been renamed to `preserveScrollPositionOfTheBottomOfTheListOnMount`"),this.preserveScrollPositionOfTheBottomOfTheListOnMount=h||u,this.scroll=new Z({bypass:this.bypass,scrollableContainer:this.scrollableContainer,updateLayout:function(e){var t=e.reason;return i.onUpdateShownItemIndexes({reason:t})},initialScrollPosition:c,onScrollPositionChange:m,isImmediateLayoutScheduled:function(){return i.layoutTimer},hasNonRenderedItemsAtTheTop:function(){return i.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return i.getState().lastShownItemIndex<i.getItemsCount()-1},getLatestLayoutVisibleAreaIncludingMargins:function(){return i.latestLayoutVisibleAreaIncludingMargins},preserveScrollPositionOfTheBottomOfTheListOnMount:this.preserveScrollPositionOfTheBottomOfTheListOnMount}),this.restoreScroll=new $({screen:this.screen,getContainerElement:this.getContainerElement}),this.waitForStylesToLoad=new D({updateLayout:function(e){var t=e.reason;return i.onUpdateShownItemIndexes({reason:t})},getListTopOffsetInsideScrollableContainer:this.getListTopOffsetInsideScrollableContainer}),this.setState(H||this.getInitialState(l))}var t,n,i;return t=e,(n=[{key:"getInitialState",value:function(e){var t=this.initialItems,n=oe({},e,this.getInitialLayoutState(t),{items:t,itemStates:new Array(t.length)});return E("Initial state (autogenerated)",n),E("First shown item index",n.firstShownItemIndex),E("Last shown item index",n.lastShownItemIndex),n}},{key:"getInitialLayoutValues",value:function(e){var t=e.itemsCount,n=e.bypass;return this.layout.getInitialLayoutValues({bypass:n,itemsCount:t,visibleAreaHeightIncludingMargins:this.scrollableContainer&&2*this.getMargin()+this.scrollableContainer.getHeight()})}},{key:"getInitialLayoutState",value:function(e){var t=e.length,n=this.getInitialLayoutValues({itemsCount:t,bypass:this.preserveScrollPositionOfTheBottomOfTheListOnMount}),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._getColumnsCount?this._getColumnsCount(this.scrollableContainer):void 0,verticalSpacing:void 0,firstShownItemIndex:i,lastShownItemIndex:r,beforeItemsHeight:o,afterItemsHeight:s}}},{key:"getVerticalSpacing",value:function(){return this.getState()&&this.getState().verticalSpacing||0}},{key:"getColumnsCount",value:function(){return this.getState()&&this.getState().columnsCount||1}},{key:"getItemsCount",value:function(){return this.getState().items.length}},{key:"getMargin",value:function(){return 1*this.scrollableContainer.getHeight()}},{key:"onBeforeShowItems",value:function(e,t,n,i){if(this.onItemInitialRender)for(var r=n;r<=i;)void 0===t[r]&&this.onItemInitialRender(e[r]),r++}},{key:"onMount",value:function(){B("`.onMount()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"render",value:function(){B("`.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");E("~ Rendered (initial) ~"),this.isRendered=!0,this.onRenderedNewLayout(),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.getContainerElement()),this.preserveScrollPositionOfTheBottomOfTheListOnMount||this.onUpdateShownItemIndexes({reason:N.MOUNT})}},{key:"onRenderedNewLayout",value:function(){var e,t,n;this.measureVerticalSpacing(),this.itemHeights.measureItemHeights(this.getState().firstShownItemIndex,this.getState().lastShownItemIndex),this.tbody&&(e=this.getContainerElement(),t=this.getState().beforeItemsHeight,n=this.getState().afterItemsHeight,e.style.setProperty("--VirtualScroller-paddingTop",y(t)),e.style.setProperty("--VirtualScroller-paddingBottom",y(n)))}},{key:"getVisibleAreaBoundsIncludingMargins",value:function(){var e=this.scroll.getVisibleAreaBounds();return e.top-=this.getMargin(),e.bottom+=this.getMargin(),e}},{key:"onUnmount",value:function(){B("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"destroy",value:function(){B("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"stop",value:function(){this.isRendered=!1,this.resize.stop(),this.scroll.stop(),this.waitForStylesToLoad.stop(),this.layoutTimer&&(I(this.layoutTimer),this.layoutTimer=void 0)}},{key:"redoLayoutRightAfterRender",value:function(e){var t=this,n=e.reason;this._useTimeoutInRenderLoop?(this.layoutTimer&&I(this.layoutTimer),this.layoutTimer=p(function(){t.layoutTimer=void 0,t.onUpdateShownItemIndexes({reason:n})},0)):this.onUpdateShownItemIndexes({reason:n})}},{key:"measureVerticalSpacing",value:function(){if(void 0===this.getState().verticalSpacing){E("~ Measure item vertical spacing ~");var e=function(e){var t=e.container,n=e.screen;if(n.getChildElementsCount(t)>1)for(var i=n.getChildElementTopOffset(t,0),r=n.getChildElementHeight(t,0),o=1;o<n.getChildElementsCount(t);){var s=n.getChildElementTopOffset(t,o),a=n.getChildElementHeight(t,o);if(s!==i)return s-(i+r);r=Math.max(r,a),o++}}({container:this.getContainerElement(),screen:this.screen});void 0===e?E("Not enough items rendered to measure vertical spacing"):(E("Item vertical spacing",e),this.setState({verticalSpacing:e}))}}},{key:"remeasureItemHeight",value:function(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}},{key:"onItemStateChange",value:function(e,t){_()&&(E("~ Item state changed ~"),E("Item",e),E("Previous state\n"+JSON.stringify(this.getState().itemStates[e],null,2)),E("New state\n"+JSON.stringify(t,null,2))),this.getState().itemStates[e]=t}},{key:"onItemHeightChange",value:function(e){E("~ Re-measure item height ~"),E("Item",e);var t=this.getState().itemHeights[e];if(void 0===t)return V('"onItemHeightChange()" has been called for item '.concat(e,", but that item hasn't been rendered before."));var n=this.remeasureItemHeight(e);if(void 0===n)return B("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.");E("Previous height",t),E("New height",n),t!==n&&(E("~ Item height has changed ~"),this.onUpdateShownItemIndexes({reason:N.ITEM_HEIGHT_CHANGED}))}},{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 r=this.getState().itemHeights[i],o=this.remeasureItemHeight(i);o!==r&&(n=!1,B("Item",i,"will be unmounted at next render. Its height has changed from",r,"to",o,"since it was last measured. This is not necessarily a bug, and could happen, for example, 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:"updateItems",value:function(e,t){return this.setItems(e,t)}},{key:"setItems",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.getState().items,r=this.getState(),o=r.itemStates,s=r.itemHeights;E("~ Update items ~");var a=this.getItemsDiff(i,e);if(a&&!this.layoutResetPending){var l=this.getState();t={firstShownItemIndex:l.firstShownItemIndex,lastShownItemIndex:l.lastShownItemIndex,beforeItemsHeight:l.beforeItemsHeight,afterItemsHeight:l.afterItemsHeight};var u=a.prependedItemsCount,h=a.appendedItemsCount;u>0&&(E("Prepend",u,"items"),s=new Array(u).concat(s),o&&(o=new Array(u).concat(o))),h>0&&(E("Append",h,"items"),s=s.concat(new Array(h)),o&&(o=o.concat(new Array(h)))),this.layout.updateLayoutForItemsDiff(t,a,{itemsCount:e.length}),u>0&&(n.preserveScrollPositionOnPrependItems||n.preserveScrollPosition)&&0===this.getState().firstShownItemIndex&&(this.restoreScroll.captureScroll({previousItems:i,newItems:e,prependedItemsCount:u}),this.layout.showItemsFromTheStart(t))}else E("Items have changed, and",a?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),E("Previous items",i),E("New items",e),s=new Array(e.length),o=new Array(e.length),t=this.getInitialLayoutValues({itemsCount:e.length});E("~ Update state ~"),E("First shown item index",t.firstShownItemIndex),E("Last shown item index",t.lastShownItemIndex),E("Before items height",t.beforeItemsHeight),E("After items height (actual or estimated)",t.afterItemsHeight),this.onBeforeShowItems(e,s,t.firstShownItemIndex,t.lastShownItemIndex),this.newItemsPending=e,this.setState(oe({},t,{items:e,itemStates:o,itemHeights:s}))}},{key:"getItemsDiff",value:function(e,t){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))>=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)}}(e,t,this.isItemEqual)}}])&&se(t.prototype,n),i&&se(t,i),e}();function ue(){return(ue=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}).apply(this,arguments)}function he(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 ce(e){return(ce="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})(e)}function me(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 fe(e){return(fe=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function de(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ge(e,t){return(ge=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function pe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ie=t.elementType||t.oneOfType([t.string,t.func,t.object]),ye=function(t){function n(t){var i,r,o;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),r=this,o=fe(n).call(this,t),i=!o||"object"!==ce(o)&&"function"!=typeof o?de(r):o,pe(de(i),"container",e.createRef()),pe(de(i),"onItemStateChange",new Array(i.props.items.length)),pe(de(i),"onItemHeightChange",new Array(i.props.items.length)),pe(de(i),"itemRefs",new Array(i.props.items.length)),pe(de(i),"itemKeyPrefixes",[]),pe(de(i),"updateLayout",function(){return i.virtualScroller.updateLayout()}),pe(de(i),"layout",function(){return i.updateLayout()}),pe(de(i),"onItemInitialRender",function(){var e=i.props.onItemInitialRender;e&&e.apply(void 0,arguments)}),pe(de(i),"onItemFirstRender",function(){var e=i.props.onItemFirstRender;e&&e.apply(void 0,arguments)}),i.previousItemsProperty=t.items,i.generateItemKeyPrefix(),i.createVirtualScroller(),i}var i,r,o;return 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&&ge(e,t)}(n,e.Component),i=n,(r=[{key:"createVirtualScroller",value:function(){var e=this,t=this.props,n=t.as,i=t.items,r=t.initialState,o=t.initialCustomState,s=t.onStateChange,a=t.estimatedItemHeight,l=t.preserveScrollPositionOfTheBottomOfTheListOnMount,u=t.preserveScrollPositionAtBottomOnMount,h=t.initialScrollPosition,c=t.onScrollPositionChange,m=t.measureItemsBatchSize,f=t.scrollableContainer,d=t.getScrollableContainer,g=t.getColumnsCount,p=t.getItemId,I=t.bypass;this.virtualScroller=new le(function(){return e.container.current},i,{_useTimeoutInRenderLoop:!0,estimatedItemHeight:a,bypass:I,onItemInitialRender:this.onItemInitialRender,onItemFirstRender:this.onItemFirstRender,preserveScrollPositionOfTheBottomOfTheListOnMount:l,preserveScrollPositionAtBottomOnMount:u,initialScrollPosition:h,onScrollPositionChange:c,shouldUpdateLayoutOnScreenResize:this.shouldUpdateLayoutOnScreenResize,measureItemsBatchSize:m,scrollableContainer:f,getScrollableContainer:d,getColumnsCount:g,getItemId:p,tbody:"tbody"===n,state:r,customState:o,onStateChange:s,getState:function(){return e.state},setState:function(t,n){var i=n.willUpdateState,r=n.didUpdateState;e.willUpdateState=i,e.didUpdateState=r,e.state?e.setState(t):(i(t),e.state=t,r())}})}},{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 V("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"===ce(e)&&null!==e){var t=this.props,n=t.items,i=t.getItemId,r=e;for(e=0;e<n.length;){if(i){if(i(r)===i(n[e]))return e}else if(r===n[e])return e;e++}}}},{key:"getItemRef",value:function(t){return this.itemRefs[t]||(this.itemRefs[t]=e.createRef()),this.itemRefs[t]}},{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,r=n.preserveScrollPosition,o=n.preserveScrollPositionOnPrependItems;i!==e.items&&this.virtualScroller.setItems(i,{preserveScrollPositionOnPrependItems:o||r})}},{key:"componentWillUnmount",value:function(){this._isMounted=!1,this.virtualScroller.stop()}},{key:"render",value:function(){var t=this,n=this.props,i=n.as,r=n.itemComponent,o=n.itemComponentProps,s=(n.items,n.estimatedItemHeight,n.bypass,n.preserveScrollPositionOnPrependItems),a=n.preserveScrollPosition,l=(n.preserveScrollPositionOfTheBottomOfTheListOnMount,n.preserveScrollPositionAtBottomOnMount,n.initialScrollPosition,n.onScrollPositionChange,n.measureItemsBatchSize,n.scrollableContainer,n.getScrollableContainer,n.getColumnsCount,n.initialState,n.initialCustomState,n.onStateChange,n.onItemInitialRender,n.onItemFirstRender,n.getItemId),u=(n.onMount,n.className),h=he(n,["as","itemComponent","itemComponentProps","items","estimatedItemHeight","bypass","preserveScrollPositionOnPrependItems","preserveScrollPosition","preserveScrollPositionOfTheBottomOfTheListOnMount","preserveScrollPositionAtBottomOnMount","initialScrollPosition","onScrollPositionChange","measureItemsBatchSize","scrollableContainer","getScrollableContainer","getColumnsCount","initialState","initialCustomState","onStateChange","onItemInitialRender","onItemFirstRender","getItemId","onMount","className"]),c=this.virtualScroller.getState(),m=c.items,f=c.itemStates,d=c.firstShownItemIndex,g=c.lastShownItemIndex,p=c.beforeItemsHeight,I=c.afterItemsHeight,v=this.props.items,S=m;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 w=b.prependedItemsCount;w>0&&(s||a)&&0===d&&this.virtualScroller.restoreScroll.captureScroll({previousItems:S,newItems:v,prependedItemsCount:w})}l||this.generateItemKeyPrefix(),this.itemRefs=new Array(v.length)}}var C=this.virtualScroller.tbody;return e.createElement(i,ue({},h,{ref:this.container,className:C?u?u+" VirtualScroller":"VirtualScroller":u,style:{paddingTop:C?void 0:y(p),paddingBottom:C?void 0:y(I)}}),m.map(function(n,i){return i>=d&&i<=g?e.createElement(r,ue({},o,{key:t.getItemKey(n,i),ref:t.shouldUseRefs()?t.getItemRef(i):void 0,state:f&&f[i],onStateChange:t.getOnItemStateChange(i),onHeightChange:t.getOnItemHeightChange(i)}),n):null}))}}])&&me(i.prototype,r),o&&me(i,o),n}();return pe(ye,"propTypes",{as:Ie,items:t.arrayOf(t.object).isRequired,itemComponent:Ie.isRequired,itemComponentProps:t.object,estimatedItemHeight:t.number,bypass:t.bool,preserveScrollPositionOnPrependItems:t.bool,preserveScrollPosition:t.bool,preserveScrollPositionOfTheBottomOfTheListOnMount:t.bool,preserveScrollPositionAtBottomOnMount:t.bool,measureItemsBatchSize:t.number,scrollableContainer:t.any,getScrollableContainer:t.func,getColumnsCount:t.func,getItemId:t.func,className:t.string,onMount:t.func,onItemInitialRender:t.func,onItemFirstRender:t.func,initialScrollPosition:t.number,onScrollPositionChange:t.func,onStateChange:t.func,initialCustomState:t.object,initialState:t.shape({items:t.arrayOf(t.object).isRequired,itemStates:t.arrayOf(t.any),firstShownItemIndex:t.number.isRequired,lastShownItemIndex:t.number.isRequired,beforeItemsHeight:t.number.isRequired,afterItemsHeight:t.number.isRequired,itemHeights:t.arrayOf(t.number).isRequired,columnsCount:t.number,verticalSpacing:t.number})}),pe(ye,"defaultProps",{as:"div"}),ye});
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}));
2
2
  //# sourceMappingURL=virtual-scroller-react.js.map