react-virtuoso 4.0.1 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +16 -13
- package/dist/index.mjs +29 -30
- package/dist/react-urx/index.d.ts +3 -4
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/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.lastElementChild.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 = (() =>
|
|
87
|
+
export declare type FixedFooterContent = (() => ReactNode) | null;
|
|
85
88
|
|
|
86
|
-
export declare type FixedHeaderContent = (() =>
|
|
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<
|
|
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?:
|
|
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<
|
|
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<
|
|
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?:
|
|
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?:
|
|
626
|
+
ref?: Ref<VirtuosoHandle> | undefined;
|
|
624
627
|
}) => ReactElement;
|
|
625
628
|
|
|
626
629
|
export declare const VirtuosoGrid: <Context = any>(props: VirtuosoGridProps<Context, unknown> & {
|
|
627
|
-
ref?:
|
|
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:
|
|
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:
|
|
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
|
|
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" ?
|
|
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,
|
|
394
|
+
return useCallback(curry2to1(publish, useContext(Context)[key]), [key]);
|
|
396
395
|
};
|
|
397
396
|
const useEmitterValue2 = (key) => {
|
|
398
397
|
const system2 = useContext(Context);
|
|
@@ -494,7 +493,7 @@ function useChangedListContentsSizes(callback, itemSize, enabled, scrollContaine
|
|
|
494
493
|
while (!scrollableElement.dataset["virtuosoScroller"]) {
|
|
495
494
|
scrollableElement = scrollableElement.parentElement;
|
|
496
495
|
}
|
|
497
|
-
const windowScrolling = scrollableElement.
|
|
496
|
+
const windowScrolling = scrollableElement.lastElementChild.dataset["viewportType"] === "window";
|
|
498
497
|
const scrollTop = customScrollParent ? customScrollParent.scrollTop : windowScrolling ? window.pageYOffset || document.documentElement.scrollTop : scrollableElement.scrollTop;
|
|
499
498
|
const scrollHeight = customScrollParent ? customScrollParent.scrollHeight : windowScrolling ? document.documentElement.scrollHeight : scrollableElement.scrollHeight;
|
|
500
499
|
const viewportHeight = customScrollParent ? customScrollParent.offsetHeight : windowScrolling ? window.innerHeight : scrollableElement.offsetHeight;
|
|
@@ -2722,8 +2721,8 @@ function useWindowViewportRectRef(callback, customScrollParent) {
|
|
|
2722
2721
|
}, [scrollAndResizeEventHandler, customScrollParent]);
|
|
2723
2722
|
return callbackRef;
|
|
2724
2723
|
}
|
|
2725
|
-
const VirtuosoMockContext =
|
|
2726
|
-
const VirtuosoGridMockContext =
|
|
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__ */
|
|
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] =
|
|
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__ */
|
|
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__ */
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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__ */
|
|
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__ */
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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__ */
|
|
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__ */
|
|
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] =
|
|
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
|
-
|
|
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
|
-
|
|
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__ */
|
|
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 ?
|
|
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 ?
|
|
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:
|
|
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
|
|
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:
|
|
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
|
-
})> &
|
|
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;
|