vlist 3.4.1 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/internals.js CHANGED
@@ -1 +1 @@
1
- var tt="x",nt=20,We="_isPlaceholder",we="__placeholder_";function Re(e){let t=e.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let s=0;s<t.length;s++)t[s].setAttribute("tabindex","-1");e._stamp=0}var ke={key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0},wt=(e)=>e.headerLayoutIndex,kt=(e)=>e.firstDataIndex,st=(e,t,s)=>{let r=0,o=e.length-1;while(r<o){let a=r+o+1>>>1;if(t(e[a])<=s)r=a;else o=a-1}return r},Ye=(e,t)=>st(e,wt,t),rt=(e,t)=>st(e,kt,t),ot=(e,t,s)=>{if(e===0)return[];let r=[],o=null,a=0,i=0;for(let f=0;f<e;f++){let R=s?.(f);if(!R)continue;let E=t(f,R);if(o===null)o=E,a=0;else if(E!==o){let b=f-a;r.push({key:o,groupIndex:r.length,headerLayoutIndex:i,firstDataIndex:a,count:b}),i=i+1+b,o=E,a=f}}if(o!==null)r.push({key:o,groupIndex:r.length,headerLayoutIndex:i,firstDataIndex:a,count:e-a});return r},at=(e,t)=>{if(e.length===0||t.length===0)return[];let s=e.length+t.length,r=Array(s),o=0;for(let a of t){r[o]={id:`__group_header_${a.groupIndex}`,__groupHeader:!0,groupKey:a.key,groupIndex:a.groupIndex},o++;for(let i=0;i<a.count;i++)r[o]=e[a.firstDataIndex+i],o++}return r},it=(e,t,s=!1)=>{let r=typeof t==="number"?(o)=>t:t;return(o)=>{let a=e.getEntry(o);if(a.type==="header"){if(s&&a.group.groupIndex===0)return 0;return e.getHeaderHeight(a.group.groupIndex)}return r(a.dataIndex)}},lt=(e,t,s)=>{let r=ot(e,t.getGroupForIndex,s),o=e+r.length,a=t.header?.height??t.header?.width??t.headerHeight,i=typeof a==="number"?(p)=>a:(p)=>{let h=r[p];if(!h)return 0;return a(h.key,p)},f={type:"header",group:ke},R={type:"item",dataIndex:0,group:ke};return{get totalEntries(){return o},get groupCount(){return r.length},get groups(){return r},getEntry:(p)=>{if(r.length===0)return R.dataIndex=p,R.group=ke,R;let h=Ye(r,p),l=r[h];if(p===l.headerLayoutIndex)return f.group=l,f;let y=p-l.headerLayoutIndex-1;return R.dataIndex=l.firstDataIndex+y,R.group=l,R},layoutToDataIndex:(p)=>{if(r.length===0)return p;let h=Ye(r,p),l=r[h];if(p===l.headerLayoutIndex)return-1;let y=p-l.headerLayoutIndex-1;return l.firstDataIndex+y},dataToLayoutIndex:(p)=>{if(r.length===0)return p;let h=rt(r,p),l=r[h],y=p-l.firstDataIndex;return l.headerLayoutIndex+1+y},getGroupAtLayoutIndex:(p)=>{if(r.length===0)return ke;let h=Ye(r,p);return r[h]},getGroupAtDataIndex:(p)=>{if(r.length===0)return ke;let h=rt(r,p);return r[h]},getHeaderHeight:i,rebuild:(p,h)=>{r=ot(p,t.getGroupForIndex,h??s),o=p+r.length}}};var _t=(e,t,s,r,o=0)=>{let a=s?"width":"height",i=document.createElement("div");return i.className=`${t}-sticky-header`,i.setAttribute("role","presentation"),i.setAttribute("aria-hidden","true"),i.style.cssText="z-index:5;pointer-events:none;overflow:hidden;"+(s?`position:absolute;top:0;bottom:0;left:${o||0}px`:`position:relative;top:${o||0}px`),i.style[a]=`${r}px`,e.insertBefore(i,e.firstChild),i},ut=(e,t,s,r,o,a=!1,i=0,f,R)=>{let E=a?"width":"height",b=a?"height":"width",P=a?"X":"Y",F=(v,z)=>{v.style[E]=`${z}px`},S=f??_t(e,o,a,0,i),N=()=>{let v=document.createElement("div");return v.className="sticky-group",v.style.position="absolute",v.style.willChange="transform",v.style[b]="100%",v},p=N(),h=N();S.append(p,h);let l=p,y=h,d=t.groups,A=[],G=[],w=0,D=()=>{d=t.groups,w=d.length,A=Array(w),G=Array(w);for(let v=0;v<w;v++)A[v]=R?R(d[v].headerLayoutIndex):s.getOffset(d[v].headerLayoutIndex),G[v]=t.getHeaderHeight(v)};D();let k=-1,_=0,q=-1,U=!1,se=0,ne=!1,ve=(v,z)=>{r(v,z);let re=G[z];return F(v,re),re},ye=(v)=>{v.replaceChildren(),v.style.transform=""},fe=(v)=>{if(v===k)return;if(k=v,_=0,v<0||v>=w){ye(l);return}_=ve(l,v),F(S,_),l.style.transform=""},m=(v)=>{if(v===se)return;se=v;let z=Math.round(v);l.style.transform=`translate${P}(${z}px)`,y.style.transform=`translate${P}(${z+_}px)`},n=()=>{se=0,l.style.transform="",y.style.transform=""},u=()=>{if(!ne)return;let v=l;l=y,y=v,k=q,_=k>=0?G[k]:0,F(S,_),ye(y),q=-1,ne=!1,n()},c=()=>{if(!ne)return;ye(y),q=-1,ne=!1,n()},C=!!f,T=()=>{if(U)return;if(U=!0,C)S.style.visibility="";else S.style.display=""},Z=()=>{if(!U)return;if(U=!1,C)S.style.visibility="hidden";else S.style.display="none";ye(l),k=-1,_=0,c()},K=(v)=>{if(w===0){if(ne)c();if(!U)T();fe(-1);return}if(v<A[0]){Z();return}let z=0,re=w-1;while(z<re){let M=z+re+1>>>1;if(A[M]+G[M]<=v)z=M;else re=M-1}if(!U)T();fe(z);let g=z+1;if(g<w){let M=A[g]-v;if(M<=0&&M>-_){if(q!==g||!ne)q=g,ve(y,g),ne=!0;m(M)}else if(M<=-_){if(ne)u()}else if(ne)c()}else if(ne)c()},O=()=>{D();let v=k;if(k=-1,_=0,v>=0)fe(v)},B=()=>{S.remove(),k=-1,_=0,q=-1,U=!1,ne=!1};if(!f)S.style.display="none";return{update:K,refresh:O,show:T,hide:Z,destroy:B}};var ct=(e)=>e!==null&&typeof e==="object"&&e.__groupHeader===!0;var dt=(e)=>{let t=Math.max(1,Math.floor(e.columns)),s=e.gap??0,r=e.isHeaderFn,o={row:0,col:0},a=(p)=>{if(p<=0)return 0;if(!r)return Math.ceil(p/t);let h=0,l=0,y=0;for(let d=0;d<p;d++)if(r(d)){if(y++,l)h++,l=0;h++,l=0}else if(l++,l>=t)h++,l=0;if(l)h++;return h},i=(p)=>(o.row=f(p),o.col=R(p),o),f=(p)=>{if(!r)return Math.floor(p/t);let h=0,l=0;for(let y=0;y<=p;y++)if(r(y)){if(l)h++,l=0;if(y===p)return h;h++,l=0}else{if(y===p)return h;if(l++,l>=t)h++,l=0}return h},R=(p)=>{if(!r)return p%t;if(r(p))return 0;let h=0;for(let l=0;l<=p;l++)if(r(l))h=0;else{if(l===p)return h;if(h++,h>=t)h=0}return h},E=(p,h,l,y)=>{if(l<=0){y.start=0,y.end=-1;return}if(!r){y.start=Math.max(0,p*t),y.end=Math.min(l-1,(h+1)*t-1);return}let d=b(p,h,l);y.start=d.start,y.end=d.end},b=(p,h,l)=>{if(l<=0)return{start:0,end:-1};if(!r){let w=Math.max(0,p*t),D=Math.min(l-1,(h+1)*t-1);return{start:w,end:D}}let y=-1,d=-1,A=0,G=0;for(let w=0;w<l;w++){if(r(w)){if(G)A++,G=0;if(A>=p&&A<=h){if(y<0)y=w;d=w}A++,G=0}else{if(A>=p&&A<=h){if(y<0)y=w;d=w}if(G++,G>=t)A++,G=0}if(A>h&&!G)break}if(y<0)return{start:0,end:-1};return{start:y,end:d}},P=(p,h,l)=>{if(h<0||h>=t)return-1;let y=p*t+h;if(y<0||y>=l)return-1;return y},F=(p)=>{let h=(t-1)*s;return Math.max(0,(p-h)/t)};return{get columns(){return t},get gap(){return s},update:(p)=>{if(p.columns!==void 0)t=Math.max(1,Math.floor(p.columns));if(p.gap!==void 0)s=p.gap;if(p.isHeaderFn!==void 0)r=p.isHeaderFn},getTotalRows:a,getPosition:i,getRow:f,getCol:R,getItemRange:b,fillItemRange:E,getItemIndex:P,getColumnWidth:F,getColumnOffset:(p,h)=>{let l=F(h);return p*(l+s)}}};var mt=(e,t=50,s=1/0,r=!0,o="none")=>{let a=e,i=[],f=0,R=0,E=()=>{i=a.map((d,A)=>({def:d,index:A,width:0,minWidth:Pt(d.minWidth??t,1),maxWidth:d.maxWidth??s,resizable:d.resizable??r,offset:0}))},b=()=>{if(o==="none"||f<=0||f>=R)return;if(o==="spacer"){f=R;return}let d=R-f,A=f;for(let G=0;G<i.length;G++){let w=i[G];w.width=$e(w.width+d*(w.width/A),w.minWidth,w.maxWidth)}F()},P=(d)=>{if(R=d,i.length===0){f=0;return}let A=0,G=0;for(let w=0;w<i.length;w++){let D=i[w],k=D.def;if(k.width!==void 0)D.width=$e(k.width,D.minWidth,D.maxWidth),A+=D.width;else G++}if(G){let D=Math.max(0,d-A)/G;for(let k=0;k<i.length;k++){let _=i[k];if(_.def.width===void 0)_.width=$e(D,_.minWidth,_.maxWidth)}}F(),b()},F=()=>{let d=0;for(let A=0;A<i.length;A++){let G=i[A];G.offset=d,d+=G.width}f=d},S=(d,A)=>{if(d<0||d>=i.length)return 0;let G=i[d];if(!G.resizable)return G.width;let w=$e(A,G.minWidth,G.maxWidth);if(G.width=w,F(),o==="spacer")b();return w},N=(d)=>i[d],p=(d)=>{if(i.length===0)return;if(d<0)return i[0];if(d>=f)return i[i.length-1];let A=0,G=i.length-1;while(A<G){let w=A+G>>>1,D=i[w];if(d<D.offset)G=w-1;else if(d>=D.offset+D.width)A=w+1;else return D}return i[A]},h=(d)=>{if(d<0||d>=i.length)return 0;return i[d].offset},l=(d)=>{if(d<0||d>=i.length)return 0;return i[d].width},y=(d)=>{a=d,E()};return E(),{get columns(){return i},get totalWidth(){return f},resolve:P,updateColumns:y,resizeColumn:S,getColumn:N,getColumnAtX:p,getColumnOffset:h,getColumnWidth:l}},$e=(e,t,s)=>Math.min(s,Math.max(t,e)),Pt=(e,t)=>Math.max(t,e);var ft=(e,t,s,r,o,a)=>{let i=document.createElement("div");i.setAttribute("role","rowgroup");let f=document.createElement("div");f.className=`${s}-table-header`,f.setAttribute("role","row"),f.setAttribute("aria-rowindex","1"),f.style.height=`${t}px`;let R=document.createElement("div");R.className=`${s}-table-header-scroll`,R.setAttribute("role","presentation"),f.appendChild(R),i.appendChild(f),e.insertBefore(i,e.firstChild),e.style.setProperty("--vlist-table-header-height",`${t}px`);let E=[],b=[],P=!0,F=null,S="asc",N=null,p=!1,h=-1,l=0,y=0,d=0,A=(n,u)=>{let c=document.createElement("div");c.className=`${s}-table-header-cell`,c.setAttribute("role","columnheader"),c.setAttribute("aria-colindex",String(u+1)),c.tabIndex=u?-1:0,c.dataset.columnKey=n.def.key,c.addEventListener("focusin",()=>{E[d]?.setAttribute("tabindex","-1"),d=u,c.tabIndex=0});let C=n.def.align;if(C==="center")c.classList.add(`${s}-table-header-cell--center`);else if(C==="right")c.classList.add(`${s}-table-header-cell--right`);let T=document.createElement("div");T.className=`${s}-table-header-content`;let Z=n.def.header?n.def.header(n.def):n.def.label;if(typeof Z==="string")T.textContent=Z;else T.appendChild(Z);if(c.appendChild(T),n.def.sortable){let K=document.createElement("span");K.className=`${s}-table-header-sort`,K.setAttribute("aria-hidden","true"),c.appendChild(K),b.push(K),c.classList.add(`${s}-table-header-cell--sortable`)}else b.push(null);if(n.resizable){let K=document.createElement("div");K.className=`${s}-table-header-resize`,K.dataset.resizeIndex=String(u),c.appendChild(K)}return c},G=(n)=>{N=n,R.textContent="",E=[],b=[],d=0;let u=n.columns;for(let c=0;c<u.length;c++){let C=u[c],T=A(C,c);E.push(T),R.appendChild(T)}if(w(n),F)D(F,S)},w=(n)=>{N=n;let u=n.columns;R.style.width=`${n.totalWidth}px`;for(let c=0;c<E.length&&c<u.length;c++){let C=E[c],T=u[c];C.style.width=`${T.width}px`}},D=(n,u)=>{if(F=n,S=u,!N)return;let c=N.columns;for(let C=0;C<b.length&&C<c.length;C++){let T=b[C];if(!T)continue;if(c[C].def.key===n)T.textContent=u==="asc"?"▲":"▼",T.style.opacity="0.7",E[C].setAttribute("aria-sort",u==="asc"?"ascending":"descending");else T.textContent="",T.style.opacity="0",E[C].removeAttribute("aria-sort")}},k=(n)=>{R.style.transform=`translateX(${-n}px)`},_=(n)=>{let u=n.target;if(!u.dataset.resizeIndex)return;if(n.preventDefault(),n.stopPropagation(),h=+u.dataset.resizeIndex,!N)return;let c=N.getColumn(h);if(!c?.resizable)return;p=!0,l=n.clientX,y=c.width,e.classList.add(`${s}--col-resizing`),e.style.cursor="col-resize",u.classList.add(`${s}-table-header-resize--active`),u.setPointerCapture(n.pointerId),u.addEventListener("pointermove",q),u.addEventListener("pointerup",U),u.addEventListener("pointercancel",U)},q=(n)=>{if(!p||!N)return;let u=n.clientX-l;if(Math.abs(u)<1)return;let c=Math.max(0,y+u);r(h,c)},U=(n)=>{if(!p)return;let u=n.target;u.removeEventListener("pointermove",q),u.removeEventListener("pointerup",U),u.removeEventListener("pointercancel",U);try{u.releasePointerCapture(n.pointerId)}catch{}u.classList.remove(`${s}-table-header-resize--active`),e.classList.remove(`${s}--col-resizing`),e.style.cursor="",p=!1,h=-1},se=(n)=>{let u=n.target;if(u.dataset.resizeIndex)return;if(p)return;let c=u;while(c&&!c.dataset.columnKey)if(c=c.parentElement,c===f||c===null)return;let C=c.dataset.columnKey;if(!N)return;let T=N.columns,Z=-1;for(let B=0;B<T.length;B++)if(T[B].def.key===C){Z=B;break}if(Z===-1)return;let K=u.closest("a[href],button,input,select,textarea,[tabindex]");if(K&&K!==c)return;let O=T[Z];if(a)a({key:C,index:Z,event:n});if(O.def.sortable&&o){let B;if(F===C)B=S==="asc"?"desc":null;else B="asc";o({key:C,index:Z,direction:B})}},ne=(n)=>{if(n<0||n>=E.length)return;E[d]?.setAttribute("tabindex","-1"),d=n;let u=E[d];u.tabIndex=0,u.focus()},ve=(n)=>{let u=n.key,c=n.target.closest("a[href],button,input,select,textarea,[tabindex]");if(c&&!c.hasAttribute("data-column-key"))return;if(u==="ArrowRight"){if(n.ctrlKey||n.metaKey){if(!N)return;let C=N.getColumn(d);if(C?.resizable)r(d,C.width+10),n.preventDefault()}else if(d<E.length-1)ne(d+1),n.preventDefault();n.stopPropagation();return}if(u==="ArrowLeft"){if(n.ctrlKey||n.metaKey){if(!N)return;let C=N.getColumn(d);if(C?.resizable)r(d,C.width-10),n.preventDefault()}else if(d>0)ne(d-1),n.preventDefault();n.stopPropagation();return}if(u==="Home"){ne(0),n.preventDefault(),n.stopPropagation();return}if(u==="End"){ne(E.length-1),n.preventDefault(),n.stopPropagation();return}if(u==="Enter"||u===" "){if(!N)return;let C=N.getColumn(d);if(C?.def.sortable&&o){let T;if(F===C.def.key)T=S==="asc"?"desc":null;else T="asc";o({key:C.def.key,index:d,direction:T}),n.preventDefault()}n.stopPropagation();return}if(u==="ArrowDown"){e.focus(),n.preventDefault(),n.stopPropagation();return}};return f.addEventListener("pointerdown",_),f.addEventListener("click",se),f.addEventListener("keydown",ve),{element:f,update:w,updateSort:D,rebuild:G,show:()=>{if(P)return;P=!0,f.style.display=""},hide:()=>{if(!P)return;P=!1,f.style.display="none"},destroy:()=>{f.removeEventListener("pointerdown",_),f.removeEventListener("click",se),f.removeEventListener("keydown",ve),e.style.removeProperty("--vlist-table-header-height"),i.remove(),E=[],b=[],N=null,P=!1},syncScroll:k}};var Ge=(e,t,s)=>{if(String(s).startsWith(we))return!1;let r=we+t;if(e.has(r))return e.delete(r),e.add(s),!0;return!1},pt=(e)=>({selected:new Set(e??[]),focusedIndex:-1,focusVisible:!1}),Ue=(e,t,s)=>{if(s==="none")return e;let r=new Set(e.selected);if(s==="single"){if(r.clear(),t.length>0)r.add(t[0])}else for(let o of t)r.add(o);return{...e,selected:r}},Ze=(e,t)=>{let s=new Set(e.selected);for(let r of t)s.delete(r);return{...e,selected:s}},bt=(e,t,s)=>{if(s==="none")return e;if(e.selected.has(t))return Ze(e,[t]);else return Ue(e,[t],s)},gt=(e,t,s)=>{if(s!=="multiple")return e;return{...e,selected:new Set(t.map((r)=>r.id))}},ht=(e)=>({...e,selected:new Set});var yt=(e,t)=>e.selected.has(t),St=(e)=>Array.from(e.selected),vt=(e,t)=>{let s=[];for(let r of e.selected){let o=t(r);if(o)s.push(o)}return s};var Ot=()=>{let e=[];return{acquire:()=>e.pop()||document.createElement("div"),release:(t)=>{if(t.parentNode?.removeChild(t),e.length<200)t.className="",t.removeAttribute("data-id"),t.removeAttribute("data-index"),t.removeAttribute("aria-selected"),t.removeAttribute("aria-rowindex"),t.removeAttribute("role"),t.style.cssText="",t.textContent="",e.push(t)},clear:()=>{e.length=0}}},xt=(e,t,s,r,o,a,i,f,R,E=()=>0)=>{let b=Ot(),P=new Map,F=-1,S=s,N=null,p=null,h=null,l=(g,M)=>{p=g,h=M},y=(g,M)=>{M?g.setAttribute("aria-selected","true"):g.removeAttribute("aria-selected")},d=(g,M,j,X)=>{g.setAttribute("role",M),g.setAttribute("data-id",String(j)),g.setAttribute("data-index",String(X))},A=(g)=>String(g).startsWith("__placeholder_"),G=`${o}-item ${o}-table-row`,w=`${o}-item--selected`,D=`${o}-item--focused`,k=`${o}-table-cell`,_=`${o}-table-cell--center`,q=`${o}-table-cell--right`,U=`${o}-table-cell-skeleton`,se=`${o}-item--odd`,ne=`${o}-item--placeholder`,ve=`${o}-item--replaced`,ye=`${o}-table-row ${o}-table-group-header`,fe=`${o}-table-group-header-content`,m=(g,M,j,X,W=!1)=>{if(j.def.cell){let I=j.def.cell(M,j.def,X);if(typeof I==="string")g.innerHTML=I;else g.replaceChildren(I)}else{let I=M[j.def.key],ie=I!=null?String(I):"";if(W&&ie)g.innerHTML=`<span>${ie}</span>`;else g.textContent=ie}if(W&&g.firstElementChild===null){g.replaceChildren();let I=document.createElement("span");I.className=U,g.appendChild(I)}Re(g);let J=g.parentElement;if(J)J._stamp=0},n=(g,M,j,X,W=!1)=>{let J=G;if(f){if(N){let I=N(M);if(I>=0&&(I&1)===1)J+=` ${se}`}else if((M&1)===1)J+=` ${se}`}if(W)J+=` ${ne}`;if(j)J+=` ${w}`;if(X)J+=` ${D}`;g.className=J},u=(g,M)=>{let j=M.def.align;if(j==="center")g.classList.add(_),g.classList.remove(q);else if(j==="right")g.classList.add(q),g.classList.remove(_);else g.classList.remove(_,q)},c=(g,M)=>{let X=S.columns.length;if(M.length===X)return M;let W=[];for(let J=0;J<X;J++){let I;if(J<M.length)I=M[J];else I=document.createElement("div"),I.className=k,g.appendChild(I);W.push(I)}for(let J=X;J<M.length;J++)M[J].remove();return W},C=(g,M,j,X)=>{let W=b.acquire(),J=g,I=j.getSize(M),ie=j.getOffset(M)-X;W.style.cssText=`width:${S.totalWidth}px;height:${I}px;transform:translateY(${ie}px)`,W.className=ye,d(W,"presentation",g.id,M),W.removeAttribute("aria-selected"),W.removeAttribute("aria-rowindex"),W.replaceChildren();let le=document.createElement("div");if(le.className=fe,h){let ee=h(J.groupKey,J.groupIndex);if(typeof ee==="string")le.innerHTML=ee;else le.appendChild(ee)}return W.appendChild(le),Re(W),{element:W,cells:[],index:M,isGroupHeader:!0,_lastItem:g,lastItemId:g.id,lastSelected:!1,lastFocused:!1,lastOffset:ie,lastHeight:I}},T=(g,M,j,X,W,J)=>{let I=b.acquire(),ie=W.getSize(M),le=W.getOffset(M)-J,ee=A(g.id);I.style.cssText=`width:${S.totalWidth}px;height:${ie}px;transform:translateY(${le}px)`,n(I,M,j,X,ee),d(I,"row",g.id,M),I.id=`${a}-item-${M}`,I.setAttribute("aria-rowindex",String(M+2)),y(I,j);let Le=c(I,[]),x=S.columns;for(let H=0;H<Le.length&&H<x.length;H++){let Y=Le[H],Q=x[H];Y.style.cssText=`left:${Q.offset}px;width:${Q.width}px`,Y.setAttribute("role","gridcell"),Y.setAttribute("aria-colindex",String(H+1)),u(Y,Q),m(Y,g,Q,M,ee)}return{element:I,cells:Le,index:M,isGroupHeader:!1,_lastItem:g,lastItemId:g.id,lastSelected:j,lastFocused:X,lastOffset:le,lastHeight:ie}},Z=(g,M,j,X,W=E())=>{let J=!1,I=i();if(I!==F)F=I,J=!0;let ie=null,le=t();N=typeof f==="string"&&R?R():null;for(let ee=M.start;ee<=M.end;ee++){let Le=ee-M.start,x=g[Le];if(!x)continue;let H=j.has(x.id),Y=ee===X,Q=p?p(x):!1,V=P.get(ee);if(V){if(V.isGroupHeader!==Q){b.release(V.element),P.delete(ee);let pe=Q?C(x,ee,le,W):T(x,ee,H,Y,le,W);if(P.set(ee,pe),!ie)ie=document.createDocumentFragment();ie.appendChild(pe.element);continue}if(Q){if(V._lastItem!==x){let oe=x,ue=V.element.firstElementChild;if(ue&&h){let ge=h(oe.groupKey,oe.groupIndex);if(typeof ge==="string")ue.innerHTML=ge;else ue.replaceChildren(ge);Re(V.element)}V.element.setAttribute("data-id",String(x.id)),V._lastItem=x,V.lastItemId=x.id}let be=le.getOffset(ee)-W;if(V.lastOffset!==be)V.lastOffset=be,V.element.style.transform=`translateY(${be}px)`;let Te=le.getSize(ee);if(V.lastHeight!==Te)V.lastHeight=Te,V.element.style.height=`${Te}px`}else{let pe=V._lastItem!==x,be=V.lastSelected!==H,Te=V.lastFocused!==Y;if(pe){let ge=V.lastItemId!=null&&A(V.lastItemId),xe=A(x.id);if(!xe&&Ge(j,ee,x.id))H=!0;let me=S.columns;for(let ce=0;ce<V.cells.length&&ce<me.length;ce++)m(V.cells[ce],x,me[ce],ee,xe);if(n(V.element,ee,H,Y,xe),V.element.setAttribute("data-id",String(x.id)),y(V.element,H),ge&&!xe)V.element.classList.add(ve),setTimeout(()=>{V.element.classList.remove(ve)},300);V._lastItem=x,V.lastItemId=x.id,V.lastSelected=H,V.lastFocused=Y}else if(be||Te)n(V.element,ee,H,Y,A(x.id)),y(V.element,H),V.lastSelected=H,V.lastFocused=Y;let oe=le.getOffset(ee)-W;if(V.lastOffset!==oe)V.lastOffset=oe,V.element.style.transform=`translateY(${oe}px)`;let ue=le.getSize(ee);if(V.lastHeight!==ue)V.lastHeight=ue,V.element.style.height=`${ue}px`;if(J)V.element.setAttribute("aria-rowindex",String(ee+2))}}else{if(Ge(j,ee,x.id))H=!0;let pe=Q?C(x,ee,le,W):T(x,ee,H,Y,le,W);if(P.set(ee,pe),!ie)ie=document.createDocumentFragment();ie.appendChild(pe.element)}}if(ie)e.appendChild(ie);for(let[ee,Le]of P)if(ee<M.start||ee>M.end)b.release(Le.element),P.delete(ee)},K=(g,M,j,X)=>{let W=P.get(g);if(!W)return;if(W.isGroupHeader)return;let J=S.columns;for(let I=0;I<W.cells.length&&I<J.length;I++)m(W.cells[I],M,J[I],g);W.element.setAttribute("data-id",String(M.id)),W._lastItem=M,W.lastItemId=M.id,n(W.element,g,j,X),y(W.element,j),W.lastSelected=j,W.lastFocused=X},O=(g,M,j)=>{let X=P.get(g);if(!X)return;if(X.isGroupHeader)return;let W=X.lastSelected!==M,J=X.lastFocused!==j;if(W||J)n(X.element,g,M,j),y(X.element,M),X.lastSelected=M,X.lastFocused=j},B=(g)=>{S=g;let M=g.columns;for(let[,j]of P)if(j.element.style.width=`${g.totalWidth}px`,j.cells.length>0)for(let X=0;X<j.cells.length&&X<M.length;X++){let W=j.cells[X],J=M[X];W.style.left=`${J.offset}px`,W.style.width=`${J.width}px`}},v=(g)=>P.get(g)?.element,z=()=>{for(let[,g]of P)b.release(g.element);P.clear(),F=-1};return{render:Z,updateItem:K,updateItemClasses:O,getElement:v,updateColumnLayout:B,setGroupHeaderFn:l,clear:z,destroy:()=>{z(),b.clear()}}};var Tt=(e)=>{let t=Math.max(1,Math.floor(e.columns)),s=e.gap??0,r=e.containerSize,o=e.crossOffset??0,a=e.mainOffset??0,i=0,f=[],R=()=>{let l=(t-1)*s;i=Math.max(0,(r-l)/t),f=Array(t);let y=i+s;for(let d=0;d<t;d++)f[d]=o+d*y};R();let E=[],b=0,P=[],F=(l,y)=>{if(l<=0)return b=0,E=[],[];let d=Array(t).fill(a),A=Array(t);for(let D=0;D<t;D++)A[D]=[];let G=Array(l);for(let D=0;D<l;D++){let k=0,_=d[0];for(let se=1;se<t;se++){let ne=d[se];if(ne<_)_=ne,k=se}let q=y(D),U=d[k];G[D]={index:D,x:f[k],y:U,lane:k,size:q,crossSize:i},A[k].push(D),d[k]=U+q+s}E=A;let w=0;for(let D=0;D<t;D++){let k=d[D],_=k>0?k-s:0;if(_>w)w=_}return b=w,G},S=(l)=>{if(l.length===0)return b;if(b)return b;let y=Array(t).fill(0);for(let A of l){let G=A.y+A.size,w=y[A.lane];if(G>w)y[A.lane]=G}let d=0;for(let A=0;A<t;A++)if(y[A]>d)d=y[A];return d},N=(l,y,d)=>{if(l.length===0||d<=y)return P.length=0,P;if(E.length===0||E.length!==t)return p(l,y,d);P.length=0;for(let A=0;A<t;A++){let G=E[A],w=G.length;if(!w)continue;let D=0,k=w;while(D<k){let _=D+k>>>1,q=l[G[_]];if(q.y+q.size<=y)D=_+1;else k=_}for(let _=D;_<w;_++){let q=l[G[_]];if(q.y>=d)break;P.push(q)}}return P},p=(l,y,d)=>{P.length=0;for(let A of l)if(A.y+A.size>y&&A.y<d)P.push(A);return P};return{get columns(){return t},get gap(){return s},get containerSize(){return r},update:(l)=>{let y=!1;if(l.columns!==void 0){let d=Math.max(1,Math.floor(l.columns));if(d!==t)t=d,y=!0}if(l.gap!==void 0&&l.gap!==s)s=l.gap,y=!0;if(l.containerSize!==void 0&&l.containerSize!==r)r=l.containerSize,y=!0;if(l.crossOffset!==void 0&&l.crossOffset!==o)o=l.crossOffset,y=!0;if(l.mainOffset!==void 0&&l.mainOffset!==a)a=l.mainOffset,y=!0;if(y)R()},calculateLayout:F,getTotalSize:S,getVisibleItems:N}};var It=(e,t,s)=>{let r=Array.from(t).sort((i,f)=>i-f);if(r.length<=1)return;let o=[];for(let i=0;i<r.length;i++){let f=s(r[i]);if(f)o.push(f)}if(o.length<=1)return;let a=e.firstChild;for(let i=0;i<o.length;i++){let f=o[i];if(f===a)a=a.nextSibling;else e.insertBefore(f,a)}};var Dt=(e=200)=>{let t=[];return{acquire:()=>{let a=t.pop();if(a)return a;let i=document.createElement("div");return i.setAttribute("role","option"),i},release:(a)=>{if(a.remove(),t.length<e)a.className="",a.textContent="",a.removeAttribute("style"),a.removeAttribute("data-index"),a.removeAttribute("data-id"),a.removeAttribute("data-lane"),t.push(a)},clear:()=>{t.length=0}}},zt=1,Lt=(e,t,s,r=!1,o,a,i,f,R=()=>0)=>{let E=Dt(),b=new Map,P=new Set,F=0,S="",N=-1,p=!1,h={selected:!1,focused:!1},l=(m,n)=>(h.selected=m,h.focused=n,h),y=`${s}-item ${s}-masonry-item`,d=`${s}-group-header`,A=`${s}-item--selected`,G=`${s}-item--focused`,w=(m,n)=>{if(typeof n==="string")m.innerHTML=n;else m.replaceChildren(n);Re(m)},D=(m,n,u)=>{m.classList.toggle(A,n),m.classList.toggle(G,u)},k=(m,n)=>{let u=Math.round(n.y-U);if(r)m.style.transform=`translate(${u}px, ${Math.round(n.x)}px)`;else m.style.transform=`translate(${Math.round(n.x)}px, ${u}px)`},_=(m,n)=>{if(r)m.style.width=`${n.size}px`,m.style.height=`${n.crossSize}px`;else m.style.width=`${n.crossSize}px`,m.style.height=`${n.size}px`},q=(m,n,u,c,C)=>{let T=E.acquire(),Z=n.__groupHeader,K=l(c,C);if(T.className=Z?d:y,T.dataset.index=String(m),T.dataset.id=String(n.id),T.dataset.lane=String(u.lane),Z)T.setAttribute("role","presentation"),T.removeAttribute("aria-selected"),T.removeAttribute("aria-setsize"),T.removeAttribute("aria-posinset"),T.removeAttribute("id");else if(p){if(T.setAttribute("role","option"),T.ariaSelected=String(c),a)T.id=`${a}-item-${m}`;if(o){let B=o();if(B!==N)N=B,S=String(B);T.setAttribute("aria-setsize",S);let v=i?i(m):m+1;T.setAttribute("aria-posinset",String(v))}}else T.setAttribute("role","listitem"),T.removeAttribute("aria-selected"),T.removeAttribute("aria-setsize"),T.removeAttribute("aria-posinset"),T.removeAttribute("id");_(T,u);let O=t(n,m,K);return w(T,O),D(T,c,C),k(T,u),{element:T,lastItem:n,lastSelected:c,lastFocused:C,lastY:u.y-U,absY:u.y,lastX:u.x,lastSize:u.size,lastCrossSize:u.crossSize,lastSeenFrame:F}},U=0,se=(m,n,u,c,C=R())=>{U=C,F++,p=typeof f==="function"?f():f===!0;let T=o?.()??1/0;if(p&&o){if(T!==N){N=T,S=String(T);for(let K of b.values())if(K.element.getAttribute("role")==="option")K.element.setAttribute("aria-setsize",S)}}P.clear();for(let K=0;K<n.length;K++)P.add(n[K].index);let Z=null;for(let K=0;K<n.length;K++){let O=n[K],B=O.index,v=m(B);if(!v)continue;let z=u.has(v.id),re=B===c,g=b.get(B);if(g){let M=g.lastItem!==v,j=g.lastSelected!==z,X=g.lastFocused!==re,W=g.lastY!==O.y-U||g.lastX!==O.x,J=g.lastSize!==O.size||g.lastCrossSize!==O.crossSize;if(M){let I=l(z,re),ie=t(v,B,I);if(w(g.element,ie),g.element.dataset.id=String(v.id),g.lastItem=v,!v.__groupHeader&&p){let ee=i?i(B):B+1;g.element.setAttribute("aria-posinset",String(ee))}}if(M||j||X){if(D(g.element,z,re),p)g.element.ariaSelected=String(z);else g.element.removeAttribute("aria-selected");g.lastSelected=z,g.lastFocused=re}if(J)_(g.element,O),g.lastSize=O.size,g.lastCrossSize=O.crossSize;if(W)k(g.element,O),g.lastY=O.y-U,g.absY=O.y,g.lastX=O.x}else{let M=q(B,v,O,z,re);if(!Z)Z=document.createDocumentFragment();Z.appendChild(M.element),b.set(B,M)}}if(Z)e.appendChild(Z);for(let[K,O]of b)if(P.has(K))O.lastSeenFrame=F;else if(K>=T||F-O.lastSeenFrame>zt)E.release(O.element),b.delete(K);else{let B=Math.round(O.absY-U);if(B!==O.lastY){O.lastY=B;let v=Math.round(O.lastX);O.element.style.transform=r?`translate(${B}px, ${v}px)`:`translate(${v}px, ${B}px)`}}},ne=()=>{for(let m of b.values())E.release(m.element);b.clear(),e.innerHTML=""};return{render:se,getElement:(m)=>b.get(m)?.element,updateItemClasses:(m,n,u)=>{let c=b.get(m);if(!c)return;let C=c.lastSelected!==n,T=c.lastFocused!==u;if(C||T)D(c.element,n,u),c.lastSelected=n,c.lastFocused=u},sortDOM:()=>{It(e,b.keys(),(m)=>b.get(m)?.element)},clear:ne,destroy:()=>{ne(),E.clear()}}};var $t=(e,t,s)=>{let r=t;return{getOffset:(o)=>o*e,getSize:(o)=>e,indexAtOffset:(o)=>{if(r===0||e===0)return 0;return Math.max(0,Math.min(Math.floor(o/e),r-1))},getTotalSize:()=>{let o=r*e;return o>0?o-s:0},getTotal:()=>r,rebuild:(o)=>{r=o},invalidate:()=>{},isVariable:()=>!1}};var Ct=(e,t,s,r)=>{while(t<s){let o=t+s+1>>>1;if(e[o]<=r)t=o;else s=o-1}return t},Gt=(e,t,s)=>{let r=0,o=0,a=new Float64Array(0),i=new Float64Array(0),f=new Float64Array(1),R=(b,P)=>{for(let F=b;F<o;F++){if(F<=P){let S=F<<9,N=Math.min(S+512,r),p=0;for(let h=S;h<N;h++)a[h]=p,p+=e(h);i[F]=p}f[F+1]=f[F]+i[F]}},E=(b)=>{r=b,o=Math.ceil(b/512),a=new Float64Array(b),i=new Float64Array(o),f=new Float64Array(o+1),R(0,o-1)};return E(t),{getOffset:(b)=>{if(b<=0)return 0;if(b>=r)return f[o];return f[b>>>9]+a[b]},getSize:(b)=>e(b),indexAtOffset:(b)=>{if(r===0||b<=0)return 0;if(b>=f[o])return r-1;let P=Ct(f,0,o-1,b),F=P<<9;return Ct(a,F,Math.min(F+512,r)-1,b-f[P])},getTotalSize:()=>{let b=f[o];return b>0?b-s:0},getTotal:()=>r,rebuild:(b)=>E(b),invalidate:(b,P=b)=>{if(b>=0&&P<r)R(b>>>9,P>>>9)},isVariable:()=>!0}},Et=(e,t,s=0)=>{if(typeof e==="number")return $t(e,t,s);return Gt(e,t,s)};var Mt=()=>{let e={},t=(a,i)=>{if(!e[a])e[a]=new Set;return e[a].add(i),()=>s(a,i)},s=(a,i)=>{e[a]?.delete(i)};return{on:t,off:s,emit:(a,i)=>{e[a]?.forEach((f)=>{try{f(i)}catch(R){}})},clear:(a)=>{if(a)delete e[a];else for(let i in e)delete e[i]}}};var Ve=(e={})=>{let{chunkSize:t=100,maxCachedItems:s=5000,evictionBuffer:r=200,onEvict:o}=e,a=new Map,i=0,f=0,R=(m)=>{let n=a.get(m);if(!n)n={items:Array(t),count:0,lastAccess:Date.now()},a.set(m,n);else n.lastAccess=Date.now();return n},E=(m)=>Math.floor(m/t),b=(m)=>m%t,P=()=>i,F=(m)=>{i=m},S=(m)=>{if(m<0||m>=i)return;let n=E(m),u=a.get(n);if(!u)return;return u.items[b(m)]},N=(m)=>{if(m<0||m>=i)return!1;let n=E(m),u=a.get(n);if(!u)return!1;return u.items[b(m)]!==void 0},p=(m,n)=>{let u=E(m),c=R(u),C=b(m),T=c.items[C]===void 0;if(c.items[C]=n,T)c.count++,f++;if(m>=i)i=m+1},h=(m,n)=>{for(let u=0;u<n.length;u++){let c=n[u];if(c!==void 0)p(m+u,c)}},l=(m,n)=>{if(m<0||m>i)return;let u=E(m),c=Array.from(a.keys()).filter((O)=>O>=u).sort((O,B)=>O-B),C=[];for(let O of c){let B=a.get(O),v=O*t;for(let z=0;z<t;z++){if(B.items[z]===void 0)continue;let re=v+z;if(re<m)continue;C.push({oldIndex:re,item:B.items[z]})}}for(let{oldIndex:O}of C){let B=E(O),v=a.get(B);if(!v)continue;let z=b(O);if(v.items[z]!==void 0){if(v.items[z]=void 0,v.count--,f--,v.count===0)a.delete(B)}}i++;for(let{oldIndex:O,item:B}of C){let v=O+1,z=E(v),re=R(z),g=b(v);re.items[g]=B,re.count++,f++}let T=E(m),Z=R(T),K=b(m);Z.items[K]=n,Z.count++,f++},y=(m)=>{if(m<0||m>=i)return!1;let n=E(m),u=a.get(n),c=b(m);if(!(u!==void 0&&u.items[c]!==void 0))return!1;let T=n,Z=Array.from(a.keys()).filter((O)=>O>=T).sort((O,B)=>O-B),K=[];for(let O of Z){let B=a.get(O),v=O*t;for(let z=0;z<t;z++){if(B.items[z]===void 0)continue;let re=v+z;if(re<=m)continue;K.push({oldIndex:re,item:B.items[z]})}}if(u.items[c]=void 0,u.count--,f--,u.count===0)a.delete(n);for(let{oldIndex:O}of K){let B=E(O),v=a.get(B);if(!v)continue;let z=b(O);if(v.items[z]!==void 0){if(v.items[z]=void 0,v.count--,f--,v.count===0)a.delete(B)}}for(let{oldIndex:O,item:B}of K){let v=O-1,z=E(v),re=R(z),g=b(v);re.items[g]=B,re.count++,f++}return i--,!0},d=(m,n)=>{let u=[];for(let c=m;c<=n&&c<i;c++)u.push(S(c));return u},A=(m,n)=>{for(let u=m;u<=n&&u<i;u++)if(!N(u))return!1;return!0},G=()=>{let m=[],n=null,u=Array.from(a.keys()).sort((c,C)=>c-C);for(let c of u){let C=a.get(c);if(!C)continue;let T=c*t;for(let Z=0;Z<t;Z++){let K=T+Z;if(K>=i)break;if(C.items[Z]!==void 0)if(n===null)n={start:K,end:K};else if(K===n.end+1)n.end=K;else m.push(n),n={start:K,end:K};else if(n!==null)m.push(n),n=null}}if(n!==null)m.push(n);return m},w=(m,n)=>{let u=[],c=null;for(let C=m;C<=n&&C<i;C++)if(!N(C))if(c===null)c={start:C,end:C};else c.end=C;else if(c!==null)u.push(c),c=null;if(c!==null)u.push(c);return u},D=(m)=>a.has(m),k=(m)=>{let n=a.get(m);if(!n)return!1;let u=m*t,c=Math.min(t,i-u);return n.count>=c},_=(m)=>{let n=a.get(m);if(n)n.lastAccess=Date.now()},q=(m,n)=>{if(m>n||a.size===0)return;let u=Date.now(),c=E(Math.max(0,m)),C=E(Math.min(i-1,n));for(let T=c;T<=C;T++){let Z=a.get(T);if(Z)Z.lastAccess=u}},U=(m,n)=>{if(f<=s)return 0;let u=Math.max(0,m-r),c=Math.min(i-1,n+r),C=E(u),T=E(c),Z=0,K=[];for(let[O,B]of a)if(O<C||O>T)Z+=B.count,K.push(O),f-=B.count,a.delete(O);if(Z>0&&o)o(Z,K);return Z},se=()=>{if(f<=s)return 0;let m=Array.from(a.entries()).sort(([,c],[,C])=>c.lastAccess-C.lastAccess),n=0,u=[];for(let[c,C]of m){if(f<=s)break;n+=C.count,f-=C.count,u.push(c),a.delete(c)}if(n>0&&o)o(n,u);return n},ne=()=>({totalItems:i,cachedItems:f,cachedChunks:a.size,chunkSize:t,maxCachedItems:s,memoryEfficiency:i>0?1-f/i:1}),ve=()=>f,ye=()=>{a.clear(),f=0};return{chunkSize:t,maxCachedItems:s,getTotal:P,setTotal:F,get:S,has:N,set:p,setRange:h,insert:l,delete:y,getRange:d,isRangeLoaded:A,getLoadedRanges:G,findUnloadedRanges:w,getChunkIndex:E,isChunkLoaded:D,isChunkFullyLoaded:k,touchChunk:_,touchChunksForRange:q,evictDistant:U,evictToLimit:se,getStats:ne,getCachedCount:ve,clear:ye,reset:()=>{ye(),i=0}}},Fe=(e)=>{if(e.length===0)return[];let t=[...e].sort((r,o)=>r.start-o.start),s=[{...t[0]}];for(let r=1;r<t.length;r++){let o=t[r],a=s[s.length-1];if(o.start<=a.end+1)a.end=Math.max(a.end,o.end);else s.push({...o})}return s},qe=(e,t,s)=>{let r=Math.floor(e.start/s)*s,o=Math.ceil((e.end+1)/s)*s-1,a={start:r,end:o};if(t.length===0)return[a];let i=[],f=Fe(t),R=a.start;for(let E of f){if(E.end<R)continue;if(E.start>a.end)break;if(E.start>R)i.push({start:R,end:Math.min(E.start-1,a.end)});if(R=E.end+1,R>a.end)break}if(R<=a.end)i.push({start:R,end:a.end});return i};var Be=(e={})=>{let{maskCharacter:t=tt,maxSampleSize:s=nt}=e,r=[],o=!1,a=(b)=>{if(o||b.length===0)return;let P=Math.min(b.length,s);for(let F=0;F<P;F++){let S=b[F];if(!S||typeof S!=="object")continue;let N={},p=!1;for(let[h,l]of Object.entries(S)){if(h.startsWith("_")||h==="id")continue;N[h]=String(l??"").length,p=!0}if(p)r.push(N)}o=!0},i=()=>o,f=(b)=>{let P={id:`${we}${b}`,[We]:!0,_index:b};if(r.length===0)return P.label=t.repeat(12),P;let F=r[b%r.length];for(let[S,N]of Object.entries(F))P[S]=t.repeat(Math.max(1,N));return P};return{analyzeStructure:a,hasAnalyzedStructure:i,generate:f,generateRange:(b,P)=>{let F=[];for(let S=b;S<=P;S++)F.push(f(S));return F},clear:()=>{r=[],o=!1}}},He=(e)=>{if(!e||typeof e!=="object")return!1;return e[We]===!0},Xe=(e)=>e.filter((t)=>!He(t));var Ft=50,At=(e={})=>{let{adapter:t,initialItems:s,initialTotal:r,storage:o,placeholder:a,pageSize:i=Ft,maxConcurrent:f=0,onStateChange:R,onDataChange:E,onItemsLoaded:b,onItemsEvicted:P,onLoadError:F}=e,S=Ve({...o,onEvict:(x,H)=>{P?.(x),U(),q()}}),N=null,p=()=>{if(!N)N=Be(a);return N},h=new Map,l=!1,y,d=!0,A,G,w=[],D=0,k=new Map,_=()=>{for(let x of k.values())x[1].abort();k.clear()},q=()=>{R?.(c())},U=()=>{E?.()},se=()=>{h.clear();let x=S.getLoadedRanges();for(let H of x)for(let Y=H.start;Y<=H.end;Y++){let Q=S.get(Y);if(Q&&!He(Q))h.set(Q.id,Y)}},ne=(x,H)=>{if(!He(H))h.set(H.id,x)},ve=(x)=>{h.delete(x)},ye=(x,H)=>`${x}-${H}`,fe=()=>S.getTotal(),m=()=>S.getCachedCount(),n=()=>l,u=()=>d,c=()=>({total:S.getTotal(),cached:S.getCachedCount(),isLoading:l,pendingRanges:w,error:y,hasMore:d,cursor:A}),C=()=>S,T=()=>p(),Z=(x)=>{let H=S.get(x);if(H!==void 0)return H;if(x>=0&&x<S.getTotal())return p().generate(x);return},K=(x)=>{let H=h.get(x);if(H===void 0)return;return S.get(H)},O=(x)=>h.get(x)??-1,B=(x)=>{let H=S.get(x);return H!==void 0&&!He(H)},v=(x,H)=>{let Y=[],Q=S.getTotal();S.touchChunksForRange(x,Math.min(H,Q-1));for(let V=x;V<=H&&V<Q;V++){let pe=S.get(V);if(pe!==void 0)Y.push(pe);else Y.push(p().generate(V))}return Y},z=(x)=>{S.setTotal(x),d=S.getCachedCount()<x,U(),q()},re=(x,H=0,Y)=>{if(t&&x.length>0){let Q=p();if(!Q.hasAnalyzedStructure())Q.analyzeStructure(x)}for(let Q=0;Q<x.length;Q++){let V=x[Q];if(V!==void 0){let pe=H+Q;S.set(pe,V),ne(pe,V)}}if(Y!==void 0)S.setTotal(Y);else if(H+x.length>S.getTotal())S.setTotal(H+x.length);if(S.getCachedCount()>=S.getTotal()&&S.getTotal()>0)d=!1;U(),q(),b?.(x,H,S.getTotal())},g=(x,H)=>{let Y=S.get(x);if(!Y)return!1;let Q=Y.id,V={...Y,...H};if(S.set(x,V),H.id!==void 0&&H.id!==Q)ve(Q);return ne(x,V),U(),q(),!0},M=(x,H)=>{S.insert(H,x),se(),_(),U(),q()},j=(x)=>{let H=h.get(x);if(H===void 0)return!1;if(!S.delete(H))return!1;return se(),_(),U(),q(),!0},X=async(x,H)=>{if(!t)return;let Y=S.chunkSize,Q=Math.floor(x/Y),V=Math.floor(H/Y),pe=Y*2;for(let[oe,ue]of k){let ge=oe.indexOf("-"),xe=parseInt(oe.slice(0,ge),10);if(Math.abs(xe-x)>pe)ue[1].abort(),k.delete(oe)}let be=[],Te=[];for(let oe=Q;oe<=V;oe++){let ue=oe*Y,ge=ue+Y-1,xe=ye(ue,ge);if(S.isChunkFullyLoaded(oe))continue;let ce=k.get(xe);if(ce)Te.push(ce[0]);else be.push({start:ue,end:ge})}if(be.length===0){if(Te.length>0)await Promise.all(Te);return}if(f>0){let oe=k.size+be.length;if(oe>f){let ue=(x+H)/2,ge=Math.min(oe-f,k.size);while(ge>0){let me=null,ce=-1,Se=null;for(let[Ce,Ne]of k){let Pe=Ce.indexOf("-"),Oe=parseInt(Ce.slice(0,Pe),10),De=parseInt(Ce.slice(Pe+1),10),Ee=Math.abs((Oe+De)/2-ue);if(Ee>ce)ce=Ee,me=Ce,Se=Ne[1]}if(me)Se.abort(),k.delete(me);ge--}let xe=f-k.size;if(be.length>xe)be.sort((me,ce)=>{let Se=Math.abs((me.start+me.end)/2-ue),Ce=Math.abs((ce.start+ce.end)/2-ue);return Se-Ce}),be.length=Math.max(0,xe)}}if(be.length===0){if(Te.length>0)await Promise.all(Te);return}for(let oe of be){let ue=ye(oe.start,oe.end),ge=new AbortController,xe=(async()=>{w.push(oe),l=!0,y=void 0,q();try{let me=oe.end-oe.start+1,ce={offset:oe.start,limit:me,cursor:oe.start===G?A:void 0,signal:ge.signal},Se=await t.read(ce);if(re(Se.items,oe.start,Se.total),Se.cursor)A=Se.cursor,G=oe.start+Se.items.length;let Ce=oe.start+Se.items.length;if(Ce>=D){if(D=Ce,Se.hasMore!==void 0)d=Se.hasMore;else if(Se.total!==void 0)d=Ce<Se.total}}catch(me){if(me?.name==="AbortError")return;y=me instanceof Error?me:Error(String(me)),F?.(y,oe)}finally{k.delete(ue);let me=w.findIndex((ce)=>ce.start===oe.start&&ce.end===oe.end);if(me>=0)w.splice(me,1);l=k.size>0,q()}})();k.set(ue,[xe,ge]),Te.push(xe)}await Promise.all(Te)},W=async(x,H)=>{if(S.isRangeLoaded(x,H))return;await X(x,H)},J=async()=>{if(!t)return;await X(0,i-1)},I=async()=>{if(!t||l||!d)return!1;let x=S.getCachedCount(),H=S.getTotal(),Y=x,Q=Math.min(Y+i-1,H>0?H-1:Y+i-1);if(Y>=H&&H>0)return d=!1,!1;return await X(Y,Q),S.getCachedCount()>x},ie=async()=>{if(S.clear(),h.clear(),N)N.clear();_(),w=[],l=!1,A=void 0,G=void 0,d=!0,D=0,y=void 0,U(),q()},le=(x,H)=>{if(S.evictDistant(x,H)>0)se()},ee=()=>{S.clear(),h.clear(),A=void 0,G=void 0,y=void 0,w=[],l=!1,U(),q()},Le=()=>{if(S.reset(),h.clear(),N)N.clear();A=void 0,G=void 0,d=!0,D=0,y=void 0,w=[],l=!1,U(),q()};if(s&&s.length>0)re(s,0,r??s.length);else if(r!==void 0)S.setTotal(r),U(),q();return{getState:c,getTotal:fe,getCached:m,getIsLoading:n,getHasMore:u,getStorage:C,getPlaceholders:T,getItem:Z,getItemById:K,getIndexById:O,isItemLoaded:B,getItemsInRange:v,setTotal:z,setItems:re,updateItem:g,insertItem:M,removeItem:j,loadRange:X,ensureRange:W,loadInitial:J,loadMore:I,reload:ie,evictDistant:le,clear:ee,reset:Le}};var Bt=0,Nt=1000,Kt=15,Wt=!0,Yt=16,Ut=!0,_e=2,Zt="scroll",qt=350,Xt=12,jt=(e)=>{if(typeof e!=="object"){let t=e??_e;return{top:t,right:t,bottom:t,left:t}}return{top:e.top??_e,right:e.right??_e,bottom:e.bottom??_e,left:e.left??_e}},Ht=(e,t,s={},r="vlist",o=!1,a,i,f)=>{let R=navigator.userAgentData?.platform||navigator.platform+navigator.userAgent,E=s.platform?s.platform==="windows":!/Mac|Android/i.test(R),{autoHide:b=!E,autoHideDelay:P=Nt,minThumbSize:F=Kt,showOnHover:S=Wt,showOnViewportEnter:N=Ut,clickBehavior:p=Zt}=s,h=p==="page"?"scroll":p,l=a??e,y=jt(s.padding),d=o?y.left:y.top,A=o?y.right:y.bottom,G=o?y.bottom:y.right,w=s.hoverZoneWidth??G+Yt,D=!0,k=0,_=0,q=0,U=0,se=!1,ne=!1,ve=0,ye=0,fe=0,m=null,n=!1,u=null,c=null,C=-1,T=-1,Z=-1,K=-1,O=-1,B=e.id?"":(()=>{let L;do L=`${r}-scrollport-${++Bt}`;while(document.getElementById(L));return e.id=L,L})(),v=0,z=0,re=null,g=null,M=null,j=o?"width":"height",X=o?"translateX":"translateY",W=o?(L)=>L.clientX:(L)=>L.clientY,J=o?"left":"top",I=document.createElement("div"),ie=document.createElement("div"),le=document.createElement("div"),ee=o?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",Le=()=>{if(l===e)return;let L=e.offsetTop;I.style[o?"left":"top"]=L?`calc(var(${ee}) + ${L}px)`:`var(${ee})`,le.style[o?"left":"top"]=`${L}px`},x=()=>{if(I.className=`${r}-scrollbar`,I.setAttribute("role","scrollbar"),I.setAttribute("aria-controls",e.id),I.setAttribute("aria-orientation",o?"horizontal":"vertical"),I.setAttribute("aria-label",e.getAttribute("aria-label")||"Scroll"),I.setAttribute("aria-valuemin","0"),I.tabIndex=0,ie.className=`${r}-scrollbar__thumb`,o)I.classList.add(`${r}-scrollbar--horizontal`);if(s.padding!==void 0)l.style.setProperty("--vlist-custom-scrollbar-padding-top",`${y.top}px`),l.style.setProperty("--vlist-custom-scrollbar-padding-right",`${y.right}px`),l.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${y.bottom}px`),l.style.setProperty("--vlist-custom-scrollbar-padding-left",`${y.left}px`);if(s.minThumbSize!==void 0)I.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${F}px`);if(I.appendChild(ie),l.appendChild(I),le.className=`${r}-scrollbar__hover`,o)le.classList.add(`${r}-scrollbar__hover--horizontal`),le.style.height=`${w}px`;else le.style.width=`${w}px`;if(l.appendChild(le),l!==e)Le()},H=()=>{if(m)clearTimeout(m),m=null},Y=()=>{if(!b)return;H(),m=setTimeout(V,P)},Q=()=>{if(!D||k<=_)return;if(H(),!n)I.classList.add(`${r}-scrollbar--visible`),n=!0;if(b&&!se&&!ne&&document.activeElement!==I)Y()},V=()=>{if(se||ne||document.activeElement===I)return;I.classList.remove(`${r}-scrollbar--visible`),n=!1},pe=(L,te)=>{if(k=L,_=te,Le(),be(fe),!D||k<=_){I.style.display="none",I.classList.remove(`${r}-scrollbar--visible`),n=!1;return}I.style.display="";let ae=Math.max(0,_-d-A),de=_/k;if(q=Math.max(F,de*ae),ie.style[j]=`${q}px`,U=ae-q,be(fe),!b)Q()},be=(L)=>{let te=Math.max(0,k-_);if(fe=Math.max(0,Math.min(L,te)),C!==te)C=te,I.setAttribute("aria-valuemax",String(te));if(T!==fe)T=fe,I.setAttribute("aria-valuenow",String(fe));let ae=i?.(),de=ae?.getTotal()??0,he=de?ae.indexAtOffset(fe)+1:0;if(he!==Z||de!==K)Z=he,K=de,I.setAttribute("aria-valuetext",`Row ${he} of ${de}`);if(te<=0||U<=0)return;let Me=fe/te*U;if(Me!==O)O=Me,ie.style.transform=`${X}(${Me}px)`},Te=(L)=>{if(!D||L.target!==I||document.activeElement!==I)return;if(L.stopPropagation(),L.altKey||L.ctrlKey||L.metaKey)return;let te=i?.(),ae=te?.getSize(te.indexAtOffset(fe))??40,de=fe;switch(L.key){case(o?"ArrowLeft":"ArrowUp"):de-=ae;break;case(o?"ArrowRight":"ArrowDown"):de+=ae;break;case"PageUp":de-=_;break;case"PageDown":de+=_;break;case"Home":de=0;break;case"End":de=k;break;default:return}L.preventDefault(),t(Math.max(0,Math.min(de,Math.max(0,k-_)))),Q()},oe=(L)=>{if(L.target===ie||h!=="jump"||U<=0)return;let te=k-_,ae=I.getBoundingClientRect(),de=W(L)-ae[J],he=Math.max(0,Math.min(de-q/2,U));t(he/U*te),Q()},ue=()=>{if(re!==null)clearTimeout(re),re=null;if(g!==null)cancelAnimationFrame(g),g=null;M=null},ge=(L)=>{let te=U>0?z/L*U:0;if(v<te)return-1;if(v>=te+q)return 1;return 0},xe=()=>{let L=k-_,te=ge(L);if(te===0){ue();return}if(te===-1){if(z<=0){ue();return}let ae=Math.max(0,z-_);z=ae,t(ae)}else{if(z>=L){ue();return}let ae=Math.min(L,z+_);z=ae,t(ae)}Q()},me=(L)=>{if(M===null){M=L,g=requestAnimationFrame(me);return}let te=k-_,ae=L-M;M=L;let de=ge(te);if(de===0){ue();return}let he=Xt*_/1000,Me=Math.min(he*ae,_);if(de===-1){if(z<=0){ue();return}let Ae=Math.max(0,z-Me);z=Ae,t(Ae)}else{if(z>=te){ue();return}let Ae=Math.min(te,z+Me);z=Ae,t(Ae)}H(),g=requestAnimationFrame(me)},ce=(L)=>{if(L&&L.pointerId!==u)return;let te=u,ae=c;if(u=null,c=null,se=!1,I.classList.remove(`${r}-scrollbar--dragging`),ue(),te!==null&&ae?.hasPointerCapture(te))ae.releasePointerCapture(te);Y()},Se=(L)=>{if(!D||L.button!==0||u!==null||U<=0)return;if(L.preventDefault(),L.stopPropagation(),u=L.pointerId,se=L.target===ie,c=se?ie:L.currentTarget,c.setPointerCapture(u),H(),se)ve=W(L),ye=fe,I.classList.add(`${r}-scrollbar--dragging`);else if(h==="jump")oe(L);else v=W(L)-I.getBoundingClientRect()[J],z=fe,xe(),re=setTimeout(()=>{g=requestAnimationFrame(me)},qt);Q()},Ce=(L)=>{if(!se||L.pointerId!==u)return;L.stopPropagation();let te=W(L)-ve,ae=Math.max(0,k-_),de=Math.max(0,Math.min(ye+te/U*ae,ae));be(de),t(de)},Ne=()=>{if(N)Q()},Pe=()=>{if(!se){if(ne=!1,b)Y()}},Oe=()=>{ne=!0,H(),Q()},De=()=>{if(ne=!1,!se&&b)Y()},Ee=["width","radius","thumb-color","track-color"],Ke=(L,te)=>l.style.setProperty(`--vlist-custom-scrollbar-${L}`,te),ze=Ee.map((L)=>l.style.getPropertyValue(`--vlist-custom-scrollbar-${L}`)),je=ze.slice(0,2),Je=[],Qe=()=>{for(let he=0;he<2;he++){let Me=Ee[he],Ae=l.style.getPropertyValue(`--vlist-custom-scrollbar-${Me}`);if(Ae!==Je[he])je[he]=Ae;Ke(Me,je[he])}let L=getComputedStyle(f??l),te=s.width??L.getPropertyValue("scrollbar-width"),ae=L.getPropertyValue("scrollbar-color").match(/[\w-]+\([^)]*\)|\S+/g);D=s.enabled!==!1&&te!=="none";let de=[typeof s.width==="number"?`${s.width}px`:L.getPropertyValue("--vlist-custom-scrollbar-width").trim()||(te==="thin"||!E?"6px":"14px"),typeof s.radius==="number"?`${s.radius}px`:L.getPropertyValue("--vlist-custom-scrollbar-radius").trim()||(E?"0px":"4px"),s.thumbColor??(ae?.length===2?ae[0]:ze[2]),s.trackColor??(ae?.length===2?ae[1]:ze[3])];for(let he=0;he<Ee.length;he++)Ke(Ee[he],de[he]);if(Je=de.slice(0,2),le.style.display=D?"":"none",e.classList.toggle(`${r}-viewport--gutter`,D&&!!s.gutter),!D)ce();pe(k,_)},Rt=()=>{H(),ue(),ce(),H();for(let L of et)L();for(let L=0;L<Ee.length;L++)Ke(Ee[L],ze[L]);if(e.classList.remove(`${r}-viewport--gutter`),le.remove(),l.style.removeProperty("--vlist-custom-scrollbar-padding-top"),l.style.removeProperty("--vlist-custom-scrollbar-padding-right"),l.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),l.style.removeProperty("--vlist-custom-scrollbar-padding-left"),I.remove(),B&&e.id===B)e.removeAttribute("id")};x();let et=[],Ie=(L,te,ae)=>{L.addEventListener(te,ae),et.push(()=>L.removeEventListener(te,ae))};for(let L of[I,ie,le])Ie(L,"pointerdown",Se),Ie(L,"pointermove",Ce),Ie(L,"pointerup",ce),Ie(L,"pointercancel",ce),Ie(L,"lostpointercapture",ce);if(Ie(I,"keydown",Te),Ie(I,"focus",Q),Ie(I,"blur",Y),Ie(e,"mouseenter",Ne),Ie(e,"mouseleave",Pe),Ie(I,"mouseenter",Oe),Ie(I,"mouseleave",De),S)Ie(le,"mouseenter",Oe),Ie(le,"mouseleave",De);return Qe(),{refresh:Qe,show:Q,hide:V,updateBounds:pe,updatePosition:be,isVisible:()=>n,destroy:Rt}};function Jt(e){let t=0,s=0,r=0;function o(){return r>0?s/r:0}function a(R){if(t=R,R>0.1&&R<50)s+=R,r++}function i(){let R=e.getTotal();if(R===0)return 0;let E=e.getItemSize();if(E<=0)return 0;let b=e.getContainerSize();if(b<=0)return 0;let P=e.getScrollPosition(),F=typeof e.getColumns==="function"?e.getColumns():1,S=Math.ceil(R/F),N=Math.max(0,S*E-b),p=Math.max(0,Math.min(P,N)),h=Math.ceil((p+b)/E);return Math.min(h*F,R)}function f(){let R=e.getTotal(),E=i();return{progress:R>0?Math.min(100,Math.max(0,E/R*100)):0,velocity:t,velocityAvg:o(),itemCount:E,total:R}}return{getState:f,onVelocity:a}}export{at as buildLayoutItems,qe as calculateMissingRanges,ht as clearSelection,At as createAsyncManager,Mt as createEmitter,dt as createGridLayout,lt as createGroupLayout,it as createGroupedSizeFn,Tt as createMasonryLayout,Lt as createMasonryRenderer,Be as createPlaceholderManager,Ht as createScrollbar,pt as createSelectionState,Et as createSizeCache,Ve as createSparseStorage,Jt as createStats,ut as createStickyHeader,ft as createTableHeader,mt as createTableLayout,xt as createTableRenderer,Ze as deselectItems,Xe as filterPlaceholders,St as getSelectedIds,vt as getSelectedItems,ct as isGroupHeader,He as isPlaceholderItem,yt as isSelected,Fe as mergeRanges,gt as selectAll,Ue as selectItems,bt as toggleSelection};
1
+ var nt="x",rt=20,We="_isPlaceholder",ke="__placeholder_";function He(e){let t=e.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let r=0;r<t.length;r++)t[r].setAttribute("tabindex","-1");e._stamp=0}var we={key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0},_t=(e)=>e.headerLayoutIndex,Pt=(e)=>e.firstDataIndex,at=(e,t,r)=>{let o=0,s=e.length-1;while(o<s){let i=o+s+1>>>1;if(t(e[i])<=r)o=i;else s=i-1}return o},Ue=(e,t)=>at(e,_t,t),ot=(e,t)=>at(e,Pt,t),st=(e,t,r)=>{if(e===0)return[];let o=[],s=null,i=0,c=0;for(let S=0;S<e;S++){let L=r?.(S);if(!L)continue;let k=t(S,L);if(s===null)s=k,i=0;else if(k!==s){let m=S-i;o.push({key:s,groupIndex:o.length,headerLayoutIndex:c,firstDataIndex:i,count:m}),c=c+1+m,s=k,i=S}}if(s!==null)o.push({key:s,groupIndex:o.length,headerLayoutIndex:c,firstDataIndex:i,count:e-i});return o},it=(e,t)=>{if(e.length===0||t.length===0)return[];let r=e.length+t.length,o=Array(r),s=0;for(let i of t){o[s]={id:`__group_header_${i.groupIndex}`,__groupHeader:!0,groupKey:i.key,groupIndex:i.groupIndex},s++;for(let c=0;c<i.count;c++)o[s]=e[i.firstDataIndex+c],s++}return o},lt=(e,t,r=!1)=>{let o=typeof t==="number"?(s)=>t:t;return(s)=>{let i=e.getEntry(s);if(i.type==="header"){if(r&&i.group.groupIndex===0)return 0;return e.getHeaderHeight(i.group.groupIndex)}return o(i.dataIndex)}},ut=(e,t,r)=>{let o=st(e,t.getGroupForIndex,r),s=e+o.length,i=t.header?.height??t.header?.width??t.headerHeight,c=typeof i==="number"?(f)=>i:(f)=>{let b=o[f];if(!b)return 0;return i(b.key,f)},S={type:"header",group:we},L={type:"item",dataIndex:0,group:we};return{get totalEntries(){return s},get groupCount(){return o.length},get groups(){return o},getEntry:(f)=>{if(o.length===0)return L.dataIndex=f,L.group=we,L;let b=Ue(o,f),u=o[b];if(f===u.headerLayoutIndex)return S.group=u,S;let y=f-u.headerLayoutIndex-1;return L.dataIndex=u.firstDataIndex+y,L.group=u,L},layoutToDataIndex:(f)=>{if(o.length===0)return f;let b=Ue(o,f),u=o[b];if(f===u.headerLayoutIndex)return-1;let y=f-u.headerLayoutIndex-1;return u.firstDataIndex+y},dataToLayoutIndex:(f)=>{if(o.length===0)return f;let b=ot(o,f),u=o[b],y=f-u.firstDataIndex;return u.headerLayoutIndex+1+y},getGroupAtLayoutIndex:(f)=>{if(o.length===0)return we;let b=Ue(o,f);return o[b]},getGroupAtDataIndex:(f)=>{if(o.length===0)return we;let b=ot(o,f);return o[b]},getHeaderHeight:c,rebuild:(f,b)=>{o=st(f,t.getGroupForIndex,b??r),s=f+o.length}}};var Ot=(e,t,r,o,s=0)=>{let i=r?"width":"height",c=document.createElement("div");return c.className=`${t}-sticky-header`,c.setAttribute("role","presentation"),c.setAttribute("aria-hidden","true"),c.style.cssText="z-index:5;pointer-events:none;overflow:hidden;"+(r?`position:absolute;top:0;bottom:0;left:${s||0}px`:`position:relative;top:${s||0}px`),c.style[i]=`${o}px`,e.insertBefore(c,e.firstChild),c},ct=(e,t,r,o,s,i=!1,c=0,S,L)=>{let k=i?"width":"height",m=i?"height":"width",O=i?"X":"Y",w=(n,a)=>{n.style[k]=`${a}px`},g=S??Ot(e,s,i,0,c),K=()=>{let n=document.createElement("div");return n.className="sticky-group",n.style.position="absolute",n.style.willChange="transform",n.style[m]="100%",n},f=K(),b=K();g.append(f,b);let u=f,y=b,h=t.groups,R=[],V=[],F=0,B=()=>{h=t.groups,F=h.length,R=Array(F),V=Array(F);for(let n=0;n<F;n++)R[n]=L?L(h[n].headerLayoutIndex):r.getOffset(h[n].headerLayoutIndex),V[n]=t.getHeaderHeight(n)};B();let P=-1,D=0,Z=-1,U=!1,te=0,X=!1,ye=(n,a)=>{o(n,a);let E=V[a];return w(n,E),E},de=(n)=>{n.replaceChildren(),n.style.transform=""},re=(n)=>{if(n===P)return;if(P=n,D=0,n<0||n>=F){de(u);return}D=ye(u,n),w(g,D),u.style.transform=""},d=(n)=>{if(n===te)return;te=n;let a=Math.round(n);u.style.transform=`translate${O}(${a}px)`,y.style.transform=`translate${O}(${a+D}px)`},p=()=>{te=0,u.style.transform="",y.style.transform=""},A=()=>{if(!X)return;let n=u;u=y,y=n,P=Z,D=P>=0?V[P]:0,w(g,D),de(y),Z=-1,X=!1,p()},_=()=>{if(!X)return;de(y),Z=-1,X=!1,p()},W=!!S,l=()=>{if(U)return;if(U=!0,W)g.style.visibility="";else g.style.display=""},v=()=>{if(!U)return;if(U=!1,W)g.style.visibility="hidden";else g.style.display="none";de(u),P=-1,D=0,_()},I=(n)=>{if(F===0){if(X)_();if(!U)l();re(-1);return}if(n<R[0]){v();return}let a=0,E=F-1;while(a<E){let N=a+E+1>>>1;if(R[N]+V[N]<=n)a=N;else E=N-1}if(!U)l();re(a);let C=a+1;if(C<F){let N=R[C]-n;if(N<=0&&N>-D){if(Z!==C||!X)Z=C,ye(y,C),X=!0;d(N)}else if(N<=-D){if(X)A()}else if(X)_()}else if(X)_()},T=()=>{B();let n=P;if(P=-1,D=0,n>=0)re(n)},H=()=>{g.remove(),P=-1,D=0,Z=-1,U=!1,X=!1};if(!S)g.style.display="none";return{update:I,refresh:T,show:l,hide:v,destroy:H}};var dt=(e)=>e!==null&&typeof e==="object"&&e.__groupHeader===!0;var mt=(e)=>{let t=Math.max(1,Math.floor(e.columns)),r=e.gap??0,o=e.isHeaderFn,s={row:0,col:0},i=(f)=>{if(f<=0)return 0;if(!o)return Math.ceil(f/t);let b=0,u=0,y=0;for(let h=0;h<f;h++)if(o(h)){if(y++,u)b++,u=0;b++,u=0}else if(u++,u>=t)b++,u=0;if(u)b++;return b},c=(f)=>(s.row=S(f),s.col=L(f),s),S=(f)=>{if(!o)return Math.floor(f/t);let b=0,u=0;for(let y=0;y<=f;y++)if(o(y)){if(u)b++,u=0;if(y===f)return b;b++,u=0}else{if(y===f)return b;if(u++,u>=t)b++,u=0}return b},L=(f)=>{if(!o)return f%t;if(o(f))return 0;let b=0;for(let u=0;u<=f;u++)if(o(u))b=0;else{if(u===f)return b;if(b++,b>=t)b=0}return b},k=(f,b,u,y)=>{if(u<=0){y.start=0,y.end=-1;return}if(!o){y.start=Math.max(0,f*t),y.end=Math.min(u-1,(b+1)*t-1);return}let h=m(f,b,u);y.start=h.start,y.end=h.end},m=(f,b,u)=>{if(u<=0)return{start:0,end:-1};if(!o){let F=Math.max(0,f*t),B=Math.min(u-1,(b+1)*t-1);return{start:F,end:B}}let y=-1,h=-1,R=0,V=0;for(let F=0;F<u;F++){if(o(F)){if(V)R++,V=0;if(R>=f&&R<=b){if(y<0)y=F;h=F}R++,V=0}else{if(R>=f&&R<=b){if(y<0)y=F;h=F}if(V++,V>=t)R++,V=0}if(R>b&&!V)break}if(y<0)return{start:0,end:-1};return{start:y,end:h}},O=(f,b,u)=>{if(b<0||b>=t)return-1;let y=f*t+b;if(y<0||y>=u)return-1;return y},w=(f)=>{let b=(t-1)*r;return Math.max(0,(f-b)/t)};return{get columns(){return t},get gap(){return r},update:(f)=>{if(f.columns!==void 0)t=Math.max(1,Math.floor(f.columns));if(f.gap!==void 0)r=f.gap;if(f.isHeaderFn!==void 0)o=f.isHeaderFn},getTotalRows:i,getPosition:c,getRow:S,getCol:L,getItemRange:m,fillItemRange:k,getItemIndex:O,getColumnWidth:w,getColumnOffset:(f,b)=>{let u=w(b);return f*(u+r)}}};var ft=(e,t=50,r=1/0,o=!0,s="none")=>{let i=e,c=[],S=0,L=0,k=()=>{c=i.map((h,R)=>({def:h,index:R,width:0,minWidth:Math.max(1,h.minWidth??t),maxWidth:h.maxWidth??r,resizable:h.resizable??o,offset:0}))},m=()=>{if(s==="none"||S<=0||S>=L)return;if(s==="spacer"){S=L;return}let h=L-S,R=S;for(let V=0;V<c.length;V++){let F=c[V];F.width=ze(F.width+h*(F.width/R),F.minWidth,F.maxWidth)}w()},O=(h)=>{L=h;let R=0,V=0;for(let F=0;F<c.length;F++){let B=c[F],P=B.def;if(P.width!==void 0)B.width=ze(P.width,B.minWidth,B.maxWidth),R+=B.width;else V++}if(V){let B=Math.max(0,h-R)/V;for(let P=0;P<c.length;P++){let D=c[P];if(D.def.width===void 0)D.width=ze(B,D.minWidth,D.maxWidth)}}w(),m()},w=()=>{let h=0;for(let R=0;R<c.length;R++){let V=c[R];V.offset=h,h+=V.width}S=h},g=(h,R)=>{let V=c[h];if(!V)return 0;if(V.resizable){if(V.width=ze(R,V.minWidth,V.maxWidth),w(),s==="spacer")m()}return V.width},K=(h)=>c[h],f=(h)=>{for(let R=0;R<c.length-1;R++)if(h<c[R].offset+c[R].width)return c[R];return c[c.length-1]},b=(h)=>c[h]?.offset??0,u=(h)=>c[h]?.width??0,y=(h)=>{i=h,k()};return k(),{get columns(){return c},get totalWidth(){return S},resolve:O,updateColumns:y,resizeColumn:g,getColumn:K,getColumnAtX:f,getColumnOffset:b,getColumnWidth:u}},ze=(e,t,r)=>Math.min(r,Math.max(t,e));var Dt=0,$t=(e,t="asc")=>Array.isArray(e)?e.map((r)=>({key:r.key,direction:r.direction})):typeof e==="string"?[{key:e,direction:t}]:e?.key?[{key:e.key,direction:e.direction??"asc"}]:[],Ye=(e,t,r)=>{if(r)e.setAttribute(t,r);else e.removeAttribute(t)},pt=(e,t,r,o,s,i,c=!1)=>{let S=document.createElement("div");S.setAttribute("role","rowgroup");let L=document.createElement("div");L.className=`${r}-table-header`,L.setAttribute("role","row"),L.setAttribute("aria-rowindex","1"),L.style.height=`${t}px`;let k=document.createElement("div");k.className=`${r}-table-header-scroll`,k.setAttribute("role","presentation"),L.appendChild(k),S.appendChild(L),e.insertBefore(S,e.firstChild),e.style.setProperty("--vlist-table-header-height",`${t}px`);let m=[],O=[],w=[],g=null,K=null,f=!1,b=-1,u=0,y=0,h=0,R=(l)=>{if(m[h]?.setAttribute("tabindex","-1"),h=l,m[l])m[l].tabIndex=0},V=(l)=>{let v=l?.closest("[data-column-key]");return v?m.indexOf(v):-1},F=(l,v)=>{let I=document.createElement("div");I.className=`${r}-table-header-cell`,I.setAttribute("role","columnheader"),I.setAttribute("aria-colindex",String(v+1)),I.tabIndex=v?-1:0,I.dataset.columnKey=l.def.key;let T=l.def.align;if(T==="center"||T==="right")I.classList.add(`${r}-table-header-cell--${T}`);let H=document.createElement("div");H.className=`${r}-table-header-content`;let n=l.def.header?l.def.header(l.def):l.def.label;if(typeof n==="string")H.textContent=n;else H.appendChild(n);if(I.appendChild(H),l.def.sortable){let a=document.createElement("span");a.className=`${r}-table-header-sort`,a.setAttribute("aria-hidden","true"),I.appendChild(a),O.push(a),I.classList.add(`${r}-table-header-cell--sortable`)}else O.push(null);if(l.resizable){let a=document.createElement("div");a.className=`${r}-table-header-resize`,a.dataset.resizeIndex=String(v),I.appendChild(a)}return I},B=(l)=>{g=l,k.textContent="",m=[],O=[],h=0;let v=l.columns;for(let I=0;I<v.length;I++){let T=F(v[I],I);m.push(T),k.appendChild(T)}if(P(l),w.length)D(w)},P=(l)=>{g=l;let v=l.columns;k.style.width=`${l.totalWidth}px`;for(let I=0;I<m.length&&I<v.length;I++)m[I].style.width=`${v[I].width}px`},D=(l,v="asc")=>{if(w=$t(l,v),!g)return;let I=g.columns,T=w.length>1,H="";if(T){let a=[];for(let E=0;E<w.length;E++){let C=w[E],N=I.find((Q)=>Q.def.key===C.key)?.def.label;a.push(`${(typeof N==="string"?N:N?.textContent)||C.key} ${C.direction==="asc"?"ascending":"descending"}`)}if(H=`sorted by ${a.join(", then ")}`,!K)K=document.createElement("div"),K.id=`${r}-table-live-${++Dt}`,K.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",K.setAttribute("aria-live","polite"),S.appendChild(K);K.textContent=H}else if(K)K.textContent="";let n=(a,E)=>{Ye(a,"aria-description",E&&H),Ye(a,"aria-describedby",E&&K.id)};n(L,T);for(let a=0;a<O.length&&a<I.length;a++){let E=O[a];if(!E)continue;let C=m[a],N=w.findIndex((oe)=>oe.key===I[a].def.key),Q=w[N];if(E.textContent=Q?Q.direction==="asc"?"▲":"▼":"",E.style.opacity=Q?"0.7":"0",Q&&T)E.dataset.sortPriority=String(N+1);else delete E.dataset.sortPriority;Ye(C,"aria-sort",N===0&&(Q.direction==="asc"?"ascending":"descending")),n(C,N>0)}},Z=(l)=>{k.style.transform=`translateX(${-l}px)`},U=(l)=>{let v=l.target;if(!v.dataset.resizeIndex)return;l.preventDefault(),l.stopPropagation(),b=+v.dataset.resizeIndex;let I=g?.getColumn(b);if(!I?.resizable)return;f=!0,u=l.clientX,y=I.width,e.classList.add(`${r}--col-resizing`),e.style.cursor="col-resize",v.classList.add(`${r}-table-header-resize--active`),v.setPointerCapture(l.pointerId),v.addEventListener("pointermove",te),v.addEventListener("pointerup",X),v.addEventListener("pointercancel",X)},te=(l)=>{if(!f||!g)return;let v=l.clientX-u;if(Math.abs(v)<1)return;o(b,Math.max(0,y+v))},X=(l)=>{if(!f)return;let v=l.target;v.removeEventListener("pointermove",te),v.removeEventListener("pointerup",X),v.removeEventListener("pointercancel",X);try{v.releasePointerCapture(l.pointerId)}catch{}v.classList.remove(`${r}-table-header-resize--active`),e.classList.remove(`${r}--col-resizing`),e.style.cursor="",f=!1,b=-1},ye=(l,v,I)=>{if(!l?.def.sortable||!s)return!1;let T=l.def.key,H=w.findIndex((n)=>n.key===T);if(I&&c){let n=w[H]?.direction,a=n?n==="asc"?"desc":null:"asc",E=!n?[...w,{key:T,direction:"asc"}]:a?w.map((C,N)=>N===H?{key:T,direction:a}:C):w.filter((C,N)=>N!==H);s({key:T,index:v,direction:a,sorts:E})}else{let n=w.length===1&&!H?w[0].direction:null,a=n?n==="asc"?"desc":null:"asc";s(w.length>1?{key:T,index:v,direction:a,sorts:a?[{key:T,direction:a}]:[]}:{key:T,index:v,direction:a})}return!0},de=(l)=>{let v=l.target;if(v.dataset.resizeIndex||f||!g)return;let I=V(v);if(I===-1)return;let T=v.closest("a[href],button,input,select,textarea,[tabindex]");if(T&&T!==m[I])return;let H=g.columns[I];i?.({key:H.def.key,index:I,event:l}),ye(H,I,l.shiftKey||l.ctrlKey||l.metaKey)},re=(l)=>{let v=V(l.target);if(v>=0)R(v)},d=(l)=>{if(l<0||l>=m.length)return;R(l),m[l].focus()},p=(l)=>{let v=l.key,I=l.target.closest("a[href],button,input,select,textarea,[tabindex]");if(I&&!I.hasAttribute("data-column-key"))return;if(v==="ArrowRight"||v==="ArrowLeft"){let T=v==="ArrowRight"?1:-1;if(l.ctrlKey||l.metaKey){let H=g?.getColumn(h);if(H?.resizable)o(h,H.width+T*10),l.preventDefault()}else{let H=h+T;if(H>=0&&H<m.length)d(H),l.preventDefault()}l.stopPropagation();return}if(v==="Home"||v==="End"){d(v==="Home"?0:m.length-1),l.preventDefault(),l.stopPropagation();return}if(v==="Enter"||v===" "){if(ye(g?.getColumn(h),h,l.shiftKey||l.ctrlKey||l.metaKey))l.preventDefault();l.stopPropagation();return}if(v==="ArrowDown")e.focus(),l.preventDefault(),l.stopPropagation()};return L.addEventListener("pointerdown",U),L.addEventListener("click",de),L.addEventListener("keydown",p),L.addEventListener("focusin",re),{element:L,update:P,updateSort:D,rebuild:B,show:()=>{L.style.display=""},hide:()=>{L.style.display="none"},destroy:()=>{L.removeEventListener("pointerdown",U),L.removeEventListener("click",de),L.removeEventListener("keydown",p),L.removeEventListener("focusin",re),e.style.removeProperty("--vlist-table-header-height"),K=null,S.remove(),m=[],O=[],w=[],g=null},syncScroll:Z}};var Ge=(e,t,r)=>{if(String(r).startsWith(ke))return!1;let o=ke+t;if(e.has(o))return e.delete(o),e.add(r),!0;return!1},bt=(e)=>({selected:new Set(e??[]),focusedIndex:-1,focusVisible:!1}),Ze=(e,t,r)=>{if(r==="none")return e;let o=new Set(e.selected);if(r==="single"){if(o.clear(),t.length>0)o.add(t[0])}else for(let s of t)o.add(s);return{...e,selected:o}},qe=(e,t)=>{let r=new Set(e.selected);for(let o of t)r.delete(o);return{...e,selected:r}},gt=(e,t,r)=>{if(r==="none")return e;if(e.selected.has(t))return qe(e,[t]);else return Ze(e,[t],r)},ht=(e,t,r)=>{if(r!=="multiple")return e;return{...e,selected:new Set(t.map((o)=>o.id))}},yt=(e)=>({...e,selected:new Set});var St=(e,t)=>e.selected.has(t),xt=(e)=>Array.from(e.selected),vt=(e,t)=>{let r=[];for(let o of e.selected){let s=t(o);if(s)r.push(s)}return r};var Tt=["data-id","data-index","aria-selected","aria-rowindex","role"],zt=()=>{let e=[];return{acquire:()=>e.pop()||document.createElement("div"),release:(t)=>{if(t.remove(),e.length<200){t.className="";for(let r=0;r<Tt.length;r++)t.removeAttribute(Tt[r]);t.style.cssText="",t.textContent="",e.push(t)}},clear:()=>{e.length=0}}},It=(e,t,r,o,s,i,c,S,L,k=()=>0)=>{let m=zt(),O=new Map,w=-1,g=r,K=null,f=null,b=null,u=(n,a)=>{f=n,b=a},y=(n,a)=>{if(typeof a==="string")n.innerHTML=a;else n.replaceChildren(a)},h=(n)=>String(n).startsWith("__placeholder_"),R=`${s}-item ${s}-table-row`,V=`${s}-item--selected`,F=`${s}-item--focused`,B=`${s}-table-cell`,P=`${s}-table-cell-skeleton`,D=`${s}-item--odd`,Z=`${s}-item--placeholder`,U=`${s}-item--replaced`,te=`${s}-table-row ${s}-table-group-header`,X=`${s}-table-group-header-content`,ye=(n,a,E,C,N=!1)=>{if(E.def.cell)y(n,E.def.cell(a,E.def,C));else{let oe=a[E.def.key],j=oe!=null?String(oe):"";if(N&&j)n.innerHTML=`<span>${j}</span>`;else n.textContent=j}if(N&&n.firstElementChild===null){n.replaceChildren();let oe=document.createElement("span");oe.className=P,n.appendChild(oe)}He(n);let Q=n.parentElement;if(Q)Q._stamp=0},de=(n,a,E,C,N=!1)=>{let Q=R;if(S){let oe=K?K(a):a;if(oe>=0&&(oe&1)===1)Q+=` ${D}`}if(N)Q+=` ${Z}`;if(E)Q+=` ${V}`;if(C)Q+=` ${F}`;n.className=Q},re=(n,a,E,C,N=!1)=>{de(n.element,a,E,C,N),E?n.element.setAttribute("aria-selected","true"):n.element.removeAttribute("aria-selected"),n.lastSelected=E,n.lastFocused=C},d=(n,a)=>{n.element.setAttribute("data-id",String(a.id)),n._lastItem=a,n.lastItemId=a.id},p=(n,a,E,C,N,Q=!1)=>{let oe=g.columns;for(let j=0;j<n.cells.length&&j<oe.length;j++)ye(n.cells[j],E,oe[j],a,Q);d(n,E),re(n,a,C,N,Q)},A=(n,a,E,C,N,Q,oe)=>{let j=m.acquire(),xe=Q.getSize(a),z=Q.getOffset(a)-oe,ne=[],ae={element:j,cells:ne,index:a,isGroupHeader:E,_lastItem:n,lastItemId:n.id,lastSelected:!1,lastFocused:!1,lastOffset:z,lastHeight:xe};if(j.style.cssText=`width:${g.totalWidth}px;height:${xe}px;transform:translateY(${z}px)`,j.setAttribute("role",E?"presentation":"row"),j.setAttribute("data-index",String(a)),E){let pe=n;j.className=te,d(ae,n);let be=document.createElement("div");if(be.className=X,b)y(be,b(pe.groupKey,pe.groupIndex));j.appendChild(be),He(j)}else{j.id=`${i}-item-${a}`,j.setAttribute("aria-rowindex",String(a+2));let pe=g.columns;for(let be=0;be<pe.length;be++){let x=document.createElement("div"),G=pe[be],Y=G.def.align;x.className=Y==="center"||Y==="right"?`${B} ${B}--${Y}`:B,x.style.cssText=`left:${G.offset}px;width:${G.width}px`,x.setAttribute("role","gridcell"),x.setAttribute("aria-colindex",String(be+1)),j.appendChild(x),ne.push(x)}p(ae,a,n,C,N,h(n.id))}return ae},_=(n,a,E,C,N=k())=>{let Q=!1,oe=c();if(oe!==w)w=oe,Q=!0;let j=null,xe=t();K=typeof S==="string"&&L?L():null;for(let z=a.start;z<=a.end;z++){let ne=n[z-a.start];if(!ne)continue;let ae=E.has(ne.id),pe=z===C,be=f?f(ne):!1,x=O.get(z),G=!!x;if(x&&x.isGroupHeader!==be)m.release(x.element),O.delete(z),x=void 0;if(x){if(be){if(x._lastItem!==ne){let le=ne,ge=x.element.firstElementChild;if(ge&&b)y(ge,b(le.groupKey,le.groupIndex)),He(x.element);d(x,ne)}}else{if(x._lastItem!==ne){let le=x.lastItemId!=null&&h(x.lastItemId),ge=h(ne.id);if(!ge&&Ge(E,z,ne.id))ae=!0;if(p(x,z,ne,ae,pe,ge),le&&!ge)x.element.classList.add(U),setTimeout(()=>{x.element.classList.remove(U)},300)}else if(x.lastSelected!==ae||x.lastFocused!==pe)re(x,z,ae,pe,h(ne.id));if(Q)x.element.setAttribute("aria-rowindex",String(z+2))}let Y=xe.getOffset(z)-N;if(x.lastOffset!==Y)x.lastOffset=Y,x.element.style.transform=`translateY(${Y}px)`;let J=xe.getSize(z);if(x.lastHeight!==J)x.lastHeight=J,x.element.style.height=`${J}px`}else{if(!G&&Ge(E,z,ne.id))ae=!0;let Y=A(ne,z,be,ae,pe,xe,N);if(O.set(z,Y),!j)j=document.createDocumentFragment();j.appendChild(Y.element)}}if(j)e.appendChild(j);for(let[z,ne]of O)if(z<a.start||z>a.end)m.release(ne.element),O.delete(z)},W=(n,a,E,C)=>{let N=O.get(n);if(!N||N.isGroupHeader)return;p(N,n,a,E,C)},l=(n,a,E)=>{let C=O.get(n);if(!C||C.isGroupHeader)return;if(C.lastSelected!==a||C.lastFocused!==E)re(C,n,a,E)},v=(n)=>{g=n;let a=n.columns;for(let[,E]of O){E.element.style.width=`${n.totalWidth}px`;for(let C=0;C<E.cells.length&&C<a.length;C++){let N=E.cells[C],Q=a[C];N.style.left=`${Q.offset}px`,N.style.width=`${Q.width}px`}}},I=(n)=>O.get(n)?.element,T=()=>{for(let[,n]of O)m.release(n.element);O.clear(),w=-1};return{render:_,updateItem:W,updateItemClasses:l,getElement:I,updateColumnLayout:v,setGroupHeaderFn:u,clear:T,destroy:()=>{T(),m.clear()}}};var Lt=(e)=>{let t=Math.max(1,Math.floor(e.columns)),r=e.gap??0,o=e.containerSize,s=e.crossOffset??0,i=e.mainOffset??0,c=0,S=[],L=()=>{let u=(t-1)*r;c=Math.max(0,(o-u)/t),S=Array(t);let y=c+r;for(let h=0;h<t;h++)S[h]=s+h*y};L();let k=[],m=0,O=[],w=(u,y)=>{if(u<=0)return m=0,k=[],[];let h=Array(t).fill(i),R=Array(t);for(let B=0;B<t;B++)R[B]=[];let V=Array(u);for(let B=0;B<u;B++){let P=0,D=h[0];for(let te=1;te<t;te++){let X=h[te];if(X<D)D=X,P=te}let Z=y(B),U=h[P];V[B]={index:B,x:S[P],y:U,lane:P,size:Z,crossSize:c},R[P].push(B),h[P]=U+Z+r}k=R;let F=0;for(let B=0;B<t;B++){let P=h[B],D=P>0?P-r:0;if(D>F)F=D}return m=F,V},g=(u)=>{if(u.length===0)return m;if(m)return m;let y=Array(t).fill(0);for(let R of u){let V=R.y+R.size,F=y[R.lane];if(V>F)y[R.lane]=V}let h=0;for(let R=0;R<t;R++)if(y[R]>h)h=y[R];return h},K=(u,y,h)=>{if(u.length===0||h<=y)return O.length=0,O;if(k.length===0||k.length!==t)return f(u,y,h);O.length=0;for(let R=0;R<t;R++){let V=k[R],F=V.length;if(!F)continue;let B=0,P=F;while(B<P){let D=B+P>>>1,Z=u[V[D]];if(Z.y+Z.size<=y)B=D+1;else P=D}for(let D=B;D<F;D++){let Z=u[V[D]];if(Z.y>=h)break;O.push(Z)}}return O},f=(u,y,h)=>{O.length=0;for(let R of u)if(R.y+R.size>y&&R.y<h)O.push(R);return O};return{get columns(){return t},get gap(){return r},get containerSize(){return o},update:(u)=>{let y=!1;if(u.columns!==void 0){let h=Math.max(1,Math.floor(u.columns));if(h!==t)t=h,y=!0}if(u.gap!==void 0&&u.gap!==r)r=u.gap,y=!0;if(u.containerSize!==void 0&&u.containerSize!==o)o=u.containerSize,y=!0;if(u.crossOffset!==void 0&&u.crossOffset!==s)s=u.crossOffset,y=!0;if(u.mainOffset!==void 0&&u.mainOffset!==i)i=u.mainOffset,y=!0;if(y)L()},calculateLayout:w,getTotalSize:g,getVisibleItems:K}};var Ct=(e,t,r)=>{let o=Array.from(t).sort((c,S)=>c-S);if(o.length<=1)return;let s=[];for(let c=0;c<o.length;c++){let S=r(o[c]);if(S)s.push(S)}if(s.length<=1)return;let i=e.firstChild;for(let c=0;c<s.length;c++){let S=s[c];if(S===i)i=i.nextSibling;else e.insertBefore(S,i)}};var Gt=(e=200)=>{let t=[];return{acquire:()=>{let i=t.pop();if(i)return i;let c=document.createElement("div");return c.setAttribute("role","option"),c},release:(i)=>{if(i.remove(),t.length<e)i.className="",i.textContent="",i.removeAttribute("style"),i.removeAttribute("data-index"),i.removeAttribute("data-id"),i.removeAttribute("data-lane"),t.push(i)},clear:()=>{t.length=0}}},Vt=1,Et=(e,t,r,o=!1,s,i,c,S,L=()=>0)=>{let k=Gt(),m=new Map,O=new Set,w=0,g="",K=-1,f=!1,b={selected:!1,focused:!1},u=(d,p)=>(b.selected=d,b.focused=p,b),y=`${r}-item ${r}-masonry-item`,h=`${r}-group-header`,R=`${r}-item--selected`,V=`${r}-item--focused`,F=(d,p)=>{if(typeof p==="string")d.innerHTML=p;else d.replaceChildren(p);He(d)},B=(d,p,A)=>{d.classList.toggle(R,p),d.classList.toggle(V,A)},P=(d,p)=>{let A=Math.round(p.y-U);if(o)d.style.transform=`translate(${A}px, ${Math.round(p.x)}px)`;else d.style.transform=`translate(${Math.round(p.x)}px, ${A}px)`},D=(d,p)=>{if(o)d.style.width=`${p.size}px`,d.style.height=`${p.crossSize}px`;else d.style.width=`${p.crossSize}px`,d.style.height=`${p.size}px`},Z=(d,p,A,_,W)=>{let l=k.acquire(),v=p.__groupHeader,I=u(_,W);if(l.className=v?h:y,l.dataset.index=String(d),l.dataset.id=String(p.id),l.dataset.lane=String(A.lane),v)l.setAttribute("role","presentation"),l.removeAttribute("aria-selected"),l.removeAttribute("aria-setsize"),l.removeAttribute("aria-posinset"),l.removeAttribute("id");else if(f){if(l.setAttribute("role","option"),l.ariaSelected=String(_),i)l.id=`${i}-item-${d}`;if(s){let H=s();if(H!==K)K=H,g=String(H);l.setAttribute("aria-setsize",g);let n=c?c(d):d+1;l.setAttribute("aria-posinset",String(n))}}else l.setAttribute("role","listitem"),l.removeAttribute("aria-selected"),l.removeAttribute("aria-setsize"),l.removeAttribute("aria-posinset"),l.removeAttribute("id");D(l,A);let T=t(p,d,I);return F(l,T),B(l,_,W),P(l,A),{element:l,lastItem:p,lastSelected:_,lastFocused:W,lastY:A.y-U,absY:A.y,lastX:A.x,lastSize:A.size,lastCrossSize:A.crossSize,lastSeenFrame:w}},U=0,te=(d,p,A,_,W=L())=>{U=W,w++,f=typeof S==="function"?S():S===!0;let l=s?.()??1/0;if(f&&s){if(l!==K){K=l,g=String(l);for(let I of m.values())if(I.element.getAttribute("role")==="option")I.element.setAttribute("aria-setsize",g)}}O.clear();for(let I=0;I<p.length;I++)O.add(p[I].index);let v=null;for(let I=0;I<p.length;I++){let T=p[I],H=T.index,n=d(H);if(!n)continue;let a=A.has(n.id),E=H===_,C=m.get(H);if(C){let N=C.lastItem!==n,Q=C.lastSelected!==a,oe=C.lastFocused!==E,j=C.lastY!==T.y-U||C.lastX!==T.x,xe=C.lastSize!==T.size||C.lastCrossSize!==T.crossSize;if(N){let z=u(a,E),ne=t(n,H,z);if(F(C.element,ne),C.element.dataset.id=String(n.id),C.lastItem=n,!n.__groupHeader&&f){let pe=c?c(H):H+1;C.element.setAttribute("aria-posinset",String(pe))}}if(N||Q||oe){if(B(C.element,a,E),f)C.element.ariaSelected=String(a);else C.element.removeAttribute("aria-selected");C.lastSelected=a,C.lastFocused=E}if(xe)D(C.element,T),C.lastSize=T.size,C.lastCrossSize=T.crossSize;if(j)P(C.element,T),C.lastY=T.y-U,C.absY=T.y,C.lastX=T.x}else{let N=Z(H,n,T,a,E);if(!v)v=document.createDocumentFragment();v.appendChild(N.element),m.set(H,N)}}if(v)e.appendChild(v);for(let[I,T]of m)if(O.has(I))T.lastSeenFrame=w;else if(I>=l||w-T.lastSeenFrame>Vt)k.release(T.element),m.delete(I);else{let H=Math.round(T.absY-U);if(H!==T.lastY){T.lastY=H;let n=Math.round(T.lastX);T.element.style.transform=o?`translate(${H}px, ${n}px)`:`translate(${n}px, ${H}px)`}}},X=()=>{for(let d of m.values())k.release(d.element);m.clear(),e.innerHTML=""};return{render:te,getElement:(d)=>m.get(d)?.element,updateItemClasses:(d,p,A)=>{let _=m.get(d);if(!_)return;let W=_.lastSelected!==p,l=_.lastFocused!==A;if(W||l)B(_.element,p,A),_.lastSelected=p,_.lastFocused=A},sortDOM:()=>{Ct(e,m.keys(),(d)=>m.get(d)?.element)},clear:X,destroy:()=>{X(),k.clear()}}};var Ft=(e,t,r)=>{let o=t;return{getOffset:(s)=>s*e,getSize:(s)=>e,indexAtOffset:(s)=>{if(o===0||e===0)return 0;return Math.max(0,Math.min(Math.floor(s/e),o-1))},getTotalSize:()=>{let s=o*e;return s>0?s-r:0},getTotal:()=>o,rebuild:(s)=>{o=s},invalidate:()=>{},isVariable:()=>!1}};var Mt=(e,t,r,o)=>{while(t<r){let s=t+r+1>>>1;if(e[s]<=o)t=s;else r=s-1}return t},Bt=(e,t,r)=>{let o=0,s=0,i=new Float64Array(0),c=new Float64Array(0),S=new Float64Array(1),L=(m,O)=>{for(let w=m;w<s;w++){if(w<=O){let g=w<<9,K=Math.min(g+512,o),f=0;for(let b=g;b<K;b++)i[b]=f,f+=e(b);c[w]=f}S[w+1]=S[w]+c[w]}},k=(m)=>{o=m,s=Math.ceil(m/512),i=new Float64Array(m),c=new Float64Array(s),S=new Float64Array(s+1),L(0,s-1)};return k(t),{getOffset:(m)=>{if(m<=0)return 0;if(m>=o)return S[s];return S[m>>>9]+i[m]},getSize:(m)=>e(m),indexAtOffset:(m)=>{if(o===0||m<=0)return 0;if(m>=S[s])return o-1;let O=Mt(S,0,s-1,m),w=O<<9;return Mt(i,w,Math.min(w+512,o)-1,m-S[O])},getTotalSize:()=>{let m=S[s];return m>0?m-r:0},getTotal:()=>o,rebuild:(m)=>k(m),invalidate:(m,O=m)=>{if(m>=0&&O<o)L(m>>>9,O>>>9)},isVariable:()=>!0}},At=(e,t,r=0)=>{if(typeof e==="number")return Ft(e,t,r);return Bt(e,t,r)};var Rt=()=>{let e={},t=(i,c)=>{if(!e[i])e[i]=new Set;return e[i].add(c),()=>r(i,c)},r=(i,c)=>{e[i]?.delete(c)};return{on:t,off:r,emit:(i,c)=>{e[i]?.forEach((S)=>{try{S(c)}catch(L){}})},clear:(i)=>{if(i)delete e[i];else for(let c in e)delete e[c]}}};var Ve=(e={})=>{let{chunkSize:t=100,maxCachedItems:r=5000,evictionBuffer:o=200,onEvict:s}=e,i=new Map,c=0,S=0,L=(d)=>{let p=i.get(d);if(!p)p={items:Array(t),count:0,lastAccess:Date.now()},i.set(d,p);else p.lastAccess=Date.now();return p},k=(d)=>Math.floor(d/t),m=(d)=>d%t,O=()=>c,w=(d)=>{c=d},g=(d)=>{if(d<0||d>=c)return;let p=k(d),A=i.get(p);if(!A)return;return A.items[m(d)]},K=(d)=>{if(d<0||d>=c)return!1;let p=k(d),A=i.get(p);if(!A)return!1;return A.items[m(d)]!==void 0},f=(d,p)=>{let A=k(d),_=L(A),W=m(d),l=_.items[W]===void 0;if(_.items[W]=p,l)_.count++,S++;if(d>=c)c=d+1},b=(d,p)=>{for(let A=0;A<p.length;A++){let _=p[A];if(_!==void 0)f(d+A,_)}},u=(d,p)=>{if(d<0||d>c)return;let A=k(d),_=Array.from(i.keys()).filter((T)=>T>=A).sort((T,H)=>T-H),W=[];for(let T of _){let H=i.get(T),n=T*t;for(let a=0;a<t;a++){if(H.items[a]===void 0)continue;let E=n+a;if(E<d)continue;W.push({oldIndex:E,item:H.items[a]})}}for(let{oldIndex:T}of W){let H=k(T),n=i.get(H);if(!n)continue;let a=m(T);if(n.items[a]!==void 0){if(n.items[a]=void 0,n.count--,S--,n.count===0)i.delete(H)}}c++;for(let{oldIndex:T,item:H}of W){let n=T+1,a=k(n),E=L(a),C=m(n);E.items[C]=H,E.count++,S++}let l=k(d),v=L(l),I=m(d);v.items[I]=p,v.count++,S++},y=(d)=>{if(d<0||d>=c)return!1;let p=k(d),A=i.get(p),_=m(d);if(!(A!==void 0&&A.items[_]!==void 0))return!1;let l=p,v=Array.from(i.keys()).filter((T)=>T>=l).sort((T,H)=>T-H),I=[];for(let T of v){let H=i.get(T),n=T*t;for(let a=0;a<t;a++){if(H.items[a]===void 0)continue;let E=n+a;if(E<=d)continue;I.push({oldIndex:E,item:H.items[a]})}}if(A.items[_]=void 0,A.count--,S--,A.count===0)i.delete(p);for(let{oldIndex:T}of I){let H=k(T),n=i.get(H);if(!n)continue;let a=m(T);if(n.items[a]!==void 0){if(n.items[a]=void 0,n.count--,S--,n.count===0)i.delete(H)}}for(let{oldIndex:T,item:H}of I){let n=T-1,a=k(n),E=L(a),C=m(n);E.items[C]=H,E.count++,S++}return c--,!0},h=(d,p)=>{let A=[];for(let _=d;_<=p&&_<c;_++)A.push(g(_));return A},R=(d,p)=>{for(let A=d;A<=p&&A<c;A++)if(!K(A))return!1;return!0},V=()=>{let d=[],p=null,A=Array.from(i.keys()).sort((_,W)=>_-W);for(let _ of A){let W=i.get(_);if(!W)continue;let l=_*t;for(let v=0;v<t;v++){let I=l+v;if(I>=c)break;if(W.items[v]!==void 0)if(p===null)p={start:I,end:I};else if(I===p.end+1)p.end=I;else d.push(p),p={start:I,end:I};else if(p!==null)d.push(p),p=null}}if(p!==null)d.push(p);return d},F=(d,p)=>{let A=[],_=null;for(let W=d;W<=p&&W<c;W++)if(!K(W))if(_===null)_={start:W,end:W};else _.end=W;else if(_!==null)A.push(_),_=null;if(_!==null)A.push(_);return A},B=(d)=>i.has(d),P=(d)=>{let p=i.get(d);if(!p)return!1;let A=d*t,_=Math.min(t,c-A);return p.count>=_},D=(d)=>{let p=i.get(d);if(p)p.lastAccess=Date.now()},Z=(d,p)=>{if(d>p||i.size===0)return;let A=Date.now(),_=k(Math.max(0,d)),W=k(Math.min(c-1,p));for(let l=_;l<=W;l++){let v=i.get(l);if(v)v.lastAccess=A}},U=(d,p)=>{if(S<=r)return 0;let A=Math.max(0,d-o),_=Math.min(c-1,p+o),W=k(A),l=k(_),v=0,I=[];for(let[T,H]of i)if(T<W||T>l)v+=H.count,I.push(T),S-=H.count,i.delete(T);if(v>0&&s)s(v,I);return v},te=()=>{if(S<=r)return 0;let d=Array.from(i.entries()).sort(([,_],[,W])=>_.lastAccess-W.lastAccess),p=0,A=[];for(let[_,W]of d){if(S<=r)break;p+=W.count,S-=W.count,A.push(_),i.delete(_)}if(p>0&&s)s(p,A);return p},X=()=>({totalItems:c,cachedItems:S,cachedChunks:i.size,chunkSize:t,maxCachedItems:r,memoryEfficiency:c>0?1-S/c:1}),ye=()=>S,de=()=>{i.clear(),S=0};return{chunkSize:t,maxCachedItems:r,getTotal:O,setTotal:w,get:g,has:K,set:f,setRange:b,insert:u,delete:y,getRange:h,isRangeLoaded:R,getLoadedRanges:V,findUnloadedRanges:F,getChunkIndex:k,isChunkLoaded:B,isChunkFullyLoaded:P,touchChunk:D,touchChunksForRange:Z,evictDistant:U,evictToLimit:te,getStats:X,getCachedCount:ye,clear:de,reset:()=>{de(),c=0}}},Fe=(e)=>{if(e.length===0)return[];let t=[...e].sort((o,s)=>o.start-s.start),r=[{...t[0]}];for(let o=1;o<t.length;o++){let s=t[o],i=r[r.length-1];if(s.start<=i.end+1)i.end=Math.max(i.end,s.end);else r.push({...s})}return r},Xe=(e,t,r)=>{let o=Math.floor(e.start/r)*r,s=Math.ceil((e.end+1)/r)*r-1,i={start:o,end:s};if(t.length===0)return[i];let c=[],S=Fe(t),L=i.start;for(let k of S){if(k.end<L)continue;if(k.start>i.end)break;if(k.start>L)c.push({start:L,end:Math.min(k.start-1,i.end)});if(L=k.end+1,L>i.end)break}if(L<=i.end)c.push({start:L,end:i.end});return c};var Be=(e={})=>{let{maskCharacter:t=nt,maxSampleSize:r=rt}=e,o=[],s=!1,i=(m)=>{if(s||m.length===0)return;let O=Math.min(m.length,r);for(let w=0;w<O;w++){let g=m[w];if(!g||typeof g!=="object")continue;let K={},f=!1;for(let[b,u]of Object.entries(g)){if(b.startsWith("_")||b==="id")continue;K[b]=String(u??"").length,f=!0}if(f)o.push(K)}s=!0},c=()=>s,S=(m)=>{let O={id:`${ke}${m}`,[We]:!0,_index:m};if(o.length===0)return O.label=t.repeat(12),O;let w=o[m%o.length];for(let[g,K]of Object.entries(w))O[g]=t.repeat(Math.max(1,K));return O};return{analyzeStructure:i,hasAnalyzedStructure:c,generate:S,generateRange:(m,O)=>{let w=[];for(let g=m;g<=O;g++)w.push(S(g));return w},clear:()=>{o=[],s=!1}}},Re=(e)=>{if(!e||typeof e!=="object")return!1;return e[We]===!0},je=(e)=>e.filter((t)=>!Re(t));var Kt=50,Ht=(e={})=>{let{adapter:t,initialItems:r,initialTotal:o,storage:s,placeholder:i,pageSize:c=Kt,maxConcurrent:S=0,onStateChange:L,onDataChange:k,onItemsLoaded:m,onItemsEvicted:O,onLoadError:w}=e,g=Ve({...s,onEvict:(x,G)=>{O?.(x),U(),Z()}}),K=null,f=()=>{if(!K)K=Be(i);return K},b=new Map,u=!1,y,h=!0,R,V,F=[],B=0,P=new Map,D=()=>{for(let x of P.values())x[1].abort();P.clear()},Z=()=>{L?.(_())},U=()=>{k?.()},te=()=>{b.clear();let x=g.getLoadedRanges();for(let G of x)for(let Y=G.start;Y<=G.end;Y++){let J=g.get(Y);if(J&&!Re(J))b.set(J.id,Y)}},X=(x,G)=>{if(!Re(G))b.set(G.id,x)},ye=(x)=>{b.delete(x)},de=(x,G)=>`${x}-${G}`,re=()=>g.getTotal(),d=()=>g.getCachedCount(),p=()=>u,A=()=>h,_=()=>({total:g.getTotal(),cached:g.getCachedCount(),isLoading:u,pendingRanges:F,error:y,hasMore:h,cursor:R}),W=()=>g,l=()=>f(),v=(x)=>{let G=g.get(x);if(G!==void 0)return G;if(x>=0&&x<g.getTotal())return f().generate(x);return},I=(x)=>{let G=b.get(x);if(G===void 0)return;return g.get(G)},T=(x)=>b.get(x)??-1,H=(x)=>{let G=g.get(x);return G!==void 0&&!Re(G)},n=(x,G)=>{let Y=[],J=g.getTotal();g.touchChunksForRange(x,Math.min(G,J-1));for(let le=x;le<=G&&le<J;le++){let ge=g.get(le);if(ge!==void 0)Y.push(ge);else Y.push(f().generate(le))}return Y},a=(x)=>{g.setTotal(x),h=g.getCachedCount()<x,U(),Z()},E=(x,G=0,Y)=>{if(t&&x.length>0){let J=f();if(!J.hasAnalyzedStructure())J.analyzeStructure(x)}for(let J=0;J<x.length;J++){let le=x[J];if(le!==void 0){let ge=G+J;g.set(ge,le),X(ge,le)}}if(Y!==void 0)g.setTotal(Y);else if(G+x.length>g.getTotal())g.setTotal(G+x.length);if(g.getCachedCount()>=g.getTotal()&&g.getTotal()>0)h=!1;U(),Z(),m?.(x,G,g.getTotal())},C=(x,G)=>{let Y=g.get(x);if(!Y)return!1;let J=Y.id,le={...Y,...G};if(g.set(x,le),G.id!==void 0&&G.id!==J)ye(J);return X(x,le),U(),Z(),!0},N=(x,G)=>{g.insert(G,x),te(),D(),U(),Z()},Q=(x)=>{let G=b.get(x);if(G===void 0)return!1;if(!g.delete(G))return!1;return te(),D(),U(),Z(),!0},oe=async(x,G)=>{if(!t)return;let Y=g.chunkSize,J=Math.floor(x/Y),le=Math.floor(G/Y),ge=Y*2;for(let[se,ue]of P){let Te=se.indexOf("-"),Le=parseInt(se.slice(0,Te),10);if(Math.abs(Le-x)>ge)ue[1].abort(),P.delete(se)}let ve=[],Ce=[];for(let se=J;se<=le;se++){let ue=se*Y,Te=ue+Y-1,Le=de(ue,Te);if(g.isChunkFullyLoaded(se))continue;let me=P.get(Le);if(me)Ce.push(me[0]);else ve.push({start:ue,end:Te})}if(ve.length===0){if(Ce.length>0)await Promise.all(Ce);return}if(S>0){let se=P.size+ve.length;if(se>S){let ue=(x+G)/2,Te=Math.min(se-S,P.size);while(Te>0){let ce=null,me=-1,he=null;for(let[Ie,Ne]of P){let Pe=Ie.indexOf("-"),Oe=parseInt(Ie.slice(0,Pe),10),De=parseInt(Ie.slice(Pe+1),10),Ee=Math.abs((Oe+De)/2-ue);if(Ee>me)me=Ee,ce=Ie,he=Ne[1]}if(ce)he.abort(),P.delete(ce);Te--}let Le=S-P.size;if(ve.length>Le)ve.sort((ce,me)=>{let he=Math.abs((ce.start+ce.end)/2-ue),Ie=Math.abs((me.start+me.end)/2-ue);return he-Ie}),ve.length=Math.max(0,Le)}}if(ve.length===0){if(Ce.length>0)await Promise.all(Ce);return}for(let se of ve){let ue=de(se.start,se.end),Te=new AbortController,Le=(async()=>{F.push(se),u=!0,y=void 0,Z();try{let ce=se.end-se.start+1,me={offset:se.start,limit:ce,cursor:se.start===V?R:void 0,signal:Te.signal},he=await t.read(me);if(E(he.items,se.start,he.total),he.cursor)R=he.cursor,V=se.start+he.items.length;let Ie=se.start+he.items.length;if(Ie>=B){if(B=Ie,he.hasMore!==void 0)h=he.hasMore;else if(he.total!==void 0)h=Ie<he.total}}catch(ce){if(ce?.name==="AbortError")return;y=ce instanceof Error?ce:Error(String(ce)),w?.(y,se)}finally{P.delete(ue);let ce=F.findIndex((me)=>me.start===se.start&&me.end===se.end);if(ce>=0)F.splice(ce,1);u=P.size>0,Z()}})();P.set(ue,[Le,Te]),Ce.push(Le)}await Promise.all(Ce)},j=async(x,G)=>{if(g.isRangeLoaded(x,G))return;await oe(x,G)},xe=async()=>{if(!t)return;await oe(0,c-1)},z=async()=>{if(!t||u||!h)return!1;let x=g.getCachedCount(),G=g.getTotal(),Y=x,J=Math.min(Y+c-1,G>0?G-1:Y+c-1);if(Y>=G&&G>0)return h=!1,!1;return await oe(Y,J),g.getCachedCount()>x},ne=async()=>{if(g.clear(),b.clear(),K)K.clear();D(),F=[],u=!1,R=void 0,V=void 0,h=!0,B=0,y=void 0,U(),Z()},ae=(x,G)=>{if(g.evictDistant(x,G)>0)te()},pe=()=>{g.clear(),b.clear(),R=void 0,V=void 0,y=void 0,F=[],u=!1,U(),Z()},be=()=>{if(g.reset(),b.clear(),K)K.clear();R=void 0,V=void 0,h=!0,B=0,y=void 0,F=[],u=!1,U(),Z()};if(r&&r.length>0)E(r,0,o??r.length);else if(o!==void 0)g.setTotal(o),U(),Z();return{getState:_,getTotal:re,getCached:d,getIsLoading:p,getHasMore:A,getStorage:W,getPlaceholders:l,getItem:v,getItemById:I,getIndexById:T,isItemLoaded:H,getItemsInRange:n,setTotal:a,setItems:E,updateItem:C,insertItem:N,removeItem:Q,loadRange:oe,ensureRange:j,loadInitial:xe,loadMore:z,reload:ne,evictDistant:ae,clear:pe,reset:be}};var Wt=0,Ut=1000,Yt=15,Zt=!0,qt=16,Xt=!0,_e=2,jt="scroll",Jt=350,Qt=12,en=(e)=>{if(typeof e!=="object"){let t=e??_e;return{top:t,right:t,bottom:t,left:t}}return{top:e.top??_e,right:e.right??_e,bottom:e.bottom??_e,left:e.left??_e}},kt=(e,t,r={},o="vlist",s=!1,i,c,S)=>{let L=navigator.userAgentData?.platform||navigator.platform+navigator.userAgent,k=r.platform?r.platform==="windows":!/Mac|Android/i.test(L),{autoHide:m=!k,autoHideDelay:O=Ut,minThumbSize:w=Yt,showOnHover:g=Zt,showOnViewportEnter:K=Xt,clickBehavior:f=jt}=r,b=f==="page"?"scroll":f,u=i??e,y=en(r.padding),h=s?y.left:y.top,R=s?y.right:y.bottom,V=s?y.bottom:y.right,F=r.hoverZoneWidth??V+qt,B=!0,P=0,D=0,Z=0,U=0,te=!1,X=!1,ye=0,de=0,re=0,d=null,p=!1,A=null,_=null,W=-1,l=-1,v=-1,I=-1,T=-1,H=e.id?"":(()=>{let M;do M=`${o}-scrollport-${++Wt}`;while(document.getElementById(M));return e.id=M,M})(),n=0,a=0,E=null,C=null,N=null,Q=s?"width":"height",oe=s?"translateX":"translateY",j=s?(M)=>M.clientX:(M)=>M.clientY,xe=s?"left":"top",z=document.createElement("div"),ne=document.createElement("div"),ae=document.createElement("div"),pe=s?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",be=()=>{if(u===e)return;let M=e.offsetTop;z.style[s?"left":"top"]=M?`calc(var(${pe}) + ${M}px)`:`var(${pe})`,ae.style[s?"left":"top"]=`${M}px`},x=()=>{if(z.className=`${o}-scrollbar`,z.setAttribute("role","scrollbar"),z.setAttribute("aria-controls",e.id),z.setAttribute("aria-orientation",s?"horizontal":"vertical"),z.setAttribute("aria-label",e.getAttribute("aria-label")||"Scroll"),z.setAttribute("aria-valuemin","0"),z.tabIndex=0,ne.className=`${o}-scrollbar__thumb`,s)z.classList.add(`${o}-scrollbar--horizontal`);if(r.padding!==void 0)u.style.setProperty("--vlist-custom-scrollbar-padding-top",`${y.top}px`),u.style.setProperty("--vlist-custom-scrollbar-padding-right",`${y.right}px`),u.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${y.bottom}px`),u.style.setProperty("--vlist-custom-scrollbar-padding-left",`${y.left}px`);if(r.minThumbSize!==void 0)z.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${w}px`);if(z.appendChild(ne),u.appendChild(z),ae.className=`${o}-scrollbar__hover`,s)ae.classList.add(`${o}-scrollbar__hover--horizontal`),ae.style.height=`${F}px`;else ae.style.width=`${F}px`;if(u.appendChild(ae),u!==e)be()},G=()=>{if(d)clearTimeout(d),d=null},Y=()=>{if(!m)return;G(),d=setTimeout(le,O)},J=()=>{if(!B||P<=D)return;if(G(),!p)z.classList.add(`${o}-scrollbar--visible`),p=!0;if(m&&!te&&!X&&document.activeElement!==z)Y()},le=()=>{if(te||X||document.activeElement===z)return;z.classList.remove(`${o}-scrollbar--visible`),p=!1},ge=(M,q)=>{if(P=M,D=q,be(),ve(re),!B||P<=D){z.style.display="none",z.classList.remove(`${o}-scrollbar--visible`),p=!1;return}z.style.display="";let ee=Math.max(0,D-h-R),ie=D/P;if(Z=Math.max(w,ie*ee),ne.style[Q]=`${Z}px`,U=ee-Z,ve(re),!m)J()},ve=(M)=>{let q=Math.max(0,P-D);if(re=Math.max(0,Math.min(M,q)),W!==q)W=q,z.setAttribute("aria-valuemax",String(q));if(l!==re)l=re,z.setAttribute("aria-valuenow",String(re));let ee=c?.(),ie=ee?.getTotal()??0,fe=ie?ee.indexAtOffset(re)+1:0;if(fe!==v||ie!==I)v=fe,I=ie,z.setAttribute("aria-valuetext",`Row ${fe} of ${ie}`);if(q<=0||U<=0)return;let Me=re/q*U;if(Me!==T)T=Me,ne.style.transform=`${oe}(${Me}px)`},Ce=(M)=>{if(!B||M.target!==z||document.activeElement!==z)return;if(M.stopPropagation(),M.altKey||M.ctrlKey||M.metaKey)return;let q=c?.(),ee=q?.getSize(q.indexAtOffset(re))??40,ie=re;switch(M.key){case(s?"ArrowLeft":"ArrowUp"):ie-=ee;break;case(s?"ArrowRight":"ArrowDown"):ie+=ee;break;case"PageUp":ie-=D;break;case"PageDown":ie+=D;break;case"Home":ie=0;break;case"End":ie=P;break;default:return}M.preventDefault(),t(Math.max(0,Math.min(ie,Math.max(0,P-D)))),J()},se=(M)=>{if(M.target===ne||b!=="jump"||U<=0)return;let q=P-D,ee=z.getBoundingClientRect(),ie=j(M)-ee[xe],fe=Math.max(0,Math.min(ie-Z/2,U));t(fe/U*q),J()},ue=()=>{if(E!==null)clearTimeout(E),E=null;if(C!==null)cancelAnimationFrame(C),C=null;N=null},Te=(M)=>{let q=U>0?a/M*U:0;if(n<q)return-1;if(n>=q+Z)return 1;return 0},Le=()=>{let M=P-D,q=Te(M);if(q===0){ue();return}if(q===-1){if(a<=0){ue();return}let ee=Math.max(0,a-D);a=ee,t(ee)}else{if(a>=M){ue();return}let ee=Math.min(M,a+D);a=ee,t(ee)}J()},ce=(M)=>{if(N===null){N=M,C=requestAnimationFrame(ce);return}let q=P-D,ee=M-N;N=M;let ie=Te(q);if(ie===0){ue();return}let fe=Qt*D/1000,Me=Math.min(fe*ee,D);if(ie===-1){if(a<=0){ue();return}let Ae=Math.max(0,a-Me);a=Ae,t(Ae)}else{if(a>=q){ue();return}let Ae=Math.min(q,a+Me);a=Ae,t(Ae)}G(),C=requestAnimationFrame(ce)},me=(M)=>{if(M&&M.pointerId!==A)return;let q=A,ee=_;if(A=null,_=null,te=!1,z.classList.remove(`${o}-scrollbar--dragging`),ue(),q!==null&&ee?.hasPointerCapture(q))ee.releasePointerCapture(q);Y()},he=(M)=>{if(!B||M.button!==0||A!==null||U<=0)return;if(M.preventDefault(),M.stopPropagation(),A=M.pointerId,te=M.target===ne,_=te?ne:M.currentTarget,_.setPointerCapture(A),G(),te)ye=j(M),de=re,z.classList.add(`${o}-scrollbar--dragging`);else if(b==="jump")se(M);else n=j(M)-z.getBoundingClientRect()[xe],a=re,Le(),E=setTimeout(()=>{C=requestAnimationFrame(ce)},Jt);J()},Ie=(M)=>{if(!te||M.pointerId!==A)return;M.stopPropagation();let q=j(M)-ye,ee=Math.max(0,P-D),ie=Math.max(0,Math.min(de+q/U*ee,ee));ve(ie),t(ie)},Ne=()=>{if(K)J()},Pe=()=>{if(!te){if(X=!1,m)Y()}},Oe=()=>{X=!0,G(),J()},De=()=>{if(X=!1,!te&&m)Y()},Ee=["width","radius","thumb-color","track-color"],Ke=(M,q)=>u.style.setProperty(`--vlist-custom-scrollbar-${M}`,q),$e=Ee.map((M)=>u.style.getPropertyValue(`--vlist-custom-scrollbar-${M}`)),Je=$e.slice(0,2),Qe=[],et=()=>{for(let fe=0;fe<2;fe++){let Me=Ee[fe],Ae=u.style.getPropertyValue(`--vlist-custom-scrollbar-${Me}`);if(Ae!==Qe[fe])Je[fe]=Ae;Ke(Me,Je[fe])}let M=getComputedStyle(S??u),q=r.width??M.getPropertyValue("scrollbar-width"),ee=M.getPropertyValue("scrollbar-color").match(/[\w-]+\([^)]*\)|\S+/g);B=r.enabled!==!1&&q!=="none";let ie=[typeof r.width==="number"?`${r.width}px`:M.getPropertyValue("--vlist-custom-scrollbar-width").trim()||(q==="thin"||!k?"6px":"14px"),typeof r.radius==="number"?`${r.radius}px`:M.getPropertyValue("--vlist-custom-scrollbar-radius").trim()||(k?"0px":"4px"),r.thumbColor??(ee?.length===2?ee[0]:$e[2]),r.trackColor??(ee?.length===2?ee[1]:$e[3])];for(let fe=0;fe<Ee.length;fe++)Ke(Ee[fe],ie[fe]);if(Qe=ie.slice(0,2),ae.style.display=B?"":"none",e.classList.toggle(`${o}-viewport--gutter`,B&&!!r.gutter),!B)me();ge(P,D)},wt=()=>{G(),ue(),me(),G();for(let M of tt)M();for(let M=0;M<Ee.length;M++)Ke(Ee[M],$e[M]);if(e.classList.remove(`${o}-viewport--gutter`),ae.remove(),u.style.removeProperty("--vlist-custom-scrollbar-padding-top"),u.style.removeProperty("--vlist-custom-scrollbar-padding-right"),u.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),u.style.removeProperty("--vlist-custom-scrollbar-padding-left"),z.remove(),H&&e.id===H)e.removeAttribute("id")};x();let tt=[],Se=(M,q,ee)=>{M.addEventListener(q,ee),tt.push(()=>M.removeEventListener(q,ee))};for(let M of[z,ne,ae])Se(M,"pointerdown",he),Se(M,"pointermove",Ie),Se(M,"pointerup",me),Se(M,"pointercancel",me),Se(M,"lostpointercapture",me);if(Se(z,"keydown",Ce),Se(z,"focus",J),Se(z,"blur",Y),Se(e,"mouseenter",Ne),Se(e,"mouseleave",Pe),Se(z,"mouseenter",Oe),Se(z,"mouseleave",De),g)Se(ae,"mouseenter",Oe),Se(ae,"mouseleave",De);return et(),{refresh:et,show:J,hide:le,updateBounds:ge,updatePosition:ve,isVisible:()=>p,destroy:wt}};function tn(e){let t=0,r=0,o=0;function s(){return o>0?r/o:0}function i(L){if(t=L,L>0.1&&L<50)r+=L,o++}function c(){let L=e.getTotal();if(L===0)return 0;let k=e.getItemSize();if(k<=0)return 0;let m=e.getContainerSize();if(m<=0)return 0;let O=e.getScrollPosition(),w=typeof e.getColumns==="function"?e.getColumns():1,g=Math.ceil(L/w),K=Math.max(0,g*k-m),f=Math.max(0,Math.min(O,K)),b=Math.ceil((f+m)/k);return Math.min(b*w,L)}function S(){let L=e.getTotal(),k=c();return{progress:L>0?Math.min(100,Math.max(0,k/L*100)):0,velocity:t,velocityAvg:s(),itemCount:k,total:L}}return{getState:S,onVelocity:i}}export{it as buildLayoutItems,Xe as calculateMissingRanges,yt as clearSelection,Ht as createAsyncManager,Rt as createEmitter,mt as createGridLayout,ut as createGroupLayout,lt as createGroupedSizeFn,Lt as createMasonryLayout,Et as createMasonryRenderer,Be as createPlaceholderManager,kt as createScrollbar,bt as createSelectionState,At as createSizeCache,Ve as createSparseStorage,tn as createStats,ct as createStickyHeader,pt as createTableHeader,ft as createTableLayout,It as createTableRenderer,qe as deselectItems,je as filterPlaceholders,xt as getSelectedIds,vt as getSelectedItems,dt as isGroupHeader,Re as isPlaceholderItem,St as isSelected,Fe as mergeRanges,ht as selectAll,Ze as selectItems,gt as toggleSelection};
@@ -1,48 +1,9 @@
1
1
  /**
2
2
  * vlist/table - Header
3
3
  * Manages the sticky header row that sits above the scrolling viewport.
4
- *
5
- * The header is a positioned DOM element inserted into the vlist root
6
- * container (above the viewport, like the sticky group header). It contains
7
- * one cell per column, each showing the column label. Resize handles are
8
- * rendered at the right edge of each resizable column's header cell.
9
- *
10
- * Layout:
11
- * .vlist (root, position: relative)
12
- * ├── .vlist-table-header (position: absolute, top: 0, z-index: 5)
13
- * │ ├── .vlist-table-header-cell [col 0]
14
- * │ │ ├── .vlist-table-header-content (label)
15
- * │ │ ├── .vlist-table-header-sort (sort indicator)
16
- * │ │ └── .vlist-table-header-resize (drag handle)
17
- * │ ├── .vlist-table-header-cell [col 1]
18
- * │ │ └── ...
19
- * │ └── ...
20
- * └── .vlist-viewport (scrollable, top offset by headerHeight)
21
- *
22
- * Resize interaction:
23
- * mousedown on handle → pointermove updates column width → pointerup commits
24
- * During drag, a class is added to the root for cursor override.
25
- *
26
- * Sort interaction:
27
- * click on a sortable header cell emits column:sort via the provided callback.
28
- * The header renders a visual indicator (▲/▼) for the active sort column.
29
- *
30
- * Horizontal scroll sync:
31
- * The header's scrollLeft is kept in sync with the viewport's scrollLeft
32
- * via the `syncScroll` method, called from the feature's afterScroll hook.
33
4
  */
