virtua 0.15.0 → 0.15.1

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/README.md CHANGED
@@ -213,7 +213,7 @@ It may be dispatched by ResizeObserver in this lib [as described in spec](https:
213
213
  | Infinite scroll | ✅ | ✅ | 🟠 (needs [react-window-infinite-loader](https://github.com/bvaughn/react-window-infinite-loader)) | 🟠 (needs [InfiniteLoader](https://github.com/bvaughn/react-virtualized/blob/master/docs/InfiniteLoader.md)) | ✅ | ❌ | ✅ |
214
214
  | Reverse (bi-directional) infinite scroll | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | 🟠 (has startItem method but its scroll position can be inaccurate) |
215
215
  | Scroll restoration | ✅ | ✅ (getState) | ❌ | ❌ | ❌ | ❌ | ❌ |
216
- | Smooth scroll | | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
216
+ | Smooth scroll | | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
217
217
  | RTL support | ✅ | ❌ | ✅ ([may be dropped in v2](https://github.com/bvaughn/react-window/issues/302)) | ❌ | ❌ | ❌ | ❌ |
218
218
  | SSR support | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
219
219
  | Render React Server Components (RSC) as children | ✅ | ❌ | ❌ | ❌ | 🟠(needs customization) | ❌ | 🟠 (needs customization) |
@@ -14,10 +14,11 @@ export declare const ACTION_ITEMS_LENGTH_CHANGE = 3;
14
14
  export declare const ACTION_SCROLL = 4;
15
15
  export declare const ACTION_SCROLL_END = 5;
16
16
  export declare const ACTION_MANUAL_SCROLL = 6;
17
+ export declare const ACTION_BEFORE_MANUAL_SMOOTH_SCROLL = 7;
17
18
  type Actions = [type: typeof ACTION_ITEM_RESIZE, entries: ItemResize[]] | [type: typeof ACTION_VIEWPORT_RESIZE, size: ViewportResize] | [
18
19
  type: typeof ACTION_ITEMS_LENGTH_CHANGE,
19
20
  arg: [length: number, isShift?: boolean | undefined]
20
- ] | [type: typeof ACTION_SCROLL, offset: number] | [type: typeof ACTION_SCROLL_END, dummy?: void] | [type: typeof ACTION_MANUAL_SCROLL, dummy?: void];
21
+ ] | [type: typeof ACTION_SCROLL, offset: number] | [type: typeof ACTION_SCROLL_END, dummy?: void] | [type: typeof ACTION_MANUAL_SCROLL, dummy?: void] | [type: typeof ACTION_BEFORE_MANUAL_SMOOTH_SCROLL, offset: number];
21
22
  type Subscriber = (sync?: boolean) => void;
22
23
  export declare const UPDATE_SCROLL_STATE = 1;
23
24
  export declare const UPDATE_SIZE_STATE = 2;
package/lib/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var e=require("react/jsx-runtime"),t=require("react"),n=require("react-dom");const o=Math.min,r=Math.max,i=Math.abs,s=Date.now,l=Object.values,c=Array.isArray,a=setTimeout,u=(e,t,n)=>o(n,r(t,e)),h=e=>null!=e,d=(e,t)=>{let n;const o=()=>{h(n)&&clearTimeout(n)},r=()=>{o(),n=a((()=>{n=null,e()}),t)};return r.t=o,r},f=e=>{let t,n;return(...o)=>(t||(t=!0,n=e(...o)),n)},_=e=>getComputedStyle(e),w=e=>e?parseFloat(e):0,g=-1,p=(e,t)=>{const n=e.o[t];return n===g?e.i:n},m=(e,t)=>{if(!e.l)return 0;if(e.u>=t)return e.h[t];let n=e.u,o=e.h[n];for(;n<t;)o+=p(e,n),e.h[++n]=o;return e.u=t,o},v=(e,t,n)=>{let o=m(e,n);for(;n>=0&&n<e.l;)if(o<=t){const r=p(e,n);if(o+r>t)break;o+=r,n++}else o-=p(e,--n);return u(n,0,e.l-1)},b=(e,t,n)=>{const o=n?"unshift":"push";for(let n=e.l;n<t;n++)e.o[o](g),e.h.push(0===n?0:g);e.l=t},S=(e,t,n)=>{const o=t-e.l,r=o<0;let i;return r?(i=(n?e.o.splice(0,-o):e.o.splice(o)).reduce(((t,n)=>t+(n===g?e.i:n)),0),e.h.splice(o)):(i=e.i*o,b(e,e.l+o,n)),e.u=n?0:u(t-1,0,e.u),e.l=t,[i,r]},z="undefined"!=typeof window,I=()=>document.documentElement,y=/*#__PURE__*/f((e=>{const t="scrollLeft",n=e[t];e[t]=1;const o=e[t]<1;return e[t]=n,o})),x=/*#__PURE__*/f((()=>!!z&&"rtl"===_(I()).direction)),R=/*#__PURE__*/f((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),k=/*#__PURE__*/f((()=>"scrollBehavior"in I().style)),O=(e,t,n)=>t.reduce(((t,[o,r])=>{const i=r-p(e,o);return(!n||i>0)&&(t+=i),t}),0),C=(e,t=40,n=0,s=((e,t)=>{const n={i:t,l:0,u:0,o:[],h:[]};return b(n,e),n})(e,t),l,c)=>{let a=t*r(n-1,0),h=0,d=0,f=0,_=0,w=0,z=0,I=0,y=!1,x=!1,k=[0,n];const C=new Set,T=()=>(e=>e.l?m(e,e.l-1)+p(e,e.l-1):0)(s),M=()=>T()-a+d,H=e=>u(e,0,M()),J=e=>{R()&&0!==I?z+=e:(w+=e,_++)},W=e=>{const t=I;return I=e,I!==t};return{_:()=>JSON.parse(JSON.stringify(s)),g:()=>k=((e,t,n,r)=>{const i=v(e,t,o(n,e.l-1));return[i,v(e,t+r,i)]})(s,f+z,k[0],a),p:e=>s.o[e]===g,m(e){const t=m(s,e)-z;return l?t+r(0,a-T()):t},v:e=>p(s,e),S:()=>s.l,I:()=>f,R:M,k:()=>I,O:()=>a,C:()=>h,T:()=>r(T(),a),M:()=>_,H(){const e=w;return w=0,e},J(e,t){const n=[e,t];return C.add(n),()=>{C.delete(n)}},W(e,t){let n,r,l=0;switch(e){case 1:{const e=t.filter((([e,t])=>s.o[e]!==t));if(!e.length)break;let n=0;if(0===f);else if(f>M()-1.5)n=O(s,e,!0);else{const[t]=k;n=O(s,e.filter((([e])=>e<t)))}n&&J(n);let i=!1;e.forEach((([e,t])=>{((e,t,n)=>{const r=e.o[t]===g;return e.o[t]=n,e.u=o(t,e.u),r})(s,e,t)&&(i=!0)})),c&&i&&!f&&(e=>{const t=e.o.filter((e=>e!==g)),n=t[0];e.i=t.every((e=>e===n))?n:(e=>{const t=[...e].sort(((e,t)=>e-t)),n=e.length/2|0;return t.length%2==0?(t[n-1]+t[n])/2:t[n]})(t)})(s),l+=2,x=r=!0;break}case 2:{const e=t[0]+t[1]+t[2];a!==e&&(a=e,h=t[1],d=t[2],l=2);break}case 3:if(t[1]){const e=M()-f,[n,r]=S(s,t[0],!0),i=r?-o(n,e):n;J(i),R()||(f=H(f+i)),l=1}else S(s,t[0]);break;case 4:{if(f===t)break;const e=t-f,n=x;x=!1,0!==I&&n||y||W(e<0?2:1),r=i(e)>a,l+=4,f=H(t),l+=1;break}case 5:W(0)&&(n=!0,l=1),y=!1;break;case 6:y=!0}l&&(n&&z&&(x=!0,w+=z,z=0,_++),C.forEach((([e,t])=>{l&e&&t(r)})))}}},T=z?t.useLayoutEffect:t.useEffect,M=(e,t,n)=>(()=>{let o=s()-50;return(...r)=>{const i=s();o+50<i&&(o=i,(o=>{if(0!==e.k()&&!o.ctrlKey&&(t?o.deltaX:o.deltaY)){const t=e.I();t>0&&t<e.R()&&n()}})(...r))}})(),H=(e,t,n,o)=>y(e)||o?-n:t.R()-n,J=(e,t)=>{let n,o,r=!1,s=!1;const l=t?"scrollLeft":"scrollTop",c=(o,r)=>t&&x()?H(n,e,o,r):o,h=async(r,h)=>{if(!n)return;o&&o();const f=()=>u(r(),0,e.R());if(h&&k()){for(s=!0;;){const o=c(f());if(i(e.I()-o)<1)break;let r;n.scrollTo({[t?"left":"top"]:o,behavior:"smooth"});const s=d((()=>{r&&r[0](),s.t()}),100),l=e.J(4,s);try{await new Promise(((e,t)=>{r=[e,t]}))}catch(e){return}finally{l(),s.t()}}s=!1}else for(;;){let t;const r=e.J(2,(()=>{t&&t[0]()}));try{n[l]=c(f()),e.W(6),await new Promise(((e,n)=>{t=[e,n],a(o=n,250)}))}catch(e){return}finally{r()}}};return{B(o){n=o;let i=!1,s=!1;const a=()=>{e.W(4,c(o[l]))},u=d((()=>{i?u():(s=!1,a(),e.W(5))}),150),h=()=>{s&&(r=!0),a(),u()},f=M(e,t,u),_=()=>{i=!0,s=r=!1},w=()=>{i=!1,R()&&(s=!0)};return o.addEventListener("scroll",h),o.addEventListener("wheel",f,{passive:!0}),o.addEventListener("touchstart",_,{passive:!0}),o.addEventListener("touchend",w,{passive:!0}),()=>{o.removeEventListener("scroll",h),o.removeEventListener("wheel",f),o.removeEventListener("touchstart",_),o.removeEventListener("touchend",w),u.t()}},L(e){h((()=>e))},P(t){t+=e.I(),h((()=>t))},$(t,{align:n,smooth:o}={}){t=u(t,0,e.S()-1),h("end"===n?()=>e.C()+e.m(t)+e.v(t)-e.O():"center"===n?()=>e.C()+e.m(t)+(e.v(t)-e.O())/2:()=>e.C()+e.m(t),o)},q:e=>{if(n&&!s){if(r){const e=n.style.overflow;n.style.overflow="hidden",r=!1,a((()=>{n.style.overflow=e}))}n[l]+=c(e,!0)}}}},W=(e,t)=>{let n;const o=t?"scrollX":"scrollY",r=t?"offsetLeft":"offsetTop",i=(o,r)=>t&&x()?H(n,e,o,r):o;return{B(s){n=s;let l=!1;const c=(e,n)=>{const o=n+(t&&x()?window.innerWidth-e[r]-e.offsetWidth:e[r]),i=e.offsetParent;return e!==document.body&&i?c(i,o):o},a=()=>{l&&e.W(4,i(window[o])-c(s,0))},u=d((()=>{a(),e.W(5)}),150),h=()=>{a(),u()},f=M(e,t,u),_=new IntersectionObserver((([e])=>{l=e.isIntersecting}));return _.observe(s),window.addEventListener("scroll",h),window.addEventListener("wheel",f,{passive:!0}),()=>{_.disconnect(),window.removeEventListener("scroll",h),window.removeEventListener("wheel",f),u.t()}},q:e=>{window.scrollBy(t?i(e,!0):0,t?0:e)}}},B="current",L={},P=(e,t)=>{if(c(e))for(const n of e)P(n,t);else h(e)&&"boolean"!=typeof e&&t.push(e)},$=e=>{const t=[];return P(e,t),t},q=(e,t,n)=>r(e-(1===n?1:r(1,t)),0),j=(e,t,n,i)=>o(e+(2===n?1:r(1,t)),i-1),D=e=>{const n=t.useRef();return n[B]||(n[B]=e())},N=e=>{const n=t.useRef(e);return T((()=>{n[B]=e}),[e]),n},V={box:"border-box"},A=(e,t)=>{let n;const o=t?"width":"height",r=new WeakMap,i=f((()=>new ResizeObserver((i=>{const s=[];for(const{target:l,contentRect:c}of i)if(l.offsetParent)if(l===n)e.W(2,[c[o],c[t?"left":"top"],w(_(n)[t?"paddingRight":"paddingBottom"])]);else{const e=r.get(l);h(e)&&s.push([e,c[o]])}s.length&&e.W(1,s)}))));return{j(e){n=e;const t=i();return t.observe(e,V),()=>{t.disconnect()}},D(e,t){const n=i();return r.set(e,t),n.observe(e),()=>{r.delete(e),n.unobserve(e)}}}},E=(e,t)=>{const n=t?"width":"height",o=t?"innerWidth":"innerHeight",r=new WeakMap,i=f((()=>new ResizeObserver((t=>{const o=[];for(const{target:e,contentRect:i}of t){if(!e.offsetParent)continue;const t=r.get(e);h(t)&&o.push([t,i[n]])}o.length&&e.W(1,o)}))));return{j(){const t=()=>{e.W(2,[window[o],0,0])};return window.addEventListener("resize",t),t(),()=>{window.removeEventListener("resize",t),i().disconnect()}},D(e,t){const n=i();return r.set(e,t),n.observe(e),()=>{r.delete(e),n.unobserve(e)}}}},F=(e,t)=>{let n;const o="height",i="width",s=new WeakMap,l=new Set,c=new Set,a=new Map,u=(e,t)=>`${e}-${t}`,h=f((()=>new ResizeObserver((h=>{const d=new Set,f=new Set;for(const{target:r,contentRect:l}of h)if(r.offsetParent)if(r===n){const r=_(n);e.W(2,[l[o],l.top,w(r.paddingBottom)]),t.W(2,[l[i],l.left,w(r.paddingRight)])}else{const e=s.get(r);if(e){const[t,n]=e,r=u(t,n),s=a.get(r),c=[l[o],l[i]];let h,_;s?(s[0]!==c[0]&&(h=!0),s[1]!==c[1]&&(_=!0)):h=_=!0,h&&d.add(t),_&&f.add(n),(h||_)&&a.set(r,c)}}if(d.size){const t=[];d.forEach((e=>{let n=0;c.forEach((t=>{const o=a.get(u(e,t));o&&(n=r(n,o[0]))})),n&&t.push([e,n])})),e.W(1,t)}if(f.size){const e=[];f.forEach((t=>{let n=0;l.forEach((e=>{const o=a.get(u(e,t));o&&(n=r(n,o[1]))})),n&&e.push([t,n])})),t.W(1,e)}}))));return{j(e){n=e;const t=h();return t.observe(e,V),()=>{t.disconnect()}},D(e,t,n){const o=h();return s.set(e,[t,n]),l.add(t),c.add(n),o.observe(e),()=>{s.delete(e),o.unobserve(e)}}}},U=t.forwardRef((({children:n,attrs:o,width:r,height:i,scrolling:s},l)=>e.jsx("div",{ref:l,...o,children:e.jsx("div",{style:t.useMemo((()=>({position:"relative",visibility:"hidden",width:null!=r?r:"100%",height:null!=i?i:"100%",pointerEvents:s?"none":"auto"})),[r,i,s]),children:n})}))),X=t.memo((({N:n,V:o,A:r,F:i,U:s,X:l,Y:c})=>{const a=t.useRef(null);return T((()=>o.D(a[B],r)),[r]),e.jsx(l,{ref:a,style:t.useMemo((()=>{const e={margin:0,padding:0,position:"absolute",[c?"height":"width"]:"100%",[c?"top":"left"]:0,[c?x()?"right":"left":"top"]:i,visibility:s?"hidden":"visible"};return c&&(e.display="flex"),e}),[i,s]),children:n})})),Y=()=>[],G=()=>t.useReducer(Y,void 0,Y)[1],K=t.forwardRef((({children:o,overscan:r=4,initialItemSize:i,initialItemCount:s,shift:c,horizontal:a,reverse:u,cache:d,components:{Root:f=U,Item:_="div"}=L,onScroll:w,onScrollStop:g,onRangeChange:p,...m},v)=>{const b=t.useMemo((()=>$(o)),[o]),S=b.length,z=N(w),I=N(g),[y,x,R,k]=D((()=>{const e=!!a,t=C(S,i,s,d,!!u,!i);return[t,A(t,e),J(t,e),e]}));S!==y.S()&&y.W(3,[S,c]);const O=G(),[M,H]=y.g(),W=y.k(),P=y.M(),V=y.T(),E=t.useRef(null),F=0!==W;T((()=>{const e=E[B],t=x.j(e),o=R.B(e),r=y.J(3,(e=>{e?n.flushSync(O):O()})),i=y.J(4,(()=>{z[B]&&z[B](y.I())}));return()=>{t(),o(),r(),i()}}),[]),T((()=>{const e=y.H();e&&R.q(e)}),[P]),t.useEffect((()=>{F||I[B]&&I[B]()}),[F]),t.useEffect((()=>{p&&p(M,H)}),[M,H]),t.useImperativeHandle(v,(()=>({get cache(){return y._()},get scrollOffset(){return y.I()},get scrollSize(){return y.T()},get viewportSize(){return y.O()},scrollToIndex:R.$,scrollTo:R.L,scrollBy:R.P})),[]);const Y=q(M,r,W),K=j(H,r,W,S),Q=[];for(let t=Y;t<=K;t++){const n=b[t],o=n.key;Q.push(e.jsx(X,{V:x,A:t,F:y.m(t),U:y.p(t),X:_,N:n,Y:k},h(o)?o:"_"+t))}return e.jsx(f,{ref:E,width:k?V:void 0,height:k?void 0:V,scrolling:F,attrs:t.useMemo((()=>({...m,style:{overflow:"auto",display:k?"inline-block":"block",contain:"strict",width:"100%",height:"100%",...m.style}})),l(m)),children:Q})})),Q=(e,t)=>`${e}-${t}`,Z=t.memo((({N:n,V:o,G:r,K:i,Z:s,ee:l,te:c,ne:a,U:u,X:h})=>{const d=t.useRef(null);return T((()=>o.D(d[B],r,i)),[i,r]),e.jsx(h,{ref:d,style:t.useMemo((()=>({display:"grid",margin:0,padding:0,position:"absolute",top:s,[x()?"right":"left"]:l,visibility:u?"hidden":"visible",minHeight:c,minWidth:a})),[s,l,a,c,u]),children:n})})),ee=t.forwardRef((({children:o,row:r,col:i,cellHeight:s=40,cellWidth:c=100,overscan:a=2,initialRowCount:u,initialColCount:h,components:{Root:d=U,Cell:f="div"}=L,..._},w)=>{const[g,p,m,v,b]=D((()=>{const e=C(r,s,u),t=C(i,c,h);return[e,t,F(e,t),J(e,!1),J(t,!0)]}));r!==g.S()&&g.W(3,[r]),i!==p.S()&&p.W(3,[i]);const S=G(),[z,I]=g.g(),[y,x]=p.g(),R=g.k(),k=p.k(),O=g.M(),M=p.M(),H=g.T(),W=p.T(),P=t.useRef(null),$=0!==R,N=0!==k;T((()=>{const e=P[B],t=m.j(e),o=v.B(e),r=b.B(e),i=e=>{e?n.flushSync(S):S()},s=g.J(3,i),l=p.J(3,i);return()=>{t(),o(),r(),s(),l()}}),[]),T((()=>{const e=g.H();e&&v.q(e)}),[O]),T((()=>{const e=p.H();e&&b.q(e)}),[M]),t.useImperativeHandle(w,(()=>({get scrollOffset(){return[p.I(),g.I()]},get scrollSize(){return[p.T(),g.T()]},get viewportSize(){return[p.O(),g.O()]},scrollToIndex(e,t){b.$(e),v.$(t)},scrollTo(e,t){b.L(e),v.L(t)},scrollBy(e,t){b.P(e),v.P(t)}})),[]);const V=t.useMemo((()=>{const e=new Map;return(t,n)=>{let r=e.get(Q(t,n));return r||e.set(Q(t,n),r=o({rowIndex:t,colIndex:n})),r}}),[o]),A=q(z,a,R),E=j(I,a,R,r),X=q(y,a,k),Y=j(x,a,k,i),K=[];for(let t=A;t<=E;t++)for(let n=X;n<=Y;n++)K.push(e.jsx(Z,{V:m,G:t,K:n,Z:g.m(t),ee:p.m(n),te:g.v(t),ne:p.v(n),U:g.p(t)||p.p(n),X:f,N:V(t,n)},Q(t,n)));return e.jsx(d,{ref:P,width:W,height:H,scrolling:$||N,attrs:t.useMemo((()=>({..._,style:{overflow:"auto",contain:"strict",width:"100%",height:"100%",..._.style}})),l(_)),children:K})})),te=t.forwardRef((({children:o,overscan:r=4,initialItemSize:i,initialItemCount:s,horizontal:c,cache:a,components:{Root:u=U,Item:d="div"}=L,onScrollStop:f,onRangeChange:_,...w},g)=>{const p=t.useMemo((()=>$(o)),[o]),m=p.length,v=N(f),[b,S,z,I]=D((()=>{const e=!!c,t=C(m,i,s,a,!1,!i);return[t,E(t,e),W(t,e),e]}));m!==b.S()&&b.W(3,[m]);const y=G(),[x,R]=b.g(),k=b.k(),O=b.M(),M=b.T(),H=t.useRef(null),J=0!==k;T((()=>{const e=H[B],t=S.j(e),o=z.B(e);return b.J(3,(e=>{e?n.flushSync(y):y()})),()=>{t(),o()}}),[]),T((()=>{const e=b.H();e&&z.q(e)}),[O]),t.useEffect((()=>{J||v[B]&&v[B]()}),[J]),t.useEffect((()=>{_&&_(x,R)}),[x,R]),t.useImperativeHandle(g,(()=>({get cache(){return b._()}})),[]);const P=q(x,r,k),V=j(R,r,k,m),A=[];for(let t=P;t<=V;t++){const n=p[t],o=n.key;A.push(e.jsx(X,{V:S,A:t,F:b.m(t),U:b.p(t),X:d,N:n,Y:I},h(o)?o:"_"+t))}return e.jsx(u,{ref:H,width:I?M:void 0,height:I?void 0:M,scrolling:J,attrs:t.useMemo((()=>({...w,style:{display:I?"inline-block":"block",width:I?"auto":"100%",height:I?"100%":"auto",...w.style}})),l(w)),children:A})}));exports.VGrid=ee,exports.VList=K,exports.WVList=te;
2
+ var e=require("react/jsx-runtime"),t=require("react"),n=require("react-dom");const r=Math.min,o=Math.max,i=Math.abs,s=Date.now,l=Object.values,c=Array.isArray,u=setTimeout,a=(e,t,n)=>r(n,o(t,e)),h=e=>null!=e,d=(e,t)=>{let n;const r=()=>{h(n)&&clearTimeout(n)},o=()=>{r(),n=u((()=>{n=null,e()}),t)};return o.t=r,o},f=e=>{let t,n;return(...r)=>(t||(t=!0,n=e(...r)),n)},_=e=>getComputedStyle(e),w=e=>e?parseFloat(e):0,g=-1,p=(e,t)=>{const n=e.o[t];return n===g?e.i:n},m=(e,t)=>{if(!e.l)return 0;if(e.u>=t)return e.h[t];let n=e.u,r=e.h[n];for(;n<t;)r+=p(e,n),e.h[++n]=r;return e.u=t,r},v=(e,t,n)=>{let r=m(e,n);for(;n>=0&&n<e.l;)if(r<=t){const o=p(e,n);if(r+o>t)break;r+=o,n++}else r-=p(e,--n);return a(n,0,e.l-1)},b=(e,t,n,o)=>{const i=v(e,t,r(n,e.l-1));return[i,v(e,t+o,i)]},S=(e,t,n)=>{const r=n?"unshift":"push";for(let n=e.l;n<t;n++)e.o[r](g),e.h.push(0===n?0:g);e.l=t},z=(e,t,n)=>{const r=t-e.l,o=r<0;let i;return o?(i=(n?e.o.splice(0,-r):e.o.splice(r)).reduce(((t,n)=>t+(n===g?e.i:n)),0),e.h.splice(r)):(i=e.i*r,S(e,e.l+r,n)),e.u=n?0:a(t-1,0,e.u),e.l=t,[i,o]},I="undefined"!=typeof window,y=()=>document.documentElement,x=/*#__PURE__*/f((e=>{const t="scrollLeft",n=e[t];e[t]=1;const r=e[t]<1;return e[t]=n,r})),R=/*#__PURE__*/f((()=>!!I&&"rtl"===_(y()).direction)),k=/*#__PURE__*/f((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),O=/*#__PURE__*/f((()=>"scrollBehavior"in y().style)),C=(e,t,n)=>t.reduce(((t,[r,o])=>{const i=o-p(e,r);return(!n||i>0)&&(t+=i),t}),0),T=(e,t=40,n=0,s=((e,t)=>{const n={i:t,l:0,u:0,o:[],h:[]};return S(n,e),n})(e,t),l,c)=>{let u=t*o(n-1,0),d=0,f=0,_=0,w=0,v=0,I=0,y=0,x=!1,R=null,O=!1,T=[0,n];const M=new Set,H=()=>(e=>e.l?m(e,e.l-1)+p(e,e.l-1):0)(s),J=()=>H()-u+f,W=e=>a(e,0,J()),B=e=>{k()&&0!==y?I+=e:(v+=e,w++)},L=e=>{const t=y;return y=e,y!==t};return{_:()=>JSON.parse(JSON.stringify(s)),g(){if(h(R)){const[e,t]=b(s,R,T[0],u);return[r(T[0],e),o(T[1],t)]}return T=b(s,_+I,T[0],u)},p:e=>s.o[e]===g,m(e){const t=m(s,e)-I;return l?t+o(0,u-H()):t},v:e=>p(s,e),S:()=>s.l,I:()=>_,R:J,k:()=>y,O:()=>u,C:()=>d,T:()=>o(H(),u),M:()=>w,H(){const e=v;return v=0,e},J(e,t){const n=[e,t];return M.add(n),()=>{M.delete(n)}},W(e,t){let n,o,l=0;switch(e){case 1:{const e=t.filter((([e,t])=>s.o[e]!==t));if(!e.length)break;let n=0;if(0===_);else if(_>J()-1.5)n=C(s,e,!0);else{const[t]=T;n=C(s,e.filter((([e])=>e<t)))}n&&B(n);let i=!1;e.forEach((([e,t])=>{((e,t,n)=>{const o=e.o[t]===g;return e.o[t]=n,e.u=r(t,e.u),o})(s,e,t)&&(i=!0)})),c&&i&&!_&&(e=>{const t=e.o.filter((e=>e!==g)),n=t[0];e.i=t.every((e=>e===n))?n:(e=>{const t=[...e].sort(((e,t)=>e-t)),n=e.length/2|0;return t.length%2==0?(t[n-1]+t[n])/2:t[n]})(t)})(s),l+=2,O=o=!0;break}case 2:{const e=t[0]+t[1]+t[2];u!==e&&(u=e,d=t[1],f=t[2],l=2);break}case 3:if(t[1]){const e=J()-_,[n,o]=z(s,t[0],!0),i=o?-r(n,e):n;B(i),k()||(_=W(_+i)),l=1}else z(s,t[0]);break;case 4:{if(_===t)break;const e=t-_,n=O;O=!1,0!==y&&n||x||L(e<0?2:1),o=i(e)>u,l+=4,_=W(t),l+=1;break}case 5:L(0)&&(n=!0,l=1),x=!1,R=null;break;case 6:x=!0;break;case 7:R=t,l=1}l&&(n&&I&&(O=!0,v+=I,I=0,w++),M.forEach((([e,t])=>{l&e&&t(o)})))}}},M=I?t.useLayoutEffect:t.useEffect,H=(e,t,n)=>(()=>{let r=s()-50;return(...o)=>{const i=s();r+50<i&&(r=i,(r=>{if(0!==e.k()&&!r.ctrlKey&&(t?r.deltaX:r.deltaY)){const t=e.I();t>0&&t<e.R()&&n()}})(...o))}})(),J=(e,t,n,r)=>x(e)||r?-n:t.R()-n,W=(e,t)=>{let n,r,o=!1;const i=t?"scrollLeft":"scrollTop",s=(r,o)=>t&&R()?J(n,e,r,o):r,l=async(o,l)=>{if(!n)return;r&&r();const c=()=>a(o(),0,e.R());if(l&&O()){let o;const i=()=>{e.W(7,c())};i();const l=d((()=>{o&&o[0](),l.t()}),100),u=e.J(2,(()=>{i(),l()}));try{await new Promise(((e,t)=>{o=[e,r=t],l()}))}catch(e){return}finally{u(),l.t()}n.scrollTo({[t?"left":"top"]:s(c()),behavior:"smooth"})}else for(;;){let t;const o=e.J(2,(()=>{t&&t[0]()}));try{n[i]=s(c()),e.W(6),await new Promise(((e,n)=>{t=[e,r=n],u(n,150)}))}catch(e){return}finally{o()}}};return{B(r){n=r;let l=!1,c=!1;const u=()=>{e.W(4,s(r[i]))},a=d((()=>{l?a():(c=!1,u(),e.W(5))}),150),h=()=>{c&&(o=!0),u(),a()},f=H(e,t,a),_=()=>{l=!0,c=o=!1},w=()=>{l=!1,k()&&(c=!0)};return r.addEventListener("scroll",h),r.addEventListener("wheel",f,{passive:!0}),r.addEventListener("touchstart",_,{passive:!0}),r.addEventListener("touchend",w,{passive:!0}),()=>{r.removeEventListener("scroll",h),r.removeEventListener("wheel",f),r.removeEventListener("touchstart",_),r.removeEventListener("touchend",w),a.t()}},L(e){l((()=>e))},P(t){t+=e.I(),l((()=>t))},$(t,{align:n,smooth:r}={}){t=a(t,0,e.S()-1),l("end"===n?()=>e.C()+e.m(t)+e.v(t)-e.O():"center"===n?()=>e.C()+e.m(t)+(e.v(t)-e.O())/2:()=>e.C()+e.m(t),r)},q:e=>{if(n){if(o){const e=n.style.overflow;n.style.overflow="hidden",o=!1,u((()=>{n.style.overflow=e}))}n[i]+=s(e,!0)}}}},B=(e,t)=>{let n;const r=t?"scrollX":"scrollY",o=t?"offsetLeft":"offsetTop",i=(r,o)=>t&&R()?J(n,e,r,o):r;return{B(s){n=s;let l=!1;const c=(e,n)=>{const r=n+(t&&R()?window.innerWidth-e[o]-e.offsetWidth:e[o]),i=e.offsetParent;return e!==document.body&&i?c(i,r):r},u=()=>{l&&e.W(4,i(window[r])-c(s,0))},a=d((()=>{u(),e.W(5)}),150),h=()=>{u(),a()},f=H(e,t,a),_=new IntersectionObserver((([e])=>{l=e.isIntersecting}));return _.observe(s),window.addEventListener("scroll",h),window.addEventListener("wheel",f,{passive:!0}),()=>{_.disconnect(),window.removeEventListener("scroll",h),window.removeEventListener("wheel",f),a.t()}},q:e=>{window.scrollBy(t?i(e,!0):0,t?0:e)}}},L="current",P={},$=(e,t)=>{if(c(e))for(const n of e)$(n,t);else h(e)&&"boolean"!=typeof e&&t.push(e)},q=e=>{const t=[];return $(e,t),t},j=(e,t,n)=>o(e-(1===n?1:o(1,t)),0),D=(e,t,n,i)=>r(e+(2===n?1:o(1,t)),i-1),N=e=>{const n=t.useRef();return n[L]||(n[L]=e())},V=e=>{const n=t.useRef(e);return M((()=>{n[L]=e}),[e]),n},A={box:"border-box"},E=(e,t)=>{let n;const r=t?"width":"height",o=new WeakMap,i=f((()=>new ResizeObserver((i=>{const s=[];for(const{target:l,contentRect:c}of i)if(l.offsetParent)if(l===n)e.W(2,[c[r],c[t?"left":"top"],w(_(n)[t?"paddingRight":"paddingBottom"])]);else{const e=o.get(l);h(e)&&s.push([e,c[r]])}s.length&&e.W(1,s)}))));return{j(e){n=e;const t=i();return t.observe(e,A),()=>{t.disconnect()}},D(e,t){const n=i();return o.set(e,t),n.observe(e),()=>{o.delete(e),n.unobserve(e)}}}},F=(e,t)=>{const n=t?"width":"height",r=t?"innerWidth":"innerHeight",o=new WeakMap,i=f((()=>new ResizeObserver((t=>{const r=[];for(const{target:e,contentRect:i}of t){if(!e.offsetParent)continue;const t=o.get(e);h(t)&&r.push([t,i[n]])}r.length&&e.W(1,r)}))));return{j(){const t=()=>{e.W(2,[window[r],0,0])};return window.addEventListener("resize",t),t(),()=>{window.removeEventListener("resize",t),i().disconnect()}},D(e,t){const n=i();return o.set(e,t),n.observe(e),()=>{o.delete(e),n.unobserve(e)}}}},U=(e,t)=>{let n;const r="height",i="width",s=new WeakMap,l=new Set,c=new Set,u=new Map,a=(e,t)=>`${e}-${t}`,h=f((()=>new ResizeObserver((h=>{const d=new Set,f=new Set;for(const{target:o,contentRect:l}of h)if(o.offsetParent)if(o===n){const o=_(n);e.W(2,[l[r],l.top,w(o.paddingBottom)]),t.W(2,[l[i],l.left,w(o.paddingRight)])}else{const e=s.get(o);if(e){const[t,n]=e,o=a(t,n),s=u.get(o),c=[l[r],l[i]];let h,_;s?(s[0]!==c[0]&&(h=!0),s[1]!==c[1]&&(_=!0)):h=_=!0,h&&d.add(t),_&&f.add(n),(h||_)&&u.set(o,c)}}if(d.size){const t=[];d.forEach((e=>{let n=0;c.forEach((t=>{const r=u.get(a(e,t));r&&(n=o(n,r[0]))})),n&&t.push([e,n])})),e.W(1,t)}if(f.size){const e=[];f.forEach((t=>{let n=0;l.forEach((e=>{const r=u.get(a(e,t));r&&(n=o(n,r[1]))})),n&&e.push([t,n])})),t.W(1,e)}}))));return{j(e){n=e;const t=h();return t.observe(e,A),()=>{t.disconnect()}},D(e,t,n){const r=h();return s.set(e,[t,n]),l.add(t),c.add(n),r.observe(e),()=>{s.delete(e),r.unobserve(e)}}}},X=t.forwardRef((({children:n,attrs:r,width:o,height:i,scrolling:s},l)=>e.jsx("div",{ref:l,...r,children:e.jsx("div",{style:t.useMemo((()=>({position:"relative",visibility:"hidden",width:null!=o?o:"100%",height:null!=i?i:"100%",pointerEvents:s?"none":"auto"})),[o,i,s]),children:n})}))),Y=t.memo((({N:n,V:r,A:o,F:i,U:s,X:l,Y:c})=>{const u=t.useRef(null);return M((()=>r.D(u[L],o)),[o]),e.jsx(l,{ref:u,style:t.useMemo((()=>{const e={margin:0,padding:0,position:"absolute",[c?"height":"width"]:"100%",[c?"top":"left"]:0,[c?R()?"right":"left":"top"]:i,visibility:s?"hidden":"visible"};return c&&(e.display="flex"),e}),[i,s]),children:n})})),G=()=>[],K=()=>t.useReducer(G,void 0,G)[1],Q=t.forwardRef((({children:r,overscan:o=4,initialItemSize:i,initialItemCount:s,shift:c,horizontal:u,reverse:a,cache:d,components:{Root:f=X,Item:_="div"}=P,onScroll:w,onScrollStop:g,onRangeChange:p,...m},v)=>{const b=t.useMemo((()=>q(r)),[r]),S=b.length,z=V(w),I=V(g),[y,x,R,k]=N((()=>{const e=!!u,t=T(S,i,s,d,!!a,!i);return[t,E(t,e),W(t,e),e]}));S!==y.S()&&y.W(3,[S,c]);const O=K(),[C,H]=y.g(),J=y.k(),B=y.M(),$=y.T(),A=t.useRef(null),F=0!==J;M((()=>{const e=A[L],t=x.j(e),r=R.B(e),o=y.J(3,(e=>{e?n.flushSync(O):O()})),i=y.J(4,(()=>{z[L]&&z[L](y.I())}));return()=>{t(),r(),o(),i()}}),[]),M((()=>{const e=y.H();e&&R.q(e)}),[B]),t.useEffect((()=>{F||I[L]&&I[L]()}),[F]),t.useEffect((()=>{p&&p(C,H)}),[C,H]),t.useImperativeHandle(v,(()=>({get cache(){return y._()},get scrollOffset(){return y.I()},get scrollSize(){return y.T()},get viewportSize(){return y.O()},scrollToIndex:R.$,scrollTo:R.L,scrollBy:R.P})),[]);const U=j(C,o,J),G=D(H,o,J,S),Q=[];for(let t=U;t<=G;t++){const n=b[t],r=n.key;Q.push(e.jsx(Y,{V:x,A:t,F:y.m(t),U:y.p(t),X:_,N:n,Y:k},h(r)?r:"_"+t))}return e.jsx(f,{ref:A,width:k?$:void 0,height:k?void 0:$,scrolling:F,attrs:t.useMemo((()=>({...m,style:{overflow:"auto",display:k?"inline-block":"block",contain:"strict",width:"100%",height:"100%",...m.style}})),l(m)),children:Q})})),Z=(e,t)=>`${e}-${t}`,ee=t.memo((({N:n,V:r,G:o,K:i,Z:s,ee:l,te:c,ne:u,U:a,X:h})=>{const d=t.useRef(null);return M((()=>r.D(d[L],o,i)),[i,o]),e.jsx(h,{ref:d,style:t.useMemo((()=>({display:"grid",margin:0,padding:0,position:"absolute",top:s,[R()?"right":"left"]:l,visibility:a?"hidden":"visible",minHeight:c,minWidth:u})),[s,l,u,c,a]),children:n})})),te=t.forwardRef((({children:r,row:o,col:i,cellHeight:s=40,cellWidth:c=100,overscan:u=2,initialRowCount:a,initialColCount:h,components:{Root:d=X,Cell:f="div"}=P,..._},w)=>{const[g,p,m,v,b]=N((()=>{const e=T(o,s,a),t=T(i,c,h);return[e,t,U(e,t),W(e,!1),W(t,!0)]}));o!==g.S()&&g.W(3,[o]),i!==p.S()&&p.W(3,[i]);const S=K(),[z,I]=g.g(),[y,x]=p.g(),R=g.k(),k=p.k(),O=g.M(),C=p.M(),H=g.T(),J=p.T(),B=t.useRef(null),$=0!==R,q=0!==k;M((()=>{const e=B[L],t=m.j(e),r=v.B(e),o=b.B(e),i=e=>{e?n.flushSync(S):S()},s=g.J(3,i),l=p.J(3,i);return()=>{t(),r(),o(),s(),l()}}),[]),M((()=>{const e=g.H();e&&v.q(e)}),[O]),M((()=>{const e=p.H();e&&b.q(e)}),[C]),t.useImperativeHandle(w,(()=>({get scrollOffset(){return[p.I(),g.I()]},get scrollSize(){return[p.T(),g.T()]},get viewportSize(){return[p.O(),g.O()]},scrollToIndex(e,t){b.$(e),v.$(t)},scrollTo(e,t){b.L(e),v.L(t)},scrollBy(e,t){b.P(e),v.P(t)}})),[]);const V=t.useMemo((()=>{const e=new Map;return(t,n)=>{let o=e.get(Z(t,n));return o||e.set(Z(t,n),o=r({rowIndex:t,colIndex:n})),o}}),[r]),A=j(z,u,R),E=D(I,u,R,o),F=j(y,u,k),Y=D(x,u,k,i),G=[];for(let t=A;t<=E;t++)for(let n=F;n<=Y;n++)G.push(e.jsx(ee,{V:m,G:t,K:n,Z:g.m(t),ee:p.m(n),te:g.v(t),ne:p.v(n),U:g.p(t)||p.p(n),X:f,N:V(t,n)},Z(t,n)));return e.jsx(d,{ref:B,width:J,height:H,scrolling:$||q,attrs:t.useMemo((()=>({..._,style:{overflow:"auto",contain:"strict",width:"100%",height:"100%",..._.style}})),l(_)),children:G})})),ne=t.forwardRef((({children:r,overscan:o=4,initialItemSize:i,initialItemCount:s,horizontal:c,cache:u,components:{Root:a=X,Item:d="div"}=P,onScrollStop:f,onRangeChange:_,...w},g)=>{const p=t.useMemo((()=>q(r)),[r]),m=p.length,v=V(f),[b,S,z,I]=N((()=>{const e=!!c,t=T(m,i,s,u,!1,!i);return[t,F(t,e),B(t,e),e]}));m!==b.S()&&b.W(3,[m]);const y=K(),[x,R]=b.g(),k=b.k(),O=b.M(),C=b.T(),H=t.useRef(null),J=0!==k;M((()=>{const e=H[L],t=S.j(e),r=z.B(e);return b.J(3,(e=>{e?n.flushSync(y):y()})),()=>{t(),r()}}),[]),M((()=>{const e=b.H();e&&z.q(e)}),[O]),t.useEffect((()=>{J||v[L]&&v[L]()}),[J]),t.useEffect((()=>{_&&_(x,R)}),[x,R]),t.useImperativeHandle(g,(()=>({get cache(){return b._()}})),[]);const W=j(x,o,k),$=D(R,o,k,m),A=[];for(let t=W;t<=$;t++){const n=p[t],r=n.key;A.push(e.jsx(Y,{V:S,A:t,F:b.m(t),U:b.p(t),X:d,N:n,Y:I},h(r)?r:"_"+t))}return e.jsx(a,{ref:H,width:I?C:void 0,height:I?void 0:C,scrolling:J,attrs:t.useMemo((()=>({...w,style:{display:I?"inline-block":"block",width:I?"auto":"100%",height:I?"100%":"auto",...w.style}})),l(w)),children:A})}));exports.VGrid=te,exports.VList=Q,exports.WVList=ne;
3
3
  //# sourceMappingURL=index.js.map