UNPKG

react-virtuoso

Version:

A virtual scroll React component for efficiently rendering large scrollable lists, grids, tables, and feeds

1 lines 60.3 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("react/jsx-runtime"),R=require("react"),co=require("react-dom"),we=0,jt=1,Zt=2,Bn=4;function cn(t){return()=>t}function uo(t){t()}function oe(t,e){return n=>t(e(n))}function un(t,e){return()=>t(e)}function ao(t,e){return n=>t(e,n)}function Pe(t){return t!==void 0}function fo(...t){return()=>{t.map(uo)}}function Xt(){}function ve(t,e){return e(t),t}function mo(t,e){return e(t)}function tt(...t){return t}function Y(t,e){return t(jt,e)}function N(t,e){t(we,e)}function Me(t){t(Zt)}function rt(t){return t(Bn)}function F(t,e){return Y(t,ao(e,we))}function Et(t,e){const n=t(jt,o=>{n(),e(o)});return n}function an(t){let e,n;return o=>r=>{e=r,n&&clearTimeout(n),n=setTimeout(()=>{o(e)},t)}}function zn(t,e){return t===e}function J(t=zn){let e;return n=>o=>{t(e,o)||(e=o,n(o))}}function P(t){return e=>n=>{t(n)&&e(n)}}function B(t){return e=>oe(e,t)}function Ft(t){return e=>()=>{e(t)}}function I(t,...e){const n=po(...e);return((o,r)=>{switch(o){case Zt:Me(t);return;case jt:return Y(t,n(r))}})}function Lt(t,e){return n=>o=>{n(e=t(e,o))}}function Dt(t){return e=>n=>{t>0?t--:e(n)}}function Pt(t){let e=null,n;return o=>r=>{e=r,!n&&(n=setTimeout(()=>{n=void 0,o(e)},t))}}function D(...t){const e=new Array(t.length);let n=0,o=null;const r=Math.pow(2,t.length)-1;return t.forEach((s,i)=>{const l=Math.pow(2,i);Y(s,u=>{const d=n;n=n|l,e[i]=u,d!==r&&n===r&&o&&(o(),o=null)})}),s=>i=>{const l=()=>{s([i].concat(e))};n===r?l():o=l}}function po(...t){return e=>t.reduceRight(mo,e)}function ho(t){let e,n;const o=()=>e==null?void 0:e();return function(r,s){switch(r){case jt:return s?n===s?void 0:(o(),n=s,e=Y(t,s),e):(o(),Xt);case Zt:o(),n=null;return}}}function C(t){let e=t;const n=$();return((o,r)=>{switch(o){case we:e=r;break;case jt:{r(e);break}case Bn:return e}return n(o,r)})}function ht(t,e){return ve(C(e),n=>F(t,n))}function $(){const t=[];return((e,n)=>{switch(e){case we:t.slice().forEach(o=>{o(n)});return;case Zt:t.splice(0,t.length);return;case jt:return t.push(n),()=>{const o=t.indexOf(n);o>-1&&t.splice(o,1)}}})}function bt(t){return ve($(),e=>F(t,e))}function U(t,e=[],{singleton:n}={singleton:!0}){return{constructor:t,dependencies:e,id:go(),singleton:n}}const go=()=>Symbol();function xo(t){const e=new Map,n=({constructor:o,dependencies:r,id:s,singleton:i})=>{if(i&&e.has(s))return e.get(s);const l=o(r.map(u=>n(u)));return i&&e.set(s,l),l};return n(t)}function ut(...t){const e=$(),n=new Array(t.length);let o=0;const r=Math.pow(2,t.length)-1;return t.forEach((s,i)=>{const l=Math.pow(2,i);Y(s,u=>{n[i]=u,o=o|l,o===r&&N(e,n)})}),function(s,i){switch(s){case Zt:{Me(e);return}case jt:return o===r&&i(n),Y(e,i)}}}function G(t,e=zn){return I(t,J(e))}function ze(...t){return function(e,n){switch(e){case Zt:return;case jt:return fo(...t.map(o=>Y(o,n)))}}}var xt=(t=>(t[t.DEBUG=0]="DEBUG",t[t.INFO=1]="INFO",t[t.WARN=2]="WARN",t[t.ERROR=3]="ERROR",t))(xt||{});const Io={0:"debug",3:"error",1:"log",2:"warn"},So=()=>typeof globalThis>"u"?window:globalThis,At=U(()=>{const t=C(3);return{log:C((n,o,r=1)=>{var i;const s=(i=So().VIRTUOSO_LOG_LEVEL)!=null?i:rt(t);r>=s&&console[Io[r]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",n,o)}),logLevel:t}},[],{singleton:!0});function Vt(t,e,n){return je(t,e,n).callbackRef}function je(t,e,n){const o=R.useRef(null);let r=i=>{};const s=R.useMemo(()=>typeof ResizeObserver<"u"?new ResizeObserver(i=>{const l=()=>{const u=i[0].target;u.offsetParent!==null&&t(u)};n?l():requestAnimationFrame(l)}):null,[t,n]);return r=i=>{i&&e?(s==null||s.observe(i),o.current=i):(o.current&&(s==null||s.unobserve(o.current)),o.current=null)},{callbackRef:r,ref:o}}function On(t,e,n,o,r,s,i,l,u){const d=R.useCallback(m=>{const S=To(m.children,e,l?"offsetWidth":"offsetHeight",r);let h=m.parentElement;for(;!h.dataset.virtuosoScroller;)h=h.parentElement;const T=h.lastElementChild.dataset.viewportType==="window";let w;T&&(w=h.ownerDocument.defaultView);const H=i?l?i.scrollLeft:i.scrollTop:T?l?w.scrollX||w.document.documentElement.scrollLeft:w.scrollY||w.document.documentElement.scrollTop:l?h.scrollLeft:h.scrollTop,g=i?l?i.scrollWidth:i.scrollHeight:T?l?w.document.documentElement.scrollWidth:w.document.documentElement.scrollHeight:l?h.scrollWidth:h.scrollHeight,f=i?l?i.offsetWidth:i.offsetHeight:T?l?w.innerWidth:w.innerHeight:l?h.offsetWidth:h.offsetHeight;o({scrollHeight:g,scrollTop:Math.max(H,0),viewportHeight:f}),s==null||s(l?dn("column-gap",getComputedStyle(m).columnGap,r):dn("row-gap",getComputedStyle(m).rowGap,r)),S!==null&&t(S)},[t,e,r,s,i,o,l]);return je(d,n,u)}function To(t,e,n,o){const r=t.length;if(r===0)return null;const s=[];for(let i=0;i<r;i++){const l=t.item(i);if(l.dataset.index===void 0)continue;const u=parseInt(l.dataset.index),d=parseFloat(l.dataset.knownSize),m=e(l,n);if(m===0&&o("Zero-sized element, this should not happen",{child:l},xt.ERROR),m===d)continue;const S=s[s.length-1];s.length===0||S.size!==m||S.endIndex!==u-1?s.push({endIndex:u,size:m,startIndex:u}):s[s.length-1].endIndex++}return s}function dn(t,e,n){return e!=="normal"&&!(e!=null&&e.endsWith("px"))&&n(`${t} was not resolved to pixel value correctly`,e,xt.WARN),e==="normal"?0:parseInt(e!=null?e:"0",10)}function Ae(t,e,n){const o=R.useRef(null),r=R.useCallback(u=>{if(!(u!=null&&u.offsetParent))return;const d=u.getBoundingClientRect(),m=d.width;let S,h;if(e){const T=e.getBoundingClientRect(),w=d.top-T.top;h=T.height-Math.max(0,w),S=w+e.scrollTop}else{const T=i.current.ownerDocument.defaultView;h=T.innerHeight-Math.max(0,d.top),S=d.top+T.scrollY}o.current={offsetTop:S,visibleHeight:h,visibleWidth:m},t(o.current)},[t,e]),{callbackRef:s,ref:i}=je(r,!0,n),l=R.useCallback(()=>{r(i.current)},[r,i]);return R.useEffect(()=>{var u;if(e){e.addEventListener("scroll",l);const d=new ResizeObserver(()=>{requestAnimationFrame(l)});return d.observe(e),()=>{e.removeEventListener("scroll",l),d.unobserve(e)}}else{const d=(u=i.current)==null?void 0:u.ownerDocument.defaultView;return d==null||d.addEventListener("scroll",l),d==null||d.addEventListener("resize",l),()=>{d==null||d.removeEventListener("scroll",l),d==null||d.removeEventListener("resize",l)}}},[l,e,i]),s}const It=U(()=>{const t=$(),e=$(),n=C(0),o=$(),r=C(0),s=$(),i=$(),l=C(0),u=C(0),d=C(0),m=C(0),S=$(),h=$(),T=C(!1),w=C(!1),H=C(!1);return F(I(t,B(({scrollTop:g})=>g)),e),F(I(t,B(({scrollHeight:g})=>g)),i),F(e,r),{deviation:n,fixedFooterHeight:d,fixedHeaderHeight:u,footerHeight:m,headerHeight:l,horizontalDirection:w,scrollBy:h,scrollContainerState:t,scrollHeight:i,scrollingInProgress:T,scrollTo:S,scrollTop:e,skipAnimationFrameInResizeObserver:H,smoothScrollTargetReached:o,statefulScrollTop:r,viewportHeight:s}},[],{singleton:!0}),re={lvl:0};function Fn(t,e){const n=t.length;if(n===0)return[];let{index:o,value:r}=e(t[0]);const s=[];for(let i=1;i<n;i++){const{index:l,value:u}=e(t[i]);s.push({end:l-1,start:o,value:r}),o=l,r=u}return s.push({end:1/0,start:o,value:r}),s}function X(t){return t===re}function se(t,e){if(!X(t))return e===t.k?t.v:e<t.k?se(t.l,e):se(t.r,e)}function Bt(t,e,n="k"){if(X(t))return[-1/0,void 0];if(Number(t[n])===e)return[t.k,t.v];if(Number(t[n])<e){const o=Bt(t.r,e,n);return o[0]===-1/0?[t.k,t.v]:o}return Bt(t.l,e,n)}function yt(t,e,n){return X(t)?Gn(e,n,1):e===t.k?dt(t,{k:e,v:n}):e<t.k?fn(dt(t,{l:yt(t.l,e,n)})):fn(dt(t,{r:yt(t.r,e,n)}))}function qt(){return re}function Yt(t,e,n){if(X(t))return[];const o=Bt(t,e)[0];return Co(Fe(t,o,n))}function Oe(t,e){if(X(t))return re;const{k:n,l:o,r}=t;if(e===n){if(X(o))return r;if(X(r))return o;{const[s,i]=Vn(o);return Ie(dt(t,{k:s,l:Ln(o),v:i}))}}else return e<n?Ie(dt(t,{l:Oe(o,e)})):Ie(dt(t,{r:Oe(r,e)}))}function Nt(t){return X(t)?[]:[...Nt(t.l),{k:t.k,v:t.v},...Nt(t.r)]}function Fe(t,e,n){if(X(t))return[];const{k:o,l:r,r:s,v:i}=t;let l=[];return o>e&&(l=l.concat(Fe(r,e,n))),o>=e&&o<=n&&l.push({k:o,v:i}),o<=n&&(l=l.concat(Fe(s,e,n))),l}function Ie(t){const{l:e,lvl:n,r:o}=t;if(o.lvl>=n-1&&e.lvl>=n-1)return t;if(n>o.lvl+1){if(Re(e))return Pn(dt(t,{lvl:n-1}));if(!X(e)&&!X(e.r))return dt(e.r,{l:dt(e,{r:e.r.l}),lvl:n,r:dt(t,{l:e.r.r,lvl:n-1})});throw new Error("Unexpected empty nodes")}else{if(Re(t))return Le(dt(t,{lvl:n-1}));if(!X(o)&&!X(o.l)){const r=o.l,s=Re(r)?o.lvl-1:o.lvl;return dt(r,{l:dt(t,{lvl:n-1,r:r.l}),lvl:r.lvl+1,r:Le(dt(o,{l:r.r,lvl:s}))})}else throw new Error("Unexpected empty nodes")}}function dt(t,e){return Gn(e.k!==void 0?e.k:t.k,e.v!==void 0?e.v:t.v,e.lvl!==void 0?e.lvl:t.lvl,e.l!==void 0?e.l:t.l,e.r!==void 0?e.r:t.r)}function Ln(t){return X(t.r)?t.l:Ie(dt(t,{r:Ln(t.r)}))}function Re(t){return X(t)||t.lvl>t.r.lvl}function Vn(t){return X(t.r)?[t.k,t.v]:Vn(t.r)}function Gn(t,e,n,o=re,r=re){return{k:t,l:o,lvl:n,r,v:e}}function fn(t){return Le(Pn(t))}function Pn(t){const{l:e}=t;return!X(e)&&e.lvl===t.lvl?dt(e,{r:dt(t,{l:e.r})}):t}function Le(t){const{lvl:e,r:n}=t;return!X(n)&&!X(n.r)&&n.lvl===e&&n.r.lvl===e?dt(n,{l:dt(t,{r:n.l}),lvl:e+1}):t}function Co(t){return Fn(t,({k:e,v:n})=>({index:e,value:n}))}function Mn(t,e){return!!(t&&t.startIndex===e.startIndex&&t.endIndex===e.endIndex)}function ie(t,e){return!!(t&&t[0]===e[0]&&t[1]===e[1])}const We=U(()=>({recalcInProgress:C(!1)}),[],{singleton:!0});function jn(t,e,n){return t[Te(t,e,n)]}function Te(t,e,n,o=0){let r=t.length-1;for(;o<=r;){const s=Math.floor((o+r)/2),i=t[s],l=n(i,e);if(l===0)return s;if(l===-1){if(r-o<2)return s-1;r=s-1}else{if(r===o)return s;o=s+1}}throw new Error(`Failed binary finding record in array - ${t.join(",")}, searched for ${e}`)}function wo(t,e,n,o){const r=Te(t,e,o),s=Te(t,n,o,r);return t.slice(r,s+1)}function zt(t,e){return Math.round(t.getBoundingClientRect()[e])}function ye(t){return!X(t.groupOffsetTree)}function _e({index:t},e){return e===t?0:e<t?-1:1}function vo(){return{groupIndices:[],groupOffsetTree:qt(),lastIndex:0,lastOffset:0,lastSize:0,offsetTree:[],sizeTree:qt()}}function yo(t,e){let n=X(t)?0:1/0;for(const o of e){const{endIndex:r,size:s,startIndex:i}=o;if(n=Math.min(n,i),X(t)){t=yt(t,0,s);continue}const l=Yt(t,i-1,r+1);if(l.some(zo(o)))continue;let u=!1,d=!1;for(const{end:m,start:S,value:h}of l)u?(r>=S||s===h)&&(t=Oe(t,S)):(d=h!==s,u=!0),m>r&&r>=S&&h!==s&&(t=yt(t,r+1,h));d&&(t=yt(t,i,s))}return[t,n]}function bo(t){return typeof t.groupIndex<"u"}function Ro({offset:t},e){return e===t?0:e<t?-1:1}function le(t,e,n){if(e.length===0)return 0;const{index:o,offset:r,size:s}=jn(e,t,_e),i=t-o,l=s*i+(i-1)*n+r;return l>0?l+n:l}function An(t,e){if(!ye(e))return t;let n=0;for(;e.groupIndices[n]<=t+n;)n++;return t+n}function Wn(t,e,n){if(bo(t))return e.groupIndices[t.groupIndex]+1;{const o=t.index==="LAST"?n:t.index;let r=An(o,e);return r=Math.max(0,r,Math.min(n,r)),r}}function Ho(t,e,n,o=0){return o>0&&(e=Math.max(e,jn(t,o,_e).offset)),Fn(wo(t,e,n,Ro),Bo)}function Eo(t,[e,n,o,r]){e.length>0&&o("received item sizes",e,xt.DEBUG);const s=t.sizeTree;let i=s,l=0;if(n.length>0&&X(s)&&e.length===2){const h=e[0].size,T=e[1].size;i=n.reduce((w,H)=>yt(yt(w,H,h),H+1,T),i)}else[i,l]=yo(i,e);if(i===s)return t;const{lastIndex:u,lastOffset:d,lastSize:m,offsetTree:S}=Ve(t.offsetTree,l,i,r);return{groupIndices:n,groupOffsetTree:n.reduce((h,T)=>yt(h,T,le(T,S,r)),qt()),lastIndex:u,lastOffset:d,lastSize:m,offsetTree:S,sizeTree:i}}function ko(t){return Nt(t).map(({k:e,v:n},o,r)=>{const s=r[o+1];return{endIndex:s?s.k-1:1/0,size:n,startIndex:e}})}function mn(t,e){let n=0,o=0;for(;n<t;)n+=e[o+1]-e[o]-1,o++;return o-(n===t?0:1)}function Ve(t,e,n,o){let r=t,s=0,i=0,l=0,u=0;if(e!==0){u=Te(r,e-1,_e),l=r[u].offset;const m=Bt(n,e-1);s=m[0],i=m[1],r.length&&r[u].size===Bt(n,e)[1]&&(u-=1),r=r.slice(0,u+1)}else r=[];for(const{start:d,value:m}of Yt(n,e,1/0)){const S=d-s,h=S*i+l+S*o;r.push({index:d,offset:h,size:m}),s=d,l=h,i=m}return{lastIndex:s,lastOffset:l,lastSize:i,offsetTree:r}}function Bo(t){return{index:t.index,value:t}}function zo(t){const{endIndex:e,size:n,startIndex:o}=t;return r=>r.start===o&&(r.end===e||r.end===1/0)&&r.value===n}const Oo={offsetHeight:"height",offsetWidth:"width"},Gt=U(([{log:t},{recalcInProgress:e}])=>{const n=$(),o=$(),r=ht(o,0),s=$(),i=$(),l=C(0),u=C([]),d=C(void 0),m=C(void 0),S=C(void 0),h=C(void 0),T=C((c,p)=>zt(c,Oo[p])),w=C(void 0),H=C(0),g=vo(),f=ht(I(n,D(u,t,H),Lt(Eo,g),J()),g),a=ht(I(u,J(),Lt((c,p)=>({current:p,prev:c.current}),{current:[],prev:[]}),B(({prev:c})=>c)),[]);F(I(u,P(c=>c.length>0),D(f,H),B(([c,p,v])=>{const O=c.reduce((k,A,W)=>yt(k,A,le(A,p.offsetTree,v)||W),qt());return{...p,groupIndices:c,groupOffsetTree:O}})),f),F(I(o,D(f),P(([c,{lastIndex:p}])=>c<p),B(([c,{lastIndex:p,lastSize:v}])=>[{endIndex:p,size:v,startIndex:c}])),n),F(d,m);const x=ht(I(d,B(c=>c===void 0)),!0);F(I(m,P(c=>c!==void 0&&X(rt(f).sizeTree)),B(c=>{const p=rt(S),v=rt(u).length>0;return p?v?[{endIndex:0,size:p,startIndex:0},{endIndex:1,size:c,startIndex:1}]:[]:[{endIndex:0,size:c,startIndex:0}]})),n),F(I(h,P(c=>c!==void 0&&c.length>0&&X(rt(f).sizeTree)),B(c=>{const p=[];let v=c[0],O=0;for(let k=1;k<c.length;k++){const A=c[k];A!==v&&(p.push({endIndex:k-1,size:v,startIndex:O}),v=A,O=k)}return p.push({endIndex:c.length-1,size:v,startIndex:O}),p})),n),F(I(u,D(S,m),P(([,c,p])=>c!==void 0&&p!==void 0),B(([c,p,v])=>{const O=[];for(let k=0;k<c.length;k++){const A=c[k],W=c[k+1];O.push({startIndex:A,endIndex:A,size:p}),W!==void 0&&O.push({startIndex:A+1,endIndex:W-1,size:v})}return O})),n);const b=bt(I(n,D(f),Lt(({sizes:c},[p,v])=>({changed:v!==c,sizes:v}),{changed:!1,sizes:g}),B(c=>c.changed)));Y(I(l,Lt((c,p)=>({diff:c.prev-p,prev:p}),{diff:0,prev:0}),B(c=>c.diff)),c=>{const{groupIndices:p}=rt(f);if(c>0)N(e,!0),N(s,c+mn(c,p));else if(c<0){const v=rt(a);v.length>0&&(c-=mn(-c,v)),N(i,c)}}),Y(I(l,D(t)),([c,p])=>{c<0&&p("`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:l},xt.ERROR)});const y=bt(s);F(I(s,D(f),B(([c,p])=>{const v=p.groupIndices.length>0,O=[],k=p.lastSize;if(v){const A=se(p.sizeTree,0);let W=0,K=0;for(;W<c;){const M=p.groupIndices[K],et=p.groupIndices.length===K+1?1/0:p.groupIndices[K+1]-M-1;O.push({endIndex:M,size:A,startIndex:M}),O.push({endIndex:M+1+et-1,size:k,startIndex:M+1}),K++,W+=et+1}const L=Nt(p.sizeTree);return W!==c&&L.shift(),L.reduce((M,{k:et,v:wt})=>{let ft=M.ranges;return M.prevSize!==0&&(ft=[...M.ranges,{endIndex:et+c-1,size:M.prevSize,startIndex:M.prevIndex}]),{prevIndex:et+c,prevSize:wt,ranges:ft}},{prevIndex:c,prevSize:0,ranges:O}).ranges}return Nt(p.sizeTree).reduce((A,{k:W,v:K})=>({prevIndex:W+c,prevSize:K,ranges:[...A.ranges,{endIndex:W+c-1,size:A.prevSize,startIndex:A.prevIndex}]}),{prevIndex:0,prevSize:k,ranges:[]}).ranges})),n);const z=bt(I(i,D(f,H),B(([c,{offsetTree:p},v])=>{const O=-c;return le(O,p,v)})));return F(I(i,D(f,H),B(([c,p,v])=>{if(p.groupIndices.length>0){if(X(p.sizeTree))return p;let k=qt();const A=rt(a);let W=0,K=0,L=0;for(;W<-c;){L=A[K];const M=A[K+1]-L-1;K++,W+=M+1}if(k=Nt(p.sizeTree).reduce((M,{k:et,v:wt})=>yt(M,Math.max(0,et+c),wt),k),W!==-c){const M=se(p.sizeTree,L);k=yt(k,0,M);const et=Bt(p.sizeTree,-c+1)[1];k=yt(k,1,et)}return{...p,sizeTree:k,...Ve(p.offsetTree,0,k,v)}}else{const k=Nt(p.sizeTree).reduce((A,{k:W,v:K})=>yt(A,Math.max(0,W+c),K),qt());return{...p,sizeTree:k,...Ve(p.offsetTree,0,k,v)}}})),f),{beforeUnshiftWith:y,data:w,defaultItemSize:m,firstItemIndex:l,fixedItemSize:d,fixedGroupSize:S,gap:H,groupIndices:u,heightEstimates:h,itemSize:T,listRefresh:b,shiftWith:i,shiftWithOffset:z,sizeRanges:n,sizes:f,statefulTotalCount:r,totalCount:o,trackItemSizes:x,unshiftWith:s}},tt(At,We),{singleton:!0});function Fo(t){return t.reduce((e,n)=>(e.groupIndices.push(e.totalCount),e.totalCount+=n+1,e),{groupIndices:[],totalCount:0})}const _n=U(([{groupIndices:t,sizes:e,totalCount:n},{headerHeight:o,scrollTop:r}])=>{const s=$(),i=$(),l=bt(I(s,B(Fo)));return F(I(l,B(u=>u.totalCount)),n),F(I(l,B(u=>u.groupIndices)),t),F(I(ut(r,e,o),P(([u,d])=>ye(d)),B(([u,d,m])=>Bt(d.groupOffsetTree,Math.max(u-m,0),"v")[0]),J(),B(u=>[u])),i),{groupCounts:s,topItemsIndexes:i}},tt(Gt,It)),Wt=U(([{log:t}])=>{const e=C(!1),n=bt(I(e,P(o=>o),J()));return Y(e,o=>{o&&rt(t)("props updated",{},xt.DEBUG)}),{didMount:n,propsReady:e}},tt(At),{singleton:!0}),Lo=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function Nn(t){const e=typeof t=="number"?{index:t}:t;return e.align||(e.align="start"),(!e.behavior||!Lo)&&(e.behavior="auto"),e.offset||(e.offset=0),e}const de=U(([{gap:t,listRefresh:e,sizes:n,totalCount:o},{fixedFooterHeight:r,fixedHeaderHeight:s,footerHeight:i,headerHeight:l,scrollingInProgress:u,scrollTo:d,smoothScrollTargetReached:m,viewportHeight:S},{log:h}])=>{const T=$(),w=$(),H=C(0);let g=null,f=null,a=null;function x(){g&&(g(),g=null),a&&(a(),a=null),f&&(clearTimeout(f),f=null),N(u,!1)}return F(I(T,D(n,S,o,H,l,i,h),D(t,s,r),B(([[b,y,z,c,p,v,O,k],A,W,K])=>{const L=Nn(b),{align:St,behavior:M,offset:et}=L,wt=c-1,ft=Wn(L,y,wt);let Tt=le(ft,y.offsetTree,A)+v;St==="end"?(Tt+=W+Bt(y.sizeTree,ft)[1]-z+K,ft===wt&&(Tt+=O)):St==="center"?Tt+=(W+Bt(y.sizeTree,ft)[1]-z+K)/2:Tt-=p,et&&(Tt+=et);const Mt=pt=>{x(),pt?(k("retrying to scroll to",{location:b},xt.DEBUG),N(T,b)):(N(w,!0),k("list did not change, scroll successful",{},xt.DEBUG))};if(x(),M==="smooth"){let pt=!1;a=Y(e,Ut=>{pt=pt||Ut}),g=Et(m,()=>{Mt(pt)})}else g=Et(I(e,Vo(150)),Mt);return f=setTimeout(()=>{x()},1200),N(u,!0),k("scrolling from index to",{behavior:M,index:ft,top:Tt},xt.DEBUG),{behavior:M,top:Tt}})),d),{scrollTargetReached:w,scrollToIndex:T,topListHeight:H}},tt(Gt,It,At),{singleton:!0});function Vo(t){return e=>{const n=setTimeout(()=>{e(!1)},t);return o=>{o&&(e(!0),clearTimeout(n))}}}function Ne(t,e){t==0?e():requestAnimationFrame(()=>{Ne(t-1,e)})}function De(t,e){const n=e-1;return typeof t=="number"?t:t.index==="LAST"?n:t.index}const fe=U(([{defaultItemSize:t,listRefresh:e,sizes:n},{scrollTop:o},{scrollTargetReached:r,scrollToIndex:s},{didMount:i}])=>{const l=C(!0),u=C(0),d=C(!0);return F(I(i,D(u),P(([m,S])=>!!S),Ft(!1)),l),F(I(i,D(u),P(([m,S])=>!!S),Ft(!1)),d),Y(I(ut(e,i),D(l,n,t,d),P(([[,m],S,{sizeTree:h},T,w])=>m&&(!X(h)||Pe(T))&&!S&&!w),D(u)),([,m])=>{Et(r,()=>{N(d,!0)}),Ne(4,()=>{Et(o,()=>{N(l,!0)}),N(s,m)})}),{initialItemFinalLocationReached:d,initialTopMostItemIndex:u,scrolledToInitialItem:l}},tt(Gt,It,de,Wt),{singleton:!0});function Dn(t,e){return Math.abs(t-e)<1.01}const ce="up",ee="down",Go="none",Po={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},Mo=0,me=U(([{footerHeight:t,headerHeight:e,scrollBy:n,scrollContainerState:o,scrollTop:r,viewportHeight:s}])=>{const i=C(!1),l=C(!0),u=$(),d=$(),m=C(4),S=C(Mo),h=ht(I(ze(I(G(r),Dt(1),Ft(!0)),I(G(r),Dt(1),Ft(!1),an(100))),J()),!1),T=ht(I(ze(I(n,Ft(!0)),I(n,Ft(!1),an(200))),J()),!1);F(I(ut(G(r),G(S)),B(([a,x])=>a<=x),J()),l),F(I(l,Pt(50)),d);const w=bt(I(ut(o,G(s),G(e),G(t),G(m)),Lt((a,[{scrollHeight:x,scrollTop:b},y,z,c,p])=>{const v=b+y-x>-p,O={scrollHeight:x,scrollTop:b,viewportHeight:y};if(v){let A,W;return b>a.state.scrollTop?(A="SCROLLED_DOWN",W=a.state.scrollTop-b):(A="SIZE_DECREASED",W=a.state.scrollTop-b||a.scrollTopDelta),{atBottom:!0,atBottomBecause:A,scrollTopDelta:W,state:O}}let k;return O.scrollHeight>a.state.scrollHeight?k="SIZE_INCREASED":y<a.state.viewportHeight?k="VIEWPORT_HEIGHT_DECREASING":b<a.state.scrollTop?k="SCROLLING_UPWARDS":k="NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:k,state:O}},Po),J((a,x)=>a&&a.atBottom===x.atBottom))),H=ht(I(o,Lt((a,{scrollHeight:x,scrollTop:b,viewportHeight:y})=>{if(Dn(a.scrollHeight,x))return{changed:!1,jump:0,scrollHeight:x,scrollTop:b};{const z=x-(b+y)<1;return a.scrollTop!==b&&z?{changed:!0,jump:a.scrollTop-b,scrollHeight:x,scrollTop:b}:{changed:!0,jump:0,scrollHeight:x,scrollTop:b}}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),P(a=>a.changed),B(a=>a.jump)),0);F(I(w,B(a=>a.atBottom)),i),F(I(i,Pt(50)),u);const g=C(ee);F(I(o,B(({scrollTop:a})=>a),J(),Lt((a,x)=>rt(T)?{direction:a.direction,prevScrollTop:x}:{direction:x<a.prevScrollTop?ce:ee,prevScrollTop:x},{direction:ee,prevScrollTop:0}),B(a=>a.direction)),g),F(I(o,Pt(50),Ft(Go)),g);const f=C(0);return F(I(h,P(a=>!a),Ft(0)),f),F(I(r,Pt(100),D(h),P(([a,x])=>x),Lt(([a,x],[b])=>[x,b],[0,0]),B(([a,x])=>x-a)),f),{atBottomState:w,atBottomStateChange:u,atBottomThreshold:m,atTopStateChange:d,atTopThreshold:S,isAtBottom:i,isAtTop:l,isScrolling:h,lastJumpDueToItemResize:H,scrollDirection:g,scrollVelocity:f}},tt(It)),ue="top",ae="bottom",pn="none";function hn(t,e,n){return typeof t=="number"?n===ce&&e===ue||n===ee&&e===ae?t:0:n===ce?e===ue?t.main:t.reverse:e===ae?t.main:t.reverse}function gn(t,e){var n;return typeof t=="number"?t:(n=t[e])!=null?n:0}const $e=U(([{deviation:t,fixedHeaderHeight:e,headerHeight:n,scrollTop:o,viewportHeight:r}])=>{const s=$(),i=C(0),l=C(0),u=C(0),d=ht(I(ut(G(o),G(r),G(n),G(s,ie),G(u),G(i),G(e),G(t),G(l)),B(([m,S,h,[T,w],H,g,f,a,x])=>{const b=m-a,y=g+f,z=Math.max(h-b,0);let c=pn;const p=gn(x,ue),v=gn(x,ae);return T-=a,T+=h+f,w+=h+f,w-=a,T>m+y-p&&(c=ce),w<m-z+S+v&&(c=ee),c!==pn?[Math.max(b-h-hn(H,ue,c)-p,0),b-z-f+S+hn(H,ae,c)+v]:null}),P(m=>m!=null),J(ie)),[0,0]);return{increaseViewportBy:l,listBoundary:s,overscan:u,topListHeight:i,visibleRange:d}},tt(It),{singleton:!0});function jo(t,e,n){if(ye(e)){const o=An(t,e);return[{index:Bt(e.groupOffsetTree,o)[0],offset:0,size:0},{data:n==null?void 0:n[0],index:o,offset:0,size:0}]}return[{data:n==null?void 0:n[0],index:t,offset:0,size:0}]}const He={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function Se(t,e,n,o,r,s){const{lastIndex:i,lastOffset:l,lastSize:u}=r;let d=0,m=0;if(t.length>0){d=t[0].offset;const H=t[t.length-1];m=H.offset+H.size}const S=n-i,h=l+S*u+(S-1)*o,T=d,w=h-m;return{bottom:m,firstItemIndex:s,items:xn(t,r,s),offsetBottom:w,offsetTop:d,top:T,topItems:xn(e,r,s),topListHeight:e.reduce((H,g)=>g.size+H,0),totalCount:n}}function $n(t,e,n,o,r,s){let i=0;if(n.groupIndices.length>0)for(const m of n.groupIndices){if(m-i>=t)break;i++}const l=t+i,u=De(e,l),d=Array.from({length:l}).map((m,S)=>({data:s[S+u],index:S+u,offset:0,size:0}));return Se(d,[],l,r,n,o)}function xn(t,e,n){if(t.length===0)return[];if(!ye(e))return t.map(d=>({...d,index:d.index+n,originalIndex:d.index}));const o=t[0].index,r=t[t.length-1].index,s=[],i=Yt(e.groupOffsetTree,o,r);let l,u=0;for(const d of t){(!l||l.end<d.index)&&(l=i.shift(),u=e.groupIndices.indexOf(l.start));let m;d.index===l.start?m={index:u,type:"group"}:m={groupIndex:u,index:d.index-(u+1)+n},s.push({...m,data:d.data,offset:d.offset,originalIndex:d.index,size:d.size})}return s}function In(t,e){var n;return t===void 0?0:typeof t=="number"?t:(n=t[e])!=null?n:0}const $t=U(([{data:t,firstItemIndex:e,gap:n,sizes:o,totalCount:r},s,{listBoundary:i,topListHeight:l,visibleRange:u},{initialTopMostItemIndex:d,scrolledToInitialItem:m},{topListHeight:S},h,{didMount:T},{recalcInProgress:w}])=>{const H=C([]),g=C(0),f=$(),a=C(0);F(s.topItemsIndexes,H);const x=ht(I(ut(T,w,G(u,ie),G(r),G(o),G(d),m,G(H),G(e),G(n),G(a),t),P(([c,p,,v,,,,,,,,O])=>{const k=O&&O.length!==v;return c&&!p&&!k}),B(([,,[c,p],v,O,k,A,W,K,L,St,M])=>{var q,at,gt,Ct;const et=O,{offsetTree:wt,sizeTree:ft}=et,Tt=rt(g);if(v===0)return{...He,totalCount:v};if(c===0&&p===0)return Tt===0?{...He,totalCount:v}:$n(Tt,k,O,K,L,M||[]);if(X(ft))return Tt>0?null:Se(jo(De(k,v),et,M),[],v,L,et,K);const Mt=[];if(W.length>0){const st=W[0],it=W[W.length-1];let mt=0;for(const lt of Yt(ft,st,it)){const Z=lt.value,nt=Math.max(lt.start,st),vt=Math.min(lt.end,it);for(let ct=nt;ct<=vt;ct++)Mt.push({data:M==null?void 0:M[ct],index:ct,offset:mt,size:Z}),mt+=Z}}if(!A)return Se([],Mt,v,L,et,K);const pt=W.length>0?W[W.length-1]+1:0,Ut=Ho(wt,c,p,pt);if(Ut.length===0)return null;const Qt=v-1,Ot=ve([],st=>{for(const it of Ut){const mt=it.value;let lt=mt.offset,Z=it.start;const nt=mt.size;if(mt.offset<c){Z+=Math.floor((c-mt.offset+L)/(nt+L));const ct=Z-it.start;lt+=ct*nt+ct*L}Z<pt&&(lt+=(pt-Z)*nt,Z=pt);const vt=Math.min(it.end,Qt);for(let ct=Z;ct<=vt&&!(lt>=p);ct++)st.push({data:M==null?void 0:M[ct],index:ct,offset:lt,size:nt}),lt+=nt+L}}),te=In(St,ue),E=In(St,ae);if(Ot.length>0&&(te>0||E>0)){const st=Ot[0],it=Ot[Ot.length-1];if(te>0&&st.index>pt){const mt=Math.min(te,st.index-pt),lt=[];let Z=st.offset;for(let nt=st.index-1;nt>=st.index-mt;nt--){const ct=(at=(q=Yt(ft,nt,nt)[0])==null?void 0:q.value)!=null?at:st.size;Z-=ct+L,lt.unshift({data:M==null?void 0:M[nt],index:nt,offset:Z,size:ct})}Ot.unshift(...lt)}if(E>0&&it.index<Qt){const mt=Math.min(E,Qt-it.index);let lt=it.offset+it.size+L;for(let Z=it.index+1;Z<=it.index+mt;Z++){const vt=(Ct=(gt=Yt(ft,Z,Z)[0])==null?void 0:gt.value)!=null?Ct:it.size;Ot.push({data:M==null?void 0:M[Z],index:Z,offset:lt,size:vt}),lt+=vt+L}}}return Se(Ot,Mt,v,L,et,K)}),P(c=>c!==null),J()),He);F(I(t,P(Pe),B(c=>c==null?void 0:c.length)),r),F(I(x,B(c=>c.topListHeight)),S),F(S,l),F(I(x,B(c=>[c.top,c.bottom])),i),F(I(x,B(c=>c.items)),f);const b=bt(I(x,P(({items:c})=>c.length>0),D(r,t),P(([{items:c},p])=>c[c.length-1].originalIndex===p-1),B(([,c,p])=>[c-1,p]),J(ie),B(([c])=>c))),y=bt(I(x,Pt(200),P(({items:c,topItems:p})=>c.length>0&&c[0].originalIndex===p.length),B(({items:c})=>c[0].index),J())),z=bt(I(x,P(({items:c})=>c.length>0),B(({items:c})=>{let p=0,v=c.length-1;for(;c[p].type==="group"&&p<v;)p++;for(;c[v].type==="group"&&v>p;)v--;return{endIndex:c[v].index,startIndex:c[p].index}}),J(Mn)));return{endReached:b,initialItemCount:g,itemsRendered:f,listState:x,minOverscanItemCount:a,rangeChanged:z,startReached:y,topItemsIndexes:H,...h}},tt(Gt,_n,$e,fe,de,me,Wt,We),{singleton:!0}),Un=U(([{fixedFooterHeight:t,fixedHeaderHeight:e,footerHeight:n,headerHeight:o},{listState:r}])=>{const s=$(),i=ht(I(ut(n,t,o,e,r),B(([l,u,d,m,S])=>l+u+d+m+S.offsetBottom+S.bottom)),0);return F(G(i),s),{totalListHeight:i,totalListHeightChanged:s}},tt(It,$t),{singleton:!0}),Ao=U(([{viewportHeight:t},{totalListHeight:e}])=>{const n=C(!1),o=ht(I(ut(n,t,e),P(([r])=>r),B(([,r,s])=>Math.max(0,r-s)),Pt(0),J()),0);return{alignToBottom:n,paddingTopAddition:o}},tt(It,Un),{singleton:!0}),Kn=U(()=>({context:C(null)})),Wo=({itemBottom:t,itemTop:e,locationParams:{align:n,behavior:o,...r},viewportBottom:s,viewportTop:i})=>e<i?{...r,align:n!=null?n:"start",behavior:o}:t>s?{...r,align:n!=null?n:"end",behavior:o}:null,qn=U(([{gap:t,sizes:e,totalCount:n},{fixedFooterHeight:o,fixedHeaderHeight:r,headerHeight:s,scrollingInProgress:i,scrollTop:l,viewportHeight:u},{scrollToIndex:d}])=>{const m=$();return F(I(m,D(e,u,n,s,r,o,l),D(t),B(([[S,h,T,w,H,g,f,a],x])=>{const{align:b,behavior:y,calculateViewLocation:z=Wo,done:c,...p}=S,v=Wn(S,h,w-1),O=le(v,h.offsetTree,x)+H+g,k=O+Bt(h.sizeTree,v)[1],A=a+g,W=a+T-f,K=z({itemBottom:k,itemTop:O,locationParams:{align:b,behavior:y,...p},viewportBottom:W,viewportTop:A});return K?c&&Et(I(i,P(L=>!L),Dt(rt(i)?1:2)),c):c==null||c(),K}),P(S=>S!==null)),d),{scrollIntoView:m}},tt(Gt,It,de,$t,At),{singleton:!0});function Sn(t){return t?t==="smooth"?"smooth":"auto":!1}const _o=(t,e)=>typeof t=="function"?Sn(t(e)):e&&Sn(t),No=U(([{listRefresh:t,totalCount:e,fixedItemSize:n,data:o},{atBottomState:r,isAtBottom:s},{scrollToIndex:i},{scrolledToInitialItem:l},{didMount:u,propsReady:d},{log:m},{scrollingInProgress:S},{context:h},{scrollIntoView:T}])=>{const w=C(!1),H=$();let g=null;function f(y){N(i,{align:"end",behavior:y,index:"LAST"})}Y(I(ut(I(G(e),Dt(1)),u),D(G(w),s,l,S),B(([[y,z],c,p,v,O])=>{let k=z&&v,A="auto";return k&&(A=_o(c,p||O),k=k&&!!A),{followOutputBehavior:A,shouldFollow:k,totalCount:y}}),P(({shouldFollow:y})=>y)),({followOutputBehavior:y,totalCount:z})=>{g&&(g(),g=null),rt(n)?requestAnimationFrame(()=>{rt(m)("following output to ",{totalCount:z},xt.DEBUG),f(y)}):g=Et(t,()=>{rt(m)("following output to ",{totalCount:z},xt.DEBUG),f(y),g=null})});function a(y){const z=Et(r,c=>{y&&!c.atBottom&&c.notAtBottomBecause==="SIZE_INCREASED"&&!g&&(rt(m)("scrolling to bottom due to increased size",{},xt.DEBUG),f("auto"))});setTimeout(z,100)}Y(I(ut(G(w),e,d),P(([y,,z])=>y&&z),Lt(({value:y},[,z])=>({refreshed:y===z,value:z}),{refreshed:!1,value:0}),P(({refreshed:y})=>y),D(w,e)),([,y])=>{rt(l)&&a(y!==!1)}),Y(H,()=>{a(rt(w)!==!1)}),Y(ut(G(w),r),([y,z])=>{y&&!z.atBottom&&z.notAtBottomBecause==="VIEWPORT_HEIGHT_DECREASING"&&f("auto")});const x=C(null),b=$();return F(ze(I(G(o),B(y=>{var z;return(z=y==null?void 0:y.length)!=null?z:0})),I(G(e))),b),Y(I(ut(I(b,Dt(1)),u),D(G(x),l,S,h),B(([[y,z],c,p,v,O])=>z&&p&&(c==null?void 0:c({context:O,totalCount:y,scrollingInProgress:v}))),P(y=>!!y),Pt(0)),y=>{g&&(g(),g=null),rt(n)?requestAnimationFrame(()=>{rt(m)("scrolling into view",{}),N(T,y)}):g=Et(t,()=>{rt(m)("scrolling into view",{}),N(T,y),g=null})}),{autoscrollToBottom:H,followOutput:w,scrollIntoViewOnChange:x}},tt(Gt,me,de,fe,Wt,At,It,Kn,qn)),Do=U(([{data:t,firstItemIndex:e,gap:n,sizes:o},{initialTopMostItemIndex:r},{initialItemCount:s,listState:i},{didMount:l}])=>(F(I(l,D(s),P(([,u])=>u!==0),D(r,o,e,n,t),B(([[,u],d,m,S,h,T=[]])=>$n(u,d,m,S,h,T))),i),{}),tt(Gt,fe,$t,Wt),{singleton:!0}),$o=U(([{didMount:t},{scrollTo:e},{listState:n}])=>{const o=C(0);return Y(I(t,D(o),P(([,r])=>r!==0),B(([,r])=>({top:r}))),r=>{Et(I(n,Dt(1),P(s=>s.items.length>1)),()=>{requestAnimationFrame(()=>{N(e,r)})})}),{initialScrollTop:o}},tt(Wt,It,$t),{singleton:!0}),Yn=U(([{scrollVelocity:t}])=>{const e=C(!1),n=$(),o=C(!1);return F(I(t,D(o,e,n),P(([r,s])=>!!s),B(([r,s,i,l])=>{const{enter:u,exit:d}=s;if(i){if(d(r,l))return!1}else if(u(r,l))return!0;return i}),J()),e),Y(I(ut(e,t,n),D(o)),([[r,s,i],l])=>{r&&l&&l.change&&l.change(s,i)}),{isSeeking:e,scrollSeekConfiguration:o,scrollSeekRangeChanged:n,scrollVelocity:t}},tt(me),{singleton:!0}),Ue=U(([{scrollContainerState:t,scrollTo:e}])=>{const n=$(),o=$(),r=$(),s=C(!1),i=C(void 0);return F(I(ut(n,o),B(([{scrollHeight:l,scrollTop:u,viewportHeight:d},{offsetTop:m}])=>({scrollHeight:l,scrollTop:Math.max(0,u-m),viewportHeight:d}))),t),F(I(e,D(o),B(([l,{offsetTop:u}])=>({...l,top:l.top+u}))),r),{customScrollParent:i,useWindowScroll:s,windowScrollContainerState:n,windowScrollTo:r,windowViewportRect:o}},tt(It)),Uo=U(([{sizeRanges:t,sizes:e},{headerHeight:n,scrollTop:o},{initialTopMostItemIndex:r},{didMount:s},{useWindowScroll:i,windowScrollContainerState:l,windowViewportRect:u}])=>{const d=$(),m=C(void 0),S=C(null),h=C(null);return F(l,S),F(u,h),Y(I(d,D(e,o,i,S,h,n)),([T,w,H,g,f,a,x])=>{const b=ko(w.sizeTree);g&&f!==null&&a!==null&&(H=f.scrollTop-a.offsetTop),H-=x,T({ranges:b,scrollTop:H})}),F(I(m,P(Pe),B(Ko)),r),F(I(s,D(m),P(([,T])=>T!==void 0),J(),B(([,T])=>T.ranges)),t),{getState:d,restoreStateFrom:m}},tt(Gt,It,fe,Wt,Ue));function Ko(t){return{align:"start",index:0,offset:t.scrollTop}}const qo=U(([{topItemsIndexes:t}])=>{const e=C(0);return F(I(e,P(n=>n>=0),B(n=>Array.from({length:n}).map((o,r)=>r))),t),{topItemCount:e}},tt($t));function Zn(t){let e=!1,n;return(()=>(e||(e=!0,n=t()),n))}const Yo=Zn(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),Zo=U(([{deviation:t,scrollBy:e,scrollingInProgress:n,scrollTop:o},{isAtBottom:r,isScrolling:s,lastJumpDueToItemResize:i,scrollDirection:l},{listState:u},{beforeUnshiftWith:d,gap:m,shiftWithOffset:S,sizes:h},{log:T},{recalcInProgress:w}])=>{const H=bt(I(u,D(i),Lt(([,f,a,x],[{bottom:b,items:y,offsetBottom:z,totalCount:c},p])=>{const v=b+z;let O=0;return a===c&&f.length>0&&y.length>0&&(y[0].originalIndex===0&&f[0].originalIndex===0||(O=v-x,O!==0&&(O+=p))),[O,y,c,v]},[0,[],0,0]),P(([f])=>f!==0),D(o,l,n,r,T,w),P(([,f,a,x,,,b])=>!b&&!x&&f!==0&&a===ce),B(([[f],,,,,a])=>(a("Upward scrolling compensation",{amount:f},xt.DEBUG),f))));function g(f){f>0?(N(e,{behavior:"auto",top:-f}),N(t,0)):(N(t,0),N(e,{behavior:"auto",top:-f}))}return Y(I(H,D(t,s)),([f,a,x])=>{x&&Yo()?N(t,a-f):g(-f)}),Y(I(ut(ht(s,!1),t,w),P(([f,a,x])=>!f&&!x&&a!==0),B(([f,a])=>a),Pt(1)),g),F(I(S,B(f=>({top:-f}))),e),Y(I(d,D(h,m),B(([f,{groupIndices:a,lastSize:x,sizeTree:b},y])=>{function z(c){return c*(x+y)}if(a.length===0)return z(f);{let c=0;const p=se(b,0);let v=0,O=0;for(;v<f;){v++,c+=p;let k=a.length===O+1?1/0:a[O+1]-a[O]-1;v+k>f&&(c-=p,k=f-v+1),v+=k,c+=z(k),O++}return c}})),f=>{N(t,f),requestAnimationFrame(()=>{N(e,{top:f}),requestAnimationFrame(()=>{N(t,0),N(w,!1)})})}),{deviation:t}},tt(It,me,$t,Gt,At,We)),Xo=U(([t,e,n,o,r,s,i,l,u,d,m])=>({...t,...e,...n,...o,...r,...s,...i,...l,...u,...d,...m}),tt($e,Do,Wt,Yn,Un,$o,Ao,Ue,qn,At,Kn)),Xn=U(([{data:t,defaultItemSize:e,firstItemIndex:n,fixedItemSize:o,fixedGroupSize:r,gap:s,groupIndices:i,heightEstimates:l,itemSize:u,sizeRanges:d,sizes:m,statefulTotalCount:S,totalCount:h,trackItemSizes:T},{initialItemFinalLocationReached:w,initialTopMostItemIndex:H,scrolledToInitialItem:g},f,a,x,b,{scrollToIndex:y},z,{topItemCount:c},{groupCounts:p},v])=>{const{listState:O,minOverscanItemCount:k,topItemsIndexes:A,rangeChanged:W,...K}=b;return F(W,v.scrollSeekRangeChanged),F(I(v.windowViewportRect,B(L=>L.visibleHeight)),f.viewportHeight),{data:t,defaultItemHeight:e,firstItemIndex:n,fixedItemHeight:o,fixedGroupHeight:r,gap:s,groupCounts:p,heightEstimates:l,initialItemFinalLocationReached:w,initialTopMostItemIndex:H,scrolledToInitialItem:g,sizeRanges:d,topItemCount:c,topItemsIndexes:A,totalCount:h,...x,groupIndices:i,itemSize:u,listState:O,minOverscanItemCount:k,scrollToIndex:y,statefulTotalCount:S,trackItemSizes:T,rangeChanged:W,...K,...v,...f,sizes:m,...a}},tt(Gt,fe,It,Uo,No,$t,de,Zo,qo,_n,Xo));function Jo(t,e){const n={},o={};let r=0;const s=t.length;for(;r<s;)o[t[r]]=1,r+=1;for(const i in e)Object.hasOwn(o,i)||(n[i]=e[i]);return n}const ge=typeof document<"u"?R.useLayoutEffect:R.useEffect;function Ke(t,e,n){const o=Object.keys(e.required||{}),r=Object.keys(e.optional||{}),s=Object.keys(e.methods||{}),i=Object.keys(e.events||{}),l=R.createContext({});function u(f,a){f.propsReady&&N(f.propsReady,!1);for(const x of o){const b=f[e.required[x]];N(b,a[x])}for(const x of r)if(x in a){const b=f[e.optional[x]];N(b,a[x])}f.propsReady&&N(f.propsReady,!0)}function d(f){return s.reduce((a,x)=>(a[x]=b=>{const y=f[e.methods[x]];N(y,b)},a),{})}function m(f){return i.reduce((a,x)=>(a[x]=ho(f[e.events[x]]),a),{})}const S=R.forwardRef((f,a)=>{const{children:x,...b}=f,[y]=R.useState(()=>ve(xo(t),p=>{u(p,b)})),[z]=R.useState(un(m,y));ge(()=>{for(const p of i)p in b&&Y(z[p],b[p]);return()=>{Object.values(z).map(Me)}},[b,z,y]),ge(()=>{u(y,b)}),R.useImperativeHandle(a,cn(d(y)));const c=n;return V.jsx(l.Provider,{value:y,children:n?V.jsx(c,{...Jo([...o,...r,...i],b),children:x}):x})}),h=f=>{const a=R.useContext(l);return R.useCallback(x=>{N(a[f],x)},[a,f])},T=f=>{const x=R.useContext(l)[f],b=R.useCallback(y=>Y(x,y),[x]);return R.useSyncExternalStore(b,()=>rt(x),()=>rt(x))},w=f=>{const x=R.useContext(l)[f],[b,y]=R.useState(un(rt,x));return ge(()=>Y(x,z=>{z!==b&&y(cn(z))}),[x,b]),b},H=R.version.startsWith("18")?T:w;return{Component:S,useEmitter:(f,a)=>{const b=R.useContext(l)[f];ge(()=>Y(b,a),[a,b])},useEmitterValue:H,usePublisher:h}}const pe=R.createContext(void 0),qe=R.createContext(void 0),Jn=typeof document<"u"?R.useLayoutEffect:R.useEffect;function Ee(t){return"self"in t}function Qo(t){return"body"in t}function Qn(t,e,n,o=Xt,r,s){const i=R.useRef(null),l=R.useRef(null),u=R.useRef(null),d=R.useCallback(h=>{let T,w,H;const g=h.target;if(Qo(g)||Ee(g)){const a=Ee(g)?g:g.defaultView;H=s?a.scrollX:a.scrollY,T=s?a.document.documentElement.scrollWidth:a.document.documentElement.scrollHeight,w=s?a.innerWidth:a.innerHeight}else H=s?g.scrollLeft:g.scrollTop,T=s?g.scrollWidth:g.scrollHeight,w=s?g.offsetWidth:g.offsetHeight;const f=()=>{t({scrollHeight:T,scrollTop:Math.max(H,0),viewportHeight:w})};h.suppressFlushSync?f():co.flushSync(f),l.current!==null&&(H===l.current||H<=0||H===T-w)&&(l.current=null,e(!0),u.current&&(clearTimeout(u.current),u.current=null))},[t,e,s]);R.useEffect(()=>{const h=r||i.current;return o(r||i.current),d({suppressFlushSync:!0,target:h}),h.addEventListener("scroll",d,{passive:!0}),()=>{o(null),h.removeEventListener("scroll",d)}},[i,d,n,o,r]);function m(h){const T=i.current;if(!T||(s?"offsetWidth"in T&&T.offsetWidth===0:"offsetHeight"in T&&T.offsetHeight===0))return;const w=h.behavior==="smooth";let H,g,f;Ee(T)?(g=Math.max(zt(T.document.documentElement,s?"width":"height"),s?T.document.documentElement.scrollWidth:T.document.documentElement.scrollHeight),H=s?T.innerWidth:T.innerHeight,f=s?window.scrollX:window.scrollY):(g=T[s?"scrollWidth":"scrollHeight"],H=zt(T,s?"width":"height"),f=T[s?"scrollLeft":"scrollTop"]);const a=g-H;if(h.top=Math.ceil(Math.max(Math.min(a,h.top),0)),Dn(H,g)||h.top===f){t({scrollHeight:g,scrollTop:f,viewportHeight:H}),w&&e(!0);return}w?(l.current=h.top,u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{u.current=null,l.current=null,e(!0)},1e3)):l.current=null,s&&(h={behavior:h.behavior,left:h.top}),T.scrollTo(h)}function S(h){s&&(h={behavior:h.behavior,left:h.top}),i.current.scrollBy(h)}return{scrollByCallback:S,scrollerRef:i,scrollToCallback:m}}const ke="-webkit-sticky",Tn="sticky",Ye=Zn(()=>{if(typeof document>"u")return Tn;const t=document.createElement("div");return t.style.position=ke,t.style.position===ke?ke:Tn});function Ze(t){return t}const tr=U(()=>{const t=C(l=>`Item ${l}`),e=C(l=>`Group ${l}`),n=C({}),o=C(Ze),r=C("div"),s=C(Xt),i=(l,u=null)=>ht(I(n,B(d=>d[l]),J()),u);return{components:n,computeItemKey:o,EmptyPlaceholder:i("EmptyPlaceholder"),FooterComponent:i("Footer"),GroupComponent:i("Group","div"),groupContent:e,HeaderComponent:i("Header"),HeaderFooterTag:r,ItemComponent:i("Item","div"),itemContent:t,ListComponent:i("List","div"),ScrollerComponent:i("Scroller","div"),scrollerRef:s,ScrollSeekPlaceholder:i("ScrollSeekPlaceholder"),TopItemListComponent:i("TopItemList")}}),er=U(([t,e])=>({...t,...e}),tt(Xn,tr)),nr=({height:t})=>V.jsx("div",{style:{height:t}}),or={overflowAnchor:"none",position:Ye(),zIndex:1},to={overflowAnchor:"none"},rr={...to,display:"inline-block",height:"100%"},Cn=R.memo(function({showTopList:e=!1}){const n=j("listState"),o=Rt("sizeRanges"),r=j("useWindowScroll"),s=j("customScrollParent"),i=Rt("windowScrollContainerState"),l=Rt("scrollContainerState"),u=s||r?i:l,d=j("itemContent"),m=j("context"),S=j("groupContent"),h=j("trackItemSizes"),T=j("itemSize"),w=j("log"),H=Rt("gap"),g=j("horizontalDirection"),{callbackRef:f}=On(o,T,h,e?Xt:u,w,H,s,g,j("skipAnimationFrameInResizeObserver")),[a,x]=R.useState(0);Qe("deviation",L=>{a!==L&&x(L)});const b=j("EmptyPlaceholder"),y=j("ScrollSeekPlaceholder")||nr,z=j("ListComponent"),c=j("ItemComponent"),p=j("GroupComponent"),v=j("computeItemKey"),O=j("isSeeking"),k=j("groupIndices").length>0,A=j("alignToBottom"),W=j("initialItemFinalLocationReached"),K=e?{}:{boxSizing:"border-box",...g?{display:"inline-block",height:"100%",marginLeft:a!==0?a:A?"auto":0,paddingLeft:n.offsetTop,paddingRight:n.offsetBottom,whiteSpace:"nowrap"}:{marginTop:a!==0?a:A?"auto":0,paddingBottom:n.offsetBottom,paddingTop:n.offsetTop},...W?{}:{visibility:"hidden"}};return!e&&n.totalCount===0&&b?V.jsx(b,{...Q(b,m)}):V.jsx(z,{...Q(z,m),"data-testid":e?"virtuoso-top-item-list":"virtuoso-item-list",ref:f,style:K,children:(e?n.topItems:n.items).map(L=>{const St=L.originalIndex,M=v(St+n.firstItemIndex,L.data,m);return O?R.createElement(y,{...Q(y,m),height:L.size,index:L.index,key:M,type:L.type||"item",...L.type==="group"?{}:{groupIndex:L.groupIndex}}):L.type==="group"?R.createElement(p,{...Q(p,m),"data-index":St,"data-item-index":L.index,"data-known-size":L.size,key:M,style:or},S(L.index,m)):R.createElement(c,{...Q(c,m),...eo(c,L.data),"data-index":St,"data-item-group-index":L.groupIndex,"data-item-index":L.index,"data-known-size":L.size,key:M,style:g?rr:to},k?d(L.index,L.groupIndex,L.data,m):d(L.index,L.data,m))})})}),sr={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},ir={outline:"none",overflowX:"auto",position:"relative"},Jt=t=>({height:"100%",position:"absolute",top:0,width:"100%",...t?{display:"flex",flexDirection:"column"}:{}}),lr={position:Ye(),top:0,width:"100%",zIndex:1};function Q(t,e){if(typeof t!="string")return{context:e}}function eo(t,e){return{item:typeof t=="string"?void 0:e}}const cr=R.memo(function(){const e=j("HeaderComponent"),n=Rt("headerHeight"),o=j("HeaderFooterTag"),r=Vt(R.useMemo(()=>i=>{n(zt(i,"height"))},[n]),!0,j("skipAnimationFrameInResizeObserver")),s=j("context");return e?V.jsx(o,{ref:r,children:V.jsx(e,{...Q(e,s)})}):null}),ur=R.memo(function(){const e=j("FooterComponent"),n=Rt("footerHeight"),o=j("HeaderFooterTag"),r=Vt(R.useMemo(()=>i=>{n(zt(i,"height"))},[n]),!0,j("skipAnimationFrameInResizeObserver")),s=j("context");return e?V.jsx(o,{ref:r,children:V.jsx(e,{...Q(e,s)})}):null});function Xe({useEmitter:t,useEmitterValue:e,usePublisher:n}){return R.memo(function({children:s,style:i,context:l,...u}){const d=n("scrollContainerState"),m=e("ScrollerComponent"),S=n("smoothScrollTargetReached"),h=e("scrollerRef"),T=e("horizontalDirection")||!1,{scrollByCallback:w,scrollerRef:H,scrollToCallback:g}=Qn(d,S,m,h,void 0,T);t("scrollTo",g),t("scrollBy",w);const f=T?ir:sr;return V.jsx(m,{"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,ref:H,style:{...f,...i},tabIndex:0,...u,...Q(m,l),children:s})})}function Je({useEmitter:t,useEmitterValue:e,usePublisher:n}){return R.memo(function({children:s,style:i,context:l,...u}){const d=n("windowScrollContainerState"),m=e("ScrollerComponent"),S=n("smoothScrollTargetReached"),h=e("totalListHeight"),T=e("deviation"),w=e("customScrollParent"),H=R.useRef(null),g=e("scrollerRef"),{scrollByCallback:f,scrollerRef:a,scrollToCallback:x}=Qn(d,S,m,g,w);return Jn(()=>{var b;return a.current=w||((b=H.current)==null?void 0:b.ownerDocument.defaultView),()=>{a.current=null}},[a,w]),t("windowScrollTo",x),t("scrollBy",f),V.jsx(m,{ref:H,"data-virtuoso-scroller":!0,style:{position:"relative",...i,...h!==0?{height:h+T}:{}},...u,...Q(m,l),children:s})})}const ar=({children:t})=>{const e=R.useContext(pe),n=Rt("viewportHeight"),o=Rt("fixedItemHeight"),r=j("alignToBottom"),s=j("horizontalDirection"),i=R.useMemo(()=>oe(n,u=>zt(u,s?"width":"height")),[n,s]),l=Vt(i,!0,j("skipAnimationFrameInResizeObserver"));return R.useEffect(()=>{e&&(n(e.viewportHeight),o(e.itemHeight))},[e,n,o]),V.jsx("div",{"data-viewport-type":"element",ref:l,style:Jt(r),children:t})},dr=({children:t})=>{const e=R.useContext(pe),n=Rt("windowViewportRect"),o=Rt("fixedItemHeight"),r=j("customScrollParent"),s=Ae(n,r,j("skipAnimationFrameInResizeObserver")),i=j("alignToBottom");return R.useEffect(()=>{e&&(o(e.itemHeight),n({offsetTop:0,visibleHeight:e.viewportHeight,visibleWidth:100}))},[e,n,o]),V.jsx("div",{"data-viewport-type":"window",ref:s,style:Jt(i),children:t})},fr=({children:t})=>{const e=j("TopItemListComponent")||"div",n=j("headerHeight"),o={...lr,marginTop:`${n}px`},r=j("context");return V.jsx(e,{style:o,...Q(e,r),children:t})},mr=R.memo(function(e){const n=j("useWindowScroll"),o=j("topItemsIndexes").length>0,r=j("customScrollParent"),s=j("context"),i=r||n?hr:pr,l=r||n?dr:ar;return V.jsxs(i,{...e,context:s,children:[o&&V.jsx(fr,{children:V.jsx(Cn,{showTopList:!0})}),V.jsxs(l,{children:[V.jsx(cr,{}),V.jsx(Cn,{}),V.jsx(ur,{})]})]})}),{Component:no,useEmitter:Qe,useEmitterValue:j,usePublisher:Rt}=Ke(er,{required:{},optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",scrollIntoViewOnChange:"scrollIntoViewOnChange",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",heightEstimates:"heightEstimates",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"HeaderFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",horizontalDirection:"horizontalDirection",skipAnimationFrameInResizeObserver:"skipAnimationFrameInResizeObserver"},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"}},mr),pr=Xe({useEmitter:Qe,useEmitterValue:j,usePublisher:Rt}),hr=Je({useEmitter:Qe,useEmitterValue:j,usePublisher:Rt}),gr=no,xr=no,Ir=U(()=>{const t=C(d=>V.jsxs("td",{children:["Item $",d]})),e=C(null),n=C(d=>V.jsxs("td",{colSpan:1e3,children:["Group ",d]})),o=C(null),r=C(null),s=C({}),i=C(Ze),l=C(Xt),u=(d,m=null)=>ht(I(s,B(S=>S[d]),J()),m);return{components:s,computeItemKey:i,context:e,EmptyPlaceholder:u("EmptyPlaceholder"),FillerRow:u("FillerRow"),fixedFooterContent:r,fixedHeaderContent:o,itemContent:t,groupContent:n,ScrollerComponent:u("Scroller","div"),scrollerRef:l,ScrollSeekPlaceholder:u("ScrollSeekPlaceholder"),TableBodyComponent:u("TableBody","tbody"),TableComponent:u("Table","table"),TableFooterComponent:u("TableFoot","tfoot"),TableHeadComponent:u("TableHead","thead"),TableRowComponent:u("TableRow","tr"),GroupComponent:u("Group","tr")}}),Sr=U(([t,e])=>({...t,...e}),tt(Xn,Ir)),Tr=({height:t})=>V.jsx("tr",{children:V.jsx("td",{style:{height:t}})}),Cr=({height:t})=>V.jsx("tr",{children:V.jsx("td",{style:{border:0,height:t,padding:0}})}),wr={overflowAnchor:"none"},wn={position:Ye(),zIndex:2,overflowAnchor:"none"},vn=R.memo(function({showTopList:e=!1}){const n=_("listState"),o=_("computeItemKey"),r=_("firstItemIndex"),s=_("context"),i=_("isSeeking"),l=_("fixedHeaderHeight"),u=_("groupIndices").length>0,d=_("itemContent"),m=_("groupContent"),S=_("ScrollSeekPlaceholder")||Tr,h=_("GroupComponent"),T=_("TableRowComponent"),w=(e?n.topItems:[]).reduce((g,f,a)=>(a===0?g.push(f.size):g.push(g[a-1]+f.size),g),[]),H=(e?n.topItems:n.items).map(g=>{const f=g.originalIndex,a=o(f+r,g.data,s),x=e?f===0?0:w[f-1]:0;return i?R.createElement(S,{...Q(S,s),height:g.size,index:g.index,key:a,type:g.type||"item"}):g.type==="group"?R.createElement(h,{...Q(h,s),"data-index":f,"data-item-index":g.index,"data-known-size":g.size,key:a,style:{...wn,top:l}},m(g.index,s)):R.createElement(T,{...Q(T,s),...eo(T,g.data),"data-index":f,"data-item-index":g.index,"data-known-size":g.size,"data-item-group-index":g.groupIndex,key:a,style:e?{...wn,top:l+x}:wr},u?d(g.index,g.groupIndex,g.data,s):d(g.index,g.data,s))});return V.jsx(V.Fragment,{children:H})}),vr=R.memo(function(){const e=_("listState"),n=_("topItemsIndexes").length>0,o=kt("sizeRanges"),r=_("useWindowScroll"),s=_("customScrollParent"),i=kt("windowScrollContainerState"),l=kt("scrollContainerState"),u=s||r?i:l,d=_("trackItemSizes"),m=_("itemSize"),S=_("log"),{callbackRef:h,ref:T}=On(o,m,d,u,S,void 0,s,!1,_("skipAnimationFrameInResizeObserver")),[w,H]=R.useState(0);tn("deviation",k=>{w!==k&&(T.current.style.marginTop=`${k}px`,H(k))});const g=_("EmptyPlaceholder"),f=_("FillerRow")||Cr,a=_("TableBodyComponent"),x=_("paddingTopAddition"),b=_("statefulTotalCount"),y=_("context");if(b===0&&g)return V.jsx(g,{...Q(g,y)});const z=(n?e.topItems:[]).reduce((k,A)=>k+A.size,0),c=e.offsetTop+x+w-z,p=e.offsetBottom,v=c>0?V.jsx(f,{context:y,height:c},"padding-top"):null,O=p>0?V.jsx(f,{context:y,height:p},"padding-bottom"):null;return V.jsxs(a,{"data-testid":"virtuoso-item-list",ref:h,...Q(a,y),children:[v,n&&V.jsx(vn,{showTopList:!0}),V.jsx(vn,{}),O]})}),yr=({children:t})=>{const e=R.useContext(pe),n=kt("viewportHeight"),o=kt("fixedItemHeight"),r=Vt(R.useMemo(()=>oe(n,s=>zt(s,"height")),[n]),!0,_("skipAnimationFrameInResizeObserver"));return R.useEffect(()=>{e&&(n(e.viewportHeight),o(e.itemHeight))},[e,n,o]),V.jsx("div",{"data-viewport-type":"element",ref:r,style:Jt(!1),children:t})},br=({children:t})=>{const e=R.useContext(pe),n=kt("windowViewportRect"),o=kt("fixedItemHeight"),r=_("customScrollParent"),s=Ae(n,r,_("skipAnimationFrameInResizeObserver"));return R.useEffect(()=>{e&&(o(e.itemHeight),n({offsetTop:0,visibleHeight:e.viewportHeight,visibleWidth:100}))},[e,n,o]),V.jsx("div",{"data-viewport-type":"window",ref:s,style:Jt(!1),children:t})},Rr=R.memo(function(e){const n=_("useWindowScroll"),o=_("customScrollParent"),r=kt("fixedHeaderHeight"),s=kt("fixedFooterHeight"),i=_("fixedHeaderContent"),l=_("fixedFooterContent"),u=_("context"),d=Vt(R.useMemo(()=>oe(r,a=>zt(a,"height")),[r]),!0,_("skipAnimationFrameInResizeObserver")),m=Vt(R.useMemo(()=>oe(s,a=>zt(a,"height")),[s]),!0,_("skipAnimationFrameInResizeObserver")),S=o||n?Er:Hr,h=o||n?br:yr,T=_("TableComponent"),w=_("TableHeadComponent"),H=_("TableFooterComponent"),g=i?V.jsx(w,{ref:d,style:{position:"sticky",top:0,zIndex:2},...Q(w,u),children:i()},"TableHead"):null,f=l?V.jsx(H,{ref:m,style:{bottom:0,position:"sticky",zIndex:1},...Q(H,u),children:l()},"TableFoot"):null;return V.jsx(S,{...e,...Q(S,u),children:V.jsx(h,{children:V.jsxs(T,{style:{borderSpacing:0,overflowAnchor:"none"},...Q(T,u),children:[g,V.jsx(vr,{},"TableBody"),f]})})})}),{Component:oo,useEmitter:tn,useEmitterValue:_,usePublisher:kt}=Ke(Sr,{required:{},optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",groupContent:"groupContent",fixedHeaderContent:"fixedHeaderContent",fixedFooterContent:"fixedFooterContent",overscan:"overscan",i