34
5
  import type { VListItem } from "../../types";
35
- import type { TableHeader, ColumnSortEvent, ColumnClickEvent } from "./types";
36
- /**
37
- * Create a TableHeader instance.
38
- *
39
- * @param root - The vlist root element (.vlist)
40
- * @param headerHeight - Height of the header row in pixels
41
- * @param classPrefix - CSS class prefix (default: 'vlist')
42
- * @param onResize - Callback when a column is resized (receives column index and new width)
43
- * @param onSort - Callback when a sortable header is clicked
44
- * @param onClick - Callback when any header cell is clicked
45
- * @returns TableHeader instance
46
- */
47
- export declare const createTableHeader: <T extends VListItem = VListItem>(root: HTMLElement, headerHeight: number, classPrefix: string, onResize: (columnIndex: number, newWidth: number) => void, onSort?: (event: ColumnSortEvent) => void, onClick?: (event: ColumnClickEvent) => void) => TableHeader<T>;
6
+ import type { TableHeader, TableSort, ColumnSortEvent, ColumnClickEvent } from "./types";
7
+ export declare const toSorts: (v: unknown, direction?: "asc" | "desc") => TableSort[];
8
+ export declare const createTableHeader: <T extends VListItem = VListItem>(root: HTMLElement, headerHeight: number, classPrefix: string, onResize: (columnIndex: number, newWidth: number) => void, onSort?: (event: ColumnSortEvent) => void, onClick?: (event: ColumnClickEvent) => void, multiSort?: boolean) => TableHeader<T>;
48
9
  //# sourceMappingURL=header.d.ts.map
