virtual-scroller 1.11.2 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/README.md +13 -11
- package/bundle/virtual-scroller-dom.js +1 -1
- package/bundle/virtual-scroller-dom.js.map +1 -1
- package/bundle/virtual-scroller-react.js +1 -1
- package/bundle/virtual-scroller-react.js.map +1 -1
- package/bundle/virtual-scroller.js +1 -1
- package/bundle/virtual-scroller.js.map +1 -1
- package/commonjs/DOM/ItemsContainer.js +10 -3
- package/commonjs/DOM/ItemsContainer.js.map +1 -1
- package/commonjs/DOM/VirtualScroller.js +13 -1
- package/commonjs/DOM/VirtualScroller.js.map +1 -1
- package/commonjs/ItemHeights.js +5 -5
- package/commonjs/ItemHeights.js.map +1 -1
- package/commonjs/ItemNotRenderedError.js +64 -0
- package/commonjs/ItemNotRenderedError.js.map +1 -0
- package/commonjs/Layout.test.js +10 -0
- package/commonjs/Layout.test.js.map +1 -1
- package/commonjs/VirtualScroller.js +23 -5
- package/commonjs/VirtualScroller.js.map +1 -1
- package/commonjs/VirtualScroller.layout.js +81 -39
- package/commonjs/VirtualScroller.layout.js.map +1 -1
- package/commonjs/VirtualScroller.onRender.js +97 -45
- package/commonjs/VirtualScroller.onRender.js.map +1 -1
- package/commonjs/VirtualScroller.state.js +50 -18
- package/commonjs/VirtualScroller.state.js.map +1 -1
- package/commonjs/react/VirtualScroller.js +31 -46
- package/commonjs/react/VirtualScroller.js.map +1 -1
- package/commonjs/react/useItemKeys.js +11 -3
- package/commonjs/react/useItemKeys.js.map +1 -1
- package/commonjs/react/useOnChange.js +19 -0
- package/commonjs/react/useOnChange.js.map +1 -0
- package/commonjs/react/{useOnItemHeightChange.js → useOnItemHeightDidChange.js} +7 -7
- package/commonjs/react/useOnItemHeightDidChange.js.map +1 -0
- package/commonjs/react/{useHandleItemsPropertyChange.js → useSetNewItemsOnItemsPropertyChange.js} +15 -14
- package/commonjs/react/useSetNewItemsOnItemsPropertyChange.js.map +1 -0
- package/commonjs/react/useState.js +162 -69
- package/commonjs/react/useState.js.map +1 -1
- package/commonjs/react/useStyle.js +3 -5
- package/commonjs/react/useStyle.js.map +1 -1
- package/commonjs/react/useUpdateItemKeysOnItemsChange.js +61 -0
- package/commonjs/react/useUpdateItemKeysOnItemsChange.js.map +1 -0
- package/commonjs/test/ItemsContainer.js +22 -1
- package/commonjs/test/ItemsContainer.js.map +1 -1
- package/commonjs/utility/debug.js +30 -6
- package/commonjs/utility/debug.js.map +1 -1
- package/dom/index.d.ts +1 -1
- package/index.cjs +2 -0
- package/index.d.ts +7 -1
- package/index.js +1 -0
- package/modules/DOM/ItemsContainer.js +8 -3
- package/modules/DOM/ItemsContainer.js.map +1 -1
- package/modules/DOM/VirtualScroller.js +13 -1
- package/modules/DOM/VirtualScroller.js.map +1 -1
- package/modules/ItemHeights.js +5 -5
- package/modules/ItemHeights.js.map +1 -1
- package/modules/ItemNotRenderedError.js +57 -0
- package/modules/ItemNotRenderedError.js.map +1 -0
- package/modules/Layout.test.js +10 -0
- package/modules/Layout.test.js.map +1 -1
- package/modules/VirtualScroller.js +17 -5
- package/modules/VirtualScroller.js.map +1 -1
- package/modules/VirtualScroller.layout.js +78 -39
- package/modules/VirtualScroller.layout.js.map +1 -1
- package/modules/VirtualScroller.onRender.js +98 -46
- package/modules/VirtualScroller.onRender.js.map +1 -1
- package/modules/VirtualScroller.state.js +50 -18
- package/modules/VirtualScroller.state.js.map +1 -1
- package/modules/react/VirtualScroller.js +31 -46
- package/modules/react/VirtualScroller.js.map +1 -1
- package/modules/react/useItemKeys.js +8 -3
- package/modules/react/useItemKeys.js.map +1 -1
- package/modules/react/useOnChange.js +11 -0
- package/modules/react/useOnChange.js.map +1 -0
- package/modules/react/{useOnItemHeightChange.js → useOnItemHeightDidChange.js} +6 -6
- package/modules/react/useOnItemHeightDidChange.js.map +1 -0
- package/modules/react/{useHandleItemsPropertyChange.js → useSetNewItemsOnItemsPropertyChange.js} +11 -13
- package/modules/react/useSetNewItemsOnItemsPropertyChange.js.map +1 -0
- package/modules/react/useState.js +156 -73
- package/modules/react/useState.js.map +1 -1
- package/modules/react/useStyle.js +3 -5
- package/modules/react/useStyle.js.map +1 -1
- package/{commonjs/react/useHandleItemIndexesChange.js → modules/react/useUpdateItemKeysOnItemsChange.js} +18 -21
- package/modules/react/useUpdateItemKeysOnItemsChange.js.map +1 -0
- package/modules/test/ItemsContainer.js +20 -1
- package/modules/test/ItemsContainer.js.map +1 -1
- package/modules/utility/debug.js +31 -6
- package/modules/utility/debug.js.map +1 -1
- package/package.json +1 -1
- package/source/DOM/ItemsContainer.js +8 -3
- package/source/DOM/VirtualScroller.js +11 -1
- package/source/ItemHeights.js +5 -5
- package/source/ItemNotRenderedError.js +16 -0
- package/source/Layout.test.js +9 -0
- package/source/VirtualScroller.js +14 -3
- package/source/VirtualScroller.layout.js +77 -38
- package/source/VirtualScroller.onRender.js +95 -42
- package/source/VirtualScroller.state.js +57 -20
- package/source/react/VirtualScroller.js +28 -39
- package/source/react/useItemKeys.js +9 -2
- package/source/react/useOnChange.js +11 -0
- package/source/react/{useOnItemHeightChange.js → useOnItemHeightDidChange.js} +5 -5
- package/source/react/{useHandleItemsPropertyChange.js → useSetNewItemsOnItemsPropertyChange.js} +11 -11
- package/source/react/useState.js +159 -71
- package/source/react/useStyle.js +2 -2
- package/source/react/{useHandleItemIndexesChange.js → useUpdateItemKeysOnItemsChange.js} +17 -9
- package/source/test/ItemsContainer.js +22 -1
- package/source/utility/debug.js +18 -4
- package/commonjs/react/useHandleItemIndexesChange.js.map +0 -1
- package/commonjs/react/useHandleItemsPropertyChange.js.map +0 -1
- package/commonjs/react/useOnItemHeightChange.js.map +0 -1
- package/modules/react/useHandleItemIndexesChange.js +0 -45
- package/modules/react/useHandleItemIndexesChange.js.map +0 -1
- package/modules/react/useHandleItemsPropertyChange.js.map +0 -1
- package/modules/react/useOnItemHeightChange.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
<!-- `virtual-scroller`: in `.updateItems()` handle a case when `items.length` is the same, in which case find different items and if those items are rendered then maybe update them on screen and update their height, if the items are past rendered then maybe just discard all item heights past rendered, if the items are before rendered then maybe ignore and it will jump on scroll up which is kinda acceptable. -->
|
|
2
2
|
|
|
3
|
+
1.11.3 / 05.02.2023
|
|
4
|
+
==================
|
|
5
|
+
|
|
6
|
+
* Renamed `onItemHeightChange()` to `onItemHeightDidChange()`.
|
|
7
|
+
|
|
3
8
|
1.11.0 / 19.01.2023
|
|
4
9
|
==================
|
|
5
10
|
|
package/README.md
CHANGED
|
@@ -88,7 +88,7 @@ The following `state` properties are only used for saving and restoring `Virtual
|
|
|
88
88
|
|
|
89
89
|
* `itemStates: any[]` — The states of all items. Any change in an item's appearance while it's rendered must be reflected in changing that item's state by calling `.setItemState(i, itemState)` instance method (described below): this way, the item's state is preserved when it's shown next time after being hidden due to going off screen. For example, if an item is a social media comment, and there's a "Show more"/"Show less" button that shows the full text of the comment, then it must call `.setItemState(i, { showMore: true/false })` every time.
|
|
90
90
|
|
|
91
|
-
* `itemHeights: number[]` — The measured heights of all items. If an item's height hasn't been measured yet then it's `undefined`. By default, items are only measured once: when they're initially rendered. If an item's height changes afterwards, then `.
|
|
91
|
+
* `itemHeights: number[]` — The measured heights of all items. If an item's height hasn't been measured yet then it's `undefined`. By default, items are only measured once: when they're initially rendered. If an item's height changes afterwards, then `.onItemHeightDidChange(i)` instance method must be called right after it happens (described later in the document), otherwise `VirtualScroller`'s calculations will be off. For example, if an item is a social media comment, and there's a "Show more"/"Show less" button that shows the full text of the comment, then it must call `.onItemHeightDidChange(i)` every time the comment text has been expanded or collapsed. And every change in an item's height must conceptually be a result of changing some kind of "state", be it the item's state in `VirtualScroller` updated via `.setItemState()`, or some other "state" that got updated by the application.
|
|
92
92
|
|
|
93
93
|
* `verticalSpacing: number?` — Vertical item spacing. Is `undefined` until it has been measured. Is only measured once, when at least two rows of items have been rendered.
|
|
94
94
|
|
|
@@ -319,11 +319,13 @@ A developer might prefer to use custom (external) state management rather than t
|
|
|
319
319
|
|
|
320
320
|
* `getInitialState(): object` — Returns the initial `VirtualScroller` state for the cases when a developer configures `VirtualScroller` for custom (external) state management.
|
|
321
321
|
|
|
322
|
-
* `useState({ getState, updateState })` — Enables custom (external) state management.
|
|
322
|
+
* `useState({ getState, setState, updateState? })` — Enables custom (external) state management.
|
|
323
323
|
|
|
324
324
|
* `getState(): object` — Returns the externally managed `VirtualScroller` `state`.
|
|
325
325
|
|
|
326
|
-
* `
|
|
326
|
+
* `setState(newState: object)` — Sets the externally managed `VirtualScroller` `state`. Must call `.onRender()` right after the updated `state` gets "rendered". A higher-order `VirtualScroller` implementation could either "render" the list immediately in its `setState()` function, in which case it would be better to use the default state management instead and pass a custom `render()` function, or the `setState()` function could "schedule" an "asynchronous" "re-render", like the React implementation does, in which case such `setState()` function would be called an ["asynchronous"](https://reactjs.org/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous) one, meaning that state updates aren't "rendered" immediately and are instead queued and then "rendered" in a single compound state update for better performance.
|
|
327
|
+
|
|
328
|
+
* `updateState(stateUpdate: object)` — (optional) `setState()` parameter could be replaced with `updateState()` parameter. The only difference between the two is that `updateState()` gets called with just the portion of the state that is being updated while `setState()` gets called with the whole updated state object, so it's just a matter of preference.
|
|
327
329
|
|
|
328
330
|
For a usage example, see `./source/react/VirtualScroller.js`. The steps are:
|
|
329
331
|
|
|
@@ -343,19 +345,19 @@ When using custom (external) state management, contrary to the default (internal
|
|
|
343
345
|
|
|
344
346
|
#### "Advanced" (rarely used) instance methods
|
|
345
347
|
|
|
346
|
-
* `
|
|
348
|
+
* `onItemHeightDidChange(i: number)` — (advanced) If an item's height could've changed, this function should be called immediately after the item's height has potentially changed. The function re-measures the item's height (the item must still be rendered) and re-calculates `VirtualScroller` layout. An example for using this function would be having an "Expand"/"Collapse" button in a list item.
|
|
347
349
|
|
|
348
350
|
* There's also a convention that every change in an item's height must come as a result of changing its "state", be it the item's state that is stored internally in the `VirtualScroller` state (see `.setItemState()` function) or some other application-level state that is stored outside of the `VirtualScroller` state.
|
|
349
351
|
|
|
350
|
-
* Implementation-wise, calling `
|
|
352
|
+
* Implementation-wise, calling `onItemHeightDidChange()` manually could be replaced with detecting item height changes automatically via [Resize Observer](https://caniuse.com/#search=Resize%20Observer) in some future version.
|
|
351
353
|
|
|
352
354
|
* `setItemState(i: number, itemState: any?)` — (advanced) Replaces a list item's state inside `VirtualScroller` state. Use it to preserve an item's state because offscreen items get unmounted and any unsaved state is lost in the process. If an item's state is correctly preserved, it will be restored when an item gets mounted again due to becoming visible.
|
|
353
355
|
|
|
354
|
-
* Calling `setItemState()` doesn't trigger a re-layout of `VirtualScroller` because changing a list item's state doesn't necessarily mean a change of its height, so a re-layout might not be required. If an item's height did change as a result of changing its state, then `VirtualScroller` layout must be updated, and to do that, call `
|
|
356
|
+
* Calling `setItemState()` doesn't trigger a re-layout of `VirtualScroller` because changing a list item's state doesn't necessarily mean a change of its height, so a re-layout might not be required. If an item's height did change as a result of changing its state, then `VirtualScroller` layout must be updated, and to do that, call `onItemHeightDidChange(i)` right after calling `setItemState()` has taken effect.
|
|
355
357
|
|
|
356
358
|
* For example, consider a social network feed, where each post optionally has an attachment. Suppose there's a post in the feed having a YouTube video attachment. The attachment is initially shown as a small thumbnail that expands into a full-sized embedded YouTube video player when a user clicks on it. If the expanded/collapsed state of such attachment wasn't stored in `VirtualScroller` state then the following scenario would be possible: the user expands the video, then scrolls down so that the post with the video is no longer visible, the post gets unmounted due to going off screen, then the user scrolls back up so that the post with the video is visible again, the post gets mounted, but the video is not expanded and instead of it a small thumbnail is shown because there's no previous "state" to restore.
|
|
357
359
|
|
|
358
|
-
* In the example above, one should also call `
|
|
360
|
+
* In the example above, one should also call `onItemHeightDidChange(i)` right after the YouTube video has been expanded/collapsed. Otherwise, the scroll position would "jump" when the item goes off screen, because `VirtualScroller` would have based its calculations on the initially measured item height, not the "expanded" one, so it would subtract an incorrect value from the list's top margin, resulting in a "jump of content".
|
|
359
361
|
|
|
360
362
|
* `getItemScrollPosition(i: number): number?` — (advanced) Returns an item's scroll position inside the scrollable container. Returns `undefined` if any of the items before this item haven't been rendered yet.
|
|
361
363
|
|
|
@@ -446,7 +448,7 @@ const virtualScroller = new VirtualScroller(
|
|
|
446
448
|
|
|
447
449
|
* `setItems(items, options)` — A proxy for the corresponding `VirtualScroller` method.
|
|
448
450
|
|
|
449
|
-
* `
|
|
451
|
+
* `onItemHeightDidChange(i)` — A proxy for the corresponding `VirtualScroller` method.
|
|
450
452
|
|
|
451
453
|
* `setItemState(i, itemState)` — A proxy for the corresponding `VirtualScroller` method.
|
|
452
454
|
|
|
@@ -467,7 +469,7 @@ The required properties are:
|
|
|
467
469
|
* `item: any` — The item object itself (an element of the `items` array).
|
|
468
470
|
* `state: any?` — Item's state. See the description of `itemStates` property of `VirtualScroller` `state` for more details.
|
|
469
471
|
* `setState(newState: any?)` — Can be called to replace item's state. See the description of `setItemState(i, newState)` function of `VirtualScroller` for more details.
|
|
470
|
-
* `
|
|
472
|
+
* `onHeightDidChange(i)` — If an item's height could change after the initial render, this function should be called immediately after the item's height has potentially changed — in a `useLayoutEffect()`. See the description of `onItemHeightDidChange()` function of `VirtualScroller` for more details.
|
|
471
473
|
|
|
472
474
|
* For best performance, make sure that `itemComponent` is a `React.memo()` component or a `React.PureComponent`. Otherwise, list items will keep re-rendering themselves as the user scrolls because the containing `<VirtualScroller/>` component gets re-rendered on scroll.
|
|
473
475
|
|
|
@@ -550,7 +552,7 @@ To fix that, `itemComponent` receives the following state management properties:
|
|
|
550
552
|
|
|
551
553
|
* 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.
|
|
552
554
|
|
|
553
|
-
* This is simply a proxy for `virtualScroller.
|
|
555
|
+
* This is simply a proxy for `virtualScroller.onItemHeightDidChange(i)`.
|
|
554
556
|
|
|
555
557
|
```js
|
|
556
558
|
function ItemComponent({
|
|
@@ -1008,7 +1010,7 @@ One can use any npm CDN service, e.g. [unpkg.com](https://unpkg.com) or [jsdeliv
|
|
|
1008
1010
|
<!--
|
|
1009
1011
|
## Possible enhancements
|
|
1010
1012
|
|
|
1011
|
-
* Use [Resize Observer](https://caniuse.com/#search=Resize%20Observer) instead of calling `.
|
|
1013
|
+
* Use [Resize Observer](https://caniuse.com/#search=Resize%20Observer) instead of calling `.onItemHeightDidChange(i)` manually.
|
|
1012
1014
|
|
|
1013
1015
|
* 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.
|
|
1014
1016
|
-->
|
|
@@ -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,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var s=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getElement=t}var t,n,i;return t=e,(n=[{key:"_getNthRenderedItemElement",value:function(e){var t=this.getElement().childNodes;if(e>t.length-1)throw console.log("~ Items Container Contents ~"),console.log(this.getElement().innerHTML),new Error("Element with index ".concat(e," was not found in the list of Rendered Item Elements in the Items Container of Virtual Scroller. There're only ").concat(t.length," Elements there."));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)}}])&&o(t.prototype,n),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function a(e){return a="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},a(e)}function l(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function u(e,t){if(t&&("object"===a(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 h(e){var t="function"==typeof Map?new Map:void 0;return h=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 c(e,arguments,d(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),m(i,e)},h(e)}function c(e,t,n){return c=f()?Reflect.construct:function(e,t,n){var i=[null];i.push.apply(i,t);var r=new(Function.bind.apply(e,i));return n&&m(r,n.prototype),r},c.apply(null,arguments)}function f(){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 m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}var g=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&&m(e,t)}(a,e);var t,n,i,r,o,s=(t=a,n=f(),function(){var e,i=d(t);if(n){var r=d(this).constructor;e=Reflect.construct(i,arguments,r)}else e=i.apply(this,arguments);return u(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&&l(i.prototype,r),o&&l(i,o),Object.defineProperty(i,"prototype",{writable:!1}),i}(h(Error));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){return I=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},I(e,t)}function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=b(e);if(t){var r=b(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return y(this,n)}}function y(e,t){if(t&&("object"===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 b(e){return b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},b(e)}function S(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function w(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function C(e,t,n){return t&&w(e.prototype,t),n&&w(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var O=function(){function e(t,n){S(this,e),this.getElement=t,this.getItemsContainerElement=n}return C(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 g;return this.getElement().offsetWidth}},{key:"getHeight",value:function(){if(!this.getElement())throw new g;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=H(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),r()}}}]),e}(),x=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&&I(e,t)}(n,e);var t=v(n);function n(e){return S(this,n),t.call(this,(function(){return window}),e)}return C(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 H(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(O);function H(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 R="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var T=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){(function(){var t,n,i,r,o,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-o)/1e6},n=process.hrtime,r=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),o=r-s):Date.now?(e.exports=function(){return Date.now()-i},i=Date.now()):(e.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(R)})),P="undefined"==typeof window?R:window,j=["moz","webkit"],E="AnimationFrame",L=P["request"+E],B=P["cancel"+E]||P["cancelRequest"+E],z=0;!L&&z<j.length;z++)L=P[j[z]+"Request"+E],B=P[j[z]+"Cancel"+E]||P[j[z]+"CancelRequest"+E];if(!L||!B){var M=0,A=0,k=[];L=function(e){if(0===k.length){var t=T(),n=Math.max(0,16.666666666666668-(t-M));M=n+t,setTimeout((function(){var e=k.slice(0);k.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(M)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return k.push({handle:++A,callback:e,cancelled:!1}),A},B=function(e){for(var t=0;t<k.length;t++)k[t].handle===e&&(k[t].cancelled=!0)}}var _=function(e){return L.call(P,e)};_.cancel=function(){B.apply(P,arguments)},_.polyfill=function(e){e||(e=P),e.requestAnimationFrame=L,e.cancelAnimationFrame=B};var N=_.cancel;function V(e,t){var n=Date.now(),i=_((function r(){Date.now()-n>=t?e():i=_(r)}));return{clear:function(){return N(i)}}}function W(e){e&&e.clear()}function D(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var U=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this._isActive=!0,this.watchListTopOffset()}},{key:"isStarted",value:function(){return this._isActive}},{key:"stop",value:function(){this._isActive=!1,this.watchListTopOffsetTimer&&(W(this.watchListTopOffsetTimer),this.watchListTopOffsetTimer=void 0)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e._isActive&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffset()!==e.listTopOffsetInsideScrollableContainer&&e.onListTopOffsetChange(),Date.now()-t<3e3&&(e.watchListTopOffsetTimer=V(n,500)))}()}}])&&D(t.prototype,n),i&&D(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),F={createItemsContainer:function(e){return new s(e)},createScrollableContainer:function(e,t){return e?new O(e,t):"undefined"!=typeof window?new x(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new U({getListTopOffset:t,onListTopOffsetChange:n})}};function Y(e){return function(e){if(Array.isArray(e))return q(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 q(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 q(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 q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function G(){if(K()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,Y(["[virtual-scroller]"].concat(n)))}}function J(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(Q())return $.apply(this,n);(e=console).warn.apply(e,Y(["[virtual-scroller]"].concat(n)))}function $(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(G.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))}),0)):(i=console).error.apply(i,Y(["[virtual-scroller]"].concat(t)))}function K(){var e=X("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function Q(){return X("VirtualScrollerWarningsAreErrors")}function X(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function Z(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 ee(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Z(Object(n),!0).forEach((function(t){te(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Z(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function te(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ne(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ie=function(){function e(t){var n=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,m=t.getBeforeResizeItemsCount,d=t.getAverageItemHeight,g=t.getMaxVisibleAreaHeight,p=t.getPreviouslyCalculatedLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.getInitialEstimatedItemHeight=i,this.getInitialEstimatedVisibleItemRowsCount=r,this.measureItemsBatchSize=o,this.getPrerenderMargin=s,this.getVerticalSpacing=a,this.getVerticalSpacingBeforeResize=l,this.getColumnsCount=u,this.getColumnsCountBeforeResize=h,this.getItemHeight=c,this.getItemHeightBeforeResize=f,this.getBeforeResizeItemsCount=m,this.getAverageItemHeight=d,this.getMaxVisibleAreaHeight=g,this.getPreviouslyCalculatedLayout=p}var t,n,i;return t=e,n=[{key:"getInitialLayoutValueWithFallback",value:function(e,t,n){try{return t()}catch(t){if(t instanceof g)return G("Couldn't calculate",e,"before scrollable container is ready. Default to",n),n;throw t}}},{key:"getInitialLayoutValues",value:function(e){var t,n,i=this,r=e.itemsCount,o=e.columnsCount,s=e.beforeStart;if(r>0){var a=function(){return i.getInitialLastShownItemIndex({itemsCount:r,columnsCount:o,firstShownItemIndex:t})};t=0,n=s?this.getInitialLayoutValueWithFallback("lastShownItemIndex",a,0):a()}return{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var r=1;if(this.getMaxVisibleAreaHeight())r=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin());else if(this.getInitialEstimatedVisibleItemRowsCount&&(r=this.getInitialEstimatedVisibleItemRowsCount(),isNaN(r)))throw new Error("[virtual-scroller] `getEstimatedVisibleItemRowsCount()` must return a number");return Math.min(i+(r*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){var e=this.getAverageItemHeight();if(e)return e;if(this.getInitialEstimatedItemHeight){var t=this.getInitialEstimatedItemHeight();if(isNaN(t))throw new Error("[virtual-scroller] `getInitialEstimatedItemHeight()` must return a number");return t}return 0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,r=e.lastShownItemIndex,o=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,u=n.itemsCount,h=n.columnsCount,c=n.shouldRestoreScrollPosition,f=n.onResetGridLayout,m=this.getAverageItemHeight(),d=this.getVerticalSpacing();if(l>0&&(s+=Math.ceil(l/h)*(d+m)),a>0&&(i+=a,r+=a,o+=Math.ceil(a/h)*(m+d),c&&(i=0,o=0),a%h>0)){f(),J("~ Prepended items count",a,"is not divisible by Columns Count",h,"~"),J("Layout reset required");var g=r-i+1;if(i=0,o=0,!c&&a>g){var p=u-((r=this.getInitialLastShownItemIndex({itemsCount:u,columnsCount:h,firstShownItemIndex:i}))+1);s=Math.ceil(p/h)*(d+m)}}return{beforeItemsHeight:o,afterItemsHeight:s,firstShownItemIndex:i,lastShownItemIndex:r}}},{key:"getItemNotMeasuredIndexes",value:function(e,t){var n=t.itemsCount,i=t.firstShownItemIndex,r=t.nonMeasuredAreaHeight,o=t.indexOfTheFirstItemInTheRow;G("Item index",e,"height is required for calculations but hasn't been measured yet. Mark the item as \"shown\", rerender the list, measure the item's height and redo the layout.");var s=this.getColumnsCount(),a=Math.min(this.getEstimatedRowsCountForHeight(r)*s,this.measureItemsBatchSize||1/0);return void 0===i&&(i=o),{firstNonMeasuredItemIndex:e,firstShownItemIndex:i,lastShownItemIndex:Math.min(o+a-1,n-1)}}},{key:"getShownItemIndexes",value:function(e){var t=e.itemsCount,n=e.visibleAreaTop,i=e.visibleAreaBottom,r=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaTop:n,visibleAreaBottom:i,findFirstShownItemIndex:!0});if(null===r)return this.getNonVisibleListShownItemIndexes();if(void 0!==r.firstNonMeasuredItemIndex)return r;var o=r,s=o.firstShownItemIndex,a=o.beforeItemsHeight;return null===(r=this._getShownItemIndex({itemsCount:t,fromIndex:s,beforeItemsHeight:a,visibleAreaTop:n,visibleAreaBottom:i,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==r.firstNonMeasuredItemIndex?r:{firstShownItemIndex:s,lastShownItemIndex:r.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaTop,r=e.visibleAreaBottom,o=e.findFirstShownItemIndex,s=e.findLastShownItemIndex,a=e.fromIndex,l=e.beforeItemsHeight;if(0===a&&(l=0),void 0===l)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+a);if(!t){var u=this.getBeforeResizeItemsCount();if(u>a){var h=this._getShownItemIndex(ee(ee({},e),{},{beforeResize:!0,itemsCount:u})),c=h.notFound,f=h.beforeItemsHeight,m=h.firstShownItemIndex,d=h.lastShownItemIndex;if(!c){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,lastShownItemIndex:void 0===d?void 0:Math.floor(d/g)*g,beforeItemsHeight:f}}l=f,a+=u}}for(var p=t?this.getColumnsCountBeforeResize():this.getColumnsCount(),I=t?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing(),v=a;v<n;){for(var y=v,b=n>y+p?I:0,S=0,w=0;w<p&&v<n;){var C=t?this.getItemHeightBeforeResize(v):this.getItemHeight(v);if(void 0===C)return this.getItemNotMeasuredIndexes(v,{itemsCount:n,firstShownItemIndex:s?a:void 0,indexOfTheFirstItemInTheRow:y,nonMeasuredAreaHeight:r+this.getPrerenderMargin()-l});S=Math.max(S,C),w++,v++}var O=l+S,x=O>i-this.getPrerenderMargin(),H=O+b>=r+this.getPrerenderMargin();if(o){if(x)return{firstShownItemIndex:y,beforeItemsHeight:l}}else if(s&&H)return{lastShownItemIndex:Math.min(y+p-1,n-1)};l+=S+b}return t?{notFound:!0,beforeItemsHeight:l}:o?(J("The list is supposed to be visible but no visible item has been found"),null):s?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,r=0;if(!n){var o=this.getBeforeResizeItemsCount();o>0&&(i=this.getBeforeItemsHeight(Math.min(e,o),{beforeResize:!0}),r=o)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();r<e;){for(var l=0,u=0;u<s;){var h=n?this.getItemHeightBeforeResize(r):this.getItemHeight(r);void 0===h&&(h=this.getAverageItemHeight()),l=Math.max(l,h),r++,u++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,r=e+1;r<t;){for(var o=0,s=0;s<n&&r<t;){var a=this.getItemHeight(r);void 0===a&&(a=this.getAverageItemHeight()),o=Math.max(o,a),r++,s++}i+=this.getVerticalSpacing(),i+=o}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),r=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,o=0;o<r;)t+=this.getItemHeightBeforeResize(o*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),o++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,u=0;u<this.getColumnsCount();){var h=this.getItemHeight(n+a*this.getColumnsCount()+u);if(void 0===h)return;l=Math.max(l,h),u++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&ne(t.prototype,n),i&&ne(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),re="scroll",oe="stopped scrolling",se="manual",ae="started",le="non-measured item heights have been measured",ue="viewport width changed",he="viewport height changed",ce="viewport size unchanged",fe="item height changed",me="items changed",de="list top offset changed";function ge(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var pe=function(){function e(t){var n,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,m=t.onWidthChange,d=t.onNoChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r=function(){if(o.isActive){var e=o.width,t=o.height;o.width=o.getWidth(),o.height=o.getHeight(),o.width===e?o.height===t?o.onNoChange():o.onHeightChange(t,o.height):o.onWidthChange(e,o.width)}},(i="_onResize")in(n=this)?Object.defineProperty(n,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[i]=r,this.bypass=s,this.onHeightChange=f,this.onWidthChange=m,this.onNoChange=d,this.getWidth=a,this.getHeight=l,this.listenForResize=u,this.onResize=function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.onStart,o=i.onStop;return function(){for(var i=this,s=arguments.length,a=new Array(s),l=0;l<s;l++)a[l]=arguments[l];return new Promise((function(s){n?W(n):r&&r(),n=V((function(){n=void 0,o&&o(),e.apply(i,a),s()}),t)}))}}(this._onResize,Ie,{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)}}])&&ge(t.prototype,n),i&&ge(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),Ie=250;function ve(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ye(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ve(Object(n),!0).forEach((function(t){be(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ve(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function be(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Se(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var we=function(){function e(t){var n=t.getState,i=t.getVerticalSpacing,r=t.getColumnsCount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getState=n,this.getVerticalSpacing=i,this.getColumnsCount=r}var t,n,i;return t=e,n=[{key:"initializeFromState",value:function(e){this._includesBeforeResizeInState=Boolean(e.beforeResize)}},{key:"cleanUpBeforeResizeItemHeights",value:function(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex,i=e.itemHeights,r=e.beforeResize;if(r&&t<r.itemHeights.length){G('~ Clean up "before resize" item heights and correct scroll position ~');for(var o=0,s=Math.floor(r.itemHeights.length/this.getColumnsCount()),a=Math.min(s*this.getColumnsCount()-1,n),l=t;l<=a;){for(var u=0,h=0;h<this.getColumnsCount()&&l<=a;){var c=i[l];void 0===c&&(c=this.getAverageItemHeight()),u=Math.max(u,c),l++,h++}o+=u,o+=this.getVerticalSpacing()}for(var f=0,m=Math.min(r.itemHeights.length,n+1),d=Math.ceil(m/r.columnsCount),g=0===t?0:Math.floor((t-1)/r.columnsCount)+1;g<d;)f+=r.itemHeights[g*r.columnsCount],f+=r.verticalSpacing,g++;if(0===t)G('Drop all "before resize" item heights');else{var p=t,I=r.itemHeights.length-1;p===I?G("For item index",p,'— drop "before resize" height',r.itemHeights[p]):G("For item indexes from",p,"to",I,'— drop "before resize" heights',r.itemHeights.slice(p))}return r.itemHeights.splice(t,r.itemHeights.length-t),{scrollBy:o-f,beforeResize:0===t?void 0:ye({},r)}}}},{key:"snapshotBeforeResizeItemHeights",value:function(e){var t=e.firstShownItemIndex,n=e.newFirstShownItemIndex;e.newColumnsCount;var i=this.getColumnsCount(),r=this.getVerticalSpacing();this._includesBeforeResizeInState=!0;var o=this.getState(),s=o.beforeResize,a=o.itemHeights,l=s?s.itemHeights.length:0;if(l>0){if(s.columnsCount!==i||s.verticalSpacing!==r){for(var u=0,h=Math.ceil(l/s.columnsCount),c=0;c<h;)u+=s.itemHeights[c*s.columnsCount],u+=s.verticalSpacing,c++;for(var f=0,m=t;m<n;){for(var d=0,g=0;g<i&&m<n;)d=Math.max(d,a[m]),g++,m++;f+=d,f+=r}var p=u+f,I=Math.ceil(n/i);return new Array(n).fill(Math.max(0,p/I-r))}return s.itemHeights.concat(Ce(a,n,i).slice(s.itemHeights.length))}return Ce(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&Se(t.prototype,n),i&&Se(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Ce(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 Oe(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var He=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,m=t.getListTopOffset,d=t.getPrerenderMargin,g=t.onScrolledToTop,p=t.waitForScrollingToStop;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),xe(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),xe(this,"onScrollListener",(function(){if(n.onScrollPositionChange&&n.onScrollPositionChange(n.getScrollY()),n.onScrolledToTop&&n.getScrollY()<n.getListTopOffset()&&n.onScrolledToTop(),!n.bypass&&!n.ignoreScrollEvents){n.cancelOnStopScrollingTimer();var e=n.getLatestLayoutVisibleArea()&&(n.getScrollY()<n.getLatestLayoutVisibleArea().top-n.getPrerenderMargin()&&n.hasNonRenderedItemsAtTheTop()||n.getScrollY()+n.scrollableContainer.getHeight()>n.getLatestLayoutVisibleArea().bottom+n.getPrerenderMargin()&&n.hasNonRenderedItemsAtTheBottom());if(G(e?"The user has scrolled far enough: perform a re-layout":"The user is scrolling: perform a re-layout when they stop scrolling"),e||!1===n.waitForScrollingToStop)return n.onScroll();n.isImmediateLayoutScheduled()||(n.shouldCallOnScrollListenerWhenStopsScrolling=!0,n.watchOnStopScrolling())}})),this.bypass=i,this.scrollableContainer=r,this.itemsContainer=o,this.onScroll=s,this.initialScrollPosition=a,this.onScrollPositionChange=l,this.isImmediateLayoutScheduled=u,this.hasNonRenderedItemsAtTheTop=h,this.hasNonRenderedItemsAtTheBottom=c,this.getLatestLayoutVisibleArea=f,this.getListTopOffset=m,this.getPrerenderMargin=d,this.onScrolledToTop=g,this.waitForScrollingToStop=p}var t,n,i;return t=e,(n=[{key:"start",value:function(){void 0!==this.initialScrollPosition&&(this.scrollToY(this.initialScrollPosition),this.initialScrollPosition=void 0),this.onScrollPositionChange&&this.onScrollPositionChange(this.getScrollY()),this.stopListeningToScroll=this.scrollableContainer.onScroll(this.onScrollListener)}},{key:"stop",value:function(){this.stopListeningToScroll(),this.stopListeningToScroll=void 0,this.shouldCallOnScrollListenerWhenStopsScrolling=void 0,this.cancelOnStopScrollingTimer()}},{key:"scrollToY",value:function(e){this.ignoreScrollEvents=!0,this.scrollableContainer.scrollToY(e),this.ignoreScrollEvents=void 0}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnStopScrollingTimer",value:function(){this.onStopScrollingTimer&&(W(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=V((function(){e.onStopScrollingTimer=void 0,e.shouldCallOnScrollListenerWhenStopsScrolling&&(e.shouldCallOnScrollListenerWhenStopsScrolling=void 0,e.onScroll({delayed:!0}))}),Re)}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&Oe(t.prototype,n),i&&Oe(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),Re=100;function Te(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var Pe=function(){function e(t){var n=t.itemsContainer,i=t.getListTopOffset;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.itemsContainer=n,this.getListTopOffset=i}var t,n,i;return t=e,(n=[{key:"snapshotListHeightBeforeAddingNewItems",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;0!==t.length&&0!==i&&(this._snapshot={previousItems:t,newItems:n,itemIndex:i,itemTopOffset:this.itemsContainer.getNthRenderedItemTopOffset(0),listTopOffset:this.getListTopOffset()})}},{key:"getAnchorItemIndex",value:function(){return this._snapshot.itemIndex}},{key:"hasSnapshot",value:function(){return void 0!==this._snapshot}},{key:"getListBottomOffsetChange",value:function(){var e=this._snapshot,t=e.itemIndex,n=e.itemTopOffset,i=e.listTopOffset;return this.itemsContainer.getNthRenderedItemTopOffset(t)-n+(this.getListTopOffset()-i)}},{key:"reset",value:function(){this._snapshot=void 0}}])&&Te(t.prototype,n),i&&Te(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function je(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 Ee=function(){function e(t){var n=t.container;t.itemHeights;var i=t.getItemHeight,r=t.setItemHeight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=n,this._get=i,this._set=r,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"readItemHeightsFromState",value:function(e){for(var t=e.itemHeights,n=0;n<t.length;){if(void 0===t[n]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=n-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=n),this.measuredItemsHeight+=t[n];n++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(G("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(G("Non-measured items gap detected. Reset first and last measured item indexes."),this.reset());for(var n=[],i=this.firstMeasuredItemIndex,r=this.lastMeasuredItemIndex,o=!1,s=e;s<=t;){if(void 0===this._get(s)){n.push(s);var a=this._measureItemHeight(s,e);G("Item index",s,"height",a),this._set(s,a),(void 0===i||s<i)&&(this.measuredItemsHeight+=a,o||(this.firstMeasuredItemIndex=s,o=!0)),(void 0===r||s>r)&&(void 0!==r&&(this.measuredItemsHeight+=a),this.lastMeasuredItemIndex=s)}else{var l=this._get(s),u=this._measureItemHeight(s,e);l!==u&&(J("Item index",s,"height changed unexpectedly: it was",l,"before, but now it is",u,'. An item\'s height is allowed to change only in two cases: when the item\'s "state" changes and the developer calls `setItemState(i, newState)`, or when the item\'s height changes for any reason and the developer calls `onItemHeightChange(i)`. Perhaps you forgot to persist the item\'s "state" by calling `setItemState(i, newState)` when it changed, and that "state" got lost when the item element was unmounted, which resulted in a different height when the item was shown again having its "state" reset.'),this._set(s,u))}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&je(t.prototype,n),i&&je(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Le(e,t){for(var n=0;n<e.length;)e[n]=t(n),n++;return e}function Be(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ze(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Be(Object(n),!0).forEach((function(t){Me(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Be(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ae(e){var t=ze({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=ze({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function ke(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ke(Object(n),!0).forEach((function(t){Ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ve(e){var t=this,n=e.state,i=e.getInitialItemState,r=e.onStateChange,o=e.render,s=e.items;function a(){return this.state}function l(e){this.state=e}function u(e){this.state=_e(_e({},this.state),e),o(this.state,this.previousState),this.onRender()}function h(e){var t=e.getInitialItemState,n=s,i=_e(_e({},f.call(this,n,{beforeStart:!0})),{},{items:n,itemStates:Le(new Array(n.length),(function(e){return t(n[e])}))});return K()&&G("Initial state (autogenerated)",Ae(i)),G("First shown item index",i.firstShownItemIndex),G("Last shown item index",i.lastShownItemIndex),i}function c(e){return K()&&G("Restore state",Ae(e)),function(e,t){var n=t.columnsCount,i=e.columnsCount||1;if(i!==n)return J("~ Columns Count changed from",i,"to",n,"~"),!0;if(Math.floor(e.firstShownItemIndex/n)*n!==e.firstShownItemIndex)return J("~ First Shown Item Index",e.firstShownItemIndex,"is not divisible by Columns Count",n,"~"),!0}(e=_e(_e({},e=function(e){return e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e}(e)),{},{verticalSpacing:void 0}),{columnsCount:this.getActualColumnsCount()})&&(J("Reset Layout"),e=_e(_e({},e),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){K()&&(G("~ Item state changed ~"),G("Item index",e),G("Previous state\n"+JSON.stringify(t.getState().itemStates[e],null,2)),G("New state\n"+JSON.stringify(n,null,2))),t.getState().itemStates[e]=n,t.newItemsWillBeRendered&&(t.itemStatesThatChangedWhileNewItemsWereBeingRendered||(t.itemStatesThatChangedWhileNewItemsWereBeingRendered={}),t.itemStatesThatChangedWhileNewItemsWereBeingRendered[String(e)]=n)},this.getState=function(){return t._getState()},this.updateState=function(e){K()&&(G("~ Set state ~"),G(Ae(e))),e.items&&(t._isSettingNewItems||$("A `stateUpdate` can only contain `items` property as a result of calling `.setItems()`")),t._isSettingNewItems=void 0,t.previousState=t.getState(),t._updateState(e)},this.getInitialState=function(){return n?c.call(t,n):h.call(t,{getInitialItemState:i})},this.useState=function(e){var n=e.getState,i=e.updateState;if(t._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");if(t._getState)throw new Error("[virtual-scroller] Custom state storage has already been configured");if(o)throw new Error("[virtual-scroller] Creating a `VirtualScroller` class instance with a `render()` parameter means using the default (internal) state storage");if(!n||!i)throw new Error("[virtual-scroller] When using a custom state storage, one must supply both `getState()` and `updateState()` functions");t._usesCustomStateStorage=!0,t._getState=n,t._updateState=i},this.useDefaultStateStorage=function(){if(!o)throw new Error("[virtual-scroller] When using the default (internal) state management, one must supply a `render(state, prevState)` function parameter");t._getState=a.bind(t),t._updateState=u.bind(t),l.bind(t)(t.getInitialState())}}function We(){var e=this;function t(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;G("~ Measure item vertical spacing ~");var i=function(e){var t=e.itemsContainer,n=e.renderedItemsCount;if(n>1)for(var i=t.getNthRenderedItemTopOffset(0),r=t.getNthRenderedItemHeight(0),o=1;o<n;){var s=t.getNthRenderedItemTopOffset(o),a=t.getNthRenderedItemHeight(o);if(s!==i)return s-(i+r);r=Math.max(r,a),o++}}({itemsContainer:this.itemsContainer,renderedItemsCount:n-t+1});if(void 0!==i)return G("Item vertical spacing",i),i;G("Not enough items rendered to measure vertical spacing")}this.getVerticalSpacing=function(){return e.verticalSpacing||0},this.getVerticalSpacingBeforeResize=function(){var t=e.getState().beforeResize;return t&&t.verticalSpacing||0},this.measureVerticalSpacingIfNotMeasured=function(){if(void 0===e.verticalSpacing)return e.verticalSpacing=t.call(e),e.verticalSpacing}}function De(e){var t=this,n=e.getColumnsCount;if(n){var i={getWidth:function(){return t.scrollableContainer.getWidth()}};this.getActualColumnsCountForState=function(){var e=n(i);if(1!==e)return e}}else this.getActualColumnsCountForState=function(){};this.getActualColumnsCount=function(){return t.getActualColumnsCountForState()||1},this.getColumnsCount=function(){return t.getState()&&t.getState().columnsCount||1}}function 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 Fe(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){Ye(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 Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qe(){var e=this;function t(e){var n=e.stateUpdate,o=Date.now(),s=i.call(this),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.shownItemsHeight,h=s.firstNonMeasuredItemIndex;if(this.listHeightMeasurement.hasSnapshot()&&(l<this.listHeightMeasurement.getAnchorItemIndex()&&(l=this.listHeightMeasurement.getAnchorItemIndex()),h=void 0),!r.call(this,a,l))return G("~ Because some of the will-be-hidden item heights (listed above) have changed since they've last been measured, redo layout. ~"),t.call(this,{stateUpdate:n});var c=this.layout.getBeforeItemsHeight(a),f=this.layout.getAfterItemsHeight(l,this.getItemsCount()),m=Date.now()-o;G("~ Calculated Layout"+(this.bypass?" (bypass)":"")+" ~"),m<Ge||J("Layout calculated in",m,"ms"),this.getColumnsCount()&&G("Columns count",this.getColumnsCount()),G("First shown item index",a),G("Last shown item index",l),G("Before items height",c),G("After items height (actual or estimated)",f),G("Average item height (used for estimated after items height calculation)",this.itemHeights.getAverage()),K()&&(G("Item heights",this.getState().itemHeights.slice()),G("Item states",this.getState().itemStates.slice())),this.onBeforeShowItems(this.getState().items,this.getState().itemHeights,a,l),this.firstNonMeasuredItemIndex=h,this.previouslyCalculatedLayout=void 0===u?void 0:{firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:c,shownItemsHeight:u},this.updateState(Fe({firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:c,afterItemsHeight:f},n))}function n(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}function i(){var e=this.getItemsCount(),t=n.call(this),i=t.top,r=t.bottom;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:i<this.itemsContainer.getHeight()&&r>0?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaTop:i,visibleAreaBottom:r}):(G("The entire list is off-screen. No items are visible."),this.layout.getNonVisibleListShownItemIndexes())}function r(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var r=this.getState().itemHeights[i],a=o.call(this,i);a!==r&&(n&&(G("~ Validate will-be-hidden item heights. ~"),s.call(this,i,r,a)),n=!1,J("Item index",i,"is no longer visible and will be unmounted. Its height has changed from",r,"to",a,"since it was last measured. This is not necessarily a bug, and could happen, for example, on screen width change, or when there're several `onItemHeightChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}function o(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}function s(e,t,n){if(this.previouslyCalculatedLayout){var i=n-t;e<this.previouslyCalculatedLayout.firstShownItemIndex?this.previouslyCalculatedLayout.beforeItemsHeight+=i:e>this.previouslyCalculatedLayout.lastShownItemIndex?void 0!==this.previouslyCalculatedLayout.afterItemsHeight&&(this.previouslyCalculatedLayout.afterItemsHeight+=i):this.previouslyCalculatedLayout.shownItemsHeight+=n-t}}this.onUpdateShownItemIndexes=function(n){var i=n.reason,r=n.stateUpdate,o=function(){r&&e.updateState(r)};return e.newItemsWillBeRendered||e.widthHasChanged||e._isResizing||0===e.getItemsCount()?o():(e.scroll.cancelScheduledLayout(),r=e.cancelLayoutTimer({stateUpdate:r}),G("~ Update Layout (on ".concat(i,") ~")),void t.call(e,{stateUpdate:r}))},this.getListTopOffsetInsideScrollableContainer=function(){var t=e.scrollableContainer.getItemsContainerTopOffset();return e.listTopOffsetWatcher&&e.listTopOffsetWatcher.onListTopOffset(t),t},this._onItemHeightChange=function(t){G("~ Re-measure item height ~"),G("Item index",t);var n=e.getState(),i=n.itemHeights,r=n.firstShownItemIndex,a=n.lastShownItemIndex;if(!(t>=r&&t<=a))return J("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when when a developer calls `onItemHeightChange(i)` while looping through a batch of items.");var l=i[t];if(void 0===l)return $('"onItemHeightChange()" has been called for item '.concat(t,", but that item hasn't been rendered before."));var u=o.call(e,t);G("Previous height",l),G("New height",u),l!==u&&(G("~ Item height has changed ~"),s.call(e,t,l,u),e.onUpdateShownItemIndexes({reason:fe}),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?(W(e.layoutTimer),e.layoutTimer=void 0,n||e.layoutTimerStateUpdate?(n=Fe(Fe({},e.layoutTimerStateUpdate),n),e.layoutTimerStateUpdate=void 0,n):void 0):n},this.scheduleLayoutTimer=function(t){var n=t.reason,i=t.stateUpdate;e.layoutTimerStateUpdate=i,e.layoutTimer=V((function(){e.layoutTimerStateUpdate=void 0,e.layoutTimer=void 0,e.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}}var Ge=15;function Je(e){return Je="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},Je(e)}var $e=Object.prototype.hasOwnProperty;function Ke(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function Qe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Xe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Qe(Object(n),!0).forEach((function(t){Ze(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Qe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ze(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function et(){var 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+parseInt(l)]=this.itemHeightsThatChangedWhileNewItemsWereBeingRendered[l]}if(this.itemStatesThatChangedWhileNewItemsWereBeingRendered)for(var u=0,h=Object.keys(this.itemStatesThatChangedWhileNewItemsWereBeingRendered);u<h.length;u++){var c=h[u];o[n+parseInt(c)]=this.itemStatesThatChangedWhileNewItemsWereBeingRendered[c]}if(0===n)return this.previouslyCalculatedLayout&&(this.previouslyCalculatedLayout.firstShownItemIndex===t.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex||(J('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after appending items'),J("Previously calculated layout",this.previouslyCalculatedLayout),J("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightMeasurement.hasSnapshot()){if(0===t.firstShownItemIndex){G("~ Restore Scroll Position ~");var f=this.listHeightMeasurement.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightMeasurement.reset(),f?(G("Scroll down by",f),this.scroll.scrollByY(f)):G("Scroll position hasn't changed"),this.previouslyCalculatedLayout&&(0===this.previouslyCalculatedLayout.firstShownItemIndex&&this.previouslyCalculatedLayout.lastShownItemIndex===t.lastShownItemIndex-n?this.previouslyCalculatedLayout={beforeItemsHeight:0,shownItemsHeight:this.previouslyCalculatedLayout.shownItemsHeight+f,firstShownItemIndex:0,lastShownItemIndex:t.lastShownItemIndex}:(J('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after prepending items'),J("Previously calculated layout",this.previouslyCalculatedLayout),J("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}J('Unexpected "firstShownItemIndex" '.concat(t.firstShownItemIndex,' encountered in "onRender()" after prepending items. Expected 0.'))}}this.previouslyCalculatedLayout=void 0}function 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;return this.firstNonMeasuredItemIndex=void 0,this.newItemsWillBeRendered=void 0,this.itemHeightsThatChangedWhileNewItemsWereBeingRendered=void 0,this.itemStatesThatChangedWhileNewItemsWereBeingRendered=void 0,{nonMeasuredItemsHaveBeenRendered:t,widthHasChanged:e}}this._onRender=function(o,s){var a,l,u;if(G("~ Rendered ~"),K()&&G("State",Ae(o)),t.onStateChange&&(function(e,t){if(Ke(e,t))return!0;if("object"!==Je(e)||null===e||"object"!==Je(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(!$e.call(t,n[r])||!Ke(e[n[r]],t[n[r]]))return!1;return!0}(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))),s){var h,c=r.call(t),f=c.nonMeasuredItemsHaveBeenRendered,m=c.widthHasChanged;f&&(h=le),m&&(h=ue,t.itemHeights.reset(),t.verticalSpacing=void 0);var d,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=me)}if(o.firstShownItemIndex!==s.firstShownItemIndex||o.lastShownItemIndex!==s.lastShownItemIndex||o.items!==s.items||m){var y=t.measureItemHeightsAndSpacing();y&&(d=Xe(Xe({},d),y))}var b=t.beforeResize.cleanUpBeforeResizeItemHeights();if(void 0!==b){var S=b.scrollBy,w=b.beforeResize;G("Correct scroll position by",S),t.scroll.scrollByY(S),d=Xe(Xe({},d),{},{beforeResize:w})}t._isActive?h?i.call(t,{stateUpdate:d,reason:h}):d?t.updateState(d):G("~ Finished Layout ~"):t._stoppedStateUpdate=d}}}function tt(){var e=this;this.onResize=function(){e.previouslyCalculatedLayout=void 0,e.listHeightMeasurement.reset();var t=e.newItemsWillBeRendered?e.newItemsWillBeRendered.count:e.getState().itemHeights.length,n=e.newItemsWillBeRendered?e.newItemsWillBeRendered.layout:e.getState(),i={scrollableContainerWidth:e.scrollableContainer.getWidth(),firstShownItemIndex:n.firstShownItemIndex,lastShownItemIndex:n.lastShownItemIndex,beforeItemsHeight:n.beforeItemsHeight,afterItemsHeight:n.afterItemsHeight,itemHeights:new Array(t),columnsCount:e.getActualColumnsCountForState(),verticalSpacing:void 0},r=n.firstShownItemIndex,o=n.lastShownItemIndex,s=e.getActualColumnsCount(),a=Math.floor(r/s)*s,l=Math.min(Math.ceil((o+1)/s)*s,t)-1;a!==r&&(G("Columns Count changed from",e.getState().columnsCount||1,"to",s),G("First Shown Item Index needs to change from",r,"to",a)),i.firstShownItemIndex=a,i.lastShownItemIndex=l;var u=e.getVerticalSpacing(),h=e.getColumnsCount();e.shouldDiscardBeforeResizeItemHeights()||0===a?e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(i.beforeResize=void 0):i.beforeResize={verticalSpacing:u,columnsCount:h,itemHeights:e.beforeResize.snapshotBeforeResizeItemHeights({firstShownItemIndex:r,newFirstShownItemIndex:a,newColumnsCount:s})},e.widthHasChanged={stateUpdate:i},e.updateState(i)},this.shouldDiscardBeforeResizeItemHeights=function(){if(e.newItemsWillBeRendered){var t=e.newItemsWillBeRendered,n=t.prepend,i=t.replace;return n||i}}}function nt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function it(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?nt(Object(n),!0).forEach((function(t){rt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):nt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function rt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ot(){var e=this;this.getItemsCount=function(){return e.getState().items.length},this._setItems=function(t){var n,i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=e.getState(),s=o.items,a=e.getState(),l=a.itemStates,u=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),h=u.itemHeights;G("~ Update items ~");var c=e.getItemsDiff(s,t);if(c){var f,m=e.widthHasChanged?e.widthHasChanged.stateUpdate:e.getState(),d=m.firstShownItemIndex,g=m.lastShownItemIndex,p=m.beforeItemsHeight,I=m.afterItemsHeight,v=0===d&&(r.preserveScrollPositionOnPrependItems||r.preserveScrollPosition),y=c.prependedItemsCount,b=c.appendedItemsCount;n=e.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:d,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&&(G("Prepend",y,"items"),h=new Array(y).concat(h),l=Le(new Array(y),(function(n){return e.getInitialItemState(t[n])})).concat(l),v?(G("Will restore scroll position"),e.listHeightMeasurement.snapshotListHeightBeforeAddingNewItems({previousItems:s,newItems:t,prependedItemsCount:y}),void 0!==e.firstNonMeasuredItemIndex&&(e.firstNonMeasuredItemIndex+=y)):(G("Reset layout"),f?(G("Reason: Prepended items count",y,"is not divisible by Columns Count",e.getActualColumnsCount()),h=new Array(t.length)):G("Reason: Prepended items' heights are unknown"),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0)),b>0&&(G("Append",b,"items"),h=h.concat(new Array(b)),l=l.concat(Le(new Array(b),(function(n){return e.getInitialItemState(t[y+s.length+n])})))),i={prepend:y>0,append:b>0}}else G("Items have changed, and",c?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),G("Previous items",s),G("New items",t),h=new Array(t.length),l=Le(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};G("~ Update state ~"),G("First shown item index",n.firstShownItemIndex),G("Last shown item index",n.lastShownItemIndex),G("Before items height",n.beforeItemsHeight),G("After items height (actual or estimated)",n.afterItemsHeight),e.onBeforeShowItems(t,h,n.firstShownItemIndex,n.lastShownItemIndex),e.newItemsWillBeRendered=it(it({},i),{},{count:t.length,layout:n});var S=it(it({},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 st(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,m=o.scrollableContainer,d=o.measureItemsBatchSize,g=void 0===d?50:d,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,x=o.engine,H=o.bypass,R=o.getEstimatedItemHeight,T=o.getScrollableContainer;if(G("~ Initialize ~"),this.engine=x||F,R||"number"!=typeof y||(R=function(){return y}),!T&&m&&(T=function(){return m}),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!==F)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");G("~ <tbody/> detected ~"),this.tbody=!0,n()||(G("~ <tbody/> not supported ~"),$(t),H=!0)}H&&G('~ "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){J("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=r.getState().items.indexOf(e);t>=0&&w(t)}),a&&(i=a.items),G("Items count",i.length),R&&G("Estimated item height",R()),Ve.call(this,{state:a,getInitialItemState:u,onStateChange:h,render:s,items:i}),We.call(this),De.call(this,{getColumnsCount:p}),qe.call(this),et.call(this),tt.call(this),ot.call(this),at.call(this,{getScrollableContainer:T,getEstimatedItemHeight:R,getEstimatedVisibleItemRowsCount:b,measureItemsBatchSize:g,initialScrollPosition:c,onScrollPositionChange:f,waitForScrollingToStop:O}),a&&(this.itemHeights.readItemHeightsFromState(a),this.beforeResize.initializeFromState(a))}function at(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 Ee({container:this.itemsContainer,getItemHeight:function(e){return t.getState().itemHeights[e]},setItemHeight:function(e,n){return t.getState().itemHeights[e]=n}}),this.layout=new ie({bypass:this.bypass,getInitialEstimatedItemHeight:i,getInitialEstimatedVisibleItemRowsCount:r,measureItemsBatchSize:o,getPrerenderMargin:function(){return t.getPrerenderMargin()},getVerticalSpacing:function(){return t.getVerticalSpacing()},getVerticalSpacingBeforeResize:function(){return t.getVerticalSpacingBeforeResize()},getColumnsCount:function(){return t.getColumnsCount()},getColumnsCountBeforeResize:function(){return t.getState().beforeResize&&t.getState().beforeResize.columnsCount},getItemHeight:function(e){return t.getState().itemHeights[e]},getItemHeightBeforeResize:function(e){return t.getState().beforeResize&&t.getState().beforeResize.itemHeights[e]},getBeforeResizeItemsCount:function(){return t.getState().beforeResize?t.getState().beforeResize.itemHeights.length:0},getAverageItemHeight:function(){return t.itemHeights.getAverage()},getMaxVisibleAreaHeight:function(){return t.scrollableContainer&&t.scrollableContainer.getHeight()},getPreviouslyCalculatedLayout:function(){return t.previouslyCalculatedLayout}}),this.resize=new pe({bypass:this.bypass,getWidth:function(){return t.scrollableContainer.getWidth()},getHeight:function(){return t.scrollableContainer.getHeight()},listenForResize:function(e){return t.scrollableContainer.onResize(e)},onResizeStart:function(){G("~ Scrollable container resize started ~"),t._isResizing=!0},onResizeStop:function(){G("~ Scrollable container resize finished ~"),t._isResizing=void 0},onNoChange:function(){t.onUpdateShownItemIndexes({reason:ce})},onHeightChange:function(){return t.onUpdateShownItemIndexes({reason:he})},onWidthChange:function(e,n){G("~ Scrollable container width changed from",e,"to",n,"~"),t.onResize()}}),this.scroll=new He({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?oe:re})},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 Pe({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:de})}})),this.beforeResize=new we({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount})}function lt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ut(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?lt(Object(n),!0).forEach((function(t){ft(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ht(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ct(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function ft(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var mt=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};ht(this,e),ft(this,"stop",(function(){if(!i._isActive)throw new Error("[virtual-scroller] Can't stop a `VirtualScroller` that hasn't been started");i._isActive=!1,G("~ Stop ~"),i.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.isStarted()&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),ft(this,"updateLayout",(function(){i.hasToBeStarted(),i.onUpdateShownItemIndexes({reason:se})})),ft(this,"onRender",(function(){i._onRender(i.getState(),i.previousState)})),st.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");!1===this._isActive||(this._usesCustomStateStorage||this.useDefaultStateStorage(),this._render&&this._render(this.getState())),G("~ Start ~"),this._isActive=!0,this.listHeightMeasurement.reset(),this._isResizing=void 0,this._isSettingNewItems=void 0,this.tbody&&(this.getItemsContainerElement().classList.contains(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 e=this._stoppedStateUpdate;this._stoppedStateUpdate=void 0,this.verticalSpacing=void 0;var t=this.measureItemHeightsAndSpacing();if(t&&(e=ut(ut({},e),t)),this.resize.start(),this.scroll.start(),void 0===this.getState().scrollableContainerWidth){var n=this.scrollableContainer.getWidth();e=ut(ut({},e),{},{scrollableContainerWidth:n})}else{var o=this.scrollableContainer.getWidth(),s=this.getState().scrollableContainerWidth;if(o!==s)return G("~ Scrollable container width changed from",s,"to",o,"~"),this.onResize()}if(this._usesCustomStateStorage&&this.getActualColumnsCount()!==(this.getState().columnsCount||1))return this.onResize();this.onUpdateShownItemIndexes({reason:ae,stateUpdate:e})}},{key:"hasToBeStarted",value:function(){if(!this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` hasn't been started")}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onItemHeightChange",value:function(e){this.hasToBeStarted(),this._onItemHeightChange(e)}},{key:"setItemState",value:function(e,t){this.hasToBeStarted(),this._setItemState(e,t)}},{key:"onItemStateChange",value:function(e,t){this.setItemState(e,t)}},{key:"setItems",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.hasToBeStarted(),this._setItems(e,t)}}],n&&ct(t.prototype,n),o&&ct(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}(),dt=["onMount","onItemUnmount"];function gt(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 pt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gt(Object(n),!0).forEach((function(t){bt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function It(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 vt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function yt(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function bt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var St=function(){function t(n,i,r){var o=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};vt(this,t),bt(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||(G("DOM: Remove element for item index",h),o.unmountItem(o.container.childNodes[h-n.firstShownItemIndex])),h--;else for(G("DOM: Rerender the list from scratch");o.container.firstChild;)o.unmountItem(o.container.firstChild);for(var c=u,f=c&&o.container.firstChild,m=r;m<=s;){if(u&&m>=n.firstShownItemIndex&&m<=n.lastShownItemIndex)c&&(c=!1);else{var d=o.renderItem(i[m]);c?(G("DOM: Prepend element for item index",m),o.container.insertBefore(d,f)):(G("DOM: Append element for item index",m),o.container.appendChild(d))}m++}})),bt(this,"onUnmount",(function(){J("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),bt(this,"destroy",(function(){J("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),bt(this,"stop",(function(){o.virtualScroller.stop()})),bt(this,"start",(function(){o.virtualScroller.start()})),this.container=n,this.renderItem=r;var a=s.onMount,l=s.onItemUnmount,u=It(s,dt);this.onItemUnmount=l,this.tbody="TBODY"===this.container.tagName,this.virtualScroller=new mt((function(){return o.container}),i,pt(pt({},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){this.virtualScroller.onItemHeightChange(e)}},{key:"setItemState",value:function(e,t){this.virtualScroller.setItemState(e,t)}},{key:"updateItems",value:function(e,t){this.setItems(e,t)}},{key:"setItems",value:function(e,t){this.virtualScroller.setItems(e,t)}}],i&&yt(n.prototype,i),r&&yt(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}();return St}));
|
|
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 x(e){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},x(e)}function H(e,t){return H=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},H(e,t)}function R(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"===x(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function P(e){return P=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},P(e)}function 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 B=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=A(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),r()}}}]),e}(),z=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=R(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 A(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(B);function A(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 M="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(M)})),_="undefined"==typeof window?M: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 B(e,t):"undefined"!=typeof window?new z(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("Couldn't calculate",e,"before scrollable container is ready. Default to",n),n;throw t}}},{key:"getInitialLayoutValues",value:function(e){var t,n,i=this,r=e.itemsCount,o=e.columnsCount,s=e.beforeStart;if(r>0){var a=function(){return i.getInitialLastShownItemIndex({itemsCount:r,columnsCount:o,firstShownItemIndex:t})};t=0,n=s?this.getInitialLayoutValueWithFallback("lastShownItemIndex",a,0):a()}return{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var r=1;if(this.getMaxVisibleAreaHeight())r=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin());else if(this.getInitialEstimatedVisibleItemRowsCount&&(r=this.getInitialEstimatedVisibleItemRowsCount(),isNaN(r)))throw new Error("[virtual-scroller] `getEstimatedVisibleItemRowsCount()` must return a number");return Math.min(i+(r*n-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight(),n=this.getVerticalSpacing();return t?Math.ceil((e+n)/(t+n)):1}},{key:"getEstimatedItemHeight",value:function(){var e=this.getAverageItemHeight();if(e)return e;if(this.getInitialEstimatedItemHeight){var t=this.getInitialEstimatedItemHeight();if(isNaN(t))throw new Error("[virtual-scroller] `getInitialEstimatedItemHeight()` must return a number");return t}return 0}},{key:"getLayoutUpdateForItemsDiff",value:function(e,t,n){var i=e.firstShownItemIndex,r=e.lastShownItemIndex,o=e.beforeItemsHeight,s=e.afterItemsHeight,a=t.prependedItemsCount,l=t.appendedItemsCount,u=n.itemsCount,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.visibleAreaTop,i=e.visibleAreaBottom,r=this._getShownItemIndex({itemsCount:t,fromIndex:0,visibleAreaTop:n,visibleAreaBottom:i,findFirstShownItemIndex:!0});if(null===r)return this.getNonVisibleListShownItemIndexes();if(void 0!==r.firstNonMeasuredItemIndex)return r;var o=r,s=o.firstShownItemIndex,a=o.beforeItemsHeight;return null===(r=this._getShownItemIndex({itemsCount:t,fromIndex:s,beforeItemsHeight:a,visibleAreaTop:n,visibleAreaBottom:i,findLastShownItemIndex:!0}))?this.getNonVisibleListShownItemIndexes():void 0!==r.firstNonMeasuredItemIndex?r:{firstShownItemIndex:s,lastShownItemIndex:r.lastShownItemIndex}}},{key:"_getShownItemIndex",value:function(e){var t=e.beforeResize,n=e.itemsCount,i=e.visibleAreaTop,r=e.visibleAreaBottom,o=e.findFirstShownItemIndex,s=e.findLastShownItemIndex,a=e.fromIndex,l=e.beforeItemsHeight;if(0===a&&(l=0),void 0===l)throw new Error("[virtual-scroller] `beforeItemsHeight` not passed to `Layout.getShownItemIndexes()` when starting from index "+a);if(!t){var u=this.getBeforeResizeItemsCount();if(u>a){var h=this._getShownItemIndex(he(he({},e),{},{beforeResize:!0,itemsCount:u})),c=h.notFound,f=h.beforeItemsHeight,d=h.firstShownItemIndex,m=h.lastShownItemIndex;if(!c){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===d?void 0:Math.floor(d/g)*g,lastShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,beforeItemsHeight:f}}l=f,a+=u}}for(var p=t?this.getColumnsCountBeforeResize():this.getColumnsCount(),I=t?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing(),v=a;v<n;){for(var y=v,b=n>y+p?I:0,S=0,w=0;w<p&&v<n;){var C=t?this.getItemHeightBeforeResize(v):this.getItemHeight(v);if(void 0===C)return this.getItemNotMeasuredIndexes(v,{itemsCount:n,firstShownItemIndex:s?a:void 0,indexOfTheFirstItemInTheRow:y,nonMeasuredAreaHeight:r+this.getPrerenderMargin()-l});S=Math.max(S,C),w++,v++}var O=l+S,x=O>i-this.getPrerenderMargin(),H=O+b>=r+this.getPrerenderMargin();if(o){if(x)return{firstShownItemIndex:y,beforeItemsHeight:l}}else if(s&&H)return{lastShownItemIndex:Math.min(y+p-1,n-1)};l+=S+b}return t?{notFound:!0,beforeItemsHeight:l}:o?(ie("The list is supposed to be visible but no visible item has been found"),null):s?{lastShownItemIndex:n-1}:void 0}},{key:"getNonVisibleListShownItemIndexes",value:function(){var e={firstShownItemIndex:0,lastShownItemIndex:0};return void 0===this.getItemHeight(0)&&(e.firstNonMeasuredItemIndex=0),e}},{key:"getBeforeItemsHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeResize,i=0,r=0;if(!n){var o=this.getBeforeResizeItemsCount();o>0&&(i=this.getBeforeItemsHeight(Math.min(e,o),{beforeResize:!0}),r=o)}for(var s=n?this.getColumnsCountBeforeResize():this.getColumnsCount(),a=n?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing();r<e;){for(var l=0,u=0;u<s;){var h=n?this.getItemHeightBeforeResize(r):this.getItemHeight(r);void 0===h&&(h=this.getAverageItemHeight()),l=Math.max(l,h),r++,u++}i+=l,i+=a}return i}},{key:"getAfterItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=0,r=e+1;r<t;){for(var o=0,s=0;s<n&&r<t;){var a=this.getItemHeight(r);void 0===a&&(a=this.getAverageItemHeight()),o=Math.max(o,a),r++,s++}i+=this.getVerticalSpacing(),i+=o}return i}},{key:"getItemTopOffset",value:function(e){for(var t=0,n=this.getBeforeResizeItemsCount(),i=0===n?0:Math.ceil(n/this.getColumnsCountBeforeResize()),r=e<n?Math.floor(e/this.getColumnsCountBeforeResize()):i,o=0;o<r;)t+=this.getItemHeightBeforeResize(o*this.getColumnsCountBeforeResize()),t+=this.getVerticalSpacingBeforeResize(),o++;for(var s=Math.floor((e-n)/this.getColumnsCount()),a=0;a<s;){for(var l=0,u=0;u<this.getColumnsCount();){var h=this.getItemHeight(n+a*this.getColumnsCount()+u);if(void 0===h)return;l=Math.max(l,h),u++}t+=l,t+=this.getVerticalSpacing(),a++}return t}}],n&&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 xe(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,Re,{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)}}])&&xe(t.prototype,n),i&&xe(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),Re=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(Be(a,n,i).slice(s.itemHeights.length))}return Be(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 Be(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 ze(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Ae(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Me=function(){function e(t){var n=this,i=t.bypass,r=t.scrollableContainer,o=t.itemsContainer,s=t.onScroll,a=t.initialScrollPosition,l=t.onScrollPositionChange,u=t.isImmediateLayoutScheduled,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),Ae(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),Ae(this,"onScrollListener",(function(){if(n.onScrollPositionChange&&n.onScrollPositionChange(n.getScrollY()),n.onScrolledToTop&&n.getScrollY()<n.getListTopOffset()&&n.onScrolledToTop(),!n.bypass&&!n.ignoreScrollEvents){n.cancelOnStopScrollingTimer();var e=n.getLatestLayoutVisibleArea()&&(n.getScrollY()<n.getLatestLayoutVisibleArea().top-n.getPrerenderMargin()&&n.hasNonRenderedItemsAtTheTop()||n.getScrollY()+n.scrollableContainer.getHeight()>n.getLatestLayoutVisibleArea().bottom+n.getPrerenderMargin()&&n.hasNonRenderedItemsAtTheBottom());if(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()}}}])&&ze(t.prototype,n),i&&ze(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,'. An item\'s height is allowed to change only in two cases: when the item\'s "state" changes and the developer calls `setItemState(i, newState)`, or when the item\'s height changes for any reason and the developer calls `onItemHeightDidChange(i)` right after that happens. Perhaps you forgot to persist the item\'s "state" by calling `setItemState(i, newState)` when it changed, and that "state" got lost when the item element was unmounted, which resulted in a different height when the item was shown again having its "state" reset.'),this._set(s,u))}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&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())}}function Qe(){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!==i)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 Xe(e){var t=this,n=e.getColumnsCount;if(n){var i={getWidth:function(){return t.scrollableContainer.getWidth()}};this.getActualColumnsCountForState=function(){var e=n(i);if(1!==e)return e}}else this.getActualColumnsCountForState=function(){};this.getActualColumnsCount=function(){return t.getActualColumnsCountForState()||1},this.getColumnsCount=function(){return t.getState()&&t.getState().columnsCount||1}}function Ze(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function et(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ze(Object(n),!0).forEach((function(t){tt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ze(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function tt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function nt(){var e=this;function t(e){var n=e.stateUpdate,o=Date.now(),s=i.call(this),a=s.firstShownItemIndex,l=s.lastShownItemIndex,u=s.shownItemsHeight,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<it||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(et({firstShownItemIndex:a,lastShownItemIndex:l,beforeItemsHeight:c,afterItemsHeight:f},n))}function n(){var e=this.scroll.getVisibleAreaBounds();this.latestLayoutVisibleArea=e;var t=this.getListTopOffsetInsideScrollableContainer();return{top:e.top-t,bottom:e.bottom-t}}function i(){var e=this.getItemsCount(),t=n.call(this),i=t.top,r=t.bottom;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:e-1}:i<this.itemsContainer.getHeight()&&r>0?this.layout.getShownItemIndexes({itemsCount:this.getItemsCount(),visibleAreaTop:i,visibleAreaBottom:r}):(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.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=et(et({},e.layoutTimerStateUpdate),n),e.layoutTimerStateUpdate=void 0,n):void 0):n},this.scheduleLayoutTimer=function(t){var n=t.reason,i=t.stateUpdate;e.layoutTimerStateUpdate=i,e.layoutTimer=$((function(){e.layoutTimerStateUpdate=void 0,e.layoutTimer=void 0,e.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}}var it=15;function rt(e){return rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},rt(e)}var ot=Object.prototype.hasOwnProperty;function st(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function at(e,t){if(st(e,t))return!0;if("object"!==rt(e)||null===e||"object"!==rt(t)||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var r=0;r<n.length;r++)if(!ot.call(t,n[r])||!st(e[n[r]],t[n[r]]))return!1;return!0}function lt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ut(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?lt(Object(n),!0).forEach((function(t){ht(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ht(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ct(){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&&(at(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&&(at(o,t.mostRecentSetStateValue)||(ie("The most recent state that was set",qe(t.mostRecentSetStateValue)),oe("The state that has been rendered is not the most recent one that was set")));var h=r.call(t),c=h.nonMeasuredItemsHaveBeenRendered;h.itemHeightHasChanged;var f,d=h.widthHasChanged;if(t.updateLayoutAfterRenderBecauseItemHeightChanged&&(f=we),s||f){if(c&&(f=ve),d&&(f=ye,t.itemHeights.reset(),t.verticalSpacing=void 0),s){var m=s.items,g=o.items;if(g!==m){var p=t.getItemsDiff(m,g);if(p){var I=p.prependedItemsCount;t.itemHeights.onPrepend(I)}else t.itemHeights.reset();d||"SEAMLESS_PREPEND"!==n.call(t,p,o)&&(f=Ce)}}var v;if(s&&(o.firstShownItemIndex!==s.firstShownItemIndex||o.lastShownItemIndex!==s.lastShownItemIndex||o.items!==s.items)||d){var y=t.measureItemHeightsAndSpacing();y&&(v=ut(ut({},v),y))}var b=t.beforeResize.cleanUpBeforeResizeItemHeights();if(void 0!==b){var S=b.scrollBy,w=b.beforeResize;ne("Correct scroll position by",S),t.scroll.scrollByY(S),v=ut(ut({},v),{},{beforeResize:w})}t._isActive?f?i.call(t,{stateUpdate:v,reason:f}):v?t.updateState(v):ne("~ Finished Layout ~"):t._stoppedStateUpdate=v}}}function ft(){var e=this;this.onResize=function(){e.previouslyCalculatedLayout=void 0,e.listHeightMeasurement.reset();var t=e.newItemsWillBeRendered?e.newItemsWillBeRendered.count:e.getState().itemHeights.length,n=e.newItemsWillBeRendered?e.newItemsWillBeRendered.layout:e.getState(),i={scrollableContainerWidth:e.scrollableContainer.getWidth(),firstShownItemIndex:n.firstShownItemIndex,lastShownItemIndex:n.lastShownItemIndex,beforeItemsHeight:n.beforeItemsHeight,afterItemsHeight:n.afterItemsHeight,itemHeights:new Array(t),columnsCount:e.getActualColumnsCountForState(),verticalSpacing:void 0},r=n.firstShownItemIndex,o=n.lastShownItemIndex,s=e.getActualColumnsCount(),a=Math.floor(r/s)*s,l=Math.min(Math.ceil((o+1)/s)*s,t)-1;a!==r&&(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 dt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function mt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dt(Object(n),!0).forEach((function(t){gt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function gt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function pt(){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=mt(mt({},i),{},{count:t.length,layout:n});var S=mt(mt({},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 It(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,x=o.engine,H=o.bypass,R=o.getEstimatedItemHeight,T=o.getScrollableContainer;if(ne("~ Initialize ~"),this.engine=x||Z,R||"number"!=typeof y||(R=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),R&&ne("Estimated item height",R()),Ke.call(this,{state:a,getInitialItemState:u,onStateChange:h,render:s,items:i}),Qe.call(this),Xe.call(this,{getColumnsCount:p}),nt.call(this),ct.call(this),ft.call(this),pt.call(this),vt.call(this,{getScrollableContainer:T,getEstimatedItemHeight:R,getEstimatedVisibleItemRowsCount:b,measureItemsBatchSize:g,initialScrollPosition:c,onScrollPositionChange:f,waitForScrollingToStop:O}),a&&(this.itemHeights.readItemHeightsFromState(a),this.beforeResize.initializeFromState(a))}function vt(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.resize=new He({bypass:this.bypass,getWidth:function(){return t.scrollableContainer.getWidth()},getHeight:function(){return t.scrollableContainer.getHeight()},listenForResize:function(e){return t.scrollableContainer.onResize(e)},onResizeStart:function(){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.onResize()}}),this.scroll=new Me({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:l,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delayed;t.onUpdateShownItemIndexes({reason:n?ge: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 yt(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 bt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?yt(Object(n),!0).forEach((function(t){Ct(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):yt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function St(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function wt(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 Ct(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ot=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};St(this,e),Ct(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.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.isStarted()&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),Ct(this,"updateLayout",(function(){i.hasToBeStarted(),i.onUpdateShownItemIndexes({reason:pe})})),Ct(this,"onRender",(function(){i._onRender(i.getState(),i.previousState)})),It.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");!1===this._isActive||(this.waitingForRender=!0,this._usesCustomStateStorage||this.useDefaultStateStorage(),this._render&&this._render(this.getState())),ne("~ 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 e=this._stoppedStateUpdate;this._stoppedStateUpdate=void 0,this.verticalSpacing=void 0;var t=this.measureItemHeightsAndSpacing();if(t&&(e=bt(bt({},e),t)),this.resize.start(),this.scroll.start(),void 0===this.getState().scrollableContainerWidth){var n=this.scrollableContainer.getWidth();e=bt(bt({},e),{},{scrollableContainerWidth:n})}else{var o=this.scrollableContainer.getWidth(),s=this.getState().scrollableContainerWidth;if(o!==s)return ne("~ Scrollable container width changed from",s,"to",o,"~"),this.onResize()}if(this._usesCustomStateStorage&&this.getActualColumnsCount()!==(this.getState().columnsCount||1))return this.onResize();this.onUpdateShownItemIndexes({reason:Ie,stateUpdate:e})}},{key:"hasToBeStarted",value:function(){if(!this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` hasn't been started")}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onItemHeightChange",value:function(e){ie("`.onItemHeightChange(i)` method was renamed to `.onItemHeightDidChange(i)`"),this.onItemHeightDidChange(e)}},{key:"onItemHeightDidChange",value:function(e){this.hasToBeStarted(),this._onItemHeightDidChange(e)}},{key:"setItemState",value:function(e,t){this.hasToBeStarted(),this._setItemState(e,t)}},{key:"onItemStateChange",value:function(e,t){this.setItemState(e,t)}},{key:"setItems",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.hasToBeStarted(),this._setItems(e,t)}}],n&&wt(t.prototype,n),o&&wt(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 Rt(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){Et(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 Tt(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Pt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function jt(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 Et(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Lt=function(){function t(n,i,r){var o=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};Pt(this,t),Et(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++}})),Et(this,"onUnmount",(function(){ie("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),Et(this,"destroy",(function(){ie("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),Et(this,"stop",(function(){o.virtualScroller.stop()})),Et(this,"start",(function(){o.virtualScroller.start()})),this.container=n,this.renderItem=r;var a=s.onMount,l=s.onItemUnmount,u=Tt(s,xt);this.onItemUnmount=l,this.tbody="TBODY"===this.container.tagName,this.virtualScroller=new Ot((function(){return o.container}),i,Rt(Rt({},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&&jt(n.prototype,i),r&&jt(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}();return Lt}));
|
|
2
2
|
//# sourceMappingURL=virtual-scroller-dom.js.map
|