virtua 0.4.3 → 0.4.4
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 +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/react/WVList.d.ts +1 -6
- package/package.json +16 -16
package/README.md
CHANGED
|
@@ -177,7 +177,7 @@ WIP
|
|
|
177
177
|
|
|
178
178
|
| | [virtua](https://github.com/inokawa/virtua) | [react-virtuoso](https://github.com/petyosi/react-virtuoso) | [react-window](https://github.com/bvaughn/react-window) | [react-virtualized](https://github.com/bvaughn/react-virtualized) | [@tanstack/react-virtual](https://github.com/TanStack/virtual) | [react-cool-virtual](https://github.com/wellyshen/react-cool-virtual) |
|
|
179
179
|
| :------------------------------------------------- | :------------------------------------------------------- | :---------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ | :-------------------------------------------------------------------- |
|
|
180
|
-
| Bundle size | [4.
|
|
180
|
+
| Bundle size | [4.7kB gzipped](https://bundlephobia.com/package/virtua) | [16.3kB gzipped](https://bundlephobia.com/package/react-virtuoso) | [6.4kB gzipped](https://bundlephobia.com/package/react-window) | [27.3kB gzipped](https://bundlephobia.com/package/react-virtualized) | [2.3kB gzipped](https://bundlephobia.com/package/@tanstack/react-virtual) | [3.1kB gzipped](https://bundlephobia.com/package/react-cool-virtual) |
|
|
181
181
|
| Vertical scroll | ✅ | ✅ | ✅ | ✅ | 🟠 (needs customization) | 🟠 (needs customization) |
|
|
182
182
|
| Horizontal scroll | ✅ | ❌ | ✅ | ✅ | 🟠 (needs customization) | 🟠 (needs customization) |
|
|
183
183
|
| Grid (Virtualization for two dimension) | ✅ (VGrid) | ❌ | ✅ (FixedSizeGrid / VariableSizeGrid) | ✅ ([Grid](https://github.com/bvaughn/react-virtualized/blob/master/docs/Grid.md)) | 🟠 (needs customization) | 🟠 (needs customization) |
|
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 r=Math.min,o=Math.max,i=Math.abs,l=Date.now,s=Object.values,c=setTimeout,u=e=>null!=e,d=(e,t)=>Array.from({length:e},((e,n)=>t(n))),a=(e,t)=>{let n;const r=()=>{u(n)&&clearTimeout(n)},o=()=>{r(),n=c((()=>{n=null,e()}),t)};return o.t=r,o},h=e=>{let t,n;return(...r)=>(t||(t=!0,n=e(...r)),n)},f=-1,_=(e,t)=>{const n=e.o[t];return n===f?e.i:n},w=(e,t,n)=>{if(!e.l)return 0;if(e.u>=t)return n?e.h[t]+_(e,t):e.h[t];let r=e.u,o=e.h[r];for(;r<=t&&(e.h[r]=o,r!==t||n);)o+=_(e,r),r++;return e.u=t,o},g=(e,t)=>w(e,t),m=(e,t,n)=>{let i=0;if(n>=0)for(;t<e.l-1;){const r=_(e,t++);if((i+=r)>=n){i-r/2>=n&&t--;break}}else for(;t>0;){const r=_(e,--t);if((i-=r)<=n){i+r/2<n&&t++;break}}return r(o(t,0),e.l-1)},v=(e,t,n,r)=>m(e,n,t-r),p=(e,t,n)=>({i:n?n.i:t,l:e,u:n?r(n.u,e-1):0,o:d(e,(e=>{const t=n&&n.o[e];return u(t)?t:f})),h:d(e,(e=>{if(0===e)return 0;const t=n&&n.h[e];return u(t)?t:f}))}),S=e=>e.reduce(((e,[t])=>e+t),0),b=(e,t)=>t.map((([t,n])=>[n-_(e,t),t])),z=(e,t,n=0,l,s,d)=>{const a=!t,h=t||40;let z,I,x=h*o(n-1,0),R=0,y=0,k=p(e,h),O=0,T=!1,C=[0,n];const M=new Set,H=()=>(e=>w(e,e.l-1,!0))(k),W=()=>H()-x,L=e=>{const t=O;return O=e,0!==O&&(0===t&&(1===O||2===O)||void 0)};return{_(){const[e,t]=C,n=g(k,e),r=v(k,R,e,n),o=m(k,r,x);return e===r&&t===o?C:C=[r,o]},g:e=>k.o[e]===f,m:e=>((e,t,n)=>{for(let r=t;r<=n;r++)if(e.o[r]===f)return!0;return!1})(k,o(0,e-2),r(k.l-1,e+2)),v(e){const t=g(k,e);return l?t+o(0,x-H()):t},p:e=>_(k,e),S:()=>k.l,I:()=>R,R:W,k:()=>x,O:H,T:()=>o(H(),x),C:()=>y,M(){const e=z;return z=void 0,e},H:e=>v(k,e,0,0),W:()=>(I&&I[1](),new Promise(((e,t)=>{let n=!1;const r=()=>{n||(n=!0,e(),I=void 0)};I=[r,t],c(r,250)}))),L:e=>(M.add(e),()=>{M.delete(e)}),J(e,t){let n,o,l=!1;switch(e){case 1:{const e=t.filter((([e,t])=>k.o[e]!==t));if(!e.length)break;let o=0;if(2===O)o=S(b(k,e));else if(3===O){const t=b(k,e),[n]=C;0===R||(o=R>W()-1.5?S(t):S(t.filter((([,e])=>e<n))))}o&&(z=o,y++);let i=!1;e.forEach((([e,t])=>{((e,t,n)=>{const o=e.o[t]===f;return e.o[t]=n,e.u=r(t,e.u),o})(k,e,t)&&(i=!0)})),a&&i&&!R&&(e=>{const t=e.o.filter((e=>e!==f)),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)})(k),T=n=l=!0;break}case 2:l=x!==t,x=t;break;case 3:case 4:if(R===t)break;if(3===e){const e=(()=>{const e=T;return T=!1,e})();0!==O&&e||3===O||(o=L(R>t?2:1)),n=i(R-t)>x}R=t,l=!0;break;case 5:o=L(t?3:0)}l&&(M.forEach((e=>{e(n)})),3===e&&d(R)),I&&1===e&&I[0](),u(o)&&s(o)},$:()=>O,q(e){k.l!==e&&(k=p(e,h,k))}}},I="undefined"!=typeof window?t.useLayoutEffect:t.useEffect,x="current",R=e=>{const n=[];return t.Children.forEach(e,(e=>{u(e)&&"boolean"!=typeof e&&n.push(e)})),n},y=e=>{const n=t.useRef(e);return I((()=>{n[x]=e}),[e]),n},k=(e,r,o)=>{const[i,l]=t.useState(r),s=y(r);if(t.useLayoutEffect((()=>{const t=()=>{l((()=>s[x]()))};return e.L((e=>{e?n.flushSync(t):t()}))}),[]),o){const e=r();i!==e&&l(e)}return i},O=/*#__PURE__*/h((e=>{const t="scrollLeft",n=e[t];e[t]=1;const r=e[t]<1;return e[t]=n,r})),T=(e,t,n)=>(()=>{let r=l()-50;return(...o)=>{const i=l();r+50<i&&(r=i,(r=>{if(0!==e.$()&&!r.ctrlKey&&(t?r.deltaX:r.deltaY)){const t=e.I();t>0&&t<e.R()&&n()}})(...o))}})(),C=(e,t,n)=>{let i;const l=t?"scrollLeft":"scrollTop",s=()=>i?t?i.scrollWidth:i.scrollHeight:0,c=(r,o)=>t&&n?O(i)||o?-r:e.R()-r:r,u=async(t,n)=>{if(!i)return;const o=()=>r(n(),s()-e.k());for(;e.J(4,o()),e.m(t);)try{await e.W()}catch(e){return}i[l]=c(o()),e.J(5,!0)};return{D(n){i=n;const r=()=>{e.J(3,c(n[l]))},o=a((()=>{r(),e.J(5,!1)}),150),s=()=>{r(),o()},u=T(e,t,o);return n.addEventListener("scroll",s),n.addEventListener("wheel",u,{passive:!0}),()=>{n.removeEventListener("scroll",s),n.removeEventListener("wheel",u),o.t()}},j:s,A(t){t=o(t,0),u(e.H(t),(()=>t))},B(t){t=o(r(t,e.S()-1),0),u(t,(()=>e.v(t)))},F:e=>{i&&(i[l]+=c(e,!0))}}},M=(e,t)=>{const n=t?"scrollX":"scrollY",r=t?"offsetLeft":"offsetTop";return{D(o){let i=!1;const l=(e,t)=>{const n=t+e[r],o=e.offsetParent;return e!==document.body&&o?l(o,n):n},s=()=>{i&&e.J(3,window[n]-l(o,0))},c=a((()=>{s(),e.J(5,!1)}),150),u=()=>{s(),c()},d=T(e,t,c),h=new IntersectionObserver((([e])=>{i=e.isIntersecting}));return h.observe(o),window.addEventListener("scroll",u),window.addEventListener("wheel",d,{passive:!0}),()=>{h.disconnect(),window.removeEventListener("scroll",u),window.removeEventListener("wheel",d),c.t()}},F:e=>{window.scrollBy(t?e:0,t?0:e)}}},H=e=>{const n=t.useRef();return n[x]||(n[x]=e())},W=(e,t)=>{let n;const r=t?"width":"height",o=new WeakMap,i=h((()=>new ResizeObserver((t=>{const i=[];for(const{target:l,contentRect:s}of t)if(l===n)e.J(2,s[r]);else{const e=o.get(l);u(e)&&i.push([e,s[r]])}i.length&&e.J(1,i)}))));return{U(e){n=e;const t=i();return t.observe(e),()=>{t.disconnect()}},P(e,t){const n=i();return o.set(e,t),n.observe(e),()=>{o.delete(e),n.unobserve(e)}}}},L=(e,t)=>{const n=t?"width":"height",r=t?"innerWidth":"innerHeight",o=new WeakMap,i=h((()=>new ResizeObserver((t=>{const r=[];for(const{target:e,contentRect:i}of t){const t=o.get(e);u(t)&&r.push([t,i[n]])}r.length&&e.J(1,r)}))));return{U(){const t=()=>{e.J(2,window[r])};return window.addEventListener("resize",t),t(),()=>{window.removeEventListener("resize",t),i().disconnect()}},P(e,t){const n=i();return o.set(e,t),n.observe(e),()=>{o.delete(e),n.unobserve(e)}}}},E=(e,t)=>{let n;const r="height",i="width",l=new WeakMap,s=new Set,c=new Set,u=new Map,d=(e,t)=>`${e}-${t}`,a=h((()=>new ResizeObserver((a=>{const h=new Set,f=new Set;for(const{target:o,contentRect:s}of a)if(o===n)e.J(2,s[r]),t.J(2,s[i]);else{const e=l.get(o);if(e){const[t,n]=e,o=d(t,n),l=u.get(o),c=[s[r],s[i]];let a,_;l?(l[0]!==c[0]&&(a=!0),l[1]!==c[1]&&(_=!0)):a=_=!0,a&&h.add(t),_&&f.add(n),(a||_)&&u.set(o,c)}}if(h.size){const t=[];h.forEach((e=>{let n=0;c.forEach((t=>{const r=u.get(d(e,t));r&&(n=o(n,r[0]))})),n&&t.push([e,n])})),e.J(1,t)}if(f.size){const e=[];f.forEach((t=>{let n=0;s.forEach((e=>{const r=u.get(d(e,t));r&&(n=o(n,r[1]))})),n&&e.push([t,n])})),t.J(1,e)}}))));return{U(e){n=e;const t=a();return t.observe(e),()=>{t.disconnect()}},P(e,t,n){const r=a();return l.set(e,[t,n]),s.add(t),c.add(n),r.observe(e),()=>{l.delete(e),r.unobserve(e)}}}},J=t.forwardRef((({children:n,attrs:r,width:o,height:i,scrolling:l},s)=>e.jsx("div",{ref:s,...r,children:e.jsx("div",{style:t.useMemo((()=>({position:"relative",visibility:"hidden",width:null!=o?o:"100%",height:null!=i?i:"100%",pointerEvents:l?"none":"auto"})),[o,i,l]),children:n})}))),$=t.memo((({V:n,X:r,Y:o,G:i,K:l,N:s,Z:c})=>{const u=t.useRef(null),d=k(o,(()=>o.v(i)),!0),a=k(o,(()=>o.g(i)),!0);return I((()=>r.P(u[x],i)),[i]),e.jsx(l,{ref:u,style:t.useMemo((()=>{const e=c?"right":"left",t={margin:0,padding:0,position:"absolute",[s?"height":"width"]:"100%",[s?"top":e]:0,[s?e:"top"]:d,visibility:a?"hidden":"visible"};return s&&(t.display="flex"),t}),[d,a]),children:n})})),q=t.forwardRef((({children:n,overscan:i=4,initialItemSize:l,initialItemCount:c,horizontal:d,mode:a,element:h=J,itemElement:f="div",onScroll:_,onScrollStop:w,onRangeChange:g,...m},v)=>{const p=t.useMemo((()=>R(n)),[n]),S=p.length,b=y(_),O=y(w),[T,M]=t.useState(!1),[L,E,q,D,j]=H((()=>{const e=!!d,t="rtl"===a,n=z(S,l,c,"reverse"===a,(e=>{M(e),e||O[x]&&O[x]()}),(e=>{b[x]&&b[x](e)}));return[n,W(n,e),C(n,e,t),e,t]}));L.q(S);const[A,B]=k(L,L._),F=k(L,L.C),U=k(L,L.T,!0),P=t.useRef(null);I((()=>{const e=P[x],t=E.U(e),n=q.D(e);return()=>{t(),n()}}),[]),I((()=>{const e=L.M();e&&q.F(e)}),[F]),t.useEffect((()=>{g&&g({start:A,end:B,count:S})}),[A,B]),t.useImperativeHandle(v,(()=>({get scrollOffset(){return L.I()},get scrollSize(){return q.j()},get viewportSize(){return L.k()},scrollToIndex:q.B,scrollTo:q.A,scrollBy(e){q.A(L.I()+e)}})),[]);const V=o(A-i,0),X=r(B+i,S-1),Y=t.useMemo((()=>{const t=[];for(let n=V;n<=X;n++){const r=p[n];u(r)&&t.push(e.jsx($,{X:E,Y:L,G:n,K:f,V:r,N:D,Z:j},(null==r?void 0:r.key)||n))}return t}),[p,V,X]);return e.jsx(h,{ref:P,width:D?U:void 0,height:D?void 0:U,scrolling:T,attrs:t.useMemo((()=>({...m,style:{overflow:D?"auto hidden":"hidden auto",display:D?"inline-block":"block",contain:"strict",width:"100%",height:"100%",padding:0,margin:0,...m.style}})),s(m)),children:Y})})),D=(e,t)=>`${e}-${t}`,j=t.memo((({V:n,X:r,ee:o,te:i,ne:l,re:s,K:c,Z:u})=>{const d=t.useRef(null),a=k(o,(()=>o.v(l)),!0),h=k(i,(()=>i.v(s)),!0),f=k(o,(()=>o.g(l)),!0),_=k(i,(()=>i.g(s)),!0),w=k(o,(()=>o.p(l)),!0),g=k(i,(()=>i.p(s)),!0);return I((()=>r.P(d[x],l,s)),[s,l]),e.jsx(c,{ref:d,style:t.useMemo((()=>({display:"grid",margin:0,padding:0,position:"absolute",top:a,[u?"right":"left"]:h,visibility:f||_?"hidden":"visible",minHeight:w,minWidth:g})),[a,h,g,w,f,_]),children:n})})),A=t.forwardRef((({children:n,row:i,col:l,cellHeight:c=40,cellWidth:u=100,overscan:d=2,initialRowCount:a,initialColCount:h,rtl:f,element:_=J,cellElement:w="div",...g},m)=>{const[v,p]=t.useState(!1),[S,b]=t.useState(!1),[R,y,O,T,M,W]=H((()=>{const e=!!f,t=()=>{},n=z(i,c,a,!1,p,t),r=z(l,u,h,!1,b,t);return[n,r,E(n,r),C(n,!1,e),C(r,!0,e),e]}));R.q(i),y.q(l);const[L,$]=k(R,R._),[q,A]=k(y,y._),B=k(R,R.C),F=k(y,y.C),U=k(R,R.T,!0),P=k(y,y.T,!0),V=t.useRef(null);I((()=>{const e=V[x],t=O.U(e),n=T.D(e),r=M.D(e);return()=>{t(),n(),r()}}),[]),I((()=>{const e=R.M();e&&T.F(e)}),[B]),I((()=>{const e=y.M();e&&M.F(e)}),[F]),t.useImperativeHandle(m,(()=>({get scrollOffset(){return[y.I(),R.I()]},get scrollSize(){return[M.j(),T.j()]},get viewportSize(){return[y.k(),R.k()]},scrollToIndex(e,t){M.B(e),T.B(t)},scrollTo(e,t){M.A(e),T.A(t)},scrollBy(e,t){M.A(y.I()+e),T.A(R.I()+t)}})),[]);const X=t.useMemo((()=>{const e=new Map;return(t,r)=>{let o=e.get(D(t,r));return o||e.set(D(t,r),o=n({rowIndex:t,colIndex:r})),o}}),[n]),Y=o(L-d,0),G=r($+d,i-1),K=o(q-d,0),N=r(A+d,l-1),Q=t.useMemo((()=>{const t=[];for(let n=Y;n<=G;n++)for(let r=K;r<=N;r++)t.push(e.jsx(j,{X:O,ee:R,te:y,ne:n,re:r,K:w,V:X(n,r),Z:W},D(n,r)));return t}),[X,Y,G,K,N]);return e.jsx(_,{ref:V,width:P,height:U,scrolling:v||S,attrs:t.useMemo((()=>({...g,style:{overflow:"auto",contain:"strict",width:"100%",height:"100%",padding:0,margin:0,...g.style}})),s(g)),children:Q})}));exports.VGrid=A,exports.VList=q,exports.WVList=({children:n,overscan:i=4,initialItemSize:l,initialItemCount:c,horizontal:d,element:a=J,itemElement:h="div",onScroll:f,onScrollStop:_,onRangeChange:w,...g})=>{const m=t.useMemo((()=>R(n)),[n]),v=m.length,p=y(f),S=y(_),[b,O]=t.useState(!1),[T,C,W,E]=H((()=>{const e=!!d,t=z(v,l,c,!1,(e=>{O(e),e||S[x]&&S[x]()}),(e=>{p[x]&&p[x](e)}));return[t,L(t,e),M(t,e),e]}));T.q(v);const[q,D]=k(T,T._),j=k(T,T.C),A=k(T,T.T,!0),B=t.useRef(null);I((()=>{const e=B[x],t=C.U(e),n=W.D(e);return()=>{t(),n()}}),[]),I((()=>{const e=T.M();e&&W.F(e)}),[j]),t.useEffect((()=>{w&&w({start:q,end:D,count:v})}),[q,D]);const F=o(q-i,0),U=r(D+i,v-1),P=t.useMemo((()=>{const t=[];for(let n=F;n<=U;n++){const r=m[n];u(r)&&t.push(e.jsx($,{X:C,Y:T,G:n,K:h,V:r,N:E,Z:!1},(null==r?void 0:r.key)||n))}return t}),[m,F,U]);return e.jsx(a,{ref:B,width:E?A:void 0,height:E?void 0:A,scrolling:b,attrs:t.useMemo((()=>({...g,style:{overflow:"visible",display:E?"inline-block":"block",width:E?"auto":"100%",height:E?"100%":"auto",padding:0,margin:0,...g.style}})),s(g)),children:P})};
|
|
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=setTimeout,u=e=>null!=e,d=(e,t)=>Array.from({length:e},((e,n)=>t(n))),a=(e,t)=>{let n;const r=()=>{u(n)&&clearTimeout(n)},o=()=>{r(),n=c((()=>{n=null,e()}),t)};return o.t=r,o},h=e=>{let t,n;return(...r)=>(t||(t=!0,n=e(...r)),n)},f=-1,_=(e,t)=>{const n=e.o[t];return n===f?e.i:n},w=(e,t,n)=>{if(!e.l)return 0;if(e.u>=t)return n?e.h[t]+_(e,t):e.h[t];let r=e.u,o=e.h[r];for(;r<=t&&(e.h[r]=o,r!==t||n);)o+=_(e,r),r++;return e.u=t,o},g=(e,t)=>w(e,t),m=(e,t,n)=>{let i=0;if(n>=0)for(;t<e.l-1;){const r=_(e,t++);if((i+=r)>=n){i-r/2>=n&&t--;break}}else for(;t>0;){const r=_(e,--t);if((i-=r)<=n){i+r/2<n&&t++;break}}return r(o(t,0),e.l-1)},v=(e,t,n,r)=>m(e,n,t-r),p=(e,t,n)=>({i:n?n.i:t,l:e,u:n?r(n.u,e-1):0,o:d(e,(e=>{const t=n&&n.o[e];return u(t)?t:f})),h:d(e,(e=>{if(0===e)return 0;const t=n&&n.h[e];return u(t)?t:f}))}),S=e=>e.reduce(((e,[t])=>e+t),0),b=(e,t)=>t.map((([t,n])=>[n-_(e,t),t])),z=(e,t,n=0,s,l,d)=>{const a=!t,h=t||40;let z,I,x=h*o(n-1,0),R=0,y=0,k=p(e,h),O=0,T=!1,C=[0,n];const M=new Set,H=()=>(e=>w(e,e.l-1,!0))(k),W=()=>H()-x,L=e=>{const t=O;return O=e,0!==O&&(0===t&&(1===O||2===O)||void 0)};return{_(){const[e,t]=C,n=g(k,e),r=v(k,R,e,n),o=m(k,r,x);return e===r&&t===o?C:C=[r,o]},g:e=>k.o[e]===f,m:e=>((e,t,n)=>{for(let r=t;r<=n;r++)if(e.o[r]===f)return!0;return!1})(k,o(0,e-2),r(k.l-1,e+2)),v(e){const t=g(k,e);return s?t+o(0,x-H()):t},p:e=>_(k,e),S:()=>k.l,I:()=>R,R:W,k:()=>x,O:H,T:()=>o(H(),x),C:()=>y,M(){const e=z;return z=void 0,e},H:e=>v(k,e,0,0),W:()=>(I&&I[1](),new Promise(((e,t)=>{let n=!1;const r=()=>{n||(n=!0,e(),I=void 0)};I=[r,t],c(r,250)}))),L:e=>(M.add(e),()=>{M.delete(e)}),J(e,t){let n,s,c=!1;switch(e){case 1:{const e=t.filter((([e,t])=>k.o[e]!==t));if(!e.length)break;let o=0;if(2===O)o=S(b(k,e));else if(3===O){const t=b(k,e),[n]=C;0===R||(o=R>W()-1.5?S(t):S(t.filter((([,e])=>e<n))))}o&&(z=o,y++);let i=!1;e.forEach((([e,t])=>{((e,t,n)=>{const o=e.o[t]===f;return e.o[t]=n,e.u=r(t,e.u),o})(k,e,t)&&(i=!0)})),a&&i&&!R&&(e=>{const t=e.o.filter((e=>e!==f)),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)})(k),T=n=c=!0;break}case 2:c=x!==t,x=t;break;case 3:case 4:if(R===t)break;if(3===e){const e=(()=>{const e=T;return T=!1,e})();0!==O&&e||3===O||(s=L(R>t?2:1)),n=i(R-t)>x}R=o(0,r(W(),t)),c=!0;break;case 5:s=L(t?3:0)}c&&(M.forEach((e=>{e(n)})),3===e&&d(R)),I&&1===e&&I[0](),u(s)&&l(s)},$:()=>O,q(e){k.l!==e&&(k=p(e,h,k))}}},I="undefined"!=typeof window?t.useLayoutEffect:t.useEffect,x="current",R=e=>{const n=[];return t.Children.forEach(e,(e=>{u(e)&&"boolean"!=typeof e&&n.push(e)})),n},y=e=>{const n=t.useRef(e);return I((()=>{n[x]=e}),[e]),n},k=(e,r,o)=>{const[i,s]=t.useState(r),l=y(r);if(t.useLayoutEffect((()=>{const t=()=>{s((()=>l[x]()))};return e.L((e=>{e?n.flushSync(t):t()}))}),[]),o){const e=r();i!==e&&s(e)}return i},O=/*#__PURE__*/h((e=>{const t="scrollLeft",n=e[t];e[t]=1;const r=e[t]<1;return e[t]=n,r})),T=(e,t,n)=>(()=>{let r=s()-50;return(...o)=>{const i=s();r+50<i&&(r=i,(r=>{if(0!==e.$()&&!r.ctrlKey&&(t?r.deltaX:r.deltaY)){const t=e.I();t>0&&t<e.R()&&n()}})(...o))}})(),C=(e,t,n)=>{let i;const s=t?"scrollLeft":"scrollTop",l=()=>i?t?i.scrollWidth:i.scrollHeight:0,c=(r,o)=>t&&n?O(i)||o?-r:e.R()-r:r,u=async(t,n)=>{if(!i)return;const o=()=>r(n(),l()-e.k());for(;e.J(4,o()),e.m(t);)try{await e.W()}catch(e){return}i[s]=c(o()),e.J(5,!0)};return{D(n){i=n;const r=()=>{e.J(3,c(n[s]))},o=a((()=>{r(),e.J(5,!1)}),150),l=()=>{r(),o()},u=T(e,t,o);return n.addEventListener("scroll",l),n.addEventListener("wheel",u,{passive:!0}),()=>{n.removeEventListener("scroll",l),n.removeEventListener("wheel",u),o.t()}},j:l,A(t){t=o(t,0),u(e.H(t),(()=>t))},B(t){t=o(r(t,e.S()-1),0),u(t,(()=>e.v(t)))},F:e=>{i&&(i[s]+=c(e,!0))}}},M=(e,t)=>{const n=t?"scrollX":"scrollY",r=t?"offsetLeft":"offsetTop";return{D(o){let i=!1;const s=(e,t)=>{const n=t+e[r],o=e.offsetParent;return e!==document.body&&o?s(o,n):n},l=()=>{i&&e.J(3,window[n]-s(o,0))},c=a((()=>{l(),e.J(5,!1)}),150),u=()=>{l(),c()},d=T(e,t,c),h=new IntersectionObserver((([e])=>{i=e.isIntersecting}));return h.observe(o),window.addEventListener("scroll",u),window.addEventListener("wheel",d,{passive:!0}),()=>{h.disconnect(),window.removeEventListener("scroll",u),window.removeEventListener("wheel",d),c.t()}},F:e=>{window.scrollBy(t?e:0,t?0:e)}}},H=e=>{const n=t.useRef();return n[x]||(n[x]=e())},W=(e,t)=>{let n;const r=t?"width":"height",o=new WeakMap,i=h((()=>new ResizeObserver((t=>{const i=[];for(const{target:s,contentRect:l}of t)if(s===n)e.J(2,l[r]);else{const e=o.get(s);u(e)&&i.push([e,l[r]])}i.length&&e.J(1,i)}))));return{U(e){n=e;const t=i();return t.observe(e),()=>{t.disconnect()}},P(e,t){const n=i();return o.set(e,t),n.observe(e),()=>{o.delete(e),n.unobserve(e)}}}},L=(e,t)=>{const n=t?"width":"height",r=t?"innerWidth":"innerHeight",o=new WeakMap,i=h((()=>new ResizeObserver((t=>{const r=[];for(const{target:e,contentRect:i}of t){const t=o.get(e);u(t)&&r.push([t,i[n]])}r.length&&e.J(1,r)}))));return{U(){const t=()=>{e.J(2,window[r])};return window.addEventListener("resize",t),t(),()=>{window.removeEventListener("resize",t),i().disconnect()}},P(e,t){const n=i();return o.set(e,t),n.observe(e),()=>{o.delete(e),n.unobserve(e)}}}},E=(e,t)=>{let n;const r="height",i="width",s=new WeakMap,l=new Set,c=new Set,u=new Map,d=(e,t)=>`${e}-${t}`,a=h((()=>new ResizeObserver((a=>{const h=new Set,f=new Set;for(const{target:o,contentRect:l}of a)if(o===n)e.J(2,l[r]),t.J(2,l[i]);else{const e=s.get(o);if(e){const[t,n]=e,o=d(t,n),s=u.get(o),c=[l[r],l[i]];let a,_;s?(s[0]!==c[0]&&(a=!0),s[1]!==c[1]&&(_=!0)):a=_=!0,a&&h.add(t),_&&f.add(n),(a||_)&&u.set(o,c)}}if(h.size){const t=[];h.forEach((e=>{let n=0;c.forEach((t=>{const r=u.get(d(e,t));r&&(n=o(n,r[0]))})),n&&t.push([e,n])})),e.J(1,t)}if(f.size){const e=[];f.forEach((t=>{let n=0;l.forEach((e=>{const r=u.get(d(e,t));r&&(n=o(n,r[1]))})),n&&e.push([t,n])})),t.J(1,e)}}))));return{U(e){n=e;const t=a();return t.observe(e),()=>{t.disconnect()}},P(e,t,n){const r=a();return s.set(e,[t,n]),l.add(t),c.add(n),r.observe(e),()=>{s.delete(e),r.unobserve(e)}}}},J=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})}))),$=t.memo((({V:n,X:r,Y:o,G:i,K:s,N:l,Z:c})=>{const u=t.useRef(null),d=k(o,(()=>o.v(i)),!0),a=k(o,(()=>o.g(i)),!0);return I((()=>r.P(u[x],i)),[i]),e.jsx(s,{ref:u,style:t.useMemo((()=>{const e=c?"right":"left",t={margin:0,padding:0,position:"absolute",[l?"height":"width"]:"100%",[l?"top":e]:0,[l?e:"top"]:d,visibility:a?"hidden":"visible"};return l&&(t.display="flex"),t}),[d,a]),children:n})})),q=t.forwardRef((({children:n,overscan:i=4,initialItemSize:s,initialItemCount:c,horizontal:d,mode:a,element:h=J,itemElement:f="div",onScroll:_,onScrollStop:w,onRangeChange:g,...m},v)=>{const p=t.useMemo((()=>R(n)),[n]),S=p.length,b=y(_),O=y(w),[T,M]=t.useState(!1),[L,E,q,D,j]=H((()=>{const e=!!d,t="rtl"===a,n=z(S,s,c,"reverse"===a,(e=>{M(e),e||O[x]&&O[x]()}),(e=>{b[x]&&b[x](e)}));return[n,W(n,e),C(n,e,t),e,t]}));L.q(S);const[A,B]=k(L,L._),F=k(L,L.C),U=k(L,L.T,!0),P=t.useRef(null);I((()=>{const e=P[x],t=E.U(e),n=q.D(e);return()=>{t(),n()}}),[]),I((()=>{const e=L.M();e&&q.F(e)}),[F]),t.useEffect((()=>{g&&g({start:A,end:B,count:S})}),[A,B]),t.useImperativeHandle(v,(()=>({get scrollOffset(){return L.I()},get scrollSize(){return q.j()},get viewportSize(){return L.k()},scrollToIndex:q.B,scrollTo:q.A,scrollBy(e){q.A(L.I()+e)}})),[]);const V=o(A-i,0),X=r(B+i,S-1),Y=t.useMemo((()=>{const t=[];for(let n=V;n<=X;n++){const r=p[n];u(r)&&t.push(e.jsx($,{X:E,Y:L,G:n,K:f,V:r,N:D,Z:j},(null==r?void 0:r.key)||n))}return t}),[p,V,X]);return e.jsx(h,{ref:P,width:D?U:void 0,height:D?void 0:U,scrolling:T,attrs:t.useMemo((()=>({...m,style:{overflow:D?"auto hidden":"hidden auto",display:D?"inline-block":"block",contain:"strict",width:"100%",height:"100%",padding:0,margin:0,...m.style}})),l(m)),children:Y})})),D=(e,t)=>`${e}-${t}`,j=t.memo((({V:n,X:r,ee:o,te:i,ne:s,re:l,K:c,Z:u})=>{const d=t.useRef(null),a=k(o,(()=>o.v(s)),!0),h=k(i,(()=>i.v(l)),!0),f=k(o,(()=>o.g(s)),!0),_=k(i,(()=>i.g(l)),!0),w=k(o,(()=>o.p(s)),!0),g=k(i,(()=>i.p(l)),!0);return I((()=>r.P(d[x],s,l)),[l,s]),e.jsx(c,{ref:d,style:t.useMemo((()=>({display:"grid",margin:0,padding:0,position:"absolute",top:a,[u?"right":"left"]:h,visibility:f||_?"hidden":"visible",minHeight:w,minWidth:g})),[a,h,g,w,f,_]),children:n})})),A=t.forwardRef((({children:n,row:i,col:s,cellHeight:c=40,cellWidth:u=100,overscan:d=2,initialRowCount:a,initialColCount:h,rtl:f,element:_=J,cellElement:w="div",...g},m)=>{const[v,p]=t.useState(!1),[S,b]=t.useState(!1),[R,y,O,T,M,W]=H((()=>{const e=!!f,t=()=>{},n=z(i,c,a,!1,p,t),r=z(s,u,h,!1,b,t);return[n,r,E(n,r),C(n,!1,e),C(r,!0,e),e]}));R.q(i),y.q(s);const[L,$]=k(R,R._),[q,A]=k(y,y._),B=k(R,R.C),F=k(y,y.C),U=k(R,R.T,!0),P=k(y,y.T,!0),V=t.useRef(null);I((()=>{const e=V[x],t=O.U(e),n=T.D(e),r=M.D(e);return()=>{t(),n(),r()}}),[]),I((()=>{const e=R.M();e&&T.F(e)}),[B]),I((()=>{const e=y.M();e&&M.F(e)}),[F]),t.useImperativeHandle(m,(()=>({get scrollOffset(){return[y.I(),R.I()]},get scrollSize(){return[M.j(),T.j()]},get viewportSize(){return[y.k(),R.k()]},scrollToIndex(e,t){M.B(e),T.B(t)},scrollTo(e,t){M.A(e),T.A(t)},scrollBy(e,t){M.A(y.I()+e),T.A(R.I()+t)}})),[]);const X=t.useMemo((()=>{const e=new Map;return(t,r)=>{let o=e.get(D(t,r));return o||e.set(D(t,r),o=n({rowIndex:t,colIndex:r})),o}}),[n]),Y=o(L-d,0),G=r($+d,i-1),K=o(q-d,0),N=r(A+d,s-1),Q=t.useMemo((()=>{const t=[];for(let n=Y;n<=G;n++)for(let r=K;r<=N;r++)t.push(e.jsx(j,{X:O,ee:R,te:y,ne:n,re:r,K:w,V:X(n,r),Z:W},D(n,r)));return t}),[X,Y,G,K,N]);return e.jsx(_,{ref:V,width:P,height:U,scrolling:v||S,attrs:t.useMemo((()=>({...g,style:{overflow:"auto",contain:"strict",width:"100%",height:"100%",padding:0,margin:0,...g.style}})),l(g)),children:Q})}));exports.VGrid=A,exports.VList=q,exports.WVList=({children:n,overscan:i=4,initialItemSize:s,initialItemCount:c,horizontal:d,element:a=J,itemElement:h="div",onScrollStop:f,onRangeChange:_,...w})=>{const g=t.useMemo((()=>R(n)),[n]),m=g.length,v=y(f),[p,S]=t.useState(!1),[b,O,T,C]=H((()=>{const e=!!d,t=z(m,s,c,!1,(e=>{S(e),e||v[x]&&v[x]()}),(()=>{}));return[t,L(t,e),M(t,e),e]}));b.q(m);const[W,E]=k(b,b._),q=k(b,b.C),D=k(b,b.T,!0),j=t.useRef(null);I((()=>{const e=j[x],t=O.U(e),n=T.D(e);return()=>{t(),n()}}),[]),I((()=>{const e=b.M();e&&T.F(e)}),[q]),t.useEffect((()=>{_&&_({start:W,end:E,count:m})}),[W,E]);const A=o(W-i,0),B=r(E+i,m-1),F=t.useMemo((()=>{const t=[];for(let n=A;n<=B;n++){const r=g[n];u(r)&&t.push(e.jsx($,{X:O,Y:b,G:n,K:h,V:r,N:C,Z:!1},(null==r?void 0:r.key)||n))}return t}),[g,A,B]);return e.jsx(a,{ref:j,width:C?D:void 0,height:C?void 0:D,scrolling:p,attrs:t.useMemo((()=>({...w,style:{overflow:"visible",display:C?"inline-block":"block",width:C?"auto":"100%",height:C?"100%":"auto",padding:0,margin:0,...w.style}})),l(w)),children:F})};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|