vlist 2.1.1 → 2.2.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/dist/internals.js CHANGED
@@ -1 +1 @@
1
- var v2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var g2=(J,Q)=>{let q=0,$=J.length-1;while(q<$){let B=q+$+1>>>1;if(J[B].headerLayoutIndex<=Q)q=B;else $=B-1}return q},s2=(J,Q)=>{let q=0,$=J.length-1;while(q<$){let B=q+$+1>>>1;if(J[B].firstDataIndex<=Q)q=B;else $=B-1}return q},n2=(J,Q,q)=>{if(J===0)return[];let $=[],B=null,Y=0,j=0;for(let D=0;D<J;D++){let k=q?.(D);if(!k)continue;let W=Q(D,k);if(B===null)B=W,Y=0;else if(W!==B){let T=D-Y;$.push({key:B,groupIndex:$.length,headerLayoutIndex:j,firstDataIndex:Y,count:T}),j=j+1+T,B=W,Y=D}}if(B!==null)$.push({key:B,groupIndex:$.length,headerLayoutIndex:j,firstDataIndex:Y,count:J-Y});return $},o2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let q=J.length+Q.length,$=Array(q),B=0;for(let Y of Q){$[B]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},B++;for(let j=0;j<Y.count;j++)$[B]=J[Y.firstDataIndex+j],B++}return $},i2=(J,Q,q=!1)=>{let $=typeof Q==="number"?(B)=>Q:Q;return(B)=>{let Y=J.getEntry(B);if(Y.type==="header"){if(q&&Y.group.groupIndex===0)return 0;return J.getHeaderHeight(Y.group.groupIndex)}return $(Y.dataIndex)}},t2=(J,Q,q)=>{let $=n2(J,Q.getGroupForIndex,q),B=J+$.length,Y=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return B},get groupCount(){return $.length},get groups(){return $},getEntry:(H)=>{if($.length===0)return{type:"item",dataIndex:H,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let _=g2($,H),E=$[_];if(H===E.headerLayoutIndex)return{type:"header",group:E};let M=H-E.headerLayoutIndex-1;return{type:"item",dataIndex:E.firstDataIndex+M,group:E}},layoutToDataIndex:(H)=>{if($.length===0)return H;let _=g2($,H),E=$[_];if(H===E.headerLayoutIndex)return-1;let M=H-E.headerLayoutIndex-1;return E.firstDataIndex+M},dataToLayoutIndex:(H)=>{if($.length===0)return H;let _=s2($,H),E=$[_],M=H-E.firstDataIndex;return E.headerLayoutIndex+1+M},getGroupAtLayoutIndex:(H)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let _=g2($,H);return $[_]},getGroupAtDataIndex:(H)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let _=s2($,H);return $[_]},getHeaderHeight:typeof Y==="number"?(H)=>Y:(H)=>{let _=$[H];if(!_)return 0;return Y(_.key,H)},rebuild:(H,_)=>{$=n2(H,Q.getGroupForIndex,_??q),B=H+$.length}}};var gJ=(J,Q,q,$,B=0)=>{let Y=q?"width":"height",j=document.createElement("div");return j.className=`${Q}-sticky-header`,j.setAttribute("role","presentation"),j.setAttribute("aria-hidden","true"),j.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(q?`top:0;bottom:0;left:${B||0}px`:`top:${B||0}px`),j.style[Y]=`${$}px`,J.insertBefore(j,J.firstChild),j},e2=(J,Q,q,$,B,Y=!1,j=0,D,k,W)=>{let T=Y?"width":"height",w=Y?"height":"width",G=Y?"X":"Y",H=(U,X)=>{U.style[T]=`${X}px`},_=k??gJ(J,B,Y,0,j),E=()=>{let U=document.createElement("div");return U.className="sticky-group",U.style.position="absolute",U.style.willChange="transform",U.style[w]="100%",U},M=E(),O=E();_.append(M,O);let y=M,F=O,z=Q.groups,u=[],m=[],h=[],t=0,i=()=>{z=Q.groups,t=z.length,u=Array(t),m=Array(t),h=Array(t);let U=D?D():1;for(let X=0;X<t;X++)u[X]=(W?W(z[X].headerLayoutIndex):q.getOffset(z[X].headerLayoutIndex))*U,m[X]=Q.getHeaderHeight(X),h[X]=m[X]*U};i();let a=-1,q2=0,B2=0,j2=-1,g=!1,o=0,s=!1,b=(U,X)=>{$(U,X);let R=m[X];return H(U,R),R},N=(U)=>{U.replaceChildren(),U.style.transform=""},K=(U)=>{if(U===a)return;if(a=U,q2=0,B2=0,U<0||U>=t){N(y);return}q2=b(y,U),B2=h[U],H(_,q2),y.style.transform=""},V=(U)=>{if(U===o)return;o=U;let X=Math.round(U);y.style.transform=`translate${G}(${X}px)`,F.style.transform=`translate${G}(${X+q2}px)`},C=()=>{o=0,y.style.transform="",F.style.transform=""},r=()=>{if(!s)return;let U=y;y=F,F=U,a=j2,q2=a>=0?m[a]:0,B2=a>=0?h[a]:0,H(_,q2),N(F),j2=-1,s=!1,C()},c=()=>{if(!s)return;N(F),j2=-1,s=!1,C()},f=!!k,Z=()=>{if(g)return;if(g=!0,f)_.style.visibility="";else _.style.display=""},L=()=>{if(!g)return;if(g=!1,f)_.style.visibility="hidden";else _.style.display="none";N(y),a=-1,q2=0,B2=0,c()},A=(U)=>{if(t===0){L();return}if(U<u[0]){L();return}let X=0,R=t-1;while(X<R){let v=X+R+1>>>1;if(u[v]+h[v]<=U)X=v;else R=v-1}if(!g)Z();K(X);let d=X+1;if(d<t){let v=u[d]-U;if(v<=0&&v>-B2){if(j2!==d||!s)j2=d,b(F,d),s=!0;let x=B2>0?v/B2*q2:v;V(x)}else if(v<=-B2){if(s)r()}else if(s)c()}else if(s)c()},P=()=>{i();let U=a;if(a=-1,q2=0,B2=0,U>=0)K(U)},I=()=>{_.remove(),a=-1,q2=0,B2=0,j2=-1,g=!1,s=!1};if(!k)_.style.display="none";return{update:A,refresh:P,show:Z,hide:L,destroy:I}};var JJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),q=J.gap??0,$=J.isHeaderFn,B={row:0,col:0},Y=(_)=>{if(_<=0)return 0;if(!$)return Math.ceil(_/Q);let E=0,M=0,O=0;for(let y=0;y<_;y++)if($(y)){if(O++,M)E++,M=0;E++,M=0}else if(M++,M>=Q)E++,M=0;if(M)E++;return E},j=(_)=>{return B.row=D(_),B.col=k(_),B},D=(_)=>{if(!$)return Math.floor(_/Q);let E=0,M=0;for(let O=0;O<=_;O++)if($(O)){if(M)E++,M=0;if(O===_)return E;E++,M=0}else{if(O===_)return E;if(M++,M>=Q)E++,M=0}return console.warn(`⚠️ getRow(${_}) fell through - returning ${E}`),E},k=(_)=>{if(!$)return _%Q;if($(_))return 0;let E=0;for(let M=0;M<=_;M++)if($(M))E=0;else{if(M===_)return E;if(E++,E>=Q)E=0}return E},W=(_,E,M)=>{if(M<=0)return{start:0,end:-1};if(!$){let u=Math.max(0,_*Q),m=Math.min(M-1,(E+1)*Q-1);return{start:u,end:m}}let O=-1,y=-1,F=0,z=0;for(let u=0;u<M;u++){if($(u)){if(z)F++,z=0;if(F>=_&&F<=E){if(O<0)O=u;y=u}F++,z=0}else{if(F>=_&&F<=E){if(O<0)O=u;y=u}if(z++,z>=Q)F++,z=0}if(F>E&&!z)break}if(O<0)return{start:0,end:-1};return{start:O,end:y}},T=(_,E,M)=>{if(E<0||E>=Q)return-1;let O=_*Q+E;if(O<0||O>=M)return-1;return O},w=(_)=>{let E=(Q-1)*q;return Math.max(0,(_-E)/Q)};return{get columns(){return Q},get gap(){return q},update:(_)=>{if(_.columns!==void 0)Q=Math.max(1,Math.floor(_.columns));if(_.gap!==void 0)q=_.gap;if(_.isHeaderFn!==void 0)$=_.isHeaderFn},getTotalRows:Y,getPosition:j,getRow:D,getCol:k,getItemRange:W,getItemIndex:T,getColumnWidth:w,getColumnOffset:(_,E)=>{let M=w(E);return _*(M+q)}}};var H2=16000000;var QJ="x",$J=20,u2="_isPlaceholder",R2="__placeholder_";function C2(J){let Q=J.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let q=0;q<Q.length;q++)Q[q].setAttribute("tabindex","-1")}var y2=(J,Q,q)=>{if(String(q).startsWith(R2))return!1;let $=R2+Q;if(J.has($))return J.delete($),J.add(q),!0;return!1},qJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),m2=(J,Q,q)=>{if(q==="none")return J;let $=new Set(J.selected);if(q==="single"){if($.clear(),Q.length>0)$.add(Q[0])}else for(let B of Q)$.add(B);return{...J,selected:$}},d2=(J,Q)=>{let q=new Set(J.selected);for(let $ of Q)q.delete($);return{...J,selected:q}},YJ=(J,Q,q)=>{if(q==="none")return J;if(J.selected.has(Q))return d2(J,[Q]);else return m2(J,[Q],q)},jJ=(J,Q,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(Q.map(($)=>$.id))}},BJ=(J)=>({...J,selected:new Set});var UJ=(J,Q)=>{return J.selected.has(Q)},NJ=(J)=>{return Array.from(J.selected)},KJ=(J,Q)=>{let q=[];for(let $ of J.selected){let B=Q($);if(B)q.push(B)}return q};var uJ=(J,Q)=>{let q=Q;return{getOffset:($)=>$*J,getSize:($)=>J,indexAtOffset:($)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor($/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:($)=>{q=$},isVariable:()=>!1}},mJ=(J,Q)=>{let q=Q,$=new Float64Array(0),B=(j)=>{q=j,$=new Float64Array(j+1),$[0]=0;for(let D=0;D<j;D++)$[D+1]=$[D]+J(D)};B(Q);let Y=(j)=>{if(q===0)return 0;if(j<=0)return 0;if(j>=$[q])return q-1;let D=0,k=q-1;while(D<k){let W=D+k+1>>>1;if($[W]<=j)D=W;else k=W-1}return D};return{getOffset:(j)=>{if(j<=0)return 0;if(j>=q)return $[q];return $[j]},getSize:(j)=>J(j),indexAtOffset:(j)=>Y(j),getTotalSize:()=>$[q]??0,getTotal:()=>q,rebuild:(j)=>B(j),isVariable:()=>!0}},k2=(J,Q)=>{if(typeof J==="number")return uJ(J,Q);return mJ(J,Q)},c2=(J,Q,q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let B=0,Y=0,j=Q;while(j<$&&Y<q)Y+=J.getSize(j),B++,j++;return Math.max(1,B)};var w2=(J,Q,q)=>{let $=Q.getTotalSize(),B=q===!0||$>H2,Y=$>H2?H2:$,j=$>0?Y/$:1;return{isCompressed:B,actualSize:$,virtualSize:Y,ratio:j}},ZJ=(J,Q,q,$,B,Y)=>{if($===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!B.isCompressed||B.ratio===1){let H=q.indexAtOffset(J),_=q.indexAtOffset(J+Q);if(_<$-1)_++;return Y.start=Math.max(0,H),Y.end=Math.min($-1,Math.max(0,_)),Y}let{virtualSize:j}=B,D=J/j,k=q.getTotalSize(),W=D*k,T=q.indexAtOffset(W),w=c2(q,Math.max(0,T),Q,$),G=T+w;return Y.start=Math.max(0,T),Y.end=Math.min($-1,Math.max(0,G)),Y},_J=(J,Q,q,$)=>{if(q===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(q-1,J.end+Q),$},z2=(J,Q,q,$,B,Y,j)=>{if(!Y.isCompressed||$===0)return q.getOffset(J);if(Y.ratio===1)return q.getOffset(J)-Q;let{virtualSize:D}=Y,k=Q/D,W=q.getTotalSize(),T=k*W;return q.getOffset(J)-T},WJ=(J,Q,q,$,B,Y="start")=>{if($===0)return 0;let j;if(B.isCompressed&&B.ratio!==1){j=J/$*B.virtualSize;let T=Q.getSize(J);switch(Y){case"center":j-=(q-T)/2*B.ratio;break;case"end":j-=(q-T)*B.ratio;break}return Math.max(0,j)}j=Q.getOffset(J);let D=Q.getSize(J);switch(Y){case"center":j-=(q-D)/2;break;case"end":j-=q-D;break}let k=B.virtualSize-q;return Math.max(0,Math.min(j,k))},VJ=(J,Q,q,$)=>{if(q===0)return 0;if($.isCompressed&&$.ratio!==1){let B=J/$.virtualSize;return Math.floor(B*q)}return Q.indexAtOffset(J)},MJ=(J,Q)=>{if(typeof Q==="number")return J*Q>H2;return Q.getTotalSize()>H2},DJ=(J)=>{if(J<=0)return 0;return Math.floor(H2/J)},GJ=(J,Q,q)=>{let $=w2(J,Q,q);if(!$.isCompressed)return`No compression needed (${J} items, ${($.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${($.ratio*100).toFixed(1)}% (${J} items, ${($.actualSize/1e6).toFixed(1)}M px → ${($.virtualSize/1e6).toFixed(1)}M px virtual)`};var S2=(J,Q,q)=>{let $=Array.from(Q).sort((j,D)=>j-D);if($.length<=1)return;let B=[];for(let j=0;j<$.length;j++){let D=q($[j]);if(D)B.push(D)}if(B.length<=1)return;let Y=J.firstChild;for(let j=0;j<B.length;j++){let D=B[j];if(D===Y)Y=Y.nextSibling;else J.insertBefore(D,Y)}};var dJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let j=document.createElement("div");return j.setAttribute("role","option"),j},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}}},cJ=1,rJ=(J,Q,q,$,B,Y,j,D,k=!1,W,T)=>{let w=dJ(),G=new Map,H=Y,_=!1,E=0,M="",O=-1,y={selected:!1,focused:!1},F=(Z,L)=>{return y.selected=Z,y.focused=L,y},z=`${B}-item ${B}-grid-item`,u=`${B}-group-header`,m=`${B}-item--selected`,h=`${B}-item--focused`,t=`${B}-item--placeholder`,i=`${B}-item--replaced`,a=(Z,L)=>{if(typeof L==="string")Z.innerHTML=L;else Z.replaceChildren(L);C2(Z)},q2=(Z,L,A)=>{Z.classList.toggle(m,L),Z.classList.toggle(h,A)},B2=(Z,L)=>{let A=$.getRow(Z);if(L?.compression?.isCompressed)return z2(A,L.scrollPosition,q,L.totalItems,L.containerSize,L.compression,L.rangeStart);return q.getOffset(A)},j2=(Z,L)=>{let A=$.getCol(Z),I=_&&A===0?0:$.getColumnOffset(A,H),U;if(_){let X=$.getRow(Z),R=0,d=-1;for(let v=0;v<Z;v++){let x=$.getRow(v);if(x<X&&x!==d){let e=q.getSize(v);R+=e,d=x}}U=R}else U=B2(Z,L);if(k)return`translate(${Math.round(U)}px, ${Math.round(I)}px)`;return`translate(${Math.round(I)}px, ${Math.round(U)}px)`},g=(Z,L)=>{let A=Z.classList.contains(u),P=A?H:$.getColumnWidth(H),I;if(_||A)I=q.getSize(L)-$.gap;else{let U=$.getRow(L);I=q.getSize(U)-$.gap}if(k)Z.style.width=`${I}px`,Z.style.height=`${P}px`;else Z.style.width=`${P}px`,Z.style.height=`${I}px`},o=(Z,L,A,P,I)=>{let U=w.acquire(),X=!!L.__groupHeader,R=F(A,P);if(U.className=X?u:z,U.dataset.index=String(Z),U.dataset.id=String(L.id),U.dataset.row=String($.getRow(Z)),U.dataset.col=String($.getCol(Z)),X)U.setAttribute("role","presentation"),U.removeAttribute("aria-selected"),U.removeAttribute("aria-setsize"),U.removeAttribute("aria-posinset"),U.removeAttribute("id");else if(T===!0){if(U.setAttribute("role","option"),U.ariaSelected=String(A),D)U.id=`${D}-item-${Z}`;if(j){let x=j();if(x!==O)O=x,M=String(x);U.setAttribute("aria-setsize",M);let e=W?W(Z):Z+1;U.setAttribute("aria-posinset",String(e))}}else if(U.setAttribute("role","listitem"),U.removeAttribute("aria-selected"),j){let x=j();if(x!==O)O=x,M=String(x);U.setAttribute("aria-setsize",M);let e=W?W(Z):Z+1;U.setAttribute("aria-posinset",String(e))}g(U,Z);let d=Q(L,Z,R);if(a(U,d),String(L.id).startsWith(R2))U.classList.add(t);return q2(U,A,P),U.style.transform=I,{element:U,lastItem:L,lastSelected:A,lastFocused:P,lastTransform:I,lastSeenFrame:E}},s=(Z,L,A,P,I)=>{if(E++,L.start===0&&Z.length)_=v2(Z[0]);let U=!1;if(j){let R=j();if(R!==O)O=R,M=String(R),U=!0}let X=null;for(let R=L.start;R<=L.end;R++){let d=R-L.start,v=Z[d];if(!v)continue;let x=A.has(v.id),e=R===P,Q2=G.get(R);if(Q2){let Z2=Q2.lastItem!==v,$2=Q2.lastSelected!==x,p=Q2.lastFocused!==e;if(Z2){let n=Q2.element.dataset.id??"",Y2=String(v.id),N2=n.startsWith(R2),l=Y2.startsWith(R2);if(!l&&y2(A,R,v.id))x=!0;let M2=F(x,e),E2=Q(v,R,M2);if(a(Q2.element,E2),Q2.element.dataset.id=Y2,Q2.element.dataset.row=String($.getRow(R)),Q2.element.dataset.col=String($.getCol(R)),g(Q2.element,R),Q2.element.classList.toggle(t,l),N2&&!l)Q2.element.classList.add(i),setTimeout(()=>Q2.element.classList.remove(i),300);if(Q2.lastItem=v,!v.__groupHeader){let V2=W?W(R):R+1;Q2.element.setAttribute("aria-posinset",String(V2))}}if(Z2||$2||p)q2(Q2.element,x,e),Q2.element.ariaSelected=String(x),Q2.lastSelected=x,Q2.lastFocused=e;let S=j2(R,I);if(Q2.lastTransform!==S)Q2.element.style.transform=S,Q2.lastTransform=S;if(U&&!v.__groupHeader)Q2.element.setAttribute("aria-setsize",M)}else{if(y2(A,R,v.id))x=!0;let Z2=j2(R,I),$2=o(R,v,x,e,Z2);if(!X)X=document.createDocumentFragment();X.appendChild($2.element),G.set(R,$2)}}if(X)J.appendChild(X);for(let[R,d]of G)if(R>=L.start&&R<=L.end)d.lastSeenFrame=E;else if(E-d.lastSeenFrame>cJ)w.release(d.element),G.delete(R)},b=(Z)=>{for(let[L,A]of G){let P=j2(L,Z);if(A.lastTransform!==P)A.element.style.transform=P,A.lastTransform=P}},N=(Z,L,A,P)=>{let I=G.get(Z);if(!I)return;let U=F(A,P),X=Q(L,Z,U);a(I.element,X),q2(I.element,A,P),I.element.dataset.id=String(L.id),I.element.ariaSelected=String(A),g(I.element,Z),I.lastItem=L,I.lastSelected=A,I.lastFocused=P},K=(Z,L,A)=>{let P=G.get(Z);if(!P)return;let I=P.lastSelected!==L,U=P.lastFocused!==A;if(I||U)q2(P.element,L,A),P.lastSelected=L,P.lastFocused=A},V=(Z)=>{return G.get(Z)?.element},C=(Z)=>{if(Math.abs(Z-H)<1)return;H=Z;for(let[L,A]of G){g(A.element,L);let P=j2(L);A.element.style.transform=P,A.lastTransform=P}},r=()=>{S2(J,G.keys(),(Z)=>G.get(Z)?.element)},c=()=>{for(let[,Z]of G)w.release(Z.element);G.clear()};return{render:s,updatePositions:b,updateItem:N,updateItemClasses:K,getElement:V,sortDOM:r,updateContainerWidth:C,clear:c,destroy:()=>{c(),w.clear()}}};var XJ=(J,Q=50,q=1/0,$=!0)=>{let B=J,Y=[],j=0,D=()=>{Y=B.map((M,O)=>({def:M,index:O,width:0,minWidth:lJ(M.minWidth??Q,1),maxWidth:M.maxWidth??q,resizable:M.resizable??$,offset:0}))},k=(M)=>{if(Y.length===0){j=0;return}let O=0,y=0;for(let F=0;F<Y.length;F++){let z=Y[F],u=z.def;if(u.width!==void 0)z.width=r2(u.width,z.minWidth,z.maxWidth),O+=z.width;else y++}if(y){let z=Math.max(0,M-O)/y;for(let u=0;u<Y.length;u++){let m=Y[u];if(m.def.width===void 0)m.width=r2(z,m.minWidth,m.maxWidth)}}W()},W=()=>{let M=0;for(let O=0;O<Y.length;O++){let y=Y[O];y.offset=M,M+=y.width}j=M},T=(M,O)=>{if(M<0||M>=Y.length)return 0;let y=Y[M];if(!y.resizable)return y.width;let F=r2(O,y.minWidth,y.maxWidth);return y.width=F,W(),F},w=(M)=>{return Y[M]},G=(M)=>{if(Y.length===0)return;if(M<0)return Y[0];if(M>=j)return Y[Y.length-1];let O=0,y=Y.length-1;while(O<y){let F=O+y>>>1,z=Y[F];if(M<z.offset)y=F-1;else if(M>=z.offset+z.width)O=F+1;else return z}return Y[O]},H=(M)=>{if(M<0||M>=Y.length)return 0;return Y[M].offset},_=(M)=>{if(M<0||M>=Y.length)return 0;return Y[M].width},E=(M)=>{B=M,D()};return D(),{get columns(){return Y},get totalWidth(){return j},resolve:k,updateColumns:E,resizeColumn:T,getColumn:w,getColumnAtX:G,getColumnOffset:H,getColumnWidth:_}},r2=(J,Q,q)=>Math.min(q,Math.max(Q,J)),lJ=(J,Q)=>Math.max(Q,J);var OJ=(J,Q,q,$,B,Y)=>{let j=document.createElement("div");j.setAttribute("role","rowgroup");let D=document.createElement("div");D.className=`${q}-table-header`,D.setAttribute("role","row"),D.setAttribute("aria-rowindex","1"),D.style.height=`${Q}px`;let k=document.createElement("div");k.className=`${q}-table-header-scroll`,k.setAttribute("role","presentation"),D.appendChild(k),j.appendChild(D),J.insertBefore(j,J.firstChild),J.style.setProperty("--vlist-table-header-height",`${Q}px`);let W=[],T=[],w=!0,G=null,H="asc",_=null,E=!1,M=-1,O=0,y=0,F=0,z=(N,K)=>{let V=document.createElement("div");V.className=`${q}-table-header-cell`,V.setAttribute("role","columnheader"),V.setAttribute("aria-colindex",String(K+1)),V.setAttribute("tabindex",K===0?"0":"-1"),V.dataset.columnKey=N.def.key;let C=N.def.align;if(C==="center")V.classList.add(`${q}-table-header-cell--center`);else if(C==="right")V.classList.add(`${q}-table-header-cell--right`);let r=document.createElement("div");r.className=`${q}-table-header-content`;let c=N.def.header?N.def.header(N.def):N.def.label;if(typeof c==="string")r.textContent=c;else r.appendChild(c);if(V.appendChild(r),N.def.sortable){let f=document.createElement("span");f.className=`${q}-table-header-sort`,f.setAttribute("aria-hidden","true"),V.appendChild(f),T.push(f),V.classList.add(`${q}-table-header-cell--sortable`)}else T.push(null);if(N.resizable){let f=document.createElement("div");f.className=`${q}-table-header-resize`,f.dataset.resizeIndex=String(K),V.appendChild(f)}return V},u=(N)=>{_=N,k.textContent="",W=[],T=[];let K=N.columns;for(let V=0;V<K.length;V++){let C=K[V],r=z(C,V);W.push(r),k.appendChild(r)}if(m(N),G)h(G,H)},m=(N)=>{_=N;let K=N.columns;k.style.width=`${N.totalWidth}px`;for(let V=0;V<W.length&&V<K.length;V++){let C=W[V],r=K[V];C.style.width=`${r.width}px`}},h=(N,K)=>{if(G=N,H=K,!_)return;let V=_.columns;for(let C=0;C<T.length&&C<V.length;C++){let r=T[C];if(!r)continue;if(V[C].def.key===N)r.textContent=K==="asc"?"▲":"▼",r.style.opacity="0.7",W[C].setAttribute("aria-sort",K==="asc"?"ascending":"descending");else r.textContent="",r.style.opacity="0",W[C].removeAttribute("aria-sort")}},t=(N)=>{k.style.transform=`translateX(${-N}px)`},i=(N)=>{let K=N.target;if(!K.dataset.resizeIndex)return;if(N.preventDefault(),N.stopPropagation(),M=+K.dataset.resizeIndex,!_)return;let V=_.getColumn(M);if(!V?.resizable)return;E=!0,O=N.clientX,y=V.width,J.classList.add(`${q}--col-resizing`),J.style.cursor="col-resize",K.classList.add(`${q}-table-header-resize--active`),K.setPointerCapture(N.pointerId),K.addEventListener("pointermove",a),K.addEventListener("pointerup",q2),K.addEventListener("pointercancel",q2)},a=(N)=>{if(!E||!_)return;let K=N.clientX-O;if(Math.abs(K)<1)return;let V=Math.max(0,y+K);$(M,V)},q2=(N)=>{if(!E)return;let K=N.target;K.removeEventListener("pointermove",a),K.removeEventListener("pointerup",q2),K.removeEventListener("pointercancel",q2);try{K.releasePointerCapture(N.pointerId)}catch{}K.classList.remove(`${q}-table-header-resize--active`),J.classList.remove(`${q}--col-resizing`),J.style.cursor="",E=!1,M=-1},B2=(N)=>{let K=N.target;if(K.dataset.resizeIndex)return;if(E)return;let V=K;while(V&&!V.dataset.columnKey)if(V=V.parentElement,V===D||V===null)return;let C=V.dataset.columnKey;if(!_)return;let r=_.columns,c=-1;for(let Z=0;Z<r.length;Z++)if(r[Z].def.key===C){c=Z;break}if(c===-1)return;let f=r[c];if(Y)Y({key:C,index:c,event:N});if(f.def.sortable&&B){let Z;if(G===C)Z=H==="asc"?"desc":null;else Z="asc";B({key:C,index:c,direction:Z})}},j2=(N)=>{if(N<0||N>=W.length)return;W[F]?.setAttribute("tabindex","-1"),F=N;let K=W[F];K.setAttribute("tabindex","0"),K.focus()},g=(N)=>{let K=N.key;if(K==="ArrowRight"){if(N.ctrlKey||N.metaKey){if(!_)return;let V=_.getColumn(F);if(V?.resizable)$(F,V.width+10),N.preventDefault()}else if(F<W.length-1)j2(F+1),N.preventDefault();N.stopPropagation();return}if(K==="ArrowLeft"){if(N.ctrlKey||N.metaKey){if(!_)return;let V=_.getColumn(F);if(V?.resizable)$(F,V.width-10),N.preventDefault()}else if(F>0)j2(F-1),N.preventDefault();N.stopPropagation();return}if(K==="Home"){j2(0),N.preventDefault(),N.stopPropagation();return}if(K==="End"){j2(W.length-1),N.preventDefault(),N.stopPropagation();return}if(K==="Enter"||K===" "){if(!_)return;let V=_.getColumn(F);if(V?.def.sortable&&B){let C;if(G===V.def.key)C=H==="asc"?"desc":null;else C="asc";B({key:V.def.key,index:F,direction:C}),N.preventDefault()}N.stopPropagation();return}if(K==="ArrowDown"){J.focus(),N.preventDefault(),N.stopPropagation();return}};return D.addEventListener("pointerdown",i),D.addEventListener("click",B2),D.addEventListener("keydown",g),{element:D,update:m,updateSort:h,rebuild:u,show:()=>{if(w)return;w=!0,D.style.display=""},hide:()=>{if(!w)return;w=!1,D.style.display="none"},destroy:()=>{D.removeEventListener("pointerdown",i),D.removeEventListener("click",B2),D.removeEventListener("keydown",g),J.style.removeProperty("--vlist-table-header-height"),j.remove(),W=[],T=[],_=null,w=!1},syncScroll:t}};var aJ=()=>{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}}},EJ=(J,Q,q,$,B,Y,j,D,k)=>{let W=aJ(),T=new Map,w=-1,G=q,H=null,_=null,E=null,M=(U,X)=>{_=U,E=X},O=(U,X)=>{X?U.setAttribute("aria-selected","true"):U.removeAttribute("aria-selected")},y=(U,X,R,d)=>{U.setAttribute("role",X),U.setAttribute("data-id",String(R)),U.setAttribute("data-index",String(d))},F=(U)=>String(U).startsWith("__placeholder_"),z=`${B}-item ${B}-table-row`,u=`${B}-item--selected`,m=`${B}-item--focused`,h=`${B}-table-cell`,t=`${B}-table-cell--center`,i=`${B}-table-cell--right`,a=`${B}-item--odd`,q2=`${B}-item--placeholder`,B2=`${B}-item--replaced`,j2=`${B}-table-row ${B}-table-group-header`,g=`${B}-table-group-header-content`,o=(U,X,R,d,v=!1)=>{if(R.def.cell){let x=R.def.cell(X,R.def,d);if(typeof x==="string")U.innerHTML=x;else U.replaceChildren(x)}else{let x=X[R.def.key],e=x!=null?String(x):"";if(v&&e)U.innerHTML=`<span>${e}</span>`;else U.textContent=e}},s=(U,X,R,d,v=!1)=>{let x=z;if(D){if(H){let e=H(X);if(e>=0&&(e&1)===1)x+=` ${a}`}else if((X&1)===1)x+=` ${a}`}if(v)x+=` ${q2}`;if(R)x+=` ${u}`;if(d)x+=` ${m}`;U.className=x},b=(U,X,R)=>{if(R?.compression?.isCompressed)return Math.round(z2(U,R.scrollPosition,X,R.totalItems,R.containerSize,R.compression,R.rangeStart));return X.getOffset(U)},N=(U,X)=>{let R=X.def.align;if(R==="center")U.classList.add(t),U.classList.remove(i);else if(R==="right")U.classList.add(i),U.classList.remove(t);else U.classList.remove(t,i)},K=(U,X)=>{let d=G.columns.length;if(X.length===d)return X;let v=[];for(let x=0;x<d;x++){let e;if(x<X.length)e=X[x];else e=document.createElement("div"),e.className=h,U.appendChild(e);v.push(e)}for(let x=d;x<X.length;x++)X[x].remove();return v},V=(U,X,R,d)=>{let v=W.acquire(),x=U,e=R.getSize(X),Q2=b(X,R,d);v.style.cssText=`width:${G.totalWidth}px;height:${e}px;transform:translateY(${Q2}px)`,v.className=j2,y(v,"presentation",U.id,X),v.removeAttribute("aria-selected"),v.removeAttribute("aria-rowindex"),v.replaceChildren();let Z2=document.createElement("div");if(Z2.className=g,E){let $2=E(x.groupKey,x.groupIndex);if(typeof $2==="string")Z2.innerHTML=$2;else Z2.appendChild($2)}return v.appendChild(Z2),{element:v,cells:[],index:X,isGroupHeader:!0,_lastItem:U,lastItemId:U.id,lastSelected:!1,lastFocused:!1,lastOffset:Q2,lastHeight:e}},C=(U,X,R,d,v,x)=>{let e=W.acquire(),Q2=v.getSize(X),Z2=b(X,v,x),$2=F(U.id);e.style.cssText=`width:${G.totalWidth}px;height:${Q2}px;transform:translateY(${Z2}px)`,s(e,X,R,d,$2),y(e,"row",U.id,X),e.id=`${Y}-item-${X}`,e.setAttribute("aria-rowindex",String(X+2)),O(e,R);let p=K(e,[]),S=G.columns;for(let n=0;n<p.length&&n<S.length;n++){let Y2=p[n],N2=S[n];Y2.style.cssText=`left:${N2.offset}px;width:${N2.width}px`,Y2.setAttribute("role","gridcell"),Y2.setAttribute("aria-colindex",String(n+1)),N(Y2,N2),o(Y2,U,N2,X,$2)}return{element:e,cells:p,index:X,isGroupHeader:!1,_lastItem:U,lastItemId:U.id,lastSelected:R,lastFocused:d,lastOffset:Z2,lastHeight:Q2}},r=(U,X,R,d,v)=>{let x=!1,e=j();if(e!==w)w=e,x=!0;let Q2=null,Z2=Q();H=typeof D==="string"&&k?k():null;for(let $2=X.start;$2<=X.end;$2++){let p=$2-X.start,S=U[p];if(!S)continue;let n=R.has(S.id),Y2=$2===d,N2=_?_(S):!1,l=T.get($2);if(l){if(l.isGroupHeader!==N2){W.release(l.element),T.delete($2);let M2=N2?V(S,$2,Z2,v):C(S,$2,n,Y2,Z2,v);if(T.set($2,M2),!Q2)Q2=document.createDocumentFragment();Q2.appendChild(M2.element);continue}if(N2){if(l._lastItem!==S){let V2=S,G2=l.element.firstElementChild;if(G2&&E){let A2=E(V2.groupKey,V2.groupIndex);if(typeof A2==="string")G2.innerHTML=A2;else G2.replaceChildren(A2)}l.element.setAttribute("data-id",String(S.id)),l._lastItem=S,l.lastItemId=S.id}let E2=b($2,Z2,v);if(l.lastOffset!==E2)l.lastOffset=E2,l.element.style.transform=`translateY(${E2}px)`;let U2=Z2.getSize($2);if(l.lastHeight!==U2)l.lastHeight=U2,l.element.style.height=`${U2}px`}else{let M2=l._lastItem!==S,E2=l.lastSelected!==n,U2=l.lastFocused!==Y2;if(M2){let A2=l.lastItemId!=null&&F(l.lastItemId),W2=F(S.id);if(!W2&&y2(R,$2,S.id))n=!0;let X2=G.columns;for(let _2=0;_2<l.cells.length&&_2<X2.length;_2++)o(l.cells[_2],S,X2[_2],$2,W2);if(s(l.element,$2,n,Y2,W2),l.element.setAttribute("data-id",String(S.id)),O(l.element,n),A2&&!W2)l.element.classList.add(B2),setTimeout(()=>{l.element.classList.remove(B2)},300);l._lastItem=S,l.lastItemId=S.id,l.lastSelected=n,l.lastFocused=Y2}else if(E2||U2)s(l.element,$2,n,Y2,F(S.id)),O(l.element,n),l.lastSelected=n,l.lastFocused=Y2;let V2=b($2,Z2,v);if(l.lastOffset!==V2)l.lastOffset=V2,l.element.style.transform=`translateY(${V2}px)`;let G2=Z2.getSize($2);if(l.lastHeight!==G2)l.lastHeight=G2,l.element.style.height=`${G2}px`;if(x)l.element.setAttribute("aria-rowindex",String($2+2))}}else{if(y2(R,$2,S.id))n=!0;let M2=N2?V(S,$2,Z2,v):C(S,$2,n,Y2,Z2,v);if(T.set($2,M2),!Q2)Q2=document.createDocumentFragment();Q2.appendChild(M2.element)}}if(Q2)J.appendChild(Q2);for(let[$2,p]of T)if($2<X.start||$2>X.end)W.release(p.element),T.delete($2)},c=(U)=>{let X=Q();for(let[R,d]of T){let v=b(R,X,U);if(d.lastOffset!==v)d.lastOffset=v,d.element.style.transform=`translateY(${v}px)`}},f=(U,X,R,d)=>{let v=T.get(U);if(!v)return;if(v.isGroupHeader)return;let x=G.columns;for(let e=0;e<v.cells.length&&e<x.length;e++)o(v.cells[e],X,x[e],U);v.element.setAttribute("data-id",String(X.id)),v._lastItem=X,v.lastItemId=X.id,s(v.element,U,R,d),O(v.element,R),v.lastSelected=R,v.lastFocused=d},Z=(U,X,R)=>{let d=T.get(U);if(!d)return;if(d.isGroupHeader)return;let v=d.lastSelected!==X,x=d.lastFocused!==R;if(v||x)s(d.element,U,X,R),O(d.element,X),d.lastSelected=X,d.lastFocused=R},L=(U)=>{G=U;let X=U.columns;for(let[,R]of T)if(R.element.style.width=`${U.totalWidth}px`,R.cells.length>0)for(let d=0;d<R.cells.length&&d<X.length;d++){let v=R.cells[d],x=X[d];v.style.left=`${x.offset}px`,v.style.width=`${x.width}px`}},A=(U)=>{return T.get(U)?.element},P=()=>{for(let[,U]of T)W.release(U.element);T.clear(),w=-1};return{render:r,updatePositions:c,updateItem:f,updateItemClasses:Z,getElement:A,updateColumnLayout:L,setGroupHeaderFn:M,clear:P,destroy:()=>{P(),W.clear()}}};var AJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),q=J.gap??0,$=J.containerSize,B=J.crossOffset??0,Y=J.mainOffset??0,j=0,D=[],k=()=>{let O=(Q-1)*q;j=Math.max(0,($-O)/Q),D=Array(Q);let y=j+q;for(let F=0;F<Q;F++)D[F]=B+F*y};k();let W=[],T=0,w=[],G=(O,y)=>{if(O<=0)return T=0,W=[],[];let F=Array(Q).fill(Y),z=Array(Q);for(let h=0;h<Q;h++)z[h]=[];let u=Array(O);for(let h=0;h<O;h++){let t=0,i=F[0];for(let B2=1;B2<Q;B2++){let j2=F[B2];if(j2<i)i=j2,t=B2}let a=y(h),q2=F[t];u[h]={index:h,x:D[t],y:q2,lane:t,size:a,crossSize:j},z[t].push(h),F[t]=q2+a+q}W=z;let m=0;for(let h=0;h<Q;h++){let t=F[h],i=t>0?t-q:0;if(i>m)m=i}return T=m,u},H=(O)=>{if(O.length===0)return T;if(T)return T;let y=Array(Q).fill(0);for(let z of O){let u=z.y+z.size,m=y[z.lane];if(u>m)y[z.lane]=u}let F=0;for(let z=0;z<Q;z++)if(y[z]>F)F=y[z];return F},_=(O,y,F)=>{if(O.length===0||F<=y)return w.length=0,w;if(W.length===0||W.length!==Q)return E(O,y,F);w.length=0;for(let z=0;z<Q;z++){let u=W[z],m=u.length;if(!m)continue;let h=0,t=m;while(h<t){let i=h+t>>>1,a=O[u[i]];if(a.y+a.size<=y)h=i+1;else t=i}for(let i=h;i<m;i++){let a=O[u[i]];if(a.y>=F)break;w.push(a)}}return w},E=(O,y,F)=>{w.length=0;for(let z of O)if(z.y+z.size>y&&z.y<F)w.push(z);return w};return{get columns(){return Q},get gap(){return q},get containerSize(){return $},update:(O)=>{let y=!1;if(O.columns!==void 0){let F=Math.max(1,Math.floor(O.columns));if(F!==Q)Q=F,y=!0}if(O.gap!==void 0&&O.gap!==q)q=O.gap,y=!0;if(O.containerSize!==void 0&&O.containerSize!==$)$=O.containerSize,y=!0;if(O.crossOffset!==void 0&&O.crossOffset!==B)B=O.crossOffset,y=!0;if(O.mainOffset!==void 0&&O.mainOffset!==Y)Y=O.mainOffset,y=!0;if(y)k()},calculateLayout:G,getTotalSize:H,getVisibleItems:_}};var sJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let j=document.createElement("div");return j.setAttribute("role","option"),j},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}}},nJ=1,FJ=(J,Q,q,$=!1,B,Y,j,D)=>{let k=sJ(),W=new Map,T=new Set,w=0,G="",H=-1,_={selected:!1,focused:!1},E=(g,o)=>{return _.selected=g,_.focused=o,_},M=`${q}-item ${q}-masonry-item`,O=`${q}-group-header`,y=`${q}-item--selected`,F=`${q}-item--focused`,z=(g,o)=>{if(typeof o==="string")g.innerHTML=o;else g.replaceChildren(o);C2(g)},u=(g,o,s)=>{g.classList.toggle(y,o),g.classList.toggle(F,s)},m=(g,o)=>{if($)g.style.transform=`translate(${Math.round(o.y)}px, ${Math.round(o.x)}px)`;else g.style.transform=`translate(${Math.round(o.x)}px, ${Math.round(o.y)}px)`},h=(g,o)=>{if($)g.style.width=`${o.size}px`,g.style.height=`${o.crossSize}px`;else g.style.width=`${o.crossSize}px`,g.style.height=`${o.size}px`},t=(g,o,s,b,N)=>{let K=k.acquire(),V=o.__groupHeader,C=E(b,N);if(K.className=V?O:M,K.dataset.index=String(g),K.dataset.id=String(o.id),K.dataset.lane=String(s.lane),V)K.setAttribute("role","presentation"),K.removeAttribute("aria-selected"),K.removeAttribute("aria-setsize"),K.removeAttribute("aria-posinset"),K.removeAttribute("id");else if(D===!0){if(K.setAttribute("role","option"),K.ariaSelected=String(b),Y)K.id=`${Y}-item-${g}`;if(B){let c=B();if(c!==H)H=c,G=String(c);K.setAttribute("aria-setsize",G);let f=j?j(g):g+1;K.setAttribute("aria-posinset",String(f))}}else if(K.setAttribute("role","listitem"),K.removeAttribute("aria-selected"),B){let c=B();if(c!==H)H=c,G=String(c);K.setAttribute("aria-setsize",G);let f=j?j(g):g+1;K.setAttribute("aria-posinset",String(f))}h(K,s);let r=Q(o,g,C);return z(K,r),u(K,b,N),m(K,s),{element:K,lastItem:o,lastSelected:b,lastFocused:N,lastY:s.y,lastX:s.x,lastSize:s.size,lastCrossSize:s.crossSize,lastSeenFrame:w}},i=(g,o,s,b)=>{w++,T.clear();for(let K=0;K<o.length;K++)T.add(o[K].index);let N=null;for(let K=0;K<o.length;K++){let V=o[K],C=V.index,r=g(C);if(!r)continue;let c=s.has(r.id),f=C===b,Z=W.get(C);if(Z){let L=Z.lastItem!==r,A=Z.lastSelected!==c,P=Z.lastFocused!==f,I=Z.lastY!==V.y||Z.lastX!==V.x,U=Z.lastSize!==V.size||Z.lastCrossSize!==V.crossSize;if(L){let X=E(c,f),R=Q(r,C,X);if(z(Z.element,R),Z.element.dataset.id=String(r.id),Z.lastItem=r,!r.__groupHeader){let v=j?j(C):C+1;Z.element.setAttribute("aria-posinset",String(v))}}if(L||A||P)u(Z.element,c,f),Z.element.ariaSelected=String(c),Z.lastSelected=c,Z.lastFocused=f;if(U)h(Z.element,V),Z.lastSize=V.size,Z.lastCrossSize=V.crossSize;if(I)m(Z.element,V),Z.lastY=V.y,Z.lastX=V.x}else{let L=t(C,r,V,c,f);if(!N)N=document.createDocumentFragment();N.appendChild(L.element),W.set(C,L)}}if(N)J.appendChild(N);for(let[K,V]of W)if(T.has(K))V.lastSeenFrame=w;else if(w-V.lastSeenFrame>nJ)k.release(V.element),W.delete(K)},a=()=>{for(let g of W.values())k.release(g.element);W.clear(),J.innerHTML=""};return{render:i,getElement:(g)=>W.get(g)?.element,updateItemClasses:(g,o,s)=>{let b=W.get(g);if(!b)return;let N=b.lastSelected!==o,K=b.lastFocused!==s;if(N||K)u(b.element,o,s),b.lastSelected=o,b.lastFocused=s},sortDOM:()=>{S2(J,W.keys(),(g)=>W.get(g)?.element)},clear:a,destroy:()=>{a(),k.clear()}}};var LJ=(J,Q)=>{let q=new Map,$=(Y)=>q.get(Y)??J,B=k2($,Q);return{getOffset(Y){return B.getOffset(Y)},getSize(Y){return $(Y)},indexAtOffset(Y){return B.indexAtOffset(Y)},getTotalSize(){return B.getTotalSize()},getTotal(){return B.getTotal()},rebuild(Y){if(Y<B.getTotal()){for(let j of q.keys())if(j>=Y)q.delete(j)}B=k2($,Y)},isVariable(){return!0},setMeasuredSize(Y,j){q.set(Y,j)},isMeasured(Y){return q.has(Y)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var HJ=(J,Q,q,$,B,Y)=>{if($===0||Q===0)return Y.start=0,Y.end=-1,Y;let j=q.indexAtOffset(J),D=q.indexAtOffset(J+Q);if(D<$-1)D++;return Y.start=Math.max(0,j),Y.end=Math.min($-1,Math.max(0,D)),Y},bJ=(J,Q,q,$)=>{if(q===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(q-1,J.end+Q),$},RJ=(J,Q,q,$,B,Y)=>{if($===0)return 0;let j=Math.max(0,Math.min(J,$-1)),D=Q.getOffset(j),k=Q.getSize(j),W=Q.getTotalSize(),T=Math.max(0,W-q),w;switch(Y){case"center":w=D-q/2+k/2;break;case"end":w=D-q+k;break;case"start":default:w=D;break}return Math.max(0,Math.min(w,T))},TJ=(J,Q,q)=>{if(q&&q.isCompressed)return q.virtualSize;return Q.getTotalSize()},yJ=(J,Q)=>{return Q.getTotalSize()},zJ=(J,Q)=>{return Q.getOffset(J)},PJ=(J,Q,q)=>{let $=Math.max(0,Q-q);return Math.max(0,Math.min(J,$))};var kJ=(J,Q,q,$,B="start",Y,j=RJ)=>{return j(J,Q,q,$,Y,B)},wJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},vJ=(J,Q)=>{return J>=Q.start&&J<=Q.end},CJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var SJ=(J,Q)=>{let q=[],$=[];for(let B=J.start;B<=J.end;B++)if(B<Q.start||B>Q.end)$.push(B);for(let B=Q.start;B<=Q.end;B++)if(B<J.start||B>J.end)q.push(B);return{add:q,remove:$}};var fJ=()=>{let J={},Q=(Y,j)=>{if(!J[Y])J[Y]=new Set;return J[Y].add(j),()=>q(Y,j)},q=(Y,j)=>{J[Y]?.delete(j)};return{on:Q,off:q,emit:(Y,j)=>{J[Y]?.forEach((D)=>{try{D(j)}catch(k){console.error(`[vlist] Error in event handler for "${String(Y)}":`,k)}})},clear:(Y)=>{if(Y)delete J[Y];else for(let j in J)delete J[j]}}};var f2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:q=5000,evictionBuffer:$=200,onEvict:B}=J,Y=new Map,j=0,D=0,k=(b)=>{let N=Y.get(b);if(!N)N={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(b,N);else N.lastAccess=Date.now();return N},W=(b)=>{return Math.floor(b/Q)},T=(b)=>{return b%Q},w=()=>j,G=(b)=>{j=b},H=(b)=>{if(b<0||b>=j)return;let N=W(b),K=Y.get(N);if(!K)return;return K.items[T(b)]},_=(b)=>{if(b<0||b>=j)return!1;let N=W(b),K=Y.get(N);if(!K)return!1;return K.items[T(b)]!==void 0},E=(b,N)=>{let K=W(b),V=k(K),C=T(b),r=V.items[C]===void 0;if(V.items[C]=N,r)V.count++,D++;if(b>=j)j=b+1},M=(b,N)=>{for(let K=0;K<N.length;K++){let V=N[K];if(V!==void 0)E(b+K,V)}},O=(b,N)=>{if(b<0||b>j)return;let K=W(b),V=Array.from(Y.keys()).filter((Z)=>Z>=K).sort((Z,L)=>Z-L),C=[];for(let Z of V){let L=Y.get(Z),A=Z*Q;for(let P=0;P<Q;P++){if(L.items[P]===void 0)continue;let I=A+P;if(I<b)continue;C.push({oldIndex:I,item:L.items[P]})}}for(let{oldIndex:Z}of C){let L=W(Z),A=Y.get(L);if(!A)continue;let P=T(Z);if(A.items[P]!==void 0){if(A.items[P]=void 0,A.count--,D--,A.count===0)Y.delete(L)}}j++;for(let{oldIndex:Z,item:L}of C){let A=Z+1,P=W(A),I=k(P),U=T(A);I.items[U]=L,I.count++,D++}let r=W(b),c=k(r),f=T(b);c.items[f]=N,c.count++,D++},y=(b)=>{if(b<0||b>=j)return!1;let N=W(b),K=Y.get(N),V=T(b);if(!(K!==void 0&&K.items[V]!==void 0))return!1;let r=N,c=Array.from(Y.keys()).filter((Z)=>Z>=r).sort((Z,L)=>Z-L),f=[];for(let Z of c){let L=Y.get(Z),A=Z*Q;for(let P=0;P<Q;P++){if(L.items[P]===void 0)continue;let I=A+P;if(I<=b)continue;f.push({oldIndex:I,item:L.items[P]})}}if(K.items[V]=void 0,K.count--,D--,K.count===0)Y.delete(N);for(let{oldIndex:Z}of f){let L=W(Z),A=Y.get(L);if(!A)continue;let P=T(Z);if(A.items[P]!==void 0){if(A.items[P]=void 0,A.count--,D--,A.count===0)Y.delete(L)}}for(let{oldIndex:Z,item:L}of f){let A=Z-1,P=W(A),I=k(P),U=T(A);I.items[U]=L,I.count++,D++}return j--,!0},F=(b,N)=>{let K=[];for(let V=b;V<=N&&V<j;V++)K.push(H(V));return K},z=(b,N)=>{for(let K=b;K<=N&&K<j;K++)if(!_(K))return!1;return!0},u=()=>{let b=[],N=null,K=Array.from(Y.keys()).sort((V,C)=>V-C);for(let V of K){let C=Y.get(V);if(!C)continue;let r=V*Q;for(let c=0;c<Q;c++){let f=r+c;if(f>=j)break;if(C.items[c]!==void 0)if(N===null)N={start:f,end:f};else if(f===N.end+1)N.end=f;else b.push(N),N={start:f,end:f};else if(N!==null)b.push(N),N=null}}if(N!==null)b.push(N);return b},m=(b,N)=>{let K=[],V=null;for(let C=b;C<=N&&C<j;C++)if(!_(C))if(V===null)V={start:C,end:C};else V.end=C;else if(V!==null)K.push(V),V=null;if(V!==null)K.push(V);return K},h=(b)=>{return Y.has(b)},t=(b)=>{let N=Y.get(b);if(!N)return!1;let K=b*Q,V=Math.min(Q,j-K);return N.count>=V},i=(b)=>{let N=Y.get(b);if(N)N.lastAccess=Date.now()},a=(b,N)=>{if(b>N||Y.size===0)return;let K=Date.now(),V=W(Math.max(0,b)),C=W(Math.min(j-1,N));for(let r=V;r<=C;r++){let c=Y.get(r);if(c)c.lastAccess=K}},q2=(b,N)=>{if(D<=q)return 0;let K=Math.max(0,b-$),V=Math.min(j-1,N+$),C=W(K),r=W(V),c=0,f=[];for(let[Z,L]of Y)if(Z<C||Z>r)c+=L.count,f.push(Z),D-=L.count,Y.delete(Z);if(c>0&&B)B(c,f);return c},B2=()=>{if(D<=q)return 0;let b=Array.from(Y.entries()).sort(([,V],[,C])=>V.lastAccess-C.lastAccess),N=0,K=[];for(let[V,C]of b){if(D<=q)break;N+=C.count,D-=C.count,K.push(V),Y.delete(V)}if(N>0&&B)B(N,K);return N},j2=()=>{return{totalItems:j,cachedItems:D,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:q,memoryEfficiency:j>0?1-D/j:1}},g=()=>D,o=()=>{Y.clear(),D=0};return{chunkSize:Q,maxCachedItems:q,getTotal:w,setTotal:G,get:H,has:_,set:E,setRange:M,insert:O,delete:y,getRange:F,isRangeLoaded:z,getLoadedRanges:u,findUnloadedRanges:m,getChunkIndex:W,isChunkLoaded:h,isChunkFullyLoaded:t,touchChunk:i,touchChunksForRange:a,evictDistant:q2,evictToLimit:B2,getStats:j2,getCachedCount:g,clear:o,reset:()=>{o(),j=0}}},I2=(J)=>{if(J.length===0)return[];let Q=[...J].sort(($,B)=>$.start-B.start),q=[{...Q[0]}];for(let $=1;$<Q.length;$++){let B=Q[$],Y=q[q.length-1];if(B.start<=Y.end+1)Y.end=Math.max(Y.end,B.end);else q.push({...B})}return q},l2=(J,Q,q)=>{let $=Math.floor(J.start/q)*q,B=Math.ceil((J.end+1)/q)*q-1,Y={start:$,end:B};if(Q.length===0)return[Y];let j=[],D=I2(Q),k=Y.start;for(let W of D){if(W.end<k)continue;if(W.start>Y.end)break;if(W.start>k)j.push({start:k,end:Math.min(W.start-1,Y.end)});if(k=W.end+1,k>Y.end)break}if(k<=Y.end)j.push({start:k,end:Y.end});return j};var p2=(J={})=>{let{maskCharacter:Q=QJ,maxSampleSize:q=$J}=J,$=[],B=!1,Y=(T)=>{if(B||T.length===0)return;let w=Math.min(T.length,q);for(let G=0;G<w;G++){let H=T[G];if(!H||typeof H!=="object")continue;let _={},E=!1;for(let[M,O]of Object.entries(H)){if(M.startsWith("_")||M==="id")continue;_[M]=String(O??"").length,E=!0}if(E)$.push(_)}B=!0},j=()=>B,D=(T)=>{let w={id:`${R2}${T}`,[u2]:!0,_index:T};if($.length===0)return w.label=Q.repeat(12),w;let G=$[T%$.length];for(let[H,_]of Object.entries(G))w[H]=Q.repeat(Math.max(1,_));return w};return{analyzeStructure:Y,hasAnalyzedStructure:j,generate:D,generateRange:(T,w)=>{let G=[];for(let H=T;H<=w;H++)G.push(D(H));return G},clear:()=>{$=[],B=!1}}},T2=(J)=>{if(!J||typeof J!=="object")return!1;return J[u2]===!0},a2=(J)=>{return J.filter((Q)=>!T2(Q))};var iJ=50,IJ=(J={})=>{let{adapter:Q,initialItems:q,initialTotal:$,storage:B,placeholder:Y,pageSize:j=iJ,maxConcurrent:D=0,onStateChange:k,onDataChange:W,onItemsLoaded:T,onItemsEvicted:w}=J,G=f2({...B,onEvict:(p,S)=>{w?.(p),a(),i()}}),H=null,_=()=>{if(!H)H=p2(Y);return H},E=new Map,M=!1,O,y=!0,F,z,u=[],m=0,h=new Map,t=()=>{for(let p of h.values())p[1].abort();h.clear()},i=()=>{k?.(K())},a=()=>{W?.()},q2=()=>{E.clear();let p=G.getLoadedRanges();for(let S of p)for(let n=S.start;n<=S.end;n++){let Y2=G.get(n);if(Y2&&!T2(Y2))E.set(Y2.id,n)}},B2=(p,S)=>{if(!T2(S))E.set(S.id,p)},j2=(p)=>{E.delete(p)},g=(p,S)=>{return`${p}-${S}`},o=()=>G.getTotal(),s=()=>G.getCachedCount(),b=()=>M,N=()=>y,K=()=>({total:G.getTotal(),cached:G.getCachedCount(),isLoading:M,pendingRanges:u,error:O,hasMore:y,cursor:F}),V=()=>G,C=()=>_(),r=(p)=>{let S=G.get(p);if(S!==void 0)return S;if(p>=0&&p<G.getTotal())return _().generate(p);return},c=(p)=>{let S=E.get(p);if(S===void 0)return;return G.get(S)},f=(p)=>{return E.get(p)??-1},Z=(p)=>{let S=G.get(p);return S!==void 0&&!T2(S)},L=(p,S)=>{let n=[],Y2=G.getTotal();G.touchChunksForRange(p,Math.min(S,Y2-1));for(let N2=p;N2<=S&&N2<Y2;N2++){let l=G.get(N2);if(l!==void 0)n.push(l);else n.push(_().generate(N2))}return n},A=(p)=>{G.setTotal(p),y=G.getCachedCount()<p,a(),i()},P=(p,S=0,n)=>{if(Q&&p.length>0){let Y2=_();if(!Y2.hasAnalyzedStructure())Y2.analyzeStructure(p)}for(let Y2=0;Y2<p.length;Y2++){let N2=p[Y2];if(N2!==void 0){let l=S+Y2;G.set(l,N2),B2(l,N2)}}if(n!==void 0)G.setTotal(n);else if(S+p.length>G.getTotal())G.setTotal(S+p.length);if(G.getCachedCount()>=G.getTotal()&&G.getTotal()>0)y=!1;a(),i(),T?.(p,S,G.getTotal())},I=(p,S)=>{let n=G.get(p);if(!n)return!1;let Y2=n.id,N2={...n,...S};if(G.set(p,N2),S.id!==void 0&&S.id!==Y2)j2(Y2);return B2(p,N2),a(),i(),!0},U=(p,S)=>{G.insert(S,p),q2(),t(),a(),i()},X=(p)=>{let S=E.get(p);if(S===void 0)return!1;if(!G.delete(S))return!1;return q2(),t(),a(),i(),!0},R=async(p,S)=>{if(!Q)return;let n=G.chunkSize,Y2=Math.floor(p/n),N2=Math.floor(S/n),l=n*2;for(let[U2,V2]of h){let G2=U2.indexOf("-"),A2=parseInt(U2.slice(0,G2),10);if(Math.abs(A2-p)>l)V2[1].abort(),h.delete(U2)}let M2=[],E2=[];for(let U2=Y2;U2<=N2;U2++){let V2=U2*n,G2=V2+n-1,A2=g(V2,G2);if(G.isChunkFullyLoaded(U2))continue;let X2=h.get(A2);if(X2)E2.push(X2[0]);else M2.push({start:V2,end:G2})}if(M2.length===0){if(E2.length>0)await Promise.all(E2);return}if(D>0){let U2=h.size+M2.length;if(U2>D){let V2=(p+S)/2,G2=Math.min(U2-D,h.size);while(G2>0){let W2=null,X2=-1,_2=null;for(let[F2,J2]of h){let K2=F2.indexOf("-"),D2=parseInt(F2.slice(0,K2),10),O2=parseInt(F2.slice(K2+1),10),L2=Math.abs((D2+O2)/2-V2);if(L2>X2)X2=L2,W2=F2,_2=J2[1]}if(W2)_2.abort(),h.delete(W2);G2--}let A2=D-h.size;if(M2.length>A2)M2.sort((W2,X2)=>{let _2=Math.abs((W2.start+W2.end)/2-V2),F2=Math.abs((X2.start+X2.end)/2-V2);return _2-F2}),M2.length=Math.max(0,A2)}}if(M2.length===0){if(E2.length>0)await Promise.all(E2);return}for(let U2 of M2){let V2=g(U2.start,U2.end),G2=new AbortController,A2=(async()=>{u.push(U2),M=!0,O=void 0,i();try{let W2=U2.end-U2.start+1,X2={offset:U2.start,limit:W2,cursor:U2.start===z?F:void 0,signal:G2.signal},_2=await Q.read(X2);if(P(_2.items,U2.start,_2.total),_2.cursor)F=_2.cursor,z=U2.start+_2.items.length;let F2=U2.start+_2.items.length;if(F2>=m){if(m=F2,_2.hasMore!==void 0)y=_2.hasMore;else if(_2.total!==void 0)y=F2<_2.total}}catch(W2){if(W2?.name==="AbortError")return;O=W2 instanceof Error?W2:Error(String(W2))}finally{h.delete(V2);let W2=u.findIndex((X2)=>X2.start===U2.start&&X2.end===U2.end);if(W2>=0)u.splice(W2,1);M=h.size>0,i()}})();h.set(V2,[A2,G2]),E2.push(A2)}await Promise.all(E2)},d=async(p,S)=>{if(G.isRangeLoaded(p,S))return;await R(p,S)},v=async()=>{if(!Q)return;await R(0,j-1)},x=async()=>{if(!Q||M||!y)return!1;let p=G.getCachedCount(),S=G.getTotal(),n=p,Y2=Math.min(n+j-1,S>0?S-1:n+j-1);if(n>=S&&S>0)return y=!1,!1;return await R(n,Y2),G.getCachedCount()>p},e=async()=>{if(G.clear(),G.setTotal(0),E.clear(),H)H.clear();t(),u=[],M=!1,F=void 0,z=void 0,y=!0,m=0,O=void 0,a(),i()},Q2=(p,S)=>{if(G.evictDistant(p,S)>0)q2()},Z2=()=>{G.clear(),E.clear(),F=void 0,z=void 0,O=void 0,u=[],M=!1,a(),i()},$2=()=>{if(G.reset(),E.clear(),H)H.clear();F=void 0,z=void 0,y=!0,m=0,O=void 0,u=[],M=!1,a(),i()};if(q&&q.length>0)P(q,0,$??q.length);else if($!==void 0)G.setTotal($),a(),i();return{getState:K,getTotal:o,getCached:s,getIsLoading:b,getHasMore:N,getStorage:V,getPlaceholders:C,getItem:r,getItemById:c,getIndexById:f,isItemLoaded:Z,getItemsInRange:L,setTotal:A,setItems:P,updateItem:I,insertItem:U,removeItem:X,loadRange:R,ensureRange:d,loadInitial:v,loadMore:x,reload:e,evictDistant:Q2,clear:Z2,reset:$2}};var tJ=(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}},pJ=(J,Q,q={},$="vlist",B=!1,Y)=>{let{autoHide:j=!0,autoHideDelay:D=1000,minThumbSize:k=15,showOnHover:W=!0,showOnViewportEnter:T=!0,clickBehavior:w="scroll"}=q,G=w==="page"?"scroll":w,H=Y??J,_=tJ(q.padding),E=B?_.left:_.top,M=B?_.right:_.bottom,O=B?_.bottom:_.right,y=q.hoverZoneWidth??O+16,F=0,z=0,u=0,m=0,h=!1,t=!1,i=0,a=0,q2=0,B2=null,j2=!1,g=null,o=0,s=0,b=null,N=null,K=null,V=B?"width":"height",C=B?"translateX":"translateY",r=B?(J2)=>J2.clientX:(J2)=>J2.clientY,c=B?"left":"top",f=document.createElement("div"),Z=document.createElement("div"),L=document.createElement("div"),A=B?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",P=()=>{if(H===J)return;let J2=J.offsetTop;f.style[B?"left":"top"]=J2?`calc(var(${A}) + ${J2}px)`:`var(${A})`,L.style[B?"left":"top"]=`${J2}px`},I=()=>{if(f.className=`${$}-scrollbar`,Z.className=`${$}-scrollbar__thumb`,B)f.classList.add(`${$}-scrollbar--horizontal`);if(q.padding!==void 0)H.style.setProperty("--vlist-custom-scrollbar-padding-top",`${_.top}px`),H.style.setProperty("--vlist-custom-scrollbar-padding-right",`${_.right}px`),H.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${_.bottom}px`),H.style.setProperty("--vlist-custom-scrollbar-padding-left",`${_.left}px`);if(q.minThumbSize!==void 0)f.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${k}px`);if(f.appendChild(Z),H.appendChild(f),L.className=`${$}-scrollbar__hover`,B)L.classList.add(`${$}-scrollbar__hover--horizontal`),L.style.height=`${y}px`;else L.style.width=`${y}px`;if(H.appendChild(L),H!==J)P()},U=()=>{if(B2)clearTimeout(B2),B2=null},X=()=>{if(!j)return;U(),B2=setTimeout(d,D)},R=()=>{if(F<=z)return;if(U(),!j2)f.classList.add(`${$}-scrollbar--visible`),j2=!0;if(j&&!h&&!t)X()},d=()=>{if(h||t)return;f.classList.remove(`${$}-scrollbar--visible`),j2=!1},v=(J2,K2)=>{if(F=J2,z=K2,P(),F<=z){f.style.display="none",d();return}f.style.display="";let D2=Math.max(0,z-E-M),O2=z/F;if(u=Math.max(k,O2*D2),Z.style[V]=`${u}px`,m=D2-u,x(q2),!j)R()},x=(J2)=>{if(q2=J2,F<=z||m<=0)return;let K2=F-z,D2=Math.min(1,Math.max(0,J2/K2));Z.style.transform=`${C}(${D2*m}px)`},e=(J2)=>{if(J2.target===Z||G!=="jump"||m<=0)return;let K2=F-z,D2=f.getBoundingClientRect(),O2=r(J2)-D2[c],L2=Math.max(0,Math.min(O2-u/2,m));Q(L2/m*K2),R()},Q2=()=>{if(b!==null)clearTimeout(b),b=null;if(N!==null)cancelAnimationFrame(N),N=null;K=null},Z2=(J2)=>{let K2=m>0?s/J2*m:0;if(o<K2)return-1;if(o>=K2+u)return 1;return 0},$2=()=>{let J2=F-z,K2=Z2(J2);if(K2===0){Q2();return}if(K2===-1){if(s<=0){Q2();return}let D2=Math.max(0,s-z);s=D2,Q(D2)}else{if(s>=J2){Q2();return}let D2=Math.min(J2,s+z);s=D2,Q(D2)}R()},p=(J2)=>{if(K===null){K=J2,N=requestAnimationFrame(p);return}let K2=F-z,D2=J2-K;K=J2;let O2=Z2(K2);if(O2===0){Q2();return}let L2=12*z/1000,b2=Math.min(L2*D2,z);if(O2===-1){if(s<=0){Q2();return}let P2=Math.max(0,s-b2);s=P2,Q(P2)}else{if(s>=K2){Q2();return}let P2=Math.min(K2,s+b2);s=P2,Q(P2)}U(),N=requestAnimationFrame(p)},S=()=>{Q2(),X(),document.removeEventListener("mouseup",S)},n=(J2)=>{if(J2.target===Z||G!=="scroll")return;J2.preventDefault();let K2=f.getBoundingClientRect();o=r(J2)-K2[c],s=q2,$2(),b=setTimeout(()=>{N=requestAnimationFrame(p)},350),document.addEventListener("mouseup",S)},Y2=(J2)=>{J2.preventDefault(),J2.stopPropagation(),h=!0,i=r(J2),a=q2,U(),f.classList.add(`${$}-scrollbar--dragging`),document.addEventListener("mousemove",N2),document.addEventListener("mouseup",l)},N2=(J2)=>{if(!h)return;let K2=r(J2)-i,D2=m>0?K2/m:0,O2=F-z,L2=D2*O2,b2=Math.max(0,Math.min(a+L2,O2));Z.style.transform=`${C}(${b2/O2*m}px)`,Q(b2)},l=()=>{if(h=!1,f.classList.remove(`${$}-scrollbar--dragging`),j&&!t)X();document.removeEventListener("mousemove",N2),document.removeEventListener("mouseup",l)},M2=B?(J2)=>J2.touches[0].clientX:(J2)=>J2.touches[0].clientY,E2=(J2)=>{J2.stopPropagation(),h=!0,i=M2(J2),a=q2,U(),f.classList.add(`${$}-scrollbar--dragging`)},U2=(J2)=>{if(!h)return;J2.preventDefault();let K2=M2(J2)-i,D2=m>0?K2/m:0,O2=F-z,L2=D2*O2,b2=Math.max(0,Math.min(a+L2,O2));Z.style.transform=`${C}(${b2/O2*m}px)`,Q(b2)},V2=()=>{if(h=!1,f.classList.remove(`${$}-scrollbar--dragging`),j)X()},G2=(J2)=>{if(J2.target===Z)return;if(m<=0)return;let K2=J2.touches[0],D2=f.getBoundingClientRect(),O2=(B?K2.clientX:K2.clientY)-D2[c];if(G==="jump"){let L2=F-z,b2=Math.max(0,Math.min(O2-u/2,m));Q(b2/m*L2)}else o=O2,s=q2,$2();R()},A2=()=>{if(T)R()},W2=()=>{if(!h){if(t=!1,j)X()}},X2=()=>{t=!0,U(),R()},_2=()=>{if(t=!1,!h&&j)X()},F2=()=>{if(U(),Q2(),g!==null)cancelAnimationFrame(g),g=null;f.removeEventListener("click",e),f.removeEventListener("mousedown",n),f.removeEventListener("mouseenter",X2),document.removeEventListener("mouseup",S),f.removeEventListener("mouseleave",_2),f.removeEventListener("touchstart",G2),Z.removeEventListener("mousedown",Y2),Z.removeEventListener("touchstart",E2),Z.removeEventListener("touchmove",U2),Z.removeEventListener("touchend",V2),J.removeEventListener("mouseenter",A2),J.removeEventListener("mouseleave",W2),document.removeEventListener("mousemove",N2),document.removeEventListener("mouseup",l),L.removeEventListener("click",e),L.removeEventListener("mousedown",n),L.removeEventListener("mouseenter",X2),L.removeEventListener("mouseleave",_2),L.remove(),H.style.removeProperty("--vlist-custom-scrollbar-padding-top"),H.style.removeProperty("--vlist-custom-scrollbar-padding-right"),H.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),H.style.removeProperty("--vlist-custom-scrollbar-padding-left"),f.remove()};if(I(),f.addEventListener("click",e),f.addEventListener("mousedown",n),f.addEventListener("mouseenter",X2),f.addEventListener("mouseleave",_2),f.addEventListener("touchstart",G2,{passive:!0}),Z.addEventListener("mousedown",Y2),Z.addEventListener("touchstart",E2,{passive:!0}),Z.addEventListener("touchmove",U2,{passive:!1}),Z.addEventListener("touchend",V2,{passive:!0}),J.addEventListener("mouseenter",A2),J.addEventListener("mouseleave",W2),L.addEventListener("click",e),L.addEventListener("mousedown",n),W)L.addEventListener("mouseenter",X2),L.addEventListener("mouseleave",_2);return{show:R,hide:d,updateBounds:v,updatePosition:x,isVisible:()=>j2,destroy:F2}};var hJ=(J=0)=>{let Q=[,,,,,,,,];for(let q=0;q<8;q++)Q[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},h2=(J,Q)=>{let q=performance.now(),$=q-J.lastTime;if($===0)return J;if($>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=q,J}let B=J.samples[J.sampleIndex];if(B.position=Q,B.time=q,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,j=J.samples[Y],D=Q-j.position,k=q-j.time;J.velocity=k>0?D/k:0}return J.lastPosition=Q,J.lastTime=q,J},eJ=(J)=>J.sampleCount>=3,xJ=(J,Q={})=>{let{wheel:q=!0,sensitivity:$=1,smoothing:B=!1,idleTimeout:Y=150,onScroll:j,onIdle:D,scrollElement:k,isX:W=!1}=Q,T=!!k,w=0,G=0,H=T?W?window.innerWidth:window.innerHeight:W?J.clientWidth:J.clientHeight,_=Q.compressed??!1,E=Q.compression,M=hJ(),O=!1,y=null,z=x2(()=>{let A=W?J.scrollLeft:J.scrollTop,P=W?A>=w?"right":"left":A>=w?"down":"up";if(M=h2(M,A),w=A,j)j({scrollTop:w,direction:P,velocity:M.velocity});a()}),m=x2(()=>{let A=J.getBoundingClientRect(),P=W?Math.max(0,-A.left):Math.max(0,-A.top),I=W?P>=w?"right":"left":P>=w?"down":"up";if(M=h2(M,P),w=P,!O)O=!0;if(j)j({scrollTop:w,direction:I,velocity:M.velocity});a()}),h=(A)=>{A.preventDefault()},t=(A)=>{if(A.deltaX)return;A.preventDefault(),J.scrollLeft+=A.deltaY},i=(A)=>{if(!_)return;A.preventDefault();let P=(W?A.deltaX||A.deltaY:A.deltaY)*$,I=w+P;if(B)I=w+P*0.3;if(I=Math.max(0,Math.min(I,G)),I!==w){let U=w,X=W?I>=U?"right":"left":I>=U?"down":"up";if(M=h2(M,I),w=I,!O)O=!0;if(j)j({scrollTop:w,direction:X,velocity:M.velocity});a()}},a=()=>{if(y)clearTimeout(y);y=setTimeout(()=>{if(O=!1,M=hJ(w),D)D()},Y)},q2=(A)=>{if(_)return;if(_=!0,E=A,G=A.virtualSize-H,T)return;if(z.cancel(),J.removeEventListener("scroll",z),!q)J.removeEventListener("wheel",h);else if(W)J.removeEventListener("wheel",t);if(W)J.style.overflowX="hidden";else J.style.overflow="hidden";if(q)J.addEventListener("wheel",i,{passive:!1});let P=W?J.scrollLeft:J.scrollTop;if(P>0){let I=W?E?.actualSize??J.scrollWidth:E?.actualSize??J.scrollHeight;w=P/I*G}if(W)J.scrollLeft=0;else J.scrollTop=0},B2=()=>{if(!_)return;if(_=!1,T){E=void 0;return}if(J.removeEventListener("wheel",i),W)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",z,{passive:!0}),!q)J.addEventListener("wheel",h,{passive:!1});else if(W)J.addEventListener("wheel",t,{passive:!1});if(E&&w>0){let P=w/G*(E.actualSize-H);if(W)J.scrollLeft=P;else J.scrollTop=P}E=void 0},j2=()=>{if(T||_)return w;return W?J.scrollLeft:J.scrollTop},g=(A,P=!1)=>{let I=Math.max(0,Math.min(A,G||1/0));if(T){let U=J.getBoundingClientRect();if(W){let X=U.left+window.scrollX;window.scrollTo({left:X+I,behavior:P?"smooth":"auto"})}else{let X=U.top+window.scrollY;window.scrollTo({top:X+I,behavior:P?"smooth":"auto"})}}else if(_){if(I===w)return;let U=w,X=W?I>=U?"right":"left":I>=U?"down":"up";if(M=h2(M,I),w=I,!O)O=!0;if(j)j({scrollTop:w,direction:X,velocity:M.velocity});a()}else if(W)J.scrollTo({left:I,behavior:P?"smooth":"auto"});else J.scrollTo({top:I,behavior:P?"smooth":"auto"})},o=(A)=>{g(j2()+A)},s=()=>{return j2()<=0},b=(A=0)=>{let P=j2(),I=T||_?G:W?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return P>=I-A},N=()=>{let A=j2(),P=T||_?G:W?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(P<=0)return 0;return Math.min(1,Math.max(0,A/P))},K=(A)=>{if(A.compression)E=A.compression,G=E.virtualSize-H},V=()=>_,C=()=>Math.abs(M.velocity),r=()=>eJ(M),c=()=>O,f=()=>T,Z=(A)=>{if(H=A,E)G=E.virtualSize-H},L=()=>{if(y)clearTimeout(y);if(T)m.cancel(),window.removeEventListener("scroll",m);else z.cancel(),J.removeEventListener("scroll",z),J.removeEventListener("wheel",i),J.removeEventListener("wheel",h),J.removeEventListener("wheel",t)};if(T){if(_&&E)G=E.virtualSize-H;window.addEventListener("scroll",m,{passive:!0})}else if(_&&E){if(G=E.virtualSize-H,W)J.style.overflowX="hidden";else J.style.overflow="hidden";if(q)J.addEventListener("wheel",i,{passive:!1})}else{if(W)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",z,{passive:!0}),!q)J.addEventListener("wheel",h,{passive:!1});else if(W)J.addEventListener("wheel",t,{passive:!1})}return{getScrollTop:j2,scrollTo:g,scrollBy:o,isAtTop:s,isAtBottom:b,getScrollPercentage:N,getVelocity:C,isTracking:r,isScrolling:c,updateConfig:K,enableCompression:q2,disableCompression:B2,isCompressed:V,isWindowMode:f,updateContainerHeight:Z,destroy:L}},x2=(J)=>{let Q=null,q=null,$=(...B)=>{if(q=B,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,q)J(...q)})};return $.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},$};var JQ=50,QQ=0.1;function $Q(J){let Q=0,q=0,$=0;function B(){return $>0?q/$:0}function Y(k){if(Q=k,k>QQ&&k<JQ)q+=k,$++}function j(){let k=J.getTotal();if(k===0)return 0;let W=J.getItemSize();if(W<=0)return 0;let T=J.getContainerSize();if(T<=0)return 0;let w=J.getScrollPosition(),G=typeof J.getColumns==="function"?J.getColumns():1,_=Math.ceil(k/G)*W,M=Math.min(_,H2)-T,O=_-T,y=M>0?O/M:1,F=w*y,z=Math.ceil((F+T)/W);return Math.min(z*G,k)}function D(){let k=J.getTotal(),W=j();return{progress:k>0?Math.min(100,Math.max(0,W/k*100)):0,velocity:Q,velocityAvg:B(),itemCount:W,total:k}}return{getState:D,onVelocity:Y}}export{YJ as toggleSelection,HJ as simpleVisibleRange,m2 as selectItems,jJ as selectAll,wJ as rangesEqual,x2 as rafThrottle,MJ as needsScaling,I2 as mergeRanges,UJ as isSelected,T2 as isPlaceholderItem,vJ as isInRange,v2 as isGroupHeader,KJ as getSelectedItems,NJ as getSelectedIds,w2 as getScaleState,GJ as getScaleInfo,w2 as getScale,CJ as getRangeCount,DJ as getMaxItemsWithoutScaling,a2 as filterPlaceholders,SJ as diffRanges,d2 as deselectItems,EJ as createTableRenderer,XJ as createTableLayout,OJ as createTableHeader,e2 as createStickyHeader,$Q as createStats,f2 as createSparseStorage,k2 as createSizeCache,qJ as createSelectionState,pJ as createScrollbar,xJ as createScrollController,p2 as createPlaceholderManager,LJ as createMeasuredSizeCache,FJ as createMasonryRenderer,AJ as createMasonryLayout,i2 as createGroupedSizeFn,t2 as createGroupLayout,rJ as createGridRenderer,JJ as createGridLayout,fJ as createEmitter,IJ as createAsyncManager,BJ as clearSelection,PJ as clampScrollPosition,TJ as calculateTotalSize,kJ as calculateScrollToIndex,ZJ as calculateScaledVisibleRange,WJ as calculateScaledScrollToIndex,_J as calculateScaledRenderRange,z2 as calculateScaledItemPosition,bJ as calculateRenderRange,l2 as calculateMissingRanges,zJ as calculateItemOffset,VJ as calculateIndexFromScrollPosition,yJ as calculateActualSize,o2 as buildLayoutItems,H2 as MAX_VIRTUAL_SIZE};
1
+ var w2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var u2=(J,Q)=>{let q=0,$=J.length-1;while(q<$){let B=q+$+1>>>1;if(J[B].headerLayoutIndex<=Q)q=B;else $=B-1}return q},s2=(J,Q)=>{let q=0,$=J.length-1;while(q<$){let B=q+$+1>>>1;if(J[B].firstDataIndex<=Q)q=B;else $=B-1}return q},n2=(J,Q,q)=>{if(J===0)return[];let $=[],B=null,j=0,Y=0;for(let W=0;W<J;W++){let z=q?.(W);if(!z)continue;let V=Q(W,z);if(B===null)B=V,j=0;else if(V!==B){let T=W-j;$.push({key:B,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:j,count:T}),Y=Y+1+T,B=V,j=W}}if(B!==null)$.push({key:B,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:j,count:J-j});return $},o2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let q=J.length+Q.length,$=Array(q),B=0;for(let j of Q){$[B]={id:`__group_header_${j.groupIndex}`,__groupHeader:!0,groupKey:j.key,groupIndex:j.groupIndex},B++;for(let Y=0;Y<j.count;Y++)$[B]=J[j.firstDataIndex+Y],B++}return $},i2=(J,Q,q=!1)=>{let $=typeof Q==="number"?(B)=>Q:Q;return(B)=>{let j=J.getEntry(B);if(j.type==="header"){if(q&&j.group.groupIndex===0)return 0;return J.getHeaderHeight(j.group.groupIndex)}return $(j.dataIndex)}},t2=(J,Q,q)=>{let $=n2(J,Q.getGroupForIndex,q),B=J+$.length,j=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return B},get groupCount(){return $.length},get groups(){return $},getEntry:(_)=>{if($.length===0)return{type:"item",dataIndex:_,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let O=u2($,_),E=$[O];if(_===E.headerLayoutIndex)return{type:"header",group:E};let L=_-E.headerLayoutIndex-1;return{type:"item",dataIndex:E.firstDataIndex+L,group:E}},layoutToDataIndex:(_)=>{if($.length===0)return _;let O=u2($,_),E=$[O];if(_===E.headerLayoutIndex)return-1;let L=_-E.headerLayoutIndex-1;return E.firstDataIndex+L},dataToLayoutIndex:(_)=>{if($.length===0)return _;let O=s2($,_),E=$[O],L=_-E.firstDataIndex;return E.headerLayoutIndex+1+L},getGroupAtLayoutIndex:(_)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let O=u2($,_);return $[O]},getGroupAtDataIndex:(_)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let O=s2($,_);return $[O]},getHeaderHeight:typeof j==="number"?(_)=>j:(_)=>{let O=$[_];if(!O)return 0;return j(O.key,_)},rebuild:(_,O)=>{$=n2(_,Q.getGroupForIndex,O??q),B=_+$.length}}};var gJ=(J,Q,q,$,B=0)=>{let j=q?"width":"height",Y=document.createElement("div");return Y.className=`${Q}-sticky-header`,Y.setAttribute("role","presentation"),Y.setAttribute("aria-hidden","true"),Y.style.cssText="z-index:5;pointer-events:none;overflow:hidden;"+(q?`position:absolute;top:0;bottom:0;left:${B||0}px`:`position:relative;top:${B||0}px`),Y.style[j]=`${$}px`,J.insertBefore(Y,J.firstChild),Y},e2=(J,Q,q,$,B,j=!1,Y=0,W,z,V)=>{let T=j?"width":"height",v=j?"height":"width",C=j?"X":"Y",_=(F,G)=>{F.style[T]=`${G}px`},O=z??gJ(J,B,j,0,Y),E=()=>{let F=document.createElement("div");return F.className="sticky-group",F.style.position="absolute",F.style.willChange="transform",F.style[v]="100%",F},L=E(),M=E();O.append(L,M);let y=L,Z=M,H=Q.groups,g=[],k=[],h=[],d=0,Q2=()=>{H=Q.groups,d=H.length,g=Array(d),k=Array(d),h=Array(d);let F=W?W():1;for(let G=0;G<d;G++)g[G]=(V?V(H[G].headerLayoutIndex):q.getOffset(H[G].headerLayoutIndex))*F,k[G]=Q.getHeaderHeight(G),h[G]=k[G]*F};Q2();let o=-1,$2=0,B2=0,j2=-1,r=!1,J2=0,i=!1,R=(F,G)=>{$(F,G);let X=k[G];return _(F,X),X},U=(F)=>{F.replaceChildren(),F.style.transform=""},N=(F)=>{if(F===o)return;if(o=F,$2=0,B2=0,F<0||F>=d){U(y);return}$2=R(y,F),B2=h[F],_(O,$2),y.style.transform=""},D=(F)=>{if(F===J2)return;J2=F;let G=Math.round(F);y.style.transform=`translate${C}(${G}px)`,Z.style.transform=`translate${C}(${G+$2}px)`},w=()=>{J2=0,y.style.transform="",Z.style.transform=""},a=()=>{if(!i)return;let F=y;y=Z,Z=F,o=j2,$2=o>=0?k[o]:0,B2=o>=0?h[o]:0,_(O,$2),U(Z),j2=-1,i=!1,w()},l=()=>{if(!i)return;U(Z),j2=-1,i=!1,w()},f=!!z,K=()=>{if(r)return;if(r=!0,f)O.style.visibility="";else O.style.display=""},b=()=>{if(!r)return;if(r=!1,f)O.style.visibility="hidden";else O.style.display="none";U(y),o=-1,$2=0,B2=0,l()},A=(F)=>{if(d===0){if(i)l();if(!r)K();N(-1);return}if(F<g[0]){b();return}let G=0,X=d-1;while(G<X){let x=G+X+1>>>1;if(g[x]+h[x]<=F)G=x;else X=x-1}if(!r)K();N(G);let u=G+1;if(u<d){let x=g[u]-F;if(x<=0&&x>-B2){if(j2!==u||!i)j2=u,R(Z,u),i=!0;let p=B2>0?x/B2*$2:x;D(p)}else if(x<=-B2){if(i)a()}else if(i)l()}else if(i)l()},P=()=>{Q2();let F=o;if(o=-1,$2=0,B2=0,F>=0)N(F)},I=()=>{O.remove(),o=-1,$2=0,B2=0,j2=-1,r=!1,i=!1};if(!z)O.style.display="none";return{update:A,refresh:P,show:K,hide:b,destroy:I}};var JJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),q=J.gap??0,$=J.isHeaderFn,B={row:0,col:0},j=(E)=>{if(E<=0)return 0;if(!$)return Math.ceil(E/Q);let L=0,M=0,y=0;for(let Z=0;Z<E;Z++)if($(Z)){if(y++,M)L++,M=0;L++,M=0}else if(M++,M>=Q)L++,M=0;if(M)L++;return L},Y=(E)=>{return B.row=W(E),B.col=z(E),B},W=(E)=>{if(!$)return Math.floor(E/Q);let L=0,M=0;for(let y=0;y<=E;y++)if($(y)){if(M)L++,M=0;if(y===E)return L;L++,M=0}else{if(y===E)return L;if(M++,M>=Q)L++,M=0}return console.warn(`⚠️ getRow(${E}) fell through - returning ${L}`),L},z=(E)=>{if(!$)return E%Q;if($(E))return 0;let L=0;for(let M=0;M<=E;M++)if($(M))L=0;else{if(M===E)return L;if(L++,L>=Q)L=0}return L},V=(E,L,M,y)=>{if(M<=0){y.start=0,y.end=-1;return}if(!$){y.start=Math.max(0,E*Q),y.end=Math.min(M-1,(L+1)*Q-1);return}let Z=T(E,L,M);y.start=Z.start,y.end=Z.end},T=(E,L,M)=>{if(M<=0)return{start:0,end:-1};if(!$){let k=Math.max(0,E*Q),h=Math.min(M-1,(L+1)*Q-1);return{start:k,end:h}}let y=-1,Z=-1,H=0,g=0;for(let k=0;k<M;k++){if($(k)){if(g)H++,g=0;if(H>=E&&H<=L){if(y<0)y=k;Z=k}H++,g=0}else{if(H>=E&&H<=L){if(y<0)y=k;Z=k}if(g++,g>=Q)H++,g=0}if(H>L&&!g)break}if(y<0)return{start:0,end:-1};return{start:y,end:Z}},v=(E,L,M)=>{if(L<0||L>=Q)return-1;let y=E*Q+L;if(y<0||y>=M)return-1;return y},C=(E)=>{let L=(Q-1)*q;return Math.max(0,(E-L)/Q)};return{get columns(){return Q},get gap(){return q},update:(E)=>{if(E.columns!==void 0)Q=Math.max(1,Math.floor(E.columns));if(E.gap!==void 0)q=E.gap;if(E.isHeaderFn!==void 0)$=E.isHeaderFn},getTotalRows:j,getPosition:Y,getRow:W,getCol:z,getItemRange:T,fillItemRange:V,getItemIndex:v,getColumnWidth:C,getColumnOffset:(E,L)=>{let M=C(L);return E*(M+q)}}};var b2=16000000;var QJ="x",$J=20,m2="_isPlaceholder",R2="__placeholder_";function C2(J){let Q=J.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let q=0;q<Q.length;q++)Q[q].setAttribute("tabindex","-1")}var y2=(J,Q,q)=>{if(String(q).startsWith(R2))return!1;let $=R2+Q;if(J.has($))return J.delete($),J.add(q),!0;return!1},qJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),d2=(J,Q,q)=>{if(q==="none")return J;let $=new Set(J.selected);if(q==="single"){if($.clear(),Q.length>0)$.add(Q[0])}else for(let B of Q)$.add(B);return{...J,selected:$}},c2=(J,Q)=>{let q=new Set(J.selected);for(let $ of Q)q.delete($);return{...J,selected:q}},YJ=(J,Q,q)=>{if(q==="none")return J;if(J.selected.has(Q))return c2(J,[Q]);else return d2(J,[Q],q)},jJ=(J,Q,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(Q.map(($)=>$.id))}},BJ=(J)=>({...J,selected:new Set});var UJ=(J,Q)=>{return J.selected.has(Q)},NJ=(J)=>{return Array.from(J.selected)},KJ=(J,Q)=>{let q=[];for(let $ of J.selected){let B=Q($);if(B)q.push(B)}return q};var uJ=(J,Q)=>{let q=Q;return{getOffset:($)=>$*J,getSize:($)=>J,indexAtOffset:($)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor($/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:($)=>{q=$},isVariable:()=>!1}},mJ=(J,Q)=>{let q=Q,$=new Float64Array(0),B=(Y)=>{q=Y,$=new Float64Array(Y+1),$[0]=0;for(let W=0;W<Y;W++)$[W+1]=$[W]+J(W)};B(Q);let j=(Y)=>{if(q===0)return 0;if(Y<=0)return 0;if(Y>=$[q])return q-1;let W=0,z=q-1;while(W<z){let V=W+z+1>>>1;if($[V]<=Y)W=V;else z=V-1}return W};return{getOffset:(Y)=>{if(Y<=0)return 0;if(Y>=q)return $[q];return $[Y]},getSize:(Y)=>J(Y),indexAtOffset:(Y)=>j(Y),getTotalSize:()=>$[q]??0,getTotal:()=>q,rebuild:(Y)=>B(Y),isVariable:()=>!0}},k2=(J,Q)=>{if(typeof J==="number")return uJ(J,Q);return mJ(J,Q)},r2=(J,Q,q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let B=0,j=0,Y=Q;while(Y<$&&j<q)j+=J.getSize(Y),B++,Y++;return Math.max(1,B)};var v2=(J,Q,q)=>{let $=Q.getTotalSize(),B=q===!0||$>b2,j=$>b2?b2:$,Y=$>0?j/$:1;return{isCompressed:B,actualSize:$,virtualSize:j,ratio:Y}},ZJ=(J,Q,q,$,B,j)=>{if($===0||Q===0)return j.start=0,j.end=-1,j;if(!B.isCompressed||B.ratio===1){let _=q.indexAtOffset(J),O=q.indexAtOffset(J+Q);if(O<$-1)O++;return j.start=Math.max(0,_),j.end=Math.min($-1,Math.max(0,O)),j}let{virtualSize:Y}=B,W=J/Y,z=q.getTotalSize(),V=W*z,T=q.indexAtOffset(V),v=r2(q,Math.max(0,T),Q,$),C=T+v;return j.start=Math.max(0,T),j.end=Math.min($-1,Math.max(0,C)),j},_J=(J,Q,q,$)=>{if(q===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(q-1,J.end+Q),$},z2=(J,Q,q,$,B,j,Y)=>{if(!j.isCompressed||$===0)return q.getOffset(J);if(j.ratio===1)return q.getOffset(J)-Q;let{virtualSize:W}=j,z=Q/W,V=q.getTotalSize(),T=z*V;return q.getOffset(J)-T},VJ=(J,Q,q,$,B,j="start")=>{if($===0)return 0;let Y;if(B.isCompressed&&B.ratio!==1){Y=J/$*B.virtualSize;let T=Q.getSize(J);switch(j){case"center":Y-=(q-T)/2*B.ratio;break;case"end":Y-=(q-T)*B.ratio;break}return Math.max(0,Y)}Y=Q.getOffset(J);let W=Q.getSize(J);switch(j){case"center":Y-=(q-W)/2;break;case"end":Y-=q-W;break}let z=B.virtualSize-q;return Math.max(0,Math.min(Y,z))},WJ=(J,Q,q,$)=>{if(q===0)return 0;if($.isCompressed&&$.ratio!==1){let B=J/$.virtualSize;return Math.floor(B*q)}return Q.indexAtOffset(J)},DJ=(J,Q)=>{if(typeof Q==="number")return J*Q>b2;return Q.getTotalSize()>b2},GJ=(J)=>{if(J<=0)return 0;return Math.floor(b2/J)},MJ=(J,Q,q)=>{let $=v2(J,Q,q);if(!$.isCompressed)return`No compression needed (${J} items, ${($.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${($.ratio*100).toFixed(1)}% (${J} items, ${($.actualSize/1e6).toFixed(1)}M px → ${($.virtualSize/1e6).toFixed(1)}M px virtual)`};var S2=(J,Q,q)=>{let $=Array.from(Q).sort((Y,W)=>Y-W);if($.length<=1)return;let B=[];for(let Y=0;Y<$.length;Y++){let W=q($[Y]);if(W)B.push(W)}if(B.length<=1)return;let j=J.firstChild;for(let Y=0;Y<B.length;Y++){let W=B[Y];if(W===j)j=j.nextSibling;else J.insertBefore(W,j)}};var dJ=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let Y=document.createElement("div");return Y.setAttribute("role","option"),Y},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}}},cJ=1,rJ=(J,Q,q,$,B,j,Y,W,z=!1,V,T)=>{let v=dJ(),C=new Map,_=j,O=!1,E=0,L="",M=-1,y={selected:!1,focused:!1},Z=(K,b)=>{return y.selected=K,y.focused=b,y},H=`${B}-item ${B}-grid-item`,g=`${B}-group-header`,k=`${B}-item--selected`,h=`${B}-item--focused`,d=`${B}-item--placeholder`,Q2=`${B}-item--replaced`,o=(K,b)=>{if(typeof b==="string")K.innerHTML=b;else K.replaceChildren(b);C2(K)},$2=(K,b,A)=>{K.classList.toggle(k,b),K.classList.toggle(h,A)},B2=(K,b)=>{let A=$.getRow(K);if(b?.compression?.isCompressed)return z2(A,b.scrollPosition,q,b.totalItems,b.containerSize,b.compression,b.rangeStart);return q.getOffset(A)},j2=(K,b)=>{let A=$.getCol(K),I=O&&A===0?0:$.getColumnOffset(A,_),F;if(O){let G=$.getRow(K),X=0,u=-1;for(let x=0;x<K;x++){let p=$.getRow(x);if(p<G&&p!==u){let s=q.getSize(x);X+=s,u=p}}F=X}else F=B2(K,b);if(z)return`translate(${Math.round(F)}px, ${Math.round(I)}px)`;return`translate(${Math.round(I)}px, ${Math.round(F)}px)`},r=(K,b)=>{let A=K.classList.contains(g),P=A?_:$.getColumnWidth(_),I;if(O||A)I=q.getSize(b)-$.gap;else{let F=$.getRow(b);I=q.getSize(F)-$.gap}if(z)K.style.width=`${I}px`,K.style.height=`${P}px`;else K.style.width=`${P}px`,K.style.height=`${I}px`},J2=(K,b,A,P,I)=>{let F=v.acquire(),G=!!b.__groupHeader,X=Z(A,P);if(F.className=G?g:H,F.dataset.index=String(K),F.dataset.id=String(b.id),F.dataset.row=String($.getRow(K)),F.dataset.col=String($.getCol(K)),G)F.setAttribute("role","presentation"),F.removeAttribute("aria-selected"),F.removeAttribute("aria-setsize"),F.removeAttribute("aria-posinset"),F.removeAttribute("id");else if(T===!0){if(F.setAttribute("role","option"),F.ariaSelected=String(A),W)F.id=`${W}-item-${K}`;if(Y){let p=Y();if(p!==M)M=p,L=String(p);F.setAttribute("aria-setsize",L);let s=V?V(K):K+1;F.setAttribute("aria-posinset",String(s))}}else if(F.setAttribute("role","listitem"),F.removeAttribute("aria-selected"),Y){let p=Y();if(p!==M)M=p,L=String(p);F.setAttribute("aria-setsize",L);let s=V?V(K):K+1;F.setAttribute("aria-posinset",String(s))}r(F,K);let u=Q(b,K,X);if(o(F,u),String(b.id).startsWith(R2))F.classList.add(d);return $2(F,A,P),F.style.transform=I,{element:F,lastItem:b,lastSelected:A,lastFocused:P,lastTransform:I,lastSeenFrame:E}},i=(K,b,A,P,I)=>{if(E++,b.start===0&&K.length)O=w2(K[0]);let F=!1;if(Y){let X=Y();if(X!==M)M=X,L=String(X),F=!0}let G=null;for(let X=b.start;X<=b.end;X++){let u=X-b.start,x=K[u];if(!x)continue;let p=A.has(x.id),s=X===P,c=C.get(X);if(c){let V2=c.lastItem!==x,Z2=c.lastSelected!==p,q2=c.lastFocused!==s;if(V2){let S=c.element.dataset.id??"",t=String(x.id),Y2=S.startsWith(R2),N2=t.startsWith(R2);if(!N2&&y2(A,X,x.id))p=!0;let e=Z(p,s),G2=Q(x,X,e);if(o(c.element,G2),c.element.dataset.id=t,c.element.dataset.row=String($.getRow(X)),c.element.dataset.col=String($.getCol(X)),r(c.element,X),c.element.classList.toggle(d,N2),Y2&&!N2)c.element.classList.add(Q2),setTimeout(()=>c.element.classList.remove(Q2),300);if(c.lastItem=x,!x.__groupHeader){let U2=V?V(X):X+1;c.element.setAttribute("aria-posinset",String(U2))}}if(V2||Z2||q2)$2(c.element,p,s),c.element.ariaSelected=String(p),c.lastSelected=p,c.lastFocused=s;let m=j2(X,I);if(c.lastTransform!==m)c.element.style.transform=m,c.lastTransform=m;if(F&&!x.__groupHeader)c.element.setAttribute("aria-setsize",L)}else{if(y2(A,X,x.id))p=!0;let V2=j2(X,I),Z2=J2(X,x,p,s,V2);if(!G)G=document.createDocumentFragment();G.appendChild(Z2.element),C.set(X,Z2)}}if(G)J.appendChild(G);for(let[X,u]of C)if(X>=b.start&&X<=b.end)u.lastSeenFrame=E;else if(E-u.lastSeenFrame>cJ)v.release(u.element),C.delete(X)},R=(K)=>{for(let[b,A]of C){let P=j2(b,K);if(A.lastTransform!==P)A.element.style.transform=P,A.lastTransform=P}},U=(K,b,A,P)=>{let I=C.get(K);if(!I)return;let F=Z(A,P),G=Q(b,K,F);o(I.element,G),$2(I.element,A,P),I.element.dataset.id=String(b.id),I.element.ariaSelected=String(A),r(I.element,K),I.lastItem=b,I.lastSelected=A,I.lastFocused=P},N=(K,b,A)=>{let P=C.get(K);if(!P)return;let I=P.lastSelected!==b,F=P.lastFocused!==A;if(I||F)$2(P.element,b,A),P.lastSelected=b,P.lastFocused=A},D=(K)=>{return C.get(K)?.element},w=(K)=>{if(Math.abs(K-_)<1)return;_=K;for(let[b,A]of C){r(A.element,b);let P=j2(b);A.element.style.transform=P,A.lastTransform=P}},a=()=>{S2(J,C.keys(),(K)=>C.get(K)?.element)},l=()=>{for(let[,K]of C)v.release(K.element);C.clear()};return{render:i,updatePositions:R,updateItem:U,updateItemClasses:N,getElement:D,sortDOM:a,updateContainerWidth:w,clear:l,destroy:()=>{l(),v.clear()}}};var XJ=(J,Q=50,q=1/0,$=!0,B="none")=>{let j=J,Y=[],W=0,z=0,V=()=>{Y=j.map((Z,H)=>({def:Z,index:H,width:0,minWidth:lJ(Z.minWidth??Q,1),maxWidth:Z.maxWidth??q,resizable:Z.resizable??$,offset:0}))},T=()=>{if(B==="none"||W<=0||W>=z)return;if(B==="spacer"){W=z;return}let Z=z-W,H=W;for(let g=0;g<Y.length;g++){let k=Y[g];k.width=f2(k.width+Z*(k.width/H),k.minWidth,k.maxWidth)}C()},v=(Z)=>{if(z=Z,Y.length===0){W=0;return}let H=0,g=0;for(let k=0;k<Y.length;k++){let h=Y[k],d=h.def;if(d.width!==void 0)h.width=f2(d.width,h.minWidth,h.maxWidth),H+=h.width;else g++}if(g){let h=Math.max(0,Z-H)/g;for(let d=0;d<Y.length;d++){let Q2=Y[d];if(Q2.def.width===void 0)Q2.width=f2(h,Q2.minWidth,Q2.maxWidth)}}C(),T()},C=()=>{let Z=0;for(let H=0;H<Y.length;H++){let g=Y[H];g.offset=Z,Z+=g.width}W=Z},_=(Z,H)=>{if(Z<0||Z>=Y.length)return 0;let g=Y[Z];if(!g.resizable)return g.width;let k=f2(H,g.minWidth,g.maxWidth);if(g.width=k,C(),B==="spacer")T();return k},O=(Z)=>{return Y[Z]},E=(Z)=>{if(Y.length===0)return;if(Z<0)return Y[0];if(Z>=W)return Y[Y.length-1];let H=0,g=Y.length-1;while(H<g){let k=H+g>>>1,h=Y[k];if(Z<h.offset)g=k-1;else if(Z>=h.offset+h.width)H=k+1;else return h}return Y[H]},L=(Z)=>{if(Z<0||Z>=Y.length)return 0;return Y[Z].offset},M=(Z)=>{if(Z<0||Z>=Y.length)return 0;return Y[Z].width},y=(Z)=>{j=Z,V()};return V(),{get columns(){return Y},get totalWidth(){return W},resolve:v,updateColumns:y,resizeColumn:_,getColumn:O,getColumnAtX:E,getColumnOffset:L,getColumnWidth:M}},f2=(J,Q,q)=>Math.min(q,Math.max(Q,J)),lJ=(J,Q)=>Math.max(Q,J);var OJ=(J,Q,q,$,B,j)=>{let Y=document.createElement("div");Y.setAttribute("role","rowgroup");let W=document.createElement("div");W.className=`${q}-table-header`,W.setAttribute("role","row"),W.setAttribute("aria-rowindex","1"),W.style.height=`${Q}px`;let z=document.createElement("div");z.className=`${q}-table-header-scroll`,z.setAttribute("role","presentation"),W.appendChild(z),Y.appendChild(W),J.insertBefore(Y,J.firstChild),J.style.setProperty("--vlist-table-header-height",`${Q}px`);let V=[],T=[],v=!0,C=null,_="asc",O=null,E=!1,L=-1,M=0,y=0,Z=0,H=(U,N)=>{let D=document.createElement("div");D.className=`${q}-table-header-cell`,D.setAttribute("role","columnheader"),D.setAttribute("aria-colindex",String(N+1)),D.setAttribute("tabindex",N===0?"0":"-1"),D.dataset.columnKey=U.def.key;let w=U.def.align;if(w==="center")D.classList.add(`${q}-table-header-cell--center`);else if(w==="right")D.classList.add(`${q}-table-header-cell--right`);let a=document.createElement("div");a.className=`${q}-table-header-content`;let l=U.def.header?U.def.header(U.def):U.def.label;if(typeof l==="string")a.textContent=l;else a.appendChild(l);if(D.appendChild(a),U.def.sortable){let f=document.createElement("span");f.className=`${q}-table-header-sort`,f.setAttribute("aria-hidden","true"),D.appendChild(f),T.push(f),D.classList.add(`${q}-table-header-cell--sortable`)}else T.push(null);if(U.resizable){let f=document.createElement("div");f.className=`${q}-table-header-resize`,f.dataset.resizeIndex=String(N),D.appendChild(f)}return D},g=(U)=>{O=U,z.textContent="",V=[],T=[];let N=U.columns;for(let D=0;D<N.length;D++){let w=N[D],a=H(w,D);V.push(a),z.appendChild(a)}if(k(U),C)h(C,_)},k=(U)=>{O=U;let N=U.columns;z.style.width=`${U.totalWidth}px`;for(let D=0;D<V.length&&D<N.length;D++){let w=V[D],a=N[D];w.style.width=`${a.width}px`}},h=(U,N)=>{if(C=U,_=N,!O)return;let D=O.columns;for(let w=0;w<T.length&&w<D.length;w++){let a=T[w];if(!a)continue;if(D[w].def.key===U)a.textContent=N==="asc"?"▲":"▼",a.style.opacity="0.7",V[w].setAttribute("aria-sort",N==="asc"?"ascending":"descending");else a.textContent="",a.style.opacity="0",V[w].removeAttribute("aria-sort")}},d=(U)=>{z.style.transform=`translateX(${-U}px)`},Q2=(U)=>{let N=U.target;if(!N.dataset.resizeIndex)return;if(U.preventDefault(),U.stopPropagation(),L=+N.dataset.resizeIndex,!O)return;let D=O.getColumn(L);if(!D?.resizable)return;E=!0,M=U.clientX,y=D.width,J.classList.add(`${q}--col-resizing`),J.style.cursor="col-resize",N.classList.add(`${q}-table-header-resize--active`),N.setPointerCapture(U.pointerId),N.addEventListener("pointermove",o),N.addEventListener("pointerup",$2),N.addEventListener("pointercancel",$2)},o=(U)=>{if(!E||!O)return;let N=U.clientX-M;if(Math.abs(N)<1)return;let D=Math.max(0,y+N);$(L,D)},$2=(U)=>{if(!E)return;let N=U.target;N.removeEventListener("pointermove",o),N.removeEventListener("pointerup",$2),N.removeEventListener("pointercancel",$2);try{N.releasePointerCapture(U.pointerId)}catch{}N.classList.remove(`${q}-table-header-resize--active`),J.classList.remove(`${q}--col-resizing`),J.style.cursor="",E=!1,L=-1},B2=(U)=>{let N=U.target;if(N.dataset.resizeIndex)return;if(E)return;let D=N;while(D&&!D.dataset.columnKey)if(D=D.parentElement,D===W||D===null)return;let w=D.dataset.columnKey;if(!O)return;let a=O.columns,l=-1;for(let K=0;K<a.length;K++)if(a[K].def.key===w){l=K;break}if(l===-1)return;let f=a[l];if(j)j({key:w,index:l,event:U});if(f.def.sortable&&B){let K;if(C===w)K=_==="asc"?"desc":null;else K="asc";B({key:w,index:l,direction:K})}},j2=(U)=>{if(U<0||U>=V.length)return;V[Z]?.setAttribute("tabindex","-1"),Z=U;let N=V[Z];N.setAttribute("tabindex","0"),N.focus()},r=(U)=>{let N=U.key;if(N==="ArrowRight"){if(U.ctrlKey||U.metaKey){if(!O)return;let D=O.getColumn(Z);if(D?.resizable)$(Z,D.width+10),U.preventDefault()}else if(Z<V.length-1)j2(Z+1),U.preventDefault();U.stopPropagation();return}if(N==="ArrowLeft"){if(U.ctrlKey||U.metaKey){if(!O)return;let D=O.getColumn(Z);if(D?.resizable)$(Z,D.width-10),U.preventDefault()}else if(Z>0)j2(Z-1),U.preventDefault();U.stopPropagation();return}if(N==="Home"){j2(0),U.preventDefault(),U.stopPropagation();return}if(N==="End"){j2(V.length-1),U.preventDefault(),U.stopPropagation();return}if(N==="Enter"||N===" "){if(!O)return;let D=O.getColumn(Z);if(D?.def.sortable&&B){let w;if(C===D.def.key)w=_==="asc"?"desc":null;else w="asc";B({key:D.def.key,index:Z,direction:w}),U.preventDefault()}U.stopPropagation();return}if(N==="ArrowDown"){J.focus(),U.preventDefault(),U.stopPropagation();return}};return W.addEventListener("pointerdown",Q2),W.addEventListener("click",B2),W.addEventListener("keydown",r),{element:W,update:k,updateSort:h,rebuild:g,show:()=>{if(v)return;v=!0,W.style.display=""},hide:()=>{if(!v)return;v=!1,W.style.display="none"},destroy:()=>{W.removeEventListener("pointerdown",Q2),W.removeEventListener("click",B2),W.removeEventListener("keydown",r),J.style.removeProperty("--vlist-table-header-height"),Y.remove(),V=[],T=[],O=null,v=!1},syncScroll:d}};var aJ=()=>{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}}},EJ=(J,Q,q,$,B,j,Y,W,z)=>{let V=aJ(),T=new Map,v=-1,C=q,_=null,O=null,E=null,L=(G,X)=>{O=G,E=X},M=(G,X)=>{X?G.setAttribute("aria-selected","true"):G.removeAttribute("aria-selected")},y=(G,X,u,x)=>{G.setAttribute("role",X),G.setAttribute("data-id",String(u)),G.setAttribute("data-index",String(x))},Z=(G)=>String(G).startsWith("__placeholder_"),H=`${B}-item ${B}-table-row`,g=`${B}-item--selected`,k=`${B}-item--focused`,h=`${B}-table-cell`,d=`${B}-table-cell--center`,Q2=`${B}-table-cell--right`,o=`${B}-table-cell-skeleton`,$2=`${B}-item--odd`,B2=`${B}-item--placeholder`,j2=`${B}-item--replaced`,r=`${B}-table-row ${B}-table-group-header`,J2=`${B}-table-group-header-content`,i=(G,X,u,x,p=!1)=>{if(u.def.cell){let s=u.def.cell(X,u.def,x);if(typeof s==="string")G.innerHTML=s;else G.replaceChildren(s)}else{let s=X[u.def.key],c=s!=null?String(s):"";if(p&&c)G.innerHTML=`<span>${c}</span>`;else G.textContent=c}if(p&&G.firstElementChild===null){G.replaceChildren();let s=document.createElement("span");s.className=o,G.appendChild(s)}},R=(G,X,u,x,p=!1)=>{let s=H;if(W){if(_){let c=_(X);if(c>=0&&(c&1)===1)s+=` ${$2}`}else if((X&1)===1)s+=` ${$2}`}if(p)s+=` ${B2}`;if(u)s+=` ${g}`;if(x)s+=` ${k}`;G.className=s},U=(G,X,u)=>{if(u?.compression?.isCompressed)return Math.round(z2(G,u.scrollPosition,X,u.totalItems,u.containerSize,u.compression,u.rangeStart));return X.getOffset(G)},N=(G,X)=>{let u=X.def.align;if(u==="center")G.classList.add(d),G.classList.remove(Q2);else if(u==="right")G.classList.add(Q2),G.classList.remove(d);else G.classList.remove(d,Q2)},D=(G,X)=>{let x=C.columns.length;if(X.length===x)return X;let p=[];for(let s=0;s<x;s++){let c;if(s<X.length)c=X[s];else c=document.createElement("div"),c.className=h,G.appendChild(c);p.push(c)}for(let s=x;s<X.length;s++)X[s].remove();return p},w=(G,X,u,x)=>{let p=V.acquire(),s=G,c=u.getSize(X),V2=U(X,u,x);p.style.cssText=`width:${C.totalWidth}px;height:${c}px;transform:translateY(${V2}px)`,p.className=r,y(p,"presentation",G.id,X),p.removeAttribute("aria-selected"),p.removeAttribute("aria-rowindex"),p.replaceChildren();let Z2=document.createElement("div");if(Z2.className=J2,E){let q2=E(s.groupKey,s.groupIndex);if(typeof q2==="string")Z2.innerHTML=q2;else Z2.appendChild(q2)}return p.appendChild(Z2),{element:p,cells:[],index:X,isGroupHeader:!0,_lastItem:G,lastItemId:G.id,lastSelected:!1,lastFocused:!1,lastOffset:V2,lastHeight:c}},a=(G,X,u,x,p,s)=>{let c=V.acquire(),V2=p.getSize(X),Z2=U(X,p,s),q2=Z(G.id);c.style.cssText=`width:${C.totalWidth}px;height:${V2}px;transform:translateY(${Z2}px)`,R(c,X,u,x,q2),y(c,"row",G.id,X),c.id=`${j}-item-${X}`,c.setAttribute("aria-rowindex",String(X+2)),M(c,u);let m=D(c,[]),S=C.columns;for(let t=0;t<m.length&&t<S.length;t++){let Y2=m[t],N2=S[t];Y2.style.cssText=`left:${N2.offset}px;width:${N2.width}px`,Y2.setAttribute("role","gridcell"),Y2.setAttribute("aria-colindex",String(t+1)),N(Y2,N2),i(Y2,G,N2,X,q2)}return{element:c,cells:m,index:X,isGroupHeader:!1,_lastItem:G,lastItemId:G.id,lastSelected:u,lastFocused:x,lastOffset:Z2,lastHeight:V2}},l=(G,X,u,x,p)=>{let s=!1,c=Y();if(c!==v)v=c,s=!0;let V2=null,Z2=Q();_=typeof W==="string"&&z?z():null;for(let q2=X.start;q2<=X.end;q2++){let m=q2-X.start,S=G[m];if(!S)continue;let t=u.has(S.id),Y2=q2===x,N2=O?O(S):!1,e=T.get(q2);if(e){if(e.isGroupHeader!==N2){V.release(e.element),T.delete(q2);let G2=N2?w(S,q2,Z2,p):a(S,q2,t,Y2,Z2,p);if(T.set(q2,G2),!V2)V2=document.createDocumentFragment();V2.appendChild(G2.element);continue}if(N2){if(e._lastItem!==S){let M2=S,X2=e.element.firstElementChild;if(X2&&E){let A2=E(M2.groupKey,M2.groupIndex);if(typeof A2==="string")X2.innerHTML=A2;else X2.replaceChildren(A2)}e.element.setAttribute("data-id",String(S.id)),e._lastItem=S,e.lastItemId=S.id}let F2=U(q2,Z2,p);if(e.lastOffset!==F2)e.lastOffset=F2,e.element.style.transform=`translateY(${F2}px)`;let U2=Z2.getSize(q2);if(e.lastHeight!==U2)e.lastHeight=U2,e.element.style.height=`${U2}px`}else{let G2=e._lastItem!==S,F2=e.lastSelected!==t,U2=e.lastFocused!==Y2;if(G2){let A2=e.lastItemId!=null&&Z(e.lastItemId),K2=Z(S.id);if(!K2&&y2(u,q2,S.id))t=!0;let O2=C.columns;for(let W2=0;W2<e.cells.length&&W2<O2.length;W2++)i(e.cells[W2],S,O2[W2],q2,K2);if(R(e.element,q2,t,Y2,K2),e.element.setAttribute("data-id",String(S.id)),M(e.element,t),A2&&!K2)e.element.classList.add(j2),setTimeout(()=>{e.element.classList.remove(j2)},300);e._lastItem=S,e.lastItemId=S.id,e.lastSelected=t,e.lastFocused=Y2}else if(F2||U2)R(e.element,q2,t,Y2,Z(S.id)),M(e.element,t),e.lastSelected=t,e.lastFocused=Y2;let M2=U(q2,Z2,p);if(e.lastOffset!==M2)e.lastOffset=M2,e.element.style.transform=`translateY(${M2}px)`;let X2=Z2.getSize(q2);if(e.lastHeight!==X2)e.lastHeight=X2,e.element.style.height=`${X2}px`;if(s)e.element.setAttribute("aria-rowindex",String(q2+2))}}else{if(y2(u,q2,S.id))t=!0;let G2=N2?w(S,q2,Z2,p):a(S,q2,t,Y2,Z2,p);if(T.set(q2,G2),!V2)V2=document.createDocumentFragment();V2.appendChild(G2.element)}}if(V2)J.appendChild(V2);for(let[q2,m]of T)if(q2<X.start||q2>X.end)V.release(m.element),T.delete(q2)},f=(G)=>{let X=Q();for(let[u,x]of T){let p=U(u,X,G);if(x.lastOffset!==p)x.lastOffset=p,x.element.style.transform=`translateY(${p}px)`}},K=(G,X,u,x)=>{let p=T.get(G);if(!p)return;if(p.isGroupHeader)return;let s=C.columns;for(let c=0;c<p.cells.length&&c<s.length;c++)i(p.cells[c],X,s[c],G);p.element.setAttribute("data-id",String(X.id)),p._lastItem=X,p.lastItemId=X.id,R(p.element,G,u,x),M(p.element,u),p.lastSelected=u,p.lastFocused=x},b=(G,X,u)=>{let x=T.get(G);if(!x)return;if(x.isGroupHeader)return;let p=x.lastSelected!==X,s=x.lastFocused!==u;if(p||s)R(x.element,G,X,u),M(x.element,X),x.lastSelected=X,x.lastFocused=u},A=(G)=>{C=G;let X=G.columns;for(let[,u]of T)if(u.element.style.width=`${G.totalWidth}px`,u.cells.length>0)for(let x=0;x<u.cells.length&&x<X.length;x++){let p=u.cells[x],s=X[x];p.style.left=`${s.offset}px`,p.style.width=`${s.width}px`}},P=(G)=>{return T.get(G)?.element},I=()=>{for(let[,G]of T)V.release(G.element);T.clear(),v=-1};return{render:l,updatePositions:f,updateItem:K,updateItemClasses:b,getElement:P,updateColumnLayout:A,setGroupHeaderFn:L,clear:I,destroy:()=>{I(),V.clear()}}};var AJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),q=J.gap??0,$=J.containerSize,B=J.crossOffset??0,j=J.mainOffset??0,Y=0,W=[],z=()=>{let M=(Q-1)*q;Y=Math.max(0,($-M)/Q),W=Array(Q);let y=Y+q;for(let Z=0;Z<Q;Z++)W[Z]=B+Z*y};z();let V=[],T=0,v=[],C=(M,y)=>{if(M<=0)return T=0,V=[],[];let Z=Array(Q).fill(j),H=Array(Q);for(let h=0;h<Q;h++)H[h]=[];let g=Array(M);for(let h=0;h<M;h++){let d=0,Q2=Z[0];for(let B2=1;B2<Q;B2++){let j2=Z[B2];if(j2<Q2)Q2=j2,d=B2}let o=y(h),$2=Z[d];g[h]={index:h,x:W[d],y:$2,lane:d,size:o,crossSize:Y},H[d].push(h),Z[d]=$2+o+q}V=H;let k=0;for(let h=0;h<Q;h++){let d=Z[h],Q2=d>0?d-q:0;if(Q2>k)k=Q2}return T=k,g},_=(M)=>{if(M.length===0)return T;if(T)return T;let y=Array(Q).fill(0);for(let H of M){let g=H.y+H.size,k=y[H.lane];if(g>k)y[H.lane]=g}let Z=0;for(let H=0;H<Q;H++)if(y[H]>Z)Z=y[H];return Z},O=(M,y,Z)=>{if(M.length===0||Z<=y)return v.length=0,v;if(V.length===0||V.length!==Q)return E(M,y,Z);v.length=0;for(let H=0;H<Q;H++){let g=V[H],k=g.length;if(!k)continue;let h=0,d=k;while(h<d){let Q2=h+d>>>1,o=M[g[Q2]];if(o.y+o.size<=y)h=Q2+1;else d=Q2}for(let Q2=h;Q2<k;Q2++){let o=M[g[Q2]];if(o.y>=Z)break;v.push(o)}}return v},E=(M,y,Z)=>{v.length=0;for(let H of M)if(H.y+H.size>y&&H.y<Z)v.push(H);return v};return{get columns(){return Q},get gap(){return q},get containerSize(){return $},update:(M)=>{let y=!1;if(M.columns!==void 0){let Z=Math.max(1,Math.floor(M.columns));if(Z!==Q)Q=Z,y=!0}if(M.gap!==void 0&&M.gap!==q)q=M.gap,y=!0;if(M.containerSize!==void 0&&M.containerSize!==$)$=M.containerSize,y=!0;if(M.crossOffset!==void 0&&M.crossOffset!==B)B=M.crossOffset,y=!0;if(M.mainOffset!==void 0&&M.mainOffset!==j)j=M.mainOffset,y=!0;if(y)z()},calculateLayout:C,getTotalSize:_,getVisibleItems:O}};var sJ=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let Y=document.createElement("div");return Y.setAttribute("role","option"),Y},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}}},nJ=1,FJ=(J,Q,q,$=!1,B,j,Y,W)=>{let z=sJ(),V=new Map,T=new Set,v=0,C="",_=-1,O={selected:!1,focused:!1},E=(r,J2)=>{return O.selected=r,O.focused=J2,O},L=`${q}-item ${q}-masonry-item`,M=`${q}-group-header`,y=`${q}-item--selected`,Z=`${q}-item--focused`,H=(r,J2)=>{if(typeof J2==="string")r.innerHTML=J2;else r.replaceChildren(J2);C2(r)},g=(r,J2,i)=>{r.classList.toggle(y,J2),r.classList.toggle(Z,i)},k=(r,J2)=>{if($)r.style.transform=`translate(${Math.round(J2.y)}px, ${Math.round(J2.x)}px)`;else r.style.transform=`translate(${Math.round(J2.x)}px, ${Math.round(J2.y)}px)`},h=(r,J2)=>{if($)r.style.width=`${J2.size}px`,r.style.height=`${J2.crossSize}px`;else r.style.width=`${J2.crossSize}px`,r.style.height=`${J2.size}px`},d=(r,J2,i,R,U)=>{let N=z.acquire(),D=J2.__groupHeader,w=E(R,U);if(N.className=D?M:L,N.dataset.index=String(r),N.dataset.id=String(J2.id),N.dataset.lane=String(i.lane),D)N.setAttribute("role","presentation"),N.removeAttribute("aria-selected"),N.removeAttribute("aria-setsize"),N.removeAttribute("aria-posinset"),N.removeAttribute("id");else if(W===!0){if(N.setAttribute("role","option"),N.ariaSelected=String(R),j)N.id=`${j}-item-${r}`;if(B){let l=B();if(l!==_)_=l,C=String(l);N.setAttribute("aria-setsize",C);let f=Y?Y(r):r+1;N.setAttribute("aria-posinset",String(f))}}else if(N.setAttribute("role","listitem"),N.removeAttribute("aria-selected"),B){let l=B();if(l!==_)_=l,C=String(l);N.setAttribute("aria-setsize",C);let f=Y?Y(r):r+1;N.setAttribute("aria-posinset",String(f))}h(N,i);let a=Q(J2,r,w);return H(N,a),g(N,R,U),k(N,i),{element:N,lastItem:J2,lastSelected:R,lastFocused:U,lastY:i.y,lastX:i.x,lastSize:i.size,lastCrossSize:i.crossSize,lastSeenFrame:v}},Q2=(r,J2,i,R)=>{v++,T.clear();for(let N=0;N<J2.length;N++)T.add(J2[N].index);let U=null;for(let N=0;N<J2.length;N++){let D=J2[N],w=D.index,a=r(w);if(!a)continue;let l=i.has(a.id),f=w===R,K=V.get(w);if(K){let b=K.lastItem!==a,A=K.lastSelected!==l,P=K.lastFocused!==f,I=K.lastY!==D.y||K.lastX!==D.x,F=K.lastSize!==D.size||K.lastCrossSize!==D.crossSize;if(b){let G=E(l,f),X=Q(a,w,G);if(H(K.element,X),K.element.dataset.id=String(a.id),K.lastItem=a,!a.__groupHeader){let x=Y?Y(w):w+1;K.element.setAttribute("aria-posinset",String(x))}}if(b||A||P)g(K.element,l,f),K.element.ariaSelected=String(l),K.lastSelected=l,K.lastFocused=f;if(F)h(K.element,D),K.lastSize=D.size,K.lastCrossSize=D.crossSize;if(I)k(K.element,D),K.lastY=D.y,K.lastX=D.x}else{let b=d(w,a,D,l,f);if(!U)U=document.createDocumentFragment();U.appendChild(b.element),V.set(w,b)}}if(U)J.appendChild(U);for(let[N,D]of V)if(T.has(N))D.lastSeenFrame=v;else if(v-D.lastSeenFrame>nJ)z.release(D.element),V.delete(N)},o=()=>{for(let r of V.values())z.release(r.element);V.clear(),J.innerHTML=""};return{render:Q2,getElement:(r)=>V.get(r)?.element,updateItemClasses:(r,J2,i)=>{let R=V.get(r);if(!R)return;let U=R.lastSelected!==J2,N=R.lastFocused!==i;if(U||N)g(R.element,J2,i),R.lastSelected=J2,R.lastFocused=i},sortDOM:()=>{S2(J,V.keys(),(r)=>V.get(r)?.element)},clear:o,destroy:()=>{o(),z.clear()}}};var LJ=(J,Q)=>{let q=new Map,$=(j)=>q.get(j)??J,B=k2($,Q);return{getOffset(j){return B.getOffset(j)},getSize(j){return $(j)},indexAtOffset(j){return B.indexAtOffset(j)},getTotalSize(){return B.getTotalSize()},getTotal(){return B.getTotal()},rebuild(j){if(j<B.getTotal()){for(let Y of q.keys())if(Y>=j)q.delete(Y)}B=k2($,j)},isVariable(){return!0},setMeasuredSize(j,Y){q.set(j,Y)},isMeasured(j){return q.has(j)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var HJ=(J,Q,q,$,B,j)=>{if($===0||Q===0)return j.start=0,j.end=-1,j;let Y=q.indexAtOffset(J),W=q.indexAtOffset(J+Q);if(W<$-1)W++;return j.start=Math.max(0,Y),j.end=Math.min($-1,Math.max(0,W)),j},bJ=(J,Q,q,$)=>{if(q===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(q-1,J.end+Q),$},RJ=(J,Q,q,$,B,j)=>{if($===0)return 0;let Y=Math.max(0,Math.min(J,$-1)),W=Q.getOffset(Y),z=Q.getSize(Y),V=Q.getTotalSize(),T=Math.max(0,V-q),v;switch(j){case"center":v=W-q/2+z/2;break;case"end":v=W-q+z;break;case"start":default:v=W;break}return Math.max(0,Math.min(v,T))},TJ=(J,Q,q)=>{if(q&&q.isCompressed)return q.virtualSize;return Q.getTotalSize()},yJ=(J,Q)=>{return Q.getTotalSize()},zJ=(J,Q)=>{return Q.getOffset(J)},PJ=(J,Q,q)=>{let $=Math.max(0,Q-q);return Math.max(0,Math.min(J,$))};var kJ=(J,Q,q,$,B="start",j,Y=RJ)=>{return Y(J,Q,q,$,j,B)},vJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},wJ=(J,Q)=>{return J>=Q.start&&J<=Q.end},CJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var SJ=(J,Q)=>{let q=[],$=[];for(let B=J.start;B<=J.end;B++)if(B<Q.start||B>Q.end)$.push(B);for(let B=Q.start;B<=Q.end;B++)if(B<J.start||B>J.end)q.push(B);return{add:q,remove:$}};var fJ=()=>{let J={},Q=(j,Y)=>{if(!J[j])J[j]=new Set;return J[j].add(Y),()=>q(j,Y)},q=(j,Y)=>{J[j]?.delete(Y)};return{on:Q,off:q,emit:(j,Y)=>{J[j]?.forEach((W)=>{try{W(Y)}catch(z){console.error(`[vlist] Error in event handler for "${String(j)}":`,z)}})},clear:(j)=>{if(j)delete J[j];else for(let Y in J)delete J[Y]}}};var I2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:q=5000,evictionBuffer:$=200,onEvict:B}=J,j=new Map,Y=0,W=0,z=(R)=>{let U=j.get(R);if(!U)U={items:Array(Q),count:0,lastAccess:Date.now()},j.set(R,U);else U.lastAccess=Date.now();return U},V=(R)=>{return Math.floor(R/Q)},T=(R)=>{return R%Q},v=()=>Y,C=(R)=>{Y=R},_=(R)=>{if(R<0||R>=Y)return;let U=V(R),N=j.get(U);if(!N)return;return N.items[T(R)]},O=(R)=>{if(R<0||R>=Y)return!1;let U=V(R),N=j.get(U);if(!N)return!1;return N.items[T(R)]!==void 0},E=(R,U)=>{let N=V(R),D=z(N),w=T(R),a=D.items[w]===void 0;if(D.items[w]=U,a)D.count++,W++;if(R>=Y)Y=R+1},L=(R,U)=>{for(let N=0;N<U.length;N++){let D=U[N];if(D!==void 0)E(R+N,D)}},M=(R,U)=>{if(R<0||R>Y)return;let N=V(R),D=Array.from(j.keys()).filter((K)=>K>=N).sort((K,b)=>K-b),w=[];for(let K of D){let b=j.get(K),A=K*Q;for(let P=0;P<Q;P++){if(b.items[P]===void 0)continue;let I=A+P;if(I<R)continue;w.push({oldIndex:I,item:b.items[P]})}}for(let{oldIndex:K}of w){let b=V(K),A=j.get(b);if(!A)continue;let P=T(K);if(A.items[P]!==void 0){if(A.items[P]=void 0,A.count--,W--,A.count===0)j.delete(b)}}Y++;for(let{oldIndex:K,item:b}of w){let A=K+1,P=V(A),I=z(P),F=T(A);I.items[F]=b,I.count++,W++}let a=V(R),l=z(a),f=T(R);l.items[f]=U,l.count++,W++},y=(R)=>{if(R<0||R>=Y)return!1;let U=V(R),N=j.get(U),D=T(R);if(!(N!==void 0&&N.items[D]!==void 0))return!1;let a=U,l=Array.from(j.keys()).filter((K)=>K>=a).sort((K,b)=>K-b),f=[];for(let K of l){let b=j.get(K),A=K*Q;for(let P=0;P<Q;P++){if(b.items[P]===void 0)continue;let I=A+P;if(I<=R)continue;f.push({oldIndex:I,item:b.items[P]})}}if(N.items[D]=void 0,N.count--,W--,N.count===0)j.delete(U);for(let{oldIndex:K}of f){let b=V(K),A=j.get(b);if(!A)continue;let P=T(K);if(A.items[P]!==void 0){if(A.items[P]=void 0,A.count--,W--,A.count===0)j.delete(b)}}for(let{oldIndex:K,item:b}of f){let A=K-1,P=V(A),I=z(P),F=T(A);I.items[F]=b,I.count++,W++}return Y--,!0},Z=(R,U)=>{let N=[];for(let D=R;D<=U&&D<Y;D++)N.push(_(D));return N},H=(R,U)=>{for(let N=R;N<=U&&N<Y;N++)if(!O(N))return!1;return!0},g=()=>{let R=[],U=null,N=Array.from(j.keys()).sort((D,w)=>D-w);for(let D of N){let w=j.get(D);if(!w)continue;let a=D*Q;for(let l=0;l<Q;l++){let f=a+l;if(f>=Y)break;if(w.items[l]!==void 0)if(U===null)U={start:f,end:f};else if(f===U.end+1)U.end=f;else R.push(U),U={start:f,end:f};else if(U!==null)R.push(U),U=null}}if(U!==null)R.push(U);return R},k=(R,U)=>{let N=[],D=null;for(let w=R;w<=U&&w<Y;w++)if(!O(w))if(D===null)D={start:w,end:w};else D.end=w;else if(D!==null)N.push(D),D=null;if(D!==null)N.push(D);return N},h=(R)=>{return j.has(R)},d=(R)=>{let U=j.get(R);if(!U)return!1;let N=R*Q,D=Math.min(Q,Y-N);return U.count>=D},Q2=(R)=>{let U=j.get(R);if(U)U.lastAccess=Date.now()},o=(R,U)=>{if(R>U||j.size===0)return;let N=Date.now(),D=V(Math.max(0,R)),w=V(Math.min(Y-1,U));for(let a=D;a<=w;a++){let l=j.get(a);if(l)l.lastAccess=N}},$2=(R,U)=>{if(W<=q)return 0;let N=Math.max(0,R-$),D=Math.min(Y-1,U+$),w=V(N),a=V(D),l=0,f=[];for(let[K,b]of j)if(K<w||K>a)l+=b.count,f.push(K),W-=b.count,j.delete(K);if(l>0&&B)B(l,f);return l},B2=()=>{if(W<=q)return 0;let R=Array.from(j.entries()).sort(([,D],[,w])=>D.lastAccess-w.lastAccess),U=0,N=[];for(let[D,w]of R){if(W<=q)break;U+=w.count,W-=w.count,N.push(D),j.delete(D)}if(U>0&&B)B(U,N);return U},j2=()=>{return{totalItems:Y,cachedItems:W,cachedChunks:j.size,chunkSize:Q,maxCachedItems:q,memoryEfficiency:Y>0?1-W/Y:1}},r=()=>W,J2=()=>{j.clear(),W=0};return{chunkSize:Q,maxCachedItems:q,getTotal:v,setTotal:C,get:_,has:O,set:E,setRange:L,insert:M,delete:y,getRange:Z,isRangeLoaded:H,getLoadedRanges:g,findUnloadedRanges:k,getChunkIndex:V,isChunkLoaded:h,isChunkFullyLoaded:d,touchChunk:Q2,touchChunksForRange:o,evictDistant:$2,evictToLimit:B2,getStats:j2,getCachedCount:r,clear:J2,reset:()=>{J2(),Y=0}}},p2=(J)=>{if(J.length===0)return[];let Q=[...J].sort(($,B)=>$.start-B.start),q=[{...Q[0]}];for(let $=1;$<Q.length;$++){let B=Q[$],j=q[q.length-1];if(B.start<=j.end+1)j.end=Math.max(j.end,B.end);else q.push({...B})}return q},l2=(J,Q,q)=>{let $=Math.floor(J.start/q)*q,B=Math.ceil((J.end+1)/q)*q-1,j={start:$,end:B};if(Q.length===0)return[j];let Y=[],W=p2(Q),z=j.start;for(let V of W){if(V.end<z)continue;if(V.start>j.end)break;if(V.start>z)Y.push({start:z,end:Math.min(V.start-1,j.end)});if(z=V.end+1,z>j.end)break}if(z<=j.end)Y.push({start:z,end:j.end});return Y};var h2=(J={})=>{let{maskCharacter:Q=QJ,maxSampleSize:q=$J}=J,$=[],B=!1,j=(T)=>{if(B||T.length===0)return;let v=Math.min(T.length,q);for(let C=0;C<v;C++){let _=T[C];if(!_||typeof _!=="object")continue;let O={},E=!1;for(let[L,M]of Object.entries(_)){if(L.startsWith("_")||L==="id")continue;O[L]=String(M??"").length,E=!0}if(E)$.push(O)}B=!0},Y=()=>B,W=(T)=>{let v={id:`${R2}${T}`,[m2]:!0,_index:T};if($.length===0)return v.label=Q.repeat(12),v;let C=$[T%$.length];for(let[_,O]of Object.entries(C))v[_]=Q.repeat(Math.max(1,O));return v};return{analyzeStructure:j,hasAnalyzedStructure:Y,generate:W,generateRange:(T,v)=>{let C=[];for(let _=T;_<=v;_++)C.push(W(_));return C},clear:()=>{$=[],B=!1}}},T2=(J)=>{if(!J||typeof J!=="object")return!1;return J[m2]===!0},a2=(J)=>{return J.filter((Q)=>!T2(Q))};var iJ=50,IJ=(J={})=>{let{adapter:Q,initialItems:q,initialTotal:$,storage:B,placeholder:j,pageSize:Y=iJ,maxConcurrent:W=0,onStateChange:z,onDataChange:V,onItemsLoaded:T,onItemsEvicted:v,onLoadError:C}=J,_=I2({...B,onEvict:(m,S)=>{v?.(m),$2(),o()}}),O=null,E=()=>{if(!O)O=h2(j);return O},L=new Map,M=!1,y,Z=!0,H,g,k=[],h=0,d=new Map,Q2=()=>{for(let m of d.values())m[1].abort();d.clear()},o=()=>{z?.(D())},$2=()=>{V?.()},B2=()=>{L.clear();let m=_.getLoadedRanges();for(let S of m)for(let t=S.start;t<=S.end;t++){let Y2=_.get(t);if(Y2&&!T2(Y2))L.set(Y2.id,t)}},j2=(m,S)=>{if(!T2(S))L.set(S.id,m)},r=(m)=>{L.delete(m)},J2=(m,S)=>{return`${m}-${S}`},i=()=>_.getTotal(),R=()=>_.getCachedCount(),U=()=>M,N=()=>Z,D=()=>({total:_.getTotal(),cached:_.getCachedCount(),isLoading:M,pendingRanges:k,error:y,hasMore:Z,cursor:H}),w=()=>_,a=()=>E(),l=(m)=>{let S=_.get(m);if(S!==void 0)return S;if(m>=0&&m<_.getTotal())return E().generate(m);return},f=(m)=>{let S=L.get(m);if(S===void 0)return;return _.get(S)},K=(m)=>{return L.get(m)??-1},b=(m)=>{let S=_.get(m);return S!==void 0&&!T2(S)},A=(m,S)=>{let t=[],Y2=_.getTotal();_.touchChunksForRange(m,Math.min(S,Y2-1));for(let N2=m;N2<=S&&N2<Y2;N2++){let e=_.get(N2);if(e!==void 0)t.push(e);else t.push(E().generate(N2))}return t},P=(m)=>{_.setTotal(m),Z=_.getCachedCount()<m,$2(),o()},I=(m,S=0,t)=>{if(Q&&m.length>0){let Y2=E();if(!Y2.hasAnalyzedStructure())Y2.analyzeStructure(m)}for(let Y2=0;Y2<m.length;Y2++){let N2=m[Y2];if(N2!==void 0){let e=S+Y2;_.set(e,N2),j2(e,N2)}}if(t!==void 0)_.setTotal(t);else if(S+m.length>_.getTotal())_.setTotal(S+m.length);if(_.getCachedCount()>=_.getTotal()&&_.getTotal()>0)Z=!1;$2(),o(),T?.(m,S,_.getTotal())},F=(m,S)=>{let t=_.get(m);if(!t)return!1;let Y2=t.id,N2={...t,...S};if(_.set(m,N2),S.id!==void 0&&S.id!==Y2)r(Y2);return j2(m,N2),$2(),o(),!0},G=(m,S)=>{_.insert(S,m),B2(),Q2(),$2(),o()},X=(m)=>{let S=L.get(m);if(S===void 0)return!1;if(!_.delete(S))return!1;return B2(),Q2(),$2(),o(),!0},u=async(m,S)=>{if(!Q)return;let t=_.chunkSize,Y2=Math.floor(m/t),N2=Math.floor(S/t),e=t*2;for(let[U2,M2]of d){let X2=U2.indexOf("-"),A2=parseInt(U2.slice(0,X2),10);if(Math.abs(A2-m)>e)M2[1].abort(),d.delete(U2)}let G2=[],F2=[];for(let U2=Y2;U2<=N2;U2++){let M2=U2*t,X2=M2+t-1,A2=J2(M2,X2);if(_.isChunkFullyLoaded(U2))continue;let O2=d.get(A2);if(O2)F2.push(O2[0]);else G2.push({start:M2,end:X2})}if(G2.length===0){if(F2.length>0)await Promise.all(F2);return}if(W>0){let U2=d.size+G2.length;if(U2>W){let M2=(m+S)/2,X2=Math.min(U2-W,d.size);while(X2>0){let K2=null,O2=-1,W2=null;for(let[n,_2]of d){let D2=n.indexOf("-"),E2=parseInt(n.slice(0,D2),10),H2=parseInt(n.slice(D2+1),10),L2=Math.abs((E2+H2)/2-M2);if(L2>O2)O2=L2,K2=n,W2=_2[1]}if(K2)W2.abort(),d.delete(K2);X2--}let A2=W-d.size;if(G2.length>A2)G2.sort((K2,O2)=>{let W2=Math.abs((K2.start+K2.end)/2-M2),n=Math.abs((O2.start+O2.end)/2-M2);return W2-n}),G2.length=Math.max(0,A2)}}if(G2.length===0){if(F2.length>0)await Promise.all(F2);return}for(let U2 of G2){let M2=J2(U2.start,U2.end),X2=new AbortController,A2=(async()=>{k.push(U2),M=!0,y=void 0,o();try{let K2=U2.end-U2.start+1,O2={offset:U2.start,limit:K2,cursor:U2.start===g?H:void 0,signal:X2.signal},W2=await Q.read(O2);if(I(W2.items,U2.start,W2.total),W2.cursor)H=W2.cursor,g=U2.start+W2.items.length;let n=U2.start+W2.items.length;if(n>=h){if(h=n,W2.hasMore!==void 0)Z=W2.hasMore;else if(W2.total!==void 0)Z=n<W2.total}}catch(K2){if(K2?.name==="AbortError")return;y=K2 instanceof Error?K2:Error(String(K2)),C?.(y,U2)}finally{d.delete(M2);let K2=k.findIndex((O2)=>O2.start===U2.start&&O2.end===U2.end);if(K2>=0)k.splice(K2,1);M=d.size>0,o()}})();d.set(M2,[A2,X2]),F2.push(A2)}await Promise.all(F2)},x=async(m,S)=>{if(_.isRangeLoaded(m,S))return;await u(m,S)},p=async()=>{if(!Q)return;await u(0,Y-1)},s=async()=>{if(!Q||M||!Z)return!1;let m=_.getCachedCount(),S=_.getTotal(),t=m,Y2=Math.min(t+Y-1,S>0?S-1:t+Y-1);if(t>=S&&S>0)return Z=!1,!1;return await u(t,Y2),_.getCachedCount()>m},c=async()=>{if(_.clear(),L.clear(),O)O.clear();Q2(),k=[],M=!1,H=void 0,g=void 0,Z=!0,h=0,y=void 0,$2(),o()},V2=(m,S)=>{if(_.evictDistant(m,S)>0)B2()},Z2=()=>{_.clear(),L.clear(),H=void 0,g=void 0,y=void 0,k=[],M=!1,$2(),o()},q2=()=>{if(_.reset(),L.clear(),O)O.clear();H=void 0,g=void 0,Z=!0,h=0,y=void 0,k=[],M=!1,$2(),o()};if(q&&q.length>0)I(q,0,$??q.length);else if($!==void 0)_.setTotal($),$2(),o();return{getState:D,getTotal:i,getCached:R,getIsLoading:U,getHasMore:N,getStorage:w,getPlaceholders:a,getItem:l,getItemById:f,getIndexById:K,isItemLoaded:b,getItemsInRange:A,setTotal:P,setItems:I,updateItem:F,insertItem:G,removeItem:X,loadRange:u,ensureRange:x,loadInitial:p,loadMore:s,reload:c,evictDistant:V2,clear:Z2,reset:q2}};var tJ=(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}},pJ=(J,Q,q={},$="vlist",B=!1,j)=>{let{autoHide:Y=!0,autoHideDelay:W=1000,minThumbSize:z=15,showOnHover:V=!0,showOnViewportEnter:T=!0,clickBehavior:v="scroll"}=q,C=v==="page"?"scroll":v,_=j??J,O=tJ(q.padding),E=B?O.left:O.top,L=B?O.right:O.bottom,M=B?O.bottom:O.right,y=q.hoverZoneWidth??M+16,Z=0,H=0,g=0,k=0,h=!1,d=!1,Q2=0,o=0,$2=0,B2=null,j2=!1,r=null,J2=0,i=0,R=null,U=null,N=null,D=B?"width":"height",w=B?"translateX":"translateY",a=B?(n)=>n.clientX:(n)=>n.clientY,l=B?"left":"top",f=document.createElement("div"),K=document.createElement("div"),b=document.createElement("div"),A=B?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",P=()=>{if(_===J)return;let n=J.offsetTop;f.style[B?"left":"top"]=n?`calc(var(${A}) + ${n}px)`:`var(${A})`,b.style[B?"left":"top"]=`${n}px`},I=()=>{if(f.className=`${$}-scrollbar`,K.className=`${$}-scrollbar__thumb`,B)f.classList.add(`${$}-scrollbar--horizontal`);if(q.padding!==void 0)_.style.setProperty("--vlist-custom-scrollbar-padding-top",`${O.top}px`),_.style.setProperty("--vlist-custom-scrollbar-padding-right",`${O.right}px`),_.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${O.bottom}px`),_.style.setProperty("--vlist-custom-scrollbar-padding-left",`${O.left}px`);if(q.minThumbSize!==void 0)f.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${z}px`);if(f.appendChild(K),_.appendChild(f),b.className=`${$}-scrollbar__hover`,B)b.classList.add(`${$}-scrollbar__hover--horizontal`),b.style.height=`${y}px`;else b.style.width=`${y}px`;if(_.appendChild(b),_!==J)P()},F=()=>{if(B2)clearTimeout(B2),B2=null},G=()=>{if(!Y)return;F(),B2=setTimeout(u,W)},X=()=>{if(Z<=H)return;if(F(),!j2)f.classList.add(`${$}-scrollbar--visible`),j2=!0;if(Y&&!h&&!d)G()},u=()=>{if(h||d)return;f.classList.remove(`${$}-scrollbar--visible`),j2=!1},x=(n,_2)=>{if(Z=n,H=_2,P(),Z<=H){f.style.display="none",u();return}f.style.display="";let D2=Math.max(0,H-E-L),E2=H/Z;if(g=Math.max(z,E2*D2),K.style[D]=`${g}px`,k=D2-g,p($2),!Y)X()},p=(n)=>{if($2=n,Z<=H||k<=0)return;let _2=Z-H,D2=Math.min(1,Math.max(0,n/_2));K.style.transform=`${w}(${D2*k}px)`},s=(n)=>{if(n.target===K||C!=="jump"||k<=0)return;let _2=Z-H,D2=f.getBoundingClientRect(),E2=a(n)-D2[l],H2=Math.max(0,Math.min(E2-g/2,k));Q(H2/k*_2),X()},c=()=>{if(R!==null)clearTimeout(R),R=null;if(U!==null)cancelAnimationFrame(U),U=null;N=null},V2=(n)=>{let _2=k>0?i/n*k:0;if(J2<_2)return-1;if(J2>=_2+g)return 1;return 0},Z2=()=>{let n=Z-H,_2=V2(n);if(_2===0){c();return}if(_2===-1){if(i<=0){c();return}let D2=Math.max(0,i-H);i=D2,Q(D2)}else{if(i>=n){c();return}let D2=Math.min(n,i+H);i=D2,Q(D2)}X()},q2=(n)=>{if(N===null){N=n,U=requestAnimationFrame(q2);return}let _2=Z-H,D2=n-N;N=n;let E2=V2(_2);if(E2===0){c();return}let H2=12*H/1000,L2=Math.min(H2*D2,H);if(E2===-1){if(i<=0){c();return}let P2=Math.max(0,i-L2);i=P2,Q(P2)}else{if(i>=_2){c();return}let P2=Math.min(_2,i+L2);i=P2,Q(P2)}F(),U=requestAnimationFrame(q2)},m=()=>{c(),G(),document.removeEventListener("mouseup",m)},S=(n)=>{if(n.target===K||C!=="scroll")return;n.preventDefault();let _2=f.getBoundingClientRect();J2=a(n)-_2[l],i=$2,Z2(),R=setTimeout(()=>{U=requestAnimationFrame(q2)},350),document.addEventListener("mouseup",m)},t=(n)=>{n.preventDefault(),n.stopPropagation(),h=!0,Q2=a(n),o=$2,F(),f.classList.add(`${$}-scrollbar--dragging`),document.addEventListener("mousemove",Y2),document.addEventListener("mouseup",N2)},Y2=(n)=>{if(!h)return;let _2=a(n)-Q2,D2=k>0?_2/k:0,E2=Z-H,H2=D2*E2,L2=Math.max(0,Math.min(o+H2,E2));K.style.transform=`${w}(${L2/E2*k}px)`,Q(L2)},N2=()=>{if(h=!1,f.classList.remove(`${$}-scrollbar--dragging`),Y&&!d)G();document.removeEventListener("mousemove",Y2),document.removeEventListener("mouseup",N2)},e=B?(n)=>n.touches[0].clientX:(n)=>n.touches[0].clientY,G2=(n)=>{n.stopPropagation(),h=!0,Q2=e(n),o=$2,F(),f.classList.add(`${$}-scrollbar--dragging`)},F2=(n)=>{if(!h)return;n.preventDefault();let _2=e(n)-Q2,D2=k>0?_2/k:0,E2=Z-H,H2=D2*E2,L2=Math.max(0,Math.min(o+H2,E2));K.style.transform=`${w}(${L2/E2*k}px)`,Q(L2)},U2=()=>{if(h=!1,f.classList.remove(`${$}-scrollbar--dragging`),Y)G()},M2=(n)=>{if(n.target===K)return;if(k<=0)return;let _2=n.touches[0],D2=f.getBoundingClientRect(),E2=(B?_2.clientX:_2.clientY)-D2[l];if(C==="jump"){let H2=Z-H,L2=Math.max(0,Math.min(E2-g/2,k));Q(L2/k*H2)}else J2=E2,i=$2,Z2();X()},X2=()=>{if(T)X()},A2=()=>{if(!h){if(d=!1,Y)G()}},K2=()=>{d=!0,F(),X()},O2=()=>{if(d=!1,!h&&Y)G()},W2=()=>{if(F(),c(),r!==null)cancelAnimationFrame(r),r=null;f.removeEventListener("click",s),f.removeEventListener("mousedown",S),f.removeEventListener("mouseenter",K2),document.removeEventListener("mouseup",m),f.removeEventListener("mouseleave",O2),f.removeEventListener("touchstart",M2),K.removeEventListener("mousedown",t),K.removeEventListener("touchstart",G2),K.removeEventListener("touchmove",F2),K.removeEventListener("touchend",U2),J.removeEventListener("mouseenter",X2),J.removeEventListener("mouseleave",A2),document.removeEventListener("mousemove",Y2),document.removeEventListener("mouseup",N2),b.removeEventListener("click",s),b.removeEventListener("mousedown",S),b.removeEventListener("mouseenter",K2),b.removeEventListener("mouseleave",O2),b.remove(),_.style.removeProperty("--vlist-custom-scrollbar-padding-top"),_.style.removeProperty("--vlist-custom-scrollbar-padding-right"),_.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),_.style.removeProperty("--vlist-custom-scrollbar-padding-left"),f.remove()};if(I(),f.addEventListener("click",s),f.addEventListener("mousedown",S),f.addEventListener("mouseenter",K2),f.addEventListener("mouseleave",O2),f.addEventListener("touchstart",M2,{passive:!0}),K.addEventListener("mousedown",t),K.addEventListener("touchstart",G2,{passive:!0}),K.addEventListener("touchmove",F2,{passive:!1}),K.addEventListener("touchend",U2,{passive:!0}),J.addEventListener("mouseenter",X2),J.addEventListener("mouseleave",A2),b.addEventListener("click",s),b.addEventListener("mousedown",S),V)b.addEventListener("mouseenter",K2),b.addEventListener("mouseleave",O2);return{show:X,hide:u,updateBounds:x,updatePosition:p,isVisible:()=>j2,destroy:W2}};var hJ=(J=0)=>{let Q=[,,,,,,,,];for(let q=0;q<8;q++)Q[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},x2=(J,Q)=>{let q=performance.now(),$=q-J.lastTime;if($===0)return J;if($>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let j=J.samples[0];return j.position=Q,j.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=q,J}let B=J.samples[J.sampleIndex];if(B.position=Q,B.time=q,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,Y=J.samples[j],W=Q-Y.position,z=q-Y.time;J.velocity=z>0?W/z:0}return J.lastPosition=Q,J.lastTime=q,J},eJ=(J)=>J.sampleCount>=3,xJ=(J,Q={})=>{let{wheel:q=!0,sensitivity:$=1,smoothing:B=!1,idleTimeout:j=150,onScroll:Y,onIdle:W,scrollElement:z,isX:V=!1}=Q,T=!!z,v=0,C=0,_=T?V?window.innerWidth:window.innerHeight:V?J.clientWidth:J.clientHeight,O=Q.compressed??!1,E=Q.compression,L=hJ(),M=!1,y=null,H=g2(()=>{let A=V?J.scrollLeft:J.scrollTop,P=V?A>=v?"right":"left":A>=v?"down":"up";if(L=x2(L,A),v=A,Y)Y({scrollTop:v,direction:P,velocity:L.velocity});o()}),k=g2(()=>{let A=J.getBoundingClientRect(),P=V?Math.max(0,-A.left):Math.max(0,-A.top),I=V?P>=v?"right":"left":P>=v?"down":"up";if(L=x2(L,P),v=P,!M)M=!0;if(Y)Y({scrollTop:v,direction:I,velocity:L.velocity});o()}),h=(A)=>{A.preventDefault()},d=(A)=>{if(A.deltaX)return;A.preventDefault(),J.scrollLeft+=A.deltaY},Q2=(A)=>{if(!O)return;A.preventDefault();let P=(V?A.deltaX||A.deltaY:A.deltaY)*$,I=v+P;if(B)I=v+P*0.3;if(I=Math.max(0,Math.min(I,C)),I!==v){let F=v,G=V?I>=F?"right":"left":I>=F?"down":"up";if(L=x2(L,I),v=I,!M)M=!0;if(Y)Y({scrollTop:v,direction:G,velocity:L.velocity});o()}},o=()=>{if(y)clearTimeout(y);y=setTimeout(()=>{if(M=!1,L=hJ(v),W)W()},j)},$2=(A)=>{if(O)return;if(O=!0,E=A,C=A.virtualSize-_,T)return;if(H.cancel(),J.removeEventListener("scroll",H),!q)J.removeEventListener("wheel",h);else if(V)J.removeEventListener("wheel",d);if(V)J.style.overflowX="hidden";else J.style.overflow="hidden";if(q)J.addEventListener("wheel",Q2,{passive:!1});let P=V?J.scrollLeft:J.scrollTop;if(P>0){let I=V?E?.actualSize??J.scrollWidth:E?.actualSize??J.scrollHeight;v=P/I*C}if(V)J.scrollLeft=0;else J.scrollTop=0},B2=()=>{if(!O)return;if(O=!1,T){E=void 0;return}if(J.removeEventListener("wheel",Q2),V)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",H,{passive:!0}),!q)J.addEventListener("wheel",h,{passive:!1});else if(V)J.addEventListener("wheel",d,{passive:!1});if(E&&v>0){let P=v/C*(E.actualSize-_);if(V)J.scrollLeft=P;else J.scrollTop=P}E=void 0},j2=()=>{if(T||O)return v;return V?J.scrollLeft:J.scrollTop},r=(A,P=!1)=>{let I=Math.max(0,Math.min(A,C||1/0));if(T){let F=J.getBoundingClientRect();if(V){let G=F.left+window.scrollX;window.scrollTo({left:G+I,behavior:P?"smooth":"auto"})}else{let G=F.top+window.scrollY;window.scrollTo({top:G+I,behavior:P?"smooth":"auto"})}}else if(O){if(I===v)return;let F=v,G=V?I>=F?"right":"left":I>=F?"down":"up";if(L=x2(L,I),v=I,!M)M=!0;if(Y)Y({scrollTop:v,direction:G,velocity:L.velocity});o()}else if(V)J.scrollTo({left:I,behavior:P?"smooth":"auto"});else J.scrollTo({top:I,behavior:P?"smooth":"auto"})},J2=(A)=>{r(j2()+A)},i=()=>{return j2()<=0},R=(A=0)=>{let P=j2(),I=T||O?C:V?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return P>=I-A},U=()=>{let A=j2(),P=T||O?C:V?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(P<=0)return 0;return Math.min(1,Math.max(0,A/P))},N=(A)=>{if(A.compression)E=A.compression,C=E.virtualSize-_},D=()=>O,w=()=>Math.abs(L.velocity),a=()=>eJ(L),l=()=>M,f=()=>T,K=(A)=>{if(_=A,E)C=E.virtualSize-_},b=()=>{if(y)clearTimeout(y);if(T)k.cancel(),window.removeEventListener("scroll",k);else H.cancel(),J.removeEventListener("scroll",H),J.removeEventListener("wheel",Q2),J.removeEventListener("wheel",h),J.removeEventListener("wheel",d)};if(T){if(O&&E)C=E.virtualSize-_;window.addEventListener("scroll",k,{passive:!0})}else if(O&&E){if(C=E.virtualSize-_,V)J.style.overflowX="hidden";else J.style.overflow="hidden";if(q)J.addEventListener("wheel",Q2,{passive:!1})}else{if(V)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",H,{passive:!0}),!q)J.addEventListener("wheel",h,{passive:!1});else if(V)J.addEventListener("wheel",d,{passive:!1})}return{getScrollTop:j2,scrollTo:r,scrollBy:J2,isAtTop:i,isAtBottom:R,getScrollPercentage:U,getVelocity:w,isTracking:a,isScrolling:l,updateConfig:N,enableCompression:$2,disableCompression:B2,isCompressed:D,isWindowMode:f,updateContainerHeight:K,destroy:b}},g2=(J)=>{let Q=null,q=null,$=(...B)=>{if(q=B,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,q)J(...q)})};return $.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},$};var JQ=50,QQ=0.1;function $Q(J){let Q=0,q=0,$=0;function B(){return $>0?q/$:0}function j(z){if(Q=z,z>QQ&&z<JQ)q+=z,$++}function Y(){let z=J.getTotal();if(z===0)return 0;let V=J.getItemSize();if(V<=0)return 0;let T=J.getContainerSize();if(T<=0)return 0;let v=J.getScrollPosition(),C=typeof J.getColumns==="function"?J.getColumns():1,O=Math.ceil(z/C)*V,L=Math.min(O,b2)-T,M=O-T,y=L>0?M/L:1,Z=v*y,H=Math.ceil((Z+T)/V);return Math.min(H*C,z)}function W(){let z=J.getTotal(),V=Y();return{progress:z>0?Math.min(100,Math.max(0,V/z*100)):0,velocity:Q,velocityAvg:B(),itemCount:V,total:z}}return{getState:W,onVelocity:j}}export{YJ as toggleSelection,HJ as simpleVisibleRange,d2 as selectItems,jJ as selectAll,vJ as rangesEqual,g2 as rafThrottle,DJ as needsScaling,p2 as mergeRanges,UJ as isSelected,T2 as isPlaceholderItem,wJ as isInRange,w2 as isGroupHeader,KJ as getSelectedItems,NJ as getSelectedIds,v2 as getScaleState,MJ as getScaleInfo,v2 as getScale,CJ as getRangeCount,GJ as getMaxItemsWithoutScaling,a2 as filterPlaceholders,SJ as diffRanges,c2 as deselectItems,EJ as createTableRenderer,XJ as createTableLayout,OJ as createTableHeader,e2 as createStickyHeader,$Q as createStats,I2 as createSparseStorage,k2 as createSizeCache,qJ as createSelectionState,pJ as createScrollbar,xJ as createScrollController,h2 as createPlaceholderManager,LJ as createMeasuredSizeCache,FJ as createMasonryRenderer,AJ as createMasonryLayout,i2 as createGroupedSizeFn,t2 as createGroupLayout,rJ as createGridRenderer,JJ as createGridLayout,fJ as createEmitter,IJ as createAsyncManager,BJ as clearSelection,PJ as clampScrollPosition,TJ as calculateTotalSize,kJ as calculateScrollToIndex,ZJ as calculateScaledVisibleRange,VJ as calculateScaledScrollToIndex,_J as calculateScaledRenderRange,z2 as calculateScaledItemPosition,bJ as calculateRenderRange,l2 as calculateMissingRanges,zJ as calculateItemOffset,WJ as calculateIndexFromScrollPosition,yJ as calculateActualSize,o2 as buildLayoutItems,b2 as MAX_VIRTUAL_SIZE};
@@ -27,6 +27,9 @@ export interface DataManagerConfig<T extends VListItem = VListItem> {
27
27
  onDataChange?: () => void;
28
28
  /** Callback when items are loaded */
29
29
  onItemsLoaded?: (items: T[], offset: number, total: number) => void;
30
+ /** Callback when a chunk load fails (not for intentional aborts). Receives
31
+ * the error and the range that failed, so callers can schedule a retry. */
32
+ onLoadError?: (error: Error, range: Range) => void;
30
33
  /** Callback when items are evicted */
31
34
  onItemsEvicted?: (count: number) => void;
32
35
  }
@@ -52,6 +52,11 @@ export interface GridLayout {
52
52
  * The last row may be partially filled (end is clamped to totalItems - 1).
53
53
  */
54
54
  getItemRange: (rowStart: number, rowEnd: number, totalItems: number) => ItemRange;
55
+ /**
56
+ * Mutating variant of getItemRange — writes into `out` to avoid
57
+ * per-frame allocation on the render hot path.
58
+ */
59
+ fillItemRange: (rowStart: number, rowEnd: number, totalItems: number, out: ItemRange) => void;
55
60
  /**
56
61
  * Get the flat item index from a row and column.
57
62
  * Returns -1 if out of bounds.
@@ -6,5 +6,5 @@ export { table, type TablePluginConfig } from "./plugin";
6
6
  export { createTableLayout } from "./layout";
7
7
  export { createTableHeader } from "./header";
8
8
  export { createTableRenderer, type TableRendererInstance } from "./renderer";
9
- export type { TableConfig, TableColumn, TableLayout, TableHeader, TableRenderer, ResolvedColumn, ColumnResizeEvent, ColumnSortEvent, ColumnClickEvent, } from "./types";
9
+ export type { TableConfig, TableColumn, TableFillMode, TableLayout, TableHeader, TableRenderer, ResolvedColumn, ColumnResizeEvent, ColumnSortEvent, ColumnClickEvent, } from "./types";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -5,14 +5,16 @@
5
5
  * Column width resolution strategy:
6
6
  * 1. Columns with explicit `width` get their requested width (clamped to min/max)
7
7
  * 2. Remaining container space is distributed equally among columns without `width`
8
- * 3. If all columns have explicit widths and total < container, no stretching occurs
9
- * 4. If total column width > container, the table scrolls horizontally
8
+ * 3. If all columns have explicit widths and total < container, the leftover is
9
+ * handled by the `fillMode`: `none` leaves a gap, `stretch` grows columns
10
+ * proportionally, `spacer` extends the row with empty trailing space
11
+ * 4. If total column width > container, the table scrolls horizontally (fill is a no-op)
10
12
  *
11
13
  * All offset calculations are O(n) where n = number of columns (typically small).
12
14
  * Resize operations recalculate offsets for columns after the resized one.
13
15
  */
14
16
  import type { VListItem } from "../../types";
15
- import type { TableColumn, TableLayout } from "./types";
17
+ import type { TableColumn, TableLayout, TableFillMode } from "./types";
16
18
  /**
17
19
  * Create a TableLayout instance.
18
20
  *
@@ -22,5 +24,5 @@ import type { TableColumn, TableLayout } from "./types";
22
24
  * @param globalResizable - Default resizable flag (from TableConfig.resizable)
23
25
  * @returns TableLayout with column resolution and resize capabilities
24
26
  */
25
- export declare const createTableLayout: <T extends VListItem = VListItem>(columnDefs: TableColumn<T>[], globalMinWidth?: number, globalMaxWidth?: number, globalResizable?: boolean) => TableLayout<T>;
27
+ export declare const createTableLayout: <T extends VListItem = VListItem>(columnDefs: TableColumn<T>[], globalMinWidth?: number, globalMaxWidth?: number, globalResizable?: boolean, fillMode?: "none" | TableFillMode) => TableLayout<T>;
26
28
  //# sourceMappingURL=layout.d.ts.map
@@ -10,6 +10,14 @@
10
10
  * - Variable row heights are supported (Mode A and Mode B)
11
11
  */
12
12
  import type { VListItem } from "../../types";
13
+ /**
14
+ * How a table fills leftover horizontal space when its columns are narrower
15
+ * than the container.
16
+ *
17
+ * - `"stretch"` — grow columns proportionally to fill the width
18
+ * - `"spacer"` — keep column widths, extend the row with empty trailing space
19
+ */
20
+ export type TableFillMode = "stretch" | "spacer";
13
21
  /** Definition for a single table column */
14
22
  export interface TableColumn<T extends VListItem = VListItem> {
15
23
  /** Unique column key — used for identification and as default item property accessor */
@@ -97,6 +105,21 @@ export interface TableConfig<T extends VListItem = VListItem> {
97
105
  minColumnWidth?: number;
98
106
  /** Default maximum column width in pixels (default: Infinity) */
99
107
  maxColumnWidth?: number;
108
+ /**
109
+ * Make rows span the full container width when the columns don't (default:
110
+ * `"spacer"`). A no-op once columns already overflow the container — the
111
+ * table scrolls horizontally as usual.
112
+ *
113
+ * - `"spacer"` (default) — keep every column's exact width and extend the row
114
+ * with empty trailing space, so column widths stay meaningful while rows
115
+ * still reach the container edge (background, row borders, striping
116
+ * included).
117
+ * - `"stretch"` (or `true`) — grow columns proportionally to their current
118
+ * width (respecting `maxWidth`) so the columns themselves fill the width.
119
+ * - `false` — opt out: the table is exactly as wide as the sum of its
120
+ * columns, leaving empty space to the right when they don't fill it.
121
+ */
122
+ fillWidth?: boolean | TableFillMode;
100
123
  /** Show vertical borders between columns (default: false) */
101
124
  columnBorders?: boolean;
102
125
  /** Show horizontal borders between rows (default: true) */
@@ -140,7 +163,8 @@ export interface ResolvedColumn<T extends VListItem = VListItem> {
140
163
  export interface TableLayout<T extends VListItem = VListItem> {
141
164
  /** Current resolved columns (with computed widths and offsets) */
142
165
  readonly columns: readonly ResolvedColumn<T>[];
143
- /** Total width of all columns in pixels */
166
+ /** Total rendered width in pixels — the sum of column widths, or the
167
+ * container width when a `fillWidth` mode extends rows to span it */
144
168
  readonly totalWidth: number;
145
169
  /** Resolve column widths given available container width */
146
170
  resolve: (containerWidth: number) => void;
package/dist/size.json CHANGED
@@ -1 +1 @@
1
- {"base":{"minified":"22.1","gzipped":"8.1","minBytes":22644,"gzBytes":8318},"a11y":{"minified":"25.2","gzipped":"9.2","minBytes":25767,"gzBytes":9446},"selection":{"minified":"30.7","gzipped":"10.6","minBytes":31444,"gzBytes":10873},"data":{"minified":"35.1","gzipped":"12.8","minBytes":35907,"gzBytes":13089},"scrollbar":{"minified":"29.2","gzipped":"10.1","minBytes":29951,"gzBytes":10387},"sortable":{"minified":"31.5","gzipped":"11.0","minBytes":32251,"gzBytes":11279},"groups":{"minified":"36.6","gzipped":"12.9","minBytes":37451,"gzBytes":13223},"scale":{"minified":"35.4","gzipped":"12.0","minBytes":36268,"gzBytes":12335},"page":{"minified":"24.5","gzipped":"8.9","minBytes":25130,"gzBytes":9104},"snapshots":{"minified":"25.6","gzipped":"9.4","minBytes":26260,"gzBytes":9576},"transition":{"minified":"28.9","gzipped":"10.0","minBytes":29573,"gzBytes":10192},"autosize":{"minified":"24.5","gzipped":"9.0","minBytes":25127,"gzBytes":9196},"grid":{"minified":"30.1","gzipped":"10.9","minBytes":30814,"gzBytes":11128},"table":{"minified":"41.2","gzipped":"14.2","minBytes":42162,"gzBytes":14541},"masonry":{"minified":"32.3","gzipped":"11.8","minBytes":33084,"gzBytes":12096},"tree":{"minified":"38.0","gzipped":"13.5","minBytes":38946,"gzBytes":13827}}
1
+ {"base":{"minified":"22.2","gzipped":"8.2","minBytes":22725,"gzBytes":8357},"a11y":{"minified":"25.2","gzipped":"9.3","minBytes":25848,"gzBytes":9486},"selection":{"minified":"30.8","gzipped":"10.7","minBytes":31532,"gzBytes":10910},"data":{"minified":"35.8","gzipped":"13.0","minBytes":36694,"gzBytes":13294},"scrollbar":{"minified":"29.3","gzipped":"10.2","minBytes":30038,"gzBytes":10423},"sortable":{"minified":"31.6","gzipped":"11.1","minBytes":32330,"gzBytes":11320},"groups":{"minified":"37.7","gzipped":"13.4","minBytes":38615,"gzBytes":13682},"scale":{"minified":"35.5","gzipped":"12.1","minBytes":36357,"gzBytes":12383},"page":{"minified":"24.6","gzipped":"8.9","minBytes":25211,"gzBytes":9146},"snapshots":{"minified":"25.9","gzipped":"9.4","minBytes":26486,"gzBytes":9663},"transition":{"minified":"29.0","gzipped":"10.0","minBytes":29660,"gzBytes":10236},"autosize":{"minified":"24.6","gzipped":"9.0","minBytes":25208,"gzBytes":9241},"grid":{"minified":"30.5","gzipped":"11.1","minBytes":31230,"gzBytes":11320},"table":{"minified":"41.7","gzipped":"14.4","minBytes":42719,"gzBytes":14765},"masonry":{"minified":"32.4","gzipped":"11.9","minBytes":33172,"gzBytes":12141},"tree":{"minified":"38.1","gzipped":"13.5","minBytes":39025,"gzBytes":13849}}
@@ -1 +1 @@
1
- .vlist--grid .vlist-content{contain:layout style}.vlist-grid-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--grid .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-grid-item{transition:none}.vlist--selectable .vlist-grid-item{cursor:pointer}.vlist--selectable .vlist-grid-item:hover{background-color:var(--vlist-bg-hover)}.vlist-grid-item.vlist-item--odd{background:var(--vlist-bg-striped)}.vlist-grid-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist-grid-item.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected)}.vlist--selectable .vlist-grid-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist--selectable .vlist-grid-item.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover)}.vlist-grid-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}
1
+ .vlist--grid .vlist-content{contain:layout style}.vlist-grid-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--grid .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-grid-item{transition:none}.vlist--selectable .vlist-grid-item{cursor:pointer}.vlist--selectable .vlist-grid-item:hover{background-color:var(--vlist-bg-hover)}.vlist-grid-item.vlist-item--odd{background:var(--vlist-bg-striped)}.vlist-grid-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist-grid-item.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected)}.vlist--selectable .vlist-grid-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist--selectable .vlist-grid-item.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover)}.vlist-grid-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--grid.vlist--horizontal .vlist-group-header,.vlist--grid.vlist--horizontal .vlist-sticky-header .sticky-group{writing-mode:vertical-rl}.vlist--grid.vlist--horizontal .vlist-group-header{justify-content:flex-start}.vlist--grid.vlist--horizontal .vlist-sticky-header{border-bottom:none;border-right:none}
@@ -1 +1 @@
1
- .vlist--masonry .vlist-content{contain:layout style}.vlist-masonry-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--masonry .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-masonry-item{transition:none}.vlist--selectable .vlist-masonry-item{cursor:pointer}.vlist--selectable .vlist-masonry-item:hover{background-color:var(--vlist-bg-hover)}.vlist-masonry-item.vlist-item--odd{background:var(--vlist-bg-striped)}.vlist-masonry-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist-masonry-item.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected)}.vlist--selectable .vlist-masonry-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist--selectable .vlist-masonry-item.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover)}.vlist-masonry-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}
1
+ .vlist--masonry .vlist-content{contain:layout style}.vlist-masonry-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--masonry .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-masonry-item{transition:none}.vlist--selectable .vlist-masonry-item{cursor:pointer}.vlist--selectable .vlist-masonry-item:hover{background-color:var(--vlist-bg-hover)}.vlist-masonry-item.vlist-item--odd{background:var(--vlist-bg-striped)}.vlist-masonry-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist-masonry-item.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected)}.vlist--selectable .vlist-masonry-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist--selectable .vlist-masonry-item.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover)}.vlist-masonry-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--masonry.vlist--horizontal .vlist-group-header,.vlist--masonry.vlist--horizontal .vlist-sticky-header .sticky-group{writing-mode:vertical-rl}.vlist--masonry.vlist--horizontal .vlist-group-header{justify-content:flex-start}.vlist--masonry.vlist--horizontal .vlist-sticky-header{border-bottom:none;border-right:1px solid var(--vlist-border)}
@@ -1 +1 @@
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__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-content{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-group-header-bg,#f3f4f6);cursor:default}.vlist-table-group-header-content{display:flex;align-items:center;gap:12px;padding:0 16px;height:100%;background:var(--vlist-group-header-bg,#f3f4f6)}.vlist--table-row-borders .vlist-table-group-header{border-bottom:1px solid var(--vlist-border)}.vlist--table.vlist--grouped .vlist-sticky-header{order:1;z-index:4;border-bottom:none}.vlist--table.vlist--grouped .vlist-sticky-header .sticky-group{display:flex;font-size:0.8125rem;padding:0 16px;align-items:center;gap:12px;height:100%;color:var(--vlist-text-muted,#9ca3af)}.vlist--table.vlist--grouped .vlist-viewport{order:2}[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-group-header-bg,#1f2937)}[data-theme-mode="dark"] .vlist-table-group-header-content,.dark .vlist-table-group-header-content{color:var(--vlist-text-muted,#9ca3af)}@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-group-header-bg,#1f2937)}:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-group-header-content{color:var(--vlist-text-muted,#9ca3af)}}.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)}}
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__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-content{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-group-header-bg,#f3f4f6);cursor:default}.vlist-table-group-header-content{display:flex;align-items:center;gap:12px;padding:0 16px;height:100%;background:var(--vlist-group-header-bg,#f3f4f6)}.vlist--table-row-borders .vlist-table-group-header{border-bottom:1px solid var(--vlist-border)}.vlist--table.vlist--grouped .vlist-sticky-header{order:1;z-index:4;border-bottom:none}.vlist--table.vlist--grouped .vlist-sticky-header .sticky-group{display:flex;font-size:0.8125rem;padding:0 16px;align-items:center;gap:12px;height:100%;color:var(--vlist-text-muted,#9ca3af)}.vlist--table.vlist--grouped .vlist-viewport{order:2}[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-group-header-bg,#1f2937)}[data-theme-mode="dark"] .vlist-table-group-header-content,.dark .vlist-table-group-header-content{color:var(--vlist-text-muted,#9ca3af)}@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-group-header-bg,#1f2937)}:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-group-header-content{color:var(--vlist-text-muted,#9ca3af)}}.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>.vlist-table-cell-skeleton{display:inline-block;width:60%;height:0.8em}.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);--vlist-placeholder-bg-strong:rgba(0,0,0,0.24)}[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);--vlist-placeholder-bg-strong:rgba(255,255,255,0.35)}@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);--vlist-placeholder-bg-strong:rgba(255,255,255,0.35)}}.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-placeholder-bg-strong:rgba(255,255,255,0.35)}.vlist{position:relative;width:100%;height:100%;box-sizing:border-box;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,.vlist-content:focus,.vlist-content: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%;contain:layout style}.vlist-item,.vlist-group-header{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,.vlist--settling .vlist-item,.vlist--scrolling .vlist-group-header,.vlist--settling .vlist-group-header{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--placeholder *:not(:has(*)){color:transparent;background-color:var(--vlist-placeholder-bg);border-radius:4px;width:fit-content;line-height:1.2;transform:scaleY(0.8)}.vlist-item--placeholder:is(strong,b,h1,h2,h3,h4):not(:has(*)){background-color:var(--vlist-placeholder-bg-strong)}.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-group-header{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);z-index:1;overflow:hidden}.vlist-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)}.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-item,.vlist--horizontal .vlist-group-header{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-item--drag-source{opacity:0 !important;pointer-events:none}.vlist--sorting{cursor:grabbing;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.vlist--sorting *{cursor:inherit !important}.vlist-item--kb-sorting{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;background-color:var(--vlist-bg-selected);z-index: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);--vlist-placeholder-bg-strong:rgba(0,0,0,0.24)}[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);--vlist-placeholder-bg-strong:rgba(255,255,255,0.35)}@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);--vlist-placeholder-bg-strong:rgba(255,255,255,0.35)}}.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-placeholder-bg-strong:rgba(255,255,255,0.35)}.vlist{position:relative;width:100%;height:100%;box-sizing:border-box;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,.vlist-content:focus,.vlist-content: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%;contain:layout style}.vlist-item,.vlist-group-header{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,.vlist--settling .vlist-item,.vlist--scrolling .vlist-group-header,.vlist--settling .vlist-group-header{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--placeholder *:not(:has(*)){color:transparent;background-color:var(--vlist-placeholder-bg);border-radius:4px;width:fit-content;line-height:1.2;transform:scaleY(0.8)}.vlist-item--placeholder:is(strong,b,h1,h2,h3,h4):not(:has(*)){background-color:var(--vlist-placeholder-bg-strong)}.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-group-header{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);z-index:1;overflow:hidden}.vlist-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)}.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-item,.vlist--horizontal .vlist-group-header{position:absolute;top:0;bottom:0;left:0;right:auto;display:flex;align-items:center;justify-content:center;border-bottom:none}.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-item--drag-source{opacity:0 !important;pointer-events:none}.vlist--sorting{cursor:grabbing;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.vlist--sorting *{cursor:inherit !important}.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": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "description": "Lightweight, high-performance virtual list with zero dependencies",
5
5
  "author": {
6
6
  "name": "Floor IO",