react-virtuoso 4.0.1 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +16 -13
- package/dist/index.mjs +28 -29
- 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.firstElementChild.dataset.viewportType,u=l?l.scrollTop:a?window.pageYOffset||document.documentElement.scrollTop:c.scrollTop,d=l?l.scrollHeight:a?document.documentElement.scrollHeight:c.scrollHeight,f=l?l.offsetHeight:a?window.innerHeight:c.offsetHeight;n({scrollTop:Math.max(u,0),scrollHeight:d,viewportHeight:f}),null==i||i(function(e,t,o){"normal"===t||(null==t?void 0:t.endsWith("px"))||o(`${e} was not resolved to pixel value correctly`,t,D.WARN);if("normal"===t)return 0;return parseInt(t??"0",10)}("row-gap",getComputedStyle(o).rowGap,r)),null!==s&&e(s)}),o)}function K(e,t){return Math.round(e.getBoundingClientRect()[t])}function q(e,t){return Math.abs(e-t)<1.01}function Y(e,n,r,i=d,l){const s=t.useRef(null),c=t.useRef(null),a=t.useRef(null),u=t.useCallback((t=>{const r=t.target,i=r===window||r===document,l=i?window.pageYOffset||document.documentElement.scrollTop:r.scrollTop,s=i?document.documentElement.scrollHeight:r.scrollHeight,u=i?window.innerHeight:r.offsetHeight,d=()=>{e({scrollTop:Math.max(l,0),scrollHeight:s,viewportHeight:u})};t.suppressFlushSync?d():o.flushSync(d),null!==c.current&&(l===c.current||l<=0||l===s-u)&&(c.current=null,n(!0),a.current&&(clearTimeout(a.current),a.current=null))}),[e,n]);return t.useEffect((()=>{const e=l||s.current;return i(l||s.current),u({target:e,suppressFlushSync:!0}),e.addEventListener("scroll",u,{passive:!0}),()=>{i(null),e.removeEventListener("scroll",u)}}),[s,u,r,i,l]),{scrollerRef:s,scrollByCallback:function(e){s.current.scrollBy(e)},scrollToCallback:function(t){const o=s.current;if(!o||"offsetHeight"in o&&0===o.offsetHeight)return;const r="smooth"===t.behavior;let i,l,u;o===window?(l=Math.max(K(document.documentElement,"height"),document.documentElement.scrollHeight),i=window.innerHeight,u=document.documentElement.scrollTop):(l=o.scrollHeight,i=K(o,"height"),u=o.scrollTop);const d=l-i;if(t.top=Math.ceil(Math.max(Math.min(d,t.top),0)),q(i,l)||t.top===u)return e({scrollTop:u,scrollHeight:l,viewportHeight:i}),void(r&&n(!0));r?(c.current=t.top,a.current&&clearTimeout(a.current),a.current=setTimeout((()=>{a.current=null,c.current=null,n(!0)}),1e3)):c.current=null,o.scrollTo(t)}}}const Z=W((()=>{const e=v(),t=v(),o=I(0),n=v(),r=I(0),i=v(),l=v(),s=I(0),c=I(0),a=I(0),u=I(0),d=v(),f=v(),h=I(!1);return p(C(e,E((({scrollTop:e})=>e))),t),p(C(e,E((({scrollHeight:e})=>e))),l),p(t,r),{scrollContainerState:e,scrollTop:t,viewportHeight:i,headerHeight:s,fixedHeaderHeight:c,fixedFooterHeight:a,footerHeight:u,scrollHeight:l,smoothScrollTargetReached:n,scrollTo:d,scrollBy:f,statefulScrollTop:r,deviation:o,scrollingInProgress:h}}),[],{singleton:!0}),J={lvl:0};function Q(e,t,o,n=J,r=J){return{k:e,v:t,lvl:o,l:n,r:r}}function X(e){return e===J}function ee(){return J}function te(e,t){if(X(e))return J;const{k:o,l:n,r:r}=e;if(t===o){if(X(n))return r;if(X(r))return n;{const[t,o]=le(n);return de(ce(e,{k:t,v:o,l:se(n)}))}}return de(ce(e,t<o?{l:te(n,t)}:{r:te(r,t)}))}function oe(e,t,o="k"){if(X(e))return[-1/0,void 0];if(e[o]===t)return[e.k,e.v];if(e[o]<t){const n=oe(e.r,t,o);return n[0]===-1/0?[e.k,e.v]:n}return oe(e.l,t,o)}function ne(e,t,o){return X(e)?Q(t,o,1):t===e.k?ce(e,{k:t,v:o}):t<e.k?ue(ce(e,{l:ne(e.l,t,o)})):ue(ce(e,{r:ne(e.r,t,o)}))}function re(e,t,o){if(X(e))return[];const{k:n,v:r,l:i,r:l}=e;let s=[];return n>t&&(s=s.concat(re(i,t,o))),n>=t&&n<=o&&s.push({k:n,v:r}),n<=o&&(s=s.concat(re(l,t,o))),s}function ie(e){return X(e)?[]:[...ie(e.l),{k:e.k,v:e.v},...ie(e.r)]}function le(e){return X(e.r)?[e.k,e.v]:le(e.r)}function se(e){return X(e.r)?e.l:de(ce(e,{r:se(e.r)}))}function ce(e,t){return Q(void 0!==t.k?t.k:e.k,void 0!==t.v?t.v:e.v,void 0!==t.lvl?t.lvl:e.lvl,void 0!==t.l?t.l:e.l,void 0!==t.r?t.r:e.r)}function ae(e){return X(e)||e.lvl>e.r.lvl}function ue(e){return me(ge(e))}function de(e){const{l:t,r:o,lvl:n}=e;if(o.lvl>=n-1&&t.lvl>=n-1)return e;if(n>o.lvl+1){if(ae(t))return ge(ce(e,{lvl:n-1}));if(X(t)||X(t.r))throw new Error("Unexpected empty nodes");return ce(t.r,{l:ce(t,{r:t.r.l}),r:ce(e,{l:t.r.r,lvl:n-1}),lvl:n})}if(ae(e))return me(ce(e,{lvl:n-1}));if(X(o)||X(o.l))throw new Error("Unexpected empty nodes");{const t=o.l,r=ae(t)?o.lvl-1:o.lvl;return ce(t,{l:ce(e,{r:t.l,lvl:n-1}),r:me(ce(o,{l:t.r,lvl:r})),lvl:t.lvl+1})}}function fe(e,t,o){if(X(e))return[];const n=oe(e,t)[0];return he(re(e,n,o),(({k:e,v:t})=>({index:e,value:t})))}function he(e,t){const o=e.length;if(0===o)return[];let{index:n,value:r}=t(e[0]);const i=[];for(let l=1;l<o;l++){const{index:o,value:s}=t(e[l]);i.push({start:n,end:o-1,value:r}),n=o,r=s}return i.push({start:n,end:1/0,value:r}),i}function me(e){const{r:t,lvl:o}=e;return X(t)||X(t.r)||t.lvl!==o||t.r.lvl!==o?e:ce(t,{l:ce(e,{r:t.l}),lvl:o+1})}function ge(e){const{l:t}=e;return X(t)||t.lvl!==e.lvl?e:ce(t,{r:ce(e,{l:t.r})})}function pe(e,t,o,n=0){let r=e.length-1;for(;n<=r;){const i=Math.floor((n+r)/2),l=o(e[i],t);if(0===l)return i;if(-1===l){if(r-n<2)return i-1;r=i-1}else{if(r===n)return i;n=i+1}}throw new Error(`Failed binary finding record in array - ${e.join(",")}, searched for ${t}`)}function xe(e,t,o){return e[pe(e,t,o)]}const ve=W((()=>({recalcInProgress:I(!1)})),[],{singleton:!0});function Ie(e){const{size:t,startIndex:o,endIndex:n}=e;return e=>e.start===o&&(e.end===n||e.end===1/0)&&e.value===t}function Te({index:e},t){return t===e?0:t<e?-1:1}function we({offset:e},t){return t===e?0:t<e?-1:1}function Ce(e){return{index:e.index,value:e}}function Se(e,t,o,n=0){return n>0&&(t=Math.max(t,xe(e,n,Te).offset)),he(function(e,t,o,n){const r=pe(e,t,n),i=pe(e,o,n,r);return e.slice(r,i+1)}(e,t,o,we),Ce)}function He(e,t,o,n){let r=e,i=0,l=0,s=0,c=0;if(0!==t){c=pe(r,t-1,Te);s=r[c].offset;const e=oe(o,t-1);i=e[0],l=e[1],r.length&&r[c].size===oe(o,t)[1]&&(c-=1),r=r.slice(0,c+1)}else r=[];for(const{start:a,value:u}of fe(o,t,1/0)){const e=a-i,t=e*l+s+e*n;r.push({offset:t,size:u,index:a}),i=a,s=t,l=u}return{offsetTree:r,lastIndex:i,lastOffset:s,lastSize:l}}function ye(e,[t,o,n,r]){t.length>0&&n("received item sizes",t,D.DEBUG);const i=e.sizeTree;let l=i,s=0;if(o.length>0&&X(i)&&2===t.length){const e=t[0].size,n=t[1].size;l=o.reduce(((t,o)=>ne(ne(t,o,e),o+1,n)),l)}else[l,s]=function(e,t){let o=X(e)?0:1/0;for(const n of t){const{size:t,startIndex:r,endIndex:i}=n;if(o=Math.min(o,r),X(e)){e=ne(e,0,t);continue}const l=fe(e,r-1,i+1);if(l.some(Ie(n)))continue;let s=!1,c=!1;for(const{start:o,end:n,value:a}of l)s?(i>=o||t===a)&&(e=te(e,o)):(c=a!==t,s=!0),n>i&&i>=o&&a!==t&&(e=ne(e,i+1,a));c&&(e=ne(e,r,t))}return[e,o]}(l,t);if(l===i)return e;const{offsetTree:c,lastIndex:a,lastSize:u,lastOffset:d}=He(e.offsetTree,s,l,r);return{sizeTree:l,offsetTree:c,lastIndex:a,lastOffset:d,lastSize:u,groupOffsetTree:o.reduce(((e,t)=>ne(e,t,Ee(t,c,r))),ee()),groupIndices:o}}function Ee(e,t,o){if(0===t.length)return 0;const{offset:n,index:r,size:i}=xe(t,e,Te),l=e-r,s=i*l+(l-1)*o+n;return s>0?s+o:s}function be(e,t,o){if(function(e){return void 0!==e.groupIndex}(e))return t.groupIndices[e.groupIndex]+1;{let n=Re("LAST"===e.index?o:e.index,t);return n=Math.max(0,n,Math.min(o,n)),n}}function Re(e,t){if(!ze(t))return e;let o=0;for(;t.groupIndices[o]<=e+o;)o++;return e+o}function ze(e){return!X(e.groupOffsetTree)}const Be={offsetHeight:"height",offsetWidth:"width"},ke=W((([{log:e},{recalcInProgress:t}])=>{const o=v(),n=v(),r=w(n,0),i=v(),l=v(),s=I(0),c=I([]),a=I(void 0),u=I(void 0),d=I(((e,t)=>K(e,Be[t]))),m=I(void 0),x=I(0),S={offsetTree:[],sizeTree:ee(),groupOffsetTree:ee(),lastIndex:0,lastOffset:0,lastSize:0,groupIndices:[]},b=w(C(o,P(c,e,x),R(ye,S),H()),S);p(C(c,y((e=>e.length>0)),P(b,x),E((([e,t,o])=>{const n=e.reduce(((e,n,r)=>ne(e,n,Ee(n,t.offsetTree,o)||r)),ee());return{...t,groupIndices:e,groupOffsetTree:n}}))),b),p(C(n,P(b),y((([e,{lastIndex:t}])=>e<t)),E((([e,{lastIndex:t,lastSize:o}])=>[{startIndex:e,endIndex:t,size:o}]))),o),p(a,u);const z=w(C(a,E((e=>void 0===e))),!0);p(C(u,y((e=>void 0!==e&&X(g(b).sizeTree))),E((e=>[{startIndex:0,endIndex:0,size:e}]))),o);const B=T(C(o,P(b),R((({sizes:e},[t,o])=>({changed:o!==e,sizes:o})),{changed:!1,sizes:S}),E((e=>e.changed))));f(C(s,R(((e,t)=>({diff:e.prev-t,prev:t})),{diff:0,prev:0}),E((e=>e.diff))),(e=>{e>0?(h(t,!0),h(i,e)):e<0&&h(l,e)})),f(C(s,P(e)),(([e,t])=>{e<0&&t("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:s},D.ERROR)}));const k=T(i);p(C(i,P(b),E((([e,t])=>{if(t.groupIndices.length>0)throw new Error("Virtuoso: prepending items does not work with groups");return ie(t.sizeTree).reduce(((t,{k:o,v:n})=>({ranges:[...t.ranges,{startIndex:t.prevIndex,endIndex:o+e-1,size:t.prevSize}],prevIndex:o+e,prevSize:n})),{ranges:[],prevIndex:0,prevSize:t.lastSize}).ranges}))),o);const L=T(C(l,P(b,x),E((([e,{offsetTree:t},o])=>Ee(-e,t,o)))));return p(C(l,P(b,x),E((([e,t,o])=>{if(t.groupIndices.length>0)throw new Error("Virtuoso: shifting items does not work with groups");const n=ie(t.sizeTree).reduce(((t,{k:o,v:n})=>ne(t,Math.max(0,o+e),n)),ee());return{...t,sizeTree:n,...He(t.offsetTree,0,n,o)}}))),b),{data:m,totalCount:n,sizeRanges:o,groupIndices:c,defaultItemSize:u,fixedItemSize:a,unshiftWith:i,shiftWith:l,shiftWithOffset:L,beforeUnshiftWith:k,firstItemIndex:s,gap:x,sizes:b,listRefresh:B,statefulTotalCount:r,trackItemSizes:z,itemSize:d}}),c(N,ve),{singleton:!0}),Pe="undefined"!=typeof document&&"scrollBehavior"in document.documentElement.style;function Le(e){const t="number"==typeof e?{index:e}:e;return t.align||(t.align="start"),t.behavior&&Pe||(t.behavior="auto"),t.offset||(t.offset=0),t}const Oe=W((([{sizes:e,totalCount:t,listRefresh:o,gap:n},{scrollingInProgress:r,viewportHeight:i,scrollTo:l,smoothScrollTargetReached:s,headerHeight:c,footerHeight:a,fixedHeaderHeight:u,fixedFooterHeight:d},{log:m}])=>{const g=v(),T=I(0);let w=null,S=null,H=null;function y(){w&&(w(),w=null),H&&(H(),H=null),S&&(clearTimeout(S),S=null),h(r,!1)}return p(C(g,P(e,i,t,T,c,a,m),P(n,u,d),E((([[e,t,n,i,l,c,a,u],d,m,p])=>{const v=Le(e),{align:I,behavior:T,offset:E}=v,b=i-1,R=be(v,t,b);let z=Ee(R,t.offsetTree,d)+c;"end"===I?(z+=m+oe(t.sizeTree,R)[1]-n+p,R===b&&(z+=a)):"center"===I?z+=(m+oe(t.sizeTree,R)[1]-n+p)/2:z-=l,E&&(z+=E);const B=t=>{y(),t?(u("retrying to scroll to",{location:e},D.DEBUG),h(g,e)):u("list did not change, scroll successful",{},D.DEBUG)};if(y(),"smooth"===T){let e=!1;H=f(o,(t=>{e=e||t})),w=x(s,(()=>{B(e)}))}else w=x(C(o,(k=150,e=>{const t=setTimeout((()=>{e(!1)}),k);return o=>{o&&(e(!0),clearTimeout(t))}})),B);var k;return S=setTimeout((()=>{y()}),1200),h(r,!0),u("scrolling from index to",{index:R,top:z,behavior:T},D.DEBUG),{top:z,behavior:T}}))),l),{scrollToIndex:g,topListHeight:T}}),c(ke,Z,N),{singleton:!0});const Me="up",We="down",Ve={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},je=W((([{scrollContainerState:e,scrollTop:t,viewportHeight:o,headerHeight:n,footerHeight:r,scrollBy:i}])=>{const l=I(!1),s=I(!0),c=v(),a=v(),u=I(4),d=I(0),f=w(C(L(C(O(t),z(1),b(!0)),C(O(t),z(1),b(!1),k(100))),H()),!1),h=w(C(L(C(i,b(!0)),C(i,b(!1),k(200))),H()),!1);p(C(M(O(t),O(d)),E((([e,t])=>e<=t)),H()),s),p(C(s,B(50)),a);const m=T(C(M(e,O(o),O(n),O(r),O(u)),R(((e,[{scrollTop:t,scrollHeight:o},n,r,i,l])=>{const s={viewportHeight:n,scrollTop:t,scrollHeight:o};if(t+n-o>-l){let o,n;return t>e.state.scrollTop?(o="SCROLLED_DOWN",n=e.state.scrollTop-t):(o="SIZE_DECREASED",n=e.state.scrollTop-t||e.scrollTopDelta),{atBottom:!0,state:s,atBottomBecause:o,scrollTopDelta:n}}let c;return c=s.scrollHeight>e.state.scrollHeight?"SIZE_INCREASED":n<e.state.viewportHeight?"VIEWPORT_HEIGHT_DECREASING":t<e.state.scrollTop?"SCROLLING_UPWARDS":"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:c,state:s}}),Ve),H(((e,t)=>e&&e.atBottom===t.atBottom)))),x=w(C(e,R(((e,{scrollTop:t,scrollHeight:o,viewportHeight:n})=>{if(q(e.scrollHeight,o))return{scrollTop:t,scrollHeight:o,jump:0,changed:!1};{const r=o-(t+n)<1;return e.scrollTop!==t&&r?{scrollHeight:o,scrollTop:t,jump:e.scrollTop-t,changed:!0}:{scrollHeight:o,scrollTop:t,jump:0,changed:!0}}}),{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),y((e=>e.changed)),E((e=>e.jump))),0);p(C(m,E((e=>e.atBottom))),l),p(C(l,B(50)),c);const S=I(We);p(C(e,E((({scrollTop:e})=>e)),H(),R(((e,t)=>g(h)?{direction:e.direction,prevScrollTop:t}:{direction:t<e.prevScrollTop?Me:We,prevScrollTop:t}),{direction:We,prevScrollTop:0}),E((e=>e.direction))),S),p(C(e,B(50),b("none")),S);const W=I(0);return p(C(f,y((e=>!e)),b(0)),W),p(C(t,B(100),P(f),y((([e,t])=>!!t)),R((([e,t],[o])=>[t,o]),[0,0]),E((([e,t])=>t-e))),W),{isScrolling:f,isAtTop:s,isAtBottom:l,atBottomState:m,atTopStateChange:a,atBottomStateChange:c,scrollDirection:S,atBottomThreshold:u,atTopThreshold:d,scrollVelocity:W,lastJumpDueToItemResize:x}}),c(Z)),Fe=W((([{log:e}])=>{const t=I(!1),o=T(C(t,y((e=>e)),H()));return f(t,(t=>{t&&g(e)("props updated",{},D.DEBUG)})),{propsReady:t,didMount:o}}),c(N),{singleton:!0});const Ae=W((([{sizes:e,listRefresh:t,defaultItemSize:o},{scrollTop:n},{scrollToIndex:r},{didMount:i}])=>{const l=I(!0),s=I(0);return p(C(i,P(s),y((([e,t])=>!!t)),b(!1)),l),f(C(M(t,i),P(l,e,o),y((([[,e],t,{sizeTree:o},n])=>e&&(!X(o)||void 0!==n)&&!t)),P(s)),(([,e])=>{setTimeout((()=>{x(n,(()=>{h(l,!0)})),h(r,e)}))})),{scrolledToInitialItem:l,initialTopMostItemIndex:s}}),c(ke,Z,Oe,Fe),{singleton:!0});function De(e){return!!e&&("smooth"===e?"smooth":"auto")}const Ge=W((([{totalCount:e,listRefresh:t},{isAtBottom:o,atBottomState:n},{scrollToIndex:r},{scrolledToInitialItem:i},{propsReady:l,didMount:s},{log:c},{scrollingInProgress:a}])=>{const u=I(!1),d=v();let m=null;function p(e){h(r,{index:"LAST",align:"end",behavior:e})}function T(e){const t=x(n,(t=>{!e||t.atBottom||"SIZE_INCREASED"!==t.notAtBottomBecause||m||(g(c)("scrolling to bottom due to increased size",{},D.DEBUG),p("auto"))}));setTimeout(t,100)}return f(C(M(C(O(e),z(1)),s),P(O(u),o,i,a),E((([[e,t],o,n,r,i])=>{let l=t&&r,s="auto";return l&&(s=((e,t)=>"function"==typeof e?De(e(t)):t&&De(e))(o,n||i),l=l&&!!s),{totalCount:e,shouldFollow:l,followOutputBehavior:s}})),y((({shouldFollow:e})=>e))),(({totalCount:e,followOutputBehavior:o})=>{m&&(m(),m=null),m=x(t,(()=>{g(c)("following output to ",{totalCount:e},D.DEBUG),p(o),m=null}))})),f(C(M(O(u),e,l),y((([e,,t])=>e&&t)),R((({value:e},[,t])=>({refreshed:e===t,value:t})),{refreshed:!1,value:0}),y((({refreshed:e})=>e)),P(u,e)),(([,e])=>{T(!1!==e)})),f(d,(()=>{T(!1!==g(u))})),f(M(O(u),n),(([e,t])=>{e&&!t.atBottom&&"VIEWPORT_HEIGHT_DECREASING"===t.notAtBottomBecause&&p("auto")})),{followOutput:u,autoscrollToBottom:d}}),c(ke,je,Oe,Ae,Fe,N,Z));function Ne(e){return e.reduce(((e,t)=>(e.groupIndices.push(e.totalCount),e.totalCount+=t+1,e)),{totalCount:0,groupIndices:[]})}const _e=W((([{totalCount:e,groupIndices:t,sizes:o},{scrollTop:n,headerHeight:r}])=>{const i=v(),l=v(),s=T(C(i,E(Ne)));return p(C(s,E((e=>e.totalCount))),e),p(C(s,E((e=>e.groupIndices))),t),p(C(M(n,o,r),y((([e,t])=>ze(t))),E((([e,t,o])=>oe(t.groupOffsetTree,Math.max(e-o,0),"v")[0])),H(),E((e=>[e]))),l),{groupCounts:i,topItemsIndexes:l}}),c(ke,Z));function Ue(e,t){return!(!e||e[0]!==t[0]||e[1]!==t[1])}function $e(e,t){return!(!e||e.startIndex!==t.startIndex||e.endIndex!==t.endIndex)}const Ke="top",qe="bottom",Ye="none";function Ze(e,t,o){return"number"==typeof e?o===Me&&t===Ke||o===We&&t===qe?e:0:o===Me?t===Ke?e.main:e.reverse:t===qe?e.main:e.reverse}function Je(e,t){return"number"==typeof e?e:e[t]||0}const Qe=W((([{scrollTop:e,viewportHeight:t,deviation:o,headerHeight:n,fixedHeaderHeight:r}])=>{const i=v(),l=I(0),s=I(0),c=I(0);return{listBoundary:i,overscan:c,topListHeight:l,increaseViewportBy:s,visibleRange:w(C(M(O(e),O(t),O(n),O(i,Ue),O(c),O(l),O(r),O(o),O(s)),E((([e,t,o,[n,r],i,l,s,c,a])=>{const u=e-c,d=l+s,f=Math.max(o-u,0);let h=Ye;const m=Je(a,Ke),g=Je(a,qe);return n-=c,r+=o+s,(n+=o+s)>e+d-m&&(h=Me),(r-=c)<e-f+t+g&&(h=We),h!==Ye?[Math.max(u-o-Ze(i,Ke,h)-m,0),u-f-s+t+Ze(i,qe,h)+g]:null})),y((e=>null!=e)),H(Ue)),[0,0])}}),c(Z),{singleton:!0});const Xe={items:[],topItems:[],offsetTop:0,offsetBottom:0,top:0,bottom:0,topListHeight:0,totalCount:0,firstItemIndex:0};function et(e,t,o){if(0===e.length)return[];if(!ze(t))return e.map((e=>({...e,index:e.index+o,originalIndex:e.index})));const n=e[0].index,r=e[e.length-1].index,i=[],l=fe(t.groupOffsetTree,n,r);let s,c=0;for(const a of e){let e;(!s||s.end<a.index)&&(s=l.shift(),c=t.groupIndices.indexOf(s.start)),e=a.index===s.start?{type:"group",index:c}:{index:a.index-(c+1)+o,groupIndex:c},i.push({...e,size:a.size,offset:a.offset,originalIndex:a.index,data:a.data})}return i}function tt(e,t,o,n,r,i){const{lastSize:l,lastOffset:s,lastIndex:c}=r;let a=0,u=0;if(e.length>0){a=e[0].offset;const t=e[e.length-1];u=t.offset+t.size}const d=o-c,f=a,h=s+d*l+(d-1)*n-u;return{items:et(e,r,i),topItems:et(t,r,i),topListHeight:t.reduce(((e,t)=>t.size+e),0),offsetTop:a,offsetBottom:h,top:f,bottom:u,totalCount:o,firstItemIndex:i}}const ot=W((([{sizes:e,totalCount:t,data:o,firstItemIndex:n,gap:r},i,{visibleRange:l,listBoundary:c,topListHeight:a},{scrolledToInitialItem:u,initialTopMostItemIndex:d},{topListHeight:f},h,{didMount:m},{recalcInProgress:g}])=>{const x=I([]),S=v();p(i.topItemsIndexes,x);const b=w(C(M(m,g,O(l,Ue),O(t),O(e),O(d),u,O(x),O(n),O(r),o),y((([e,t])=>e&&!t)),E((([,,[e,t],o,n,r,i,l,c,a,u])=>{const d=n,{sizeTree:f,offsetTree:h}=d;if(0===o||0===e&&0===t)return{...Xe,totalCount:o};if(X(f))return tt(function(e,t,o){if(ze(t)){const n=Re(e,t);return[{index:oe(t.groupOffsetTree,n)[0],size:0,offset:0},{index:n,size:0,offset:0,data:o&&o[0]}]}return[{index:e,size:0,offset:0,data:o&&o[0]}]}(function(e,t){const o=t-1;return"number"==typeof e?e:"LAST"===e.index?o:e.index}(r,o),d,u),[],o,a,d,c);const m=[];if(l.length>0){const e=l[0],t=l[l.length-1];let o=0;for(const n of fe(f,e,t)){const r=n.value,i=Math.max(n.start,e),l=Math.min(n.end,t);for(let e=i;e<=l;e++)m.push({index:e,size:r,offset:o,data:u&&u[e]}),o+=r}}if(!i)return tt([],m,o,a,d,c);const g=l.length>0?l[l.length-1]+1:0,p=Se(h,e,t,g);if(0===p.length)return null;const x=o-1;return tt(s([],(o=>{for(const n of p){const r=n.value;let i=r.offset,l=n.start;const s=r.size;if(r.offset<e){l+=Math.floor((e-r.offset+a)/(s+a));const t=l-n.start;i+=t*s+t*a}l<g&&(i+=(g-l)*s,l=g);const c=Math.min(n.end,x);for(let e=l;e<=c&&!(i>=t);e++)o.push({index:e,size:s,offset:i,data:u&&u[e]}),i+=s+a}})),m,o,a,d,c)})),y((e=>null!==e)),H()),Xe);p(C(o,y((e=>void 0!==e)),E((e=>null==e?void 0:e.length))),t),p(C(b,E((e=>e.topListHeight))),f),p(f,a),p(C(b,E((e=>[e.top,e.bottom]))),c),p(C(b,E((e=>e.items))),S);return{listState:b,topItemsIndexes:x,endReached:T(C(b,y((({items:e})=>e.length>0)),P(t,o),y((([{items:e},t])=>e[e.length-1].originalIndex===t-1)),E((([,e,t])=>[e-1,t])),H(Ue),E((([e])=>e)))),startReached:T(C(b,B(200),y((({items:e,topItems:t})=>e.length>0&&e[0].originalIndex===t.length)),E((({items:e})=>e[0].index)),H())),rangeChanged:T(C(b,y((({items:e})=>e.length>0)),E((({items:e})=>{let t=0,o=e.length-1;for(;"group"===e[t].type&&t<o;)t++;for(;"group"===e[o].type&&o>t;)o--;return{startIndex:e[t].index,endIndex:e[o].index}})),H($e))),itemsRendered:S,...h}}),c(ke,_e,Qe,Ae,Oe,je,Fe,ve),{singleton:!0}),nt=W((([{sizes:e,firstItemIndex:t,data:o,gap:n},{listState:r},{didMount:i}])=>{const l=I(0);return p(C(i,P(l),y((([,e])=>0!==e)),P(e,t,n,o),E((([[,e],t,o,n,r=[]])=>{let i=0;if(t.groupIndices.length>0)for(const s of t.groupIndices){if(s-i>=e)break;i++}const l=e+i;return tt(Array.from({length:l}).map(((e,t)=>({index:t,size:0,offset:0,data:r[t]}))),[],l,n,t,o)}))),r),{initialItemCount:l}}),c(ke,ot,Fe),{singleton:!0}),rt=W((([{scrollVelocity:e}])=>{const t=I(!1),o=v(),n=I(!1);return p(C(e,P(n,t,o),y((([e,t])=>!!t)),E((([e,t,o,n])=>{const{exit:r,enter:i}=t;if(o){if(r(e,n))return!1}else if(i(e,n))return!0;return o})),H()),t),f(C(M(t,e,o),P(n)),(([[e,t,o],n])=>e&&n&&n.change&&n.change(t,o))),{isSeeking:t,scrollSeekConfiguration:n,scrollVelocity:e,scrollSeekRangeChanged:o}}),c(je),{singleton:!0}),it=W((([{topItemsIndexes:e}])=>{const t=I(0);return p(C(t,y((e=>e>0)),E((e=>Array.from({length:e}).map(((e,t)=>t))))),e),{topItemCount:t}}),c(ot)),lt=W((([{footerHeight:e,headerHeight:t,fixedHeaderHeight:o,fixedFooterHeight:n},{listState:r}])=>{const i=v(),l=w(C(M(e,n,t,o,r),E((([e,t,o,n,r])=>e+t+o+n+r.offsetBottom+r.bottom))),0);return p(O(l),i),{totalListHeight:l,totalListHeightChanged:i}}),c(Z,ot),{singleton:!0});function st(e){let t,o=!1;return()=>(o||(o=!0,t=e()),t)}const ct=st((()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent))),at=W((([{scrollBy:e,scrollTop:t,deviation:o,scrollingInProgress:n},{isScrolling:r,isAtBottom:i,scrollDirection:l,lastJumpDueToItemResize:s},{listState:c},{beforeUnshiftWith:a,shiftWithOffset:u,sizes:d,gap:m},{log:g},{recalcInProgress:x}])=>{const v=T(C(c,P(s),R((([,e,t,o],[{items:n,totalCount:r,bottom:i,offsetBottom:l},s])=>{const c=i+l;let a=0;if(t===r&&e.length>0&&n.length>0){0===n[0].originalIndex&&0===e[0].originalIndex||(a=c-o,0!==a&&(a+=s))}return[a,n,r,c]}),[0,[],0,0]),y((([e])=>0!==e)),P(t,l,n,i,g),y((([,e,t,o])=>!o&&0!==e&&t===Me)),E((([[e],,,,,t])=>(t("Upward scrolling compensation",{amount:e},D.DEBUG),e)))));function I(t){t>0?(h(e,{top:-t,behavior:"auto"}),h(o,0)):(h(o,0),h(e,{top:-t,behavior:"auto"}))}return f(C(v,P(o,r)),(([e,t,n])=>{n&&ct()?h(o,t-e):I(-e)})),f(C(M(w(r,!1),o,x),y((([e,t,o])=>!e&&!o&&0!==t)),E((([e,t])=>t)),B(1)),I),p(C(u,E((e=>({top:-e})))),e),f(C(a,P(d,m),E((([e,{lastSize:t},o])=>e*t+e*o))),(t=>{h(o,t),requestAnimationFrame((()=>{h(e,{top:t}),requestAnimationFrame((()=>{h(o,0),h(x,!1)}))}))})),{deviation:o}}),c(Z,je,ot,ke,N,ve)),ut=W((([{totalListHeight:e},{didMount:t},{scrollTo:o}])=>{const n=I(0);return f(C(t,P(n),y((([,e])=>0!==e)),E((([,e])=>({top:e})))),(t=>{x(C(e,y((e=>0!==e))),(()=>{setTimeout((()=>{h(o,t)}))}))})),{initialScrollTop:n}}),c(lt,Fe,Z),{singleton:!0}),dt=W((([{viewportHeight:e},{totalListHeight:t}])=>{const o=I(!1);return{alignToBottom:o,paddingTopAddition:w(C(M(o,e,t),y((([e])=>e)),E((([,e,t])=>Math.max(0,e-t))),H()),0)}}),c(Z,lt),{singleton:!0}),ft=W((([{scrollTo:e,scrollContainerState:t}])=>{const o=v(),n=v(),r=v(),i=I(!1),l=I(void 0);return p(C(M(o,n),E((([{viewportHeight:e,scrollTop:t,scrollHeight:o},{offsetTop:n}])=>({scrollTop:Math.max(0,t-n),scrollHeight:o,viewportHeight:e})))),t),p(C(e,P(n),E((([e,{offsetTop:t}])=>({...e,top:e.top+t})))),r),{useWindowScroll:i,customScrollParent:l,windowScrollContainerState:o,windowViewportRect:n,windowScrollTo:r}}),c(Z)),ht=W((([{sizes:e,totalCount:t,gap:o},{scrollTop:n,viewportHeight:r,headerHeight:i,fixedHeaderHeight:l,fixedFooterHeight:s,scrollingInProgress:c},{scrollToIndex:a}])=>{const u=v();return p(C(u,P(e,r,t,i,l,s,n),P(o),E((([[e,t,o,n,r,i,l,s],a])=>{const{done:u,behavior:d,align:f,...h}=e;let m=null;const g=be(e,t,n-1),p=Ee(g,t.offsetTree,a)+r+i;if(p<s+i)m={...h,behavior:d,align:f??"start"};else{p+oe(t.sizeTree,g)[1]>s+o-l&&(m={...h,behavior:d,align:f??"end"})}return m?u&&x(C(c,z(1),y((e=>!1===e))),u):u&&u(),m})),y((e=>null!==e))),a),{scrollIntoView:u}}),c(ke,Z,Oe,ot,N),{singleton:!0}),mt=W((([e,t,o,n,r,i,l,s,c])=>({...e,...t,...o,...n,...r,...i,...l,...s,...c})),c(Qe,nt,Fe,rt,lt,ut,dt,ft,ht)),gt=W((([{totalCount:e,sizeRanges:t,fixedItemSize:o,defaultItemSize:n,trackItemSizes:r,itemSize:i,data:l,firstItemIndex:s,groupIndices:c,statefulTotalCount:a,gap:u},{initialTopMostItemIndex:d,scrolledToInitialItem:f},h,m,{listState:g,topItemsIndexes:x,...v},{scrollToIndex:I},T,{topItemCount:w},{groupCounts:S},H,y])=>(p(v.rangeChanged,H.scrollSeekRangeChanged),p(C(H.windowViewportRect,E((e=>e.visibleHeight))),h.viewportHeight),{totalCount:e,data:l,firstItemIndex:s,sizeRanges:t,initialTopMostItemIndex:d,scrolledToInitialItem:f,topItemsIndexes:x,topItemCount:w,groupCounts:S,fixedItemHeight:o,defaultItemHeight:n,gap:u,...m,statefulTotalCount:a,listState:g,scrollToIndex:I,trackItemSizes:r,itemSize:i,groupIndices:c,...v,...H,...h,...y})),c(ke,Ae,Z,Ge,ot,Oe,at,it,_e,mt,N)),pt="-webkit-sticky",xt="sticky",vt=st((()=>{if("undefined"==typeof document)return xt;const e=document.createElement("div");return e.style.position=pt,e.style.position===pt?pt:xt}));function It(e,o){const n=t.useRef(null),r=t.useCallback((t=>{if(null===t||!t.offsetParent)return;const r=t.getBoundingClientRect(),i=r.width;let l,s;if(o){const e=o.getBoundingClientRect(),t=r.top-e.top;l=e.height-Math.max(0,t),s=t+o.scrollTop}else l=window.innerHeight-Math.max(0,r.top),s=r.top+window.pageYOffset;n.current={offsetTop:s,visibleHeight:l,visibleWidth:i},e(n.current)}),[e,o]),{callbackRef:i,ref:l}=_(r),s=t.useCallback((()=>{r(l.current)}),[r,l]);return t.useEffect((()=>{if(o){o.addEventListener("scroll",s);const e=new ResizeObserver(s);return e.observe(o),()=>{o.removeEventListener("scroll",s),e.unobserve(o)}}return window.addEventListener("scroll",s),window.addEventListener("resize",s),()=>{window.removeEventListener("scroll",s),window.removeEventListener("resize",s)}}),[s,o]),i}const Tt=t.createContext(void 0),wt=t.createContext(void 0);function Ct(e){return e}const St=W((([e,t])=>({...e,...t})),c(gt,W((()=>{const e=I((e=>`Item ${e}`)),t=I(null),o=I((e=>`Group ${e}`)),n=I({}),r=I(Ct),i=I("div"),l=I(d),s=(e,t=null)=>w(C(n,E((t=>t[e])),H()),t);return{context:t,itemContent:e,groupContent:o,components:n,computeItemKey:r,headerFooterTag:i,scrollerRef:l,FooterComponent:s("Footer"),HeaderComponent:s("Header"),TopItemListComponent:s("TopItemList"),ListComponent:s("List","div"),ItemComponent:s("Item","div"),GroupComponent:s("Group","div"),ScrollerComponent:s("Scroller","div"),EmptyPlaceholder:s("EmptyPlaceholder"),ScrollSeekPlaceholder:s("ScrollSeekPlaceholder")}})))),Ht=({height:t})=>e.jsx("div",{style:{height:t}}),yt={position:vt(),zIndex:1,overflowAnchor:"none"},Et={overflowAnchor:"none"},bt=t.memo((function({showTopList:e=!1}){const o=Gt("listState"),n=Dt("sizeRanges"),r=Gt("useWindowScroll"),i=Gt("customScrollParent"),l=Dt("windowScrollContainerState"),s=Dt("scrollContainerState"),c=i||r?l:s,a=Gt("itemContent"),u=Gt("context"),f=Gt("groupContent"),h=Gt("trackItemSizes"),m=Gt("itemSize"),g=Gt("log"),p=Dt("gap"),{callbackRef:x}=$(n,m,h,e?d:c,g,p,i),[v,I]=t.useState(0);Nt("deviation",(e=>{v!==e&&I(e)}));const T=Gt("EmptyPlaceholder"),w=Gt("ScrollSeekPlaceholder")||Ht,C=Gt("ListComponent"),S=Gt("ItemComponent"),H=Gt("GroupComponent"),y=Gt("computeItemKey"),E=Gt("isSeeking"),b=Gt("groupIndices").length>0,R=Gt("paddingTopAddition"),z=e?{}:{boxSizing:"border-box",paddingTop:o.offsetTop+R,paddingBottom:o.offsetBottom,marginTop:v};return!e&&0===o.totalCount&&T?t.createElement(T,kt(T,u)):t.createElement(C,{...kt(C,u),ref:x,style:z,"data-test-id":e?"virtuoso-top-item-list":"virtuoso-item-list"},(e?o.topItems:o.items).map((e=>{const n=e.originalIndex,r=y(n+o.firstItemIndex,e.data,u);return E?t.createElement(w,{...kt(w,u),key:r,index:e.index,height:e.size,type:e.type||"item",..."group"===e.type?{}:{groupIndex:e.groupIndex}}):"group"===e.type?t.createElement(H,{...kt(H,u),key:r,"data-index":n,"data-known-size":e.size,"data-item-index":e.index,style:yt},f(e.index)):t.createElement(S,{...kt(S,u),key:r,"data-index":n,"data-known-size":e.size,"data-item-index":e.index,"data-item-group-index":e.groupIndex,item:e.data,style:Et},b?a(e.index,e.groupIndex,e.data,u):a(e.index,e.data,u))})))})),Rt={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},zt={width:"100%",height:"100%",position:"absolute",top:0},Bt={width:"100%",position:vt(),top:0,zIndex:1};function kt(e,t){if("string"!=typeof e)return{context:t}}const Pt=t.memo((function(){const e=Gt("HeaderComponent"),o=Dt("headerHeight"),n=Gt("headerFooterTag"),r=U((e=>o(K(e,"height")))),i=Gt("context");return e?t.createElement(n,{ref:r},t.createElement(e,kt(e,i))):null})),Lt=t.memo((function(){const e=Gt("FooterComponent"),o=Dt("footerHeight"),n=Gt("headerFooterTag"),r=U((e=>o(K(e,"height")))),i=Gt("context");return e?t.createElement(n,{ref:r},t.createElement(e,kt(e,i))):null}));function Ot({usePublisher:e,useEmitter:o,useEmitterValue:n}){return t.memo((function({style:r,children:i,...l}){const s=e("scrollContainerState"),c=n("ScrollerComponent"),a=e("smoothScrollTargetReached"),u=n("scrollerRef"),d=n("context"),{scrollerRef:f,scrollByCallback:h,scrollToCallback:m}=Y(s,a,c,u);return o("scrollTo",m),o("scrollBy",h),t.createElement(c,{ref:f,style:{...Rt,...r},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...l,...kt(c,d)},i)}))}function Mt({usePublisher:e,useEmitter:o,useEmitterValue:n}){return t.memo((function({style:r,children:i,...l}){const s=e("windowScrollContainerState"),c=n("ScrollerComponent"),a=e("smoothScrollTargetReached"),u=n("totalListHeight"),f=n("deviation"),h=n("customScrollParent"),m=n("context"),{scrollerRef:g,scrollByCallback:p,scrollToCallback:x}=Y(s,a,c,d,h);return A((()=>(g.current=h||window,()=>{g.current=null})),[g,h]),o("windowScrollTo",x),o("scrollBy",p),t.createElement(c,{style:{position:"relative",...r,...0!==u?{height:u+f}:{}},"data-virtuoso-scroller":!0,...l,...kt(c,m)},i)}))}const Wt=({children:o})=>{const r=t.useContext(Tt),i=Dt("viewportHeight"),l=Dt("fixedItemHeight"),s=U(n(i,(e=>K(e,"height"))));return t.useEffect((()=>{r&&(i(r.viewportHeight),l(r.itemHeight))}),[r,i,l]),e.jsx("div",{style:zt,ref:s,"data-viewport-type":"element",children:o})},Vt=({children:o})=>{const n=t.useContext(Tt),r=Dt("windowViewportRect"),i=Dt("fixedItemHeight"),l=Gt("customScrollParent"),s=It(r,l);return t.useEffect((()=>{n&&(i(n.itemHeight),r({offsetTop:0,visibleHeight:n.viewportHeight,visibleWidth:100}))}),[n,r,i]),e.jsx("div",{ref:s,style:zt,"data-viewport-type":"window",children:o})},jt=({children:e})=>{const o=Gt("TopItemListComponent"),n=Gt("headerHeight"),r={...Bt,marginTop:`${n}px`},i=Gt("context");return t.createElement(o||"div",{style:r,context:i},e)},Ft=t.memo((function(t){const o=Gt("useWindowScroll"),n=Gt("topItemsIndexes").length>0,r=Gt("customScrollParent"),i=r||o?Ut:_t,l=r||o?Vt:Wt;return e.jsxs(i,{...t,children:[n&&e.jsx(jt,{children:e.jsx(bt,{showTopList:!0})}),e.jsxs(l,{children:[e.jsx(Pt,{}),e.jsx(bt,{}),e.jsx(Lt,{})]})]})})),{Component:At,usePublisher:Dt,useEmitterValue:Gt,useEmitter:Nt}=F(St,{required:{},optional:{context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",totalCount:"totalCount",topItemCount:"topItemCount",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",groupCounts:"groupCounts",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Ft),_t=Ot({usePublisher:Dt,useEmitterValue:Gt,useEmitter:Nt}),Ut=Mt({usePublisher:Dt,useEmitterValue:Gt,useEmitter:Nt}),$t=At,Kt=At,qt={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},Yt={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:Zt,ceil:Jt,floor:Qt,min:Xt,max:eo}=Math;function to(e,t,o){return Array.from({length:t-e+1}).map(((t,n)=>({index:n+e,data:null==o?void 0:o[n+e]})))}function oo(e,t){return e&&e.column===t.column&&e.row===t.row}const no=W((([{overscan:e,visibleRange:t,listBoundary:o},{scrollTop:n,viewportHeight:r,scrollBy:i,scrollTo:l,smoothScrollTargetReached:s,scrollContainerState:c,footerHeight:a,headerHeight:u},d,f,{propsReady:h,didMount:m},{windowViewportRect:g,windowScrollTo:x,useWindowScroll:S,customScrollParent:R,windowScrollContainerState:z},B])=>{const k=I(0),L=I(0),W=I(qt),V=I({height:0,width:0}),j=I({height:0,width:0}),F=v(),A=v(),D=I(0),G=I(void 0),N=I({row:0,column:0});p(C(M(m,L,G),y((([,e])=>0!==e)),E((([,e,t])=>({items:to(0,e-1,t),top:0,bottom:0,offsetBottom:0,offsetTop:0,itemHeight:0,itemWidth:0})))),W),p(C(M(O(k),t,O(N,oo),O(j,((e,t)=>e&&e.width===t.width&&e.height===t.height)),G),P(V),E((([[e,[t,o],n,r,i],l])=>{const{row:s,column:c}=n,{height:a,width:u}=r,{width:d}=l;if(0===e||0===d)return qt;if(0===u)return function(e){return{...Yt,items:e}}(to(0,0,i));const f=lo(d,u,c);let h=f*Qt((t+s)/(a+s)),m=f*Jt((o+s)/(a+s))-1;m=Xt(e-1,eo(m,f-1)),h=Xt(m,eo(0,h));const g=to(h,m,i),{top:p,bottom:x}=ro(l,n,r,g),v=Jt(e/f);return{items:g,offsetTop:p,offsetBottom:v*a+(v-1)*s-x,top:p,bottom:x,itemHeight:a,itemWidth:u}}))),W),p(C(G,y((e=>void 0!==e)),E((e=>e.length))),k),p(C(V,E((({height:e})=>e))),r),p(C(M(V,j,W,N),E((([e,t,{items:o},n])=>{const{top:r,bottom:i}=ro(e,n,t,o);return[r,i]})),H(Ue)),o);const _=T(C(O(W),y((({items:e})=>e.length>0)),P(k),y((([{items:e},t])=>e[e.length-1].index===t-1)),E((([,e])=>e-1)),H())),U=T(C(O(W),y((({items:e})=>e.length>0&&0===e[0].index)),b(0),H())),$=T(C(O(W),y((({items:e})=>e.length>0)),E((({items:e})=>({startIndex:e[0].index,endIndex:e[e.length-1].index}))),H($e)));p($,f.scrollSeekRangeChanged),p(C(F,P(V,j,k,N),E((([e,t,o,n,r])=>{const i=Le(e),{align:l,behavior:s,offset:c}=i;let a=i.index;"LAST"===a&&(a=n-1),a=eo(0,a,Xt(n-1,a));let u=io(t,r,o,a);return"end"===l?u=Zt(u-t.height+o.height):"center"===l&&(u=Zt(u-t.height/2+o.height/2)),c&&(u+=c),{top:u,behavior:s}}))),l);const K=w(C(W,E((e=>e.offsetBottom+e.bottom))),0);return p(C(g,E((e=>({width:e.visibleWidth,height:e.visibleHeight})))),V),{data:G,totalCount:k,viewportDimensions:V,itemDimensions:j,scrollTop:n,scrollHeight:A,overscan:e,scrollBy:i,scrollTo:l,scrollToIndex:F,smoothScrollTargetReached:s,windowViewportRect:g,windowScrollTo:x,useWindowScroll:S,customScrollParent:R,windowScrollContainerState:z,deviation:D,scrollContainerState:c,footerHeight:a,headerHeight:u,initialItemCount:L,gap:N,...f,gridState:W,totalListHeight:K,...d,startReached:U,endReached:_,rangeChanged:$,propsReady:h,...B}}),c(Qe,Z,je,rt,Fe,ft,N));function ro(e,t,o,n){const{height:r}=o;if(void 0===r||0===n.length)return{top:0,bottom:0};return{top:io(e,t,o,n[0].index),bottom:io(e,t,o,n[n.length-1].index)+r}}function io(e,t,o,n){const r=lo(e.width,o.width,t.column),i=Qt(n/r),l=i*o.height+eo(0,i-1)*t.row;return l>0?l+t.row:l}function lo(e,t,o){return eo(1,Qt((e+o)/(t+o)))}const so=W((([e,t])=>({...e,...t})),c(no,W((()=>{const e=I((e=>`Item ${e}`)),t=I({}),o=I(null),n=I("virtuoso-grid-item"),r=I("virtuoso-grid-list"),i=I(Ct),l=I("div"),s=I(d),c=(e,o=null)=>w(C(t,E((t=>t[e])),H()),o);return{context:o,itemContent:e,components:t,computeItemKey:i,itemClassName:n,listClassName:r,headerFooterTag:l,scrollerRef:s,FooterComponent:c("Footer"),HeaderComponent:c("Header"),ListComponent:c("List","div"),ItemComponent:c("Item","div"),ScrollerComponent:c("Scroller","div"),ScrollSeekPlaceholder:c("ScrollSeekPlaceholder","div")}})))),co=t.memo((function(){const e=xo("gridState"),o=xo("listClassName"),n=xo("itemClassName"),r=xo("itemContent"),i=xo("computeItemKey"),l=xo("isSeeking"),s=po("scrollHeight"),c=xo("ItemComponent"),a=xo("ListComponent"),u=xo("ScrollSeekPlaceholder"),d=xo("context"),f=po("itemDimensions"),h=po("gap"),m=xo("log"),g=U((e=>{const t=e.parentElement.parentElement.scrollHeight;s(t);const o=e.firstChild;o&&f(o.getBoundingClientRect()),h({row:wo("row-gap",getComputedStyle(e).rowGap,m),column:wo("column-gap",getComputedStyle(e).columnGap,m)})}));return t.createElement(a,{ref:g,className:o,...kt(a,d),style:{paddingTop:e.offsetTop,paddingBottom:e.offsetBottom},"data-test-id":"virtuoso-item-list"},e.items.map((o=>{const s=i(o.index,o.data,d);return l?t.createElement(u,{key:s,...kt(u,d),index:o.index,height:e.itemHeight,width:e.itemWidth}):t.createElement(c,{...kt(c,d),className:n,"data-index":o.index,key:s},r(o.index,o.data,d))})))})),ao=t.memo((function(){const e=xo("HeaderComponent"),o=po("headerHeight"),n=xo("headerFooterTag"),r=U((e=>o(K(e,"height")))),i=xo("context");return e?t.createElement(n,{ref:r},t.createElement(e,kt(e,i))):null})),uo=t.memo((function(){const e=xo("FooterComponent"),o=po("footerHeight"),n=xo("headerFooterTag"),r=U((e=>o(K(e,"height")))),i=xo("context");return e?t.createElement(n,{ref:r},t.createElement(e,kt(e,i))):null})),fo=({children:o})=>{const n=t.useContext(wt),r=po("itemDimensions"),i=po("viewportDimensions"),l=U((e=>{i(e.getBoundingClientRect())}));return t.useEffect((()=>{n&&(i({height:n.viewportHeight,width:n.viewportWidth}),r({height:n.itemHeight,width:n.itemWidth}))}),[n,i,r]),e.jsx("div",{style:zt,ref:l,children:o})},ho=({children:o})=>{const n=t.useContext(wt),r=po("windowViewportRect"),i=po("itemDimensions"),l=xo("customScrollParent"),s=It(r,l);return t.useEffect((()=>{n&&(i({height:n.itemHeight,width:n.itemWidth}),r({offsetTop:0,visibleHeight:n.viewportHeight,visibleWidth:n.viewportWidth}))}),[n,r,i]),e.jsx("div",{ref:s,style:zt,children:o})},mo=t.memo((function({...t}){const o=xo("useWindowScroll"),n=xo("customScrollParent"),r=n||o?To:Io,i=n||o?ho:fo;return e.jsx(r,{...t,children:e.jsxs(i,{children:[e.jsx(ao,{}),e.jsx(co,{}),e.jsx(uo,{})]})})})),{Component:go,usePublisher:po,useEmitterValue:xo,useEmitter:vo}=F(so,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange"}},mo),Io=Ot({usePublisher:po,useEmitterValue:xo,useEmitter:vo}),To=Mt({usePublisher:po,useEmitterValue:xo,useEmitter:vo});function wo(e,t,o){return"normal"===t||(null==t?void 0:t.endsWith("px"))||o(`${e} was not resolved to pixel value correctly`,t,D.WARN),"normal"===t?0:parseInt(t??"0",10)}const Co=go,So=W((([e,t])=>({...e,...t})),c(gt,W((()=>{const t=I((t=>e.jsxs("td",{children:["Item $",t]}))),o=I(null),n=I(null),r=I(null),i=I({}),l=I(Ct),s=I(d),c=(e,t=null)=>w(C(i,E((t=>t[e])),H()),t);return{context:o,itemContent:t,fixedHeaderContent:n,fixedFooterContent:r,components:i,computeItemKey:l,scrollerRef:s,TableComponent:c("Table","table"),TableHeadComponent:c("TableHead","thead"),TableFooterComponent:c("TableFoot","tfoot"),TableBodyComponent:c("TableBody","tbody"),TableRowComponent:c("TableRow","tr"),ScrollerComponent:c("Scroller","div"),EmptyPlaceholder:c("EmptyPlaceholder"),ScrollSeekPlaceholder:c("ScrollSeekPlaceholder"),FillerRow:c("FillerRow")}})))),Ho=({height:t})=>e.jsx("tr",{children:e.jsx("td",{style:{height:t}})}),yo=({height:t})=>e.jsx("tr",{children:e.jsx("td",{style:{height:t,padding:0,border:0}})}),Eo=t.memo((function(){const o=Po("listState"),n=ko("sizeRanges"),r=Po("useWindowScroll"),i=Po("customScrollParent"),l=ko("windowScrollContainerState"),s=ko("scrollContainerState"),c=i||r?l:s,a=Po("itemContent"),u=Po("trackItemSizes"),d=Po("itemSize"),f=Po("log"),{callbackRef:h,ref:m}=$(n,d,u,c,f,void 0,i),[g,p]=t.useState(0);Lo("deviation",(e=>{g!==e&&(m.current.style.marginTop=`${e}px`,p(e))}));const x=Po("EmptyPlaceholder"),v=Po("ScrollSeekPlaceholder")||Ho,I=Po("FillerRow")||yo,T=Po("TableBodyComponent"),w=Po("TableRowComponent"),C=Po("computeItemKey"),S=Po("isSeeking"),H=Po("paddingTopAddition"),y=Po("firstItemIndex"),E=Po("statefulTotalCount"),b=Po("context");if(0===E&&x)return t.createElement(x,kt(x,b));const R=o.offsetTop+H+g,z=o.offsetBottom,B=R>0?e.jsx(I,{height:R},"padding-top"):null,k=z>0?e.jsx(I,{height:z},"padding-bottom"):null,P=o.items.map((e=>{const o=e.originalIndex,n=C(o+y,e.data,b);return S?t.createElement(v,{...kt(v,b),key:n,index:e.index,height:e.size,type:e.type||"item"}):t.createElement(w,{...kt(w,b),key:n,"data-index":o,"data-known-size":e.size,"data-item-index":e.index,item:e.data,style:{overflowAnchor:"none"}},a(e.index,e.data,b))}));return t.createElement(T,{ref:h,"data-test-id":"virtuoso-item-list",...kt(T,b)},[B,...P,k])})),bo=({children:o})=>{const r=t.useContext(Tt),i=ko("viewportHeight"),l=ko("fixedItemHeight"),s=U(n(i,(e=>K(e,"height"))));return t.useEffect((()=>{r&&(i(r.viewportHeight),l(r.itemHeight))}),[r,i,l]),e.jsx("div",{style:zt,ref:s,"data-viewport-type":"element",children:o})},Ro=({children:o})=>{const n=t.useContext(Tt),r=ko("windowViewportRect"),i=ko("fixedItemHeight"),l=Po("customScrollParent"),s=It(r,l);return t.useEffect((()=>{n&&(i(n.itemHeight),r({offsetTop:0,visibleHeight:n.viewportHeight,visibleWidth:100}))}),[n,r,i]),e.jsx("div",{ref:s,style:zt,"data-viewport-type":"window",children:o})},zo=t.memo((function(o){const r=Po("useWindowScroll"),i=Po("customScrollParent"),l=ko("fixedHeaderHeight"),s=ko("fixedFooterHeight"),c=Po("fixedHeaderContent"),a=Po("fixedFooterContent"),u=Po("context"),d=U(n(l,(e=>K(e,"height")))),f=U(n(s,(e=>K(e,"height")))),h=i||r?Mo:Oo,m=i||r?Ro:bo,g=Po("TableComponent"),p=Po("TableHeadComponent"),x=Po("TableFooterComponent"),v=c?t.createElement(p,{key:"TableHead",style:{zIndex:1,position:"sticky",top:0},ref:d,...kt(p,u)},c()):null,I=a?t.createElement(x,{key:"TableFoot",style:{zIndex:1,position:"sticky",bottom:0},ref:f,...kt(x,u)},a()):null;return e.jsx(h,{...o,children:e.jsx(m,{children:t.createElement(g,{style:{borderSpacing:0},...kt(g,u)},[v,e.jsx(Eo,{},"TableBody"),I])})})})),{Component:Bo,usePublisher:ko,useEmitterValue:Po,useEmitter:Lo}=F(So,{required:{},optional:{context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",fixedHeaderContent:"fixedHeaderContent",fixedFooterContent:"fixedFooterContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",totalCount:"totalCount",topItemCount:"topItemCount",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",groupCounts:"groupCounts",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},zo),Oo=Ot({usePublisher:ko,useEmitterValue:Po,useEmitter:Lo}),Mo=Mt({usePublisher:ko,useEmitterValue:Po,useEmitter:Lo}),Wo=Bo;exports.GroupedVirtuoso=Kt,exports.LogLevel=D,exports.TableVirtuoso=Wo,exports.Virtuoso=$t,exports.VirtuosoGrid=Co,exports.VirtuosoGridMockContext=wt,exports.VirtuosoMockContext=Tt;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
|
|
1
3
|
import { ComponentPropsWithRef } from 'react';
|
|
2
4
|
import { ComponentType } from 'react';
|
|
5
|
+
import { Context } from 'react';
|
|
6
|
+
import { HTMLProps } from 'react';
|
|
3
7
|
import { Key } from 'react';
|
|
4
|
-
import { default as React_2 } from 'react';
|
|
5
|
-
import * as React_3 from 'react';
|
|
6
8
|
import { ReactElement } from 'react';
|
|
7
9
|
import { ReactNode } from 'react';
|
|
10
|
+
import { Ref } from 'react';
|
|
8
11
|
|
|
9
12
|
/**
|
|
10
13
|
* Customize the Virtuoso rendering by passing a set of custom components.
|
|
@@ -81,9 +84,9 @@ export declare interface FillerRowProps {
|
|
|
81
84
|
height: number;
|
|
82
85
|
}
|
|
83
86
|
|
|
84
|
-
export declare type FixedFooterContent = (() =>
|
|
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);
|
|
@@ -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;
|