virtual-scroller 1.12.6 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -563,9 +563,9 @@ To fix that, `itemComponent` receives the following state management properties:
563
563
 
564
564
  * This is simply a proxy for `virtualScroller.setItemState(i, itemState)`.
565
565
 
566
- * `onHeightChange()` — Call this function whenever the item element height changes.
566
+ * `onHeightDidChange()` — Call this function immediately after (if ever) the item element height has changed.
567
567
 
568
- * In the example described above, `onHeightChange()` would be called immediately after a user has clicked a "Show more"/"Show less" button and the component has re-rendered itself, because that results in a change of the item element's height, so `VirtualScroller` should re-measure it in order for its internal calculations to stay correct.
568
+ * In the example described above, `onHeightDidChange()` would be called immediately after a user has clicked a "Show more"/"Show less" button and the component has re-rendered itself, because that results in a change of the item element's height, so `VirtualScroller` should re-measure it in order for its internal calculations to stay correct.
569
569
 
570
570
  * This is simply a proxy for `virtualScroller.onItemHeightDidChange(i)`.
571
571
 
@@ -574,7 +574,7 @@ function ItemComponent({
574
574
  item,
575
575
  state,
576
576
  setState,
577
- onHeightChange
577
+ onHeightDidChange
578
578
  }) {
579
579
  const [internalState, setInternalState] = useState(state)
580
580
 
@@ -583,7 +583,7 @@ function ItemComponent({
583
583
  useLayoutEffect(() => {
584
584
  if (hasMounted.current) {
585
585
  setState(internalState)
586
- onHeightChange()
586
+ onHeightDidChange()
587
587
  } else {
588
588
  // Skip the initial mount.
589
589
  // Only handle the changes of the `internalState`.
@@ -667,6 +667,9 @@ function Example() {
667
667
 
668
668
  * `getItemId(item): any` — The `getItemId` option of `VirtualScroller` class. The React component also uses it as a source for a React `key` for rendering an `item`. If `getItemId()` is not supplied, then item `key`s are autogenerated from a random-generated prefix (that changes every time `items` are updated) and an `item` index. Can be used to prevent `<VirtualScroller/>` from re-rendering all visible items every time `items` property is updated.
669
669
 
670
+ * `readyToStart: boolean` — One could pass `false` to delay the `start()` of the `VirtualScroller` until everything's "ready".
671
+ * For example, when navigating "Back" to a "Catalog" page, the application could fully restore the `VirtualScroller` state from a snapshot, but for that to work, the scroll position has to be restored independently by the application "router". When `VirtualScroller` attempts to "rehydrate" itself from a state snapshot, the scroll position should already be restored by the application "router". By default, `<VirtualScroller/>` component "rehydrates" itself in a `useLayoutEffect()`, which happens before `useLayoutEffect()` or `useEffect()` of the application "router" component according to the order in which React effects get executed: from child to parent. But at the same time, the application "router" component typically restores the scroll position in `useEffect()` meaning that the scroll position is not yet restored at the time `<VirtualScroller/>` component "rehydrates" itself. So the `<VirtualScroller/>` component should somehow "wait" for the application "router" to restore the scroll position, after which it should attempt to "rehydrate" itself. That's what the `readyToStart` property is for: until the scroll position is restored, it should pass `readyToStart={false}` property to the `<VirtualScroller/>`.
672
+
670
673
  * `bypass: boolean` — The `bypass` option of `VirtualScroller` class.
671
674
 
672
675
  * `tbody: boolean` — The `tbody` option of `VirtualScroller` class.
@@ -1077,7 +1080,7 @@ One can use any npm CDN service, e.g. [unpkg.com](https://unpkg.com) or [jsdeliv
1077
1080
 
1078
1081
  * Use [Resize Observer](https://caniuse.com/#search=Resize%20Observer) instead of calling `.onItemHeightDidChange(i)` manually.
1079
1082
 
1080
- * Currently React `<VirtualScroller/>` passes `onHeightChange()` property and provides `.renderItem(i)` instance method. Both these features could be replaced with doing it internally in `VirtualScroller`'s `.setItems(newItems)` method: it could detect the items that have changed (`prevItems[i] !== newItems[i]`) and recalculate heights for such items, while the changed `item` properties would also cause the relevant React elements to be rerendered.
1083
+ * Currently React `<VirtualScroller/>` passes `onHeightDidChange()` property and provides `.renderItem(i)` instance method. Both these features could be replaced with doing it internally in `VirtualScroller`'s `.setItems(newItems)` method: it could detect the items that have changed (`prevItems[i] !== newItems[i]`) and recalculate heights for such items, while the changed `item` properties would also cause the relevant React elements to be rerendered.
1081
1084
  -->
1082
1085
 
1083
1086
  ## TypeScript
@@ -1,2 +1,2 @@
1
- !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";function e(e){return(e%1==0?e:e.toFixed(2))+"px"}var t="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 n(){return"undefined"==typeof window||!window.document.documentMode}var i="VirtualScroller",r="VirtualScrollerStyle";function o(e){return o="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},o(e)}function s(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function a(e,t){if(t&&("object"===o(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 l(e){var t="function"==typeof Map?new Map:void 0;return l=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return u(e,arguments,f(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),c(i,e)},l(e)}function u(e,t,n){return u=h()?Reflect.construct:function(e,t,n){var i=[null];i.push.apply(i,t);var r=new(Function.bind.apply(e,i));return n&&c(r,n.prototype),r},u.apply(null,arguments)}function h(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function c(e,t){return c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},c(e,t)}function f(e){return f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},f(e)}var d=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&c(e,t)}(u,e);var t,n,i,r,o,l=(t=u,n=h(),function(){var e,i=f(t);if(n){var r=f(this).constructor;e=Reflect.construct(i,arguments,r)}else e=i.apply(this,arguments);return a(this,e)});function u(e){var t=e.renderedElementIndex,n=e.renderedElementsCount,i=e.message;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),l.call(this,i||function(e){var t=e.renderedElementIndex,n=e.renderedElementsCount;return"Element with index ".concat(t," was not found in the list of Rendered Item Elements in the Items Container of Virtual Scroller. There're only ").concat(n," Elements there.")}({renderedElementIndex:t,renderedElementsCount:n}))}return i=u,r&&s(i.prototype,r),o&&s(i,o),Object.defineProperty(i,"prototype",{writable:!1}),i}(l(Error));function m(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 g=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:"_getNthRenderedItemElement",value:function(e){var t=this.getElement().childNodes;if(e>t.length-1)throw new d({renderedElementIndex:e,renderedElementsCount:t.length});return t[e]}},{key:"getNthRenderedItemTopOffset",value:function(e){return this._getNthRenderedItemElement(e).getBoundingClientRect().top-this.getElement().getBoundingClientRect().top}},{key:"getNthRenderedItemHeight",value:function(e){return this._getNthRenderedItemElement(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)}}])&&m(t.prototype,n),i&&m(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function p(e){return p="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},p(e)}function I(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 v(e,t){if(t&&("object"===p(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function y(e){var t="function"==typeof Map?new Map:void 0;return y=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return b(e,arguments,C(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),w(i,e)},y(e)}function b(e,t,n){return b=S()?Reflect.construct:function(e,t,n){var i=[null];i.push.apply(i,t);var r=new(Function.bind.apply(e,i));return n&&w(r,n.prototype),r},b.apply(null,arguments)}function S(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function w(e,t){return w=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},w(e,t)}function C(e){return C=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},C(e)}var O=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&w(e,t)}(a,e);var t,n,i,r,o,s=(t=a,n=S(),function(){var e,i=C(t);if(n){var r=C(this).constructor;e=Reflect.construct(i,arguments,r)}else e=i.apply(this,arguments);return v(this,e)});function a(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),s.call(this,"[virtual-scroller] Scrollable container not found")}return i=a,r&&I(i.prototype,r),o&&I(i,o),Object.defineProperty(i,"prototype",{writable:!1}),i}(y(Error));function R(e){return R="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},R(e)}function H(e,t){return H=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},H(e,t)}function x(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=P(e);if(t){var r=P(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return T(this,n)}}function T(e,t){if(t&&("object"===R(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function P(e){return P=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},P(e)}function j(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function E(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function L(e,t,n){return t&&E(e.prototype,t),n&&E(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var z=function(){function e(t,n){j(this,e),this.getElement=t,this.getItemsContainerElement=n}return L(e,[{key:"getScrollY",value:function(){return this.getElement().scrollTop}},{key:"scrollToY",value:function(e){this.getElement().scrollTo?this.getElement().scrollTo(0,e):this.getElement().scrollTop=e}},{key:"getWidth",value:function(){if(!this.getElement())throw new O;return this.getElement().offsetWidth}},{key:"getHeight",value:function(){if(!this.getElement())throw new O;return this.getElement().offsetHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=this.getElement().getBoundingClientRect().top,t=this.getElement().clientTop;return this.getItemsContainerElement().getBoundingClientRect().top-e+this.getScrollY()-t}},{key:"onScroll",value:function(e){var t=this.getElement();return t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e){var t;if("undefined"!=typeof ResizeObserver){var n=new ResizeObserver((function(t){t[0],e()})),i=this.getElement();n.observe(i),t=function(){return n.unobserve(i)}}var r=M(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),r()}}}]),e}(),B=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&H(e,t)}(n,e);var t=x(n);function n(e){return j(this,n),t.call(this,(function(){return window}),e)}return L(n,[{key:"getScrollY",value:function(){return window.pageYOffset}},{key:"getWidth",value:function(){return window.innerWidth}},{key:"getHeight",value:function(){return window.innerHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=document.clientTop||document.body.clientTop||0;return this.getItemsContainerElement().getBoundingClientRect().top+this.getScrollY()-e}},{key:"onResize",value:function(e){return M(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(z);function M(e,t){var n=t.itemsContainerElement,i=function(){document.fullscreenElement&&!document.fullscreenElement.contains(n)||e()};return window.addEventListener("resize",i),function(){return window.removeEventListener("resize",i)}}var A="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var k=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){(function(){var t,n,i,r,o,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-o)/1e6},n=process.hrtime,r=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),o=r-s):Date.now?(e.exports=function(){return Date.now()-i},i=Date.now()):(e.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(A)})),_="undefined"==typeof window?A:window,V=["moz","webkit"],D="AnimationFrame",N=_["request"+D],W=_["cancel"+D]||_["cancelRequest"+D],F=0;!N&&F<V.length;F++)N=_[V[F]+"Request"+D],W=_[V[F]+"Cancel"+D]||_[V[F]+"CancelRequest"+D];if(!N||!W){var U=0,Y=0,q=[];N=function(e){if(0===q.length){var t=k(),n=Math.max(0,16.666666666666668-(t-U));U=n+t,setTimeout((function(){var e=q.slice(0);q.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(U)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return q.push({handle:++Y,callback:e,cancelled:!1}),Y},W=function(e){for(var t=0;t<q.length;t++)q[t].handle===e&&(q[t].cancelled=!0)}}var G=function(e){return N.call(_,e)};G.cancel=function(){W.apply(_,arguments)},G.polyfill=function(e){e||(e=_),e.requestAnimationFrame=N,e.cancelAnimationFrame=W};var J=G.cancel;function $(e,t){var n=Date.now(),i=G((function r(){Date.now()-n>=t?e():i=G(r)}));return{clear:function(){return J(i)}}}function K(e){e&&e.clear()}function Q(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var X=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this._isActive=!0,this.watchListTopOffset()}},{key:"isStarted",value:function(){return this._isActive}},{key:"stop",value:function(){this._isActive=!1,this.watchListTopOffsetTimer&&(K(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e._isActive&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=$(n,500)))}()}}])&&Q(t.prototype,n),i&&Q(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),Z={createItemsContainer:function(e){return new g(e)},createScrollableContainer:function(e,t){return e?new z(e,t):"undefined"!=typeof window?new B(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new X({getListTopOffset:t,onListTopOffsetChange:n})}};function ee(e){return function(e){if(Array.isArray(e))return te(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 te(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 te(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 te(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 ne(){if(se()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,ee(["[virtual-scroller]"].concat(n)))}}function ie(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(ae())return oe.apply(this,n);(e=console).warn.apply(e,ee(["[virtual-scroller]"].concat(n)))}function re(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).error.apply(e,ee(["[virtual-scroller]"].concat(n)))}function oe(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i=function(){return new Error(["[virtual-scroller]"].concat(t).join(" "))};if("undefined"!=typeof window)re.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw i()}),0);else{var r=le("VirtualScrollerCatchError");if(r)return r(i());if(le("VirtualScrollerThrowErrors"))throw i();re.apply(this,["ERROR"].concat(t))}}function se(){var e=le("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function ae(){return le("VirtualScrollerWarningsAreErrors")}function le(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function ue(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function he(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ue(Object(n),!0).forEach((function(t){ce(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ue(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ce(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function fe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var de=function(){function e(t){var n=t.bypass,i=t.getInitialEstimatedItemHeight,r=t.getInitialEstimatedVisibleItemRowsCount,o=t.measureItemsBatchSize,s=t.getPrerenderMargin,a=t.getVerticalSpacing,l=t.getVerticalSpacingBeforeResize,u=t.getColumnsCount,h=t.getColumnsCountBeforeResize,c=t.getItemHeight,f=t.getItemHeightBeforeResize,d=t.getBeforeResizeItemsCount,m=t.getAverageItemHeight,g=t.getMaxVisibleAreaHeight,p=t.getPreviouslyCalculatedLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.getInitialEstimatedItemHeight=i,this.getInitialEstimatedVisibleItemRowsCount=r,this.measureItemsBatchSize=o,this.getPrerenderMargin=s,this.getVerticalSpacing=a,this.getVerticalSpacingBeforeResize=l,this.getColumnsCount=u,this.getColumnsCountBeforeResize=h,this.getItemHeight=c,this.getItemHeightBeforeResize=f,this.getBeforeResizeItemsCount=d,this.getAverageItemHeight=m,this.getMaxVisibleAreaHeight=g,this.getPreviouslyCalculatedLayout=p}var t,n,i;return t=e,n=[{key:"getInitialLayoutValueWithFallback",value:function(e,t,n){try{return t()}catch(t){if(t instanceof O)return ne('Scrollable container size is not known at this point, so "'.concat(e,"\" can't be calculated yet. Default to"),n),n;throw t}}},{key:"getInitialLayoutValues",value:function(e){var t,n,i=this,r=e.itemsCount,o=e.columnsCount,s=e.beforeStart;if(r>0){var a=function(){return i.getInitialLastShownItemIndex({itemsCount:r,columnsCount:o,firstShownItemIndex:t})};t=0,n=s?this.getInitialLayoutValueWithFallback("lastShownItemIndex",a,0):a()}return{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var r=1;if(this.getMaxVisibleAreaHeight())r=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin());else if(this.getInitialEstimatedVisibleItemRowsCount&&(r=this.getInitialEstimatedVisibleItemRowsCount(),isNaN(r)))throw new Error("[virtual-scroller] `getEstimatedVisibleItemRowsCount()` must return a number");return Math.min(i+(r*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){var e=this.getAverageItemHeight();if(e)return e;if(this.getInitialEstimatedItemHeight){var t=this.getInitialEstimatedItemHeight();if(isNaN(t))throw new Error("[virtual-scroller] `getInitialEstimatedItemHeight()` must return a number");return t}return 0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,r=e.lastShownItemIndex,o=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,u=n.itemsCount,h=n.columnsCount,c=n.shouldRestoreScrollPosition,f=n.onResetGridLayout,d=this.getAverageItemHeight(),m=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/h)*(m+d)),a>0&&(i+=a,r+=a,o+=Math.ceil(a/h)*(d+m),c&&(i=0,o=0),a%h>0)){f(),ie("~ Prepended items count",a,"is not divisible by Columns Count",h,"~"),ie("Layout reset required");var g=r-i+1;if(i=0,o=0,!c&&a>g){var p=u-((r=this.getInitialLastShownItemIndex({itemsCount:u,columnsCount:h,firstShownItemIndex:i}))+1);s=Math.ceil(p/h)*(m+d)}}return{beforeItemsHeight:o,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:r}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,r=t.nonMeasuredAreaHeight,o=t.indexOfTheFirstItemInTheRow;ne("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(r)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=o),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(o+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaInsideTheList,i=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaInsideTheList:n,findFirstShownItemIndex:!0});if(null===i)return this.getNonVisibleListShownItemIndexes();if(void 0!==i.firstNonMeasuredItemIndex)return i;var r=i,o=r.firstShownItemIndex,s=r.beforeItemsHeight;return null===(i=this._getShownItemIndex({itemsCount:t,fromIndex:o,beforeItemsHeight:s,visibleAreaInsideTheList:n,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==i.firstNonMeasuredItemIndex?i:{firstShownItemIndex:o,lastShownItemIndex:i.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaInsideTheList,r=e.findFirstShownItemIndex,o=e.findLastShownItemIndex,s=e.fromIndex,a=e.beforeItemsHeight;if(0===s&&(a=0),void 0===a)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+s);if(!t){var l=this.getBeforeResizeItemsCount();if(l>s){var u=this._getShownItemIndex(he(he({},e),{},{beforeResize:!0,itemsCount:l})),h=u.notFound,c=u.beforeItemsHeight,f=u.firstShownItemIndex,d=u.lastShownItemIndex;if(!h){var m=this.getColumnsCount();return{firstShownItemIndex:void 0===f?void 0:Math.floor(f/m)*m,lastShownItemIndex:void 0===d?void 0:Math.floor(d/m)*m,beforeItemsHeight:c}}a=c,s+=l}}for(var g=t?this.getColumnsCountBeforeResize():this.getColumnsCount(),p=t?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing(),I=s;I<n;){for(var v=I,y=n>v+g?p:0,b=0,S=0;S<g&&I<n;){var w=t?this.getItemHeightBeforeResize(I):this.getItemHeight(I);if(void 0===w)return this.getItemNotMeasuredIndexes(I,{itemsCount:n,firstShownItemIndex:o?s:void 0,indexOfTheFirstItemInTheRow:v,nonMeasuredAreaHeight:i.bottom+this.getPrerenderMargin()-a});b=Math.max(b,w),S++,I++}var C=a+b,O=C>i.top-this.getPrerenderMargin(),R=C+y>=i.bottom+this.getPrerenderMargin();if(r){if(O)return{firstShownItemIndex:v,beforeItemsHeight:a}}else if(o&&R)return{lastShownItemIndex:Math.min(v+g-1,n-1)};a+=b+y}return t?{notFound:!0,beforeItemsHeight:a}:r?(ie("The list is supposed to be visible but no visible item has been found"),null):o?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,r=0;if(!n){var o=this.getBeforeResizeItemsCount();o>0&&(i=this.getBeforeItemsHeight(Math.min(e,o),{beforeResize:!0}),r=o)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();r<e;){for(var l=0,u=0;u<s;){var h=n?this.getItemHeightBeforeResize(r):this.getItemHeight(r);void 0===h&&(h=this.getAverageItemHeight()),l=Math.max(l,h),r++,u++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,r=e+1;r<t;){for(var o=0,s=0;s<n&&r<t;){var a=this.getItemHeight(r);void 0===a&&(a=this.getAverageItemHeight()),o=Math.max(o,a),r++,s++}i+=this.getVerticalSpacing(),i+=o}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),r=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,o=0;o<r;)t+=this.getItemHeightBeforeResize(o*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),o++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,u=0;u<this.getColumnsCount();){var h=this.getItemHeight(n+a*this.getColumnsCount()+u);if(void 0===h)return;l=Math.max(l,h),u++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&fe(t.prototype,n),i&&fe(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),me="scroll",ge="stopped scrolling",pe="manual",Ie="started",ve="non-measured item heights have been measured",ye="viewport width changed",be="viewport height changed",Se="viewport size unchanged",we="item height changed",Ce="items changed",Oe="list top offset changed";function Re(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var He=function(){function e(t){var n,i,r,o=this,s=t.bypass,a=t.getWidth,l=t.getHeight,u=t.listenForResize,h=t.onResizeStart,c=t.onResizeStop,f=t.onHeightChange,d=t.onWidthChange,m=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r=function(){if(o.isActive){var e=o.width,t=o.height;o.width=o.getWidth(),o.height=o.getHeight(),o.width===e?o.height===t?o.onNoChange():o.onHeightChange(t,o.height):o.onWidthChange(e,o.width)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[i]=r,this.bypass=s,this.onHeightChange=f,this.onWidthChange=d,this.onNoChange=m,this.getWidth=a,this.getHeight=l,this.listenForResize=u,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.onStart,o=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?K(n):r&&r(),n=$((function(){n=void 0,o&&o(),e.apply(i,a),s()}),t)}))}}(this._onResize,xe,{onStart:h,onStop:c})}var t,n,i;return t=e,(n=[{key:"start",value:function(){this.isActive=!0,this.bypass||(this.width=this.getWidth(),this.height=this.getHeight(),this.unlistenResize=this.listenForResize(this.onResize))}},{key:"stop",value:function(){this.isActive=!1,this.width=void 0,this.height=void 0,this.unlistenResize&&(this.unlistenResize(),this.unlistenResize=void 0)}}])&&Re(t.prototype,n),i&&Re(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),xe=250;function Te(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?Te(Object(n),!0).forEach((function(t){je(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Te(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var Le=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,r=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=r}var t,n,i;return t=e,n=[{key:"initializeFromState",value:function(e){this._includesBeforeResizeInState=Boolean(e.beforeResize)}},{key:"cleanUpBeforeResizeItemHeights",value:function(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex,i=e.itemHeights,r=e.beforeResize;if(r&&t<r.itemHeights.length){ne('~ Clean up "before resize" item heights and correct scroll position ~');for(var o=0,s=Math.floor(r.itemHeights.length/this.getColumnsCount()),a=Math.min(s*this.getColumnsCount()-1,n),l=t;l<=a;){for(var u=0,h=0;h<this.getColumnsCount()&&l<=a;){var c=i[l];void 0===c&&(c=this.getAverageItemHeight()),u=Math.max(u,c),l++,h++}o+=u,o+=this.getVerticalSpacing()}for(var f=0,d=Math.min(r.itemHeights.length,n+1),m=Math.ceil(d/r.columnsCount),g=0===t?0:Math.floor((t-1)/r.columnsCount)+1;g<m;)f+=r.itemHeights[g*r.columnsCount],f+=r.verticalSpacing,g++;if(0===t)ne('Drop all "before resize" item heights');else{var p=t,I=r.itemHeights.length-1;p===I?ne("For item index",p,'— drop "before resize" height',r.itemHeights[p]):ne("For item indexes from",p,"to",I,'— drop "before resize" heights',r.itemHeights.slice(p))}return r.itemHeights.splice(t,r.itemHeights.length-t),{scrollBy:o-f,beforeResize:0===t?void 0:Pe({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),r=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var o=this.getState(),s=o.beforeResize,a=o.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==r){for(var u=0,h=Math.ceil(l/s.columnsCount),c=0;c<h;)u+=s.itemHeights[c*s.columnsCount],u+=s.verticalSpacing,c++;for(var f=0,d=t;d<n;){for(var m=0,g=0;g<i&&d<n;)m=Math.max(m,a[d]),g++,d++;f+=m,f+=r}var p=u+f,I=Math.ceil(n/i);return new Array(n).fill(Math.max(0,p/I-r))}return s.itemHeights.concat(ze(a,n,i).slice(s.itemHeights.length))}return ze(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&Ee(t.prototype,n),i&&Ee(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function ze(e,t,n){e=e.slice(0,Math.ceil(t/n)*n);for(var i=0;i*n<t;){for(var r=0,o=0;o<n;)r=Math.max(r,e[i*n+o]),o++;for(o=0;o<n;)e[i*n+o]=r,o++;i++}return e.slice(0,t)}function Be(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function 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 Ae=function(){function e(t){var n=this,i=t.bypass,r=t.scrollableContainer,o=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,u=t.isImmediateLayoutScheduled,h=t.hasNonRenderedItemsAtTheTop,c=t.hasNonRenderedItemsAtTheBottom,f=t.getLatestLayoutVisibleArea,d=t.getListTopOffset,m=t.getPrerenderMargin,g=t.onScrolledToTop,p=t.waitForScrollingToStop;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),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(ne(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.shouldCallOnScrollListenerWhenStopsScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=r,this.itemsContainer=o,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=u,this.hasNonRenderedItemsAtTheTop=h,this.hasNonRenderedItemsAtTheBottom=c,this.getLatestLayoutVisibleArea=f,this.getListTopOffset=d,this.getPrerenderMargin=m,this.onScrolledToTop=g,this.waitForScrollingToStop=p}var t,n,i;return t=e,(n=[{key:"start",value:function(){void 0!==this.initialScrollPosition&&(this.scrollToY(this.initialScrollPosition),this.initialScrollPosition=void 0),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopListeningToScroll(),this.stopListeningToScroll=void 0,this.shouldCallOnScrollListenerWhenStopsScrolling=void 0,this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(K(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=$((function(){e.onStopScrollingTimer=void 0,e.shouldCallOnScrollListenerWhenStopsScrolling&&(e.shouldCallOnScrollListenerWhenStopsScrolling=void 0,e.onScroll({delayed:!0}))}),ke)}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&Be(t.prototype,n),i&&Be(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),ke=100;function _e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var 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:"snapshotListHeightBeforeAddingNewItems",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()})}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&_e(t.prototype,n),i&&_e(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function 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)}}var Ne=function(){function e(t){var n=t.container;t.itemHeights;var i=t.getItemHeight,r=t.setItemHeight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=n,this._get=i,this._set=r,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"readItemHeightsFromState",value:function(e){for(var t=e.itemHeights,n=0;n<t.length;){if(void 0===t[n]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=n-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=n),this.measuredItemsHeight+=t[n];n++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(ne("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(ne("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,r=this.lastMeasuredItemIndex,o=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);ne("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,o||(this.firstMeasuredItemIndex=s,o=!0)),(void 0===r||s>r)&&(void 0!==r&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),u=this._measureItemHeight(s,e);l!==u&&(ie("Item index",s,"height changed unexpectedly: it was",l,"before, but now it is",u,'. Whenever an item\'s height changes for whatever reason, a developer must call `onItemHeightDidChange(i)` right after that change. If you are calling `onItemHeightDidChange(i)` correctly, then there\'re several other possible causes. For example, perhaps you forgot to persist the item\'s "state" by calling `setItemState(i, newState)` when that "state" did change, and so the item\'s "state" got lost when the item element was unmounted, which resulted in a different item height when the item was shown again with no previous "state". Or perhaps you\'re running your application in "devleopment" mode and `VirtualScroller` has initially rendered the list before your CSS styles or custom fonts have loaded, resulting in different item height measurements "before" and "after" the page has fully loaded.'),this._set(s,u))}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&De(t.prototype,n),i&&De(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function We(e,t){for(var n=0;n<e.length;)e[n]=t(n),n++;return e}function Fe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Ue(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(n),!0).forEach((function(t){Ye(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qe(e){var t=Ue({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=Ue({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function Ge(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 Je(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ge(Object(n),!0).forEach((function(t){$e(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ge(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function $e(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ke(e){var t=this,n=e.state,i=e.getInitialItemState,r=e.onStateChange,o=e.render,s=e.items;function a(){return this.state}function l(e){this.state=e}function u(e,t){this.state=e,o(this.state,this.previousState),this.onRender()}function h(e){var t=e.getInitialItemState,n=s,i=Je(Je({},f.call(this,n,{beforeStart:!0})),{},{items:n,itemStates:We(new Array(n.length),(function(e){return t(n[e])}))});return se()&&ne("Initial state (autogenerated)",qe(i)),ne("First shown item index",i.firstShownItemIndex),ne("Last shown item index",i.lastShownItemIndex),i}function c(e){return se()&&ne("Restore state",qe(e)),function(e,t){var n=t.columnsCount,i=e.columnsCount||1;if(i!==n)return ie("~ Columns Count changed from",i,"to",n,"~"),!0;if(Math.floor(e.firstShownItemIndex/n)*n!==e.firstShownItemIndex)return ie("~ First Shown Item Index",e.firstShownItemIndex,"is not divisible by Columns Count",n,"~"),!0}(e=Je(Je({},e=function(e){return e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e}(e)),{},{verticalSpacing:void 0}),{columnsCount:this.getActualColumnsCount()})&&(ie("Reset Layout"),e=Je(Je({},e),f.call(this,e.items,{beforeStart:!1}))),e}function f(e,t){var n=this,i=t.beforeStart,r=e.length,o=function(){return n.getActualColumnsCount()};i?this.layout.getInitialLayoutValueWithFallback("columnsCount",o,1):o();var s=this.layout.getInitialLayoutValues({itemsCount:r,columnsCount:this.getActualColumnsCount(),beforeStart:i}),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.beforeItemsHeight,h=s.afterItemsHeight,c=new Array(r);return this.onBeforeShowItems(e,c,a,l),{itemHeights:c,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:u,afterItemsHeight:h}}this.onStateChange=r,this._render=o,this.getInitialItemState=i,this._setItemState=function(e,n){se()&&(ne("~ Item state changed ~"),ne("Item index",e),ne("Previous state\n"+JSON.stringify(t.getState().itemStates[e],null,2)),ne("New state\n"+JSON.stringify(n,null,2))),t.getState().itemStates[e]=n,t.newItemsWillBeRendered&&(t.itemStatesThatChangedWhileNewItemsWereBeingRendered||(t.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),t.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=n)},this.getState=function(){return t._getState()},this.updateState=function(e){se()&&(ne("~ Set state ~"),ne(qe(e))),e.items&&(t._isSettingNewItems||oe("A `stateUpdate` can only contain `items` property as a result of calling `.setItems()`")),t._isSettingNewItems=void 0,t.waitingForRender=!0,t.previousState=t.getState(),t.mostRecentSetStateValue||(t.mostRecentSetStateValue=t.getState()),t.mostRecentSetStateValue=Je(Je({},t.mostRecentSetStateValue),e),t._setState(t.mostRecentSetStateValue,e)},this.getInitialState=function(){return n?c.call(t,n):h.call(t,{getInitialItemState:i})},this.useState=function(e){var n=e.getState,i=e.setState,r=e.updateState;if(t._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");if(t._getState)throw new Error("[virtual-scroller] Custom state storage has already been configured");if(o)throw new Error("[virtual-scroller] Creating a `VirtualScroller` class instance with a `render()` parameter implies using the default (internal) state storage");if(i&&r)throw new Error("[virtual-scroller] When using a custom state storage, one must supply either `setState()` or `updateState()` function but not both");if(!n||!i&&!r)throw new Error("[virtual-scroller] When using a custom state storage, one must supply both `getState()` and `setState()`/`updateState()` functions");t._usesCustomStateStorage=!0,t._getState=n,t._setState=function(e,t){i?i(e):r(t)}},this.useDefaultStateStorage=function(){if(!o)throw new Error("[virtual-scroller] When using the default (internal) state management, one must supply a `render(state, prevState)` function parameter");t._getState=a.bind(t),t._setState=u.bind(t),l.bind(t)(t.getInitialState())}}var Qe=.9;function Xe(){var e=this;function t(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;ne("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),r=t.getNthRenderedItemHeight(0),o=1;o<n;){var s=t.getNthRenderedItemTopOffset(o),a=t.getNthRenderedItemHeight(o);if(s+Qe>=i+r)return s-(i+r);r=Math.max(r,a),o++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0!==i)return ne("Item vertical spacing",i),i;ne("Not enough items rendered to measure vertical spacing")}this.getVerticalSpacing=function(){return e.verticalSpacing||0},this.getVerticalSpacingBeforeResize=function(){var t=e.getState().beforeResize;return t&&t.verticalSpacing||0},this.measureVerticalSpacingIfNotMeasured=function(){if(void 0===e.verticalSpacing)return e.verticalSpacing=t.call(e),e.verticalSpacing}}function Ze(e){var t=this,n=e.getColumnsCount;if(n){var i={getWidth:function(){return t.scrollableContainer.getWidth()}};this.getActualColumnsCountForState=function(){var e=n(i);if(1!==e)return e}}else this.getActualColumnsCountForState=function(){};this.getActualColumnsCount=function(){return t.getActualColumnsCountForState()||1},this.getColumnsCount=function(){return t.getState()&&t.getState().columnsCount||1}}function et(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 tt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?et(Object(n),!0).forEach((function(t){nt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):et(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function nt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function it(){var e=this;function t(e){var n=e.stateUpdate,o=Date.now(),s=i.call(this),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.shownItemsHeight,h=s.firstNonMeasuredItemIndex;if(this.listHeightMeasurement.hasSnapshot()&&(l<this.listHeightMeasurement.getAnchorItemIndex()&&(l=this.listHeightMeasurement.getAnchorItemIndex()),h=void 0),!r.call(this,a,l))return ne("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),t.call(this,{stateUpdate:n});var c=this.layout.getBeforeItemsHeight(a),f=this.layout.getAfterItemsHeight(l,this.getItemsCount()),d=Date.now()-o;ne("~ Calculated Layout"+(this.bypass?" (bypass)":"")+" ~"),d<rt||ie("Layout calculated in",d,"ms"),this.getColumnsCount()&&ne("Columns count",this.getColumnsCount()),ne("First shown item index",a),ne("Last shown item index",l),ne("Before items height",c),ne("After items height (actual or estimated)",f),ne("Average item height (used for estimated after items height calculation)",this.itemHeights.getAverage()),se()&&(ne("Item heights",this.getState().itemHeights.slice()),ne("Item states",this.getState().itemStates.slice())),this.onBeforeShowItems(this.getState().items,this.getState().itemHeights,a,l),this.firstNonMeasuredItemIndex=h,this.previouslyCalculatedLayout=void 0===u?void 0:{firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:c,shownItemsHeight:u},this.updateState(tt({firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:c,afterItemsHeight:f},n))}function n(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}function i(){var e=this.getItemsCount(),t=n.call(this);return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:t.top<this.itemsContainer.getHeight()+this.layout.getPrerenderMargin()&&t.bottom>0-this.layout.getPrerenderMargin()?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaInsideTheList:t}):(ne("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}function r(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var r=this.getState().itemHeights[i],a=o.call(this,i);a!==r&&(n&&(ne("~ Validate will-be-hidden item heights. ~"),s.call(this,i,r,a)),n=!1,ie("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",r,"to",a,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightDidChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}function o(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}function s(e,t,n){var i=this.previouslyCalculatedLayout;if(i){var r=n-t;e<i.firstShownItemIndex?i.beforeItemsHeight+=r:e>i.lastShownItemIndex?void 0!==i.afterItemsHeight&&(i.afterItemsHeight+=r):i.shownItemsHeight+=n-t}}this.onUpdateShownItemIndexes=function(n){var i=n.reason,r=n.stateUpdate,o=function(){r&&e.updateState(r)};return e.newItemsWillBeRendered||e.widthHasChanged||e._isResizing||0===e.getItemsCount()?o():(e.scroll.cancelScheduledLayout(),r=e.cancelLayoutTimer({stateUpdate:r}),ne("~ Update Layout (on ".concat(i,") ~")),void t.call(e,{stateUpdate:r}))},this.getListTopOffsetInsideScrollableContainer=function(){var t=e.scrollableContainer.getItemsContainerTopOffset();return e.listTopOffsetWatcher&&e.listTopOffsetWatcher.onListTopOffset(t),t},this._onItemHeightDidChange=function(t){ne("~ On Item Height Did Change was called ~"),ne("Item index",t);var n=e.getState(),i=n.itemHeights,r=n.firstShownItemIndex,a=n.lastShownItemIndex;if(!(t>=r&&t<=a))return ie("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when when a developer calls `onItemHeightDidChange(i)` while looping through a batch of items.");var l,u=i[t];if(void 0===u)return oe('"onItemHeightDidChange()" has been called for item index '.concat(t," but the item hasn't been rendered before."));ne("~ Re-measure item height ~");try{l=o.call(e,t)}catch(e){if(e instanceof d)return oe('"onItemHeightDidChange()" has been called for item index '.concat(t," but the item is not currently rendered and can't be measured. The exact error was: ").concat(e.message))}ne("Previous height",u),ne("New height",l),u!==l&&(ne("~ Item height has changed. Should update layout. ~"),s.call(e,t,u,l),e._isActive&&(e.waitingForRender?(ne("~ Another state update is already waiting to be rendered. Delay the layout update until then. ~"),e.updateLayoutAfterRenderBecauseItemHeightChanged=!0):e.onUpdateShownItemIndexes({reason:we})),e.newItemsWillBeRendered&&(e.itemHeightsThatChangedWhileNewItemsWereBeingRendered||(e.itemHeightsThatChangedWhileNewItemsWereBeingRendered={}),e.itemHeightsThatChangedWhileNewItemsWereBeingRendered[String(t)]=l))},this.getPrerenderMargin=function(){return 1*e.scrollableContainer.getHeight()},this.onBeforeShowItems=function(t,n,i,r){if(e.onItemInitialRender)for(var o=i;o<=r;)void 0===n[o]&&e.onItemInitialRender(t[o]),o++},this.measureItemHeightsAndSpacing=function(){e.itemHeights.measureItemHeights(e.getState().firstShownItemIndex,e.getState().lastShownItemIndex);var t=e.measureVerticalSpacingIfNotMeasured();if(t&&0!==t)return{verticalSpacing:t}},this.cancelLayoutTimer=function(t){var n=t.stateUpdate;return e.layoutTimer?(K(e.layoutTimer),e.layoutTimer=void 0,n||e.layoutTimerStateUpdate?(n=tt(tt({},e.layoutTimerStateUpdate),n),e.layoutTimerStateUpdate=void 0,n):void 0):n},this.scheduleLayoutTimer=function(t){var n=t.reason,i=t.stateUpdate;e.layoutTimerStateUpdate=i,e.layoutTimer=$((function(){e.layoutTimerStateUpdate=void 0,e.layoutTimer=void 0,e.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}}var rt=15;function ot(e){return ot="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},ot(e)}var st=Object.prototype.hasOwnProperty;function at(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function lt(e,t){if(at(e,t))return!0;if("object"!==ot(e)||null===e||"object"!==ot(t)||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var r=0;r<n.length;r++)if(!st.call(t,n[r])||!at(e[n[r]],t[n[r]]))return!1;return!0}function ut(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 ht(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ut(Object(n),!0).forEach((function(t){ct(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ut(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ct(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ft(){var t=this;function n(e,t){if(e){var n=e.prependedItemsCount;e.appendedItemsCount;var i=this.getState(),r=i.itemHeights,o=i.itemStates;if(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered)for(var s=0,a=Object.keys(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered);s<a.length;s++){var l=a[s];r[n+Number(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var u=0,h=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);u<h.length;u++){var c=h[u];o[n+Number(c)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[c]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(ie('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after appending items'),ie("Previously calculated layout",this.previouslyCalculatedLayout),ie("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightMeasurement.hasSnapshot()){if(0===t.firstShownItemIndex){ne("~ Restore Scroll Position ~");var f=this.listHeightMeasurement.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightMeasurement.reset(),f?(ne("Scroll down by",f),this.scroll.scrollByY(f)):ne("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}:(ie('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after prepending items'),ie("Previously calculated layout",this.previouslyCalculatedLayout),ie("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}ie('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "onRender()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}function i(e){var t=e.reason,n=e.stateUpdate;this._useTimeoutInRenderLoop?(n=this.cancelLayoutTimer({stateUpdate:n}),this.scheduleLayoutTimer({reason:t,stateUpdate:n})):this.onUpdateShownItemIndexes({reason:t,stateUpdate:n})}function r(){var e=Boolean(this.widthHasChanged);this.widthHasChanged=void 0;var t=void 0!==this.firstNonMeasuredItemIndex;t&&ne("Non-measured item index",this.firstNonMeasuredItemIndex),this.firstNonMeasuredItemIndex=void 0,this.newItemsWillBeRendered=void 0,this.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,this.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0;var n=this.updateLayoutAfterRenderBecauseItemHeightChanged;return this.updateLayoutAfterRenderBecauseItemHeightChanged=void 0,{nonMeasuredItemsHaveBeenRendered:t,itemHeightHasChanged:n,widthHasChanged:e}}this._onRender=function(o,s){var a,l,u;t.waitingForRender=!1,ne("~ Rendered ~"),se()&&ne("State",qe(o)),t.onStateChange&&(lt(o,s)||t.onStateChange(o)),t.tbody&&(a=t.getItemsContainerElement(),l=o.beforeItemsHeight,u=o.afterItemsHeight,a.style.setProperty("--VirtualScroller-paddingTop",e(l)),a.style.setProperty("--VirtualScroller-paddingBottom",e(u))),t.mostRecentSetStateValue&&(lt(o,t.mostRecentSetStateValue)||(ie("The most recent state that was set",qe(t.mostRecentSetStateValue)),oe("`VirtualScroller` has been rendered with a `state` that is not equal to the most recently set one")));var h,c=r.call(t),f=c.nonMeasuredItemsHaveBeenRendered,d=c.itemHeightHasChanged,m=c.widthHasChanged;if(d&&(h=we),s||h){if(f&&(h=ve),m&&(h=ye,t.itemHeights.reset(),t.verticalSpacing=void 0),s){var g=s.items,p=o.items;if(p!==g){var I=t.getItemsDiff(g,p);if(I){var v=I.prependedItemsCount;t.itemHeights.onPrepend(v)}else t.itemHeights.reset();m||"SEAMLESS_PREPEND"!==n.call(t,I,o)&&(h=Ce)}}var y;if(s&&(o.firstShownItemIndex!==s.firstShownItemIndex||o.lastShownItemIndex!==s.lastShownItemIndex||o.items!==s.items)||m){var b=t.measureItemHeightsAndSpacing();b&&(y=ht(ht({},y),b))}var S=t.beforeResize.cleanUpBeforeResizeItemHeights();if(void 0!==S){var w=S.scrollBy,C=S.beforeResize;ne("Correct scroll position by",w),t.scroll.scrollByY(w),y=ht(ht({},y),{},{beforeResize:C})}t._isActive?h?i.call(t,{stateUpdate:y,reason:h}):y?t.updateState(y):ne("~ Finished Layout ~"):t._afterRenderStateUpdateThatWasStopped=y}}}function dt(){var e=this;this.onContainerResize=function(){e.previouslyCalculatedLayout=void 0,e.listHeightMeasurement.reset();var t=e.newItemsWillBeRendered?e.newItemsWillBeRendered.count:e.getState().itemHeights.length,n=e.newItemsWillBeRendered?e.newItemsWillBeRendered.layout:e.getState(),i={scrollableContainerWidth:e.scrollableContainer.getWidth(),firstShownItemIndex:n.firstShownItemIndex,lastShownItemIndex:n.lastShownItemIndex,beforeItemsHeight:n.beforeItemsHeight,afterItemsHeight:n.afterItemsHeight,itemHeights:new Array(t),columnsCount:e.getActualColumnsCountForState(),verticalSpacing:void 0},r=n.firstShownItemIndex,o=n.lastShownItemIndex,s=e.getActualColumnsCount(),a=Math.floor(r/s)*s,l=Math.min(Math.ceil((o+1)/s)*s,t)-1;a!==r&&(ne("Columns Count changed from",e.getState().columnsCount||1,"to",s),ne("First Shown Item Index needs to change from",r,"to",a)),i.firstShownItemIndex=a,i.lastShownItemIndex=l;var u=e.getVerticalSpacing(),h=e.getColumnsCount();e.shouldDiscardBeforeResizeItemHeights()||0===a?e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(i.beforeResize=void 0):i.beforeResize={verticalSpacing:u,columnsCount:h,itemHeights:e.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:r,newFirstShownItemIndex:a,newColumnsCount:s})},e.widthHasChanged={stateUpdate:i},e.updateState(i)},this.shouldDiscardBeforeResizeItemHeights=function(){if(e.newItemsWillBeRendered){var t=e.newItemsWillBeRendered,n=t.prepend,i=t.replace;return n||i}}}function mt(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 gt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mt(Object(n),!0).forEach((function(t){pt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function pt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function It(){var e=this;this.getItemsCount=function(){return e.getState().items.length},this._setItems=function(t){var n,i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=e.getState(),s=o.items,a=e.getState(),l=a.itemStates,u=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),h=u.itemHeights;ne("~ Update items ~");var c=e.getItemsDiff(s,t);if(c){var f,d=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),m=d.firstShownItemIndex,g=d.lastShownItemIndex,p=d.beforeItemsHeight,I=d.afterItemsHeight,v=0===m&&(r.preserveScrollPositionOnPrependItems||r.preserveScrollPosition),y=c.prependedItemsCount,b=c.appendedItemsCount;n=e.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:m,lastShownItemIndex:g,beforeItemsHeight:p,afterItemsHeight:I},{prependedItemsCount:y,appendedItemsCount:b},{itemsCount:t.length,columnsCount:e.getActualColumnsCount(),shouldRestoreScrollPosition:v,onResetGridLayout:function(){return f=!0}}),y>0&&(ne("Prepend",y,"items"),h=new Array(y).concat(h),l=We(new Array(y),(function(n){return e.getInitialItemState(t[n])})).concat(l),v?(ne("Will restore scroll position"),e.listHeightMeasurement.snapshotListHeightBeforeAddingNewItems({previousItems:s,newItems:t,prependedItemsCount:y}),void 0!==e.firstNonMeasuredItemIndex&&(e.firstNonMeasuredItemIndex+=y)):(ne("Reset layout"),f?(ne("Reason: Prepended items count",y,"is not divisible by Columns Count",e.getActualColumnsCount()),h=new Array(t.length)):ne("Reason: Prepended items' heights are unknown"),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0)),b>0&&(ne("Append",b,"items"),h=h.concat(new Array(b)),l=l.concat(We(new Array(b),(function(n){return e.getInitialItemState(t[y+s.length+n])})))),i={prepend:y>0,append:b>0}}else ne("Items have changed, and",c?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),ne("Previous items",s),ne("New items",t),h=new Array(t.length),l=We(new Array(t.length),(function(n){return e.getInitialItemState(t[n])})),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0,e.listHeightMeasurement.reset(),i={replace:!0};ne("~ Update state ~"),ne("First shown item index",n.firstShownItemIndex),ne("Last shown item index",n.lastShownItemIndex),ne("Before items height",n.beforeItemsHeight),ne("After items height (actual or estimated)",n.afterItemsHeight),e.onBeforeShowItems(t,h,n.firstShownItemIndex,n.lastShownItemIndex),e.newItemsWillBeRendered=gt(gt({},i),{},{count:t.length,layout:n});var S=gt(gt({},n),{},{items:t,itemStates:l,itemHeights:h});e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(e.shouldDiscardBeforeResizeItemHeights()?S.beforeResize=void 0:S.beforeResize=e.widthHasChanged?e.widthHasChanged.stateUpdate.beforeResize:e.getState().beforeResize),e._isSettingNewItems=!0,e.updateState(S)},this.getItemsDiff=function(t,n){return function(e,t,n){var i=-1,r=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var r=0;r<e.length;){if(t.length<=n+r||!i(t[n+r],e[r]))return!1;r++}return!0}(e,t,i,n)&&(r=i+e.length-1)),i>=0&&r>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(r+1)}}(t,n,e.isItemEqual)}}function vt(e,i){var r=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=o.render,a=o.state,l=o.getInitialItemState,u=void 0===l?function(){}:l,h=o.onStateChange,c=o.initialScrollPosition,f=o.onScrollPositionChange,d=o.scrollableContainer,m=o.measureItemsBatchSize,g=void 0===m?50:m,p=o.getColumnsCount,I=o.getItemId,v=o.tbody,y=o.estimatedItemHeight,b=o.getEstimatedVisibleItemRowsCount,S=o.onItemInitialRender,w=o.onItemFirstRender,C=o._useTimeoutInRenderLoop,O=o._waitForScrollingToStop,R=o.engine,H=o.bypass,x=o.getEstimatedItemHeight,T=o.getScrollableContainer;if(ne("~ Initialize ~"),this.engine=R||Z,x||"number"!=typeof y||(x=function(){return y}),!T&&d&&(T=function(){return d}),this.getItemsContainerElement=e,o.getState||o.setState)throw new Error("[virtual-scroller] `getState`/`setState` options usage has changed in the new version. See the readme for more details.");if(v){if(this.engine!==Z)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");ne("~ <tbody/> detected ~"),this.tbody=!0,n()||(ne("~ <tbody/> not supported ~"),oe(t),H=!0)}H&&ne('~ "bypass" mode ~'),this.bypass=H,this._useTimeoutInRenderLoop=C,this.isItemEqual=I?function(e,t){return I(e)===I(t)}:function(e,t){return e===t},S?this.onItemInitialRender=S:w&&(this.onItemInitialRender=function(e){ie("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=r.getState().items.indexOf(e);t>=0&&w(t)}),a&&(i=a.items),ne("Items count",i.length),x&&ne("Estimated item height",x()),Ke.call(this,{state:a,getInitialItemState:u,onStateChange:h,render:s,items:i}),Xe.call(this),Ze.call(this,{getColumnsCount:p}),it.call(this),ft.call(this),dt.call(this),It.call(this),yt.call(this,{getScrollableContainer:T,getEstimatedItemHeight:x,getEstimatedVisibleItemRowsCount:b,measureItemsBatchSize:g,initialScrollPosition:c,onScrollPositionChange:f,waitForScrollingToStop:O}),a&&(this.itemHeights.readItemHeightsFromState(a),this.beforeResize.initializeFromState(a))}function yt(e){var t=this,n=e.getScrollableContainer,i=e.getEstimatedItemHeight,r=e.getEstimatedVisibleItemRowsCount,o=e.measureItemsBatchSize,s=e.initialScrollPosition,a=e.onScrollPositionChange,l=e.waitForScrollingToStop;this.itemsContainer=this.engine.createItemsContainer(this.getItemsContainerElement),this.getItemsContainerElement()&&this.itemsContainer.clear(),this.scrollableContainer=this.engine.createScrollableContainer(n,this.getItemsContainerElement),this.itemHeights=new Ne({container:this.itemsContainer,getItemHeight:function(e){return t.getState().itemHeights[e]},setItemHeight:function(e,n){return t.getState().itemHeights[e]=n}}),this.layout=new de({bypass:this.bypass,getInitialEstimatedItemHeight:i,getInitialEstimatedVisibleItemRowsCount:r,measureItemsBatchSize:o,getPrerenderMargin:function(){return t.getPrerenderMargin()},getVerticalSpacing:function(){return t.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return t.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return t.getColumnsCount()},getColumnsCountBeforeResize:function(){return t.getState().beforeResize&&t.getState().beforeResize.columnsCount},getItemHeight:function(e){return t.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return t.getState().beforeResize&&t.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return t.getState().beforeResize?t.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return t.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return t.scrollableContainer&&t.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return t.previouslyCalculatedLayout}}),this.scrollableContainerResizeHandler=new He({bypass:this.bypass,getWidth:function(){return t.scrollableContainer.getWidth()},getHeight:function(){return t.scrollableContainer.getHeight()},listenForResize:function(e){return t.scrollableContainer.onResize(e)},onResizeStart:function(){ne("~ Scrollable container resize started ~"),t._isResizing=!0},onResizeStop:function(){ne("~ Scrollable container resize finished ~"),t._isResizing=void 0},onNoChange:function(){t.onUpdateShownItemIndexes({reason:Se})},onHeightChange:function(){return t.onUpdateShownItemIndexes({reason:be})},onWidthChange:function(e,n){ne("~ Scrollable container width changed from",e,"to",n,"~"),t.onContainerResize()}}),this.scroll=new Ae({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:l,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delayed;t.onUpdateShownItemIndexes({reason:n?ge:me})},initialScrollPosition:s,onScrollPositionChange:a,isImmediateLayoutScheduled:function(){return Boolean(t.layoutTimer)},hasNonRenderedItemsAtTheTop:function(){return t.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return t.getState().lastShownItemIndex<t.getItemsCount()-1},getLatestLayoutVisibleArea:function(){return t.latestLayoutVisibleArea},getListTopOffset:this.getListTopOffsetInsideScrollableContainer,getPrerenderMargin:function(){return t.getPrerenderMargin()}}),this.listHeightMeasurement=new Ve({itemsContainer:this.itemsContainer,getListTopOffset:this.getListTopOffsetInsideScrollableContainer}),this.engine.watchListTopOffset&&(this.listTopOffsetWatcher=this.engine.watchListTopOffset({getListTopOffset:this.getListTopOffsetInsideScrollableContainer,onListTopOffsetChange:function(e){return e.reason,t.onUpdateShownItemIndexes({reason:Oe})}})),this.beforeResize=new Le({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount})}function bt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function St(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?bt(Object(n),!0).forEach((function(t){Ot(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):bt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function wt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ct(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Ot(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Rt=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};wt(this,e),Ot(this,"stop",(function(){if(!i._isActive)throw new Error("[virtual-scroller] Can't stop a `VirtualScroller` that hasn't been started");i._isActive=!1,ne("~ Stop ~"),i.scrollableContainerResizeHandler.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.isStarted()&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),Ot(this,"updateLayout",(function(){i.hasToBeStarted(),i.onUpdateShownItemIndexes({reason:pe})})),Ot(this,"onRender",(function(){i._onRender(i.getState(),i.previousState)})),vt.call(this,t,n,r)}var t,n,o;return t=e,n=[{key:"start",value:function(){if(this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");var e=!1===this._isActive;e||(this.waitingForRender=!0,this._usesCustomStateStorage||this.useDefaultStateStorage(),this._render&&this._render(this.getState())),ne(e?"~ Start (restart) ~":"~ Start ~"),this._isActive=!0,this.listHeightMeasurement.reset(),this._isResizing=void 0,this._isSettingNewItems=void 0,this.tbody&&(this.getItemsContainerElement().classList.contains(i)&&Boolean(document.getElementById(r))||function(e){e.classList.add(i);var t=document.createElement("style");t.id=r,t.innerText="\n\t\ttbody.".concat(i,":before {\n\t\t\tcontent: '';\n\t\t\tdisplay: table-row;\n\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t}\n\t\ttbody.").concat(i,":after {\n\t\t\tcontent: '';\n\t\t\tdisplay: table-row;\n\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t}\n\t").replace(/[\n\t]/g,""),document.head.appendChild(t)}(this.getItemsContainerElement()));var t=this._afterRenderStateUpdateThatWasStopped;this._afterRenderStateUpdateThatWasStopped=void 0,this.verticalSpacing=void 0;var n=this.measureItemHeightsAndSpacing();if(n&&(t=St(St({},t),n)),this.scrollableContainerResizeHandler.start(),this.scroll.start(),void 0===this.getState().scrollableContainerWidth){var o=this.scrollableContainer.getWidth();t=St(St({},t),{},{scrollableContainerWidth:o})}else{var s=this.scrollableContainer.getWidth(),a=this.getState().scrollableContainerWidth;if(s!==a)return ne("~ Scrollable container width changed from",a,"to",s,"~"),this.onContainerResize()}if(this._usesCustomStateStorage&&this.getActualColumnsCount()!==(this.getState().columnsCount||1))return this.onContainerResize();this.onUpdateShownItemIndexes({reason:Ie,stateUpdate:t})}},{key:"hasToBeStarted",value:function(){if(!this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` hasn't been started")}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onItemHeightChange",value:function(e){ie("`.onItemHeightChange(i)` method was renamed to `.onItemHeightDidChange(i)`"),this.onItemHeightDidChange(e)}},{key:"onItemHeightDidChange",value:function(e){this._onItemHeightDidChange(e)}},{key:"setItemState",value:function(e,t){this._setItemState(e,t)}},{key:"onItemStateChange",value:function(e,t){this.setItemState(e,t)}},{key:"setItems",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.hasToBeStarted(),this._setItems(e,t)}}],n&&Ct(t.prototype,n),o&&Ct(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}(),Ht=["onMount","onItemUnmount"];function xt(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 Tt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?xt(Object(n),!0).forEach((function(t){Lt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Pt(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function jt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Et(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 Lt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var zt=function(){function t(n,i,r){var o=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};jt(this,t),Lt(this,"render",(function(t,n){var i=t.items,r=t.firstShownItemIndex,s=t.lastShownItemIndex,a=t.beforeItemsHeight,l=t.afterItemsHeight;o.tbody||(o.container.style.paddingTop=e(a),o.container.style.paddingBottom=e(l));var u=n&&i===n.items&&i.length>0;if(u)for(var h=n.lastShownItemIndex;h>=n.firstShownItemIndex;)h>=r&&h<=s||(ne("DOM: Remove element for item index",h),o.unmountItem(o.container.childNodes[h-n.firstShownItemIndex])),h--;else for(ne("DOM: Rerender the list from scratch");o.container.firstChild;)o.unmountItem(o.container.firstChild);for(var c=u,f=c&&o.container.firstChild,d=r;d<=s;){if(u&&d>=n.firstShownItemIndex&&d<=n.lastShownItemIndex)c&&(c=!1);else{var m=o.renderItem(i[d]);c?(ne("DOM: Prepend element for item index",d),o.container.insertBefore(m,f)):(ne("DOM: Append element for item index",d),o.container.appendChild(m))}d++}})),Lt(this,"onUnmount",(function(){ie("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),Lt(this,"destroy",(function(){ie("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),Lt(this,"stop",(function(){o.virtualScroller.stop()})),Lt(this,"start",(function(){o.virtualScroller.start()})),this.container=n,this.renderItem=r;var a=s.onMount,l=s.onItemUnmount,u=Pt(s,Ht);this.onItemUnmount=l,this.tbody="TBODY"===this.container.tagName,this.virtualScroller=new Rt((function(){return o.container}),i,Tt(Tt({},u),{},{render:this.render,tbody:this.tbody})),this.start(),a&&a()}var n,i,r;return n=t,i=[{key:"unmountItem",value:function(e){this.container.removeChild(e),this.onItemUnmount&&this.onItemUnmount(e)}},{key:"onItemHeightChange",value:function(e){ie("`.onItemHeightChange(i)` method was renamed to `.onItemHeightDidChange(i)`"),this.onItemHeightDidChange(e)}},{key:"onItemHeightDidChange",value:function(e){this.virtualScroller.onItemHeightDidChange(e)}},{key:"setItemState",value:function(e,t){this.virtualScroller.setItemState(e,t)}},{key:"updateItems",value:function(e,t){ie("`.updateItems()` method was renamed to `.setItems(i)`"),this.setItems(e,t)}},{key:"setItems",value:function(e,t){this.virtualScroller.setItems(e,t)}}],i&&Et(n.prototype,i),r&&Et(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}();return zt}));
1
+ !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";function e(e){return(e%1==0?e:e.toFixed(2))+"px"}var t="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 n(){return"undefined"==typeof window||!window.document.documentMode}var i="VirtualScroller",r="VirtualScrollerStyle";function o(e){return o="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},o(e)}function s(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function a(e,t){if(t&&("object"===o(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 l(e){var t="function"==typeof Map?new Map:void 0;return l=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return u(e,arguments,f(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),c(i,e)},l(e)}function u(e,t,n){return u=h()?Reflect.construct:function(e,t,n){var i=[null];i.push.apply(i,t);var r=new(Function.bind.apply(e,i));return n&&c(r,n.prototype),r},u.apply(null,arguments)}function h(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function c(e,t){return c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},c(e,t)}function f(e){return f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},f(e)}var d=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&c(e,t)}(u,e);var t,n,i,r,o,l=(t=u,n=h(),function(){var e,i=f(t);if(n){var r=f(this).constructor;e=Reflect.construct(i,arguments,r)}else e=i.apply(this,arguments);return a(this,e)});function u(e){var t=e.renderedElementIndex,n=e.renderedElementsCount,i=e.message;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),l.call(this,i||function(e){var t=e.renderedElementIndex,n=e.renderedElementsCount;return"Element with index ".concat(t," was not found in the list of Rendered Item Elements in the Items Container of Virtual Scroller. There're only ").concat(n," Elements there.")}({renderedElementIndex:t,renderedElementsCount:n}))}return i=u,r&&s(i.prototype,r),o&&s(i,o),Object.defineProperty(i,"prototype",{writable:!1}),i}(l(Error));function m(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 g=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:"_getNthRenderedItemElement",value:function(e){var t=this.getElement().childNodes;if(e>t.length-1)throw new d({renderedElementIndex:e,renderedElementsCount:t.length});return t[e]}},{key:"getNthRenderedItemTopOffset",value:function(e){return this._getNthRenderedItemElement(e).getBoundingClientRect().top-this.getElement().getBoundingClientRect().top}},{key:"getNthRenderedItemHeight",value:function(e){return this._getNthRenderedItemElement(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)}}])&&m(t.prototype,n),i&&m(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function p(e){return p="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},p(e)}function I(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 v(e,t){if(t&&("object"===p(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function y(e){var t="function"==typeof Map?new Map:void 0;return y=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return b(e,arguments,C(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),w(i,e)},y(e)}function b(e,t,n){return b=S()?Reflect.construct:function(e,t,n){var i=[null];i.push.apply(i,t);var r=new(Function.bind.apply(e,i));return n&&w(r,n.prototype),r},b.apply(null,arguments)}function S(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function w(e,t){return w=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},w(e,t)}function C(e){return C=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},C(e)}var O=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&w(e,t)}(a,e);var t,n,i,r,o,s=(t=a,n=S(),function(){var e,i=C(t);if(n){var r=C(this).constructor;e=Reflect.construct(i,arguments,r)}else e=i.apply(this,arguments);return v(this,e)});function a(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),s.call(this,"[virtual-scroller] Scrollable container not found")}return i=a,r&&I(i.prototype,r),o&&I(i,o),Object.defineProperty(i,"prototype",{writable:!1}),i}(y(Error));function R(e){return R="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},R(e)}function x(e,t){return x=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},x(e,t)}function H(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=P(e);if(t){var r=P(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return T(this,n)}}function T(e,t){if(t&&("object"===R(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function P(e){return P=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},P(e)}function j(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function E(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function L(e,t,n){return t&&E(e.prototype,t),n&&E(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var z=function(){function e(t,n){j(this,e),this.getElement=t,this.getItemsContainerElement=n}return L(e,[{key:"getScrollY",value:function(){return this.getElement().scrollTop}},{key:"scrollToY",value:function(e){this.getElement().scrollTo?this.getElement().scrollTo(0,e):this.getElement().scrollTop=e}},{key:"getWidth",value:function(){if(!this.getElement())throw new O;return this.getElement().offsetWidth}},{key:"getHeight",value:function(){if(!this.getElement())throw new O;return this.getElement().offsetHeight}},{key:"getItemsContainerTopOffset",value:function(){var e=this.getElement().getBoundingClientRect().top,t=this.getElement().clientTop;return this.getItemsContainerElement().getBoundingClientRect().top-e+this.getScrollY()-t}},{key:"onScroll",value:function(e){var t=this.getElement();return t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e){var t;if("undefined"!=typeof ResizeObserver){var n=new ResizeObserver((function(t){t[0],e()})),i=this.getElement();n.observe(i),t=function(){return n.unobserve(i)}}var r=B(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),r()}}}]),e}(),M=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&x(e,t)}(n,e);var t=H(n);function n(e){return j(this,n),t.call(this,(function(){return window}),e)}return L(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 B(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(z);function B(e,t){var n=t.itemsContainerElement,i=function(){document.fullscreenElement&&!document.fullscreenElement.contains(n)||e()};return window.addEventListener("resize",i),function(){return window.removeEventListener("resize",i)}}var A="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var k=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){(function(){var t,n,i,r,o,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-o)/1e6},n=process.hrtime,r=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),o=r-s):Date.now?(e.exports=function(){return Date.now()-i},i=Date.now()):(e.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(A)})),_="undefined"==typeof window?A:window,V=["moz","webkit"],D="AnimationFrame",N=_["request"+D],W=_["cancel"+D]||_["cancelRequest"+D],F=0;!N&&F<V.length;F++)N=_[V[F]+"Request"+D],W=_[V[F]+"Cancel"+D]||_[V[F]+"CancelRequest"+D];if(!N||!W){var U=0,Y=0,q=[];N=function(e){if(0===q.length){var t=k(),n=Math.max(0,16.666666666666668-(t-U));U=n+t,setTimeout((function(){var e=q.slice(0);q.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(U)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return q.push({handle:++Y,callback:e,cancelled:!1}),Y},W=function(e){for(var t=0;t<q.length;t++)q[t].handle===e&&(q[t].cancelled=!0)}}var G=function(e){return N.call(_,e)};G.cancel=function(){W.apply(_,arguments)},G.polyfill=function(e){e||(e=_),e.requestAnimationFrame=N,e.cancelAnimationFrame=W};var J=G.cancel;function $(e,t){var n=Date.now(),i=G((function r(){Date.now()-n>=t?e():i=G(r)}));return{clear:function(){return J(i)}}}function K(e){e&&e.clear()}function Q(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var X=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this._isActive=!0,this.watchListTopOffset()}},{key:"isStarted",value:function(){return this._isActive}},{key:"stop",value:function(){this._isActive=!1,this.watchListTopOffsetTimer&&(K(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e._isActive&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=$(n,500)))}()}}])&&Q(t.prototype,n),i&&Q(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),Z={createItemsContainer:function(e){return new g(e)},createScrollableContainer:function(e,t){return e?new z(e,t):"undefined"!=typeof window?new M(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new X({getListTopOffset:t,onListTopOffsetChange:n})}};function ee(e){return function(e){if(Array.isArray(e))return te(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 te(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 te(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 te(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 ne(){if(se()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,ee(["[virtual-scroller]"].concat(n)))}}function ie(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(ae())return oe.apply(this,n);(e=console).warn.apply(e,ee(["[virtual-scroller]"].concat(n)))}function re(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).error.apply(e,ee(["[virtual-scroller]"].concat(n)))}function oe(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i=function(){return new Error(["[virtual-scroller]"].concat(t).join(" "))};if("undefined"!=typeof window)re.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw i()}),0);else{var r=le("VirtualScrollerCatchError");if(r)return r(i());if(le("VirtualScrollerThrowErrors"))throw i();re.apply(this,["ERROR"].concat(t))}}function se(){var e=le("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function ae(){return le("VirtualScrollerWarningsAreErrors")}function le(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function ue(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function he(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ue(Object(n),!0).forEach((function(t){ce(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ue(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ce(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function fe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var de=function(){function e(t){var n=t.bypass,i=t.getInitialEstimatedItemHeight,r=t.getInitialEstimatedVisibleItemRowsCount,o=t.measureItemsBatchSize,s=t.getPrerenderMargin,a=t.getVerticalSpacing,l=t.getVerticalSpacingBeforeResize,u=t.getColumnsCount,h=t.getColumnsCountBeforeResize,c=t.getItemHeight,f=t.getItemHeightBeforeResize,d=t.getBeforeResizeItemsCount,m=t.getAverageItemHeight,g=t.getMaxVisibleAreaHeight,p=t.getPreviouslyCalculatedLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.getInitialEstimatedItemHeight=i,this.getInitialEstimatedVisibleItemRowsCount=r,this.measureItemsBatchSize=o,this.getPrerenderMargin=s,this.getVerticalSpacing=a,this.getVerticalSpacingBeforeResize=l,this.getColumnsCount=u,this.getColumnsCountBeforeResize=h,this.getItemHeight=c,this.getItemHeightBeforeResize=f,this.getBeforeResizeItemsCount=d,this.getAverageItemHeight=m,this.getMaxVisibleAreaHeight=g,this.getPreviouslyCalculatedLayout=p}var t,n,i;return t=e,n=[{key:"getInitialLayoutValueWithFallback",value:function(e,t,n){try{return t()}catch(t){if(t instanceof O)return ne('Scrollable container size is not known at this point, so "'.concat(e,"\" can't be calculated yet. Default to"),n),n;throw t}}},{key:"getInitialLayoutValues",value:function(e){var t,n,i=this,r=e.itemsCount,o=e.columnsCount,s=e.beforeStart;if(r>0){var a=function(){return i.getInitialLastShownItemIndex({itemsCount:r,columnsCount:o,firstShownItemIndex:t})};t=0,n=s?this.getInitialLayoutValueWithFallback("lastShownItemIndex",a,0):a()}return{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var r=1;if(this.getMaxVisibleAreaHeight())r=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin());else if(this.getInitialEstimatedVisibleItemRowsCount&&(r=this.getInitialEstimatedVisibleItemRowsCount(),isNaN(r)))throw new Error("[virtual-scroller] `getEstimatedVisibleItemRowsCount()` must return a number");return Math.min(i+(r*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){var e=this.getAverageItemHeight();if(e)return e;if(this.getInitialEstimatedItemHeight){var t=this.getInitialEstimatedItemHeight();if(isNaN(t))throw new Error("[virtual-scroller] `getInitialEstimatedItemHeight()` must return a number");return t}return 0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,r=e.lastShownItemIndex,o=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,u=n.itemsCount,h=n.columnsCount,c=n.shouldRestoreScrollPosition,f=n.onResetGridLayout,d=this.getAverageItemHeight(),m=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/h)*(m+d)),a>0&&(i+=a,r+=a,o+=Math.ceil(a/h)*(d+m),c&&(i=0,o=0),a%h>0)){f(),ie("~ Prepended items count",a,"is not divisible by Columns Count",h,"~"),ie("Layout reset required");var g=r-i+1;if(i=0,o=0,!c&&a>g){var p=u-((r=this.getInitialLastShownItemIndex({itemsCount:u,columnsCount:h,firstShownItemIndex:i}))+1);s=Math.ceil(p/h)*(m+d)}}return{beforeItemsHeight:o,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:r}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,r=t.nonMeasuredAreaHeight,o=t.indexOfTheFirstItemInTheRow;ne("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(r)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=o),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(o+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaInsideTheList,i=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaInsideTheList:n,findFirstShownItemIndex:!0});if(null===i)return this.getNonVisibleListShownItemIndexes();if(void 0!==i.firstNonMeasuredItemIndex)return i;var r=i,o=r.firstShownItemIndex,s=r.beforeItemsHeight;return null===(i=this._getShownItemIndex({itemsCount:t,fromIndex:o,beforeItemsHeight:s,visibleAreaInsideTheList:n,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==i.firstNonMeasuredItemIndex?i:{firstShownItemIndex:o,lastShownItemIndex:i.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaInsideTheList,r=e.findFirstShownItemIndex,o=e.findLastShownItemIndex,s=e.fromIndex,a=e.beforeItemsHeight;if(0===s&&(a=0),void 0===a)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+s);if(!t){var l=this.getBeforeResizeItemsCount();if(l>s){var u=this._getShownItemIndex(he(he({},e),{},{beforeResize:!0,itemsCount:l})),h=u.notFound,c=u.beforeItemsHeight,f=u.firstShownItemIndex,d=u.lastShownItemIndex;if(!h){var m=this.getColumnsCount();return{firstShownItemIndex:void 0===f?void 0:Math.floor(f/m)*m,lastShownItemIndex:void 0===d?void 0:Math.floor(d/m)*m,beforeItemsHeight:c}}a=c,s+=l}}for(var g=t?this.getColumnsCountBeforeResize():this.getColumnsCount(),p=t?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing(),I=s;I<n;){for(var v=I,y=n>v+g?p:0,b=0,S=0;S<g&&I<n;){var w=t?this.getItemHeightBeforeResize(I):this.getItemHeight(I);if(void 0===w)return this.getItemNotMeasuredIndexes(I,{itemsCount:n,firstShownItemIndex:o?s:void 0,indexOfTheFirstItemInTheRow:v,nonMeasuredAreaHeight:i.bottom+this.getPrerenderMargin()-a});b=Math.max(b,w),S++,I++}var C=a+b,O=C>i.top-this.getPrerenderMargin(),R=C+y>=i.bottom+this.getPrerenderMargin();if(r){if(O)return{firstShownItemIndex:v,beforeItemsHeight:a}}else if(o&&R)return{lastShownItemIndex:Math.min(v+g-1,n-1)};a+=b+y}return t?{notFound:!0,beforeItemsHeight:a}:r?(ie("The list is supposed to be visible but no visible item has been found"),null):o?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,r=0;if(!n){var o=this.getBeforeResizeItemsCount();o>0&&(i=this.getBeforeItemsHeight(Math.min(e,o),{beforeResize:!0}),r=o)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();r<e;){for(var l=0,u=0;u<s;){var h=n?this.getItemHeightBeforeResize(r):this.getItemHeight(r);void 0===h&&(h=this.getAverageItemHeight()),l=Math.max(l,h),r++,u++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,r=e+1;r<t;){for(var o=0,s=0;s<n&&r<t;){var a=this.getItemHeight(r);void 0===a&&(a=this.getAverageItemHeight()),o=Math.max(o,a),r++,s++}i+=this.getVerticalSpacing(),i+=o}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),r=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,o=0;o<r;)t+=this.getItemHeightBeforeResize(o*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),o++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,u=0;u<this.getColumnsCount();){var h=this.getItemHeight(n+a*this.getColumnsCount()+u);if(void 0===h)return;l=Math.max(l,h),u++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&fe(t.prototype,n),i&&fe(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),me="scroll",ge="stopped scrolling",pe="manual",Ie="started",ve="non-measured item heights have been measured",ye="viewport width changed",be="viewport height changed",Se="viewport size unchanged",we="item height changed",Ce="items changed",Oe="list top offset changed";function Re(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var xe=function(){function e(t){var n,i,r,o=this,s=t.bypass,a=t.getWidth,l=t.getHeight,u=t.listenForResize,h=t.onResizeStart,c=t.onResizeStop,f=t.onHeightChange,d=t.onWidthChange,m=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r=function(){if(o.isActive){var e=o.width,t=o.height;o.width=o.getWidth(),o.height=o.getHeight(),o.width===e?o.height===t?o.onNoChange():o.onHeightChange(t,o.height):o.onWidthChange(e,o.width)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[i]=r,this.bypass=s,this.onHeightChange=f,this.onWidthChange=d,this.onNoChange=m,this.getWidth=a,this.getHeight=l,this.listenForResize=u,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.onStart,o=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?K(n):r&&r(),n=$((function(){n=void 0,o&&o(),e.apply(i,a),s()}),t)}))}}(this._onResize,He,{onStart:h,onStop:c})}var t,n,i;return t=e,(n=[{key:"start",value:function(){this.isActive=!0,this.bypass||(this.width=this.getWidth(),this.height=this.getHeight(),this.unlistenResize=this.listenForResize(this.onResize))}},{key:"stop",value:function(){this.isActive=!1,this.width=void 0,this.height=void 0,this.unlistenResize&&(this.unlistenResize(),this.unlistenResize=void 0)}}])&&Re(t.prototype,n),i&&Re(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),He=250;function Te(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?Te(Object(n),!0).forEach((function(t){je(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Te(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var Le=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,r=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=r}var t,n,i;return t=e,n=[{key:"initializeFromState",value:function(e){this._includesBeforeResizeInState=Boolean(e.beforeResize)}},{key:"cleanUpBeforeResizeItemHeights",value:function(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex,i=e.itemHeights,r=e.beforeResize;if(r&&t<r.itemHeights.length){ne('~ Clean up "before resize" item heights and correct scroll position ~');for(var o=0,s=Math.floor(r.itemHeights.length/this.getColumnsCount()),a=Math.min(s*this.getColumnsCount()-1,n),l=t;l<=a;){for(var u=0,h=0;h<this.getColumnsCount()&&l<=a;){var c=i[l];void 0===c&&(c=this.getAverageItemHeight()),u=Math.max(u,c),l++,h++}o+=u,o+=this.getVerticalSpacing()}for(var f=0,d=Math.min(r.itemHeights.length,n+1),m=Math.ceil(d/r.columnsCount),g=0===t?0:Math.floor((t-1)/r.columnsCount)+1;g<m;)f+=r.itemHeights[g*r.columnsCount],f+=r.verticalSpacing,g++;if(0===t)ne('Drop all "before resize" item heights');else{var p=t,I=r.itemHeights.length-1;p===I?ne("For item index",p,'— drop "before resize" height',r.itemHeights[p]):ne("For item indexes from",p,"to",I,'— drop "before resize" heights',r.itemHeights.slice(p))}return r.itemHeights.splice(t,r.itemHeights.length-t),{scrollBy:o-f,beforeResize:0===t?void 0:Pe({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),r=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var o=this.getState(),s=o.beforeResize,a=o.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==r){for(var u=0,h=Math.ceil(l/s.columnsCount),c=0;c<h;)u+=s.itemHeights[c*s.columnsCount],u+=s.verticalSpacing,c++;for(var f=0,d=t;d<n;){for(var m=0,g=0;g<i&&d<n;)m=Math.max(m,a[d]),g++,d++;f+=m,f+=r}var p=u+f,I=Math.ceil(n/i);return new Array(n).fill(Math.max(0,p/I-r))}return s.itemHeights.concat(ze(a,n,i).slice(s.itemHeights.length))}return ze(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&Ee(t.prototype,n),i&&Ee(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function ze(e,t,n){e=e.slice(0,Math.ceil(t/n)*n);for(var i=0;i*n<t;){for(var r=0,o=0;o<n;)r=Math.max(r,e[i*n+o]),o++;for(o=0;o<n;)e[i*n+o]=r,o++;i++}return e.slice(0,t)}function Me(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Be(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ae=function(){function e(t){var n=this,i=t.bypass,r=t.scrollableContainer,o=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,u=t.isImmediateLayoutScheduled,h=t.hasNonRenderedItemsAtTheTop,c=t.hasNonRenderedItemsAtTheBottom,f=t.getLatestLayoutVisibleArea,d=t.getListTopOffset,m=t.getPrerenderMargin,g=t.onScrolledToTop,p=t.waitForScrollingToStop;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Be(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),Be(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(ne(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.shouldCallOnScrollListenerWhenStopsScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=r,this.itemsContainer=o,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=u,this.hasNonRenderedItemsAtTheTop=h,this.hasNonRenderedItemsAtTheBottom=c,this.getLatestLayoutVisibleArea=f,this.getListTopOffset=d,this.getPrerenderMargin=m,this.onScrolledToTop=g,this.waitForScrollingToStop=p}var t,n,i;return t=e,(n=[{key:"start",value:function(){void 0!==this.initialScrollPosition&&(this.scrollToY(this.initialScrollPosition),this.initialScrollPosition=void 0),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopListeningToScroll(),this.stopListeningToScroll=void 0,this.shouldCallOnScrollListenerWhenStopsScrolling=void 0,this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(K(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=$((function(){e.onStopScrollingTimer=void 0,e.shouldCallOnScrollListenerWhenStopsScrolling&&(e.shouldCallOnScrollListenerWhenStopsScrolling=void 0,e.onScroll({delayed:!0}))}),ke)}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&Me(t.prototype,n),i&&Me(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),ke=100;function _e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var 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:"snapshotListHeightBeforeAddingNewItems",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()})}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&_e(t.prototype,n),i&&_e(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function 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)}}var Ne=function(){function e(t){var n=t.container;t.itemHeights;var i=t.getItemHeight,r=t.setItemHeight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=n,this._get=i,this._set=r,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"readItemHeightsFromState",value:function(e){for(var t=e.itemHeights,n=0;n<t.length;){if(void 0===t[n]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=n-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=n),this.measuredItemsHeight+=t[n];n++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(ne("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(ne("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,r=this.lastMeasuredItemIndex,o=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);ne("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,o||(this.firstMeasuredItemIndex=s,o=!0)),(void 0===r||s>r)&&(void 0!==r&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),u=this._measureItemHeight(s,e);l!==u&&(ie("Item index",s,"height changed unexpectedly: it was",l,"before, but now it is",u,'. Whenever an item\'s height changes for whatever reason, a developer must call `onItemHeightDidChange(i)` right after that change. If you are calling `onItemHeightDidChange(i)` correctly, then there\'re several other possible causes. For example, perhaps you forgot to persist the item\'s "state" by calling `setItemState(i, newState)` when that "state" did change, and so the item\'s "state" got lost when the item element was unmounted, which resulted in a different item height when the item was shown again with no previous "state". Or perhaps you\'re running your application in "devleopment" mode and `VirtualScroller` has initially rendered the list before your CSS styles or custom fonts have loaded, resulting in different item height measurements "before" and "after" the page has fully loaded.'),this._set(s,u))}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&De(t.prototype,n),i&&De(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function We(e,t){for(var n=0;n<e.length;)e[n]=t(n),n++;return e}function Fe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Ue(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(n),!0).forEach((function(t){Ye(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qe(e){var t=Ue({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=Ue({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function Ge(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 Je(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ge(Object(n),!0).forEach((function(t){$e(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ge(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function $e(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ke(e){var t=this,n=e.state,i=e.getInitialItemState,r=e.onStateChange,o=e.render,s=e.items;function a(){return this.state}function l(e){this.state=e}function u(e,t){this.state=e,o(this.state,this.previousState),this.onRender()}function h(e){var t=e.getInitialItemState,n=s,i=Je(Je({},f.call(this,n,{beforeStart:!0})),{},{items:n,itemStates:We(new Array(n.length),(function(e){return t(n[e])}))});return se()&&ne("Initial state (autogenerated)",qe(i)),ne("First shown item index",i.firstShownItemIndex),ne("Last shown item index",i.lastShownItemIndex),i}function c(e){return se()&&ne("Restore state",qe(e)),function(e,t){var n=t.columnsCount,i=e.columnsCount||1;if(i!==n)return ie("~ Columns Count changed from",i,"to",n,"~"),!0;if(Math.floor(e.firstShownItemIndex/n)*n!==e.firstShownItemIndex)return ie("~ First Shown Item Index",e.firstShownItemIndex,"is not divisible by Columns Count",n,"~"),!0}(e=Je(Je({},e=function(e){return e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e}(e)),{},{verticalSpacing:void 0}),{columnsCount:this.getActualColumnsCount()})&&(ie("Reset Layout"),e=Je(Je({},e),f.call(this,e.items,{beforeStart:!1}))),e}function f(e,t){var n=this,i=t.beforeStart,r=e.length,o=function(){return n.getActualColumnsCount()};i?this.layout.getInitialLayoutValueWithFallback("columnsCount",o,1):o();var s=this.layout.getInitialLayoutValues({itemsCount:r,columnsCount:this.getActualColumnsCount(),beforeStart:i}),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.beforeItemsHeight,h=s.afterItemsHeight,c=new Array(r);return this.onBeforeShowItems(e,c,a,l),{itemHeights:c,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:u,afterItemsHeight:h}}this.onStateChange=r,this._render=o,this.getInitialItemState=i,this._setItemState=function(e,n){se()&&(ne("~ Item state changed ~"),ne("Item index",e),ne("Previous state\n"+JSON.stringify(t.getState().itemStates[e],null,2)),ne("New state\n"+JSON.stringify(n,null,2))),t.getState().itemStates[e]=n,t.newItemsWillBeRendered&&(t.itemStatesThatChangedWhileNewItemsWereBeingRendered||(t.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),t.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=n)},this.getState=function(){return t._getState()},this.updateState=function(e){se()&&(ne("~ Set state ~"),ne(qe(e))),e.items&&(t._isSettingNewItems||oe("A `stateUpdate` can only contain `items` property as a result of calling `.setItems()`")),t._isSettingNewItems=void 0,t.waitingForRender=!0,t.previousState=t.getState(),t.mostRecentSetStateValue||(t.mostRecentSetStateValue=t.getState()),t.mostRecentSetStateValue=Je(Je({},t.mostRecentSetStateValue),e),t._setState(t.mostRecentSetStateValue,e)},this.getInitialState=function(){return n?c.call(t,n):h.call(t,{getInitialItemState:i})},this.useState=function(e){var n=e.getState,i=e.setState,r=e.updateState;if(t._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");if(t._getState)throw new Error("[virtual-scroller] Custom state storage has already been configured");if(o)throw new Error("[virtual-scroller] Creating a `VirtualScroller` class instance with a `render()` parameter implies using the default (internal) state storage");if(i&&r)throw new Error("[virtual-scroller] When using a custom state storage, one must supply either `setState()` or `updateState()` function but not both");if(!n||!i&&!r)throw new Error("[virtual-scroller] When using a custom state storage, one must supply both `getState()` and `setState()`/`updateState()` functions");t._usesCustomStateStorage=!0,t._getState=n,t._setState=function(e,t){i?i(e):r(t)}},this.useDefaultStateStorage=function(){if(!o)throw new Error("[virtual-scroller] When using the default (internal) state management, one must supply a `render(state, prevState)` function parameter");t._getState=a.bind(t),t._setState=u.bind(t),l.bind(t)(t.getInitialState())}}var Qe=.9;function Xe(){var e=this;function t(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;ne("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),r=t.getNthRenderedItemHeight(0),o=1;o<n;){var s=t.getNthRenderedItemTopOffset(o),a=t.getNthRenderedItemHeight(o);if(s+Qe>=i+r){var l=s-(i+r);return Math.max(0,l)}r=Math.max(r,a),o++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0!==i)return ne("Item vertical spacing",i),i;ne("Not enough items rendered to measure vertical spacing")}this.getVerticalSpacing=function(){return e.verticalSpacing||0},this.getVerticalSpacingBeforeResize=function(){var t=e.getState().beforeResize;return t&&t.verticalSpacing||0},this.measureVerticalSpacingIfNotMeasured=function(){if(void 0===e.verticalSpacing)return e.verticalSpacing=t.call(e),e.verticalSpacing}}function Ze(e){var t=this,n=e.getColumnsCount;if(n){var i={getWidth:function(){return t.scrollableContainer.getWidth()}};this.getActualColumnsCountForState=function(){var e=n(i);if(1!==e)return e}}else this.getActualColumnsCountForState=function(){};this.getActualColumnsCount=function(){return t.getActualColumnsCountForState()||1},this.getColumnsCount=function(){return t.getState()&&t.getState().columnsCount||1}}function et(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 tt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?et(Object(n),!0).forEach((function(t){nt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):et(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function nt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function it(){var e=this;function t(e){var n=e.stateUpdate,o=Date.now(),s=i.call(this),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.shownItemsHeight,h=s.firstNonMeasuredItemIndex;if(this.listHeightMeasurement.hasSnapshot()&&(l<this.listHeightMeasurement.getAnchorItemIndex()&&(l=this.listHeightMeasurement.getAnchorItemIndex()),h=void 0),!r.call(this,a,l))return ne("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),t.call(this,{stateUpdate:n});var c=this.layout.getBeforeItemsHeight(a),f=this.layout.getAfterItemsHeight(l,this.getItemsCount()),d=Date.now()-o;ne("~ Calculated Layout"+(this.bypass?" (bypass)":"")+" ~"),d<rt||ie("Layout calculated in",d,"ms"),this.getColumnsCount()&&ne("Columns count",this.getColumnsCount()),ne("First shown item index",a),ne("Last shown item index",l),ne("Before items height",c),ne("After items height (actual or estimated)",f),ne("Average item height (used for estimated after items height calculation)",this.itemHeights.getAverage()),se()&&(ne("Item heights",this.getState().itemHeights.slice()),ne("Item states",this.getState().itemStates.slice())),this.onBeforeShowItems(this.getState().items,this.getState().itemHeights,a,l),this.firstNonMeasuredItemIndex=h,this.previouslyCalculatedLayout=void 0===u?void 0:{firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:c,shownItemsHeight:u},this.updateState(tt({firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:c,afterItemsHeight:f},n))}function n(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}function i(){var e=this.getItemsCount(),t=n.call(this);return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:t.top<this.itemsContainer.getHeight()+this.layout.getPrerenderMargin()&&t.bottom>0-this.layout.getPrerenderMargin()?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaInsideTheList:t}):(ne("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}function r(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var r=this.getState().itemHeights[i],a=o.call(this,i);a!==r&&(n&&(ne("~ Validate will-be-hidden item heights. ~"),s.call(this,i,r,a)),n=!1,ie("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",r,"to",a,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightDidChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}function o(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}function s(e,t,n){var i=this.previouslyCalculatedLayout;if(i){var r=n-t;e<i.firstShownItemIndex?i.beforeItemsHeight+=r:e>i.lastShownItemIndex?void 0!==i.afterItemsHeight&&(i.afterItemsHeight+=r):i.shownItemsHeight+=n-t}}this.onUpdateShownItemIndexes=function(n){var i=n.reason,r=n.stateUpdate,o=function(){r&&e.updateState(r)};return e.newItemsWillBeRendered||e.widthHasChanged||e._isResizing||0===e.getItemsCount()?o():(e.scroll.cancelScheduledLayout(),r=e.cancelLayoutTimer({stateUpdate:r}),ne("~ Update Layout (on ".concat(i,") ~")),void t.call(e,{stateUpdate:r}))},this.getListTopOffsetInsideScrollableContainer=function(){var t=e.scrollableContainer.getItemsContainerTopOffset();return e.listTopOffsetWatcher&&e.listTopOffsetWatcher.onListTopOffset(t),t},this._onItemHeightDidChange=function(t){ne("~ On Item Height Did Change was called ~"),ne("Item index",t);var n=e.getState(),i=n.itemHeights,r=n.firstShownItemIndex,a=n.lastShownItemIndex;if(!(t>=r&&t<=a))return ie("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when when a developer calls `onItemHeightDidChange(i)` while looping through a batch of items.");var l=i[t];if(void 0!==l){var u;ne("~ Re-measure item height ~");try{u=o.call(e,t)}catch(e){if(e instanceof d)return oe('"onItemHeightDidChange()" has been called for item index '.concat(t," but the item is not currently rendered and can't be measured. The exact error was: ").concat(e.message))}ne("Previous height",l),ne("New height",u),l!==u&&(ne("~ Item height has changed. Should update layout. ~"),s.call(e,t,l,u),e._isActive&&(e.waitingForRender?(ne("~ Another state update is already waiting to be rendered. Delay the layout update until then. ~"),e.updateLayoutAfterRenderBecauseItemHeightChanged=!0):e.onUpdateShownItemIndexes({reason:we})),e.newItemsWillBeRendered&&(e.itemHeightsThatChangedWhileNewItemsWereBeingRendered||(e.itemHeightsThatChangedWhileNewItemsWereBeingRendered={}),e.itemHeightsThatChangedWhileNewItemsWereBeingRendered[String(t)]=u))}},this.getPrerenderMargin=function(){return 1*e.scrollableContainer.getHeight()},this.onBeforeShowItems=function(t,n,i,r){if(e.onItemInitialRender)for(var o=i;o<=r;)void 0===n[o]&&e.onItemInitialRender(t[o]),o++},this.measureItemHeightsAndSpacing=function(){e.itemHeights.measureItemHeights(e.getState().firstShownItemIndex,e.getState().lastShownItemIndex);var t=e.measureVerticalSpacingIfNotMeasured();if(t&&0!==t)return{verticalSpacing:t}},this.cancelLayoutTimer=function(t){var n=t.stateUpdate;return e.layoutTimer?(K(e.layoutTimer),e.layoutTimer=void 0,n||e.layoutTimerStateUpdate?(n=tt(tt({},e.layoutTimerStateUpdate),n),e.layoutTimerStateUpdate=void 0,n):void 0):n},this.scheduleLayoutTimer=function(t){var n=t.reason,i=t.stateUpdate;e.layoutTimerStateUpdate=i,e.layoutTimer=$((function(){e.layoutTimerStateUpdate=void 0,e.layoutTimer=void 0,e.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}}var rt=15;function ot(e){return ot="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},ot(e)}var st=Object.prototype.hasOwnProperty;function at(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function lt(e,t){if(at(e,t))return!0;if("object"!==ot(e)||null===e||"object"!==ot(t)||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var r=0;r<n.length;r++)if(!st.call(t,n[r])||!at(e[n[r]],t[n[r]]))return!1;return!0}function ut(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 ht(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ut(Object(n),!0).forEach((function(t){ct(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ut(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ct(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ft(){var t=this;function n(e,t){if(e){var n=e.prependedItemsCount;e.appendedItemsCount;var i=this.getState(),r=i.itemHeights,o=i.itemStates;if(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered)for(var s=0,a=Object.keys(this.itemHeightsThatChangedWhileNewItemsWereBeingRendered);s<a.length;s++){var l=a[s];r[n+Number(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var u=0,h=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);u<h.length;u++){var c=h[u];o[n+Number(c)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[c]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(ie('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after appending items'),ie("Previously calculated layout",this.previouslyCalculatedLayout),ie("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightMeasurement.hasSnapshot()){if(0===t.firstShownItemIndex){ne("~ Restore Scroll Position ~");var f=this.listHeightMeasurement.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightMeasurement.reset(),f?(ne("Scroll down by",f),this.scroll.scrollByY(f)):ne("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}:(ie('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after prepending items'),ie("Previously calculated layout",this.previouslyCalculatedLayout),ie("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}ie('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "onRender()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}function i(e){var t=e.reason,n=e.stateUpdate;this._useTimeoutInRenderLoop?(n=this.cancelLayoutTimer({stateUpdate:n}),this.scheduleLayoutTimer({reason:t,stateUpdate:n})):this.onUpdateShownItemIndexes({reason:t,stateUpdate:n})}function r(){var e=Boolean(this.widthHasChanged);this.widthHasChanged=void 0;var t=void 0!==this.firstNonMeasuredItemIndex;t&&ne("Non-measured item index",this.firstNonMeasuredItemIndex),this.firstNonMeasuredItemIndex=void 0,this.newItemsWillBeRendered=void 0,this.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,this.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0;var n=this.updateLayoutAfterRenderBecauseItemHeightChanged;return this.updateLayoutAfterRenderBecauseItemHeightChanged=void 0,{nonMeasuredItemsHaveBeenRendered:t,itemHeightHasChanged:n,widthHasChanged:e}}this._onRender=function(o,s){var a,l,u;t.waitingForRender=!1,ne("~ Rendered ~"),se()&&ne("State",qe(o)),t.onStateChange&&(lt(o,s)||t.onStateChange(o)),t.tbody&&(a=t.getItemsContainerElement(),l=o.beforeItemsHeight,u=o.afterItemsHeight,a.style.setProperty("--VirtualScroller-paddingTop",e(l)),a.style.setProperty("--VirtualScroller-paddingBottom",e(u))),t.mostRecentSetStateValue&&(lt(o,t.mostRecentSetStateValue)||(ie("The most recent state that was set",qe(t.mostRecentSetStateValue)),oe("`VirtualScroller` has been rendered with a `state` that is not equal to the most recently set one")));var h,c=r.call(t),f=c.nonMeasuredItemsHaveBeenRendered,d=c.itemHeightHasChanged,m=c.widthHasChanged;if(d&&(h=we),s||h){if(f&&(h=ve),m&&(h=ye,t.itemHeights.reset(),t.verticalSpacing=void 0),s){var g=s.items,p=o.items;if(p!==g){var I=t.getItemsDiff(g,p);if(I){var v=I.prependedItemsCount;t.itemHeights.onPrepend(v)}else t.itemHeights.reset();m||"SEAMLESS_PREPEND"!==n.call(t,I,o)&&(h=Ce)}}var y;if(s&&(o.firstShownItemIndex!==s.firstShownItemIndex||o.lastShownItemIndex!==s.lastShownItemIndex||o.items!==s.items)||m){var b=t.measureItemHeightsAndSpacing();b&&(y=ht(ht({},y),b))}var S=t.beforeResize.cleanUpBeforeResizeItemHeights();if(void 0!==S){var w=S.scrollBy,C=S.beforeResize;ne("Correct scroll position by",w),t.scroll.scrollByY(w),y=ht(ht({},y),{},{beforeResize:C})}t._isActive?h?i.call(t,{stateUpdate:y,reason:h}):y?t.updateState(y):ne("~ Finished Layout ~"):t._afterRenderStateUpdateThatWasStopped=y}}}function dt(){var e=this;this.onContainerResize=function(){e.previouslyCalculatedLayout=void 0,e.listHeightMeasurement.reset();var t=e.newItemsWillBeRendered?e.newItemsWillBeRendered.count:e.getState().itemHeights.length,n=e.newItemsWillBeRendered?e.newItemsWillBeRendered.layout:e.getState(),i={scrollableContainerWidth:e.scrollableContainer.getWidth(),firstShownItemIndex:n.firstShownItemIndex,lastShownItemIndex:n.lastShownItemIndex,beforeItemsHeight:n.beforeItemsHeight,afterItemsHeight:n.afterItemsHeight,itemHeights:new Array(t),columnsCount:e.getActualColumnsCountForState(),verticalSpacing:void 0},r=n.firstShownItemIndex,o=n.lastShownItemIndex,s=e.getActualColumnsCount(),a=Math.floor(r/s)*s,l=Math.min(Math.ceil((o+1)/s)*s,t)-1;a!==r&&(ne("Columns Count changed from",e.getState().columnsCount||1,"to",s),ne("First Shown Item Index needs to change from",r,"to",a)),i.firstShownItemIndex=a,i.lastShownItemIndex=l;var u=e.getVerticalSpacing(),h=e.getColumnsCount();e.shouldDiscardBeforeResizeItemHeights()||0===a?e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(i.beforeResize=void 0):i.beforeResize={verticalSpacing:u,columnsCount:h,itemHeights:e.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:r,newFirstShownItemIndex:a,newColumnsCount:s})},e.widthHasChanged={stateUpdate:i},e.updateState(i)},this.shouldDiscardBeforeResizeItemHeights=function(){if(e.newItemsWillBeRendered){var t=e.newItemsWillBeRendered,n=t.prepend,i=t.replace;return n||i}}}function mt(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 gt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mt(Object(n),!0).forEach((function(t){pt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function pt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function It(){var e=this;this.getItemsCount=function(){return e.getState().items.length},this._setItems=function(t){var n,i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=e.getState(),s=o.items,a=e.getState(),l=a.itemStates,u=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),h=u.itemHeights;ne("~ Update items ~");var c=e.getItemsDiff(s,t);if(c){var f,d=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),m=d.firstShownItemIndex,g=d.lastShownItemIndex,p=d.beforeItemsHeight,I=d.afterItemsHeight,v=0===m&&(r.preserveScrollPositionOnPrependItems||r.preserveScrollPosition),y=c.prependedItemsCount,b=c.appendedItemsCount;n=e.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:m,lastShownItemIndex:g,beforeItemsHeight:p,afterItemsHeight:I},{prependedItemsCount:y,appendedItemsCount:b},{itemsCount:t.length,columnsCount:e.getActualColumnsCount(),shouldRestoreScrollPosition:v,onResetGridLayout:function(){return f=!0}}),y>0&&(ne("Prepend",y,"items"),h=new Array(y).concat(h),l=We(new Array(y),(function(n){return e.getInitialItemState(t[n])})).concat(l),v?(ne("Will restore scroll position"),e.listHeightMeasurement.snapshotListHeightBeforeAddingNewItems({previousItems:s,newItems:t,prependedItemsCount:y}),void 0!==e.firstNonMeasuredItemIndex&&(e.firstNonMeasuredItemIndex+=y)):(ne("Reset layout"),f?(ne("Reason: Prepended items count",y,"is not divisible by Columns Count",e.getActualColumnsCount()),h=new Array(t.length)):ne("Reason: Prepended items' heights are unknown"),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0)),b>0&&(ne("Append",b,"items"),h=h.concat(new Array(b)),l=l.concat(We(new Array(b),(function(n){return e.getInitialItemState(t[y+s.length+n])})))),i={prepend:y>0,append:b>0}}else ne("Items have changed, and",c?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),ne("Previous items",s),ne("New items",t),h=new Array(t.length),l=We(new Array(t.length),(function(n){return e.getInitialItemState(t[n])})),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0,e.listHeightMeasurement.reset(),i={replace:!0};ne("~ Update state ~"),ne("First shown item index",n.firstShownItemIndex),ne("Last shown item index",n.lastShownItemIndex),ne("Before items height",n.beforeItemsHeight),ne("After items height (actual or estimated)",n.afterItemsHeight),e.onBeforeShowItems(t,h,n.firstShownItemIndex,n.lastShownItemIndex),e.newItemsWillBeRendered=gt(gt({},i),{},{count:t.length,layout:n});var S=gt(gt({},n),{},{items:t,itemStates:l,itemHeights:h});e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(e.shouldDiscardBeforeResizeItemHeights()?S.beforeResize=void 0:S.beforeResize=e.widthHasChanged?e.widthHasChanged.stateUpdate.beforeResize:e.getState().beforeResize),e._isSettingNewItems=!0,e.updateState(S)},this.getItemsDiff=function(t,n){return function(e,t,n){var i=-1,r=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var r=0;r<e.length;){if(t.length<=n+r||!i(t[n+r],e[r]))return!1;r++}return!0}(e,t,i,n)&&(r=i+e.length-1)),i>=0&&r>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(r+1)}}(t,n,e.isItemEqual)}}function vt(e,i){var r=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=o.render,a=o.state,l=o.getInitialItemState,u=void 0===l?function(){}:l,h=o.onStateChange,c=o.initialScrollPosition,f=o.onScrollPositionChange,d=o.scrollableContainer,m=o.measureItemsBatchSize,g=void 0===m?50:m,p=o.getColumnsCount,I=o.getItemId,v=o.tbody,y=o.estimatedItemHeight,b=o.getEstimatedVisibleItemRowsCount,S=o.onItemInitialRender,w=o.onItemFirstRender,C=o._useTimeoutInRenderLoop,O=o._waitForScrollingToStop,R=o.engine,x=o.bypass,H=o.getEstimatedItemHeight,T=o.getScrollableContainer;if(ne("~ Initialize ~"),this.engine=R||Z,H||"number"!=typeof y||(H=function(){return y}),!T&&d&&(T=function(){return d}),this.getItemsContainerElement=e,o.getState||o.setState)throw new Error("[virtual-scroller] `getState`/`setState` options usage has changed in the new version. See the readme for more details.");if(v){if(this.engine!==Z)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");ne("~ <tbody/> detected ~"),this.tbody=!0,n()||(ne("~ <tbody/> not supported ~"),oe(t),x=!0)}x&&ne('~ "bypass" mode ~'),this.bypass=x,this._useTimeoutInRenderLoop=C,this.isItemEqual=I?function(e,t){return I(e)===I(t)}:function(e,t){return e===t},S?this.onItemInitialRender=S:w&&(this.onItemInitialRender=function(e){ie("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=r.getState().items.indexOf(e);t>=0&&w(t)}),a&&(i=a.items),ne("Items count",i.length),H&&ne("Estimated item height",H()),Ke.call(this,{state:a,getInitialItemState:u,onStateChange:h,render:s,items:i}),Xe.call(this),Ze.call(this,{getColumnsCount:p}),it.call(this),ft.call(this),dt.call(this),It.call(this),yt.call(this,{getScrollableContainer:T,getEstimatedItemHeight:H,getEstimatedVisibleItemRowsCount:b,measureItemsBatchSize:g,initialScrollPosition:c,onScrollPositionChange:f,waitForScrollingToStop:O}),a&&(this.itemHeights.readItemHeightsFromState(a),this.beforeResize.initializeFromState(a))}function yt(e){var t=this,n=e.getScrollableContainer,i=e.getEstimatedItemHeight,r=e.getEstimatedVisibleItemRowsCount,o=e.measureItemsBatchSize,s=e.initialScrollPosition,a=e.onScrollPositionChange,l=e.waitForScrollingToStop;this.itemsContainer=this.engine.createItemsContainer(this.getItemsContainerElement),this.getItemsContainerElement()&&this.itemsContainer.clear(),this.scrollableContainer=this.engine.createScrollableContainer(n,this.getItemsContainerElement),this.itemHeights=new Ne({container:this.itemsContainer,getItemHeight:function(e){return t.getState().itemHeights[e]},setItemHeight:function(e,n){return t.getState().itemHeights[e]=n}}),this.layout=new de({bypass:this.bypass,getInitialEstimatedItemHeight:i,getInitialEstimatedVisibleItemRowsCount:r,measureItemsBatchSize:o,getPrerenderMargin:function(){return t.getPrerenderMargin()},getVerticalSpacing:function(){return t.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return t.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return t.getColumnsCount()},getColumnsCountBeforeResize:function(){return t.getState().beforeResize&&t.getState().beforeResize.columnsCount},getItemHeight:function(e){return t.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return t.getState().beforeResize&&t.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return t.getState().beforeResize?t.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return t.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return t.scrollableContainer&&t.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return t.previouslyCalculatedLayout}}),this.scrollableContainerResizeHandler=new xe({bypass:this.bypass,getWidth:function(){return t.scrollableContainer.getWidth()},getHeight:function(){return t.scrollableContainer.getHeight()},listenForResize:function(e){return t.scrollableContainer.onResize(e)},onResizeStart:function(){ne("~ Scrollable container resize started ~"),t._isResizing=!0},onResizeStop:function(){ne("~ Scrollable container resize finished ~"),t._isResizing=void 0},onNoChange:function(){t.onUpdateShownItemIndexes({reason:Se})},onHeightChange:function(){return t.onUpdateShownItemIndexes({reason:be})},onWidthChange:function(e,n){ne("~ Scrollable container width changed from",e,"to",n,"~"),t.onContainerResize()}}),this.scroll=new Ae({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:l,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delayed;t.onUpdateShownItemIndexes({reason:n?ge:me})},initialScrollPosition:s,onScrollPositionChange:a,isImmediateLayoutScheduled:function(){return Boolean(t.layoutTimer)},hasNonRenderedItemsAtTheTop:function(){return t.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return t.getState().lastShownItemIndex<t.getItemsCount()-1},getLatestLayoutVisibleArea:function(){return t.latestLayoutVisibleArea},getListTopOffset:this.getListTopOffsetInsideScrollableContainer,getPrerenderMargin:function(){return t.getPrerenderMargin()}}),this.listHeightMeasurement=new Ve({itemsContainer:this.itemsContainer,getListTopOffset:this.getListTopOffsetInsideScrollableContainer}),this.engine.watchListTopOffset&&(this.listTopOffsetWatcher=this.engine.watchListTopOffset({getListTopOffset:this.getListTopOffsetInsideScrollableContainer,onListTopOffsetChange:function(e){return e.reason,t.onUpdateShownItemIndexes({reason:Oe})}})),this.beforeResize=new Le({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount})}function bt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function St(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?bt(Object(n),!0).forEach((function(t){Ot(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):bt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function wt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ct(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Ot(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Rt=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};wt(this,e),Ot(this,"stop",(function(){if(!i._isActive)throw new Error("[virtual-scroller] Can't stop a `VirtualScroller` that hasn't been started");i._isActive=!1,ne("~ Stop ~"),i.scrollableContainerResizeHandler.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.isStarted()&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),Ot(this,"updateLayout",(function(){i.hasToBeStarted(),i.onUpdateShownItemIndexes({reason:pe})})),Ot(this,"onRender",(function(){i._onRender(i.getState(),i.previousState)})),vt.call(this,t,n,r)}var t,n,o;return t=e,n=[{key:"start",value:function(){if(this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");var e=!1===this._isActive;e||(this.waitingForRender=!0,this._usesCustomStateStorage||this.useDefaultStateStorage(),this._render&&this._render(this.getState())),ne(e?"~ Start (restart) ~":"~ Start ~"),this._isActive=!0,this.listHeightMeasurement.reset(),this._isResizing=void 0,this._isSettingNewItems=void 0,this.tbody&&(this.getItemsContainerElement().classList.contains(i)&&Boolean(document.getElementById(r))||function(e){e.classList.add(i);var t=document.createElement("style");t.id=r,t.innerText="\n\t\ttbody.".concat(i,":before {\n\t\t\tcontent: '';\n\t\t\tdisplay: table-row;\n\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t}\n\t\ttbody.").concat(i,":after {\n\t\t\tcontent: '';\n\t\t\tdisplay: table-row;\n\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t}\n\t").replace(/[\n\t]/g,""),document.head.appendChild(t)}(this.getItemsContainerElement()));var t=this._afterRenderStateUpdateThatWasStopped;this._afterRenderStateUpdateThatWasStopped=void 0,this.verticalSpacing=void 0;var n=this.measureItemHeightsAndSpacing();if(n&&(t=St(St({},t),n)),this.scrollableContainerResizeHandler.start(),this.scroll.start(),void 0===this.getState().scrollableContainerWidth){var o=this.scrollableContainer.getWidth();t=St(St({},t),{},{scrollableContainerWidth:o})}else{var s=this.scrollableContainer.getWidth(),a=this.getState().scrollableContainerWidth;if(s!==a)return ne("~ Scrollable container width changed from",a,"to",s,"~"),this.onContainerResize()}if(this._usesCustomStateStorage&&this.getActualColumnsCount()!==(this.getState().columnsCount||1))return this.onContainerResize();this.onUpdateShownItemIndexes({reason:Ie,stateUpdate:t})}},{key:"hasToBeStarted",value:function(){if(!this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` hasn't been started")}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onItemHeightChange",value:function(e){ie("`.onItemHeightChange(i)` method was renamed to `.onItemHeightDidChange(i)`"),this.onItemHeightDidChange(e)}},{key:"onItemHeightDidChange",value:function(e){this._onItemHeightDidChange(e)}},{key:"setItemState",value:function(e,t){this._setItemState(e,t)}},{key:"onItemStateChange",value:function(e,t){this.setItemState(e,t)}},{key:"setItems",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.hasToBeStarted(),this._setItems(e,t)}}],n&&Ct(t.prototype,n),o&&Ct(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}(),xt=["onMount","onItemUnmount"];function Ht(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Tt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ht(Object(n),!0).forEach((function(t){Lt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ht(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Pt(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function jt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Et(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 Lt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var zt=function(){function t(n,i,r){var o=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};jt(this,t),Lt(this,"render",(function(t,n){var i=t.items,r=t.firstShownItemIndex,s=t.lastShownItemIndex,a=t.beforeItemsHeight,l=t.afterItemsHeight;o.tbody||(o.container.style.paddingTop=e(a),o.container.style.paddingBottom=e(l));var u=n&&i===n.items&&i.length>0;if(u)for(var h=n.lastShownItemIndex;h>=n.firstShownItemIndex;)h>=r&&h<=s||(ne("DOM: Remove element for item index",h),o.unmountItem(o.container.childNodes[h-n.firstShownItemIndex])),h--;else for(ne("DOM: Rerender the list from scratch");o.container.firstChild;)o.unmountItem(o.container.firstChild);for(var c=u,f=c&&o.container.firstChild,d=r;d<=s;){if(u&&d>=n.firstShownItemIndex&&d<=n.lastShownItemIndex)c&&(c=!1);else{var m=o.renderItem(i[d]);c?(ne("DOM: Prepend element for item index",d),o.container.insertBefore(m,f)):(ne("DOM: Append element for item index",d),o.container.appendChild(m))}d++}})),Lt(this,"onUnmount",(function(){ie("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),Lt(this,"destroy",(function(){ie("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),Lt(this,"stop",(function(){o.virtualScroller.stop()})),Lt(this,"start",(function(){o.virtualScroller.start()})),this.container=n,this.renderItem=r;var a=s.onMount,l=s.onItemUnmount,u=Pt(s,xt);this.onItemUnmount=l,this.tbody="TBODY"===this.container.tagName,this.virtualScroller=new Rt((function(){return o.container}),i,Tt(Tt({},u),{},{render:this.render,tbody:this.tbody})),this.start(),a&&a()}var n,i,r;return n=t,i=[{key:"unmountItem",value:function(e){this.container.removeChild(e),this.onItemUnmount&&this.onItemUnmount(e)}},{key:"onItemHeightChange",value:function(e){ie("`.onItemHeightChange(i)` method was renamed to `.onItemHeightDidChange(i)`"),this.onItemHeightDidChange(e)}},{key:"onItemHeightDidChange",value:function(e){this.virtualScroller.onItemHeightDidChange(e)}},{key:"setItemState",value:function(e,t){this.virtualScroller.setItemState(e,t)}},{key:"updateItems",value:function(e,t){ie("`.updateItems()` method was renamed to `.setItems(i)`"),this.setItems(e,t)}},{key:"setItems",value:function(e,t){this.virtualScroller.setItems(e,t)}}],i&&Et(n.prototype,i),r&&Et(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}();return zt}));
2
2
  //# sourceMappingURL=virtual-scroller-dom.js.map