virtual-scroller 1.10.2 → 1.11.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.
- package/CHANGELOG.md +16 -0
- package/README.md +48 -24
- package/bundle/virtual-scroller-dom.js +1 -1
- package/bundle/virtual-scroller-dom.js.map +1 -1
- package/bundle/virtual-scroller-react.js +1 -1
- package/bundle/virtual-scroller-react.js.map +1 -1
- package/bundle/virtual-scroller.js +1 -1
- package/bundle/virtual-scroller.js.map +1 -1
- package/commonjs/DOM/VirtualScroller.js +5 -0
- package/commonjs/DOM/VirtualScroller.js.map +1 -1
- package/commonjs/ItemHeights.js +1 -1
- package/commonjs/ItemHeights.js.map +1 -1
- package/commonjs/VirtualScroller.constructor.js +3 -0
- package/commonjs/VirtualScroller.constructor.js.map +1 -1
- package/commonjs/VirtualScroller.items.js +11 -10
- package/commonjs/VirtualScroller.items.js.map +1 -1
- package/commonjs/VirtualScroller.js +10 -3
- package/commonjs/VirtualScroller.js.map +1 -1
- package/commonjs/VirtualScroller.layout.js +2 -2
- package/commonjs/VirtualScroller.layout.js.map +1 -1
- package/commonjs/VirtualScroller.state.js +23 -13
- package/commonjs/VirtualScroller.state.js.map +1 -1
- package/commonjs/react/VirtualScroller.js +26 -11
- package/commonjs/react/VirtualScroller.js.map +1 -1
- package/commonjs/react/{useOnItemStateChange.js → useSetItemState.js} +7 -7
- package/commonjs/react/useSetItemState.js.map +1 -0
- package/commonjs/react/useVirtualScroller.js +2 -1
- package/commonjs/react/useVirtualScroller.js.map +1 -1
- package/commonjs/utility/fillArray.js +18 -0
- package/commonjs/utility/fillArray.js.map +1 -0
- package/dom/index.d.ts +7 -6
- package/index.d.ts +16 -15
- package/modules/DOM/VirtualScroller.js +5 -0
- package/modules/DOM/VirtualScroller.js.map +1 -1
- package/modules/ItemHeights.js +1 -1
- package/modules/ItemHeights.js.map +1 -1
- package/modules/VirtualScroller.constructor.js +3 -0
- package/modules/VirtualScroller.constructor.js.map +1 -1
- package/modules/VirtualScroller.items.js +10 -10
- package/modules/VirtualScroller.items.js.map +1 -1
- package/modules/VirtualScroller.js +10 -3
- package/modules/VirtualScroller.js.map +1 -1
- package/modules/VirtualScroller.layout.js +2 -2
- package/modules/VirtualScroller.layout.js.map +1 -1
- package/modules/VirtualScroller.state.js +20 -11
- package/modules/VirtualScroller.state.js.map +1 -1
- package/modules/react/VirtualScroller.js +26 -11
- package/modules/react/VirtualScroller.js.map +1 -1
- package/modules/react/{useOnItemStateChange.js → useSetItemState.js} +6 -6
- package/modules/react/useSetItemState.js.map +1 -0
- package/modules/react/useVirtualScroller.js +2 -1
- package/modules/react/useVirtualScroller.js.map +1 -1
- package/modules/utility/fillArray.js +11 -0
- package/modules/utility/fillArray.js.map +1 -0
- package/package.json +1 -1
- package/react/index.d.ts +14 -8
- package/source/DOM/VirtualScroller.js +4 -0
- package/source/ItemHeights.js +1 -1
- package/source/VirtualScroller.constructor.js +2 -1
- package/source/VirtualScroller.items.js +16 -8
- package/source/VirtualScroller.js +8 -2
- package/source/VirtualScroller.layout.js +2 -2
- package/source/VirtualScroller.state.js +15 -7
- package/source/react/VirtualScroller.js +25 -10
- package/source/react/{useOnItemStateChange.js → useSetItemState.js} +5 -5
- package/source/react/useVirtualScroller.js +2 -0
- package/source/utility/fillArray.js +8 -0
- package/commonjs/react/useOnItemStateChange.js.map +0 -1
- package/modules/react/useOnItemStateChange.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VirtualScroller=t(e.React,e.PropTypes)}(this,(function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),r=n(t);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var i,r,o=[],s=!0,a=!1;try{for(n=n.call(e);!(s=(i=n.next()).done)&&(o.push(i.value),!t||o.length!==t);s=!0);}catch(e){a=!0,r=e}finally{try{s||null==n.return||n.return()}finally{if(a)throw r}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function c(e){return(e%1==0?e:e.toFixed(2))+"px"}var h="It looks like you're using Internet Explorer which doesn't support CSS variables required for a <tbody/> container. VirtualScroller has been switched into \"bypass\" mode (render all items). See: https://gitlab.com/catamphetamine/virtual-scroller/-/issues/1";function f(){return"undefined"==typeof window||!window.document.documentMode}var m="VirtualScroller",d="VirtualScrollerStyle";function g(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var p=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getElement=t}var t,n,i;return t=e,(n=[{key:"getNthRenderedItemTopOffset",value:function(e){return this.getElement().childNodes[e].getBoundingClientRect().top-this.getElement().getBoundingClientRect().top}},{key:"getNthRenderedItemHeight",value:function(e){return this.getElement().childNodes[e].getBoundingClientRect().height}},{key:"getHeight",value:function(){return this.getElement().getBoundingClientRect().height}},{key:"clear",value:function(){for(;this.getElement().firstChild;)this.getElement().removeChild(this.getElement().firstChild)}}])&&g(t.prototype,n),i&&g(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function I(e){return I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},I(e)}function v(e,t){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 b(e,t){if(t&&("object"===I(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function y(e){var t="function"==typeof Map?new Map:void 0;return y=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return S(e,arguments,O(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),C(i,e)},y(e)}function S(e,t,n){return S=w()?Reflect.construct:function(e,t,n){var i=[null];i.push.apply(i,t);var r=new(Function.bind.apply(e,i));return n&&C(r,n.prototype),r},S.apply(null,arguments)}function w(){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}}function C(e,t){return C=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},C(e,t)}function O(e){return O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},O(e)}var R=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&C(e,t)}(a,e);var t,n,i,r,o,s=(t=a,n=w(),function(){var e,i=O(t);if(n){var r=O(this).constructor;e=Reflect.construct(i,arguments,r)}else e=i.apply(this,arguments);return b(this,e)});function a(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),s.call(this,"[virtual-scroller] Scrollable container not found")}return i=a,r&&v(i.prototype,r),o&&v(i,o),Object.defineProperty(i,"prototype",{writable:!1}),i}(y(Error));function H(e){return H="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},H(e)}function x(e,t){return x=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},x(e,t)}function P(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=j(e);if(t){var r=j(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return T(this,n)}}function T(e,t){if(t&&("object"===H(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 j(e){return j=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},j(e)}function E(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function L(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 z(e,t,n){return t&&L(e.prototype,t),n&&L(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var B=function(){function e(t,n){E(this,e),this.getElement=t,this.getItemsContainerElement=n}return z(e,[{key:"getScrollY",value:function(){return this.getElement().scrollTop}},{key:"scrollToY",value:function(e){this.getElement().scrollTo?this.getElement().scrollTo(0,e):this.getElement().scrollTop=e}},{key:"getWidth",value:function(){if(!this.getElement())throw new R;return this.getElement().offsetWidth}},{key:"getHeight",value:function(){if(!this.getElement())throw new R;return this.getElement().offsetHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=this.getElement().getBoundingClientRect().top,t=this.getElement().clientTop;return this.getItemsContainerElement().getBoundingClientRect().top-e+this.getScrollY()-t}},{key:"onScroll",value:function(e){var t=this.getElement();return t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e){var t;if("undefined"!=typeof ResizeObserver){var n=new ResizeObserver((function(t){t[0],e()})),i=this.getElement();n.observe(i),t=function(){return n.unobserve(i)}}var r=M(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),r()}}}]),e}(),A=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&x(e,t)}(n,e);var t=P(n);function n(e){return E(this,n),t.call(this,(function(){return window}),e)}return z(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}(B);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)}}var k="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var _=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){(function(){var t,n,i,r,o,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-o)/1e6},n=process.hrtime,r=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),o=r-s):Date.now?(e.exports=function(){return Date.now()-i},i=Date.now()):(e.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(k)})),N="undefined"==typeof window?k:window,V=["moz","webkit"],W="AnimationFrame",D=N["request"+W],F=N["cancel"+W]||N["cancelRequest"+W],U=0;!D&&U<V.length;U++)D=N[V[U]+"Request"+W],F=N[V[U]+"Cancel"+W]||N[V[U]+"CancelRequest"+W];if(!D||!F){var Y=0,q=0,K=[];D=function(e){if(0===K.length){var t=_(),n=Math.max(0,16.666666666666668-(t-Y));Y=n+t,setTimeout((function(){var e=K.slice(0);K.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(Y)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return K.push({handle:++q,callback:e,cancelled:!1}),q},F=function(e){for(var t=0;t<K.length;t++)K[t].handle===e&&(K[t].cancelled=!0)}}var G=function(e){return D.call(N,e)};G.cancel=function(){F.apply(N,arguments)},G.polyfill=function(e){e||(e=N),e.requestAnimationFrame=D,e.cancelAnimationFrame=F};var J=G.cancel;function $(e,t){var n=Date.now(),i=G((function r(){Date.now()-n>=t?e():i=G(r)}));return{clear:function(){return J(i)}}}function X(e){e&&e.clear()}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 Z=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this._isActive=!0,this.watchListTopOffset()}},{key:"isStarted",value:function(){return this._isActive}},{key:"stop",value:function(){this._isActive=!1,this.watchListTopOffsetTimer&&(X(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e._isActive&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=$(n,500)))}()}}])&&Q(t.prototype,n),i&&Q(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),ee={createItemsContainer:function(e){return new p(e)},createScrollableContainer:function(e,t){return e?new B(e,t):"undefined"!=typeof window?new A(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new Z({getListTopOffset:t,onListTopOffsetChange:n})}};function te(e){return function(e){if(Array.isArray(e))return ne(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 ne(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 ne(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 ne(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 ie(){if(se()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,te(["[virtual-scroller]"].concat(n)))}}function re(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(ae())return oe.apply(this,n);(e=console).warn.apply(e,te(["[virtual-scroller]"].concat(n)))}function oe(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(ie.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))}),0)):(i=console).error.apply(i,te(["[virtual-scroller]"].concat(t)))}function se(){var e=le("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function ae(){return le("VirtualScrollerWarningsAreErrors")}function le(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function ue(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 ce(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ue(Object(n),!0).forEach((function(t){he(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ue(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function he(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function fe(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 me=function(){function e(t){var n=t.bypass,i=t.getInitialEstimatedItemHeight,r=t.getInitialEstimatedVisibleItemRowsCount,o=t.measureItemsBatchSize,s=t.getPrerenderMargin,a=t.getVerticalSpacing,l=t.getVerticalSpacingBeforeResize,u=t.getColumnsCount,c=t.getColumnsCountBeforeResize,h=t.getItemHeight,f=t.getItemHeightBeforeResize,m=t.getBeforeResizeItemsCount,d=t.getAverageItemHeight,g=t.getMaxVisibleAreaHeight,p=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.getInitialEstimatedItemHeight=i,this.getInitialEstimatedVisibleItemRowsCount=r,this.measureItemsBatchSize=o,this.getPrerenderMargin=s,this.getVerticalSpacing=a,this.getVerticalSpacingBeforeResize=l,this.getColumnsCount=u,this.getColumnsCountBeforeResize=c,this.getItemHeight=h,this.getItemHeightBeforeResize=f,this.getBeforeResizeItemsCount=m,this.getAverageItemHeight=d,this.getMaxVisibleAreaHeight=g,this.getPreviouslyCalculatedLayout=p}var t,n,i;return t=e,n=[{key:"getInitialLayoutValueWithFallback",value:function(e,t,n){try{return t()}catch(t){if(t instanceof R)return ie("Couldn't calculate",e,"before scrollable container is ready. Default to",n),n;throw t}}},{key:"getInitialLayoutValues",value:function(e){var t,n,i=this,r=e.itemsCount,o=e.columnsCount,s=e.beforeStart;if(r>0){var a=function(){return i.getInitialLastShownItemIndex({itemsCount:r,columnsCount:o,firstShownItemIndex:t})};t=0,n=s?this.getInitialLayoutValueWithFallback("lastShownItemIndex",a,0):a()}return{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var r=1;if(this.getMaxVisibleAreaHeight())r=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin());else if(this.getInitialEstimatedVisibleItemRowsCount&&(r=this.getInitialEstimatedVisibleItemRowsCount(),isNaN(r)))throw new Error("[virtual-scroller] `getEstimatedVisibleItemRowsCount()` must return a number");return Math.min(i+(r*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){var e=this.getAverageItemHeight();if(e)return e;if(this.getInitialEstimatedItemHeight){var t=this.getInitialEstimatedItemHeight();if(isNaN(t))throw new Error("[virtual-scroller] `getInitialEstimatedItemHeight()` must return a number");return t}return 0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,r=e.lastShownItemIndex,o=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,u=n.itemsCount,c=n.columnsCount,h=n.shouldRestoreScrollPosition,f=n.onResetGridLayout,m=this.getAverageItemHeight(),d=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/c)*(d+m)),a>0&&(i+=a,r+=a,o+=Math.ceil(a/c)*(m+d),h&&(i=0,o=0),a%c>0)){f(),re("~ Prepended items count",a,"is not divisible by Columns Count",c,"~"),re("Layout reset required");var g=r-i+1;if(i=0,o=0,!h&&a>g){var p=u-((r=this.getInitialLastShownItemIndex({itemsCount:u,columnsCount:c,firstShownItemIndex:i}))+1);s=Math.ceil(p/c)*(d+m)}}return{beforeItemsHeight:o,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:r}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,r=t.nonMeasuredAreaHeight,o=t.indexOfTheFirstItemInTheRow;ie("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(r)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=o),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(o+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaTop,i=e.visibleAreaBottom,r=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaTop:n,visibleAreaBottom:i,findFirstShownItemIndex:!0});if(null===r)return this.getNonVisibleListShownItemIndexes();if(void 0!==r.firstNonMeasuredItemIndex)return r;var o=r,s=o.firstShownItemIndex,a=o.beforeItemsHeight;return null===(r=this._getShownItemIndex({itemsCount:t,fromIndex:s,beforeItemsHeight:a,visibleAreaTop:n,visibleAreaBottom:i,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==r.firstNonMeasuredItemIndex?r:{firstShownItemIndex:s,lastShownItemIndex:r.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaTop,r=e.visibleAreaBottom,o=e.findFirstShownItemIndex,s=e.findLastShownItemIndex,a=e.fromIndex,l=e.beforeItemsHeight;if(0===a&&(l=0),void 0===l)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+a);if(!t){var u=this.getBeforeResizeItemsCount();if(u>a){var c=this._getShownItemIndex(ce(ce({},e),{},{beforeResize:!0,itemsCount:u})),h=c.notFound,f=c.beforeItemsHeight,m=c.firstShownItemIndex,d=c.lastShownItemIndex;if(!h){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,lastShownItemIndex:void 0===d?void 0:Math.floor(d/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 b=v,y=n>b+p?I:0,S=0,w=0;w<p&&v<n;){var C=t?this.getItemHeightBeforeResize(v):this.getItemHeight(v);if(void 0===C)return this.getItemNotMeasuredIndexes(v,{itemsCount:n,firstShownItemIndex:s?a:void 0,indexOfTheFirstItemInTheRow:b,nonMeasuredAreaHeight:r+this.getPrerenderMargin()-l});S=Math.max(S,C),w++,v++}var O=l+S,R=O>i-this.getPrerenderMargin(),H=O+y>=r+this.getPrerenderMargin();if(o){if(R)return{firstShownItemIndex:b,beforeItemsHeight:l}}else if(s&&H)return{lastShownItemIndex:Math.min(b+p-1,n-1)};l+=S+y}return t?{notFound:!0,beforeItemsHeight:l}:o?(re("The list is supposed to be visible but no visible item has been found"),null):s?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,r=0;if(!n){var o=this.getBeforeResizeItemsCount();o>0&&(i=this.getBeforeItemsHeight(Math.min(e,o),{beforeResize:!0}),r=o)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();r<e;){for(var l=0,u=0;u<s;){var c=n?this.getItemHeightBeforeResize(r):this.getItemHeight(r);void 0===c&&(c=this.getAverageItemHeight()),l=Math.max(l,c),r++,u++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,r=e+1;r<t;){for(var o=0,s=0;s<n&&r<t;){var a=this.getItemHeight(r);void 0===a&&(a=this.getAverageItemHeight()),o=Math.max(o,a),r++,s++}i+=this.getVerticalSpacing(),i+=o}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),r=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,o=0;o<r;)t+=this.getItemHeightBeforeResize(o*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),o++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,u=0;u<this.getColumnsCount();){var c=this.getItemHeight(n+a*this.getColumnsCount()+u);if(void 0===c)return;l=Math.max(l,c),u++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&fe(t.prototype,n),i&&fe(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),de="scroll",ge="stopped scrolling",pe="manual",Ie="started",ve="non-measured item heights have been measured",be="viewport width changed",ye="viewport height changed",Se="viewport size unchanged",we="item height changed",Ce="items changed",Oe="list top offset changed";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 He=function(){function e(t){var n,i,r,o=this,s=t.bypass,a=t.getWidth,l=t.getHeight,u=t.listenForResize,c=t.onResizeStart,h=t.onResizeStop,f=t.onHeightChange,m=t.onWidthChange,d=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r=function(){if(o.isActive){var e=o.width,t=o.height;o.width=o.getWidth(),o.height=o.getHeight(),o.width===e?o.height===t?o.onNoChange():o.onHeightChange(t,o.height):o.onWidthChange(e,o.width)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[i]=r,this.bypass=s,this.onHeightChange=f,this.onWidthChange=m,this.onNoChange=d,this.getWidth=a,this.getHeight=l,this.listenForResize=u,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.onStart,o=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?X(n):r&&r(),n=$((function(){n=void 0,o&&o(),e.apply(i,a),s()}),t)}))}}(this._onResize,xe,{onStart:c,onStop:h})}var t,n,i;return t=e,(n=[{key:"start",value:function(){this.isActive=!0,this.bypass||(this.width=this.getWidth(),this.height=this.getHeight(),this.unlistenResize=this.listenForResize(this.onResize))}},{key:"stop",value:function(){this.isActive=!1,this.width=void 0,this.height=void 0,this.unlistenResize&&(this.unlistenResize(),this.unlistenResize=void 0)}}])&&Re(t.prototype,n),i&&Re(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),xe=250;function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Te(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){je(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e,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 Le=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,r=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=r}var t,n,i;return t=e,n=[{key:"initializeFromState",value:function(e){this._includesBeforeResizeInState=Boolean(e.beforeResize)}},{key:"cleanUpBeforeResizeItemHeights",value:function(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex,i=e.itemHeights,r=e.beforeResize;if(r&&t<r.itemHeights.length){ie('~ Clean up "before resize" item heights and correct scroll position ~');for(var o=0,s=Math.floor(r.itemHeights.length/this.getColumnsCount()),a=Math.min(s*this.getColumnsCount()-1,n),l=t;l<=a;){for(var u=0,c=0;c<this.getColumnsCount()&&l<=a;){var h=i[l];void 0===h&&(h=this.getAverageItemHeight()),u=Math.max(u,h),l++,c++}o+=u,o+=this.getVerticalSpacing()}for(var f=0,m=Math.min(r.itemHeights.length,n+1),d=Math.ceil(m/r.columnsCount),g=0===t?0:Math.floor((t-1)/r.columnsCount)+1;g<d;)f+=r.itemHeights[g*r.columnsCount],f+=r.verticalSpacing,g++;if(0===t)ie('Drop all "before resize" item heights');else{var p=t,I=r.itemHeights.length-1;p===I?ie("For item index",p,'— drop "before resize" height',r.itemHeights[p]):ie("For item indexes from",p,"to",I,'— drop "before resize" heights',r.itemHeights.slice(p))}return r.itemHeights.splice(t,r.itemHeights.length-t),{scrollBy:o-f,beforeResize:0===t?void 0:Te({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),r=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var o=this.getState(),s=o.beforeResize,a=o.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==r){for(var u=0,c=Math.ceil(l/s.columnsCount),h=0;h<c;)u+=s.itemHeights[h*s.columnsCount],u+=s.verticalSpacing,h++;for(var f=0,m=t;m<n;){for(var d=0,g=0;g<i&&m<n;)d=Math.max(d,a[m]),g++,m++;f+=d,f+=r}var p=u+f,I=Math.ceil(n/i);return new Array(n).fill(Math.max(0,p/I-r))}return s.itemHeights.concat(ze(a,n,i).slice(s.itemHeights.length))}return ze(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&Ee(t.prototype,n),i&&Ee(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function ze(e,t,n){e=e.slice(0,Math.ceil(t/n)*n);for(var i=0;i*n<t;){for(var r=0,o=0;o<n;)r=Math.max(r,e[i*n+o]),o++;for(o=0;o<n;)e[i*n+o]=r,o++;i++}return e.slice(0,t)}function Be(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 Me=function(){function e(t){var n=this,i=t.bypass,r=t.scrollableContainer,o=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,u=t.isImmediateLayoutScheduled,c=t.hasNonRenderedItemsAtTheTop,h=t.hasNonRenderedItemsAtTheBottom,f=t.getLatestLayoutVisibleArea,m=t.getListTopOffset,d=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),Ae(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),Ae(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(ie(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.shouldCallOnScrollListenerWhenStopsScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=r,this.itemsContainer=o,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=u,this.hasNonRenderedItemsAtTheTop=c,this.hasNonRenderedItemsAtTheBottom=h,this.getLatestLayoutVisibleArea=f,this.getListTopOffset=m,this.getPrerenderMargin=d,this.onScrolledToTop=g,this.waitForScrollingToStop=p}var t,n,i;return t=e,(n=[{key:"start",value:function(){void 0!==this.initialScrollPosition&&(this.scrollToY(this.initialScrollPosition),this.initialScrollPosition=void 0),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopListeningToScroll(),this.stopListeningToScroll=void 0,this.shouldCallOnScrollListenerWhenStopsScrolling=void 0,this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(X(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=$((function(){e.onStopScrollingTimer=void 0,e.shouldCallOnScrollListenerWhenStopsScrolling&&(e.shouldCallOnScrollListenerWhenStopsScrolling=void 0,e.onScroll({delayed:!0}))}),ke)}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&Be(t.prototype,n),i&&Be(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),ke=100;function _e(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 Ne=function(){function e(t){var n=t.itemsContainer,i=t.getListTopOffset;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.itemsContainer=n,this.getListTopOffset=i}var t,n,i;return t=e,(n=[{key:"snapshotListHeightBeforeAddingNewItems",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()})}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&_e(t.prototype,n),i&&_e(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();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)}}var We=function(){function e(t){var n=t.container;t.itemHeights;var i=t.getItemHeight,r=t.setItemHeight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=n,this._get=i,this._set=r,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"readItemHeightsFromState",value:function(e){for(var t=e.itemHeights,n=0;n<t.length;){if(void 0===t[n]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=n-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=n),this.measuredItemsHeight+=t[n];n++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(ie("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(ie("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,r=this.lastMeasuredItemIndex,o=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);ie("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,o||(this.firstMeasuredItemIndex=s,o=!0)),(void 0===r||s>r)&&(void 0!==r&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),u=this._measureItemHeight(s,e);l!==u&&(re("Item index",s,"height changed unexpectedly: it was",l,"before, but now it is",u,'. An item\'s height is allowed to change only in two cases: when the item\'s "state" changes and the developer calls `onItemStateChange(i, newState)`, or when the item\'s height changes for some other reason and the developer calls `onItemHeightChange(i)`. Perhaps you forgot to persist the item\'s "state" by calling `onItemStateChange(i, newState)` when it changed, and that "state" got lost when the item element was unmounted, which resulted in a different height when the item was shown again having its "state" reset.'),this._set(s,u))}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&Ve(t.prototype,n),i&&Ve(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function De(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 Fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?De(Object(n),!0).forEach((function(t){Ue(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):De(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}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}function Ye(e){var t=Fe({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=Fe({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function qe(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 Ke(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?qe(Object(n),!0).forEach((function(t){Ge(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ge(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Je(e){var t=this,n=e.state,i=e.onStateChange,r=e.render,o=e.items;function s(){return this.state}function a(e){this.state=e}function l(e){this.state=Ke(Ke({},this.state),e),r(this.state,this.previousState),this.onRender()}function u(){var e=o,t=Ke(Ke({},h.call(this,e,{beforeStart:!0})),{},{items:e,itemStates:new Array(e.length)});return se()&&ie("Initial state (autogenerated)",Ye(t)),ie("First shown item index",t.firstShownItemIndex),ie("Last shown item index",t.lastShownItemIndex),t}function c(e){return se()&&ie("Restore state",Ye(e)),function(e,t){var n=t.columnsCount,i=e.columnsCount||1;if(i!==n)return re("~ Columns Count changed from",i,"to",n,"~"),!0;if(Math.floor(e.firstShownItemIndex/n)*n!==e.firstShownItemIndex)return re("~ First Shown Item Index",e.firstShownItemIndex,"is not divisible by Columns Count",n,"~"),!0}(e=Ke(Ke({},e=function(e){return e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e}(e)),{},{verticalSpacing:void 0}),{columnsCount:this.getActualColumnsCount()})&&(re("Reset Layout"),e=Ke(Ke({},e),h.call(this,e.items,{beforeStart:!1}))),e}function h(e,t){var n=this,i=t.beforeStart,r=e.length,o=function(){return n.getActualColumnsCount()};i?this.layout.getInitialLayoutValueWithFallback("columnsCount",o,1):o();var s=this.layout.getInitialLayoutValues({itemsCount:r,columnsCount:this.getActualColumnsCount(),beforeStart:i}),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.beforeItemsHeight,c=s.afterItemsHeight,h=new Array(r);return this.onBeforeShowItems(e,h,a,l),{itemHeights:h,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:u,afterItemsHeight:c}}this.onStateChange=i,this._render=r,this._onItemStateChange=function(e,n){se()&&(ie("~ Item state changed ~"),ie("Item",e),ie("Previous state\n"+JSON.stringify(t.getState().itemStates[e],null,2)),ie("New state\n"+JSON.stringify(n,null,2))),t.getState().itemStates[e]=n,t.newItemsWillBeRendered&&(t.itemStatesThatChangedWhileNewItemsWereBeingRendered||(t.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),t.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=n)},this.getState=function(){return t._getState()},this.updateState=function(e){se()&&(ie("~ Set state ~"),ie(Ye(e))),e.items&&(t._isSettingNewItems||oe("A `stateUpdate` can only contain `items` property as a result of calling `.setItems()`")),t._isSettingNewItems=void 0,t.previousState=t.getState(),t._updateState(e)},this.getInitialState=function(){return n?c.call(t,n):u.call(t)},this.useState=function(e){var n=e.getState,i=e.updateState;if(t._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");if(t._getState)throw new Error("[virtual-scroller] Custom state storage has already been configured");if(r)throw new Error("[virtual-scroller] Creating a `VirtualScroller` class instance with a `render()` parameter means using the default (internal) state storage");if(!n||!i)throw new Error("[virtual-scroller] When using a custom state storage, one must supply both `getState()` and `updateState()` functions");t._usesCustomStateStorage=!0,t._getState=n,t._updateState=i},this.useDefaultStateStorage=function(){if(!r)throw new Error("[virtual-scroller] When using the default (internal) state management, one must supply a `render(state, prevState)` function parameter");t._getState=s.bind(t),t._updateState=l.bind(t),a.bind(t)(t.getInitialState())}}function $e(){var e=this;function t(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;ie("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),r=t.getNthRenderedItemHeight(0),o=1;o<n;){var s=t.getNthRenderedItemTopOffset(o),a=t.getNthRenderedItemHeight(o);if(s!==i)return s-(i+r);r=Math.max(r,a),o++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0!==i)return ie("Item vertical spacing",i),i;ie("Not enough items rendered to measure vertical spacing")}this.getVerticalSpacing=function(){return e.verticalSpacing||0},this.getVerticalSpacingBeforeResize=function(){var t=e.getState().beforeResize;return t&&t.verticalSpacing||0},this.measureVerticalSpacingIfNotMeasured=function(){if(void 0===e.verticalSpacing)return e.verticalSpacing=t.call(e),e.verticalSpacing}}function Xe(e){var t=this,n=e.getColumnsCount;if(n){var i={getWidth:function(){return t.scrollableContainer.getWidth()}};this.getActualColumnsCountForState=function(){var e=n(i);if(1!==e)return e}}else this.getActualColumnsCountForState=function(){};this.getActualColumnsCount=function(){return t.getActualColumnsCountForState()||1},this.getColumnsCount=function(){return t.getState()&&t.getState().columnsCount||1}}function Qe(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?Qe(Object(n),!0).forEach((function(t){et(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Qe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function et(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function tt(){var e=this;function t(e){var n=e.stateUpdate,o=Date.now(),s=i.call(this),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.shownItemsHeight,c=s.firstNonMeasuredItemIndex;if(this.listHeightMeasurement.hasSnapshot()&&(l<this.listHeightMeasurement.getAnchorItemIndex()&&(l=this.listHeightMeasurement.getAnchorItemIndex()),c=void 0),!r.call(this,a,l))return ie("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),t.call(this,{stateUpdate:n});var h=this.layout.getBeforeItemsHeight(a),f=this.layout.getAfterItemsHeight(l,this.getItemsCount()),m=Date.now()-o;ie("~ Calculated Layout"+(this.bypass?" (bypass)":"")+" ~"),m<nt||re("Layout calculated in",m,"ms"),this.getColumnsCount()&&ie("Columns count",this.getColumnsCount()),ie("First shown item index",a),ie("Last shown item index",l),ie("Before items height",h),ie("After items height (actual or estimated)",f),ie("Average item height (used for estimated after items height calculation)",this.itemHeights.getAverage()),se()&&(ie("Item heights",this.getState().itemHeights.slice()),ie("Item states",this.getState().itemStates.slice())),this.onBeforeShowItems(this.getState().items,this.getState().itemHeights,a,l),this.firstNonMeasuredItemIndex=c,this.previouslyCalculatedLayout=void 0===u?void 0:{firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:h,shownItemsHeight:u},this.updateState(Ze({firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:h,afterItemsHeight:f},n))}function n(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}function i(){var e=this.getItemsCount(),t=n.call(this),i=t.top,r=t.bottom;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:i<this.itemsContainer.getHeight()&&r>0?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaTop:i,visibleAreaBottom:r}):(ie("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}function r(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var r=this.getState().itemHeights[i],a=o.call(this,i);a!==r&&(n&&(ie("~ Validate will-be-hidden item heights. ~"),s.call(this,i,r,a)),n=!1,re("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",r,"to",a,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}function o(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}function s(e,t,n){if(this.previouslyCalculatedLayout){var i=n-t;e<this.previouslyCalculatedLayout.firstShownItemIndex?this.previouslyCalculatedLayout.beforeItemsHeight+=i:e>this.previouslyCalculatedLayout.lastShownItemIndex?void 0!==this.previouslyCalculatedLayout.afterItemsHeight&&(this.previouslyCalculatedLayout.afterItemsHeight+=i):this.previouslyCalculatedLayout.shownItemsHeight+=n-t}}this.onUpdateShownItemIndexes=function(n){var i=n.reason,r=n.stateUpdate,o=function(){r&&e.updateState(r)};return e.newItemsWillBeRendered||e.widthHasChanged||e._isResizing||0===e.getItemsCount()?o():(e.scroll.cancelScheduledLayout(),r=e.cancelLayoutTimer({stateUpdate:r}),ie("~ Update Layout (on ".concat(i,") ~")),void t.call(e,{stateUpdate:r}))},this.getListTopOffsetInsideScrollableContainer=function(){var t=e.scrollableContainer.getItemsContainerTopOffset();return e.listTopOffsetWatcher&&e.listTopOffsetWatcher.onListTopOffset(t),t},this._onItemHeightChange=function(t){ie("~ Re-measure item height ~"),ie("Item",t);var n=e.getState(),i=n.itemHeights,r=n.firstShownItemIndex,a=n.lastShownItemIndex;if(!(t>=r&&t<=a))return re("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time.");var l=i[t];if(void 0===l)return oe('"onItemHeightChange()" has been called for item '.concat(t,", but that item hasn't been rendered before."));var u=o.call(e,t);ie("Previous height",l),ie("New height",u),l!==u&&(ie("~ Item height has changed ~"),s.call(e,t,l,u),e.onUpdateShownItemIndexes({reason:we}),e.newItemsWillBeRendered&&(e.itemHeightsThatChangedWhileNewItemsWereBeingRendered||(e.itemHeightsThatChangedWhileNewItemsWereBeingRendered={}),e.itemHeightsThatChangedWhileNewItemsWereBeingRendered[String(t)]=u))},this.getPrerenderMargin=function(){return 1*e.scrollableContainer.getHeight()},this.onBeforeShowItems=function(t,n,i,r){if(e.onItemInitialRender)for(var o=i;o<=r;)void 0===n[o]&&e.onItemInitialRender(t[o]),o++},this.measureItemHeightsAndSpacing=function(){e.itemHeights.measureItemHeights(e.getState().firstShownItemIndex,e.getState().lastShownItemIndex);var t=e.measureVerticalSpacingIfNotMeasured();if(t&&0!==t)return{verticalSpacing:t}},this.cancelLayoutTimer=function(t){var n=t.stateUpdate;return e.layoutTimer?(X(e.layoutTimer),e.layoutTimer=void 0,n||e.layoutTimerStateUpdate?(n=Ze(Ze({},e.layoutTimerStateUpdate),n),e.layoutTimerStateUpdate=void 0,n):void 0):n},this.scheduleLayoutTimer=function(t){var n=t.reason,i=t.stateUpdate;e.layoutTimerStateUpdate=i,e.layoutTimer=$((function(){e.layoutTimerStateUpdate=void 0,e.layoutTimer=void 0,e.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}}var nt=15;function it(e){return it="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},it(e)}var rt=Object.prototype.hasOwnProperty;function ot(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function st(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 at(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?st(Object(n),!0).forEach((function(t){lt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):st(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function lt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ut(){var e=this;function t(e,t){if(e){var n=e.prependedItemsCount;e.appendedItemsCount;var i=this.getState(),r=i.itemHeights,o=i.itemStates;if(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered)for(var s=0,a=Object.keys(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered);s<a.length;s++){var l=a[s];r[n+parseInt(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var u=0,c=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);u<c.length;u++){var h=c[u];o[n+parseInt(h)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[h]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(re('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after appending items'),re("Previously calculated layout",this.previouslyCalculatedLayout),re("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightMeasurement.hasSnapshot()){if(0===t.firstShownItemIndex){ie("~ Restore Scroll Position ~");var f=this.listHeightMeasurement.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightMeasurement.reset(),f?(ie("Scroll down by",f),this.scroll.scrollByY(f)):ie("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}:(re('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after prepending items'),re("Previously calculated layout",this.previouslyCalculatedLayout),re("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}re('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "onRender()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}function n(e){var t=e.reason,n=e.stateUpdate;this._useTimeoutInRenderLoop?(n=this.cancelLayoutTimer({stateUpdate:n}),this.scheduleLayoutTimer({reason:t,stateUpdate:n})):this.onUpdateShownItemIndexes({reason:t,stateUpdate:n})}function i(){var e=Boolean(this.widthHasChanged);this.widthHasChanged=void 0;var t=void 0!==this.firstNonMeasuredItemIndex;return this.firstNonMeasuredItemIndex=void 0,this.newItemsWillBeRendered=void 0,this.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,this.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0,{nonMeasuredItemsHaveBeenRendered:t,widthHasChanged:e}}this._onRender=function(r,o){var s,a,l;if(ie("~ Rendered ~"),se()&&ie("State",Ye(r)),e.onStateChange&&(function(e,t){if(ot(e,t))return!0;if("object"!==it(e)||null===e||"object"!==it(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(!rt.call(t,n[r])||!ot(e[n[r]],t[n[r]]))return!1;return!0}(r,o)||e.onStateChange(r)),e.tbody&&(s=e.getItemsContainerElement(),a=r.beforeItemsHeight,l=r.afterItemsHeight,s.style.setProperty("--VirtualScroller-paddingTop",c(a)),s.style.setProperty("--VirtualScroller-paddingBottom",c(l))),o){var u,h=i.call(e),f=h.nonMeasuredItemsHaveBeenRendered,m=h.widthHasChanged;f&&(u=ve),m&&(u=be,e.itemHeights.reset(),e.verticalSpacing=void 0);var d,g=o.items,p=r.items;if(p!==g){var I=e.getItemsDiff(g,p);if(I){var v=I.prependedItemsCount;e.itemHeights.onPrepend(v)}else e.itemHeights.reset();m||"SEAMLESS_PREPEND"!==t.call(e,I,r)&&(u=Ce)}if(r.firstShownItemIndex!==o.firstShownItemIndex||r.lastShownItemIndex!==o.lastShownItemIndex||r.items!==o.items||m){var b=e.measureItemHeightsAndSpacing();b&&(d=at(at({},d),b))}var y=e.beforeResize.cleanUpBeforeResizeItemHeights();if(void 0!==y){var S=y.scrollBy,w=y.beforeResize;ie("Correct scroll position by",S),e.scroll.scrollByY(S),d=at(at({},d),{},{beforeResize:w})}e._isActive?u?n.call(e,{stateUpdate:d,reason:u}):d?e.updateState(d):ie("~ Finished Layout ~"):e._stoppedStateUpdate=d}}}function ct(){var e=this;this.onResize=function(){e.previouslyCalculatedLayout=void 0,e.listHeightMeasurement.reset();var t=e.newItemsWillBeRendered?e.newItemsWillBeRendered.count:e.getState().itemHeights.length,n=e.newItemsWillBeRendered?e.newItemsWillBeRendered.layout:e.getState(),i={scrollableContainerWidth:e.scrollableContainer.getWidth(),firstShownItemIndex:n.firstShownItemIndex,lastShownItemIndex:n.lastShownItemIndex,beforeItemsHeight:n.beforeItemsHeight,afterItemsHeight:n.afterItemsHeight,itemHeights:new Array(t),columnsCount:e.getActualColumnsCountForState(),verticalSpacing:void 0},r=n.firstShownItemIndex,o=n.lastShownItemIndex,s=e.getActualColumnsCount(),a=Math.floor(r/s)*s,l=Math.min(Math.ceil((o+1)/s)*s,t)-1;a!==r&&(ie("Columns Count changed from",e.getState().columnsCount||1,"to",s),ie("First Shown Item Index needs to change from",r,"to",a)),i.firstShownItemIndex=a,i.lastShownItemIndex=l;var u=e.getVerticalSpacing(),c=e.getColumnsCount();e.shouldDiscardBeforeResizeItemHeights()||0===a?e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(i.beforeResize=void 0):i.beforeResize={verticalSpacing:u,columnsCount:c,itemHeights:e.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:r,newFirstShownItemIndex:a,newColumnsCount:s})},e.widthHasChanged={stateUpdate:i},e.updateState(i)},this.shouldDiscardBeforeResizeItemHeights=function(){if(e.newItemsWillBeRendered){var t=e.newItemsWillBeRendered,n=t.prepend,i=t.replace;return n||i}}}function ht(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 ft(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ht(Object(n),!0).forEach((function(t){mt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ht(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function mt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function dt(){var e=this;this.getItemsCount=function(){return e.getState().items.length},this._setItems=function(t){var n,i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=e.getState(),s=o.items,a=e.getState(),l=a.itemStates,u=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),c=u.itemHeights;ie("~ Update items ~");var h=e.getItemsDiff(s,t);if(h){var f,m=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),d=m.firstShownItemIndex,g=m.lastShownItemIndex,p=m.beforeItemsHeight,I=m.afterItemsHeight,v=0===d&&(r.preserveScrollPositionOnPrependItems||r.preserveScrollPosition),b=h.prependedItemsCount,y=h.appendedItemsCount;n=e.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:d,lastShownItemIndex:g,beforeItemsHeight:p,afterItemsHeight:I},{prependedItemsCount:b,appendedItemsCount:y},{itemsCount:t.length,columnsCount:e.getActualColumnsCount(),shouldRestoreScrollPosition:v,onResetGridLayout:function(){return f=!0}}),b>0&&(ie("Prepend",b,"items"),c=new Array(b).concat(c),l&&(l=new Array(b).concat(l)),v?(ie("Will restore scroll position"),e.listHeightMeasurement.snapshotListHeightBeforeAddingNewItems({previousItems:s,newItems:t,prependedItemsCount:b}),void 0!==e.firstNonMeasuredItemIndex&&(e.firstNonMeasuredItemIndex+=b)):(ie("Reset layout"),f?(ie("Reason: Prepended items count",b,"is not divisible by Columns Count",e.getActualColumnsCount()),c=new Array(t.length)):ie("Reason: Prepended items' heights are unknown"),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0)),y>0&&(ie("Append",y,"items"),c=c.concat(new Array(y)),l&&(l=l.concat(new Array(y)))),i={prepend:b>0,append:y>0}}else ie("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."),ie("Previous items",s),ie("New items",t),c=new Array(t.length),l=new Array(t.length),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0,e.listHeightMeasurement.reset(),i={replace:!0};ie("~ Update state ~"),ie("First shown item index",n.firstShownItemIndex),ie("Last shown item index",n.lastShownItemIndex),ie("Before items height",n.beforeItemsHeight),ie("After items height (actual or estimated)",n.afterItemsHeight),e.onBeforeShowItems(t,c,n.firstShownItemIndex,n.lastShownItemIndex),e.newItemsWillBeRendered=ft(ft({},i),{},{count:t.length,layout:n});var S=ft(ft({},n),{},{items:t,itemStates:l,itemHeights:c});e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(e.shouldDiscardBeforeResizeItemHeights()?S.beforeResize=void 0:S.beforeResize=e.widthHasChanged?e.widthHasChanged.stateUpdate.beforeResize:e.getState().beforeResize),e._isSettingNewItems=!0,e.updateState(S)},this.getItemsDiff=function(t,n){return function(e,t,n){var i=-1,r=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var r=0;r<e.length;){if(t.length<=n+r||!i(t[n+r],e[r]))return!1;r++}return!0}(e,t,i,n)&&(r=i+e.length-1)),i>=0&&r>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(r+1)}}(t,n,e.isItemEqual)}}function gt(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.render,o=i.state,s=i.onStateChange,a=i.initialScrollPosition,l=i.onScrollPositionChange,u=i.scrollableContainer,c=i.measureItemsBatchSize,m=void 0===c?50:c,d=i.getColumnsCount,g=i.getItemId,p=i.tbody,I=i.estimatedItemHeight,v=i.getEstimatedVisibleItemRowsCount,b=i.onItemInitialRender,y=i.onItemFirstRender,S=i._useTimeoutInRenderLoop,w=i._waitForScrollingToStop,C=i.engine,O=i.bypass,R=i.getEstimatedItemHeight,H=i.getScrollableContainer;if(ie("~ Initialize ~"),this.engine=C||ee,R||"number"!=typeof I||(R=function(){return I}),!H&&u&&(H=function(){return u}),this.getItemsContainerElement=e,i.getState||i.setState)throw new Error("[virtual-scroller] `getState`/`setState` options usage has changed in the new version. See the readme for more details.");if(p){if(this.engine!==ee)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");ie("~ <tbody/> detected ~"),this.tbody=!0,f()||(ie("~ <tbody/> not supported ~"),oe(h),O=!0)}O&&ie('~ "bypass" mode ~'),this.bypass=O,this._useTimeoutInRenderLoop=S,this.isItemEqual=g?function(e,t){return g(e)===g(t)}:function(e,t){return e===t},b?this.onItemInitialRender=b:y&&(this.onItemInitialRender=function(e){re("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=n.getState().items.indexOf(e);t>=0&&y(t)}),o&&(t=o.items),ie("Items count",t.length),R&&ie("Estimated item height",R()),Je.call(this,{state:o,onStateChange:s,render:r,items:t}),$e.call(this),Xe.call(this,{getColumnsCount:d}),tt.call(this),ut.call(this),ct.call(this),dt.call(this),pt.call(this,{getScrollableContainer:H,getEstimatedItemHeight:R,getEstimatedVisibleItemRowsCount:v,measureItemsBatchSize:m,initialScrollPosition:a,onScrollPositionChange:l,waitForScrollingToStop:w}),o&&(this.itemHeights.readItemHeightsFromState(o),this.beforeResize.initializeFromState(o))}function pt(e){var t=this,n=e.getScrollableContainer,i=e.getEstimatedItemHeight,r=e.getEstimatedVisibleItemRowsCount,o=e.measureItemsBatchSize,s=e.initialScrollPosition,a=e.onScrollPositionChange,l=e.waitForScrollingToStop;this.itemsContainer=this.engine.createItemsContainer(this.getItemsContainerElement),this.getItemsContainerElement()&&this.itemsContainer.clear(),this.scrollableContainer=this.engine.createScrollableContainer(n,this.getItemsContainerElement),this.itemHeights=new We({container:this.itemsContainer,getItemHeight:function(e){return t.getState().itemHeights[e]},setItemHeight:function(e,n){return t.getState().itemHeights[e]=n}}),this.layout=new me({bypass:this.bypass,getInitialEstimatedItemHeight:i,getInitialEstimatedVisibleItemRowsCount:r,measureItemsBatchSize:o,getPrerenderMargin:function(){return t.getPrerenderMargin()},getVerticalSpacing:function(){return t.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return t.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return t.getColumnsCount()},getColumnsCountBeforeResize:function(){return t.getState().beforeResize&&t.getState().beforeResize.columnsCount},getItemHeight:function(e){return t.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return t.getState().beforeResize&&t.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return t.getState().beforeResize?t.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return t.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return t.scrollableContainer&&t.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return t.previouslyCalculatedLayout}}),this.resize=new He({bypass:this.bypass,getWidth:function(){return t.scrollableContainer.getWidth()},getHeight:function(){return t.scrollableContainer.getHeight()},listenForResize:function(e){return t.scrollableContainer.onResize(e)},onResizeStart:function(){ie("~ Scrollable container resize started ~"),t._isResizing=!0},onResizeStop:function(){ie("~ Scrollable container resize finished ~"),t._isResizing=void 0},onNoChange:function(){t.onUpdateShownItemIndexes({reason:Se})},onHeightChange:function(){return t.onUpdateShownItemIndexes({reason:ye})},onWidthChange:function(e,n){ie("~ Scrollable container width changed from",e,"to",n,"~"),t.onResize()}}),this.scroll=new Me({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:l,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delayed;t.onUpdateShownItemIndexes({reason:n?ge:de})},initialScrollPosition:s,onScrollPositionChange:a,isImmediateLayoutScheduled:function(){return Boolean(t.layoutTimer)},hasNonRenderedItemsAtTheTop:function(){return t.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return t.getState().lastShownItemIndex<t.getItemsCount()-1},getLatestLayoutVisibleArea:function(){return t.latestLayoutVisibleArea},getListTopOffset:this.getListTopOffsetInsideScrollableContainer,getPrerenderMargin:function(){return t.getPrerenderMargin()}}),this.listHeightMeasurement=new Ne({itemsContainer:this.itemsContainer,getListTopOffset:this.getListTopOffsetInsideScrollableContainer}),this.engine.watchListTopOffset&&(this.listTopOffsetWatcher=this.engine.watchListTopOffset({getListTopOffset:this.getListTopOffsetInsideScrollableContainer,onListTopOffsetChange:function(e){return e.reason,t.onUpdateShownItemIndexes({reason:Oe})}})),this.beforeResize=new Le({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount})}function It(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 vt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?It(Object(n),!0).forEach((function(t){St(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):It(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function bt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function yt(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 St(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var wt=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};bt(this,e),St(this,"stop",(function(){if(!i._isActive)throw new Error("[virtual-scroller] Can't stop a `VirtualScroller` that hasn't been started");i._isActive=!1,ie("~ Stop ~"),i.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.isStarted()&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),St(this,"updateLayout",(function(){i.hasToBeStarted(),i.onUpdateShownItemIndexes({reason:pe})})),St(this,"onRender",(function(){i._onRender(i.getState(),i.previousState)})),gt.call(this,t,n,r)}var t,n,i;return t=e,n=[{key:"start",value:function(){if(this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");!1===this._isActive||(this._usesCustomStateStorage||this.useDefaultStateStorage(),this._render&&this._render(this.getState())),ie("~ Start ~"),this._isActive=!0,this.listHeightMeasurement.reset(),this._isResizing=void 0,this._isSettingNewItems=void 0,this.tbody&&(this.getItemsContainerElement().classList.contains(m)&&Boolean(document.getElementById(d))||function(e){e.classList.add(m);var t=document.createElement("style");t.id=d,t.innerText="\n\t\ttbody.".concat(m,":before {\n\t\t\tcontent: '';\n\t\t\tdisplay: table-row;\n\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t}\n\t\ttbody.").concat(m,":after {\n\t\t\tcontent: '';\n\t\t\tdisplay: table-row;\n\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t}\n\t").replace(/[\n\t]/g,""),document.head.appendChild(t)}(this.getItemsContainerElement()));var e=this._stoppedStateUpdate;this._stoppedStateUpdate=void 0,this.verticalSpacing=void 0;var t=this.measureItemHeightsAndSpacing();if(t&&(e=vt(vt({},e),t)),this.resize.start(),this.scroll.start(),void 0===this.getState().scrollableContainerWidth){var n=this.scrollableContainer.getWidth();e=vt(vt({},e),{},{scrollableContainerWidth:n})}else{var i=this.scrollableContainer.getWidth(),r=this.getState().scrollableContainerWidth;if(i!==r)return ie("~ Scrollable container width changed from",r,"to",i,"~"),this.onResize()}if(this._usesCustomStateStorage&&this.getActualColumnsCount()!==(this.getState().columnsCount||1))return this.onResize();this.onUpdateShownItemIndexes({reason:Ie,stateUpdate:e})}},{key:"hasToBeStarted",value:function(){if(!this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` hasn't been started")}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onItemHeightChange",value:function(e){this.hasToBeStarted(),this._onItemHeightChange(e)}},{key:"onItemStateChange",value:function(e,t){this.hasToBeStarted(),this._onItemStateChange(e,t)}},{key:"setItems",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.hasToBeStarted(),this._setItems(e,t)}}],n&&yt(t.prototype,n),i&&yt(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Ct(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ot(t){var n=t.getItemId,i=e.useRef(),r=e.useMemo((function(){var e=0;return function(){i.current=String((e===Number.MAX_SAFE_INTEGER&&(e=0),++e))}}),[i]);e.useMemo((function(){r()}),[]);var o=e.useCallback((function(){n||r()}),[n,r]),s=e.useCallback((function(e,t){return n?n(e):"".concat(i.current,":").concat(t)}),[n,i]);return{getItemKey:s,updateItemKeysForNewItems:o}}var Rt=["as","items","itemComponent","itemComponentProps","estimatedItemHeight","getEstimatedItemHeight","getEstimatedVisibleItemRowsCount","bypass","tbody","preserveScrollPosition","preserveScrollPositionOnPrependItems","measureItemsBatchSize","scrollableContainer","getScrollableContainer","getColumnsCount","getItemId","className","onMount","onItemFirstRender","onItemInitialRender","initialScrollPosition","onScrollPositionChange","onStateChange","initialState"];function Ht(){return Ht=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},Ht.apply(this,arguments)}function xt(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 Pt(t,n){var r=t.as,o=t.items,a=t.itemComponent,u=t.itemComponentProps,h=t.estimatedItemHeight,f=t.getEstimatedItemHeight,d=t.getEstimatedVisibleItemRowsCount,g=t.bypass,p=t.tbody,I=t.preserveScrollPosition,v=t.preserveScrollPositionOnPrependItems,b=t.measureItemsBatchSize,y=t.scrollableContainer,S=t.getScrollableContainer,w=t.getColumnsCount,C=t.getItemId,O=t.className,R=t.onMount,H=t.onItemFirstRender,x=t.onItemInitialRender,P=t.initialScrollPosition,T=t.onScrollPositionChange,j=t.onStateChange,E=t.initialState,L=xt(t,Rt),z=e.useRef(),B=function(t,n){var i=t.items,r=t.estimatedItemHeight,o=t.getEstimatedItemHeight,s=t.getEstimatedVisibleItemRowsCount,a=t.bypass,l=t.tbody,u=t.onItemInitialRender,c=t.onItemFirstRender,h=t.initialScrollPosition,f=t.onScrollPositionChange,m=t.measureItemsBatchSize,d=t.scrollableContainer,g=t.getScrollableContainer,p=t.getColumnsCount,I=t.getItemId,v=t.AsComponent,b=t.initialState,y=t.onStateChange,S=n.container;return e.useMemo((function(){var e;return new wt((function(){return S.current}),i,(Ct(e={_useTimeoutInRenderLoop:!0,estimatedItemHeight:r,getEstimatedItemHeight:o,getEstimatedVisibleItemRowsCount:s,bypass:a,tbody:l,onItemInitialRender:u,onItemFirstRender:c,initialScrollPosition:h,onScrollPositionChange:f,measureItemsBatchSize:m,scrollableContainer:d,getScrollableContainer:g,getColumnsCount:p,getItemId:I},"tbody","tbody"===v),Ct(e,"state",b),Ct(e,"onStateChange",y),e))}),[])}({items:o,estimatedItemHeight:h,getEstimatedItemHeight:f,getEstimatedVisibleItemRowsCount:d,bypass:g,tbody:p,onItemInitialRender:x,onItemFirstRender:H,initialScrollPosition:P,onScrollPositionChange:T,measureItemsBatchSize:b,scrollableContainer:y,getScrollableContainer:S,getColumnsCount:w,getItemId:C,AsComponent:r,initialState:E,onStateChange:j},{container:z}),A=function(t){var n=t.initialState,i=t.onRender,r=t.items,o=l(e.useState(),2),a=o[0],u=o[1],c=e.useRef(n),h=e.useRef(n);return c.current!==h.current&&(c.current=a),e.useLayoutEffect((function(){i()}),[a,r]),{getState:function(){return c.current},updateState:function(e){var t=s(s({},h.current),e);h.current=t,e.items?c.current=t:u(t)}}}({initialState:e.useMemo((function(){return B.getInitialState()}),[]),onRender:B.onRender,items:o}),M=A.getState,k=A.updateState;e.useMemo((function(){B.useState({getState:M,updateState:k})}),[]),function(t){e.useLayoutEffect((function(){return t.start(),function(){t.stop()}}),[])}(B);var _=Ot({getItemId:C}),N=_.getItemKey,V=_.updateItemKeysForNewItems,W=function(t){var n=t.items,i=t.virtualScroller,r=e.useMemo((function(){return new Array(n.length)}),[]),o=e.useRef(r),s=e.useCallback((function(e){return o.current[e]||(o.current[e]=function(t){return i.onItemStateChange(e,t)}),o.current[e]}),[i,o]);return s}({items:o,virtualScroller:B}),D=function(t){var n=t.items,i=t.virtualScroller,r=e.useMemo((function(){return new Array(n.length)}),[]),o=e.useRef(r),s=e.useCallback((function(e){return o.current[e]||(o.current[e]=function(){return i.onItemHeightChange(e)}),o.current[e]}),[i,o]);return s}({items:o,virtualScroller:B});!function(t,n){var i=n.virtualScroller,r=n.preserveScrollPosition,o=n.preserveScrollPositionOnPrependItems,s=n.updateItemKeysForNewItems,a=i.getState(),l=a.items;a.firstShownItemIndex;var u=e.useRef(t),c=t!==u.current;if(u.current=t,c){var h=!0,f=!0,m=i.getItemsDiff(l,t);if(m){var d=m.prependedItemsCount,g=m.appendedItemsCount;0===d&&0===g?(h=!1,f=!1):0===d&&g>0&&(f=!1)}h&&(i.setItems(t,{preserveScrollPositionOnPrependItems:o||r}),f&&s())}}(o,{virtualScroller:B,preserveScrollPosition:I,preserveScrollPositionOnPrependItems:v,updateItemKeysForNewItems:V}),function(t,n){var i=n.virtualScroller;e.useImperativeHandle(t,(function(){return{updateLayout:function(){return i.updateLayout()},layout:function(){return i.updateLayout()},updateItem:function(e){return oe('[virtual-scroller] ".updateItem(i)" method of React <VirtualScroller/> has been removed')},renderItem:function(e){return oe('[virtual-scroller] ".renderItem(i)" method of React <VirtualScroller/> has been removed')}}}),[i])}(n,{virtualScroller:B}),e.useLayoutEffect((function(){R&&R()}),[]),O=function(e,t){return t.tbody?e?e+" "+m:m:e}(O,{tbody:p});var F=function(e){var t=e.tbody,n=e.virtualScroller;if(!t){var i=n.getState(),r=i.beforeItemsHeight,o=i.afterItemsHeight;return{paddingTop:c(r),paddingBottom:c(o)}}}({tbody:p,virtualScroller:B}),U=B.getState(),Y=U.items,q=U.itemStates,K=U.firstShownItemIndex,G=U.lastShownItemIndex;return i.default.createElement(r,Ht({},L,{ref:z,className:O,style:F}),Y.map((function(e,t){return t>=K&&t<=G?i.default.createElement(a,Ht({item:e,itemIndex:t},u,{key:N(e,t),state:q&&q[t],onStateChange:W(t),onHeightChange:D(t)}),e):null})))}var Tt=Pt=i.default.forwardRef(Pt),jt=r.default.elementType||r.default.oneOfType([r.default.string,r.default.func,r.default.object]);return Pt.propTypes={as:jt,items:r.default.arrayOf(r.default.any).isRequired,itemComponent:jt.isRequired,itemComponentProps:r.default.object,estimatedItemHeight:r.default.number,getEstimatedItemHeight:r.default.func,getEstimatedVisibleItemRowsCount:r.default.func,bypass:r.default.bool,tbody:r.default.bool,preserveScrollPositionOnPrependItems:r.default.bool,preserveScrollPosition:r.default.bool,measureItemsBatchSize:r.default.number,scrollableContainer:r.default.any,getScrollableContainer:r.default.func,getColumnsCount:r.default.func,getItemId:r.default.func,className:r.default.string,onMount:r.default.func,onItemInitialRender:r.default.func,onItemFirstRender:r.default.func,initialScrollPosition:r.default.number,onScrollPositionChange:r.default.func,onStateChange:r.default.func,initialState:r.default.shape({items:r.default.arrayOf(r.default.object).isRequired,itemStates:r.default.arrayOf(r.default.any),firstShownItemIndex:r.default.number.isRequired,lastShownItemIndex:r.default.number.isRequired,beforeItemsHeight:r.default.number.isRequired,afterItemsHeight:r.default.number.isRequired,itemHeights:r.default.arrayOf(r.default.number).isRequired,columnsCount:r.default.number,verticalSpacing:r.default.number})},Pt.defaultProps={as:"div"},Tt}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VirtualScroller=t(e.React,e.PropTypes)}(this,(function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),r=n(t);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var i,r,o=[],s=!0,a=!1;try{for(n=n.call(e);!(s=(i=n.next()).done)&&(o.push(i.value),!t||o.length!==t);s=!0);}catch(e){a=!0,r=e}finally{try{s||null==n.return||n.return()}finally{if(a)throw r}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function c(e){return(e%1==0?e:e.toFixed(2))+"px"}var h="It looks like you're using Internet Explorer which doesn't support CSS variables required for a <tbody/> container. VirtualScroller has been switched into \"bypass\" mode (render all items). See: https://gitlab.com/catamphetamine/virtual-scroller/-/issues/1";function f(){return"undefined"==typeof window||!window.document.documentMode}var m="VirtualScroller",d="VirtualScrollerStyle";function g(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var p=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getElement=t}var t,n,i;return t=e,(n=[{key:"getNthRenderedItemTopOffset",value:function(e){return this.getElement().childNodes[e].getBoundingClientRect().top-this.getElement().getBoundingClientRect().top}},{key:"getNthRenderedItemHeight",value:function(e){return this.getElement().childNodes[e].getBoundingClientRect().height}},{key:"getHeight",value:function(){return this.getElement().getBoundingClientRect().height}},{key:"clear",value:function(){for(;this.getElement().firstChild;)this.getElement().removeChild(this.getElement().firstChild)}}])&&g(t.prototype,n),i&&g(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function I(e){return I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},I(e)}function v(e,t){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 S(e,t){if(t&&("object"===I(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function y(e){var t="function"==typeof Map?new Map:void 0;return y=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return b(e,arguments,O(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),C(i,e)},y(e)}function b(e,t,n){return b=w()?Reflect.construct:function(e,t,n){var i=[null];i.push.apply(i,t);var r=new(Function.bind.apply(e,i));return n&&C(r,n.prototype),r},b.apply(null,arguments)}function w(){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}}function C(e,t){return C=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},C(e,t)}function O(e){return O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},O(e)}var R=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&C(e,t)}(a,e);var t,n,i,r,o,s=(t=a,n=w(),function(){var e,i=O(t);if(n){var r=O(this).constructor;e=Reflect.construct(i,arguments,r)}else e=i.apply(this,arguments);return S(this,e)});function a(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),s.call(this,"[virtual-scroller] Scrollable container not found")}return i=a,r&&v(i.prototype,r),o&&v(i,o),Object.defineProperty(i,"prototype",{writable:!1}),i}(y(Error));function H(e){return H="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},H(e)}function x(e,t){return x=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},x(e,t)}function P(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=j(e);if(t){var r=j(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return T(this,n)}}function T(e,t){if(t&&("object"===H(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 j(e){return j=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},j(e)}function E(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function L(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 z(e,t,n){return t&&L(e.prototype,t),n&&L(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var B=function(){function e(t,n){E(this,e),this.getElement=t,this.getItemsContainerElement=n}return z(e,[{key:"getScrollY",value:function(){return this.getElement().scrollTop}},{key:"scrollToY",value:function(e){this.getElement().scrollTo?this.getElement().scrollTo(0,e):this.getElement().scrollTop=e}},{key:"getWidth",value:function(){if(!this.getElement())throw new R;return this.getElement().offsetWidth}},{key:"getHeight",value:function(){if(!this.getElement())throw new R;return this.getElement().offsetHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=this.getElement().getBoundingClientRect().top,t=this.getElement().clientTop;return this.getItemsContainerElement().getBoundingClientRect().top-e+this.getScrollY()-t}},{key:"onScroll",value:function(e){var t=this.getElement();return t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e){var t;if("undefined"!=typeof ResizeObserver){var n=new ResizeObserver((function(t){t[0],e()})),i=this.getElement();n.observe(i),t=function(){return n.unobserve(i)}}var r=M(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),r()}}}]),e}(),A=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&x(e,t)}(n,e);var t=P(n);function n(e){return E(this,n),t.call(this,(function(){return window}),e)}return z(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}(B);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)}}var k="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var _=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){(function(){var t,n,i,r,o,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-o)/1e6},n=process.hrtime,r=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),o=r-s):Date.now?(e.exports=function(){return Date.now()-i},i=Date.now()):(e.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(k)})),N="undefined"==typeof window?k:window,V=["moz","webkit"],W="AnimationFrame",D=N["request"+W],F=N["cancel"+W]||N["cancelRequest"+W],U=0;!D&&U<V.length;U++)D=N[V[U]+"Request"+W],F=N[V[U]+"Cancel"+W]||N[V[U]+"CancelRequest"+W];if(!D||!F){var q=0,Y=0,K=[];D=function(e){if(0===K.length){var t=_(),n=Math.max(0,16.666666666666668-(t-q));q=n+t,setTimeout((function(){var e=K.slice(0);K.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(q)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return K.push({handle:++Y,callback:e,cancelled:!1}),Y},F=function(e){for(var t=0;t<K.length;t++)K[t].handle===e&&(K[t].cancelled=!0)}}var G=function(e){return D.call(N,e)};G.cancel=function(){F.apply(N,arguments)},G.polyfill=function(e){e||(e=N),e.requestAnimationFrame=D,e.cancelAnimationFrame=F};var J=G.cancel;function $(e,t){var n=Date.now(),i=G((function r(){Date.now()-n>=t?e():i=G(r)}));return{clear:function(){return J(i)}}}function X(e){e&&e.clear()}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 Z=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this._isActive=!0,this.watchListTopOffset()}},{key:"isStarted",value:function(){return this._isActive}},{key:"stop",value:function(){this._isActive=!1,this.watchListTopOffsetTimer&&(X(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e._isActive&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=$(n,500)))}()}}])&&Q(t.prototype,n),i&&Q(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),ee={createItemsContainer:function(e){return new p(e)},createScrollableContainer:function(e,t){return e?new B(e,t):"undefined"!=typeof window?new A(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new Z({getListTopOffset:t,onListTopOffsetChange:n})}};function te(e){return function(e){if(Array.isArray(e))return ne(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 ne(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 ne(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 ne(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 ie(){if(se()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,te(["[virtual-scroller]"].concat(n)))}}function re(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(ae())return oe.apply(this,n);(e=console).warn.apply(e,te(["[virtual-scroller]"].concat(n)))}function oe(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(ie.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))}),0)):(i=console).error.apply(i,te(["[virtual-scroller]"].concat(t)))}function se(){var e=le("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function ae(){return le("VirtualScrollerWarningsAreErrors")}function le(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function ue(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 ce(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ue(Object(n),!0).forEach((function(t){he(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ue(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function he(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function fe(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 me=function(){function e(t){var n=t.bypass,i=t.getInitialEstimatedItemHeight,r=t.getInitialEstimatedVisibleItemRowsCount,o=t.measureItemsBatchSize,s=t.getPrerenderMargin,a=t.getVerticalSpacing,l=t.getVerticalSpacingBeforeResize,u=t.getColumnsCount,c=t.getColumnsCountBeforeResize,h=t.getItemHeight,f=t.getItemHeightBeforeResize,m=t.getBeforeResizeItemsCount,d=t.getAverageItemHeight,g=t.getMaxVisibleAreaHeight,p=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.getInitialEstimatedItemHeight=i,this.getInitialEstimatedVisibleItemRowsCount=r,this.measureItemsBatchSize=o,this.getPrerenderMargin=s,this.getVerticalSpacing=a,this.getVerticalSpacingBeforeResize=l,this.getColumnsCount=u,this.getColumnsCountBeforeResize=c,this.getItemHeight=h,this.getItemHeightBeforeResize=f,this.getBeforeResizeItemsCount=m,this.getAverageItemHeight=d,this.getMaxVisibleAreaHeight=g,this.getPreviouslyCalculatedLayout=p}var t,n,i;return t=e,n=[{key:"getInitialLayoutValueWithFallback",value:function(e,t,n){try{return t()}catch(t){if(t instanceof R)return ie("Couldn't calculate",e,"before scrollable container is ready. Default to",n),n;throw t}}},{key:"getInitialLayoutValues",value:function(e){var t,n,i=this,r=e.itemsCount,o=e.columnsCount,s=e.beforeStart;if(r>0){var a=function(){return i.getInitialLastShownItemIndex({itemsCount:r,columnsCount:o,firstShownItemIndex:t})};t=0,n=s?this.getInitialLayoutValueWithFallback("lastShownItemIndex",a,0):a()}return{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var r=1;if(this.getMaxVisibleAreaHeight())r=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin());else if(this.getInitialEstimatedVisibleItemRowsCount&&(r=this.getInitialEstimatedVisibleItemRowsCount(),isNaN(r)))throw new Error("[virtual-scroller] `getEstimatedVisibleItemRowsCount()` must return a number");return Math.min(i+(r*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){var e=this.getAverageItemHeight();if(e)return e;if(this.getInitialEstimatedItemHeight){var t=this.getInitialEstimatedItemHeight();if(isNaN(t))throw new Error("[virtual-scroller] `getInitialEstimatedItemHeight()` must return a number");return t}return 0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,r=e.lastShownItemIndex,o=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,u=n.itemsCount,c=n.columnsCount,h=n.shouldRestoreScrollPosition,f=n.onResetGridLayout,m=this.getAverageItemHeight(),d=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/c)*(d+m)),a>0&&(i+=a,r+=a,o+=Math.ceil(a/c)*(m+d),h&&(i=0,o=0),a%c>0)){f(),re("~ Prepended items count",a,"is not divisible by Columns Count",c,"~"),re("Layout reset required");var g=r-i+1;if(i=0,o=0,!h&&a>g){var p=u-((r=this.getInitialLastShownItemIndex({itemsCount:u,columnsCount:c,firstShownItemIndex:i}))+1);s=Math.ceil(p/c)*(d+m)}}return{beforeItemsHeight:o,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:r}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,r=t.nonMeasuredAreaHeight,o=t.indexOfTheFirstItemInTheRow;ie("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(r)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=o),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(o+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaTop,i=e.visibleAreaBottom,r=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaTop:n,visibleAreaBottom:i,findFirstShownItemIndex:!0});if(null===r)return this.getNonVisibleListShownItemIndexes();if(void 0!==r.firstNonMeasuredItemIndex)return r;var o=r,s=o.firstShownItemIndex,a=o.beforeItemsHeight;return null===(r=this._getShownItemIndex({itemsCount:t,fromIndex:s,beforeItemsHeight:a,visibleAreaTop:n,visibleAreaBottom:i,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==r.firstNonMeasuredItemIndex?r:{firstShownItemIndex:s,lastShownItemIndex:r.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaTop,r=e.visibleAreaBottom,o=e.findFirstShownItemIndex,s=e.findLastShownItemIndex,a=e.fromIndex,l=e.beforeItemsHeight;if(0===a&&(l=0),void 0===l)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+a);if(!t){var u=this.getBeforeResizeItemsCount();if(u>a){var c=this._getShownItemIndex(ce(ce({},e),{},{beforeResize:!0,itemsCount:u})),h=c.notFound,f=c.beforeItemsHeight,m=c.firstShownItemIndex,d=c.lastShownItemIndex;if(!h){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,lastShownItemIndex:void 0===d?void 0:Math.floor(d/g)*g,beforeItemsHeight:f}}l=f,a+=u}}for(var p=t?this.getColumnsCountBeforeResize():this.getColumnsCount(),I=t?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing(),v=a;v<n;){for(var S=v,y=n>S+p?I:0,b=0,w=0;w<p&&v<n;){var C=t?this.getItemHeightBeforeResize(v):this.getItemHeight(v);if(void 0===C)return this.getItemNotMeasuredIndexes(v,{itemsCount:n,firstShownItemIndex:s?a:void 0,indexOfTheFirstItemInTheRow:S,nonMeasuredAreaHeight:r+this.getPrerenderMargin()-l});b=Math.max(b,C),w++,v++}var O=l+b,R=O>i-this.getPrerenderMargin(),H=O+y>=r+this.getPrerenderMargin();if(o){if(R)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}:o?(re("The list is supposed to be visible but no visible item has been found"),null):s?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,r=0;if(!n){var o=this.getBeforeResizeItemsCount();o>0&&(i=this.getBeforeItemsHeight(Math.min(e,o),{beforeResize:!0}),r=o)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();r<e;){for(var l=0,u=0;u<s;){var c=n?this.getItemHeightBeforeResize(r):this.getItemHeight(r);void 0===c&&(c=this.getAverageItemHeight()),l=Math.max(l,c),r++,u++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,r=e+1;r<t;){for(var o=0,s=0;s<n&&r<t;){var a=this.getItemHeight(r);void 0===a&&(a=this.getAverageItemHeight()),o=Math.max(o,a),r++,s++}i+=this.getVerticalSpacing(),i+=o}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),r=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,o=0;o<r;)t+=this.getItemHeightBeforeResize(o*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),o++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,u=0;u<this.getColumnsCount();){var c=this.getItemHeight(n+a*this.getColumnsCount()+u);if(void 0===c)return;l=Math.max(l,c),u++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&fe(t.prototype,n),i&&fe(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),de="scroll",ge="stopped scrolling",pe="manual",Ie="started",ve="non-measured item heights have been measured",Se="viewport width changed",ye="viewport height changed",be="viewport size unchanged",we="item height changed",Ce="items changed",Oe="list top offset changed";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 He=function(){function e(t){var n,i,r,o=this,s=t.bypass,a=t.getWidth,l=t.getHeight,u=t.listenForResize,c=t.onResizeStart,h=t.onResizeStop,f=t.onHeightChange,m=t.onWidthChange,d=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r=function(){if(o.isActive){var e=o.width,t=o.height;o.width=o.getWidth(),o.height=o.getHeight(),o.width===e?o.height===t?o.onNoChange():o.onHeightChange(t,o.height):o.onWidthChange(e,o.width)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[i]=r,this.bypass=s,this.onHeightChange=f,this.onWidthChange=m,this.onNoChange=d,this.getWidth=a,this.getHeight=l,this.listenForResize=u,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.onStart,o=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?X(n):r&&r(),n=$((function(){n=void 0,o&&o(),e.apply(i,a),s()}),t)}))}}(this._onResize,xe,{onStart:c,onStop:h})}var t,n,i;return t=e,(n=[{key:"start",value:function(){this.isActive=!0,this.bypass||(this.width=this.getWidth(),this.height=this.getHeight(),this.unlistenResize=this.listenForResize(this.onResize))}},{key:"stop",value:function(){this.isActive=!1,this.width=void 0,this.height=void 0,this.unlistenResize&&(this.unlistenResize(),this.unlistenResize=void 0)}}])&&Re(t.prototype,n),i&&Re(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),xe=250;function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Te(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){je(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e,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 Le=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,r=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=r}var t,n,i;return t=e,n=[{key:"initializeFromState",value:function(e){this._includesBeforeResizeInState=Boolean(e.beforeResize)}},{key:"cleanUpBeforeResizeItemHeights",value:function(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex,i=e.itemHeights,r=e.beforeResize;if(r&&t<r.itemHeights.length){ie('~ Clean up "before resize" item heights and correct scroll position ~');for(var o=0,s=Math.floor(r.itemHeights.length/this.getColumnsCount()),a=Math.min(s*this.getColumnsCount()-1,n),l=t;l<=a;){for(var u=0,c=0;c<this.getColumnsCount()&&l<=a;){var h=i[l];void 0===h&&(h=this.getAverageItemHeight()),u=Math.max(u,h),l++,c++}o+=u,o+=this.getVerticalSpacing()}for(var f=0,m=Math.min(r.itemHeights.length,n+1),d=Math.ceil(m/r.columnsCount),g=0===t?0:Math.floor((t-1)/r.columnsCount)+1;g<d;)f+=r.itemHeights[g*r.columnsCount],f+=r.verticalSpacing,g++;if(0===t)ie('Drop all "before resize" item heights');else{var p=t,I=r.itemHeights.length-1;p===I?ie("For item index",p,'— drop "before resize" height',r.itemHeights[p]):ie("For item indexes from",p,"to",I,'— drop "before resize" heights',r.itemHeights.slice(p))}return r.itemHeights.splice(t,r.itemHeights.length-t),{scrollBy:o-f,beforeResize:0===t?void 0:Te({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),r=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var o=this.getState(),s=o.beforeResize,a=o.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==r){for(var u=0,c=Math.ceil(l/s.columnsCount),h=0;h<c;)u+=s.itemHeights[h*s.columnsCount],u+=s.verticalSpacing,h++;for(var f=0,m=t;m<n;){for(var d=0,g=0;g<i&&m<n;)d=Math.max(d,a[m]),g++,m++;f+=d,f+=r}var p=u+f,I=Math.ceil(n/i);return new Array(n).fill(Math.max(0,p/I-r))}return s.itemHeights.concat(ze(a,n,i).slice(s.itemHeights.length))}return ze(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&Ee(t.prototype,n),i&&Ee(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function ze(e,t,n){e=e.slice(0,Math.ceil(t/n)*n);for(var i=0;i*n<t;){for(var r=0,o=0;o<n;)r=Math.max(r,e[i*n+o]),o++;for(o=0;o<n;)e[i*n+o]=r,o++;i++}return e.slice(0,t)}function Be(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 Me=function(){function e(t){var n=this,i=t.bypass,r=t.scrollableContainer,o=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,u=t.isImmediateLayoutScheduled,c=t.hasNonRenderedItemsAtTheTop,h=t.hasNonRenderedItemsAtTheBottom,f=t.getLatestLayoutVisibleArea,m=t.getListTopOffset,d=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),Ae(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),Ae(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(ie(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.shouldCallOnScrollListenerWhenStopsScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=r,this.itemsContainer=o,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=u,this.hasNonRenderedItemsAtTheTop=c,this.hasNonRenderedItemsAtTheBottom=h,this.getLatestLayoutVisibleArea=f,this.getListTopOffset=m,this.getPrerenderMargin=d,this.onScrolledToTop=g,this.waitForScrollingToStop=p}var t,n,i;return t=e,(n=[{key:"start",value:function(){void 0!==this.initialScrollPosition&&(this.scrollToY(this.initialScrollPosition),this.initialScrollPosition=void 0),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopListeningToScroll(),this.stopListeningToScroll=void 0,this.shouldCallOnScrollListenerWhenStopsScrolling=void 0,this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(X(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=$((function(){e.onStopScrollingTimer=void 0,e.shouldCallOnScrollListenerWhenStopsScrolling&&(e.shouldCallOnScrollListenerWhenStopsScrolling=void 0,e.onScroll({delayed:!0}))}),ke)}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&Be(t.prototype,n),i&&Be(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),ke=100;function _e(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 Ne=function(){function e(t){var n=t.itemsContainer,i=t.getListTopOffset;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.itemsContainer=n,this.getListTopOffset=i}var t,n,i;return t=e,(n=[{key:"snapshotListHeightBeforeAddingNewItems",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()})}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&_e(t.prototype,n),i&&_e(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();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)}}var We=function(){function e(t){var n=t.container;t.itemHeights;var i=t.getItemHeight,r=t.setItemHeight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=n,this._get=i,this._set=r,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"readItemHeightsFromState",value:function(e){for(var t=e.itemHeights,n=0;n<t.length;){if(void 0===t[n]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=n-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=n),this.measuredItemsHeight+=t[n];n++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(ie("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(ie("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,r=this.lastMeasuredItemIndex,o=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);ie("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,o||(this.firstMeasuredItemIndex=s,o=!0)),(void 0===r||s>r)&&(void 0!==r&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),u=this._measureItemHeight(s,e);l!==u&&(re("Item index",s,"height changed unexpectedly: it was",l,"before, but now it is",u,'. An item\'s height is allowed to change only in two cases: when the item\'s "state" changes and the developer calls `setItemState(i, newState)`, or when the item\'s height changes for some other reason and the developer calls `onItemHeightChange(i)`. Perhaps you forgot to persist the item\'s "state" by calling `setItemState(i, newState)` when it changed, and that "state" got lost when the item element was unmounted, which resulted in a different height when the item was shown again having its "state" reset.'),this._set(s,u))}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&Ve(t.prototype,n),i&&Ve(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function De(e,t){for(var n=0;n<e.length;)e[n]=t(n),n++;return e}function Fe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Ue(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(n),!0).forEach((function(t){qe(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 qe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ye(e){var t=Ue({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=Ue({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function Ke(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Ge(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ke(Object(n),!0).forEach((function(t){Je(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ke(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $e(e){var t=this,n=e.state,i=e.getInitialItemState,r=e.onStateChange,o=e.render,s=e.items;function a(){return this.state}function l(e){this.state=e}function u(e){this.state=Ge(Ge({},this.state),e),o(this.state,this.previousState),this.onRender()}function c(e){var t=e.getInitialItemState,n=s,i=Ge(Ge({},f.call(this,n,{beforeStart:!0})),{},{items:n,itemStates:De(new Array(n.length),(function(e){return t(n[e])}))});return se()&&ie("Initial state (autogenerated)",Ye(i)),ie("First shown item index",i.firstShownItemIndex),ie("Last shown item index",i.lastShownItemIndex),i}function h(e){return se()&&ie("Restore state",Ye(e)),function(e,t){var n=t.columnsCount,i=e.columnsCount||1;if(i!==n)return re("~ Columns Count changed from",i,"to",n,"~"),!0;if(Math.floor(e.firstShownItemIndex/n)*n!==e.firstShownItemIndex)return re("~ First Shown Item Index",e.firstShownItemIndex,"is not divisible by Columns Count",n,"~"),!0}(e=Ge(Ge({},e=function(e){return e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e}(e)),{},{verticalSpacing:void 0}),{columnsCount:this.getActualColumnsCount()})&&(re("Reset Layout"),e=Ge(Ge({},e),f.call(this,e.items,{beforeStart:!1}))),e}function f(e,t){var n=this,i=t.beforeStart,r=e.length,o=function(){return n.getActualColumnsCount()};i?this.layout.getInitialLayoutValueWithFallback("columnsCount",o,1):o();var s=this.layout.getInitialLayoutValues({itemsCount:r,columnsCount:this.getActualColumnsCount(),beforeStart:i}),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.beforeItemsHeight,c=s.afterItemsHeight,h=new Array(r);return this.onBeforeShowItems(e,h,a,l),{itemHeights:h,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:u,afterItemsHeight:c}}this.onStateChange=r,this._render=o,this.getInitialItemState=i,this._setItemState=function(e,n){se()&&(ie("~ Item state changed ~"),ie("Item",e),ie("Previous state\n"+JSON.stringify(t.getState().itemStates[e],null,2)),ie("New state\n"+JSON.stringify(n,null,2))),t.getState().itemStates[e]=n,t.newItemsWillBeRendered&&(t.itemStatesThatChangedWhileNewItemsWereBeingRendered||(t.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),t.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=n)},this.getState=function(){return t._getState()},this.updateState=function(e){se()&&(ie("~ Set state ~"),ie(Ye(e))),e.items&&(t._isSettingNewItems||oe("A `stateUpdate` can only contain `items` property as a result of calling `.setItems()`")),t._isSettingNewItems=void 0,t.previousState=t.getState(),t._updateState(e)},this.getInitialState=function(){return n?h.call(t,n):c.call(t,{getInitialItemState:i})},this.useState=function(e){var n=e.getState,i=e.updateState;if(t._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");if(t._getState)throw new Error("[virtual-scroller] Custom state storage has already been configured");if(o)throw new Error("[virtual-scroller] Creating a `VirtualScroller` class instance with a `render()` parameter means using the default (internal) state storage");if(!n||!i)throw new Error("[virtual-scroller] When using a custom state storage, one must supply both `getState()` and `updateState()` functions");t._usesCustomStateStorage=!0,t._getState=n,t._updateState=i},this.useDefaultStateStorage=function(){if(!o)throw new Error("[virtual-scroller] When using the default (internal) state management, one must supply a `render(state, prevState)` function parameter");t._getState=a.bind(t),t._updateState=u.bind(t),l.bind(t)(t.getInitialState())}}function Xe(){var e=this;function t(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;ie("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),r=t.getNthRenderedItemHeight(0),o=1;o<n;){var s=t.getNthRenderedItemTopOffset(o),a=t.getNthRenderedItemHeight(o);if(s!==i)return s-(i+r);r=Math.max(r,a),o++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0!==i)return ie("Item vertical spacing",i),i;ie("Not enough items rendered to measure vertical spacing")}this.getVerticalSpacing=function(){return e.verticalSpacing||0},this.getVerticalSpacingBeforeResize=function(){var t=e.getState().beforeResize;return t&&t.verticalSpacing||0},this.measureVerticalSpacingIfNotMeasured=function(){if(void 0===e.verticalSpacing)return e.verticalSpacing=t.call(e),e.verticalSpacing}}function Qe(e){var t=this,n=e.getColumnsCount;if(n){var i={getWidth:function(){return t.scrollableContainer.getWidth()}};this.getActualColumnsCountForState=function(){var e=n(i);if(1!==e)return e}}else this.getActualColumnsCountForState=function(){};this.getActualColumnsCount=function(){return t.getActualColumnsCountForState()||1},this.getColumnsCount=function(){return t.getState()&&t.getState().columnsCount||1}}function Ze(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 et(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ze(Object(n),!0).forEach((function(t){tt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ze(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function tt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function nt(){var e=this;function t(e){var n=e.stateUpdate,o=Date.now(),s=i.call(this),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.shownItemsHeight,c=s.firstNonMeasuredItemIndex;if(this.listHeightMeasurement.hasSnapshot()&&(l<this.listHeightMeasurement.getAnchorItemIndex()&&(l=this.listHeightMeasurement.getAnchorItemIndex()),c=void 0),!r.call(this,a,l))return ie("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),t.call(this,{stateUpdate:n});var h=this.layout.getBeforeItemsHeight(a),f=this.layout.getAfterItemsHeight(l,this.getItemsCount()),m=Date.now()-o;ie("~ Calculated Layout"+(this.bypass?" (bypass)":"")+" ~"),m<it||re("Layout calculated in",m,"ms"),this.getColumnsCount()&&ie("Columns count",this.getColumnsCount()),ie("First shown item index",a),ie("Last shown item index",l),ie("Before items height",h),ie("After items height (actual or estimated)",f),ie("Average item height (used for estimated after items height calculation)",this.itemHeights.getAverage()),se()&&(ie("Item heights",this.getState().itemHeights.slice()),ie("Item states",this.getState().itemStates.slice())),this.onBeforeShowItems(this.getState().items,this.getState().itemHeights,a,l),this.firstNonMeasuredItemIndex=c,this.previouslyCalculatedLayout=void 0===u?void 0:{firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:h,shownItemsHeight:u},this.updateState(et({firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:h,afterItemsHeight:f},n))}function n(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}function i(){var e=this.getItemsCount(),t=n.call(this),i=t.top,r=t.bottom;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:i<this.itemsContainer.getHeight()&&r>0?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaTop:i,visibleAreaBottom:r}):(ie("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}function r(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var r=this.getState().itemHeights[i],a=o.call(this,i);a!==r&&(n&&(ie("~ Validate will-be-hidden item heights. ~"),s.call(this,i,r,a)),n=!1,re("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",r,"to",a,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}function o(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}function s(e,t,n){if(this.previouslyCalculatedLayout){var i=n-t;e<this.previouslyCalculatedLayout.firstShownItemIndex?this.previouslyCalculatedLayout.beforeItemsHeight+=i:e>this.previouslyCalculatedLayout.lastShownItemIndex?void 0!==this.previouslyCalculatedLayout.afterItemsHeight&&(this.previouslyCalculatedLayout.afterItemsHeight+=i):this.previouslyCalculatedLayout.shownItemsHeight+=n-t}}this.onUpdateShownItemIndexes=function(n){var i=n.reason,r=n.stateUpdate,o=function(){r&&e.updateState(r)};return e.newItemsWillBeRendered||e.widthHasChanged||e._isResizing||0===e.getItemsCount()?o():(e.scroll.cancelScheduledLayout(),r=e.cancelLayoutTimer({stateUpdate:r}),ie("~ Update Layout (on ".concat(i,") ~")),void t.call(e,{stateUpdate:r}))},this.getListTopOffsetInsideScrollableContainer=function(){var t=e.scrollableContainer.getItemsContainerTopOffset();return e.listTopOffsetWatcher&&e.listTopOffsetWatcher.onListTopOffset(t),t},this._onItemHeightChange=function(t){ie("~ Re-measure item height ~"),ie("Item",t);var n=e.getState(),i=n.itemHeights,r=n.firstShownItemIndex,a=n.lastShownItemIndex;if(!(t>=r&&t<=a))return re("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time.");var l=i[t];if(void 0===l)return oe('"onItemHeightChange()" has been called for item '.concat(t,", but that item hasn't been rendered before."));var u=o.call(e,t);ie("Previous height",l),ie("New height",u),l!==u&&(ie("~ Item height has changed ~"),s.call(e,t,l,u),e.onUpdateShownItemIndexes({reason:we}),e.newItemsWillBeRendered&&(e.itemHeightsThatChangedWhileNewItemsWereBeingRendered||(e.itemHeightsThatChangedWhileNewItemsWereBeingRendered={}),e.itemHeightsThatChangedWhileNewItemsWereBeingRendered[String(t)]=u))},this.getPrerenderMargin=function(){return 1*e.scrollableContainer.getHeight()},this.onBeforeShowItems=function(t,n,i,r){if(e.onItemInitialRender)for(var o=i;o<=r;)void 0===n[o]&&e.onItemInitialRender(t[o]),o++},this.measureItemHeightsAndSpacing=function(){e.itemHeights.measureItemHeights(e.getState().firstShownItemIndex,e.getState().lastShownItemIndex);var t=e.measureVerticalSpacingIfNotMeasured();if(t&&0!==t)return{verticalSpacing:t}},this.cancelLayoutTimer=function(t){var n=t.stateUpdate;return e.layoutTimer?(X(e.layoutTimer),e.layoutTimer=void 0,n||e.layoutTimerStateUpdate?(n=et(et({},e.layoutTimerStateUpdate),n),e.layoutTimerStateUpdate=void 0,n):void 0):n},this.scheduleLayoutTimer=function(t){var n=t.reason,i=t.stateUpdate;e.layoutTimerStateUpdate=i,e.layoutTimer=$((function(){e.layoutTimerStateUpdate=void 0,e.layoutTimer=void 0,e.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}}var it=15;function rt(e){return rt="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},rt(e)}var ot=Object.prototype.hasOwnProperty;function st(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function at(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 lt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?at(Object(n),!0).forEach((function(t){ut(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):at(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ut(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ct(){var e=this;function t(e,t){if(e){var n=e.prependedItemsCount;e.appendedItemsCount;var i=this.getState(),r=i.itemHeights,o=i.itemStates;if(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered)for(var s=0,a=Object.keys(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered);s<a.length;s++){var l=a[s];r[n+parseInt(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var u=0,c=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);u<c.length;u++){var h=c[u];o[n+parseInt(h)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[h]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(re('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after appending items'),re("Previously calculated layout",this.previouslyCalculatedLayout),re("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightMeasurement.hasSnapshot()){if(0===t.firstShownItemIndex){ie("~ Restore Scroll Position ~");var f=this.listHeightMeasurement.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightMeasurement.reset(),f?(ie("Scroll down by",f),this.scroll.scrollByY(f)):ie("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}:(re('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after prepending items'),re("Previously calculated layout",this.previouslyCalculatedLayout),re("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}re('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "onRender()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}function n(e){var t=e.reason,n=e.stateUpdate;this._useTimeoutInRenderLoop?(n=this.cancelLayoutTimer({stateUpdate:n}),this.scheduleLayoutTimer({reason:t,stateUpdate:n})):this.onUpdateShownItemIndexes({reason:t,stateUpdate:n})}function i(){var e=Boolean(this.widthHasChanged);this.widthHasChanged=void 0;var t=void 0!==this.firstNonMeasuredItemIndex;return this.firstNonMeasuredItemIndex=void 0,this.newItemsWillBeRendered=void 0,this.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,this.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0,{nonMeasuredItemsHaveBeenRendered:t,widthHasChanged:e}}this._onRender=function(r,o){var s,a,l;if(ie("~ Rendered ~"),se()&&ie("State",Ye(r)),e.onStateChange&&(function(e,t){if(st(e,t))return!0;if("object"!==rt(e)||null===e||"object"!==rt(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(!ot.call(t,n[r])||!st(e[n[r]],t[n[r]]))return!1;return!0}(r,o)||e.onStateChange(r)),e.tbody&&(s=e.getItemsContainerElement(),a=r.beforeItemsHeight,l=r.afterItemsHeight,s.style.setProperty("--VirtualScroller-paddingTop",c(a)),s.style.setProperty("--VirtualScroller-paddingBottom",c(l))),o){var u,h=i.call(e),f=h.nonMeasuredItemsHaveBeenRendered,m=h.widthHasChanged;f&&(u=ve),m&&(u=Se,e.itemHeights.reset(),e.verticalSpacing=void 0);var d,g=o.items,p=r.items;if(p!==g){var I=e.getItemsDiff(g,p);if(I){var v=I.prependedItemsCount;e.itemHeights.onPrepend(v)}else e.itemHeights.reset();m||"SEAMLESS_PREPEND"!==t.call(e,I,r)&&(u=Ce)}if(r.firstShownItemIndex!==o.firstShownItemIndex||r.lastShownItemIndex!==o.lastShownItemIndex||r.items!==o.items||m){var S=e.measureItemHeightsAndSpacing();S&&(d=lt(lt({},d),S))}var y=e.beforeResize.cleanUpBeforeResizeItemHeights();if(void 0!==y){var b=y.scrollBy,w=y.beforeResize;ie("Correct scroll position by",b),e.scroll.scrollByY(b),d=lt(lt({},d),{},{beforeResize:w})}e._isActive?u?n.call(e,{stateUpdate:d,reason:u}):d?e.updateState(d):ie("~ Finished Layout ~"):e._stoppedStateUpdate=d}}}function ht(){var e=this;this.onResize=function(){e.previouslyCalculatedLayout=void 0,e.listHeightMeasurement.reset();var t=e.newItemsWillBeRendered?e.newItemsWillBeRendered.count:e.getState().itemHeights.length,n=e.newItemsWillBeRendered?e.newItemsWillBeRendered.layout:e.getState(),i={scrollableContainerWidth:e.scrollableContainer.getWidth(),firstShownItemIndex:n.firstShownItemIndex,lastShownItemIndex:n.lastShownItemIndex,beforeItemsHeight:n.beforeItemsHeight,afterItemsHeight:n.afterItemsHeight,itemHeights:new Array(t),columnsCount:e.getActualColumnsCountForState(),verticalSpacing:void 0},r=n.firstShownItemIndex,o=n.lastShownItemIndex,s=e.getActualColumnsCount(),a=Math.floor(r/s)*s,l=Math.min(Math.ceil((o+1)/s)*s,t)-1;a!==r&&(ie("Columns Count changed from",e.getState().columnsCount||1,"to",s),ie("First Shown Item Index needs to change from",r,"to",a)),i.firstShownItemIndex=a,i.lastShownItemIndex=l;var u=e.getVerticalSpacing(),c=e.getColumnsCount();e.shouldDiscardBeforeResizeItemHeights()||0===a?e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(i.beforeResize=void 0):i.beforeResize={verticalSpacing:u,columnsCount:c,itemHeights:e.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:r,newFirstShownItemIndex:a,newColumnsCount:s})},e.widthHasChanged={stateUpdate:i},e.updateState(i)},this.shouldDiscardBeforeResizeItemHeights=function(){if(e.newItemsWillBeRendered){var t=e.newItemsWillBeRendered,n=t.prepend,i=t.replace;return n||i}}}function ft(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 mt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ft(Object(n),!0).forEach((function(t){dt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ft(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function dt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function gt(){var e=this;this.getItemsCount=function(){return e.getState().items.length},this._setItems=function(t){var n,i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=e.getState(),s=o.items,a=e.getState(),l=a.itemStates,u=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),c=u.itemHeights;ie("~ Update items ~");var h=e.getItemsDiff(s,t);if(h){var f,m=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),d=m.firstShownItemIndex,g=m.lastShownItemIndex,p=m.beforeItemsHeight,I=m.afterItemsHeight,v=0===d&&(r.preserveScrollPositionOnPrependItems||r.preserveScrollPosition),S=h.prependedItemsCount,y=h.appendedItemsCount;n=e.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:d,lastShownItemIndex:g,beforeItemsHeight:p,afterItemsHeight:I},{prependedItemsCount:S,appendedItemsCount:y},{itemsCount:t.length,columnsCount:e.getActualColumnsCount(),shouldRestoreScrollPosition:v,onResetGridLayout:function(){return f=!0}}),S>0&&(ie("Prepend",S,"items"),c=new Array(S).concat(c),l=De(new Array(S),(function(n){return e.getInitialItemState(t[n])})).concat(l),v?(ie("Will restore scroll position"),e.listHeightMeasurement.snapshotListHeightBeforeAddingNewItems({previousItems:s,newItems:t,prependedItemsCount:S}),void 0!==e.firstNonMeasuredItemIndex&&(e.firstNonMeasuredItemIndex+=S)):(ie("Reset layout"),f?(ie("Reason: Prepended items count",S,"is not divisible by Columns Count",e.getActualColumnsCount()),c=new Array(t.length)):ie("Reason: Prepended items' heights are unknown"),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0)),y>0&&(ie("Append",y,"items"),c=c.concat(new Array(y)),l=l.concat(De(new Array(y),(function(n){return e.getInitialItemState(t[S+s.length+n])})))),i={prepend:S>0,append:y>0}}else ie("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."),ie("Previous items",s),ie("New items",t),c=new Array(t.length),l=De(new Array(t.length),(function(n){return e.getInitialItemState(t[n])})),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0,e.listHeightMeasurement.reset(),i={replace:!0};ie("~ Update state ~"),ie("First shown item index",n.firstShownItemIndex),ie("Last shown item index",n.lastShownItemIndex),ie("Before items height",n.beforeItemsHeight),ie("After items height (actual or estimated)",n.afterItemsHeight),e.onBeforeShowItems(t,c,n.firstShownItemIndex,n.lastShownItemIndex),e.newItemsWillBeRendered=mt(mt({},i),{},{count:t.length,layout:n});var b=mt(mt({},n),{},{items:t,itemStates:l,itemHeights:c});e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(e.shouldDiscardBeforeResizeItemHeights()?b.beforeResize=void 0:b.beforeResize=e.widthHasChanged?e.widthHasChanged.stateUpdate.beforeResize:e.getState().beforeResize),e._isSettingNewItems=!0,e.updateState(b)},this.getItemsDiff=function(t,n){return function(e,t,n){var i=-1,r=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var r=0;r<e.length;){if(t.length<=n+r||!i(t[n+r],e[r]))return!1;r++}return!0}(e,t,i,n)&&(r=i+e.length-1)),i>=0&&r>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(r+1)}}(t,n,e.isItemEqual)}}function pt(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.render,o=i.state,s=i.getInitialItemState,a=void 0===s?function(){}:s,l=i.onStateChange,u=i.initialScrollPosition,c=i.onScrollPositionChange,m=i.scrollableContainer,d=i.measureItemsBatchSize,g=void 0===d?50:d,p=i.getColumnsCount,I=i.getItemId,v=i.tbody,S=i.estimatedItemHeight,y=i.getEstimatedVisibleItemRowsCount,b=i.onItemInitialRender,w=i.onItemFirstRender,C=i._useTimeoutInRenderLoop,O=i._waitForScrollingToStop,R=i.engine,H=i.bypass,x=i.getEstimatedItemHeight,P=i.getScrollableContainer;if(ie("~ Initialize ~"),this.engine=R||ee,x||"number"!=typeof S||(x=function(){return S}),!P&&m&&(P=function(){return m}),this.getItemsContainerElement=e,i.getState||i.setState)throw new Error("[virtual-scroller] `getState`/`setState` options usage has changed in the new version. See the readme for more details.");if(v){if(this.engine!==ee)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");ie("~ <tbody/> detected ~"),this.tbody=!0,f()||(ie("~ <tbody/> not supported ~"),oe(h),H=!0)}H&&ie('~ "bypass" mode ~'),this.bypass=H,this._useTimeoutInRenderLoop=C,this.isItemEqual=I?function(e,t){return I(e)===I(t)}:function(e,t){return e===t},b?this.onItemInitialRender=b:w&&(this.onItemInitialRender=function(e){re("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=n.getState().items.indexOf(e);t>=0&&w(t)}),o&&(t=o.items),ie("Items count",t.length),x&&ie("Estimated item height",x()),$e.call(this,{state:o,getInitialItemState:a,onStateChange:l,render:r,items:t}),Xe.call(this),Qe.call(this,{getColumnsCount:p}),nt.call(this),ct.call(this),ht.call(this),gt.call(this),It.call(this,{getScrollableContainer:P,getEstimatedItemHeight:x,getEstimatedVisibleItemRowsCount:y,measureItemsBatchSize:g,initialScrollPosition:u,onScrollPositionChange:c,waitForScrollingToStop:O}),o&&(this.itemHeights.readItemHeightsFromState(o),this.beforeResize.initializeFromState(o))}function It(e){var t=this,n=e.getScrollableContainer,i=e.getEstimatedItemHeight,r=e.getEstimatedVisibleItemRowsCount,o=e.measureItemsBatchSize,s=e.initialScrollPosition,a=e.onScrollPositionChange,l=e.waitForScrollingToStop;this.itemsContainer=this.engine.createItemsContainer(this.getItemsContainerElement),this.getItemsContainerElement()&&this.itemsContainer.clear(),this.scrollableContainer=this.engine.createScrollableContainer(n,this.getItemsContainerElement),this.itemHeights=new We({container:this.itemsContainer,getItemHeight:function(e){return t.getState().itemHeights[e]},setItemHeight:function(e,n){return t.getState().itemHeights[e]=n}}),this.layout=new me({bypass:this.bypass,getInitialEstimatedItemHeight:i,getInitialEstimatedVisibleItemRowsCount:r,measureItemsBatchSize:o,getPrerenderMargin:function(){return t.getPrerenderMargin()},getVerticalSpacing:function(){return t.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return t.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return t.getColumnsCount()},getColumnsCountBeforeResize:function(){return t.getState().beforeResize&&t.getState().beforeResize.columnsCount},getItemHeight:function(e){return t.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return t.getState().beforeResize&&t.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return t.getState().beforeResize?t.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return t.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return t.scrollableContainer&&t.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return t.previouslyCalculatedLayout}}),this.resize=new He({bypass:this.bypass,getWidth:function(){return t.scrollableContainer.getWidth()},getHeight:function(){return t.scrollableContainer.getHeight()},listenForResize:function(e){return t.scrollableContainer.onResize(e)},onResizeStart:function(){ie("~ Scrollable container resize started ~"),t._isResizing=!0},onResizeStop:function(){ie("~ Scrollable container resize finished ~"),t._isResizing=void 0},onNoChange:function(){t.onUpdateShownItemIndexes({reason:be})},onHeightChange:function(){return t.onUpdateShownItemIndexes({reason:ye})},onWidthChange:function(e,n){ie("~ Scrollable container width changed from",e,"to",n,"~"),t.onResize()}}),this.scroll=new Me({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:l,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delayed;t.onUpdateShownItemIndexes({reason:n?ge:de})},initialScrollPosition:s,onScrollPositionChange:a,isImmediateLayoutScheduled:function(){return Boolean(t.layoutTimer)},hasNonRenderedItemsAtTheTop:function(){return t.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return t.getState().lastShownItemIndex<t.getItemsCount()-1},getLatestLayoutVisibleArea:function(){return t.latestLayoutVisibleArea},getListTopOffset:this.getListTopOffsetInsideScrollableContainer,getPrerenderMargin:function(){return t.getPrerenderMargin()}}),this.listHeightMeasurement=new Ne({itemsContainer:this.itemsContainer,getListTopOffset:this.getListTopOffsetInsideScrollableContainer}),this.engine.watchListTopOffset&&(this.listTopOffsetWatcher=this.engine.watchListTopOffset({getListTopOffset:this.getListTopOffsetInsideScrollableContainer,onListTopOffsetChange:function(e){return e.reason,t.onUpdateShownItemIndexes({reason:Oe})}})),this.beforeResize=new Le({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount})}function vt(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 St(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?vt(Object(n),!0).forEach((function(t){wt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function yt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function bt(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 wt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ct=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};yt(this,e),wt(this,"stop",(function(){if(!i._isActive)throw new Error("[virtual-scroller] Can't stop a `VirtualScroller` that hasn't been started");i._isActive=!1,ie("~ Stop ~"),i.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.isStarted()&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),wt(this,"updateLayout",(function(){i.hasToBeStarted(),i.onUpdateShownItemIndexes({reason:pe})})),wt(this,"onRender",(function(){i._onRender(i.getState(),i.previousState)})),pt.call(this,t,n,r)}var t,n,i;return t=e,n=[{key:"start",value:function(){if(this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");!1===this._isActive||(this._usesCustomStateStorage||this.useDefaultStateStorage(),this._render&&this._render(this.getState())),ie("~ Start ~"),this._isActive=!0,this.listHeightMeasurement.reset(),this._isResizing=void 0,this._isSettingNewItems=void 0,this.tbody&&(this.getItemsContainerElement().classList.contains(m)&&Boolean(document.getElementById(d))||function(e){e.classList.add(m);var t=document.createElement("style");t.id=d,t.innerText="\n\t\ttbody.".concat(m,":before {\n\t\t\tcontent: '';\n\t\t\tdisplay: table-row;\n\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t}\n\t\ttbody.").concat(m,":after {\n\t\t\tcontent: '';\n\t\t\tdisplay: table-row;\n\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t}\n\t").replace(/[\n\t]/g,""),document.head.appendChild(t)}(this.getItemsContainerElement()));var e=this._stoppedStateUpdate;this._stoppedStateUpdate=void 0,this.verticalSpacing=void 0;var t=this.measureItemHeightsAndSpacing();if(t&&(e=St(St({},e),t)),this.resize.start(),this.scroll.start(),void 0===this.getState().scrollableContainerWidth){var n=this.scrollableContainer.getWidth();e=St(St({},e),{},{scrollableContainerWidth:n})}else{var i=this.scrollableContainer.getWidth(),r=this.getState().scrollableContainerWidth;if(i!==r)return ie("~ Scrollable container width changed from",r,"to",i,"~"),this.onResize()}if(this._usesCustomStateStorage&&this.getActualColumnsCount()!==(this.getState().columnsCount||1))return this.onResize();this.onUpdateShownItemIndexes({reason:Ie,stateUpdate:e})}},{key:"hasToBeStarted",value:function(){if(!this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` hasn't been started")}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onItemHeightChange",value:function(e){this.hasToBeStarted(),this._onItemHeightChange(e)}},{key:"setItemState",value:function(e,t){this.hasToBeStarted(),this._setItemState(e,t)}},{key:"onItemStateChange",value:function(e,t){this.setItemState(e,t)}},{key:"setItems",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.hasToBeStarted(),this._setItems(e,t)}}],n&&bt(t.prototype,n),i&&bt(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Ot(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Rt(t){var n=t.getItemId,i=e.useRef(),r=e.useMemo((function(){var e=0;return function(){i.current=String((e===Number.MAX_SAFE_INTEGER&&(e=0),++e))}}),[i]);e.useMemo((function(){r()}),[]);var o=e.useCallback((function(){n||r()}),[n,r]),s=e.useCallback((function(e,t){return n?n(e):"".concat(i.current,":").concat(t)}),[n,i]);return{getItemKey:s,updateItemKeysForNewItems:o}}var Ht=["as","items","itemComponent","itemComponentProps","estimatedItemHeight","getEstimatedItemHeight","getEstimatedVisibleItemRowsCount","bypass","tbody","preserveScrollPosition","preserveScrollPositionOnPrependItems","measureItemsBatchSize","scrollableContainer","getScrollableContainer","getColumnsCount","getItemId","className","onMount","onItemFirstRender","onItemInitialRender","initialScrollPosition","onScrollPositionChange","onStateChange","initialState","getInitialItemState"];function xt(){return xt=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},xt.apply(this,arguments)}function Pt(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 Tt(t,n){var r=t.as,o=t.items,a=t.itemComponent,u=t.itemComponentProps,h=t.estimatedItemHeight,f=t.getEstimatedItemHeight,d=t.getEstimatedVisibleItemRowsCount,g=t.bypass,p=t.tbody,I=t.preserveScrollPosition,v=t.preserveScrollPositionOnPrependItems,S=t.measureItemsBatchSize,y=t.scrollableContainer,b=t.getScrollableContainer,w=t.getColumnsCount,C=t.getItemId,O=t.className,R=t.onMount,H=t.onItemFirstRender,x=t.onItemInitialRender,P=t.initialScrollPosition,T=t.onScrollPositionChange,j=t.onStateChange,E=t.initialState,L=t.getInitialItemState,z=Pt(t,Ht),B=e.useRef(),A=function(t,n){var i=t.items,r=t.estimatedItemHeight,o=t.getEstimatedItemHeight,s=t.getEstimatedVisibleItemRowsCount,a=t.bypass,l=t.tbody,u=t.onItemInitialRender,c=t.onItemFirstRender,h=t.initialScrollPosition,f=t.onScrollPositionChange,m=t.measureItemsBatchSize,d=t.scrollableContainer,g=t.getScrollableContainer,p=t.getColumnsCount,I=t.getItemId,v=t.AsComponent,S=t.initialState,y=t.getInitialItemState,b=t.onStateChange,w=n.container;return e.useMemo((function(){var e;return new Ct((function(){return w.current}),i,(Ot(e={_useTimeoutInRenderLoop:!0,estimatedItemHeight:r,getEstimatedItemHeight:o,getEstimatedVisibleItemRowsCount:s,bypass:a,tbody:l,onItemInitialRender:u,onItemFirstRender:c,initialScrollPosition:h,onScrollPositionChange:f,measureItemsBatchSize:m,scrollableContainer:d,getScrollableContainer:g,getColumnsCount:p,getItemId:I},"tbody","tbody"===v),Ot(e,"state",S),Ot(e,"getInitialItemState",y),Ot(e,"onStateChange",b),e))}),[])}({items:o,estimatedItemHeight:h,getEstimatedItemHeight:f,getEstimatedVisibleItemRowsCount:d,bypass:g,tbody:p,onItemInitialRender:x,onItemFirstRender:H,initialScrollPosition:P,onScrollPositionChange:T,measureItemsBatchSize:S,scrollableContainer:y,getScrollableContainer:b,getColumnsCount:w,getItemId:C,AsComponent:r,initialState:E,getInitialItemState:L,onStateChange:j},{container:B}),M=function(t){var n=t.initialState,i=t.onRender,r=t.items,o=l(e.useState(),2),a=o[0],u=o[1],c=e.useRef(n),h=e.useRef(n);return c.current!==h.current&&(c.current=a),e.useLayoutEffect((function(){i()}),[a,r]),{getState:function(){return c.current},updateState:function(e){var t=s(s({},h.current),e);h.current=t,e.items?c.current=t:u(t)}}}({initialState:e.useMemo((function(){return A.getInitialState()}),[]),onRender:A.onRender,items:o}),k=M.getState,_=M.updateState;e.useMemo((function(){A.useState({getState:k,updateState:_})}),[]),function(t){e.useLayoutEffect((function(){return t.start(),function(){t.stop()}}),[])}(A);var N=Rt({getItemId:C}),V=N.getItemKey,W=N.updateItemKeysForNewItems,D=function(t){var n=t.items,i=t.virtualScroller,r=e.useMemo((function(){return new Array(n.length)}),[]),o=e.useRef(r),s=e.useCallback((function(e){return o.current[e]||(o.current[e]=function(t){return i.setItemState(e,t)}),o.current[e]}),[i,o]);return s}({items:o,virtualScroller:A}),F=function(t){var n=t.items,i=t.virtualScroller,r=e.useMemo((function(){return new Array(n.length)}),[]),o=e.useRef(r),s=e.useCallback((function(e){return o.current[e]||(o.current[e]=function(){return i.onItemHeightChange(e)}),o.current[e]}),[i,o]);return s}({items:o,virtualScroller:A});!function(t,n){var i=n.virtualScroller,r=n.preserveScrollPosition,o=n.preserveScrollPositionOnPrependItems,s=n.updateItemKeysForNewItems,a=i.getState(),l=a.items;a.firstShownItemIndex;var u=e.useRef(t),c=t!==u.current;if(u.current=t,c){var h=!0,f=!0,m=i.getItemsDiff(l,t);if(m){var d=m.prependedItemsCount,g=m.appendedItemsCount;0===d&&0===g?(h=!1,f=!1):0===d&&g>0&&(f=!1)}h&&(i.setItems(t,{preserveScrollPositionOnPrependItems:o||r}),f&&s())}}(o,{virtualScroller:A,preserveScrollPosition:I,preserveScrollPositionOnPrependItems:v,updateItemKeysForNewItems:W}),function(t,n){var i=n.virtualScroller;e.useImperativeHandle(t,(function(){return{updateLayout:function(){return i.updateLayout()},layout:function(){return i.updateLayout()},updateItem:function(e){return oe('[virtual-scroller] ".updateItem(i)" method of React <VirtualScroller/> has been removed')},renderItem:function(e){return oe('[virtual-scroller] ".renderItem(i)" method of React <VirtualScroller/> has been removed')}}}),[i])}(n,{virtualScroller:A}),e.useLayoutEffect((function(){R&&R()}),[]),O=function(e,t){return t.tbody?e?e+" "+m:m:e}(O,{tbody:p});var U=function(e){var t=e.tbody,n=e.virtualScroller;if(!t){var i=n.getState(),r=i.beforeItemsHeight,o=i.afterItemsHeight;return{paddingTop:c(r),paddingBottom:c(o)}}}({tbody:p,virtualScroller:A}),q=A.getState(),Y=q.items,K=q.itemStates,G=q.firstShownItemIndex,J=q.lastShownItemIndex;return i.default.createElement(r,xt({},z,{ref:B,className:O,style:U}),Y.map((function(e,t){return t>=G&&t<=J?i.default.createElement(a,xt({item:e,itemIndex:t},u,{key:V(e,t),state:K&&K[t],setState:D(t),onStateChange:D(t),onHeightChange:F(t)}),e):null})))}var jt=Tt=i.default.forwardRef(Tt),Et=r.default.elementType||r.default.oneOfType([r.default.string,r.default.func,r.default.object]);return Tt.propTypes={as:Et,items:r.default.arrayOf(r.default.any).isRequired,itemComponent:Et.isRequired,itemComponentProps:r.default.object,estimatedItemHeight:r.default.number,getEstimatedItemHeight:r.default.func,getEstimatedVisibleItemRowsCount:r.default.func,bypass:r.default.bool,tbody:r.default.bool,preserveScrollPositionOnPrependItems:r.default.bool,preserveScrollPosition:r.default.bool,measureItemsBatchSize:r.default.number,scrollableContainer:r.default.any,getScrollableContainer:r.default.func,getColumnsCount:r.default.func,getItemId:r.default.func,className:r.default.string,onMount:r.default.func,onItemInitialRender:r.default.func,onItemFirstRender:r.default.func,initialScrollPosition:r.default.number,onScrollPositionChange:r.default.func,onStateChange:r.default.func,initialState:r.default.shape({items:r.default.arrayOf(r.default.object).isRequired,itemStates:r.default.arrayOf(r.default.any).isRequired,firstShownItemIndex:r.default.number.isRequired,lastShownItemIndex:r.default.number.isRequired,beforeItemsHeight:r.default.number.isRequired,afterItemsHeight:r.default.number.isRequired,itemHeights:r.default.arrayOf(r.default.number).isRequired,columnsCount:r.default.number,verticalSpacing:r.default.number}),getInitialItemState:r.default.func},Tt.defaultProps={as:"div"},jt}));
|
|
2
2
|
//# sourceMappingURL=virtual-scroller-react.js.map
|