vlist 1.6.4 → 1.7.0
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.github.md +302 -20
- package/README.md +1 -1
- package/dist/builder/types.d.ts +1 -0
- package/dist/features/sortable/feature.d.ts +95 -0
- package/dist/features/sortable/index.d.ts +6 -0
- package/dist/features/table/header.d.ts +1 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/internals.js +1 -1
- package/dist/rendering/renderer.d.ts +2 -0
- package/dist/size.json +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/vlist-table.css +1 -1
- package/dist/vlist.css +1 -1
- package/package.json +2 -1
package/dist/internals.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var T2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var v2=(J,Q)=>{let $=0,Y=J.length-1;while($<Y){let q=$+Y+1>>>1;if(J[q].headerLayoutIndex<=Q)$=q;else Y=q-1}return $},x2=(J,Q)=>{let $=0,Y=J.length-1;while($<Y){let q=$+Y+1>>>1;if(J[q].firstDataIndex<=Q)$=q;else Y=q-1}return $},g2=(J,Q)=>{if(J===0)return[];let $=[],Y=Q(0),q=0,j=0;for(let K=1;K<J;K++){let D=Q(K);if(D!==Y){let A=K-q;$.push({key:Y,groupIndex:$.length,headerLayoutIndex:j,firstDataIndex:q,count:A}),j=j+1+A,Y=D,q=K}}return $.push({key:Y,groupIndex:$.length,headerLayoutIndex:j,firstDataIndex:q,count:J-q}),$},u2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let $=J.length+Q.length,Y=Array($),q=0;for(let j of Q){Y[q]={id:`__group_header_${j.groupIndex}`,__groupHeader:!0,groupKey:j.key,groupIndex:j.groupIndex},q++;for(let K=0;K<j.count;K++)Y[q]=J[j.firstDataIndex+K],q++}return Y},m2=(J,Q,$=!1)=>{let Y=typeof Q==="number"?(q)=>Q:Q;return(q)=>{let j=J.getEntry(q);if(j.type==="header"){if($&&j.group.groupIndex===0)return 0;return J.getHeaderHeight(j.group.groupIndex)}return Y(j.dataIndex)}},d2=(J,Q)=>{let $=g2(J,Q.getGroupForIndex),Y=J+$.length,q=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return Y},get groupCount(){return $.length},get groups(){return $},getEntry:(b)=>{if($.length===0)return{type:"item",dataIndex:b,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let C=v2($,b),G=$[C];if(b===G.headerLayoutIndex)return{type:"header",group:G};let W=b-G.headerLayoutIndex-1;return{type:"item",dataIndex:G.firstDataIndex+W,group:G}},layoutToDataIndex:(b)=>{if($.length===0)return b;let C=v2($,b),G=$[C];if(b===G.headerLayoutIndex)return-1;let W=b-G.headerLayoutIndex-1;return G.firstDataIndex+W},dataToLayoutIndex:(b)=>{if($.length===0)return b;let C=x2($,b),G=$[C],W=b-G.firstDataIndex;return G.headerLayoutIndex+1+W},getGroupAtLayoutIndex:(b)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let C=v2($,b);return $[C]},getGroupAtDataIndex:(b)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let C=x2($,b);return $[C]},getHeaderHeight:typeof q==="number"?(b)=>q:(b)=>{let C=$[b];if(!C)return 0;return q(C.key,b)},rebuild:(b)=>{$=g2(b,Q.getGroupForIndex),Y=b+$.length}}};var c2=(J,Q,$,Y,q,j=!1,K=0)=>{let D=j?"width":"height",A=j?"height":"width",V=j?"X":"Y",X=(N,S)=>{N.style[D]=`${S}px`},O=document.createElement("div");O.className=`${q}-sticky-header`,O.setAttribute("role","presentation"),O.setAttribute("aria-hidden","true"),O.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(j?`top:0;bottom:0;left:${K||0}px`:`top:${K||0}px`);let b=()=>{let N=document.createElement("div");return N.className="sticky-group",N.style.position="absolute",N.style.willChange="transform",N.style[A]="100%",N},C=b(),G=b();O.append(C,G),J.insertBefore(O,J.firstChild);let W=C,B=G,U=Q.groups,F=[],T=[],P=0,c=()=>{U=Q.groups,P=U.length,F=Array(P),T=Array(P);for(let N=0;N<P;N++)F[N]=$.getOffset(U[N].headerLayoutIndex),T[N]=Q.getHeaderHeight(N)};c();let u=-1,o=0,l=-1,Y2=!1,U2=0,p=!1,m=(N,S)=>{Y(N,S);let g=T[S];return X(N,g),g},J2=(N)=>{N.replaceChildren(),N.style.transform=""},Q2=(N)=>{if(N===u)return;if(u=N,o=0,N<0||N>=P){J2(W);return}o=m(W,N),X(O,o),W.style.transform=""},y=(N)=>{if(N===U2)return;U2=N;let S=Math.round(N);W.style.transform=`translate${V}(${S}px)`,B.style.transform=`translate${V}(${S+o}px)`},M=()=>{U2=0,W.style.transform="",B.style.transform=""},Z=()=>{if(!p)return;let N=W;W=B,B=N,u=l,o=u>=0?T[u]:0,X(O,o),J2(B),l=-1,p=!1,M()},L=()=>{if(!p)return;J2(B),l=-1,p=!1,M()},H=()=>{if(Y2)return;Y2=!0,O.style.display=""},a=()=>{if(!Y2)return;Y2=!1,O.style.display="none",J2(W),u=-1,o=0,L()},s=(N)=>{if(P===0){a();return}if(N<F[0]){a();return}let S=0,g=P-1;while(S<g){let w=S+g+1>>>1;if(F[w]+T[w]<=N)S=w;else g=w-1}if(!Y2)H();Q2(S);let R=S+1;if(R<P){let w=F[R]-N;if(w<=0&&w>-o){if(l!==R||!p)l=R,m(B,R),p=!0;y(w)}else if(w<=-o){if(p)Z()}else if(p)L()}else if(p)L()},k=()=>{c();let N=u;if(u=-1,o=0,N>=0)Q2(N)},_=()=>{O.remove(),u=-1,o=0,l=-1,Y2=!1,p=!1};return O.style.display="none",{update:s,refresh:k,show:H,hide:a,destroy:_}};var r2=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,Y=J.isHeaderFn,q={row:0,col:0},j=(G)=>{if(G<=0)return 0;if(!Y)return Math.ceil(G/Q);let W=0,B=0,U=0;for(let F=0;F<G;F++)if(Y(F)){if(U++,B>0)W++,B=0;W++,B=0}else if(B++,B>=Q)W++,B=0;if(B>0)W++;return W},K=(G)=>{return q.row=D(G),q.col=A(G),q},D=(G)=>{if(!Y)return Math.floor(G/Q);let W=0,B=0;for(let U=0;U<=G;U++)if(Y(U)){if(B>0)W++,B=0;if(U===G)return W;W++,B=0}else{if(U===G)return W;if(B++,B>=Q)W++,B=0}return console.warn(`⚠️ getRow(${G}) fell through - returning ${W}`),W},A=(G)=>{if(!Y)return G%Q;if(Y(G))return 0;let W=0;for(let B=0;B<=G;B++)if(Y(B))W=0;else{if(B===G)return W;if(W++,W>=Q)W=0}return W},V=(G,W,B)=>{if(B<=0)return{start:0,end:-1};if(!Y){let c=Math.max(0,G*Q),u=Math.min(B-1,(W+1)*Q-1);return{start:c,end:u}}let U=-1,F=-1,T=0,P=0;for(let c=0;c<B;c++){if(Y(c)){if(P>0)T++,P=0;if(T>=G&&T<=W){if(U===-1)U=c;F=c}T++,P=0}else{if(T>=G&&T<=W){if(U===-1)U=c;F=c}if(P++,P>=Q)T++,P=0}if(T>W&&P===0)break}if(U===-1)return{start:0,end:-1};return{start:U,end:F}},X=(G,W,B)=>{if(W<0||W>=Q)return-1;let U=G*Q+W;if(U<0||U>=B)return-1;return U},O=(G)=>{let W=(Q-1)*$;return Math.max(0,(G-W)/Q)};return{get columns(){return Q},get gap(){return $},update:(G)=>{if(G.columns!==void 0)Q=Math.max(1,Math.floor(G.columns));if(G.gap!==void 0)$=G.gap;if(G.isHeaderFn!==void 0)Y=G.isHeaderFn},getTotalRows:j,getPosition:K,getRow:D,getCol:A,getItemRange:V,getItemIndex:X,getColumnWidth:O,getColumnOffset:(G,W)=>{let B=O(W);return G*(B+$)}}};var W2=16000000;var l2="x",a2=20,C2="_isPlaceholder",M2="__placeholder_";var A2=(J,Q,$)=>{if(String($).startsWith(M2))return!1;let Y=M2+Q;if(J.has(Y))return J.delete(Y),J.add($),!0;return!1},s2=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),S2=(J,Q,$)=>{if($==="none")return J;let Y=new Set(J.selected);if($==="single"){if(Y.clear(),Q.length>0)Y.add(Q[0])}else for(let q of Q)Y.add(q);return{...J,selected:Y}},f2=(J,Q)=>{let $=new Set(J.selected);for(let Y of Q)$.delete(Y);return{...J,selected:$}},n2=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return f2(J,[Q]);else return S2(J,[Q],$)},o2=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((Y)=>Y.id))}},i2=(J)=>({...J,selected:new Set});var t2=(J,Q)=>{return J.selected.has(Q)},e2=(J)=>{return Array.from(J.selected)},JJ=(J,Q)=>{let $=[];for(let Y of J.selected){let q=Q(Y);if(q)$.push(q)}return $};var vJ=(J,Q)=>{let $=Q;return{getOffset:(Y)=>Y*J,getSize:(Y)=>J,indexAtOffset:(Y)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(Y/J),$-1))},getTotalSize:()=>$*J,getTotal:()=>$,rebuild:(Y)=>{$=Y},isVariable:()=>!1}},CJ=(J,Q)=>{let $=Q,Y=new Float64Array(0),q=(K)=>{$=K,Y=new Float64Array(K+1),Y[0]=0;for(let D=0;D<K;D++)Y[D+1]=Y[D]+J(D)};q(Q);let j=(K)=>{if($===0)return 0;if(K<=0)return 0;if(K>=Y[$])return $-1;let D=0,A=$-1;while(D<A){let V=D+A+1>>>1;if(Y[V]<=K)D=V;else A=V-1}return D};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=$)return Y[$];return Y[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>j(K),getTotalSize:()=>Y[$]??0,getTotal:()=>$,rebuild:(K)=>q(K),isVariable:()=>!0}},L2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},I2=(J,Q,$,Y)=>{if(Y===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,j=0,K=Q;while(K<Y&&j<$)j+=J.getSize(K),q++,K++;return Math.max(1,q)};var H2=(J,Q,$)=>{let Y=Q.getTotalSize(),q=$===!0||Y>W2,j=Y>W2?W2:Y,K=Y>0?j/Y:1;return{isCompressed:q,actualSize:Y,virtualSize:j,ratio:K}},QJ=(J,Q,$,Y,q,j)=>{if(Y===0||Q===0)return j.start=0,j.end=-1,j;if(!q.isCompressed||q.ratio===1){let b=$.indexAtOffset(J),C=$.indexAtOffset(J+Q);if(C<Y-1)C++;return j.start=Math.max(0,b),j.end=Math.min(Y-1,Math.max(0,C)),j}let{virtualSize:K}=q,A=J/K*Y,V=Math.floor(A),X=I2($,Math.max(0,V),Q,Y),O=Math.ceil(A)+X;return j.start=Math.max(0,V),j.end=Math.min(Y-1,Math.max(0,O)),j},$J=(J,Q,$,Y)=>{if($===0)return Y.start=0,Y.end=-1,Y;return Y.start=Math.max(0,J.start-Q),Y.end=Math.min($-1,J.end+Q),Y},F2=(J,Q,$,Y,q,j,K)=>{if(!j.isCompressed||Y===0)return $.getOffset(J);if(j.ratio===1)return $.getOffset(J)-Q;let{virtualSize:D}=j,A=Q/D,V=$.getTotalSize(),X=A*V;return $.getOffset(J)-X},YJ=(J,Q,$,Y,q,j="start")=>{if(Y===0)return 0;let K;if(q.isCompressed&&q.ratio!==1){K=J/Y*q.virtualSize;let X=Q.getSize(J);switch(j){case"center":K-=($-X)/2*q.ratio;break;case"end":K-=($-X)*q.ratio;break}return Math.max(0,K)}K=Q.getOffset(J);let D=Q.getSize(J);switch(j){case"center":K-=($-D)/2;break;case"end":K-=$-D;break}let A=q.virtualSize-$;return Math.max(0,Math.min(K,A))},jJ=(J,Q,$,Y)=>{if($===0)return 0;if(Y.isCompressed&&Y.ratio!==1){let q=J/Y.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},qJ=(J,Q)=>{if(typeof Q==="number")return J*Q>W2;return Q.getTotalSize()>W2},BJ=(J)=>{if(J<=0)return 0;return Math.floor(W2/J)},KJ=(J,Q,$)=>{let Y=H2(J,Q,$);if(!Y.isCompressed)return`No compression needed (${J} items, ${(Y.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(Y.ratio*100).toFixed(1)}% (${J} items, ${(Y.actualSize/1e6).toFixed(1)}M px → ${(Y.virtualSize/1e6).toFixed(1)}M px virtual)`};var R2=(J,Q,$)=>{let Y=Array.from(Q).sort((K,D)=>K-D);if(Y.length<=1)return;let q=[];for(let K=0;K<Y.length;K++){let D=$(Y[K]);if(D)q.push(D)}if(q.length<=1)return;let j=J.firstChild;for(let K=0;K<q.length;K++){let D=q[K];if(D===j)j=j.nextSibling;else J.insertBefore(D,j)}};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(j)=>{if(j.remove(),Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-row"),j.removeAttribute("data-col"),Q.push(j)},clear:()=>{Q.length=0}}},fJ=1,XJ=(J,Q,$,Y,q,j,K,D,A=!1)=>{let V=SJ(),X=new Map,O=j,b=!1,C=0,G="",W=-1,B={selected:!1,focused:!1},U=(_,N)=>{return B.selected=_,B.focused=N,B},F=`${q}-item ${q}-grid-item`,T=`${q}-item--selected`,P=`${q}-item--focused`,c=`${q}-item--placeholder`,u=`${q}-item--replaced`,o=(_,N)=>{if(typeof N==="string")_.innerHTML=N;else _.replaceChildren(N)},l=(_,N,S)=>{_.classList.toggle(T,N),_.classList.toggle(P,S)},Y2=(_,N)=>{let S=Y.getRow(_);if(N?.compression?.isCompressed)return F2(S,N.scrollPosition,$,N.totalItems,N.containerSize,N.compression,N.rangeStart);return $.getOffset(S)},U2=(_,N)=>{let S=b&&Y.getCol(_)===0,g=S?0:Y.getCol(_),R=S?0:Y.getColumnOffset(g,O),w;if(b){let t=Y.getRow(_),E=0,z=new Set;for(let f=0;f<_;f++){let d=Y.getRow(f);if(d<t&&!z.has(d)){let r=$.getSize(f);E+=r,z.add(d)}}w=E}else w=Y2(_,N);if(A)return`translate(${Math.round(w)}px, ${Math.round(R)}px)`;return`translate(${Math.round(R)}px, ${Math.round(w)}px)`},p=(_,N)=>{_.style.transform=N},m=(_,N)=>{let S=_.dataset.id?.startsWith("__group_header"),g=S?O:Y.getColumnWidth(O),R;if(b||S)R=$.getSize(N)-Y.gap;else{let w=Y.getRow(N);R=$.getSize(w)-Y.gap}if(A)_.style.width=`${R}px`,_.style.height=`${g}px`;else _.style.width=`${g}px`,_.style.height=`${R}px`},J2=(_,N,S,g,R)=>{let w=V.acquire(),t=U(S,g);if(w.className=F,w.dataset.index=String(_),w.dataset.id=String(N.id),w.dataset.row=String(Y.getRow(_)),w.dataset.col=String(Y.getCol(_)),w.ariaSelected=String(S),D)w.id=`${D}-item-${_}`;if(K){let f=K();if(f!==W)W=f,G=String(f);w.setAttribute("aria-setsize",G),w.setAttribute("aria-posinset",String(_+1))}m(w,_);let E=Q(N,_,t);if(o(w,E),String(N.id).startsWith(M2))w.classList.add(c);return l(w,S,g),p(w,R),{element:w,lastItemId:N.id,lastSelected:S,lastFocused:g,lastTransform:R,lastSeenFrame:C}},Q2=(_,N,S,g,R)=>{if(C++,N.start===0&&_.length>0)b=T2(_[0]);for(let[E,z]of X)if(E>=N.start&&E<=N.end)z.lastSeenFrame=C;else if(C-z.lastSeenFrame>fJ)V.release(z.element),X.delete(E);let w=!1;if(K){let E=K();if(E!==W)W=E,G=String(E),w=!0}let t=null;for(let E=N.start;E<=N.end;E++){let z=E-N.start,f=_[z];if(!f){console.warn(`⚠️ RENDER: Missing item at index ${E} (range: ${N.start}-${N.end}, items.length: ${_.length})`);continue}let d=S.has(f.id),r=E===g,h=X.get(E);if(h){let e=h.lastItemId!==f.id,v=h.lastSelected!==d,I=h.lastFocused!==r;if(e){let B2=String(h.lastItemId),$2=String(f.id),q2=B2.startsWith(M2),Z2=$2.startsWith(M2);if(!Z2&&A2(S,E,f.id))d=!0;let _2=U(d,r),n=Q(f,E,_2);if(o(h.element,n),h.element.dataset.id=$2,h.element.dataset.row=String(Y.getRow(E)),h.element.dataset.col=String(Y.getCol(E)),m(h.element,E),h.element.classList.toggle(c,Z2),q2&&!Z2)h.element.classList.add(u),setTimeout(()=>h.element.classList.remove(u),300);h.lastItemId=f.id}if(e||v||I)l(h.element,d,r),h.element.ariaSelected=String(d),h.lastSelected=d,h.lastFocused=r;let x=U2(E,R);if(h.lastTransform!==x)p(h.element,x),h.lastTransform=x;if(w)h.element.setAttribute("aria-setsize",G)}else{if(A2(S,E,f.id))d=!0;let e=U2(E,R),v=J2(E,f,d,r,e);if(!t)t=document.createDocumentFragment();t.appendChild(v.element),X.set(E,v)}}if(t)J.appendChild(t)},y=(_)=>{for(let[N,S]of X){let g=U2(N,_);if(S.lastTransform!==g)p(S.element,g),S.lastTransform=g}},M=(_,N,S,g)=>{let R=X.get(_);if(!R)return;let w=U(S,g),t=Q(N,_,w);o(R.element,t),l(R.element,S,g),R.element.dataset.id=String(N.id),R.element.ariaSelected=String(S),m(R.element,_),R.lastItemId=N.id,R.lastSelected=S,R.lastFocused=g},Z=(_,N,S)=>{let g=X.get(_);if(!g)return;let R=g.lastSelected!==N,w=g.lastFocused!==S;if(R||w)l(g.element,N,S),g.lastSelected=N,g.lastFocused=S},L=(_)=>{return X.get(_)?.element},H=(_)=>{if(Math.abs(_-O)<1)return;O=_;for(let[N,S]of X){m(S.element,N);let g=U2(N);p(S.element,g),S.lastTransform=g}},a=()=>{R2(J,X.keys(),(_)=>X.get(_)?.element)},s=()=>{for(let[,_]of X)V.release(_.element);X.clear()};return{render:Q2,updatePositions:y,updateItem:M,updateItemClasses:Z,getElement:L,sortDOM:a,updateContainerWidth:H,clear:s,destroy:()=>{s(),V.clear()}}};var NJ=(J,Q=50,$=1/0,Y=!0)=>{let q=J,j=[],K=0,D=()=>{j=q.map((B,U)=>({def:B,index:U,width:0,minWidth:IJ(B.minWidth??Q,1),maxWidth:B.maxWidth??$,resizable:B.resizable??Y,offset:0}))},A=(B)=>{if(j.length===0){K=0;return}let U=0,F=0;for(let T=0;T<j.length;T++){let P=j[T],c=P.def;if(c.width!==void 0)P.width=p2(c.width,P.minWidth,P.maxWidth),U+=P.width;else F++}if(F>0){let P=Math.max(0,B-U)/F;for(let c=0;c<j.length;c++){let u=j[c];if(u.def.width===void 0)u.width=p2(P,u.minWidth,u.maxWidth)}}V()},V=()=>{let B=0;for(let U=0;U<j.length;U++){let F=j[U];F.offset=B,B+=F.width}K=B},X=(B,U)=>{if(B<0||B>=j.length)return 0;let F=j[B];if(!F.resizable)return F.width;let T=p2(U,F.minWidth,F.maxWidth);return F.width=T,V(),T},O=(B)=>{return j[B]},b=(B)=>{if(j.length===0)return;if(B<0)return j[0];if(B>=K)return j[j.length-1];let U=0,F=j.length-1;while(U<F){let T=U+F>>>1,P=j[T];if(B<P.offset)F=T-1;else if(B>=P.offset+P.width)U=T+1;else return P}return j[U]},C=(B)=>{if(B<0||B>=j.length)return 0;return j[B].offset},G=(B)=>{if(B<0||B>=j.length)return 0;return j[B].width},W=(B)=>{q=B,D()};return D(),{get columns(){return j},get totalWidth(){return K},resolve:A,updateColumns:W,resizeColumn:X,getColumn:O,getColumnAtX:b,getColumnOffset:C,getColumnWidth:G}},p2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var UJ=(J,Q,$,Y,q,j,K)=>{let D=document.createElement("div");D.setAttribute("role","rowgroup");let A=document.createElement("div");A.className=`${Y}-table-header`,A.setAttribute("role","row"),A.setAttribute("aria-rowindex","1"),A.style.height=`${$}px`;let V=document.createElement("div");V.className=`${Y}-table-header-scroll`,V.setAttribute("role","presentation"),A.appendChild(V),D.appendChild(A),J.insertBefore(D,J.firstChild),Q.style.cssText=`position:absolute;top:${$}px;left:0px;right:0px;bottom:0px;height:auto`;let X=[],O=[],b=[],C=!0,G=null,W="asc",B=null,U=!1,F=-1,T=0,P=0,c=(Z,L)=>{let H=document.createElement("div");H.className=`${Y}-table-header-cell`,H.setAttribute("role","columnheader"),H.setAttribute("aria-colindex",String(L+1)),H.dataset.columnKey=Z.def.key;let a=Z.def.align;if(a==="center")H.classList.add(`${Y}-table-header-cell--center`);else if(a==="right")H.classList.add(`${Y}-table-header-cell--right`);let s=document.createElement("div");s.className=`${Y}-table-header-content`;let k=Z.def.header?Z.def.header(Z.def):Z.def.label;if(typeof k==="string")s.textContent=k;else s.appendChild(k);if(H.appendChild(s),Z.def.sortable){let _=document.createElement("span");_.className=`${Y}-table-header-sort`,_.setAttribute("aria-hidden","true"),H.appendChild(_),b.push(_),H.classList.add(`${Y}-table-header-cell--sortable`)}else b.push(null);if(Z.resizable){let _=document.createElement("div");_.className=`${Y}-table-header-resize`,_.dataset.resizeIndex=String(L),H.appendChild(_),O.push(_)}return H},u=(Z)=>{B=Z,V.textContent="",X=[],O=[],b=[];let L=Z.columns;for(let H=0;H<L.length;H++){let a=L[H],s=c(a,H);X.push(s),V.appendChild(s)}if(o(Z),G)l(G,W)},o=(Z)=>{B=Z;let L=Z.columns;V.style.width=`${Z.totalWidth}px`;for(let H=0;H<X.length&&H<L.length;H++){let a=X[H],s=L[H];a.style.width=`${s.width}px`}},l=(Z,L)=>{if(G=Z,W=L,!B)return;let H=B.columns;for(let a=0;a<b.length&&a<H.length;a++){let s=b[a];if(!s)continue;if(H[a].def.key===Z&&Z!==null)s.textContent=L==="asc"?"▲":"▼",s.style.opacity="0.7",X[a].setAttribute("aria-sort",L==="asc"?"ascending":"descending");else s.textContent="",s.style.opacity="0",X[a].removeAttribute("aria-sort")}},Y2=(Z)=>{V.style.transform=`translateX(${-Z}px)`},U2=(Z)=>{let L=Z.target;if(!L.dataset.resizeIndex)return;if(Z.preventDefault(),Z.stopPropagation(),F=parseInt(L.dataset.resizeIndex,10),!B)return;let H=B.getColumn(F);if(!H||!H.resizable)return;U=!0,T=Z.clientX,P=H.width,J.classList.add(`${Y}--col-resizing`),J.style.cursor="col-resize",L.classList.add(`${Y}-table-header-resize--active`),L.setPointerCapture(Z.pointerId),L.addEventListener("pointermove",p),L.addEventListener("pointerup",m),L.addEventListener("pointercancel",m)},p=(Z)=>{if(!U||!B)return;let L=Z.clientX-T;if(Math.abs(L)<1)return;let H=Math.max(0,P+L);q(F,H)},m=(Z)=>{if(!U)return;let L=Z.target;L.removeEventListener("pointermove",p),L.removeEventListener("pointerup",m),L.removeEventListener("pointercancel",m);try{L.releasePointerCapture(Z.pointerId)}catch{}L.classList.remove(`${Y}-table-header-resize--active`),J.classList.remove(`${Y}--col-resizing`),J.style.cursor="",U=!1,F=-1},J2=(Z)=>{let L=Z.target;if(L.dataset.resizeIndex!==void 0)return;if(U)return;let H=L;while(H&&!H.dataset.columnKey)if(H=H.parentElement,H===A||H===null)return;if(!H||!H.dataset.columnKey)return;let a=H.dataset.columnKey;if(!B)return;let s=B.columns,k=-1;for(let N=0;N<s.length;N++)if(s[N].def.key===a){k=N;break}if(k===-1)return;let _=s[k];if(K)K({key:a,index:k,event:Z});if(_.def.sortable&&j){let N;if(G===a)if(W==="asc")N="desc";else N=null;else N="asc";j({key:a,index:k,direction:N})}};return A.addEventListener("pointerdown",U2),A.addEventListener("click",J2),{element:A,update:o,updateSort:l,rebuild:u,show:()=>{if(C)return;C=!0,A.style.display=""},hide:()=>{if(!C)return;C=!1,A.style.display="none"},destroy:()=>{A.removeEventListener("pointerdown",U2),A.removeEventListener("click",J2),Q.style.cssText="",D.remove(),X=[],O=[],b=[],B=null,C=!1},syncScroll:Y2}};var pJ=()=>{let J=[];return{acquire:()=>J.pop()||document.createElement("div"),release:(Q)=>{if(Q.parentNode?.removeChild(Q),J.length<200)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",J.push(Q)},clear:()=>{J.length=0}}},ZJ=(J,Q,$,Y,q,j,K,D,A)=>{let V=pJ(),X=new Map,O=-1,b=$,C=null,G=null,W=null,B=(E,z)=>{G=E,W=z},U=(E,z)=>{if(z)E.setAttribute("aria-selected","true");else E.removeAttribute("aria-selected")},F=(E,z,f,d)=>{E.setAttribute("role",z),E.setAttribute("data-id",String(f)),E.setAttribute("data-index",String(d))},T=(E)=>String(E).startsWith("__placeholder_"),P=`${q}-item ${q}-table-row`,c=`${q}-item--selected`,u=`${q}-item--focused`,o=`${q}-table-cell`,l=`${q}-table-cell--center`,Y2=`${q}-table-cell--right`,U2=`${q}-item--odd`,p=`${q}-item--placeholder`,m=`${q}-item--replaced`,J2=`${q}-item ${q}-table-row ${q}-table-group-header`,Q2=`${q}-table-group-header-content`,y=(E,z,f,d,r=!1)=>{if(f.def.cell){let h=f.def.cell(z,f.def,d);if(typeof h==="string")E.innerHTML=h;else E.replaceChildren(h)}else{let h=z[f.def.key],e=h!=null?String(h):"";if(r&&e)E.innerHTML=`<span>${e}</span>`;else E.textContent=e}},M=(E,z,f,d,r=!1)=>{let h=P;if(D){if(C){let e=C(z);if(e>=0&&(e&1)===1)h+=` ${U2}`}else if((z&1)===1)h+=` ${U2}`}if(r)h+=` ${p}`;if(f)h+=` ${c}`;if(d)h+=` ${u}`;E.className=h},Z=(E,z,f)=>{if(f?.compression?.isCompressed)return Math.round(F2(E,f.scrollPosition,z,f.totalItems,f.containerSize,f.compression,f.rangeStart));return z.getOffset(E)},L=(E,z)=>{let f=z.def.align;if(f==="center")E.classList.add(l),E.classList.remove(Y2);else if(f==="right")E.classList.add(Y2),E.classList.remove(l);else E.classList.remove(l,Y2)},H=(E,z)=>{let d=b.columns.length;if(z.length===d)return z;let r=[];for(let h=0;h<d;h++){let e;if(h<z.length)e=z[h];else e=document.createElement("div"),e.className=o,E.appendChild(e);r.push(e)}for(let h=d;h<z.length;h++)z[h].remove();return r},a=(E,z,f,d)=>{let r=V.acquire(),h=E,e=f.getSize(z),v=Z(z,f,d);r.style.cssText=`width:${b.totalWidth}px;height:${e}px;transform:translateY(${v}px)`,r.className=J2,F(r,"presentation",E.id,z),r.removeAttribute("aria-selected"),r.removeAttribute("aria-rowindex"),r.replaceChildren();let I=document.createElement("div");if(I.className=Q2,W){let x=W(h.groupKey,h.groupIndex);if(typeof x==="string")I.innerHTML=x;else I.appendChild(x)}return r.appendChild(I),{element:r,cells:[],index:z,isGroupHeader:!0,lastItemId:E.id,lastSelected:!1,lastFocused:!1,lastOffset:v,lastHeight:e}},s=(E,z,f,d,r,h)=>{let e=V.acquire(),v=r.getSize(z),I=Z(z,r,h),x=T(E.id);e.style.cssText=`width:${b.totalWidth}px;height:${v}px;transform:translateY(${I}px)`,M(e,z,f,d,x),F(e,"row",E.id,z),e.id=`${j}-${z}`,e.setAttribute("aria-rowindex",String(z+2)),U(e,f);let B2=H(e,[]),$2=b.columns;for(let q2=0;q2<B2.length&&q2<$2.length;q2++){let Z2=B2[q2],_2=$2[q2];Z2.style.cssText=`left:${_2.offset}px;width:${_2.width}px`,Z2.setAttribute("role","gridcell"),Z2.setAttribute("aria-colindex",String(q2+1)),L(Z2,_2),y(Z2,E,_2,z,x)}return{element:e,cells:B2,index:z,isGroupHeader:!1,lastItemId:E.id,lastSelected:f,lastFocused:d,lastOffset:I,lastHeight:v}},k=(E,z,f,d,r)=>{for(let[x,B2]of X)if(x<z.start||x>z.end)V.release(B2.element),X.delete(x);let h=!1,e=K();if(e!==O)O=e,h=!0;let v=null,I=Q();C=typeof D==="string"&&A?A():null;for(let x=z.start;x<=z.end;x++){let B2=x-z.start,$2=E[B2];if(!$2)continue;let q2=f.has($2.id),Z2=x===d,_2=G?G($2):!1,n=X.get(x);if(n){if(n.isGroupHeader!==_2){V.release(n.element),X.delete(x);let X2=_2?a($2,x,I,r):s($2,x,q2,Z2,I,r);if(X.set(x,X2),!v)v=document.createDocumentFragment();v.appendChild(X2.element);continue}if(_2){if(n.lastItemId!==$2.id){let K2=$2,j2=n.element.firstElementChild;if(j2&&W){let D2=W(K2.groupKey,K2.groupIndex);if(typeof D2==="string")j2.innerHTML=D2;else j2.replaceChildren(D2)}n.element.setAttribute("data-id",String($2.id)),n.lastItemId=$2.id}let i=Z(x,I,r);if(n.lastOffset!==i)n.lastOffset=i,n.element.style.transform=`translateY(${i}px)`;let N2=I.getSize(x);if(n.lastHeight!==N2)n.lastHeight=N2,n.element.style.height=`${N2}px`}else{let X2=n.lastItemId!==$2.id,i=n.lastSelected!==q2,N2=n.lastFocused!==Z2;if(X2){let D2=n.lastItemId!=null&&T(n.lastItemId),G2=T($2.id);if(!G2&&A2(f,x,$2.id))q2=!0;let V2=b.columns;for(let E2=0;E2<n.cells.length&&E2<V2.length;E2++)y(n.cells[E2],$2,V2[E2],x,G2);if(M(n.element,x,q2,Z2,G2),n.element.setAttribute("data-id",String($2.id)),U(n.element,q2),D2&&!G2)n.element.classList.add(m),setTimeout(()=>{n.element.classList.remove(m)},300);n.lastItemId=$2.id,n.lastSelected=q2,n.lastFocused=Z2}else if(i||N2)M(n.element,x,q2,Z2,T($2.id)),U(n.element,q2),n.lastSelected=q2,n.lastFocused=Z2;let K2=Z(x,I,r);if(n.lastOffset!==K2)n.lastOffset=K2,n.element.style.transform=`translateY(${K2}px)`;let j2=I.getSize(x);if(n.lastHeight!==j2)n.lastHeight=j2,n.element.style.height=`${j2}px`;if(h)n.element.setAttribute("aria-rowindex",String(x+2))}}else{if(A2(f,x,$2.id))q2=!0;let X2=_2?a($2,x,I,r):s($2,x,q2,Z2,I,r);if(X.set(x,X2),!v)v=document.createDocumentFragment();v.appendChild(X2.element)}}if(v)J.appendChild(v)},_=(E)=>{let z=Q();for(let[f,d]of X){let r=Z(f,z,E);if(d.lastOffset!==r)d.lastOffset=r,d.element.style.transform=`translateY(${r}px)`}},N=(E,z,f,d)=>{let r=X.get(E);if(!r)return;if(r.isGroupHeader)return;let h=b.columns;for(let e=0;e<r.cells.length&&e<h.length;e++)y(r.cells[e],z,h[e],E);r.element.setAttribute("data-id",String(z.id)),r.lastItemId=z.id,M(r.element,E,f,d),U(r.element,f),r.lastSelected=f,r.lastFocused=d},S=(E,z,f)=>{let d=X.get(E);if(!d)return;if(d.isGroupHeader)return;let r=d.lastSelected!==z,h=d.lastFocused!==f;if(r||h)M(d.element,E,z,f),U(d.element,z),d.lastSelected=z,d.lastFocused=f},g=(E)=>{b=E;let z=E.columns;for(let[,f]of X)if(f.element.style.width=`${E.totalWidth}px`,f.cells.length>0)for(let d=0;d<f.cells.length&&d<z.length;d++){let r=f.cells[d],h=z[d];r.style.left=`${h.offset}px`,r.style.width=`${h.width}px`}},R=(E)=>{return X.get(E)?.element},w=()=>{for(let[,E]of X)V.release(E.element);X.clear(),O=-1};return{render:k,updatePositions:_,updateItem:N,updateItemClasses:S,getElement:R,updateColumnLayout:g,setGroupHeaderFn:B,clear:w,destroy:()=>{w(),V.clear()}}};var GJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,Y=J.containerSize,q=0,j=[],K=()=>{let B=(Q-1)*$;q=Math.max(0,(Y-B)/Q),j=Array(Q);let U=q+$;for(let F=0;F<Q;F++)j[F]=F*U};K();let D=[],A=0,V=[],X=(B)=>{let U=0,F=B[0];for(let T=1;T<B.length;T++){let P=B[T];if(P<F)F=P,U=T}return U},O=(B,U)=>{if(B<=0)return A=0,D=[],[];let F=Array(Q).fill(0),T=Array(Q);for(let u=0;u<Q;u++)T[u]=[];let P=Array(B);for(let u=0;u<B;u++){let o=X(F),l=U(u),Y2=F[o];P[u]={index:u,x:j[o],y:Y2,lane:o,size:l,crossSize:q},T[o].push(u),F[o]=Y2+l+$}D=T;let c=0;for(let u=0;u<Q;u++){let o=F[u],l=o>0?o-$:0;if(l>c)c=l}return A=c,P},b=(B)=>{if(B.length===0)return A>0?A:0;if(A>0)return A;let U=Array(Q).fill(0);for(let T of B){let P=T.y+T.size,c=U[T.lane];if(P>c)U[T.lane]=P}let F=0;for(let T=0;T<Q;T++)if(U[T]>F)F=U[T];return F},C=(B,U,F)=>{if(B.length===0||F<=U)return V.length=0,V;if(D.length===0||D.length!==Q)return G(B,U,F);V.length=0;for(let T=0;T<Q;T++){let P=D[T],c=P.length;if(c===0)continue;let u=0,o=c;while(u<o){let l=u+o>>>1,Y2=B[P[l]];if(Y2.y+Y2.size<=U)u=l+1;else o=l}for(let l=u;l<c;l++){let Y2=B[P[l]];if(Y2.y>=F)break;V.push(Y2)}}return V},G=(B,U,F)=>{let T=[];for(let P of B)if(P.y+P.size>U&&P.y<F)T.push(P);return T};return{get columns(){return Q},get gap(){return $},get containerSize(){return Y},update:(B)=>{let U=!1;if(B.columns!==void 0){let F=Math.max(1,Math.floor(B.columns));if(F!==Q)Q=F,U=!0}if(B.gap!==void 0&&B.gap!==$)$=B.gap,U=!0;if(B.containerSize!==void 0&&B.containerSize!==Y)Y=B.containerSize,U=!0;if(U)K()},calculateLayout:O,getTotalSize:b,getVisibleItems:C}};var hJ=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(j)=>{if(j.remove(),Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-lane"),Q.push(j)},clear:()=>{Q.length=0}}},xJ=1,_J=(J,Q,$,Y=!1,q,j)=>{let K=hJ(),D=new Map,A=new Set,V=0,X="",O=-1,b={selected:!1,focused:!1},C=(p,m)=>{return b.selected=p,b.focused=m,b},G=`${$}-item ${$}-masonry-item`,W=`${$}-item--selected`,B=`${$}-item--focused`,U=(p,m)=>{if(typeof m==="string")p.innerHTML=m;else p.replaceChildren(m)},F=(p,m,J2)=>{p.classList.toggle(W,m),p.classList.toggle(B,J2)},T=(p,m)=>{if(Y)p.style.transform=`translate(${Math.round(m.y)}px, ${Math.round(m.x)}px)`;else p.style.transform=`translate(${Math.round(m.x)}px, ${Math.round(m.y)}px)`},P=(p,m)=>{if(Y)p.style.width=`${m.size}px`,p.style.height=`${m.crossSize}px`;else p.style.width=`${m.crossSize}px`,p.style.height=`${m.size}px`},c=(p,m,J2,Q2,y)=>{let M=K.acquire(),Z=C(Q2,y);if(M.className=G,M.dataset.index=String(p),M.dataset.id=String(m.id),M.dataset.lane=String(J2.lane),M.ariaSelected=String(Q2),j)M.id=`${j}-item-${p}`;if(q){let H=q();if(H!==O)O=H,X=String(H);M.setAttribute("aria-setsize",X),M.setAttribute("aria-posinset",String(p+1))}P(M,J2);let L=Q(m,p,Z);return U(M,L),F(M,Q2,y),T(M,J2),{element:M,lastItemId:m.id,lastSelected:Q2,lastFocused:y,lastY:J2.y,lastX:J2.x,lastSize:J2.size,lastCrossSize:J2.crossSize,lastSeenFrame:V}},u=(p,m,J2,Q2)=>{V++,A.clear();for(let M=0;M<m.length;M++)A.add(m[M].index);for(let[M,Z]of D)if(A.has(M))Z.lastSeenFrame=V;else if(V-Z.lastSeenFrame>xJ)K.release(Z.element),D.delete(M);let y=null;for(let M=0;M<m.length;M++){let Z=m[M],L=Z.index,H=p(L);if(!H)continue;let a=J2.has(H.id),s=L===Q2,k=D.get(L);if(k){let _=k.lastItemId!==H.id,N=k.lastSelected!==a,S=k.lastFocused!==s,g=k.lastY!==Z.y||k.lastX!==Z.x,R=k.lastSize!==Z.size||k.lastCrossSize!==Z.crossSize;if(_){let w=C(a,s),t=Q(H,L,w);U(k.element,t),k.element.dataset.id=String(H.id),k.lastItemId=H.id}if(_||N||S)F(k.element,a,s),k.element.ariaSelected=String(a),k.lastSelected=a,k.lastFocused=s;if(R)P(k.element,Z),k.lastSize=Z.size,k.lastCrossSize=Z.crossSize;if(g)T(k.element,Z),k.lastY=Z.y,k.lastX=Z.x}else{let _=c(L,H,Z,a,s);if(!y)y=document.createDocumentFragment();y.appendChild(_.element),D.set(L,_)}}if(y)J.appendChild(y)},o=()=>{for(let{element:p}of D.values())K.release(p);D.clear(),J.innerHTML=""};return{render:u,getElement:(p)=>D.get(p)?.element,updateItemClasses:(p,m,J2)=>{let Q2=D.get(p);if(!Q2)return;let y=Q2.lastSelected!==m,M=Q2.lastFocused!==J2;if(y||M)F(Q2.element,m,J2),Q2.lastSelected=m,Q2.lastFocused=J2},sortDOM:()=>{R2(J,D.keys(),(p)=>D.get(p)?.element)},clear:o,destroy:()=>{o(),K.clear()}}};var DJ=(J,Q)=>{let $=new Map,Y=(j)=>{let K=$.get(j);return K!==void 0?K:J},q=L2(Y,Q);return{getOffset(j){return q.getOffset(j)},getSize(j){return Y(j)},indexAtOffset(j){return q.indexAtOffset(j)},getTotalSize(){return q.getTotalSize()},getTotal(){return q.getTotal()},rebuild(j){if(j<q.getTotal()){for(let K of $.keys())if(K>=j)$.delete(K)}q=L2(Y,j)},isVariable(){return!0},setMeasuredSize(j,K){$.set(j,K)},isMeasured(j){return $.has(j)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var VJ=(J,Q,$,Y,q,j)=>{if(Y===0||Q===0)return j.start=0,j.end=-1,j;let K=$.indexAtOffset(J),D=$.indexAtOffset(J+Q);if(D<Y-1)D++;return j.start=Math.max(0,K),j.end=Math.min(Y-1,Math.max(0,D)),j},WJ=(J,Q,$,Y)=>{if($===0)return Y.start=0,Y.end=-1,Y;return Y.start=Math.max(0,J.start-Q),Y.end=Math.min($-1,J.end+Q),Y},MJ=(J,Q,$,Y,q,j)=>{if(Y===0)return 0;let K=Math.max(0,Math.min(J,Y-1)),D=Q.getOffset(K),A=Q.getSize(K),V=Q.getTotalSize(),X=Math.max(0,V-$),O;switch(j){case"center":O=D-$/2+A/2;break;case"end":O=D-$+A;break;case"start":default:O=D;break}return Math.max(0,Math.min(O,X))},OJ=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},EJ=(J,Q)=>{return Q.getTotalSize()},AJ=(J,Q)=>{return Q.getOffset(J)},FJ=(J,Q,$)=>{let Y=Math.max(0,Q-$);return Math.max(0,Math.min(J,Y))};var LJ=(J,Q,$,Y,q="start",j,K=MJ)=>{return K(J,Q,$,Y,j,q)},HJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},bJ=(J,Q)=>{return J>=Q.start&&J<=Q.end},TJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var RJ=(J,Q)=>{let $=[],Y=[];for(let q=J.start;q<=J.end;q++)if(q<Q.start||q>Q.end)Y.push(q);for(let q=Q.start;q<=Q.end;q++)if(q<J.start||q>J.end)$.push(q);return{add:$,remove:Y}};var yJ=()=>{let J={},Q=(j,K)=>{if(!J[j])J[j]=new Set;return J[j].add(K),()=>$(j,K)},$=(j,K)=>{J[j]?.delete(K)};return{on:Q,off:$,emit:(j,K)=>{J[j]?.forEach((D)=>{try{D(K)}catch(A){console.error(`[vlist] Error in event handler for "${String(j)}":`,A)}})},clear:(j)=>{if(j)delete J[j];else for(let K in J)delete J[K]}}};var y2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:Y=200,onEvict:q}=J,j=new Map,K=0,D=0,A=(y)=>{let M=j.get(y);if(!M)M={items:Array(Q),count:0,lastAccess:Date.now()},j.set(y,M);else M.lastAccess=Date.now();return M},V=(y)=>{return Math.floor(y/Q)},X=(y)=>{return y%Q},O=()=>K,b=(y)=>{K=y},C=(y)=>{if(y<0||y>=K)return;let M=V(y),Z=j.get(M);if(!Z)return;return Z.items[X(y)]},G=(y)=>{if(y<0||y>=K)return!1;let M=V(y),Z=j.get(M);if(!Z)return!1;return Z.items[X(y)]!==void 0},W=(y,M)=>{let Z=V(y),L=A(Z),H=X(y),a=L.items[H]===void 0;if(L.items[H]=M,a)L.count++,D++;if(y>=K)K=y+1},B=(y,M)=>{for(let Z=0;Z<M.length;Z++){let L=M[Z];if(L!==void 0)W(y+Z,L)}},U=(y)=>{if(y<0||y>=K)return!1;let M=V(y),Z=j.get(M),L=X(y);if(!(Z!==void 0&&Z.items[L]!==void 0))return!1;let a=M,s=Array.from(j.keys()).filter((_)=>_>=a).sort((_,N)=>_-N),k=[];for(let _ of s){let N=j.get(_),S=_*Q;for(let g=0;g<Q;g++){if(N.items[g]===void 0)continue;let R=S+g;if(R<=y)continue;k.push({oldIndex:R,item:N.items[g]})}}if(Z.items[L]=void 0,Z.count--,D--,Z.count===0)j.delete(M);for(let{oldIndex:_}of k){let N=V(_),S=j.get(N);if(!S)continue;let g=X(_);if(S.items[g]!==void 0){if(S.items[g]=void 0,S.count--,D--,S.count===0)j.delete(N)}}for(let{oldIndex:_,item:N}of k){let S=_-1,g=V(S),R=A(g),w=X(S);R.items[w]=N,R.count++,D++}return K--,!0},F=(y,M)=>{let Z=[];for(let L=y;L<=M&&L<K;L++)Z.push(C(L));return Z},T=(y,M)=>{for(let Z=y;Z<=M&&Z<K;Z++)if(!G(Z))return!1;return!0},P=()=>{let y=[],M=null,Z=Array.from(j.keys()).sort((L,H)=>L-H);for(let L of Z){let H=j.get(L);if(!H)continue;let a=L*Q;for(let s=0;s<Q;s++){let k=a+s;if(k>=K)break;if(H.items[s]!==void 0)if(M===null)M={start:k,end:k};else if(k===M.end+1)M.end=k;else y.push(M),M={start:k,end:k};else if(M!==null)y.push(M),M=null}}if(M!==null)y.push(M);return y},c=(y,M)=>{let Z=[],L=null;for(let H=y;H<=M&&H<K;H++)if(!G(H))if(L===null)L={start:H,end:H};else L.end=H;else if(L!==null)Z.push(L),L=null;if(L!==null)Z.push(L);return Z},u=(y)=>{return j.has(y)},o=(y)=>{let M=j.get(y);if(M)M.lastAccess=Date.now()},l=(y,M)=>{if(y>M||j.size===0)return;let Z=Date.now(),L=V(Math.max(0,y)),H=V(Math.min(K-1,M));for(let a=L;a<=H;a++){let s=j.get(a);if(s)s.lastAccess=Z}},Y2=(y,M)=>{if(D<=$)return 0;let Z=Math.max(0,y-Y),L=Math.min(K-1,M+Y),H=V(Z),a=V(L),s=0,k=[];for(let[_,N]of j)if(_<H||_>a)s+=N.count,k.push(_),D-=N.count,j.delete(_);if(s>0&&q)q(s,k);return s},U2=()=>{if(D<=$)return 0;let y=Array.from(j.entries()).sort(([,L],[,H])=>L.lastAccess-H.lastAccess),M=0,Z=[];for(let[L,H]of y){if(D<=$)break;M+=H.count,D-=H.count,Z.push(L),j.delete(L)}if(M>0&&q)q(M,Z);return M},p=()=>{return{totalItems:K,cachedItems:D,cachedChunks:j.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:K>0?1-D/K:1}},m=()=>D,J2=()=>{j.clear(),D=0};return{chunkSize:Q,maxCachedItems:$,getTotal:O,setTotal:b,get:C,has:G,set:W,setRange:B,delete:U,getRange:F,isRangeLoaded:T,getLoadedRanges:P,findUnloadedRanges:c,getChunkIndex:V,isChunkLoaded:u,touchChunk:o,touchChunksForRange:l,evictDistant:Y2,evictToLimit:U2,getStats:p,getCachedCount:m,clear:J2,reset:()=>{J2(),K=0}}},P2=(J)=>{if(J.length===0)return[];let Q=[...J].sort((Y,q)=>Y.start-q.start),$=[{...Q[0]}];for(let Y=1;Y<Q.length;Y++){let q=Q[Y],j=$[$.length-1];if(q.start<=j.end+1)j.end=Math.max(j.end,q.end);else $.push({...q})}return $},b2=(J,Q,$)=>{let Y=Math.floor(J.start/$)*$,q=Math.ceil((J.end+1)/$)*$-1,j={start:Y,end:q};if(Q.length===0)return[j];let K=[],D=P2(Q),A=j.start;for(let V of D){if(V.end<A)continue;if(V.start>j.end)break;if(V.start>A)K.push({start:A,end:Math.min(V.start-1,j.end)});if(A=V.end+1,A>j.end)break}if(A<=j.end)K.push({start:A,end:j.end});return K};var k2=(J={})=>{let{maskCharacter:Q=l2,maxSampleSize:$=a2}=J,Y=[],q=!1,j=(X)=>{if(q||X.length===0)return;let O=Math.min(X.length,$);for(let b=0;b<O;b++){let C=X[b];if(!C||typeof C!=="object")continue;let G={};for(let[W,B]of Object.entries(C)){if(W.startsWith("_")||W==="id")continue;G[W]=String(B??"").length}if(Object.keys(G).length>0)Y.push(G)}q=!0},K=()=>q,D=(X)=>{let O={id:`${M2}${X}`,[C2]:!0,_index:X};if(Y.length===0)return O.label=Q.repeat(12),O;let b=Y[X%Y.length];for(let[C,G]of Object.entries(b))O[C]=Q.repeat(Math.max(1,G));return O};return{analyzeStructure:j,hasAnalyzedStructure:K,generate:D,generateRange:(X,O)=>{let b=[];for(let C=X;C<=O;C++)b.push(D(C));return b},clear:()=>{Y=[],q=!1}}},O2=(J)=>{if(!J||typeof J!=="object")return!1;return J[C2]===!0},h2=(J)=>{return J.filter((Q)=>!O2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:Y,storage:q,placeholder:j,pageSize:K=uJ,onStateChange:D,onItemsLoaded:A,onItemsEvicted:V}=J,X=y2({...q,onEvict:(v,I)=>{V?.(v),l()}}),O=null,b=()=>{if(!O)O=k2(j);return O},C=new Map,G=!1,W,B=!0,U,F,T=[],P=0,c=new Map,u=new Map,o=()=>{for(let v of u.values())v.abort();u.clear(),c.clear()},l=()=>{D?.(Z())},Y2=()=>{C.clear();let v=X.getLoadedRanges();for(let I of v)for(let x=I.start;x<=I.end;x++){let B2=X.get(x);if(B2&&!O2(B2))C.set(B2.id,x)}},U2=(v,I)=>{if(!O2(I))C.set(I.id,v)},p=(v)=>{C.delete(v)},m=(v,I)=>{return`${v}-${I}`},J2=()=>X.getTotal(),Q2=()=>X.getCachedCount(),y=()=>G,M=()=>B,Z=()=>({total:X.getTotal(),cached:X.getCachedCount(),isLoading:G,pendingRanges:T,error:W,hasMore:B,cursor:U}),L=()=>X,H=()=>b(),a=(v)=>{let I=X.get(v);if(I!==void 0)return I;if(v>=0&&v<X.getTotal())return b().generate(v);return},s=(v)=>{let I=C.get(v);if(I===void 0)return;return X.get(I)},k=(v)=>{return C.get(v)??-1},_=(v)=>{let I=X.get(v);return I!==void 0&&!O2(I)},N=(v,I)=>{let x=[],B2=X.getTotal(),$2=0,q2=0;X.touchChunksForRange(v,Math.min(I,B2-1));for(let Z2=v;Z2<=I&&Z2<B2;Z2++){let _2=X.get(Z2);if(_2!==void 0)x.push(_2),$2++;else x.push(b().generate(Z2)),q2++}return x},S=(v)=>{X.setTotal(v),B=X.getCachedCount()<v,l()},g=(v,I=0,x)=>{if(Q&&v.length>0){let B2=b();if(!B2.hasAnalyzedStructure())B2.analyzeStructure(v)}for(let B2=0;B2<v.length;B2++){let $2=v[B2];if($2!==void 0){let q2=I+B2;X.set(q2,$2),U2(q2,$2)}}if(x!==void 0)X.setTotal(x);else if(I+v.length>X.getTotal())X.setTotal(I+v.length);if(X.getCachedCount()>=X.getTotal()&&X.getTotal()>0)B=!1;l(),A?.(v,I,X.getTotal())},R=(v,I)=>{let x=X.get(v);if(!x)return!1;let B2=x.id,$2={...x,...I};if(X.set(v,$2),I.id!==void 0&&I.id!==B2)p(B2);return U2(v,$2),l(),!0},w=(v)=>{let I=C.get(v);if(I===void 0)return!1;if(!X.delete(I))return!1;return Y2(),o(),l(),!0},t=async(v,I)=>{if(!Q)return;let x=m(v,I);if(c.has(x))return;let B2=X.getLoadedRanges(),$2=b2({start:v,end:I},B2,X.chunkSize);if($2.length===0)return;let q2=X.chunkSize,Z2=q2*2;for(let[X2,i]of u){let N2=X2.indexOf("-"),K2=parseInt(X2.slice(0,N2),10);if(Math.abs(K2-v)>Z2)i.abort(),u.delete(X2),c.delete(X2)}let _2=[];for(let X2 of $2){let i=Math.floor(X2.start/q2),N2=Math.floor(X2.end/q2);for(let K2=i;K2<=N2;K2++){let j2=K2*q2,D2=j2+q2-1,G2=m(j2,D2);if(!_2.some((V2)=>V2.start===j2)&&!c.has(G2))_2.push({start:j2,end:D2})}}let n=[];for(let X2 of $2){let i=Math.floor(X2.start/q2),N2=Math.floor(X2.end/q2);for(let K2=i;K2<=N2;K2++){let j2=K2*q2,D2=j2+q2-1,G2=m(j2,D2);if(c.has(G2)){let V2=c.get(G2);if(!n.includes(V2))n.push(V2)}}}for(let X2 of _2){let i=m(X2.start,X2.end),N2=new AbortController;u.set(i,N2);let K2=(async()=>{T.push(X2),G=!0,W=void 0,l();try{let j2=X2.end-X2.start+1,D2={offset:X2.start,limit:j2,cursor:X2.start===F?U:void 0,signal:N2.signal},G2=await Q.read(D2);if(g(G2.items,X2.start,G2.total),G2.cursor)U=G2.cursor,F=X2.start+G2.items.length;let V2=X2.start+G2.items.length;if(V2>=P){if(P=V2,G2.hasMore!==void 0)B=G2.hasMore;else if(G2.total!==void 0)B=V2<G2.total}}catch(j2){if(j2?.name==="AbortError")return;W=j2 instanceof Error?j2:Error(String(j2))}finally{c.delete(i),u.delete(i),T=T.filter((j2)=>j2.start!==X2.start||j2.end!==X2.end),G=c.size>0,l()}})();c.set(i,K2),n.push(K2)}await Promise.all(n)},E=async(v,I)=>{if(X.isRangeLoaded(v,I))return;await t(v,I)},z=async()=>{if(!Q)return;await t(0,K-1)},f=async()=>{if(!Q||G||!B)return!1;let v=X.getCachedCount(),I=X.getTotal(),x=v,B2=Math.min(x+K-1,I>0?I-1:x+K-1);if(x>=I&&I>0)return B=!1,!1;return await t(x,B2),X.getCachedCount()>v},d=async()=>{if(X.clear(),X.setTotal(0),C.clear(),O)O.clear();o(),T=[],G=!1,U=void 0,F=void 0,B=!0,P=0,W=void 0,l()},r=(v,I)=>{if(X.evictDistant(v,I)>0)Y2()},h=()=>{X.clear(),C.clear(),U=void 0,F=void 0,W=void 0,T=[],G=!1,l()},e=()=>{if(X.reset(),C.clear(),O)O.clear();U=void 0,F=void 0,B=!0,P=0,W=void 0,T=[],G=!1,l()};if($&&$.length>0)g($,0,Y??$.length);else if(Y!==void 0)X.setTotal(Y),l();return{getState:Z,getTotal:J2,getCached:Q2,getIsLoading:y,getHasMore:M,getStorage:L,getPlaceholders:H,getItem:a,getItemById:s,getIndexById:k,isItemLoaded:_,getItemsInRange:N,setTotal:S,setItems:g,updateItem:R,removeItem:w,loadRange:t,ensureRange:E,loadInitial:z,loadMore:f,reload:d,evictDistant:r,clear:h,reset:e}};var kJ=(J=0)=>{let Q=[,,,,,,,,];for(let $=0;$<8;$++)Q[$]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},z2=(J,Q)=>{let $=performance.now(),Y=$-J.lastTime;if(Y===0)return J;if(Y>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let j=J.samples[0];return j.position=Q,j.time=$,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=$,J}let q=J.samples[J.sampleIndex];if(q.position=Q,q.time=$,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let j=(J.sampleIndex-J.sampleCount+8)%8,K=J.samples[j],D=Q-K.position,A=$-K.time;J.velocity=A>0?D/A:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,zJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:Y=1,smoothing:q=!1,idleTimeout:j=150,onScroll:K,onIdle:D,scrollElement:A,horizontal:V=!1}=Q,X=!!A,O=0,b=0,C=X?V?window.innerWidth:window.innerHeight:V?J.clientWidth:J.clientHeight,G=Q.compressed??!1,W=Q.compression,B=kJ(),U=!1,F=null,P=w2(()=>{let R=V?J.scrollLeft:J.scrollTop,w=R>=O?"down":"up";if(B=z2(B,R),O=R,K)K({scrollTop:O,direction:w,velocity:B.velocity});U2()}),u=w2(()=>{let R=J.getBoundingClientRect(),w=V?Math.max(0,-R.left):Math.max(0,-R.top),t=w>=O?"down":"up";if(B=z2(B,w),O=w,!U)U=!0;if(K)K({scrollTop:O,direction:t,velocity:B.velocity});U2()}),o=(R)=>{R.preventDefault()},l=(R)=>{if(R.deltaX)return;R.preventDefault(),J.scrollLeft+=R.deltaY},Y2=(R)=>{if(!G)return;R.preventDefault();let w=(V?R.deltaX||R.deltaY:R.deltaY)*Y,t=O+w;if(q)t=O+w*0.3;if(t=Math.max(0,Math.min(t,b)),t!==O){let z=t>=O?"down":"up";if(B=z2(B,t),O=t,!U)U=!0;if(K)K({scrollTop:O,direction:z,velocity:B.velocity});U2()}},U2=()=>{if(F)clearTimeout(F);F=setTimeout(()=>{if(U=!1,B=kJ(O),D)D()},j)},p=(R)=>{if(G)return;if(G=!0,W=R,b=R.virtualSize-C,X)return;if(P.cancel(),J.removeEventListener("scroll",P),!$)J.removeEventListener("wheel",o);else if(V)J.removeEventListener("wheel",l);if(V)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",Y2,{passive:!1});let w=V?J.scrollLeft:J.scrollTop;if(w>0){let t=V?W?.actualSize??J.scrollWidth:W?.actualSize??J.scrollHeight;O=w/t*b}if(V)J.scrollLeft=0;else J.scrollTop=0},m=()=>{if(!G)return;if(G=!1,X){W=void 0;return}if(J.removeEventListener("wheel",Y2),V)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",o,{passive:!1});else if(V)J.addEventListener("wheel",l,{passive:!1});if(W&&O>0){let w=O/b*(W.actualSize-C);if(V)J.scrollLeft=w;else J.scrollTop=w}W=void 0},J2=()=>{if(X||G)return O;return V?J.scrollLeft:J.scrollTop},Q2=(R,w=!1)=>{let t=Math.max(0,Math.min(R,b||1/0));if(X){let E=J.getBoundingClientRect();if(V){let z=E.left+window.scrollX;window.scrollTo({left:z+t,behavior:w?"smooth":"auto"})}else{let z=E.top+window.scrollY;window.scrollTo({top:z+t,behavior:w?"smooth":"auto"})}}else if(G){if(t===O)return;let z=t>=O?"down":"up";if(B=z2(B,t),O=t,!U)U=!0;if(K)K({scrollTop:O,direction:z,velocity:B.velocity});U2()}else if(V)J.scrollTo({left:t,behavior:w?"smooth":"auto"});else J.scrollTo({top:t,behavior:w?"smooth":"auto"})},y=(R)=>{Q2(J2()+R)},M=()=>{return J2()<=0},Z=(R=0)=>{let w=J2(),t=X||G?b:V?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return w>=t-R},L=()=>{let R=J2(),w=X||G?b:V?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(w<=0)return 0;return Math.min(1,Math.max(0,R/w))},H=(R)=>{if(R.compression)W=R.compression,b=W.virtualSize-C},a=()=>G,s=()=>Math.abs(B.velocity),k=()=>mJ(B),_=()=>U,N=()=>X,S=(R)=>{if(C=R,W)b=W.virtualSize-C},g=()=>{if(F)clearTimeout(F);if(X)u.cancel(),window.removeEventListener("scroll",u);else P.cancel(),J.removeEventListener("scroll",P),J.removeEventListener("wheel",Y2),J.removeEventListener("wheel",o),J.removeEventListener("wheel",l)};if(X){if(G&&W)b=W.virtualSize-C;window.addEventListener("scroll",u,{passive:!0})}else if(G&&W){if(b=W.virtualSize-C,V)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",Y2,{passive:!1})}else{if(V)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",o,{passive:!1});else if(V)J.addEventListener("wheel",l,{passive:!1})}return{getScrollTop:J2,scrollTo:Q2,scrollBy:y,isAtTop:M,isAtBottom:Z,getScrollPercentage:L,getVelocity:s,isTracking:k,isScrolling:_,updateConfig:H,enableCompression:p,disableCompression:m,isCompressed:a,isWindowMode:N,updateContainerHeight:S,destroy:g}},w2=(J)=>{let Q=null,$=null,Y=(...q)=>{if($=q,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,$)J(...$)})};return Y.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},Y};var dJ=(J)=>{if(typeof J!=="object"){let Q=J??2;return{top:Q,right:Q,bottom:Q,left:Q}}return{top:J.top??2,right:J.right??2,bottom:J.bottom??2,left:J.left??2}},wJ=(J,Q,$={},Y="vlist",q=!1)=>{let{autoHide:j=!0,autoHideDelay:K=1000,minThumbSize:D=15,showOnHover:A=!0,showOnViewportEnter:V=!0,clickBehavior:X="page"}=$,O=dJ($.padding),b=q?O.left:O.top,C=q?O.right:O.bottom,G=q?O.bottom:O.right,W=$.hoverZoneWidth??G+16,B=0,U=0,F=0,T=0,P=!1,c=!1,u=0,o=0,l=0,Y2=null,U2=!1,p=null,m=null,J2=0,Q2=0,y=null,M=null,Z=null,L=q?"width":"height",H=q?"translateX":"translateY",a=q?(i)=>i.clientX:(i)=>i.clientY,s=q?"left":"top",k=document.createElement("div"),_=document.createElement("div"),N=document.createElement("div"),S=()=>{if(k.className=`${Y}-scrollbar`,_.className=`${Y}-scrollbar-thumb`,q)k.classList.add(`${Y}-scrollbar--horizontal`);if($.padding!==void 0)J.style.setProperty("--vlist-custom-scrollbar-padding-top",`${O.top}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-right",`${O.right}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${O.bottom}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-left",`${O.left}px`);if($.minThumbSize!==void 0)k.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${D}px`);if(k.appendChild(_),J.appendChild(k),N.className=`${Y}-scrollbar-hover`,q)N.classList.add(`${Y}-scrollbar-hover--horizontal`),N.style.height=`${W}px`;else N.style.width=`${W}px`;J.appendChild(N)},g=()=>{if(Y2)clearTimeout(Y2),Y2=null},R=()=>{if(!j)return;g(),Y2=setTimeout(t,K)},w=()=>{if(B<=U)return;if(g(),!U2)k.classList.add(`${Y}-scrollbar--visible`),U2=!0;if(j&&!P&&!c)R()},t=()=>{if(P||c)return;k.classList.remove(`${Y}-scrollbar--visible`),U2=!1},E=(i,N2)=>{B=i,U=N2;let K2=B>U;if(k.style.display=K2?"":"none",!K2){t();return}let j2=Math.max(0,U-b-C),D2=U/B;F=Math.max(D,D2*j2),_.style[L]=`${F}px`,T=j2-F,z(l)},z=(i)=>{if(l=i,B<=U||T<=0)return;let N2=B-U,j2=Math.min(1,Math.max(0,i/N2))*T;_.style.transform=`${H}(${j2}px)`},f=(i)=>{if(i.target===_||X!=="jump"||T<=0)return;let N2=B-U,K2=k.getBoundingClientRect(),j2=a(i)-K2[s],D2=Math.max(0,Math.min(j2-F/2,T));Q(D2/T*N2),w()},d=()=>{if(y!==null)clearTimeout(y),y=null;if(M!==null)cancelAnimationFrame(M),M=null;Z=null},r=(i)=>{let N2=T>0?Q2/i*T:0;if(J2<N2)return-1;if(J2>=N2+F)return 1;return 0},h=()=>{let i=B-U,N2=r(i);if(N2===0){d();return}if(N2===-1){if(Q2<=0){d();return}let K2=Math.max(0,Q2-U);Q2=K2,Q(K2)}else{if(Q2>=i){d();return}let K2=Math.min(i,Q2+U);Q2=K2,Q(K2)}w()},e=(i)=>{if(Z===null){Z=i,M=requestAnimationFrame(e);return}let N2=B-U,K2=i-Z;Z=i;let j2=r(N2);if(j2===0){d();return}let D2=12*U/1000,G2=Math.min(D2*K2,U);if(j2===-1){if(Q2<=0){d();return}let V2=Math.max(0,Q2-G2);Q2=V2,Q(V2)}else{if(Q2>=N2){d();return}let V2=Math.min(N2,Q2+G2);Q2=V2,Q(V2)}g(),M=requestAnimationFrame(e)},v=()=>{d(),R(),document.removeEventListener("mouseup",v)},I=(i)=>{if(i.target===_||X!=="page")return;i.preventDefault();let N2=k.getBoundingClientRect();J2=a(i)-N2[s],Q2=l,h(),y=setTimeout(()=>{M=requestAnimationFrame(e)},350),document.addEventListener("mouseup",v)},x=(i)=>{i.preventDefault(),i.stopPropagation(),P=!0,u=a(i),o=l,g(),k.classList.add(`${Y}-scrollbar--dragging`),document.addEventListener("mousemove",B2),document.addEventListener("mouseup",$2)},B2=(i)=>{if(!P)return;let N2=a(i)-u,K2=T>0?N2/T:0,j2=B-U,D2=K2*j2,G2=Math.max(0,Math.min(o+D2,j2)),E2=G2/j2*T;if(_.style.transform=`${H}(${E2}px)`,m=G2,p===null)p=requestAnimationFrame(()=>{if(m!==null)Q(m);p=null})},$2=()=>{if(P=!1,p!==null)cancelAnimationFrame(p),p=null;if(m!==null)Q(m),m=null;if(k.classList.remove(`${Y}-scrollbar--dragging`),j&&!c)R();document.removeEventListener("mousemove",B2),document.removeEventListener("mouseup",$2)},q2=()=>{if(V)w()},Z2=()=>{if(!P){if(c=!1,j)R()}},_2=()=>{c=!0,g(),w()},n=()=>{if(c=!1,!P&&j)R()},X2=()=>{if(g(),d(),p!==null)cancelAnimationFrame(p),p=null;if(k.removeEventListener("click",f),k.removeEventListener("mousedown",I),k.removeEventListener("mouseenter",_2),document.removeEventListener("mouseup",v),k.removeEventListener("mouseleave",n),_.removeEventListener("mousedown",x),J.removeEventListener("mouseenter",q2),J.removeEventListener("mouseleave",Z2),document.removeEventListener("mousemove",B2),document.removeEventListener("mouseup",$2),N.removeEventListener("click",f),N.removeEventListener("mousedown",I),A)N.removeEventListener("mouseenter",_2),N.removeEventListener("mouseleave",n);if(N.parentNode)N.parentNode.removeChild(N);if(J.style.removeProperty("--vlist-custom-scrollbar-padding-top"),J.style.removeProperty("--vlist-custom-scrollbar-padding-right"),J.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),J.style.removeProperty("--vlist-custom-scrollbar-padding-left"),k.parentNode)k.parentNode.removeChild(k)};if(S(),k.addEventListener("click",f),k.addEventListener("mousedown",I),k.addEventListener("mouseenter",_2),k.addEventListener("mouseleave",n),_.addEventListener("mousedown",x),J.addEventListener("mouseenter",q2),J.addEventListener("mouseleave",Z2),N.addEventListener("click",f),N.addEventListener("mousedown",I),A)N.addEventListener("mouseenter",_2),N.addEventListener("mouseleave",n);return{show:w,hide:t,updateBounds:E,updatePosition:z,isVisible:()=>U2,destroy:X2}};var cJ=50,rJ=0.1;function lJ(J){let Q=0,$=0,Y=0;function q(){return Y>0?$/Y:0}function j(A){if(Q=A,A>rJ&&A<cJ)$+=A,Y++}function K(){let A=J.getTotal();if(A===0)return 0;let V=J.getItemSize();if(V<=0)return 0;let X=J.getContainerSize();if(X<=0)return 0;let O=J.getScrollPosition(),b=typeof J.getColumns==="function"?J.getColumns():1,G=Math.ceil(A/b)*V,B=Math.min(G,W2)-X,U=G-X,F=B>0?U/B:1,T=O*F,P=Math.ceil((T+X)/V);return Math.min(P*b,A)}function D(){let A=J.getTotal(),V=K();return{progress:A>0?Math.min(100,Math.max(0,V/A*100)):0,velocity:Q,velocityAvg:q(),itemCount:V,total:A}}return{getState:D,onVelocity:j}}export{n2 as toggleSelection,VJ as simpleVisibleRange,S2 as selectItems,o2 as selectAll,HJ as rangesEqual,w2 as rafThrottle,qJ as needsScaling,P2 as mergeRanges,t2 as isSelected,O2 as isPlaceholderItem,bJ as isInRange,T2 as isGroupHeader,JJ as getSelectedItems,e2 as getSelectedIds,H2 as getScaleState,KJ as getScaleInfo,H2 as getScale,TJ as getRangeCount,BJ as getMaxItemsWithoutScaling,h2 as filterPlaceholders,RJ as diffRanges,f2 as deselectItems,ZJ as createTableRenderer,NJ as createTableLayout,UJ as createTableHeader,c2 as createStickyHeader,lJ as createStats,y2 as createSparseStorage,L2 as createSizeCache,s2 as createSelectionState,wJ as createScrollbar,zJ as createScrollController,k2 as createPlaceholderManager,DJ as createMeasuredSizeCache,_J as createMasonryRenderer,GJ as createMasonryLayout,m2 as createGroupedSizeFn,d2 as createGroupLayout,XJ as createGridRenderer,r2 as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,i2 as clearSelection,FJ as clampScrollPosition,OJ as calculateTotalSize,LJ as calculateScrollToIndex,QJ as calculateScaledVisibleRange,YJ as calculateScaledScrollToIndex,$J as calculateScaledRenderRange,F2 as calculateScaledItemPosition,WJ as calculateRenderRange,b2 as calculateMissingRanges,AJ as calculateItemOffset,jJ as calculateIndexFromScrollPosition,EJ as calculateActualSize,u2 as buildLayoutItems,W2 as MAX_VIRTUAL_SIZE};
|
|
1
|
+
var T2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var v2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].headerLayoutIndex<=Q)$=q;else j=q-1}return $},x2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].firstDataIndex<=Q)$=q;else j=q-1}return $},g2=(J,Q)=>{if(J===0)return[];let $=[],j=Q(0),q=0,Y=0;for(let B=1;B<J;B++){let G=Q(B);if(G!==j){let b=B-q;$.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:b}),Y=Y+1+b,j=G,q=B}}return $.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:J-q}),$},u2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let $=J.length+Q.length,j=Array($),q=0;for(let Y of Q){j[q]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},q++;for(let B=0;B<Y.count;B++)j[q]=J[Y.firstDataIndex+B],q++}return j},m2=(J,Q,$=!1)=>{let j=typeof Q==="number"?(q)=>Q:Q;return(q)=>{let Y=J.getEntry(q);if(Y.type==="header"){if($&&Y.group.groupIndex===0)return 0;return J.getHeaderHeight(Y.group.groupIndex)}return j(Y.dataIndex)}},d2=(J,Q)=>{let $=g2(J,Q.getGroupForIndex),j=J+$.length,q=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(L)=>{if($.length===0)return{type:"item",dataIndex:L,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let v=v2($,L),V=$[v];if(L===V.headerLayoutIndex)return{type:"header",group:V};let D=L-V.headerLayoutIndex-1;return{type:"item",dataIndex:V.firstDataIndex+D,group:V}},layoutToDataIndex:(L)=>{if($.length===0)return L;let v=v2($,L),V=$[v];if(L===V.headerLayoutIndex)return-1;let D=L-V.headerLayoutIndex-1;return V.firstDataIndex+D},dataToLayoutIndex:(L)=>{if($.length===0)return L;let v=x2($,L),V=$[v],D=L-V.firstDataIndex;return V.headerLayoutIndex+1+D},getGroupAtLayoutIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let v=v2($,L);return $[v]},getGroupAtDataIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let v=x2($,L);return $[v]},getHeaderHeight:typeof q==="number"?(L)=>q:(L)=>{let v=$[L];if(!v)return 0;return q(v.key,L)},rebuild:(L)=>{$=g2(L,Q.getGroupForIndex),j=L+$.length}}};var c2=(J,Q,$,j,q,Y=!1,B=0)=>{let G=Y?"width":"height",b=Y?"height":"width",M=Y?"X":"Y",U=(N,S)=>{N.style[G]=`${S}px`},E=document.createElement("div");E.className=`${q}-sticky-header`,E.setAttribute("role","presentation"),E.setAttribute("aria-hidden","true"),E.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(Y?`top:0;bottom:0;left:${B||0}px`:`top:${B||0}px`);let L=()=>{let N=document.createElement("div");return N.className="sticky-group",N.style.position="absolute",N.style.willChange="transform",N.style[b]="100%",N},v=L(),V=L();E.append(v,V),J.insertBefore(E,J.firstChild);let D=v,K=V,Z=Q.groups,F=[],H=[],P=0,c=()=>{Z=Q.groups,P=Z.length,F=Array(P),H=Array(P);for(let N=0;N<P;N++)F[N]=$.getOffset(Z[N].headerLayoutIndex),H[N]=Q.getHeaderHeight(N)};c();let g=-1,n=0,l=-1,$2=!1,N2=0,I=!1,d=(N,S)=>{j(N,S);let u=H[S];return U(N,u),u},Y2=(N)=>{N.replaceChildren(),N.style.transform=""},J2=(N)=>{if(N===g)return;if(g=N,n=0,N<0||N>=P){Y2(D);return}n=d(D,N),U(E,n),D.style.transform=""},R=(N)=>{if(N===N2)return;N2=N;let S=Math.round(N);D.style.transform=`translate${M}(${S}px)`,K.style.transform=`translate${M}(${S+n}px)`},X=()=>{N2=0,D.style.transform="",K.style.transform=""},_=()=>{if(!I)return;let N=D;D=K,K=N,g=l,n=g>=0?H[g]:0,U(E,n),Y2(K),l=-1,I=!1,X()},O=()=>{if(!I)return;Y2(K),l=-1,I=!1,X()},C=()=>{if($2)return;$2=!0,E.style.display=""},a=()=>{if(!$2)return;$2=!1,E.style.display="none",Y2(D),g=-1,n=0,O()},i=(N)=>{if(P===0){a();return}if(N<F[0]){a();return}let S=0,u=P-1;while(S<u){let z=S+u+1>>>1;if(F[z]+H[z]<=N)S=z;else u=z-1}if(!$2)C();J2(S);let T=S+1;if(T<P){let z=F[T]-N;if(z<=0&&z>-n){if(l!==T||!I)l=T,d(K,T),I=!0;R(z)}else if(z<=-n){if(I)_()}else if(I)O()}else if(I)O()},y=()=>{c();let N=g;if(g=-1,n=0,N>=0)J2(N)},W=()=>{E.remove(),g=-1,n=0,l=-1,$2=!1,I=!1};return E.style.display="none",{update:i,refresh:y,show:C,hide:a,destroy:W}};var r2=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.isHeaderFn,q={row:0,col:0},Y=(V)=>{if(V<=0)return 0;if(!j)return Math.ceil(V/Q);let D=0,K=0,Z=0;for(let F=0;F<V;F++)if(j(F)){if(Z++,K>0)D++,K=0;D++,K=0}else if(K++,K>=Q)D++,K=0;if(K>0)D++;return D},B=(V)=>{return q.row=G(V),q.col=b(V),q},G=(V)=>{if(!j)return Math.floor(V/Q);let D=0,K=0;for(let Z=0;Z<=V;Z++)if(j(Z)){if(K>0)D++,K=0;if(Z===V)return D;D++,K=0}else{if(Z===V)return D;if(K++,K>=Q)D++,K=0}return console.warn(`⚠️ getRow(${V}) fell through - returning ${D}`),D},b=(V)=>{if(!j)return V%Q;if(j(V))return 0;let D=0;for(let K=0;K<=V;K++)if(j(K))D=0;else{if(K===V)return D;if(D++,D>=Q)D=0}return D},M=(V,D,K)=>{if(K<=0)return{start:0,end:-1};if(!j){let c=Math.max(0,V*Q),g=Math.min(K-1,(D+1)*Q-1);return{start:c,end:g}}let Z=-1,F=-1,H=0,P=0;for(let c=0;c<K;c++){if(j(c)){if(P>0)H++,P=0;if(H>=V&&H<=D){if(Z===-1)Z=c;F=c}H++,P=0}else{if(H>=V&&H<=D){if(Z===-1)Z=c;F=c}if(P++,P>=Q)H++,P=0}if(H>D&&P===0)break}if(Z===-1)return{start:0,end:-1};return{start:Z,end:F}},U=(V,D,K)=>{if(D<0||D>=Q)return-1;let Z=V*Q+D;if(Z<0||Z>=K)return-1;return Z},E=(V)=>{let D=(Q-1)*$;return Math.max(0,(V-D)/Q)};return{get columns(){return Q},get gap(){return $},update:(V)=>{if(V.columns!==void 0)Q=Math.max(1,Math.floor(V.columns));if(V.gap!==void 0)$=V.gap;if(V.isHeaderFn!==void 0)j=V.isHeaderFn},getTotalRows:Y,getPosition:B,getRow:G,getCol:b,getItemRange:M,getItemIndex:U,getColumnWidth:E,getColumnOffset:(V,D)=>{let K=E(D);return V*(K+$)}}};var W2=16000000;var l2="x",a2=20,C2="_isPlaceholder",M2="__placeholder_";var A2=(J,Q,$)=>{if(String($).startsWith(M2))return!1;let j=M2+Q;if(J.has(j))return J.delete(j),J.add($),!0;return!1},s2=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),S2=(J,Q,$)=>{if($==="none")return J;let j=new Set(J.selected);if($==="single"){if(j.clear(),Q.length>0)j.add(Q[0])}else for(let q of Q)j.add(q);return{...J,selected:j}},f2=(J,Q)=>{let $=new Set(J.selected);for(let j of Q)$.delete(j);return{...J,selected:$}},n2=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return f2(J,[Q]);else return S2(J,[Q],$)},o2=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((j)=>j.id))}},i2=(J)=>({...J,selected:new Set});var t2=(J,Q)=>{return J.selected.has(Q)},e2=(J)=>{return Array.from(J.selected)},JJ=(J,Q)=>{let $=[];for(let j of J.selected){let q=Q(j);if(q)$.push(q)}return $};var vJ=(J,Q)=>{let $=Q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),$-1))},getTotalSize:()=>$*J,getTotal:()=>$,rebuild:(j)=>{$=j},isVariable:()=>!1}},CJ=(J,Q)=>{let $=Q,j=new Float64Array(0),q=(B)=>{$=B,j=new Float64Array(B+1),j[0]=0;for(let G=0;G<B;G++)j[G+1]=j[G]+J(G)};q(Q);let Y=(B)=>{if($===0)return 0;if(B<=0)return 0;if(B>=j[$])return $-1;let G=0,b=$-1;while(G<b){let M=G+b+1>>>1;if(j[M]<=B)G=M;else b=M-1}return G};return{getOffset:(B)=>{if(B<=0)return 0;if(B>=$)return j[$];return j[B]},getSize:(B)=>J(B),indexAtOffset:(B)=>Y(B),getTotalSize:()=>j[$]??0,getTotal:()=>$,rebuild:(B)=>q(B),isVariable:()=>!0}},L2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},I2=(J,Q,$,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,Y=0,B=Q;while(B<j&&Y<$)Y+=J.getSize(B),q++,B++;return Math.max(1,q)};var H2=(J,Q,$)=>{let j=Q.getTotalSize(),q=$===!0||j>W2,Y=j>W2?W2:j,B=j>0?Y/j:1;return{isCompressed:q,actualSize:j,virtualSize:Y,ratio:B}},QJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!q.isCompressed||q.ratio===1){let L=$.indexAtOffset(J),v=$.indexAtOffset(J+Q);if(v<j-1)v++;return Y.start=Math.max(0,L),Y.end=Math.min(j-1,Math.max(0,v)),Y}let{virtualSize:B}=q,b=J/B*j,M=Math.floor(b),U=I2($,Math.max(0,M),Q,j),E=Math.ceil(b)+U;return Y.start=Math.max(0,M),Y.end=Math.min(j-1,Math.max(0,E)),Y},$J=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},F2=(J,Q,$,j,q,Y,B)=>{if(!Y.isCompressed||j===0)return $.getOffset(J);if(Y.ratio===1)return $.getOffset(J)-Q;let{virtualSize:G}=Y,b=Q/G,M=$.getTotalSize(),U=b*M;return $.getOffset(J)-U},YJ=(J,Q,$,j,q,Y="start")=>{if(j===0)return 0;let B;if(q.isCompressed&&q.ratio!==1){B=J/j*q.virtualSize;let U=Q.getSize(J);switch(Y){case"center":B-=($-U)/2*q.ratio;break;case"end":B-=($-U)*q.ratio;break}return Math.max(0,B)}B=Q.getOffset(J);let G=Q.getSize(J);switch(Y){case"center":B-=($-G)/2;break;case"end":B-=$-G;break}let b=q.virtualSize-$;return Math.max(0,Math.min(B,b))},jJ=(J,Q,$,j)=>{if($===0)return 0;if(j.isCompressed&&j.ratio!==1){let q=J/j.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},qJ=(J,Q)=>{if(typeof Q==="number")return J*Q>W2;return Q.getTotalSize()>W2},BJ=(J)=>{if(J<=0)return 0;return Math.floor(W2/J)},KJ=(J,Q,$)=>{let j=H2(J,Q,$);if(!j.isCompressed)return`No compression needed (${J} items, ${(j.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(j.ratio*100).toFixed(1)}% (${J} items, ${(j.actualSize/1e6).toFixed(1)}M px → ${(j.virtualSize/1e6).toFixed(1)}M px virtual)`};var R2=(J,Q,$)=>{let j=Array.from(Q).sort((B,G)=>B-G);if(j.length<=1)return;let q=[];for(let B=0;B<j.length;B++){let G=$(j[B]);if(G)q.push(G)}if(q.length<=1)return;let Y=J.firstChild;for(let B=0;B<q.length;B++){let G=q[B];if(G===Y)Y=Y.nextSibling;else J.insertBefore(G,Y)}};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-row"),Y.removeAttribute("data-col"),Q.push(Y)},clear:()=>{Q.length=0}}},fJ=1,XJ=(J,Q,$,j,q,Y,B,G,b=!1)=>{let M=SJ(),U=new Map,E=Y,L=!1,v=0,V="",D=-1,K={selected:!1,focused:!1},Z=(W,N)=>{return K.selected=W,K.focused=N,K},F=`${q}-item ${q}-grid-item`,H=`${q}-item--selected`,P=`${q}-item--focused`,c=`${q}-item--placeholder`,g=`${q}-item--replaced`,n=(W,N)=>{if(typeof N==="string")W.innerHTML=N;else W.replaceChildren(N)},l=(W,N,S)=>{W.classList.toggle(H,N),W.classList.toggle(P,S)},$2=(W,N)=>{let S=j.getRow(W);if(N?.compression?.isCompressed)return F2(S,N.scrollPosition,$,N.totalItems,N.containerSize,N.compression,N.rangeStart);return $.getOffset(S)},N2=(W,N)=>{let S=L&&j.getCol(W)===0,u=S?0:j.getCol(W),T=S?0:j.getColumnOffset(u,E),z;if(L){let t=j.getRow(W),A=0,k=new Set;for(let f=0;f<W;f++){let m=j.getRow(f);if(m<t&&!k.has(m)){let r=$.getSize(f);A+=r,k.add(m)}}z=A}else z=$2(W,N);if(b)return`translate(${Math.round(z)}px, ${Math.round(T)}px)`;return`translate(${Math.round(T)}px, ${Math.round(z)}px)`},I=(W,N)=>{W.style.transform=N},d=(W,N)=>{let S=W.dataset.id?.startsWith("__group_header"),u=S?E:j.getColumnWidth(E),T;if(L||S)T=$.getSize(N)-j.gap;else{let z=j.getRow(N);T=$.getSize(z)-j.gap}if(b)W.style.width=`${T}px`,W.style.height=`${u}px`;else W.style.width=`${u}px`,W.style.height=`${T}px`},Y2=(W,N,S,u,T)=>{let z=M.acquire(),t=Z(S,u);if(z.className=F,z.dataset.index=String(W),z.dataset.id=String(N.id),z.dataset.row=String(j.getRow(W)),z.dataset.col=String(j.getCol(W)),z.ariaSelected=String(S),G)z.id=`${G}-item-${W}`;if(B){let f=B();if(f!==D)D=f,V=String(f);z.setAttribute("aria-setsize",V),z.setAttribute("aria-posinset",String(W+1))}d(z,W);let A=Q(N,W,t);if(n(z,A),String(N.id).startsWith(M2))z.classList.add(c);return l(z,S,u),I(z,T),{element:z,lastItemId:N.id,lastSelected:S,lastFocused:u,lastTransform:T,lastSeenFrame:v}},J2=(W,N,S,u,T)=>{if(v++,N.start===0&&W.length>0)L=T2(W[0]);for(let[A,k]of U)if(A>=N.start&&A<=N.end)k.lastSeenFrame=v;else if(v-k.lastSeenFrame>fJ)M.release(k.element),U.delete(A);let z=!1;if(B){let A=B();if(A!==D)D=A,V=String(A),z=!0}let t=null;for(let A=N.start;A<=N.end;A++){let k=A-N.start,f=W[k];if(!f){console.warn(`⚠️ RENDER: Missing item at index ${A} (range: ${N.start}-${N.end}, items.length: ${W.length})`);continue}let m=S.has(f.id),r=A===u,h=U.get(A);if(h){let e=h.lastItemId!==f.id,w=h.lastSelected!==m,p=h.lastFocused!==r;if(e){let B2=String(h.lastItemId),Q2=String(f.id),q2=B2.startsWith(M2),Z2=Q2.startsWith(M2);if(!Z2&&A2(S,A,f.id))m=!0;let _2=Z(m,r),s=Q(f,A,_2);if(n(h.element,s),h.element.dataset.id=Q2,h.element.dataset.row=String(j.getRow(A)),h.element.dataset.col=String(j.getCol(A)),d(h.element,A),h.element.classList.toggle(c,Z2),q2&&!Z2)h.element.classList.add(g),setTimeout(()=>h.element.classList.remove(g),300);h.lastItemId=f.id}if(e||w||p)l(h.element,m,r),h.element.ariaSelected=String(m),h.lastSelected=m,h.lastFocused=r;let x=N2(A,T);if(h.lastTransform!==x)I(h.element,x),h.lastTransform=x;if(z)h.element.setAttribute("aria-setsize",V)}else{if(A2(S,A,f.id))m=!0;let e=N2(A,T),w=Y2(A,f,m,r,e);if(!t)t=document.createDocumentFragment();t.appendChild(w.element),U.set(A,w)}}if(t)J.appendChild(t)},R=(W)=>{for(let[N,S]of U){let u=N2(N,W);if(S.lastTransform!==u)I(S.element,u),S.lastTransform=u}},X=(W,N,S,u)=>{let T=U.get(W);if(!T)return;let z=Z(S,u),t=Q(N,W,z);n(T.element,t),l(T.element,S,u),T.element.dataset.id=String(N.id),T.element.ariaSelected=String(S),d(T.element,W),T.lastItemId=N.id,T.lastSelected=S,T.lastFocused=u},_=(W,N,S)=>{let u=U.get(W);if(!u)return;let T=u.lastSelected!==N,z=u.lastFocused!==S;if(T||z)l(u.element,N,S),u.lastSelected=N,u.lastFocused=S},O=(W)=>{return U.get(W)?.element},C=(W)=>{if(Math.abs(W-E)<1)return;E=W;for(let[N,S]of U){d(S.element,N);let u=N2(N);I(S.element,u),S.lastTransform=u}},a=()=>{R2(J,U.keys(),(W)=>U.get(W)?.element)},i=()=>{for(let[,W]of U)M.release(W.element);U.clear()};return{render:J2,updatePositions:R,updateItem:X,updateItemClasses:_,getElement:O,sortDOM:a,updateContainerWidth:C,clear:i,destroy:()=>{i(),M.clear()}}};var UJ=(J,Q=50,$=1/0,j=!0)=>{let q=J,Y=[],B=0,G=()=>{Y=q.map((K,Z)=>({def:K,index:Z,width:0,minWidth:IJ(K.minWidth??Q,1),maxWidth:K.maxWidth??$,resizable:K.resizable??j,offset:0}))},b=(K)=>{if(Y.length===0){B=0;return}let Z=0,F=0;for(let H=0;H<Y.length;H++){let P=Y[H],c=P.def;if(c.width!==void 0)P.width=p2(c.width,P.minWidth,P.maxWidth),Z+=P.width;else F++}if(F>0){let P=Math.max(0,K-Z)/F;for(let c=0;c<Y.length;c++){let g=Y[c];if(g.def.width===void 0)g.width=p2(P,g.minWidth,g.maxWidth)}}M()},M=()=>{let K=0;for(let Z=0;Z<Y.length;Z++){let F=Y[Z];F.offset=K,K+=F.width}B=K},U=(K,Z)=>{if(K<0||K>=Y.length)return 0;let F=Y[K];if(!F.resizable)return F.width;let H=p2(Z,F.minWidth,F.maxWidth);return F.width=H,M(),H},E=(K)=>{return Y[K]},L=(K)=>{if(Y.length===0)return;if(K<0)return Y[0];if(K>=B)return Y[Y.length-1];let Z=0,F=Y.length-1;while(Z<F){let H=Z+F>>>1,P=Y[H];if(K<P.offset)F=H-1;else if(K>=P.offset+P.width)Z=H+1;else return P}return Y[Z]},v=(K)=>{if(K<0||K>=Y.length)return 0;return Y[K].offset},V=(K)=>{if(K<0||K>=Y.length)return 0;return Y[K].width},D=(K)=>{q=K,G()};return G(),{get columns(){return Y},get totalWidth(){return B},resolve:b,updateColumns:D,resizeColumn:U,getColumn:E,getColumnAtX:L,getColumnOffset:v,getColumnWidth:V}},p2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var NJ=(J,Q,$,j,q,Y)=>{let B=document.createElement("div");B.setAttribute("role","rowgroup");let G=document.createElement("div");G.className=`${$}-table-header`,G.setAttribute("role","row"),G.setAttribute("aria-rowindex","1"),G.style.height=`${Q}px`;let b=document.createElement("div");b.className=`${$}-table-header-scroll`,b.setAttribute("role","presentation"),G.appendChild(b),B.appendChild(G),J.insertBefore(B,J.firstChild),J.style.setProperty("--vlist-table-header-height",`${Q}px`);let M=[],U=[],E=[],L=!0,v=null,V="asc",D=null,K=!1,Z=-1,F=0,H=0,P=(X,_)=>{let O=document.createElement("div");O.className=`${$}-table-header-cell`,O.setAttribute("role","columnheader"),O.setAttribute("aria-colindex",String(_+1)),O.dataset.columnKey=X.def.key;let C=X.def.align;if(C==="center")O.classList.add(`${$}-table-header-cell--center`);else if(C==="right")O.classList.add(`${$}-table-header-cell--right`);let a=document.createElement("div");a.className=`${$}-table-header-content`;let i=X.def.header?X.def.header(X.def):X.def.label;if(typeof i==="string")a.textContent=i;else a.appendChild(i);if(O.appendChild(a),X.def.sortable){let y=document.createElement("span");y.className=`${$}-table-header-sort`,y.setAttribute("aria-hidden","true"),O.appendChild(y),E.push(y),O.classList.add(`${$}-table-header-cell--sortable`)}else E.push(null);if(X.resizable){let y=document.createElement("div");y.className=`${$}-table-header-resize`,y.dataset.resizeIndex=String(_),O.appendChild(y),U.push(y)}return O},c=(X)=>{D=X,b.textContent="",M=[],U=[],E=[];let _=X.columns;for(let O=0;O<_.length;O++){let C=_[O],a=P(C,O);M.push(a),b.appendChild(a)}if(g(X),v)n(v,V)},g=(X)=>{D=X;let _=X.columns;b.style.width=`${X.totalWidth}px`;for(let O=0;O<M.length&&O<_.length;O++){let C=M[O],a=_[O];C.style.width=`${a.width}px`}},n=(X,_)=>{if(v=X,V=_,!D)return;let O=D.columns;for(let C=0;C<E.length&&C<O.length;C++){let a=E[C];if(!a)continue;if(O[C].def.key===X&&X!==null)a.textContent=_==="asc"?"▲":"▼",a.style.opacity="0.7",M[C].setAttribute("aria-sort",_==="asc"?"ascending":"descending");else a.textContent="",a.style.opacity="0",M[C].removeAttribute("aria-sort")}},l=(X)=>{b.style.transform=`translateX(${-X}px)`},$2=(X)=>{let _=X.target;if(!_.dataset.resizeIndex)return;if(X.preventDefault(),X.stopPropagation(),Z=parseInt(_.dataset.resizeIndex,10),!D)return;let O=D.getColumn(Z);if(!O||!O.resizable)return;K=!0,F=X.clientX,H=O.width,J.classList.add(`${$}--col-resizing`),J.style.cursor="col-resize",_.classList.add(`${$}-table-header-resize--active`),_.setPointerCapture(X.pointerId),_.addEventListener("pointermove",N2),_.addEventListener("pointerup",I),_.addEventListener("pointercancel",I)},N2=(X)=>{if(!K||!D)return;let _=X.clientX-F;if(Math.abs(_)<1)return;let O=Math.max(0,H+_);j(Z,O)},I=(X)=>{if(!K)return;let _=X.target;_.removeEventListener("pointermove",N2),_.removeEventListener("pointerup",I),_.removeEventListener("pointercancel",I);try{_.releasePointerCapture(X.pointerId)}catch{}_.classList.remove(`${$}-table-header-resize--active`),J.classList.remove(`${$}--col-resizing`),J.style.cursor="",K=!1,Z=-1},d=(X)=>{let _=X.target;if(_.dataset.resizeIndex!==void 0)return;if(K)return;let O=_;while(O&&!O.dataset.columnKey)if(O=O.parentElement,O===G||O===null)return;if(!O||!O.dataset.columnKey)return;let C=O.dataset.columnKey;if(!D)return;let a=D.columns,i=-1;for(let W=0;W<a.length;W++)if(a[W].def.key===C){i=W;break}if(i===-1)return;let y=a[i];if(Y)Y({key:C,index:i,event:X});if(y.def.sortable&&q){let W;if(v===C)if(V==="asc")W="desc";else W=null;else W="asc";q({key:C,index:i,direction:W})}};return G.addEventListener("pointerdown",$2),G.addEventListener("click",d),{element:G,update:g,updateSort:n,rebuild:c,show:()=>{if(L)return;L=!0,G.style.display=""},hide:()=>{if(!L)return;L=!1,G.style.display="none"},destroy:()=>{G.removeEventListener("pointerdown",$2),G.removeEventListener("click",d),J.style.removeProperty("--vlist-table-header-height"),B.remove(),M=[],U=[],E=[],D=null,L=!1},syncScroll:l}};var pJ=()=>{let J=[];return{acquire:()=>J.pop()||document.createElement("div"),release:(Q)=>{if(Q.parentNode?.removeChild(Q),J.length<200)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",J.push(Q)},clear:()=>{J.length=0}}},ZJ=(J,Q,$,j,q,Y,B,G,b)=>{let M=pJ(),U=new Map,E=-1,L=$,v=null,V=null,D=null,K=(A,k)=>{V=A,D=k},Z=(A,k)=>{if(k)A.setAttribute("aria-selected","true");else A.removeAttribute("aria-selected")},F=(A,k,f,m)=>{A.setAttribute("role",k),A.setAttribute("data-id",String(f)),A.setAttribute("data-index",String(m))},H=(A)=>String(A).startsWith("__placeholder_"),P=`${q}-item ${q}-table-row`,c=`${q}-item--selected`,g=`${q}-item--focused`,n=`${q}-table-cell`,l=`${q}-table-cell--center`,$2=`${q}-table-cell--right`,N2=`${q}-item--odd`,I=`${q}-item--placeholder`,d=`${q}-item--replaced`,Y2=`${q}-item ${q}-table-row ${q}-table-group-header`,J2=`${q}-table-group-header-content`,R=(A,k,f,m,r=!1)=>{if(f.def.cell){let h=f.def.cell(k,f.def,m);if(typeof h==="string")A.innerHTML=h;else A.replaceChildren(h)}else{let h=k[f.def.key],e=h!=null?String(h):"";if(r&&e)A.innerHTML=`<span>${e}</span>`;else A.textContent=e}},X=(A,k,f,m,r=!1)=>{let h=P;if(G){if(v){let e=v(k);if(e>=0&&(e&1)===1)h+=` ${N2}`}else if((k&1)===1)h+=` ${N2}`}if(r)h+=` ${I}`;if(f)h+=` ${c}`;if(m)h+=` ${g}`;A.className=h},_=(A,k,f)=>{if(f?.compression?.isCompressed)return Math.round(F2(A,f.scrollPosition,k,f.totalItems,f.containerSize,f.compression,f.rangeStart));return k.getOffset(A)},O=(A,k)=>{let f=k.def.align;if(f==="center")A.classList.add(l),A.classList.remove($2);else if(f==="right")A.classList.add($2),A.classList.remove(l);else A.classList.remove(l,$2)},C=(A,k)=>{let m=L.columns.length;if(k.length===m)return k;let r=[];for(let h=0;h<m;h++){let e;if(h<k.length)e=k[h];else e=document.createElement("div"),e.className=n,A.appendChild(e);r.push(e)}for(let h=m;h<k.length;h++)k[h].remove();return r},a=(A,k,f,m)=>{let r=M.acquire(),h=A,e=f.getSize(k),w=_(k,f,m);r.style.cssText=`width:${L.totalWidth}px;height:${e}px;transform:translateY(${w}px)`,r.className=Y2,F(r,"presentation",A.id,k),r.removeAttribute("aria-selected"),r.removeAttribute("aria-rowindex"),r.replaceChildren();let p=document.createElement("div");if(p.className=J2,D){let x=D(h.groupKey,h.groupIndex);if(typeof x==="string")p.innerHTML=x;else p.appendChild(x)}return r.appendChild(p),{element:r,cells:[],index:k,isGroupHeader:!0,lastItemId:A.id,lastSelected:!1,lastFocused:!1,lastOffset:w,lastHeight:e}},i=(A,k,f,m,r,h)=>{let e=M.acquire(),w=r.getSize(k),p=_(k,r,h),x=H(A.id);e.style.cssText=`width:${L.totalWidth}px;height:${w}px;transform:translateY(${p}px)`,X(e,k,f,m,x),F(e,"row",A.id,k),e.id=`${Y}-${k}`,e.setAttribute("aria-rowindex",String(k+2)),Z(e,f);let B2=C(e,[]),Q2=L.columns;for(let q2=0;q2<B2.length&&q2<Q2.length;q2++){let Z2=B2[q2],_2=Q2[q2];Z2.style.cssText=`left:${_2.offset}px;width:${_2.width}px`,Z2.setAttribute("role","gridcell"),Z2.setAttribute("aria-colindex",String(q2+1)),O(Z2,_2),R(Z2,A,_2,k,x)}return{element:e,cells:B2,index:k,isGroupHeader:!1,lastItemId:A.id,lastSelected:f,lastFocused:m,lastOffset:p,lastHeight:w}},y=(A,k,f,m,r)=>{for(let[x,B2]of U)if(x<k.start||x>k.end)M.release(B2.element),U.delete(x);let h=!1,e=B();if(e!==E)E=e,h=!0;let w=null,p=Q();v=typeof G==="string"&&b?b():null;for(let x=k.start;x<=k.end;x++){let B2=x-k.start,Q2=A[B2];if(!Q2)continue;let q2=f.has(Q2.id),Z2=x===m,_2=V?V(Q2):!1,s=U.get(x);if(s){if(s.isGroupHeader!==_2){M.release(s.element),U.delete(x);let X2=_2?a(Q2,x,p,r):i(Q2,x,q2,Z2,p,r);if(U.set(x,X2),!w)w=document.createDocumentFragment();w.appendChild(X2.element);continue}if(_2){if(s.lastItemId!==Q2.id){let K2=Q2,j2=s.element.firstElementChild;if(j2&&D){let D2=D(K2.groupKey,K2.groupIndex);if(typeof D2==="string")j2.innerHTML=D2;else j2.replaceChildren(D2)}s.element.setAttribute("data-id",String(Q2.id)),s.lastItemId=Q2.id}let o=_(x,p,r);if(s.lastOffset!==o)s.lastOffset=o,s.element.style.transform=`translateY(${o}px)`;let U2=p.getSize(x);if(s.lastHeight!==U2)s.lastHeight=U2,s.element.style.height=`${U2}px`}else{let X2=s.lastItemId!==Q2.id,o=s.lastSelected!==q2,U2=s.lastFocused!==Z2;if(X2){let D2=s.lastItemId!=null&&H(s.lastItemId),G2=H(Q2.id);if(!G2&&A2(f,x,Q2.id))q2=!0;let V2=L.columns;for(let E2=0;E2<s.cells.length&&E2<V2.length;E2++)R(s.cells[E2],Q2,V2[E2],x,G2);if(X(s.element,x,q2,Z2,G2),s.element.setAttribute("data-id",String(Q2.id)),Z(s.element,q2),D2&&!G2)s.element.classList.add(d),setTimeout(()=>{s.element.classList.remove(d)},300);s.lastItemId=Q2.id,s.lastSelected=q2,s.lastFocused=Z2}else if(o||U2)X(s.element,x,q2,Z2,H(Q2.id)),Z(s.element,q2),s.lastSelected=q2,s.lastFocused=Z2;let K2=_(x,p,r);if(s.lastOffset!==K2)s.lastOffset=K2,s.element.style.transform=`translateY(${K2}px)`;let j2=p.getSize(x);if(s.lastHeight!==j2)s.lastHeight=j2,s.element.style.height=`${j2}px`;if(h)s.element.setAttribute("aria-rowindex",String(x+2))}}else{if(A2(f,x,Q2.id))q2=!0;let X2=_2?a(Q2,x,p,r):i(Q2,x,q2,Z2,p,r);if(U.set(x,X2),!w)w=document.createDocumentFragment();w.appendChild(X2.element)}}if(w)J.appendChild(w)},W=(A)=>{let k=Q();for(let[f,m]of U){let r=_(f,k,A);if(m.lastOffset!==r)m.lastOffset=r,m.element.style.transform=`translateY(${r}px)`}},N=(A,k,f,m)=>{let r=U.get(A);if(!r)return;if(r.isGroupHeader)return;let h=L.columns;for(let e=0;e<r.cells.length&&e<h.length;e++)R(r.cells[e],k,h[e],A);r.element.setAttribute("data-id",String(k.id)),r.lastItemId=k.id,X(r.element,A,f,m),Z(r.element,f),r.lastSelected=f,r.lastFocused=m},S=(A,k,f)=>{let m=U.get(A);if(!m)return;if(m.isGroupHeader)return;let r=m.lastSelected!==k,h=m.lastFocused!==f;if(r||h)X(m.element,A,k,f),Z(m.element,k),m.lastSelected=k,m.lastFocused=f},u=(A)=>{L=A;let k=A.columns;for(let[,f]of U)if(f.element.style.width=`${A.totalWidth}px`,f.cells.length>0)for(let m=0;m<f.cells.length&&m<k.length;m++){let r=f.cells[m],h=k[m];r.style.left=`${h.offset}px`,r.style.width=`${h.width}px`}},T=(A)=>{return U.get(A)?.element},z=()=>{for(let[,A]of U)M.release(A.element);U.clear(),E=-1};return{render:y,updatePositions:W,updateItem:N,updateItemClasses:S,getElement:T,updateColumnLayout:u,setGroupHeaderFn:K,clear:z,destroy:()=>{z(),M.clear()}}};var GJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.containerSize,q=0,Y=[],B=()=>{let K=(Q-1)*$;q=Math.max(0,(j-K)/Q),Y=Array(Q);let Z=q+$;for(let F=0;F<Q;F++)Y[F]=F*Z};B();let G=[],b=0,M=[],U=(K)=>{let Z=0,F=K[0];for(let H=1;H<K.length;H++){let P=K[H];if(P<F)F=P,Z=H}return Z},E=(K,Z)=>{if(K<=0)return b=0,G=[],[];let F=Array(Q).fill(0),H=Array(Q);for(let g=0;g<Q;g++)H[g]=[];let P=Array(K);for(let g=0;g<K;g++){let n=U(F),l=Z(g),$2=F[n];P[g]={index:g,x:Y[n],y:$2,lane:n,size:l,crossSize:q},H[n].push(g),F[n]=$2+l+$}G=H;let c=0;for(let g=0;g<Q;g++){let n=F[g],l=n>0?n-$:0;if(l>c)c=l}return b=c,P},L=(K)=>{if(K.length===0)return b>0?b:0;if(b>0)return b;let Z=Array(Q).fill(0);for(let H of K){let P=H.y+H.size,c=Z[H.lane];if(P>c)Z[H.lane]=P}let F=0;for(let H=0;H<Q;H++)if(Z[H]>F)F=Z[H];return F},v=(K,Z,F)=>{if(K.length===0||F<=Z)return M.length=0,M;if(G.length===0||G.length!==Q)return V(K,Z,F);M.length=0;for(let H=0;H<Q;H++){let P=G[H],c=P.length;if(c===0)continue;let g=0,n=c;while(g<n){let l=g+n>>>1,$2=K[P[l]];if($2.y+$2.size<=Z)g=l+1;else n=l}for(let l=g;l<c;l++){let $2=K[P[l]];if($2.y>=F)break;M.push($2)}}return M},V=(K,Z,F)=>{let H=[];for(let P of K)if(P.y+P.size>Z&&P.y<F)H.push(P);return H};return{get columns(){return Q},get gap(){return $},get containerSize(){return j},update:(K)=>{let Z=!1;if(K.columns!==void 0){let F=Math.max(1,Math.floor(K.columns));if(F!==Q)Q=F,Z=!0}if(K.gap!==void 0&&K.gap!==$)$=K.gap,Z=!0;if(K.containerSize!==void 0&&K.containerSize!==j)j=K.containerSize,Z=!0;if(Z)B()},calculateLayout:E,getTotalSize:L,getVisibleItems:v}};var hJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-lane"),Q.push(Y)},clear:()=>{Q.length=0}}},xJ=1,_J=(J,Q,$,j=!1,q,Y)=>{let B=hJ(),G=new Map,b=new Set,M=0,U="",E=-1,L={selected:!1,focused:!1},v=(I,d)=>{return L.selected=I,L.focused=d,L},V=`${$}-item ${$}-masonry-item`,D=`${$}-item--selected`,K=`${$}-item--focused`,Z=(I,d)=>{if(typeof d==="string")I.innerHTML=d;else I.replaceChildren(d)},F=(I,d,Y2)=>{I.classList.toggle(D,d),I.classList.toggle(K,Y2)},H=(I,d)=>{if(j)I.style.transform=`translate(${Math.round(d.y)}px, ${Math.round(d.x)}px)`;else I.style.transform=`translate(${Math.round(d.x)}px, ${Math.round(d.y)}px)`},P=(I,d)=>{if(j)I.style.width=`${d.size}px`,I.style.height=`${d.crossSize}px`;else I.style.width=`${d.crossSize}px`,I.style.height=`${d.size}px`},c=(I,d,Y2,J2,R)=>{let X=B.acquire(),_=v(J2,R);if(X.className=V,X.dataset.index=String(I),X.dataset.id=String(d.id),X.dataset.lane=String(Y2.lane),X.ariaSelected=String(J2),Y)X.id=`${Y}-item-${I}`;if(q){let C=q();if(C!==E)E=C,U=String(C);X.setAttribute("aria-setsize",U),X.setAttribute("aria-posinset",String(I+1))}P(X,Y2);let O=Q(d,I,_);return Z(X,O),F(X,J2,R),H(X,Y2),{element:X,lastItemId:d.id,lastSelected:J2,lastFocused:R,lastY:Y2.y,lastX:Y2.x,lastSize:Y2.size,lastCrossSize:Y2.crossSize,lastSeenFrame:M}},g=(I,d,Y2,J2)=>{M++,b.clear();for(let X=0;X<d.length;X++)b.add(d[X].index);for(let[X,_]of G)if(b.has(X))_.lastSeenFrame=M;else if(M-_.lastSeenFrame>xJ)B.release(_.element),G.delete(X);let R=null;for(let X=0;X<d.length;X++){let _=d[X],O=_.index,C=I(O);if(!C)continue;let a=Y2.has(C.id),i=O===J2,y=G.get(O);if(y){let W=y.lastItemId!==C.id,N=y.lastSelected!==a,S=y.lastFocused!==i,u=y.lastY!==_.y||y.lastX!==_.x,T=y.lastSize!==_.size||y.lastCrossSize!==_.crossSize;if(W){let z=v(a,i),t=Q(C,O,z);Z(y.element,t),y.element.dataset.id=String(C.id),y.lastItemId=C.id}if(W||N||S)F(y.element,a,i),y.element.ariaSelected=String(a),y.lastSelected=a,y.lastFocused=i;if(T)P(y.element,_),y.lastSize=_.size,y.lastCrossSize=_.crossSize;if(u)H(y.element,_),y.lastY=_.y,y.lastX=_.x}else{let W=c(O,C,_,a,i);if(!R)R=document.createDocumentFragment();R.appendChild(W.element),G.set(O,W)}}if(R)J.appendChild(R)},n=()=>{for(let{element:I}of G.values())B.release(I);G.clear(),J.innerHTML=""};return{render:g,getElement:(I)=>G.get(I)?.element,updateItemClasses:(I,d,Y2)=>{let J2=G.get(I);if(!J2)return;let R=J2.lastSelected!==d,X=J2.lastFocused!==Y2;if(R||X)F(J2.element,d,Y2),J2.lastSelected=d,J2.lastFocused=Y2},sortDOM:()=>{R2(J,G.keys(),(I)=>G.get(I)?.element)},clear:n,destroy:()=>{n(),B.clear()}}};var DJ=(J,Q)=>{let $=new Map,j=(Y)=>{let B=$.get(Y);return B!==void 0?B:J},q=L2(j,Q);return{getOffset(Y){return q.getOffset(Y)},getSize(Y){return j(Y)},indexAtOffset(Y){return q.indexAtOffset(Y)},getTotalSize(){return q.getTotalSize()},getTotal(){return q.getTotal()},rebuild(Y){if(Y<q.getTotal()){for(let B of $.keys())if(B>=Y)$.delete(B)}q=L2(j,Y)},isVariable(){return!0},setMeasuredSize(Y,B){$.set(Y,B)},isMeasured(Y){return $.has(Y)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var VJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;let B=$.indexAtOffset(J),G=$.indexAtOffset(J+Q);if(G<j-1)G++;return Y.start=Math.max(0,B),Y.end=Math.min(j-1,Math.max(0,G)),Y},WJ=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},MJ=(J,Q,$,j,q,Y)=>{if(j===0)return 0;let B=Math.max(0,Math.min(J,j-1)),G=Q.getOffset(B),b=Q.getSize(B),M=Q.getTotalSize(),U=Math.max(0,M-$),E;switch(Y){case"center":E=G-$/2+b/2;break;case"end":E=G-$+b;break;case"start":default:E=G;break}return Math.max(0,Math.min(E,U))},OJ=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},EJ=(J,Q)=>{return Q.getTotalSize()},AJ=(J,Q)=>{return Q.getOffset(J)},FJ=(J,Q,$)=>{let j=Math.max(0,Q-$);return Math.max(0,Math.min(J,j))};var LJ=(J,Q,$,j,q="start",Y,B=MJ)=>{return B(J,Q,$,j,Y,q)},HJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},bJ=(J,Q)=>{return J>=Q.start&&J<=Q.end},TJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var RJ=(J,Q)=>{let $=[],j=[];for(let q=J.start;q<=J.end;q++)if(q<Q.start||q>Q.end)j.push(q);for(let q=Q.start;q<=Q.end;q++)if(q<J.start||q>J.end)$.push(q);return{add:$,remove:j}};var yJ=()=>{let J={},Q=(Y,B)=>{if(!J[Y])J[Y]=new Set;return J[Y].add(B),()=>$(Y,B)},$=(Y,B)=>{J[Y]?.delete(B)};return{on:Q,off:$,emit:(Y,B)=>{J[Y]?.forEach((G)=>{try{G(B)}catch(b){console.error(`[vlist] Error in event handler for "${String(Y)}":`,b)}})},clear:(Y)=>{if(Y)delete J[Y];else for(let B in J)delete J[B]}}};var y2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:j=200,onEvict:q}=J,Y=new Map,B=0,G=0,b=(R)=>{let X=Y.get(R);if(!X)X={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(R,X);else X.lastAccess=Date.now();return X},M=(R)=>{return Math.floor(R/Q)},U=(R)=>{return R%Q},E=()=>B,L=(R)=>{B=R},v=(R)=>{if(R<0||R>=B)return;let X=M(R),_=Y.get(X);if(!_)return;return _.items[U(R)]},V=(R)=>{if(R<0||R>=B)return!1;let X=M(R),_=Y.get(X);if(!_)return!1;return _.items[U(R)]!==void 0},D=(R,X)=>{let _=M(R),O=b(_),C=U(R),a=O.items[C]===void 0;if(O.items[C]=X,a)O.count++,G++;if(R>=B)B=R+1},K=(R,X)=>{for(let _=0;_<X.length;_++){let O=X[_];if(O!==void 0)D(R+_,O)}},Z=(R)=>{if(R<0||R>=B)return!1;let X=M(R),_=Y.get(X),O=U(R);if(!(_!==void 0&&_.items[O]!==void 0))return!1;let a=X,i=Array.from(Y.keys()).filter((W)=>W>=a).sort((W,N)=>W-N),y=[];for(let W of i){let N=Y.get(W),S=W*Q;for(let u=0;u<Q;u++){if(N.items[u]===void 0)continue;let T=S+u;if(T<=R)continue;y.push({oldIndex:T,item:N.items[u]})}}if(_.items[O]=void 0,_.count--,G--,_.count===0)Y.delete(X);for(let{oldIndex:W}of y){let N=M(W),S=Y.get(N);if(!S)continue;let u=U(W);if(S.items[u]!==void 0){if(S.items[u]=void 0,S.count--,G--,S.count===0)Y.delete(N)}}for(let{oldIndex:W,item:N}of y){let S=W-1,u=M(S),T=b(u),z=U(S);T.items[z]=N,T.count++,G++}return B--,!0},F=(R,X)=>{let _=[];for(let O=R;O<=X&&O<B;O++)_.push(v(O));return _},H=(R,X)=>{for(let _=R;_<=X&&_<B;_++)if(!V(_))return!1;return!0},P=()=>{let R=[],X=null,_=Array.from(Y.keys()).sort((O,C)=>O-C);for(let O of _){let C=Y.get(O);if(!C)continue;let a=O*Q;for(let i=0;i<Q;i++){let y=a+i;if(y>=B)break;if(C.items[i]!==void 0)if(X===null)X={start:y,end:y};else if(y===X.end+1)X.end=y;else R.push(X),X={start:y,end:y};else if(X!==null)R.push(X),X=null}}if(X!==null)R.push(X);return R},c=(R,X)=>{let _=[],O=null;for(let C=R;C<=X&&C<B;C++)if(!V(C))if(O===null)O={start:C,end:C};else O.end=C;else if(O!==null)_.push(O),O=null;if(O!==null)_.push(O);return _},g=(R)=>{return Y.has(R)},n=(R)=>{let X=Y.get(R);if(X)X.lastAccess=Date.now()},l=(R,X)=>{if(R>X||Y.size===0)return;let _=Date.now(),O=M(Math.max(0,R)),C=M(Math.min(B-1,X));for(let a=O;a<=C;a++){let i=Y.get(a);if(i)i.lastAccess=_}},$2=(R,X)=>{if(G<=$)return 0;let _=Math.max(0,R-j),O=Math.min(B-1,X+j),C=M(_),a=M(O),i=0,y=[];for(let[W,N]of Y)if(W<C||W>a)i+=N.count,y.push(W),G-=N.count,Y.delete(W);if(i>0&&q)q(i,y);return i},N2=()=>{if(G<=$)return 0;let R=Array.from(Y.entries()).sort(([,O],[,C])=>O.lastAccess-C.lastAccess),X=0,_=[];for(let[O,C]of R){if(G<=$)break;X+=C.count,G-=C.count,_.push(O),Y.delete(O)}if(X>0&&q)q(X,_);return X},I=()=>{return{totalItems:B,cachedItems:G,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:B>0?1-G/B:1}},d=()=>G,Y2=()=>{Y.clear(),G=0};return{chunkSize:Q,maxCachedItems:$,getTotal:E,setTotal:L,get:v,has:V,set:D,setRange:K,delete:Z,getRange:F,isRangeLoaded:H,getLoadedRanges:P,findUnloadedRanges:c,getChunkIndex:M,isChunkLoaded:g,touchChunk:n,touchChunksForRange:l,evictDistant:$2,evictToLimit:N2,getStats:I,getCachedCount:d,clear:Y2,reset:()=>{Y2(),B=0}}},P2=(J)=>{if(J.length===0)return[];let Q=[...J].sort((j,q)=>j.start-q.start),$=[{...Q[0]}];for(let j=1;j<Q.length;j++){let q=Q[j],Y=$[$.length-1];if(q.start<=Y.end+1)Y.end=Math.max(Y.end,q.end);else $.push({...q})}return $},b2=(J,Q,$)=>{let j=Math.floor(J.start/$)*$,q=Math.ceil((J.end+1)/$)*$-1,Y={start:j,end:q};if(Q.length===0)return[Y];let B=[],G=P2(Q),b=Y.start;for(let M of G){if(M.end<b)continue;if(M.start>Y.end)break;if(M.start>b)B.push({start:b,end:Math.min(M.start-1,Y.end)});if(b=M.end+1,b>Y.end)break}if(b<=Y.end)B.push({start:b,end:Y.end});return B};var k2=(J={})=>{let{maskCharacter:Q=l2,maxSampleSize:$=a2}=J,j=[],q=!1,Y=(U)=>{if(q||U.length===0)return;let E=Math.min(U.length,$);for(let L=0;L<E;L++){let v=U[L];if(!v||typeof v!=="object")continue;let V={};for(let[D,K]of Object.entries(v)){if(D.startsWith("_")||D==="id")continue;V[D]=String(K??"").length}if(Object.keys(V).length>0)j.push(V)}q=!0},B=()=>q,G=(U)=>{let E={id:`${M2}${U}`,[C2]:!0,_index:U};if(j.length===0)return E.label=Q.repeat(12),E;let L=j[U%j.length];for(let[v,V]of Object.entries(L))E[v]=Q.repeat(Math.max(1,V));return E};return{analyzeStructure:Y,hasAnalyzedStructure:B,generate:G,generateRange:(U,E)=>{let L=[];for(let v=U;v<=E;v++)L.push(G(v));return L},clear:()=>{j=[],q=!1}}},O2=(J)=>{if(!J||typeof J!=="object")return!1;return J[C2]===!0},h2=(J)=>{return J.filter((Q)=>!O2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:j,storage:q,placeholder:Y,pageSize:B=uJ,onStateChange:G,onItemsLoaded:b,onItemsEvicted:M}=J,U=y2({...q,onEvict:(w,p)=>{M?.(w),l()}}),E=null,L=()=>{if(!E)E=k2(Y);return E},v=new Map,V=!1,D,K=!0,Z,F,H=[],P=0,c=new Map,g=new Map,n=()=>{for(let w of g.values())w.abort();g.clear(),c.clear()},l=()=>{G?.(_())},$2=()=>{v.clear();let w=U.getLoadedRanges();for(let p of w)for(let x=p.start;x<=p.end;x++){let B2=U.get(x);if(B2&&!O2(B2))v.set(B2.id,x)}},N2=(w,p)=>{if(!O2(p))v.set(p.id,w)},I=(w)=>{v.delete(w)},d=(w,p)=>{return`${w}-${p}`},Y2=()=>U.getTotal(),J2=()=>U.getCachedCount(),R=()=>V,X=()=>K,_=()=>({total:U.getTotal(),cached:U.getCachedCount(),isLoading:V,pendingRanges:H,error:D,hasMore:K,cursor:Z}),O=()=>U,C=()=>L(),a=(w)=>{let p=U.get(w);if(p!==void 0)return p;if(w>=0&&w<U.getTotal())return L().generate(w);return},i=(w)=>{let p=v.get(w);if(p===void 0)return;return U.get(p)},y=(w)=>{return v.get(w)??-1},W=(w)=>{let p=U.get(w);return p!==void 0&&!O2(p)},N=(w,p)=>{let x=[],B2=U.getTotal(),Q2=0,q2=0;U.touchChunksForRange(w,Math.min(p,B2-1));for(let Z2=w;Z2<=p&&Z2<B2;Z2++){let _2=U.get(Z2);if(_2!==void 0)x.push(_2),Q2++;else x.push(L().generate(Z2)),q2++}return x},S=(w)=>{U.setTotal(w),K=U.getCachedCount()<w,l()},u=(w,p=0,x)=>{if(Q&&w.length>0){let B2=L();if(!B2.hasAnalyzedStructure())B2.analyzeStructure(w)}for(let B2=0;B2<w.length;B2++){let Q2=w[B2];if(Q2!==void 0){let q2=p+B2;U.set(q2,Q2),N2(q2,Q2)}}if(x!==void 0)U.setTotal(x);else if(p+w.length>U.getTotal())U.setTotal(p+w.length);if(U.getCachedCount()>=U.getTotal()&&U.getTotal()>0)K=!1;l(),b?.(w,p,U.getTotal())},T=(w,p)=>{let x=U.get(w);if(!x)return!1;let B2=x.id,Q2={...x,...p};if(U.set(w,Q2),p.id!==void 0&&p.id!==B2)I(B2);return N2(w,Q2),l(),!0},z=(w)=>{let p=v.get(w);if(p===void 0)return!1;if(!U.delete(p))return!1;return $2(),n(),l(),!0},t=async(w,p)=>{if(!Q)return;let x=d(w,p);if(c.has(x))return;let B2=U.getLoadedRanges(),Q2=b2({start:w,end:p},B2,U.chunkSize);if(Q2.length===0)return;let q2=U.chunkSize,Z2=q2*2;for(let[X2,o]of g){let U2=X2.indexOf("-"),K2=parseInt(X2.slice(0,U2),10);if(Math.abs(K2-w)>Z2)o.abort(),g.delete(X2),c.delete(X2)}let _2=[];for(let X2 of Q2){let o=Math.floor(X2.start/q2),U2=Math.floor(X2.end/q2);for(let K2=o;K2<=U2;K2++){let j2=K2*q2,D2=j2+q2-1,G2=d(j2,D2);if(!_2.some((V2)=>V2.start===j2)&&!c.has(G2))_2.push({start:j2,end:D2})}}let s=[];for(let X2 of Q2){let o=Math.floor(X2.start/q2),U2=Math.floor(X2.end/q2);for(let K2=o;K2<=U2;K2++){let j2=K2*q2,D2=j2+q2-1,G2=d(j2,D2);if(c.has(G2)){let V2=c.get(G2);if(!s.includes(V2))s.push(V2)}}}for(let X2 of _2){let o=d(X2.start,X2.end),U2=new AbortController;g.set(o,U2);let K2=(async()=>{H.push(X2),V=!0,D=void 0,l();try{let j2=X2.end-X2.start+1,D2={offset:X2.start,limit:j2,cursor:X2.start===F?Z:void 0,signal:U2.signal},G2=await Q.read(D2);if(u(G2.items,X2.start,G2.total),G2.cursor)Z=G2.cursor,F=X2.start+G2.items.length;let V2=X2.start+G2.items.length;if(V2>=P){if(P=V2,G2.hasMore!==void 0)K=G2.hasMore;else if(G2.total!==void 0)K=V2<G2.total}}catch(j2){if(j2?.name==="AbortError")return;D=j2 instanceof Error?j2:Error(String(j2))}finally{c.delete(o),g.delete(o),H=H.filter((j2)=>j2.start!==X2.start||j2.end!==X2.end),V=c.size>0,l()}})();c.set(o,K2),s.push(K2)}await Promise.all(s)},A=async(w,p)=>{if(U.isRangeLoaded(w,p))return;await t(w,p)},k=async()=>{if(!Q)return;await t(0,B-1)},f=async()=>{if(!Q||V||!K)return!1;let w=U.getCachedCount(),p=U.getTotal(),x=w,B2=Math.min(x+B-1,p>0?p-1:x+B-1);if(x>=p&&p>0)return K=!1,!1;return await t(x,B2),U.getCachedCount()>w},m=async()=>{if(U.clear(),U.setTotal(0),v.clear(),E)E.clear();n(),H=[],V=!1,Z=void 0,F=void 0,K=!0,P=0,D=void 0,l()},r=(w,p)=>{if(U.evictDistant(w,p)>0)$2()},h=()=>{U.clear(),v.clear(),Z=void 0,F=void 0,D=void 0,H=[],V=!1,l()},e=()=>{if(U.reset(),v.clear(),E)E.clear();Z=void 0,F=void 0,K=!0,P=0,D=void 0,H=[],V=!1,l()};if($&&$.length>0)u($,0,j??$.length);else if(j!==void 0)U.setTotal(j),l();return{getState:_,getTotal:Y2,getCached:J2,getIsLoading:R,getHasMore:X,getStorage:O,getPlaceholders:C,getItem:a,getItemById:i,getIndexById:y,isItemLoaded:W,getItemsInRange:N,setTotal:S,setItems:u,updateItem:T,removeItem:z,loadRange:t,ensureRange:A,loadInitial:k,loadMore:f,reload:m,evictDistant:r,clear:h,reset:e}};var kJ=(J=0)=>{let Q=[,,,,,,,,];for(let $=0;$<8;$++)Q[$]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},z2=(J,Q)=>{let $=performance.now(),j=$-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=$,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=$,J}let q=J.samples[J.sampleIndex];if(q.position=Q,q.time=$,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let Y=(J.sampleIndex-J.sampleCount+8)%8,B=J.samples[Y],G=Q-B.position,b=$-B.time;J.velocity=b>0?G/b:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,zJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:j=1,smoothing:q=!1,idleTimeout:Y=150,onScroll:B,onIdle:G,scrollElement:b,horizontal:M=!1}=Q,U=!!b,E=0,L=0,v=U?M?window.innerWidth:window.innerHeight:M?J.clientWidth:J.clientHeight,V=Q.compressed??!1,D=Q.compression,K=kJ(),Z=!1,F=null,P=w2(()=>{let T=M?J.scrollLeft:J.scrollTop,z=T>=E?"down":"up";if(K=z2(K,T),E=T,B)B({scrollTop:E,direction:z,velocity:K.velocity});N2()}),g=w2(()=>{let T=J.getBoundingClientRect(),z=M?Math.max(0,-T.left):Math.max(0,-T.top),t=z>=E?"down":"up";if(K=z2(K,z),E=z,!Z)Z=!0;if(B)B({scrollTop:E,direction:t,velocity:K.velocity});N2()}),n=(T)=>{T.preventDefault()},l=(T)=>{if(T.deltaX)return;T.preventDefault(),J.scrollLeft+=T.deltaY},$2=(T)=>{if(!V)return;T.preventDefault();let z=(M?T.deltaX||T.deltaY:T.deltaY)*j,t=E+z;if(q)t=E+z*0.3;if(t=Math.max(0,Math.min(t,L)),t!==E){let k=t>=E?"down":"up";if(K=z2(K,t),E=t,!Z)Z=!0;if(B)B({scrollTop:E,direction:k,velocity:K.velocity});N2()}},N2=()=>{if(F)clearTimeout(F);F=setTimeout(()=>{if(Z=!1,K=kJ(E),G)G()},Y)},I=(T)=>{if(V)return;if(V=!0,D=T,L=T.virtualSize-v,U)return;if(P.cancel(),J.removeEventListener("scroll",P),!$)J.removeEventListener("wheel",n);else if(M)J.removeEventListener("wheel",l);if(M)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",$2,{passive:!1});let z=M?J.scrollLeft:J.scrollTop;if(z>0){let t=M?D?.actualSize??J.scrollWidth:D?.actualSize??J.scrollHeight;E=z/t*L}if(M)J.scrollLeft=0;else J.scrollTop=0},d=()=>{if(!V)return;if(V=!1,U){D=void 0;return}if(J.removeEventListener("wheel",$2),M)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",n,{passive:!1});else if(M)J.addEventListener("wheel",l,{passive:!1});if(D&&E>0){let z=E/L*(D.actualSize-v);if(M)J.scrollLeft=z;else J.scrollTop=z}D=void 0},Y2=()=>{if(U||V)return E;return M?J.scrollLeft:J.scrollTop},J2=(T,z=!1)=>{let t=Math.max(0,Math.min(T,L||1/0));if(U){let A=J.getBoundingClientRect();if(M){let k=A.left+window.scrollX;window.scrollTo({left:k+t,behavior:z?"smooth":"auto"})}else{let k=A.top+window.scrollY;window.scrollTo({top:k+t,behavior:z?"smooth":"auto"})}}else if(V){if(t===E)return;let k=t>=E?"down":"up";if(K=z2(K,t),E=t,!Z)Z=!0;if(B)B({scrollTop:E,direction:k,velocity:K.velocity});N2()}else if(M)J.scrollTo({left:t,behavior:z?"smooth":"auto"});else J.scrollTo({top:t,behavior:z?"smooth":"auto"})},R=(T)=>{J2(Y2()+T)},X=()=>{return Y2()<=0},_=(T=0)=>{let z=Y2(),t=U||V?L:M?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return z>=t-T},O=()=>{let T=Y2(),z=U||V?L:M?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(z<=0)return 0;return Math.min(1,Math.max(0,T/z))},C=(T)=>{if(T.compression)D=T.compression,L=D.virtualSize-v},a=()=>V,i=()=>Math.abs(K.velocity),y=()=>mJ(K),W=()=>Z,N=()=>U,S=(T)=>{if(v=T,D)L=D.virtualSize-v},u=()=>{if(F)clearTimeout(F);if(U)g.cancel(),window.removeEventListener("scroll",g);else P.cancel(),J.removeEventListener("scroll",P),J.removeEventListener("wheel",$2),J.removeEventListener("wheel",n),J.removeEventListener("wheel",l)};if(U){if(V&&D)L=D.virtualSize-v;window.addEventListener("scroll",g,{passive:!0})}else if(V&&D){if(L=D.virtualSize-v,M)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",$2,{passive:!1})}else{if(M)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",n,{passive:!1});else if(M)J.addEventListener("wheel",l,{passive:!1})}return{getScrollTop:Y2,scrollTo:J2,scrollBy:R,isAtTop:X,isAtBottom:_,getScrollPercentage:O,getVelocity:i,isTracking:y,isScrolling:W,updateConfig:C,enableCompression:I,disableCompression:d,isCompressed:a,isWindowMode:N,updateContainerHeight:S,destroy:u}},w2=(J)=>{let Q=null,$=null,j=(...q)=>{if($=q,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,$)J(...$)})};return j.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},j};var dJ=(J)=>{if(typeof J!=="object"){let Q=J??2;return{top:Q,right:Q,bottom:Q,left:Q}}return{top:J.top??2,right:J.right??2,bottom:J.bottom??2,left:J.left??2}},wJ=(J,Q,$={},j="vlist",q=!1)=>{let{autoHide:Y=!0,autoHideDelay:B=1000,minThumbSize:G=15,showOnHover:b=!0,showOnViewportEnter:M=!0,clickBehavior:U="page"}=$,E=dJ($.padding),L=q?E.left:E.top,v=q?E.right:E.bottom,V=q?E.bottom:E.right,D=$.hoverZoneWidth??V+16,K=0,Z=0,F=0,H=0,P=!1,c=!1,g=0,n=0,l=0,$2=null,N2=!1,I=null,d=null,Y2=0,J2=0,R=null,X=null,_=null,O=q?"width":"height",C=q?"translateX":"translateY",a=q?(o)=>o.clientX:(o)=>o.clientY,i=q?"left":"top",y=document.createElement("div"),W=document.createElement("div"),N=document.createElement("div"),S=()=>{if(y.className=`${j}-scrollbar`,W.className=`${j}-scrollbar-thumb`,q)y.classList.add(`${j}-scrollbar--horizontal`);if($.padding!==void 0)J.style.setProperty("--vlist-custom-scrollbar-padding-top",`${E.top}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-right",`${E.right}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${E.bottom}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-left",`${E.left}px`);if($.minThumbSize!==void 0)y.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${G}px`);if(y.appendChild(W),J.appendChild(y),N.className=`${j}-scrollbar-hover`,q)N.classList.add(`${j}-scrollbar-hover--horizontal`),N.style.height=`${D}px`;else N.style.width=`${D}px`;J.appendChild(N)},u=()=>{if($2)clearTimeout($2),$2=null},T=()=>{if(!Y)return;u(),$2=setTimeout(t,B)},z=()=>{if(K<=Z)return;if(u(),!N2)y.classList.add(`${j}-scrollbar--visible`),N2=!0;if(Y&&!P&&!c)T()},t=()=>{if(P||c)return;y.classList.remove(`${j}-scrollbar--visible`),N2=!1},A=(o,U2)=>{K=o,Z=U2;let K2=K>Z;if(y.style.display=K2?"":"none",!K2){t();return}let j2=Math.max(0,Z-L-v),D2=Z/K;F=Math.max(G,D2*j2),W.style[O]=`${F}px`,H=j2-F,k(l)},k=(o)=>{if(l=o,K<=Z||H<=0)return;let U2=K-Z,j2=Math.min(1,Math.max(0,o/U2))*H;W.style.transform=`${C}(${j2}px)`},f=(o)=>{if(o.target===W||U!=="jump"||H<=0)return;let U2=K-Z,K2=y.getBoundingClientRect(),j2=a(o)-K2[i],D2=Math.max(0,Math.min(j2-F/2,H));Q(D2/H*U2),z()},m=()=>{if(R!==null)clearTimeout(R),R=null;if(X!==null)cancelAnimationFrame(X),X=null;_=null},r=(o)=>{let U2=H>0?J2/o*H:0;if(Y2<U2)return-1;if(Y2>=U2+F)return 1;return 0},h=()=>{let o=K-Z,U2=r(o);if(U2===0){m();return}if(U2===-1){if(J2<=0){m();return}let K2=Math.max(0,J2-Z);J2=K2,Q(K2)}else{if(J2>=o){m();return}let K2=Math.min(o,J2+Z);J2=K2,Q(K2)}z()},e=(o)=>{if(_===null){_=o,X=requestAnimationFrame(e);return}let U2=K-Z,K2=o-_;_=o;let j2=r(U2);if(j2===0){m();return}let D2=12*Z/1000,G2=Math.min(D2*K2,Z);if(j2===-1){if(J2<=0){m();return}let V2=Math.max(0,J2-G2);J2=V2,Q(V2)}else{if(J2>=U2){m();return}let V2=Math.min(U2,J2+G2);J2=V2,Q(V2)}u(),X=requestAnimationFrame(e)},w=()=>{m(),T(),document.removeEventListener("mouseup",w)},p=(o)=>{if(o.target===W||U!=="page")return;o.preventDefault();let U2=y.getBoundingClientRect();Y2=a(o)-U2[i],J2=l,h(),R=setTimeout(()=>{X=requestAnimationFrame(e)},350),document.addEventListener("mouseup",w)},x=(o)=>{o.preventDefault(),o.stopPropagation(),P=!0,g=a(o),n=l,u(),y.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",B2),document.addEventListener("mouseup",Q2)},B2=(o)=>{if(!P)return;let U2=a(o)-g,K2=H>0?U2/H:0,j2=K-Z,D2=K2*j2,G2=Math.max(0,Math.min(n+D2,j2)),E2=G2/j2*H;if(W.style.transform=`${C}(${E2}px)`,d=G2,I===null)I=requestAnimationFrame(()=>{if(d!==null)Q(d);I=null})},Q2=()=>{if(P=!1,I!==null)cancelAnimationFrame(I),I=null;if(d!==null)Q(d),d=null;if(y.classList.remove(`${j}-scrollbar--dragging`),Y&&!c)T();document.removeEventListener("mousemove",B2),document.removeEventListener("mouseup",Q2)},q2=()=>{if(M)z()},Z2=()=>{if(!P){if(c=!1,Y)T()}},_2=()=>{c=!0,u(),z()},s=()=>{if(c=!1,!P&&Y)T()},X2=()=>{if(u(),m(),I!==null)cancelAnimationFrame(I),I=null;if(y.removeEventListener("click",f),y.removeEventListener("mousedown",p),y.removeEventListener("mouseenter",_2),document.removeEventListener("mouseup",w),y.removeEventListener("mouseleave",s),W.removeEventListener("mousedown",x),J.removeEventListener("mouseenter",q2),J.removeEventListener("mouseleave",Z2),document.removeEventListener("mousemove",B2),document.removeEventListener("mouseup",Q2),N.removeEventListener("click",f),N.removeEventListener("mousedown",p),b)N.removeEventListener("mouseenter",_2),N.removeEventListener("mouseleave",s);if(N.parentNode)N.parentNode.removeChild(N);if(J.style.removeProperty("--vlist-custom-scrollbar-padding-top"),J.style.removeProperty("--vlist-custom-scrollbar-padding-right"),J.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),J.style.removeProperty("--vlist-custom-scrollbar-padding-left"),y.parentNode)y.parentNode.removeChild(y)};if(S(),y.addEventListener("click",f),y.addEventListener("mousedown",p),y.addEventListener("mouseenter",_2),y.addEventListener("mouseleave",s),W.addEventListener("mousedown",x),J.addEventListener("mouseenter",q2),J.addEventListener("mouseleave",Z2),N.addEventListener("click",f),N.addEventListener("mousedown",p),b)N.addEventListener("mouseenter",_2),N.addEventListener("mouseleave",s);return{show:z,hide:t,updateBounds:A,updatePosition:k,isVisible:()=>N2,destroy:X2}};var cJ=50,rJ=0.1;function lJ(J){let Q=0,$=0,j=0;function q(){return j>0?$/j:0}function Y(b){if(Q=b,b>rJ&&b<cJ)$+=b,j++}function B(){let b=J.getTotal();if(b===0)return 0;let M=J.getItemSize();if(M<=0)return 0;let U=J.getContainerSize();if(U<=0)return 0;let E=J.getScrollPosition(),L=typeof J.getColumns==="function"?J.getColumns():1,V=Math.ceil(b/L)*M,K=Math.min(V,W2)-U,Z=V-U,F=K>0?Z/K:1,H=E*F,P=Math.ceil((H+U)/M);return Math.min(P*L,b)}function G(){let b=J.getTotal(),M=B();return{progress:b>0?Math.min(100,Math.max(0,M/b*100)):0,velocity:Q,velocityAvg:q(),itemCount:M,total:b}}return{getState:G,onVelocity:Y}}export{n2 as toggleSelection,VJ as simpleVisibleRange,S2 as selectItems,o2 as selectAll,HJ as rangesEqual,w2 as rafThrottle,qJ as needsScaling,P2 as mergeRanges,t2 as isSelected,O2 as isPlaceholderItem,bJ as isInRange,T2 as isGroupHeader,JJ as getSelectedItems,e2 as getSelectedIds,H2 as getScaleState,KJ as getScaleInfo,H2 as getScale,TJ as getRangeCount,BJ as getMaxItemsWithoutScaling,h2 as filterPlaceholders,RJ as diffRanges,f2 as deselectItems,ZJ as createTableRenderer,UJ as createTableLayout,NJ as createTableHeader,c2 as createStickyHeader,lJ as createStats,y2 as createSparseStorage,L2 as createSizeCache,s2 as createSelectionState,wJ as createScrollbar,zJ as createScrollController,k2 as createPlaceholderManager,DJ as createMeasuredSizeCache,_J as createMasonryRenderer,GJ as createMasonryLayout,m2 as createGroupedSizeFn,d2 as createGroupLayout,XJ as createGridRenderer,r2 as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,i2 as clearSelection,FJ as clampScrollPosition,OJ as calculateTotalSize,LJ as calculateScrollToIndex,QJ as calculateScaledVisibleRange,YJ as calculateScaledScrollToIndex,$J as calculateScaledRenderRange,F2 as calculateScaledItemPosition,WJ as calculateRenderRange,b2 as calculateMissingRanges,AJ as calculateItemOffset,jJ as calculateIndexFromScrollPosition,EJ as calculateActualSize,u2 as buildLayoutItems,W2 as MAX_VIRTUAL_SIZE};
|
|
@@ -48,6 +48,8 @@ export interface DOMStructure {
|
|
|
48
48
|
viewport: HTMLElement;
|
|
49
49
|
content: HTMLElement;
|
|
50
50
|
items: HTMLElement;
|
|
51
|
+
/** Visually-hidden live region for screen reader announcements */
|
|
52
|
+
liveRegion: HTMLElement;
|
|
51
53
|
}
|
|
52
54
|
/** Renderer instance */
|
|
53
55
|
export interface Renderer<T extends VListItem = VListItem> {
|
package/dist/size.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"base":{"minified":"27.5","gzipped":"10.6"},"withGrid":{"minified":"39.5","gzipped":"14.
|
|
1
|
+
{"base":{"minified":"27.5","gzipped":"10.6"},"withGrid":{"minified":"39.5","gzipped":"14.5"},"withMasonry":{"minified":"37.1","gzipped":"14.0"},"withGroups":{"minified":"35.9","gzipped":"13.4"},"withAsync":{"minified":"40.5","gzipped":"15.3"},"withSelection":{"minified":"38.0","gzipped":"13.5"},"withScale":{"minified":"40.5","gzipped":"14.3"},"withScrollbar":{"minified":"33.6","gzipped":"12.4"},"withPage":{"minified":"29.8","gzipped":"11.4"},"withSnapshots":{"minified":"30.2","gzipped":"11.5"},"withTable":{"minified":"45.1","gzipped":"16.2"},"withSortable":{"minified":"36.8","gzipped":"13.5"},"withAutoSize":{"minified":"30.3","gzipped":"11.6"}}
|
package/dist/types.d.ts
CHANGED
|
@@ -226,6 +226,8 @@ export interface ScrollSnapshot {
|
|
|
226
226
|
total?: number;
|
|
227
227
|
/** Selected item IDs (optional, included for convenience) */
|
|
228
228
|
selectedIds?: Array<string | number>;
|
|
229
|
+
/** Focused item ID (optional, restores keyboard navigation position) */
|
|
230
|
+
focusedId?: string | number;
|
|
229
231
|
}
|
|
230
232
|
/** Options for scrollToIndex / scrollToItem */
|
|
231
233
|
export interface ScrollToOptions {
|
|
@@ -447,6 +449,11 @@ export interface VListEvents<T extends VListItem = VListItem> extends EventMap {
|
|
|
447
449
|
selected: Array<string | number>;
|
|
448
450
|
items: T[];
|
|
449
451
|
};
|
|
452
|
+
/** Focused item changed (keyboard navigation) */
|
|
453
|
+
"focus:change": {
|
|
454
|
+
id: string | number;
|
|
455
|
+
index: number;
|
|
456
|
+
};
|
|
450
457
|
/** Scroll position changed */
|
|
451
458
|
scroll: {
|
|
452
459
|
scrollPosition: number;
|
|
@@ -495,6 +502,25 @@ export interface VListEvents<T extends VListItem = VListItem> extends EventMap {
|
|
|
495
502
|
type: "update";
|
|
496
503
|
id: string | number;
|
|
497
504
|
};
|
|
505
|
+
/** Sort started — fired when a drag begins */
|
|
506
|
+
"sort:start": {
|
|
507
|
+
index: number;
|
|
508
|
+
};
|
|
509
|
+
/** Sort move — fired when the drop position changes during drag */
|
|
510
|
+
"sort:move": {
|
|
511
|
+
fromIndex: number;
|
|
512
|
+
currentIndex: number;
|
|
513
|
+
};
|
|
514
|
+
/** Sort ended — fired on drop with reorder intent */
|
|
515
|
+
"sort:end": {
|
|
516
|
+
fromIndex: number;
|
|
517
|
+
toIndex: number;
|
|
518
|
+
};
|
|
519
|
+
/** Sort cancelled — fired when keyboard reorder is cancelled via Escape.
|
|
520
|
+
* Contains the original items array so the consumer can restore order. */
|
|
521
|
+
"sort:cancel": {
|
|
522
|
+
originalItems: unknown[];
|
|
523
|
+
};
|
|
498
524
|
/** Destroy — fired just before the instance is torn down */
|
|
499
525
|
destroy: undefined;
|
|
500
526
|
}
|
package/dist/vlist-table.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.vlist--table{overflow:hidden;min-height:inherit}.vlist--table .vlist-viewport{overflow:auto}.vlist--table .vlist-items{contain:layout style}.vlist-table-header{position:absolute;top:0;left:0;right:0;z-index:5;overflow:hidden;display:flex;align-items:stretch;box-sizing:border-box;will-change:scroll-position;contain:layout style;background-color:var(--vlist-bg,#ffffff);border-bottom:1px solid var(--vlist-border,#e5e7eb);font-weight:600;font-size:0.8125rem;letter-spacing:0.01em;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-scroll{position:relative;display:flex;align-items:stretch;height:100%;min-width:100%;flex-shrink:0}.vlist-table-header-cell{position:relative;display:flex;align-items:center;height:100%;box-sizing:border-box;flex-shrink:0;user-select:none;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);border-right:1px solid transparent;transition:background-color 0.15s ease}.vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,rgba(0,0,0,0.04))}.vlist-table-header-cell--sortable{cursor:pointer}.vlist-table-header-cell--sortable:active{background-color:var(--vlist-bg-selected,rgba(59,130,246,0.12))}.vlist-table-header-cell--center{justify-content:center}.vlist-table-header-cell--right{justify-content:flex-end}.vlist-table-header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;pointer-events:none}.vlist-table-header-sort{margin-left:4px;flex-shrink:0;opacity:0;font-size:0.7em;transition:opacity 0.15s ease;pointer-events:none;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-resize{position:absolute;top:0;right:-3px;bottom:0;width:5px;cursor:col-resize;z-index:2;touch-action:none;opacity:0;transition:opacity 0.15s ease}.vlist-table-header-resize::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%);background-color:var(--vlist-border,#e5e7eb);transition:background-color 0.15s ease}.vlist-table-header-
|
|
1
|
+
.vlist--table{display:flex;flex-direction:column;overflow:hidden;min-height:inherit}.vlist--table .vlist-viewport{flex:1;min-height:0;height:auto;overflow:auto}.vlist--table .vlist-table-header{position:static}.vlist--table .vlist-scrollbar{top:calc(var(--vlist-table-header-height,0px)+var(--vlist-custom-scrollbar-padding-top,2px))}.vlist--table .vlist-scrollbar-hover{top:var(--vlist-table-header-height,0px);height:calc(100% - var(--vlist-table-header-height,0px))}.vlist--table .vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:block;width:0}.vlist--table .vlist-items{contain:layout style}.vlist-table-header{position:absolute;top:0;left:0;right:0;z-index:5;overflow:hidden;display:flex;align-items:stretch;box-sizing:border-box;will-change:scroll-position;contain:layout style;background-color:var(--vlist-bg,#ffffff);border-bottom:1px solid var(--vlist-border,#e5e7eb);font-weight:600;font-size:0.8125rem;letter-spacing:0.01em;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-scroll{position:relative;display:flex;align-items:stretch;height:100%;min-width:100%;flex-shrink:0}.vlist-table-header-cell{position:relative;display:flex;align-items:center;height:100%;box-sizing:border-box;flex-shrink:0;user-select:none;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);border-right:1px solid transparent;transition:background-color 0.15s ease}.vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,rgba(0,0,0,0.04))}.vlist-table-header-cell--sortable{cursor:pointer}.vlist-table-header-cell--sortable:active{background-color:var(--vlist-bg-selected,rgba(59,130,246,0.12))}.vlist-table-header-cell--center{justify-content:center}.vlist-table-header-cell--right{justify-content:flex-end}.vlist-table-header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;pointer-events:none}.vlist-table-header-sort{margin-left:4px;flex-shrink:0;opacity:0;font-size:0.7em;transition:opacity 0.15s ease;pointer-events:none;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-resize{position:absolute;top:0;right:-3px;bottom:0;width:5px;cursor:col-resize;z-index:2;touch-action:none;opacity:0;transition:opacity 0.15s ease}.vlist-table-header-resize::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%);background-color:var(--vlist-border,#e5e7eb);transition:background-color 0.15s ease}.vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}.vlist-table-header-cell:hover .vlist-table-header-resize{opacity:1}.vlist-table-header-resize--active{opacity:1}.vlist-table-header-resize--active::after{background-color:var(--vlist-border-selected,#3b82f6)}.vlist--col-resizing,.vlist--col-resizing *{cursor:col-resize !important;user-select:none !important}.vlist-table-row{position:absolute;top:0;left:0;display:flex;box-sizing:border-box;contain:content;border-bottom:none;background-color:var(--vlist-bg,#ffffff);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration,150ms) var(--vlist-transition-timing,ease-in-out);will-change:transform}.vlist--scrolling .vlist-table-row{transition:none}.vlist-table-row.vlist-item--odd{background:var( --vlist-bg-striped,var(--vlist-bg-hover,rgba(0,0,0,0.02)) )}.vlist--selectable .vlist-table-row{cursor:pointer}.vlist--selectable .vlist-table-row:hover{background-color:var(--vlist-bg-hover,rgba(0,0,0,0.04))}.vlist-table-row.vlist-item--selected{background-color:var(--vlist-bg-selected,rgba(59,130,246,0.12))}.vlist-table-row.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected,rgba(59,130,246,0.12))}.vlist--selectable .vlist-table-row.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover,rgba(59,130,246,0.18))}.vlist--selectable .vlist-table-row.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover,rgba(59,130,246,0.18))}.vlist-table-row.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-table-cell{position:absolute;top:0;bottom:0;display:flex;align-items:center;box-sizing:border-box;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);font-size:0.875rem;color:var(--vlist-text,#111827)}.vlist-table-cell--center{text-align:center;justify-content:center}.vlist-table-cell--right{text-align:right;justify-content:flex-end}.vlist--table-row-borders .vlist-table-row{border-bottom:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-cell{border-right:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-header-cell{border-right-color:var(--vlist-border,#e5e7eb)}.vlist-table-group-header{display:flex;align-items:center;background-color:var(--vlist-bg,#ffffff);cursor:default;user-select:none;pointer-events:none}.vlist-table-group-header-content{flex:1;min-width:0;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem)}.vlist--table-row-borders .vlist-table-group-header{border-bottom:none;border-top:1px solid var(--vlist-border,#e5e7eb)}.vlist--table.vlist--grouped .vlist-sticky-header{z-index:4}[data-theme-mode="dark"] .vlist-table-header,.dark .vlist-table-header{background-color:var(--vlist-bg,#111827);color:var(--vlist-text-muted,#9ca3af);border-bottom-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-cell:hover,.dark .vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,rgba(255,255,255,0.06))}[data-theme-mode="dark"] .vlist-table-header-resize::after,.dark .vlist-table-header-resize::after{background-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-resize:hover::after,.dark .vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}[data-theme-mode="dark"] .vlist-table-group-header,.dark .vlist-table-group-header{background-color:var(--vlist-bg,#111827)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-header{background-color:var(--vlist-bg,#111827);color:var(--vlist-text-muted,#9ca3af);border-bottom-color:var(--vlist-border,#374151)}:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,rgba(255,255,255,0.06))}:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-header-resize::after{background-color:var(--vlist-border,#374151)}:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-group-header{background-color:var(--vlist-bg,#111827)}}.vlist-table-row.vlist-item--placeholder .vlist-table-cell{color:transparent}.vlist-table-row.vlist-item--placeholder .vlist-table-cell>*{color:transparent;background-color:var(--vlist-border,#e5e7eb);border-radius:4px;animation:vlist-placeholder-pulse 2s ease-in-out infinite;line-height:1;min-width:1em}.vlist-table-row.vlist-item--placeholder .vlist-table-cell>*>*{visibility:hidden}.vlist-table-row.vlist-item--placeholder .vlist-table-cell>*[style]{background:var(--vlist-border,#e5e7eb) !important;color:transparent !important}[data-theme-mode="dark"] .vlist--table-row-borders .vlist-table-group-header,.dark .vlist--table-row-borders .vlist-table-group-header{border-top-color:var(--vlist-border,#374151)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist--table-row-borders .vlist-table-group-header{border-top-color:var(--vlist-border,#374151)}}
|
package/dist/vlist.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}:root{--vlist-scrollbar-width:8px;--vlist-scrollbar-track-color:transparent;--vlist-scrollbar-radius:4px;--vlist-custom-scrollbar-width:8px;--vlist-custom-scrollbar-track-color:transparent;--vlist-custom-scrollbar-radius:4px;--vlist-custom-scrollbar-padding-top:2px;--vlist-custom-scrollbar-padding-right:2px;--vlist-custom-scrollbar-padding-bottom:2px;--vlist-custom-scrollbar-padding-left:2px;--vlist-custom-scrollbar-min-thumb-size:15px;--vlist-item-padding-x:1rem;--vlist-item-padding-y:0.75rem;--vlist-border-radius:0.5rem;--vlist-transition-duration:150ms;--vlist-transition-timing:ease-in-out;--vlist-bg:#ffffff;--vlist-bg-hover:rgba(0,0,0,0.04);--vlist-bg-striped:rgba(0,0,0,0.02);--vlist-bg-selected:rgba(59,130,246,0.12);--vlist-bg-selected-hover:rgba(59,130,246,0.18);--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#f3f4f6;--vlist-scrollbar-thumb-color:#d1d5db;--vlist-scrollbar-thumb-hover-color:#9ca3af;--vlist-custom-scrollbar-thumb-color:rgba(0,0,0,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(0,0,0,0.3);--vlist-placeholder-bg:rgba(0,0,0,0.2)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]){--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3)}}.dark{--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3)}.vlist{position:relative;width:100%;height:100%;overflow:hidden;background-color:var(--vlist-bg);color:var(--vlist-text);color-scheme:light;border:1px solid var(--vlist-border);border-radius:var(--vlist-border-radius);outline:none}[data-theme-mode="dark"] .vlist,.dark .vlist{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]) .vlist{color-scheme:dark}}.vlist:focus,.vlist:focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-color:var(--vlist-scrollbar-thumb-color) var(--vlist-scrollbar-track-color)}@supports (-moz-appearance:none) and (scrollbar-width:1px){.vlist-viewport{scrollbar-width:var(--vlist-scrollbar-width)}}.vlist-viewport::-webkit-scrollbar{width:var(--vlist-scrollbar-width);height:var(--vlist-scrollbar-width)}.vlist-viewport::-webkit-scrollbar-track{background:var(--vlist-scrollbar-track-color)}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb-color);border-radius:var(--vlist-scrollbar-radius)}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover-color)}.vlist-content{position:relative;width:100%}.vlist-items{position:relative;width:100%;contain:layout style}.vlist-item{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;background-color:var(--vlist-bg);cursor:default;user-select:none;opacity:1;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing),opacity var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;will-change:transform}.vlist--scrolling .vlist-item{transition:none}.vlist--selectable .vlist-item{cursor:pointer}.vlist--selectable .vlist-item:hover{background-color:var(--vlist-bg-hover)}.vlist-item.vlist-item--odd{background:var(--vlist-bg-striped)}.vlist-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist-item.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected)}.vlist-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover)}.vlist-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:vlist-fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar{position:absolute;top:var(--vlist-custom-scrollbar-padding-top);right:var(--vlist-custom-scrollbar-padding-right);bottom:var(--vlist-custom-scrollbar-padding-bottom);width:var(--vlist-custom-scrollbar-width);background-color:var(--vlist-custom-scrollbar-track-color);opacity:0;transition:opacity 0.2s ease-out;z-index:10;pointer-events:none}.vlist-scrollbar-hover{position:absolute;top:0;right:0;height:100%;z-index:9;pointer-events:auto}.vlist-scrollbar-hover--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:auto}.vlist-scrollbar--visible{opacity:1;pointer-events:auto}.vlist-scrollbar-thumb{position:absolute;top:0;left:0;right:0;width:100%;background-color:var(--vlist-custom-scrollbar-thumb-color);border-radius:var(--vlist-custom-scrollbar-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar-thumb:hover{background-color:var(--vlist-custom-scrollbar-thumb-hover-color)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar-thumb{background-color:var(--vlist-custom-scrollbar-thumb-hover-color)}.vlist--grouped .vlist-item[data-id^="__group_header_"]{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);z-index:1;overflow:hidden}.vlist--grouped .vlist-item[data-id^="__group_header_"]:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{left:0;right:0;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border)}.vlist--horizontal{overflow:hidden}.vlist--horizontal .vlist-viewport{overflow-x:auto;overflow-y:hidden}.vlist--horizontal .vlist-content{height:100%;width:auto}.vlist--horizontal .vlist-items{height:100%;width:auto}.vlist--horizontal .vlist-item{position:absolute;top:0;bottom:0;left:0;right:auto;display:flex;align-items:center;justify-content:center;border-bottom:none;border-right:1px solid var(--vlist-border)}.vlist-scrollbar--horizontal{top:auto;left:var(--vlist-custom-scrollbar-padding-left);right:var(--vlist-custom-scrollbar-padding-right);bottom:var(--vlist-custom-scrollbar-padding-bottom);width:auto;height:var(--vlist-custom-scrollbar-width)}.vlist-scrollbar--horizontal .vlist-scrollbar-thumb{top:0;left:0;width:auto;height:100%}.vlist-viewport--gutter{padding-right:calc(var(--vlist-custom-scrollbar-padding-right)+var(--vlist-custom-scrollbar-width)+var(--vlist-custom-scrollbar-padding-left))}.vlist--horizontal .vlist-viewport--gutter{padding-right:0;padding-bottom:calc(var(--vlist-custom-scrollbar-padding-bottom)+var(--vlist-custom-scrollbar-width)+var(--vlist-custom-scrollbar-padding-top))}.vlist-viewport--custom-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--no-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--gutter-stable{scrollbar-gutter:stable}
|
|
1
|
+
@keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}:root{--vlist-scrollbar-width:8px;--vlist-scrollbar-track-color:transparent;--vlist-scrollbar-radius:4px;--vlist-custom-scrollbar-width:8px;--vlist-custom-scrollbar-track-color:transparent;--vlist-custom-scrollbar-radius:4px;--vlist-custom-scrollbar-padding-top:2px;--vlist-custom-scrollbar-padding-right:2px;--vlist-custom-scrollbar-padding-bottom:2px;--vlist-custom-scrollbar-padding-left:2px;--vlist-custom-scrollbar-min-thumb-size:15px;--vlist-item-padding-x:1rem;--vlist-item-padding-y:0.75rem;--vlist-border-radius:0.5rem;--vlist-transition-duration:150ms;--vlist-transition-timing:ease-in-out;--vlist-bg:#ffffff;--vlist-bg-hover:rgba(0,0,0,0.04);--vlist-bg-striped:rgba(0,0,0,0.02);--vlist-bg-selected:rgba(59,130,246,0.12);--vlist-bg-selected-hover:rgba(59,130,246,0.18);--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#f3f4f6;--vlist-scrollbar-thumb-color:#d1d5db;--vlist-scrollbar-thumb-hover-color:#9ca3af;--vlist-custom-scrollbar-thumb-color:rgba(0,0,0,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(0,0,0,0.3);--vlist-placeholder-bg:rgba(0,0,0,0.2)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]){--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3)}}.dark{--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3)}.vlist{position:relative;width:100%;height:100%;overflow:hidden;background-color:var(--vlist-bg);color:var(--vlist-text);color-scheme:light;border:1px solid var(--vlist-border);border-radius:var(--vlist-border-radius);outline:none}[data-theme-mode="dark"] .vlist,.dark .vlist{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]) .vlist{color-scheme:dark}}.vlist:focus,.vlist:focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-color:var(--vlist-scrollbar-thumb-color) var(--vlist-scrollbar-track-color)}@supports (-moz-appearance:none) and (scrollbar-width:1px){.vlist-viewport{scrollbar-width:var(--vlist-scrollbar-width)}}.vlist-viewport::-webkit-scrollbar{width:var(--vlist-scrollbar-width);height:var(--vlist-scrollbar-width)}.vlist-viewport::-webkit-scrollbar-track{background:var(--vlist-scrollbar-track-color)}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb-color);border-radius:var(--vlist-scrollbar-radius)}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover-color)}.vlist-content{position:relative;width:100%}.vlist-items{position:relative;width:100%;contain:layout style}.vlist-item{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;background-color:var(--vlist-bg);cursor:default;user-select:none;opacity:1;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing),opacity var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;will-change:transform}.vlist--scrolling .vlist-item{transition:none}.vlist--selectable .vlist-item{cursor:pointer}.vlist--selectable .vlist-item:hover{background-color:var(--vlist-bg-hover)}.vlist-item.vlist-item--odd{background:var(--vlist-bg-striped)}.vlist-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist-item.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected)}.vlist-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover)}.vlist-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:vlist-fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar{position:absolute;top:var(--vlist-custom-scrollbar-padding-top);right:var(--vlist-custom-scrollbar-padding-right);bottom:var(--vlist-custom-scrollbar-padding-bottom);width:var(--vlist-custom-scrollbar-width);background-color:var(--vlist-custom-scrollbar-track-color);opacity:0;transition:opacity 0.2s ease-out;z-index:10;pointer-events:none}.vlist-scrollbar-hover{position:absolute;top:0;right:0;height:100%;z-index:9;pointer-events:auto}.vlist-scrollbar-hover--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:auto}.vlist-scrollbar--visible{opacity:1;pointer-events:auto}.vlist-scrollbar-thumb{position:absolute;top:0;left:0;right:0;width:100%;background-color:var(--vlist-custom-scrollbar-thumb-color);border-radius:var(--vlist-custom-scrollbar-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar-thumb:hover{background-color:var(--vlist-custom-scrollbar-thumb-hover-color)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar-thumb{background-color:var(--vlist-custom-scrollbar-thumb-hover-color)}.vlist--grouped .vlist-item[data-id^="__group_header_"]{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);z-index:1;overflow:hidden}.vlist--grouped .vlist-item[data-id^="__group_header_"]:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{left:0;right:0;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border)}.vlist--horizontal{overflow:hidden}.vlist--horizontal .vlist-viewport{overflow-x:auto;overflow-y:hidden}.vlist--horizontal .vlist-content{height:100%;width:auto}.vlist--horizontal .vlist-items{height:100%;width:auto}.vlist--horizontal .vlist-item{position:absolute;top:0;bottom:0;left:0;right:auto;display:flex;align-items:center;justify-content:center;border-bottom:none;border-right:1px solid var(--vlist-border)}.vlist-scrollbar--horizontal{top:auto;left:var(--vlist-custom-scrollbar-padding-left);right:var(--vlist-custom-scrollbar-padding-right);bottom:var(--vlist-custom-scrollbar-padding-bottom);width:auto;height:var(--vlist-custom-scrollbar-width)}.vlist-scrollbar--horizontal .vlist-scrollbar-thumb{top:0;left:0;width:auto;height:100%}.vlist-viewport--gutter{padding-right:calc(var(--vlist-custom-scrollbar-padding-right)+var(--vlist-custom-scrollbar-width)+var(--vlist-custom-scrollbar-padding-left))}.vlist--horizontal .vlist-viewport--gutter{padding-right:0;padding-bottom:calc(var(--vlist-custom-scrollbar-padding-bottom)+var(--vlist-custom-scrollbar-width)+var(--vlist-custom-scrollbar-padding-top))}.vlist-viewport--custom-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--no-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--gutter-stable{scrollbar-gutter:stable}.vlist-sort-ghost{opacity:0.85;box-shadow:0 4px 16px rgba(0,0,0,0.18);cursor:grabbing}.vlist--sorting{user-select:none}.vlist-item--kb-sorting{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;background-color:var(--vlist-bg-selected);z-index:1}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vlist",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Lightweight, high-performance virtual list with zero dependencies",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Floor IO",
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
"test:changed": "bun test --changed",
|
|
65
65
|
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
|
|
66
66
|
"size": "bun run scripts/measure-size.ts",
|
|
67
|
+
"release": "bun run scripts/release.ts",
|
|
67
68
|
"prepublishOnly": "bun run build --types && cp README.md README.github.md && cp npm-readme.md README.md",
|
|
68
69
|
"postpublish": "cp README.github.md README.md && rm README.github.md"
|
|
69
70
|
},
|