react-virtuoso 4.3.11 → 4.4.1
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/dist/index.cjs +1 -1
- package/dist/index.d.ts +26 -1
- package/dist/index.mjs +182 -70
- package/package.json +3 -2
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("react-dom"),o=0,n=1,r=2,i=4;function l(e,t){return o=>e(t(o))}function s(e,t){return t(e)}function c(e,t){return o=>e(t,o)}function a(e,t){return()=>e(t)}function u(e,t){return t(e),e}function d(...e){return e}function f(e){e()}function m(e){return()=>e}function h(e){return void 0!==e}function g(){}function p(e,t){return e(n,t)}function v(e,t){e(o,t)}function x(e){e(r)}function I(e){return e(i)}function T(e,t){return p(e,c(t,o))}function w(e,t){const o=e(n,(e=>{o(),t(e)}));return o}function S(){const e=[];return(t,i)=>{switch(t){case r:return void e.splice(0,e.length);case n:return e.push(i),()=>{const t=e.indexOf(i);t>-1&&e.splice(t,1)};case o:return void e.slice().forEach((e=>{e(i)}));default:throw new Error(`unrecognized action ${t}`)}}}function C(e){let t=e;const r=S();return(e,l)=>{switch(e){case n:l(t);break;case o:t=l;break;case i:return t}return r(e,l)}}function E(e){return u(S(),(t=>T(e,t)))}function H(e,t){return u(C(t),(t=>T(e,t)))}function y(e,...t){const o=function(...e){return t=>e.reduceRight(s,t)}(...t);return(t,i)=>{switch(t){case n:return p(e,o(i));case r:return void x(e)}}}function b(e,t){return e===t}function z(e=b){let t;return o=>n=>{e(t,n)||(t=n,o(n))}}function R(e){return t=>o=>{e(o)&&t(o)}}function B(e){return t=>l(t,e)}function k(e){return t=>()=>t(e)}function P(e,t){return o=>n=>o(t=e(t,n))}function L(e){return t=>o=>{e>0?e--:t(o)}}function O(e){let t,o=null;return n=>r=>{o=r,t||(t=setTimeout((()=>{t=void 0,n(o)}),e))}}function M(e){let t,o;return n=>r=>{t=r,o&&clearTimeout(o),o=setTimeout((()=>{n(t)}),e)}}function F(...e){const t=new Array(e.length);let o=0,n=null;const r=Math.pow(2,e.length)-1;return e.forEach(((e,i)=>{const l=Math.pow(2,i);p(e,(e=>{const s=o;o|=l,t[i]=e,s!==r&&o===r&&n&&(n(),n=null)}))})),e=>i=>{const l=()=>e([i].concat(t));o===r?l():n=l}}function W(...e){return function(t,o){switch(t){case n:return function(...e){return()=>{e.map(f)}}(...e.map((e=>p(e,o))));case r:return;default:throw new Error(`unrecognized action ${t}`)}}}function V(e,t=b){return y(e,z(t))}function A(...e){const t=S(),o=new Array(e.length);let i=0;const l=Math.pow(2,e.length)-1;return e.forEach(((e,n)=>{const r=Math.pow(2,n);p(e,(e=>{o[n]=e,i|=r,i===l&&v(t,o)}))})),function(e,s){switch(e){case n:return i===l&&s(o),p(t,s);case r:return x(t);default:throw new Error(`unrecognized action ${e}`)}}}function D(e,t=[],{singleton:o}={singleton:!0}){return{id:G(),constructor:e,dependencies:t,singleton:o}}const G=()=>Symbol();const N="undefined"!=typeof document?e.useLayoutEffect:e.useEffect;function _(t,o,i){const l=Object.keys(o.required||{}),s=Object.keys(o.optional||{}),d=Object.keys(o.methods||{}),f=Object.keys(o.events||{}),h=e.createContext({});function T(e,t){e.propsReady&&v(e.propsReady,!1);for(const n of l){v(e[o.required[n]],t[n])}for(const n of s)if(n in t){v(e[o.optional[n]],t[n])}e.propsReady&&v(e.propsReady,!0)}function w(e){return f.reduce(((t,i)=>(t[i]=function(e){let t,o;const i=()=>t&&t();return function(l,s){switch(l){case n:if(s){if(o===s)return;return i(),o=s,t=p(e,s),t}return i(),g;case r:return i(),void(o=null);default:throw new Error(`unrecognized action ${l}`)}}}(e[o.events[i]]),t)),{})}const S=e.forwardRef(((n,r)=>{const{children:c,...g}=n,[I]=e.useState((()=>u(function(e){const t=new Map,o=({id:e,constructor:n,dependencies:r,singleton:i})=>{if(i&&t.has(e))return t.get(e);const l=n(r.map((e=>o(e))));return i&&t.set(e,l),l};return o(e)}(t),(e=>T(e,g))))),[S]=e.useState(a(w,I));return N((()=>{for(const e of f)e in g&&p(S[e],g[e]);return()=>{Object.values(S).map(x)}}),[g,S,I]),N((()=>{T(I,g)})),e.useImperativeHandle(r,m(function(e){return d.reduce(((t,n)=>(t[n]=t=>{v(e[o.methods[n]],t)},t)),{})}(I))),e.createElement(h.Provider,{value:I},i?e.createElement(i,function(e,t){const o={},n={};let r=0;const i=e.length;for(;r<i;)n[e[r]]=1,r+=1;for(const l in t)n.hasOwnProperty(l)||(o[l]=t[l]);return o}([...l,...s,...f],g),c):c)}));return{Component:S,usePublisher:t=>e.useCallback(c(v,e.useContext(h)[t]),[t]),useEmitterValue:t=>{const o=e.useContext(h)[t],[n,r]=e.useState(a(I,o));return N((()=>p(o,(e=>{e!==n&&r(m(e))}))),[o,n]),n},useEmitter:(t,o)=>{const n=e.useContext(h)[t];N((()=>p(n,o)),[o,n])}}}const U="undefined"!=typeof document?e.useLayoutEffect:e.useEffect;var $=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))($||{});const j={0:"debug",1:"log",2:"warn",3:"error"},K=D((()=>{const e=C(3);return{log:C(((t,o,n=1)=>{var r;n>=(null!=(r=("undefined"==typeof globalThis?window:globalThis).VIRTUOSO_LOG_LEVEL)?r:I(e))&&console[j[n]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",t,o)})),logLevel:e}}),[],{singleton:!0});function q(t,o=!0){const n=e.useRef(null);let r=e=>{};if("undefined"!=typeof ResizeObserver){const i=e.useMemo((()=>new ResizeObserver((e=>{const o=e[0].target;null!==o.offsetParent&&t(o)}))),[t]);r=e=>{e&&o?(i.observe(e),n.current=e):(n.current&&i.unobserve(n.current),n.current=null)}}return{ref:n,callbackRef:r}}function Y(e,t=!0){return q(e,t).callbackRef}function Z(t,o,n,r,i,l,s){const c=e.useCallback((e=>{const n=function(e,t,o,n){const r=e.length;if(0===r)return null;const i=[];for(let l=0;l<r;l++){const r=e.item(l);if(!r||void 0===r.dataset.index)continue;const s=parseInt(r.dataset.index),c=parseFloat(r.dataset.knownSize),a=t(r,o);if(0===a&&n("Zero-sized element, this should not happen",{child:r},$.ERROR),a===c)continue;const u=i[i.length-1];0===i.length||u.size!==a||u.endIndex!==s-1?i.push({startIndex:s,endIndex:s,size:a}):i[i.length-1].endIndex++}return i}(e.children,o,"offsetHeight",i);let c=e.parentElement;for(;!c.dataset.virtuosoScroller;)c=c.parentElement;const a="window"===c.lastElementChild.dataset.viewportType,u=s?s.scrollTop:a?window.pageYOffset||document.documentElement.scrollTop:c.scrollTop,d=s?s.scrollHeight:a?document.documentElement.scrollHeight:c.scrollHeight,f=s?s.offsetHeight:a?window.innerHeight:c.offsetHeight;r({scrollTop:Math.max(u,0),scrollHeight:d,viewportHeight:f}),null==l||l(function(e,t,o){"normal"===t||(null==t?void 0:t.endsWith("px"))||o(`${e} was not resolved to pixel value correctly`,t,$.WARN);if("normal"===t)return 0;return parseInt(null!=t?t:"0",10)}("row-gap",getComputedStyle(e).rowGap,i)),null!==n&&t(n)}),[t,o,i,l,s,r]);return q(c,n)}function J(e,t){return Math.round(e.getBoundingClientRect()[t])}function Q(e,t){return Math.abs(e-t)<1.01}function X(o,n,r,i=g,l){const s=e.useRef(null),c=e.useRef(null),a=e.useRef(null),u=e.useCallback((e=>{const r=e.target,i=r===window||r===document,l=i?window.pageYOffset||document.documentElement.scrollTop:r.scrollTop,s=i?document.documentElement.scrollHeight:r.scrollHeight,u=i?window.innerHeight:r.offsetHeight,d=()=>{o({scrollTop:Math.max(l,0),scrollHeight:s,viewportHeight:u})};e.suppressFlushSync?d():t.flushSync(d),null!==c.current&&(l===c.current||l<=0||l===s-u)&&(c.current=null,n(!0),a.current&&(clearTimeout(a.current),a.current=null))}),[o,n]);return e.useEffect((()=>{const e=l||s.current;return i(l||s.current),u({target:e,suppressFlushSync:!0}),e.addEventListener("scroll",u,{passive:!0}),()=>{i(null),e.removeEventListener("scroll",u)}}),[s,u,r,i,l]),{scrollerRef:s,scrollByCallback:function(e){s.current.scrollBy(e)},scrollToCallback:function(e){const t=s.current;if(!t||"offsetHeight"in t&&0===t.offsetHeight)return;const r="smooth"===e.behavior;let i,l,u;t===window?(l=Math.max(J(document.documentElement,"height"),document.documentElement.scrollHeight),i=window.innerHeight,u=document.documentElement.scrollTop):(l=t.scrollHeight,i=J(t,"height"),u=t.scrollTop);const d=l-i;if(e.top=Math.ceil(Math.max(Math.min(d,e.top),0)),Q(i,l)||e.top===u)return o({scrollTop:u,scrollHeight:l,viewportHeight:i}),void(r&&n(!0));r?(c.current=e.top,a.current&&clearTimeout(a.current),a.current=setTimeout((()=>{a.current=null,c.current=null,n(!0)}),1e3)):c.current=null,t.scrollTo(e)}}}const ee=D((()=>{const e=S(),t=S(),o=C(0),n=S(),r=C(0),i=S(),l=S(),s=C(0),c=C(0),a=C(0),u=C(0),d=S(),f=S(),m=C(!1);return T(y(e,B((({scrollTop:e})=>e))),t),T(y(e,B((({scrollHeight:e})=>e))),l),T(t,r),{scrollContainerState:e,scrollTop:t,viewportHeight:i,headerHeight:s,fixedHeaderHeight:c,fixedFooterHeight:a,footerHeight:u,scrollHeight:l,smoothScrollTargetReached:n,scrollTo:d,scrollBy:f,statefulScrollTop:r,deviation:o,scrollingInProgress:m}}),[],{singleton:!0}),te={lvl:0};function oe(e,t,o,n=te,r=te){return{k:e,v:t,lvl:o,l:n,r:r}}function ne(e){return e===te}function re(){return te}function ie(e,t){if(ne(e))return te;const{k:o,l:n,r:r}=e;if(t===o){if(ne(n))return r;if(ne(r))return n;{const[t,o]=de(n);return pe(me(e,{k:t,v:o,l:fe(n)}))}}return pe(me(e,t<o?{l:ie(n,t)}:{r:ie(r,t)}))}function le(e,t){if(!ne(e))return t===e.k?e.v:t<e.k?le(e.l,t):le(e.r,t)}function se(e,t,o="k"){if(ne(e))return[-1/0,void 0];if(Number(e[o])===t)return[e.k,e.v];if(Number(e[o])<t){const n=se(e.r,t,o);return n[0]===-1/0?[e.k,e.v]:n}return se(e.l,t,o)}function ce(e,t,o){return ne(e)?oe(t,o,1):t===e.k?me(e,{k:t,v:o}):t<e.k?ge(me(e,{l:ce(e.l,t,o)})):ge(me(e,{r:ce(e.r,t,o)}))}function ae(e,t,o){if(ne(e))return[];const{k:n,v:r,l:i,r:l}=e;let s=[];return n>t&&(s=s.concat(ae(i,t,o))),n>=t&&n<=o&&s.push({k:n,v:r}),n<=o&&(s=s.concat(ae(l,t,o))),s}function ue(e){return ne(e)?[]:[...ue(e.l),{k:e.k,v:e.v},...ue(e.r)]}function de(e){return ne(e.r)?[e.k,e.v]:de(e.r)}function fe(e){return ne(e.r)?e.l:pe(me(e,{r:fe(e.r)}))}function me(e,t){return oe(void 0!==t.k?t.k:e.k,void 0!==t.v?t.v:e.v,void 0!==t.lvl?t.lvl:e.lvl,void 0!==t.l?t.l:e.l,void 0!==t.r?t.r:e.r)}function he(e){return ne(e)||e.lvl>e.r.lvl}function ge(e){return Ie(Te(e))}function pe(e){const{l:t,r:o,lvl:n}=e;if(o.lvl>=n-1&&t.lvl>=n-1)return e;if(n>o.lvl+1){if(he(t))return Te(me(e,{lvl:n-1}));if(ne(t)||ne(t.r))throw new Error("Unexpected empty nodes");return me(t.r,{l:me(t,{r:t.r.l}),r:me(e,{l:t.r.r,lvl:n-1}),lvl:n})}if(he(e))return Ie(me(e,{lvl:n-1}));if(ne(o)||ne(o.l))throw new Error("Unexpected empty nodes");{const t=o.l,r=he(t)?o.lvl-1:o.lvl;return me(t,{l:me(e,{r:t.l,lvl:n-1}),r:Ie(me(o,{l:t.r,lvl:r})),lvl:t.lvl+1})}}function ve(e,t,o){if(ne(e))return[];const n=se(e,t)[0];return xe(ae(e,n,o),(({k:e,v:t})=>({index:e,value:t})))}function xe(e,t){const o=e.length;if(0===o)return[];let{index:n,value:r}=t(e[0]);const i=[];for(let l=1;l<o;l++){const{index:o,value:s}=t(e[l]);i.push({start:n,end:o-1,value:r}),n=o,r=s}return i.push({start:n,end:1/0,value:r}),i}function Ie(e){const{r:t,lvl:o}=e;return ne(t)||ne(t.r)||t.lvl!==o||t.r.lvl!==o?e:me(t,{l:me(e,{r:t.l}),lvl:o+1})}function Te(e){const{l:t}=e;return ne(t)||t.lvl!==e.lvl?e:me(t,{r:me(e,{l:t.r})})}function we(e,t,o,n=0){let r=e.length-1;for(;n<=r;){const i=Math.floor((n+r)/2),l=o(e[i],t);if(0===l)return i;if(-1===l){if(r-n<2)return i-1;r=i-1}else{if(r===n)return i;n=i+1}}throw new Error(`Failed binary finding record in array - ${e.join(",")}, searched for ${t}`)}function Se(e,t,o){return e[we(e,t,o)]}const Ce=D((()=>({recalcInProgress:C(!1)})),[],{singleton:!0});function Ee(e){const{size:t,startIndex:o,endIndex:n}=e;return e=>e.start===o&&(e.end===n||e.end===1/0)&&e.value===t}function He(e,t){let o=0,n=0;for(;o<e;)o+=t[n+1]-t[n]-1,n++;return n-(o===e?0:1)}function ye({index:e},t){return t===e?0:t<e?-1:1}function be({offset:e},t){return t===e?0:t<e?-1:1}function ze(e){return{index:e.index,value:e}}function Re(e,t,o,n=0){return n>0&&(t=Math.max(t,Se(e,n,ye).offset)),xe(function(e,t,o,n){const r=we(e,t,n),i=we(e,o,n,r);return e.slice(r,i+1)}(e,t,o,be),ze)}function Be(e,t,o,n){let r=e,i=0,l=0,s=0,c=0;if(0!==t){c=we(r,t-1,ye);s=r[c].offset;const e=se(o,t-1);i=e[0],l=e[1],r.length&&r[c].size===se(o,t)[1]&&(c-=1),r=r.slice(0,c+1)}else r=[];for(const{start:a,value:u}of ve(o,t,1/0)){const e=a-i,t=e*l+s+e*n;r.push({offset:t,size:u,index:a}),i=a,s=t,l=u}return{offsetTree:r,lastIndex:i,lastOffset:s,lastSize:l}}function ke(e,[t,o,n,r]){t.length>0&&n("received item sizes",t,$.DEBUG);const i=e.sizeTree;let l=i,s=0;if(o.length>0&&ne(i)&&2===t.length){const e=t[0].size,n=t[1].size;l=o.reduce(((t,o)=>ce(ce(t,o,e),o+1,n)),l)}else[l,s]=function(e,t){let o=ne(e)?0:1/0;for(const n of t){const{size:t,startIndex:r,endIndex:i}=n;if(o=Math.min(o,r),ne(e)){e=ce(e,0,t);continue}const l=ve(e,r-1,i+1);if(l.some(Ee(n)))continue;let s=!1,c=!1;for(const{start:o,end:n,value:a}of l)s?(i>=o||t===a)&&(e=ie(e,o)):(c=a!==t,s=!0),n>i&&i>=o&&a!==t&&(e=ce(e,i+1,a));c&&(e=ce(e,r,t))}return[e,o]}(l,t);if(l===i)return e;const{offsetTree:c,lastIndex:a,lastSize:u,lastOffset:d}=Be(e.offsetTree,s,l,r);return{sizeTree:l,offsetTree:c,lastIndex:a,lastOffset:d,lastSize:u,groupOffsetTree:o.reduce(((e,t)=>ce(e,t,Pe(t,c,r))),re()),groupIndices:o}}function Pe(e,t,o){if(0===t.length)return 0;const{offset:n,index:r,size:i}=Se(t,e,ye),l=e-r,s=i*l+(l-1)*o+n;return s>0?s+o:s}function Le(e,t,o){if(function(e){return void 0!==e.groupIndex}(e))return t.groupIndices[e.groupIndex]+1;{let n=Oe("LAST"===e.index?o:e.index,t);return n=Math.max(0,n,Math.min(o,n)),n}}function Oe(e,t){if(!Me(t))return e;let o=0;for(;t.groupIndices[o]<=e+o;)o++;return e+o}function Me(e){return!ne(e.groupOffsetTree)}const Fe={offsetHeight:"height",offsetWidth:"width"},We=D((([{log:e},{recalcInProgress:t}])=>{const o=S(),n=S(),r=H(n,0),i=S(),l=S(),s=C(0),c=C([]),a=C(void 0),u=C(void 0),d=C(((e,t)=>J(e,Fe[t]))),f=C(void 0),m=C(0),h={offsetTree:[],sizeTree:re(),groupOffsetTree:re(),lastIndex:0,lastOffset:0,lastSize:0,groupIndices:[]},g=H(y(o,F(c,e,m),P(ke,h),z()),h),x=H(y(c,z(),P(((e,t)=>({prev:e.current,current:t})),{prev:[],current:[]}),B((({prev:e})=>e))),[]);T(y(c,R((e=>e.length>0)),F(g,m),B((([e,t,o])=>{const n=e.reduce(((e,n,r)=>ce(e,n,Pe(n,t.offsetTree,o)||r)),re());return{...t,groupIndices:e,groupOffsetTree:n}}))),g),T(y(n,F(g),R((([e,{lastIndex:t}])=>e<t)),B((([e,{lastIndex:t,lastSize:o}])=>[{startIndex:e,endIndex:t,size:o}]))),o),T(a,u);const w=H(y(a,B((e=>void 0===e))),!0);T(y(u,R((e=>void 0!==e&&ne(I(g).sizeTree))),B((e=>[{startIndex:0,endIndex:0,size:e}]))),o);const b=E(y(o,F(g),P((({sizes:e},[t,o])=>({changed:o!==e,sizes:o})),{changed:!1,sizes:h}),B((e=>e.changed))));p(y(s,P(((e,t)=>({diff:e.prev-t,prev:t})),{diff:0,prev:0}),B((e=>e.diff))),(e=>{const{groupIndices:o}=I(g);if(e>0)v(t,!0),v(i,e+He(e,o));else if(e<0){const t=I(x);t.length>0&&(e-=He(-e,t)),v(l,e)}})),p(y(s,F(e)),(([e,t])=>{e<0&&t("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:s},$.ERROR)}));const k=E(i);T(y(i,F(g),B((([e,t])=>{const o=t.groupIndices.length>0,n=[],r=t.lastSize;if(o){const o=le(t.sizeTree,0);let i=0,l=0;for(;i<e;){const e=t.groupIndices[l],s=t.groupIndices.length===l+1?1/0:t.groupIndices[l+1]-e-1;n.push({startIndex:e,endIndex:e,size:o}),n.push({startIndex:e+1,endIndex:e+1+s-1,size:r}),l++,i+=s+1}const s=ue(t.sizeTree);return i!==e&&s.shift(),s.reduce(((t,{k:o,v:n})=>{let r=t.ranges;return 0!==t.prevSize&&(r=[...t.ranges,{startIndex:t.prevIndex,endIndex:o+e-1,size:t.prevSize}]),{ranges:r,prevIndex:o+e,prevSize:n}}),{ranges:n,prevIndex:e,prevSize:0}).ranges}return ue(t.sizeTree).reduce(((t,{k:o,v:n})=>({ranges:[...t.ranges,{startIndex:t.prevIndex,endIndex:o+e-1,size:t.prevSize}],prevIndex:o+e,prevSize:n})),{ranges:[],prevIndex:0,prevSize:r}).ranges}))),o);const L=E(y(l,F(g,m),B((([e,{offsetTree:t},o])=>Pe(-e,t,o)))));return T(y(l,F(g,m),B((([e,t,o])=>{if(t.groupIndices.length>0){if(ne(t.sizeTree))return t;let n=re();const r=I(x);let i=0,l=0,s=0;for(;i<-e;){s=r[l];const e=r[l+1]-s-1;l++,i+=e+1}n=ue(t.sizeTree).reduce(((t,{k:o,v:n})=>ce(t,Math.max(0,o+e),n)),n);if(i!==-e){n=ce(n,0,le(t.sizeTree,s));n=ce(n,1,se(t.sizeTree,1-e)[1])}return{...t,sizeTree:n,...Be(t.offsetTree,0,n,o)}}{const n=ue(t.sizeTree).reduce(((t,{k:o,v:n})=>ce(t,Math.max(0,o+e),n)),re());return{...t,sizeTree:n,...Be(t.offsetTree,0,n,o)}}}))),g),{data:f,totalCount:n,sizeRanges:o,groupIndices:c,defaultItemSize:u,fixedItemSize:a,unshiftWith:i,shiftWith:l,shiftWithOffset:L,beforeUnshiftWith:k,firstItemIndex:s,gap:m,sizes:g,listRefresh:b,statefulTotalCount:r,trackItemSizes:w,itemSize:d}}),d(K,Ce),{singleton:!0}),Ve="undefined"!=typeof document&&"scrollBehavior"in document.documentElement.style;function Ae(e){const t="number"==typeof e?{index:e}:e;return t.align||(t.align="start"),t.behavior&&Ve||(t.behavior="auto"),t.offset||(t.offset=0),t}const De=D((([{sizes:e,totalCount:t,listRefresh:o,gap:n},{scrollingInProgress:r,viewportHeight:i,scrollTo:l,smoothScrollTargetReached:s,headerHeight:c,footerHeight:a,fixedHeaderHeight:u,fixedFooterHeight:d},{log:f}])=>{const m=S(),h=C(0);let g=null,x=null,I=null;function E(){g&&(g(),g=null),I&&(I(),I=null),x&&(clearTimeout(x),x=null),v(r,!1)}return T(y(m,F(e,i,t,h,c,a,f),F(n,u,d),B((([[e,t,n,i,l,c,a,u],d,f,h])=>{const T=Ae(e),{align:S,behavior:C,offset:H}=T,b=i-1,z=Le(T,t,b);let R=Pe(z,t.offsetTree,d)+c;"end"===S?(R+=f+se(t.sizeTree,z)[1]-n+h,z===b&&(R+=a)):"center"===S?R+=(f+se(t.sizeTree,z)[1]-n+h)/2:R-=l,H&&(R+=H);const B=t=>{E(),t?(u("retrying to scroll to",{location:e},$.DEBUG),v(m,e)):u("list did not change, scroll successful",{},$.DEBUG)};if(E(),"smooth"===C){let e=!1;I=p(o,(t=>{e=e||t})),g=w(s,(()=>{B(e)}))}else g=w(y(o,(k=150,e=>{const t=setTimeout((()=>{e(!1)}),k);return o=>{o&&(e(!0),clearTimeout(t))}})),B);var k;return x=setTimeout((()=>{E()}),1200),v(r,!0),u("scrolling from index to",{index:z,top:R,behavior:C},$.DEBUG),{top:R,behavior:C}}))),l),{scrollToIndex:m,topListHeight:h}}),d(We,ee,K),{singleton:!0});const Ge="up",Ne="down",_e={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},Ue=D((([{scrollContainerState:e,scrollTop:t,viewportHeight:o,headerHeight:n,footerHeight:r,scrollBy:i}])=>{const l=C(!1),s=C(!0),c=S(),a=S(),u=C(4),d=C(0),f=H(y(W(y(V(t),L(1),k(!0)),y(V(t),L(1),k(!1),M(100))),z()),!1),m=H(y(W(y(i,k(!0)),y(i,k(!1),M(200))),z()),!1);T(y(A(V(t),V(d)),B((([e,t])=>e<=t)),z()),s),T(y(s,O(50)),a);const h=E(y(A(e,V(o),V(n),V(r),V(u)),P(((e,[{scrollTop:t,scrollHeight:o},n,r,i,l])=>{const s={viewportHeight:n,scrollTop:t,scrollHeight:o};if(t+n-o>-l){let o,n;return t>e.state.scrollTop?(o="SCROLLED_DOWN",n=e.state.scrollTop-t):(o="SIZE_DECREASED",n=e.state.scrollTop-t||e.scrollTopDelta),{atBottom:!0,state:s,atBottomBecause:o,scrollTopDelta:n}}let c;return c=s.scrollHeight>e.state.scrollHeight?"SIZE_INCREASED":n<e.state.viewportHeight?"VIEWPORT_HEIGHT_DECREASING":t<e.state.scrollTop?"SCROLLING_UPWARDS":"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:c,state:s}}),_e),z(((e,t)=>e&&e.atBottom===t.atBottom)))),g=H(y(e,P(((e,{scrollTop:t,scrollHeight:o,viewportHeight:n})=>{if(Q(e.scrollHeight,o))return{scrollTop:t,scrollHeight:o,jump:0,changed:!1};{const r=o-(t+n)<1;return e.scrollTop!==t&&r?{scrollHeight:o,scrollTop:t,jump:e.scrollTop-t,changed:!0}:{scrollHeight:o,scrollTop:t,jump:0,changed:!0}}}),{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),R((e=>e.changed)),B((e=>e.jump))),0);T(y(h,B((e=>e.atBottom))),l),T(y(l,O(50)),c);const p=C(Ne);T(y(e,B((({scrollTop:e})=>e)),z(),P(((e,t)=>I(m)?{direction:e.direction,prevScrollTop:t}:{direction:t<e.prevScrollTop?Ge:Ne,prevScrollTop:t}),{direction:Ne,prevScrollTop:0}),B((e=>e.direction))),p),T(y(e,O(50),k("none")),p);const v=C(0);return T(y(f,R((e=>!e)),k(0)),v),T(y(t,O(100),F(f),R((([e,t])=>!!t)),P((([e,t],[o])=>[t,o]),[0,0]),B((([e,t])=>t-e))),v),{isScrolling:f,isAtTop:s,isAtBottom:l,atBottomState:h,atTopStateChange:a,atBottomStateChange:c,scrollDirection:p,atBottomThreshold:u,atTopThreshold:d,scrollVelocity:v,lastJumpDueToItemResize:g}}),d(ee)),$e=D((([{log:e}])=>{const t=C(!1),o=E(y(t,R((e=>e)),z()));return p(t,(t=>{t&&I(e)("props updated",{},$.DEBUG)})),{propsReady:t,didMount:o}}),d(K),{singleton:!0});function je(e,t){0==e?t():requestAnimationFrame((()=>je(e-1,t)))}const Ke=D((([{sizes:e,listRefresh:t,defaultItemSize:o},{scrollTop:n},{scrollToIndex:r},{didMount:i}])=>{const l=C(!0),s=C(0),c=C(!1);return T(y(i,F(s),R((([e,t])=>!!t)),k(!1)),l),p(y(A(t,i),F(l,e,o,c),R((([[,e],t,{sizeTree:o},n,r])=>e&&(!ne(o)||h(n))&&!t&&!r)),F(s)),(([,e])=>{v(c,!0),je(2,(()=>{w(n,(()=>v(l,!0))),v(r,e)}))})),{scrolledToInitialItem:l,initialTopMostItemIndex:s}}),d(We,ee,De,$e),{singleton:!0});function qe(e){return!!e&&("smooth"===e?"smooth":"auto")}const Ye=D((([{totalCount:e,listRefresh:t},{isAtBottom:o,atBottomState:n},{scrollToIndex:r},{scrolledToInitialItem:i},{propsReady:l,didMount:s},{log:c},{scrollingInProgress:a}])=>{const u=C(!1),d=S();let f=null;function m(e){v(r,{index:"LAST",align:"end",behavior:e})}function h(e){const t=w(n,(t=>{!e||t.atBottom||"SIZE_INCREASED"!==t.notAtBottomBecause||f||(I(c)("scrolling to bottom due to increased size",{},$.DEBUG),m("auto"))}));setTimeout(t,100)}return p(y(A(y(V(e),L(1)),s),F(V(u),o,i,a),B((([[e,t],o,n,r,i])=>{let l=t&&r,s="auto";return l&&(s=((e,t)=>"function"==typeof e?qe(e(t)):t&&qe(e))(o,n||i),l=l&&!!s),{totalCount:e,shouldFollow:l,followOutputBehavior:s}})),R((({shouldFollow:e})=>e))),(({totalCount:e,followOutputBehavior:o})=>{f&&(f(),f=null),f=w(t,(()=>{I(c)("following output to ",{totalCount:e},$.DEBUG),m(o),f=null}))})),p(y(A(V(u),e,l),R((([e,,t])=>e&&t)),P((({value:e},[,t])=>({refreshed:e===t,value:t})),{refreshed:!1,value:0}),R((({refreshed:e})=>e)),F(u,e)),(([,e])=>{h(!1!==e)})),p(d,(()=>{h(!1!==I(u))})),p(A(V(u),n),(([e,t])=>{e&&!t.atBottom&&"VIEWPORT_HEIGHT_DECREASING"===t.notAtBottomBecause&&m("auto")})),{followOutput:u,autoscrollToBottom:d}}),d(We,Ue,De,Ke,$e,K,ee));function Ze(e){return e.reduce(((e,t)=>(e.groupIndices.push(e.totalCount),e.totalCount+=t+1,e)),{totalCount:0,groupIndices:[]})}const Je=D((([{totalCount:e,groupIndices:t,sizes:o},{scrollTop:n,headerHeight:r}])=>{const i=S(),l=S(),s=E(y(i,B(Ze)));return T(y(s,B((e=>e.totalCount))),e),T(y(s,B((e=>e.groupIndices))),t),T(y(A(n,o,r),R((([e,t])=>Me(t))),B((([e,t,o])=>se(t.groupOffsetTree,Math.max(e-o,0),"v")[0])),z(),B((e=>[e]))),l),{groupCounts:i,topItemsIndexes:l}}),d(We,ee));function Qe(e,t){return!(!e||e[0]!==t[0]||e[1]!==t[1])}function Xe(e,t){return!(!e||e.startIndex!==t.startIndex||e.endIndex!==t.endIndex)}const et="top",tt="bottom",ot="none";function nt(e,t,o){return"number"==typeof e?o===Ge&&t===et||o===Ne&&t===tt?e:0:o===Ge?t===et?e.main:e.reverse:t===tt?e.main:e.reverse}function rt(e,t){return"number"==typeof e?e:e[t]||0}const it=D((([{scrollTop:e,viewportHeight:t,deviation:o,headerHeight:n,fixedHeaderHeight:r}])=>{const i=S(),l=C(0),s=C(0),c=C(0);return{listBoundary:i,overscan:c,topListHeight:l,increaseViewportBy:s,visibleRange:H(y(A(V(e),V(t),V(n),V(i,Qe),V(c),V(l),V(r),V(o),V(s)),B((([e,t,o,[n,r],i,l,s,c,a])=>{const u=e-c,d=l+s,f=Math.max(o-u,0);let m=ot;const h=rt(a,et),g=rt(a,tt);return n-=c,r+=o+s,(n+=o+s)>e+d-h&&(m=Ge),(r-=c)<e-f+t+g&&(m=Ne),m!==ot?[Math.max(u-o-nt(i,et,m)-h,0),u-f-s+t+nt(i,tt,m)+g]:null})),R((e=>null!=e)),z(Qe)),[0,0])}}),d(ee),{singleton:!0});const lt={items:[],topItems:[],offsetTop:0,offsetBottom:0,top:0,bottom:0,topListHeight:0,totalCount:0,firstItemIndex:0};function st(e,t,o){if(0===e.length)return[];if(!Me(t))return e.map((e=>({...e,index:e.index+o,originalIndex:e.index})));const n=e[0].index,r=e[e.length-1].index,i=[],l=ve(t.groupOffsetTree,n,r);let s,c=0;for(const a of e){let e;(!s||s.end<a.index)&&(s=l.shift(),c=t.groupIndices.indexOf(s.start)),e=a.index===s.start?{type:"group",index:c}:{index:a.index-(c+1)+o,groupIndex:c},i.push({...e,size:a.size,offset:a.offset,originalIndex:a.index,data:a.data})}return i}function ct(e,t,o,n,r,i){const{lastSize:l,lastOffset:s,lastIndex:c}=r;let a=0,u=0;if(e.length>0){a=e[0].offset;const t=e[e.length-1];u=t.offset+t.size}const d=o-c,f=a,m=s+d*l+(d-1)*n-u;return{items:st(e,r,i),topItems:st(t,r,i),topListHeight:t.reduce(((e,t)=>t.size+e),0),offsetTop:a,offsetBottom:m,top:f,bottom:u,totalCount:o,firstItemIndex:i}}const at=D((([{sizes:e,totalCount:t,data:o,firstItemIndex:n,gap:r},i,{visibleRange:l,listBoundary:s,topListHeight:c},{scrolledToInitialItem:a,initialTopMostItemIndex:d},{topListHeight:f},m,{didMount:g},{recalcInProgress:p}])=>{const v=C([]),x=S();T(i.topItemsIndexes,v);const I=H(y(A(g,p,V(l,Qe),V(t),V(e),V(d),a,V(v),V(n),V(r),o),R((([e,t,,o,,,,,,,n])=>{const r=n&&n.length!==o;return e&&!t&&!r})),B((([,,[e,t],o,n,r,i,l,s,c,a])=>{const d=n,{sizeTree:f,offsetTree:m}=d;if(0===o||0===e&&0===t)return{...lt,totalCount:o};if(ne(f))return ct(function(e,t,o){if(Me(t)){const n=Oe(e,t);return[{index:se(t.groupOffsetTree,n)[0],size:0,offset:0},{index:n,size:0,offset:0,data:o&&o[0]}]}return[{index:e,size:0,offset:0,data:o&&o[0]}]}(function(e,t){const o=t-1;return"number"==typeof e?e:"LAST"===e.index?o:e.index}(r,o),d,a),[],o,c,d,s);const h=[];if(l.length>0){const e=l[0],t=l[l.length-1];let o=0;for(const n of ve(f,e,t)){const r=n.value,i=Math.max(n.start,e),l=Math.min(n.end,t);for(let e=i;e<=l;e++)h.push({index:e,size:r,offset:o,data:a&&a[e]}),o+=r}}if(!i)return ct([],h,o,c,d,s);const g=l.length>0?l[l.length-1]+1:0,p=Re(m,e,t,g);if(0===p.length)return null;const v=o-1;return ct(u([],(o=>{for(const n of p){const r=n.value;let i=r.offset,l=n.start;const s=r.size;if(r.offset<e){l+=Math.floor((e-r.offset+c)/(s+c));const t=l-n.start;i+=t*s+t*c}l<g&&(i+=(g-l)*s,l=g);const u=Math.min(n.end,v);for(let e=l;e<=u&&!(i>=t);e++)o.push({index:e,size:s,offset:i,data:a&&a[e]}),i+=s+c}})),h,o,c,d,s)})),R((e=>null!==e)),z()),lt);T(y(o,R(h),B((e=>null==e?void 0:e.length))),t),T(y(I,B((e=>e.topListHeight))),f),T(f,c),T(y(I,B((e=>[e.top,e.bottom]))),s),T(y(I,B((e=>e.items))),x);return{listState:I,topItemsIndexes:v,endReached:E(y(I,R((({items:e})=>e.length>0)),F(t,o),R((([{items:e},t])=>e[e.length-1].originalIndex===t-1)),B((([,e,t])=>[e-1,t])),z(Qe),B((([e])=>e)))),startReached:E(y(I,O(200),R((({items:e,topItems:t})=>e.length>0&&e[0].originalIndex===t.length)),B((({items:e})=>e[0].index)),z())),rangeChanged:E(y(I,R((({items:e})=>e.length>0)),B((({items:e})=>{let t=0,o=e.length-1;for(;"group"===e[t].type&&t<o;)t++;for(;"group"===e[o].type&&o>t;)o--;return{startIndex:e[t].index,endIndex:e[o].index}})),z(Xe))),itemsRendered:x,...m}}),d(We,Je,it,Ke,De,Ue,$e,Ce),{singleton:!0}),ut=D((([{sizes:e,firstItemIndex:t,data:o,gap:n},{listState:r},{didMount:i}])=>{const l=C(0);return T(y(i,F(l),R((([,e])=>0!==e)),F(e,t,n,o),B((([[,e],t,o,n,r=[]])=>{let i=0;if(t.groupIndices.length>0)for(const s of t.groupIndices){if(s-i>=e)break;i++}const l=e+i;return ct(Array.from({length:l}).map(((e,t)=>({index:t,size:0,offset:0,data:r[t]}))),[],l,n,t,o)}))),r),{initialItemCount:l}}),d(We,at,$e),{singleton:!0}),dt=D((([{scrollVelocity:e}])=>{const t=C(!1),o=S(),n=C(!1);return T(y(e,F(n,t,o),R((([e,t])=>!!t)),B((([e,t,o,n])=>{const{exit:r,enter:i}=t;if(o){if(r(e,n))return!1}else if(i(e,n))return!0;return o})),z()),t),p(y(A(t,e,o),F(n)),(([[e,t,o],n])=>e&&n&&n.change&&n.change(t,o))),{isSeeking:t,scrollSeekConfiguration:n,scrollVelocity:e,scrollSeekRangeChanged:o}}),d(Ue),{singleton:!0}),ft=D((([{topItemsIndexes:e}])=>{const t=C(0);return T(y(t,R((e=>e>0)),B((e=>Array.from({length:e}).map(((e,t)=>t))))),e),{topItemCount:t}}),d(at)),mt=D((([{footerHeight:e,headerHeight:t,fixedHeaderHeight:o,fixedFooterHeight:n},{listState:r}])=>{const i=S(),l=H(y(A(e,n,t,o,r),B((([e,t,o,n,r])=>e+t+o+n+r.offsetBottom+r.bottom))),0);return T(V(l),i),{totalListHeight:l,totalListHeightChanged:i}}),d(ee,at),{singleton:!0});function ht(e){let t,o=!1;return()=>(o||(o=!0,t=e()),t)}const gt=ht((()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent))),pt=D((([{scrollBy:e,scrollTop:t,deviation:o,scrollingInProgress:n},{isScrolling:r,isAtBottom:i,scrollDirection:l,lastJumpDueToItemResize:s},{listState:c},{beforeUnshiftWith:a,shiftWithOffset:u,sizes:d,gap:f},{log:m},{recalcInProgress:h}])=>{const g=E(y(c,F(s),P((([,e,t,o],[{items:n,totalCount:r,bottom:i,offsetBottom:l},s])=>{const c=i+l;let a=0;if(t===r&&e.length>0&&n.length>0){0===n[0].originalIndex&&0===e[0].originalIndex||(a=c-o,0!==a&&(a+=s))}return[a,n,r,c]}),[0,[],0,0]),R((([e])=>0!==e)),F(t,l,n,i,m,h),R((([,e,t,o,,,n])=>!n&&!o&&0!==e&&t===Ge)),B((([[e],,,,,t])=>(t("Upward scrolling compensation",{amount:e},$.DEBUG),e)))));function x(t){t>0?(v(e,{top:-t,behavior:"auto"}),v(o,0)):(v(o,0),v(e,{top:-t,behavior:"auto"}))}return p(y(g,F(o,r)),(([e,t,n])=>{n&>()?v(o,t-e):x(-e)})),p(y(A(H(r,!1),o,h),R((([e,t,o])=>!e&&!o&&0!==t)),B((([e,t])=>t)),O(1)),x),T(y(u,B((e=>({top:-e})))),e),p(y(a,F(d,f),B((([e,{lastSize:t,groupIndices:o,sizeTree:n},r])=>{function i(e){return e*(t+r)}if(0===o.length)return i(e);{let t=0;const r=le(n,0);let l=0,s=0;for(;l<e;){l++,t+=r;let n=o.length===s+1?1/0:o[s+1]-o[s]-1;l+n>e&&(t-=r,n=e-l+1),l+=n,t+=i(n),s++}return t}}))),(t=>{v(o,t),requestAnimationFrame((()=>{v(e,{top:t}),requestAnimationFrame((()=>{v(o,0),v(h,!1)}))}))})),{deviation:o}}),d(ee,Ue,at,We,K,Ce)),vt=D((([{didMount:e},{scrollTo:t},{listState:o}])=>{const n=C(0);return p(y(e,F(n),R((([,e])=>0!==e)),B((([,e])=>({top:e})))),(e=>{w(y(o,L(1),R((e=>e.items.length>1))),(()=>{requestAnimationFrame((()=>{v(t,e)}))}))})),{initialScrollTop:n}}),d($e,ee,at),{singleton:!0}),xt=D((([{viewportHeight:e},{totalListHeight:t}])=>{const o=C(!1);return{alignToBottom:o,paddingTopAddition:H(y(A(o,e,t),R((([e])=>e)),B((([,e,t])=>Math.max(0,e-t))),O(0),z()),0)}}),d(ee,mt),{singleton:!0}),It=D((([{scrollTo:e,scrollContainerState:t}])=>{const o=S(),n=S(),r=S(),i=C(!1),l=C(void 0);return T(y(A(o,n),B((([{viewportHeight:e,scrollTop:t,scrollHeight:o},{offsetTop:n}])=>({scrollTop:Math.max(0,t-n),scrollHeight:o,viewportHeight:e})))),t),T(y(e,F(n),B((([e,{offsetTop:t}])=>({...e,top:e.top+t})))),r),{useWindowScroll:i,customScrollParent:l,windowScrollContainerState:o,windowViewportRect:n,windowScrollTo:r}}),d(ee)),Tt=({itemTop:e,itemBottom:t,viewportTop:o,viewportBottom:n,locationParams:{behavior:r,align:i,...l}})=>e<o?{...l,behavior:r,align:null!=i?i:"start"}:t>n?{...l,behavior:r,align:null!=i?i:"end"}:null,wt=D((([{sizes:e,totalCount:t,gap:o},{scrollTop:n,viewportHeight:r,headerHeight:i,fixedHeaderHeight:l,fixedFooterHeight:s,scrollingInProgress:c},{scrollToIndex:a}])=>{const u=S();return T(y(u,F(e,r,t,i,l,s,n),F(o),B((([[e,t,o,n,r,i,l,s],a])=>{const{done:u,behavior:d,align:f,calculateViewLocation:m=Tt,...h}=e,g=Le(e,t,n-1),p=Pe(g,t.offsetTree,a)+r+i,v=m({itemTop:p,itemBottom:p+se(t.sizeTree,g)[1],viewportTop:s+i,viewportBottom:s+o-l,locationParams:{behavior:d,align:f,...h}});return v?u&&w(y(c,R((e=>!1===e)),L(I(c)?1:2)),u):u&&u(),v})),R((e=>null!==e))),a),{scrollIntoView:u}}),d(We,ee,De,at,K),{singleton:!0}),St=D((([{sizes:e,sizeRanges:t},{scrollTop:o},{initialTopMostItemIndex:n},{didMount:r}])=>{const i=S(),l=C(void 0);return p(y(i,F(e,o)),(([e,t,o])=>{e({ranges:ue(t.sizeTree).map((({k:e,v:t},o,n)=>{const r=n[o+1];return{startIndex:e,endIndex:r?r.k-1:1/0,size:t}})),scrollTop:o})})),T(y(l,R(h),B(Ct)),n),T(y(r,F(l),R((([,e])=>void 0!==e)),z(),B((([,e])=>e.ranges))),t),{getState:i,restoreStateFrom:l}}),d(We,ee,Ke,$e));function Ct(e){return{offset:e.scrollTop,index:0,align:"start"}}const Et=D((([e,t,o,n,r,i,l,s,c,a])=>({...e,...t,...o,...n,...r,...i,...l,...s,...c,...a})),d(it,ut,$e,dt,mt,vt,xt,It,wt,K)),Ht=D((([{totalCount:e,sizeRanges:t,fixedItemSize:o,defaultItemSize:n,trackItemSizes:r,itemSize:i,data:l,firstItemIndex:s,groupIndices:c,statefulTotalCount:a,gap:u,sizes:d},{initialTopMostItemIndex:f,scrolledToInitialItem:m},h,g,p,{listState:v,topItemsIndexes:x,...I},{scrollToIndex:w},S,{topItemCount:C},{groupCounts:E},H])=>(T(I.rangeChanged,H.scrollSeekRangeChanged),T(y(H.windowViewportRect,B((e=>e.visibleHeight))),h.viewportHeight),{totalCount:e,data:l,firstItemIndex:s,sizeRanges:t,initialTopMostItemIndex:f,scrolledToInitialItem:m,topItemsIndexes:x,topItemCount:C,groupCounts:E,fixedItemHeight:o,defaultItemHeight:n,gap:u,...p,statefulTotalCount:a,listState:v,scrollToIndex:w,trackItemSizes:r,itemSize:i,groupIndices:c,...I,...H,...h,sizes:d,...g})),d(We,Ke,ee,St,Ye,at,De,pt,ft,Je,Et)),yt="-webkit-sticky",bt="sticky",zt=ht((()=>{if("undefined"==typeof document)return bt;const e=document.createElement("div");return e.style.position=yt,e.style.position===yt?yt:bt}));function Rt(t,o){const n=e.useRef(null),r=e.useCallback((e=>{if(null===e||!e.offsetParent)return;const r=e.getBoundingClientRect(),i=r.width;let l,s;if(o){const e=o.getBoundingClientRect(),t=r.top-e.top;l=e.height-Math.max(0,t),s=t+o.scrollTop}else l=window.innerHeight-Math.max(0,r.top),s=r.top+window.pageYOffset;n.current={offsetTop:s,visibleHeight:l,visibleWidth:i},t(n.current)}),[t,o]),{callbackRef:i,ref:l}=q(r),s=e.useCallback((()=>{r(l.current)}),[r,l]);return e.useEffect((()=>{if(o){o.addEventListener("scroll",s);const e=new ResizeObserver(s);return e.observe(o),()=>{o.removeEventListener("scroll",s),e.unobserve(o)}}return window.addEventListener("scroll",s),window.addEventListener("resize",s),()=>{window.removeEventListener("scroll",s),window.removeEventListener("resize",s)}}),[s,o]),i}const Bt=e.createContext(void 0),kt=e.createContext(void 0);function Pt(e){return e}const Lt=D((([e,t])=>({...e,...t})),d(Ht,D((()=>{const e=C((e=>`Item ${e}`)),t=C(null),o=C((e=>`Group ${e}`)),n=C({}),r=C(Pt),i=C("div"),l=C(g),s=(e,t=null)=>H(y(n,B((t=>t[e])),z()),t);return{context:t,itemContent:e,groupContent:o,components:n,computeItemKey:r,headerFooterTag:i,scrollerRef:l,FooterComponent:s("Footer"),HeaderComponent:s("Header"),TopItemListComponent:s("TopItemList"),ListComponent:s("List","div"),ItemComponent:s("Item","div"),GroupComponent:s("Group","div"),ScrollerComponent:s("Scroller","div"),EmptyPlaceholder:s("EmptyPlaceholder"),ScrollSeekPlaceholder:s("ScrollSeekPlaceholder")}})))),Ot=({height:t})=>e.createElement("div",{style:{height:t}}),Mt={position:zt(),zIndex:1,overflowAnchor:"none"},Ft={overflowAnchor:"none"},Wt=e.memo((function({showTopList:t=!1}){const o=Qt("listState"),n=Jt("sizeRanges"),r=Qt("useWindowScroll"),i=Qt("customScrollParent"),l=Jt("windowScrollContainerState"),s=Jt("scrollContainerState"),c=i||r?l:s,a=Qt("itemContent"),u=Qt("context"),d=Qt("groupContent"),f=Qt("trackItemSizes"),m=Qt("itemSize"),h=Qt("log"),p=Jt("gap"),{callbackRef:v}=Z(n,m,f,t?g:c,h,p,i),[x,I]=e.useState(0);Xt("deviation",(e=>{x!==e&&I(e)}));const T=Qt("EmptyPlaceholder"),w=Qt("ScrollSeekPlaceholder")||Ot,S=Qt("ListComponent"),C=Qt("ItemComponent"),E=Qt("GroupComponent"),H=Qt("computeItemKey"),y=Qt("isSeeking"),b=Qt("groupIndices").length>0,z=Qt("paddingTopAddition"),R=Qt("scrolledToInitialItem"),B=t?{}:{boxSizing:"border-box",paddingTop:o.offsetTop+z,paddingBottom:o.offsetBottom,marginTop:x,...R?{}:{visibility:"hidden"}};return!t&&0===o.totalCount&&T?e.createElement(T,Gt(T,u)):e.createElement(S,{...Gt(S,u),ref:v,style:B,"data-test-id":t?"virtuoso-top-item-list":"virtuoso-item-list"},(t?o.topItems:o.items).map((t=>{const n=t.originalIndex,r=H(n+o.firstItemIndex,t.data,u);return y?e.createElement(w,{...Gt(w,u),key:r,index:t.index,height:t.size,type:t.type||"item",..."group"===t.type?{}:{groupIndex:t.groupIndex}}):"group"===t.type?e.createElement(E,{...Gt(E,u),key:r,"data-index":n,"data-known-size":t.size,"data-item-index":t.index,style:Mt},d(t.index,u)):e.createElement(C,{...Gt(C,u),key:r,"data-index":n,"data-known-size":t.size,"data-item-index":t.index,"data-item-group-index":t.groupIndex,item:t.data,style:Ft},b?a(t.index,t.groupIndex,t.data,u):a(t.index,t.data,u))})))})),Vt={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},At={width:"100%",height:"100%",position:"absolute",top:0},Dt={width:"100%",position:zt(),top:0,zIndex:1};function Gt(e,t){if("string"!=typeof e)return{context:t}}const Nt=e.memo((function(){const t=Qt("HeaderComponent"),o=Jt("headerHeight"),n=Qt("headerFooterTag"),r=Y((e=>o(J(e,"height")))),i=Qt("context");return t?e.createElement(n,{ref:r},e.createElement(t,Gt(t,i))):null})),_t=e.memo((function(){const t=Qt("FooterComponent"),o=Jt("footerHeight"),n=Qt("headerFooterTag"),r=Y((e=>o(J(e,"height")))),i=Qt("context");return t?e.createElement(n,{ref:r},e.createElement(t,Gt(t,i))):null}));function Ut({usePublisher:t,useEmitter:o,useEmitterValue:n}){return e.memo((function({style:r,children:i,...l}){const s=t("scrollContainerState"),c=n("ScrollerComponent"),a=t("smoothScrollTargetReached"),u=n("scrollerRef"),d=n("context"),{scrollerRef:f,scrollByCallback:m,scrollToCallback:h}=X(s,a,c,u);return o("scrollTo",h),o("scrollBy",m),e.createElement(c,{ref:f,style:{...Vt,...r},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...l,...Gt(c,d)},i)}))}function $t({usePublisher:t,useEmitter:o,useEmitterValue:n}){return e.memo((function({style:r,children:i,...l}){const s=t("windowScrollContainerState"),c=n("ScrollerComponent"),a=t("smoothScrollTargetReached"),u=n("totalListHeight"),d=n("deviation"),f=n("customScrollParent"),m=n("context"),{scrollerRef:h,scrollByCallback:p,scrollToCallback:v}=X(s,a,c,g,f);return U((()=>(h.current=f||window,()=>{h.current=null})),[h,f]),o("windowScrollTo",v),o("scrollBy",p),e.createElement(c,{style:{position:"relative",...r,...0!==u?{height:u+d}:{}},"data-virtuoso-scroller":!0,...l,...Gt(c,m)},i)}))}const jt=({children:t})=>{const o=e.useContext(Bt),n=Jt("viewportHeight"),r=Jt("fixedItemHeight"),i=Y(l(n,(e=>J(e,"height"))));return e.useEffect((()=>{o&&(n(o.viewportHeight),r(o.itemHeight))}),[o,n,r]),e.createElement("div",{style:At,ref:i,"data-viewport-type":"element"},t)},Kt=({children:t})=>{const o=e.useContext(Bt),n=Jt("windowViewportRect"),r=Jt("fixedItemHeight"),i=Qt("customScrollParent"),l=Rt(n,i);return e.useEffect((()=>{o&&(r(o.itemHeight),n({offsetTop:0,visibleHeight:o.viewportHeight,visibleWidth:100}))}),[o,n,r]),e.createElement("div",{ref:l,style:At,"data-viewport-type":"window"},t)},qt=({children:t})=>{const o=Qt("TopItemListComponent"),n=Qt("headerHeight"),r={...Dt,marginTop:`${n}px`},i=Qt("context");return e.createElement(o||"div",{style:r,context:i},t)},Yt=e.memo((function(t){const o=Qt("useWindowScroll"),n=Qt("topItemsIndexes").length>0,r=Qt("customScrollParent"),i=r||o?to:eo,l=r||o?Kt:jt;return e.createElement(i,{...t},n&&e.createElement(qt,null,e.createElement(Wt,{showTopList:!0})),e.createElement(l,null,e.createElement(Nt,null),e.createElement(Wt,null),e.createElement(_t,null)))})),{Component:Zt,usePublisher:Jt,useEmitterValue:Qt,useEmitter:Xt}=_(Lt,{required:{},optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Yt),eo=Ut({usePublisher:Jt,useEmitterValue:Qt,useEmitter:Xt}),to=$t({usePublisher:Jt,useEmitterValue:Qt,useEmitter:Xt}),oo=Zt,no=Zt,ro={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},io={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:lo,ceil:so,floor:co,min:ao,max:uo}=Math;function fo(e,t,o){return Array.from({length:t-e+1}).map(((t,n)=>({index:n+e,data:null==o?void 0:o[n+e]})))}function mo(e,t){return e&&e.column===t.column&&e.row===t.row}function ho(e,t){return e&&e.width===t.width&&e.height===t.height}const go=D((([{overscan:e,visibleRange:t,listBoundary:o},{scrollTop:n,viewportHeight:r,scrollBy:i,scrollTo:l,smoothScrollTargetReached:s,scrollContainerState:c,footerHeight:a,headerHeight:u},d,f,{propsReady:m,didMount:g},{windowViewportRect:p,windowScrollTo:v,useWindowScroll:x,customScrollParent:I,windowScrollContainerState:w},b])=>{const P=C(0),L=C(0),O=C(ro),M=C({height:0,width:0}),W=C({height:0,width:0}),D=S(),G=S(),N=C(0),_=C(void 0),U=C({row:0,column:0});T(y(g,F(L,_),R((([e,t])=>e&&0!==t)),B((([,e,t])=>({items:fo(0,e-1,t),top:0,bottom:0,offsetBottom:0,offsetTop:0,itemHeight:0,itemWidth:0})))),O),T(y(A(V(P),t,V(U,mo),V(W,ho),V(M,ho),_),B((([e,[t,o],n,r,i,l])=>{const{row:s,column:c}=n,{height:a,width:u}=r,{width:d}=i;if(0===e||0===d)return ro;if(0===u)return function(e){return{...io,items:e}}(fo(0,0,l));const f=xo(d,u,c);let m=f*co((t+s)/(a+s)),h=f*so((o+s)/(a+s))-1;h=ao(e-1,uo(h,f-1)),m=ao(h,uo(0,m));const g=fo(m,h,l),{top:p,bottom:v}=po(i,n,r,g),x=so(e/f);return{items:g,offsetTop:p,offsetBottom:x*a+(x-1)*s-v,top:p,bottom:v,itemHeight:a,itemWidth:u}}))),O),T(y(_,R(h),B((e=>e.length))),P),T(y(M,B((({height:e})=>e))),r),T(y(A(M,W,O,U),B((([e,t,{items:o},n])=>{const{top:r,bottom:i}=po(e,n,t,o);return[r,i]})),z(Qe)),o);const $=C(!1);T(y(n,F($),B((([e,t])=>t||0!==e))),$);const j=E(y(V(O),R((({items:e})=>e.length>0)),F(P,$),R((([{items:e},t,o])=>o&&e[e.length-1].index===t-1)),B((([,e])=>e-1)),z())),K=E(y(V(O),R((({items:e})=>e.length>0&&0===e[0].index)),k(0),z())),q=E(y(V(O),R((({items:e})=>e.length>0)),B((({items:e})=>({startIndex:e[0].index,endIndex:e[e.length-1].index}))),z(Xe)));T(q,f.scrollSeekRangeChanged),T(y(D,F(M,W,P,U),B((([e,t,o,n,r])=>{const i=Ae(e),{align:l,behavior:s,offset:c}=i;let a=i.index;"LAST"===a&&(a=n-1),a=uo(0,a,ao(n-1,a));let u=vo(t,r,o,a);return"end"===l?u=lo(u-t.height+o.height):"center"===l&&(u=lo(u-t.height/2+o.height/2)),c&&(u+=c),{top:u,behavior:s}}))),l);const Y=H(y(O,B((e=>e.offsetBottom+e.bottom))),0);return T(y(p,B((e=>({width:e.visibleWidth,height:e.visibleHeight})))),M),{data:_,totalCount:P,viewportDimensions:M,itemDimensions:W,scrollTop:n,scrollHeight:G,overscan:e,scrollBy:i,scrollTo:l,scrollToIndex:D,smoothScrollTargetReached:s,windowViewportRect:p,windowScrollTo:v,useWindowScroll:x,customScrollParent:I,windowScrollContainerState:w,deviation:N,scrollContainerState:c,footerHeight:a,headerHeight:u,initialItemCount:L,gap:U,...f,gridState:O,totalListHeight:Y,...d,startReached:K,endReached:j,rangeChanged:q,propsReady:m,...b}}),d(it,ee,Ue,dt,$e,It,K));function po(e,t,o,n){const{height:r}=o;if(void 0===r||0===n.length)return{top:0,bottom:0};return{top:vo(e,t,o,n[0].index),bottom:vo(e,t,o,n[n.length-1].index)+r}}function vo(e,t,o,n){const r=xo(e.width,o.width,t.column),i=co(n/r),l=i*o.height+uo(0,i-1)*t.row;return l>0?l+t.row:l}function xo(e,t,o){return uo(1,co((e+o)/(co(t)+o)))}const Io=D((([e,t])=>({...e,...t})),d(go,D((()=>{const e=C((e=>`Item ${e}`)),t=C({}),o=C(null),n=C("virtuoso-grid-item"),r=C("virtuoso-grid-list"),i=C(Pt),l=C("div"),s=C(g),c=(e,o=null)=>H(y(t,B((t=>t[e])),z()),o);return{context:o,itemContent:e,components:t,computeItemKey:i,itemClassName:n,listClassName:r,headerFooterTag:l,scrollerRef:s,FooterComponent:c("Footer"),HeaderComponent:c("Header"),ListComponent:c("List","div"),ItemComponent:c("Item","div"),ScrollerComponent:c("Scroller","div"),ScrollSeekPlaceholder:c("ScrollSeekPlaceholder","div")}})))),To=e.memo((function(){const t=zo("gridState"),o=zo("listClassName"),n=zo("itemClassName"),r=zo("itemContent"),i=zo("computeItemKey"),l=zo("isSeeking"),s=bo("scrollHeight"),c=zo("ItemComponent"),a=zo("ListComponent"),u=zo("ScrollSeekPlaceholder"),d=zo("context"),f=bo("itemDimensions"),m=bo("gap"),h=zo("log"),g=Y((e=>{const t=e.parentElement.parentElement.scrollHeight;s(t);const o=e.firstChild;o&&f(o.getBoundingClientRect()),m({row:Po("row-gap",getComputedStyle(e).rowGap,h),column:Po("column-gap",getComputedStyle(e).columnGap,h)})}));return e.createElement(a,{ref:g,className:o,...Gt(a,d),style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom},"data-test-id":"virtuoso-item-list"},t.items.map((o=>{const s=i(o.index,o.data,d);return l?e.createElement(u,{key:s,...Gt(u,d),index:o.index,height:t.itemHeight,width:t.itemWidth}):e.createElement(c,{...Gt(c,d),className:n,"data-index":o.index,key:s},r(o.index,o.data,d))})))})),wo=e.memo((function(){const t=zo("HeaderComponent"),o=bo("headerHeight"),n=zo("headerFooterTag"),r=Y((e=>o(J(e,"height")))),i=zo("context");return t?e.createElement(n,{ref:r},e.createElement(t,Gt(t,i))):null})),So=e.memo((function(){const t=zo("FooterComponent"),o=bo("footerHeight"),n=zo("headerFooterTag"),r=Y((e=>o(J(e,"height")))),i=zo("context");return t?e.createElement(n,{ref:r},e.createElement(t,Gt(t,i))):null})),Co=({children:t})=>{const o=e.useContext(kt),n=bo("itemDimensions"),r=bo("viewportDimensions"),i=Y((e=>{r(e.getBoundingClientRect())}));return e.useEffect((()=>{o&&(r({height:o.viewportHeight,width:o.viewportWidth}),n({height:o.itemHeight,width:o.itemWidth}))}),[o,r,n]),e.createElement("div",{style:At,ref:i},t)},Eo=({children:t})=>{const o=e.useContext(kt),n=bo("windowViewportRect"),r=bo("itemDimensions"),i=zo("customScrollParent"),l=Rt(n,i);return e.useEffect((()=>{o&&(r({height:o.itemHeight,width:o.itemWidth}),n({offsetTop:0,visibleHeight:o.viewportHeight,visibleWidth:o.viewportWidth}))}),[o,n,r]),e.createElement("div",{ref:l,style:At},t)},Ho=e.memo((function({...t}){const o=zo("useWindowScroll"),n=zo("customScrollParent"),r=n||o?ko:Bo,i=n||o?Eo:Co;return e.createElement(r,{...t},e.createElement(i,null,e.createElement(wo,null),e.createElement(To,null),e.createElement(So,null)))})),{Component:yo,usePublisher:bo,useEmitterValue:zo,useEmitter:Ro}=_(Io,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange"}},Ho),Bo=Ut({usePublisher:bo,useEmitterValue:zo,useEmitter:Ro}),ko=$t({usePublisher:bo,useEmitterValue:zo,useEmitter:Ro});function Po(e,t,o){return"normal"===t||(null==t?void 0:t.endsWith("px"))||o(`${e} was not resolved to pixel value correctly`,t,$.WARN),"normal"===t?0:parseInt(null!=t?t:"0",10)}const Lo=yo,Oo=D((([e,t])=>({...e,...t})),d(Ht,D((()=>{const t=C((t=>e.createElement("td",null,"Item $",t))),o=C(null),n=C(null),r=C(null),i=C({}),l=C(Pt),s=C(g),c=(e,t=null)=>H(y(i,B((t=>t[e])),z()),t);return{context:o,itemContent:t,fixedHeaderContent:n,fixedFooterContent:r,components:i,computeItemKey:l,scrollerRef:s,TableComponent:c("Table","table"),TableHeadComponent:c("TableHead","thead"),TableFooterComponent:c("TableFoot","tfoot"),TableBodyComponent:c("TableBody","tbody"),TableRowComponent:c("TableRow","tr"),ScrollerComponent:c("Scroller","div"),EmptyPlaceholder:c("EmptyPlaceholder"),ScrollSeekPlaceholder:c("ScrollSeekPlaceholder"),FillerRow:c("FillerRow")}})))),Mo=({height:t})=>e.createElement("tr",null,e.createElement("td",{style:{height:t}})),Fo=({height:t})=>e.createElement("tr",null,e.createElement("td",{style:{height:t,padding:0,border:0}})),Wo=e.memo((function(){const t=_o("listState"),o=No("sizeRanges"),n=_o("useWindowScroll"),r=_o("customScrollParent"),i=No("windowScrollContainerState"),l=No("scrollContainerState"),s=r||n?i:l,c=_o("itemContent"),a=_o("trackItemSizes"),u=_o("itemSize"),d=_o("log"),{callbackRef:f,ref:m}=Z(o,u,a,s,d,void 0,r),[h,g]=e.useState(0);Uo("deviation",(e=>{h!==e&&(m.current.style.marginTop=`${e}px`,g(e))}));const p=_o("EmptyPlaceholder"),v=_o("ScrollSeekPlaceholder")||Mo,x=_o("FillerRow")||Fo,I=_o("TableBodyComponent"),T=_o("TableRowComponent"),w=_o("computeItemKey"),S=_o("isSeeking"),C=_o("paddingTopAddition"),E=_o("firstItemIndex"),H=_o("statefulTotalCount"),y=_o("context");if(0===H&&p)return e.createElement(p,Gt(p,y));const b=t.offsetTop+C+h,z=t.offsetBottom,R=b>0?e.createElement(x,{height:b,key:"padding-top",context:y}):null,B=z>0?e.createElement(x,{height:z,key:"padding-bottom",context:y}):null,k=t.items.map((t=>{const o=t.originalIndex,n=w(o+E,t.data,y);return S?e.createElement(v,{...Gt(v,y),key:n,index:t.index,height:t.size,type:t.type||"item"}):e.createElement(T,{...Gt(T,y),key:n,"data-index":o,"data-known-size":t.size,"data-item-index":t.index,item:t.data,style:{overflowAnchor:"none"}},c(t.index,t.data,y))}));return e.createElement(I,{ref:f,"data-test-id":"virtuoso-item-list",...Gt(I,y)},[R,...k,B])})),Vo=({children:t})=>{const o=e.useContext(Bt),n=No("viewportHeight"),r=No("fixedItemHeight"),i=Y(l(n,(e=>J(e,"height"))));return e.useEffect((()=>{o&&(n(o.viewportHeight),r(o.itemHeight))}),[o,n,r]),e.createElement("div",{style:At,ref:i,"data-viewport-type":"element"},t)},Ao=({children:t})=>{const o=e.useContext(Bt),n=No("windowViewportRect"),r=No("fixedItemHeight"),i=_o("customScrollParent"),l=Rt(n,i);return e.useEffect((()=>{o&&(r(o.itemHeight),n({offsetTop:0,visibleHeight:o.viewportHeight,visibleWidth:100}))}),[o,n,r]),e.createElement("div",{ref:l,style:At,"data-viewport-type":"window"},t)},Do=e.memo((function(t){const o=_o("useWindowScroll"),n=_o("customScrollParent"),r=No("fixedHeaderHeight"),i=No("fixedFooterHeight"),s=_o("fixedHeaderContent"),c=_o("fixedFooterContent"),a=_o("context"),u=Y(l(r,(e=>J(e,"height")))),d=Y(l(i,(e=>J(e,"height")))),f=n||o?jo:$o,m=n||o?Ao:Vo,h=_o("TableComponent"),g=_o("TableHeadComponent"),p=_o("TableFooterComponent"),v=s?e.createElement(g,{key:"TableHead",style:{zIndex:2,position:"sticky",top:0},ref:u,...Gt(g,a)},s()):null,x=c?e.createElement(p,{key:"TableFoot",style:{zIndex:1,position:"sticky",bottom:0},ref:d,...Gt(p,a)},c()):null;return e.createElement(f,{...t},e.createElement(m,null,e.createElement(h,{style:{borderSpacing:0,overflowAnchor:"none"},...Gt(h,a)},[v,e.createElement(Wo,{key:"TableBody"}),x])))})),{Component:Go,usePublisher:No,useEmitterValue:_o,useEmitter:Uo}=_(Oo,{required:{},optional:{context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",fixedHeaderContent:"fixedHeaderContent",fixedFooterContent:"fixedFooterContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",totalCount:"totalCount",topItemCount:"topItemCount",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",groupCounts:"groupCounts",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Do),$o=Ut({usePublisher:No,useEmitterValue:_o,useEmitter:Uo}),jo=$t({usePublisher:No,useEmitterValue:_o,useEmitter:Uo}),Ko=Go;exports.GroupedVirtuoso=no,exports.LogLevel=$,exports.TableVirtuoso=Ko,exports.Virtuoso=oo,exports.VirtuosoGrid=Lo,exports.VirtuosoGridMockContext=kt,exports.VirtuosoMockContext=Bt;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("react-dom"),o=0,n=1,r=2,i=4;function l(e,t){return o=>e(t(o))}function s(e,t){return t(e)}function c(e,t){return o=>e(t,o)}function a(e,t){return()=>e(t)}function u(e,t){return t(e),e}function d(...e){return e}function m(e){e()}function f(e){return()=>e}function h(e){return void 0!==e}function g(){}function p(e,t){return e(n,t)}function v(e,t){e(o,t)}function I(e){e(r)}function x(e){return e(i)}function T(e,t){return p(e,c(t,o))}function w(e,t){const o=e(n,(e=>{o(),t(e)}));return o}function S(){const e=[];return(t,i)=>{switch(t){case r:return void e.splice(0,e.length);case n:return e.push(i),()=>{const t=e.indexOf(i);t>-1&&e.splice(t,1)};case o:return void e.slice().forEach((e=>{e(i)}));default:throw new Error(`unrecognized action ${t}`)}}}function C(e){let t=e;const r=S();return(e,l)=>{switch(e){case n:l(t);break;case o:t=l;break;case i:return t}return r(e,l)}}function E(e){return u(S(),(t=>T(e,t)))}function H(e,t){return u(C(t),(t=>T(e,t)))}function y(e,...t){const o=function(...e){return t=>e.reduceRight(s,t)}(...t);return(t,i)=>{switch(t){case n:return p(e,o(i));case r:return void I(e)}}}function b(e,t){return e===t}function z(e=b){let t;return o=>n=>{e(t,n)||(t=n,o(n))}}function R(e){return t=>o=>{e(o)&&t(o)}}function B(e){return t=>l(t,e)}function k(e){return t=>()=>t(e)}function P(e,t){return o=>n=>o(t=e(t,n))}function L(e){return t=>o=>{e>0?e--:t(o)}}function M(e){let t,o=null;return n=>r=>{o=r,t||(t=setTimeout((()=>{t=void 0,n(o)}),e))}}function O(e){let t,o;return n=>r=>{t=r,o&&clearTimeout(o),o=setTimeout((()=>{n(t)}),e)}}function F(...e){const t=new Array(e.length);let o=0,n=null;const r=Math.pow(2,e.length)-1;return e.forEach(((e,i)=>{const l=Math.pow(2,i);p(e,(e=>{const s=o;o|=l,t[i]=e,s!==r&&o===r&&n&&(n(),n=null)}))})),e=>i=>{const l=()=>e([i].concat(t));o===r?l():n=l}}function W(...e){return function(t,o){switch(t){case n:return function(...e){return()=>{e.map(m)}}(...e.map((e=>p(e,o))));case r:return;default:throw new Error(`unrecognized action ${t}`)}}}function V(e,t=b){return y(e,z(t))}function A(...e){const t=S(),o=new Array(e.length);let i=0;const l=Math.pow(2,e.length)-1;return e.forEach(((e,n)=>{const r=Math.pow(2,n);p(e,(e=>{o[n]=e,i|=r,i===l&&v(t,o)}))})),function(e,s){switch(e){case n:return i===l&&s(o),p(t,s);case r:return I(t);default:throw new Error(`unrecognized action ${e}`)}}}function D(e,t=[],{singleton:o}={singleton:!0}){return{id:G(),constructor:e,dependencies:t,singleton:o}}const G=()=>Symbol();const N="undefined"!=typeof document?e.useLayoutEffect:e.useEffect;function _(t,o,i){const l=Object.keys(o.required||{}),s=Object.keys(o.optional||{}),d=Object.keys(o.methods||{}),m=Object.keys(o.events||{}),h=e.createContext({});function T(e,t){e.propsReady&&v(e.propsReady,!1);for(const n of l){v(e[o.required[n]],t[n])}for(const n of s)if(n in t){v(e[o.optional[n]],t[n])}e.propsReady&&v(e.propsReady,!0)}function w(e){return m.reduce(((t,i)=>(t[i]=function(e){let t,o;const i=()=>t&&t();return function(l,s){switch(l){case n:if(s){if(o===s)return;return i(),o=s,t=p(e,s),t}return i(),g;case r:return i(),void(o=null);default:throw new Error(`unrecognized action ${l}`)}}}(e[o.events[i]]),t)),{})}const S=e.forwardRef(((n,r)=>{const{children:c,...g}=n,[x]=e.useState((()=>u(function(e){const t=new Map,o=({id:e,constructor:n,dependencies:r,singleton:i})=>{if(i&&t.has(e))return t.get(e);const l=n(r.map((e=>o(e))));return i&&t.set(e,l),l};return o(e)}(t),(e=>T(e,g))))),[S]=e.useState(a(w,x));return N((()=>{for(const e of m)e in g&&p(S[e],g[e]);return()=>{Object.values(S).map(I)}}),[g,S,x]),N((()=>{T(x,g)})),e.useImperativeHandle(r,f(function(e){return d.reduce(((t,n)=>(t[n]=t=>{v(e[o.methods[n]],t)},t)),{})}(x))),e.createElement(h.Provider,{value:x},i?e.createElement(i,function(e,t){const o={},n={};let r=0;const i=e.length;for(;r<i;)n[e[r]]=1,r+=1;for(const l in t)n.hasOwnProperty(l)||(o[l]=t[l]);return o}([...l,...s,...m],g),c):c)}));return{Component:S,usePublisher:t=>e.useCallback(c(v,e.useContext(h)[t]),[t]),useEmitterValue:t=>{const o=e.useContext(h)[t],[n,r]=e.useState(a(x,o));return N((()=>p(o,(e=>{e!==n&&r(f(e))}))),[o,n]),n},useEmitter:(t,o)=>{const n=e.useContext(h)[t];N((()=>p(n,o)),[o,n])}}}const U="undefined"!=typeof document?e.useLayoutEffect:e.useEffect;var $=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))($||{});const j={0:"debug",1:"log",2:"warn",3:"error"},K=D((()=>{const e=C(3);return{log:C(((t,o,n=1)=>{var r;n>=(null!=(r=("undefined"==typeof globalThis?window:globalThis).VIRTUOSO_LOG_LEVEL)?r:x(e))&&console[j[n]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",t,o)})),logLevel:e}}),[],{singleton:!0});function q(t,o=!0){const n=e.useRef(null);let r=e=>{};if("undefined"!=typeof ResizeObserver){const i=e.useMemo((()=>new ResizeObserver((e=>{const o=e[0].target;null!==o.offsetParent&&t(o)}))),[t]);r=e=>{e&&o?(i.observe(e),n.current=e):(n.current&&i.unobserve(n.current),n.current=null)}}return{ref:n,callbackRef:r}}function Y(e,t=!0){return q(e,t).callbackRef}function Z(t,o,n,r,i,l,s){const c=e.useCallback((e=>{const n=function(e,t,o,n){const r=e.length;if(0===r)return null;const i=[];for(let l=0;l<r;l++){const r=e.item(l);if(!r||void 0===r.dataset.index)continue;const s=parseInt(r.dataset.index),c=parseFloat(r.dataset.knownSize),a=t(r,o);if(0===a&&n("Zero-sized element, this should not happen",{child:r},$.ERROR),a===c)continue;const u=i[i.length-1];0===i.length||u.size!==a||u.endIndex!==s-1?i.push({startIndex:s,endIndex:s,size:a}):i[i.length-1].endIndex++}return i}(e.children,o,"offsetHeight",i);let c=e.parentElement;for(;!c.dataset.virtuosoScroller;)c=c.parentElement;const a="window"===c.lastElementChild.dataset.viewportType,u=s?s.scrollTop:a?window.pageYOffset||document.documentElement.scrollTop:c.scrollTop,d=s?s.scrollHeight:a?document.documentElement.scrollHeight:c.scrollHeight,m=s?s.offsetHeight:a?window.innerHeight:c.offsetHeight;r({scrollTop:Math.max(u,0),scrollHeight:d,viewportHeight:m}),null==l||l(function(e,t,o){"normal"===t||(null==t?void 0:t.endsWith("px"))||o(`${e} was not resolved to pixel value correctly`,t,$.WARN);if("normal"===t)return 0;return parseInt(null!=t?t:"0",10)}("row-gap",getComputedStyle(e).rowGap,i)),null!==n&&t(n)}),[t,o,i,l,s,r]);return q(c,n)}function J(e,t){return Math.round(e.getBoundingClientRect()[t])}function Q(e,t){return Math.abs(e-t)<1.01}function X(o,n,r,i=g,l){const s=e.useRef(null),c=e.useRef(null),a=e.useRef(null),u=e.useCallback((e=>{const r=e.target,i=r===window||r===document,l=i?window.pageYOffset||document.documentElement.scrollTop:r.scrollTop,s=i?document.documentElement.scrollHeight:r.scrollHeight,u=i?window.innerHeight:r.offsetHeight,d=()=>{o({scrollTop:Math.max(l,0),scrollHeight:s,viewportHeight:u})};e.suppressFlushSync?d():t.flushSync(d),null!==c.current&&(l===c.current||l<=0||l===s-u)&&(c.current=null,n(!0),a.current&&(clearTimeout(a.current),a.current=null))}),[o,n]);return e.useEffect((()=>{const e=l||s.current;return i(l||s.current),u({target:e,suppressFlushSync:!0}),e.addEventListener("scroll",u,{passive:!0}),()=>{i(null),e.removeEventListener("scroll",u)}}),[s,u,r,i,l]),{scrollerRef:s,scrollByCallback:function(e){s.current.scrollBy(e)},scrollToCallback:function(e){const t=s.current;if(!t||"offsetHeight"in t&&0===t.offsetHeight)return;const r="smooth"===e.behavior;let i,l,u;t===window?(l=Math.max(J(document.documentElement,"height"),document.documentElement.scrollHeight),i=window.innerHeight,u=document.documentElement.scrollTop):(l=t.scrollHeight,i=J(t,"height"),u=t.scrollTop);const d=l-i;if(e.top=Math.ceil(Math.max(Math.min(d,e.top),0)),Q(i,l)||e.top===u)return o({scrollTop:u,scrollHeight:l,viewportHeight:i}),void(r&&n(!0));r?(c.current=e.top,a.current&&clearTimeout(a.current),a.current=setTimeout((()=>{a.current=null,c.current=null,n(!0)}),1e3)):c.current=null,t.scrollTo(e)}}}const ee=D((()=>{const e=S(),t=S(),o=C(0),n=S(),r=C(0),i=S(),l=S(),s=C(0),c=C(0),a=C(0),u=C(0),d=S(),m=S(),f=C(!1);return T(y(e,B((({scrollTop:e})=>e))),t),T(y(e,B((({scrollHeight:e})=>e))),l),T(t,r),{scrollContainerState:e,scrollTop:t,viewportHeight:i,headerHeight:s,fixedHeaderHeight:c,fixedFooterHeight:a,footerHeight:u,scrollHeight:l,smoothScrollTargetReached:n,scrollTo:d,scrollBy:m,statefulScrollTop:r,deviation:o,scrollingInProgress:f}}),[],{singleton:!0}),te={lvl:0};function oe(e,t,o,n=te,r=te){return{k:e,v:t,lvl:o,l:n,r:r}}function ne(e){return e===te}function re(){return te}function ie(e,t){if(ne(e))return te;const{k:o,l:n,r:r}=e;if(t===o){if(ne(n))return r;if(ne(r))return n;{const[t,o]=de(n);return pe(fe(e,{k:t,v:o,l:me(n)}))}}return pe(fe(e,t<o?{l:ie(n,t)}:{r:ie(r,t)}))}function le(e,t){if(!ne(e))return t===e.k?e.v:t<e.k?le(e.l,t):le(e.r,t)}function se(e,t,o="k"){if(ne(e))return[-1/0,void 0];if(Number(e[o])===t)return[e.k,e.v];if(Number(e[o])<t){const n=se(e.r,t,o);return n[0]===-1/0?[e.k,e.v]:n}return se(e.l,t,o)}function ce(e,t,o){return ne(e)?oe(t,o,1):t===e.k?fe(e,{k:t,v:o}):t<e.k?ge(fe(e,{l:ce(e.l,t,o)})):ge(fe(e,{r:ce(e.r,t,o)}))}function ae(e,t,o){if(ne(e))return[];const{k:n,v:r,l:i,r:l}=e;let s=[];return n>t&&(s=s.concat(ae(i,t,o))),n>=t&&n<=o&&s.push({k:n,v:r}),n<=o&&(s=s.concat(ae(l,t,o))),s}function ue(e){return ne(e)?[]:[...ue(e.l),{k:e.k,v:e.v},...ue(e.r)]}function de(e){return ne(e.r)?[e.k,e.v]:de(e.r)}function me(e){return ne(e.r)?e.l:pe(fe(e,{r:me(e.r)}))}function fe(e,t){return oe(void 0!==t.k?t.k:e.k,void 0!==t.v?t.v:e.v,void 0!==t.lvl?t.lvl:e.lvl,void 0!==t.l?t.l:e.l,void 0!==t.r?t.r:e.r)}function he(e){return ne(e)||e.lvl>e.r.lvl}function ge(e){return xe(Te(e))}function pe(e){const{l:t,r:o,lvl:n}=e;if(o.lvl>=n-1&&t.lvl>=n-1)return e;if(n>o.lvl+1){if(he(t))return Te(fe(e,{lvl:n-1}));if(ne(t)||ne(t.r))throw new Error("Unexpected empty nodes");return fe(t.r,{l:fe(t,{r:t.r.l}),r:fe(e,{l:t.r.r,lvl:n-1}),lvl:n})}if(he(e))return xe(fe(e,{lvl:n-1}));if(ne(o)||ne(o.l))throw new Error("Unexpected empty nodes");{const t=o.l,r=he(t)?o.lvl-1:o.lvl;return fe(t,{l:fe(e,{r:t.l,lvl:n-1}),r:xe(fe(o,{l:t.r,lvl:r})),lvl:t.lvl+1})}}function ve(e,t,o){if(ne(e))return[];const n=se(e,t)[0];return Ie(ae(e,n,o),(({k:e,v:t})=>({index:e,value:t})))}function Ie(e,t){const o=e.length;if(0===o)return[];let{index:n,value:r}=t(e[0]);const i=[];for(let l=1;l<o;l++){const{index:o,value:s}=t(e[l]);i.push({start:n,end:o-1,value:r}),n=o,r=s}return i.push({start:n,end:1/0,value:r}),i}function xe(e){const{r:t,lvl:o}=e;return ne(t)||ne(t.r)||t.lvl!==o||t.r.lvl!==o?e:fe(t,{l:fe(e,{r:t.l}),lvl:o+1})}function Te(e){const{l:t}=e;return ne(t)||t.lvl!==e.lvl?e:fe(t,{r:fe(e,{l:t.r})})}function we(e,t,o,n=0){let r=e.length-1;for(;n<=r;){const i=Math.floor((n+r)/2),l=o(e[i],t);if(0===l)return i;if(-1===l){if(r-n<2)return i-1;r=i-1}else{if(r===n)return i;n=i+1}}throw new Error(`Failed binary finding record in array - ${e.join(",")}, searched for ${t}`)}function Se(e,t,o){return e[we(e,t,o)]}const Ce=D((()=>({recalcInProgress:C(!1)})),[],{singleton:!0});function Ee(e){const{size:t,startIndex:o,endIndex:n}=e;return e=>e.start===o&&(e.end===n||e.end===1/0)&&e.value===t}function He(e,t){let o=0,n=0;for(;o<e;)o+=t[n+1]-t[n]-1,n++;return n-(o===e?0:1)}function ye({index:e},t){return t===e?0:t<e?-1:1}function be({offset:e},t){return t===e?0:t<e?-1:1}function ze(e){return{index:e.index,value:e}}function Re(e,t,o,n=0){return n>0&&(t=Math.max(t,Se(e,n,ye).offset)),Ie(function(e,t,o,n){const r=we(e,t,n),i=we(e,o,n,r);return e.slice(r,i+1)}(e,t,o,be),ze)}function Be(e,t,o,n){let r=e,i=0,l=0,s=0,c=0;if(0!==t){c=we(r,t-1,ye);s=r[c].offset;const e=se(o,t-1);i=e[0],l=e[1],r.length&&r[c].size===se(o,t)[1]&&(c-=1),r=r.slice(0,c+1)}else r=[];for(const{start:a,value:u}of ve(o,t,1/0)){const e=a-i,t=e*l+s+e*n;r.push({offset:t,size:u,index:a}),i=a,s=t,l=u}return{offsetTree:r,lastIndex:i,lastOffset:s,lastSize:l}}function ke(e,[t,o,n,r]){t.length>0&&n("received item sizes",t,$.DEBUG);const i=e.sizeTree;let l=i,s=0;if(o.length>0&&ne(i)&&2===t.length){const e=t[0].size,n=t[1].size;l=o.reduce(((t,o)=>ce(ce(t,o,e),o+1,n)),l)}else[l,s]=function(e,t){let o=ne(e)?0:1/0;for(const n of t){const{size:t,startIndex:r,endIndex:i}=n;if(o=Math.min(o,r),ne(e)){e=ce(e,0,t);continue}const l=ve(e,r-1,i+1);if(l.some(Ee(n)))continue;let s=!1,c=!1;for(const{start:o,end:n,value:a}of l)s?(i>=o||t===a)&&(e=ie(e,o)):(c=a!==t,s=!0),n>i&&i>=o&&a!==t&&(e=ce(e,i+1,a));c&&(e=ce(e,r,t))}return[e,o]}(l,t);if(l===i)return e;const{offsetTree:c,lastIndex:a,lastSize:u,lastOffset:d}=Be(e.offsetTree,s,l,r);return{sizeTree:l,offsetTree:c,lastIndex:a,lastOffset:d,lastSize:u,groupOffsetTree:o.reduce(((e,t)=>ce(e,t,Pe(t,c,r))),re()),groupIndices:o}}function Pe(e,t,o){if(0===t.length)return 0;const{offset:n,index:r,size:i}=Se(t,e,ye),l=e-r,s=i*l+(l-1)*o+n;return s>0?s+o:s}function Le(e,t,o){if(function(e){return void 0!==e.groupIndex}(e))return t.groupIndices[e.groupIndex]+1;{let n=Me("LAST"===e.index?o:e.index,t);return n=Math.max(0,n,Math.min(o,n)),n}}function Me(e,t){if(!Oe(t))return e;let o=0;for(;t.groupIndices[o]<=e+o;)o++;return e+o}function Oe(e){return!ne(e.groupOffsetTree)}const Fe={offsetHeight:"height",offsetWidth:"width"},We=D((([{log:e},{recalcInProgress:t}])=>{const o=S(),n=S(),r=H(n,0),i=S(),l=S(),s=C(0),c=C([]),a=C(void 0),u=C(void 0),d=C(((e,t)=>J(e,Fe[t]))),m=C(void 0),f=C(0),h={offsetTree:[],sizeTree:re(),groupOffsetTree:re(),lastIndex:0,lastOffset:0,lastSize:0,groupIndices:[]},g=H(y(o,F(c,e,f),P(ke,h),z()),h),I=H(y(c,z(),P(((e,t)=>({prev:e.current,current:t})),{prev:[],current:[]}),B((({prev:e})=>e))),[]);T(y(c,R((e=>e.length>0)),F(g,f),B((([e,t,o])=>{const n=e.reduce(((e,n,r)=>ce(e,n,Pe(n,t.offsetTree,o)||r)),re());return{...t,groupIndices:e,groupOffsetTree:n}}))),g),T(y(n,F(g),R((([e,{lastIndex:t}])=>e<t)),B((([e,{lastIndex:t,lastSize:o}])=>[{startIndex:e,endIndex:t,size:o}]))),o),T(a,u);const w=H(y(a,B((e=>void 0===e))),!0);T(y(u,R((e=>void 0!==e&&ne(x(g).sizeTree))),B((e=>[{startIndex:0,endIndex:0,size:e}]))),o);const b=E(y(o,F(g),P((({sizes:e},[t,o])=>({changed:o!==e,sizes:o})),{changed:!1,sizes:h}),B((e=>e.changed))));p(y(s,P(((e,t)=>({diff:e.prev-t,prev:t})),{diff:0,prev:0}),B((e=>e.diff))),(e=>{const{groupIndices:o}=x(g);if(e>0)v(t,!0),v(i,e+He(e,o));else if(e<0){const t=x(I);t.length>0&&(e-=He(-e,t)),v(l,e)}})),p(y(s,F(e)),(([e,t])=>{e<0&&t("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:s},$.ERROR)}));const k=E(i);T(y(i,F(g),B((([e,t])=>{const o=t.groupIndices.length>0,n=[],r=t.lastSize;if(o){const o=le(t.sizeTree,0);let i=0,l=0;for(;i<e;){const e=t.groupIndices[l],s=t.groupIndices.length===l+1?1/0:t.groupIndices[l+1]-e-1;n.push({startIndex:e,endIndex:e,size:o}),n.push({startIndex:e+1,endIndex:e+1+s-1,size:r}),l++,i+=s+1}const s=ue(t.sizeTree);return i!==e&&s.shift(),s.reduce(((t,{k:o,v:n})=>{let r=t.ranges;return 0!==t.prevSize&&(r=[...t.ranges,{startIndex:t.prevIndex,endIndex:o+e-1,size:t.prevSize}]),{ranges:r,prevIndex:o+e,prevSize:n}}),{ranges:n,prevIndex:e,prevSize:0}).ranges}return ue(t.sizeTree).reduce(((t,{k:o,v:n})=>({ranges:[...t.ranges,{startIndex:t.prevIndex,endIndex:o+e-1,size:t.prevSize}],prevIndex:o+e,prevSize:n})),{ranges:[],prevIndex:0,prevSize:r}).ranges}))),o);const L=E(y(l,F(g,f),B((([e,{offsetTree:t},o])=>Pe(-e,t,o)))));return T(y(l,F(g,f),B((([e,t,o])=>{if(t.groupIndices.length>0){if(ne(t.sizeTree))return t;let n=re();const r=x(I);let i=0,l=0,s=0;for(;i<-e;){s=r[l];const e=r[l+1]-s-1;l++,i+=e+1}n=ue(t.sizeTree).reduce(((t,{k:o,v:n})=>ce(t,Math.max(0,o+e),n)),n);if(i!==-e){n=ce(n,0,le(t.sizeTree,s));n=ce(n,1,se(t.sizeTree,1-e)[1])}return{...t,sizeTree:n,...Be(t.offsetTree,0,n,o)}}{const n=ue(t.sizeTree).reduce(((t,{k:o,v:n})=>ce(t,Math.max(0,o+e),n)),re());return{...t,sizeTree:n,...Be(t.offsetTree,0,n,o)}}}))),g),{data:m,totalCount:n,sizeRanges:o,groupIndices:c,defaultItemSize:u,fixedItemSize:a,unshiftWith:i,shiftWith:l,shiftWithOffset:L,beforeUnshiftWith:k,firstItemIndex:s,gap:f,sizes:g,listRefresh:b,statefulTotalCount:r,trackItemSizes:w,itemSize:d}}),d(K,Ce),{singleton:!0}),Ve="undefined"!=typeof document&&"scrollBehavior"in document.documentElement.style;function Ae(e){const t="number"==typeof e?{index:e}:e;return t.align||(t.align="start"),t.behavior&&Ve||(t.behavior="auto"),t.offset||(t.offset=0),t}const De=D((([{sizes:e,totalCount:t,listRefresh:o,gap:n},{scrollingInProgress:r,viewportHeight:i,scrollTo:l,smoothScrollTargetReached:s,headerHeight:c,footerHeight:a,fixedHeaderHeight:u,fixedFooterHeight:d},{log:m}])=>{const f=S(),h=C(0);let g=null,I=null,x=null;function E(){g&&(g(),g=null),x&&(x(),x=null),I&&(clearTimeout(I),I=null),v(r,!1)}return T(y(f,F(e,i,t,h,c,a,m),F(n,u,d),B((([[e,t,n,i,l,c,a,u],d,m,h])=>{const T=Ae(e),{align:S,behavior:C,offset:H}=T,b=i-1,z=Le(T,t,b);let R=Pe(z,t.offsetTree,d)+c;"end"===S?(R+=m+se(t.sizeTree,z)[1]-n+h,z===b&&(R+=a)):"center"===S?R+=(m+se(t.sizeTree,z)[1]-n+h)/2:R-=l,H&&(R+=H);const B=t=>{E(),t?(u("retrying to scroll to",{location:e},$.DEBUG),v(f,e)):u("list did not change, scroll successful",{},$.DEBUG)};if(E(),"smooth"===C){let e=!1;x=p(o,(t=>{e=e||t})),g=w(s,(()=>{B(e)}))}else g=w(y(o,(k=150,e=>{const t=setTimeout((()=>{e(!1)}),k);return o=>{o&&(e(!0),clearTimeout(t))}})),B);var k;return I=setTimeout((()=>{E()}),1200),v(r,!0),u("scrolling from index to",{index:z,top:R,behavior:C},$.DEBUG),{top:R,behavior:C}}))),l),{scrollToIndex:f,topListHeight:h}}),d(We,ee,K),{singleton:!0});const Ge="up",Ne="down",_e={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},Ue=D((([{scrollContainerState:e,scrollTop:t,viewportHeight:o,headerHeight:n,footerHeight:r,scrollBy:i}])=>{const l=C(!1),s=C(!0),c=S(),a=S(),u=C(4),d=C(0),m=H(y(W(y(V(t),L(1),k(!0)),y(V(t),L(1),k(!1),O(100))),z()),!1),f=H(y(W(y(i,k(!0)),y(i,k(!1),O(200))),z()),!1);T(y(A(V(t),V(d)),B((([e,t])=>e<=t)),z()),s),T(y(s,M(50)),a);const h=E(y(A(e,V(o),V(n),V(r),V(u)),P(((e,[{scrollTop:t,scrollHeight:o},n,r,i,l])=>{const s={viewportHeight:n,scrollTop:t,scrollHeight:o};if(t+n-o>-l){let o,n;return t>e.state.scrollTop?(o="SCROLLED_DOWN",n=e.state.scrollTop-t):(o="SIZE_DECREASED",n=e.state.scrollTop-t||e.scrollTopDelta),{atBottom:!0,state:s,atBottomBecause:o,scrollTopDelta:n}}let c;return c=s.scrollHeight>e.state.scrollHeight?"SIZE_INCREASED":n<e.state.viewportHeight?"VIEWPORT_HEIGHT_DECREASING":t<e.state.scrollTop?"SCROLLING_UPWARDS":"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:c,state:s}}),_e),z(((e,t)=>e&&e.atBottom===t.atBottom)))),g=H(y(e,P(((e,{scrollTop:t,scrollHeight:o,viewportHeight:n})=>{if(Q(e.scrollHeight,o))return{scrollTop:t,scrollHeight:o,jump:0,changed:!1};{const r=o-(t+n)<1;return e.scrollTop!==t&&r?{scrollHeight:o,scrollTop:t,jump:e.scrollTop-t,changed:!0}:{scrollHeight:o,scrollTop:t,jump:0,changed:!0}}}),{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),R((e=>e.changed)),B((e=>e.jump))),0);T(y(h,B((e=>e.atBottom))),l),T(y(l,M(50)),c);const p=C(Ne);T(y(e,B((({scrollTop:e})=>e)),z(),P(((e,t)=>x(f)?{direction:e.direction,prevScrollTop:t}:{direction:t<e.prevScrollTop?Ge:Ne,prevScrollTop:t}),{direction:Ne,prevScrollTop:0}),B((e=>e.direction))),p),T(y(e,M(50),k("none")),p);const v=C(0);return T(y(m,R((e=>!e)),k(0)),v),T(y(t,M(100),F(m),R((([e,t])=>!!t)),P((([e,t],[o])=>[t,o]),[0,0]),B((([e,t])=>t-e))),v),{isScrolling:m,isAtTop:s,isAtBottom:l,atBottomState:h,atTopStateChange:a,atBottomStateChange:c,scrollDirection:p,atBottomThreshold:u,atTopThreshold:d,scrollVelocity:v,lastJumpDueToItemResize:g}}),d(ee)),$e=D((([{log:e}])=>{const t=C(!1),o=E(y(t,R((e=>e)),z()));return p(t,(t=>{t&&x(e)("props updated",{},$.DEBUG)})),{propsReady:t,didMount:o}}),d(K),{singleton:!0});function je(e,t){0==e?t():requestAnimationFrame((()=>je(e-1,t)))}function Ke(e,t){const o=t-1;return"number"==typeof e?e:"LAST"===e.index?o:e.index}const qe=D((([{sizes:e,listRefresh:t,defaultItemSize:o},{scrollTop:n},{scrollToIndex:r},{didMount:i}])=>{const l=C(!0),s=C(0),c=C(!1);return T(y(i,F(s),R((([e,t])=>!!t)),k(!1)),l),p(y(A(t,i),F(l,e,o,c),R((([[,e],t,{sizeTree:o},n,r])=>e&&(!ne(o)||h(n))&&!t&&!r)),F(s)),(([,e])=>{v(c,!0),je(2,(()=>{w(n,(()=>v(l,!0))),v(r,e)}))})),{scrolledToInitialItem:l,initialTopMostItemIndex:s}}),d(We,ee,De,$e),{singleton:!0});function Ye(e){return!!e&&("smooth"===e?"smooth":"auto")}const Ze=D((([{totalCount:e,listRefresh:t},{isAtBottom:o,atBottomState:n},{scrollToIndex:r},{scrolledToInitialItem:i},{propsReady:l,didMount:s},{log:c},{scrollingInProgress:a}])=>{const u=C(!1),d=S();let m=null;function f(e){v(r,{index:"LAST",align:"end",behavior:e})}function h(e){const t=w(n,(t=>{!e||t.atBottom||"SIZE_INCREASED"!==t.notAtBottomBecause||m||(x(c)("scrolling to bottom due to increased size",{},$.DEBUG),f("auto"))}));setTimeout(t,100)}return p(y(A(y(V(e),L(1)),s),F(V(u),o,i,a),B((([[e,t],o,n,r,i])=>{let l=t&&r,s="auto";return l&&(s=((e,t)=>"function"==typeof e?Ye(e(t)):t&&Ye(e))(o,n||i),l=l&&!!s),{totalCount:e,shouldFollow:l,followOutputBehavior:s}})),R((({shouldFollow:e})=>e))),(({totalCount:e,followOutputBehavior:o})=>{m&&(m(),m=null),m=w(t,(()=>{x(c)("following output to ",{totalCount:e},$.DEBUG),f(o),m=null}))})),p(y(A(V(u),e,l),R((([e,,t])=>e&&t)),P((({value:e},[,t])=>({refreshed:e===t,value:t})),{refreshed:!1,value:0}),R((({refreshed:e})=>e)),F(u,e)),(([,e])=>{h(!1!==e)})),p(d,(()=>{h(!1!==x(u))})),p(A(V(u),n),(([e,t])=>{e&&!t.atBottom&&"VIEWPORT_HEIGHT_DECREASING"===t.notAtBottomBecause&&f("auto")})),{followOutput:u,autoscrollToBottom:d}}),d(We,Ue,De,qe,$e,K,ee));function Je(e){return e.reduce(((e,t)=>(e.groupIndices.push(e.totalCount),e.totalCount+=t+1,e)),{totalCount:0,groupIndices:[]})}const Qe=D((([{totalCount:e,groupIndices:t,sizes:o},{scrollTop:n,headerHeight:r}])=>{const i=S(),l=S(),s=E(y(i,B(Je)));return T(y(s,B((e=>e.totalCount))),e),T(y(s,B((e=>e.groupIndices))),t),T(y(A(n,o,r),R((([e,t])=>Oe(t))),B((([e,t,o])=>se(t.groupOffsetTree,Math.max(e-o,0),"v")[0])),z(),B((e=>[e]))),l),{groupCounts:i,topItemsIndexes:l}}),d(We,ee));function Xe(e,t){return!(!e||e[0]!==t[0]||e[1]!==t[1])}function et(e,t){return!(!e||e.startIndex!==t.startIndex||e.endIndex!==t.endIndex)}const tt="top",ot="bottom",nt="none";function rt(e,t,o){return"number"==typeof e?o===Ge&&t===tt||o===Ne&&t===ot?e:0:o===Ge?t===tt?e.main:e.reverse:t===ot?e.main:e.reverse}function it(e,t){return"number"==typeof e?e:e[t]||0}const lt=D((([{scrollTop:e,viewportHeight:t,deviation:o,headerHeight:n,fixedHeaderHeight:r}])=>{const i=S(),l=C(0),s=C(0),c=C(0);return{listBoundary:i,overscan:c,topListHeight:l,increaseViewportBy:s,visibleRange:H(y(A(V(e),V(t),V(n),V(i,Xe),V(c),V(l),V(r),V(o),V(s)),B((([e,t,o,[n,r],i,l,s,c,a])=>{const u=e-c,d=l+s,m=Math.max(o-u,0);let f=nt;const h=it(a,tt),g=it(a,ot);return n-=c,r+=o+s,(n+=o+s)>e+d-h&&(f=Ge),(r-=c)<e-m+t+g&&(f=Ne),f!==nt?[Math.max(u-o-rt(i,tt,f)-h,0),u-m-s+t+rt(i,ot,f)+g]:null})),R((e=>null!=e)),z(Xe)),[0,0])}}),d(ee),{singleton:!0});const st={items:[],topItems:[],offsetTop:0,offsetBottom:0,top:0,bottom:0,topListHeight:0,totalCount:0,firstItemIndex:0};function ct(e,t,o){if(0===e.length)return[];if(!Oe(t))return e.map((e=>({...e,index:e.index+o,originalIndex:e.index})));const n=e[0].index,r=e[e.length-1].index,i=[],l=ve(t.groupOffsetTree,n,r);let s,c=0;for(const a of e){let e;(!s||s.end<a.index)&&(s=l.shift(),c=t.groupIndices.indexOf(s.start)),e=a.index===s.start?{type:"group",index:c}:{index:a.index-(c+1)+o,groupIndex:c},i.push({...e,size:a.size,offset:a.offset,originalIndex:a.index,data:a.data})}return i}function at(e,t,o,n,r,i){const{lastSize:l,lastOffset:s,lastIndex:c}=r;let a=0,u=0;if(e.length>0){a=e[0].offset;const t=e[e.length-1];u=t.offset+t.size}const d=o-c,m=a,f=s+d*l+(d-1)*n-u;return{items:ct(e,r,i),topItems:ct(t,r,i),topListHeight:t.reduce(((e,t)=>t.size+e),0),offsetTop:a,offsetBottom:f,top:m,bottom:u,totalCount:o,firstItemIndex:i}}const ut=D((([{sizes:e,totalCount:t,data:o,firstItemIndex:n,gap:r},i,{visibleRange:l,listBoundary:s,topListHeight:c},{scrolledToInitialItem:a,initialTopMostItemIndex:d},{topListHeight:m},f,{didMount:g},{recalcInProgress:p}])=>{const v=C([]),I=S();T(i.topItemsIndexes,v);const x=H(y(A(g,p,V(l,Xe),V(t),V(e),V(d),a,V(v),V(n),V(r),o),R((([e,t,,o,,,,,,,n])=>{const r=n&&n.length!==o;return e&&!t&&!r})),B((([,,[e,t],o,n,r,i,l,s,c,a])=>{const d=n,{sizeTree:m,offsetTree:f}=d;if(0===o||0===e&&0===t)return{...st,totalCount:o};if(ne(m))return at(function(e,t,o){if(Oe(t)){const n=Me(e,t);return[{index:se(t.groupOffsetTree,n)[0],size:0,offset:0},{index:n,size:0,offset:0,data:o&&o[0]}]}return[{index:e,size:0,offset:0,data:o&&o[0]}]}(Ke(r,o),d,a),[],o,c,d,s);const h=[];if(l.length>0){const e=l[0],t=l[l.length-1];let o=0;for(const n of ve(m,e,t)){const r=n.value,i=Math.max(n.start,e),l=Math.min(n.end,t);for(let e=i;e<=l;e++)h.push({index:e,size:r,offset:o,data:a&&a[e]}),o+=r}}if(!i)return at([],h,o,c,d,s);const g=l.length>0?l[l.length-1]+1:0,p=Re(f,e,t,g);if(0===p.length)return null;const v=o-1;return at(u([],(o=>{for(const n of p){const r=n.value;let i=r.offset,l=n.start;const s=r.size;if(r.offset<e){l+=Math.floor((e-r.offset+c)/(s+c));const t=l-n.start;i+=t*s+t*c}l<g&&(i+=(g-l)*s,l=g);const u=Math.min(n.end,v);for(let e=l;e<=u&&!(i>=t);e++)o.push({index:e,size:s,offset:i,data:a&&a[e]}),i+=s+c}})),h,o,c,d,s)})),R((e=>null!==e)),z()),st);T(y(o,R(h),B((e=>null==e?void 0:e.length))),t),T(y(x,B((e=>e.topListHeight))),m),T(m,c),T(y(x,B((e=>[e.top,e.bottom]))),s),T(y(x,B((e=>e.items))),I);return{listState:x,topItemsIndexes:v,endReached:E(y(x,R((({items:e})=>e.length>0)),F(t,o),R((([{items:e},t])=>e[e.length-1].originalIndex===t-1)),B((([,e,t])=>[e-1,t])),z(Xe),B((([e])=>e)))),startReached:E(y(x,M(200),R((({items:e,topItems:t})=>e.length>0&&e[0].originalIndex===t.length)),B((({items:e})=>e[0].index)),z())),rangeChanged:E(y(x,R((({items:e})=>e.length>0)),B((({items:e})=>{let t=0,o=e.length-1;for(;"group"===e[t].type&&t<o;)t++;for(;"group"===e[o].type&&o>t;)o--;return{startIndex:e[t].index,endIndex:e[o].index}})),z(et))),itemsRendered:I,...f}}),d(We,Qe,lt,qe,De,Ue,$e,Ce),{singleton:!0}),dt=D((([{sizes:e,firstItemIndex:t,data:o,gap:n},{listState:r},{didMount:i}])=>{const l=C(0);return T(y(i,F(l),R((([,e])=>0!==e)),F(e,t,n,o),B((([[,e],t,o,n,r=[]])=>{let i=0;if(t.groupIndices.length>0)for(const s of t.groupIndices){if(s-i>=e)break;i++}const l=e+i;return at(Array.from({length:l}).map(((e,t)=>({index:t,size:0,offset:0,data:r[t]}))),[],l,n,t,o)}))),r),{initialItemCount:l}}),d(We,ut,$e),{singleton:!0}),mt=D((([{scrollVelocity:e}])=>{const t=C(!1),o=S(),n=C(!1);return T(y(e,F(n,t,o),R((([e,t])=>!!t)),B((([e,t,o,n])=>{const{exit:r,enter:i}=t;if(o){if(r(e,n))return!1}else if(i(e,n))return!0;return o})),z()),t),p(y(A(t,e,o),F(n)),(([[e,t,o],n])=>e&&n&&n.change&&n.change(t,o))),{isSeeking:t,scrollSeekConfiguration:n,scrollVelocity:e,scrollSeekRangeChanged:o}}),d(Ue),{singleton:!0}),ft=D((([{topItemsIndexes:e}])=>{const t=C(0);return T(y(t,R((e=>e>0)),B((e=>Array.from({length:e}).map(((e,t)=>t))))),e),{topItemCount:t}}),d(ut)),ht=D((([{footerHeight:e,headerHeight:t,fixedHeaderHeight:o,fixedFooterHeight:n},{listState:r}])=>{const i=S(),l=H(y(A(e,n,t,o,r),B((([e,t,o,n,r])=>e+t+o+n+r.offsetBottom+r.bottom))),0);return T(V(l),i),{totalListHeight:l,totalListHeightChanged:i}}),d(ee,ut),{singleton:!0});function gt(e){let t,o=!1;return()=>(o||(o=!0,t=e()),t)}const pt=gt((()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent))),vt=D((([{scrollBy:e,scrollTop:t,deviation:o,scrollingInProgress:n},{isScrolling:r,isAtBottom:i,scrollDirection:l,lastJumpDueToItemResize:s},{listState:c},{beforeUnshiftWith:a,shiftWithOffset:u,sizes:d,gap:m},{log:f},{recalcInProgress:h}])=>{const g=E(y(c,F(s),P((([,e,t,o],[{items:n,totalCount:r,bottom:i,offsetBottom:l},s])=>{const c=i+l;let a=0;if(t===r&&e.length>0&&n.length>0){0===n[0].originalIndex&&0===e[0].originalIndex||(a=c-o,0!==a&&(a+=s))}return[a,n,r,c]}),[0,[],0,0]),R((([e])=>0!==e)),F(t,l,n,i,f,h),R((([,e,t,o,,,n])=>!n&&!o&&0!==e&&t===Ge)),B((([[e],,,,,t])=>(t("Upward scrolling compensation",{amount:e},$.DEBUG),e)))));function I(t){t>0?(v(e,{top:-t,behavior:"auto"}),v(o,0)):(v(o,0),v(e,{top:-t,behavior:"auto"}))}return p(y(g,F(o,r)),(([e,t,n])=>{n&&pt()?v(o,t-e):I(-e)})),p(y(A(H(r,!1),o,h),R((([e,t,o])=>!e&&!o&&0!==t)),B((([e,t])=>t)),M(1)),I),T(y(u,B((e=>({top:-e})))),e),p(y(a,F(d,m),B((([e,{lastSize:t,groupIndices:o,sizeTree:n},r])=>{function i(e){return e*(t+r)}if(0===o.length)return i(e);{let t=0;const r=le(n,0);let l=0,s=0;for(;l<e;){l++,t+=r;let n=o.length===s+1?1/0:o[s+1]-o[s]-1;l+n>e&&(t-=r,n=e-l+1),l+=n,t+=i(n),s++}return t}}))),(t=>{v(o,t),requestAnimationFrame((()=>{v(e,{top:t}),requestAnimationFrame((()=>{v(o,0),v(h,!1)}))}))})),{deviation:o}}),d(ee,Ue,ut,We,K,Ce)),It=D((([{didMount:e},{scrollTo:t},{listState:o}])=>{const n=C(0);return p(y(e,F(n),R((([,e])=>0!==e)),B((([,e])=>({top:e})))),(e=>{w(y(o,L(1),R((e=>e.items.length>1))),(()=>{requestAnimationFrame((()=>{v(t,e)}))}))})),{initialScrollTop:n}}),d($e,ee,ut),{singleton:!0}),xt=D((([{viewportHeight:e},{totalListHeight:t}])=>{const o=C(!1);return{alignToBottom:o,paddingTopAddition:H(y(A(o,e,t),R((([e])=>e)),B((([,e,t])=>Math.max(0,e-t))),M(0),z()),0)}}),d(ee,ht),{singleton:!0}),Tt=D((([{scrollTo:e,scrollContainerState:t}])=>{const o=S(),n=S(),r=S(),i=C(!1),l=C(void 0);return T(y(A(o,n),B((([{viewportHeight:e,scrollTop:t,scrollHeight:o},{offsetTop:n}])=>({scrollTop:Math.max(0,t-n),scrollHeight:o,viewportHeight:e})))),t),T(y(e,F(n),B((([e,{offsetTop:t}])=>({...e,top:e.top+t})))),r),{useWindowScroll:i,customScrollParent:l,windowScrollContainerState:o,windowViewportRect:n,windowScrollTo:r}}),d(ee)),wt=({itemTop:e,itemBottom:t,viewportTop:o,viewportBottom:n,locationParams:{behavior:r,align:i,...l}})=>e<o?{...l,behavior:r,align:null!=i?i:"start"}:t>n?{...l,behavior:r,align:null!=i?i:"end"}:null,St=D((([{sizes:e,totalCount:t,gap:o},{scrollTop:n,viewportHeight:r,headerHeight:i,fixedHeaderHeight:l,fixedFooterHeight:s,scrollingInProgress:c},{scrollToIndex:a}])=>{const u=S();return T(y(u,F(e,r,t,i,l,s,n),F(o),B((([[e,t,o,n,r,i,l,s],a])=>{const{done:u,behavior:d,align:m,calculateViewLocation:f=wt,...h}=e,g=Le(e,t,n-1),p=Pe(g,t.offsetTree,a)+r+i,v=f({itemTop:p,itemBottom:p+se(t.sizeTree,g)[1],viewportTop:s+i,viewportBottom:s+o-l,locationParams:{behavior:d,align:m,...h}});return v?u&&w(y(c,R((e=>!1===e)),L(x(c)?1:2)),u):u&&u(),v})),R((e=>null!==e))),a),{scrollIntoView:u}}),d(We,ee,De,ut,K),{singleton:!0}),Ct=D((([{sizes:e,sizeRanges:t},{scrollTop:o},{initialTopMostItemIndex:n},{didMount:r}])=>{const i=S(),l=C(void 0);return p(y(i,F(e,o)),(([e,t,o])=>{e({ranges:ue(t.sizeTree).map((({k:e,v:t},o,n)=>{const r=n[o+1];return{startIndex:e,endIndex:r?r.k-1:1/0,size:t}})),scrollTop:o})})),T(y(l,R(h),B(Et)),n),T(y(r,F(l),R((([,e])=>void 0!==e)),z(),B((([,e])=>e.ranges))),t),{getState:i,restoreStateFrom:l}}),d(We,ee,qe,$e));function Et(e){return{offset:e.scrollTop,index:0,align:"start"}}const Ht=D((([e,t,o,n,r,i,l,s,c,a])=>({...e,...t,...o,...n,...r,...i,...l,...s,...c,...a})),d(lt,dt,$e,mt,ht,It,xt,Tt,St,K)),yt=D((([{totalCount:e,sizeRanges:t,fixedItemSize:o,defaultItemSize:n,trackItemSizes:r,itemSize:i,data:l,firstItemIndex:s,groupIndices:c,statefulTotalCount:a,gap:u,sizes:d},{initialTopMostItemIndex:m,scrolledToInitialItem:f},h,g,p,{listState:v,topItemsIndexes:I,...x},{scrollToIndex:w},S,{topItemCount:C},{groupCounts:E},H])=>(T(x.rangeChanged,H.scrollSeekRangeChanged),T(y(H.windowViewportRect,B((e=>e.visibleHeight))),h.viewportHeight),{totalCount:e,data:l,firstItemIndex:s,sizeRanges:t,initialTopMostItemIndex:m,scrolledToInitialItem:f,topItemsIndexes:I,topItemCount:C,groupCounts:E,fixedItemHeight:o,defaultItemHeight:n,gap:u,...p,statefulTotalCount:a,listState:v,scrollToIndex:w,trackItemSizes:r,itemSize:i,groupIndices:c,...x,...H,...h,sizes:d,...g})),d(We,qe,ee,Ct,Ze,ut,De,vt,ft,Qe,Ht)),bt="-webkit-sticky",zt="sticky",Rt=gt((()=>{if("undefined"==typeof document)return zt;const e=document.createElement("div");return e.style.position=bt,e.style.position===bt?bt:zt}));function Bt(t,o){const n=e.useRef(null),r=e.useCallback((e=>{if(null===e||!e.offsetParent)return;const r=e.getBoundingClientRect(),i=r.width;let l,s;if(o){const e=o.getBoundingClientRect(),t=r.top-e.top;l=e.height-Math.max(0,t),s=t+o.scrollTop}else l=window.innerHeight-Math.max(0,r.top),s=r.top+window.pageYOffset;n.current={offsetTop:s,visibleHeight:l,visibleWidth:i},t(n.current)}),[t,o]),{callbackRef:i,ref:l}=q(r),s=e.useCallback((()=>{r(l.current)}),[r,l]);return e.useEffect((()=>{if(o){o.addEventListener("scroll",s);const e=new ResizeObserver(s);return e.observe(o),()=>{o.removeEventListener("scroll",s),e.unobserve(o)}}return window.addEventListener("scroll",s),window.addEventListener("resize",s),()=>{window.removeEventListener("scroll",s),window.removeEventListener("resize",s)}}),[s,o]),i}const kt=e.createContext(void 0),Pt=e.createContext(void 0);function Lt(e){return e}const Mt=D((([e,t])=>({...e,...t})),d(yt,D((()=>{const e=C((e=>`Item ${e}`)),t=C(null),o=C((e=>`Group ${e}`)),n=C({}),r=C(Lt),i=C("div"),l=C(g),s=(e,t=null)=>H(y(n,B((t=>t[e])),z()),t);return{context:t,itemContent:e,groupContent:o,components:n,computeItemKey:r,headerFooterTag:i,scrollerRef:l,FooterComponent:s("Footer"),HeaderComponent:s("Header"),TopItemListComponent:s("TopItemList"),ListComponent:s("List","div"),ItemComponent:s("Item","div"),GroupComponent:s("Group","div"),ScrollerComponent:s("Scroller","div"),EmptyPlaceholder:s("EmptyPlaceholder"),ScrollSeekPlaceholder:s("ScrollSeekPlaceholder")}})))),Ot=({height:t})=>e.createElement("div",{style:{height:t}}),Ft={position:Rt(),zIndex:1,overflowAnchor:"none"},Wt={overflowAnchor:"none"},Vt=e.memo((function({showTopList:t=!1}){const o=Xt("listState"),n=Qt("sizeRanges"),r=Xt("useWindowScroll"),i=Xt("customScrollParent"),l=Qt("windowScrollContainerState"),s=Qt("scrollContainerState"),c=i||r?l:s,a=Xt("itemContent"),u=Xt("context"),d=Xt("groupContent"),m=Xt("trackItemSizes"),f=Xt("itemSize"),h=Xt("log"),p=Qt("gap"),{callbackRef:v}=Z(n,f,m,t?g:c,h,p,i),[I,x]=e.useState(0);eo("deviation",(e=>{I!==e&&x(e)}));const T=Xt("EmptyPlaceholder"),w=Xt("ScrollSeekPlaceholder")||Ot,S=Xt("ListComponent"),C=Xt("ItemComponent"),E=Xt("GroupComponent"),H=Xt("computeItemKey"),y=Xt("isSeeking"),b=Xt("groupIndices").length>0,z=Xt("paddingTopAddition"),R=Xt("scrolledToInitialItem"),B=t?{}:{boxSizing:"border-box",paddingTop:o.offsetTop+z,paddingBottom:o.offsetBottom,marginTop:I,...R?{}:{visibility:"hidden"}};return!t&&0===o.totalCount&&T?e.createElement(T,Nt(T,u)):e.createElement(S,{...Nt(S,u),ref:v,style:B,"data-test-id":t?"virtuoso-top-item-list":"virtuoso-item-list"},(t?o.topItems:o.items).map((t=>{const n=t.originalIndex,r=H(n+o.firstItemIndex,t.data,u);return y?e.createElement(w,{...Nt(w,u),key:r,index:t.index,height:t.size,type:t.type||"item",..."group"===t.type?{}:{groupIndex:t.groupIndex}}):"group"===t.type?e.createElement(E,{...Nt(E,u),key:r,"data-index":n,"data-known-size":t.size,"data-item-index":t.index,style:Ft},d(t.index,u)):e.createElement(C,{...Nt(C,u),key:r,"data-index":n,"data-known-size":t.size,"data-item-index":t.index,"data-item-group-index":t.groupIndex,item:t.data,style:Wt},b?a(t.index,t.groupIndex,t.data,u):a(t.index,t.data,u))})))})),At={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},Dt={width:"100%",height:"100%",position:"absolute",top:0},Gt={width:"100%",position:Rt(),top:0,zIndex:1};function Nt(e,t){if("string"!=typeof e)return{context:t}}const _t=e.memo((function(){const t=Xt("HeaderComponent"),o=Qt("headerHeight"),n=Xt("headerFooterTag"),r=Y((e=>o(J(e,"height")))),i=Xt("context");return t?e.createElement(n,{ref:r},e.createElement(t,Nt(t,i))):null})),Ut=e.memo((function(){const t=Xt("FooterComponent"),o=Qt("footerHeight"),n=Xt("headerFooterTag"),r=Y((e=>o(J(e,"height")))),i=Xt("context");return t?e.createElement(n,{ref:r},e.createElement(t,Nt(t,i))):null}));function $t({usePublisher:t,useEmitter:o,useEmitterValue:n}){return e.memo((function({style:r,children:i,...l}){const s=t("scrollContainerState"),c=n("ScrollerComponent"),a=t("smoothScrollTargetReached"),u=n("scrollerRef"),d=n("context"),{scrollerRef:m,scrollByCallback:f,scrollToCallback:h}=X(s,a,c,u);return o("scrollTo",h),o("scrollBy",f),e.createElement(c,{ref:m,style:{...At,...r},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...l,...Nt(c,d)},i)}))}function jt({usePublisher:t,useEmitter:o,useEmitterValue:n}){return e.memo((function({style:r,children:i,...l}){const s=t("windowScrollContainerState"),c=n("ScrollerComponent"),a=t("smoothScrollTargetReached"),u=n("totalListHeight"),d=n("deviation"),m=n("customScrollParent"),f=n("context"),{scrollerRef:h,scrollByCallback:p,scrollToCallback:v}=X(s,a,c,g,m);return U((()=>(h.current=m||window,()=>{h.current=null})),[h,m]),o("windowScrollTo",v),o("scrollBy",p),e.createElement(c,{style:{position:"relative",...r,...0!==u?{height:u+d}:{}},"data-virtuoso-scroller":!0,...l,...Nt(c,f)},i)}))}const Kt=({children:t})=>{const o=e.useContext(kt),n=Qt("viewportHeight"),r=Qt("fixedItemHeight"),i=Y(l(n,(e=>J(e,"height"))));return e.useEffect((()=>{o&&(n(o.viewportHeight),r(o.itemHeight))}),[o,n,r]),e.createElement("div",{style:Dt,ref:i,"data-viewport-type":"element"},t)},qt=({children:t})=>{const o=e.useContext(kt),n=Qt("windowViewportRect"),r=Qt("fixedItemHeight"),i=Xt("customScrollParent"),l=Bt(n,i);return e.useEffect((()=>{o&&(r(o.itemHeight),n({offsetTop:0,visibleHeight:o.viewportHeight,visibleWidth:100}))}),[o,n,r]),e.createElement("div",{ref:l,style:Dt,"data-viewport-type":"window"},t)},Yt=({children:t})=>{const o=Xt("TopItemListComponent"),n=Xt("headerHeight"),r={...Gt,marginTop:`${n}px`},i=Xt("context");return e.createElement(o||"div",{style:r,context:i},t)},Zt=e.memo((function(t){const o=Xt("useWindowScroll"),n=Xt("topItemsIndexes").length>0,r=Xt("customScrollParent"),i=r||o?oo:to,l=r||o?qt:Kt;return e.createElement(i,{...t},n&&e.createElement(Yt,null,e.createElement(Vt,{showTopList:!0})),e.createElement(l,null,e.createElement(_t,null),e.createElement(Vt,null),e.createElement(Ut,null)))})),{Component:Jt,usePublisher:Qt,useEmitterValue:Xt,useEmitter:eo}=_(Mt,{required:{},optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Zt),to=$t({usePublisher:Qt,useEmitterValue:Xt,useEmitter:eo}),oo=jt({usePublisher:Qt,useEmitterValue:Xt,useEmitter:eo}),no=Jt,ro=Jt,io={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},lo={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:so,ceil:co,floor:ao,min:uo,max:mo}=Math;function fo(e,t,o){return Array.from({length:t-e+1}).map(((t,n)=>{const r=null===o?null:o[n+e];return{index:n+e,data:r}}))}function ho(e,t){return e&&e.column===t.column&&e.row===t.row}function go(e,t){return e&&e.width===t.width&&e.height===t.height}const po=D((([{overscan:e,visibleRange:t,listBoundary:o},{scrollTop:n,viewportHeight:r,scrollBy:i,scrollTo:l,smoothScrollTargetReached:s,scrollContainerState:c,footerHeight:a,headerHeight:u},d,m,{propsReady:f,didMount:h},{windowViewportRect:g,useWindowScroll:I,customScrollParent:x,windowScrollContainerState:b,windowScrollTo:P},O])=>{const W=C(0),D=C(0),G=C(io),N=C({height:0,width:0}),_=C({height:0,width:0}),U=S(),$=S(),j=C(0),K=C(null),q=C({row:0,column:0}),Y=S(),Z=S(),J=C(!1),Q=C(0),X=C(!0),ee=C(!1);p(y(h,F(Q),R((([e,t])=>!!t))),(()=>{v(X,!1),v(D,0)})),p(y(A(h,X,_,N,Q,ee),R((([e,t,o,n,,r])=>e&&!t&&0!==o.height&&0!==n.height&&!r))),(([,,,,e])=>{v(ee,!0),je(1,(()=>{v(U,e)})),w(y(n),(()=>{v(o,[0,0]),v(X,!0)}))})),T(y(Z,R((e=>null!=e&&e.scrollTop>0)),k(0)),D),p(y(h,F(Z),R((([,e])=>null!=e))),(([,e])=>{e&&(v(N,e.viewport),v(_,null==e?void 0:e.item),v(q,e.gap),e.scrollTop>0&&(v(J,!0),w(y(n,L(1)),(e=>{v(J,!1)})),v(l,{top:e.scrollTop})))})),T(y(N,B((({height:e})=>e))),r),T(y(A(V(N,go),V(_,go),V(q,((e,t)=>e&&e.column===t.column&&e.row===t.row)),V(n)),B((([e,t,o,n])=>({viewport:e,item:t,gap:o,scrollTop:n})))),Y),T(y(A(V(W),t,V(q,ho),V(_,go),V(N,go),V(K),V(D),V(J),V(X),V(Q)),R((([,,,,,,,e])=>!e)),B((([e,[t,o],n,r,i,l,s,,c,a])=>{const{row:u,column:d}=n,{height:m,width:f}=r,{width:h}=i;if(0===s&&(0===e||0===h))return io;if(0===f){const t=Ke(a,e);return function(e){return{...lo,items:e}}(fo(t,0===t?Math.max(s-1,0):t,l))}const g=xo(h,f,d);let p,v;c?0===t&&0===o&&s>0?(p=0,v=s-1):(p=g*ao((t+u)/(m+u)),v=g*co((o+u)/(m+u))-1,v=uo(e-1,mo(v,g-1)),p=uo(v,mo(0,p))):(p=0,v=-1);const I=fo(p,v,l),{top:x,bottom:T}=vo(i,n,r,I),w=co(e/g);return{items:I,offsetTop:x,offsetBottom:w*m+(w-1)*u-T,top:x,bottom:T,itemHeight:m,itemWidth:f}}))),G),T(y(K,R((e=>null!==e)),B((e=>e.length))),W),T(y(A(N,_,G,q),R((([e,t,{items:o}])=>o.length>0&&0!==t.height&&0!==e.height)),B((([e,t,{items:o},n])=>{const{top:r,bottom:i}=vo(e,n,t,o);return[r,i]})),z(Xe)),o);const te=C(!1);T(y(n,F(te),B((([e,t])=>t||0!==e))),te);const oe=E(y(V(G),R((({items:e})=>e.length>0)),F(W,te),R((([{items:e},t,o])=>o&&e[e.length-1].index===t-1)),B((([,e])=>e-1)),z())),ne=E(y(V(G),R((({items:e})=>e.length>0&&0===e[0].index)),k(0),z())),re=E(y(V(G),F(J),R((([{items:e},t])=>e.length>0&&!t)),B((([{items:e}])=>({startIndex:e[0].index,endIndex:e[e.length-1].index}))),z(et),M(0)));T(re,m.scrollSeekRangeChanged),T(y(U,F(N,_,W,q),B((([e,t,o,n,r])=>{const i=Ae(e),{align:l,behavior:s,offset:c}=i;let a=i.index;"LAST"===a&&(a=n-1),a=mo(0,a,uo(n-1,a));let u=Io(t,r,o,a);return"end"===l?u=so(u-t.height+o.height):"center"===l&&(u=so(u-t.height/2+o.height/2)),c&&(u+=c),{top:u,behavior:s}}))),l);const ie=H(y(G,B((e=>e.offsetBottom+e.bottom))),0);return T(y(g,B((e=>({width:e.visibleWidth,height:e.visibleHeight})))),N),{data:K,totalCount:W,viewportDimensions:N,itemDimensions:_,scrollTop:n,scrollHeight:$,overscan:e,scrollBy:i,scrollTo:l,scrollToIndex:U,smoothScrollTargetReached:s,windowViewportRect:g,windowScrollTo:P,useWindowScroll:I,customScrollParent:x,windowScrollContainerState:b,deviation:j,scrollContainerState:c,footerHeight:a,headerHeight:u,initialItemCount:D,gap:q,restoreStateFrom:Z,...m,initialTopMostItemIndex:Q,gridState:G,totalListHeight:ie,...d,startReached:ne,endReached:oe,rangeChanged:re,stateChanged:Y,propsReady:f,stateRestoreInProgress:J,...O}}),d(lt,ee,Ue,mt,$e,Tt,K));function vo(e,t,o,n){const{height:r}=o;if(void 0===r||0===n.length)return{top:0,bottom:0};return{top:Io(e,t,o,n[0].index),bottom:Io(e,t,o,n[n.length-1].index)+r}}function Io(e,t,o,n){const r=xo(e.width,o.width,t.column),i=ao(n/r),l=i*o.height+mo(0,i-1)*t.row;return l>0?l+t.row:l}function xo(e,t,o){return mo(1,ao((e+o)/(ao(t)+o)))}const To=D((([e,t])=>({...e,...t})),d(po,D((()=>{const e=C((e=>`Item ${e}`)),t=C({}),o=C(null),n=C("virtuoso-grid-item"),r=C("virtuoso-grid-list"),i=C(Lt),l=C("div"),s=C(g),c=(e,o=null)=>H(y(t,B((t=>t[e])),z()),o);return{context:o,itemContent:e,components:t,computeItemKey:i,itemClassName:n,listClassName:r,headerFooterTag:l,scrollerRef:s,FooterComponent:c("Footer"),HeaderComponent:c("Header"),ListComponent:c("List","div"),ItemComponent:c("Item","div"),ScrollerComponent:c("Scroller","div"),ScrollSeekPlaceholder:c("ScrollSeekPlaceholder","div")}})))),wo=e.memo((function(){const t=Ro("gridState"),o=Ro("listClassName"),n=Ro("itemClassName"),r=Ro("itemContent"),i=Ro("computeItemKey"),l=Ro("isSeeking"),s=zo("scrollHeight"),c=Ro("ItemComponent"),a=Ro("ListComponent"),u=Ro("ScrollSeekPlaceholder"),d=Ro("context"),m=zo("itemDimensions"),f=zo("gap"),h=Ro("log"),g=Ro("stateRestoreInProgress"),p=Y((e=>{const t=e.parentElement.parentElement.scrollHeight;s(t);const o=e.firstChild;if(o){const{width:e,height:t}=o.getBoundingClientRect();m({width:e,height:t})}f({row:Lo("row-gap",getComputedStyle(e).rowGap,h),column:Lo("column-gap",getComputedStyle(e).columnGap,h)})}));return g?null:e.createElement(a,{ref:p,className:o,...Nt(a,d),style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom},"data-test-id":"virtuoso-item-list"},t.items.map((o=>{const s=i(o.index,o.data,d);return l?e.createElement(u,{key:s,...Nt(u,d),index:o.index,height:t.itemHeight,width:t.itemWidth}):e.createElement(c,{...Nt(c,d),className:n,"data-index":o.index,key:s},r(o.index,o.data,d))})))})),So=e.memo((function(){const t=Ro("HeaderComponent"),o=zo("headerHeight"),n=Ro("headerFooterTag"),r=Y((e=>o(J(e,"height")))),i=Ro("context");return t?e.createElement(n,{ref:r},e.createElement(t,Nt(t,i))):null})),Co=e.memo((function(){const t=Ro("FooterComponent"),o=zo("footerHeight"),n=Ro("headerFooterTag"),r=Y((e=>o(J(e,"height")))),i=Ro("context");return t?e.createElement(n,{ref:r},e.createElement(t,Nt(t,i))):null})),Eo=({children:t})=>{const o=e.useContext(Pt),n=zo("itemDimensions"),r=zo("viewportDimensions"),i=Y((e=>{r(e.getBoundingClientRect())}));return e.useEffect((()=>{o&&(r({height:o.viewportHeight,width:o.viewportWidth}),n({height:o.itemHeight,width:o.itemWidth}))}),[o,r,n]),e.createElement("div",{style:Dt,ref:i},t)},Ho=({children:t})=>{const o=e.useContext(Pt),n=zo("windowViewportRect"),r=zo("itemDimensions"),i=Ro("customScrollParent"),l=Bt(n,i);return e.useEffect((()=>{o&&(r({height:o.itemHeight,width:o.itemWidth}),n({offsetTop:0,visibleHeight:o.viewportHeight,visibleWidth:o.viewportWidth}))}),[o,n,r]),e.createElement("div",{ref:l,style:Dt},t)},yo=e.memo((function({...t}){const o=Ro("useWindowScroll"),n=Ro("customScrollParent"),r=n||o?Po:ko,i=n||o?Ho:Eo;return e.createElement(r,{...t},e.createElement(i,null,e.createElement(So,null),e.createElement(wo,null),e.createElement(Co,null)))})),{Component:bo,usePublisher:zo,useEmitterValue:Ro,useEmitter:Bo}=_(To,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged"}},yo),ko=$t({usePublisher:zo,useEmitterValue:Ro,useEmitter:Bo}),Po=jt({usePublisher:zo,useEmitterValue:Ro,useEmitter:Bo});function Lo(e,t,o){return"normal"===t||(null==t?void 0:t.endsWith("px"))||o(`${e} was not resolved to pixel value correctly`,t,$.WARN),"normal"===t?0:parseInt(null!=t?t:"0",10)}const Mo=bo,Oo=D((([e,t])=>({...e,...t})),d(yt,D((()=>{const t=C((t=>e.createElement("td",null,"Item $",t))),o=C(null),n=C(null),r=C(null),i=C({}),l=C(Lt),s=C(g),c=(e,t=null)=>H(y(i,B((t=>t[e])),z()),t);return{context:o,itemContent:t,fixedHeaderContent:n,fixedFooterContent:r,components:i,computeItemKey:l,scrollerRef:s,TableComponent:c("Table","table"),TableHeadComponent:c("TableHead","thead"),TableFooterComponent:c("TableFoot","tfoot"),TableBodyComponent:c("TableBody","tbody"),TableRowComponent:c("TableRow","tr"),ScrollerComponent:c("Scroller","div"),EmptyPlaceholder:c("EmptyPlaceholder"),ScrollSeekPlaceholder:c("ScrollSeekPlaceholder"),FillerRow:c("FillerRow")}})))),Fo=({height:t})=>e.createElement("tr",null,e.createElement("td",{style:{height:t}})),Wo=({height:t})=>e.createElement("tr",null,e.createElement("td",{style:{height:t,padding:0,border:0}})),Vo={overflowAnchor:"none"},Ao=e.memo((function(){const t=$o("listState"),o=Uo("sizeRanges"),n=$o("useWindowScroll"),r=$o("customScrollParent"),i=Uo("windowScrollContainerState"),l=Uo("scrollContainerState"),s=r||n?i:l,c=$o("itemContent"),a=$o("trackItemSizes"),u=$o("itemSize"),d=$o("log"),{callbackRef:m,ref:f}=Z(o,u,a,s,d,void 0,r),[h,g]=e.useState(0);jo("deviation",(e=>{h!==e&&(f.current.style.marginTop=`${e}px`,g(e))}));const p=$o("EmptyPlaceholder"),v=$o("ScrollSeekPlaceholder")||Fo,I=$o("FillerRow")||Wo,x=$o("TableBodyComponent"),T=$o("TableRowComponent"),w=$o("computeItemKey"),S=$o("isSeeking"),C=$o("paddingTopAddition"),E=$o("firstItemIndex"),H=$o("statefulTotalCount"),y=$o("context");if(0===H&&p)return e.createElement(p,Nt(p,y));const b=t.offsetTop+C+h,z=t.offsetBottom,R=b>0?e.createElement(I,{height:b,key:"padding-top",context:y}):null,B=z>0?e.createElement(I,{height:z,key:"padding-bottom",context:y}):null,k=t.items.map((t=>{const o=t.originalIndex,n=w(o+E,t.data,y);return S?e.createElement(v,{...Nt(v,y),key:n,index:t.index,height:t.size,type:t.type||"item"}):e.createElement(T,{...Nt(T,y),key:n,"data-index":o,"data-known-size":t.size,"data-item-index":t.index,item:t.data,style:Vo},c(t.index,t.data,y))}));return e.createElement(x,{ref:m,"data-test-id":"virtuoso-item-list",...Nt(x,y)},[R,...k,B])})),Do=({children:t})=>{const o=e.useContext(kt),n=Uo("viewportHeight"),r=Uo("fixedItemHeight"),i=Y(l(n,(e=>J(e,"height"))));return e.useEffect((()=>{o&&(n(o.viewportHeight),r(o.itemHeight))}),[o,n,r]),e.createElement("div",{style:Dt,ref:i,"data-viewport-type":"element"},t)},Go=({children:t})=>{const o=e.useContext(kt),n=Uo("windowViewportRect"),r=Uo("fixedItemHeight"),i=$o("customScrollParent"),l=Bt(n,i);return e.useEffect((()=>{o&&(r(o.itemHeight),n({offsetTop:0,visibleHeight:o.viewportHeight,visibleWidth:100}))}),[o,n,r]),e.createElement("div",{ref:l,style:Dt,"data-viewport-type":"window"},t)},No=e.memo((function(t){const o=$o("useWindowScroll"),n=$o("customScrollParent"),r=Uo("fixedHeaderHeight"),i=Uo("fixedFooterHeight"),s=$o("fixedHeaderContent"),c=$o("fixedFooterContent"),a=$o("context"),u=Y(l(r,(e=>J(e,"height")))),d=Y(l(i,(e=>J(e,"height")))),m=n||o?qo:Ko,f=n||o?Go:Do,h=$o("TableComponent"),g=$o("TableHeadComponent"),p=$o("TableFooterComponent"),v=s?e.createElement(g,{key:"TableHead",style:{zIndex:2,position:"sticky",top:0},ref:u,...Nt(g,a)},s()):null,I=c?e.createElement(p,{key:"TableFoot",style:{zIndex:1,position:"sticky",bottom:0},ref:d,...Nt(p,a)},c()):null;return e.createElement(m,{...t},e.createElement(f,null,e.createElement(h,{style:{borderSpacing:0,overflowAnchor:"none"},...Nt(h,a)},[v,e.createElement(Ao,{key:"TableBody"}),I])))})),{Component:_o,usePublisher:Uo,useEmitterValue:$o,useEmitter:jo}=_(Oo,{required:{},optional:{context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",fixedHeaderContent:"fixedHeaderContent",fixedFooterContent:"fixedFooterContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",totalCount:"totalCount",topItemCount:"topItemCount",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",groupCounts:"groupCounts",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},No),Ko=$t({usePublisher:Uo,useEmitterValue:$o,useEmitter:jo}),qo=jt({usePublisher:Uo,useEmitterValue:$o,useEmitter:jo}),Yo=_o;exports.GroupedVirtuoso=ro,exports.LogLevel=$,exports.TableVirtuoso=Yo,exports.Virtuoso=no,exports.VirtuosoGrid=Mo,exports.VirtuosoGridMockContext=Pt,exports.VirtuosoMockContext=kt;
|
package/dist/index.d.ts
CHANGED
|
@@ -85,6 +85,11 @@ export declare interface ComputeItemKey<D, C> {
|
|
|
85
85
|
(index: number, item: D, context: C): React_2.Key;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
declare interface ElementDimensions {
|
|
89
|
+
width: number;
|
|
90
|
+
height: number;
|
|
91
|
+
}
|
|
92
|
+
|
|
88
93
|
/**
|
|
89
94
|
* Passed to the Components.FillerRow custom component
|
|
90
95
|
*/
|
|
@@ -113,6 +118,11 @@ export declare type FollowOutputCallback = (isAtBottom: boolean) => FollowOutput
|
|
|
113
118
|
|
|
114
119
|
export declare type FollowOutputScalarType = boolean | 'smooth' | 'auto';
|
|
115
120
|
|
|
121
|
+
declare interface Gap {
|
|
122
|
+
row: number;
|
|
123
|
+
column: number;
|
|
124
|
+
}
|
|
125
|
+
|
|
116
126
|
export declare interface GridComponents<Context = any> {
|
|
117
127
|
/**
|
|
118
128
|
* Set to customize the item wrapping element. Use only if you would like to render list from elements different than a `div`.
|
|
@@ -160,6 +170,8 @@ export declare interface GridComputeItemKey<D, C> {
|
|
|
160
170
|
(index: number, item: D, context: C): React_2.Key;
|
|
161
171
|
}
|
|
162
172
|
|
|
173
|
+
export declare type GridIndexLocation = FlatIndexLocationWithAlign | number;
|
|
174
|
+
|
|
163
175
|
export declare interface GridItem<D> {
|
|
164
176
|
index: number;
|
|
165
177
|
data?: D;
|
|
@@ -192,6 +204,13 @@ export declare interface GridScrollSeekPlaceholderProps {
|
|
|
192
204
|
width: number;
|
|
193
205
|
}
|
|
194
206
|
|
|
207
|
+
declare interface GridStateSnapshot {
|
|
208
|
+
viewport: ElementDimensions;
|
|
209
|
+
item: ElementDimensions;
|
|
210
|
+
gap: Gap;
|
|
211
|
+
scrollTop: number;
|
|
212
|
+
}
|
|
213
|
+
|
|
195
214
|
export declare interface GroupContent<C> {
|
|
196
215
|
(index: number, context: C): React_2.ReactNode;
|
|
197
216
|
}
|
|
@@ -701,7 +720,7 @@ export declare const VirtuosoGrid: <ItemData = any, Context = any>(props: Virtuo
|
|
|
701
720
|
}) => React_2.ReactElement;
|
|
702
721
|
|
|
703
722
|
export declare interface VirtuosoGridHandle {
|
|
704
|
-
scrollToIndex(location:
|
|
723
|
+
scrollToIndex(location: GridIndexLocation): void;
|
|
705
724
|
scrollTo(location: ScrollToOptions): void;
|
|
706
725
|
scrollBy(location: ScrollToOptions): void;
|
|
707
726
|
}
|
|
@@ -777,6 +796,11 @@ export declare interface VirtuosoGridProps<D, C = unknown> extends GridRootProps
|
|
|
777
796
|
* Called with the new set of items each time the list items are rendered due to scrolling.
|
|
778
797
|
*/
|
|
779
798
|
rangeChanged?: (range: ListRange) => void;
|
|
799
|
+
/**
|
|
800
|
+
* reports when the grid state changes. The reported value can be stored and passed back to `restoreStateFrom` to restore the grid to the same state.
|
|
801
|
+
*/
|
|
802
|
+
stateChanged?: (state: GridStateSnapshot) => void;
|
|
803
|
+
restoreStateFrom?: GridStateSnapshot | undefined | null;
|
|
780
804
|
/**
|
|
781
805
|
* Called with true / false when the list has reached the bottom / gets scrolled up.
|
|
782
806
|
* Can be used to load newer items, like `tail -f`.
|
|
@@ -812,6 +836,7 @@ export declare interface VirtuosoGridProps<D, C = unknown> extends GridRootProps
|
|
|
812
836
|
* Ensure that you have "all levels" enabled in the browser console too see the messages.
|
|
813
837
|
*/
|
|
814
838
|
logLevel?: LogLevel;
|
|
839
|
+
initialTopMostItemIndex?: GridIndexLocation;
|
|
815
840
|
}
|
|
816
841
|
|
|
817
842
|
export declare interface VirtuosoHandle {
|
package/dist/index.mjs
CHANGED
|
@@ -1786,11 +1786,6 @@ const propsReadySystem = system(
|
|
|
1786
1786
|
tup(loggerSystem),
|
|
1787
1787
|
{ singleton: true }
|
|
1788
1788
|
);
|
|
1789
|
-
function getInitialTopMostItemIndexNumber(location, totalCount) {
|
|
1790
|
-
const lastIndex = totalCount - 1;
|
|
1791
|
-
const index = typeof location === "number" ? location : location.index === "LAST" ? lastIndex : location.index;
|
|
1792
|
-
return index;
|
|
1793
|
-
}
|
|
1794
1789
|
function skipFrames(frameCount, callback) {
|
|
1795
1790
|
if (frameCount == 0) {
|
|
1796
1791
|
callback();
|
|
@@ -1798,6 +1793,11 @@ function skipFrames(frameCount, callback) {
|
|
|
1798
1793
|
requestAnimationFrame(() => skipFrames(frameCount - 1, callback));
|
|
1799
1794
|
}
|
|
1800
1795
|
}
|
|
1796
|
+
function getInitialTopMostItemIndexNumber(location, totalCount) {
|
|
1797
|
+
const lastIndex = totalCount - 1;
|
|
1798
|
+
const index = typeof location === "number" ? location : location.index === "LAST" ? lastIndex : location.index;
|
|
1799
|
+
return index;
|
|
1800
|
+
}
|
|
1801
1801
|
const initialTopMostItemIndexSystem = system(
|
|
1802
1802
|
([{ sizes, listRefresh, defaultItemSize }, { scrollTop }, { scrollToIndex }, { didMount }]) => {
|
|
1803
1803
|
const scrolledToInitialItem = statefulStream(true);
|
|
@@ -1808,7 +1808,6 @@ const initialTopMostItemIndexSystem = system(
|
|
|
1808
1808
|
didMount,
|
|
1809
1809
|
withLatestFrom(initialTopMostItemIndex),
|
|
1810
1810
|
filter(([_, location]) => !!location),
|
|
1811
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
1812
1811
|
mapTo(false)
|
|
1813
1812
|
),
|
|
1814
1813
|
scrolledToInitialItem
|
|
@@ -3022,7 +3021,7 @@ const combinedSystem$2 = /* @__PURE__ */ system(([listSystem2, propsSystem]) =>
|
|
|
3022
3021
|
}, tup(listSystem, listComponentPropsSystem));
|
|
3023
3022
|
const DefaultScrollSeekPlaceholder$1 = ({ height }) => /* @__PURE__ */ React.createElement("div", { style: { height } });
|
|
3024
3023
|
const GROUP_STYLE = { position: positionStickyCssValue(), zIndex: 1, overflowAnchor: "none" };
|
|
3025
|
-
const ITEM_STYLE = { overflowAnchor: "none" };
|
|
3024
|
+
const ITEM_STYLE$1 = { overflowAnchor: "none" };
|
|
3026
3025
|
const Items$1 = /* @__PURE__ */ React.memo(function VirtuosoItems({ showTopList = false }) {
|
|
3027
3026
|
const listState = useEmitterValue$2("listState");
|
|
3028
3027
|
const sizeRanges = usePublisher$2("sizeRanges");
|
|
@@ -3118,7 +3117,7 @@ const Items$1 = /* @__PURE__ */ React.memo(function VirtuosoItems({ showTopList
|
|
|
3118
3117
|
"data-item-index": item.index,
|
|
3119
3118
|
"data-item-group-index": item.groupIndex,
|
|
3120
3119
|
item: item.data,
|
|
3121
|
-
style: ITEM_STYLE
|
|
3120
|
+
style: ITEM_STYLE$1
|
|
3122
3121
|
},
|
|
3123
3122
|
hasGroups2 ? itemContent(item.index, item.groupIndex, item.data, context) : itemContent(item.index, item.data, context)
|
|
3124
3123
|
);
|
|
@@ -3369,9 +3368,10 @@ function buildProbeGridState(items) {
|
|
|
3369
3368
|
};
|
|
3370
3369
|
}
|
|
3371
3370
|
function buildItems(startIndex, endIndex, data) {
|
|
3372
|
-
return Array.from({ length: endIndex - startIndex + 1 }).map(
|
|
3373
|
-
|
|
3374
|
-
|
|
3371
|
+
return Array.from({ length: endIndex - startIndex + 1 }).map((_, i) => {
|
|
3372
|
+
const dataItem = data === null ? null : data[i + startIndex];
|
|
3373
|
+
return { index: i + startIndex, data: dataItem };
|
|
3374
|
+
});
|
|
3375
3375
|
}
|
|
3376
3376
|
function gapComparator(prev, next) {
|
|
3377
3377
|
return prev && prev.column === next.column && prev.row === next.row;
|
|
@@ -3386,7 +3386,7 @@ const gridSystem = /* @__PURE__ */ system(
|
|
|
3386
3386
|
stateFlags,
|
|
3387
3387
|
scrollSeek,
|
|
3388
3388
|
{ propsReady, didMount },
|
|
3389
|
-
{ windowViewportRect,
|
|
3389
|
+
{ windowViewportRect, useWindowScroll, customScrollParent, windowScrollContainerState, windowScrollTo },
|
|
3390
3390
|
log
|
|
3391
3391
|
]) => {
|
|
3392
3392
|
const totalCount = statefulStream(0);
|
|
@@ -3397,26 +3397,95 @@ const gridSystem = /* @__PURE__ */ system(
|
|
|
3397
3397
|
const scrollToIndex = stream();
|
|
3398
3398
|
const scrollHeight = stream();
|
|
3399
3399
|
const deviation = statefulStream(0);
|
|
3400
|
-
const data = statefulStream(
|
|
3400
|
+
const data = statefulStream(null);
|
|
3401
3401
|
const gap = statefulStream({ row: 0, column: 0 });
|
|
3402
|
-
|
|
3402
|
+
const stateChanged = stream();
|
|
3403
|
+
const restoreStateFrom = stream();
|
|
3404
|
+
const stateRestoreInProgress = statefulStream(false);
|
|
3405
|
+
const initialTopMostItemIndex = statefulStream(0);
|
|
3406
|
+
const scrolledToInitialItem = statefulStream(true);
|
|
3407
|
+
const scrollScheduled = statefulStream(false);
|
|
3408
|
+
subscribe(
|
|
3403
3409
|
pipe(
|
|
3404
3410
|
didMount,
|
|
3405
|
-
withLatestFrom(
|
|
3406
|
-
filter(([
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
|
|
3414
|
-
|
|
3415
|
-
|
|
3416
|
-
|
|
3411
|
+
withLatestFrom(initialTopMostItemIndex),
|
|
3412
|
+
filter(([_, location]) => !!location)
|
|
3413
|
+
),
|
|
3414
|
+
() => {
|
|
3415
|
+
publish(scrolledToInitialItem, false);
|
|
3416
|
+
publish(initialItemCount, 0);
|
|
3417
|
+
}
|
|
3418
|
+
);
|
|
3419
|
+
subscribe(
|
|
3420
|
+
pipe(
|
|
3421
|
+
combineLatest(didMount, scrolledToInitialItem, itemDimensions, viewportDimensions, initialTopMostItemIndex, scrollScheduled),
|
|
3422
|
+
filter(([didMount2, scrolledToInitialItem2, itemDimensions2, viewportDimensions2, , scrollScheduled2]) => {
|
|
3423
|
+
return didMount2 && !scrolledToInitialItem2 && itemDimensions2.height !== 0 && viewportDimensions2.height !== 0 && !scrollScheduled2;
|
|
3417
3424
|
})
|
|
3418
3425
|
),
|
|
3419
|
-
|
|
3426
|
+
([, , , , initialTopMostItemIndex2]) => {
|
|
3427
|
+
publish(scrollScheduled, true);
|
|
3428
|
+
skipFrames(1, () => {
|
|
3429
|
+
publish(scrollToIndex, initialTopMostItemIndex2);
|
|
3430
|
+
});
|
|
3431
|
+
handleNext(pipe(scrollTop), () => {
|
|
3432
|
+
publish(listBoundary, [0, 0]);
|
|
3433
|
+
publish(scrolledToInitialItem, true);
|
|
3434
|
+
});
|
|
3435
|
+
}
|
|
3436
|
+
);
|
|
3437
|
+
connect(
|
|
3438
|
+
pipe(
|
|
3439
|
+
restoreStateFrom,
|
|
3440
|
+
filter((value) => value !== void 0 && value !== null && value.scrollTop > 0),
|
|
3441
|
+
mapTo(0)
|
|
3442
|
+
),
|
|
3443
|
+
initialItemCount
|
|
3444
|
+
);
|
|
3445
|
+
subscribe(
|
|
3446
|
+
pipe(
|
|
3447
|
+
didMount,
|
|
3448
|
+
withLatestFrom(restoreStateFrom),
|
|
3449
|
+
filter(([, snapshot]) => snapshot !== void 0 && snapshot !== null)
|
|
3450
|
+
),
|
|
3451
|
+
([, snapshot]) => {
|
|
3452
|
+
if (!snapshot) {
|
|
3453
|
+
return;
|
|
3454
|
+
}
|
|
3455
|
+
publish(viewportDimensions, snapshot.viewport), publish(itemDimensions, snapshot == null ? void 0 : snapshot.item);
|
|
3456
|
+
publish(gap, snapshot.gap);
|
|
3457
|
+
if (snapshot.scrollTop > 0) {
|
|
3458
|
+
publish(stateRestoreInProgress, true);
|
|
3459
|
+
handleNext(pipe(scrollTop, skip(1)), (_value) => {
|
|
3460
|
+
publish(stateRestoreInProgress, false);
|
|
3461
|
+
});
|
|
3462
|
+
publish(scrollTo, { top: snapshot.scrollTop });
|
|
3463
|
+
}
|
|
3464
|
+
}
|
|
3465
|
+
);
|
|
3466
|
+
connect(
|
|
3467
|
+
pipe(
|
|
3468
|
+
viewportDimensions,
|
|
3469
|
+
map(({ height }) => height)
|
|
3470
|
+
),
|
|
3471
|
+
viewportHeight
|
|
3472
|
+
);
|
|
3473
|
+
connect(
|
|
3474
|
+
pipe(
|
|
3475
|
+
combineLatest(
|
|
3476
|
+
duc(viewportDimensions, dimensionComparator),
|
|
3477
|
+
duc(itemDimensions, dimensionComparator),
|
|
3478
|
+
duc(gap, (prev, next) => prev && prev.column === next.column && prev.row === next.row),
|
|
3479
|
+
duc(scrollTop)
|
|
3480
|
+
),
|
|
3481
|
+
map(([viewport, item, gap2, scrollTop2]) => ({
|
|
3482
|
+
viewport,
|
|
3483
|
+
item,
|
|
3484
|
+
gap: gap2,
|
|
3485
|
+
scrollTop: scrollTop2
|
|
3486
|
+
}))
|
|
3487
|
+
),
|
|
3488
|
+
stateChanged
|
|
3420
3489
|
);
|
|
3421
3490
|
connect(
|
|
3422
3491
|
pipe(
|
|
@@ -3426,53 +3495,81 @@ const gridSystem = /* @__PURE__ */ system(
|
|
|
3426
3495
|
duc(gap, gapComparator),
|
|
3427
3496
|
duc(itemDimensions, dimensionComparator),
|
|
3428
3497
|
duc(viewportDimensions, dimensionComparator),
|
|
3429
|
-
data
|
|
3498
|
+
duc(data),
|
|
3499
|
+
duc(initialItemCount),
|
|
3500
|
+
duc(stateRestoreInProgress),
|
|
3501
|
+
duc(scrolledToInitialItem),
|
|
3502
|
+
duc(initialTopMostItemIndex)
|
|
3430
3503
|
),
|
|
3431
|
-
|
|
3432
|
-
|
|
3433
|
-
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3504
|
+
filter(([, , , , , , , stateRestoreInProgress2]) => {
|
|
3505
|
+
return !stateRestoreInProgress2;
|
|
3506
|
+
}),
|
|
3507
|
+
map(
|
|
3508
|
+
([
|
|
3509
|
+
totalCount2,
|
|
3510
|
+
[startOffset, endOffset],
|
|
3511
|
+
gap2,
|
|
3512
|
+
item,
|
|
3513
|
+
viewport,
|
|
3514
|
+
data2,
|
|
3515
|
+
initialItemCount2,
|
|
3516
|
+
,
|
|
3517
|
+
scrolledToInitialItem2,
|
|
3518
|
+
initialTopMostItemIndex2
|
|
3519
|
+
]) => {
|
|
3520
|
+
const { row: rowGap, column: columnGap } = gap2;
|
|
3521
|
+
const { height: itemHeight, width: itemWidth } = item;
|
|
3522
|
+
const { width: viewportWidth } = viewport;
|
|
3523
|
+
if (initialItemCount2 === 0 && (totalCount2 === 0 || viewportWidth === 0)) {
|
|
3524
|
+
return INITIAL_GRID_STATE;
|
|
3525
|
+
}
|
|
3526
|
+
if (itemWidth === 0) {
|
|
3527
|
+
const startIndex2 = getInitialTopMostItemIndexNumber(initialTopMostItemIndex2, totalCount2);
|
|
3528
|
+
const endIndex2 = startIndex2 === 0 ? Math.max(initialItemCount2 - 1, 0) : startIndex2;
|
|
3529
|
+
return buildProbeGridState(buildItems(startIndex2, endIndex2, data2));
|
|
3530
|
+
}
|
|
3531
|
+
const perRow = itemsPerRow(viewportWidth, itemWidth, columnGap);
|
|
3532
|
+
let startIndex;
|
|
3533
|
+
let endIndex;
|
|
3534
|
+
if (!scrolledToInitialItem2) {
|
|
3535
|
+
startIndex = 0;
|
|
3536
|
+
endIndex = -1;
|
|
3537
|
+
} else if (startOffset === 0 && endOffset === 0 && initialItemCount2 > 0) {
|
|
3538
|
+
startIndex = 0;
|
|
3539
|
+
endIndex = initialItemCount2 - 1;
|
|
3540
|
+
} else {
|
|
3541
|
+
startIndex = perRow * floor((startOffset + rowGap) / (itemHeight + rowGap));
|
|
3542
|
+
endIndex = perRow * ceil((endOffset + rowGap) / (itemHeight + rowGap)) - 1;
|
|
3543
|
+
endIndex = min(totalCount2 - 1, max(endIndex, perRow - 1));
|
|
3544
|
+
startIndex = min(endIndex, max(0, startIndex));
|
|
3545
|
+
}
|
|
3546
|
+
const items = buildItems(startIndex, endIndex, data2);
|
|
3547
|
+
const { top, bottom } = gridLayout(viewport, gap2, item, items);
|
|
3548
|
+
const rowCount = ceil(totalCount2 / perRow);
|
|
3549
|
+
const totalHeight = rowCount * itemHeight + (rowCount - 1) * rowGap;
|
|
3550
|
+
const offsetBottom = totalHeight - bottom;
|
|
3551
|
+
return { items, offsetTop: top, offsetBottom, top, bottom, itemHeight, itemWidth };
|
|
3440
3552
|
}
|
|
3441
|
-
|
|
3442
|
-
let startIndex = perRow * floor((startOffset + rowGap) / (itemHeight + rowGap));
|
|
3443
|
-
let endIndex = perRow * ceil((endOffset + rowGap) / (itemHeight + rowGap)) - 1;
|
|
3444
|
-
endIndex = min(totalCount2 - 1, max(endIndex, perRow - 1));
|
|
3445
|
-
startIndex = min(endIndex, max(0, startIndex));
|
|
3446
|
-
const items = buildItems(startIndex, endIndex, data2);
|
|
3447
|
-
const { top, bottom } = gridLayout(viewport, gap2, item, items);
|
|
3448
|
-
const rowCount = ceil(totalCount2 / perRow);
|
|
3449
|
-
const totalHeight = rowCount * itemHeight + (rowCount - 1) * rowGap;
|
|
3450
|
-
const offsetBottom = totalHeight - bottom;
|
|
3451
|
-
return { items, offsetTop: top, offsetBottom, top, bottom, itemHeight, itemWidth };
|
|
3452
|
-
})
|
|
3553
|
+
)
|
|
3453
3554
|
),
|
|
3454
3555
|
gridState
|
|
3455
3556
|
);
|
|
3456
3557
|
connect(
|
|
3457
3558
|
pipe(
|
|
3458
3559
|
data,
|
|
3459
|
-
filter(
|
|
3560
|
+
filter((data2) => data2 !== null),
|
|
3460
3561
|
map((data2) => data2.length)
|
|
3461
3562
|
),
|
|
3462
3563
|
totalCount
|
|
3463
3564
|
);
|
|
3464
|
-
connect(
|
|
3465
|
-
pipe(
|
|
3466
|
-
viewportDimensions,
|
|
3467
|
-
map(({ height }) => height)
|
|
3468
|
-
),
|
|
3469
|
-
viewportHeight
|
|
3470
|
-
);
|
|
3471
3565
|
connect(
|
|
3472
3566
|
pipe(
|
|
3473
3567
|
combineLatest(viewportDimensions, itemDimensions, gridState, gap),
|
|
3474
|
-
|
|
3475
|
-
|
|
3568
|
+
filter(([viewportDimensions2, itemDimensions2, { items }]) => {
|
|
3569
|
+
return items.length > 0 && itemDimensions2.height !== 0 && viewportDimensions2.height !== 0;
|
|
3570
|
+
}),
|
|
3571
|
+
map(([viewportDimensions2, itemDimensions2, { items }, gap2]) => {
|
|
3572
|
+
const { top, bottom } = gridLayout(viewportDimensions2, gap2, itemDimensions2, items);
|
|
3476
3573
|
return [top, bottom];
|
|
3477
3574
|
}),
|
|
3478
3575
|
distinctUntilChanged(tupleComparator)
|
|
@@ -3514,14 +3611,16 @@ const gridSystem = /* @__PURE__ */ system(
|
|
|
3514
3611
|
const rangeChanged = streamFromEmitter(
|
|
3515
3612
|
pipe(
|
|
3516
3613
|
duc(gridState),
|
|
3517
|
-
|
|
3518
|
-
|
|
3614
|
+
withLatestFrom(stateRestoreInProgress),
|
|
3615
|
+
filter(([{ items }, stateRestoreInProgress2]) => items.length > 0 && !stateRestoreInProgress2),
|
|
3616
|
+
map(([{ items }]) => {
|
|
3519
3617
|
return {
|
|
3520
3618
|
startIndex: items[0].index,
|
|
3521
3619
|
endIndex: items[items.length - 1].index
|
|
3522
3620
|
};
|
|
3523
3621
|
}),
|
|
3524
|
-
distinctUntilChanged(rangeComparator)
|
|
3622
|
+
distinctUntilChanged(rangeComparator),
|
|
3623
|
+
throttleTime(0)
|
|
3525
3624
|
)
|
|
3526
3625
|
);
|
|
3527
3626
|
connect(rangeChanged, scrollSeek.scrollSeekRangeChanged);
|
|
@@ -3529,7 +3628,7 @@ const gridSystem = /* @__PURE__ */ system(
|
|
|
3529
3628
|
pipe(
|
|
3530
3629
|
scrollToIndex,
|
|
3531
3630
|
withLatestFrom(viewportDimensions, itemDimensions, totalCount, gap),
|
|
3532
|
-
map(([location,
|
|
3631
|
+
map(([location, viewportDimensions2, itemDimensions2, totalCount2, gap2]) => {
|
|
3533
3632
|
const normalLocation = normalizeIndexLocation(location);
|
|
3534
3633
|
const { align, behavior, offset } = normalLocation;
|
|
3535
3634
|
let index = normalLocation.index;
|
|
@@ -3537,11 +3636,11 @@ const gridSystem = /* @__PURE__ */ system(
|
|
|
3537
3636
|
index = totalCount2 - 1;
|
|
3538
3637
|
}
|
|
3539
3638
|
index = max(0, index, min(totalCount2 - 1, index));
|
|
3540
|
-
let top = itemTop(
|
|
3639
|
+
let top = itemTop(viewportDimensions2, gap2, itemDimensions2, index);
|
|
3541
3640
|
if (align === "end") {
|
|
3542
|
-
top = round(top -
|
|
3641
|
+
top = round(top - viewportDimensions2.height + itemDimensions2.height);
|
|
3543
3642
|
} else if (align === "center") {
|
|
3544
|
-
top = round(top -
|
|
3643
|
+
top = round(top - viewportDimensions2.height / 2 + itemDimensions2.height / 2);
|
|
3545
3644
|
}
|
|
3546
3645
|
if (offset) {
|
|
3547
3646
|
top += offset;
|
|
@@ -3591,7 +3690,9 @@ const gridSystem = /* @__PURE__ */ system(
|
|
|
3591
3690
|
headerHeight,
|
|
3592
3691
|
initialItemCount,
|
|
3593
3692
|
gap,
|
|
3693
|
+
restoreStateFrom,
|
|
3594
3694
|
...scrollSeek,
|
|
3695
|
+
initialTopMostItemIndex,
|
|
3595
3696
|
// output
|
|
3596
3697
|
gridState,
|
|
3597
3698
|
totalListHeight,
|
|
@@ -3599,7 +3700,9 @@ const gridSystem = /* @__PURE__ */ system(
|
|
|
3599
3700
|
startReached,
|
|
3600
3701
|
endReached,
|
|
3601
3702
|
rangeChanged,
|
|
3703
|
+
stateChanged,
|
|
3602
3704
|
propsReady,
|
|
3705
|
+
stateRestoreInProgress,
|
|
3603
3706
|
...log
|
|
3604
3707
|
};
|
|
3605
3708
|
},
|
|
@@ -3677,18 +3780,23 @@ const GridItems = /* @__PURE__ */ React.memo(function GridItems2() {
|
|
|
3677
3780
|
const itemDimensions = usePublisher$1("itemDimensions");
|
|
3678
3781
|
const gridGap = usePublisher$1("gap");
|
|
3679
3782
|
const log = useEmitterValue$1("log");
|
|
3783
|
+
const stateRestoreInProgress = useEmitterValue$1("stateRestoreInProgress");
|
|
3680
3784
|
const listRef = useSize((el) => {
|
|
3681
3785
|
const scrollHeight = el.parentElement.parentElement.scrollHeight;
|
|
3682
3786
|
scrollHeightCallback(scrollHeight);
|
|
3683
3787
|
const firstItem = el.firstChild;
|
|
3684
3788
|
if (firstItem) {
|
|
3685
|
-
|
|
3789
|
+
const { width, height } = firstItem.getBoundingClientRect();
|
|
3790
|
+
itemDimensions({ width, height });
|
|
3686
3791
|
}
|
|
3687
3792
|
gridGap({
|
|
3688
3793
|
row: resolveGapValue("row-gap", getComputedStyle(el).rowGap, log),
|
|
3689
3794
|
column: resolveGapValue("column-gap", getComputedStyle(el).columnGap, log)
|
|
3690
3795
|
});
|
|
3691
3796
|
});
|
|
3797
|
+
if (stateRestoreInProgress) {
|
|
3798
|
+
return null;
|
|
3799
|
+
}
|
|
3692
3800
|
return React.createElement(
|
|
3693
3801
|
ListComponent,
|
|
3694
3802
|
{
|
|
@@ -3790,7 +3898,9 @@ const {
|
|
|
3790
3898
|
useWindowScroll: "useWindowScroll",
|
|
3791
3899
|
customScrollParent: "customScrollParent",
|
|
3792
3900
|
scrollerRef: "scrollerRef",
|
|
3793
|
-
logLevel: "logLevel"
|
|
3901
|
+
logLevel: "logLevel",
|
|
3902
|
+
restoreStateFrom: "restoreStateFrom",
|
|
3903
|
+
initialTopMostItemIndex: "initialTopMostItemIndex"
|
|
3794
3904
|
},
|
|
3795
3905
|
methods: {
|
|
3796
3906
|
scrollTo: "scrollTo",
|
|
@@ -3803,7 +3913,8 @@ const {
|
|
|
3803
3913
|
startReached: "startReached",
|
|
3804
3914
|
rangeChanged: "rangeChanged",
|
|
3805
3915
|
atBottomStateChange: "atBottomStateChange",
|
|
3806
|
-
atTopStateChange: "atTopStateChange"
|
|
3916
|
+
atTopStateChange: "atTopStateChange",
|
|
3917
|
+
stateChanged: "stateChanged"
|
|
3807
3918
|
}
|
|
3808
3919
|
},
|
|
3809
3920
|
GridRoot
|
|
@@ -3862,6 +3973,7 @@ const combinedSystem = /* @__PURE__ */ system(([listSystem2, propsSystem]) => {
|
|
|
3862
3973
|
}, tup(listSystem, tableComponentPropsSystem));
|
|
3863
3974
|
const DefaultScrollSeekPlaceholder = ({ height }) => /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("td", { style: { height } }));
|
|
3864
3975
|
const DefaultFillerRow = ({ height }) => /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("td", { style: { height, padding: 0, border: 0 } }));
|
|
3976
|
+
const ITEM_STYLE = { overflowAnchor: "none" };
|
|
3865
3977
|
const Items = /* @__PURE__ */ React.memo(function VirtuosoItems2() {
|
|
3866
3978
|
const listState = useEmitterValue("listState");
|
|
3867
3979
|
const sizeRanges = usePublisher("sizeRanges");
|
|
@@ -3929,7 +4041,7 @@ const Items = /* @__PURE__ */ React.memo(function VirtuosoItems2() {
|
|
|
3929
4041
|
"data-known-size": item.size,
|
|
3930
4042
|
"data-item-index": item.index,
|
|
3931
4043
|
item: item.data,
|
|
3932
|
-
style:
|
|
4044
|
+
style: ITEM_STYLE
|
|
3933
4045
|
},
|
|
3934
4046
|
itemContent(item.index, item.data, context)
|
|
3935
4047
|
);
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "react-virtuoso",
|
|
3
3
|
"author": "Petyo Ivanov",
|
|
4
4
|
"sideEffects": false,
|
|
5
|
-
"version": "4.
|
|
5
|
+
"version": "4.4.1",
|
|
6
6
|
"homepage": "https://virtuoso.dev/",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"source": "src/index.tsx",
|
|
@@ -86,11 +86,12 @@
|
|
|
86
86
|
"jsdom": "^22.0.0",
|
|
87
87
|
"lodash": "^4.17.21",
|
|
88
88
|
"playwright": "^1.33.0",
|
|
89
|
+
"prettier": "^2.2.1",
|
|
89
90
|
"prism-react-renderer": "^1.3.5",
|
|
90
91
|
"react": "^18.2.0",
|
|
91
92
|
"react-beautiful-dnd": "^13.1.1",
|
|
92
93
|
"react-dom": "^18.2.0",
|
|
93
|
-
"react-router-dom": "^6.
|
|
94
|
+
"react-router-dom": "^6.14.0",
|
|
94
95
|
"react-table": "^7.8.0",
|
|
95
96
|
"semantic-release": "^19.0.5",
|
|
96
97
|
"terser": "^5.17.1",
|