react-virtuoso 4.0.1 → 4.0.2

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 CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("react"),o=require("react-dom");function n(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const o in e)if("default"!==o){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>e[o]})}return t.default=e,Object.freeze(t)}const r=n(t);function i(e,t){return o=>e(t(o))}function l(e,t){return t(e)}function s(e,t){return o=>e(t,o)}function c(e,t){return()=>e(t)}function a(e,t){return t(e),e}function u(...e){return e}function d(e){e()}function f(e){return()=>e}function h(){}function m(e,t){return e(1,t)}function g(e,t){e(0,t)}function p(e){e(2)}function x(e){return e(4)}function v(e,t){return m(e,s(t,0))}function I(e,t){const o=e(1,(e=>{o(),t(e)}));return o}function T(){const e=[];return(t,o)=>{switch(t){case 2:return void e.splice(0,e.length);case 1:return e.push(o),()=>{const t=e.indexOf(o);t>-1&&e.splice(t,1)};case 0:return void e.slice().forEach((e=>{e(o)}));default:throw new Error(`unrecognized action ${t}`)}}}function w(e){let t=e;const o=T();return(e,n)=>{switch(e){case 1:n(t);break;case 0:t=n;break;case 4:return t}return o(e,n)}}function C(e){return a(T(),(t=>v(e,t)))}function S(e,t){return a(w(t),(t=>v(e,t)))}function H(e,...t){const o=function(...e){return t=>e.reduceRight(l,t)}(...t);return(t,n)=>{switch(t){case 1:return m(e,o(n));case 2:return void p(e)}}}function y(e,t){return e===t}function b(e=y){let t;return o=>n=>{e(t,n)||(t=n,o(n))}}function E(e){return t=>o=>{e(o)&&t(o)}}function R(e){return t=>i(t,e)}function z(e){return t=>()=>t(e)}function B(e,t){return o=>n=>o(t=e(t,n))}function k(e){return t=>o=>{e>0?e--:t(o)}}function P(e){let t,o;return n=>r=>{t=r,o||(o=setTimeout((()=>{o=void 0,n(t)}),e))}}function O(e){let t,o;return n=>r=>{t=r,o&&clearTimeout(o),o=setTimeout((()=>{n(t)}),e)}}function L(...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);m(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 M(...e){return function(t,o){switch(t){case 1:return function(...e){return()=>{e.map(d)}}(...e.map((e=>m(e,o))));case 2:return;default:throw new Error(`unrecognized action ${t}`)}}}function W(e,t=y){return H(e,b(t))}function j(...e){const t=T(),o=new Array(e.length);let n=0;const r=Math.pow(2,e.length)-1;return e.forEach(((e,i)=>{const l=Math.pow(2,i);m(e,(e=>{o[i]=e,n|=l,n===r&&g(t,o)}))})),function(e,i){switch(e){case 1:return n===r&&i(o),m(t,i);case 2:return p(t);default:throw new Error(`unrecognized action ${e}`)}}}function V(e,t=[],{singleton:o}={singleton:!0}){return{id:F(),constructor:e,dependencies:t,singleton:o}}const F=()=>Symbol();const A="undefined"!=typeof document?r.useLayoutEffect:r.useEffect;function D(e,o,n){const i=Object.keys(o.required||{}),l=Object.keys(o.optional||{}),u=Object.keys(o.methods||{}),d=Object.keys(o.events||{}),v=t.createContext({});function I(e,t){e.propsReady&&g(e.propsReady,!1);for(const n of i){g(e[o.required[n]],t[n])}for(const n of l)if(n in t){g(e[o.optional[n]],t[n])}e.propsReady&&g(e.propsReady,!0)}function T(e){return d.reduce(((t,n)=>(t[n]=function(e){let t,o;const n=()=>t&&t();return function(r,i){switch(r){case 1:if(i){if(o===i)return;return n(),o=i,t=m(e,i),t}return n(),h;case 2:return n(),void(o=null);default:throw new Error(`unrecognized action ${r}`)}}}(e[o.events[n]]),t)),{})}const w=t.forwardRef(((r,s)=>{const{children:h,...x}=r,[w]=t.useState((()=>a(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)}(e),(e=>I(e,x))))),[C]=t.useState(c(T,w));return A((()=>{for(const e of d)e in x&&m(C[e],x[e]);return()=>{Object.values(C).map(p)}}),[x,C,w]),A((()=>{I(w,x)})),t.useImperativeHandle(s,f(function(e){return u.reduce(((t,n)=>(t[n]=t=>{g(e[o.methods[n]],t)},t)),{})}(w))),t.createElement(v.Provider,{value:w},n?t.createElement(n,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}([...i,...l,...d],x),h):h)}));return{Component:w,usePublisher:e=>t.useCallback(s(g,r.useContext(v)[e]),[e]),useEmitterValue:e=>{const o=t.useContext(v)[e],[n,r]=t.useState(c(x,o));return A((()=>m(o,(e=>{e!==n&&r(f(e))}))),[o,n]),n},useEmitter:(e,o)=>{const n=t.useContext(v)[e];A((()=>m(n,o)),[o,n])}}}const G="undefined"!=typeof document?t.useLayoutEffect:t.useEffect;var N=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(N||{});const _={0:"debug",1:"log",2:"warn",3:"error"},U=V((()=>{const e=w(3);return{log:w(((t,o,n=1)=>{n>=(("undefined"==typeof globalThis?window:globalThis).VIRTUOSO_LOG_LEVEL??x(e))&&console[_[n]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",t,o)})),logLevel:e}}),[],{singleton:!0});function $(e,o=!0){const n=t.useRef(null);let r=e=>{};if("undefined"!=typeof ResizeObserver){const t=new ResizeObserver((t=>{const o=t[0].target;null!==o.offsetParent&&e(o)}));r=e=>{e&&o?(t.observe(e),n.current=e):(n.current&&t.unobserve(n.current),n.current=null)}}return{ref:n,callbackRef:r}}function K(e,t=!0){return $(e,t).callbackRef}function q(e,t,o,n,r,i,l){return $((o=>{const s=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},N.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}(o.children,t,"offsetHeight",r);let c=o.parentElement;for(;!c.dataset.virtuosoScroller;)c=c.parentElement;const a="window"===c.firstElementChild.dataset.viewportType,u=l?l.scrollTop:a?window.pageYOffset||document.documentElement.scrollTop:c.scrollTop,d=l?l.scrollHeight:a?document.documentElement.scrollHeight:c.scrollHeight,f=l?l.offsetHeight:a?window.innerHeight:c.offsetHeight;n({scrollTop:Math.max(u,0),scrollHeight:d,viewportHeight:f}),null==i||i(function(e,t,o){"normal"===t||(null==t?void 0:t.endsWith("px"))||o(`${e} was not resolved to pixel value correctly`,t,N.WARN);if("normal"===t)return 0;return parseInt(t??"0",10)}("row-gap",getComputedStyle(o).rowGap,r)),null!==s&&e(s)}),o)}function Y(e,t){return Math.round(e.getBoundingClientRect()[t])}function Z(e,t){return Math.abs(e-t)<1.01}function J(e,n,r,i=h,l){const s=t.useRef(null),c=t.useRef(null),a=t.useRef(null),u=t.useCallback((t=>{const r=t.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=()=>{e({scrollTop:Math.max(l,0),scrollHeight:s,viewportHeight:u})};t.suppressFlushSync?d():o.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))}),[e,n]);return t.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(t){const o=s.current;if(!o||"offsetHeight"in o&&0===o.offsetHeight)return;const r="smooth"===t.behavior;let i,l,u;o===window?(l=Math.max(Y(document.documentElement,"height"),document.documentElement.scrollHeight),i=window.innerHeight,u=document.documentElement.scrollTop):(l=o.scrollHeight,i=Y(o,"height"),u=o.scrollTop);const d=l-i;if(t.top=Math.ceil(Math.max(Math.min(d,t.top),0)),Z(i,l)||t.top===u)return e({scrollTop:u,scrollHeight:l,viewportHeight:i}),void(r&&n(!0));r?(c.current=t.top,a.current&&clearTimeout(a.current),a.current=setTimeout((()=>{a.current=null,c.current=null,n(!0)}),1e3)):c.current=null,o.scrollTo(t)}}}const Q=V((()=>{const e=T(),t=T(),o=w(0),n=T(),r=w(0),i=T(),l=T(),s=w(0),c=w(0),a=w(0),u=w(0),d=T(),f=T(),h=w(!1);return v(H(e,R((({scrollTop:e})=>e))),t),v(H(e,R((({scrollHeight:e})=>e))),l),v(t,r),{scrollContainerState:e,scrollTop:t,viewportHeight:i,headerHeight:s,fixedHeaderHeight:c,fixedFooterHeight:a,footerHeight:u,scrollHeight:l,smoothScrollTargetReached:n,scrollTo:d,scrollBy:f,statefulScrollTop:r,deviation:o,scrollingInProgress:h}}),[],{singleton:!0}),X={lvl:0};function ee(e,t,o,n=X,r=X){return{k:e,v:t,lvl:o,l:n,r:r}}function te(e){return e===X}function oe(){return X}function ne(e,t){if(te(e))return X;const{k:o,l:n,r:r}=e;if(t===o){if(te(n))return r;if(te(r))return n;{const[t,o]=ce(n);return he(ue(e,{k:t,v:o,l:ae(n)}))}}return he(ue(e,t<o?{l:ne(n,t)}:{r:ne(r,t)}))}function re(e,t,o="k"){if(te(e))return[-1/0,void 0];if(e[o]===t)return[e.k,e.v];if(e[o]<t){const n=re(e.r,t,o);return n[0]===-1/0?[e.k,e.v]:n}return re(e.l,t,o)}function ie(e,t,o){return te(e)?ee(t,o,1):t===e.k?ue(e,{k:t,v:o}):t<e.k?fe(ue(e,{l:ie(e.l,t,o)})):fe(ue(e,{r:ie(e.r,t,o)}))}function le(e,t,o){if(te(e))return[];const{k:n,v:r,l:i,r:l}=e;let s=[];return n>t&&(s=s.concat(le(i,t,o))),n>=t&&n<=o&&s.push({k:n,v:r}),n<=o&&(s=s.concat(le(l,t,o))),s}function se(e){return te(e)?[]:[...se(e.l),{k:e.k,v:e.v},...se(e.r)]}function ce(e){return te(e.r)?[e.k,e.v]:ce(e.r)}function ae(e){return te(e.r)?e.l:he(ue(e,{r:ae(e.r)}))}function ue(e,t){return ee(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 de(e){return te(e)||e.lvl>e.r.lvl}function fe(e){return pe(xe(e))}function he(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(de(t))return xe(ue(e,{lvl:n-1}));if(te(t)||te(t.r))throw new Error("Unexpected empty nodes");return ue(t.r,{l:ue(t,{r:t.r.l}),r:ue(e,{l:t.r.r,lvl:n-1}),lvl:n})}if(de(e))return pe(ue(e,{lvl:n-1}));if(te(o)||te(o.l))throw new Error("Unexpected empty nodes");{const t=o.l,r=de(t)?o.lvl-1:o.lvl;return ue(t,{l:ue(e,{r:t.l,lvl:n-1}),r:pe(ue(o,{l:t.r,lvl:r})),lvl:t.lvl+1})}}function me(e,t,o){if(te(e))return[];const n=re(e,t)[0];return ge(le(e,n,o),(({k:e,v:t})=>({index:e,value:t})))}function ge(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 pe(e){const{r:t,lvl:o}=e;return te(t)||te(t.r)||t.lvl!==o||t.r.lvl!==o?e:ue(t,{l:ue(e,{r:t.l}),lvl:o+1})}function xe(e){const{l:t}=e;return te(t)||t.lvl!==e.lvl?e:ue(t,{r:ue(e,{l:t.r})})}function ve(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 Ie(e,t,o){return e[ve(e,t,o)]}const Te=V((()=>({recalcInProgress:w(!1)})),[],{singleton:!0});function we(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 Ce({index:e},t){return t===e?0:t<e?-1:1}function Se({offset:e},t){return t===e?0:t<e?-1:1}function He(e){return{index:e.index,value:e}}function ye(e,t,o,n=0){return n>0&&(t=Math.max(t,Ie(e,n,Ce).offset)),ge(function(e,t,o,n){const r=ve(e,t,n),i=ve(e,o,n,r);return e.slice(r,i+1)}(e,t,o,Se),He)}function be(e,t,o,n){let r=e,i=0,l=0,s=0,c=0;if(0!==t){c=ve(r,t-1,Ce);s=r[c].offset;const e=re(o,t-1);i=e[0],l=e[1],r.length&&r[c].size===re(o,t)[1]&&(c-=1),r=r.slice(0,c+1)}else r=[];for(const{start:a,value:u}of me(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 Ee(e,[t,o,n,r]){t.length>0&&n("received item sizes",t,N.DEBUG);const i=e.sizeTree;let l=i,s=0;if(o.length>0&&te(i)&&2===t.length){const e=t[0].size,n=t[1].size;l=o.reduce(((t,o)=>ie(ie(t,o,e),o+1,n)),l)}else[l,s]=function(e,t){let o=te(e)?0:1/0;for(const n of t){const{size:t,startIndex:r,endIndex:i}=n;if(o=Math.min(o,r),te(e)){e=ie(e,0,t);continue}const l=me(e,r-1,i+1);if(l.some(we(n)))continue;let s=!1,c=!1;for(const{start:o,end:n,value:a}of l)s?(i>=o||t===a)&&(e=ne(e,o)):(c=a!==t,s=!0),n>i&&i>=o&&a!==t&&(e=ie(e,i+1,a));c&&(e=ie(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)=>ie(e,t,Re(t,c,r))),oe()),groupIndices:o}}function Re(e,t,o){if(0===t.length)return 0;const{offset:n,index:r,size:i}=Ie(t,e,Ce),l=e-r,s=i*l+(l-1)*o+n;return s>0?s+o:s}function ze(e,t,o){if(function(e){return void 0!==e.groupIndex}(e))return t.groupIndices[e.groupIndex]+1;{let n=Be("LAST"===e.index?o:e.index,t);return n=Math.max(0,n,Math.min(o,n)),n}}function Be(e,t){if(!ke(t))return e;let o=0;for(;t.groupIndices[o]<=e+o;)o++;return e+o}function ke(e){return!te(e.groupOffsetTree)}const Pe={offsetHeight:"height",offsetWidth:"width"},Oe=V((([{log:e},{recalcInProgress:t}])=>{const o=T(),n=T(),r=S(n,0),i=T(),l=T(),s=w(0),c=w([]),a=w(void 0),u=w(void 0),d=w(((e,t)=>Y(e,Pe[t]))),f=w(void 0),h=w(0),p={offsetTree:[],sizeTree:oe(),groupOffsetTree:oe(),lastIndex:0,lastOffset:0,lastSize:0,groupIndices:[]},I=S(H(o,L(c,e,h),B(Ee,p),b()),p);v(H(c,E((e=>e.length>0)),L(I,h),R((([e,t,o])=>{const n=e.reduce(((e,n,r)=>ie(e,n,Re(n,t.offsetTree,o)||r)),oe());return{...t,groupIndices:e,groupOffsetTree:n}}))),I),v(H(n,L(I),E((([e,{lastIndex:t}])=>e<t)),R((([e,{lastIndex:t,lastSize:o}])=>[{startIndex:e,endIndex:t,size:o}]))),o),v(a,u);const y=S(H(a,R((e=>void 0===e))),!0);v(H(u,E((e=>void 0!==e&&te(x(I).sizeTree))),R((e=>[{startIndex:0,endIndex:0,size:e}]))),o);const z=C(H(o,L(I),B((({sizes:e},[t,o])=>({changed:o!==e,sizes:o})),{changed:!1,sizes:p}),R((e=>e.changed))));m(H(s,B(((e,t)=>({diff:e.prev-t,prev:t})),{diff:0,prev:0}),R((e=>e.diff))),(e=>{e>0?(g(t,!0),g(i,e)):e<0&&g(l,e)})),m(H(s,L(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},N.ERROR)}));const k=C(i);v(H(i,L(I),R((([e,t])=>{if(t.groupIndices.length>0)throw new Error("Virtuoso: prepending items does not work with groups");return se(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:t.lastSize}).ranges}))),o);const P=C(H(l,L(I,h),R((([e,{offsetTree:t},o])=>Re(-e,t,o)))));return v(H(l,L(I,h),R((([e,t,o])=>{if(t.groupIndices.length>0)throw new Error("Virtuoso: shifting items does not work with groups");const n=se(t.sizeTree).reduce(((t,{k:o,v:n})=>ie(t,Math.max(0,o+e),n)),oe());return{...t,sizeTree:n,...be(t.offsetTree,0,n,o)}}))),I),{data:f,totalCount:n,sizeRanges:o,groupIndices:c,defaultItemSize:u,fixedItemSize:a,unshiftWith:i,shiftWith:l,shiftWithOffset:P,beforeUnshiftWith:k,firstItemIndex:s,gap:h,sizes:I,listRefresh:z,statefulTotalCount:r,trackItemSizes:y,itemSize:d}}),u(U,Te),{singleton:!0}),Le="undefined"!=typeof document&&"scrollBehavior"in document.documentElement.style;function Me(e){const t="number"==typeof e?{index:e}:e;return t.align||(t.align="start"),t.behavior&&Le||(t.behavior="auto"),t.offset||(t.offset=0),t}const We=V((([{sizes:e,totalCount:t,listRefresh:o,gap:n},{scrollingInProgress:r,viewportHeight:i,scrollTo:l,smoothScrollTargetReached:s,headerHeight:c,footerHeight:a,fixedHeaderHeight:u,fixedFooterHeight:d},{log:f}])=>{const h=T(),p=w(0);let x=null,C=null,S=null;function y(){x&&(x(),x=null),S&&(S(),S=null),C&&(clearTimeout(C),C=null),g(r,!1)}return v(H(h,L(e,i,t,p,c,a,f),L(n,u,d),R((([[e,t,n,i,l,c,a,u],d,f,p])=>{const v=Me(e),{align:T,behavior:w,offset:b}=v,E=i-1,R=ze(v,t,E);let z=Re(R,t.offsetTree,d)+c;"end"===T?(z+=f+re(t.sizeTree,R)[1]-n+p,R===E&&(z+=a)):"center"===T?z+=(f+re(t.sizeTree,R)[1]-n+p)/2:z-=l,b&&(z+=b);const B=t=>{y(),t?(u("retrying to scroll to",{location:e},N.DEBUG),g(h,e)):u("list did not change, scroll successful",{},N.DEBUG)};if(y(),"smooth"===w){let e=!1;S=m(o,(t=>{e=e||t})),x=I(s,(()=>{B(e)}))}else x=I(H(o,(k=150,e=>{const t=setTimeout((()=>{e(!1)}),k);return o=>{o&&(e(!0),clearTimeout(t))}})),B);var k;return C=setTimeout((()=>{y()}),1200),g(r,!0),u("scrolling from index to",{index:R,top:z,behavior:w},N.DEBUG),{top:z,behavior:w}}))),l),{scrollToIndex:h,topListHeight:p}}),u(Oe,Q,U),{singleton:!0});const je="up",Ve="down",Fe={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},Ae=V((([{scrollContainerState:e,scrollTop:t,viewportHeight:o,headerHeight:n,footerHeight:r,scrollBy:i}])=>{const l=w(!1),s=w(!0),c=T(),a=T(),u=w(4),d=w(0),f=S(H(M(H(W(t),k(1),z(!0)),H(W(t),k(1),z(!1),O(100))),b()),!1),h=S(H(M(H(i,z(!0)),H(i,z(!1),O(200))),b()),!1);v(H(j(W(t),W(d)),R((([e,t])=>e<=t)),b()),s),v(H(s,P(50)),a);const m=C(H(j(e,W(o),W(n),W(r),W(u)),B(((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}}),Fe),b(((e,t)=>e&&e.atBottom===t.atBottom)))),g=S(H(e,B(((e,{scrollTop:t,scrollHeight:o,viewportHeight:n})=>{if(Z(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}),E((e=>e.changed)),R((e=>e.jump))),0);v(H(m,R((e=>e.atBottom))),l),v(H(l,P(50)),c);const p=w(Ve);v(H(e,R((({scrollTop:e})=>e)),b(),B(((e,t)=>x(h)?{direction:e.direction,prevScrollTop:t}:{direction:t<e.prevScrollTop?je:Ve,prevScrollTop:t}),{direction:Ve,prevScrollTop:0}),R((e=>e.direction))),p),v(H(e,P(50),z("none")),p);const I=w(0);return v(H(f,E((e=>!e)),z(0)),I),v(H(t,P(100),L(f),E((([e,t])=>!!t)),B((([e,t],[o])=>[t,o]),[0,0]),R((([e,t])=>t-e))),I),{isScrolling:f,isAtTop:s,isAtBottom:l,atBottomState:m,atTopStateChange:a,atBottomStateChange:c,scrollDirection:p,atBottomThreshold:u,atTopThreshold:d,scrollVelocity:I,lastJumpDueToItemResize:g}}),u(Q)),De=V((([{log:e}])=>{const t=w(!1),o=C(H(t,E((e=>e)),b()));return m(t,(t=>{t&&x(e)("props updated",{},N.DEBUG)})),{propsReady:t,didMount:o}}),u(U),{singleton:!0});const Ge=V((([{sizes:e,listRefresh:t,defaultItemSize:o},{scrollTop:n},{scrollToIndex:r},{didMount:i}])=>{const l=w(!0),s=w(0);return v(H(i,L(s),E((([e,t])=>!!t)),z(!1)),l),m(H(j(t,i),L(l,e,o),E((([[,e],t,{sizeTree:o},n])=>e&&(!te(o)||void 0!==n)&&!t)),L(s)),(([,e])=>{setTimeout((()=>{I(n,(()=>{g(l,!0)})),g(r,e)}))})),{scrolledToInitialItem:l,initialTopMostItemIndex:s}}),u(Oe,Q,We,De),{singleton:!0});function Ne(e){return!!e&&("smooth"===e?"smooth":"auto")}const _e=V((([{totalCount:e,listRefresh:t},{isAtBottom:o,atBottomState:n},{scrollToIndex:r},{scrolledToInitialItem:i},{propsReady:l,didMount:s},{log:c},{scrollingInProgress:a}])=>{const u=w(!1),d=T();let f=null;function h(e){g(r,{index:"LAST",align:"end",behavior:e})}function p(e){const t=I(n,(t=>{!e||t.atBottom||"SIZE_INCREASED"!==t.notAtBottomBecause||f||(x(c)("scrolling to bottom due to increased size",{},N.DEBUG),h("auto"))}));setTimeout(t,100)}return m(H(j(H(W(e),k(1)),s),L(W(u),o,i,a),R((([[e,t],o,n,r,i])=>{let l=t&&r,s="auto";return l&&(s=((e,t)=>"function"==typeof e?Ne(e(t)):t&&Ne(e))(o,n||i),l=l&&!!s),{totalCount:e,shouldFollow:l,followOutputBehavior:s}})),E((({shouldFollow:e})=>e))),(({totalCount:e,followOutputBehavior:o})=>{f&&(f(),f=null),f=I(t,(()=>{x(c)("following output to ",{totalCount:e},N.DEBUG),h(o),f=null}))})),m(H(j(W(u),e,l),E((([e,,t])=>e&&t)),B((({value:e},[,t])=>({refreshed:e===t,value:t})),{refreshed:!1,value:0}),E((({refreshed:e})=>e)),L(u,e)),(([,e])=>{p(!1!==e)})),m(d,(()=>{p(!1!==x(u))})),m(j(W(u),n),(([e,t])=>{e&&!t.atBottom&&"VIEWPORT_HEIGHT_DECREASING"===t.notAtBottomBecause&&h("auto")})),{followOutput:u,autoscrollToBottom:d}}),u(Oe,Ae,We,Ge,De,U,Q));function Ue(e){return e.reduce(((e,t)=>(e.groupIndices.push(e.totalCount),e.totalCount+=t+1,e)),{totalCount:0,groupIndices:[]})}const $e=V((([{totalCount:e,groupIndices:t,sizes:o},{scrollTop:n,headerHeight:r}])=>{const i=T(),l=T(),s=C(H(i,R(Ue)));return v(H(s,R((e=>e.totalCount))),e),v(H(s,R((e=>e.groupIndices))),t),v(H(j(n,o,r),E((([e,t])=>ke(t))),R((([e,t,o])=>re(t.groupOffsetTree,Math.max(e-o,0),"v")[0])),b(),R((e=>[e]))),l),{groupCounts:i,topItemsIndexes:l}}),u(Oe,Q));function Ke(e,t){return!(!e||e[0]!==t[0]||e[1]!==t[1])}function qe(e,t){return!(!e||e.startIndex!==t.startIndex||e.endIndex!==t.endIndex)}const Ye="top",Ze="bottom",Je="none";function Qe(e,t,o){return"number"==typeof e?o===je&&t===Ye||o===Ve&&t===Ze?e:0:o===je?t===Ye?e.main:e.reverse:t===Ze?e.main:e.reverse}function Xe(e,t){return"number"==typeof e?e:e[t]||0}const et=V((([{scrollTop:e,viewportHeight:t,deviation:o,headerHeight:n,fixedHeaderHeight:r}])=>{const i=T(),l=w(0),s=w(0),c=w(0);return{listBoundary:i,overscan:c,topListHeight:l,increaseViewportBy:s,visibleRange:S(H(j(W(e),W(t),W(n),W(i,Ke),W(c),W(l),W(r),W(o),W(s)),R((([e,t,o,[n,r],i,l,s,c,a])=>{const u=e-c,d=l+s,f=Math.max(o-u,0);let h=Je;const m=Xe(a,Ye),g=Xe(a,Ze);return n-=c,r+=o+s,(n+=o+s)>e+d-m&&(h=je),(r-=c)<e-f+t+g&&(h=Ve),h!==Je?[Math.max(u-o-Qe(i,Ye,h)-m,0),u-f-s+t+Qe(i,Ze,h)+g]:null})),E((e=>null!=e)),b(Ke)),[0,0])}}),u(Q),{singleton:!0});const tt={items:[],topItems:[],offsetTop:0,offsetBottom:0,top:0,bottom:0,topListHeight:0,totalCount:0,firstItemIndex:0};function ot(e,t,o){if(0===e.length)return[];if(!ke(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=me(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 nt(e,t,o,n,r,i){const{lastSize:l,lastOffset:s,lastIndex:c}=r;let a=0,u=0;if(e.length>0){a=e[0].offset;const t=e[e.length-1];u=t.offset+t.size}const d=o-c,f=a,h=s+d*l+(d-1)*n-u;return{items:ot(e,r,i),topItems:ot(t,r,i),topListHeight:t.reduce(((e,t)=>t.size+e),0),offsetTop:a,offsetBottom:h,top:f,bottom:u,totalCount:o,firstItemIndex:i}}const rt=V((([{sizes:e,totalCount:t,data:o,firstItemIndex:n,gap:r},i,{visibleRange:l,listBoundary:s,topListHeight:c},{scrolledToInitialItem:u,initialTopMostItemIndex:d},{topListHeight:f},h,{didMount:m},{recalcInProgress:g}])=>{const p=w([]),x=T();v(i.topItemsIndexes,p);const I=S(H(j(m,g,W(l,Ke),W(t),W(e),W(d),u,W(p),W(n),W(r),o),E((([e,t])=>e&&!t)),R((([,,[e,t],o,n,r,i,l,s,c,u])=>{const d=n,{sizeTree:f,offsetTree:h}=d;if(0===o||0===e&&0===t)return{...tt,totalCount:o};if(te(f))return nt(function(e,t,o){if(ke(t)){const n=Be(e,t);return[{index:re(t.groupOffsetTree,n)[0],size:0,offset:0},{index:n,size:0,offset:0,data:o&&o[0]}]}return[{index:e,size:0,offset:0,data:o&&o[0]}]}(function(e,t){const o=t-1;return"number"==typeof e?e:"LAST"===e.index?o:e.index}(r,o),d,u),[],o,c,d,s);const m=[];if(l.length>0){const e=l[0],t=l[l.length-1];let o=0;for(const n of me(f,e,t)){const r=n.value,i=Math.max(n.start,e),l=Math.min(n.end,t);for(let e=i;e<=l;e++)m.push({index:e,size:r,offset:o,data:u&&u[e]}),o+=r}}if(!i)return nt([],m,o,c,d,s);const g=l.length>0?l[l.length-1]+1:0,p=ye(h,e,t,g);if(0===p.length)return null;const x=o-1;return nt(a([],(o=>{for(const n of p){const r=n.value;let i=r.offset,l=n.start;const s=r.size;if(r.offset<e){l+=Math.floor((e-r.offset+c)/(s+c));const t=l-n.start;i+=t*s+t*c}l<g&&(i+=(g-l)*s,l=g);const a=Math.min(n.end,x);for(let e=l;e<=a&&!(i>=t);e++)o.push({index:e,size:s,offset:i,data:u&&u[e]}),i+=s+c}})),m,o,c,d,s)})),E((e=>null!==e)),b()),tt);v(H(o,E((e=>void 0!==e)),R((e=>null==e?void 0:e.length))),t),v(H(I,R((e=>e.topListHeight))),f),v(f,c),v(H(I,R((e=>[e.top,e.bottom]))),s),v(H(I,R((e=>e.items))),x);return{listState:I,topItemsIndexes:p,endReached:C(H(I,E((({items:e})=>e.length>0)),L(t,o),E((([{items:e},t])=>e[e.length-1].originalIndex===t-1)),R((([,e,t])=>[e-1,t])),b(Ke),R((([e])=>e)))),startReached:C(H(I,P(200),E((({items:e,topItems:t})=>e.length>0&&e[0].originalIndex===t.length)),R((({items:e})=>e[0].index)),b())),rangeChanged:C(H(I,E((({items:e})=>e.length>0)),R((({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}})),b(qe))),itemsRendered:x,...h}}),u(Oe,$e,et,Ge,We,Ae,De,Te),{singleton:!0}),it=V((([{sizes:e,firstItemIndex:t,data:o,gap:n},{listState:r},{didMount:i}])=>{const l=w(0);return v(H(i,L(l),E((([,e])=>0!==e)),L(e,t,n,o),R((([[,e],t,o,n,r=[]])=>{let i=0;if(t.groupIndices.length>0)for(const s of t.groupIndices){if(s-i>=e)break;i++}const l=e+i;return nt(Array.from({length:l}).map(((e,t)=>({index:t,size:0,offset:0,data:r[t]}))),[],l,n,t,o)}))),r),{initialItemCount:l}}),u(Oe,rt,De),{singleton:!0}),lt=V((([{scrollVelocity:e}])=>{const t=w(!1),o=T(),n=w(!1);return v(H(e,L(n,t,o),E((([e,t])=>!!t)),R((([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})),b()),t),m(H(j(t,e,o),L(n)),(([[e,t,o],n])=>e&&n&&n.change&&n.change(t,o))),{isSeeking:t,scrollSeekConfiguration:n,scrollVelocity:e,scrollSeekRangeChanged:o}}),u(Ae),{singleton:!0}),st=V((([{topItemsIndexes:e}])=>{const t=w(0);return v(H(t,E((e=>e>0)),R((e=>Array.from({length:e}).map(((e,t)=>t))))),e),{topItemCount:t}}),u(rt)),ct=V((([{footerHeight:e,headerHeight:t,fixedHeaderHeight:o,fixedFooterHeight:n},{listState:r}])=>{const i=T(),l=S(H(j(e,n,t,o,r),R((([e,t,o,n,r])=>e+t+o+n+r.offsetBottom+r.bottom))),0);return v(W(l),i),{totalListHeight:l,totalListHeightChanged:i}}),u(Q,rt),{singleton:!0});function at(e){let t,o=!1;return()=>(o||(o=!0,t=e()),t)}const ut=at((()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent))),dt=V((([{scrollBy:e,scrollTop:t,deviation:o,scrollingInProgress:n},{isScrolling:r,isAtBottom:i,scrollDirection:l,lastJumpDueToItemResize:s},{listState:c},{beforeUnshiftWith:a,shiftWithOffset:u,sizes:d,gap:f},{log:h},{recalcInProgress:p}])=>{const x=C(H(c,L(s),B((([,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]),E((([e])=>0!==e)),L(t,l,n,i,h),E((([,e,t,o])=>!o&&0!==e&&t===je)),R((([[e],,,,,t])=>(t("Upward scrolling compensation",{amount:e},N.DEBUG),e)))));function I(t){t>0?(g(e,{top:-t,behavior:"auto"}),g(o,0)):(g(o,0),g(e,{top:-t,behavior:"auto"}))}return m(H(x,L(o,r)),(([e,t,n])=>{n&&ut()?g(o,t-e):I(-e)})),m(H(j(S(r,!1),o,p),E((([e,t,o])=>!e&&!o&&0!==t)),R((([e,t])=>t)),P(1)),I),v(H(u,R((e=>({top:-e})))),e),m(H(a,L(d,f),R((([e,{lastSize:t},o])=>e*t+e*o))),(t=>{g(o,t),requestAnimationFrame((()=>{g(e,{top:t}),requestAnimationFrame((()=>{g(o,0),g(p,!1)}))}))})),{deviation:o}}),u(Q,Ae,rt,Oe,U,Te)),ft=V((([{totalListHeight:e},{didMount:t},{scrollTo:o}])=>{const n=w(0);return m(H(t,L(n),E((([,e])=>0!==e)),R((([,e])=>({top:e})))),(t=>{I(H(e,E((e=>0!==e))),(()=>{setTimeout((()=>{g(o,t)}))}))})),{initialScrollTop:n}}),u(ct,De,Q),{singleton:!0}),ht=V((([{viewportHeight:e},{totalListHeight:t}])=>{const o=w(!1);return{alignToBottom:o,paddingTopAddition:S(H(j(o,e,t),E((([e])=>e)),R((([,e,t])=>Math.max(0,e-t))),b()),0)}}),u(Q,ct),{singleton:!0}),mt=V((([{scrollTo:e,scrollContainerState:t}])=>{const o=T(),n=T(),r=T(),i=w(!1),l=w(void 0);return v(H(j(o,n),R((([{viewportHeight:e,scrollTop:t,scrollHeight:o},{offsetTop:n}])=>({scrollTop:Math.max(0,t-n),scrollHeight:o,viewportHeight:e})))),t),v(H(e,L(n),R((([e,{offsetTop:t}])=>({...e,top:e.top+t})))),r),{useWindowScroll:i,customScrollParent:l,windowScrollContainerState:o,windowViewportRect:n,windowScrollTo:r}}),u(Q)),gt=V((([{sizes:e,totalCount:t,gap:o},{scrollTop:n,viewportHeight:r,headerHeight:i,fixedHeaderHeight:l,fixedFooterHeight:s,scrollingInProgress:c},{scrollToIndex:a}])=>{const u=T();return v(H(u,L(e,r,t,i,l,s,n),L(o),R((([[e,t,o,n,r,i,l,s],a])=>{const{done:u,behavior:d,align:f,...h}=e;let m=null;const g=ze(e,t,n-1),p=Re(g,t.offsetTree,a)+r+i;if(p<s+i)m={...h,behavior:d,align:f??"start"};else{p+re(t.sizeTree,g)[1]>s+o-l&&(m={...h,behavior:d,align:f??"end"})}return m?u&&I(H(c,k(1),E((e=>!1===e))),u):u&&u(),m})),E((e=>null!==e))),a),{scrollIntoView:u}}),u(Oe,Q,We,rt,U),{singleton:!0}),pt=V((([e,t,o,n,r,i,l,s,c])=>({...e,...t,...o,...n,...r,...i,...l,...s,...c})),u(et,it,De,lt,ct,ft,ht,mt,gt)),xt=V((([{totalCount:e,sizeRanges:t,fixedItemSize:o,defaultItemSize:n,trackItemSizes:r,itemSize:i,data:l,firstItemIndex:s,groupIndices:c,statefulTotalCount:a,gap:u},{initialTopMostItemIndex:d,scrolledToInitialItem:f},h,m,{listState:g,topItemsIndexes:p,...x},{scrollToIndex:I},T,{topItemCount:w},{groupCounts:C},S,y])=>(v(x.rangeChanged,S.scrollSeekRangeChanged),v(H(S.windowViewportRect,R((e=>e.visibleHeight))),h.viewportHeight),{totalCount:e,data:l,firstItemIndex:s,sizeRanges:t,initialTopMostItemIndex:d,scrolledToInitialItem:f,topItemsIndexes:p,topItemCount:w,groupCounts:C,fixedItemHeight:o,defaultItemHeight:n,gap:u,...m,statefulTotalCount:a,listState:g,scrollToIndex:I,trackItemSizes:r,itemSize:i,groupIndices:c,...x,...S,...h,...y})),u(Oe,Ge,Q,_e,rt,We,dt,st,$e,pt,U)),vt="-webkit-sticky",It="sticky",Tt=at((()=>{if("undefined"==typeof document)return It;const e=document.createElement("div");return e.style.position=vt,e.style.position===vt?vt:It}));function wt(e,o){const n=t.useRef(null),r=t.useCallback((t=>{if(null===t||!t.offsetParent)return;const r=t.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},e(n.current)}),[e,o]),{callbackRef:i,ref:l}=$(r),s=t.useCallback((()=>{r(l.current)}),[r,l]);return t.useEffect((()=>{if(o){o.addEventListener("scroll",s);const e=new ResizeObserver(s);return e.observe(o),()=>{o.removeEventListener("scroll",s),e.unobserve(o)}}return window.addEventListener("scroll",s),window.addEventListener("resize",s),()=>{window.removeEventListener("scroll",s),window.removeEventListener("resize",s)}}),[s,o]),i}const Ct=r.createContext(void 0),St=r.createContext(void 0);function Ht(e){return e}const yt=V((([e,t])=>({...e,...t})),u(xt,V((()=>{const e=w((e=>`Item ${e}`)),t=w(null),o=w((e=>`Group ${e}`)),n=w({}),r=w(Ht),i=w("div"),l=w(h),s=(e,t=null)=>S(H(n,R((t=>t[e])),b()),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")}})))),bt=({height:t})=>e.jsx("div",{style:{height:t}}),Et={position:Tt(),zIndex:1,overflowAnchor:"none"},Rt={overflowAnchor:"none"},zt=r.memo((function({showTopList:e=!1}){const o=_t("listState"),n=Nt("sizeRanges"),i=_t("useWindowScroll"),l=_t("customScrollParent"),s=Nt("windowScrollContainerState"),c=Nt("scrollContainerState"),a=l||i?s:c,u=_t("itemContent"),d=_t("context"),f=_t("groupContent"),m=_t("trackItemSizes"),g=_t("itemSize"),p=_t("log"),x=Nt("gap"),{callbackRef:v}=q(n,g,m,e?h:a,p,x,l),[I,T]=r.useState(0);Ut("deviation",(e=>{I!==e&&T(e)}));const w=_t("EmptyPlaceholder"),C=_t("ScrollSeekPlaceholder")||bt,S=_t("ListComponent"),H=_t("ItemComponent"),y=_t("GroupComponent"),b=_t("computeItemKey"),E=_t("isSeeking"),R=_t("groupIndices").length>0,z=_t("paddingTopAddition"),B=e?{}:{boxSizing:"border-box",paddingTop:o.offsetTop+z,paddingBottom:o.offsetBottom,marginTop:I};return!e&&0===o.totalCount&&w?t.createElement(w,Ot(w,d)):t.createElement(S,{...Ot(S,d),ref:v,style:B,"data-test-id":e?"virtuoso-top-item-list":"virtuoso-item-list"},(e?o.topItems:o.items).map((e=>{const n=e.originalIndex,r=b(n+o.firstItemIndex,e.data,d);return E?t.createElement(C,{...Ot(C,d),key:r,index:e.index,height:e.size,type:e.type||"item",..."group"===e.type?{}:{groupIndex:e.groupIndex}}):"group"===e.type?t.createElement(y,{...Ot(y,d),key:r,"data-index":n,"data-known-size":e.size,"data-item-index":e.index,style:Et},f(e.index)):t.createElement(H,{...Ot(H,d),key:r,"data-index":n,"data-known-size":e.size,"data-item-index":e.index,"data-item-group-index":e.groupIndex,item:e.data,style:Rt},R?u(e.index,e.groupIndex,e.data,d):u(e.index,e.data,d))})))})),Bt={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},kt={width:"100%",height:"100%",position:"absolute",top:0},Pt={width:"100%",position:Tt(),top:0,zIndex:1};function Ot(e,t){if("string"!=typeof e)return{context:t}}const Lt=r.memo((function(){const e=_t("HeaderComponent"),o=Nt("headerHeight"),n=_t("headerFooterTag"),r=K((e=>o(Y(e,"height")))),i=_t("context");return e?t.createElement(n,{ref:r},t.createElement(e,Ot(e,i))):null})),Mt=r.memo((function(){const e=_t("FooterComponent"),o=Nt("footerHeight"),n=_t("headerFooterTag"),r=K((e=>o(Y(e,"height")))),i=_t("context");return e?t.createElement(n,{ref:r},t.createElement(e,Ot(e,i))):null}));function Wt({usePublisher:e,useEmitter:o,useEmitterValue:n}){return r.memo((function({style:r,children:i,...l}){const s=e("scrollContainerState"),c=n("ScrollerComponent"),a=e("smoothScrollTargetReached"),u=n("scrollerRef"),d=n("context"),{scrollerRef:f,scrollByCallback:h,scrollToCallback:m}=J(s,a,c,u);return o("scrollTo",m),o("scrollBy",h),t.createElement(c,{ref:f,style:{...Bt,...r},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...l,...Ot(c,d)},i)}))}function jt({usePublisher:e,useEmitter:o,useEmitterValue:n}){return r.memo((function({style:r,children:i,...l}){const s=e("windowScrollContainerState"),c=n("ScrollerComponent"),a=e("smoothScrollTargetReached"),u=n("totalListHeight"),d=n("deviation"),f=n("customScrollParent"),m=n("context"),{scrollerRef:g,scrollByCallback:p,scrollToCallback:x}=J(s,a,c,h,f);return G((()=>(g.current=f||window,()=>{g.current=null})),[g,f]),o("windowScrollTo",x),o("scrollBy",p),t.createElement(c,{style:{position:"relative",...r,...0!==u?{height:u+d}:{}},"data-virtuoso-scroller":!0,...l,...Ot(c,m)},i)}))}const Vt=({children:o})=>{const n=t.useContext(Ct),l=Nt("viewportHeight"),s=Nt("fixedItemHeight"),c=K(i(l,(e=>Y(e,"height"))));return r.useEffect((()=>{n&&(l(n.viewportHeight),s(n.itemHeight))}),[n,l,s]),e.jsx("div",{style:kt,ref:c,"data-viewport-type":"element",children:o})},Ft=({children:o})=>{const n=t.useContext(Ct),i=Nt("windowViewportRect"),l=Nt("fixedItemHeight"),s=_t("customScrollParent"),c=wt(i,s);return r.useEffect((()=>{n&&(l(n.itemHeight),i({offsetTop:0,visibleHeight:n.viewportHeight,visibleWidth:100}))}),[n,i,l]),e.jsx("div",{ref:c,style:kt,"data-viewport-type":"window",children:o})},At=({children:e})=>{const o=_t("TopItemListComponent"),n=_t("headerHeight"),r={...Pt,marginTop:`${n}px`},i=_t("context");return t.createElement(o||"div",{style:r,context:i},e)},Dt=r.memo((function(t){const o=_t("useWindowScroll"),n=_t("topItemsIndexes").length>0,r=_t("customScrollParent"),i=r||o?Kt:$t,l=r||o?Ft:Vt;return e.jsxs(i,{...t,children:[n&&e.jsx(At,{children:e.jsx(zt,{showTopList:!0})}),e.jsxs(l,{children:[e.jsx(Lt,{}),e.jsx(zt,{}),e.jsx(Mt,{})]})]})})),{Component:Gt,usePublisher:Nt,useEmitterValue:_t,useEmitter:Ut}=D(yt,{required:{},optional:{context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",groupContent:"groupContent",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",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"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Dt),$t=Wt({usePublisher:Nt,useEmitterValue:_t,useEmitter:Ut}),Kt=jt({usePublisher:Nt,useEmitterValue:_t,useEmitter:Ut}),qt=Gt,Yt=Gt,Zt={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},Jt={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:Qt,ceil:Xt,floor:eo,min:to,max:oo}=Math;function no(e,t,o){return Array.from({length:t-e+1}).map(((t,n)=>({index:n+e,data:null==o?void 0:o[n+e]})))}function ro(e,t){return e&&e.column===t.column&&e.row===t.row}const io=V((([{overscan:e,visibleRange:t,listBoundary:o},{scrollTop:n,viewportHeight:r,scrollBy:i,scrollTo:l,smoothScrollTargetReached:s,scrollContainerState:c,footerHeight:a,headerHeight:u},d,f,{propsReady:h,didMount:m},{windowViewportRect:g,windowScrollTo:p,useWindowScroll:x,customScrollParent:I,windowScrollContainerState:y},B])=>{const k=w(0),P=w(0),O=w(Zt),M=w({height:0,width:0}),V=w({height:0,width:0}),F=T(),A=T(),D=w(0),G=w(void 0),N=w({row:0,column:0});v(H(j(m,P,G),E((([,e])=>0!==e)),R((([,e,t])=>({items:no(0,e-1,t),top:0,bottom:0,offsetBottom:0,offsetTop:0,itemHeight:0,itemWidth:0})))),O),v(H(j(W(k),t,W(N,ro),W(V,((e,t)=>e&&e.width===t.width&&e.height===t.height)),G),L(M),R((([[e,[t,o],n,r,i],l])=>{const{row:s,column:c}=n,{height:a,width:u}=r,{width:d}=l;if(0===e||0===d)return Zt;if(0===u)return function(e){return{...Jt,items:e}}(no(0,0,i));const f=co(d,u,c);let h=f*eo((t+s)/(a+s)),m=f*Xt((o+s)/(a+s))-1;m=to(e-1,oo(m,f-1)),h=to(m,oo(0,h));const g=no(h,m,i),{top:p,bottom:x}=lo(l,n,r,g),v=Xt(e/f);return{items:g,offsetTop:p,offsetBottom:v*a+(v-1)*s-x,top:p,bottom:x,itemHeight:a,itemWidth:u}}))),O),v(H(G,E((e=>void 0!==e)),R((e=>e.length))),k),v(H(M,R((({height:e})=>e))),r),v(H(j(M,V,O,N),R((([e,t,{items:o},n])=>{const{top:r,bottom:i}=lo(e,n,t,o);return[r,i]})),b(Ke)),o);const _=C(H(W(O),E((({items:e})=>e.length>0)),L(k),E((([{items:e},t])=>e[e.length-1].index===t-1)),R((([,e])=>e-1)),b())),U=C(H(W(O),E((({items:e})=>e.length>0&&0===e[0].index)),z(0),b())),$=C(H(W(O),E((({items:e})=>e.length>0)),R((({items:e})=>({startIndex:e[0].index,endIndex:e[e.length-1].index}))),b(qe)));v($,f.scrollSeekRangeChanged),v(H(F,L(M,V,k,N),R((([e,t,o,n,r])=>{const i=Me(e),{align:l,behavior:s,offset:c}=i;let a=i.index;"LAST"===a&&(a=n-1),a=oo(0,a,to(n-1,a));let u=so(t,r,o,a);return"end"===l?u=Qt(u-t.height+o.height):"center"===l&&(u=Qt(u-t.height/2+o.height/2)),c&&(u+=c),{top:u,behavior:s}}))),l);const K=S(H(O,R((e=>e.offsetBottom+e.bottom))),0);return v(H(g,R((e=>({width:e.visibleWidth,height:e.visibleHeight})))),M),{data:G,totalCount:k,viewportDimensions:M,itemDimensions:V,scrollTop:n,scrollHeight:A,overscan:e,scrollBy:i,scrollTo:l,scrollToIndex:F,smoothScrollTargetReached:s,windowViewportRect:g,windowScrollTo:p,useWindowScroll:x,customScrollParent:I,windowScrollContainerState:y,deviation:D,scrollContainerState:c,footerHeight:a,headerHeight:u,initialItemCount:P,gap:N,...f,gridState:O,totalListHeight:K,...d,startReached:U,endReached:_,rangeChanged:$,propsReady:h,...B}}),u(et,Q,Ae,lt,De,mt,U));function lo(e,t,o,n){const{height:r}=o;if(void 0===r||0===n.length)return{top:0,bottom:0};return{top:so(e,t,o,n[0].index),bottom:so(e,t,o,n[n.length-1].index)+r}}function so(e,t,o,n){const r=co(e.width,o.width,t.column),i=eo(n/r),l=i*o.height+oo(0,i-1)*t.row;return l>0?l+t.row:l}function co(e,t,o){return oo(1,eo((e+o)/(t+o)))}const ao=V((([e,t])=>({...e,...t})),u(io,V((()=>{const e=w((e=>`Item ${e}`)),t=w({}),o=w(null),n=w("virtuoso-grid-item"),r=w("virtuoso-grid-list"),i=w(Ht),l=w("div"),s=w(h),c=(e,o=null)=>S(H(t,R((t=>t[e])),b()),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")}})))),uo=r.memo((function(){const e=Io("gridState"),o=Io("listClassName"),n=Io("itemClassName"),r=Io("itemContent"),i=Io("computeItemKey"),l=Io("isSeeking"),s=vo("scrollHeight"),c=Io("ItemComponent"),a=Io("ListComponent"),u=Io("ScrollSeekPlaceholder"),d=Io("context"),f=vo("itemDimensions"),h=vo("gap"),m=Io("log"),g=K((e=>{const t=e.parentElement.parentElement.scrollHeight;s(t);const o=e.firstChild;o&&f(o.getBoundingClientRect()),h({row:So("row-gap",getComputedStyle(e).rowGap,m),column:So("column-gap",getComputedStyle(e).columnGap,m)})}));return t.createElement(a,{ref:g,className:o,...Ot(a,d),style:{paddingTop:e.offsetTop,paddingBottom:e.offsetBottom},"data-test-id":"virtuoso-item-list"},e.items.map((o=>{const s=i(o.index,o.data,d);return l?t.createElement(u,{key:s,...Ot(u,d),index:o.index,height:e.itemHeight,width:e.itemWidth}):t.createElement(c,{...Ot(c,d),className:n,"data-index":o.index,key:s},r(o.index,o.data,d))})))})),fo=r.memo((function(){const e=Io("HeaderComponent"),o=vo("headerHeight"),n=Io("headerFooterTag"),r=K((e=>o(Y(e,"height")))),i=Io("context");return e?t.createElement(n,{ref:r},t.createElement(e,Ot(e,i))):null})),ho=r.memo((function(){const e=Io("FooterComponent"),o=vo("footerHeight"),n=Io("headerFooterTag"),r=K((e=>o(Y(e,"height")))),i=Io("context");return e?t.createElement(n,{ref:r},t.createElement(e,Ot(e,i))):null})),mo=({children:o})=>{const n=t.useContext(St),i=vo("itemDimensions"),l=vo("viewportDimensions"),s=K((e=>{l(e.getBoundingClientRect())}));return r.useEffect((()=>{n&&(l({height:n.viewportHeight,width:n.viewportWidth}),i({height:n.itemHeight,width:n.itemWidth}))}),[n,l,i]),e.jsx("div",{style:kt,ref:s,children:o})},go=({children:o})=>{const n=t.useContext(St),i=vo("windowViewportRect"),l=vo("itemDimensions"),s=Io("customScrollParent"),c=wt(i,s);return r.useEffect((()=>{n&&(l({height:n.itemHeight,width:n.itemWidth}),i({offsetTop:0,visibleHeight:n.viewportHeight,visibleWidth:n.viewportWidth}))}),[n,i,l]),e.jsx("div",{ref:c,style:kt,children:o})},po=r.memo((function({...t}){const o=Io("useWindowScroll"),n=Io("customScrollParent"),r=n||o?Co:wo,i=n||o?go:mo;return e.jsx(r,{...t,children:e.jsxs(i,{children:[e.jsx(fo,{}),e.jsx(uo,{}),e.jsx(ho,{})]})})})),{Component:xo,usePublisher:vo,useEmitterValue:Io,useEmitter:To}=D(ao,{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"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange"}},po),wo=Wt({usePublisher:vo,useEmitterValue:Io,useEmitter:To}),Co=jt({usePublisher:vo,useEmitterValue:Io,useEmitter:To});function So(e,t,o){return"normal"===t||(null==t?void 0:t.endsWith("px"))||o(`${e} was not resolved to pixel value correctly`,t,N.WARN),"normal"===t?0:parseInt(t??"0",10)}const Ho=xo,yo=V((([e,t])=>({...e,...t})),u(xt,V((()=>{const t=w((t=>e.jsxs("td",{children:["Item $",t]}))),o=w(null),n=w(null),r=w(null),i=w({}),l=w(Ht),s=w(h),c=(e,t=null)=>S(H(i,R((t=>t[e])),b()),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")}})))),bo=({height:t})=>e.jsx("tr",{children:e.jsx("td",{style:{height:t}})}),Eo=({height:t})=>e.jsx("tr",{children:e.jsx("td",{style:{height:t,padding:0,border:0}})}),Ro=r.memo((function(){const o=Lo("listState"),n=Oo("sizeRanges"),i=Lo("useWindowScroll"),l=Lo("customScrollParent"),s=Oo("windowScrollContainerState"),c=Oo("scrollContainerState"),a=l||i?s:c,u=Lo("itemContent"),d=Lo("trackItemSizes"),f=Lo("itemSize"),h=Lo("log"),{callbackRef:m,ref:g}=q(n,f,d,a,h,void 0,l),[p,x]=r.useState(0);Mo("deviation",(e=>{p!==e&&(g.current.style.marginTop=`${e}px`,x(e))}));const v=Lo("EmptyPlaceholder"),I=Lo("ScrollSeekPlaceholder")||bo,T=Lo("FillerRow")||Eo,w=Lo("TableBodyComponent"),C=Lo("TableRowComponent"),S=Lo("computeItemKey"),H=Lo("isSeeking"),y=Lo("paddingTopAddition"),b=Lo("firstItemIndex"),E=Lo("statefulTotalCount"),R=Lo("context");if(0===E&&v)return t.createElement(v,Ot(v,R));const z=o.offsetTop+y+p,B=o.offsetBottom,k=z>0?e.jsx(T,{height:z},"padding-top"):null,P=B>0?e.jsx(T,{height:B},"padding-bottom"):null,O=o.items.map((e=>{const o=e.originalIndex,n=S(o+b,e.data,R);return H?t.createElement(I,{...Ot(I,R),key:n,index:e.index,height:e.size,type:e.type||"item"}):t.createElement(C,{...Ot(C,R),key:n,"data-index":o,"data-known-size":e.size,"data-item-index":e.index,item:e.data,style:{overflowAnchor:"none"}},u(e.index,e.data,R))}));return t.createElement(w,{ref:m,"data-test-id":"virtuoso-item-list",...Ot(w,R)},[k,...O,P])})),zo=({children:o})=>{const n=t.useContext(Ct),l=Oo("viewportHeight"),s=Oo("fixedItemHeight"),c=K(i(l,(e=>Y(e,"height"))));return r.useEffect((()=>{n&&(l(n.viewportHeight),s(n.itemHeight))}),[n,l,s]),e.jsx("div",{style:kt,ref:c,"data-viewport-type":"element",children:o})},Bo=({children:o})=>{const n=t.useContext(Ct),i=Oo("windowViewportRect"),l=Oo("fixedItemHeight"),s=Lo("customScrollParent"),c=wt(i,s);return r.useEffect((()=>{n&&(l(n.itemHeight),i({offsetTop:0,visibleHeight:n.viewportHeight,visibleWidth:100}))}),[n,i,l]),e.jsx("div",{ref:c,style:kt,"data-viewport-type":"window",children:o})},ko=r.memo((function(t){const o=Lo("useWindowScroll"),n=Lo("customScrollParent"),l=Oo("fixedHeaderHeight"),s=Oo("fixedFooterHeight"),c=Lo("fixedHeaderContent"),a=Lo("fixedFooterContent"),u=Lo("context"),d=K(i(l,(e=>Y(e,"height")))),f=K(i(s,(e=>Y(e,"height")))),h=n||o?jo:Wo,m=n||o?Bo:zo,g=Lo("TableComponent"),p=Lo("TableHeadComponent"),x=Lo("TableFooterComponent"),v=c?r.createElement(p,{key:"TableHead",style:{zIndex:1,position:"sticky",top:0},ref:d,...Ot(p,u)},c()):null,I=a?r.createElement(x,{key:"TableFoot",style:{zIndex:1,position:"sticky",bottom:0},ref:f,...Ot(x,u)},a()):null;return e.jsx(h,{...t,children:e.jsx(m,{children:r.createElement(g,{style:{borderSpacing:0},...Ot(g,u)},[v,e.jsx(Ro,{},"TableBody"),I])})})})),{Component:Po,usePublisher:Oo,useEmitterValue:Lo,useEmitter:Mo}=D(yo,{required:{},optional:{context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",fixedHeaderContent:"fixedHeaderContent",fixedFooterContent:"fixedFooterContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",totalCount:"totalCount",topItemCount:"topItemCount",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",groupCounts:"groupCounts",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},ko),Wo=Wt({usePublisher:Oo,useEmitterValue:Lo,useEmitter:Mo}),jo=jt({usePublisher:Oo,useEmitterValue:Lo,useEmitter:Mo}),Vo=Po;exports.GroupedVirtuoso=Yt,exports.LogLevel=N,exports.TableVirtuoso=Vo,exports.Virtuoso=qt,exports.VirtuosoGrid=Ho,exports.VirtuosoGridMockContext=St,exports.VirtuosoMockContext=Ct;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("react"),o=require("react-dom");function n(e,t){return o=>e(t(o))}function r(e,t){return t(e)}function i(e,t){return o=>e(t,o)}function l(e,t){return()=>e(t)}function s(e,t){return t(e),e}function c(...e){return e}function a(e){e()}function u(e){return()=>e}function d(){}function f(e,t){return e(1,t)}function h(e,t){e(0,t)}function m(e){e(2)}function g(e){return e(4)}function p(e,t){return f(e,i(t,0))}function x(e,t){const o=e(1,(e=>{o(),t(e)}));return o}function v(){const e=[];return(t,o)=>{switch(t){case 2:return void e.splice(0,e.length);case 1:return e.push(o),()=>{const t=e.indexOf(o);t>-1&&e.splice(t,1)};case 0:return void e.slice().forEach((e=>{e(o)}));default:throw new Error(`unrecognized action ${t}`)}}}function I(e){let t=e;const o=v();return(e,n)=>{switch(e){case 1:n(t);break;case 0:t=n;break;case 4:return t}return o(e,n)}}function T(e){return s(v(),(t=>p(e,t)))}function w(e,t){return s(I(t),(t=>p(e,t)))}function C(e,...t){const o=function(...e){return t=>e.reduceRight(r,t)}(...t);return(t,n)=>{switch(t){case 1:return f(e,o(n));case 2:return void m(e)}}}function S(e,t){return e===t}function H(e=S){let t;return o=>n=>{e(t,n)||(t=n,o(n))}}function y(e){return t=>o=>{e(o)&&t(o)}}function E(e){return t=>n(t,e)}function b(e){return t=>()=>t(e)}function R(e,t){return o=>n=>o(t=e(t,n))}function z(e){return t=>o=>{e>0?e--:t(o)}}function B(e){let t,o;return n=>r=>{t=r,o||(o=setTimeout((()=>{o=void 0,n(t)}),e))}}function k(e){let t,o;return n=>r=>{t=r,o&&clearTimeout(o),o=setTimeout((()=>{n(t)}),e)}}function P(...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);f(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 L(...e){return function(t,o){switch(t){case 1:return function(...e){return()=>{e.map(a)}}(...e.map((e=>f(e,o))));case 2:return;default:throw new Error(`unrecognized action ${t}`)}}}function O(e,t=S){return C(e,H(t))}function M(...e){const t=v(),o=new Array(e.length);let n=0;const r=Math.pow(2,e.length)-1;return e.forEach(((e,i)=>{const l=Math.pow(2,i);f(e,(e=>{o[i]=e,n|=l,n===r&&h(t,o)}))})),function(e,i){switch(e){case 1:return n===r&&i(o),f(t,i);case 2:return m(t);default:throw new Error(`unrecognized action ${e}`)}}}function W(e,t=[],{singleton:o}={singleton:!0}){return{id:V(),constructor:e,dependencies:t,singleton:o}}const V=()=>Symbol();const j="undefined"!=typeof document?t.useLayoutEffect:t.useEffect;function F(e,o,n){const r=Object.keys(o.required||{}),c=Object.keys(o.optional||{}),a=Object.keys(o.methods||{}),p=Object.keys(o.events||{}),x=t.createContext({});function v(e,t){e.propsReady&&h(e.propsReady,!1);for(const n of r){h(e[o.required[n]],t[n])}for(const n of c)if(n in t){h(e[o.optional[n]],t[n])}e.propsReady&&h(e.propsReady,!0)}function I(e){return p.reduce(((t,n)=>(t[n]=function(e){let t,o;const n=()=>t&&t();return function(r,i){switch(r){case 1:if(i){if(o===i)return;return n(),o=i,t=f(e,i),t}return n(),d;case 2:return n(),void(o=null);default:throw new Error(`unrecognized action ${r}`)}}}(e[o.events[n]]),t)),{})}const T=t.forwardRef(((i,d)=>{const{children:g,...T}=i,[w]=t.useState((()=>s(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)}(e),(e=>v(e,T))))),[C]=t.useState(l(I,w));return j((()=>{for(const e of p)e in T&&f(C[e],T[e]);return()=>{Object.values(C).map(m)}}),[T,C,w]),j((()=>{v(w,T)})),t.useImperativeHandle(d,u(function(e){return a.reduce(((t,n)=>(t[n]=t=>{h(e[o.methods[n]],t)},t)),{})}(w))),t.createElement(x.Provider,{value:w},n?t.createElement(n,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}([...r,...c,...p],T),g):g)}));return{Component:T,usePublisher:e=>t.useCallback(i(h,t.useContext(x)[e]),[e]),useEmitterValue:e=>{const o=t.useContext(x)[e],[n,r]=t.useState(l(g,o));return j((()=>f(o,(e=>{e!==n&&r(u(e))}))),[o,n]),n},useEmitter:(e,o)=>{const n=t.useContext(x)[e];j((()=>f(n,o)),[o,n])}}}const A="undefined"!=typeof document?t.useLayoutEffect:t.useEffect;var D=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(D||{});const G={0:"debug",1:"log",2:"warn",3:"error"},N=W((()=>{const e=I(3);return{log:I(((t,o,n=1)=>{n>=(("undefined"==typeof globalThis?window:globalThis).VIRTUOSO_LOG_LEVEL??g(e))&&console[G[n]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",t,o)})),logLevel:e}}),[],{singleton:!0});function _(e,o=!0){const n=t.useRef(null);let r=e=>{};if("undefined"!=typeof ResizeObserver){const t=new ResizeObserver((t=>{const o=t[0].target;null!==o.offsetParent&&e(o)}));r=e=>{e&&o?(t.observe(e),n.current=e):(n.current&&t.unobserve(n.current),n.current=null)}}return{ref:n,callbackRef:r}}function U(e,t=!0){return _(e,t).callbackRef}function $(e,t,o,n,r,i,l){return _((o=>{const s=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},D.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}(o.children,t,"offsetHeight",r);let c=o.parentElement;for(;!c.dataset.virtuosoScroller;)c=c.parentElement;const a="window"===c.firstElementChild.dataset.viewportType,u=l?l.scrollTop:a?window.pageYOffset||document.documentElement.scrollTop:c.scrollTop,d=l?l.scrollHeight:a?document.documentElement.scrollHeight:c.scrollHeight,f=l?l.offsetHeight:a?window.innerHeight:c.offsetHeight;n({scrollTop:Math.max(u,0),scrollHeight:d,viewportHeight:f}),null==i||i(function(e,t,o){"normal"===t||(null==t?void 0:t.endsWith("px"))||o(`${e} was not resolved to pixel value correctly`,t,D.WARN);if("normal"===t)return 0;return parseInt(t??"0",10)}("row-gap",getComputedStyle(o).rowGap,r)),null!==s&&e(s)}),o)}function K(e,t){return Math.round(e.getBoundingClientRect()[t])}function q(e,t){return Math.abs(e-t)<1.01}function Y(e,n,r,i=d,l){const s=t.useRef(null),c=t.useRef(null),a=t.useRef(null),u=t.useCallback((t=>{const r=t.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=()=>{e({scrollTop:Math.max(l,0),scrollHeight:s,viewportHeight:u})};t.suppressFlushSync?d():o.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))}),[e,n]);return t.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(t){const o=s.current;if(!o||"offsetHeight"in o&&0===o.offsetHeight)return;const r="smooth"===t.behavior;let i,l,u;o===window?(l=Math.max(K(document.documentElement,"height"),document.documentElement.scrollHeight),i=window.innerHeight,u=document.documentElement.scrollTop):(l=o.scrollHeight,i=K(o,"height"),u=o.scrollTop);const d=l-i;if(t.top=Math.ceil(Math.max(Math.min(d,t.top),0)),q(i,l)||t.top===u)return e({scrollTop:u,scrollHeight:l,viewportHeight:i}),void(r&&n(!0));r?(c.current=t.top,a.current&&clearTimeout(a.current),a.current=setTimeout((()=>{a.current=null,c.current=null,n(!0)}),1e3)):c.current=null,o.scrollTo(t)}}}const Z=W((()=>{const e=v(),t=v(),o=I(0),n=v(),r=I(0),i=v(),l=v(),s=I(0),c=I(0),a=I(0),u=I(0),d=v(),f=v(),h=I(!1);return p(C(e,E((({scrollTop:e})=>e))),t),p(C(e,E((({scrollHeight:e})=>e))),l),p(t,r),{scrollContainerState:e,scrollTop:t,viewportHeight:i,headerHeight:s,fixedHeaderHeight:c,fixedFooterHeight:a,footerHeight:u,scrollHeight:l,smoothScrollTargetReached:n,scrollTo:d,scrollBy:f,statefulScrollTop:r,deviation:o,scrollingInProgress:h}}),[],{singleton:!0}),J={lvl:0};function Q(e,t,o,n=J,r=J){return{k:e,v:t,lvl:o,l:n,r:r}}function X(e){return e===J}function ee(){return J}function te(e,t){if(X(e))return J;const{k:o,l:n,r:r}=e;if(t===o){if(X(n))return r;if(X(r))return n;{const[t,o]=le(n);return de(ce(e,{k:t,v:o,l:se(n)}))}}return de(ce(e,t<o?{l:te(n,t)}:{r:te(r,t)}))}function oe(e,t,o="k"){if(X(e))return[-1/0,void 0];if(e[o]===t)return[e.k,e.v];if(e[o]<t){const n=oe(e.r,t,o);return n[0]===-1/0?[e.k,e.v]:n}return oe(e.l,t,o)}function ne(e,t,o){return X(e)?Q(t,o,1):t===e.k?ce(e,{k:t,v:o}):t<e.k?ue(ce(e,{l:ne(e.l,t,o)})):ue(ce(e,{r:ne(e.r,t,o)}))}function re(e,t,o){if(X(e))return[];const{k:n,v:r,l:i,r:l}=e;let s=[];return n>t&&(s=s.concat(re(i,t,o))),n>=t&&n<=o&&s.push({k:n,v:r}),n<=o&&(s=s.concat(re(l,t,o))),s}function ie(e){return X(e)?[]:[...ie(e.l),{k:e.k,v:e.v},...ie(e.r)]}function le(e){return X(e.r)?[e.k,e.v]:le(e.r)}function se(e){return X(e.r)?e.l:de(ce(e,{r:se(e.r)}))}function ce(e,t){return Q(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 ae(e){return X(e)||e.lvl>e.r.lvl}function ue(e){return me(ge(e))}function de(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(ae(t))return ge(ce(e,{lvl:n-1}));if(X(t)||X(t.r))throw new Error("Unexpected empty nodes");return ce(t.r,{l:ce(t,{r:t.r.l}),r:ce(e,{l:t.r.r,lvl:n-1}),lvl:n})}if(ae(e))return me(ce(e,{lvl:n-1}));if(X(o)||X(o.l))throw new Error("Unexpected empty nodes");{const t=o.l,r=ae(t)?o.lvl-1:o.lvl;return ce(t,{l:ce(e,{r:t.l,lvl:n-1}),r:me(ce(o,{l:t.r,lvl:r})),lvl:t.lvl+1})}}function fe(e,t,o){if(X(e))return[];const n=oe(e,t)[0];return he(re(e,n,o),(({k:e,v:t})=>({index:e,value:t})))}function he(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 me(e){const{r:t,lvl:o}=e;return X(t)||X(t.r)||t.lvl!==o||t.r.lvl!==o?e:ce(t,{l:ce(e,{r:t.l}),lvl:o+1})}function ge(e){const{l:t}=e;return X(t)||t.lvl!==e.lvl?e:ce(t,{r:ce(e,{l:t.r})})}function pe(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 xe(e,t,o){return e[pe(e,t,o)]}const ve=W((()=>({recalcInProgress:I(!1)})),[],{singleton:!0});function Ie(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 Te({index:e},t){return t===e?0:t<e?-1:1}function we({offset:e},t){return t===e?0:t<e?-1:1}function Ce(e){return{index:e.index,value:e}}function Se(e,t,o,n=0){return n>0&&(t=Math.max(t,xe(e,n,Te).offset)),he(function(e,t,o,n){const r=pe(e,t,n),i=pe(e,o,n,r);return e.slice(r,i+1)}(e,t,o,we),Ce)}function He(e,t,o,n){let r=e,i=0,l=0,s=0,c=0;if(0!==t){c=pe(r,t-1,Te);s=r[c].offset;const e=oe(o,t-1);i=e[0],l=e[1],r.length&&r[c].size===oe(o,t)[1]&&(c-=1),r=r.slice(0,c+1)}else r=[];for(const{start:a,value:u}of fe(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 ye(e,[t,o,n,r]){t.length>0&&n("received item sizes",t,D.DEBUG);const i=e.sizeTree;let l=i,s=0;if(o.length>0&&X(i)&&2===t.length){const e=t[0].size,n=t[1].size;l=o.reduce(((t,o)=>ne(ne(t,o,e),o+1,n)),l)}else[l,s]=function(e,t){let o=X(e)?0:1/0;for(const n of t){const{size:t,startIndex:r,endIndex:i}=n;if(o=Math.min(o,r),X(e)){e=ne(e,0,t);continue}const l=fe(e,r-1,i+1);if(l.some(Ie(n)))continue;let s=!1,c=!1;for(const{start:o,end:n,value:a}of l)s?(i>=o||t===a)&&(e=te(e,o)):(c=a!==t,s=!0),n>i&&i>=o&&a!==t&&(e=ne(e,i+1,a));c&&(e=ne(e,r,t))}return[e,o]}(l,t);if(l===i)return e;const{offsetTree:c,lastIndex:a,lastSize:u,lastOffset:d}=He(e.offsetTree,s,l,r);return{sizeTree:l,offsetTree:c,lastIndex:a,lastOffset:d,lastSize:u,groupOffsetTree:o.reduce(((e,t)=>ne(e,t,Ee(t,c,r))),ee()),groupIndices:o}}function Ee(e,t,o){if(0===t.length)return 0;const{offset:n,index:r,size:i}=xe(t,e,Te),l=e-r,s=i*l+(l-1)*o+n;return s>0?s+o:s}function be(e,t,o){if(function(e){return void 0!==e.groupIndex}(e))return t.groupIndices[e.groupIndex]+1;{let n=Re("LAST"===e.index?o:e.index,t);return n=Math.max(0,n,Math.min(o,n)),n}}function Re(e,t){if(!ze(t))return e;let o=0;for(;t.groupIndices[o]<=e+o;)o++;return e+o}function ze(e){return!X(e.groupOffsetTree)}const Be={offsetHeight:"height",offsetWidth:"width"},ke=W((([{log:e},{recalcInProgress:t}])=>{const o=v(),n=v(),r=w(n,0),i=v(),l=v(),s=I(0),c=I([]),a=I(void 0),u=I(void 0),d=I(((e,t)=>K(e,Be[t]))),m=I(void 0),x=I(0),S={offsetTree:[],sizeTree:ee(),groupOffsetTree:ee(),lastIndex:0,lastOffset:0,lastSize:0,groupIndices:[]},b=w(C(o,P(c,e,x),R(ye,S),H()),S);p(C(c,y((e=>e.length>0)),P(b,x),E((([e,t,o])=>{const n=e.reduce(((e,n,r)=>ne(e,n,Ee(n,t.offsetTree,o)||r)),ee());return{...t,groupIndices:e,groupOffsetTree:n}}))),b),p(C(n,P(b),y((([e,{lastIndex:t}])=>e<t)),E((([e,{lastIndex:t,lastSize:o}])=>[{startIndex:e,endIndex:t,size:o}]))),o),p(a,u);const z=w(C(a,E((e=>void 0===e))),!0);p(C(u,y((e=>void 0!==e&&X(g(b).sizeTree))),E((e=>[{startIndex:0,endIndex:0,size:e}]))),o);const B=T(C(o,P(b),R((({sizes:e},[t,o])=>({changed:o!==e,sizes:o})),{changed:!1,sizes:S}),E((e=>e.changed))));f(C(s,R(((e,t)=>({diff:e.prev-t,prev:t})),{diff:0,prev:0}),E((e=>e.diff))),(e=>{e>0?(h(t,!0),h(i,e)):e<0&&h(l,e)})),f(C(s,P(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},D.ERROR)}));const k=T(i);p(C(i,P(b),E((([e,t])=>{if(t.groupIndices.length>0)throw new Error("Virtuoso: prepending items does not work with groups");return ie(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:t.lastSize}).ranges}))),o);const L=T(C(l,P(b,x),E((([e,{offsetTree:t},o])=>Ee(-e,t,o)))));return p(C(l,P(b,x),E((([e,t,o])=>{if(t.groupIndices.length>0)throw new Error("Virtuoso: shifting items does not work with groups");const n=ie(t.sizeTree).reduce(((t,{k:o,v:n})=>ne(t,Math.max(0,o+e),n)),ee());return{...t,sizeTree:n,...He(t.offsetTree,0,n,o)}}))),b),{data:m,totalCount:n,sizeRanges:o,groupIndices:c,defaultItemSize:u,fixedItemSize:a,unshiftWith:i,shiftWith:l,shiftWithOffset:L,beforeUnshiftWith:k,firstItemIndex:s,gap:x,sizes:b,listRefresh:B,statefulTotalCount:r,trackItemSizes:z,itemSize:d}}),c(N,ve),{singleton:!0}),Pe="undefined"!=typeof document&&"scrollBehavior"in document.documentElement.style;function Le(e){const t="number"==typeof e?{index:e}:e;return t.align||(t.align="start"),t.behavior&&Pe||(t.behavior="auto"),t.offset||(t.offset=0),t}const Oe=W((([{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 g=v(),T=I(0);let w=null,S=null,H=null;function y(){w&&(w(),w=null),H&&(H(),H=null),S&&(clearTimeout(S),S=null),h(r,!1)}return p(C(g,P(e,i,t,T,c,a,m),P(n,u,d),E((([[e,t,n,i,l,c,a,u],d,m,p])=>{const v=Le(e),{align:I,behavior:T,offset:E}=v,b=i-1,R=be(v,t,b);let z=Ee(R,t.offsetTree,d)+c;"end"===I?(z+=m+oe(t.sizeTree,R)[1]-n+p,R===b&&(z+=a)):"center"===I?z+=(m+oe(t.sizeTree,R)[1]-n+p)/2:z-=l,E&&(z+=E);const B=t=>{y(),t?(u("retrying to scroll to",{location:e},D.DEBUG),h(g,e)):u("list did not change, scroll successful",{},D.DEBUG)};if(y(),"smooth"===T){let e=!1;H=f(o,(t=>{e=e||t})),w=x(s,(()=>{B(e)}))}else w=x(C(o,(k=150,e=>{const t=setTimeout((()=>{e(!1)}),k);return o=>{o&&(e(!0),clearTimeout(t))}})),B);var k;return S=setTimeout((()=>{y()}),1200),h(r,!0),u("scrolling from index to",{index:R,top:z,behavior:T},D.DEBUG),{top:z,behavior:T}}))),l),{scrollToIndex:g,topListHeight:T}}),c(ke,Z,N),{singleton:!0});const Me="up",We="down",Ve={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},je=W((([{scrollContainerState:e,scrollTop:t,viewportHeight:o,headerHeight:n,footerHeight:r,scrollBy:i}])=>{const l=I(!1),s=I(!0),c=v(),a=v(),u=I(4),d=I(0),f=w(C(L(C(O(t),z(1),b(!0)),C(O(t),z(1),b(!1),k(100))),H()),!1),h=w(C(L(C(i,b(!0)),C(i,b(!1),k(200))),H()),!1);p(C(M(O(t),O(d)),E((([e,t])=>e<=t)),H()),s),p(C(s,B(50)),a);const m=T(C(M(e,O(o),O(n),O(r),O(u)),R(((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}}),Ve),H(((e,t)=>e&&e.atBottom===t.atBottom)))),x=w(C(e,R(((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}),y((e=>e.changed)),E((e=>e.jump))),0);p(C(m,E((e=>e.atBottom))),l),p(C(l,B(50)),c);const S=I(We);p(C(e,E((({scrollTop:e})=>e)),H(),R(((e,t)=>g(h)?{direction:e.direction,prevScrollTop:t}:{direction:t<e.prevScrollTop?Me:We,prevScrollTop:t}),{direction:We,prevScrollTop:0}),E((e=>e.direction))),S),p(C(e,B(50),b("none")),S);const W=I(0);return p(C(f,y((e=>!e)),b(0)),W),p(C(t,B(100),P(f),y((([e,t])=>!!t)),R((([e,t],[o])=>[t,o]),[0,0]),E((([e,t])=>t-e))),W),{isScrolling:f,isAtTop:s,isAtBottom:l,atBottomState:m,atTopStateChange:a,atBottomStateChange:c,scrollDirection:S,atBottomThreshold:u,atTopThreshold:d,scrollVelocity:W,lastJumpDueToItemResize:x}}),c(Z)),Fe=W((([{log:e}])=>{const t=I(!1),o=T(C(t,y((e=>e)),H()));return f(t,(t=>{t&&g(e)("props updated",{},D.DEBUG)})),{propsReady:t,didMount:o}}),c(N),{singleton:!0});const Ae=W((([{sizes:e,listRefresh:t,defaultItemSize:o},{scrollTop:n},{scrollToIndex:r},{didMount:i}])=>{const l=I(!0),s=I(0);return p(C(i,P(s),y((([e,t])=>!!t)),b(!1)),l),f(C(M(t,i),P(l,e,o),y((([[,e],t,{sizeTree:o},n])=>e&&(!X(o)||void 0!==n)&&!t)),P(s)),(([,e])=>{setTimeout((()=>{x(n,(()=>{h(l,!0)})),h(r,e)}))})),{scrolledToInitialItem:l,initialTopMostItemIndex:s}}),c(ke,Z,Oe,Fe),{singleton:!0});function De(e){return!!e&&("smooth"===e?"smooth":"auto")}const Ge=W((([{totalCount:e,listRefresh:t},{isAtBottom:o,atBottomState:n},{scrollToIndex:r},{scrolledToInitialItem:i},{propsReady:l,didMount:s},{log:c},{scrollingInProgress:a}])=>{const u=I(!1),d=v();let m=null;function p(e){h(r,{index:"LAST",align:"end",behavior:e})}function T(e){const t=x(n,(t=>{!e||t.atBottom||"SIZE_INCREASED"!==t.notAtBottomBecause||m||(g(c)("scrolling to bottom due to increased size",{},D.DEBUG),p("auto"))}));setTimeout(t,100)}return f(C(M(C(O(e),z(1)),s),P(O(u),o,i,a),E((([[e,t],o,n,r,i])=>{let l=t&&r,s="auto";return l&&(s=((e,t)=>"function"==typeof e?De(e(t)):t&&De(e))(o,n||i),l=l&&!!s),{totalCount:e,shouldFollow:l,followOutputBehavior:s}})),y((({shouldFollow:e})=>e))),(({totalCount:e,followOutputBehavior:o})=>{m&&(m(),m=null),m=x(t,(()=>{g(c)("following output to ",{totalCount:e},D.DEBUG),p(o),m=null}))})),f(C(M(O(u),e,l),y((([e,,t])=>e&&t)),R((({value:e},[,t])=>({refreshed:e===t,value:t})),{refreshed:!1,value:0}),y((({refreshed:e})=>e)),P(u,e)),(([,e])=>{T(!1!==e)})),f(d,(()=>{T(!1!==g(u))})),f(M(O(u),n),(([e,t])=>{e&&!t.atBottom&&"VIEWPORT_HEIGHT_DECREASING"===t.notAtBottomBecause&&p("auto")})),{followOutput:u,autoscrollToBottom:d}}),c(ke,je,Oe,Ae,Fe,N,Z));function Ne(e){return e.reduce(((e,t)=>(e.groupIndices.push(e.totalCount),e.totalCount+=t+1,e)),{totalCount:0,groupIndices:[]})}const _e=W((([{totalCount:e,groupIndices:t,sizes:o},{scrollTop:n,headerHeight:r}])=>{const i=v(),l=v(),s=T(C(i,E(Ne)));return p(C(s,E((e=>e.totalCount))),e),p(C(s,E((e=>e.groupIndices))),t),p(C(M(n,o,r),y((([e,t])=>ze(t))),E((([e,t,o])=>oe(t.groupOffsetTree,Math.max(e-o,0),"v")[0])),H(),E((e=>[e]))),l),{groupCounts:i,topItemsIndexes:l}}),c(ke,Z));function Ue(e,t){return!(!e||e[0]!==t[0]||e[1]!==t[1])}function $e(e,t){return!(!e||e.startIndex!==t.startIndex||e.endIndex!==t.endIndex)}const Ke="top",qe="bottom",Ye="none";function Ze(e,t,o){return"number"==typeof e?o===Me&&t===Ke||o===We&&t===qe?e:0:o===Me?t===Ke?e.main:e.reverse:t===qe?e.main:e.reverse}function Je(e,t){return"number"==typeof e?e:e[t]||0}const Qe=W((([{scrollTop:e,viewportHeight:t,deviation:o,headerHeight:n,fixedHeaderHeight:r}])=>{const i=v(),l=I(0),s=I(0),c=I(0);return{listBoundary:i,overscan:c,topListHeight:l,increaseViewportBy:s,visibleRange:w(C(M(O(e),O(t),O(n),O(i,Ue),O(c),O(l),O(r),O(o),O(s)),E((([e,t,o,[n,r],i,l,s,c,a])=>{const u=e-c,d=l+s,f=Math.max(o-u,0);let h=Ye;const m=Je(a,Ke),g=Je(a,qe);return n-=c,r+=o+s,(n+=o+s)>e+d-m&&(h=Me),(r-=c)<e-f+t+g&&(h=We),h!==Ye?[Math.max(u-o-Ze(i,Ke,h)-m,0),u-f-s+t+Ze(i,qe,h)+g]:null})),y((e=>null!=e)),H(Ue)),[0,0])}}),c(Z),{singleton:!0});const Xe={items:[],topItems:[],offsetTop:0,offsetBottom:0,top:0,bottom:0,topListHeight:0,totalCount:0,firstItemIndex:0};function et(e,t,o){if(0===e.length)return[];if(!ze(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=fe(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 tt(e,t,o,n,r,i){const{lastSize:l,lastOffset:s,lastIndex:c}=r;let a=0,u=0;if(e.length>0){a=e[0].offset;const t=e[e.length-1];u=t.offset+t.size}const d=o-c,f=a,h=s+d*l+(d-1)*n-u;return{items:et(e,r,i),topItems:et(t,r,i),topListHeight:t.reduce(((e,t)=>t.size+e),0),offsetTop:a,offsetBottom:h,top:f,bottom:u,totalCount:o,firstItemIndex:i}}const ot=W((([{sizes:e,totalCount:t,data:o,firstItemIndex:n,gap:r},i,{visibleRange:l,listBoundary:c,topListHeight:a},{scrolledToInitialItem:u,initialTopMostItemIndex:d},{topListHeight:f},h,{didMount:m},{recalcInProgress:g}])=>{const x=I([]),S=v();p(i.topItemsIndexes,x);const b=w(C(M(m,g,O(l,Ue),O(t),O(e),O(d),u,O(x),O(n),O(r),o),y((([e,t])=>e&&!t)),E((([,,[e,t],o,n,r,i,l,c,a,u])=>{const d=n,{sizeTree:f,offsetTree:h}=d;if(0===o||0===e&&0===t)return{...Xe,totalCount:o};if(X(f))return tt(function(e,t,o){if(ze(t)){const n=Re(e,t);return[{index:oe(t.groupOffsetTree,n)[0],size:0,offset:0},{index:n,size:0,offset:0,data:o&&o[0]}]}return[{index:e,size:0,offset:0,data:o&&o[0]}]}(function(e,t){const o=t-1;return"number"==typeof e?e:"LAST"===e.index?o:e.index}(r,o),d,u),[],o,a,d,c);const m=[];if(l.length>0){const e=l[0],t=l[l.length-1];let o=0;for(const n of fe(f,e,t)){const r=n.value,i=Math.max(n.start,e),l=Math.min(n.end,t);for(let e=i;e<=l;e++)m.push({index:e,size:r,offset:o,data:u&&u[e]}),o+=r}}if(!i)return tt([],m,o,a,d,c);const g=l.length>0?l[l.length-1]+1:0,p=Se(h,e,t,g);if(0===p.length)return null;const x=o-1;return tt(s([],(o=>{for(const n of p){const r=n.value;let i=r.offset,l=n.start;const s=r.size;if(r.offset<e){l+=Math.floor((e-r.offset+a)/(s+a));const t=l-n.start;i+=t*s+t*a}l<g&&(i+=(g-l)*s,l=g);const c=Math.min(n.end,x);for(let e=l;e<=c&&!(i>=t);e++)o.push({index:e,size:s,offset:i,data:u&&u[e]}),i+=s+a}})),m,o,a,d,c)})),y((e=>null!==e)),H()),Xe);p(C(o,y((e=>void 0!==e)),E((e=>null==e?void 0:e.length))),t),p(C(b,E((e=>e.topListHeight))),f),p(f,a),p(C(b,E((e=>[e.top,e.bottom]))),c),p(C(b,E((e=>e.items))),S);return{listState:b,topItemsIndexes:x,endReached:T(C(b,y((({items:e})=>e.length>0)),P(t,o),y((([{items:e},t])=>e[e.length-1].originalIndex===t-1)),E((([,e,t])=>[e-1,t])),H(Ue),E((([e])=>e)))),startReached:T(C(b,B(200),y((({items:e,topItems:t})=>e.length>0&&e[0].originalIndex===t.length)),E((({items:e})=>e[0].index)),H())),rangeChanged:T(C(b,y((({items:e})=>e.length>0)),E((({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}})),H($e))),itemsRendered:S,...h}}),c(ke,_e,Qe,Ae,Oe,je,Fe,ve),{singleton:!0}),nt=W((([{sizes:e,firstItemIndex:t,data:o,gap:n},{listState:r},{didMount:i}])=>{const l=I(0);return p(C(i,P(l),y((([,e])=>0!==e)),P(e,t,n,o),E((([[,e],t,o,n,r=[]])=>{let i=0;if(t.groupIndices.length>0)for(const s of t.groupIndices){if(s-i>=e)break;i++}const l=e+i;return tt(Array.from({length:l}).map(((e,t)=>({index:t,size:0,offset:0,data:r[t]}))),[],l,n,t,o)}))),r),{initialItemCount:l}}),c(ke,ot,Fe),{singleton:!0}),rt=W((([{scrollVelocity:e}])=>{const t=I(!1),o=v(),n=I(!1);return p(C(e,P(n,t,o),y((([e,t])=>!!t)),E((([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})),H()),t),f(C(M(t,e,o),P(n)),(([[e,t,o],n])=>e&&n&&n.change&&n.change(t,o))),{isSeeking:t,scrollSeekConfiguration:n,scrollVelocity:e,scrollSeekRangeChanged:o}}),c(je),{singleton:!0}),it=W((([{topItemsIndexes:e}])=>{const t=I(0);return p(C(t,y((e=>e>0)),E((e=>Array.from({length:e}).map(((e,t)=>t))))),e),{topItemCount:t}}),c(ot)),lt=W((([{footerHeight:e,headerHeight:t,fixedHeaderHeight:o,fixedFooterHeight:n},{listState:r}])=>{const i=v(),l=w(C(M(e,n,t,o,r),E((([e,t,o,n,r])=>e+t+o+n+r.offsetBottom+r.bottom))),0);return p(O(l),i),{totalListHeight:l,totalListHeightChanged:i}}),c(Z,ot),{singleton:!0});function st(e){let t,o=!1;return()=>(o||(o=!0,t=e()),t)}const ct=st((()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent))),at=W((([{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:g},{recalcInProgress:x}])=>{const v=T(C(c,P(s),R((([,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]),y((([e])=>0!==e)),P(t,l,n,i,g),y((([,e,t,o])=>!o&&0!==e&&t===Me)),E((([[e],,,,,t])=>(t("Upward scrolling compensation",{amount:e},D.DEBUG),e)))));function I(t){t>0?(h(e,{top:-t,behavior:"auto"}),h(o,0)):(h(o,0),h(e,{top:-t,behavior:"auto"}))}return f(C(v,P(o,r)),(([e,t,n])=>{n&&ct()?h(o,t-e):I(-e)})),f(C(M(w(r,!1),o,x),y((([e,t,o])=>!e&&!o&&0!==t)),E((([e,t])=>t)),B(1)),I),p(C(u,E((e=>({top:-e})))),e),f(C(a,P(d,m),E((([e,{lastSize:t},o])=>e*t+e*o))),(t=>{h(o,t),requestAnimationFrame((()=>{h(e,{top:t}),requestAnimationFrame((()=>{h(o,0),h(x,!1)}))}))})),{deviation:o}}),c(Z,je,ot,ke,N,ve)),ut=W((([{totalListHeight:e},{didMount:t},{scrollTo:o}])=>{const n=I(0);return f(C(t,P(n),y((([,e])=>0!==e)),E((([,e])=>({top:e})))),(t=>{x(C(e,y((e=>0!==e))),(()=>{setTimeout((()=>{h(o,t)}))}))})),{initialScrollTop:n}}),c(lt,Fe,Z),{singleton:!0}),dt=W((([{viewportHeight:e},{totalListHeight:t}])=>{const o=I(!1);return{alignToBottom:o,paddingTopAddition:w(C(M(o,e,t),y((([e])=>e)),E((([,e,t])=>Math.max(0,e-t))),H()),0)}}),c(Z,lt),{singleton:!0}),ft=W((([{scrollTo:e,scrollContainerState:t}])=>{const o=v(),n=v(),r=v(),i=I(!1),l=I(void 0);return p(C(M(o,n),E((([{viewportHeight:e,scrollTop:t,scrollHeight:o},{offsetTop:n}])=>({scrollTop:Math.max(0,t-n),scrollHeight:o,viewportHeight:e})))),t),p(C(e,P(n),E((([e,{offsetTop:t}])=>({...e,top:e.top+t})))),r),{useWindowScroll:i,customScrollParent:l,windowScrollContainerState:o,windowViewportRect:n,windowScrollTo:r}}),c(Z)),ht=W((([{sizes:e,totalCount:t,gap:o},{scrollTop:n,viewportHeight:r,headerHeight:i,fixedHeaderHeight:l,fixedFooterHeight:s,scrollingInProgress:c},{scrollToIndex:a}])=>{const u=v();return p(C(u,P(e,r,t,i,l,s,n),P(o),E((([[e,t,o,n,r,i,l,s],a])=>{const{done:u,behavior:d,align:f,...h}=e;let m=null;const g=be(e,t,n-1),p=Ee(g,t.offsetTree,a)+r+i;if(p<s+i)m={...h,behavior:d,align:f??"start"};else{p+oe(t.sizeTree,g)[1]>s+o-l&&(m={...h,behavior:d,align:f??"end"})}return m?u&&x(C(c,z(1),y((e=>!1===e))),u):u&&u(),m})),y((e=>null!==e))),a),{scrollIntoView:u}}),c(ke,Z,Oe,ot,N),{singleton:!0}),mt=W((([e,t,o,n,r,i,l,s,c])=>({...e,...t,...o,...n,...r,...i,...l,...s,...c})),c(Qe,nt,Fe,rt,lt,ut,dt,ft,ht)),gt=W((([{totalCount:e,sizeRanges:t,fixedItemSize:o,defaultItemSize:n,trackItemSizes:r,itemSize:i,data:l,firstItemIndex:s,groupIndices:c,statefulTotalCount:a,gap:u},{initialTopMostItemIndex:d,scrolledToInitialItem:f},h,m,{listState:g,topItemsIndexes:x,...v},{scrollToIndex:I},T,{topItemCount:w},{groupCounts:S},H,y])=>(p(v.rangeChanged,H.scrollSeekRangeChanged),p(C(H.windowViewportRect,E((e=>e.visibleHeight))),h.viewportHeight),{totalCount:e,data:l,firstItemIndex:s,sizeRanges:t,initialTopMostItemIndex:d,scrolledToInitialItem:f,topItemsIndexes:x,topItemCount:w,groupCounts:S,fixedItemHeight:o,defaultItemHeight:n,gap:u,...m,statefulTotalCount:a,listState:g,scrollToIndex:I,trackItemSizes:r,itemSize:i,groupIndices:c,...v,...H,...h,...y})),c(ke,Ae,Z,Ge,ot,Oe,at,it,_e,mt,N)),pt="-webkit-sticky",xt="sticky",vt=st((()=>{if("undefined"==typeof document)return xt;const e=document.createElement("div");return e.style.position=pt,e.style.position===pt?pt:xt}));function It(e,o){const n=t.useRef(null),r=t.useCallback((t=>{if(null===t||!t.offsetParent)return;const r=t.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},e(n.current)}),[e,o]),{callbackRef:i,ref:l}=_(r),s=t.useCallback((()=>{r(l.current)}),[r,l]);return t.useEffect((()=>{if(o){o.addEventListener("scroll",s);const e=new ResizeObserver(s);return e.observe(o),()=>{o.removeEventListener("scroll",s),e.unobserve(o)}}return window.addEventListener("scroll",s),window.addEventListener("resize",s),()=>{window.removeEventListener("scroll",s),window.removeEventListener("resize",s)}}),[s,o]),i}const Tt=t.createContext(void 0),wt=t.createContext(void 0);function Ct(e){return e}const St=W((([e,t])=>({...e,...t})),c(gt,W((()=>{const e=I((e=>`Item ${e}`)),t=I(null),o=I((e=>`Group ${e}`)),n=I({}),r=I(Ct),i=I("div"),l=I(d),s=(e,t=null)=>w(C(n,E((t=>t[e])),H()),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")}})))),Ht=({height:t})=>e.jsx("div",{style:{height:t}}),yt={position:vt(),zIndex:1,overflowAnchor:"none"},Et={overflowAnchor:"none"},bt=t.memo((function({showTopList:e=!1}){const o=Gt("listState"),n=Dt("sizeRanges"),r=Gt("useWindowScroll"),i=Gt("customScrollParent"),l=Dt("windowScrollContainerState"),s=Dt("scrollContainerState"),c=i||r?l:s,a=Gt("itemContent"),u=Gt("context"),f=Gt("groupContent"),h=Gt("trackItemSizes"),m=Gt("itemSize"),g=Gt("log"),p=Dt("gap"),{callbackRef:x}=$(n,m,h,e?d:c,g,p,i),[v,I]=t.useState(0);Nt("deviation",(e=>{v!==e&&I(e)}));const T=Gt("EmptyPlaceholder"),w=Gt("ScrollSeekPlaceholder")||Ht,C=Gt("ListComponent"),S=Gt("ItemComponent"),H=Gt("GroupComponent"),y=Gt("computeItemKey"),E=Gt("isSeeking"),b=Gt("groupIndices").length>0,R=Gt("paddingTopAddition"),z=e?{}:{boxSizing:"border-box",paddingTop:o.offsetTop+R,paddingBottom:o.offsetBottom,marginTop:v};return!e&&0===o.totalCount&&T?t.createElement(T,kt(T,u)):t.createElement(C,{...kt(C,u),ref:x,style:z,"data-test-id":e?"virtuoso-top-item-list":"virtuoso-item-list"},(e?o.topItems:o.items).map((e=>{const n=e.originalIndex,r=y(n+o.firstItemIndex,e.data,u);return E?t.createElement(w,{...kt(w,u),key:r,index:e.index,height:e.size,type:e.type||"item",..."group"===e.type?{}:{groupIndex:e.groupIndex}}):"group"===e.type?t.createElement(H,{...kt(H,u),key:r,"data-index":n,"data-known-size":e.size,"data-item-index":e.index,style:yt},f(e.index)):t.createElement(S,{...kt(S,u),key:r,"data-index":n,"data-known-size":e.size,"data-item-index":e.index,"data-item-group-index":e.groupIndex,item:e.data,style:Et},b?a(e.index,e.groupIndex,e.data,u):a(e.index,e.data,u))})))})),Rt={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},zt={width:"100%",height:"100%",position:"absolute",top:0},Bt={width:"100%",position:vt(),top:0,zIndex:1};function kt(e,t){if("string"!=typeof e)return{context:t}}const Pt=t.memo((function(){const e=Gt("HeaderComponent"),o=Dt("headerHeight"),n=Gt("headerFooterTag"),r=U((e=>o(K(e,"height")))),i=Gt("context");return e?t.createElement(n,{ref:r},t.createElement(e,kt(e,i))):null})),Lt=t.memo((function(){const e=Gt("FooterComponent"),o=Dt("footerHeight"),n=Gt("headerFooterTag"),r=U((e=>o(K(e,"height")))),i=Gt("context");return e?t.createElement(n,{ref:r},t.createElement(e,kt(e,i))):null}));function Ot({usePublisher:e,useEmitter:o,useEmitterValue:n}){return t.memo((function({style:r,children:i,...l}){const s=e("scrollContainerState"),c=n("ScrollerComponent"),a=e("smoothScrollTargetReached"),u=n("scrollerRef"),d=n("context"),{scrollerRef:f,scrollByCallback:h,scrollToCallback:m}=Y(s,a,c,u);return o("scrollTo",m),o("scrollBy",h),t.createElement(c,{ref:f,style:{...Rt,...r},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...l,...kt(c,d)},i)}))}function Mt({usePublisher:e,useEmitter:o,useEmitterValue:n}){return t.memo((function({style:r,children:i,...l}){const s=e("windowScrollContainerState"),c=n("ScrollerComponent"),a=e("smoothScrollTargetReached"),u=n("totalListHeight"),f=n("deviation"),h=n("customScrollParent"),m=n("context"),{scrollerRef:g,scrollByCallback:p,scrollToCallback:x}=Y(s,a,c,d,h);return A((()=>(g.current=h||window,()=>{g.current=null})),[g,h]),o("windowScrollTo",x),o("scrollBy",p),t.createElement(c,{style:{position:"relative",...r,...0!==u?{height:u+f}:{}},"data-virtuoso-scroller":!0,...l,...kt(c,m)},i)}))}const Wt=({children:o})=>{const r=t.useContext(Tt),i=Dt("viewportHeight"),l=Dt("fixedItemHeight"),s=U(n(i,(e=>K(e,"height"))));return t.useEffect((()=>{r&&(i(r.viewportHeight),l(r.itemHeight))}),[r,i,l]),e.jsx("div",{style:zt,ref:s,"data-viewport-type":"element",children:o})},Vt=({children:o})=>{const n=t.useContext(Tt),r=Dt("windowViewportRect"),i=Dt("fixedItemHeight"),l=Gt("customScrollParent"),s=It(r,l);return t.useEffect((()=>{n&&(i(n.itemHeight),r({offsetTop:0,visibleHeight:n.viewportHeight,visibleWidth:100}))}),[n,r,i]),e.jsx("div",{ref:s,style:zt,"data-viewport-type":"window",children:o})},jt=({children:e})=>{const o=Gt("TopItemListComponent"),n=Gt("headerHeight"),r={...Bt,marginTop:`${n}px`},i=Gt("context");return t.createElement(o||"div",{style:r,context:i},e)},Ft=t.memo((function(t){const o=Gt("useWindowScroll"),n=Gt("topItemsIndexes").length>0,r=Gt("customScrollParent"),i=r||o?Ut:_t,l=r||o?Vt:Wt;return e.jsxs(i,{...t,children:[n&&e.jsx(jt,{children:e.jsx(bt,{showTopList:!0})}),e.jsxs(l,{children:[e.jsx(Pt,{}),e.jsx(bt,{}),e.jsx(Lt,{})]})]})})),{Component:At,usePublisher:Dt,useEmitterValue:Gt,useEmitter:Nt}=F(St,{required:{},optional:{context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",groupContent:"groupContent",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",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"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Ft),_t=Ot({usePublisher:Dt,useEmitterValue:Gt,useEmitter:Nt}),Ut=Mt({usePublisher:Dt,useEmitterValue:Gt,useEmitter:Nt}),$t=At,Kt=At,qt={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},Yt={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:Zt,ceil:Jt,floor:Qt,min:Xt,max:eo}=Math;function to(e,t,o){return Array.from({length:t-e+1}).map(((t,n)=>({index:n+e,data:null==o?void 0:o[n+e]})))}function oo(e,t){return e&&e.column===t.column&&e.row===t.row}const no=W((([{overscan:e,visibleRange:t,listBoundary:o},{scrollTop:n,viewportHeight:r,scrollBy:i,scrollTo:l,smoothScrollTargetReached:s,scrollContainerState:c,footerHeight:a,headerHeight:u},d,f,{propsReady:h,didMount:m},{windowViewportRect:g,windowScrollTo:x,useWindowScroll:S,customScrollParent:R,windowScrollContainerState:z},B])=>{const k=I(0),L=I(0),W=I(qt),V=I({height:0,width:0}),j=I({height:0,width:0}),F=v(),A=v(),D=I(0),G=I(void 0),N=I({row:0,column:0});p(C(M(m,L,G),y((([,e])=>0!==e)),E((([,e,t])=>({items:to(0,e-1,t),top:0,bottom:0,offsetBottom:0,offsetTop:0,itemHeight:0,itemWidth:0})))),W),p(C(M(O(k),t,O(N,oo),O(j,((e,t)=>e&&e.width===t.width&&e.height===t.height)),G),P(V),E((([[e,[t,o],n,r,i],l])=>{const{row:s,column:c}=n,{height:a,width:u}=r,{width:d}=l;if(0===e||0===d)return qt;if(0===u)return function(e){return{...Yt,items:e}}(to(0,0,i));const f=lo(d,u,c);let h=f*Qt((t+s)/(a+s)),m=f*Jt((o+s)/(a+s))-1;m=Xt(e-1,eo(m,f-1)),h=Xt(m,eo(0,h));const g=to(h,m,i),{top:p,bottom:x}=ro(l,n,r,g),v=Jt(e/f);return{items:g,offsetTop:p,offsetBottom:v*a+(v-1)*s-x,top:p,bottom:x,itemHeight:a,itemWidth:u}}))),W),p(C(G,y((e=>void 0!==e)),E((e=>e.length))),k),p(C(V,E((({height:e})=>e))),r),p(C(M(V,j,W,N),E((([e,t,{items:o},n])=>{const{top:r,bottom:i}=ro(e,n,t,o);return[r,i]})),H(Ue)),o);const _=T(C(O(W),y((({items:e})=>e.length>0)),P(k),y((([{items:e},t])=>e[e.length-1].index===t-1)),E((([,e])=>e-1)),H())),U=T(C(O(W),y((({items:e})=>e.length>0&&0===e[0].index)),b(0),H())),$=T(C(O(W),y((({items:e})=>e.length>0)),E((({items:e})=>({startIndex:e[0].index,endIndex:e[e.length-1].index}))),H($e)));p($,f.scrollSeekRangeChanged),p(C(F,P(V,j,k,N),E((([e,t,o,n,r])=>{const i=Le(e),{align:l,behavior:s,offset:c}=i;let a=i.index;"LAST"===a&&(a=n-1),a=eo(0,a,Xt(n-1,a));let u=io(t,r,o,a);return"end"===l?u=Zt(u-t.height+o.height):"center"===l&&(u=Zt(u-t.height/2+o.height/2)),c&&(u+=c),{top:u,behavior:s}}))),l);const K=w(C(W,E((e=>e.offsetBottom+e.bottom))),0);return p(C(g,E((e=>({width:e.visibleWidth,height:e.visibleHeight})))),V),{data:G,totalCount:k,viewportDimensions:V,itemDimensions:j,scrollTop:n,scrollHeight:A,overscan:e,scrollBy:i,scrollTo:l,scrollToIndex:F,smoothScrollTargetReached:s,windowViewportRect:g,windowScrollTo:x,useWindowScroll:S,customScrollParent:R,windowScrollContainerState:z,deviation:D,scrollContainerState:c,footerHeight:a,headerHeight:u,initialItemCount:L,gap:N,...f,gridState:W,totalListHeight:K,...d,startReached:U,endReached:_,rangeChanged:$,propsReady:h,...B}}),c(Qe,Z,je,rt,Fe,ft,N));function ro(e,t,o,n){const{height:r}=o;if(void 0===r||0===n.length)return{top:0,bottom:0};return{top:io(e,t,o,n[0].index),bottom:io(e,t,o,n[n.length-1].index)+r}}function io(e,t,o,n){const r=lo(e.width,o.width,t.column),i=Qt(n/r),l=i*o.height+eo(0,i-1)*t.row;return l>0?l+t.row:l}function lo(e,t,o){return eo(1,Qt((e+o)/(t+o)))}const so=W((([e,t])=>({...e,...t})),c(no,W((()=>{const e=I((e=>`Item ${e}`)),t=I({}),o=I(null),n=I("virtuoso-grid-item"),r=I("virtuoso-grid-list"),i=I(Ct),l=I("div"),s=I(d),c=(e,o=null)=>w(C(t,E((t=>t[e])),H()),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=t.memo((function(){const e=xo("gridState"),o=xo("listClassName"),n=xo("itemClassName"),r=xo("itemContent"),i=xo("computeItemKey"),l=xo("isSeeking"),s=po("scrollHeight"),c=xo("ItemComponent"),a=xo("ListComponent"),u=xo("ScrollSeekPlaceholder"),d=xo("context"),f=po("itemDimensions"),h=po("gap"),m=xo("log"),g=U((e=>{const t=e.parentElement.parentElement.scrollHeight;s(t);const o=e.firstChild;o&&f(o.getBoundingClientRect()),h({row:wo("row-gap",getComputedStyle(e).rowGap,m),column:wo("column-gap",getComputedStyle(e).columnGap,m)})}));return t.createElement(a,{ref:g,className:o,...kt(a,d),style:{paddingTop:e.offsetTop,paddingBottom:e.offsetBottom},"data-test-id":"virtuoso-item-list"},e.items.map((o=>{const s=i(o.index,o.data,d);return l?t.createElement(u,{key:s,...kt(u,d),index:o.index,height:e.itemHeight,width:e.itemWidth}):t.createElement(c,{...kt(c,d),className:n,"data-index":o.index,key:s},r(o.index,o.data,d))})))})),ao=t.memo((function(){const e=xo("HeaderComponent"),o=po("headerHeight"),n=xo("headerFooterTag"),r=U((e=>o(K(e,"height")))),i=xo("context");return e?t.createElement(n,{ref:r},t.createElement(e,kt(e,i))):null})),uo=t.memo((function(){const e=xo("FooterComponent"),o=po("footerHeight"),n=xo("headerFooterTag"),r=U((e=>o(K(e,"height")))),i=xo("context");return e?t.createElement(n,{ref:r},t.createElement(e,kt(e,i))):null})),fo=({children:o})=>{const n=t.useContext(wt),r=po("itemDimensions"),i=po("viewportDimensions"),l=U((e=>{i(e.getBoundingClientRect())}));return t.useEffect((()=>{n&&(i({height:n.viewportHeight,width:n.viewportWidth}),r({height:n.itemHeight,width:n.itemWidth}))}),[n,i,r]),e.jsx("div",{style:zt,ref:l,children:o})},ho=({children:o})=>{const n=t.useContext(wt),r=po("windowViewportRect"),i=po("itemDimensions"),l=xo("customScrollParent"),s=It(r,l);return t.useEffect((()=>{n&&(i({height:n.itemHeight,width:n.itemWidth}),r({offsetTop:0,visibleHeight:n.viewportHeight,visibleWidth:n.viewportWidth}))}),[n,r,i]),e.jsx("div",{ref:s,style:zt,children:o})},mo=t.memo((function({...t}){const o=xo("useWindowScroll"),n=xo("customScrollParent"),r=n||o?To:Io,i=n||o?ho:fo;return e.jsx(r,{...t,children:e.jsxs(i,{children:[e.jsx(ao,{}),e.jsx(co,{}),e.jsx(uo,{})]})})})),{Component:go,usePublisher:po,useEmitterValue:xo,useEmitter:vo}=F(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"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange"}},mo),Io=Ot({usePublisher:po,useEmitterValue:xo,useEmitter:vo}),To=Mt({usePublisher:po,useEmitterValue:xo,useEmitter:vo});function wo(e,t,o){return"normal"===t||(null==t?void 0:t.endsWith("px"))||o(`${e} was not resolved to pixel value correctly`,t,D.WARN),"normal"===t?0:parseInt(t??"0",10)}const Co=go,So=W((([e,t])=>({...e,...t})),c(gt,W((()=>{const t=I((t=>e.jsxs("td",{children:["Item $",t]}))),o=I(null),n=I(null),r=I(null),i=I({}),l=I(Ct),s=I(d),c=(e,t=null)=>w(C(i,E((t=>t[e])),H()),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")}})))),Ho=({height:t})=>e.jsx("tr",{children:e.jsx("td",{style:{height:t}})}),yo=({height:t})=>e.jsx("tr",{children:e.jsx("td",{style:{height:t,padding:0,border:0}})}),Eo=t.memo((function(){const o=Po("listState"),n=ko("sizeRanges"),r=Po("useWindowScroll"),i=Po("customScrollParent"),l=ko("windowScrollContainerState"),s=ko("scrollContainerState"),c=i||r?l:s,a=Po("itemContent"),u=Po("trackItemSizes"),d=Po("itemSize"),f=Po("log"),{callbackRef:h,ref:m}=$(n,d,u,c,f,void 0,i),[g,p]=t.useState(0);Lo("deviation",(e=>{g!==e&&(m.current.style.marginTop=`${e}px`,p(e))}));const x=Po("EmptyPlaceholder"),v=Po("ScrollSeekPlaceholder")||Ho,I=Po("FillerRow")||yo,T=Po("TableBodyComponent"),w=Po("TableRowComponent"),C=Po("computeItemKey"),S=Po("isSeeking"),H=Po("paddingTopAddition"),y=Po("firstItemIndex"),E=Po("statefulTotalCount"),b=Po("context");if(0===E&&x)return t.createElement(x,kt(x,b));const R=o.offsetTop+H+g,z=o.offsetBottom,B=R>0?e.jsx(I,{height:R},"padding-top"):null,k=z>0?e.jsx(I,{height:z},"padding-bottom"):null,P=o.items.map((e=>{const o=e.originalIndex,n=C(o+y,e.data,b);return S?t.createElement(v,{...kt(v,b),key:n,index:e.index,height:e.size,type:e.type||"item"}):t.createElement(w,{...kt(w,b),key:n,"data-index":o,"data-known-size":e.size,"data-item-index":e.index,item:e.data,style:{overflowAnchor:"none"}},a(e.index,e.data,b))}));return t.createElement(T,{ref:h,"data-test-id":"virtuoso-item-list",...kt(T,b)},[B,...P,k])})),bo=({children:o})=>{const r=t.useContext(Tt),i=ko("viewportHeight"),l=ko("fixedItemHeight"),s=U(n(i,(e=>K(e,"height"))));return t.useEffect((()=>{r&&(i(r.viewportHeight),l(r.itemHeight))}),[r,i,l]),e.jsx("div",{style:zt,ref:s,"data-viewport-type":"element",children:o})},Ro=({children:o})=>{const n=t.useContext(Tt),r=ko("windowViewportRect"),i=ko("fixedItemHeight"),l=Po("customScrollParent"),s=It(r,l);return t.useEffect((()=>{n&&(i(n.itemHeight),r({offsetTop:0,visibleHeight:n.viewportHeight,visibleWidth:100}))}),[n,r,i]),e.jsx("div",{ref:s,style:zt,"data-viewport-type":"window",children:o})},zo=t.memo((function(o){const r=Po("useWindowScroll"),i=Po("customScrollParent"),l=ko("fixedHeaderHeight"),s=ko("fixedFooterHeight"),c=Po("fixedHeaderContent"),a=Po("fixedFooterContent"),u=Po("context"),d=U(n(l,(e=>K(e,"height")))),f=U(n(s,(e=>K(e,"height")))),h=i||r?Mo:Oo,m=i||r?Ro:bo,g=Po("TableComponent"),p=Po("TableHeadComponent"),x=Po("TableFooterComponent"),v=c?t.createElement(p,{key:"TableHead",style:{zIndex:1,position:"sticky",top:0},ref:d,...kt(p,u)},c()):null,I=a?t.createElement(x,{key:"TableFoot",style:{zIndex:1,position:"sticky",bottom:0},ref:f,...kt(x,u)},a()):null;return e.jsx(h,{...o,children:e.jsx(m,{children:t.createElement(g,{style:{borderSpacing:0},...kt(g,u)},[v,e.jsx(Eo,{},"TableBody"),I])})})})),{Component:Bo,usePublisher:ko,useEmitterValue:Po,useEmitter:Lo}=F(So,{required:{},optional:{context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",fixedHeaderContent:"fixedHeaderContent",fixedFooterContent:"fixedFooterContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",totalCount:"totalCount",topItemCount:"topItemCount",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",groupCounts:"groupCounts",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},zo),Oo=Ot({usePublisher:ko,useEmitterValue:Po,useEmitter:Lo}),Mo=Mt({usePublisher:ko,useEmitterValue:Po,useEmitter:Lo}),Wo=Bo;exports.GroupedVirtuoso=Kt,exports.LogLevel=D,exports.TableVirtuoso=Wo,exports.Virtuoso=$t,exports.VirtuosoGrid=Co,exports.VirtuosoGridMockContext=wt,exports.VirtuosoMockContext=Tt;
package/dist/index.d.ts CHANGED
@@ -1,10 +1,13 @@
1
+ /// <reference types="react" />
2
+
1
3
  import { ComponentPropsWithRef } from 'react';
2
4
  import { ComponentType } from 'react';
5
+ import { Context } from 'react';
6
+ import { HTMLProps } from 'react';
3
7
  import { Key } from 'react';
4
- import { default as React_2 } from 'react';
5
- import * as React_3 from 'react';
6
8
  import { ReactElement } from 'react';
7
9
  import { ReactNode } from 'react';
10
+ import { Ref } from 'react';
8
11
 
9
12
  /**
10
13
  * Customize the Virtuoso rendering by passing a set of custom components.
@@ -81,9 +84,9 @@ export declare interface FillerRowProps {
81
84
  height: number;
82
85
  }
83
86
 
84
- export declare type FixedFooterContent = (() => React_2.ReactNode) | null;
87
+ export declare type FixedFooterContent = (() => ReactNode) | null;
85
88
 
86
- export declare type FixedHeaderContent = (() => React_2.ReactNode) | null;
89
+ export declare type FixedHeaderContent = (() => ReactNode) | null;
87
90
 
88
91
  export declare interface FlatIndexLocationWithAlign extends LocationOptions {
89
92
  /**
@@ -170,7 +173,7 @@ export declare type GridListProps = Pick<ComponentPropsWithRef<'div'>, 'style' |
170
173
  'data-test-id': string;
171
174
  };
172
175
 
173
- export declare type GridRootProps = Omit<React_2.HTMLProps<HTMLDivElement>, 'ref' | 'data'>;
176
+ export declare type GridRootProps = Omit<HTMLProps<HTMLDivElement>, 'ref' | 'data'>;
174
177
 
175
178
  /**
176
179
  * Passed to the GridComponents.ScrollSeekPlaceholder custom component
@@ -190,7 +193,7 @@ export declare interface GroupedScrollIntoViewLocation extends ScrollIntoViewLoc
190
193
  }
191
194
 
192
195
  export declare const GroupedVirtuoso: <ItemData = any, Context = any>(props: GroupedVirtuosoProps<ItemData, Context> & {
193
- ref?: React_3.Ref<GroupedVirtuosoHandle> | undefined;
196
+ ref?: Ref<GroupedVirtuosoHandle> | undefined;
194
197
  }) => ReactElement;
195
198
 
196
199
  export declare interface GroupedVirtuosoHandle {
@@ -274,7 +277,7 @@ export declare interface ListRange {
274
277
  endIndex: number;
275
278
  }
276
279
 
277
- export declare type ListRootProps = Omit<React_2.HTMLProps<HTMLDivElement>, 'ref' | 'data'>;
280
+ export declare type ListRootProps = Omit<HTMLProps<HTMLDivElement>, 'ref' | 'data'>;
278
281
 
279
282
  export declare interface LocationOptions {
280
283
  /**
@@ -431,10 +434,10 @@ export declare interface TableComponents<Data = unknown, Context = unknown> {
431
434
 
432
435
  export declare type TableProps = Pick<ComponentPropsWithRef<'table'>, 'style' | 'children'>;
433
436
 
434
- export declare type TableRootProps = Omit<React_2.HTMLProps<HTMLTableElement>, 'ref' | 'data'>;
437
+ export declare type TableRootProps = Omit<HTMLProps<HTMLTableElement>, 'ref' | 'data'>;
435
438
 
436
439
  export declare const TableVirtuoso: <ItemData = any, Context = any>(props: TableVirtuosoProps<ItemData, Context> & {
437
- ref?: React_3.Ref<TableVirtuosoHandle> | undefined;
440
+ ref?: Ref<TableVirtuosoHandle> | undefined;
438
441
  }) => ReactElement;
439
442
 
440
443
  export declare interface TableVirtuosoHandle {
@@ -620,11 +623,11 @@ export declare interface TableVirtuosoProps<D, C> extends Omit<VirtuosoProps<D,
620
623
  export declare type TopItemListProps = Pick<ComponentPropsWithRef<'div'>, 'style' | 'children'>;
621
624
 
622
625
  export declare const Virtuoso: <ItemData = any, Context = any>(props: VirtuosoProps<ItemData, Context> & {
623
- ref?: React_3.Ref<VirtuosoHandle> | undefined;
626
+ ref?: Ref<VirtuosoHandle> | undefined;
624
627
  }) => ReactElement;
625
628
 
626
629
  export declare const VirtuosoGrid: <Context = any>(props: VirtuosoGridProps<Context, unknown> & {
627
- ref?: React_3.Ref<VirtuosoGridHandle> | undefined;
630
+ ref?: Ref<VirtuosoGridHandle> | undefined;
628
631
  }) => ReactElement;
629
632
 
630
633
  export declare interface VirtuosoGridHandle {
@@ -633,7 +636,7 @@ export declare interface VirtuosoGridHandle {
633
636
  scrollBy(location: ScrollToOptions): void;
634
637
  }
635
638
 
636
- export declare const VirtuosoGridMockContext: React_3.Context<VirtuosoGridMockContextValue | undefined>;
639
+ export declare const VirtuosoGridMockContext: Context<VirtuosoGridMockContextValue | undefined>;
637
640
 
638
641
  export declare interface VirtuosoGridMockContextValue {
639
642
  viewportHeight: number;
@@ -754,7 +757,7 @@ export declare interface VirtuosoHandle {
754
757
  autoscrollToBottom(): void;
755
758
  }
756
759
 
757
- export declare const VirtuosoMockContext: React_3.Context<VirtuosoMockContextValue | undefined>;
760
+ export declare const VirtuosoMockContext: Context<VirtuosoMockContextValue | undefined>;
758
761
 
759
762
  export declare interface VirtuosoMockContextValue {
760
763
  viewportHeight: number;
package/dist/index.mjs CHANGED
@@ -1,6 +1,5 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
- import * as React from "react";
3
- import { createContext, forwardRef, useState, useImperativeHandle, createElement, useCallback, useContext, useLayoutEffect, useEffect, useRef } from "react";
2
+ import { createContext, forwardRef, useState, useImperativeHandle, createElement, useLayoutEffect, useEffect, useCallback, useContext, useRef, memo } from "react";
4
3
  import { flushSync } from "react-dom";
5
4
  const PUBLISH = 0;
6
5
  const SUBSCRIBE = 1;
@@ -321,7 +320,7 @@ function omit(keys, obj) {
321
320
  }
322
321
  return result;
323
322
  }
324
- const useIsomorphicLayoutEffect$2 = typeof document !== "undefined" ? React.useLayoutEffect : React.useEffect;
323
+ const useIsomorphicLayoutEffect$2 = typeof document !== "undefined" ? useLayoutEffect : useEffect;
325
324
  function systemToComponent(systemSpec, map2, Root) {
326
325
  const requiredPropNames = Object.keys(map2.required || {});
327
326
  const optionalPropNames = Object.keys(map2.optional || {});
@@ -392,7 +391,7 @@ function systemToComponent(systemSpec, map2, Root) {
392
391
  );
393
392
  });
394
393
  const usePublisher2 = (key) => {
395
- return useCallback(curry2to1(publish, React.useContext(Context)[key]), [key]);
394
+ return useCallback(curry2to1(publish, useContext(Context)[key]), [key]);
396
395
  };
397
396
  const useEmitterValue2 = (key) => {
398
397
  const system2 = useContext(Context);
@@ -2722,8 +2721,8 @@ function useWindowViewportRectRef(callback, customScrollParent) {
2722
2721
  }, [scrollAndResizeEventHandler, customScrollParent]);
2723
2722
  return callbackRef;
2724
2723
  }
2725
- const VirtuosoMockContext = React.createContext(void 0);
2726
- const VirtuosoGridMockContext = React.createContext(void 0);
2724
+ const VirtuosoMockContext = createContext(void 0);
2725
+ const VirtuosoGridMockContext = createContext(void 0);
2727
2726
  function identity(value) {
2728
2727
  return value;
2729
2728
  }
@@ -2770,7 +2769,7 @@ const combinedSystem$2 = /* @__PURE__ */ system(([listSystem2, propsSystem]) =>
2770
2769
  const DefaultScrollSeekPlaceholder$1 = ({ height }) => /* @__PURE__ */ jsx("div", { style: { height } });
2771
2770
  const GROUP_STYLE = { position: positionStickyCssValue(), zIndex: 1, overflowAnchor: "none" };
2772
2771
  const ITEM_STYLE = { overflowAnchor: "none" };
2773
- const Items$1 = /* @__PURE__ */ React.memo(function VirtuosoItems({ showTopList = false }) {
2772
+ const Items$1 = /* @__PURE__ */ memo(function VirtuosoItems({ showTopList = false }) {
2774
2773
  const listState = useEmitterValue$2("listState");
2775
2774
  const sizeRanges = usePublisher$2("sizeRanges");
2776
2775
  const useWindowScroll = useEmitterValue$2("useWindowScroll");
@@ -2794,7 +2793,7 @@ const Items$1 = /* @__PURE__ */ React.memo(function VirtuosoItems({ showTopList
2794
2793
  listGap,
2795
2794
  customScrollParent
2796
2795
  );
2797
- const [deviation, setDeviation] = React.useState(0);
2796
+ const [deviation, setDeviation] = useState(0);
2798
2797
  useEmitter$2("deviation", (value) => {
2799
2798
  if (deviation !== value) {
2800
2799
  setDeviation(value);
@@ -2896,7 +2895,7 @@ function contextPropIfNotDomElement(element, context) {
2896
2895
  }
2897
2896
  return { context };
2898
2897
  }
2899
- const Header$1 = /* @__PURE__ */ React.memo(function VirtuosoHeader() {
2898
+ const Header$1 = /* @__PURE__ */ memo(function VirtuosoHeader() {
2900
2899
  const Header2 = useEmitterValue$2("HeaderComponent");
2901
2900
  const headerHeight = usePublisher$2("headerHeight");
2902
2901
  const headerFooterTag = useEmitterValue$2("headerFooterTag");
@@ -2904,7 +2903,7 @@ const Header$1 = /* @__PURE__ */ React.memo(function VirtuosoHeader() {
2904
2903
  const context = useEmitterValue$2("context");
2905
2904
  return Header2 ? createElement(headerFooterTag, { ref }, createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null;
2906
2905
  });
2907
- const Footer$1 = /* @__PURE__ */ React.memo(function VirtuosoFooter() {
2906
+ const Footer$1 = /* @__PURE__ */ memo(function VirtuosoFooter() {
2908
2907
  const Footer2 = useEmitterValue$2("FooterComponent");
2909
2908
  const footerHeight = usePublisher$2("footerHeight");
2910
2909
  const headerFooterTag = useEmitterValue$2("headerFooterTag");
@@ -2913,7 +2912,7 @@ const Footer$1 = /* @__PURE__ */ React.memo(function VirtuosoFooter() {
2913
2912
  return Footer2 ? createElement(headerFooterTag, { ref }, createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null;
2914
2913
  });
2915
2914
  function buildScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, useEmitterValue: useEmitterValue2 }) {
2916
- const Scroller2 = React.memo(function VirtuosoScroller({ style, children, ...props }) {
2915
+ const Scroller2 = memo(function VirtuosoScroller({ style, children, ...props }) {
2917
2916
  const scrollContainerStateCallback = usePublisher2("scrollContainerState");
2918
2917
  const ScrollerComponent = useEmitterValue2("ScrollerComponent");
2919
2918
  const smoothScrollTargetReached = usePublisher2("smoothScrollTargetReached");
@@ -2944,7 +2943,7 @@ function buildScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, u
2944
2943
  return Scroller2;
2945
2944
  }
2946
2945
  function buildWindowScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, useEmitterValue: useEmitterValue2 }) {
2947
- const Scroller2 = React.memo(function VirtuosoWindowScroller({ style, children, ...props }) {
2946
+ const Scroller2 = memo(function VirtuosoWindowScroller({ style, children, ...props }) {
2948
2947
  const scrollContainerStateCallback = usePublisher2("windowScrollContainerState");
2949
2948
  const ScrollerComponent = useEmitterValue2("ScrollerComponent");
2950
2949
  const smoothScrollTargetReached = usePublisher2("smoothScrollTargetReached");
@@ -2985,7 +2984,7 @@ const Viewport$2 = ({ children }) => {
2985
2984
  const viewportHeight = usePublisher$2("viewportHeight");
2986
2985
  const fixedItemHeight = usePublisher$2("fixedItemHeight");
2987
2986
  const viewportRef = useSize(compose(viewportHeight, (el) => correctItemSize(el, "height")));
2988
- React.useEffect(() => {
2987
+ useEffect(() => {
2989
2988
  if (ctx) {
2990
2989
  viewportHeight(ctx.viewportHeight);
2991
2990
  fixedItemHeight(ctx.itemHeight);
@@ -2999,7 +2998,7 @@ const WindowViewport$2 = ({ children }) => {
2999
2998
  const fixedItemHeight = usePublisher$2("fixedItemHeight");
3000
2999
  const customScrollParent = useEmitterValue$2("customScrollParent");
3001
3000
  const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent);
3002
- React.useEffect(() => {
3001
+ useEffect(() => {
3003
3002
  if (ctx) {
3004
3003
  fixedItemHeight(ctx.itemHeight);
3005
3004
  windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: 100 });
@@ -3014,7 +3013,7 @@ const TopItemListContainer = ({ children }) => {
3014
3013
  const context = useEmitterValue$2("context");
3015
3014
  return createElement(TopItemList || "div", { style, context }, children);
3016
3015
  };
3017
- const ListRoot = /* @__PURE__ */ React.memo(function VirtuosoRoot(props) {
3016
+ const ListRoot = /* @__PURE__ */ memo(function VirtuosoRoot(props) {
3018
3017
  const useWindowScroll = useEmitterValue$2("useWindowScroll");
3019
3018
  const showTopList = useEmitterValue$2("topItemsIndexes").length > 0;
3020
3019
  const customScrollParent = useEmitterValue$2("customScrollParent");
@@ -3394,7 +3393,7 @@ const gridComponentPropsSystem = /* @__PURE__ */ system(() => {
3394
3393
  const combinedSystem$1 = /* @__PURE__ */ system(([gridSystem2, gridComponentPropsSystem2]) => {
3395
3394
  return { ...gridSystem2, ...gridComponentPropsSystem2 };
3396
3395
  }, tup(gridSystem, gridComponentPropsSystem));
3397
- const GridItems = /* @__PURE__ */ React.memo(function GridItems2() {
3396
+ const GridItems = /* @__PURE__ */ memo(function GridItems2() {
3398
3397
  const gridState = useEmitterValue$1("gridState");
3399
3398
  const listClassName = useEmitterValue$1("listClassName");
3400
3399
  const itemClassName = useEmitterValue$1("itemClassName");
@@ -3446,7 +3445,7 @@ const GridItems = /* @__PURE__ */ React.memo(function GridItems2() {
3446
3445
  })
3447
3446
  );
3448
3447
  });
3449
- const Header = React.memo(function VirtuosoHeader2() {
3448
+ const Header = memo(function VirtuosoHeader2() {
3450
3449
  const Header2 = useEmitterValue$1("HeaderComponent");
3451
3450
  const headerHeight = usePublisher$1("headerHeight");
3452
3451
  const headerFooterTag = useEmitterValue$1("headerFooterTag");
@@ -3454,7 +3453,7 @@ const Header = React.memo(function VirtuosoHeader2() {
3454
3453
  const context = useEmitterValue$1("context");
3455
3454
  return Header2 ? createElement(headerFooterTag, { ref }, createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null;
3456
3455
  });
3457
- const Footer = React.memo(function VirtuosoGridFooter() {
3456
+ const Footer = memo(function VirtuosoGridFooter() {
3458
3457
  const Footer2 = useEmitterValue$1("FooterComponent");
3459
3458
  const footerHeight = usePublisher$1("footerHeight");
3460
3459
  const headerFooterTag = useEmitterValue$1("headerFooterTag");
@@ -3469,7 +3468,7 @@ const Viewport$1 = ({ children }) => {
3469
3468
  const viewportRef = useSize((el) => {
3470
3469
  viewportDimensions(el.getBoundingClientRect());
3471
3470
  });
3472
- React.useEffect(() => {
3471
+ useEffect(() => {
3473
3472
  if (ctx) {
3474
3473
  viewportDimensions({ height: ctx.viewportHeight, width: ctx.viewportWidth });
3475
3474
  itemDimensions({ height: ctx.itemHeight, width: ctx.itemWidth });
@@ -3483,7 +3482,7 @@ const WindowViewport$1 = ({ children }) => {
3483
3482
  const itemDimensions = usePublisher$1("itemDimensions");
3484
3483
  const customScrollParent = useEmitterValue$1("customScrollParent");
3485
3484
  const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent);
3486
- React.useEffect(() => {
3485
+ useEffect(() => {
3487
3486
  if (ctx) {
3488
3487
  itemDimensions({ height: ctx.itemHeight, width: ctx.itemWidth });
3489
3488
  windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: ctx.viewportWidth });
@@ -3491,7 +3490,7 @@ const WindowViewport$1 = ({ children }) => {
3491
3490
  }, [ctx, windowViewportRect, itemDimensions]);
3492
3491
  return /* @__PURE__ */ jsx("div", { ref: viewportRef, style: viewportStyle, children });
3493
3492
  };
3494
- const GridRoot = /* @__PURE__ */ React.memo(function GridRoot2({ ...props }) {
3493
+ const GridRoot = /* @__PURE__ */ memo(function GridRoot2({ ...props }) {
3495
3494
  const useWindowScroll = useEmitterValue$1("useWindowScroll");
3496
3495
  const customScrollParent = useEmitterValue$1("customScrollParent");
3497
3496
  const TheScroller = customScrollParent || useWindowScroll ? WindowScroller$1 : Scroller$1;
@@ -3600,7 +3599,7 @@ const combinedSystem = /* @__PURE__ */ system(([listSystem2, propsSystem]) => {
3600
3599
  }, tup(listSystem, tableComponentPropsSystem));
3601
3600
  const DefaultScrollSeekPlaceholder = ({ height }) => /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { style: { height } }) });
3602
3601
  const DefaultFillerRow = ({ height }) => /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { style: { height, padding: 0, border: 0 } }) });
3603
- const Items = /* @__PURE__ */ React.memo(function VirtuosoItems2() {
3602
+ const Items = /* @__PURE__ */ memo(function VirtuosoItems2() {
3604
3603
  const listState = useEmitterValue("listState");
3605
3604
  const sizeRanges = usePublisher("sizeRanges");
3606
3605
  const useWindowScroll = useEmitterValue("useWindowScroll");
@@ -3621,7 +3620,7 @@ const Items = /* @__PURE__ */ React.memo(function VirtuosoItems2() {
3621
3620
  void 0,
3622
3621
  customScrollParent
3623
3622
  );
3624
- const [deviation, setDeviation] = React.useState(0);
3623
+ const [deviation, setDeviation] = useState(0);
3625
3624
  useEmitter("deviation", (value) => {
3626
3625
  if (deviation !== value) {
3627
3626
  ref.current.style.marginTop = `${value}px`;
@@ -3683,7 +3682,7 @@ const Viewport = ({ children }) => {
3683
3682
  const viewportHeight = usePublisher("viewportHeight");
3684
3683
  const fixedItemHeight = usePublisher("fixedItemHeight");
3685
3684
  const viewportRef = useSize(compose(viewportHeight, (el) => correctItemSize(el, "height")));
3686
- React.useEffect(() => {
3685
+ useEffect(() => {
3687
3686
  if (ctx) {
3688
3687
  viewportHeight(ctx.viewportHeight);
3689
3688
  fixedItemHeight(ctx.itemHeight);
@@ -3697,7 +3696,7 @@ const WindowViewport = ({ children }) => {
3697
3696
  const fixedItemHeight = usePublisher("fixedItemHeight");
3698
3697
  const customScrollParent = useEmitterValue("customScrollParent");
3699
3698
  const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent);
3700
- React.useEffect(() => {
3699
+ useEffect(() => {
3701
3700
  if (ctx) {
3702
3701
  fixedItemHeight(ctx.itemHeight);
3703
3702
  windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: 100 });
@@ -3705,7 +3704,7 @@ const WindowViewport = ({ children }) => {
3705
3704
  }, [ctx, windowViewportRect, fixedItemHeight]);
3706
3705
  return /* @__PURE__ */ jsx("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window", children });
3707
3706
  };
3708
- const TableRoot = /* @__PURE__ */ React.memo(function TableVirtuosoRoot(props) {
3707
+ const TableRoot = /* @__PURE__ */ memo(function TableVirtuosoRoot(props) {
3709
3708
  const useWindowScroll = useEmitterValue("useWindowScroll");
3710
3709
  const customScrollParent = useEmitterValue("customScrollParent");
3711
3710
  const fixedHeaderHeight = usePublisher("fixedHeaderHeight");
@@ -3720,7 +3719,7 @@ const TableRoot = /* @__PURE__ */ React.memo(function TableVirtuosoRoot(props) {
3720
3719
  const TheTable = useEmitterValue("TableComponent");
3721
3720
  const TheTHead = useEmitterValue("TableHeadComponent");
3722
3721
  const TheTFoot = useEmitterValue("TableFooterComponent");
3723
- const theHead = fixedHeaderContent ? React.createElement(
3722
+ const theHead = fixedHeaderContent ? createElement(
3724
3723
  TheTHead,
3725
3724
  {
3726
3725
  key: "TableHead",
@@ -3730,7 +3729,7 @@ const TableRoot = /* @__PURE__ */ React.memo(function TableVirtuosoRoot(props) {
3730
3729
  },
3731
3730
  fixedHeaderContent()
3732
3731
  ) : null;
3733
- const theFoot = fixedFooterContent ? React.createElement(
3732
+ const theFoot = fixedFooterContent ? createElement(
3734
3733
  TheTFoot,
3735
3734
  {
3736
3735
  key: "TableFoot",
@@ -3740,7 +3739,7 @@ const TableRoot = /* @__PURE__ */ React.memo(function TableVirtuosoRoot(props) {
3740
3739
  },
3741
3740
  fixedFooterContent()
3742
3741
  ) : null;
3743
- return /* @__PURE__ */ jsx(TheScroller, { ...props, children: /* @__PURE__ */ jsx(TheViewport, { children: React.createElement(TheTable, { style: { borderSpacing: 0 }, ...contextPropIfNotDomElement(TheTable, context) }, [
3742
+ return /* @__PURE__ */ jsx(TheScroller, { ...props, children: /* @__PURE__ */ jsx(TheViewport, { children: createElement(TheTable, { style: { borderSpacing: 0 }, ...contextPropIfNotDomElement(TheTable, context) }, [
3744
3743
  theHead,
3745
3744
  /* @__PURE__ */ jsx(Items, {}, "TableBody"),
3746
3745
  theFoot
@@ -27,8 +27,7 @@
27
27
  *
28
28
  * @packageDocumentation
29
29
  */
30
- import * as React from 'react';
31
- import { ForwardRefExoticComponent, ReactNode, RefAttributes } from 'react';
30
+ import { ComponentType, ForwardRefExoticComponent, ReactNode, RefAttributes } from 'react';
32
31
  import * as u from '../urx';
33
32
  import type { Emitter, Publisher, AnySystemSpec, SR, Stream } from '../urx';
34
33
  /** @internal */
@@ -102,9 +101,9 @@ export type RefHandle<T> = T extends ForwardRefExoticComponent<RefAttributes<inf
102
101
  * <hr />
103
102
  */
104
103
  export declare function systemToComponent<SS extends AnySystemSpec, M extends SystemPropsMap<SS>, S extends SR<SS>, R>(systemSpec: SS, map: M, Root?: R): {
105
- Component: React.ForwardRefExoticComponent<React.PropsWithoutRef<{ [K in Extract<keyof M["required"], string>]: M["required"][K] extends string ? ReturnType<SS["constructor"]>[M["required"][K]] extends Observable<infer R_1> ? R_1 : never : never; } & { [K_1 in Extract<keyof M["optional"], string>]?: (M["optional"][K_1] extends string ? ReturnType<SS["constructor"]>[M["optional"][K_1]] extends Observable<infer R_2> ? R_2 : never : never) | undefined; } & { [K_2 in Extract<keyof M["events"], string>]?: (M["events"][K_2] extends string ? ReturnType<SS["constructor"]>[M["events"][K_2]] extends Observable<infer R_3> ? (value: R_3) => void : never : never) | undefined; } & (R extends React.ComponentType<infer RP> ? RP : {
104
+ Component: ForwardRefExoticComponent<import("react").PropsWithoutRef<{ [K in Extract<keyof M["required"], string>]: M["required"][K] extends string ? ReturnType<SS["constructor"]>[M["required"][K]] extends Observable<infer R_1> ? R_1 : never : never; } & { [K_1 in Extract<keyof M["optional"], string>]?: (M["optional"][K_1] extends string ? ReturnType<SS["constructor"]>[M["optional"][K_1]] extends Observable<infer R_2> ? R_2 : never : never) | undefined; } & { [K_2 in Extract<keyof M["events"], string>]?: (M["events"][K_2] extends string ? ReturnType<SS["constructor"]>[M["events"][K_2]] extends Observable<infer R_3> ? (value: R_3) => void : never : never) | undefined; } & (R extends ComponentType<infer RP> ? RP : {
106
105
  children?: ReactNode;
107
- })> & React.RefAttributes<MethodsFromPropMap<SS, M>>>;
106
+ })> & RefAttributes<MethodsFromPropMap<SS, M>>>;
108
107
  usePublisher: <K_3 extends keyof S>(key: K_3) => (value: S[K_3] extends u.Stream<infer R_4> ? R_4 : never) => void;
109
108
  useEmitterValue: <K_4 extends keyof S, V = S[K_4] extends u.StatefulStream<infer R_5> ? R_5 : never>(key: K_4) => V;
110
109
  useEmitter: <K_5 extends keyof S, V_1 = S[K_5] extends u.Stream<infer R_6> ? R_6 : never>(key: K_5, callback: (value: V_1) => void) => void;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "Petyo Ivanov",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
- "version": "4.0.1",
6
+ "version": "4.0.2",
7
7
  "homepage": "https://virtuoso.dev/",
8
8
  "license": "MIT",
9
9
  "source": "src/index.tsx",