virtual-scroller 1.7.9 → 1.9.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/.gitlab-ci.yml +1 -1
- package/CHANGELOG.md +71 -1
- package/README.md +434 -151
- package/bundle/index-bypass.html +1 -1
- package/bundle/index-dom.html +1 -1
- package/bundle/index-grid.html +1 -2
- package/bundle/index-scrollableContainer.html +1 -1
- package/bundle/index-tbody-scrollableContainer.html +2 -0
- package/bundle/index-tbody.html +2 -0
- 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/BeforeResize.js +315 -0
- package/commonjs/BeforeResize.js.map +1 -0
- package/commonjs/DOM/Engine.js +46 -0
- package/commonjs/DOM/Engine.js.map +1 -0
- package/commonjs/DOM/ItemsContainer.js +78 -0
- package/commonjs/DOM/ItemsContainer.js.map +1 -0
- package/commonjs/DOM/{WaitForStylesToLoad.js → ListTopOffsetWatcher.js} +71 -44
- package/commonjs/DOM/ListTopOffsetWatcher.js.map +1 -0
- package/commonjs/DOM/ScrollableContainer.js +69 -101
- package/commonjs/DOM/ScrollableContainer.js.map +1 -1
- package/commonjs/DOM/VirtualScroller.js +37 -29
- package/commonjs/DOM/VirtualScroller.js.map +1 -1
- package/commonjs/DOM/tbody.js +17 -11
- package/commonjs/DOM/tbody.js.map +1 -1
- package/commonjs/ItemHeights.js +33 -34
- package/commonjs/ItemHeights.js.map +1 -1
- package/commonjs/Layout.js +591 -216
- package/commonjs/Layout.js.map +1 -1
- package/commonjs/Layout.test.js +196 -0
- package/commonjs/Layout.test.js.map +1 -0
- package/commonjs/ListHeightMeasurement.js +124 -0
- package/commonjs/ListHeightMeasurement.js.map +1 -0
- package/commonjs/Resize.js +50 -39
- package/commonjs/Resize.js.map +1 -1
- package/commonjs/Scroll.js +139 -95
- package/commonjs/Scroll.js.map +1 -1
- package/commonjs/VirtualScroller.columns.js +43 -0
- package/commonjs/VirtualScroller.columns.js.map +1 -0
- package/commonjs/VirtualScroller.constructor.js +408 -0
- package/commonjs/VirtualScroller.constructor.js.map +1 -0
- package/commonjs/VirtualScroller.items.js +305 -0
- package/commonjs/VirtualScroller.items.js.map +1 -0
- package/commonjs/VirtualScroller.js +160 -1021
- package/commonjs/VirtualScroller.js.map +1 -1
- package/commonjs/VirtualScroller.layout.js +562 -0
- package/commonjs/VirtualScroller.layout.js.map +1 -0
- package/commonjs/VirtualScroller.onRender.js +357 -0
- package/commonjs/VirtualScroller.onRender.js.map +1 -0
- package/commonjs/VirtualScroller.resize.js +186 -0
- package/commonjs/VirtualScroller.resize.js.map +1 -0
- package/commonjs/VirtualScroller.state.js +301 -0
- package/commonjs/VirtualScroller.state.js.map +1 -0
- package/commonjs/VirtualScroller.verticalSpacing.js +65 -0
- package/commonjs/VirtualScroller.verticalSpacing.js.map +1 -0
- package/commonjs/getItemCoordinates.js.map +1 -1
- package/commonjs/getItemsDiff.js.map +1 -1
- package/commonjs/getVerticalSpacing.js +8 -8
- package/commonjs/getVerticalSpacing.js.map +1 -1
- package/commonjs/package.json +5 -0
- package/commonjs/react/VirtualScroller.js +182 -628
- package/commonjs/react/VirtualScroller.js.map +1 -1
- package/commonjs/react/useClassName.js +26 -0
- package/commonjs/react/useClassName.js.map +1 -0
- package/commonjs/react/useHandleItemsChange.js +116 -0
- package/commonjs/react/useHandleItemsChange.js.map +1 -0
- package/commonjs/react/useInstanceMethods.js +37 -0
- package/commonjs/react/useInstanceMethods.js.map +1 -0
- package/commonjs/react/useItemKeys.js +60 -0
- package/commonjs/react/useItemKeys.js.map +1 -0
- package/commonjs/react/useOnItemHeightChange.js +32 -0
- package/commonjs/react/useOnItemHeightChange.js.map +1 -0
- package/commonjs/react/useOnItemStateChange.js +32 -0
- package/commonjs/react/useOnItemStateChange.js.map +1 -0
- package/commonjs/react/useState.js +140 -0
- package/commonjs/react/useState.js.map +1 -0
- package/commonjs/react/useStyle.js +29 -0
- package/commonjs/react/useStyle.js.map +1 -0
- package/commonjs/react/useVirtualScroller.js +62 -0
- package/commonjs/react/useVirtualScroller.js.map +1 -0
- package/commonjs/react/useVirtualScrollerStartStop.js +20 -0
- package/commonjs/react/useVirtualScrollerStartStop.js.map +1 -0
- package/commonjs/test/Engine.js +23 -0
- package/commonjs/test/Engine.js.map +1 -0
- package/commonjs/test/ItemsContainer.js +127 -0
- package/commonjs/test/ItemsContainer.js.map +1 -0
- package/commonjs/test/ScrollableContainer.js +130 -0
- package/commonjs/test/ScrollableContainer.js.map +1 -0
- package/commonjs/test/VirtualScroller.js +281 -0
- package/commonjs/test/VirtualScroller.js.map +1 -0
- package/commonjs/utility/debounce.js +28 -6
- package/commonjs/utility/debounce.js.map +1 -1
- package/commonjs/utility/debug.js +51 -12
- package/commonjs/utility/debug.js.map +1 -1
- package/commonjs/utility/getStateSnapshot.js +50 -0
- package/commonjs/utility/getStateSnapshot.js.map +1 -0
- package/commonjs/utility/px.js +1 -1
- package/commonjs/utility/px.js.map +1 -1
- package/commonjs/utility/px.test.js +14 -0
- package/commonjs/utility/px.test.js.map +1 -0
- package/commonjs/utility/shallowEqual.js +1 -1
- package/commonjs/utility/shallowEqual.js.map +1 -1
- package/commonjs/utility/throttle.js.map +1 -1
- package/dom/index.cjs +4 -0
- package/dom/index.cjs.js +9 -0
- package/dom/index.d.ts +25 -0
- package/dom/index.js +1 -1
- package/dom/package.json +10 -4
- package/index.cjs +4 -0
- package/index.cjs.js +9 -0
- package/index.d.ts +99 -0
- package/index.js +1 -1
- package/modules/BeforeResize.js +305 -0
- package/modules/BeforeResize.js.map +1 -0
- package/modules/DOM/Engine.js +27 -0
- package/modules/DOM/Engine.js.map +1 -0
- package/modules/DOM/ItemsContainer.js +71 -0
- package/modules/DOM/ItemsContainer.js.map +1 -0
- package/modules/DOM/{WaitForStylesToLoad.js → ListTopOffsetWatcher.js} +72 -44
- package/modules/DOM/ListTopOffsetWatcher.js.map +1 -0
- package/modules/DOM/ScrollableContainer.js +68 -100
- package/modules/DOM/ScrollableContainer.js.map +1 -1
- package/modules/DOM/VirtualScroller.js +32 -28
- package/modules/DOM/VirtualScroller.js.map +1 -1
- package/modules/DOM/tbody.js +11 -9
- package/modules/DOM/tbody.js.map +1 -1
- package/modules/ItemHeights.js +28 -33
- package/modules/ItemHeights.js.map +1 -1
- package/modules/Layout.js +585 -214
- package/modules/Layout.js.map +1 -1
- package/modules/Layout.test.js +190 -0
- package/modules/Layout.test.js.map +1 -0
- package/modules/ListHeightMeasurement.js +117 -0
- package/modules/ListHeightMeasurement.js.map +1 -0
- package/modules/Resize.js +50 -39
- package/modules/Resize.js.map +1 -1
- package/modules/Scroll.js +139 -94
- package/modules/Scroll.js.map +1 -1
- package/modules/VirtualScroller.columns.js +36 -0
- package/modules/VirtualScroller.columns.js.map +1 -0
- package/modules/VirtualScroller.constructor.js +371 -0
- package/modules/VirtualScroller.constructor.js.map +1 -0
- package/modules/VirtualScroller.items.js +288 -0
- package/modules/VirtualScroller.items.js.map +1 -0
- package/modules/VirtualScroller.js +159 -1014
- package/modules/VirtualScroller.js.map +1 -1
- package/modules/VirtualScroller.layout.js +549 -0
- package/modules/VirtualScroller.layout.js.map +1 -0
- package/modules/VirtualScroller.onRender.js +337 -0
- package/modules/VirtualScroller.onRender.js.map +1 -0
- package/modules/VirtualScroller.resize.js +176 -0
- package/modules/VirtualScroller.resize.js.map +1 -0
- package/modules/VirtualScroller.state.js +283 -0
- package/modules/VirtualScroller.state.js.map +1 -0
- package/modules/VirtualScroller.verticalSpacing.js +54 -0
- package/modules/VirtualScroller.verticalSpacing.js.map +1 -0
- package/modules/getItemCoordinates.js.map +1 -1
- package/modules/getItemsDiff.js.map +1 -1
- package/modules/getVerticalSpacing.js +8 -8
- package/modules/getVerticalSpacing.js.map +1 -1
- package/modules/react/VirtualScroller.js +179 -634
- package/modules/react/VirtualScroller.js.map +1 -1
- package/modules/react/useClassName.js +18 -0
- package/modules/react/useClassName.js.map +1 -0
- package/modules/react/useHandleItemsChange.js +108 -0
- package/modules/react/useHandleItemsChange.js.map +1 -0
- package/modules/react/useInstanceMethods.js +28 -0
- package/modules/react/useInstanceMethods.js.map +1 -0
- package/modules/react/useItemKeys.js +52 -0
- package/modules/react/useItemKeys.js.map +1 -0
- package/modules/react/useOnItemHeightChange.js +24 -0
- package/modules/react/useOnItemHeightChange.js.map +1 -0
- package/modules/react/useOnItemStateChange.js +24 -0
- package/modules/react/useOnItemStateChange.js.map +1 -0
- package/modules/react/useState.js +132 -0
- package/modules/react/useState.js.map +1 -0
- package/modules/react/useStyle.js +19 -0
- package/modules/react/useStyle.js.map +1 -0
- package/modules/react/useVirtualScroller.js +51 -0
- package/modules/react/useVirtualScroller.js.map +1 -0
- package/modules/react/useVirtualScrollerStartStop.js +12 -0
- package/modules/react/useVirtualScrollerStartStop.js.map +1 -0
- package/modules/test/Engine.js +11 -0
- package/modules/test/Engine.js.map +1 -0
- package/modules/test/ItemsContainer.js +120 -0
- package/modules/test/ItemsContainer.js.map +1 -0
- package/modules/test/ScrollableContainer.js +123 -0
- package/modules/test/ScrollableContainer.js.map +1 -0
- package/modules/test/VirtualScroller.js +270 -0
- package/modules/test/VirtualScroller.js.map +1 -0
- package/modules/utility/debounce.js +28 -6
- package/modules/utility/debounce.js.map +1 -1
- package/modules/utility/debug.js +47 -10
- package/modules/utility/debug.js.map +1 -1
- package/modules/utility/getStateSnapshot.js +43 -0
- package/modules/utility/getStateSnapshot.js.map +1 -0
- package/modules/utility/px.js +1 -1
- package/modules/utility/px.js.map +1 -1
- package/modules/utility/px.test.js +9 -0
- package/modules/utility/px.test.js.map +1 -0
- package/modules/utility/shallowEqual.js +1 -1
- package/modules/utility/shallowEqual.js.map +1 -1
- package/modules/utility/throttle.js.map +1 -1
- package/package.json +54 -29
- package/react/index.cjs +4 -0
- package/react/index.cjs.js +9 -0
- package/react/index.d.ts +28 -0
- package/react/index.js +1 -1
- package/react/package.json +10 -4
- package/rollup.config.mjs +62 -0
- package/runnable/create-commonjs-package-json.js +11 -0
- package/source/BeforeResize.js +312 -0
- package/source/DOM/Engine.js +30 -0
- package/source/DOM/ItemsContainer.js +48 -0
- package/source/DOM/{WaitForStylesToLoad.js → ListTopOffsetWatcher.js} +61 -30
- package/source/DOM/ScrollableContainer.js +51 -73
- package/source/DOM/VirtualScroller.js +33 -18
- package/source/DOM/tbody.js +30 -21
- package/source/ItemHeights.js +27 -27
- package/source/Layout.js +629 -252
- package/source/Layout.test.js +176 -0
- package/source/ListHeightMeasurement.js +95 -0
- package/source/Resize.js +56 -32
- package/source/Scroll.js +135 -82
- package/source/VirtualScroller.columns.js +26 -0
- package/source/VirtualScroller.constructor.js +336 -0
- package/source/VirtualScroller.items.js +302 -0
- package/source/VirtualScroller.js +162 -936
- package/source/VirtualScroller.layout.js +539 -0
- package/source/VirtualScroller.onRender.js +345 -0
- package/source/VirtualScroller.resize.js +189 -0
- package/source/VirtualScroller.state.js +284 -0
- package/source/VirtualScroller.verticalSpacing.js +51 -0
- package/source/getVerticalSpacing.js +7 -7
- package/source/react/VirtualScroller.js +243 -603
- package/source/react/useClassName.js +14 -0
- package/source/react/useHandleItemsChange.js +115 -0
- package/source/react/useInstanceMethods.js +25 -0
- package/source/react/useItemKeys.js +59 -0
- package/source/react/useOnItemHeightChange.js +28 -0
- package/source/react/useOnItemStateChange.js +28 -0
- package/source/react/useState.js +114 -0
- package/source/react/useStyle.js +20 -0
- package/source/react/useVirtualScroller.js +59 -0
- package/source/react/useVirtualScrollerStartStop.js +12 -0
- package/source/test/Engine.js +11 -0
- package/source/test/ItemsContainer.js +87 -0
- package/source/test/ScrollableContainer.js +88 -0
- package/source/test/VirtualScroller.js +232 -0
- package/source/utility/debounce.js +22 -5
- package/source/utility/debug.js +34 -3
- package/source/utility/getStateSnapshot.js +36 -0
- package/source/utility/px.js +1 -1
- package/source/utility/px.test.js +9 -0
- package/website/index-bypass.html +195 -0
- package/website/index-grid.html +0 -1
- package/website/index-scrollableContainer.html +208 -0
- package/website/index-tbody-scrollableContainer.html +68 -0
- package/website/index-tbody.html +55 -0
- package/commonjs/DOM/RenderingEngine.js +0 -33
- package/commonjs/DOM/RenderingEngine.js.map +0 -1
- package/commonjs/DOM/Screen.js +0 -87
- package/commonjs/DOM/Screen.js.map +0 -1
- package/commonjs/DOM/WaitForStylesToLoad.js.map +0 -1
- package/commonjs/RestoreScroll.js +0 -118
- package/commonjs/RestoreScroll.js.map +0 -1
- package/dom/index.commonjs.js +0 -4
- package/index.commonjs.js +0 -4
- package/modules/DOM/RenderingEngine.js +0 -19
- package/modules/DOM/RenderingEngine.js.map +0 -1
- package/modules/DOM/Screen.js +0 -80
- package/modules/DOM/Screen.js.map +0 -1
- package/modules/DOM/WaitForStylesToLoad.js.map +0 -1
- package/modules/RestoreScroll.js +0 -111
- package/modules/RestoreScroll.js.map +0 -1
- package/react/index.commonjs.js +0 -4
- package/source/DOM/RenderingEngine.js +0 -22
- package/source/DOM/Screen.js +0 -51
- package/source/RestoreScroll.js +0 -86
package/bundle/index-bypass.html
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
|
|
33
33
|
<body>
|
|
34
34
|
<!-- http://tholman.com/github-corners/ -->
|
|
35
|
-
<a title="Go to GitHub repo" href="https://
|
|
35
|
+
<a title="Go to GitHub repo" href="https://gitlab.com/catamphetamine/virtual-scroller" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
|
36
36
|
|
|
37
37
|
<div id="root"></div>
|
|
38
38
|
|
package/bundle/index-dom.html
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
<body>
|
|
21
21
|
<!-- http://tholman.com/github-corners/ -->
|
|
22
|
-
<a title="Go to GitHub repo" href="https://
|
|
22
|
+
<a title="Go to GitHub repo" href="https://gitlab.com/catamphetamine/virtual-scroller" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
|
23
23
|
|
|
24
24
|
<section class="container">
|
|
25
25
|
<h1>
|
package/bundle/index-grid.html
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
|
|
46
46
|
<body>
|
|
47
47
|
<!-- http://tholman.com/github-corners/ -->
|
|
48
|
-
<a title="Go to GitHub repo" href="https://
|
|
48
|
+
<a title="Go to GitHub repo" href="https://gitlab.com/catamphetamine/virtual-scroller" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
|
49
49
|
|
|
50
50
|
<div id="root"></div>
|
|
51
51
|
|
|
@@ -61,7 +61,6 @@
|
|
|
61
61
|
const COLUMNS_COUNT = 3
|
|
62
62
|
|
|
63
63
|
function getColumnsCount(container) {
|
|
64
|
-
console.log('Container width', container.getWidth())
|
|
65
64
|
if (container.getWidth() > 1280) {
|
|
66
65
|
return COLUMNS_COUNT
|
|
67
66
|
}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
<body>
|
|
24
24
|
<!-- http://tholman.com/github-corners/ -->
|
|
25
|
-
<a title="Go to GitHub repo" href="https://
|
|
25
|
+
<a title="Go to GitHub repo" href="https://gitlab.com/catamphetamine/virtual-scroller" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
|
26
26
|
|
|
27
27
|
<div id="root"></div>
|
|
28
28
|
|
package/bundle/index-tbody.html
CHANGED
|
@@ -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=e||self).VirtualScroller=t()}(this,function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var t,n=(function(t){(function(){var e,n,i,r,o,s;"undefined"!=typeof performance&&null!==performance&&performance.now?t.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(t.exports=function(){return(e()-o)/1e6},n=process.hrtime,r=(e=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),o=r-s):Date.now?(t.exports=function(){return Date.now()-i},i=Date.now()):(t.exports=function(){return(new Date).getTime()-i},i=(new Date).getTime())}).call(e)}(t={exports:{}},t.exports),t.exports),i="undefined"==typeof window?e:window,r=["moz","webkit"],o="AnimationFrame",s=i["request"+o],a=i["cancel"+o]||i["cancelRequest"+o],l=0;!s&&l<r.length;l++)s=i[r[l]+"Request"+o],a=i[r[l]+"Cancel"+o]||i[r[l]+"CancelRequest"+o];if(!s||!a){var u=0,h=0,c=[];s=function(e){if(0===c.length){var t=n(),i=Math.max(0,1e3/60-(t-u));u=i+t,setTimeout(function(){var e=c.slice(0);c.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(i))}return c.push({handle:++h,callback:e,cancelled:!1}),h},a=function(e){for(var t=0;t<c.length;t++)c[t].handle===e&&(c[t].cancelled=!0)}}var d=function(e){return s.call(i,e)};d.cancel=function(){a.apply(i,arguments)},d.polyfill=function(e){e||(e=i),e.requestAnimationFrame=s,e.cancelAnimationFrame=a};var m=d.cancel;function f(e,t){var n=Date.now(),i=d(function r(){Date.now()-n>=t?e():i=d(r)});return{clear:function(){return m(i)}}}function g(e){e&&e.clear()}function I(e){return e.toFixed(2)+"px"}var p="It looks like you're using Internet Explorer which doesn't support CSS variables required for a <tbody/> container. VirtualScroller has been switched into \"bypass\" mode (render all items). See: https://gitlab.com/catamphetamine/virtual-scroller/-/issues/1";function v(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var y=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,n,i;return t=e,(n=[{key:"getChildElementTopOffset",value:function(e,t){return e.childNodes[t].getBoundingClientRect().top}},{key:"getChildElementHeight",value:function(e,t){return this.getElementHeight(e.childNodes[t])}},{key:"getChildElementsCount",value:function(e){return e.childNodes.length}},{key:"clearElement",value:function(e){for(;e.firstChild;)e.removeChild(e.firstChild)}},{key:"getElementHeight",value:function(e){return e.getBoundingClientRect().height}}])&&v(t.prototype,n),i&&v(t,i),e}();function S(e){return(S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function b(e,t){return!t||"object"!==S(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function w(e){return(w=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function C(e,t){return(C=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function T(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function x(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function H(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),e}var O=function(){function e(t){T(this,e),this.element=t}return H(e,[{key:"getScrollY",value:function(){return this.element.scrollTop}},{key:"scrollToY",value:function(e){this.element.scrollTo?this.element.scrollTo(0,e):this.element.scrollTop=e}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"getHeight",value:function(){return this.element.offsetHeight}},{key:"getContentHeight",value:function(){return this.element.scrollHeight}},{key:"getTopOffset",value:function(e){var t=this.element.getBoundingClientRect().top,n=this.element.clientTop;return e.getBoundingClientRect().top-t+this.getScrollY()-n}},{key:"addScrollListener",value:function(e){var t=this;return this.element.addEventListener("scroll",e),function(){return t.element.removeEventListener("scroll",e)}}},{key:"onResize",value:function(e,t){var n,i=this,r=t.container;if("undefined"!=typeof ResizeObserver){var o=new ResizeObserver(function(t){t[0];e()});o.observe(this.element),n=function(){return o.unobserve(i.element)}}var s=k(e,{container:r});return function(){n&&n(),s()}}}]),e}(),L=function(e){function t(){return T(this,t),b(this,w(t).call(this,window))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&C(e,t)}(t,O),H(t,[{key:"getScrollY",value:function(){return window.pageYOffset}},{key:"getWidth",value:function(){return window.innerWidth}},{key:"getHeight",value:function(){return window.innerHeight}},{key:"getContentHeight",value:function(){return document.documentElement.scrollHeight}},{key:"getTopOffset",value:function(e){var t=document.clientTop||document.body.clientTop||0;return e.getBoundingClientRect().top+this.getScrollY()-t}},{key:"onResize",value:function(e,t){return k(e,{container:t.container})}}]),t}();function k(e,t){var n=t.container,i=function(){document.fullscreenElement&&!document.fullscreenElement.contains(n)||e()};return window.addEventListener("resize",i),function(){return window.removeEventListener("resize",i)}}var E={name:"DOM",createScreen:function(){return new y},createScrollableContainer:function(e){return e?new O(e):"undefined"!=typeof window?new L:void 0}};function A(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function R(){if(V()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,A(["[virtual-scroller]"].concat(n)))}}function M(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).warn.apply(e,A(["[virtual-scroller]"].concat(n)))}function P(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(R.apply(this,["ERROR"].concat(t)),setTimeout(function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))},0)):(i=console).error.apply(i,A(["[virtual-scroller]"].concat(t)))}function V(){if("undefined"!=typeof window)return!0===window.VirtualScrollerDebug||"debug"===window.VirtualScrollerDebug}function B(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.bypass,i=t.estimatedItemHeight,r=t.measureItemsBatchSize,o=t.getVerticalSpacing,s=t.getColumnsCount,a=t.getItemHeight,l=t.getAverageItemHeight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.estimatedItemHeight=i,this.measureItemsBatchSize=r,this.getVerticalSpacing=o,this.getColumnsCount=s,this.getItemHeight=a,this.getAverageItemHeight=l}var t,n,i;return t=e,(n=[{key:"getInitialLayoutValues",value:function(e){var t,n,i=e.bypass,r=e.itemsCount,o=e.visibleAreaHeightIncludingMargins,s=o?this.getEstimatedRowsCountForHeight(o):1;return r>0&&(t=0,n=this.getLastShownItemIndex(t,r,s,i)),{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getLastShownItemIndex",value:function(e,t,n,i){return this.bypass||i?t-1:Math.min(e+(n*this.getColumnsCount()-1),t-1)}},{key:"getEstimatedRowsCountForHeight",value:function(e){var t=this.getEstimatedItemHeight();return t?Math.ceil((e+this.getVerticalSpacing())/(t+this.getVerticalSpacing())):1}},{key:"getEstimatedItemHeight",value:function(){return this.getAverageItemHeight()||this.estimatedItemHeight||0}},{key:"updateLayoutForItemsDiff",value:function(e,t,n){var i=t.prependedItemsCount,r=t.appendedItemsCount,o=n.itemsCount;e.firstShownItemIndex+=i,e.lastShownItemIndex+=i;var s=this.getColumnsCount();if(i%s==0){var a=i/s,l=Math.ceil(r/s),u=this.getAverageItemHeight(),h=this.getVerticalSpacing();e.beforeItemsHeight+=a*(u+h),e.afterItemsHeight+=l*(h+u)}else e.beforeItemsHeight=this.getBeforeItemsHeight(e.firstShownItemIndex,e.lastShownItemIndex),e.afterItemsHeight=this.getAfterItemsHeight(e.firstShownItemIndex,e.lastShownItemIndex,o)}},{key:"_getVisibleItemIndexes",value:function(e,t,n,i){for(var r,o,s=this.getColumnsCount(),a=0,l=Math.ceil(i/s),u=0;u<l;){for(var h=i>(u+1)*s?this.getVerticalSpacing():0,c=0,d=0,m=void 0;d<s&&(m=u*s+d)<i;){var f=this.getItemHeight(m);if(void 0===f){R("Item index ".concat(m,' lies within the visible area or its "margins", but its height hasn\'t been measured yet. Mark the item as "shown", render the list, measure the item\'s height and redo the layout.')),void 0===r&&(r=u*s);var g=t-(n+a);return{firstNonMeasuredItemIndex:m,firstShownItemIndex:r,lastShownItemIndex:o=Math.min((u+this.getEstimatedRowsCountForHeight(g))*s-1,i-1)}}if(c=Math.max(c,f),void 0===r&&n+a+c>e&&(R("First shown row index",u),r=u*s),n+a+c+h>t)return R("Last shown row index",u),void 0!==r&&(o=Math.min((u+1)*s-1,i-1)),{firstShownItemIndex:r,lastShownItemIndex:o};d++}a+=c,a+=h,u++}return void 0!==r&&void 0===o&&R("Last item index (is fully visible)",o=i-1),{firstShownItemIndex:r,lastShownItemIndex:o}}},{key:"getVisibleItemIndexes",value:function(e,t,n,i){var r=this._getVisibleItemIndexes(e,t,n,i),o=r.firstNonMeasuredItemIndex,s=r.firstShownItemIndex,a=r.lastShownItemIndex,l=void 0!==o;if(l&&this.measureItemsBatchSize){var u=o+this.measureItemsBatchSize-1,h=this.getColumnsCount();a=Math.min(a,Math.ceil(u/h)*h-1)}return{firstShownItemIndex:s,lastShownItemIndex:a,redoLayoutAfterMeasuringItemHeights:l}}},{key:"getNonVisibleListShownItemIndexes",value:function(){return{firstShownItemIndex:0,lastShownItemIndex:0,redoLayoutAfterMeasuringItemHeights:void 0===this.getItemHeight(0)}}},{key:"getItemIndexes",value:function(e,t,n,i,r){if(n+i>e&&n<t){var o=this.getVisibleItemIndexes(e,t,n,r);if(void 0!==o.firstShownItemIndex)return o;R("The entire list is off-screen. No items are visible.")}else R("The entire list is off-screen. No items are visible.")}},{key:"getBeforeItemsHeight",value:function(e,t){for(var n=this.getColumnsCount(),i=Math.floor(e/n),r=0,o=0;o<i;){for(var s=0,a=0;a<n;)s=Math.max(s,this.getItemHeight(o*n+a)||this.getAverageItemHeight()),a++;r+=s,r+=this.getVerticalSpacing(),o++}return r}},{key:"getAfterItemsHeight",value:function(e,t,n){for(var i=this.getColumnsCount(),r=Math.ceil(n/i),o=0,s=Math.floor(t/i)+1;s<r;){for(var a=0,l=0,u=void 0;l<i&&(u=s*i+l)<n;)a=Math.max(a,this.getItemHeight(u)||this.getAverageItemHeight()),l++;o+=this.getVerticalSpacing(),o+=a,s++}return o}},{key:"getShownItemIndexes",value:function(e){var t=e.listHeight,n=e.itemsCount,i=e.visibleAreaIncludingMargins,r=e.listTopOffsetInsideScrollableContainer;return this.bypass?{firstShownItemIndex:0,lastShownItemIndex:n-1}:this.getItemIndexes(i.top,i.bottom,r,t,n)||this.getNonVisibleListShownItemIndexes()}},{key:"showItemsFromTheStart",value:function(e){e.firstShownItemIndex=0,e.beforeItemsHeight=0}}])&&B(t.prototype,n),i&&B(t,i),e}(),_={SCROLL:"scroll",STOPPED_SCROLLING:"stopped scrolling",MANUAL:"manual",MOUNT:"mount",ITEM_HEIGHT_NOT_MEASURED:"some item height wasn't measured",RESIZE:"resize",ITEM_HEIGHT_CHANGED:"item height changed",ITEMS_CHANGED:"items changed",TOP_OFFSET_CHANGED:"list top offset changed"};function N(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var j=function(){function e(t){var n=t.updateLayout,i=t.getListTopOffsetInsideScrollableContainer;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.updateLayout=n,this.getListTopOffsetInsideScrollableContainer=i}var t,n,i;return t=e,(n=[{key:"onGotListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this.isRendered=!0,this.watchListTopOffset()}},{key:"stop",value:function(){this.isRendered=!1,g(this.watchListTopOffsetTimer)}},{key:"watchListTopOffset",value:function(){var e=this,t=Date.now();!function n(){e.isRendered&&(void 0!==e.listTopOffsetInsideScrollableContainer&&e.getListTopOffsetInsideScrollableContainer()!==e.listTopOffsetInsideScrollableContainer&&e.updateLayout({reason:_.TOP_OFFSET_CHANGED}),Date.now()-t<z&&(e.watchListTopOffsetTimer=f(n,D)))}()}}])&&N(t.prototype,n),i&&N(t,i),e}(),D=500,z=3e3;function F(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 Y=function(){function e(t){var n,i,r,o,s,a,l=this,u=t.bypass,h=t.scrollableContainer,c=t.getContainerElement,d=t.updateLayout,m=t.resetStateAndLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),o=function(){if(l.isRendered){var e=l.scrollableContainerWidth,t=l.scrollableContainerHeight;if(l.scrollableContainerWidth=l.scrollableContainer.getWidth(),l.scrollableContainerHeight=l.scrollableContainer.getHeight(),l.scrollableContainerWidth===e){if(l.scrollableContainerHeight===t)return;l.updateLayout({reason:_.RESIZE})}else l.resetStateAndLayout()}},s=G,r=function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];g(a),a=f(function(){return o.apply(e,n)},s)},(i="onResize")in(n=this)?Object.defineProperty(n,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[i]=r,this.bypass=u,this.scrollableContainer=h,this.getContainerElement=c,this.updateLayout=d,this.resetStateAndLayout=m}var t,n,i;return t=e,(n=[{key:"listen",value:function(){this.bypass||(this.isRendered=!0,this.scrollableContainerWidth=this.scrollableContainer.getWidth(),this.scrollableContainerHeight=this.scrollableContainer.getHeight(),this.scrollableContainerUnlistenResize=this.scrollableContainer.onResize(this.onResize,{container:this.getContainerElement()}))}},{key:"stop",value:function(){this.isRendered=!1,this.scrollableContainerUnlistenResize&&this.scrollableContainerUnlistenResize()}}])&&F(t.prototype,n),i&&F(t,i),e}(),G=250;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 q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Z=function(){function e(t){var n=this,i=t.bypass,r=t.scrollableContainer,o=t.updateLayout,s=t.initialScrollPosition,a=t.onScrollPositionChange,l=t.isImmediateLayoutScheduled,u=t.hasNonRenderedItemsAtTheTop,h=t.hasNonRenderedItemsAtTheBottom,c=t.getLatestLayoutVisibleAreaIncludingMargins,d=t.preserveScrollPositionOfTheBottomOfTheListOnMount;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),q(this,"updateScrollPosition",function(){n.onScrollPositionChange(n.getScrollY())}),q(this,"onScroll",function(){n.cancelOnUserStopsScrollingTimer();var e=n.getLatestLayoutVisibleAreaIncludingMargins()&&(n.getScrollY()<n.getLatestLayoutVisibleAreaIncludingMargins().top&&n.hasNonRenderedItemsAtTheTop()||n.getScrollY()+n.scrollableContainer.getHeight()>n.getLatestLayoutVisibleAreaIncludingMargins().bottom&&n.hasNonRenderedItemsAtTheBottom());if(R(e?"The user has scrolled far enough: force re-layout":"The user hasn't scrolled too much: delay re-layout"),e)n.updateLayout({reason:_.SCROLL});else{if(n.isImmediateLayoutScheduled())return;n.onUserStopsScrollingTimer=f(function(){n.onUserStopsScrollingTimer=void 0,n.updateLayout({reason:_.STOPPED_SCROLLING})},J)}}),this.bypass=i,this.scrollableContainer=r,this.updateLayout=o,this.initialScrollPosition=s,this.onScrollPositionChange=a,this.isImmediateLayoutScheduled=l,this.hasNonRenderedItemsAtTheTop=u,this.hasNonRenderedItemsAtTheBottom=h,this.getLatestLayoutVisibleAreaIncludingMargins=c,d&&r&&(this.preserveScrollPositionOfTheBottomOfTheListOnMount={scrollableContainerContentHeight:r.getContentHeight()})}var t,n,i;return t=e,(n=[{key:"listen",value:function(){void 0!==this.initialScrollPosition&&this.scrollToY(this.initialScrollPosition),this.onScrollPositionChange&&(this.updateScrollPosition(),this.removeScrollPositionListener=this.scrollableContainer.addScrollListener(this.updateScrollPosition)),this.bypass||(this.removeScrollListener=this.scrollableContainer.addScrollListener(this.onScroll)),this.preserveScrollPositionOfTheBottomOfTheListOnMount&&this.scrollToY(this.getScrollY()+(this.scrollableContainer.getContentHeight()-this.preserveScrollPositionOfTheBottomOfTheListOnMount.scrollableContainerContentHeight))}},{key:"stop",value:function(){this.removeScrollPositionListener&&this.removeScrollPositionListener(),this.removeScrollListener&&this.removeScrollListener(),this.cancelOnUserStopsScrollingTimer()}},{key:"scrollToY",value:function(e){this.scrollableContainer.scrollToY(e)}},{key:"scrollByY",value:function(e){this.scrollToY(this.getScrollY()+e)}},{key:"getScrollY",value:function(){return this.scrollableContainer.getScrollY()}},{key:"cancelOnUserStopsScrollingTimer",value:function(){this.onUserStopsScrollingTimer&&(g(this.onUserStopsScrollingTimer),this.onUserStopsScrollingTimer=void 0)}},{key:"onLayout",value:function(){this.cancelOnUserStopsScrollingTimer()}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&W(t.prototype,n),i&&W(t,i),e}(),J=100;function K(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var Q=function(){function e(t){var n=t.screen,i=t.getContainerElement,r=t.scrollBy;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.screen=n,this.getContainerElement=i,this.scrollBy=r}var t,n,i;return t=e,(n=[{key:"captureScroll",value:function(e){var t=e.previousItems,n=e.newItems,i=e.prependedItemsCount;if(0!==t.length&&0!==i){var r=this.getContainerElement(),o=this.screen.getChildElementTopOffset(r,0);this.restoreScrollAfterRenderValues&&this.restoreScrollAfterRenderValues.previousItems===t&&this.restoreScrollAfterRenderValues.newItems===n||(this.restoreScrollAfterRenderValues={previousItems:t,newItems:n,index:i,visibleAreaTop:o})}}},{key:"getAnchorItemIndex",value:function(){return this.restoreScrollAfterRenderValues.index}},{key:"shouldRestoreScrollAfterRender",value:function(){return void 0!==this.restoreScrollAfterRenderValues}},{key:"getScrollDifference",value:function(){var e=this.restoreScrollAfterRenderValues,t=e.index,n=e.visibleAreaTop;return this.restoreScrollAfterRenderValues=void 0,this.screen.getChildElementTopOffset(this.getContainerElement(),t)-n}}])&&K(t.prototype,n),i&&K(t,i),e}();function X(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var $=function(){function e(t,n,i,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.screen=t,this.getContainerElement=n,this._get=i,this._set=r,this.reset()}var t,n,i;return t=e,(n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"initialize",value:function(e){for(var t=0;t<e.length;){if(void 0===e[t]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=t-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=t),this.measuredItemsHeight+=e[t];t++}}},{key:"_measureItemHeight",value:function(e,t){var n=this.getContainerElement();if(n){var i=e-t;if(i>=0&&i<this.screen.getChildElementsCount(n))return this.screen.getChildElementHeight(n,i)}}},{key:"measureItemHeights",value:function(e,t){if(void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(R("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),R("Item",s,"hasn't been previously measured");var a=this._measureItemHeight(s,e);R("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&&M("Item",s,"height was",l,"before it was hidden, but, after showing it again, its height is",u,". Perhaps you forgot to persist the item's state by calling `onItemStateChange(i, newState)` when it changed, and that state got lost when the item element was unmounted, which resulted in a different height when the item was shown again, but with the missing state.")}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}])&&X(t.prototype,n),i&&X(t,i),e}();function ee(e){return(ee="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var te=Object.prototype.hasOwnProperty;function ne(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},i=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),i.forEach(function(t){oe(e,t,n[t])})}return e}function re(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function oe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var se=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),oe(this,"getListTopOffsetInsideScrollableContainer",function(){var e=i.scrollableContainer.getTopOffset(i.getContainerElement());return i.waitForStylesToLoad.onGotListTopOffset(e),e}),oe(this,"willUpdateState",function(e,t){}),oe(this,"didUpdateState",function(e){var t=i.getState();if(i.onStateChange&&(function(e,t){if(ne(e,t))return!0;if("object"!==ee(e)||null===e||"object"!==ee(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(!te.call(t,n[r])||!ne(e[n[r]],t[n[r]]))return!1;return!0}(t,e)||i.onStateChange(t,e)),e&&i.isRendered){R("~ Rendered ~"),i.newItemsPending=void 0,i.layoutResetPending=void 0;var n=i.redoLayoutReason;i.redoLayoutReason=void 0;var r=e.items,o=t.items;if(o!==r){var s=!0,a=i.getItemsDiff(r,o);if(a){var l=a.prependedItemsCount;a.appendedItemsCount;if(l>0&&(i.itemHeights.onPrepend(l),i.restoreScroll.shouldRestoreScrollAfterRender())){s=!1,R("~ Restore Scroll Position ~");var u=i.restoreScroll.getScrollDifference();u?(R("Scroll down by",u),i.scroll.scrollByY(u)):R("Scroll position hasn't changed")}}else i.itemHeights.reset(),i.itemHeights.initialize(i.getState().itemHeights);s&&(n=_.ITEMS_CHANGED)}return t.firstShownItemIndex===e.firstShownItemIndex&&t.lastShownItemIndex===e.lastShownItemIndex&&t.items===e.items||i.onRenderedNewLayout(),n?i.redoLayoutRightAfterRender({reason:n}):void 0}}),oe(this,"updateShownItemIndexes",function(){R("~ Layout results "+(i.bypass?"(bypass) ":"")+"~");var e=i.getVisibleAreaBoundsIncludingMargins();i.latestLayoutVisibleAreaIncludingMargins=e;var t=i.getListTopOffsetInsideScrollableContainer(),n=i.layout.getShownItemIndexes({listHeight:i.screen.getElementHeight(i.getContainerElement()),itemsCount:i.getItemsCount(),visibleAreaIncludingMargins:e,listTopOffsetInsideScrollableContainer:t}),r=n.firstShownItemIndex,o=n.lastShownItemIndex,s=n.redoLayoutAfterMeasuringItemHeights;if(i.restoreScroll.shouldRestoreScrollAfterRender()&&(o<i.restoreScroll.getAnchorItemIndex()&&(o=i.restoreScroll.getAnchorItemIndex()),s=!1),!i.validateWillBeHiddenItemHeightsAreAccurate(r,o))return R("~ Some of the will-be-hidden item heights have changed since they've last been measured. Redo layout. ~"),i.updateShownItemIndexes();var a=i.layout.getBeforeItemsHeight(r,o),l=i.layout.getAfterItemsHeight(r,o,i.getItemsCount());i._getColumnsCount&&R("Columns count",i.getColumnsCount()),R("First shown item index",r),R("Last shown item index",o),R("Before items height",a),R("After items height (actual or estimated)",l),R("Average item height (calculated on previous render)",i.itemHeights.getAverage()),V()&&(R("Item heights",i.getState().itemHeights.slice()),R("Item states",i.getState().itemStates.slice())),s&&(i.redoLayoutReason=_.ITEM_HEIGHT_NOT_MEASURED),i.onBeforeShowItems(i.getState().items,i.getState().itemHeights,r,o),i.setState({firstShownItemIndex:r,lastShownItemIndex:o,beforeItemsHeight:a,afterItemsHeight:l})}),oe(this,"onUpdateShownItemIndexes",function(e){var t=e.reason;0!==i.getItemsCount()&&(i.scroll.onLayout(),i.layoutTimer&&(g(i.layoutTimer),i.layoutTimer=void 0),R("~ Calculate Layout (on ".concat(t,") ~")),i.updateShownItemIndexes())}),oe(this,"updateLayout",function(){return i.onUpdateShownItemIndexes({reason:_.MANUAL})}),oe(this,"layout",function(){return i.updateLayout()});var o=r.getState,s=r.setState,a=r.onStateChange,l=r.customState,u=r.preserveScrollPositionAtBottomOnMount,h=r.preserveScrollPositionOfTheBottomOfTheListOnMount,c=r.initialScrollPosition,d=r.onScrollPositionChange,m=r.measureItemsBatchSize,f=r.getScrollableContainer,I=r.getColumnsCount,v=r.getItemId,y=r.tbody,S=r._useTimeoutInRenderLoop,b=r.bypass,w=r.estimatedItemHeight,C=r.onItemInitialRender,T=r.onItemFirstRender,x=r.scrollableContainer,H=r.state,O=r.renderingEngine;if(R("~ Initialize ~"),H&&(n=H.items),!x&&f&&(x=f()),O||(O=E),this.screen=O.createScreen(),this.scrollableContainer=O.createScrollableContainer(x),y){if("DOM"!==O.name)throw new Error("`tbody` option is only supported for DOM rendering engine");R("~ <tbody/> detected ~"),this.tbody=!0,"undefined"!=typeof window&&window.document.documentMode&&(R("~ <tbody/> not supported ~"),P(p),b=!0)}b&&R('~ "bypass" mode ~'),this.bypass=b,this._useTimeoutInRenderLoop=S,this.isItemEqual=v?function(e,t){return v(e)===v(t)}:function(e,t){return e===t},this.initialItems=n,this.onStateChange=a,this._getColumnsCount=I,C?this.onItemInitialRender=C:T&&(this.onItemInitialRender=function(e){M("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=i.getState().items.indexOf(e);t>=0&&T(t)}),R("Items count",n.length),w&&R("Estimated item height",w),s?(this.getState=o,this.setState=function(e){R("Set state",e),s(e,{willUpdateState:i.willUpdateState,didUpdateState:i.didUpdateState})}):(this.getState=function(){return i.state},this.setState=function(e){R("Set state",e);var t=i.getState(),n=ie({},t,e);i.willUpdateState(n,t),i.state=n,i.didUpdateState(t)}),H&&R("Initial state (passed)",H),this.getContainerElement=t,t()&&this.screen.clearElement(t()),this.itemHeights=new $(this.screen,this.getContainerElement,function(e){return i.getState().itemHeights[e]},function(e,t){return i.getState().itemHeights[e]=t}),H&&this.itemHeights.initialize(H.itemHeights),this.layout=new U({bypass:b,estimatedItemHeight:w,measureItemsBatchSize:void 0===m?50:m,getVerticalSpacing:function(){return i.getVerticalSpacing()},getColumnsCount:function(){return i.getColumnsCount()},getItemHeight:function(e){return i.getState().itemHeights[e]},getAverageItemHeight:function(){return i.itemHeights.getAverage()}}),this.resize=new Y({bypass:b,scrollableContainer:this.scrollableContainer,getContainerElement:this.getContainerElement,updateLayout:function(e){var t=e.reason;return i.onUpdateShownItemIndexes({reason:t})},resetStateAndLayout:function(){R("~ Scrollable container size changed, re-measure item heights. ~"),i.redoLayoutReason=_.RESIZE,i.layoutResetPending=!0,R("Reset state"),i.setState(i.getInitialLayoutState(i.newItemsPending||i.getState().items))}}),u&&M("`preserveScrollPositionAtBottomOnMount` option/property has been renamed to `preserveScrollPositionOfTheBottomOfTheListOnMount`"),this.preserveScrollPositionOfTheBottomOfTheListOnMount=h||u,this.scroll=new Z({bypass:this.bypass,scrollableContainer:this.scrollableContainer,updateLayout:function(e){var t=e.reason;return i.onUpdateShownItemIndexes({reason:t})},initialScrollPosition:c,onScrollPositionChange:d,isImmediateLayoutScheduled:function(){return i.layoutTimer},hasNonRenderedItemsAtTheTop:function(){return i.getState().firstShownItemIndex>0},hasNonRenderedItemsAtTheBottom:function(){return i.getState().lastShownItemIndex<i.getItemsCount()-1},getLatestLayoutVisibleAreaIncludingMargins:function(){return i.latestLayoutVisibleAreaIncludingMargins},preserveScrollPositionOfTheBottomOfTheListOnMount:this.preserveScrollPositionOfTheBottomOfTheListOnMount}),this.restoreScroll=new Q({screen:this.screen,getContainerElement:this.getContainerElement}),this.waitForStylesToLoad=new j({updateLayout:function(e){var t=e.reason;return i.onUpdateShownItemIndexes({reason:t})},getListTopOffsetInsideScrollableContainer:this.getListTopOffsetInsideScrollableContainer}),this.setState(H||this.getInitialState(l))}var t,n,i;return t=e,(n=[{key:"getInitialState",value:function(e){var t=this.initialItems,n=ie({},e,this.getInitialLayoutState(t),{items:t,itemStates:new Array(t.length)});return R("Initial state (autogenerated)",n),R("First shown item index",n.firstShownItemIndex),R("Last shown item index",n.lastShownItemIndex),n}},{key:"getInitialLayoutValues",value:function(e){var t=e.itemsCount,n=e.bypass;return this.layout.getInitialLayoutValues({bypass:n,itemsCount:t,visibleAreaHeightIncludingMargins:this.scrollableContainer&&2*this.getMargin()+this.scrollableContainer.getHeight()})}},{key:"getInitialLayoutState",value:function(e){var t=e.length,n=this.getInitialLayoutValues({itemsCount:t,bypass:this.preserveScrollPositionOfTheBottomOfTheListOnMount}),i=n.firstShownItemIndex,r=n.lastShownItemIndex,o=n.beforeItemsHeight,s=n.afterItemsHeight,a=new Array(t);return this.onBeforeShowItems(e,a,i,r),{itemHeights:a,columnsCount:this._getColumnsCount?this._getColumnsCount(this.scrollableContainer):void 0,verticalSpacing:void 0,firstShownItemIndex:i,lastShownItemIndex:r,beforeItemsHeight:o,afterItemsHeight:s}}},{key:"getVerticalSpacing",value:function(){return this.getState()&&this.getState().verticalSpacing||0}},{key:"getColumnsCount",value:function(){return this.getState()&&this.getState().columnsCount||1}},{key:"getItemsCount",value:function(){return this.getState().items.length}},{key:"getMargin",value:function(){return 1*this.scrollableContainer.getHeight()}},{key:"onBeforeShowItems",value:function(e,t,n,i){if(this.onItemInitialRender)for(var r=n;r<=i;)void 0===t[r]&&this.onItemInitialRender(e[r]),r++}},{key:"onMount",value:function(){M("`.onMount()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"render",value:function(){M("`.render()` instance method name is deprecated, use `.listen()` instance method name instead."),this.listen()}},{key:"listen",value:function(){if(!1===this.isRendered)throw new Error("[virtual-scroller] Can't restart a `VirtualScroller` after it has been stopped");R("~ Rendered (initial) ~"),this.isRendered=!0,this.onRenderedNewLayout(),this.resize.listen(),this.scroll.listen(),this.tbody&&function(e){e.classList.add("VirtualScroller");var t=document.getElementById("VirtualScrollerStyle");t||((t=document.createElement("style")).id="VirtualScrollerStyle",t.innerText="\n\t\t\ttbody.VirtualScroller:before {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingTop);\n\t\t\t}\n\t\t\ttbody.VirtualScroller:after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: table-row;\n\t\t\t\theight: var(--VirtualScroller-paddingBottom);\n\t\t\t}\n\t\t".replace(/[\n\t]/g,""),document.head.appendChild(t))}(this.getContainerElement()),this.preserveScrollPositionOfTheBottomOfTheListOnMount||this.onUpdateShownItemIndexes({reason:_.MOUNT})}},{key:"onRenderedNewLayout",value:function(){var e,t,n;this.measureVerticalSpacing(),this.itemHeights.measureItemHeights(this.getState().firstShownItemIndex,this.getState().lastShownItemIndex),this.tbody&&(e=this.getContainerElement(),t=this.getState().beforeItemsHeight,n=this.getState().afterItemsHeight,e.style.setProperty("--VirtualScroller-paddingTop",I(t)),e.style.setProperty("--VirtualScroller-paddingBottom",I(n)))}},{key:"getVisibleAreaBoundsIncludingMargins",value:function(){var e=this.scroll.getVisibleAreaBounds();return e.top-=this.getMargin(),e.bottom+=this.getMargin(),e}},{key:"onUnmount",value:function(){M("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"destroy",value:function(){M("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),this.stop()}},{key:"stop",value:function(){this.isRendered=!1,this.resize.stop(),this.scroll.stop(),this.waitForStylesToLoad.stop(),this.layoutTimer&&(g(this.layoutTimer),this.layoutTimer=void 0)}},{key:"redoLayoutRightAfterRender",value:function(e){var t=this,n=e.reason;this._useTimeoutInRenderLoop?(this.layoutTimer&&g(this.layoutTimer),this.layoutTimer=f(function(){t.layoutTimer=void 0,t.onUpdateShownItemIndexes({reason:n})},0)):this.onUpdateShownItemIndexes({reason:n})}},{key:"measureVerticalSpacing",value:function(){if(void 0===this.getState().verticalSpacing){R("~ Measure item vertical spacing ~");var e=function(e){var t=e.container,n=e.screen;if(n.getChildElementsCount(t)>1)for(var i=n.getChildElementTopOffset(t,0),r=n.getChildElementHeight(t,0),o=1;o<n.getChildElementsCount(t);){var s=n.getChildElementTopOffset(t,o),a=n.getChildElementHeight(t,o);if(s!==i)return s-(i+r);r=Math.max(r,a),o++}}({container:this.getContainerElement(),screen:this.screen});void 0===e?R("Not enough items rendered to measure vertical spacing"):(R("Item vertical spacing",e),this.setState({verticalSpacing:e}))}}},{key:"remeasureItemHeight",value:function(e){var t=this.getState().firstShownItemIndex;return this.itemHeights.remeasureItemHeight(e,t)}},{key:"onItemStateChange",value:function(e,t){V()&&(R("~ Item state changed ~"),R("Item",e),R("Previous state\n"+JSON.stringify(this.getState().itemStates[e],null,2)),R("New state\n"+JSON.stringify(t,null,2))),this.getState().itemStates[e]=t}},{key:"onItemHeightChange",value:function(e){R("~ Re-measure item height ~"),R("Item",e);var t=this.getState().itemHeights[e];if(void 0===t)return P('"onItemHeightChange()" has been called for item '.concat(e,", but that item hasn't been rendered before."));var n=this.remeasureItemHeight(e);if(void 0===n)return M("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time.");R("Previous height",t),R("New height",n),t!==n&&(R("~ Item height has changed ~"),this.onUpdateShownItemIndexes({reason:_.ITEM_HEIGHT_CHANGED}))}},{key:"validateWillBeHiddenItemHeightsAreAccurate",value:function(e,t){for(var n=!0,i=this.getState().firstShownItemIndex;i<=this.getState().lastShownItemIndex;){if(i>=e&&i<=t);else{var r=this.getState().itemHeights[i],o=this.remeasureItemHeight(i);o!==r&&(n=!1,M("Item",i,"will be unmounted at next render because it's no longer visible. Its height has changed from",r,"to",o,"since it was last measured. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time, and the first one triggers a re-layout before the rest of them have had a chance to be executed."))}i++}return n}},{key:"updateItems",value:function(e,t){return this.setItems(e,t)}},{key:"setItems",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.getState().items,r=this.getState(),o=r.itemStates,s=r.itemHeights;R("~ Update items ~");var a=this.getItemsDiff(i,e);if(a&&!this.layoutResetPending){var l=this.getState();t={firstShownItemIndex:l.firstShownItemIndex,lastShownItemIndex:l.lastShownItemIndex,beforeItemsHeight:l.beforeItemsHeight,afterItemsHeight:l.afterItemsHeight};var u=a.prependedItemsCount,h=a.appendedItemsCount;u>0&&(R("Prepend",u,"items"),s=new Array(u).concat(s),o&&(o=new Array(u).concat(o))),h>0&&(R("Append",h,"items"),s=s.concat(new Array(h)),o&&(o=o.concat(new Array(h)))),this.layout.updateLayoutForItemsDiff(t,a,{itemsCount:e.length}),u>0&&(n.preserveScrollPositionOnPrependItems||n.preserveScrollPosition)&&0===this.getState().firstShownItemIndex&&(this.restoreScroll.captureScroll({previousItems:i,newItems:e,prependedItemsCount:u}),this.layout.showItemsFromTheStart(t))}else R("Items have changed, and",a?"a re-layout from scratch has been requested.":"it's not a simple append and/or prepend.","Rerender the entire list from scratch."),R("Previous items",i),R("New items",e),s=new Array(e.length),o=new Array(e.length),t=this.getInitialLayoutValues({itemsCount:e.length});R("~ Update state ~"),R("First shown item index",t.firstShownItemIndex),R("Last shown item index",t.lastShownItemIndex),R("Before items height",t.beforeItemsHeight),R("After items height (actual or estimated)",t.afterItemsHeight),this.onBeforeShowItems(e,s,t.firstShownItemIndex,t.lastShownItemIndex),this.newItemsPending=e,this.setState(ie({},t,{items:e,itemStates:o,itemHeights:s}))}},{key:"getItemsDiff",value:function(e,t){return function(e,t,n){var i=-1,r=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n))>=0&&function(e,t,n,i){for(var r=0;r<e.length;){if(t.length<=n+r||!i(t[n+r],e[r]))return!1;r++}return!0}(e,t,i,n)&&(r=i+e.length-1),i>=0&&r>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(r+1)}}(e,t,this.isItemEqual)}}])&&re(t.prototype,n),i&&re(t,i),e}();function ae(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 le(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function ue(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}return function(){function e(t,n,i){var r=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),ue(this,"onStateChange",function(e,t){var n=e.items,i=e.firstShownItemIndex,o=e.lastShownItemIndex,s=e.beforeItemsHeight,a=e.afterItemsHeight;R("~ On state change ~"),R("Previous state",t),R("New state",e),r.tbody||(r.container.style.paddingTop=I(s),r.container.style.paddingBottom=I(a));var l=t&&n===t.items&&n.length>0;if(l){R("Incremental rerender");for(var u=t.lastShownItemIndex;u>=t.firstShownItemIndex;)u>=i&&u<=o||(R("Remove item index",u),r.unmountItem(r.container.childNodes[u-t.firstShownItemIndex])),u--}else for(R("Rerender from scratch");r.container.firstChild;)r.unmountItem(r.container.firstChild);for(var h=l,c=h&&r.container.firstChild,d=i;d<=o;){if(l&&d>=t.firstShownItemIndex&&d<=t.lastShownItemIndex)h&&(h=!1);else{var m=r.renderItem(n[d]);h?(R("Prepend item index",d),r.container.insertBefore(m,c)):(R("Append item index",d),r.container.appendChild(m))}d++}}),ue(this,"onUnmount",function(){M("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),r.stop()}),ue(this,"destroy",function(){M("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),r.stop()}),ue(this,"stop",function(){r.virtualScroller.stop()}),this.container=t,this.renderItem=i;var s=o.onMount,a=o.onItemUnmount,l=ae(o,["onMount","onItemUnmount"]);this.onItemUnmount=a,this.tbody="TBODY"===this.container.tagName,this.virtualScroller=new se(function(){return r.container},n,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},i=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),i.forEach(function(t){ue(e,t,n[t])})}return e}({},l,{tbody:this.tbody,onStateChange:this.onStateChange})),s&&s(),this.virtualScroller.listen()}var t,n,i;return t=e,(n=[{key:"unmountItem",value:function(e){this.container.removeChild(e),this.onItemUnmount&&this.onItemUnmount(e)}},{key:"onItemHeightChange",value:function(e){this.virtualScroller.onItemHeightChange(e)}},{key:"updateItems",value:function(e,t){this.setItems(e,t)}},{key:"setItems",value:function(e,t){this.virtualScroller.setItems(e,t)}}])&&le(t.prototype,n),i&&le(t,i),e}()});
|
|
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:"getNthRenderedItemTopOffset",value:function(e){return this.getElement().childNodes[e].getBoundingClientRect().top-this.getElement().getBoundingClientRect().top}},{key:"getNthRenderedItemHeight",value:function(e){return this.getElement().childNodes[e].getBoundingClientRect().height}},{key:"getHeight",value:function(){return this.getElement().getBoundingClientRect().height}},{key:"clear",value:function(){for(;this.getElement().firstChild;)this.getElement().removeChild(this.getElement().firstChild)}}])&&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){return l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},l(e,t)}function u(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=c(e);if(t){var r=c(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return h(this,n)}}function h(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 c(e){return c=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},c(e)}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}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)}}function m(e,t,n){return t&&d(e.prototype,t),n&&d(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var g=function(){function e(t,n){f(this,e),this.getElement=t,this.getItemsContainerElement=n}return m(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(){return this.getElement().offsetWidth}},{key:"getHeight",value:function(){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=I(e,{itemsContainerElement:this.getItemsContainerElement()});return function(){t&&t(),r()}}}]),e}(),p=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&&l(e,t)}(n,e);var t=u(n);function n(e){return f(this,n),t.call(this,(function(){return window}),e)}return m(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 I(e,{itemsContainerElement:this.getItemsContainerElement()})}}]),n}(g);function I(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 v="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var S=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){(function(){var t,n,i,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(v)})),y="undefined"==typeof window?v:window,b=["moz","webkit"],w="AnimationFrame",C=y["request"+w],O=y["cancel"+w]||y["cancelRequest"+w],x=0;!C&&x<b.length;x++)C=y[b[x]+"Request"+w],O=y[b[x]+"Cancel"+w]||y[b[x]+"CancelRequest"+w];if(!C||!O){var H=0,R=0,T=[];C=function(e){if(0===T.length){var t=S(),n=Math.max(0,16.666666666666668-(t-H));H=n+t,setTimeout((function(){var e=T.slice(0);T.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(H)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return T.push({handle:++R,callback:e,cancelled:!1}),R},O=function(e){for(var t=0;t<T.length;t++)T[t].handle===e&&(T[t].cancelled=!0)}}var P=function(e){return C.call(y,e)};P.cancel=function(){O.apply(y,arguments)},P.polyfill=function(e){e||(e=y),e.requestAnimationFrame=C,e.cancelAnimationFrame=O};var j=P.cancel;function L(e,t){var n=Date.now(),i=P((function r(){Date.now()-n>=t?e():i=P(r)}));return{clear:function(){return j(i)}}}function z(e){e&&e.clear()}function B(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var A=function(){function e(t){var n=t.getListTopOffset,i=t.onListTopOffsetChange;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.getListTopOffset=n,this.onListTopOffsetChange=i}var t,n,i;return t=e,(n=[{key:"onListTopOffset",value:function(e){void 0===this.listTopOffsetInsideScrollableContainer&&this.start(),this.listTopOffsetInsideScrollableContainer=e}},{key:"start",value:function(){this._isActive=!0,this.watchListTopOffset()}},{key:"isStarted",value:function(){return this._isActive}},{key:"stop",value:function(){this._isActive=!1,this.watchListTopOffsetTimer&&(z(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=L(n,500)))}()}}])&&B(t.prototype,n),i&&B(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),M={createItemsContainer:function(e){return new s(e)},createScrollableContainer:function(e,t){return e?new g(e,t):"undefined"!=typeof window?new p(t):void 0},watchListTopOffset:function(e){var t=e.getListTopOffset,n=e.onListTopOffsetChange;return new A({getListTopOffset:t,onListTopOffsetChange:n})}};function E(e){return function(e){if(Array.isArray(e))return k(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 k(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 k(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 k(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 _(){if(V()){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];(e=console).log.apply(e,E(["[virtual-scroller]"].concat(n)))}}function N(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(D())return W.apply(this,n);(e=console).warn.apply(e,E(["[virtual-scroller]"].concat(n)))}function W(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i;"undefined"!=typeof window?(_.apply(this,["ERROR"].concat(t)),setTimeout((function(){throw new Error(["[virtual-scroller]"].concat(t).join(" "))}),0)):(i=console).error.apply(i,E(["[virtual-scroller]"].concat(t)))}function V(){var e=U("VirtualScrollerDebug");if(void 0!==e)return!0===e||"debug"===e}function D(){return U("VirtualScrollerWarningsAreErrors")}function U(e){return"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:void 0}function F(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 Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?F(Object(n),!0).forEach((function(t){q(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):F(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function G(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var J=function(){function e(t){var n=t.bypass,i=t.estimatedItemHeight,r=t.measureItemsBatchSize,o=t.getPrerenderMargin,s=t.getVerticalSpacing,a=t.getVerticalSpacingBeforeResize,l=t.getColumnsCount,u=t.getColumnsCountBeforeResize,h=t.getItemHeight,c=t.getItemHeightBeforeResize,f=t.getBeforeResizeItemsCount,d=t.getAverageItemHeight,m=t.getMaxVisibleAreaHeight,g=t.getPreviouslyCalculatedLayout;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bypass=n,this.estimatedItemHeight=i,this.measureItemsBatchSize=r,this.getPrerenderMargin=o,this.getVerticalSpacing=s,this.getVerticalSpacingBeforeResize=a,this.getColumnsCount=l,this.getColumnsCountBeforeResize=u,this.getItemHeight=h,this.getItemHeightBeforeResize=c,this.getBeforeResizeItemsCount=f,this.getAverageItemHeight=d,this.getMaxVisibleAreaHeight=m,this.getPreviouslyCalculatedLayout=g}var t,n,i;return t=e,n=[{key:"getInitialLayoutValues",value:function(e){var t,n,i=e.itemsCount,r=e.columnsCount;return i>0&&(t=0,n=this.getInitialLastShownItemIndex({itemsCount:i,columnsCount:r,firstShownItemIndex:t})),{beforeItemsHeight:0,afterItemsHeight:0,firstShownItemIndex:t,lastShownItemIndex:n}}},{key:"getInitialLastShownItemIndex",value:function(e){var t=e.itemsCount,n=e.columnsCount,i=e.firstShownItemIndex;if(this.bypass)return t-1;var r=1;return this.getMaxVisibleAreaHeight()&&(r=this.getEstimatedRowsCountForHeight(this.getMaxVisibleAreaHeight()+this.getPrerenderMargin())),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(){return this.getAverageItemHeight()||this.estimatedItemHeight||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(),N("~ Prepended items count",a,"is not divisible by Columns Count",h,"~"),N("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;_("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(Y(Y({},e),{},{beforeResize:!0,itemsCount:u})),c=h.notFound,f=h.beforeItemsHeight,d=h.firstShownItemIndex,m=h.lastShownItemIndex;if(!c){var g=this.getColumnsCount();return{firstShownItemIndex:void 0===d?void 0:Math.floor(d/g)*g,lastShownItemIndex:void 0===m?void 0:Math.floor(m/g)*g,beforeItemsHeight:f}}l=f,a+=u}}for(var p=t?this.getColumnsCountBeforeResize():this.getColumnsCount(),I=t?this.getVerticalSpacingBeforeResize():this.getVerticalSpacing(),v=a;v<n;){for(var S=v,y=n>S+p?I:0,b=0,w=0;w<p&&v<n;){var C=t?this.getItemHeightBeforeResize(v):this.getItemHeight(v);if(void 0===C)return this.getItemNotMeasuredIndexes(v,{itemsCount:n,firstShownItemIndex:s?a:void 0,indexOfTheFirstItemInTheRow:S,nonMeasuredAreaHeight:r+this.getPrerenderMargin()-l});b=Math.max(b,C),w++,v++}var O=l+b,x=O>i-this.getPrerenderMargin(),H=O+y>=r+this.getPrerenderMargin();if(o){if(x)return{firstShownItemIndex:S,beforeItemsHeight:l}}else if(s&&H)return{lastShownItemIndex:Math.min(S+p-1,n-1)};l+=b+y}return t?{notFound:!0,beforeItemsHeight:l}:o?(N("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&&G(t.prototype,n),i&&G(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),$="scroll",K="stopped scrolling",Q="manual",X="started",Z="non-measured item heights have been measured",ee="viewport width changed",te="viewport height changed",ne="viewport size unchanged",ie="item height changed",re="items changed",oe="list top offset changed";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 ae=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?z(n):r&&r(),n=L((function(){n=void 0,o&&o(),e.apply(i,a),s()}),t)}))}}(this._onResize,le,{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)}}])&&se(t.prototype,n),i&&se(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),le=250;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.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){_('~ 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)_('Drop all "before resize" item heights');else{var p=t,I=r.itemHeights.length-1;p===I?_("For item index",p,'— drop "before resize" height',r.itemHeights[p]):_("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:he({},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(me(a,n,i).slice(s.itemHeights.length))}return me(a,n,i)}},{key:"shouldIncludeBeforeResizeValuesInState",value:function(){return this._includesBeforeResizeInState}}],n&&fe(t.prototype,n),i&&fe(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function me(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 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)}}function pe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ie=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),pe(this,"scrollByY",(function(e){n.scrollToY(n.getScrollY()+e)})),pe(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(_(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&&(z(this.onStopScrollingTimer),this.onStopScrollingTimer=void 0)}},{key:"cancelScheduledLayout",value:function(){this.cancelOnStopScrollingTimer()}},{key:"watchOnStopScrolling",value:function(){var e=this;this.onStopScrollingTimer=L((function(){e.onStopScrollingTimer=void 0,e.shouldCallOnScrollListenerWhenStopsScrolling&&(e.shouldCallOnScrollListenerWhenStopsScrolling=void 0,e.onScroll({delayed:!0}))}),ve)}},{key:"getVisibleAreaBounds",value:function(){var e=this.getScrollY();return{top:e,bottom:e+this.scrollableContainer.getHeight()}}}])&&ge(t.prototype,n),i&&ge(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}(),ve=100;function Se(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var ye=function(){function e(t){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}}])&&Se(t.prototype,n),i&&Se(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function be(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var we=function(){function e(t){var n=t.container;t.itemHeights;var i=t.getItemHeight,r=t.setItemHeight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=n,this._get=i,this._set=r,this.reset()}var t,n,i;return t=e,n=[{key:"reset",value:function(){this.measuredItemsHeight=0,this.firstMeasuredItemIndex=void 0,this.lastMeasuredItemIndex=void 0}},{key:"readItemHeightsFromState",value:function(e){for(var t=e.itemHeights,n=0;n<t.length;){if(void 0===t[n]){if(void 0!==this.firstMeasuredItemIndex){this.lastMeasuredItemIndex=n-1;break}}else void 0===this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex=n),this.measuredItemsHeight+=t[n];n++}}},{key:"_measureItemHeight",value:function(e,t){return this.container.getNthRenderedItemHeight(e-t)}},{key:"measureItemHeights",value:function(e,t){if(_("~ Measure item heights ~"),void 0!==e){void 0!==this.firstMeasuredItemIndex&&(e>this.lastMeasuredItemIndex+1||t<this.firstMeasuredItemIndex-1)&&(_("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);_("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&&(N("Item index",s,"height changed unexpectedly: it was",l,"before, but now it is",u,'. An item\'s height is allowed to change only in two cases: when the item\'s "state" changes and the developer calls `onItemStateChange(i, newState)`, or when the item\'s height changes for some other reason and the developer calls `onItemHeightChange(i)`. Perhaps you forgot to persist the item\'s "state" by calling `onItemStateChange(i, newState)` when it changed, and that "state" got lost when the item element was unmounted, which resulted in a different height when the item was shown again having its "state" reset.'),this._set(s,u))}s++}return n}}},{key:"remeasureItemHeight",value:function(e,t){var n=this._get(e),i=this._measureItemHeight(e,t);return this._set(e,i),this.measuredItemsHeight+=i-n,i}},{key:"getAverage",value:function(){return void 0===this.lastMeasuredItemIndex?0:this.measuredItemsHeight/(this.lastMeasuredItemIndex-this.firstMeasuredItemIndex+1)}},{key:"onPrepend",value:function(e){void 0!==this.firstMeasuredItemIndex&&(this.firstMeasuredItemIndex+=e,this.lastMeasuredItemIndex+=e)}}],n&&be(t.prototype,n),i&&be(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Ce(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 Oe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ce(Object(n),!0).forEach((function(t){xe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ce(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}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}function He(e){var t=Oe({},e);return e.itemHeights&&(t.itemHeights=e.itemHeights.slice()),e.itemStates&&(t.itemStates=e.itemStates.slice()),e.beforeResize&&(t.beforeResize=Oe({},e.beforeResize),t.beforeResize.itemHeights=e.beforeResize.itemHeights.slice()),t}function Re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Te(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Re(Object(n),!0).forEach((function(t){Pe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Pe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function je(e){var t=this,n=e.state,i=e.onStateChange,r=e.render,o=e.items;function s(){return this.state}function a(e){this.state=e}function l(e){this.state=Te(Te({},this.state),e),r(this.state,this.previousState),this.onRender()}function u(){var e=o,t=Te(Te({},c.call(this,e)),{},{items:e,itemStates:new Array(e.length)});return V()&&_("Initial state (autogenerated)",He(t)),_("First shown item index",t.firstShownItemIndex),_("Last shown item index",t.lastShownItemIndex),t}function h(e){return V()&&_("Restore state",He(e)),function(e,t){var n=t.columnsCount,i=e.columnsCount||1;if(i!==n)return N("~ Columns Count changed from",i,"to",n,"~"),!0;if(Math.floor(e.firstShownItemIndex/n)*n!==e.firstShownItemIndex)return N("~ First Shown Item Index",e.firstShownItemIndex,"is not divisible by Columns Count",n,"~"),!0}(e=Te(Te({},e=function(e){return e.beforeResize&&0===e.beforeResize.itemHeights.length&&(e.beforeResize=void 0),e}(e)),{},{verticalSpacing:void 0}),{columnsCount:this.getActualColumnsCount()})&&(N("Reset Layout"),e=Te(Te({},e),c.call(this,e.items))),e}function c(e){var t=e.length,n=this.layout.getInitialLayoutValues({itemsCount:t,columnsCount:this.getActualColumnsCount()}),i=n.firstShownItemIndex,r=n.lastShownItemIndex,o=n.beforeItemsHeight,s=n.afterItemsHeight,a=new Array(t);return this.onBeforeShowItems(e,a,i,r),{itemHeights:a,columnsCount:this.getActualColumnsCountForState(),verticalSpacing:this.verticalSpacing,firstShownItemIndex:i,lastShownItemIndex:r,beforeItemsHeight:o,afterItemsHeight:s}}this.onStateChange=i,this._render=r,this._onItemStateChange=function(e,n){V()&&(_("~ Item state changed ~"),_("Item",e),_("Previous state\n"+JSON.stringify(t.getState().itemStates[e],null,2)),_("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){V()&&(_("~ Set state ~"),_(He(e))),e.items&&(t._isSettingNewItems||W("A `stateUpdate` can only contain `items` property as a result of calling `.setItems()`")),t._isSettingNewItems=void 0,t.previousState=t.getState(),t._updateState(e)},this.getInitialState=function(){return n?h.call(t,n):u.call(t)},this.useState=function(e){var n=e.getState,i=e.updateState;if(t._isActive)throw new Error("[virtual-scroller] `VirtualScroller` has already been started");if(t._getState)throw new Error("[virtual-scroller] Custom state storage has already been configured");if(r)throw new Error("[virtual-scroller] Creating a `VirtualScroller` class instance with a `render()` parameter means using the default (internal) state storage");if(!n||!i)throw new Error("[virtual-scroller] When using a custom state storage, one must supply both `getState()` and `updateState()` functions");t._usesCustomStateStorage=!0,t._getState=n,t._updateState=i},this.useDefaultStateStorage=function(){if(!r)throw new Error("[virtual-scroller] When using the default (internal) state management, one must supply a `render(state, prevState)` function parameter");t._getState=s.bind(t),t._updateState=l.bind(t),a.bind(t)(t.getInitialState())}}function Le(){var e=this;function t(){var e=this.getState(),t=e.firstShownItemIndex,n=e.lastShownItemIndex;_("~ 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 _("Item vertical spacing",i),i;_("Not enough items rendered to measure vertical spacing")}this.getVerticalSpacing=function(){return e.verticalSpacing||0},this.getVerticalSpacingBeforeResize=function(){var t=e.getState().beforeResize;return t&&t.verticalSpacing||0},this.measureVerticalSpacingIfNotMeasured=function(){if(void 0===e.verticalSpacing)return e.verticalSpacing=t.call(e),e.verticalSpacing}}function ze(e){var t=this,n=e.getColumnsCount;if(n){var i={getWidth:function(){return t.scrollableContainer.getWidth()}};this.getActualColumnsCountForState=function(){var e=n(i);if(1!==e)return e}}else this.getActualColumnsCountForState=function(){};this.getActualColumnsCount=function(){return t.getActualColumnsCountForState()||1},this.getColumnsCount=function(){return t.getState()&&t.getState().columnsCount||1}}function 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 Ae(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 Ee(){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 _("~ 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;_("~ Calculated Layout"+(this.bypass?" (bypass)":"")+" ~"),d<ke||N("Layout calculated in",d,"ms"),this.getColumnsCount()&&_("Columns count",this.getColumnsCount()),_("First shown item index",a),_("Last shown item index",l),_("Before items height",c),_("After items height (actual or estimated)",f),_("Average item height (used for estimated after items height calculation)",this.itemHeights.getAverage()),V()&&(_("Item heights",this.getState().itemHeights.slice()),_("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(Ae({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}):(_("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&&(_("~ Validate will-be-hidden item heights. ~"),s.call(this,i,r,a)),n=!1,N("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}),_("~ 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){_("~ Re-measure item height ~"),_("Item",t);var n=e.getState(),i=n.itemHeights,r=n.firstShownItemIndex,a=n.lastShownItemIndex;if(!(t>=r&&t<=a))return N("The item is no longer rendered. This is not necessarily a bug, and could happen, for example, when there're several `onItemHeightChange(i)` calls issued at the same time.");var l=i[t];if(void 0===l)return W('"onItemHeightChange()" has been called for item '.concat(t,", but that item hasn't been rendered before."));var u=o.call(e,t);_("Previous height",l),_("New height",u),l!==u&&(_("~ Item height has changed ~"),s.call(e,t,l,u),e.onUpdateShownItemIndexes({reason:ie}),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?(z(e.layoutTimer),e.layoutTimer=void 0,n||e.layoutTimerStateUpdate?(n=Ae(Ae({},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=L((function(){e.layoutTimerStateUpdate=void 0,e.layoutTimer=void 0,e.onUpdateShownItemIndexes({reason:n,stateUpdate:i})}),0)}}var ke=15;function _e(e){return _e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_e(e)}var Ne=Object.prototype.hasOwnProperty;function We(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}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 De(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){Ue(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 Ue(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Fe(){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||(N('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after appending items'),N("Previously calculated layout",this.previouslyCalculatedLayout),N("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_APPEND";if(this.listHeightMeasurement.hasSnapshot()){if(0===t.firstShownItemIndex){_("~ Restore Scroll Position ~");var f=this.listHeightMeasurement.getListBottomOffsetChange({beforeItemsHeight:t.beforeItemsHeight});return this.listHeightMeasurement.reset(),f?(_("Scroll down by",f),this.scroll.scrollByY(f)):_("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}:(N('Unexpected (non-matching) "firstShownItemIndex" or "lastShownItemIndex" encountered in "onRender()" after prepending items'),N("Previously calculated layout",this.previouslyCalculatedLayout),N("New layout",t),this.previouslyCalculatedLayout=void 0)),"SEAMLESS_PREPEND"}N('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(_("~ Rendered ~"),V()&&_("State",He(o)),t.onStateChange&&(function(e,t){if(We(e,t))return!0;if("object"!==_e(e)||null===e||"object"!==_e(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(!Ne.call(t,n[r])||!We(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,d=c.widthHasChanged;f&&(h=Z),d&&(h=ee,t.itemHeights.reset(),t.verticalSpacing=void 0);var m,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();d||"SEAMLESS_PREPEND"!==n.call(t,I,o)&&(h=re)}if(o.firstShownItemIndex!==s.firstShownItemIndex||o.lastShownItemIndex!==s.lastShownItemIndex||o.items!==s.items||d){var S=t.measureItemHeightsAndSpacing();S&&(m=De(De({},m),S))}var y=t.beforeResize.cleanUpBeforeResizeItemHeights();if(void 0!==y){var b=y.scrollBy,w=y.beforeResize;_("Correct scroll position by",b),t.scroll.scrollByY(b),m=De(De({},m),{},{beforeResize:w})}t._isActive?h?i.call(t,{stateUpdate:m,reason:h}):m?t.updateState(m):_("~ Finished Layout ~"):t._stoppedStateUpdate=m}}}function Ye(){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&&(_("Columns Count changed from",e.getState().columnsCount||1,"to",s),_("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 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 Ge(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){Je(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 Je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $e(){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;_("~ 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),S=c.prependedItemsCount,y=c.appendedItemsCount;n=e.layout.getLayoutUpdateForItemsDiff({firstShownItemIndex:m,lastShownItemIndex:g,beforeItemsHeight:p,afterItemsHeight:I},{prependedItemsCount:S,appendedItemsCount:y},{itemsCount:t.length,columnsCount:e.getActualColumnsCount(),shouldRestoreScrollPosition:v,onResetGridLayout:function(){return f=!0}}),S>0&&(_("Prepend",S,"items"),h=new Array(S).concat(h),l&&(l=new Array(S).concat(l)),v?(_("Will restore scroll position"),e.listHeightMeasurement.snapshotListHeightBeforeAddingNewItems({previousItems:s,newItems:t,prependedItemsCount:S}),void 0!==e.firstNonMeasuredItemIndex&&(e.firstNonMeasuredItemIndex+=S)):(_("Reset layout"),f?(_("Reason: Prepended items count",S,"is not divisible by Columns Count",e.getActualColumnsCount()),h=new Array(t.length)):_("Reason: Prepended items' heights are unknown"),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0)),y>0&&(_("Append",y,"items"),h=h.concat(new Array(y)),l&&(l=l.concat(new Array(y)))),i={prepend:S>0,append:y>0}}else _("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."),_("Previous items",s),_("New items",t),h=new Array(t.length),l=new Array(t.length),n=e.layout.getInitialLayoutValues({itemsCount:t.length,columnsCount:e.getActualColumnsCount()}),e.firstNonMeasuredItemIndex=void 0,e.listHeightMeasurement.reset(),i={replace:!0};_("~ Update state ~"),_("First shown item index",n.firstShownItemIndex),_("Last shown item index",n.lastShownItemIndex),_("Before items height",n.beforeItemsHeight),_("After items height (actual or estimated)",n.afterItemsHeight),e.onBeforeShowItems(t,h,n.firstShownItemIndex,n.lastShownItemIndex),e.newItemsWillBeRendered=Ge(Ge({},i),{},{count:t.length,layout:n});var b=Ge(Ge({},n),{},{items:t,itemStates:l,itemHeights:h});e.beforeResize.shouldIncludeBeforeResizeValuesInState()&&(e.shouldDiscardBeforeResizeItemHeights()?b.beforeResize=void 0:b.beforeResize=e.widthHasChanged?e.widthHasChanged.stateUpdate.beforeResize:e.getState().beforeResize),e._isSettingNewItems=!0,e.updateState(b)},this.getItemsDiff=function(t,n){return function(e,t,n){var i=-1,r=-1;if(e.length>0&&(i=function(e,t,n){for(var i=0;i<e.length;){if(n(e[i],t))return i;i++}return-1}(t,e[0],n),i>=0&&function(e,t,n,i){for(var r=0;r<e.length;){if(t.length<=n+r||!i(t[n+r],e[r]))return!1;r++}return!0}(e,t,i,n)&&(r=i+e.length-1)),i>=0&&r>=0)return{prependedItemsCount:i,appendedItemsCount:t.length-(r+1)}}(t,n,e.isItemEqual)}}function Ke(e,i){var r=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=o.render,a=o.state,l=o.onStateChange,u=o.initialScrollPosition,h=o.onScrollPositionChange,c=o.scrollableContainer,f=o.measureItemsBatchSize,d=void 0===f?50:f,m=o.getColumnsCount,g=o.getItemId,p=o.tbody,I=o.estimatedItemHeight,v=o.onItemInitialRender,S=o.onItemFirstRender,y=o._useTimeoutInRenderLoop,b=o._waitForScrollingToStop,w=o.engine,C=o.bypass,O=o.getScrollableContainer;if(_("~ Initialize ~"),this.engine=w||M,!O&&c&&(O=function(){return c}),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(p){if(this.engine!==M)throw new Error("[virtual-scroller] `tbody` option is only supported for DOM rendering engine");_("~ <tbody/> detected ~"),this.tbody=!0,n()||(_("~ <tbody/> not supported ~"),W(t),C=!0)}C&&_('~ "bypass" mode ~'),this.bypass=C,this._useTimeoutInRenderLoop=y,this.isItemEqual=g?function(e,t){return g(e)===g(t)}:function(e,t){return e===t},v?this.onItemInitialRender=v:S&&(this.onItemInitialRender=function(e){N("`onItemFirstRender(i)` is deprecated, use `onItemInitialRender(item)` instead.");var t=r.getState().items.indexOf(e);t>=0&&S(t)}),a&&(i=a.items),_("Items count",i.length),I&&_("Estimated item height",I),je.call(this,{state:a,onStateChange:l,render:s,items:i}),Le.call(this),ze.call(this,{getColumnsCount:m}),Ee.call(this),Fe.call(this),Ye.call(this),$e.call(this),Qe.call(this,{getScrollableContainer:O,estimatedItemHeight:I,measureItemsBatchSize:d,initialScrollPosition:u,onScrollPositionChange:h,waitForScrollingToStop:b}),a&&(this.itemHeights.readItemHeightsFromState(a),this.beforeResize.initializeFromState(a))}function Qe(e){var t=this,n=e.getScrollableContainer,i=e.estimatedItemHeight,r=e.measureItemsBatchSize,o=e.initialScrollPosition,s=e.onScrollPositionChange,a=e.waitForScrollingToStop;this.itemsContainer=this.engine.createItemsContainer(this.getItemsContainerElement),this.getItemsContainerElement()&&this.itemsContainer.clear(),this.scrollableContainer=this.engine.createScrollableContainer(n,this.getItemsContainerElement),this.itemHeights=new we({container:this.itemsContainer,getItemHeight:function(e){return t.getState().itemHeights[e]},setItemHeight:function(e,n){return t.getState().itemHeights[e]=n}}),this.layout=new J({bypass:this.bypass,estimatedItemHeight:i,measureItemsBatchSize:r,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 ae({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(){_("~ Scrollable container resize started ~"),t._isResizing=!0},onResizeStop:function(){_("~ Scrollable container resize finished ~"),t._isResizing=void 0},onNoChange:function(){t.onUpdateShownItemIndexes({reason:ne})},onHeightChange:function(){return t.onUpdateShownItemIndexes({reason:te})},onWidthChange:function(e,n){_("~ Scrollable container width changed from",e,"to",n,"~"),t.onResize()}}),this.scroll=new Ie({bypass:this.bypass,scrollableContainer:this.scrollableContainer,itemsContainer:this.itemsContainer,waitForScrollingToStop:a,onScroll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delayed;t.onUpdateShownItemIndexes({reason:n?K:$})},initialScrollPosition:o,onScrollPositionChange:s,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 ye({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 de({getState:this.getState,getVerticalSpacing:this.getVerticalSpacing,getColumnsCount:this.getColumnsCount})}function Xe(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?Xe(Object(n),!0).forEach((function(t){nt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function et(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function tt(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 nt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var it=function(){function e(t,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};et(this,e),nt(this,"stop",(function(){if(!i._isActive)throw new Error("[virtual-scroller] Can't stop a `VirtualScroller` that hasn't been started");i._isActive=!1,_("~ Stop ~"),i.resize.stop(),i.scroll.stop(),i.listTopOffsetWatcher&&i.listTopOffsetWatcher.isStarted()&&i.listTopOffsetWatcher.stop(),i.cancelLayoutTimer({})})),nt(this,"updateLayout",(function(){i.hasToBeStarted(),i.onUpdateShownItemIndexes({reason:Q})})),nt(this,"onRender",(function(){i._onRender(i.getState(),i.previousState)})),Ke.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())),_("~ 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=Ze(Ze({},e),t)),this.resize.start(),this.scroll.start(),void 0===this.getState().scrollableContainerWidth){var n=this.scrollableContainer.getWidth();e=Ze(Ze({},e),{},{scrollableContainerWidth:n})}else{var o=this.scrollableContainer.getWidth(),s=this.getState().scrollableContainerWidth;if(o!==s)return _("~ 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:X,stateUpdate:e})}},{key:"hasToBeStarted",value:function(){if(!this._isActive)throw new Error("[virtual-scroller] `VirtualScroller` hasn't been started")}},{key:"getItemScrollPosition",value:function(e){var t=this.layout.getItemTopOffset(e);if(void 0!==t)return this.getListTopOffsetInsideScrollableContainer()+t}},{key:"onItemHeightChange",value:function(e){this.hasToBeStarted(),this._onItemHeightChange(e)}},{key:"onItemStateChange",value:function(e,t){this.hasToBeStarted(),this._onItemStateChange(e,t)}},{key:"setItems",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.hasToBeStarted(),this._setItems(e,t)}}],n&&tt(t.prototype,n),o&&tt(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}(),rt=["onMount","onItemUnmount"];function ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function st(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ot(Object(n),!0).forEach((function(t){ht(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ot(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function at(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 lt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ut(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 ht(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ct=function(){function t(n,i,r){var o=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};lt(this,t),ht(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||(_("DOM: Remove element for item index",h),o.unmountItem(o.container.childNodes[h-n.firstShownItemIndex])),h--;else for(_("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?(_("DOM: Prepend element for item index",d),o.container.insertBefore(m,f)):(_("DOM: Append element for item index",d),o.container.appendChild(m))}d++}})),ht(this,"onUnmount",(function(){N("`.onUnmount()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),ht(this,"destroy",(function(){N("`.destroy()` instance method name is deprecated, use `.stop()` instance method name instead."),o.stop()})),ht(this,"stop",(function(){o.virtualScroller.stop()})),ht(this,"start",(function(){o.virtualScroller.start()})),this.container=n,this.renderItem=r;var a=s.onMount,l=s.onItemUnmount,u=at(s,rt);this.onItemUnmount=l,this.tbody="TBODY"===this.container.tagName,this.virtualScroller=new it((function(){return o.container}),i,st(st({},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:"updateItems",value:function(e,t){this.setItems(e,t)}},{key:"setItems",value:function(e,t){this.virtualScroller.setItems(e,t)}}],i&&ut(n.prototype,i),r&&ut(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}();return ct}));
|
|
2
2
|
//# sourceMappingURL=virtual-scroller-dom.js.map
|