Socket
Socket
Sign inDemoInstall

virtual-scroller

Package Overview
Dependencies
Maintainers
1
Versions
78
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

virtual-scroller - npm Package Compare versions

Comparing version 1.8.0 to 1.8.1

2

bundle/virtual-scroller-dom.js

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VirtualScroller=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var t=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(t){(function(){var e,n,i,o,r,s;"undefined"!=typeof performance&&null!==performance&&performance.now?t.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(t.exports=function(){return(e()-r)/1e6},n=process.hrtime,o=(e=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),r=o-s):Date.now?(t.exports=function(){return Date.now()-i},i=Date.now()):(t.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(e)})),n="undefined"==typeof window?e:window,i=["moz","webkit"],o="AnimationFrame",r=n["request"+o],s=n["cancel"+o]||n["cancelRequest"+o],a=0;!r&&a<i.length;a++)r=n[i[a]+"Request"+o],s=n[i[a]+"Cancel"+o]||n[i[a]+"CancelRequest"+o];if(!r||!s){var l=0,h=0,u=[];r=function(e){if(0===u.length){var n=t(),i=Math.max(0,16.666666666666668-(n-l));l=i+n,setTimeout((function(){var e=u.slice(0);u.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(l)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(i))}return u.push({handle:++h,callback:e,cancelled:!1}),h},s=function(e){for(var t=0;t<u.length;t++)u[t].handle===e&&(u[t].cancelled=!0)}}var c=function(e){return r.call(n,e)};c.cancel=function(){s.apply(n,arguments)},c.polyfill=function(e){e||(e=n),e.requestAnimationFrame=r,e.cancelAnimationFrame=s};var f=c.cancel;function d(e,t){var n=Date.now(),i=c((function o(){Date.now()-n>=t?e():i=c(o)}));return{clear:function(){return f(i)}}}function m(e){e&&e.clear()}function g(e){return(e%1==0?e:e.toFixed(2))+"px"}var p="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 I(){return"undefined"==typeof window||!window.document.documentMode}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)}}var S=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)}}])&&v(t.prototype,n),i&&v(t,i),e}();function y(e){return y="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},y(e)}function b(e,t){return b=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},b(e,t)}function w(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=x(e);if(t){var o=x(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return C(this,n)}}function C(e,t){if(t&&("object"===y(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 x(e){return x=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},x(e)}function O(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function H(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function R(e,t,n){return t&&H(e.prototype,t),n&&H(e,n),e}var T=function(){function e(t,n){O(this,e),this.element=t,this.getItemsContainerElement=n}return R(e,[{key:"getScrollY",value:function(){return this.element.scrollTop}},{key:"scrollToY",value:function(e){this.element.scrollTo?this.element.scrollTo(0,e):this.element.scrollTop=e}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"getHeight",value:function(){return this.element.offsetHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=this.element.getBoundingClientRect().top,t=this.element.clientTop;return this.getItemsContainerElement().getBoundingClientRect().top-e+this.getScrollY()-t}},{key:"onScroll",value:function(e){var t=this;return this.element.addEventListener("scroll",e),function(){return t.element.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e){var t,n=this;if("undefined"!=typeof ResizeObserver){var i=new ResizeObserver((function(t){t[0],e()}));i.observe(this.element),t=function(){return i.unobserve(n.element)}}var o=P(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),o()}}}]),e}(),L=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&b(e,t)}(n,e);var t=w(n);function n(e){return O(this,n),t.call(this,window,e)}return R(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 P(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(T);function P(e,t){var n=t.itemsContainerElement,i=function(){document.fullscreenElement&&!document.fullscreenElement.contains(n)||e()};return window.addEventListener("resize",i),function(){return window.removeEventListener("resize",i)}}function z(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var k=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this.isRendered=!0,this.watchListTopOffset()}},{key:"stop",value:function(){this.isRendered=!1,this.watchListTopOffsetTimer&&(m(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e.isRendered&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=d(n,500)))}()}}])&&z(t.prototype,n),i&&z(t,i),e}(),A={createItemsContainer:function(e){return new S(e)},createScrollableContainer:function(e,t){return e?new T(e,t):"undefined"!=typeof window?new L(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new k({getListTopOffset:t,onListTopOffsetChange:n})}};function B(e){return function(e){if(Array.isArray(e))return M(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 M(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 M(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 M(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 j(){if(W()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,B(["[virtual-scroller]"].concat(n)))}}function E(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(U())return N.apply(this,n);(e=console).warn.apply(e,B(["[virtual-scroller]"].concat(n)))}function N(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(j.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))}),0)):(i=console).error.apply(i,B(["[virtual-scroller]"].concat(t)))}function W(){var e=V("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function U(){return V("VirtualScrollerWarningsAreErrors")}function V(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function _(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?D(Object(n),!0).forEach((function(t){F(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function F(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Y(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var q=function(){function e(t){var n=t.bypass,i=t.estimatedItemHeight,o=t.measureItemsBatchSize,r=t.getPrerenderMargin,s=t.getVerticalSpacing,a=t.getVerticalSpacingBeforeResize,l=t.getColumnsCount,h=t.getColumnsCountBeforeResize,u=t.getItemHeight,c=t.getItemHeightBeforeResize,f=t.getBeforeResizeItemsCount,d=t.getAverageItemHeight,m=t.getMaxVisibleAreaHeight,g=t.getPreviouslyCalculatedLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.estimatedItemHeight=i,this.measureItemsBatchSize=o,this.getPrerenderMargin=r,this.getVerticalSpacing=s,this.getVerticalSpacingBeforeResize=a,this.getColumnsCount=l,this.getColumnsCountBeforeResize=h,this.getItemHeight=u,this.getItemHeightBeforeResize=c,this.getBeforeResizeItemsCount=f,this.getAverageItemHeight=d,this.getMaxVisibleAreaHeight=m,this.getPreviouslyCalculatedLayout=g}var t,n,i;return t=e,n=[{key:"getInitialLayoutValues",value:function(e){var t,n,i=e.itemsCount,o=e.columnsCount;return i>0&&(t=0,n=this.getInitialLastShownItemIndex({itemsCount:i,columnsCount:o,firstShownItemIndex:t})),{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var o=1;return this.getMaxVisibleAreaHeight()&&(o=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin())),Math.min(i+(o*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){return this.getAverageItemHeight()||this.estimatedItemHeight||0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,o=e.lastShownItemIndex,r=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,h=n.itemsCount,u=n.columnsCount,c=n.shouldRestoreScrollPosition,f=this.getAverageItemHeight(),d=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/u)*(d+f)),a>0&&(i+=a,o+=a,r+=Math.ceil(a/u)*(f+d),c&&(i=0,r=0),a%u>0)){E("~ Prepended items count",a,"is not divisible by Columns Count",u,"~"),E("Reset Layout");var m=o-i+1;if(i=0,r=0,!c&&a>m){var g=h-((o=this.getInitialLastShownItemIndex({itemsCount:h,columnsCount:u,firstShownItemIndex:i}))+1);s=Math.ceil(g/u)*(d+f)}}return{beforeItemsHeight:r,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:o}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,o=t.nonMeasuredAreaHeight,r=t.indexOfTheFirstItemInTheRow;j("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(o)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=r),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(r+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaTop,i=e.visibleAreaBottom,o=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaTop:n,visibleAreaBottom:i,findFirstShownItemIndex:!0});if(null===o)return this.getNonVisibleListShownItemIndexes();if(void 0!==o.firstNonMeasuredItemIndex)return o;var r=o,s=r.firstShownItemIndex,a=r.beforeItemsHeight;return null===(o=this._getShownItemIndex({itemsCount:t,fromIndex:s,beforeItemsHeight:a,visibleAreaTop:n,visibleAreaBottom:i,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==o.firstNonMeasuredItemIndex?o:{firstShownItemIndex:s,lastShownItemIndex:o.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaTop,o=e.visibleAreaBottom,r=e.findFirstShownItemIndex,s=e.findLastShownItemIndex,a=e.fromIndex,l=e.beforeItemsHeight;if(0===a&&(l=0),void 0===l)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+a);if(!t){var h=this.getBeforeResizeItemsCount();if(h>a){var u=this._getShownItemIndex(_(_({},e),{},{beforeResize:!0,itemsCount:h})),c=u.notFound,f=u.beforeItemsHeight,d=u.firstShownItemIndex,m=u.lastShownItemIndex;if(!c){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===d?void 0:Math.floor(d/g)*g,lastShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,beforeItemsHeight:f}}l=f,a+=h}}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:o+this.getPrerenderMargin()-l});b=Math.max(b,C),w++,v++}var x=l+b,O=x>i-this.getPrerenderMargin(),H=x+y>=o+this.getPrerenderMargin();if(r){if(O)return{firstShownItemIndex:S,beforeItemsHeight:l}}else if(s&&H)return{lastShownItemIndex:Math.min(S+p-1,n-1)};l+=b+y}return t?{notFound:!0,beforeItemsHeight:l}:r?(E("The list is supposed to be visible but no visible item has been found"),null):s?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,o=0;if(!n){var r=this.getBeforeResizeItemsCount();r>0&&(i=this.getBeforeItemsHeight(Math.min(e,r),{beforeResize:!0}),o=r)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();o<e;){for(var l=0,h=0;h<s;){var u=n?this.getItemHeightBeforeResize(o):this.getItemHeight(o);void 0===u&&(u=this.getAverageItemHeight()),l=Math.max(l,u),o++,h++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,o=e+1;o<t;){for(var r=0,s=0;s<n&&o<t;){var a=this.getItemHeight(o);void 0===a&&(a=this.getAverageItemHeight()),r=Math.max(r,a),o++,s++}i+=this.getVerticalSpacing(),i+=r}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),o=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,r=0;r<o;)t+=this.getItemHeightBeforeResize(r*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),r++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,h=0;h<this.getColumnsCount();){var u=this.getItemHeight(n+a*this.getColumnsCount()+h);if(void 0===u)return;l=Math.max(l,u),h++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&Y(t.prototype,n),i&&Y(t,i),e}(),J="scroll",$="stopped scrolling",G="manual",K="mounted",Q="actual item heights have been measured",X="viewport width changed",Z="viewport height changed",ee="viewport size unchanged",te="item height changed",ne="items changed",ie="list top offset changed";function oe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var re=function(){function e(t){var n,i,o,r=this,s=t.bypass,a=t.scrollableContainer,l=t.onStart,h=t.onStop,u=t.onHeightChange,c=t.onWidthChange,f=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),o=function(){if(r.isRendered){var e=r.scrollableContainerWidth,t=r.scrollableContainerHeight;r.scrollableContainerWidth=r.scrollableContainer.getWidth(),r.scrollableContainerHeight=r.scrollableContainer.getHeight(),r.scrollableContainerWidth===e?r.scrollableContainerHeight===t?r.onNoChange():r.onHeightChange(t,r.scrollableContainerHeight):r.onWidthChange(e,r.scrollableContainerWidth)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o,this.bypass=s,this.scrollableContainer=a,this.onHeightChange=u,this.onWidthChange=c,this.onNoChange=f,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i.onStart,r=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?m(n):o&&o(),n=d((function(){n=void 0,r&&r(),e.apply(i,a),s()}),t)}))}}(this._onResize,se,{onStart:l,onStop:h})}var t,n,i;return t=e,(n=[{key:"listen",value:function(){this.bypass||(this.isRendered=!0,this.scrollableContainerWidth=this.scrollableContainer.getWidth(),this.scrollableContainerHeight=this.scrollableContainer.getHeight(),this.scrollableContainerUnlistenResize=this.scrollableContainer.onResize(this.onResize))}},{key:"stop",value:function(){this.isRendered=!1,this.scrollableContainerUnlistenResize&&(this.scrollableContainerUnlistenResize(),this.scrollableContainerUnlistenResize=void 0)}}])&&oe(t.prototype,n),i&&oe(t,i),e}(),se=250;function ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ae(Object(n),!0).forEach((function(t){he(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function 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 ue(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ce=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,o=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=o}var t,n,i;return t=e,n=[{key:"onInitialState",value:function(e){e&&(e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e.beforeResize&&(this._includesBeforeResizeInState=!0))}},{key:"cleanUpBeforeResizeItemHeights",value:function(e){var t=this.getState(),n=t.firstShownItemIndex,i=t.lastShownItemIndex,o=t.itemHeights,r=t.beforeResize;if(r&&n<r.itemHeights.length){j('~ Clean up "before resize" item heights and correct scroll position ~');for(var s=0,a=Math.floor(r.itemHeights.length/this.getColumnsCount()),l=Math.min(a*this.getColumnsCount()-1,i),h=n;h<=l;){for(var u=0,c=0;c<this.getColumnsCount()&&h<=l;){var f=o[h];void 0===f&&(f=this.getAverageItemHeight()),u=Math.max(u,f),h++,c++}s+=u,s+=this.getVerticalSpacing()}for(var d=0,m=Math.min(r.itemHeights.length,i+1),g=Math.ceil(m/r.columnsCount),p=0===n?0:Math.floor((n-1)/r.columnsCount)+1;p<g;)d+=r.itemHeights[p*r.columnsCount],d+=r.verticalSpacing,p++;if(0===n)j('Drop all "before resize" item heights');else{var I=n,v=r.itemHeights.length-1;I===v?j("For item index",I,'— drop "before resize" height',r.itemHeights[I]):j("For item indexes from",I,"to",v,'— drop "before resize" heights',r.itemHeights.slice(I))}return r.itemHeights.splice(n,r.itemHeights.length-n),{scrollBy:s-d,beforeResize:0===n?void 0:le({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),o=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var r=this.getState(),s=r.beforeResize,a=r.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==o){for(var h=0,u=Math.ceil(l/s.columnsCount),c=0;c<u;)h+=s.itemHeights[c*s.columnsCount],h+=s.verticalSpacing,c++;for(var f=0,d=t;d<n;){for(var m=0,g=0;g<i&&d<n;)m=Math.max(m,a[d]),g++,d++;f+=m,f+=o}var p=h+f,I=Math.ceil(n/i);return new Array(n).fill(Math.max(0,p/I-o))}return s.itemHeights.concat(fe(a,n,i).slice(s.itemHeights.length))}return fe(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&ue(t.prototype,n),i&&ue(t,i),e}();function fe(e,t,n){e=e.slice(0,Math.ceil(t/n)*n);for(var i=0;i*n<t;){for(var o=0,r=0;r<n;)o=Math.max(o,e[i*n+r]),r++;for(r=0;r<n;)e[i*n+r]=o,r++;i++}return e.slice(0,t)}function de(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 me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ge=function(){function e(t){var n=this,i=t.bypass,o=t.scrollableContainer,r=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,h=t.isImmediateLayoutScheduled,u=t.hasNonRenderedItemsAtTheTop,c=t.hasNonRenderedItemsAtTheBottom,f=t.getLatestLayoutVisibleArea,d=t.getListTopOffset,m=t.getPrerenderMargin,g=t.onScrolledToTop,p=t.waitForScrollingToStop;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),me(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),me(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(j(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.onScrollOnStopScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=o,this.itemsContainer=r,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=h,this.hasNonRenderedItemsAtTheTop=u,this.hasNonRenderedItemsAtTheBottom=c,this.getLatestLayoutVisibleArea=f,this.getListTopOffset=d,this.getPrerenderMargin=m,this.onScrolledToTop=g,this.waitForScrollingToStop=p}var t,n,i;return t=e,(n=[{key:"listen",value:function(){void 0!==this.initialScrollPosition&&this.scrollToY(this.initialScrollPosition),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopReportingScrollPositionChange&&(this.stopReportingScrollPositionChange(),this.stopReportingScrollPositionChange=void 0),this.stopListeningToScroll&&(this.stopListeningToScroll(),this.stopListeningToScroll=void 0),this.onStopScrollingListener&&(this.onStopScrollingListener=void 0),this.onScrollOnStopScrolling&&(this.onScrollOnStopScrolling=void 0),this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(m(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=d((function(){if(e.onStopScrollingTimer=void 0,e.onScrollOnStopScrolling&&(e.onScrollOnStopScrolling=void 0,e.onScroll({delayed:!0})),e.onStopScrollingListener){var t=e.onStopScrollingListener;e.onStopScrollingListener=void 0,j("~ The user has stopped scrolling ~"),t()}}),pe)}},{key:"onStopScrolling",value:function(e){this.onStopScrollingListener=e,this.onStopScrollingTimer||this.watchOnStopScrolling()}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&de(t.prototype,n),i&&de(t,i),e}(),pe=100;function Ie(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ve=function(){function e(t){var n=t.itemsContainer,i=t.getListTopOffset;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.itemsContainer=n,this.getListTopOffset=i}var t,n,i;return t=e,(n=[{key:"snapshot",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot&&this._snapshot.previousItems===t&&this._snapshot.newItems===n||(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()}))}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&Ie(t.prototype,n),i&&Ie(t,i),e}();function Se(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ye=function(){function e(t,n,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=t,this._get=n,this._set=i,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"initialize",value:function(e){for(var t=0;t<e.length;){if(void 0===e[t]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=t-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=t),this.measuredItemsHeight+=e[t];t++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(j("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(j("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,o=this.lastMeasuredItemIndex,r=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);j("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,r||(this.firstMeasuredItemIndex=s,r=!0)),(void 0===o||s>o)&&(void 0!==o&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),h=this._measureItemHeight(s,e);l!==h&&E("Item index",s,"height was",l,"before it was hidden, but, after showing it again, its height is",h,". Perhaps you forgot to persist the item's state by calling `onItemStateChange(i, newState)` when it changed, and that state got lost when the item element was unmounted, which resulted in a different height when the item was shown again, but with the missing state.")}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&Se(t.prototype,n),i&&Se(t,i),e}();function be(e){return be="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},be(e)}var we=Object.prototype.hasOwnProperty;function Ce(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function xe(e,t){if(Ce(e,t))return!0;if("object"!==be(e)||null===e||"object"!==be(t)||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var o=0;o<n.length;o++)if(!we.call(t,n[o])||!Ce(e[n[o]],t[n[o]]))return!1;return!0}function Oe(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 He(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(n),!0).forEach((function(t){Re(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Re(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Te(e){var t=He({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=He({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function Le(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Pe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Le(Object(n),!0).forEach((function(t){Ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Le(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ze(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ke(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 Be=function(){function e(t,n){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};ze(this,e),Ae(this,"getActualColumnsCountForState",(function(){return i._getColumnsCount?i._getColumnsCount(i.scrollableContainer):void 0})),Ae(this,"getVerticalSpacing",(function(){return i.verticalSpacing||0})),Ae(this,"getListTopOffsetInsideScrollableContainer",(function(){var e=i.scrollableContainer.getItemsContainerTopOffset();return i.listTopOffsetWatcher&&i.listTopOffsetWatcher.onListTopOffset(e),e})),Ae(this,"stop",(function(){i.isRendered=!1,i.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),Ae(this,"willUpdateState",(function(e,t){})),Ae(this,"didUpdateState",(function(e){var t=i.getState();if(i.onStateChange&&(xe(t,e)||i.onStateChange(t,e)),e&&i.isRendered){var n;j("~ Rendered ~"),W()&&j("State",Te(t)),void 0!==i.firstNonMeasuredItemIndex&&(n=Q),i.resetLayoutAfterResize&&(n=X);var o=i.resetLayoutAfterResize;i.firstNonMeasuredItemIndex=void 0,i.resetLayoutAfterResize=void 0,i.newItemsWillBeRendered=void 0,i.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,i.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0,o&&(i.itemHeights.reset(),i.verticalSpacing=void 0);var r,s=e.items,a=t.items;if(a!==s){var l=i.getItemsDiff(s,a);if(l){var h=l.prependedItemsCount;i.itemHeights.onPrepend(h)}else i.itemHeights.reset(),i.itemHeights.initialize(t.itemHeights);o||"SEAMLESS_PREPEND"!==i.onNewItemsRendered(l,t)&&(n=ne)}if(t.firstShownItemIndex!==e.firstShownItemIndex||t.lastShownItemIndex!==e.lastShownItemIndex||t.items!==e.items||o){var u=i.measureItemHeightsAndSpacingAndUpdateTablePadding();u&&(r=Pe(Pe({},r),u))}var c=i.beforeResize.cleanUpBeforeResizeItemHeights(e);if(void 0!==c){var f=c.scrollBy,d=c.beforeResize;j("Correct scroll position by",f),i.scroll.scrollByY(f),r=Pe(Pe({},r),{},{beforeResize:d})}n?i.updateStateRightAfterRender({stateUpdate:r,reason:n}):r&&i.setState(r)}})),Ae(this,"updateShownItemIndexes",(function(e){var t=e.stateUpdate,n=Date.now(),o=i.getShownItemIndexes(),r=o.firstShownItemIndex,s=o.lastShownItemIndex,a=o.shownItemsHeight,l=o.firstNonMeasuredItemIndex;if(i.listHeightChangeWatcher.hasSnapshot()&&(s<i.listHeightChangeWatcher.getAnchorItemIndex()&&(s=i.listHeightChangeWatcher.getAnchorItemIndex()),l=void 0),!i.validateWillBeHiddenItemHeightsAreAccurate(r,s))return j("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),i.updateShownItemIndexes({stateUpdate:t});var h=i.layout.getBeforeItemsHeight(r),u=i.layout.getAfterItemsHeight(s,i.getItemsCount()),c=Date.now()-n;j("~ Layout values "+(i.bypass?"(bypass) ":"")+"~"),c<Me||E("Layout calculated in",c,"ms"),i._getColumnsCount&&j("Columns count",i.getColumnsCount()),j("First shown item index",r),j("Last shown item index",s),j("Before items height",h),j("After items height (actual or estimated)",u),j("Average item height (used for estimated after items height calculation)",i.itemHeights.getAverage()),W()&&(j("Item heights",i.getState().itemHeights.slice()),j("Item states",i.getState().itemStates.slice())),i.onBeforeShowItems(i.getState().items,i.getState().itemHeights,r,s),i.firstNonMeasuredItemIndex=l,i.previouslyCalculatedLayout=void 0===a?void 0:{firstShownItemIndex:r,lastShownItemIndex:s,beforeItemsHeight:h,shownItemsHeight:a},i.setState(Pe({firstShownItemIndex:r,lastShownItemIndex:s,beforeItemsHeight:h,afterItemsHeight:u},t))})),Ae(this,"onUpdateShownItemIndexes",(function(e){var t=e.reason,n=e.stateUpdate,o=function(){n&&i.setState(n)};return i.newItemsWillBeRendered||i.resetLayoutAfterResize||i.isResizing||0===i.getItemsCount()?o():(i.scroll.cancelScheduledLayout(),n=i.cancelLayoutTimer({stateUpdate:n}),j("~ Update Layout (on ".concat(t,") ~")),void i.updateShownItemIndexes({stateUpdate:n}))})),Ae(this,"updateLayout",(function(){return i.onUpdateShownItemIndexes({reason:G})})),Ae(this,"layout",(function(){return i.updateLayout()}));var r=o.onStateChange,s=o.customState,a=o.initialScrollPosition,l=o.onScrollPositionChange,h=o.measureItemsBatchSize,u=o.getScrollableContainer,c=o.getColumnsCount,f=o.getItemId,d=o.tbody,m=o._useTimeoutInRenderLoop,g=o._waitForScrollingToStop,v=o.getState,S=o.setState,y=o.bypass,b=o.estimatedItemHeight,w=o.onItemInitialRender,C=o.onItemFirstRender,x=o.scrollableContainer,O=o.state,H=o.engine;if(j("~ Initialize ~"),O&&(n=O.items),!x&&u&&(x=u()),H||(H=A),this.getItemsContainerElement=t,this.itemsContainer=H.createItemsContainer(t),t()&&this.itemsContainer.clear(),this.scrollableContainer=H.createScrollableContainer(x,t),d){if(H!==A)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");j("~ <tbody/> detected ~"),this.tbody=!0,I()||(j("~ <tbody/> not supported ~"),N(p),y=!0)}if(y&&j('~ "bypass" mode ~'),this.bypass=y,this._useTimeoutInRenderLoop=m,this.isItemEqual=f?function(e,t){return f(e)===f(t)}:function(e,t){return e===t},this.initialItems=n,this.onStateChange=r,this._getColumnsCount=c,w?this.onItemInitialRender=w:C&&(this.onItemInitialRender=function(e){E("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=i.getState().items.indexOf(e);t>=0&&C(t)}),j("Items count",n.length),b&&j("Estimated item height",b),v||(v=function(){return i.state},S=function(e,t){var n=t.willUpdateState,o=t.didUpdateState,r=v(),s=Pe(Pe({},r),e);n(s,r),i.state=s,o(r)}),this.getState=v,this.setState=function(e){W()&&j("Set state",Te(e)),S(e,{willUpdateState:i.willUpdateState,didUpdateState:i.didUpdateState})},O&&W()&&j("Initial state (passed)",Te(O)),O){var R,T=this.getActualColumnsCountForState();T!==O.columnsCount&&(E("~ Columns Count changed from",O.columnsCount||1,"to",T||1,"~"),R=!0);var L=this.getActualColumnsCount(),P=Math.floor(O.firstShownItemIndex/L)*L;P!==O.firstShownItemIndex&&(E("~ First Shown Item Index",O.firstShownItemIndex,"is not divisible by Columns Count",L,"~"),R=!0),R&&(E("Reset Layout"),O=Pe(Pe({},O),this.getInitialLayoutState(O.items)))}O&&(O=Pe(Pe({},O),{},{verticalSpacing:void 0})),this.itemHeights=new ye(this.itemsContainer,(function(e){return i.getState().itemHeights[e]}),(function(e,t){return i.getState().itemHeights[e]=t})),O&&this.itemHeights.initialize(O.itemHeights),this.layout=new q({bypass:y,estimatedItemHeight:b,measureItemsBatchSize:void 0===h?50:h,getPrerenderMargin:function(){return i.getPrerenderMargin()},getVerticalSpacing:function(){return i.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return i.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return i.getColumnsCount()},getColumnsCountBeforeResize:function(){return i.getState().beforeResize&&i.getState().beforeResize.columnsCount},getItemHeight:function(e){return i.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return i.getState().beforeResize&&i.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return i.getState().beforeResize?i.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return i.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return i.scrollableContainer&&i.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return i.previouslyCalculatedLayout}}),this.resize=new re({bypass:y,scrollableContainer:this.scrollableContainer,onStart:function(){j("~ Scrollable container resize started ~"),i.isResizing=!0},onStop:function(){j("~ Scrollable container resize finished ~"),i.isResizing=void 0},onNoChange:function(){i.onUpdateShownItemIndexes({reason:ee})},onHeightChange:function(){return i.onUpdateShownItemIndexes({reason:Z})},onWidthChange:function(e,t){j("~ Scrollable container width changed from",e,"to",t,"~"),i.onResize()}}),this.scroll=new ge({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:g,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.delayed;i.onUpdateShownItemIndexes({reason:t?$:J})},initialScrollPosition:a,onScrollPositionChange:l,isImmediateLayoutScheduled:function(){return i.layoutTimer},hasNonRenderedItemsAtTheTop:function(){return i.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return i.getState().lastShownItemIndex<i.getItemsCount()-1},getLatestLayoutVisibleArea:function(){return i.latestLayoutVisibleArea},getListTopOffset:this.getListTopOffsetInsideScrollableContainer,getPrerenderMargin:function(){return i.getPrerenderMargin()}}),this.listHeightChangeWatcher=new ve({itemsContainer:this.itemsContainer,getListTopOffset:this.getListTopOffsetInsideScrollableContainer}),H.watchListTopOffset&&(this.listTopOffsetWatcher=H.watchListTopOffset({getListTopOffset:this.getListTopOffsetInsideScrollableContainer,onListTopOffsetChange:function(e){return e.reason,i.onUpdateShownItemIndexes({reason:ie})}})),this.beforeResize=new ce({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount}),this.beforeResize.onInitialState(O),this.verticalSpacing=O?O.verticalSpacing:void 0,this.setState(O||this.getInitialState(s))}var t,n,i;return t=e,n=[{key:"getInitialState",value:function(e){var t=this.initialItems,n=Pe(Pe(Pe({},e),this.getInitialLayoutState(t)),{},{items:t,itemStates:new Array(t.length)});return W()&&j("Initial state (autogenerated)",Te(n)),j("First shown item index",n.firstShownItemIndex),j("Last shown item index",n.lastShownItemIndex),n}},{key:"getInitialLayoutState",value:function(e){var t=e.length,n=this.layout.getInitialLayoutValues({itemsCount:t,columnsCount:this.getColumnsCount()}),i=n.firstShownItemIndex,o=n.lastShownItemIndex,r=n.beforeItemsHeight,s=n.afterItemsHeight,a=new Array(t);return this.onBeforeShowItems(e,a,i,o),{itemHeights:a,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:i,lastShownItemIndex:o,beforeItemsHeight:r,afterItemsHeight:s}}},{key:"getActualColumnsCount",value:function(){return this.getActualColumnsCountForState()||1}},{key:"getVerticalSpacingBeforeResize",value:function(){return this.getState().beforeResize&&this.getState().beforeResize.verticalSpacing||0}},{key:"getColumnsCount",value:function(){return this.getState()&&this.getState().columnsCount||1}},{key:"getItemsCount",value:function(){return this.getState().items.length}},{key:"getPrerenderMargin",value:function(){return 1*this.scrollableContainer.getHeight()}},{key:"onBeforeShowItems",value:function(e,t,n,i){if(this.onItemInitialRender)for(var o=n;o<=i;)void 0===t[o]&&this.onItemInitialRender(e[o]),o++}},{key:"onMount",value:function(){E("`.onMount()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"render",value:function(){E("`.render()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"listen",value:function(){if(!1===this.isRendered)throw new Error("[virtual-scroller] Can't restart a `VirtualScroller` after it has been stopped");j("~ Rendered (initial) ~"),this.isRendered=!0;var e=this.measureItemHeightsAndSpacingAndUpdateTablePadding();this.resize.listen(),this.scroll.listen(),this.tbody&&function(e){e.classList.add("VirtualScroller");var t=document.getElementById("VirtualScrollerStyle");t||((t=document.createElement("style")).id="VirtualScrollerStyle",t.innerText="\n\t\t\ttbody.VirtualScroller:before {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t\t}\n\t\t\ttbody.VirtualScroller:after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t\t}\n\t\t".replace(/[\n\t]/g,""),document.head.appendChild(t))}(this.getItemsContainerElement()),this.onUpdateShownItemIndexes({reason:K,stateUpdate:e})}},{key:"measureItemHeightsAndSpacingAndUpdateTablePadding",value:function(){this.itemHeights.measureItemHeights(this.getState().firstShownItemIndex,this.getState().lastShownItemIndex);var e,t,n,i=this.measureVerticalSpacing();if(this.tbody&&(e=this.getItemsContainerElement(),t=this.getState().beforeItemsHeight,n=this.getState().afterItemsHeight,e.style.setProperty("--VirtualScroller-paddingTop",g(t)),e.style.setProperty("--VirtualScroller-paddingBottom",g(n))),void 0!==i)return{verticalSpacing:i}}},{key:"getVisibleArea",value:function(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onUnmount",value:function(){E("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"destroy",value:function(){E("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"cancelLayoutTimer",value:function(e){var t=e.stateUpdate;return this.layoutTimer?(m(this.layoutTimer),this.layoutTimer=void 0,t||this.layoutTimerStateUpdate?(t=Pe(Pe({},this.layoutTimerStateUpdate),t),this.layoutTimerStateUpdate=void 0,t):void 0):t}},{key:"scheduleLayoutTimer",value:function(e){var t=this,n=e.reason,i=e.stateUpdate;this.layoutTimerStateUpdate=i,this.layoutTimer=d((function(){t.layoutTimerStateUpdate=void 0,t.layoutTimer=void 0,t.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}},{key:"onNewItemsRendered",value:function(e,t){if(e){var n=e.prependedItemsCount;e.appendedItemsCount;var i=this.getState(),o=i.itemHeights,r=i.itemStates;if(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered)for(var s=0,a=Object.keys(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered);s<a.length;s++){var l=a[s];o[n+parseInt(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var h=0,u=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);h<u.length;h++){var c=u[h];r[n+parseInt(c)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[c]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(E('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "didUpdateState()" after appending items'),E("Previously calculated layout",this.previouslyCalculatedLayout),E("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightChangeWatcher.hasSnapshot()){if(0===t.firstShownItemIndex){j("~ Restore Scroll Position ~");var f=this.listHeightChangeWatcher.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightChangeWatcher.reset(),f?(j("Scroll down by",f),this.scroll.scrollByY(f)):j("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}:(E('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "didUpdateState()" after prepending items'),E("Previously calculated layout",this.previouslyCalculatedLayout),E("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}E('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "didUpdateState()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}},{key:"updateStateRightAfterRender",value:function(e){var t=e.reason,n=e.stateUpdate;this._useTimeoutInRenderLoop?(n=this.cancelLayoutTimer({stateUpdate:n}),this.scheduleLayoutTimer({reason:t,stateUpdate:n})):this.onUpdateShownItemIndexes({reason:t,stateUpdate:n})}},{key:"measureVerticalSpacing",value:function(){if(void 0===this.verticalSpacing){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;j("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),o=t.getNthRenderedItemHeight(0),r=1;r<n;){var s=t.getNthRenderedItemTopOffset(r),a=t.getNthRenderedItemHeight(r);if(s!==i)return s-(i+o);o=Math.max(o,a),r++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0===i)j("Not enough items rendered to measure vertical spacing");else if(j("Item vertical spacing",i),this.verticalSpacing=i,0!==i)return i}}},{key:"remeasureItemHeight",value:function(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}},{key:"onItemStateChange",value:function(e,t){W()&&(j("~ Item state changed ~"),j("Item",e),j("Previous state\n"+JSON.stringify(this.getState().itemStates[e],null,2)),j("New state\n"+JSON.stringify(t,null,2))),this.getState().itemStates[e]=t,this.newItemsWillBeRendered&&(this.itemStatesThatChangedWhileNewItemsWereBeingRendered||(this.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),this.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=t)}},{key:"onItemHeightChange",value:function(e){j("~ Re-measure item height ~"),j("Item",e);var t=this.getState(),n=t.itemHeights,i=t.firstShownItemIndex,o=t.lastShownItemIndex;if(!(e>=i&&e<=o))return E("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time.");var r=n[e];if(void 0===r)return N('"onItemHeightChange()" has been called for item '.concat(e,", but that item hasn't been rendered before."));var s=this.remeasureItemHeight(e);j("Previous height",r),j("New height",s),r!==s&&(j("~ Item height has changed ~"),this.updatePreviouslyCalculatedLayoutOnItemHeightChange(e,r,s),this.onUpdateShownItemIndexes({reason:te}),this.newItemsWillBeRendered&&(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered||(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered={}),this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[String(e)]=s))}},{key:"updatePreviouslyCalculatedLayoutOnItemHeightChange",value:function(e,t,n){if(this.previouslyCalculatedLayout){var i=n-t;e<this.previouslyCalculatedLayout.firstShownItemIndex?this.previouslyCalculatedLayout.beforeItemsHeight+=i:e>this.previouslyCalculatedLayout.lastShownItemIndex?void 0!==this.previouslyCalculatedLayout.afterItemsHeight&&(this.previouslyCalculatedLayout.afterItemsHeight+=i):this.previouslyCalculatedLayout.shownItemsHeight+=n-t}}},{key:"validateWillBeHiddenItemHeightsAreAccurate",value:function(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var o=this.getState().itemHeights[i],r=this.remeasureItemHeight(i);r!==o&&(n&&(j("~ Validate will-be-hidden item heights. ~"),this.updatePreviouslyCalculatedLayoutOnItemHeightChange(i,o,r)),n=!1,E("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",o,"to",r,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}},{key:"getShownItemIndexes",value:function(){var e=this.getItemsCount(),t=this.getVisibleArea(),n=t.top,i=t.bottom;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:n<this.itemsContainer.getHeight()&&i>0?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaTop:n,visibleAreaBottom:i}):(j("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}},{key:"updateItems",value:function(e,t){return this.setItems(e,t)}},{key:"setItems",value:function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=this.getState(),r=o.items,s=this.getState(),a=s.itemStates,l=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate:this.getState(),h=l.itemHeights;j("~ Update items ~");var u=this.getItemsDiff(r,e);if(u){var c=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate:this.getState(),f=c.firstShownItemIndex,d=c.lastShownItemIndex,m=c.beforeItemsHeight,g=c.afterItemsHeight,p=0===f&&(i.preserveScrollPositionOnPrependItems||i.preserveScrollPosition),I=u.prependedItemsCount,v=u.appendedItemsCount;t=this.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:f,lastShownItemIndex:d,beforeItemsHeight:m,afterItemsHeight:g},{prependedItemsCount:I,appendedItemsCount:v},{itemsCount:e.length,columnsCount:this.getActualColumnsCount(),shouldRestoreScrollPosition:p}),I>0&&(j("Prepend",I,"items"),h=new Array(I).concat(h),a&&(a=new Array(I).concat(a)),p?(j("Will restore scroll position"),this.listHeightChangeWatcher.snapshot({previousItems:r,newItems:e,prependedItemsCount:I}),void 0!==this.firstNonMeasuredItemIndex&&(this.firstNonMeasuredItemIndex+=I)):(j("Reset layout"),t=this.layout.getInitialLayoutValues({itemsCount:e.length,columnsCount:this.getActualColumnsCount()}),this.firstNonMeasuredItemIndex=void 0)),v>0&&(j("Append",v,"items"),h=h.concat(new Array(v)),a&&(a=a.concat(new Array(v)))),n={prepend:I>0,append:v>0}}else j("Items have changed, and",u?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),j("Previous items",r),j("New items",e),h=new Array(e.length),a=new Array(e.length),t=this.layout.getInitialLayoutValues({itemsCount:e.length,columnsCount:this.getActualColumnsCount()}),this.firstNonMeasuredItemIndex=void 0,this.listHeightChangeWatcher.reset(),n={replace:!0};j("~ Update state ~"),j("First shown item index",t.firstShownItemIndex),j("Last shown item index",t.lastShownItemIndex),j("Before items height",t.beforeItemsHeight),j("After items height (actual or estimated)",t.afterItemsHeight),this.onBeforeShowItems(e,h,t.firstShownItemIndex,t.lastShownItemIndex),this.newItemsWillBeRendered=Pe(Pe({},n),{},{count:e.length,layout:t});var S=Pe(Pe({},t),{},{items:e,itemStates:a,itemHeights:h});this.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(this.shouldDiscardBeforeResizeItemHeights()?S.beforeResize=void 0:S.beforeResize=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate.beforeResize:this.getState().beforeResize),this.setState(S)}},{key:"getItemsDiff",value:function(e,t){return function(e,t,n){var i=-1,o=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var o=0;o<e.length;){if(t.length<=n+o||!i(t[n+o],e[o]))return!1;o++}return!0}(e,t,i,n)&&(o=i+e.length-1)),i>=0&&o>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(o+1)}}(e,t,this.isItemEqual)}},{key:"shouldDiscardBeforeResizeItemHeights",value:function(){if(this.newItemsWillBeRendered){var e=this.newItemsWillBeRendered,t=e.prepend,n=e.replace;return t||n}}},{key:"onResize",value:function(){this.previouslyCalculatedLayout=void 0,this.listHeightChangeWatcher.reset();var e=this.newItemsWillBeRendered?this.newItemsWillBeRendered.count:this.getState().itemHeights.length,t=this.newItemsWillBeRendered?this.newItemsWillBeRendered.layout:this.getState(),n={firstShownItemIndex:t.firstShownItemIndex,lastShownItemIndex:t.lastShownItemIndex,beforeItemsHeight:t.beforeItemsHeight,afterItemsHeight:t.afterItemsHeight,itemHeights:new Array(e),columnsCount:this.getActualColumnsCountForState(),verticalSpacing:void 0},i=t.firstShownItemIndex,o=t.lastShownItemIndex,r=this.getActualColumnsCount(),s=Math.floor(i/r)*r,a=Math.ceil((o+1)/r)*r-1;s!==i&&(j("Columns Count changed from",this.getState().columnsCount||1,"to",r),j("First Shown Item Index needs to change from",i,"to",s)),n.firstShownItemIndex=s,n.lastShownItemIndex=a;var l=this.getVerticalSpacing(),h=this.getColumnsCount();this.shouldDiscardBeforeResizeItemHeights()||0===s?this.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(n.beforeResize=void 0):n.beforeResize={verticalSpacing:l,columnsCount:h,itemHeights:this.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:i,newFirstShownItemIndex:s,newColumnsCount:r})},this.resetLayoutAfterResize={stateUpdate:n},this.setState(n)}}],n&&ke(t.prototype,n),i&&ke(t,i),e}(),Me=15,je=["onMount","onItemUnmount"];function Ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Ne(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ee(Object(n),!0).forEach((function(t){De(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ee(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function We(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n,i,o={},r=Object.keys(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ue(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ve(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function De(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var _e=function(){function e(t,n,i){var o=this,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};Ue(this,e),De(this,"onStateChange",(function(e,t){var n=e.items,i=e.firstShownItemIndex,r=e.lastShownItemIndex,s=e.beforeItemsHeight,a=e.afterItemsHeight;j("~ On state change ~"),j("Previous state",t),j("New state",e),o.tbody||(o.container.style.paddingTop=g(s),o.container.style.paddingBottom=g(a));var l=t&&n===t.items&&n.length>0;if(l)for(var h=t.lastShownItemIndex;h>=t.firstShownItemIndex;)h>=i&&h<=r||(j("DOM: Remove element for item index",h),o.unmountItem(o.container.childNodes[h-t.firstShownItemIndex])),h--;else for(j("DOM: Rerender the list from scratch");o.container.firstChild;)o.unmountItem(o.container.firstChild);for(var u=l,c=u&&o.container.firstChild,f=i;f<=r;){if(l&&f>=t.firstShownItemIndex&&f<=t.lastShownItemIndex)u&&(u=!1);else{var d=o.renderItem(n[f]);u?(j("DOM: Prepend element for item index",f),o.container.insertBefore(d,c)):(j("DOM: Append element for item index",f),o.container.appendChild(d))}f++}})),De(this,"onUnmount",(function(){E("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),De(this,"destroy",(function(){E("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),De(this,"stop",(function(){o.virtualScroller.stop()})),this.container=t,this.renderItem=i;var s=r.onMount,a=r.onItemUnmount,l=We(r,je);this.onItemUnmount=a,this.tbody="TBODY"===this.container.tagName,this.virtualScroller=new Be((function(){return o.container}),n,Ne(Ne({},l),{},{tbody:this.tbody,onStateChange:this.onStateChange})),s&&s(),this.virtualScroller.listen()}var t,n,i;return t=e,n=[{key:"unmountItem",value:function(e){this.container.removeChild(e),this.onItemUnmount&&this.onItemUnmount(e)}},{key:"onItemHeightChange",value:function(e){this.virtualScroller.onItemHeightChange(e)}},{key:"updateItems",value:function(e,t){this.setItems(e,t)}},{key:"setItems",value:function(e,t){this.virtualScroller.setItems(e,t)}}],n&&Ve(t.prototype,n),i&&Ve(t,i),e}();return _e}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VirtualScroller=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var t=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(t){(function(){var e,n,i,o,r,s;"undefined"!=typeof performance&&null!==performance&&performance.now?t.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(t.exports=function(){return(e()-r)/1e6},n=process.hrtime,o=(e=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),r=o-s):Date.now?(t.exports=function(){return Date.now()-i},i=Date.now()):(t.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(e)})),n="undefined"==typeof window?e:window,i=["moz","webkit"],o="AnimationFrame",r=n["request"+o],s=n["cancel"+o]||n["cancelRequest"+o],a=0;!r&&a<i.length;a++)r=n[i[a]+"Request"+o],s=n[i[a]+"Cancel"+o]||n[i[a]+"CancelRequest"+o];if(!r||!s){var l=0,h=0,u=[];r=function(e){if(0===u.length){var n=t(),i=Math.max(0,16.666666666666668-(n-l));l=i+n,setTimeout((function(){var e=u.slice(0);u.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(l)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(i))}return u.push({handle:++h,callback:e,cancelled:!1}),h},s=function(e){for(var t=0;t<u.length;t++)u[t].handle===e&&(u[t].cancelled=!0)}}var c=function(e){return r.call(n,e)};c.cancel=function(){s.apply(n,arguments)},c.polyfill=function(e){e||(e=n),e.requestAnimationFrame=r,e.cancelAnimationFrame=s};var d=c.cancel;function f(e,t){var n=Date.now(),i=c((function o(){Date.now()-n>=t?e():i=c(o)}));return{clear:function(){return d(i)}}}function m(e){e&&e.clear()}function g(e){return(e%1==0?e:e.toFixed(2))+"px"}var p="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 I(){return"undefined"==typeof window||!window.document.documentMode}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)}}var S=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)}}])&&v(t.prototype,n),i&&v(t,i),e}();function y(e){return y="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},y(e)}function b(e,t){return b=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},b(e,t)}function w(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=x(e);if(t){var o=x(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return C(this,n)}}function C(e,t){if(t&&("object"===y(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 x(e){return x=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},x(e)}function O(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function H(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function R(e,t,n){return t&&H(e.prototype,t),n&&H(e,n),e}var T=function(){function e(t,n){O(this,e),this.element=t,this.getItemsContainerElement=n}return R(e,[{key:"getScrollY",value:function(){return this.element.scrollTop}},{key:"scrollToY",value:function(e){this.element.scrollTo?this.element.scrollTo(0,e):this.element.scrollTop=e}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"getHeight",value:function(){return this.element.offsetHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=this.element.getBoundingClientRect().top,t=this.element.clientTop;return this.getItemsContainerElement().getBoundingClientRect().top-e+this.getScrollY()-t}},{key:"onScroll",value:function(e){var t=this;return this.element.addEventListener("scroll",e),function(){return t.element.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e){var t,n=this;if("undefined"!=typeof ResizeObserver){var i=new ResizeObserver((function(t){t[0],e()}));i.observe(this.element),t=function(){return i.unobserve(n.element)}}var o=P(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),o()}}}]),e}(),L=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&b(e,t)}(n,e);var t=w(n);function n(e){return O(this,n),t.call(this,window,e)}return R(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 P(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(T);function P(e,t){var n=t.itemsContainerElement,i=function(){document.fullscreenElement&&!document.fullscreenElement.contains(n)||e()};return window.addEventListener("resize",i),function(){return window.removeEventListener("resize",i)}}function z(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var k=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this.isRendered=!0,this.watchListTopOffset()}},{key:"stop",value:function(){this.isRendered=!1,this.watchListTopOffsetTimer&&(m(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e.isRendered&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=f(n,500)))}()}}])&&z(t.prototype,n),i&&z(t,i),e}(),A={createItemsContainer:function(e){return new S(e)},createScrollableContainer:function(e,t){return e?new T(e,t):"undefined"!=typeof window?new L(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new k({getListTopOffset:t,onListTopOffsetChange:n})}};function B(e){return function(e){if(Array.isArray(e))return M(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 M(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 M(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 M(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 j(){if(W()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,B(["[virtual-scroller]"].concat(n)))}}function E(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(U())return N.apply(this,n);(e=console).warn.apply(e,B(["[virtual-scroller]"].concat(n)))}function N(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(j.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))}),0)):(i=console).error.apply(i,B(["[virtual-scroller]"].concat(t)))}function W(){var e=V("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function U(){return V("VirtualScrollerWarningsAreErrors")}function V(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function _(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?D(Object(n),!0).forEach((function(t){F(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function F(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Y(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var q=function(){function e(t){var n=t.bypass,i=t.estimatedItemHeight,o=t.measureItemsBatchSize,r=t.getPrerenderMargin,s=t.getVerticalSpacing,a=t.getVerticalSpacingBeforeResize,l=t.getColumnsCount,h=t.getColumnsCountBeforeResize,u=t.getItemHeight,c=t.getItemHeightBeforeResize,d=t.getBeforeResizeItemsCount,f=t.getAverageItemHeight,m=t.getMaxVisibleAreaHeight,g=t.getPreviouslyCalculatedLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.estimatedItemHeight=i,this.measureItemsBatchSize=o,this.getPrerenderMargin=r,this.getVerticalSpacing=s,this.getVerticalSpacingBeforeResize=a,this.getColumnsCount=l,this.getColumnsCountBeforeResize=h,this.getItemHeight=u,this.getItemHeightBeforeResize=c,this.getBeforeResizeItemsCount=d,this.getAverageItemHeight=f,this.getMaxVisibleAreaHeight=m,this.getPreviouslyCalculatedLayout=g}var t,n,i;return t=e,n=[{key:"getInitialLayoutValues",value:function(e){var t,n,i=e.itemsCount,o=e.columnsCount;return i>0&&(t=0,n=this.getInitialLastShownItemIndex({itemsCount:i,columnsCount:o,firstShownItemIndex:t})),{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var o=1;return this.getMaxVisibleAreaHeight()&&(o=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin())),Math.min(i+(o*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){return this.getAverageItemHeight()||this.estimatedItemHeight||0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,o=e.lastShownItemIndex,r=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,h=n.itemsCount,u=n.columnsCount,c=n.shouldRestoreScrollPosition,d=this.getAverageItemHeight(),f=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/u)*(f+d)),a>0&&(i+=a,o+=a,r+=Math.ceil(a/u)*(d+f),c&&(i=0,r=0),a%u>0)){E("~ Prepended items count",a,"is not divisible by Columns Count",u,"~"),E("Reset Layout");var m=o-i+1;if(i=0,r=0,!c&&a>m){var g=h-((o=this.getInitialLastShownItemIndex({itemsCount:h,columnsCount:u,firstShownItemIndex:i}))+1);s=Math.ceil(g/u)*(f+d)}}return{beforeItemsHeight:r,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:o}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,o=t.nonMeasuredAreaHeight,r=t.indexOfTheFirstItemInTheRow;j("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(o)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=r),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(r+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaTop,i=e.visibleAreaBottom,o=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaTop:n,visibleAreaBottom:i,findFirstShownItemIndex:!0});if(null===o)return this.getNonVisibleListShownItemIndexes();if(void 0!==o.firstNonMeasuredItemIndex)return o;var r=o,s=r.firstShownItemIndex,a=r.beforeItemsHeight;return null===(o=this._getShownItemIndex({itemsCount:t,fromIndex:s,beforeItemsHeight:a,visibleAreaTop:n,visibleAreaBottom:i,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==o.firstNonMeasuredItemIndex?o:{firstShownItemIndex:s,lastShownItemIndex:o.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaTop,o=e.visibleAreaBottom,r=e.findFirstShownItemIndex,s=e.findLastShownItemIndex,a=e.fromIndex,l=e.beforeItemsHeight;if(0===a&&(l=0),void 0===l)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+a);if(!t){var h=this.getBeforeResizeItemsCount();if(h>a){var u=this._getShownItemIndex(_(_({},e),{},{beforeResize:!0,itemsCount:h})),c=u.notFound,d=u.beforeItemsHeight,f=u.firstShownItemIndex,m=u.lastShownItemIndex;if(!c){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===f?void 0:Math.floor(f/g)*g,lastShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,beforeItemsHeight:d}}l=d,a+=h}}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:o+this.getPrerenderMargin()-l});b=Math.max(b,C),w++,v++}var x=l+b,O=x>i-this.getPrerenderMargin(),H=x+y>=o+this.getPrerenderMargin();if(r){if(O)return{firstShownItemIndex:S,beforeItemsHeight:l}}else if(s&&H)return{lastShownItemIndex:Math.min(S+p-1,n-1)};l+=b+y}return t?{notFound:!0,beforeItemsHeight:l}:r?(E("The list is supposed to be visible but no visible item has been found"),null):s?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,o=0;if(!n){var r=this.getBeforeResizeItemsCount();r>0&&(i=this.getBeforeItemsHeight(Math.min(e,r),{beforeResize:!0}),o=r)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();o<e;){for(var l=0,h=0;h<s;){var u=n?this.getItemHeightBeforeResize(o):this.getItemHeight(o);void 0===u&&(u=this.getAverageItemHeight()),l=Math.max(l,u),o++,h++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,o=e+1;o<t;){for(var r=0,s=0;s<n&&o<t;){var a=this.getItemHeight(o);void 0===a&&(a=this.getAverageItemHeight()),r=Math.max(r,a),o++,s++}i+=this.getVerticalSpacing(),i+=r}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),o=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,r=0;r<o;)t+=this.getItemHeightBeforeResize(r*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),r++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,h=0;h<this.getColumnsCount();){var u=this.getItemHeight(n+a*this.getColumnsCount()+h);if(void 0===u)return;l=Math.max(l,u),h++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&Y(t.prototype,n),i&&Y(t,i),e}(),J="scroll",$="stopped scrolling",G="manual",K="mounted",Q="actual item heights have been measured",X="viewport width changed",Z="viewport height changed",ee="viewport size unchanged",te="item height changed",ne="items changed",ie="list top offset changed";function oe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var re=function(){function e(t){var n,i,o,r=this,s=t.bypass,a=t.scrollableContainer,l=t.onStart,h=t.onStop,u=t.onHeightChange,c=t.onWidthChange,d=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),o=function(){if(r.isRendered){var e=r.scrollableContainerWidth,t=r.scrollableContainerHeight;r.scrollableContainerWidth=r.scrollableContainer.getWidth(),r.scrollableContainerHeight=r.scrollableContainer.getHeight(),r.scrollableContainerWidth===e?r.scrollableContainerHeight===t?r.onNoChange():r.onHeightChange(t,r.scrollableContainerHeight):r.onWidthChange(e,r.scrollableContainerWidth)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o,this.bypass=s,this.scrollableContainer=a,this.onHeightChange=u,this.onWidthChange=c,this.onNoChange=d,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i.onStart,r=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?m(n):o&&o(),n=f((function(){n=void 0,r&&r(),e.apply(i,a),s()}),t)}))}}(this._onResize,se,{onStart:l,onStop:h})}var t,n,i;return t=e,(n=[{key:"listen",value:function(){this.bypass||(this.isRendered=!0,this.scrollableContainerWidth=this.scrollableContainer.getWidth(),this.scrollableContainerHeight=this.scrollableContainer.getHeight(),this.scrollableContainerUnlistenResize=this.scrollableContainer.onResize(this.onResize))}},{key:"stop",value:function(){this.isRendered=!1,this.scrollableContainerUnlistenResize&&(this.scrollableContainerUnlistenResize(),this.scrollableContainerUnlistenResize=void 0)}}])&&oe(t.prototype,n),i&&oe(t,i),e}(),se=250;function ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ae(Object(n),!0).forEach((function(t){he(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function 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 ue(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ce=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,o=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=o}var t,n,i;return t=e,n=[{key:"onInitialState",value:function(e){e&&(e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e.beforeResize&&(this._includesBeforeResizeInState=!0))}},{key:"cleanUpBeforeResizeItemHeights",value:function(e){var t=this.getState(),n=t.firstShownItemIndex,i=t.lastShownItemIndex,o=t.itemHeights,r=t.beforeResize;if(r&&n<r.itemHeights.length){j('~ Clean up "before resize" item heights and correct scroll position ~');for(var s=0,a=Math.floor(r.itemHeights.length/this.getColumnsCount()),l=Math.min(a*this.getColumnsCount()-1,i),h=n;h<=l;){for(var u=0,c=0;c<this.getColumnsCount()&&h<=l;){var d=o[h];void 0===d&&(d=this.getAverageItemHeight()),u=Math.max(u,d),h++,c++}s+=u,s+=this.getVerticalSpacing()}for(var f=0,m=Math.min(r.itemHeights.length,i+1),g=Math.ceil(m/r.columnsCount),p=0===n?0:Math.floor((n-1)/r.columnsCount)+1;p<g;)f+=r.itemHeights[p*r.columnsCount],f+=r.verticalSpacing,p++;if(0===n)j('Drop all "before resize" item heights');else{var I=n,v=r.itemHeights.length-1;I===v?j("For item index",I,'— drop "before resize" height',r.itemHeights[I]):j("For item indexes from",I,"to",v,'— drop "before resize" heights',r.itemHeights.slice(I))}return r.itemHeights.splice(n,r.itemHeights.length-n),{scrollBy:s-f,beforeResize:0===n?void 0:le({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),o=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var r=this.getState(),s=r.beforeResize,a=r.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==o){for(var h=0,u=Math.ceil(l/s.columnsCount),c=0;c<u;)h+=s.itemHeights[c*s.columnsCount],h+=s.verticalSpacing,c++;for(var d=0,f=t;f<n;){for(var m=0,g=0;g<i&&f<n;)m=Math.max(m,a[f]),g++,f++;d+=m,d+=o}var p=h+d,I=Math.ceil(n/i);return new Array(n).fill(Math.max(0,p/I-o))}return s.itemHeights.concat(de(a,n,i).slice(s.itemHeights.length))}return de(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&ue(t.prototype,n),i&&ue(t,i),e}();function de(e,t,n){e=e.slice(0,Math.ceil(t/n)*n);for(var i=0;i*n<t;){for(var o=0,r=0;r<n;)o=Math.max(o,e[i*n+r]),r++;for(r=0;r<n;)e[i*n+r]=o,r++;i++}return e.slice(0,t)}function 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)}}function me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ge=function(){function e(t){var n=this,i=t.bypass,o=t.scrollableContainer,r=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,h=t.isImmediateLayoutScheduled,u=t.hasNonRenderedItemsAtTheTop,c=t.hasNonRenderedItemsAtTheBottom,d=t.getLatestLayoutVisibleArea,f=t.getListTopOffset,m=t.getPrerenderMargin,g=t.onScrolledToTop,p=t.waitForScrollingToStop;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),me(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),me(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(j(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.onScrollOnStopScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=o,this.itemsContainer=r,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=h,this.hasNonRenderedItemsAtTheTop=u,this.hasNonRenderedItemsAtTheBottom=c,this.getLatestLayoutVisibleArea=d,this.getListTopOffset=f,this.getPrerenderMargin=m,this.onScrolledToTop=g,this.waitForScrollingToStop=p}var t,n,i;return t=e,(n=[{key:"listen",value:function(){void 0!==this.initialScrollPosition&&this.scrollToY(this.initialScrollPosition),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopReportingScrollPositionChange&&(this.stopReportingScrollPositionChange(),this.stopReportingScrollPositionChange=void 0),this.stopListeningToScroll&&(this.stopListeningToScroll(),this.stopListeningToScroll=void 0),this.onStopScrollingListener&&(this.onStopScrollingListener=void 0),this.onScrollOnStopScrolling&&(this.onScrollOnStopScrolling=void 0),this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(m(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=f((function(){if(e.onStopScrollingTimer=void 0,e.onScrollOnStopScrolling&&(e.onScrollOnStopScrolling=void 0,e.onScroll({delayed:!0})),e.onStopScrollingListener){var t=e.onStopScrollingListener;e.onStopScrollingListener=void 0,j("~ The user has stopped scrolling ~"),t()}}),pe)}},{key:"onStopScrolling",value:function(e){this.onStopScrollingListener=e,this.onStopScrollingTimer||this.watchOnStopScrolling()}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&fe(t.prototype,n),i&&fe(t,i),e}(),pe=100;function Ie(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ve=function(){function e(t){var n=t.itemsContainer,i=t.getListTopOffset;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.itemsContainer=n,this.getListTopOffset=i}var t,n,i;return t=e,(n=[{key:"snapshot",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot&&this._snapshot.previousItems===t&&this._snapshot.newItems===n||(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()}))}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&Ie(t.prototype,n),i&&Ie(t,i),e}();function Se(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ye=function(){function e(t,n,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=t,this._get=n,this._set=i,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"initialize",value:function(e){for(var t=0;t<e.length;){if(void 0===e[t]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=t-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=t),this.measuredItemsHeight+=e[t];t++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(j("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(j("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,o=this.lastMeasuredItemIndex,r=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);j("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,r||(this.firstMeasuredItemIndex=s,r=!0)),(void 0===o||s>o)&&(void 0!==o&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),h=this._measureItemHeight(s,e);l!==h&&(E("Item index",s,"height changed unexpectedly: it was",l,"before, but now it is",h,'. 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,h))}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&&Se(t.prototype,n),i&&Se(t,i),e}();function be(e){return be="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},be(e)}var we=Object.prototype.hasOwnProperty;function Ce(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function xe(e,t){if(Ce(e,t))return!0;if("object"!==be(e)||null===e||"object"!==be(t)||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var o=0;o<n.length;o++)if(!we.call(t,n[o])||!Ce(e[n[o]],t[n[o]]))return!1;return!0}function Oe(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 He(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(n),!0).forEach((function(t){Re(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Re(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Te(e){var t=He({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=He({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function Le(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Pe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Le(Object(n),!0).forEach((function(t){Ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Le(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ze(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ke(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 Be=function(){function e(t,n){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};ze(this,e),Ae(this,"getActualColumnsCountForState",(function(){return i._getColumnsCount?i._getColumnsCount(i.scrollableContainer):void 0})),Ae(this,"getVerticalSpacing",(function(){return i.verticalSpacing||0})),Ae(this,"getListTopOffsetInsideScrollableContainer",(function(){var e=i.scrollableContainer.getItemsContainerTopOffset();return i.listTopOffsetWatcher&&i.listTopOffsetWatcher.onListTopOffset(e),e})),Ae(this,"stop",(function(){i.isRendered=!1,i.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),Ae(this,"willUpdateState",(function(e,t){})),Ae(this,"didUpdateState",(function(e){var t=i.getState();if(i.onStateChange&&(xe(t,e)||i.onStateChange(t,e)),e&&i.isRendered){var n;j("~ Rendered ~"),W()&&j("State",Te(t)),void 0!==i.firstNonMeasuredItemIndex&&(n=Q),i.resetLayoutAfterResize&&(n=X);var o=i.resetLayoutAfterResize;i.firstNonMeasuredItemIndex=void 0,i.resetLayoutAfterResize=void 0,i.newItemsWillBeRendered=void 0,i.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,i.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0,o&&(i.itemHeights.reset(),i.verticalSpacing=void 0);var r,s=e.items,a=t.items;if(a!==s){var l=i.getItemsDiff(s,a);if(l){var h=l.prependedItemsCount;i.itemHeights.onPrepend(h)}else i.itemHeights.reset(),i.itemHeights.initialize(t.itemHeights);o||"SEAMLESS_PREPEND"!==i.onNewItemsRendered(l,t)&&(n=ne)}if(t.firstShownItemIndex!==e.firstShownItemIndex||t.lastShownItemIndex!==e.lastShownItemIndex||t.items!==e.items||o){var u=i.measureItemHeightsAndSpacingAndUpdateTablePadding();u&&(r=Pe(Pe({},r),u))}var c=i.beforeResize.cleanUpBeforeResizeItemHeights(e);if(void 0!==c){var d=c.scrollBy,f=c.beforeResize;j("Correct scroll position by",d),i.scroll.scrollByY(d),r=Pe(Pe({},r),{},{beforeResize:f})}n?i.updateStateRightAfterRender({stateUpdate:r,reason:n}):r&&i.setState(r)}})),Ae(this,"updateShownItemIndexes",(function(e){var t=e.stateUpdate,n=Date.now(),o=i.getShownItemIndexes(),r=o.firstShownItemIndex,s=o.lastShownItemIndex,a=o.shownItemsHeight,l=o.firstNonMeasuredItemIndex;if(i.listHeightChangeWatcher.hasSnapshot()&&(s<i.listHeightChangeWatcher.getAnchorItemIndex()&&(s=i.listHeightChangeWatcher.getAnchorItemIndex()),l=void 0),!i.validateWillBeHiddenItemHeightsAreAccurate(r,s))return j("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),i.updateShownItemIndexes({stateUpdate:t});var h=i.layout.getBeforeItemsHeight(r),u=i.layout.getAfterItemsHeight(s,i.getItemsCount()),c=Date.now()-n;j("~ Layout values "+(i.bypass?"(bypass) ":"")+"~"),c<Me||E("Layout calculated in",c,"ms"),i._getColumnsCount&&j("Columns count",i.getColumnsCount()),j("First shown item index",r),j("Last shown item index",s),j("Before items height",h),j("After items height (actual or estimated)",u),j("Average item height (used for estimated after items height calculation)",i.itemHeights.getAverage()),W()&&(j("Item heights",i.getState().itemHeights.slice()),j("Item states",i.getState().itemStates.slice())),i.onBeforeShowItems(i.getState().items,i.getState().itemHeights,r,s),i.firstNonMeasuredItemIndex=l,i.previouslyCalculatedLayout=void 0===a?void 0:{firstShownItemIndex:r,lastShownItemIndex:s,beforeItemsHeight:h,shownItemsHeight:a},i.setState(Pe({firstShownItemIndex:r,lastShownItemIndex:s,beforeItemsHeight:h,afterItemsHeight:u},t))})),Ae(this,"onUpdateShownItemIndexes",(function(e){var t=e.reason,n=e.stateUpdate,o=function(){n&&i.setState(n)};return i.newItemsWillBeRendered||i.resetLayoutAfterResize||i.isResizing||0===i.getItemsCount()?o():(i.scroll.cancelScheduledLayout(),n=i.cancelLayoutTimer({stateUpdate:n}),j("~ Update Layout (on ".concat(t,") ~")),void i.updateShownItemIndexes({stateUpdate:n}))})),Ae(this,"updateLayout",(function(){return i.onUpdateShownItemIndexes({reason:G})})),Ae(this,"layout",(function(){return i.updateLayout()}));var r=o.onStateChange,s=o.customState,a=o.initialScrollPosition,l=o.onScrollPositionChange,h=o.measureItemsBatchSize,u=o.getScrollableContainer,c=o.getColumnsCount,d=o.getItemId,f=o.tbody,m=o._useTimeoutInRenderLoop,g=o._waitForScrollingToStop,v=o.getState,S=o.setState,y=o.bypass,b=o.estimatedItemHeight,w=o.onItemInitialRender,C=o.onItemFirstRender,x=o.scrollableContainer,O=o.state,H=o.engine;if(j("~ Initialize ~"),O&&(n=O.items),!x&&u&&(x=u()),H||(H=A),this.getItemsContainerElement=t,this.itemsContainer=H.createItemsContainer(t),t()&&this.itemsContainer.clear(),this.scrollableContainer=H.createScrollableContainer(x,t),f){if(H!==A)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");j("~ <tbody/> detected ~"),this.tbody=!0,I()||(j("~ <tbody/> not supported ~"),N(p),y=!0)}if(y&&j('~ "bypass" mode ~'),this.bypass=y,this._useTimeoutInRenderLoop=m,this.isItemEqual=d?function(e,t){return d(e)===d(t)}:function(e,t){return e===t},this.initialItems=n,this.onStateChange=r,this._getColumnsCount=c,w?this.onItemInitialRender=w:C&&(this.onItemInitialRender=function(e){E("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=i.getState().items.indexOf(e);t>=0&&C(t)}),j("Items count",n.length),b&&j("Estimated item height",b),v||(v=function(){return i.state},S=function(e,t){var n=t.willUpdateState,o=t.didUpdateState,r=v(),s=Pe(Pe({},r),e);n(s,r),i.state=s,o(r)}),this.getState=v,this.setState=function(e){W()&&j("Set state",Te(e)),S(e,{willUpdateState:i.willUpdateState,didUpdateState:i.didUpdateState})},O&&W()&&j("Initial state (passed)",Te(O)),O){var R,T=this.getActualColumnsCountForState();T!==O.columnsCount&&(E("~ Columns Count changed from",O.columnsCount||1,"to",T||1,"~"),R=!0);var L=this.getActualColumnsCount(),P=Math.floor(O.firstShownItemIndex/L)*L;P!==O.firstShownItemIndex&&(E("~ First Shown Item Index",O.firstShownItemIndex,"is not divisible by Columns Count",L,"~"),R=!0),R&&(E("Reset Layout"),O=Pe(Pe({},O),this.getInitialLayoutState(O.items)))}O&&(O=Pe(Pe({},O),{},{verticalSpacing:void 0})),this.itemHeights=new ye(this.itemsContainer,(function(e){return i.getState().itemHeights[e]}),(function(e,t){return i.getState().itemHeights[e]=t})),O&&this.itemHeights.initialize(O.itemHeights),this.layout=new q({bypass:y,estimatedItemHeight:b,measureItemsBatchSize:void 0===h?50:h,getPrerenderMargin:function(){return i.getPrerenderMargin()},getVerticalSpacing:function(){return i.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return i.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return i.getColumnsCount()},getColumnsCountBeforeResize:function(){return i.getState().beforeResize&&i.getState().beforeResize.columnsCount},getItemHeight:function(e){return i.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return i.getState().beforeResize&&i.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return i.getState().beforeResize?i.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return i.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return i.scrollableContainer&&i.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return i.previouslyCalculatedLayout}}),this.resize=new re({bypass:y,scrollableContainer:this.scrollableContainer,onStart:function(){j("~ Scrollable container resize started ~"),i.isResizing=!0},onStop:function(){j("~ Scrollable container resize finished ~"),i.isResizing=void 0},onNoChange:function(){i.onUpdateShownItemIndexes({reason:ee})},onHeightChange:function(){return i.onUpdateShownItemIndexes({reason:Z})},onWidthChange:function(e,t){j("~ Scrollable container width changed from",e,"to",t,"~"),i.onResize()}}),this.scroll=new ge({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:g,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.delayed;i.onUpdateShownItemIndexes({reason:t?$:J})},initialScrollPosition:a,onScrollPositionChange:l,isImmediateLayoutScheduled:function(){return i.layoutTimer},hasNonRenderedItemsAtTheTop:function(){return i.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return i.getState().lastShownItemIndex<i.getItemsCount()-1},getLatestLayoutVisibleArea:function(){return i.latestLayoutVisibleArea},getListTopOffset:this.getListTopOffsetInsideScrollableContainer,getPrerenderMargin:function(){return i.getPrerenderMargin()}}),this.listHeightChangeWatcher=new ve({itemsContainer:this.itemsContainer,getListTopOffset:this.getListTopOffsetInsideScrollableContainer}),H.watchListTopOffset&&(this.listTopOffsetWatcher=H.watchListTopOffset({getListTopOffset:this.getListTopOffsetInsideScrollableContainer,onListTopOffsetChange:function(e){return e.reason,i.onUpdateShownItemIndexes({reason:ie})}})),this.beforeResize=new ce({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount}),this.beforeResize.onInitialState(O),this.verticalSpacing=O?O.verticalSpacing:void 0,this.setState(O||this.getInitialState(s))}var t,n,i;return t=e,n=[{key:"getInitialState",value:function(e){var t=this.initialItems,n=Pe(Pe(Pe({},e),this.getInitialLayoutState(t)),{},{items:t,itemStates:new Array(t.length)});return W()&&j("Initial state (autogenerated)",Te(n)),j("First shown item index",n.firstShownItemIndex),j("Last shown item index",n.lastShownItemIndex),n}},{key:"getInitialLayoutState",value:function(e){var t=e.length,n=this.layout.getInitialLayoutValues({itemsCount:t,columnsCount:this.getActualColumnsCount()}),i=n.firstShownItemIndex,o=n.lastShownItemIndex,r=n.beforeItemsHeight,s=n.afterItemsHeight,a=new Array(t);return this.onBeforeShowItems(e,a,i,o),{itemHeights:a,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:i,lastShownItemIndex:o,beforeItemsHeight:r,afterItemsHeight:s}}},{key:"getActualColumnsCount",value:function(){return this.getActualColumnsCountForState()||1}},{key:"getVerticalSpacingBeforeResize",value:function(){return this.getState().beforeResize&&this.getState().beforeResize.verticalSpacing||0}},{key:"getColumnsCount",value:function(){return this.getState()&&this.getState().columnsCount||1}},{key:"getItemsCount",value:function(){return this.getState().items.length}},{key:"getPrerenderMargin",value:function(){return 1*this.scrollableContainer.getHeight()}},{key:"onBeforeShowItems",value:function(e,t,n,i){if(this.onItemInitialRender)for(var o=n;o<=i;)void 0===t[o]&&this.onItemInitialRender(e[o]),o++}},{key:"onMount",value:function(){E("`.onMount()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"render",value:function(){E("`.render()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"listen",value:function(){if(!1===this.isRendered)throw new Error("[virtual-scroller] Can't restart a `VirtualScroller` after it has been stopped");j("~ Rendered (initial) ~"),this.isRendered=!0;var e=this.measureItemHeightsAndSpacingAndUpdateTablePadding();this.resize.listen(),this.scroll.listen(),this.tbody&&function(e){e.classList.add("VirtualScroller");var t=document.getElementById("VirtualScrollerStyle");t||((t=document.createElement("style")).id="VirtualScrollerStyle",t.innerText="\n\t\t\ttbody.VirtualScroller:before {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t\t}\n\t\t\ttbody.VirtualScroller:after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t\t}\n\t\t".replace(/[\n\t]/g,""),document.head.appendChild(t))}(this.getItemsContainerElement()),this.onUpdateShownItemIndexes({reason:K,stateUpdate:e})}},{key:"measureItemHeightsAndSpacingAndUpdateTablePadding",value:function(){this.itemHeights.measureItemHeights(this.getState().firstShownItemIndex,this.getState().lastShownItemIndex);var e,t,n,i=this.measureVerticalSpacing();if(this.tbody&&(e=this.getItemsContainerElement(),t=this.getState().beforeItemsHeight,n=this.getState().afterItemsHeight,e.style.setProperty("--VirtualScroller-paddingTop",g(t)),e.style.setProperty("--VirtualScroller-paddingBottom",g(n))),void 0!==i)return{verticalSpacing:i}}},{key:"getVisibleArea",value:function(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onUnmount",value:function(){E("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"destroy",value:function(){E("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"cancelLayoutTimer",value:function(e){var t=e.stateUpdate;return this.layoutTimer?(m(this.layoutTimer),this.layoutTimer=void 0,t||this.layoutTimerStateUpdate?(t=Pe(Pe({},this.layoutTimerStateUpdate),t),this.layoutTimerStateUpdate=void 0,t):void 0):t}},{key:"scheduleLayoutTimer",value:function(e){var t=this,n=e.reason,i=e.stateUpdate;this.layoutTimerStateUpdate=i,this.layoutTimer=f((function(){t.layoutTimerStateUpdate=void 0,t.layoutTimer=void 0,t.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}},{key:"onNewItemsRendered",value:function(e,t){if(e){var n=e.prependedItemsCount;e.appendedItemsCount;var i=this.getState(),o=i.itemHeights,r=i.itemStates;if(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered)for(var s=0,a=Object.keys(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered);s<a.length;s++){var l=a[s];o[n+parseInt(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var h=0,u=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);h<u.length;h++){var c=u[h];r[n+parseInt(c)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[c]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(E('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "didUpdateState()" after appending items'),E("Previously calculated layout",this.previouslyCalculatedLayout),E("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightChangeWatcher.hasSnapshot()){if(0===t.firstShownItemIndex){j("~ Restore Scroll Position ~");var d=this.listHeightChangeWatcher.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightChangeWatcher.reset(),d?(j("Scroll down by",d),this.scroll.scrollByY(d)):j("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+d,firstShownItemIndex:0,lastShownItemIndex:t.lastShownItemIndex}:(E('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "didUpdateState()" after prepending items'),E("Previously calculated layout",this.previouslyCalculatedLayout),E("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}E('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "didUpdateState()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}},{key:"updateStateRightAfterRender",value:function(e){var t=e.reason,n=e.stateUpdate;this._useTimeoutInRenderLoop?(n=this.cancelLayoutTimer({stateUpdate:n}),this.scheduleLayoutTimer({reason:t,stateUpdate:n})):this.onUpdateShownItemIndexes({reason:t,stateUpdate:n})}},{key:"measureVerticalSpacing",value:function(){if(void 0===this.verticalSpacing){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;j("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),o=t.getNthRenderedItemHeight(0),r=1;r<n;){var s=t.getNthRenderedItemTopOffset(r),a=t.getNthRenderedItemHeight(r);if(s!==i)return s-(i+o);o=Math.max(o,a),r++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0===i)j("Not enough items rendered to measure vertical spacing");else if(j("Item vertical spacing",i),this.verticalSpacing=i,0!==i)return i}}},{key:"remeasureItemHeight",value:function(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}},{key:"onItemStateChange",value:function(e,t){W()&&(j("~ Item state changed ~"),j("Item",e),j("Previous state\n"+JSON.stringify(this.getState().itemStates[e],null,2)),j("New state\n"+JSON.stringify(t,null,2))),this.getState().itemStates[e]=t,this.newItemsWillBeRendered&&(this.itemStatesThatChangedWhileNewItemsWereBeingRendered||(this.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),this.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=t)}},{key:"onItemHeightChange",value:function(e){j("~ Re-measure item height ~"),j("Item",e);var t=this.getState(),n=t.itemHeights,i=t.firstShownItemIndex,o=t.lastShownItemIndex;if(!(e>=i&&e<=o))return E("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time.");var r=n[e];if(void 0===r)return N('"onItemHeightChange()" has been called for item '.concat(e,", but that item hasn't been rendered before."));var s=this.remeasureItemHeight(e);j("Previous height",r),j("New height",s),r!==s&&(j("~ Item height has changed ~"),this.updatePreviouslyCalculatedLayoutOnItemHeightChange(e,r,s),this.onUpdateShownItemIndexes({reason:te}),this.newItemsWillBeRendered&&(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered||(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered={}),this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[String(e)]=s))}},{key:"updatePreviouslyCalculatedLayoutOnItemHeightChange",value:function(e,t,n){if(this.previouslyCalculatedLayout){var i=n-t;e<this.previouslyCalculatedLayout.firstShownItemIndex?this.previouslyCalculatedLayout.beforeItemsHeight+=i:e>this.previouslyCalculatedLayout.lastShownItemIndex?void 0!==this.previouslyCalculatedLayout.afterItemsHeight&&(this.previouslyCalculatedLayout.afterItemsHeight+=i):this.previouslyCalculatedLayout.shownItemsHeight+=n-t}}},{key:"validateWillBeHiddenItemHeightsAreAccurate",value:function(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var o=this.getState().itemHeights[i],r=this.remeasureItemHeight(i);r!==o&&(n&&(j("~ Validate will-be-hidden item heights. ~"),this.updatePreviouslyCalculatedLayoutOnItemHeightChange(i,o,r)),n=!1,E("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",o,"to",r,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}},{key:"getShownItemIndexes",value:function(){var e=this.getItemsCount(),t=this.getVisibleArea(),n=t.top,i=t.bottom;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:n<this.itemsContainer.getHeight()&&i>0?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaTop:n,visibleAreaBottom:i}):(j("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}},{key:"updateItems",value:function(e,t){return this.setItems(e,t)}},{key:"setItems",value:function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=this.getState(),r=o.items,s=this.getState(),a=s.itemStates,l=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate:this.getState(),h=l.itemHeights;j("~ Update items ~");var u=this.getItemsDiff(r,e);if(u){var c=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate:this.getState(),d=c.firstShownItemIndex,f=c.lastShownItemIndex,m=c.beforeItemsHeight,g=c.afterItemsHeight,p=0===d&&(i.preserveScrollPositionOnPrependItems||i.preserveScrollPosition),I=u.prependedItemsCount,v=u.appendedItemsCount;t=this.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:d,lastShownItemIndex:f,beforeItemsHeight:m,afterItemsHeight:g},{prependedItemsCount:I,appendedItemsCount:v},{itemsCount:e.length,columnsCount:this.getActualColumnsCount(),shouldRestoreScrollPosition:p}),I>0&&(j("Prepend",I,"items"),h=new Array(I).concat(h),a&&(a=new Array(I).concat(a)),p?(j("Will restore scroll position"),this.listHeightChangeWatcher.snapshot({previousItems:r,newItems:e,prependedItemsCount:I}),void 0!==this.firstNonMeasuredItemIndex&&(this.firstNonMeasuredItemIndex+=I)):(j("Reset layout"),t=this.layout.getInitialLayoutValues({itemsCount:e.length,columnsCount:this.getActualColumnsCount()}),this.firstNonMeasuredItemIndex=void 0)),v>0&&(j("Append",v,"items"),h=h.concat(new Array(v)),a&&(a=a.concat(new Array(v)))),n={prepend:I>0,append:v>0}}else j("Items have changed, and",u?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),j("Previous items",r),j("New items",e),h=new Array(e.length),a=new Array(e.length),t=this.layout.getInitialLayoutValues({itemsCount:e.length,columnsCount:this.getActualColumnsCount()}),this.firstNonMeasuredItemIndex=void 0,this.listHeightChangeWatcher.reset(),n={replace:!0};j("~ Update state ~"),j("First shown item index",t.firstShownItemIndex),j("Last shown item index",t.lastShownItemIndex),j("Before items height",t.beforeItemsHeight),j("After items height (actual or estimated)",t.afterItemsHeight),this.onBeforeShowItems(e,h,t.firstShownItemIndex,t.lastShownItemIndex),this.newItemsWillBeRendered=Pe(Pe({},n),{},{count:e.length,layout:t});var S=Pe(Pe({},t),{},{items:e,itemStates:a,itemHeights:h});this.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(this.shouldDiscardBeforeResizeItemHeights()?S.beforeResize=void 0:S.beforeResize=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate.beforeResize:this.getState().beforeResize),this.setState(S)}},{key:"getItemsDiff",value:function(e,t){return function(e,t,n){var i=-1,o=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var o=0;o<e.length;){if(t.length<=n+o||!i(t[n+o],e[o]))return!1;o++}return!0}(e,t,i,n)&&(o=i+e.length-1)),i>=0&&o>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(o+1)}}(e,t,this.isItemEqual)}},{key:"shouldDiscardBeforeResizeItemHeights",value:function(){if(this.newItemsWillBeRendered){var e=this.newItemsWillBeRendered,t=e.prepend,n=e.replace;return t||n}}},{key:"onResize",value:function(){this.previouslyCalculatedLayout=void 0,this.listHeightChangeWatcher.reset();var e=this.newItemsWillBeRendered?this.newItemsWillBeRendered.count:this.getState().itemHeights.length,t=this.newItemsWillBeRendered?this.newItemsWillBeRendered.layout:this.getState(),n={firstShownItemIndex:t.firstShownItemIndex,lastShownItemIndex:t.lastShownItemIndex,beforeItemsHeight:t.beforeItemsHeight,afterItemsHeight:t.afterItemsHeight,itemHeights:new Array(e),columnsCount:this.getActualColumnsCountForState(),verticalSpacing:void 0},i=t.firstShownItemIndex,o=t.lastShownItemIndex,r=this.getActualColumnsCount(),s=Math.floor(i/r)*r,a=Math.min(Math.ceil((o+1)/r)*r,e)-1;s!==i&&(j("Columns Count changed from",this.getState().columnsCount||1,"to",r),j("First Shown Item Index needs to change from",i,"to",s)),n.firstShownItemIndex=s,n.lastShownItemIndex=a;var l=this.getVerticalSpacing(),h=this.getColumnsCount();this.shouldDiscardBeforeResizeItemHeights()||0===s?this.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(n.beforeResize=void 0):n.beforeResize={verticalSpacing:l,columnsCount:h,itemHeights:this.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:i,newFirstShownItemIndex:s,newColumnsCount:r})},this.resetLayoutAfterResize={stateUpdate:n},this.setState(n)}}],n&&ke(t.prototype,n),i&&ke(t,i),e}(),Me=15,je=["onMount","onItemUnmount"];function Ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Ne(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ee(Object(n),!0).forEach((function(t){De(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ee(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function We(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n,i,o={},r=Object.keys(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ue(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ve(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function De(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var _e=function(){function e(t,n,i){var o=this,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};Ue(this,e),De(this,"onStateChange",(function(e,t){var n=e.items,i=e.firstShownItemIndex,r=e.lastShownItemIndex,s=e.beforeItemsHeight,a=e.afterItemsHeight;j("~ On state change ~"),j("Previous state",t),j("New state",e),o.tbody||(o.container.style.paddingTop=g(s),o.container.style.paddingBottom=g(a));var l=t&&n===t.items&&n.length>0;if(l)for(var h=t.lastShownItemIndex;h>=t.firstShownItemIndex;)h>=i&&h<=r||(j("DOM: Remove element for item index",h),o.unmountItem(o.container.childNodes[h-t.firstShownItemIndex])),h--;else for(j("DOM: Rerender the list from scratch");o.container.firstChild;)o.unmountItem(o.container.firstChild);for(var u=l,c=u&&o.container.firstChild,d=i;d<=r;){if(l&&d>=t.firstShownItemIndex&&d<=t.lastShownItemIndex)u&&(u=!1);else{var f=o.renderItem(n[d]);u?(j("DOM: Prepend element for item index",d),o.container.insertBefore(f,c)):(j("DOM: Append element for item index",d),o.container.appendChild(f))}d++}})),De(this,"onUnmount",(function(){E("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),De(this,"destroy",(function(){E("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),De(this,"stop",(function(){o.virtualScroller.stop()})),this.container=t,this.renderItem=i;var s=r.onMount,a=r.onItemUnmount,l=We(r,je);this.onItemUnmount=a,this.tbody="TBODY"===this.container.tagName,this.virtualScroller=new Be((function(){return o.container}),n,Ne(Ne({},l),{},{tbody:this.tbody,onStateChange:this.onStateChange})),s&&s(),this.virtualScroller.listen()}var t,n,i;return t=e,n=[{key:"unmountItem",value:function(e){this.container.removeChild(e),this.onItemUnmount&&this.onItemUnmount(e)}},{key:"onItemHeightChange",value:function(e){this.virtualScroller.onItemHeightChange(e)}},{key:"updateItems",value:function(e,t){this.setItems(e,t)}},{key:"setItems",value:function(e,t){this.virtualScroller.setItems(e,t)}}],n&&Ve(t.prototype,n),i&&Ve(t,i),e}();return _e}));
//# sourceMappingURL=virtual-scroller-dom.js.map

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VirtualScroller=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var t=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(t){(function(){var e,n,i,o,r,s;"undefined"!=typeof performance&&null!==performance&&performance.now?t.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(t.exports=function(){return(e()-r)/1e6},n=process.hrtime,o=(e=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),r=o-s):Date.now?(t.exports=function(){return Date.now()-i},i=Date.now()):(t.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(e)})),n="undefined"==typeof window?e:window,i=["moz","webkit"],o="AnimationFrame",r=n["request"+o],s=n["cancel"+o]||n["cancelRequest"+o],a=0;!r&&a<i.length;a++)r=n[i[a]+"Request"+o],s=n[i[a]+"Cancel"+o]||n[i[a]+"CancelRequest"+o];if(!r||!s){var l=0,h=0,u=[];r=function(e){if(0===u.length){var n=t(),i=Math.max(0,16.666666666666668-(n-l));l=i+n,setTimeout((function(){var e=u.slice(0);u.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(l)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(i))}return u.push({handle:++h,callback:e,cancelled:!1}),h},s=function(e){for(var t=0;t<u.length;t++)u[t].handle===e&&(u[t].cancelled=!0)}}var c=function(e){return r.call(n,e)};c.cancel=function(){s.apply(n,arguments)},c.polyfill=function(e){e||(e=n),e.requestAnimationFrame=r,e.cancelAnimationFrame=s};var d=c.cancel;function f(e,t){var n=Date.now(),i=c((function o(){Date.now()-n>=t?e():i=c(o)}));return{clear:function(){return d(i)}}}function m(e){e&&e.clear()}function g(e){return(e%1==0?e:e.toFixed(2))+"px"}var I="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 p(){return"undefined"==typeof window||!window.document.documentMode}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)}}var S=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)}}])&&v(t.prototype,n),i&&v(t,i),e}();function y(e){return y="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},y(e)}function b(e,t){return b=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},b(e,t)}function w(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=x(e);if(t){var o=x(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return C(this,n)}}function C(e,t){if(t&&("object"===y(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 x(e){return x=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},x(e)}function H(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function R(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 T(e,t,n){return t&&R(e.prototype,t),n&&R(e,n),e}var O=function(){function e(t,n){H(this,e),this.element=t,this.getItemsContainerElement=n}return T(e,[{key:"getScrollY",value:function(){return this.element.scrollTop}},{key:"scrollToY",value:function(e){this.element.scrollTo?this.element.scrollTo(0,e):this.element.scrollTop=e}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"getHeight",value:function(){return this.element.offsetHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=this.element.getBoundingClientRect().top,t=this.element.clientTop;return this.getItemsContainerElement().getBoundingClientRect().top-e+this.getScrollY()-t}},{key:"onScroll",value:function(e){var t=this;return this.element.addEventListener("scroll",e),function(){return t.element.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e){var t,n=this;if("undefined"!=typeof ResizeObserver){var i=new ResizeObserver((function(t){t[0],e()}));i.observe(this.element),t=function(){return i.unobserve(n.element)}}var o=z(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),o()}}}]),e}(),L=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&b(e,t)}(n,e);var t=w(n);function n(e){return H(this,n),t.call(this,window,e)}return T(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 z(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(O);function z(e,t){var n=t.itemsContainerElement,i=function(){document.fullscreenElement&&!document.fullscreenElement.contains(n)||e()};return window.addEventListener("resize",i),function(){return window.removeEventListener("resize",i)}}function P(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 A=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this.isRendered=!0,this.watchListTopOffset()}},{key:"stop",value:function(){this.isRendered=!1,this.watchListTopOffsetTimer&&(m(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e.isRendered&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=f(n,500)))}()}}])&&P(t.prototype,n),i&&P(t,i),e}(),k={createItemsContainer:function(e){return new S(e)},createScrollableContainer:function(e,t){return e?new O(e,t):"undefined"!=typeof window?new L(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new A({getListTopOffset:t,onListTopOffsetChange:n})}};function B(e){return function(e){if(Array.isArray(e))return M(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 M(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 M(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 M(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 j(){if(V()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,B(["[virtual-scroller]"].concat(n)))}}function E(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(N())return W.apply(this,n);(e=console).warn.apply(e,B(["[virtual-scroller]"].concat(n)))}function W(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(j.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))}),0)):(i=console).error.apply(i,B(["[virtual-scroller]"].concat(t)))}function V(){var e=U("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function N(){return U("VirtualScrollerWarningsAreErrors")}function U(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function _(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 D(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_(Object(n),!0).forEach((function(t){F(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function F(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Y(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var q=function(){function e(t){var n=t.bypass,i=t.estimatedItemHeight,o=t.measureItemsBatchSize,r=t.getPrerenderMargin,s=t.getVerticalSpacing,a=t.getVerticalSpacingBeforeResize,l=t.getColumnsCount,h=t.getColumnsCountBeforeResize,u=t.getItemHeight,c=t.getItemHeightBeforeResize,d=t.getBeforeResizeItemsCount,f=t.getAverageItemHeight,m=t.getMaxVisibleAreaHeight,g=t.getPreviouslyCalculatedLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.estimatedItemHeight=i,this.measureItemsBatchSize=o,this.getPrerenderMargin=r,this.getVerticalSpacing=s,this.getVerticalSpacingBeforeResize=a,this.getColumnsCount=l,this.getColumnsCountBeforeResize=h,this.getItemHeight=u,this.getItemHeightBeforeResize=c,this.getBeforeResizeItemsCount=d,this.getAverageItemHeight=f,this.getMaxVisibleAreaHeight=m,this.getPreviouslyCalculatedLayout=g}var t,n,i;return t=e,n=[{key:"getInitialLayoutValues",value:function(e){var t,n,i=e.itemsCount,o=e.columnsCount;return i>0&&(t=0,n=this.getInitialLastShownItemIndex({itemsCount:i,columnsCount:o,firstShownItemIndex:t})),{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var o=1;return this.getMaxVisibleAreaHeight()&&(o=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin())),Math.min(i+(o*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){return this.getAverageItemHeight()||this.estimatedItemHeight||0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,o=e.lastShownItemIndex,r=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,h=n.itemsCount,u=n.columnsCount,c=n.shouldRestoreScrollPosition,d=this.getAverageItemHeight(),f=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/u)*(f+d)),a>0&&(i+=a,o+=a,r+=Math.ceil(a/u)*(d+f),c&&(i=0,r=0),a%u>0)){E("~ Prepended items count",a,"is not divisible by Columns Count",u,"~"),E("Reset Layout");var m=o-i+1;if(i=0,r=0,!c&&a>m){var g=h-((o=this.getInitialLastShownItemIndex({itemsCount:h,columnsCount:u,firstShownItemIndex:i}))+1);s=Math.ceil(g/u)*(f+d)}}return{beforeItemsHeight:r,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:o}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,o=t.nonMeasuredAreaHeight,r=t.indexOfTheFirstItemInTheRow;j("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(o)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=r),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(r+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaTop,i=e.visibleAreaBottom,o=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaTop:n,visibleAreaBottom:i,findFirstShownItemIndex:!0});if(null===o)return this.getNonVisibleListShownItemIndexes();if(void 0!==o.firstNonMeasuredItemIndex)return o;var r=o,s=r.firstShownItemIndex,a=r.beforeItemsHeight;return null===(o=this._getShownItemIndex({itemsCount:t,fromIndex:s,beforeItemsHeight:a,visibleAreaTop:n,visibleAreaBottom:i,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==o.firstNonMeasuredItemIndex?o:{firstShownItemIndex:s,lastShownItemIndex:o.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaTop,o=e.visibleAreaBottom,r=e.findFirstShownItemIndex,s=e.findLastShownItemIndex,a=e.fromIndex,l=e.beforeItemsHeight;if(0===a&&(l=0),void 0===l)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+a);if(!t){var h=this.getBeforeResizeItemsCount();if(h>a){var u=this._getShownItemIndex(D(D({},e),{},{beforeResize:!0,itemsCount:h})),c=u.notFound,d=u.beforeItemsHeight,f=u.firstShownItemIndex,m=u.lastShownItemIndex;if(!c){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===f?void 0:Math.floor(f/g)*g,lastShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,beforeItemsHeight:d}}l=d,a+=h}}for(var I=t?this.getColumnsCountBeforeResize():this.getColumnsCount(),p=t?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing(),v=a;v<n;){for(var S=v,y=n>S+I?p:0,b=0,w=0;w<I&&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:o+this.getPrerenderMargin()-l});b=Math.max(b,C),w++,v++}var x=l+b,H=x>i-this.getPrerenderMargin(),R=x+y>=o+this.getPrerenderMargin();if(r){if(H)return{firstShownItemIndex:S,beforeItemsHeight:l}}else if(s&&R)return{lastShownItemIndex:Math.min(S+I-1,n-1)};l+=b+y}return t?{notFound:!0,beforeItemsHeight:l}:r?(E("The list is supposed to be visible but no visible item has been found"),null):s?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,o=0;if(!n){var r=this.getBeforeResizeItemsCount();r>0&&(i=this.getBeforeItemsHeight(Math.min(e,r),{beforeResize:!0}),o=r)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();o<e;){for(var l=0,h=0;h<s;){var u=n?this.getItemHeightBeforeResize(o):this.getItemHeight(o);void 0===u&&(u=this.getAverageItemHeight()),l=Math.max(l,u),o++,h++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,o=e+1;o<t;){for(var r=0,s=0;s<n&&o<t;){var a=this.getItemHeight(o);void 0===a&&(a=this.getAverageItemHeight()),r=Math.max(r,a),o++,s++}i+=this.getVerticalSpacing(),i+=r}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),o=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,r=0;r<o;)t+=this.getItemHeightBeforeResize(r*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),r++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,h=0;h<this.getColumnsCount();){var u=this.getItemHeight(n+a*this.getColumnsCount()+h);if(void 0===u)return;l=Math.max(l,u),h++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&Y(t.prototype,n),i&&Y(t,i),e}(),J="scroll",$="stopped scrolling",G="manual",K="mounted",Q="actual item heights have been measured",X="viewport width changed",Z="viewport height changed",ee="viewport size unchanged",te="item height changed",ne="items changed",ie="list top offset changed";function oe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var re=function(){function e(t){var n,i,o,r=this,s=t.bypass,a=t.scrollableContainer,l=t.onStart,h=t.onStop,u=t.onHeightChange,c=t.onWidthChange,d=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),o=function(){if(r.isRendered){var e=r.scrollableContainerWidth,t=r.scrollableContainerHeight;r.scrollableContainerWidth=r.scrollableContainer.getWidth(),r.scrollableContainerHeight=r.scrollableContainer.getHeight(),r.scrollableContainerWidth===e?r.scrollableContainerHeight===t?r.onNoChange():r.onHeightChange(t,r.scrollableContainerHeight):r.onWidthChange(e,r.scrollableContainerWidth)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o,this.bypass=s,this.scrollableContainer=a,this.onHeightChange=u,this.onWidthChange=c,this.onNoChange=d,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i.onStart,r=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?m(n):o&&o(),n=f((function(){n=void 0,r&&r(),e.apply(i,a),s()}),t)}))}}(this._onResize,se,{onStart:l,onStop:h})}var t,n,i;return t=e,(n=[{key:"listen",value:function(){this.bypass||(this.isRendered=!0,this.scrollableContainerWidth=this.scrollableContainer.getWidth(),this.scrollableContainerHeight=this.scrollableContainer.getHeight(),this.scrollableContainerUnlistenResize=this.scrollableContainer.onResize(this.onResize))}},{key:"stop",value:function(){this.isRendered=!1,this.scrollableContainerUnlistenResize&&(this.scrollableContainerUnlistenResize(),this.scrollableContainerUnlistenResize=void 0)}}])&&oe(t.prototype,n),i&&oe(t,i),e}(),se=250;function ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ae(Object(n),!0).forEach((function(t){he(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function 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 ue(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ce=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,o=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=o}var t,n,i;return t=e,n=[{key:"onInitialState",value:function(e){e&&(e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e.beforeResize&&(this._includesBeforeResizeInState=!0))}},{key:"cleanUpBeforeResizeItemHeights",value:function(e){var t=this.getState(),n=t.firstShownItemIndex,i=t.lastShownItemIndex,o=t.itemHeights,r=t.beforeResize;if(r&&n<r.itemHeights.length){j('~ Clean up "before resize" item heights and correct scroll position ~');for(var s=0,a=Math.floor(r.itemHeights.length/this.getColumnsCount()),l=Math.min(a*this.getColumnsCount()-1,i),h=n;h<=l;){for(var u=0,c=0;c<this.getColumnsCount()&&h<=l;){var d=o[h];void 0===d&&(d=this.getAverageItemHeight()),u=Math.max(u,d),h++,c++}s+=u,s+=this.getVerticalSpacing()}for(var f=0,m=Math.min(r.itemHeights.length,i+1),g=Math.ceil(m/r.columnsCount),I=0===n?0:Math.floor((n-1)/r.columnsCount)+1;I<g;)f+=r.itemHeights[I*r.columnsCount],f+=r.verticalSpacing,I++;if(0===n)j('Drop all "before resize" item heights');else{var p=n,v=r.itemHeights.length-1;p===v?j("For item index",p,'— drop "before resize" height',r.itemHeights[p]):j("For item indexes from",p,"to",v,'— drop "before resize" heights',r.itemHeights.slice(p))}return r.itemHeights.splice(n,r.itemHeights.length-n),{scrollBy:s-f,beforeResize:0===n?void 0:le({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),o=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var r=this.getState(),s=r.beforeResize,a=r.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==o){for(var h=0,u=Math.ceil(l/s.columnsCount),c=0;c<u;)h+=s.itemHeights[c*s.columnsCount],h+=s.verticalSpacing,c++;for(var d=0,f=t;f<n;){for(var m=0,g=0;g<i&&f<n;)m=Math.max(m,a[f]),g++,f++;d+=m,d+=o}var I=h+d,p=Math.ceil(n/i);return new Array(n).fill(Math.max(0,I/p-o))}return s.itemHeights.concat(de(a,n,i).slice(s.itemHeights.length))}return de(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&ue(t.prototype,n),i&&ue(t,i),e}();function de(e,t,n){e=e.slice(0,Math.ceil(t/n)*n);for(var i=0;i*n<t;){for(var o=0,r=0;r<n;)o=Math.max(o,e[i*n+r]),r++;for(r=0;r<n;)e[i*n+r]=o,r++;i++}return e.slice(0,t)}function 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)}}function me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ge=function(){function e(t){var n=this,i=t.bypass,o=t.scrollableContainer,r=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,h=t.isImmediateLayoutScheduled,u=t.hasNonRenderedItemsAtTheTop,c=t.hasNonRenderedItemsAtTheBottom,d=t.getLatestLayoutVisibleArea,f=t.getListTopOffset,m=t.getPrerenderMargin,g=t.onScrolledToTop,I=t.waitForScrollingToStop;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),me(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),me(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(j(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.onScrollOnStopScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=o,this.itemsContainer=r,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=h,this.hasNonRenderedItemsAtTheTop=u,this.hasNonRenderedItemsAtTheBottom=c,this.getLatestLayoutVisibleArea=d,this.getListTopOffset=f,this.getPrerenderMargin=m,this.onScrolledToTop=g,this.waitForScrollingToStop=I}var t,n,i;return t=e,(n=[{key:"listen",value:function(){void 0!==this.initialScrollPosition&&this.scrollToY(this.initialScrollPosition),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopReportingScrollPositionChange&&(this.stopReportingScrollPositionChange(),this.stopReportingScrollPositionChange=void 0),this.stopListeningToScroll&&(this.stopListeningToScroll(),this.stopListeningToScroll=void 0),this.onStopScrollingListener&&(this.onStopScrollingListener=void 0),this.onScrollOnStopScrolling&&(this.onScrollOnStopScrolling=void 0),this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(m(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=f((function(){if(e.onStopScrollingTimer=void 0,e.onScrollOnStopScrolling&&(e.onScrollOnStopScrolling=void 0,e.onScroll({delayed:!0})),e.onStopScrollingListener){var t=e.onStopScrollingListener;e.onStopScrollingListener=void 0,j("~ The user has stopped scrolling ~"),t()}}),Ie)}},{key:"onStopScrolling",value:function(e){this.onStopScrollingListener=e,this.onStopScrollingTimer||this.watchOnStopScrolling()}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&fe(t.prototype,n),i&&fe(t,i),e}(),Ie=100;function pe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ve=function(){function e(t){var n=t.itemsContainer,i=t.getListTopOffset;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.itemsContainer=n,this.getListTopOffset=i}var t,n,i;return t=e,(n=[{key:"snapshot",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot&&this._snapshot.previousItems===t&&this._snapshot.newItems===n||(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()}))}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&pe(t.prototype,n),i&&pe(t,i),e}();function Se(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ye=function(){function e(t,n,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=t,this._get=n,this._set=i,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"initialize",value:function(e){for(var t=0;t<e.length;){if(void 0===e[t]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=t-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=t),this.measuredItemsHeight+=e[t];t++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(j("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(j("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,o=this.lastMeasuredItemIndex,r=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);j("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,r||(this.firstMeasuredItemIndex=s,r=!0)),(void 0===o||s>o)&&(void 0!==o&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),h=this._measureItemHeight(s,e);l!==h&&E("Item index",s,"height was",l,"before it was hidden, but, after showing it again, its height is",h,". Perhaps you forgot to persist the item's state by calling `onItemStateChange(i, newState)` when it changed, and that state got lost when the item element was unmounted, which resulted in a different height when the item was shown again, but with the missing state.")}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&Se(t.prototype,n),i&&Se(t,i),e}();function be(e){return be="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},be(e)}var we=Object.prototype.hasOwnProperty;function Ce(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function xe(e,t){if(Ce(e,t))return!0;if("object"!==be(e)||null===e||"object"!==be(t)||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var o=0;o<n.length;o++)if(!we.call(t,n[o])||!Ce(e[n[o]],t[n[o]]))return!1;return!0}function He(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 Re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?He(Object(n),!0).forEach((function(t){Te(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):He(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Te(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Oe(e){var t=Re({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=Re({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function Le(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ze(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Le(Object(n),!0).forEach((function(t){ke(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Le(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Pe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ae(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 ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Be=function(){function e(t,n){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Pe(this,e),ke(this,"getActualColumnsCountForState",(function(){return i._getColumnsCount?i._getColumnsCount(i.scrollableContainer):void 0})),ke(this,"getVerticalSpacing",(function(){return i.verticalSpacing||0})),ke(this,"getListTopOffsetInsideScrollableContainer",(function(){var e=i.scrollableContainer.getItemsContainerTopOffset();return i.listTopOffsetWatcher&&i.listTopOffsetWatcher.onListTopOffset(e),e})),ke(this,"stop",(function(){i.isRendered=!1,i.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),ke(this,"willUpdateState",(function(e,t){})),ke(this,"didUpdateState",(function(e){var t=i.getState();if(i.onStateChange&&(xe(t,e)||i.onStateChange(t,e)),e&&i.isRendered){var n;j("~ Rendered ~"),V()&&j("State",Oe(t)),void 0!==i.firstNonMeasuredItemIndex&&(n=Q),i.resetLayoutAfterResize&&(n=X);var o=i.resetLayoutAfterResize;i.firstNonMeasuredItemIndex=void 0,i.resetLayoutAfterResize=void 0,i.newItemsWillBeRendered=void 0,i.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,i.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0,o&&(i.itemHeights.reset(),i.verticalSpacing=void 0);var r,s=e.items,a=t.items;if(a!==s){var l=i.getItemsDiff(s,a);if(l){var h=l.prependedItemsCount;i.itemHeights.onPrepend(h)}else i.itemHeights.reset(),i.itemHeights.initialize(t.itemHeights);o||"SEAMLESS_PREPEND"!==i.onNewItemsRendered(l,t)&&(n=ne)}if(t.firstShownItemIndex!==e.firstShownItemIndex||t.lastShownItemIndex!==e.lastShownItemIndex||t.items!==e.items||o){var u=i.measureItemHeightsAndSpacingAndUpdateTablePadding();u&&(r=ze(ze({},r),u))}var c=i.beforeResize.cleanUpBeforeResizeItemHeights(e);if(void 0!==c){var d=c.scrollBy,f=c.beforeResize;j("Correct scroll position by",d),i.scroll.scrollByY(d),r=ze(ze({},r),{},{beforeResize:f})}n?i.updateStateRightAfterRender({stateUpdate:r,reason:n}):r&&i.setState(r)}})),ke(this,"updateShownItemIndexes",(function(e){var t=e.stateUpdate,n=Date.now(),o=i.getShownItemIndexes(),r=o.firstShownItemIndex,s=o.lastShownItemIndex,a=o.shownItemsHeight,l=o.firstNonMeasuredItemIndex;if(i.listHeightChangeWatcher.hasSnapshot()&&(s<i.listHeightChangeWatcher.getAnchorItemIndex()&&(s=i.listHeightChangeWatcher.getAnchorItemIndex()),l=void 0),!i.validateWillBeHiddenItemHeightsAreAccurate(r,s))return j("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),i.updateShownItemIndexes({stateUpdate:t});var h=i.layout.getBeforeItemsHeight(r),u=i.layout.getAfterItemsHeight(s,i.getItemsCount()),c=Date.now()-n;j("~ Layout values "+(i.bypass?"(bypass) ":"")+"~"),c<Me||E("Layout calculated in",c,"ms"),i._getColumnsCount&&j("Columns count",i.getColumnsCount()),j("First shown item index",r),j("Last shown item index",s),j("Before items height",h),j("After items height (actual or estimated)",u),j("Average item height (used for estimated after items height calculation)",i.itemHeights.getAverage()),V()&&(j("Item heights",i.getState().itemHeights.slice()),j("Item states",i.getState().itemStates.slice())),i.onBeforeShowItems(i.getState().items,i.getState().itemHeights,r,s),i.firstNonMeasuredItemIndex=l,i.previouslyCalculatedLayout=void 0===a?void 0:{firstShownItemIndex:r,lastShownItemIndex:s,beforeItemsHeight:h,shownItemsHeight:a},i.setState(ze({firstShownItemIndex:r,lastShownItemIndex:s,beforeItemsHeight:h,afterItemsHeight:u},t))})),ke(this,"onUpdateShownItemIndexes",(function(e){var t=e.reason,n=e.stateUpdate,o=function(){n&&i.setState(n)};return i.newItemsWillBeRendered||i.resetLayoutAfterResize||i.isResizing||0===i.getItemsCount()?o():(i.scroll.cancelScheduledLayout(),n=i.cancelLayoutTimer({stateUpdate:n}),j("~ Update Layout (on ".concat(t,") ~")),void i.updateShownItemIndexes({stateUpdate:n}))})),ke(this,"updateLayout",(function(){return i.onUpdateShownItemIndexes({reason:G})})),ke(this,"layout",(function(){return i.updateLayout()}));var r=o.onStateChange,s=o.customState,a=o.initialScrollPosition,l=o.onScrollPositionChange,h=o.measureItemsBatchSize,u=o.getScrollableContainer,c=o.getColumnsCount,d=o.getItemId,f=o.tbody,m=o._useTimeoutInRenderLoop,g=o._waitForScrollingToStop,v=o.getState,S=o.setState,y=o.bypass,b=o.estimatedItemHeight,w=o.onItemInitialRender,C=o.onItemFirstRender,x=o.scrollableContainer,H=o.state,R=o.engine;if(j("~ Initialize ~"),H&&(n=H.items),!x&&u&&(x=u()),R||(R=k),this.getItemsContainerElement=t,this.itemsContainer=R.createItemsContainer(t),t()&&this.itemsContainer.clear(),this.scrollableContainer=R.createScrollableContainer(x,t),f){if(R!==k)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");j("~ <tbody/> detected ~"),this.tbody=!0,p()||(j("~ <tbody/> not supported ~"),W(I),y=!0)}if(y&&j('~ "bypass" mode ~'),this.bypass=y,this._useTimeoutInRenderLoop=m,this.isItemEqual=d?function(e,t){return d(e)===d(t)}:function(e,t){return e===t},this.initialItems=n,this.onStateChange=r,this._getColumnsCount=c,w?this.onItemInitialRender=w:C&&(this.onItemInitialRender=function(e){E("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=i.getState().items.indexOf(e);t>=0&&C(t)}),j("Items count",n.length),b&&j("Estimated item height",b),v||(v=function(){return i.state},S=function(e,t){var n=t.willUpdateState,o=t.didUpdateState,r=v(),s=ze(ze({},r),e);n(s,r),i.state=s,o(r)}),this.getState=v,this.setState=function(e){V()&&j("Set state",Oe(e)),S(e,{willUpdateState:i.willUpdateState,didUpdateState:i.didUpdateState})},H&&V()&&j("Initial state (passed)",Oe(H)),H){var T,O=this.getActualColumnsCountForState();O!==H.columnsCount&&(E("~ Columns Count changed from",H.columnsCount||1,"to",O||1,"~"),T=!0);var L=this.getActualColumnsCount(),z=Math.floor(H.firstShownItemIndex/L)*L;z!==H.firstShownItemIndex&&(E("~ First Shown Item Index",H.firstShownItemIndex,"is not divisible by Columns Count",L,"~"),T=!0),T&&(E("Reset Layout"),H=ze(ze({},H),this.getInitialLayoutState(H.items)))}H&&(H=ze(ze({},H),{},{verticalSpacing:void 0})),this.itemHeights=new ye(this.itemsContainer,(function(e){return i.getState().itemHeights[e]}),(function(e,t){return i.getState().itemHeights[e]=t})),H&&this.itemHeights.initialize(H.itemHeights),this.layout=new q({bypass:y,estimatedItemHeight:b,measureItemsBatchSize:void 0===h?50:h,getPrerenderMargin:function(){return i.getPrerenderMargin()},getVerticalSpacing:function(){return i.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return i.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return i.getColumnsCount()},getColumnsCountBeforeResize:function(){return i.getState().beforeResize&&i.getState().beforeResize.columnsCount},getItemHeight:function(e){return i.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return i.getState().beforeResize&&i.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return i.getState().beforeResize?i.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return i.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return i.scrollableContainer&&i.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return i.previouslyCalculatedLayout}}),this.resize=new re({bypass:y,scrollableContainer:this.scrollableContainer,onStart:function(){j("~ Scrollable container resize started ~"),i.isResizing=!0},onStop:function(){j("~ Scrollable container resize finished ~"),i.isResizing=void 0},onNoChange:function(){i.onUpdateShownItemIndexes({reason:ee})},onHeightChange:function(){return i.onUpdateShownItemIndexes({reason:Z})},onWidthChange:function(e,t){j("~ Scrollable container width changed from",e,"to",t,"~"),i.onResize()}}),this.scroll=new ge({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:g,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.delayed;i.onUpdateShownItemIndexes({reason:t?$:J})},initialScrollPosition:a,onScrollPositionChange:l,isImmediateLayoutScheduled:function(){return i.layoutTimer},hasNonRenderedItemsAtTheTop:function(){return i.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return i.getState().lastShownItemIndex<i.getItemsCount()-1},getLatestLayoutVisibleArea:function(){return i.latestLayoutVisibleArea},getListTopOffset:this.getListTopOffsetInsideScrollableContainer,getPrerenderMargin:function(){return i.getPrerenderMargin()}}),this.listHeightChangeWatcher=new ve({itemsContainer:this.itemsContainer,getListTopOffset:this.getListTopOffsetInsideScrollableContainer}),R.watchListTopOffset&&(this.listTopOffsetWatcher=R.watchListTopOffset({getListTopOffset:this.getListTopOffsetInsideScrollableContainer,onListTopOffsetChange:function(e){return e.reason,i.onUpdateShownItemIndexes({reason:ie})}})),this.beforeResize=new ce({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount}),this.beforeResize.onInitialState(H),this.verticalSpacing=H?H.verticalSpacing:void 0,this.setState(H||this.getInitialState(s))}var t,n,i;return t=e,n=[{key:"getInitialState",value:function(e){var t=this.initialItems,n=ze(ze(ze({},e),this.getInitialLayoutState(t)),{},{items:t,itemStates:new Array(t.length)});return V()&&j("Initial state (autogenerated)",Oe(n)),j("First shown item index",n.firstShownItemIndex),j("Last shown item index",n.lastShownItemIndex),n}},{key:"getInitialLayoutState",value:function(e){var t=e.length,n=this.layout.getInitialLayoutValues({itemsCount:t,columnsCount:this.getColumnsCount()}),i=n.firstShownItemIndex,o=n.lastShownItemIndex,r=n.beforeItemsHeight,s=n.afterItemsHeight,a=new Array(t);return this.onBeforeShowItems(e,a,i,o),{itemHeights:a,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:i,lastShownItemIndex:o,beforeItemsHeight:r,afterItemsHeight:s}}},{key:"getActualColumnsCount",value:function(){return this.getActualColumnsCountForState()||1}},{key:"getVerticalSpacingBeforeResize",value:function(){return this.getState().beforeResize&&this.getState().beforeResize.verticalSpacing||0}},{key:"getColumnsCount",value:function(){return this.getState()&&this.getState().columnsCount||1}},{key:"getItemsCount",value:function(){return this.getState().items.length}},{key:"getPrerenderMargin",value:function(){return 1*this.scrollableContainer.getHeight()}},{key:"onBeforeShowItems",value:function(e,t,n,i){if(this.onItemInitialRender)for(var o=n;o<=i;)void 0===t[o]&&this.onItemInitialRender(e[o]),o++}},{key:"onMount",value:function(){E("`.onMount()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"render",value:function(){E("`.render()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"listen",value:function(){if(!1===this.isRendered)throw new Error("[virtual-scroller] Can't restart a `VirtualScroller` after it has been stopped");j("~ Rendered (initial) ~"),this.isRendered=!0;var e=this.measureItemHeightsAndSpacingAndUpdateTablePadding();this.resize.listen(),this.scroll.listen(),this.tbody&&function(e){e.classList.add("VirtualScroller");var t=document.getElementById("VirtualScrollerStyle");t||((t=document.createElement("style")).id="VirtualScrollerStyle",t.innerText="\n\t\t\ttbody.VirtualScroller:before {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t\t}\n\t\t\ttbody.VirtualScroller:after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t\t}\n\t\t".replace(/[\n\t]/g,""),document.head.appendChild(t))}(this.getItemsContainerElement()),this.onUpdateShownItemIndexes({reason:K,stateUpdate:e})}},{key:"measureItemHeightsAndSpacingAndUpdateTablePadding",value:function(){this.itemHeights.measureItemHeights(this.getState().firstShownItemIndex,this.getState().lastShownItemIndex);var e,t,n,i=this.measureVerticalSpacing();if(this.tbody&&(e=this.getItemsContainerElement(),t=this.getState().beforeItemsHeight,n=this.getState().afterItemsHeight,e.style.setProperty("--VirtualScroller-paddingTop",g(t)),e.style.setProperty("--VirtualScroller-paddingBottom",g(n))),void 0!==i)return{verticalSpacing:i}}},{key:"getVisibleArea",value:function(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onUnmount",value:function(){E("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"destroy",value:function(){E("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"cancelLayoutTimer",value:function(e){var t=e.stateUpdate;return this.layoutTimer?(m(this.layoutTimer),this.layoutTimer=void 0,t||this.layoutTimerStateUpdate?(t=ze(ze({},this.layoutTimerStateUpdate),t),this.layoutTimerStateUpdate=void 0,t):void 0):t}},{key:"scheduleLayoutTimer",value:function(e){var t=this,n=e.reason,i=e.stateUpdate;this.layoutTimerStateUpdate=i,this.layoutTimer=f((function(){t.layoutTimerStateUpdate=void 0,t.layoutTimer=void 0,t.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}},{key:"onNewItemsRendered",value:function(e,t){if(e){var n=e.prependedItemsCount;e.appendedItemsCount;var i=this.getState(),o=i.itemHeights,r=i.itemStates;if(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered)for(var s=0,a=Object.keys(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered);s<a.length;s++){var l=a[s];o[n+parseInt(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var h=0,u=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);h<u.length;h++){var c=u[h];r[n+parseInt(c)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[c]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(E('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "didUpdateState()" after appending items'),E("Previously calculated layout",this.previouslyCalculatedLayout),E("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightChangeWatcher.hasSnapshot()){if(0===t.firstShownItemIndex){j("~ Restore Scroll Position ~");var d=this.listHeightChangeWatcher.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightChangeWatcher.reset(),d?(j("Scroll down by",d),this.scroll.scrollByY(d)):j("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+d,firstShownItemIndex:0,lastShownItemIndex:t.lastShownItemIndex}:(E('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "didUpdateState()" after prepending items'),E("Previously calculated layout",this.previouslyCalculatedLayout),E("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}E('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "didUpdateState()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}},{key:"updateStateRightAfterRender",value:function(e){var t=e.reason,n=e.stateUpdate;this._useTimeoutInRenderLoop?(n=this.cancelLayoutTimer({stateUpdate:n}),this.scheduleLayoutTimer({reason:t,stateUpdate:n})):this.onUpdateShownItemIndexes({reason:t,stateUpdate:n})}},{key:"measureVerticalSpacing",value:function(){if(void 0===this.verticalSpacing){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;j("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),o=t.getNthRenderedItemHeight(0),r=1;r<n;){var s=t.getNthRenderedItemTopOffset(r),a=t.getNthRenderedItemHeight(r);if(s!==i)return s-(i+o);o=Math.max(o,a),r++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0===i)j("Not enough items rendered to measure vertical spacing");else if(j("Item vertical spacing",i),this.verticalSpacing=i,0!==i)return i}}},{key:"remeasureItemHeight",value:function(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}},{key:"onItemStateChange",value:function(e,t){V()&&(j("~ Item state changed ~"),j("Item",e),j("Previous state\n"+JSON.stringify(this.getState().itemStates[e],null,2)),j("New state\n"+JSON.stringify(t,null,2))),this.getState().itemStates[e]=t,this.newItemsWillBeRendered&&(this.itemStatesThatChangedWhileNewItemsWereBeingRendered||(this.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),this.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=t)}},{key:"onItemHeightChange",value:function(e){j("~ Re-measure item height ~"),j("Item",e);var t=this.getState(),n=t.itemHeights,i=t.firstShownItemIndex,o=t.lastShownItemIndex;if(!(e>=i&&e<=o))return E("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time.");var r=n[e];if(void 0===r)return W('"onItemHeightChange()" has been called for item '.concat(e,", but that item hasn't been rendered before."));var s=this.remeasureItemHeight(e);j("Previous height",r),j("New height",s),r!==s&&(j("~ Item height has changed ~"),this.updatePreviouslyCalculatedLayoutOnItemHeightChange(e,r,s),this.onUpdateShownItemIndexes({reason:te}),this.newItemsWillBeRendered&&(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered||(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered={}),this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[String(e)]=s))}},{key:"updatePreviouslyCalculatedLayoutOnItemHeightChange",value:function(e,t,n){if(this.previouslyCalculatedLayout){var i=n-t;e<this.previouslyCalculatedLayout.firstShownItemIndex?this.previouslyCalculatedLayout.beforeItemsHeight+=i:e>this.previouslyCalculatedLayout.lastShownItemIndex?void 0!==this.previouslyCalculatedLayout.afterItemsHeight&&(this.previouslyCalculatedLayout.afterItemsHeight+=i):this.previouslyCalculatedLayout.shownItemsHeight+=n-t}}},{key:"validateWillBeHiddenItemHeightsAreAccurate",value:function(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var o=this.getState().itemHeights[i],r=this.remeasureItemHeight(i);r!==o&&(n&&(j("~ Validate will-be-hidden item heights. ~"),this.updatePreviouslyCalculatedLayoutOnItemHeightChange(i,o,r)),n=!1,E("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",o,"to",r,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}},{key:"getShownItemIndexes",value:function(){var e=this.getItemsCount(),t=this.getVisibleArea(),n=t.top,i=t.bottom;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:n<this.itemsContainer.getHeight()&&i>0?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaTop:n,visibleAreaBottom:i}):(j("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}},{key:"updateItems",value:function(e,t){return this.setItems(e,t)}},{key:"setItems",value:function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=this.getState(),r=o.items,s=this.getState(),a=s.itemStates,l=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate:this.getState(),h=l.itemHeights;j("~ Update items ~");var u=this.getItemsDiff(r,e);if(u){var c=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate:this.getState(),d=c.firstShownItemIndex,f=c.lastShownItemIndex,m=c.beforeItemsHeight,g=c.afterItemsHeight,I=0===d&&(i.preserveScrollPositionOnPrependItems||i.preserveScrollPosition),p=u.prependedItemsCount,v=u.appendedItemsCount;t=this.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:d,lastShownItemIndex:f,beforeItemsHeight:m,afterItemsHeight:g},{prependedItemsCount:p,appendedItemsCount:v},{itemsCount:e.length,columnsCount:this.getActualColumnsCount(),shouldRestoreScrollPosition:I}),p>0&&(j("Prepend",p,"items"),h=new Array(p).concat(h),a&&(a=new Array(p).concat(a)),I?(j("Will restore scroll position"),this.listHeightChangeWatcher.snapshot({previousItems:r,newItems:e,prependedItemsCount:p}),void 0!==this.firstNonMeasuredItemIndex&&(this.firstNonMeasuredItemIndex+=p)):(j("Reset layout"),t=this.layout.getInitialLayoutValues({itemsCount:e.length,columnsCount:this.getActualColumnsCount()}),this.firstNonMeasuredItemIndex=void 0)),v>0&&(j("Append",v,"items"),h=h.concat(new Array(v)),a&&(a=a.concat(new Array(v)))),n={prepend:p>0,append:v>0}}else j("Items have changed, and",u?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),j("Previous items",r),j("New items",e),h=new Array(e.length),a=new Array(e.length),t=this.layout.getInitialLayoutValues({itemsCount:e.length,columnsCount:this.getActualColumnsCount()}),this.firstNonMeasuredItemIndex=void 0,this.listHeightChangeWatcher.reset(),n={replace:!0};j("~ Update state ~"),j("First shown item index",t.firstShownItemIndex),j("Last shown item index",t.lastShownItemIndex),j("Before items height",t.beforeItemsHeight),j("After items height (actual or estimated)",t.afterItemsHeight),this.onBeforeShowItems(e,h,t.firstShownItemIndex,t.lastShownItemIndex),this.newItemsWillBeRendered=ze(ze({},n),{},{count:e.length,layout:t});var S=ze(ze({},t),{},{items:e,itemStates:a,itemHeights:h});this.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(this.shouldDiscardBeforeResizeItemHeights()?S.beforeResize=void 0:S.beforeResize=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate.beforeResize:this.getState().beforeResize),this.setState(S)}},{key:"getItemsDiff",value:function(e,t){return function(e,t,n){var i=-1,o=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var o=0;o<e.length;){if(t.length<=n+o||!i(t[n+o],e[o]))return!1;o++}return!0}(e,t,i,n)&&(o=i+e.length-1)),i>=0&&o>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(o+1)}}(e,t,this.isItemEqual)}},{key:"shouldDiscardBeforeResizeItemHeights",value:function(){if(this.newItemsWillBeRendered){var e=this.newItemsWillBeRendered,t=e.prepend,n=e.replace;return t||n}}},{key:"onResize",value:function(){this.previouslyCalculatedLayout=void 0,this.listHeightChangeWatcher.reset();var e=this.newItemsWillBeRendered?this.newItemsWillBeRendered.count:this.getState().itemHeights.length,t=this.newItemsWillBeRendered?this.newItemsWillBeRendered.layout:this.getState(),n={firstShownItemIndex:t.firstShownItemIndex,lastShownItemIndex:t.lastShownItemIndex,beforeItemsHeight:t.beforeItemsHeight,afterItemsHeight:t.afterItemsHeight,itemHeights:new Array(e),columnsCount:this.getActualColumnsCountForState(),verticalSpacing:void 0},i=t.firstShownItemIndex,o=t.lastShownItemIndex,r=this.getActualColumnsCount(),s=Math.floor(i/r)*r,a=Math.ceil((o+1)/r)*r-1;s!==i&&(j("Columns Count changed from",this.getState().columnsCount||1,"to",r),j("First Shown Item Index needs to change from",i,"to",s)),n.firstShownItemIndex=s,n.lastShownItemIndex=a;var l=this.getVerticalSpacing(),h=this.getColumnsCount();this.shouldDiscardBeforeResizeItemHeights()||0===s?this.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(n.beforeResize=void 0):n.beforeResize={verticalSpacing:l,columnsCount:h,itemHeights:this.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:i,newFirstShownItemIndex:s,newColumnsCount:r})},this.resetLayoutAfterResize={stateUpdate:n},this.setState(n)}}],n&&Ae(t.prototype,n),i&&Ae(t,i),e}(),Me=15;return Be}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VirtualScroller=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var t=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(t){(function(){var e,n,i,o,r,s;"undefined"!=typeof performance&&null!==performance&&performance.now?t.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(t.exports=function(){return(e()-r)/1e6},n=process.hrtime,o=(e=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),r=o-s):Date.now?(t.exports=function(){return Date.now()-i},i=Date.now()):(t.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(e)})),n="undefined"==typeof window?e:window,i=["moz","webkit"],o="AnimationFrame",r=n["request"+o],s=n["cancel"+o]||n["cancelRequest"+o],a=0;!r&&a<i.length;a++)r=n[i[a]+"Request"+o],s=n[i[a]+"Cancel"+o]||n[i[a]+"CancelRequest"+o];if(!r||!s){var l=0,h=0,u=[];r=function(e){if(0===u.length){var n=t(),i=Math.max(0,16.666666666666668-(n-l));l=i+n,setTimeout((function(){var e=u.slice(0);u.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(l)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(i))}return u.push({handle:++h,callback:e,cancelled:!1}),h},s=function(e){for(var t=0;t<u.length;t++)u[t].handle===e&&(u[t].cancelled=!0)}}var c=function(e){return r.call(n,e)};c.cancel=function(){s.apply(n,arguments)},c.polyfill=function(e){e||(e=n),e.requestAnimationFrame=r,e.cancelAnimationFrame=s};var d=c.cancel;function f(e,t){var n=Date.now(),i=c((function o(){Date.now()-n>=t?e():i=c(o)}));return{clear:function(){return d(i)}}}function m(e){e&&e.clear()}function g(e){return(e%1==0?e:e.toFixed(2))+"px"}var I="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 p(){return"undefined"==typeof window||!window.document.documentMode}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)}}var S=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)}}])&&v(t.prototype,n),i&&v(t,i),e}();function y(e){return y="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},y(e)}function b(e,t){return b=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},b(e,t)}function w(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=x(e);if(t){var o=x(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return C(this,n)}}function C(e,t){if(t&&("object"===y(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 x(e){return x=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},x(e)}function H(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function R(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 T(e,t,n){return t&&R(e.prototype,t),n&&R(e,n),e}var O=function(){function e(t,n){H(this,e),this.element=t,this.getItemsContainerElement=n}return T(e,[{key:"getScrollY",value:function(){return this.element.scrollTop}},{key:"scrollToY",value:function(e){this.element.scrollTo?this.element.scrollTo(0,e):this.element.scrollTop=e}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"getHeight",value:function(){return this.element.offsetHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=this.element.getBoundingClientRect().top,t=this.element.clientTop;return this.getItemsContainerElement().getBoundingClientRect().top-e+this.getScrollY()-t}},{key:"onScroll",value:function(e){var t=this;return this.element.addEventListener("scroll",e),function(){return t.element.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e){var t,n=this;if("undefined"!=typeof ResizeObserver){var i=new ResizeObserver((function(t){t[0],e()}));i.observe(this.element),t=function(){return i.unobserve(n.element)}}var o=z(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),o()}}}]),e}(),L=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&b(e,t)}(n,e);var t=w(n);function n(e){return H(this,n),t.call(this,window,e)}return T(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 z(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(O);function z(e,t){var n=t.itemsContainerElement,i=function(){document.fullscreenElement&&!document.fullscreenElement.contains(n)||e()};return window.addEventListener("resize",i),function(){return window.removeEventListener("resize",i)}}function A(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){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this.isRendered=!0,this.watchListTopOffset()}},{key:"stop",value:function(){this.isRendered=!1,this.watchListTopOffsetTimer&&(m(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e.isRendered&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=f(n,500)))}()}}])&&A(t.prototype,n),i&&A(t,i),e}(),k={createItemsContainer:function(e){return new S(e)},createScrollableContainer:function(e,t){return e?new O(e,t):"undefined"!=typeof window?new L(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new P({getListTopOffset:t,onListTopOffsetChange:n})}};function B(e){return function(e){if(Array.isArray(e))return M(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 M(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 M(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 M(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 j(){if(V()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,B(["[virtual-scroller]"].concat(n)))}}function E(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(N())return W.apply(this,n);(e=console).warn.apply(e,B(["[virtual-scroller]"].concat(n)))}function W(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(j.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))}),0)):(i=console).error.apply(i,B(["[virtual-scroller]"].concat(t)))}function V(){var e=U("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function N(){return U("VirtualScrollerWarningsAreErrors")}function U(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function _(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 D(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_(Object(n),!0).forEach((function(t){F(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function F(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Y(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var q=function(){function e(t){var n=t.bypass,i=t.estimatedItemHeight,o=t.measureItemsBatchSize,r=t.getPrerenderMargin,s=t.getVerticalSpacing,a=t.getVerticalSpacingBeforeResize,l=t.getColumnsCount,h=t.getColumnsCountBeforeResize,u=t.getItemHeight,c=t.getItemHeightBeforeResize,d=t.getBeforeResizeItemsCount,f=t.getAverageItemHeight,m=t.getMaxVisibleAreaHeight,g=t.getPreviouslyCalculatedLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.estimatedItemHeight=i,this.measureItemsBatchSize=o,this.getPrerenderMargin=r,this.getVerticalSpacing=s,this.getVerticalSpacingBeforeResize=a,this.getColumnsCount=l,this.getColumnsCountBeforeResize=h,this.getItemHeight=u,this.getItemHeightBeforeResize=c,this.getBeforeResizeItemsCount=d,this.getAverageItemHeight=f,this.getMaxVisibleAreaHeight=m,this.getPreviouslyCalculatedLayout=g}var t,n,i;return t=e,n=[{key:"getInitialLayoutValues",value:function(e){var t,n,i=e.itemsCount,o=e.columnsCount;return i>0&&(t=0,n=this.getInitialLastShownItemIndex({itemsCount:i,columnsCount:o,firstShownItemIndex:t})),{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var o=1;return this.getMaxVisibleAreaHeight()&&(o=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin())),Math.min(i+(o*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){return this.getAverageItemHeight()||this.estimatedItemHeight||0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,o=e.lastShownItemIndex,r=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,h=n.itemsCount,u=n.columnsCount,c=n.shouldRestoreScrollPosition,d=this.getAverageItemHeight(),f=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/u)*(f+d)),a>0&&(i+=a,o+=a,r+=Math.ceil(a/u)*(d+f),c&&(i=0,r=0),a%u>0)){E("~ Prepended items count",a,"is not divisible by Columns Count",u,"~"),E("Reset Layout");var m=o-i+1;if(i=0,r=0,!c&&a>m){var g=h-((o=this.getInitialLastShownItemIndex({itemsCount:h,columnsCount:u,firstShownItemIndex:i}))+1);s=Math.ceil(g/u)*(f+d)}}return{beforeItemsHeight:r,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:o}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,o=t.nonMeasuredAreaHeight,r=t.indexOfTheFirstItemInTheRow;j("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(o)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=r),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(r+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaTop,i=e.visibleAreaBottom,o=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaTop:n,visibleAreaBottom:i,findFirstShownItemIndex:!0});if(null===o)return this.getNonVisibleListShownItemIndexes();if(void 0!==o.firstNonMeasuredItemIndex)return o;var r=o,s=r.firstShownItemIndex,a=r.beforeItemsHeight;return null===(o=this._getShownItemIndex({itemsCount:t,fromIndex:s,beforeItemsHeight:a,visibleAreaTop:n,visibleAreaBottom:i,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==o.firstNonMeasuredItemIndex?o:{firstShownItemIndex:s,lastShownItemIndex:o.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaTop,o=e.visibleAreaBottom,r=e.findFirstShownItemIndex,s=e.findLastShownItemIndex,a=e.fromIndex,l=e.beforeItemsHeight;if(0===a&&(l=0),void 0===l)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+a);if(!t){var h=this.getBeforeResizeItemsCount();if(h>a){var u=this._getShownItemIndex(D(D({},e),{},{beforeResize:!0,itemsCount:h})),c=u.notFound,d=u.beforeItemsHeight,f=u.firstShownItemIndex,m=u.lastShownItemIndex;if(!c){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===f?void 0:Math.floor(f/g)*g,lastShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,beforeItemsHeight:d}}l=d,a+=h}}for(var I=t?this.getColumnsCountBeforeResize():this.getColumnsCount(),p=t?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing(),v=a;v<n;){for(var S=v,y=n>S+I?p:0,b=0,w=0;w<I&&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:o+this.getPrerenderMargin()-l});b=Math.max(b,C),w++,v++}var x=l+b,H=x>i-this.getPrerenderMargin(),R=x+y>=o+this.getPrerenderMargin();if(r){if(H)return{firstShownItemIndex:S,beforeItemsHeight:l}}else if(s&&R)return{lastShownItemIndex:Math.min(S+I-1,n-1)};l+=b+y}return t?{notFound:!0,beforeItemsHeight:l}:r?(E("The list is supposed to be visible but no visible item has been found"),null):s?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,o=0;if(!n){var r=this.getBeforeResizeItemsCount();r>0&&(i=this.getBeforeItemsHeight(Math.min(e,r),{beforeResize:!0}),o=r)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();o<e;){for(var l=0,h=0;h<s;){var u=n?this.getItemHeightBeforeResize(o):this.getItemHeight(o);void 0===u&&(u=this.getAverageItemHeight()),l=Math.max(l,u),o++,h++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,o=e+1;o<t;){for(var r=0,s=0;s<n&&o<t;){var a=this.getItemHeight(o);void 0===a&&(a=this.getAverageItemHeight()),r=Math.max(r,a),o++,s++}i+=this.getVerticalSpacing(),i+=r}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),o=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,r=0;r<o;)t+=this.getItemHeightBeforeResize(r*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),r++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,h=0;h<this.getColumnsCount();){var u=this.getItemHeight(n+a*this.getColumnsCount()+h);if(void 0===u)return;l=Math.max(l,u),h++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&Y(t.prototype,n),i&&Y(t,i),e}(),J="scroll",$="stopped scrolling",G="manual",K="mounted",Q="actual item heights have been measured",X="viewport width changed",Z="viewport height changed",ee="viewport size unchanged",te="item height changed",ne="items changed",ie="list top offset changed";function oe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var re=function(){function e(t){var n,i,o,r=this,s=t.bypass,a=t.scrollableContainer,l=t.onStart,h=t.onStop,u=t.onHeightChange,c=t.onWidthChange,d=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),o=function(){if(r.isRendered){var e=r.scrollableContainerWidth,t=r.scrollableContainerHeight;r.scrollableContainerWidth=r.scrollableContainer.getWidth(),r.scrollableContainerHeight=r.scrollableContainer.getHeight(),r.scrollableContainerWidth===e?r.scrollableContainerHeight===t?r.onNoChange():r.onHeightChange(t,r.scrollableContainerHeight):r.onWidthChange(e,r.scrollableContainerWidth)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o,this.bypass=s,this.scrollableContainer=a,this.onHeightChange=u,this.onWidthChange=c,this.onNoChange=d,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i.onStart,r=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?m(n):o&&o(),n=f((function(){n=void 0,r&&r(),e.apply(i,a),s()}),t)}))}}(this._onResize,se,{onStart:l,onStop:h})}var t,n,i;return t=e,(n=[{key:"listen",value:function(){this.bypass||(this.isRendered=!0,this.scrollableContainerWidth=this.scrollableContainer.getWidth(),this.scrollableContainerHeight=this.scrollableContainer.getHeight(),this.scrollableContainerUnlistenResize=this.scrollableContainer.onResize(this.onResize))}},{key:"stop",value:function(){this.isRendered=!1,this.scrollableContainerUnlistenResize&&(this.scrollableContainerUnlistenResize(),this.scrollableContainerUnlistenResize=void 0)}}])&&oe(t.prototype,n),i&&oe(t,i),e}(),se=250;function ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ae(Object(n),!0).forEach((function(t){he(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function 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 ue(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ce=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,o=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=o}var t,n,i;return t=e,n=[{key:"onInitialState",value:function(e){e&&(e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e.beforeResize&&(this._includesBeforeResizeInState=!0))}},{key:"cleanUpBeforeResizeItemHeights",value:function(e){var t=this.getState(),n=t.firstShownItemIndex,i=t.lastShownItemIndex,o=t.itemHeights,r=t.beforeResize;if(r&&n<r.itemHeights.length){j('~ Clean up "before resize" item heights and correct scroll position ~');for(var s=0,a=Math.floor(r.itemHeights.length/this.getColumnsCount()),l=Math.min(a*this.getColumnsCount()-1,i),h=n;h<=l;){for(var u=0,c=0;c<this.getColumnsCount()&&h<=l;){var d=o[h];void 0===d&&(d=this.getAverageItemHeight()),u=Math.max(u,d),h++,c++}s+=u,s+=this.getVerticalSpacing()}for(var f=0,m=Math.min(r.itemHeights.length,i+1),g=Math.ceil(m/r.columnsCount),I=0===n?0:Math.floor((n-1)/r.columnsCount)+1;I<g;)f+=r.itemHeights[I*r.columnsCount],f+=r.verticalSpacing,I++;if(0===n)j('Drop all "before resize" item heights');else{var p=n,v=r.itemHeights.length-1;p===v?j("For item index",p,'— drop "before resize" height',r.itemHeights[p]):j("For item indexes from",p,"to",v,'— drop "before resize" heights',r.itemHeights.slice(p))}return r.itemHeights.splice(n,r.itemHeights.length-n),{scrollBy:s-f,beforeResize:0===n?void 0:le({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),o=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var r=this.getState(),s=r.beforeResize,a=r.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==o){for(var h=0,u=Math.ceil(l/s.columnsCount),c=0;c<u;)h+=s.itemHeights[c*s.columnsCount],h+=s.verticalSpacing,c++;for(var d=0,f=t;f<n;){for(var m=0,g=0;g<i&&f<n;)m=Math.max(m,a[f]),g++,f++;d+=m,d+=o}var I=h+d,p=Math.ceil(n/i);return new Array(n).fill(Math.max(0,I/p-o))}return s.itemHeights.concat(de(a,n,i).slice(s.itemHeights.length))}return de(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&ue(t.prototype,n),i&&ue(t,i),e}();function de(e,t,n){e=e.slice(0,Math.ceil(t/n)*n);for(var i=0;i*n<t;){for(var o=0,r=0;r<n;)o=Math.max(o,e[i*n+r]),r++;for(r=0;r<n;)e[i*n+r]=o,r++;i++}return e.slice(0,t)}function 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)}}function me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ge=function(){function e(t){var n=this,i=t.bypass,o=t.scrollableContainer,r=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,h=t.isImmediateLayoutScheduled,u=t.hasNonRenderedItemsAtTheTop,c=t.hasNonRenderedItemsAtTheBottom,d=t.getLatestLayoutVisibleArea,f=t.getListTopOffset,m=t.getPrerenderMargin,g=t.onScrolledToTop,I=t.waitForScrollingToStop;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),me(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),me(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(j(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.onScrollOnStopScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=o,this.itemsContainer=r,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=h,this.hasNonRenderedItemsAtTheTop=u,this.hasNonRenderedItemsAtTheBottom=c,this.getLatestLayoutVisibleArea=d,this.getListTopOffset=f,this.getPrerenderMargin=m,this.onScrolledToTop=g,this.waitForScrollingToStop=I}var t,n,i;return t=e,(n=[{key:"listen",value:function(){void 0!==this.initialScrollPosition&&this.scrollToY(this.initialScrollPosition),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopReportingScrollPositionChange&&(this.stopReportingScrollPositionChange(),this.stopReportingScrollPositionChange=void 0),this.stopListeningToScroll&&(this.stopListeningToScroll(),this.stopListeningToScroll=void 0),this.onStopScrollingListener&&(this.onStopScrollingListener=void 0),this.onScrollOnStopScrolling&&(this.onScrollOnStopScrolling=void 0),this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(m(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=f((function(){if(e.onStopScrollingTimer=void 0,e.onScrollOnStopScrolling&&(e.onScrollOnStopScrolling=void 0,e.onScroll({delayed:!0})),e.onStopScrollingListener){var t=e.onStopScrollingListener;e.onStopScrollingListener=void 0,j("~ The user has stopped scrolling ~"),t()}}),Ie)}},{key:"onStopScrolling",value:function(e){this.onStopScrollingListener=e,this.onStopScrollingTimer||this.watchOnStopScrolling()}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&fe(t.prototype,n),i&&fe(t,i),e}(),Ie=100;function pe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ve=function(){function e(t){var n=t.itemsContainer,i=t.getListTopOffset;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.itemsContainer=n,this.getListTopOffset=i}var t,n,i;return t=e,(n=[{key:"snapshot",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot&&this._snapshot.previousItems===t&&this._snapshot.newItems===n||(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()}))}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&pe(t.prototype,n),i&&pe(t,i),e}();function Se(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ye=function(){function e(t,n,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=t,this._get=n,this._set=i,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"initialize",value:function(e){for(var t=0;t<e.length;){if(void 0===e[t]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=t-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=t),this.measuredItemsHeight+=e[t];t++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(j("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(j("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,o=this.lastMeasuredItemIndex,r=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);j("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,r||(this.firstMeasuredItemIndex=s,r=!0)),(void 0===o||s>o)&&(void 0!==o&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),h=this._measureItemHeight(s,e);l!==h&&(E("Item index",s,"height changed unexpectedly: it was",l,"before, but now it is",h,'. 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,h))}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&&Se(t.prototype,n),i&&Se(t,i),e}();function be(e){return be="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},be(e)}var we=Object.prototype.hasOwnProperty;function Ce(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function xe(e,t){if(Ce(e,t))return!0;if("object"!==be(e)||null===e||"object"!==be(t)||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var o=0;o<n.length;o++)if(!we.call(t,n[o])||!Ce(e[n[o]],t[n[o]]))return!1;return!0}function He(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 Re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?He(Object(n),!0).forEach((function(t){Te(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):He(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Te(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Oe(e){var t=Re({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=Re({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function Le(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ze(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Le(Object(n),!0).forEach((function(t){ke(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Le(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ae(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Pe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Be=function(){function e(t,n){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Ae(this,e),ke(this,"getActualColumnsCountForState",(function(){return i._getColumnsCount?i._getColumnsCount(i.scrollableContainer):void 0})),ke(this,"getVerticalSpacing",(function(){return i.verticalSpacing||0})),ke(this,"getListTopOffsetInsideScrollableContainer",(function(){var e=i.scrollableContainer.getItemsContainerTopOffset();return i.listTopOffsetWatcher&&i.listTopOffsetWatcher.onListTopOffset(e),e})),ke(this,"stop",(function(){i.isRendered=!1,i.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),ke(this,"willUpdateState",(function(e,t){})),ke(this,"didUpdateState",(function(e){var t=i.getState();if(i.onStateChange&&(xe(t,e)||i.onStateChange(t,e)),e&&i.isRendered){var n;j("~ Rendered ~"),V()&&j("State",Oe(t)),void 0!==i.firstNonMeasuredItemIndex&&(n=Q),i.resetLayoutAfterResize&&(n=X);var o=i.resetLayoutAfterResize;i.firstNonMeasuredItemIndex=void 0,i.resetLayoutAfterResize=void 0,i.newItemsWillBeRendered=void 0,i.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,i.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0,o&&(i.itemHeights.reset(),i.verticalSpacing=void 0);var r,s=e.items,a=t.items;if(a!==s){var l=i.getItemsDiff(s,a);if(l){var h=l.prependedItemsCount;i.itemHeights.onPrepend(h)}else i.itemHeights.reset(),i.itemHeights.initialize(t.itemHeights);o||"SEAMLESS_PREPEND"!==i.onNewItemsRendered(l,t)&&(n=ne)}if(t.firstShownItemIndex!==e.firstShownItemIndex||t.lastShownItemIndex!==e.lastShownItemIndex||t.items!==e.items||o){var u=i.measureItemHeightsAndSpacingAndUpdateTablePadding();u&&(r=ze(ze({},r),u))}var c=i.beforeResize.cleanUpBeforeResizeItemHeights(e);if(void 0!==c){var d=c.scrollBy,f=c.beforeResize;j("Correct scroll position by",d),i.scroll.scrollByY(d),r=ze(ze({},r),{},{beforeResize:f})}n?i.updateStateRightAfterRender({stateUpdate:r,reason:n}):r&&i.setState(r)}})),ke(this,"updateShownItemIndexes",(function(e){var t=e.stateUpdate,n=Date.now(),o=i.getShownItemIndexes(),r=o.firstShownItemIndex,s=o.lastShownItemIndex,a=o.shownItemsHeight,l=o.firstNonMeasuredItemIndex;if(i.listHeightChangeWatcher.hasSnapshot()&&(s<i.listHeightChangeWatcher.getAnchorItemIndex()&&(s=i.listHeightChangeWatcher.getAnchorItemIndex()),l=void 0),!i.validateWillBeHiddenItemHeightsAreAccurate(r,s))return j("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),i.updateShownItemIndexes({stateUpdate:t});var h=i.layout.getBeforeItemsHeight(r),u=i.layout.getAfterItemsHeight(s,i.getItemsCount()),c=Date.now()-n;j("~ Layout values "+(i.bypass?"(bypass) ":"")+"~"),c<Me||E("Layout calculated in",c,"ms"),i._getColumnsCount&&j("Columns count",i.getColumnsCount()),j("First shown item index",r),j("Last shown item index",s),j("Before items height",h),j("After items height (actual or estimated)",u),j("Average item height (used for estimated after items height calculation)",i.itemHeights.getAverage()),V()&&(j("Item heights",i.getState().itemHeights.slice()),j("Item states",i.getState().itemStates.slice())),i.onBeforeShowItems(i.getState().items,i.getState().itemHeights,r,s),i.firstNonMeasuredItemIndex=l,i.previouslyCalculatedLayout=void 0===a?void 0:{firstShownItemIndex:r,lastShownItemIndex:s,beforeItemsHeight:h,shownItemsHeight:a},i.setState(ze({firstShownItemIndex:r,lastShownItemIndex:s,beforeItemsHeight:h,afterItemsHeight:u},t))})),ke(this,"onUpdateShownItemIndexes",(function(e){var t=e.reason,n=e.stateUpdate,o=function(){n&&i.setState(n)};return i.newItemsWillBeRendered||i.resetLayoutAfterResize||i.isResizing||0===i.getItemsCount()?o():(i.scroll.cancelScheduledLayout(),n=i.cancelLayoutTimer({stateUpdate:n}),j("~ Update Layout (on ".concat(t,") ~")),void i.updateShownItemIndexes({stateUpdate:n}))})),ke(this,"updateLayout",(function(){return i.onUpdateShownItemIndexes({reason:G})})),ke(this,"layout",(function(){return i.updateLayout()}));var r=o.onStateChange,s=o.customState,a=o.initialScrollPosition,l=o.onScrollPositionChange,h=o.measureItemsBatchSize,u=o.getScrollableContainer,c=o.getColumnsCount,d=o.getItemId,f=o.tbody,m=o._useTimeoutInRenderLoop,g=o._waitForScrollingToStop,v=o.getState,S=o.setState,y=o.bypass,b=o.estimatedItemHeight,w=o.onItemInitialRender,C=o.onItemFirstRender,x=o.scrollableContainer,H=o.state,R=o.engine;if(j("~ Initialize ~"),H&&(n=H.items),!x&&u&&(x=u()),R||(R=k),this.getItemsContainerElement=t,this.itemsContainer=R.createItemsContainer(t),t()&&this.itemsContainer.clear(),this.scrollableContainer=R.createScrollableContainer(x,t),f){if(R!==k)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");j("~ <tbody/> detected ~"),this.tbody=!0,p()||(j("~ <tbody/> not supported ~"),W(I),y=!0)}if(y&&j('~ "bypass" mode ~'),this.bypass=y,this._useTimeoutInRenderLoop=m,this.isItemEqual=d?function(e,t){return d(e)===d(t)}:function(e,t){return e===t},this.initialItems=n,this.onStateChange=r,this._getColumnsCount=c,w?this.onItemInitialRender=w:C&&(this.onItemInitialRender=function(e){E("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=i.getState().items.indexOf(e);t>=0&&C(t)}),j("Items count",n.length),b&&j("Estimated item height",b),v||(v=function(){return i.state},S=function(e,t){var n=t.willUpdateState,o=t.didUpdateState,r=v(),s=ze(ze({},r),e);n(s,r),i.state=s,o(r)}),this.getState=v,this.setState=function(e){V()&&j("Set state",Oe(e)),S(e,{willUpdateState:i.willUpdateState,didUpdateState:i.didUpdateState})},H&&V()&&j("Initial state (passed)",Oe(H)),H){var T,O=this.getActualColumnsCountForState();O!==H.columnsCount&&(E("~ Columns Count changed from",H.columnsCount||1,"to",O||1,"~"),T=!0);var L=this.getActualColumnsCount(),z=Math.floor(H.firstShownItemIndex/L)*L;z!==H.firstShownItemIndex&&(E("~ First Shown Item Index",H.firstShownItemIndex,"is not divisible by Columns Count",L,"~"),T=!0),T&&(E("Reset Layout"),H=ze(ze({},H),this.getInitialLayoutState(H.items)))}H&&(H=ze(ze({},H),{},{verticalSpacing:void 0})),this.itemHeights=new ye(this.itemsContainer,(function(e){return i.getState().itemHeights[e]}),(function(e,t){return i.getState().itemHeights[e]=t})),H&&this.itemHeights.initialize(H.itemHeights),this.layout=new q({bypass:y,estimatedItemHeight:b,measureItemsBatchSize:void 0===h?50:h,getPrerenderMargin:function(){return i.getPrerenderMargin()},getVerticalSpacing:function(){return i.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return i.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return i.getColumnsCount()},getColumnsCountBeforeResize:function(){return i.getState().beforeResize&&i.getState().beforeResize.columnsCount},getItemHeight:function(e){return i.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return i.getState().beforeResize&&i.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return i.getState().beforeResize?i.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return i.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return i.scrollableContainer&&i.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return i.previouslyCalculatedLayout}}),this.resize=new re({bypass:y,scrollableContainer:this.scrollableContainer,onStart:function(){j("~ Scrollable container resize started ~"),i.isResizing=!0},onStop:function(){j("~ Scrollable container resize finished ~"),i.isResizing=void 0},onNoChange:function(){i.onUpdateShownItemIndexes({reason:ee})},onHeightChange:function(){return i.onUpdateShownItemIndexes({reason:Z})},onWidthChange:function(e,t){j("~ Scrollable container width changed from",e,"to",t,"~"),i.onResize()}}),this.scroll=new ge({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:g,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.delayed;i.onUpdateShownItemIndexes({reason:t?$:J})},initialScrollPosition:a,onScrollPositionChange:l,isImmediateLayoutScheduled:function(){return i.layoutTimer},hasNonRenderedItemsAtTheTop:function(){return i.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return i.getState().lastShownItemIndex<i.getItemsCount()-1},getLatestLayoutVisibleArea:function(){return i.latestLayoutVisibleArea},getListTopOffset:this.getListTopOffsetInsideScrollableContainer,getPrerenderMargin:function(){return i.getPrerenderMargin()}}),this.listHeightChangeWatcher=new ve({itemsContainer:this.itemsContainer,getListTopOffset:this.getListTopOffsetInsideScrollableContainer}),R.watchListTopOffset&&(this.listTopOffsetWatcher=R.watchListTopOffset({getListTopOffset:this.getListTopOffsetInsideScrollableContainer,onListTopOffsetChange:function(e){return e.reason,i.onUpdateShownItemIndexes({reason:ie})}})),this.beforeResize=new ce({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount}),this.beforeResize.onInitialState(H),this.verticalSpacing=H?H.verticalSpacing:void 0,this.setState(H||this.getInitialState(s))}var t,n,i;return t=e,n=[{key:"getInitialState",value:function(e){var t=this.initialItems,n=ze(ze(ze({},e),this.getInitialLayoutState(t)),{},{items:t,itemStates:new Array(t.length)});return V()&&j("Initial state (autogenerated)",Oe(n)),j("First shown item index",n.firstShownItemIndex),j("Last shown item index",n.lastShownItemIndex),n}},{key:"getInitialLayoutState",value:function(e){var t=e.length,n=this.layout.getInitialLayoutValues({itemsCount:t,columnsCount:this.getActualColumnsCount()}),i=n.firstShownItemIndex,o=n.lastShownItemIndex,r=n.beforeItemsHeight,s=n.afterItemsHeight,a=new Array(t);return this.onBeforeShowItems(e,a,i,o),{itemHeights:a,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:i,lastShownItemIndex:o,beforeItemsHeight:r,afterItemsHeight:s}}},{key:"getActualColumnsCount",value:function(){return this.getActualColumnsCountForState()||1}},{key:"getVerticalSpacingBeforeResize",value:function(){return this.getState().beforeResize&&this.getState().beforeResize.verticalSpacing||0}},{key:"getColumnsCount",value:function(){return this.getState()&&this.getState().columnsCount||1}},{key:"getItemsCount",value:function(){return this.getState().items.length}},{key:"getPrerenderMargin",value:function(){return 1*this.scrollableContainer.getHeight()}},{key:"onBeforeShowItems",value:function(e,t,n,i){if(this.onItemInitialRender)for(var o=n;o<=i;)void 0===t[o]&&this.onItemInitialRender(e[o]),o++}},{key:"onMount",value:function(){E("`.onMount()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"render",value:function(){E("`.render()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"listen",value:function(){if(!1===this.isRendered)throw new Error("[virtual-scroller] Can't restart a `VirtualScroller` after it has been stopped");j("~ Rendered (initial) ~"),this.isRendered=!0;var e=this.measureItemHeightsAndSpacingAndUpdateTablePadding();this.resize.listen(),this.scroll.listen(),this.tbody&&function(e){e.classList.add("VirtualScroller");var t=document.getElementById("VirtualScrollerStyle");t||((t=document.createElement("style")).id="VirtualScrollerStyle",t.innerText="\n\t\t\ttbody.VirtualScroller:before {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t\t}\n\t\t\ttbody.VirtualScroller:after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t\t}\n\t\t".replace(/[\n\t]/g,""),document.head.appendChild(t))}(this.getItemsContainerElement()),this.onUpdateShownItemIndexes({reason:K,stateUpdate:e})}},{key:"measureItemHeightsAndSpacingAndUpdateTablePadding",value:function(){this.itemHeights.measureItemHeights(this.getState().firstShownItemIndex,this.getState().lastShownItemIndex);var e,t,n,i=this.measureVerticalSpacing();if(this.tbody&&(e=this.getItemsContainerElement(),t=this.getState().beforeItemsHeight,n=this.getState().afterItemsHeight,e.style.setProperty("--VirtualScroller-paddingTop",g(t)),e.style.setProperty("--VirtualScroller-paddingBottom",g(n))),void 0!==i)return{verticalSpacing:i}}},{key:"getVisibleArea",value:function(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onUnmount",value:function(){E("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"destroy",value:function(){E("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"cancelLayoutTimer",value:function(e){var t=e.stateUpdate;return this.layoutTimer?(m(this.layoutTimer),this.layoutTimer=void 0,t||this.layoutTimerStateUpdate?(t=ze(ze({},this.layoutTimerStateUpdate),t),this.layoutTimerStateUpdate=void 0,t):void 0):t}},{key:"scheduleLayoutTimer",value:function(e){var t=this,n=e.reason,i=e.stateUpdate;this.layoutTimerStateUpdate=i,this.layoutTimer=f((function(){t.layoutTimerStateUpdate=void 0,t.layoutTimer=void 0,t.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}},{key:"onNewItemsRendered",value:function(e,t){if(e){var n=e.prependedItemsCount;e.appendedItemsCount;var i=this.getState(),o=i.itemHeights,r=i.itemStates;if(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered)for(var s=0,a=Object.keys(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered);s<a.length;s++){var l=a[s];o[n+parseInt(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var h=0,u=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);h<u.length;h++){var c=u[h];r[n+parseInt(c)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[c]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(E('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "didUpdateState()" after appending items'),E("Previously calculated layout",this.previouslyCalculatedLayout),E("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightChangeWatcher.hasSnapshot()){if(0===t.firstShownItemIndex){j("~ Restore Scroll Position ~");var d=this.listHeightChangeWatcher.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightChangeWatcher.reset(),d?(j("Scroll down by",d),this.scroll.scrollByY(d)):j("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+d,firstShownItemIndex:0,lastShownItemIndex:t.lastShownItemIndex}:(E('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "didUpdateState()" after prepending items'),E("Previously calculated layout",this.previouslyCalculatedLayout),E("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}E('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "didUpdateState()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}},{key:"updateStateRightAfterRender",value:function(e){var t=e.reason,n=e.stateUpdate;this._useTimeoutInRenderLoop?(n=this.cancelLayoutTimer({stateUpdate:n}),this.scheduleLayoutTimer({reason:t,stateUpdate:n})):this.onUpdateShownItemIndexes({reason:t,stateUpdate:n})}},{key:"measureVerticalSpacing",value:function(){if(void 0===this.verticalSpacing){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;j("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),o=t.getNthRenderedItemHeight(0),r=1;r<n;){var s=t.getNthRenderedItemTopOffset(r),a=t.getNthRenderedItemHeight(r);if(s!==i)return s-(i+o);o=Math.max(o,a),r++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0===i)j("Not enough items rendered to measure vertical spacing");else if(j("Item vertical spacing",i),this.verticalSpacing=i,0!==i)return i}}},{key:"remeasureItemHeight",value:function(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}},{key:"onItemStateChange",value:function(e,t){V()&&(j("~ Item state changed ~"),j("Item",e),j("Previous state\n"+JSON.stringify(this.getState().itemStates[e],null,2)),j("New state\n"+JSON.stringify(t,null,2))),this.getState().itemStates[e]=t,this.newItemsWillBeRendered&&(this.itemStatesThatChangedWhileNewItemsWereBeingRendered||(this.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),this.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=t)}},{key:"onItemHeightChange",value:function(e){j("~ Re-measure item height ~"),j("Item",e);var t=this.getState(),n=t.itemHeights,i=t.firstShownItemIndex,o=t.lastShownItemIndex;if(!(e>=i&&e<=o))return E("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time.");var r=n[e];if(void 0===r)return W('"onItemHeightChange()" has been called for item '.concat(e,", but that item hasn't been rendered before."));var s=this.remeasureItemHeight(e);j("Previous height",r),j("New height",s),r!==s&&(j("~ Item height has changed ~"),this.updatePreviouslyCalculatedLayoutOnItemHeightChange(e,r,s),this.onUpdateShownItemIndexes({reason:te}),this.newItemsWillBeRendered&&(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered||(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered={}),this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[String(e)]=s))}},{key:"updatePreviouslyCalculatedLayoutOnItemHeightChange",value:function(e,t,n){if(this.previouslyCalculatedLayout){var i=n-t;e<this.previouslyCalculatedLayout.firstShownItemIndex?this.previouslyCalculatedLayout.beforeItemsHeight+=i:e>this.previouslyCalculatedLayout.lastShownItemIndex?void 0!==this.previouslyCalculatedLayout.afterItemsHeight&&(this.previouslyCalculatedLayout.afterItemsHeight+=i):this.previouslyCalculatedLayout.shownItemsHeight+=n-t}}},{key:"validateWillBeHiddenItemHeightsAreAccurate",value:function(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var o=this.getState().itemHeights[i],r=this.remeasureItemHeight(i);r!==o&&(n&&(j("~ Validate will-be-hidden item heights. ~"),this.updatePreviouslyCalculatedLayoutOnItemHeightChange(i,o,r)),n=!1,E("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",o,"to",r,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}},{key:"getShownItemIndexes",value:function(){var e=this.getItemsCount(),t=this.getVisibleArea(),n=t.top,i=t.bottom;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:n<this.itemsContainer.getHeight()&&i>0?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaTop:n,visibleAreaBottom:i}):(j("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}},{key:"updateItems",value:function(e,t){return this.setItems(e,t)}},{key:"setItems",value:function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=this.getState(),r=o.items,s=this.getState(),a=s.itemStates,l=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate:this.getState(),h=l.itemHeights;j("~ Update items ~");var u=this.getItemsDiff(r,e);if(u){var c=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate:this.getState(),d=c.firstShownItemIndex,f=c.lastShownItemIndex,m=c.beforeItemsHeight,g=c.afterItemsHeight,I=0===d&&(i.preserveScrollPositionOnPrependItems||i.preserveScrollPosition),p=u.prependedItemsCount,v=u.appendedItemsCount;t=this.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:d,lastShownItemIndex:f,beforeItemsHeight:m,afterItemsHeight:g},{prependedItemsCount:p,appendedItemsCount:v},{itemsCount:e.length,columnsCount:this.getActualColumnsCount(),shouldRestoreScrollPosition:I}),p>0&&(j("Prepend",p,"items"),h=new Array(p).concat(h),a&&(a=new Array(p).concat(a)),I?(j("Will restore scroll position"),this.listHeightChangeWatcher.snapshot({previousItems:r,newItems:e,prependedItemsCount:p}),void 0!==this.firstNonMeasuredItemIndex&&(this.firstNonMeasuredItemIndex+=p)):(j("Reset layout"),t=this.layout.getInitialLayoutValues({itemsCount:e.length,columnsCount:this.getActualColumnsCount()}),this.firstNonMeasuredItemIndex=void 0)),v>0&&(j("Append",v,"items"),h=h.concat(new Array(v)),a&&(a=a.concat(new Array(v)))),n={prepend:p>0,append:v>0}}else j("Items have changed, and",u?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),j("Previous items",r),j("New items",e),h=new Array(e.length),a=new Array(e.length),t=this.layout.getInitialLayoutValues({itemsCount:e.length,columnsCount:this.getActualColumnsCount()}),this.firstNonMeasuredItemIndex=void 0,this.listHeightChangeWatcher.reset(),n={replace:!0};j("~ Update state ~"),j("First shown item index",t.firstShownItemIndex),j("Last shown item index",t.lastShownItemIndex),j("Before items height",t.beforeItemsHeight),j("After items height (actual or estimated)",t.afterItemsHeight),this.onBeforeShowItems(e,h,t.firstShownItemIndex,t.lastShownItemIndex),this.newItemsWillBeRendered=ze(ze({},n),{},{count:e.length,layout:t});var S=ze(ze({},t),{},{items:e,itemStates:a,itemHeights:h});this.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(this.shouldDiscardBeforeResizeItemHeights()?S.beforeResize=void 0:S.beforeResize=this.resetLayoutAfterResize?this.resetLayoutAfterResize.stateUpdate.beforeResize:this.getState().beforeResize),this.setState(S)}},{key:"getItemsDiff",value:function(e,t){return function(e,t,n){var i=-1,o=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var o=0;o<e.length;){if(t.length<=n+o||!i(t[n+o],e[o]))return!1;o++}return!0}(e,t,i,n)&&(o=i+e.length-1)),i>=0&&o>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(o+1)}}(e,t,this.isItemEqual)}},{key:"shouldDiscardBeforeResizeItemHeights",value:function(){if(this.newItemsWillBeRendered){var e=this.newItemsWillBeRendered,t=e.prepend,n=e.replace;return t||n}}},{key:"onResize",value:function(){this.previouslyCalculatedLayout=void 0,this.listHeightChangeWatcher.reset();var e=this.newItemsWillBeRendered?this.newItemsWillBeRendered.count:this.getState().itemHeights.length,t=this.newItemsWillBeRendered?this.newItemsWillBeRendered.layout:this.getState(),n={firstShownItemIndex:t.firstShownItemIndex,lastShownItemIndex:t.lastShownItemIndex,beforeItemsHeight:t.beforeItemsHeight,afterItemsHeight:t.afterItemsHeight,itemHeights:new Array(e),columnsCount:this.getActualColumnsCountForState(),verticalSpacing:void 0},i=t.firstShownItemIndex,o=t.lastShownItemIndex,r=this.getActualColumnsCount(),s=Math.floor(i/r)*r,a=Math.min(Math.ceil((o+1)/r)*r,e)-1;s!==i&&(j("Columns Count changed from",this.getState().columnsCount||1,"to",r),j("First Shown Item Index needs to change from",i,"to",s)),n.firstShownItemIndex=s,n.lastShownItemIndex=a;var l=this.getVerticalSpacing(),h=this.getColumnsCount();this.shouldDiscardBeforeResizeItemHeights()||0===s?this.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(n.beforeResize=void 0):n.beforeResize={verticalSpacing:l,columnsCount:h,itemHeights:this.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:i,newFirstShownItemIndex:s,newColumnsCount:r})},this.resetLayoutAfterResize={stateUpdate:n},this.setState(n)}}],n&&Pe(t.prototype,n),i&&Pe(t,i),e}(),Me=15;return Be}));
//# sourceMappingURL=virtual-scroller.js.map

@@ -144,11 +144,8 @@ "use strict";

while (i <= lastShownItemIndex) {
// Measure item heights that haven't been measured previously.
// Don't re-measure item heights that have been measured previously.
// The rationale is that developers are supposed to manually call
// `.onItemHeightChange()` every time an item's height changes.
// If developers aren't neglecting that rule, item heights won't
// If developers don't neglect that rule, item heights won't
// change unexpectedly.
// // Re-measure all shown items' heights, because an item's height
// // might have changed since it has been measured initially.
// // For example, if an item is a long comment with a "Show more" button,
// // then the user might have clicked that "Show more" button.
if (this._get(i) === undefined) {

@@ -199,6 +196,7 @@ nonPreviouslyMeasuredItemIndexes.push(i);

} else {
// Validate the item's height right after showing it after being hidden,
// because, if the stored item's state isn't applied properly, the item's
// height might be incorrect when it's rendered with that state not applied,
// and so a developer could know that there's a bug in their code.
// Validate that the item's height didn't change since it was last measured.
// If it did, then display a warning and update the item's height
// as an attempt to fix things.
// If an item's height changes unexpectedly then it means that there'll
// likely be "content jumping".
var previousHeight = this._get(i);

@@ -209,3 +207,5 @@

if (previousHeight !== _height) {
(0, _debug.warn)('Item index', i, 'height was', previousHeight, 'before it was hidden, but, after showing it again, its height is', _height, '. Perhaps you forgot to persist the item\'s state by calling `onItemStateChange(i, newState)` when it changed, and that state got lost when the item element was unmounted, which resulted in a different height when the item was shown again, but with the missing state.');
(0, _debug.warn)('Item index', i, 'height changed unexpectedly: it was', previousHeight, 'before, but now it is', _height, '. 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.'); // Update the item's height as an attempt to fix things.
this._set(i, _height);
}

@@ -212,0 +212,0 @@ }

@@ -131,11 +131,8 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

while (i <= lastShownItemIndex) {
// Measure item heights that haven't been measured previously.
// Don't re-measure item heights that have been measured previously.
// The rationale is that developers are supposed to manually call
// `.onItemHeightChange()` every time an item's height changes.
// If developers aren't neglecting that rule, item heights won't
// If developers don't neglect that rule, item heights won't
// change unexpectedly.
// // Re-measure all shown items' heights, because an item's height
// // might have changed since it has been measured initially.
// // For example, if an item is a long comment with a "Show more" button,
// // then the user might have clicked that "Show more" button.
if (this._get(i) === undefined) {

@@ -186,6 +183,7 @@ nonPreviouslyMeasuredItemIndexes.push(i);

} else {
// Validate the item's height right after showing it after being hidden,
// because, if the stored item's state isn't applied properly, the item's
// height might be incorrect when it's rendered with that state not applied,
// and so a developer could know that there's a bug in their code.
// Validate that the item's height didn't change since it was last measured.
// If it did, then display a warning and update the item's height
// as an attempt to fix things.
// If an item's height changes unexpectedly then it means that there'll
// likely be "content jumping".
var previousHeight = this._get(i);

@@ -196,3 +194,5 @@

if (previousHeight !== _height) {
warn('Item index', i, 'height was', previousHeight, 'before it was hidden, but, after showing it again, its height is', _height, '. Perhaps you forgot to persist the item\'s state by calling `onItemStateChange(i, newState)` when it changed, and that state got lost when the item element was unmounted, which resulted in a different height when the item was shown again, but with the missing state.');
warn('Item index', i, 'height changed unexpectedly: it was', previousHeight, 'before, but now it is', _height, '. 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.'); // Update the item's height as an attempt to fix things.
this._set(i, _height);
}

@@ -199,0 +199,0 @@ }

{
"name": "virtual-scroller",
"version": "1.8.0",
"version": "1.8.1",
"description": "A component for efficiently rendering large lists of variable height items",

@@ -5,0 +5,0 @@ "main": "index.commonjs.js",

@@ -114,11 +114,8 @@ import log, { warn, isDebug, reportError } from './utility/debug'

while (i <= lastShownItemIndex) {
// Measure item heights that haven't been measured previously.
// Don't re-measure item heights that have been measured previously.
// The rationale is that developers are supposed to manually call
// `.onItemHeightChange()` every time an item's height changes.
// If developers aren't neglecting that rule, item heights won't
// If developers don't neglect that rule, item heights won't
// change unexpectedly.
// // Re-measure all shown items' heights, because an item's height
// // might have changed since it has been measured initially.
// // For example, if an item is a long comment with a "Show more" button,
// // then the user might have clicked that "Show more" button.
if (this._get(i) === undefined) {

@@ -163,10 +160,13 @@ nonPreviouslyMeasuredItemIndexes.push(i)

} else {
// Validate the item's height right after showing it after being hidden,
// because, if the stored item's state isn't applied properly, the item's
// height might be incorrect when it's rendered with that state not applied,
// and so a developer could know that there's a bug in their code.
// Validate that the item's height didn't change since it was last measured.
// If it did, then display a warning and update the item's height
// as an attempt to fix things.
// If an item's height changes unexpectedly then it means that there'll
// likely be "content jumping".
const previousHeight = this._get(i)
const height = this._measureItemHeight(i, firstShownItemIndex)
if (previousHeight !== height) {
warn('Item index', i, 'height was', previousHeight, 'before it was hidden, but, after showing it again, its height is', height, '. Perhaps you forgot to persist the item\'s state by calling `onItemStateChange(i, newState)` when it changed, and that state got lost when the item element was unmounted, which resulted in a different height when the item was shown again, but with the missing state.')
warn('Item index', i, 'height changed unexpectedly: it was', previousHeight, 'before, but now it is', height, '. 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.')
// Update the item's height as an attempt to fix things.
this._set(i, height)
}

@@ -173,0 +173,0 @@ }

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc