react-virtuoso 4.7.13 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.mjs +68 -26
- package/package.json +1 -1
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 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 R(e=b){let t;return o=>n=>{e(t,n)||(t=n,o(n))}}function z(e){return t=>o=>{e(o)&&t(o)}}function B(e){return t=>l(t,e)}function k(e){return t=>()=>t(e)}function M(e,t){return o=>n=>o(t=e(t,n))}function L(e){return t=>o=>{e>0?e--:t(o)}}function P(e){let t,o=null;return n=>r=>{o=r,t||(t=setTimeout((()=>{t=void 0,n(o)}),e))}}function F(e){let t,o;return n=>r=>{t=r,o&&clearTimeout(o),o=setTimeout((()=>{n(t)}),e)}}function O(...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,R(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:e.version.startsWith("18")?t=>{const o=e.useContext(h)[t],n=e.useCallback((e=>p(o,e)),[o]);return e.useSyncExternalStore(n,(()=>x(o)),(()=>x(o)))}: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=>{requestAnimationFrame((()=>{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 Re(e){return{index:e.index,value:e}}function ze(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),Re)}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,Me(t,c,r))),re()),groupIndices:o}}function Me(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=Pe("LAST"===e.index?o:e.index,t);return n=Math.max(0,n,Math.min(o,n)),n}}function Pe(e,t){if(!Fe(t))return e;let o=0;for(;t.groupIndices[o]<=e+o;)o++;return e+o}function Fe(e){return!ne(e.groupOffsetTree)}const Oe={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,Oe[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,O(c,e,f),M(ke,h),R()),h),I=H(y(c,R(),M(((e,t)=>({prev:e.current,current:t})),{prev:[],current:[]}),B((({prev:e})=>e))),[]);T(y(c,z((e=>e.length>0)),O(g,f),B((([e,t,o])=>{const n=e.reduce(((e,n,r)=>ce(e,n,Me(n,t.offsetTree,o)||r)),re());return{...t,groupIndices:e,groupOffsetTree:n}}))),g),T(y(n,O(g),z((([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,z((e=>void 0!==e&&ne(x(g).sizeTree))),B((e=>[{startIndex:0,endIndex:0,size:e}]))),o);const b=E(y(o,O(g),M((({sizes:e},[t,o])=>({changed:o!==e,sizes:o})),{changed:!1,sizes:h}),B((e=>e.changed))));p(y(s,M(((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,O(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,O(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,O(g,f),B((([e,{offsetTree:t},o])=>Me(-e,t,o)))));return T(y(l,O(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=S(),g=C(0);let I=null,x=null,E=null;function H(){I&&(I(),I=null),E&&(E(),E=null),x&&(clearTimeout(x),x=null),v(r,!1)}return T(y(f,O(e,i,t,g,c,a,m),O(n,u,d),B((([[e,t,n,i,l,c,a,u],d,m,g])=>{const T=Ae(e),{align:S,behavior:C,offset:b}=T,R=i-1,z=Le(T,t,R);let B=Me(z,t.offsetTree,d)+c;"end"===S?(B+=m+se(t.sizeTree,z)[1]-n+g,z===R&&(B+=a)):"center"===S?B+=(m+se(t.sizeTree,z)[1]-n+g)/2:B-=l,b&&(B+=b);const k=t=>{H(),t?(u("retrying to scroll to",{location:e},$.DEBUG),v(f,e)):(v(h,!0),u("list did not change, scroll successful",{},$.DEBUG))};if(H(),"smooth"===C){let e=!1;E=p(o,(t=>{e=e||t})),I=w(s,(()=>{k(e)}))}else I=w(y(o,(M=150,e=>{const t=setTimeout((()=>{e(!1)}),M);return o=>{o&&(e(!0),clearTimeout(t))}})),k);var M;return x=setTimeout((()=>{H()}),1200),v(r,!0),u("scrolling from index to",{index:z,top:B,behavior:C},$.DEBUG),{top:B,behavior:C}}))),l),{scrollToIndex:f,scrollTargetReached:h,topListHeight:g}}),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),F(100))),R()),!1),f=H(y(W(y(i,k(!0)),y(i,k(!1),F(200))),R()),!1);T(y(A(V(t),V(d)),B((([e,t])=>e<=t)),R()),s),T(y(s,P(50)),a);const h=E(y(A(e,V(o),V(n),V(r),V(u)),M(((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),R(((e,t)=>e&&e.atBottom===t.atBottom)))),g=H(y(e,M(((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}),z((e=>e.changed)),B((e=>e.jump))),0);T(y(h,B((e=>e.atBottom))),l),T(y(l,P(50)),c);const p=C(Ne);T(y(e,B((({scrollTop:e})=>e)),R(),M(((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,P(50),k("none")),p);const v=C(0);return T(y(m,z((e=>!e)),k(0)),v),T(y(t,P(100),O(m),z((([e,t])=>!!t)),M((([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,z((e=>e)),R()));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,scrollTargetReached:i},{didMount:l}])=>{const s=C(!0),c=C(0),a=C(!0);return T(y(l,O(c),z((([e,t])=>!!t)),k(!1)),s),T(y(l,O(c),z((([e,t])=>!!t)),k(!1)),a),p(y(A(t,l),O(s,e,o,a),z((([[,e],t,{sizeTree:o},n,r])=>e&&(!ne(o)||h(n))&&!t&&!r)),O(c)),(([,e])=>{w(i,(()=>{v(a,!0)})),je(4,(()=>{w(n,(()=>{v(s,!0)})),v(r,e)}))})),{scrolledToInitialItem:s,initialTopMostItemIndex:c,initialItemFinalLocationReached:a}}),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),O(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}})),z((({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),z((([e,,t])=>e&&t)),M((({value:e},[,t])=>({refreshed:e===t,value:t})),{refreshed:!1,value:0}),z((({refreshed:e})=>e)),O(u,e)),(([,e])=>{x(i)&&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),z((([e,t])=>Fe(t))),B((([e,t,o])=>se(t.groupOffsetTree,Math.max(e-o,0),"v")[0])),R(),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})),z((e=>null!=e)),R(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(!Fe(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}}function ut(e,t,o,n,r,i){let l=0;if(o.groupIndices.length>0)for(const a of o.groupIndices){if(a-l>=e)break;l++}const s=e+l,c=Ke(t,s);return at(Array.from({length:s}).map(((e,t)=>({index:t+c,size:0,offset:0,data:i[t+c]}))),[],s,r,o,n)}const dt=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=C(0),w=S();T(i.topItemsIndexes,v);const b=H(y(A(g,p,V(l,Xe),V(t),V(e),V(d),a,V(v),V(n),V(r),o),z((([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,h=x(I);if(0===o)return{...st,totalCount:o};if(0===e&&0===t)return 0===h?{...st,totalCount:o}:ut(h,r,n,s,c,a||[]);if(ne(m)){if(h>0)return null;const e=at(function(e,t,o){if(Fe(t)){const n=Pe(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);return e}const g=[];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++)g.push({index:e,size:r,offset:o,data:a&&a[e]}),o+=r}}if(!i)return at([],g,o,c,d,s);const p=l.length>0?l[l.length-1]+1:0,v=ze(f,e,t,p);if(0===v.length)return null;const T=o-1;return at(u([],(o=>{for(const n of v){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<p&&(i+=(p-l)*s,l=p);const u=Math.min(n.end,T);for(let e=l;e<=u&&!(i>=t);e++)o.push({index:e,size:s,offset:i,data:a&&a[e]}),i+=s+c}})),g,o,c,d,s)})),z((e=>null!==e)),R()),st);T(y(o,z(h),B((e=>null==e?void 0:e.length))),t),T(y(b,B((e=>e.topListHeight))),m),T(m,c),T(y(b,B((e=>[e.top,e.bottom]))),s),T(y(b,B((e=>e.items))),w);return{listState:b,topItemsIndexes:v,endReached:E(y(b,z((({items:e})=>e.length>0)),O(t,o),z((([{items:e},t])=>e[e.length-1].originalIndex===t-1)),B((([,e,t])=>[e-1,t])),R(Xe),B((([e])=>e)))),startReached:E(y(b,P(200),z((({items:e,topItems:t})=>e.length>0&&e[0].originalIndex===t.length)),B((({items:e})=>e[0].index)),R())),rangeChanged:E(y(b,z((({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}})),R(et))),itemsRendered:w,initialItemCount:I,...f}}),d(We,Qe,lt,qe,De,Ue,$e,Ce),{singleton:!0}),mt=D((([{sizes:e,firstItemIndex:t,data:o,gap:n},{initialTopMostItemIndex:r},{initialItemCount:i,listState:l},{didMount:s}])=>(T(y(s,O(i),z((([,e])=>0!==e)),O(r,e,t,n,o),B((([[,e],t,o,n,r,i=[]])=>ut(e,t,o,n,r,i)))),l),{})),d(We,qe,dt,$e),{singleton:!0}),ft=D((([{scrollVelocity:e}])=>{const t=C(!1),o=S(),n=C(!1);return T(y(e,O(n,t,o),z((([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})),R()),t),p(y(A(t,e,o),O(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}),ht=D((([{topItemsIndexes:e}])=>{const t=C(0);return T(y(t,z((e=>e>0)),B((e=>Array.from({length:e}).map(((e,t)=>t))))),e),{topItemCount:t}}),d(dt)),gt=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,dt),{singleton:!0});function pt(e){let t,o=!1;return()=>(o||(o=!0,t=e()),t)}const vt=pt((()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent))),It=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,O(s),M((([,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]),z((([e])=>0!==e)),O(t,l,n,i,f,h),z((([,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,O(o,r)),(([e,t,n])=>{n&&vt()?v(o,t-e):I(-e)})),p(y(A(H(r,!1),o,h),z((([e,t,o])=>!e&&!o&&0!==t)),B((([e,t])=>t)),P(1)),I),T(y(u,B((e=>({top:-e})))),e),p(y(a,O(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,dt,We,K,Ce)),xt=D((([{didMount:e},{scrollTo:t},{listState:o}])=>{const n=C(0);return p(y(e,O(n),z((([,e])=>0!==e)),B((([,e])=>({top:e})))),(e=>{w(y(o,L(1),z((e=>e.items.length>1))),(()=>{requestAnimationFrame((()=>{v(t,e)}))}))})),{initialScrollTop:n}}),d($e,ee,dt),{singleton:!0}),Tt=D((([{viewportHeight:e},{totalListHeight:t}])=>{const o=C(!1);return{alignToBottom:o,paddingTopAddition:H(y(A(o,e,t),z((([e])=>e)),B((([,e,t])=>Math.max(0,e-t))),P(0),R()),0)}}),d(ee,gt),{singleton:!0}),wt=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,O(n),B((([e,{offsetTop:t}])=>({...e,top:e.top+t})))),r),{useWindowScroll:i,customScrollParent:l,windowScrollContainerState:o,windowViewportRect:n,windowScrollTo:r}}),d(ee)),St=({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,Ct=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,O(e,r,t,i,l,s,n),O(o),B((([[e,t,o,n,r,i,l,s],a])=>{const{done:u,behavior:d,align:m,calculateViewLocation:f=St,...h}=e,g=Le(e,t,n-1),p=Me(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,z((e=>!1===e)),L(x(c)?1:2)),u):u&&u(),v})),z((e=>null!==e))),a),{scrollIntoView:u}}),d(We,ee,De,dt,K),{singleton:!0}),Et=D((([{sizes:e,sizeRanges:t},{scrollTop:o,headerHeight:n},{initialTopMostItemIndex:r},{didMount:i},{useWindowScroll:l,windowScrollContainerState:s,windowViewportRect:c}])=>{const a=S(),u=C(void 0),d=C(null),m=C(null);return T(s,d),T(c,m),p(y(a,O(e,o,l,d,m,n)),(([e,t,o,n,r,i,l])=>{const s=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}}));n&&null!==r&&null!==i&&(o=r.scrollTop-i.offsetTop),e({ranges:s,scrollTop:o-=l})})),T(y(u,z(h),B(Ht)),r),T(y(i,O(u),z((([,e])=>void 0!==e)),R(),B((([,e])=>e.ranges))),t),{getState:a,restoreStateFrom:u}}),d(We,ee,qe,$e,wt));function Ht(e){return{offset:e.scrollTop,index:0,align:"start"}}const yt=D((([e,t,o,n,r,i,l,s,c,a])=>({...e,...t,...o,...n,...r,...i,...l,...s,...c,...a})),d(lt,mt,$e,ft,gt,xt,Tt,wt,Ct,K)),bt=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,initialItemFinalLocationReached:h},g,p,v,{listState:I,topItemsIndexes:x,...w},{scrollToIndex:S},C,{topItemCount:E},{groupCounts:H},b])=>(T(w.rangeChanged,b.scrollSeekRangeChanged),T(y(b.windowViewportRect,B((e=>e.visibleHeight))),g.viewportHeight),{totalCount:e,data:l,firstItemIndex:s,sizeRanges:t,initialTopMostItemIndex:m,scrolledToInitialItem:f,initialItemFinalLocationReached:h,topItemsIndexes:x,topItemCount:E,groupCounts:H,fixedItemHeight:o,defaultItemHeight:n,gap:u,...v,statefulTotalCount:a,listState:I,scrollToIndex:S,trackItemSizes:r,itemSize:i,groupIndices:c,...w,...b,...g,sizes:d,...p})),d(We,qe,ee,Et,Ze,dt,De,It,ht,Qe,yt)),Rt="-webkit-sticky",zt="sticky",Bt=pt((()=>{if("undefined"==typeof document)return zt;const e=document.createElement("div");return e.style.position=Rt,e.style.position===Rt?Rt:zt}));function kt(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((()=>{requestAnimationFrame(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 Mt=e.createContext(void 0),Lt=e.createContext(void 0);function Pt(e){return e}const Ft=D((([e,t])=>({...e,...t})),d(bt,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])),R()),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}}),Wt={position:Bt(),zIndex:1,overflowAnchor:"none"},Vt={overflowAnchor:"none"},At=e.memo((function({showTopList:t=!1}){const o=to("listState"),n=eo("sizeRanges"),r=to("useWindowScroll"),i=to("customScrollParent"),l=eo("windowScrollContainerState"),s=eo("scrollContainerState"),c=i||r?l:s,a=to("itemContent"),u=to("context"),d=to("groupContent"),m=to("trackItemSizes"),f=to("itemSize"),h=to("log"),p=eo("gap"),{callbackRef:v}=Z(n,f,m,t?g:c,h,p,i),[I,x]=e.useState(0);oo("deviation",(e=>{I!==e&&x(e)}));const T=to("EmptyPlaceholder"),w=to("ScrollSeekPlaceholder")||Ot,S=to("ListComponent"),C=to("ItemComponent"),E=to("GroupComponent"),H=to("computeItemKey"),y=to("isSeeking"),b=to("groupIndices").length>0,R=to("alignToBottom"),z=to("initialItemFinalLocationReached"),B=t?{}:{boxSizing:"border-box",paddingTop:o.offsetTop,paddingBottom:o.offsetBottom,marginTop:0!==I?I:R?"auto":0,...z?{}:{visibility:"hidden"}};return!t&&0===o.totalCount&&T?e.createElement(T,_t(T,u)):e.createElement(S,{..._t(S,u),ref:v,style:B,"data-testid":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,{..._t(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,{..._t(E,u),key:r,"data-index":n,"data-known-size":t.size,"data-item-index":t.index,style:Wt},d(t.index,u)):e.createElement(C,{..._t(C,u),...Ut(C,t.data),key:r,"data-index":n,"data-known-size":t.size,"data-item-index":t.index,"data-item-group-index":t.groupIndex,style:Vt},b?a(t.index,t.groupIndex,t.data,u):a(t.index,t.data,u))})))})),Dt={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},Gt=e=>({width:"100%",height:"100%",position:"absolute",top:0,...e?{display:"flex",flexDirection:"column"}:{}}),Nt={width:"100%",position:Bt(),top:0,zIndex:1};function _t(e,t){if("string"!=typeof e)return{context:t}}function Ut(e,t){return{item:"string"==typeof e?void 0:t}}const $t=e.memo((function(){const t=to("HeaderComponent"),o=eo("headerHeight"),n=to("headerFooterTag"),r=Y(e.useMemo((()=>e=>o(J(e,"height"))),[o])),i=to("context");return t?e.createElement(n,{ref:r},e.createElement(t,_t(t,i))):null})),jt=e.memo((function(){const t=to("FooterComponent"),o=eo("footerHeight"),n=to("headerFooterTag"),r=Y(e.useMemo((()=>e=>o(J(e,"height"))),[o])),i=to("context");return t?e.createElement(n,{ref:r},e.createElement(t,_t(t,i))):null}));function Kt({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:{...Dt,...r},"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...l,..._t(c,d)},i)}))}function qt({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,..._t(c,f)},i)}))}const Yt=({children:t})=>{const o=e.useContext(Mt),n=eo("viewportHeight"),r=eo("fixedItemHeight"),i=to("alignToBottom"),s=Y(e.useMemo((()=>l(n,(e=>J(e,"height")))),[n]));return e.useEffect((()=>{o&&(n(o.viewportHeight),r(o.itemHeight))}),[o,n,r]),e.createElement("div",{style:Gt(i),ref:s,"data-viewport-type":"element"},t)},Zt=({children:t})=>{const o=e.useContext(Mt),n=eo("windowViewportRect"),r=eo("fixedItemHeight"),i=to("customScrollParent"),l=kt(n,i),s=to("alignToBottom");return e.useEffect((()=>{o&&(r(o.itemHeight),n({offsetTop:0,visibleHeight:o.viewportHeight,visibleWidth:100}))}),[o,n,r]),e.createElement("div",{ref:l,style:Gt(s),"data-viewport-type":"window"},t)},Jt=({children:t})=>{const o=to("TopItemListComponent")||"div",n=to("headerHeight"),r={...Nt,marginTop:`${n}px`},i=to("context");return e.createElement(o,{style:r,..._t(o,i)},t)},Qt=e.memo((function(t){const o=to("useWindowScroll"),n=to("topItemsIndexes").length>0,r=to("customScrollParent"),i=r||o?ro:no,l=r||o?Zt:Yt;return e.createElement(i,{...t},n&&e.createElement(Jt,null,e.createElement(At,{showTopList:!0})),e.createElement(l,null,e.createElement($t,null),e.createElement(At,null),e.createElement(jt,null)))})),{Component:Xt,usePublisher:eo,useEmitterValue:to,useEmitter:oo}=_(Ft,{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"}},Qt),no=Kt({usePublisher:eo,useEmitterValue:to,useEmitter:oo}),ro=qt({usePublisher:eo,useEmitterValue:to,useEmitter:oo}),io=Xt,lo=Xt,so={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},co={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:ao,ceil:uo,floor:mo,min:fo,max:ho}=Math;function go(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 po(e,t){return e&&e.column===t.column&&e.row===t.row}function vo(e,t){return e&&e.width===t.width&&e.height===t.height}const Io=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:M},F])=>{const W=C(0),D=C(0),G=C(so),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,O(Q),z((([e,t])=>!!t))),(()=>{v(X,!1),v(D,0)})),p(y(A(h,X,_,N,Q,ee),z((([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,z((e=>null!=e&&e.scrollTop>0)),k(0)),D),p(y(h,O(Z),z((([,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,vo),V(_,vo),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,po),V(_,vo),V(N,vo),V(K),V(D),V(J),V(X),V(Q)),z((([,,,,,,,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 so;if(0===f){const t=Ke(a,e);return function(e){return{...co,items:e}}(go(t,0===t?Math.max(s-1,0):t,l))}const g=wo(h,f,d);let p,v;c?0===t&&0===o&&s>0?(p=0,v=s-1):(p=g*mo((t+u)/(m+u)),v=g*uo((o+u)/(m+u))-1,v=fo(e-1,ho(v,g-1)),p=fo(v,ho(0,p))):(p=0,v=-1);const I=go(p,v,l),{top:x,bottom:T}=xo(i,n,r,I),w=uo(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,z((e=>null!==e)),B((e=>e.length))),W),T(y(A(N,_,G,q),z((([e,t,{items:o}])=>o.length>0&&0!==t.height&&0!==e.height)),B((([e,t,{items:o},n])=>{const{top:r,bottom:i}=xo(e,n,t,o);return[r,i]})),R(Xe)),o);const te=C(!1);T(y(n,O(te),B((([e,t])=>t||0!==e))),te);const oe=E(y(V(G),z((({items:e})=>e.length>0)),O(W,te),z((([{items:e},t,o])=>o&&e[e.length-1].index===t-1)),B((([,e])=>e-1)),R())),ne=E(y(V(G),z((({items:e})=>e.length>0&&0===e[0].index)),k(0),R())),re=E(y(V(G),O(J),z((([{items:e},t])=>e.length>0&&!t)),B((([{items:e}])=>({startIndex:e[0].index,endIndex:e[e.length-1].index}))),R(et),P(0)));T(re,m.scrollSeekRangeChanged),T(y(U,O(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=ho(0,a,fo(n-1,a));let u=To(t,r,o,a);return"end"===l?u=ao(u-t.height+o.height):"center"===l&&(u=ao(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:M,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,...F}}),d(lt,ee,Ue,ft,$e,wt,K));function xo(e,t,o,n){const{height:r}=o;if(void 0===r||0===n.length)return{top:0,bottom:0};return{top:To(e,t,o,n[0].index),bottom:To(e,t,o,n[n.length-1].index)+r}}function To(e,t,o,n){const r=wo(e.width,o.width,t.column),i=mo(n/r),l=i*o.height+ho(0,i-1)*t.row;return l>0?l+t.row:l}function wo(e,t,o){return ho(1,mo((e+o)/(mo(t)+o)))}const So=D((([e,t])=>({...e,...t})),d(Io,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])),R()),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")}})))),Co=e.memo((function(){const t=ko("gridState"),o=ko("listClassName"),n=ko("itemClassName"),r=ko("itemContent"),i=ko("computeItemKey"),l=ko("isSeeking"),s=Bo("scrollHeight"),c=ko("ItemComponent"),a=ko("ListComponent"),u=ko("ScrollSeekPlaceholder"),d=ko("context"),m=Bo("itemDimensions"),f=Bo("gap"),h=ko("log"),g=ko("stateRestoreInProgress"),p=Y(e.useMemo((()=>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:Fo("row-gap",getComputedStyle(e).rowGap,h),column:Fo("column-gap",getComputedStyle(e).columnGap,h)})}),[s,m,f,h]));return g?null:e.createElement(a,{ref:p,className:o,..._t(a,d),style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom},"data-testid":"virtuoso-item-list"},t.items.map((o=>{const s=i(o.index,o.data,d);return l?e.createElement(u,{key:s,..._t(u,d),index:o.index,height:t.itemHeight,width:t.itemWidth}):e.createElement(c,{..._t(c,d),className:n,"data-index":o.index,key:s},r(o.index,o.data,d))})))})),Eo=e.memo((function(){const t=ko("HeaderComponent"),o=Bo("headerHeight"),n=ko("headerFooterTag"),r=Y(e.useMemo((()=>e=>o(J(e,"height"))),[o])),i=ko("context");return t?e.createElement(n,{ref:r},e.createElement(t,_t(t,i))):null})),Ho=e.memo((function(){const t=ko("FooterComponent"),o=Bo("footerHeight"),n=ko("headerFooterTag"),r=Y(e.useMemo((()=>e=>o(J(e,"height"))),[o])),i=ko("context");return t?e.createElement(n,{ref:r},e.createElement(t,_t(t,i))):null})),yo=({children:t})=>{const o=e.useContext(Lt),n=Bo("itemDimensions"),r=Bo("viewportDimensions"),i=Y(e.useMemo((()=>e=>{r(e.getBoundingClientRect())}),[r]));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:Gt(!1),ref:i},t)},bo=({children:t})=>{const o=e.useContext(Lt),n=Bo("windowViewportRect"),r=Bo("itemDimensions"),i=ko("customScrollParent"),l=kt(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:Gt(!1)},t)},Ro=e.memo((function({...t}){const o=ko("useWindowScroll"),n=ko("customScrollParent"),r=n||o?Po:Lo,i=n||o?bo:yo;return e.createElement(r,{...t},e.createElement(i,null,e.createElement(Eo,null),e.createElement(Co,null),e.createElement(Ho,null)))})),{Component:zo,usePublisher:Bo,useEmitterValue:ko,useEmitter:Mo}=_(So,{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"}},Ro),Lo=Kt({usePublisher:Bo,useEmitterValue:ko,useEmitter:Mo}),Po=qt({usePublisher:Bo,useEmitterValue:ko,useEmitter:Mo});function Fo(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 Oo=zo,Wo=D((([e,t])=>({...e,...t})),d(bt,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])),R()),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")}})))),Vo=({height:t})=>e.createElement("tr",null,e.createElement("td",{style:{height:t}})),Ao=({height:t})=>e.createElement("tr",null,e.createElement("td",{style:{height:t,padding:0,border:0}})),Do={overflowAnchor:"none"},Go=e.memo((function(){const t=Ko("listState"),o=jo("sizeRanges"),n=Ko("useWindowScroll"),r=Ko("customScrollParent"),i=jo("windowScrollContainerState"),l=jo("scrollContainerState"),s=r||n?i:l,c=Ko("itemContent"),a=Ko("trackItemSizes"),u=Ko("itemSize"),d=Ko("log"),{callbackRef:m,ref:f}=Z(o,u,a,s,d,void 0,r),[h,g]=e.useState(0);qo("deviation",(e=>{h!==e&&(f.current.style.marginTop=`${e}px`,g(e))}));const p=Ko("EmptyPlaceholder"),v=Ko("ScrollSeekPlaceholder")||Vo,I=Ko("FillerRow")||Ao,x=Ko("TableBodyComponent"),T=Ko("TableRowComponent"),w=Ko("computeItemKey"),S=Ko("isSeeking"),C=Ko("paddingTopAddition"),E=Ko("firstItemIndex"),H=Ko("statefulTotalCount"),y=Ko("context");if(0===H&&p)return e.createElement(p,_t(p,y));const b=t.offsetTop+C+h,R=t.offsetBottom,z=b>0?e.createElement(I,{height:b,key:"padding-top",context:y}):null,B=R>0?e.createElement(I,{height:R,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,{..._t(v,y),key:n,index:t.index,height:t.size,type:t.type||"item"}):e.createElement(T,{..._t(T,y),...Ut(T,t.data),key:n,"data-index":o,"data-known-size":t.size,"data-item-index":t.index,style:Do},c(t.index,t.data,y))}));return e.createElement(x,{ref:m,"data-testid":"virtuoso-item-list",..._t(x,y)},[z,...k,B])})),No=({children:t})=>{const o=e.useContext(Mt),n=jo("viewportHeight"),r=jo("fixedItemHeight"),i=Y(e.useMemo((()=>l(n,(e=>J(e,"height")))),[n]));return e.useEffect((()=>{o&&(n(o.viewportHeight),r(o.itemHeight))}),[o,n,r]),e.createElement("div",{style:Gt(!1),ref:i,"data-viewport-type":"element"},t)},_o=({children:t})=>{const o=e.useContext(Mt),n=jo("windowViewportRect"),r=jo("fixedItemHeight"),i=Ko("customScrollParent"),l=kt(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:Gt(!1),"data-viewport-type":"window"},t)},Uo=e.memo((function(t){const o=Ko("useWindowScroll"),n=Ko("customScrollParent"),r=jo("fixedHeaderHeight"),i=jo("fixedFooterHeight"),s=Ko("fixedHeaderContent"),c=Ko("fixedFooterContent"),a=Ko("context"),u=Y(e.useMemo((()=>l(r,(e=>J(e,"height")))),[r])),d=Y(e.useMemo((()=>l(i,(e=>J(e,"height")))),[i])),m=n||o?Zo:Yo,f=n||o?_o:No,h=Ko("TableComponent"),g=Ko("TableHeadComponent"),p=Ko("TableFooterComponent"),v=s?e.createElement(g,{key:"TableHead",style:{zIndex:2,position:"sticky",top:0},ref:u,..._t(g,a)},s()):null,I=c?e.createElement(p,{key:"TableFoot",style:{zIndex:1,position:"sticky",bottom:0},ref:d,..._t(p,a)},c()):null;return e.createElement(m,{...t},e.createElement(f,null,e.createElement(h,{style:{borderSpacing:0,overflowAnchor:"none"},..._t(h,a)},[v,e.createElement(Go,{key:"TableBody"}),I])))})),{Component:$o,usePublisher:jo,useEmitterValue:Ko,useEmitter:qo}=_(Wo,{required:{},optional:{restoreStateFrom:"restoreStateFrom",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",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Uo),Yo=Kt({usePublisher:jo,useEmitterValue:Ko,useEmitter:qo}),Zo=qt({usePublisher:jo,useEmitterValue:Ko,useEmitter:qo}),Jo=$o;exports.GroupedVirtuoso=lo,exports.LogLevel=$,exports.TableVirtuoso=Jo,exports.Virtuoso=io,exports.VirtuosoGrid=Oo,exports.VirtuosoGridMockContext=Lt,exports.VirtuosoMockContext=Mt;
|
|
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 L(e,t){return o=>n=>o(t=e(t,n))}function M(e){return t=>o=>{e>0?e--:t(o)}}function P(e){let t,o=null;return n=>r=>{o=r,t||(t=setTimeout((()=>{t=void 0,n(o)}),e))}}function W(e){let t,o;return n=>r=>{t=r,o&&clearTimeout(o),o=setTimeout((()=>{n(t)}),e)}}function O(...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 F(...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:e.version.startsWith("18")?t=>{const o=e.useContext(h)[t],n=e.useCallback((e=>p(o,e)),[o]);return e.useSyncExternalStore(n,(()=>x(o)),(()=>x(o)))}: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=>{requestAnimationFrame((()=>{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,c){const a=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,c?"offsetWidth":"offsetHeight",i);let a=e.parentElement;for(;!a.dataset.virtuosoScroller;)a=a.parentElement;const u="window"===a.lastElementChild.dataset.viewportType,d=s?c?s.scrollLeft:s.scrollTop:u?c?window.pageXOffset||document.documentElement.scrollLeft:window.pageYOffset||document.documentElement.scrollTop:c?a.scrollLeft:a.scrollTop,m=s?c?s.scrollWidth:s.scrollHeight:u?c?document.documentElement.scrollWidth:document.documentElement.scrollHeight:c?a.scrollWidth:a.scrollHeight,f=s?c?s.offsetWidth:s.offsetHeight:u?c?window.innerWidth:window.innerHeight:c?a.offsetWidth:a.offsetHeight;r({scrollTop:Math.max(d,0),scrollHeight:m,viewportHeight:f}),null==l||l(c?X("column-gap",getComputedStyle(e).columnGap,i):X("row-gap",getComputedStyle(e).rowGap,i)),null!==n&&t(n)}),[t,o,i,l,s,r]);return q(a,n)}function X(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)}function J(e,t){return Math.round(e.getBoundingClientRect()[t])}function Q(e,t){return Math.abs(e-t)<1.01}function ee(o,n,r,i=g,l,s){const c=e.useRef(null),a=e.useRef(null),u=e.useRef(null),d=e.useCallback((e=>{const r=e.target,i=r===window||r===document,l=s?i?window.pageXOffset||document.documentElement.scrollLeft:r.scrollLeft:i?window.pageYOffset||document.documentElement.scrollTop:r.scrollTop,c=s?i?document.documentElement.scrollWidth:r.scrollWidth:i?document.documentElement.scrollHeight:r.scrollHeight,d=s?i?window.innerWidth:r.offsetWidth:i?window.innerHeight:r.offsetHeight,m=()=>{o({scrollTop:Math.max(l,0),scrollHeight:c,viewportHeight:d})};e.suppressFlushSync?m():t.flushSync(m),null!==a.current&&(l===a.current||l<=0||l===c-d)&&(a.current=null,n(!0),u.current&&(clearTimeout(u.current),u.current=null))}),[o,n]);return e.useEffect((()=>{const e=l||c.current;return i(l||c.current),d({target:e,suppressFlushSync:!0}),e.addEventListener("scroll",d,{passive:!0}),()=>{i(null),e.removeEventListener("scroll",d)}}),[c,d,r,i,l]),{scrollerRef:c,scrollByCallback:function(e){s&&(e={left:e.top,behavior:e.behavior}),c.current.scrollBy(e)},scrollToCallback:function(e){const t=c.current;if(!t||(s?"offsetWidth"in t&&0===t.offsetWidth:"offsetHeight"in t&&0===t.offsetHeight))return;const r="smooth"===e.behavior;let i,l,d;t===window?(l=Math.max(J(document.documentElement,s?"width":"height"),s?document.documentElement.scrollWidth:document.documentElement.scrollHeight),i=s?window.innerWidth:window.innerHeight,d=s?document.documentElement.scrollLeft:document.documentElement.scrollTop):(l=t[s?"scrollWidth":"scrollHeight"],i=J(t,s?"width":"height"),d=t[s?"scrollLeft":"scrollTop"]);const m=l-i;if(e.top=Math.ceil(Math.max(Math.min(m,e.top),0)),Q(i,l)||e.top===d)return o({scrollTop:d,scrollHeight:l,viewportHeight:i}),void(r&&n(!0));r?(a.current=e.top,u.current&&clearTimeout(u.current),u.current=setTimeout((()=>{u.current=null,a.current=null,n(!0)}),1e3)):a.current=null,s&&(e={left:e.top,behavior:e.behavior}),t.scrollTo(e)}}}const te=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),h=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,horizontalDirection:h,scrollTo:d,scrollBy:m,statefulScrollTop:r,deviation:o,scrollingInProgress:f}}),[],{singleton:!0}),oe={lvl:0};function ne(e,t,o,n=oe,r=oe){return{k:e,v:t,lvl:o,l:n,r:r}}function re(e){return e===oe}function ie(){return oe}function le(e,t){if(re(e))return oe;const{k:o,l:n,r:r}=e;if(t===o){if(re(n))return r;if(re(r))return n;{const[t,o]=me(n);return ve(he(e,{k:t,v:o,l:fe(n)}))}}return ve(he(e,t<o?{l:le(n,t)}:{r:le(r,t)}))}function se(e,t){if(!re(e))return t===e.k?e.v:t<e.k?se(e.l,t):se(e.r,t)}function ce(e,t,o="k"){if(re(e))return[-1/0,void 0];if(Number(e[o])===t)return[e.k,e.v];if(Number(e[o])<t){const n=ce(e.r,t,o);return n[0]===-1/0?[e.k,e.v]:n}return ce(e.l,t,o)}function ae(e,t,o){return re(e)?ne(t,o,1):t===e.k?he(e,{k:t,v:o}):t<e.k?pe(he(e,{l:ae(e.l,t,o)})):pe(he(e,{r:ae(e.r,t,o)}))}function ue(e,t,o){if(re(e))return[];const{k:n,v:r,l:i,r:l}=e;let s=[];return n>t&&(s=s.concat(ue(i,t,o))),n>=t&&n<=o&&s.push({k:n,v:r}),n<=o&&(s=s.concat(ue(l,t,o))),s}function de(e){return re(e)?[]:[...de(e.l),{k:e.k,v:e.v},...de(e.r)]}function me(e){return re(e.r)?[e.k,e.v]:me(e.r)}function fe(e){return re(e.r)?e.l:ve(he(e,{r:fe(e.r)}))}function he(e,t){return ne(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 ge(e){return re(e)||e.lvl>e.r.lvl}function pe(e){return Te(we(e))}function ve(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(ge(t))return we(he(e,{lvl:n-1}));if(re(t)||re(t.r))throw new Error("Unexpected empty nodes");return he(t.r,{l:he(t,{r:t.r.l}),r:he(e,{l:t.r.r,lvl:n-1}),lvl:n})}if(ge(e))return Te(he(e,{lvl:n-1}));if(re(o)||re(o.l))throw new Error("Unexpected empty nodes");{const t=o.l,r=ge(t)?o.lvl-1:o.lvl;return he(t,{l:he(e,{r:t.l,lvl:n-1}),r:Te(he(o,{l:t.r,lvl:r})),lvl:t.lvl+1})}}function Ie(e,t,o){if(re(e))return[];const n=ce(e,t)[0];return xe(ue(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 Te(e){const{r:t,lvl:o}=e;return re(t)||re(t.r)||t.lvl!==o||t.r.lvl!==o?e:he(t,{l:he(e,{r:t.l}),lvl:o+1})}function we(e){const{l:t}=e;return re(t)||t.lvl!==e.lvl?e:he(t,{r:he(e,{l:t.r})})}function Se(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 Ce(e,t,o){return e[Se(e,t,o)]}const Ee=D((()=>({recalcInProgress:C(!1)})),[],{singleton:!0});function He(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 ye(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 be({index:e},t){return t===e?0:t<e?-1:1}function ze({offset:e},t){return t===e?0:t<e?-1:1}function Re(e){return{index:e.index,value:e}}function Be(e,t,o,n=0){return n>0&&(t=Math.max(t,Ce(e,n,be).offset)),xe(function(e,t,o,n){const r=Se(e,t,n),i=Se(e,o,n,r);return e.slice(r,i+1)}(e,t,o,ze),Re)}function ke(e,t,o,n){let r=e,i=0,l=0,s=0,c=0;if(0!==t){c=Se(r,t-1,be);s=r[c].offset;const e=ce(o,t-1);i=e[0],l=e[1],r.length&&r[c].size===ce(o,t)[1]&&(c-=1),r=r.slice(0,c+1)}else r=[];for(const{start:a,value:u}of Ie(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 Le(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&&re(i)&&2===t.length){const e=t[0].size,n=t[1].size;l=o.reduce(((t,o)=>ae(ae(t,o,e),o+1,n)),l)}else[l,s]=function(e,t){let o=re(e)?0:1/0;for(const n of t){const{size:t,startIndex:r,endIndex:i}=n;if(o=Math.min(o,r),re(e)){e=ae(e,0,t);continue}const l=Ie(e,r-1,i+1);if(l.some(He(n)))continue;let s=!1,c=!1;for(const{start:o,end:n,value:a}of l)s?(i>=o||t===a)&&(e=le(e,o)):(c=a!==t,s=!0),n>i&&i>=o&&a!==t&&(e=ae(e,i+1,a));c&&(e=ae(e,r,t))}return[e,o]}(l,t);if(l===i)return e;const{offsetTree:c,lastIndex:a,lastSize:u,lastOffset:d}=ke(e.offsetTree,s,l,r);return{sizeTree:l,offsetTree:c,lastIndex:a,lastOffset:d,lastSize:u,groupOffsetTree:o.reduce(((e,t)=>ae(e,t,Me(t,c,r))),ie()),groupIndices:o}}function Me(e,t,o){if(0===t.length)return 0;const{offset:n,index:r,size:i}=Ce(t,e,be),l=e-r,s=i*l+(l-1)*o+n;return s>0?s+o:s}function Pe(e,t,o){if(function(e){return void 0!==e.groupIndex}(e))return t.groupIndices[e.groupIndex]+1;{let n=We("LAST"===e.index?o:e.index,t);return n=Math.max(0,n,Math.min(o,n)),n}}function We(e,t){if(!Oe(t))return e;let o=0;for(;t.groupIndices[o]<=e+o;)o++;return e+o}function Oe(e){return!re(e.groupOffsetTree)}const Fe={offsetHeight:"height",offsetWidth:"width"},Ve=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:ie(),groupOffsetTree:ie(),lastIndex:0,lastOffset:0,lastSize:0,groupIndices:[]},g=H(y(o,O(c,e,f),L(Le,h),z()),h),I=H(y(c,z(),L(((e,t)=>({prev:e.current,current:t})),{prev:[],current:[]}),B((({prev:e})=>e))),[]);T(y(c,R((e=>e.length>0)),O(g,f),B((([e,t,o])=>{const n=e.reduce(((e,n,r)=>ae(e,n,Me(n,t.offsetTree,o)||r)),ie());return{...t,groupIndices:e,groupOffsetTree:n}}))),g),T(y(n,O(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&&re(x(g).sizeTree))),B((e=>[{startIndex:0,endIndex:0,size:e}]))),o);const b=E(y(o,O(g),L((({sizes:e},[t,o])=>({changed:o!==e,sizes:o})),{changed:!1,sizes:h}),B((e=>e.changed))));p(y(s,L(((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+ye(e,o));else if(e<0){const t=x(I);t.length>0&&(e-=ye(-e,t)),v(l,e)}})),p(y(s,O(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,O(g),B((([e,t])=>{const o=t.groupIndices.length>0,n=[],r=t.lastSize;if(o){const o=se(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=de(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 de(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 M=E(y(l,O(g,f),B((([e,{offsetTree:t},o])=>Me(-e,t,o)))));return T(y(l,O(g,f),B((([e,t,o])=>{if(t.groupIndices.length>0){if(re(t.sizeTree))return t;let n=ie();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=de(t.sizeTree).reduce(((t,{k:o,v:n})=>ae(t,Math.max(0,o+e),n)),n);if(i!==-e){n=ae(n,0,se(t.sizeTree,s));n=ae(n,1,ce(t.sizeTree,1-e)[1])}return{...t,sizeTree:n,...ke(t.offsetTree,0,n,o)}}{const n=de(t.sizeTree).reduce(((t,{k:o,v:n})=>ae(t,Math.max(0,o+e),n)),ie());return{...t,sizeTree:n,...ke(t.offsetTree,0,n,o)}}}))),g),{data:m,totalCount:n,sizeRanges:o,groupIndices:c,defaultItemSize:u,fixedItemSize:a,unshiftWith:i,shiftWith:l,shiftWithOffset:M,beforeUnshiftWith:k,firstItemIndex:s,gap:f,sizes:g,listRefresh:b,statefulTotalCount:r,trackItemSizes:w,itemSize:d}}),d(K,Ee),{singleton:!0}),Ae="undefined"!=typeof document&&"scrollBehavior"in document.documentElement.style;function De(e){const t="number"==typeof e?{index:e}:e;return t.align||(t.align="start"),t.behavior&&Ae||(t.behavior="auto"),t.offset||(t.offset=0),t}const Ge=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=S(),g=C(0);let I=null,x=null,E=null;function H(){I&&(I(),I=null),E&&(E(),E=null),x&&(clearTimeout(x),x=null),v(r,!1)}return T(y(f,O(e,i,t,g,c,a,m),O(n,u,d),B((([[e,t,n,i,l,c,a,u],d,m,g])=>{const T=De(e),{align:S,behavior:C,offset:b}=T,z=i-1,R=Pe(T,t,z);let B=Me(R,t.offsetTree,d)+c;"end"===S?(B+=m+ce(t.sizeTree,R)[1]-n+g,R===z&&(B+=a)):"center"===S?B+=(m+ce(t.sizeTree,R)[1]-n+g)/2:B-=l,b&&(B+=b);const k=t=>{H(),t?(u("retrying to scroll to",{location:e},$.DEBUG),v(f,e)):(v(h,!0),u("list did not change, scroll successful",{},$.DEBUG))};if(H(),"smooth"===C){let e=!1;E=p(o,(t=>{e=e||t})),I=w(s,(()=>{k(e)}))}else I=w(y(o,(L=150,e=>{const t=setTimeout((()=>{e(!1)}),L);return o=>{o&&(e(!0),clearTimeout(t))}})),k);var L;return x=setTimeout((()=>{H()}),1200),v(r,!0),u("scrolling from index to",{index:R,top:B,behavior:C},$.DEBUG),{top:B,behavior:C}}))),l),{scrollToIndex:f,scrollTargetReached:h,topListHeight:g}}),d(Ve,te,K),{singleton:!0});const Ne="up",_e="down",Ue={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},$e=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(F(y(V(t),M(1),k(!0)),y(V(t),M(1),k(!1),W(100))),z()),!1),f=H(y(F(y(i,k(!0)),y(i,k(!1),W(200))),z()),!1);T(y(A(V(t),V(d)),B((([e,t])=>e<=t)),z()),s),T(y(s,P(50)),a);const h=E(y(A(e,V(o),V(n),V(r),V(u)),L(((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}}),Ue),z(((e,t)=>e&&e.atBottom===t.atBottom)))),g=H(y(e,L(((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,P(50)),c);const p=C(_e);T(y(e,B((({scrollTop:e})=>e)),z(),L(((e,t)=>x(f)?{direction:e.direction,prevScrollTop:t}:{direction:t<e.prevScrollTop?Ne:_e,prevScrollTop:t}),{direction:_e,prevScrollTop:0}),B((e=>e.direction))),p),T(y(e,P(50),k("none")),p);const v=C(0);return T(y(m,R((e=>!e)),k(0)),v),T(y(t,P(100),O(m),R((([e,t])=>!!t)),L((([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(te)),je=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 Ke(e,t){0==e?t():requestAnimationFrame((()=>Ke(e-1,t)))}function qe(e,t){const o=t-1;return"number"==typeof e?e:"LAST"===e.index?o:e.index}const Ye=D((([{sizes:e,listRefresh:t,defaultItemSize:o},{scrollTop:n},{scrollToIndex:r,scrollTargetReached:i},{didMount:l}])=>{const s=C(!0),c=C(0),a=C(!0);return T(y(l,O(c),R((([e,t])=>!!t)),k(!1)),s),T(y(l,O(c),R((([e,t])=>!!t)),k(!1)),a),p(y(A(t,l),O(s,e,o,a),R((([[,e],t,{sizeTree:o},n,r])=>e&&(!re(o)||h(n))&&!t&&!r)),O(c)),(([,e])=>{w(i,(()=>{v(a,!0)})),Ke(4,(()=>{w(n,(()=>{v(s,!0)})),v(r,e)}))})),{scrolledToInitialItem:s,initialTopMostItemIndex:c,initialItemFinalLocationReached:a}}),d(Ve,te,Ge,je),{singleton:!0});function Ze(e){return!!e&&("smooth"===e?"smooth":"auto")}const Xe=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),M(1)),s),O(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?Ze(e(t)):t&&Ze(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)),L((({value:e},[,t])=>({refreshed:e===t,value:t})),{refreshed:!1,value:0}),R((({refreshed:e})=>e)),O(u,e)),(([,e])=>{x(i)&&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(Ve,$e,Ge,Ye,je,K,te));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])=>ce(t.groupOffsetTree,Math.max(e-o,0),"v")[0])),z(),B((e=>[e]))),l),{groupCounts:i,topItemsIndexes:l}}),d(Ve,te));function et(e,t){return!(!e||e[0]!==t[0]||e[1]!==t[1])}function tt(e,t){return!(!e||e.startIndex!==t.startIndex||e.endIndex!==t.endIndex)}const ot="top",nt="bottom",rt="none";function it(e,t,o){return"number"==typeof e?o===Ne&&t===ot||o===_e&&t===nt?e:0:o===Ne?t===ot?e.main:e.reverse:t===nt?e.main:e.reverse}function lt(e,t){return"number"==typeof e?e:e[t]||0}const st=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,et),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=rt;const h=lt(a,ot),g=lt(a,nt);return n-=c,r+=o+s,(n+=o+s)>e+d-h&&(f=Ne),(r-=c)<e-m+t+g&&(f=_e),f!==rt?[Math.max(u-o-it(i,ot,f)-h,0),u-m-s+t+it(i,nt,f)+g]:null})),R((e=>null!=e)),z(et)),[0,0])}}),d(te),{singleton:!0});const ct={items:[],topItems:[],offsetTop:0,offsetBottom:0,top:0,bottom:0,topListHeight:0,totalCount:0,firstItemIndex:0};function at(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=Ie(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 ut(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:at(e,r,i),topItems:at(t,r,i),topListHeight:t.reduce(((e,t)=>t.size+e),0),offsetTop:a,offsetBottom:f,top:m,bottom:u,totalCount:o,firstItemIndex:i}}function dt(e,t,o,n,r,i){let l=0;if(o.groupIndices.length>0)for(const a of o.groupIndices){if(a-l>=e)break;l++}const s=e+l,c=qe(t,s);return ut(Array.from({length:s}).map(((e,t)=>({index:t+c,size:0,offset:0,data:i[t+c]}))),[],s,r,o,n)}const mt=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=C(0),w=S();T(i.topItemsIndexes,v);const b=H(y(A(g,p,V(l,et),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,h=x(I);if(0===o)return{...ct,totalCount:o};if(0===e&&0===t)return 0===h?{...ct,totalCount:o}:dt(h,r,n,s,c,a||[]);if(re(m)){if(h>0)return null;const e=ut(function(e,t,o){if(Oe(t)){const n=We(e,t);return[{index:ce(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]}]}(qe(r,o),d,a),[],o,c,d,s);return e}const g=[];if(l.length>0){const e=l[0],t=l[l.length-1];let o=0;for(const n of Ie(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++)g.push({index:e,size:r,offset:o,data:a&&a[e]}),o+=r}}if(!i)return ut([],g,o,c,d,s);const p=l.length>0?l[l.length-1]+1:0,v=Be(f,e,t,p);if(0===v.length)return null;const T=o-1;return ut(u([],(o=>{for(const n of v){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<p&&(i+=(p-l)*s,l=p);const u=Math.min(n.end,T);for(let e=l;e<=u&&!(i>=t);e++)o.push({index:e,size:s,offset:i,data:a&&a[e]}),i+=s+c}})),g,o,c,d,s)})),R((e=>null!==e)),z()),ct);T(y(o,R(h),B((e=>null==e?void 0:e.length))),t),T(y(b,B((e=>e.topListHeight))),m),T(m,c),T(y(b,B((e=>[e.top,e.bottom]))),s),T(y(b,B((e=>e.items))),w);return{listState:b,topItemsIndexes:v,endReached:E(y(b,R((({items:e})=>e.length>0)),O(t,o),R((([{items:e},t])=>e[e.length-1].originalIndex===t-1)),B((([,e,t])=>[e-1,t])),z(et),B((([e])=>e)))),startReached:E(y(b,P(200),R((({items:e,topItems:t})=>e.length>0&&e[0].originalIndex===t.length)),B((({items:e})=>e[0].index)),z())),rangeChanged:E(y(b,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(tt))),itemsRendered:w,initialItemCount:I,...f}}),d(Ve,Qe,st,Ye,Ge,$e,je,Ee),{singleton:!0}),ft=D((([{sizes:e,firstItemIndex:t,data:o,gap:n},{initialTopMostItemIndex:r},{initialItemCount:i,listState:l},{didMount:s}])=>(T(y(s,O(i),R((([,e])=>0!==e)),O(r,e,t,n,o),B((([[,e],t,o,n,r,i=[]])=>dt(e,t,o,n,r,i)))),l),{})),d(Ve,Ye,mt,je),{singleton:!0}),ht=D((([{scrollVelocity:e}])=>{const t=C(!1),o=S(),n=C(!1);return T(y(e,O(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),O(n)),(([[e,t,o],n])=>e&&n&&n.change&&n.change(t,o))),{isSeeking:t,scrollSeekConfiguration:n,scrollVelocity:e,scrollSeekRangeChanged:o}}),d($e),{singleton:!0}),gt=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(mt)),pt=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(te,mt),{singleton:!0});function vt(e){let t,o=!1;return()=>(o||(o=!0,t=e()),t)}const It=vt((()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent))),xt=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,O(s),L((([,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)),O(t,l,n,i,f,h),R((([,e,t,o,,,n])=>!n&&!o&&0!==e&&t===Ne)),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,O(o,r)),(([e,t,n])=>{n&&It()?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)),P(1)),I),T(y(u,B((e=>({top:-e})))),e),p(y(a,O(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=se(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(te,$e,mt,Ve,K,Ee)),Tt=D((([{didMount:e},{scrollTo:t},{listState:o}])=>{const n=C(0);return p(y(e,O(n),R((([,e])=>0!==e)),B((([,e])=>({top:e})))),(e=>{w(y(o,M(1),R((e=>e.items.length>1))),(()=>{requestAnimationFrame((()=>{v(t,e)}))}))})),{initialScrollTop:n}}),d(je,te,mt),{singleton:!0}),wt=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))),P(0),z()),0)}}),d(te,pt),{singleton:!0}),St=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,O(n),B((([e,{offsetTop:t}])=>({...e,top:e.top+t})))),r),{useWindowScroll:i,customScrollParent:l,windowScrollContainerState:o,windowViewportRect:n,windowScrollTo:r}}),d(te)),Ct=({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,Et=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,O(e,r,t,i,l,s,n),O(o),B((([[e,t,o,n,r,i,l,s],a])=>{const{done:u,behavior:d,align:m,calculateViewLocation:f=Ct,...h}=e,g=Pe(e,t,n-1),p=Me(g,t.offsetTree,a)+r+i,v=f({itemTop:p,itemBottom:p+ce(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)),M(x(c)?1:2)),u):u&&u(),v})),R((e=>null!==e))),a),{scrollIntoView:u}}),d(Ve,te,Ge,mt,K),{singleton:!0}),Ht=D((([{sizes:e,sizeRanges:t},{scrollTop:o,headerHeight:n},{initialTopMostItemIndex:r},{didMount:i},{useWindowScroll:l,windowScrollContainerState:s,windowViewportRect:c}])=>{const a=S(),u=C(void 0),d=C(null),m=C(null);return T(s,d),T(c,m),p(y(a,O(e,o,l,d,m,n)),(([e,t,o,n,r,i,l])=>{const s=de(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}}));n&&null!==r&&null!==i&&(o=r.scrollTop-i.offsetTop),e({ranges:s,scrollTop:o-=l})})),T(y(u,R(h),B(yt)),r),T(y(i,O(u),R((([,e])=>void 0!==e)),z(),B((([,e])=>e.ranges))),t),{getState:a,restoreStateFrom:u}}),d(Ve,te,Ye,je,St));function yt(e){return{offset:e.scrollTop,index:0,align:"start"}}const bt=D((([e,t,o,n,r,i,l,s,c,a])=>({...e,...t,...o,...n,...r,...i,...l,...s,...c,...a})),d(st,ft,je,ht,pt,Tt,wt,St,Et,K)),zt=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,initialItemFinalLocationReached:h},g,p,v,{listState:I,topItemsIndexes:x,...w},{scrollToIndex:S},C,{topItemCount:E},{groupCounts:H},b])=>(T(w.rangeChanged,b.scrollSeekRangeChanged),T(y(b.windowViewportRect,B((e=>e.visibleHeight))),g.viewportHeight),{totalCount:e,data:l,firstItemIndex:s,sizeRanges:t,initialTopMostItemIndex:m,scrolledToInitialItem:f,initialItemFinalLocationReached:h,topItemsIndexes:x,topItemCount:E,groupCounts:H,fixedItemHeight:o,defaultItemHeight:n,gap:u,...v,statefulTotalCount:a,listState:I,scrollToIndex:S,trackItemSizes:r,itemSize:i,groupIndices:c,...w,...b,...g,sizes:d,...p})),d(Ve,Ye,te,Ht,Xe,mt,Ge,xt,gt,Qe,bt)),Rt="-webkit-sticky",Bt="sticky",kt=vt((()=>{if("undefined"==typeof document)return Bt;const e=document.createElement("div");return e.style.position=Rt,e.style.position===Rt?Rt:Bt}));function Lt(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((()=>{requestAnimationFrame(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 Mt=e.createContext(void 0),Pt=e.createContext(void 0);function Wt(e){return e}const Ot=D((([e,t])=>({...e,...t})),d(zt,D((()=>{const e=C((e=>`Item ${e}`)),t=C(null),o=C((e=>`Group ${e}`)),n=C({}),r=C(Wt),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")}})))),Ft=({height:t})=>e.createElement("div",{style:{height:t}}),Vt={position:kt(),zIndex:1,overflowAnchor:"none"},At={overflowAnchor:"none"},Dt={...At,display:"inline-block",height:"100%"},Gt=e.memo((function({showTopList:t=!1}){const o=ro("listState"),n=no("sizeRanges"),r=ro("useWindowScroll"),i=ro("customScrollParent"),l=no("windowScrollContainerState"),s=no("scrollContainerState"),c=i||r?l:s,a=ro("itemContent"),u=ro("context"),d=ro("groupContent"),m=ro("trackItemSizes"),f=ro("itemSize"),h=ro("log"),p=no("gap"),v=ro("horizontalDirection"),{callbackRef:I}=Z(n,f,m,t?g:c,h,p,i,v),[x,T]=e.useState(0);io("deviation",(e=>{x!==e&&T(e)}));const w=ro("EmptyPlaceholder"),S=ro("ScrollSeekPlaceholder")||Ft,C=ro("ListComponent"),E=ro("ItemComponent"),H=ro("GroupComponent"),y=ro("computeItemKey"),b=ro("isSeeking"),z=ro("groupIndices").length>0,R=ro("alignToBottom"),B=ro("initialItemFinalLocationReached"),k=t?{}:{boxSizing:"border-box",...v?{whiteSpace:"nowrap",display:"inline-block",height:"100%",paddingLeft:o.offsetTop,paddingRight:o.offsetBottom,marginLeft:0!==x?x:R?"auto":0}:{marginTop:0!==x?x:R?"auto":0,paddingTop:o.offsetTop,paddingBottom:o.offsetBottom},...B?{}:{visibility:"hidden"}};return!t&&0===o.totalCount&&w?e.createElement(w,jt(w,u)):e.createElement(C,{...jt(C,u),ref:I,style:k,"data-testid":t?"virtuoso-top-item-list":"virtuoso-item-list"},(t?o.topItems:o.items).map((t=>{const n=t.originalIndex,r=y(n+o.firstItemIndex,t.data,u);return b?e.createElement(S,{...jt(S,u),key:r,index:t.index,height:t.size,type:t.type||"item",..."group"===t.type?{}:{groupIndex:t.groupIndex}}):"group"===t.type?e.createElement(H,{...jt(H,u),key:r,"data-index":n,"data-known-size":t.size,"data-item-index":t.index,style:Vt},d(t.index,u)):e.createElement(E,{...jt(E,u),...Kt(E,t.data),key:r,"data-index":n,"data-known-size":t.size,"data-item-index":t.index,"data-item-group-index":t.groupIndex,style:v?Dt:At},z?a(t.index,t.groupIndex,t.data,u):a(t.index,t.data,u))})))})),Nt={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},_t={outline:"none",overflowX:"auto",position:"relative"},Ut=e=>({width:"100%",height:"100%",position:"absolute",top:0,...e?{display:"flex",flexDirection:"column"}:{}}),$t={width:"100%",position:kt(),top:0,zIndex:1};function jt(e,t){if("string"!=typeof e)return{context:t}}function Kt(e,t){return{item:"string"==typeof e?void 0:t}}const qt=e.memo((function(){const t=ro("HeaderComponent"),o=no("headerHeight"),n=ro("headerFooterTag"),r=Y(e.useMemo((()=>e=>o(J(e,"height"))),[o])),i=ro("context");return t?e.createElement(n,{ref:r},e.createElement(t,jt(t,i))):null})),Yt=e.memo((function(){const t=ro("FooterComponent"),o=no("footerHeight"),n=ro("headerFooterTag"),r=Y(e.useMemo((()=>e=>o(J(e,"height"))),[o])),i=ro("context");return t?e.createElement(n,{ref:r},e.createElement(t,jt(t,i))):null}));function Zt({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"),m=n("horizontalDirection")||!1,{scrollerRef:f,scrollByCallback:h,scrollToCallback:g}=ee(s,a,c,u,void 0,m);o("scrollTo",g),o("scrollBy",h);const p=m?_t:Nt;return e.createElement(c,{ref:f,style:{...p,...r},"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...l,...jt(c,d)},i)}))}function Xt({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}=ee(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,...jt(c,f)},i)}))}const Jt=({children:t})=>{const o=e.useContext(Mt),n=no("viewportHeight"),r=no("fixedItemHeight"),i=ro("alignToBottom"),s=ro("horizontalDirection"),c=Y(e.useMemo((()=>l(n,(e=>J(e,s?"width":"height")))),[n,s]));return e.useEffect((()=>{o&&(n(o.viewportHeight),r(o.itemHeight))}),[o,n,r]),e.createElement("div",{style:Ut(i),ref:c,"data-viewport-type":"element"},t)},Qt=({children:t})=>{const o=e.useContext(Mt),n=no("windowViewportRect"),r=no("fixedItemHeight"),i=ro("customScrollParent"),l=Lt(n,i),s=ro("alignToBottom");return e.useEffect((()=>{o&&(r(o.itemHeight),n({offsetTop:0,visibleHeight:o.viewportHeight,visibleWidth:100}))}),[o,n,r]),e.createElement("div",{ref:l,style:Ut(s),"data-viewport-type":"window"},t)},eo=({children:t})=>{const o=ro("TopItemListComponent")||"div",n=ro("headerHeight"),r={...$t,marginTop:`${n}px`},i=ro("context");return e.createElement(o,{style:r,...jt(o,i)},t)},to=e.memo((function(t){const o=ro("useWindowScroll"),n=ro("topItemsIndexes").length>0,r=ro("customScrollParent"),i=r||o?so:lo,l=r||o?Qt:Jt;return e.createElement(i,{...t},n&&e.createElement(eo,null,e.createElement(Gt,{showTopList:!0})),e.createElement(l,null,e.createElement(qt,null),e.createElement(Gt,null),e.createElement(Yt,null)))})),{Component:oo,usePublisher:no,useEmitterValue:ro,useEmitter:io}=_(Ot,{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",horizontalDirection:"horizontalDirection"},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"}},to),lo=Zt({usePublisher:no,useEmitterValue:ro,useEmitter:io}),so=Xt({usePublisher:no,useEmitterValue:ro,useEmitter:io}),co=oo,ao=oo,uo={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},mo={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:fo,ceil:ho,floor:go,min:po,max:vo}=Math;function Io(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 xo(e,t){return e&&e.column===t.column&&e.row===t.row}function To(e,t){return e&&e.width===t.width&&e.height===t.height}const wo=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:L},W])=>{const F=C(0),D=C(0),G=C(uo),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(),X=C(!1),J=C(0),Q=C(!0),ee=C(!1),te=C(!1);p(y(h,O(J),R((([e,t])=>!!t))),(()=>{v(Q,!1),v(D,0)})),p(y(A(h,Q,_,N,J,ee),R((([e,t,o,n,,r])=>e&&!t&&0!==o.height&&0!==n.height&&!r))),(([,,,,e])=>{v(ee,!0),Ke(1,(()=>{v(U,e)})),w(y(n),(()=>{v(o,[0,0]),v(Q,!0)}))})),T(y(Z,R((e=>null!=e&&e.scrollTop>0)),k(0)),D),p(y(h,O(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(X,!0),w(y(n,M(1)),(e=>{v(X,!1)})),v(l,{top:e.scrollTop})))})),T(y(N,B((({height:e})=>e))),r),T(y(A(V(N,To),V(_,To),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(F),t,V(q,xo),V(_,To),V(N,To),V(K),V(D),V(X),V(Q),V(J)),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 uo;if(0===f){const t=qe(a,e);return function(e){return{...mo,items:e}}(Io(t,0===t?Math.max(s-1,0):t,l))}const g=Eo(h,f,d);let p,v;c?0===t&&0===o&&s>0?(p=0,v=s-1):(p=g*go((t+u)/(m+u)),v=g*ho((o+u)/(m+u))-1,v=po(e-1,vo(v,g-1)),p=po(v,vo(0,p))):(p=0,v=-1);const I=Io(p,v,l),{top:x,bottom:T}=So(i,n,r,I),w=ho(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))),F),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}=So(e,n,t,o);return[r,i]})),z(et)),o);const oe=C(!1);T(y(n,O(oe),B((([e,t])=>t||0!==e))),oe);const ne=E(y(V(G),R((({items:e})=>e.length>0)),O(F,oe),R((([{items:e},t,o])=>o&&e[e.length-1].index===t-1)),B((([,e])=>e-1)),z())),re=E(y(V(G),R((({items:e})=>e.length>0&&0===e[0].index)),k(0),z())),ie=E(y(V(G),O(X),R((([{items:e},t])=>e.length>0&&!t)),B((([{items:e}])=>({startIndex:e[0].index,endIndex:e[e.length-1].index}))),z(tt),P(0)));T(ie,m.scrollSeekRangeChanged),T(y(U,O(N,_,F,q),B((([e,t,o,n,r])=>{const i=De(e),{align:l,behavior:s,offset:c}=i;let a=i.index;"LAST"===a&&(a=n-1),a=vo(0,a,po(n-1,a));let u=Co(t,r,o,a);return"end"===l?u=fo(u-t.height+o.height):"center"===l&&(u=fo(u-t.height/2+o.height/2)),c&&(u+=c),{top:u,behavior:s}}))),l);const le=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:F,viewportDimensions:N,itemDimensions:_,scrollTop:n,scrollHeight:$,overscan:e,scrollBy:i,scrollTo:l,scrollToIndex:U,smoothScrollTargetReached:s,windowViewportRect:g,windowScrollTo:L,useWindowScroll:I,customScrollParent:x,windowScrollContainerState:b,deviation:j,scrollContainerState:c,footerHeight:a,headerHeight:u,initialItemCount:D,gap:q,restoreStateFrom:Z,...m,initialTopMostItemIndex:J,horizontalDirection:te,gridState:G,totalListHeight:le,...d,startReached:re,endReached:ne,rangeChanged:ie,stateChanged:Y,propsReady:f,stateRestoreInProgress:X,...W}}),d(st,te,$e,ht,je,St,K));function So(e,t,o,n){const{height:r}=o;if(void 0===r||0===n.length)return{top:0,bottom:0};return{top:Co(e,t,o,n[0].index),bottom:Co(e,t,o,n[n.length-1].index)+r}}function Co(e,t,o,n){const r=Eo(e.width,o.width,t.column),i=go(n/r),l=i*o.height+vo(0,i-1)*t.row;return l>0?l+t.row:l}function Eo(e,t,o){return vo(1,go((e+o)/(go(t)+o)))}const Ho=D((([e,t])=>({...e,...t})),d(wo,D((()=>{const e=C((e=>`Item ${e}`)),t=C({}),o=C(null),n=C("virtuoso-grid-item"),r=C("virtuoso-grid-list"),i=C(Wt),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")}})))),yo=e.memo((function(){const t=Po("gridState"),o=Po("listClassName"),n=Po("itemClassName"),r=Po("itemContent"),i=Po("computeItemKey"),l=Po("isSeeking"),s=Mo("scrollHeight"),c=Po("ItemComponent"),a=Po("ListComponent"),u=Po("ScrollSeekPlaceholder"),d=Po("context"),m=Mo("itemDimensions"),f=Mo("gap"),h=Po("log"),g=Po("stateRestoreInProgress"),p=Y(e.useMemo((()=>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:Vo("row-gap",getComputedStyle(e).rowGap,h),column:Vo("column-gap",getComputedStyle(e).columnGap,h)})}),[s,m,f,h]));return g?null:e.createElement(a,{ref:p,className:o,...jt(a,d),style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom},"data-testid":"virtuoso-item-list"},t.items.map((o=>{const s=i(o.index,o.data,d);return l?e.createElement(u,{key:s,...jt(u,d),index:o.index,height:t.itemHeight,width:t.itemWidth}):e.createElement(c,{...jt(c,d),className:n,"data-index":o.index,key:s},r(o.index,o.data,d))})))})),bo=e.memo((function(){const t=Po("HeaderComponent"),o=Mo("headerHeight"),n=Po("headerFooterTag"),r=Y(e.useMemo((()=>e=>o(J(e,"height"))),[o])),i=Po("context");return t?e.createElement(n,{ref:r},e.createElement(t,jt(t,i))):null})),zo=e.memo((function(){const t=Po("FooterComponent"),o=Mo("footerHeight"),n=Po("headerFooterTag"),r=Y(e.useMemo((()=>e=>o(J(e,"height"))),[o])),i=Po("context");return t?e.createElement(n,{ref:r},e.createElement(t,jt(t,i))):null})),Ro=({children:t})=>{const o=e.useContext(Pt),n=Mo("itemDimensions"),r=Mo("viewportDimensions"),i=Y(e.useMemo((()=>e=>{r(e.getBoundingClientRect())}),[r]));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:Ut(!1),ref:i},t)},Bo=({children:t})=>{const o=e.useContext(Pt),n=Mo("windowViewportRect"),r=Mo("itemDimensions"),i=Po("customScrollParent"),l=Lt(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:Ut(!1)},t)},ko=e.memo((function({...t}){const o=Po("useWindowScroll"),n=Po("customScrollParent"),r=n||o?Fo:Oo,i=n||o?Bo:Ro;return e.createElement(r,{...t},e.createElement(i,null,e.createElement(bo,null),e.createElement(yo,null),e.createElement(zo,null)))})),{Component:Lo,usePublisher:Mo,useEmitterValue:Po,useEmitter:Wo}=_(Ho,{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"}},ko),Oo=Zt({usePublisher:Mo,useEmitterValue:Po,useEmitter:Wo}),Fo=Xt({usePublisher:Mo,useEmitterValue:Po,useEmitter:Wo});function Vo(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 Ao=Lo,Do=D((([e,t])=>({...e,...t})),d(zt,D((()=>{const t=C((t=>e.createElement("td",null,"Item $",t))),o=C(null),n=C(null),r=C(null),i=C({}),l=C(Wt),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")}})))),Go=({height:t})=>e.createElement("tr",null,e.createElement("td",{style:{height:t}})),No=({height:t})=>e.createElement("tr",null,e.createElement("td",{style:{height:t,padding:0,border:0}})),_o={overflowAnchor:"none"},Uo=e.memo((function(){const t=Zo("listState"),o=Yo("sizeRanges"),n=Zo("useWindowScroll"),r=Zo("customScrollParent"),i=Yo("windowScrollContainerState"),l=Yo("scrollContainerState"),s=r||n?i:l,c=Zo("itemContent"),a=Zo("trackItemSizes"),u=Zo("itemSize"),d=Zo("log"),{callbackRef:m,ref:f}=Z(o,u,a,s,d,void 0,r),[h,g]=e.useState(0);Xo("deviation",(e=>{h!==e&&(f.current.style.marginTop=`${e}px`,g(e))}));const p=Zo("EmptyPlaceholder"),v=Zo("ScrollSeekPlaceholder")||Go,I=Zo("FillerRow")||No,x=Zo("TableBodyComponent"),T=Zo("TableRowComponent"),w=Zo("computeItemKey"),S=Zo("isSeeking"),C=Zo("paddingTopAddition"),E=Zo("firstItemIndex"),H=Zo("statefulTotalCount"),y=Zo("context");if(0===H&&p)return e.createElement(p,jt(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,{...jt(v,y),key:n,index:t.index,height:t.size,type:t.type||"item"}):e.createElement(T,{...jt(T,y),...Kt(T,t.data),key:n,"data-index":o,"data-known-size":t.size,"data-item-index":t.index,style:_o},c(t.index,t.data,y))}));return e.createElement(x,{ref:m,"data-testid":"virtuoso-item-list",...jt(x,y)},[R,...k,B])})),$o=({children:t})=>{const o=e.useContext(Mt),n=Yo("viewportHeight"),r=Yo("fixedItemHeight"),i=Y(e.useMemo((()=>l(n,(e=>J(e,"height")))),[n]));return e.useEffect((()=>{o&&(n(o.viewportHeight),r(o.itemHeight))}),[o,n,r]),e.createElement("div",{style:Ut(!1),ref:i,"data-viewport-type":"element"},t)},jo=({children:t})=>{const o=e.useContext(Mt),n=Yo("windowViewportRect"),r=Yo("fixedItemHeight"),i=Zo("customScrollParent"),l=Lt(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:Ut(!1),"data-viewport-type":"window"},t)},Ko=e.memo((function(t){const o=Zo("useWindowScroll"),n=Zo("customScrollParent"),r=Yo("fixedHeaderHeight"),i=Yo("fixedFooterHeight"),s=Zo("fixedHeaderContent"),c=Zo("fixedFooterContent"),a=Zo("context"),u=Y(e.useMemo((()=>l(r,(e=>J(e,"height")))),[r])),d=Y(e.useMemo((()=>l(i,(e=>J(e,"height")))),[i])),m=n||o?Qo:Jo,f=n||o?jo:$o,h=Zo("TableComponent"),g=Zo("TableHeadComponent"),p=Zo("TableFooterComponent"),v=s?e.createElement(g,{key:"TableHead",style:{zIndex:2,position:"sticky",top:0},ref:u,...jt(g,a)},s()):null,I=c?e.createElement(p,{key:"TableFoot",style:{zIndex:1,position:"sticky",bottom:0},ref:d,...jt(p,a)},c()):null;return e.createElement(m,{...t},e.createElement(f,null,e.createElement(h,{style:{borderSpacing:0,overflowAnchor:"none"},...jt(h,a)},[v,e.createElement(Uo,{key:"TableBody"}),I])))})),{Component:qo,usePublisher:Yo,useEmitterValue:Zo,useEmitter:Xo}=_(Do,{required:{},optional:{restoreStateFrom:"restoreStateFrom",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",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Ko),Jo=Zt({usePublisher:Yo,useEmitterValue:Zo,useEmitter:Xo}),Qo=Xt({usePublisher:Yo,useEmitterValue:Zo,useEmitter:Xo}),en=qo;exports.GroupedVirtuoso=ao,exports.LogLevel=$,exports.TableVirtuoso=en,exports.Virtuoso=co,exports.VirtuosoGrid=Ao,exports.VirtuosoGridMockContext=Pt,exports.VirtuosoMockContext=Mt;
|
package/dist/index.d.ts
CHANGED
|
@@ -1091,6 +1091,10 @@ export declare interface VirtuosoProps<D, C> extends ListRootProps {
|
|
|
1091
1091
|
* This is useful when you want to keep the list state when the component is unmounted and remounted, for example when navigating to a different page.
|
|
1092
1092
|
*/
|
|
1093
1093
|
restoreStateFrom?: StateSnapshot;
|
|
1094
|
+
/**
|
|
1095
|
+
* When set, turns the scroller into a horizontal list. The items are positioned with `inline-block`.
|
|
1096
|
+
*/
|
|
1097
|
+
horizontalDirection?: boolean;
|
|
1094
1098
|
}
|
|
1095
1099
|
|
|
1096
1100
|
export declare interface WindowViewportInfo {
|
package/dist/index.mjs
CHANGED
|
@@ -524,24 +524,26 @@ function useSizeWithElRef(callback, enabled = true) {
|
|
|
524
524
|
function useSize(callback, enabled = true) {
|
|
525
525
|
return useSizeWithElRef(callback, enabled).callbackRef;
|
|
526
526
|
}
|
|
527
|
-
function useChangedListContentsSizes(callback, itemSize, enabled, scrollContainerStateCallback, log, gap, customScrollParent) {
|
|
527
|
+
function useChangedListContentsSizes(callback, itemSize, enabled, scrollContainerStateCallback, log, gap, customScrollParent, horizontalDirection) {
|
|
528
528
|
const memoedCallback = React.useCallback(
|
|
529
529
|
(el) => {
|
|
530
|
-
const ranges = getChangedChildSizes(el.children, itemSize, "offsetHeight", log);
|
|
530
|
+
const ranges = getChangedChildSizes(el.children, itemSize, horizontalDirection ? "offsetWidth" : "offsetHeight", log);
|
|
531
531
|
let scrollableElement = el.parentElement;
|
|
532
532
|
while (!scrollableElement.dataset["virtuosoScroller"]) {
|
|
533
533
|
scrollableElement = scrollableElement.parentElement;
|
|
534
534
|
}
|
|
535
535
|
const windowScrolling = scrollableElement.lastElementChild.dataset["viewportType"] === "window";
|
|
536
|
-
const scrollTop = customScrollParent ? customScrollParent.scrollTop : windowScrolling ? window.pageYOffset || document.documentElement.scrollTop : scrollableElement.scrollTop;
|
|
537
|
-
const scrollHeight = customScrollParent ? customScrollParent.scrollHeight : windowScrolling ? document.documentElement.scrollHeight : scrollableElement.scrollHeight;
|
|
538
|
-
const viewportHeight = customScrollParent ? customScrollParent.offsetHeight : windowScrolling ? window.innerHeight : scrollableElement.offsetHeight;
|
|
536
|
+
const scrollTop = customScrollParent ? horizontalDirection ? customScrollParent.scrollLeft : customScrollParent.scrollTop : windowScrolling ? horizontalDirection ? window.pageXOffset || document.documentElement.scrollLeft : window.pageYOffset || document.documentElement.scrollTop : horizontalDirection ? scrollableElement.scrollLeft : scrollableElement.scrollTop;
|
|
537
|
+
const scrollHeight = customScrollParent ? horizontalDirection ? customScrollParent.scrollWidth : customScrollParent.scrollHeight : windowScrolling ? horizontalDirection ? document.documentElement.scrollWidth : document.documentElement.scrollHeight : horizontalDirection ? scrollableElement.scrollWidth : scrollableElement.scrollHeight;
|
|
538
|
+
const viewportHeight = customScrollParent ? horizontalDirection ? customScrollParent.offsetWidth : customScrollParent.offsetHeight : windowScrolling ? horizontalDirection ? window.innerWidth : window.innerHeight : horizontalDirection ? scrollableElement.offsetWidth : scrollableElement.offsetHeight;
|
|
539
539
|
scrollContainerStateCallback({
|
|
540
540
|
scrollTop: Math.max(scrollTop, 0),
|
|
541
541
|
scrollHeight,
|
|
542
542
|
viewportHeight
|
|
543
543
|
});
|
|
544
|
-
gap == null ? void 0 : gap(
|
|
544
|
+
gap == null ? void 0 : gap(
|
|
545
|
+
horizontalDirection ? resolveGapValue$1("column-gap", getComputedStyle(el).columnGap, log) : resolveGapValue$1("row-gap", getComputedStyle(el).rowGap, log)
|
|
546
|
+
);
|
|
545
547
|
if (ranges !== null) {
|
|
546
548
|
callback(ranges);
|
|
547
549
|
}
|
|
@@ -594,7 +596,7 @@ function correctItemSize(el, dimension) {
|
|
|
594
596
|
function approximatelyEqual(num1, num2) {
|
|
595
597
|
return Math.abs(num1 - num2) < 1.01;
|
|
596
598
|
}
|
|
597
|
-
function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, scrollerElement, scrollerRefCallback = noop, customScrollParent) {
|
|
599
|
+
function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, scrollerElement, scrollerRefCallback = noop, customScrollParent, horizontalDirection) {
|
|
598
600
|
const scrollerRef = React.useRef(null);
|
|
599
601
|
const scrollTopTarget = React.useRef(null);
|
|
600
602
|
const timeoutRef = React.useRef(null);
|
|
@@ -602,9 +604,9 @@ function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, s
|
|
|
602
604
|
(ev) => {
|
|
603
605
|
const el = ev.target;
|
|
604
606
|
const windowScroll = el === window || el === document;
|
|
605
|
-
const scrollTop = windowScroll ? window.pageYOffset || document.documentElement.scrollTop : el.scrollTop;
|
|
606
|
-
const scrollHeight = windowScroll ? document.documentElement.scrollHeight : el.scrollHeight;
|
|
607
|
-
const viewportHeight = windowScroll ? window.innerHeight : el.offsetHeight;
|
|
607
|
+
const scrollTop = horizontalDirection ? windowScroll ? window.pageXOffset || document.documentElement.scrollLeft : el.scrollLeft : windowScroll ? window.pageYOffset || document.documentElement.scrollTop : el.scrollTop;
|
|
608
|
+
const scrollHeight = horizontalDirection ? windowScroll ? document.documentElement.scrollWidth : el.scrollWidth : windowScroll ? document.documentElement.scrollHeight : el.scrollHeight;
|
|
609
|
+
const viewportHeight = horizontalDirection ? windowScroll ? window.innerWidth : el.offsetWidth : windowScroll ? window.innerHeight : el.offsetHeight;
|
|
608
610
|
const call2 = () => {
|
|
609
611
|
scrollContainerStateCallback({
|
|
610
612
|
scrollTop: Math.max(scrollTop, 0),
|
|
@@ -642,7 +644,7 @@ function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, s
|
|
|
642
644
|
}, [scrollerRef, handler, scrollerElement, scrollerRefCallback, customScrollParent]);
|
|
643
645
|
function scrollToCallback(location) {
|
|
644
646
|
const scrollerElement2 = scrollerRef.current;
|
|
645
|
-
if (!scrollerElement2 || "offsetHeight" in scrollerElement2 && scrollerElement2.offsetHeight === 0) {
|
|
647
|
+
if (!scrollerElement2 || (horizontalDirection ? "offsetWidth" in scrollerElement2 && scrollerElement2.offsetWidth === 0 : "offsetHeight" in scrollerElement2 && scrollerElement2.offsetHeight === 0)) {
|
|
646
648
|
return;
|
|
647
649
|
}
|
|
648
650
|
const isSmooth = location.behavior === "smooth";
|
|
@@ -650,13 +652,16 @@ function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, s
|
|
|
650
652
|
let scrollHeight;
|
|
651
653
|
let scrollTop;
|
|
652
654
|
if (scrollerElement2 === window) {
|
|
653
|
-
scrollHeight = Math.max(
|
|
654
|
-
|
|
655
|
-
|
|
655
|
+
scrollHeight = Math.max(
|
|
656
|
+
correctItemSize(document.documentElement, horizontalDirection ? "width" : "height"),
|
|
657
|
+
horizontalDirection ? document.documentElement.scrollWidth : document.documentElement.scrollHeight
|
|
658
|
+
);
|
|
659
|
+
offsetHeight = horizontalDirection ? window.innerWidth : window.innerHeight;
|
|
660
|
+
scrollTop = horizontalDirection ? document.documentElement.scrollLeft : document.documentElement.scrollTop;
|
|
656
661
|
} else {
|
|
657
|
-
scrollHeight = scrollerElement2
|
|
658
|
-
offsetHeight = correctItemSize(scrollerElement2, "height");
|
|
659
|
-
scrollTop = scrollerElement2
|
|
662
|
+
scrollHeight = scrollerElement2[horizontalDirection ? "scrollWidth" : "scrollHeight"];
|
|
663
|
+
offsetHeight = correctItemSize(scrollerElement2, horizontalDirection ? "width" : "height");
|
|
664
|
+
scrollTop = scrollerElement2[horizontalDirection ? "scrollLeft" : "scrollTop"];
|
|
660
665
|
}
|
|
661
666
|
const maxScrollTop = scrollHeight - offsetHeight;
|
|
662
667
|
location.top = Math.ceil(Math.max(Math.min(maxScrollTop, location.top), 0));
|
|
@@ -680,9 +685,15 @@ function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, s
|
|
|
680
685
|
} else {
|
|
681
686
|
scrollTopTarget.current = null;
|
|
682
687
|
}
|
|
688
|
+
if (horizontalDirection) {
|
|
689
|
+
location = { left: location.top, behavior: location.behavior };
|
|
690
|
+
}
|
|
683
691
|
scrollerElement2.scrollTo(location);
|
|
684
692
|
}
|
|
685
693
|
function scrollByCallback(location) {
|
|
694
|
+
if (horizontalDirection) {
|
|
695
|
+
location = { left: location.top, behavior: location.behavior };
|
|
696
|
+
}
|
|
686
697
|
scrollerRef.current.scrollBy(location);
|
|
687
698
|
}
|
|
688
699
|
return { scrollerRef, scrollByCallback, scrollToCallback };
|
|
@@ -703,6 +714,7 @@ const domIOSystem = system(
|
|
|
703
714
|
const scrollTo = stream();
|
|
704
715
|
const scrollBy = stream();
|
|
705
716
|
const scrollingInProgress = statefulStream(false);
|
|
717
|
+
const horizontalDirection = statefulStream(false);
|
|
706
718
|
connect(
|
|
707
719
|
pipe(
|
|
708
720
|
scrollContainerState,
|
|
@@ -729,6 +741,7 @@ const domIOSystem = system(
|
|
|
729
741
|
footerHeight,
|
|
730
742
|
scrollHeight,
|
|
731
743
|
smoothScrollTargetReached,
|
|
744
|
+
horizontalDirection,
|
|
732
745
|
// signals
|
|
733
746
|
scrollTo,
|
|
734
747
|
scrollBy,
|
|
@@ -3106,6 +3119,7 @@ const combinedSystem$2 = /* @__PURE__ */ system(([listSystem2, propsSystem]) =>
|
|
|
3106
3119
|
const DefaultScrollSeekPlaceholder$1 = ({ height }) => /* @__PURE__ */ React.createElement("div", { style: { height } });
|
|
3107
3120
|
const GROUP_STYLE = { position: positionStickyCssValue(), zIndex: 1, overflowAnchor: "none" };
|
|
3108
3121
|
const ITEM_STYLE$1 = { overflowAnchor: "none" };
|
|
3122
|
+
const HORIZONTAL_ITEM_STYLE = { ...ITEM_STYLE$1, display: "inline-block", height: "100%" };
|
|
3109
3123
|
const Items$1 = /* @__PURE__ */ React.memo(function VirtuosoItems({ showTopList = false }) {
|
|
3110
3124
|
const listState = useEmitterValue$2("listState");
|
|
3111
3125
|
const sizeRanges = usePublisher$2("sizeRanges");
|
|
@@ -3121,6 +3135,7 @@ const Items$1 = /* @__PURE__ */ React.memo(function VirtuosoItems({ showTopList
|
|
|
3121
3135
|
const itemSize = useEmitterValue$2("itemSize");
|
|
3122
3136
|
const log = useEmitterValue$2("log");
|
|
3123
3137
|
const listGap = usePublisher$2("gap");
|
|
3138
|
+
const horizontalDirection = useEmitterValue$2("horizontalDirection");
|
|
3124
3139
|
const { callbackRef } = useChangedListContentsSizes(
|
|
3125
3140
|
sizeRanges,
|
|
3126
3141
|
itemSize,
|
|
@@ -3128,7 +3143,8 @@ const Items$1 = /* @__PURE__ */ React.memo(function VirtuosoItems({ showTopList
|
|
|
3128
3143
|
showTopList ? noop : scrollContainerStateCallback,
|
|
3129
3144
|
log,
|
|
3130
3145
|
listGap,
|
|
3131
|
-
customScrollParent
|
|
3146
|
+
customScrollParent,
|
|
3147
|
+
horizontalDirection
|
|
3132
3148
|
);
|
|
3133
3149
|
const [deviation, setDeviation] = React.useState(0);
|
|
3134
3150
|
useEmitter$2("deviation", (value) => {
|
|
@@ -3148,9 +3164,18 @@ const Items$1 = /* @__PURE__ */ React.memo(function VirtuosoItems({ showTopList
|
|
|
3148
3164
|
const initialItemFinalLocationReached = useEmitterValue$2("initialItemFinalLocationReached");
|
|
3149
3165
|
const containerStyle = showTopList ? {} : {
|
|
3150
3166
|
boxSizing: "border-box",
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3167
|
+
...horizontalDirection ? {
|
|
3168
|
+
whiteSpace: "nowrap",
|
|
3169
|
+
display: "inline-block",
|
|
3170
|
+
height: "100%",
|
|
3171
|
+
paddingLeft: listState.offsetTop,
|
|
3172
|
+
paddingRight: listState.offsetBottom,
|
|
3173
|
+
marginLeft: deviation !== 0 ? deviation : alignToBottom ? "auto" : 0
|
|
3174
|
+
} : {
|
|
3175
|
+
marginTop: deviation !== 0 ? deviation : alignToBottom ? "auto" : 0,
|
|
3176
|
+
paddingTop: listState.offsetTop,
|
|
3177
|
+
paddingBottom: listState.offsetBottom
|
|
3178
|
+
},
|
|
3154
3179
|
...initialItemFinalLocationReached ? {} : { visibility: "hidden" }
|
|
3155
3180
|
};
|
|
3156
3181
|
if (!showTopList && listState.totalCount === 0 && EmptyPlaceholder) {
|
|
@@ -3201,7 +3226,7 @@ const Items$1 = /* @__PURE__ */ React.memo(function VirtuosoItems({ showTopList
|
|
|
3201
3226
|
"data-known-size": item.size,
|
|
3202
3227
|
"data-item-index": item.index,
|
|
3203
3228
|
"data-item-group-index": item.groupIndex,
|
|
3204
|
-
style: ITEM_STYLE$1
|
|
3229
|
+
style: horizontalDirection ? HORIZONTAL_ITEM_STYLE : ITEM_STYLE$1
|
|
3205
3230
|
},
|
|
3206
3231
|
hasGroups2 ? itemContent(item.index, item.groupIndex, item.data, context) : itemContent(item.index, item.data, context)
|
|
3207
3232
|
);
|
|
@@ -3216,6 +3241,11 @@ const scrollerStyle = {
|
|
|
3216
3241
|
position: "relative",
|
|
3217
3242
|
WebkitOverflowScrolling: "touch"
|
|
3218
3243
|
};
|
|
3244
|
+
const horizontalScrollerStyle = {
|
|
3245
|
+
outline: "none",
|
|
3246
|
+
overflowX: "auto",
|
|
3247
|
+
position: "relative"
|
|
3248
|
+
};
|
|
3219
3249
|
const viewportStyle = (alignToBottom) => ({
|
|
3220
3250
|
width: "100%",
|
|
3221
3251
|
height: "100%",
|
|
@@ -3261,19 +3291,23 @@ function buildScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, u
|
|
|
3261
3291
|
const smoothScrollTargetReached = usePublisher2("smoothScrollTargetReached");
|
|
3262
3292
|
const scrollerRefCallback = useEmitterValue2("scrollerRef");
|
|
3263
3293
|
const context = useEmitterValue2("context");
|
|
3294
|
+
const horizontalDirection = useEmitterValue2("horizontalDirection") || false;
|
|
3264
3295
|
const { scrollerRef, scrollByCallback, scrollToCallback } = useScrollTop(
|
|
3265
3296
|
scrollContainerStateCallback,
|
|
3266
3297
|
smoothScrollTargetReached,
|
|
3267
3298
|
ScrollerComponent,
|
|
3268
|
-
scrollerRefCallback
|
|
3299
|
+
scrollerRefCallback,
|
|
3300
|
+
void 0,
|
|
3301
|
+
horizontalDirection
|
|
3269
3302
|
);
|
|
3270
3303
|
useEmitter2("scrollTo", scrollToCallback);
|
|
3271
3304
|
useEmitter2("scrollBy", scrollByCallback);
|
|
3305
|
+
const defaultStyle = horizontalDirection ? horizontalScrollerStyle : scrollerStyle;
|
|
3272
3306
|
return React.createElement(
|
|
3273
3307
|
ScrollerComponent,
|
|
3274
3308
|
{
|
|
3275
3309
|
ref: scrollerRef,
|
|
3276
|
-
style: { ...
|
|
3310
|
+
style: { ...defaultStyle, ...style },
|
|
3277
3311
|
"data-testid": "virtuoso-scroller",
|
|
3278
3312
|
"data-virtuoso-scroller": true,
|
|
3279
3313
|
tabIndex: 0,
|
|
@@ -3327,7 +3361,12 @@ const Viewport$2 = ({ children }) => {
|
|
|
3327
3361
|
const viewportHeight = usePublisher$2("viewportHeight");
|
|
3328
3362
|
const fixedItemHeight = usePublisher$2("fixedItemHeight");
|
|
3329
3363
|
const alignToBottom = useEmitterValue$2("alignToBottom");
|
|
3330
|
-
const
|
|
3364
|
+
const horizontalDirection = useEmitterValue$2("horizontalDirection");
|
|
3365
|
+
const viewportSizeCallbackMemo = React.useMemo(
|
|
3366
|
+
() => compose(viewportHeight, (el) => correctItemSize(el, horizontalDirection ? "width" : "height")),
|
|
3367
|
+
[viewportHeight, horizontalDirection]
|
|
3368
|
+
);
|
|
3369
|
+
const viewportRef = useSize(viewportSizeCallbackMemo);
|
|
3331
3370
|
React.useEffect(() => {
|
|
3332
3371
|
if (ctx) {
|
|
3333
3372
|
viewportHeight(ctx.viewportHeight);
|
|
@@ -3404,7 +3443,8 @@ const {
|
|
|
3404
3443
|
useWindowScroll: "useWindowScroll",
|
|
3405
3444
|
customScrollParent: "customScrollParent",
|
|
3406
3445
|
scrollerRef: "scrollerRef",
|
|
3407
|
-
logLevel: "logLevel"
|
|
3446
|
+
logLevel: "logLevel",
|
|
3447
|
+
horizontalDirection: "horizontalDirection"
|
|
3408
3448
|
},
|
|
3409
3449
|
methods: {
|
|
3410
3450
|
scrollToIndex: "scrollToIndex",
|
|
@@ -3495,6 +3535,7 @@ const gridSystem = /* @__PURE__ */ system(
|
|
|
3495
3535
|
const initialTopMostItemIndex = statefulStream(0);
|
|
3496
3536
|
const scrolledToInitialItem = statefulStream(true);
|
|
3497
3537
|
const scrollScheduled = statefulStream(false);
|
|
3538
|
+
const horizontalDirection = statefulStream(false);
|
|
3498
3539
|
subscribe(
|
|
3499
3540
|
pipe(
|
|
3500
3541
|
didMount,
|
|
@@ -3783,6 +3824,7 @@ const gridSystem = /* @__PURE__ */ system(
|
|
|
3783
3824
|
restoreStateFrom,
|
|
3784
3825
|
...scrollSeek,
|
|
3785
3826
|
initialTopMostItemIndex,
|
|
3827
|
+
horizontalDirection,
|
|
3786
3828
|
// output
|
|
3787
3829
|
gridState,
|
|
3788
3830
|
totalListHeight,
|