@@ -6,6 +6,6 @@ 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, TableFillMode, TableLayout, TableHeader, TableRenderer, ResolvedColumn, ColumnResizeEvent, ColumnSortEvent, ColumnClickEvent, } from "./types";
9
+ export type { TableConfig, TableColumn, TableSort, TableFillMode, TableLayout, TableHeader, TableRenderer, ResolvedColumn, ColumnResizeEvent, ColumnSortEvent, ColumnClickEvent, } from "./types";
10
10
  export type { TableMethods } from "./plugin";
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import type { VListItem } from "../../types";
15
15
  import type { VListPlugin } from "../../core/types";
16
- import type { TableConfig, TableColumn } from "./types";
16
+ import type { TableConfig, TableColumn, TableSort } from "./types";
17
17
  export interface TablePluginConfig<T extends VListItem = VListItem> extends TableConfig<T> {
18
18
  }
19
19
  /** Methods the table plugin adds to the list instance. */
@@ -24,13 +24,15 @@ export interface TableMethods<T extends VListItem = VListItem> {
24
24
  resizeColumn(keyOrIndex: string | number, width: number): void;
25
25
  /** Current width of every column, by key. */
26
26
  getColumnWidths(): Record<string, number>;
27
- /** Set the sort column and direction. */
28
- setSort(key: string | null, direction?: "asc" | "desc"): void;
29
- /** Current sort column and direction. */
27
+ /** Set the sort column(s) and direction. */
28
+ setSort(keyOrSorts: string | null | readonly TableSort[], direction?: "asc" | "desc"): void;
29
+ /** Current primary sort column and direction. */
30
30
  getSort(): {
31
31
  key: string | null;
32
32
  direction: "asc" | "desc";
33
33
  };
34
+ /** Current sort columns in priority order (primary first). */
35
+ getSorts(): TableSort[];
34
36
  }
35
37
  export declare function table<T extends VListItem = VListItem>(config: TablePluginConfig<T>): VListPlugin<T, TableMethods<T>>;
36
38
  //# sourceMappingURL=plugin.d.ts.map
@@ -151,16 +151,25 @@ export interface TableConfig<T extends VListItem = VListItem> {
151
151
  /** Show horizontal borders between rows (default: true) */
152
152
  rowBorders?: boolean;
153
153
  /**
154
- * Sort indicator for a column.
155
- * The table renders an indicator in the header but does NOT sort data.
156
- * Update this and call the exposed `updateColumns()` method to reflect changes.
154
+ * Enable multi-column sorting via Shift/Ctrl/Meta + click or Enter/Space
155
+ * (default: false; enabled when set to `true` or when `sort` is initialized
156
+ * with an array).
157
157
  */
158
- sort?: {
159
- /** Column key currently sorted by */
160
- key: string;
161
- /** Sort direction */
162
- direction: "asc" | "desc";
163
- };
158
+ multiSort?: boolean;
159
+ /**
160
+ * Sort indicator for one or more columns.
161
+ * Accepts a single `{ key, direction }` object or an array of `TableSort`
162
+ * descriptors ordered by priority (primary sort first).
163
+ * The table renders indicators in the header but does NOT sort data.
164
+ */
165
+ sort?: TableSort | TableSort[];
166
+ }
167
+ /** Single column sort descriptor */
168
+ export interface TableSort {
169
+ /** Column key currently sorted by */
170
+ key: string;
171
+ /** Sort direction */
172
+ direction: "asc" | "desc";
164
173
  }
165
174
  /** Column with resolved pixel width (internal use) */
166
175
  export interface ResolvedColumn<T extends VListItem = VListItem> {
@@ -223,8 +232,8 @@ export interface TableHeader<T extends VListItem = VListItem> {
223
232
  readonly element: HTMLElement;
224
233
  /** Update header cell positions and widths (call after layout.resolve) */
225
234
  update: (layout: TableLayout<T>) => void;
226
- /** Update sort indicator display */
227
- updateSort: (key: string | null, direction: "asc" | "desc") => void;
235
+ /** Update sort indicator display (single column or priority-ordered array) */
236
+ updateSort: (keyOrSorts: string | null | readonly TableSort[], direction?: "asc" | "desc") => void;
228
237
  /** Rebuild header cells (call after column definitions change) */
229
238
  rebuild: (layout: TableLayout<T>) => void;
230
239
  /** Show the header */
@@ -276,6 +285,8 @@ export interface ColumnSortEvent {
276
285
  index: number;
277
286
  /** Current sort direction (toggles on each click: null → asc → desc → null) */
278
287
  direction: "asc" | "desc" | null;
288
+ /** Active sort columns in priority order (primary first) */
289
+ sorts?: TableSort[];
279
290
  }
280
291
  /**
281
292
  * Payload for column:click event.
package/dist/size.json CHANGED
@@ -1 +1 @@
1
- {"base":{"minified":"27.2","gzipped":"10.4","minBytes":27845,"gzBytes":10674},"synthetic":{"minified":"34.1","gzipped":"13.0","minBytes":34911,"gzBytes":13345},"synthetic + carousel":{"minified":"49.5","gzipped":"18.3","minBytes":50704,"gzBytes":18742},"synthetic + sortable":{"minified":"46.1","gzipped":"16.7","minBytes":47196,"gzBytes":17079},"createStats":{"minified":"27.8","gzipped":"10.6","minBytes":28447,"gzBytes":10904},"synthetic + createStats":{"minified":"34.7","gzipped":"13.3","minBytes":35513,"gzBytes":13570},"native":{"minified":"27.2","gzipped":"10.4","minBytes":27845,"gzBytes":10680},"vue":{"minified":"27.6","gzipped":"10.6","minBytes":28235,"gzBytes":10849},"svelte":{"minified":"27.4","gzipped":"10.5","minBytes":28030,"gzBytes":10751},"solid":{"minified":"27.5","gzipped":"10.6","minBytes":28142,"gzBytes":10814},"react":{"minified":"27.6","gzipped":"10.6","minBytes":28282,"gzBytes":10866},"react + grid":{"minified":"35.3","gzipped":"13.3","minBytes":36193,"gzBytes":13636},"a11y":{"minified":"32.6","gzipped":"12.4","minBytes":33346,"gzBytes":12678},"selection":{"minified":"37.4","gzipped":"13.8","minBytes":38278,"gzBytes":14131},"data":{"minified":"40.8","gzipped":"15.2","minBytes":41805,"gzBytes":15591},"scrollbar":{"minified":"35.3","gzipped":"13.3","minBytes":36195,"gzBytes":13629},"sortable":{"minified":"39.2","gzipped":"14.1","minBytes":40091,"gzBytes":14433},"groups":{"minified":"43.7","gzipped":"16.1","minBytes":44705,"gzBytes":16475},"page":{"minified":"30.3","gzipped":"11.5","minBytes":31023,"gzBytes":11805},"snapshots":{"minified":"30.5","gzipped":"11.6","minBytes":31226,"gzBytes":11846},"transition":{"minified":"33.9","gzipped":"12.4","minBytes":34752,"gzBytes":12707},"autosize":{"minified":"31.6","gzipped":"12.0","minBytes":32322,"gzBytes":12289},"grid":{"minified":"34.9","gzipped":"13.1","minBytes":35756,"gzBytes":13445},"table":{"minified":"46.9","gzipped":"16.7","minBytes":48021,"gzBytes":17121},"masonry":{"minified":"39.6","gzipped":"14.9","minBytes":40517,"gzBytes":15290},"tree":{"minified":"43.5","gzipped":"15.8","minBytes":44532,"gzBytes":16204},"search":{"minified":"36.5","gzipped":"13.9","minBytes":37414,"gzBytes":14264},"carousel":{"minified":"43.4","gzipped":"16.0","minBytes":44476,"gzBytes":16399}}
1
+ {"base":{"minified":"27.2","gzipped":"10.4","minBytes":27845,"gzBytes":10674},"synthetic":{"minified":"34.1","gzipped":"13.0","minBytes":34911,"gzBytes":13345},"synthetic + carousel":{"minified":"49.5","gzipped":"18.3","minBytes":50704,"gzBytes":18742},"synthetic + sortable":{"minified":"46.1","gzipped":"16.7","minBytes":47196,"gzBytes":17079},"createStats":{"minified":"27.8","gzipped":"10.6","minBytes":28447,"gzBytes":10904},"synthetic + createStats":{"minified":"34.7","gzipped":"13.3","minBytes":35513,"gzBytes":13570},"native":{"minified":"27.2","gzipped":"10.4","minBytes":27845,"gzBytes":10680},"vue":{"minified":"27.6","gzipped":"10.6","minBytes":28235,"gzBytes":10849},"svelte":{"minified":"27.4","gzipped":"10.5","minBytes":28030,"gzBytes":10751},"solid":{"minified":"27.5","gzipped":"10.6","minBytes":28142,"gzBytes":10814},"react":{"minified":"27.6","gzipped":"10.6","minBytes":28282,"gzBytes":10866},"react + grid":{"minified":"35.3","gzipped":"13.3","minBytes":36193,"gzBytes":13636},"a11y":{"minified":"32.6","gzipped":"12.4","minBytes":33346,"gzBytes":12678},"selection":{"minified":"37.4","gzipped":"13.8","minBytes":38278,"gzBytes":14131},"data":{"minified":"40.8","gzipped":"15.2","minBytes":41805,"gzBytes":15591},"scrollbar":{"minified":"35.3","gzipped":"13.3","minBytes":36195,"gzBytes":13629},"sortable":{"minified":"39.2","gzipped":"14.1","minBytes":40091,"gzBytes":14433},"groups":{"minified":"43.7","gzipped":"16.1","minBytes":44705,"gzBytes":16475},"page":{"minified":"30.3","gzipped":"11.5","minBytes":31023,"gzBytes":11805},"snapshots":{"minified":"30.5","gzipped":"11.6","minBytes":31226,"gzBytes":11846},"transition":{"minified":"33.9","gzipped":"12.4","minBytes":34752,"gzBytes":12707},"autosize":{"minified":"32.1","gzipped":"12.2","minBytes":32886,"gzBytes":12468},"grid":{"minified":"34.9","gzipped":"13.1","minBytes":35756,"gzBytes":13445},"table":{"minified":"45.5","gzipped":"16.7","minBytes":46584,"gzBytes":17104},"masonry":{"minified":"39.6","gzipped":"14.9","minBytes":40517,"gzBytes":15289},"tree":{"minified":"43.5","gzipped":"15.8","minBytes":44532,"gzBytes":16204},"search":{"minified":"36.5","gzipped":"13.9","minBytes":37414,"gzBytes":14264},"carousel":{"minified":"43.4","gzipped":"16.0","minBytes":44476,"gzBytes":16399}}
package/dist/version.json CHANGED
@@ -1 +1 @@
1
- {"version":"3.4.1","commit":"d9e3c57","builtAt":"2026-11-05T05:23:56.840Z","released":true}
1
+ {"version":"3.5.1","commit":"aaba591","builtAt":"2026-11-08T14:08:29.250Z","released":true}
@@ -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--page.vlist--table>[role="rowgroup"]{position:sticky;top:var(--vlist-page-pad,0px);z-index:6;height:var(--vlist-table-header-height,auto)}.vlist--page.vlist--table .vlist-table-header{position:sticky;top:var(--vlist-page-pad,0px);z-index:6}.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-scroll:dir(rtl){flex-direction:row-reverse}.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}.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)}}
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--page.vlist--table>[role="rowgroup"]{position:sticky;top:var(--vlist-page-pad,0px);z-index:6;height:var(--vlist-table-header-height,auto)}.vlist--page.vlist--table .vlist-table-header{position:sticky;top:var(--vlist-page-pad,0px);z-index:6}.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-scroll:dir(rtl){flex-direction:row-reverse}.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}.vlist-table-header-sort{position:relative;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-sort[data-sort-priority]::after{content:attr(data-sort-priority);font-size:9px;margin-left:1px;vertical-align:super}.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-track-color:transparent;--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>:only-child,.vlist-group-header>:only-child{flex:1 1 auto;min-width:0}.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:focus-visible{outline:2px solid currentColor;outline-offset:-2px;opacity:1;pointer-events:auto}.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;touch-action:none;z-index:10;pointer-events:none}.vlist-scrollbar__hover{position:absolute;top:0;right:0;height:100%;z-index:9;touch-action:none;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)}@media (forced-colors:active){.vlist-scrollbar{forced-color-adjust:none;background-color:Canvas}.vlist-scrollbar__thumb{background-color:CanvasText}.vlist-scrollbar__thumb:hover,.vlist-scrollbar--dragging .vlist-scrollbar__thumb{background-color:Highlight}.vlist-scrollbar:focus-visible{outline-color:Highlight}}.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--page .vlist-sticky-header{position:sticky;z-index:4;top:calc(var(--vlist-page-pad,0px) + var(--vlist-table-header-height,0px))}.vlist--page.vlist--horizontal .vlist-sticky-header{top:0;left:calc(var(--vlist-page-pad,0px) + var(--vlist-table-header-height,0px))}.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--touch-sort{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.vlist-sort-ghost--touch{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:2px}.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-track-color:transparent;--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--autosize .vlist-content{contain:layout style paint}.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>:only-child,.vlist-group-header>:only-child{flex:1 1 auto;min-width:0}.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:focus-visible{outline:2px solid currentColor;outline-offset:-2px;opacity:1;pointer-events:auto}.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;touch-action:none;z-index:10;pointer-events:none}.vlist-scrollbar__hover{position:absolute;top:0;right:0;height:100%;z-index:9;touch-action:none;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)}@media (forced-colors:active){.vlist-scrollbar{forced-color-adjust:none;background-color:Canvas}.vlist-scrollbar__thumb{background-color:CanvasText}.vlist-scrollbar__thumb:hover,.vlist-scrollbar--dragging .vlist-scrollbar__thumb{background-color:Highlight}.vlist-scrollbar:focus-visible{outline-color:Highlight}}.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--page .vlist-sticky-header{position:sticky;z-index:4;top:calc(var(--vlist-page-pad,0px) + var(--vlist-table-header-height,0px))}.vlist--page.vlist--horizontal .vlist-sticky-header{top:0;left:calc(var(--vlist-page-pad,0px) + var(--vlist-table-header-height,0px))}.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--touch-sort{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.vlist-sort-ghost--touch{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:2px}.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": "3.4.1",
3
+ "version": "3.5.1",
4
4
  "description": "Lightweight, high-performance virtual list with zero dependencies",
5
5
  "author": {
6
6
  "name": "Floor IO",