vlist 2.7.2 → 3.0.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.github.md +144 -35
- package/README.md +76 -34
- package/dist/config.d.ts +10 -2
- package/dist/config.js +1 -1
- package/dist/constants.d.ts +2 -12
- package/dist/core/adapter.d.ts +7 -1
- package/dist/core/create.d.ts +16 -4
- package/dist/core/scroll-source.d.ts +5 -0
- package/dist/core/scroll.d.ts +3 -1
- package/dist/core/types.d.ts +7 -2
- package/dist/index.d.ts +0 -3
- package/dist/index.js +1 -1
- package/dist/internals.js +1 -1
- package/dist/native.d.ts +11 -0
- package/dist/native.js +1 -0
- package/dist/plugins/autosize/plugin.d.ts +1 -1
- package/dist/plugins/masonry/renderer.d.ts +3 -1
- package/dist/plugins/scrollbar/scrollbar.d.ts +17 -3
- package/dist/plugins/table/renderer.d.ts +3 -1
- package/dist/size.json +1 -1
- package/dist/synthetic.d.ts +4 -8
- package/dist/synthetic.js +1 -1
- package/dist/types.d.ts +2 -26
- package/dist/vlist-table.css +1 -1
- package/dist/vlist.css +1 -1
- package/package.json +6 -1
- package/dist/plugins/scale/index.d.ts +0 -2
- package/dist/plugins/scale/plugin.d.ts +0 -7
package/dist/internals.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function He(t){let e=t.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let s=0;s<e.length;s++)e[s].setAttribute("tabindex","-1")}var Oe=(t,e)=>{let s=0,n=t.length-1;while(s<n){let u=s+n+1>>>1;if(t[u].headerLayoutIndex<=e)s=u;else n=u-1}return s},Ne=(t,e)=>{let s=0,n=t.length-1;while(s<n){let u=s+n+1>>>1;if(t[u].firstDataIndex<=e)s=u;else n=u-1}return s},Be=(t,e,s)=>{if(t===0)return[];let n=[],u=null,a=0,r=0;for(let g=0;g<t;g++){let w=s?.(g);if(!w)continue;let E=e(g,w);if(u===null)u=E,a=0;else if(E!==u){let _=g-a;n.push({key:u,groupIndex:n.length,headerLayoutIndex:r,firstDataIndex:a,count:_}),r=r+1+_,u=E,a=g}}if(u!==null)n.push({key:u,groupIndex:n.length,headerLayoutIndex:r,firstDataIndex:a,count:t-a});return n},We=(t,e)=>{if(t.length===0||e.length===0)return[];let s=t.length+e.length,n=Array(s),u=0;for(let a of e){n[u]={id:`__group_header_${a.groupIndex}`,__groupHeader:!0,groupKey:a.key,groupIndex:a.groupIndex},u++;for(let r=0;r<a.count;r++)n[u]=t[a.firstDataIndex+r],u++}return n},Ke=(t,e,s=!1)=>{let n=typeof e==="number"?(u)=>e:e;return(u)=>{let a=t.getEntry(u);if(a.type==="header"){if(s&&a.group.groupIndex===0)return 0;return t.getHeaderHeight(a.group.groupIndex)}return n(a.dataIndex)}},Ue=(t,e,s)=>{let n=Be(t,e.getGroupForIndex,s),u=t+n.length,a=e.header?.height??e.header?.width??e.headerHeight;return{get totalEntries(){return u},get groupCount(){return n.length},get groups(){return n},getEntry:(c)=>{if(n.length===0)return{type:"item",dataIndex:c,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let C=Oe(n,c),I=n[C];if(c===I.headerLayoutIndex)return{type:"header",group:I};let x=c-I.headerLayoutIndex-1;return{type:"item",dataIndex:I.firstDataIndex+x,group:I}},layoutToDataIndex:(c)=>{if(n.length===0)return c;let C=Oe(n,c),I=n[C];if(c===I.headerLayoutIndex)return-1;let x=c-I.headerLayoutIndex-1;return I.firstDataIndex+x},dataToLayoutIndex:(c)=>{if(n.length===0)return c;let C=Ne(n,c),I=n[C],x=c-I.firstDataIndex;return I.headerLayoutIndex+1+x},getGroupAtLayoutIndex:(c)=>{if(n.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let C=Oe(n,c);return n[C]},getGroupAtDataIndex:(c)=>{if(n.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let C=Ne(n,c);return n[C]},getHeaderHeight:typeof a==="number"?(c)=>a:(c)=>{let C=n[c];if(!C)return 0;return a(C.key,c)},rebuild:(c,C)=>{n=Be(c,e.getGroupForIndex,C??s),u=c+n.length}}};var pt=(t,e,s,n,u=0)=>{let a=s?"width":"height",r=document.createElement("div");return r.className=`${e}-sticky-header`,r.setAttribute("role","presentation"),r.setAttribute("aria-hidden","true"),r.style.cssText="z-index:5;pointer-events:none;overflow:hidden;"+(s?`position:absolute;top:0;bottom:0;left:${u||0}px`:`position:relative;top:${u||0}px`),r.style[a]=`${n}px`,t.insertBefore(r,t.firstChild),r},Ye=(t,e,s,n,u,a=!1,r=0,g,w)=>{let E=a?"width":"height",_=a?"height":"width",V=a?"X":"Y",W=(h,m)=>{h.style[E]=`${m}px`},c=g??pt(t,u,a,0,r),C=()=>{let h=document.createElement("div");return h.className="sticky-group",h.style.position="absolute",h.style.willChange="transform",h.style[_]="100%",h},I=C(),x=C();c.append(I,x);let b=I,L=x,d=e.groups,S=[],O=[],A=[],D=0,Z=()=>{d=e.groups,D=d.length,S=Array(D),O=Array(D),A=Array(D);for(let h=0;h<D;h++)S[h]=w?w(d[h].headerLayoutIndex):s.getOffset(d[h].headerLayoutIndex),O[h]=e.getHeaderHeight(h),A[h]=O[h]};Z();let j=-1,J=0,Q=0,ie=-1,oe=!1,de=0,N=!1,Y=(h,m)=>{n(h,m);let H=O[m];return W(h,H),H},y=(h)=>{h.replaceChildren(),h.style.transform=""},o=(h)=>{if(h===j)return;if(j=h,J=0,Q=0,h<0||h>=D){y(b);return}J=Y(b,h),Q=A[h],W(c,J),b.style.transform=""},f=(h)=>{if(h===de)return;de=h;let m=Math.round(h);b.style.transform=`translate${V}(${m}px)`,L.style.transform=`translate${V}(${m+J}px)`},i=()=>{de=0,b.style.transform="",L.style.transform=""},T=()=>{if(!N)return;let h=b;b=L,L=h,j=ie,J=j>=0?O[j]:0,Q=j>=0?A[j]:0,W(c,J),y(L),ie=-1,N=!1,i()},F=()=>{if(!N)return;y(L),ie=-1,N=!1,i()},X=!!g,l=()=>{if(oe)return;if(oe=!0,X)c.style.visibility="";else c.style.display=""},p=()=>{if(!oe)return;if(oe=!1,X)c.style.visibility="hidden";else c.style.display="none";y(b),j=-1,J=0,Q=0,F()},v=(h)=>{if(D===0){if(N)F();if(!oe)l();o(-1);return}if(h<S[0]){p();return}let m=0,H=D-1;while(m<H){let k=m+H+1>>>1;if(S[k]+A[k]<=h)m=k;else H=k-1}if(!oe)l();o(m);let P=m+1;if(P<D){let k=S[P]-h;if(k<=0&&k>-Q){if(ie!==P||!N)ie=P,Y(L,P),N=!0;let q=Q>0?k/Q*J:k;f(q)}else if(k<=-Q){if(N)T()}else if(N)F()}else if(N)F()},B=()=>{Z();let h=j;if(j=-1,J=0,Q=0,h>=0)o(h)},K=()=>{c.remove(),j=-1,J=0,Q=0,ie=-1,oe=!1,N=!1};if(!g)c.style.display="none";return{update:v,refresh:B,show:l,hide:p,destroy:K}};var Re=(t)=>t!==null&&typeof t==="object"&&t.__groupHeader===!0;var Ze=(t)=>{let e=Math.max(1,Math.floor(t.columns)),s=t.gap??0,n=t.isHeaderFn,u={row:0,col:0},a=(I)=>{if(I<=0)return 0;if(!n)return Math.ceil(I/e);let x=0,b=0,L=0;for(let d=0;d<I;d++)if(n(d)){if(L++,b)x++,b=0;x++,b=0}else if(b++,b>=e)x++,b=0;if(b)x++;return x},r=(I)=>(u.row=g(I),u.col=w(I),u),g=(I)=>{if(!n)return Math.floor(I/e);let x=0,b=0;for(let L=0;L<=I;L++)if(n(L)){if(b)x++,b=0;if(L===I)return x;x++,b=0}else{if(L===I)return x;if(b++,b>=e)x++,b=0}return console.warn(`⚠️ getRow(${I}) fell through - returning ${x}`),x},w=(I)=>{if(!n)return I%e;if(n(I))return 0;let x=0;for(let b=0;b<=I;b++)if(n(b))x=0;else{if(b===I)return x;if(x++,x>=e)x=0}return x},E=(I,x,b,L)=>{if(b<=0){L.start=0,L.end=-1;return}if(!n){L.start=Math.max(0,I*e),L.end=Math.min(b-1,(x+1)*e-1);return}let d=_(I,x,b);L.start=d.start,L.end=d.end},_=(I,x,b)=>{if(b<=0)return{start:0,end:-1};if(!n){let A=Math.max(0,I*e),D=Math.min(b-1,(x+1)*e-1);return{start:A,end:D}}let L=-1,d=-1,S=0,O=0;for(let A=0;A<b;A++){if(n(A)){if(O)S++,O=0;if(S>=I&&S<=x){if(L<0)L=A;d=A}S++,O=0}else{if(S>=I&&S<=x){if(L<0)L=A;d=A}if(O++,O>=e)S++,O=0}if(S>x&&!O)break}if(L<0)return{start:0,end:-1};return{start:L,end:d}},V=(I,x,b)=>{if(x<0||x>=e)return-1;let L=I*e+x;if(L<0||L>=b)return-1;return L},W=(I)=>{let x=(e-1)*s;return Math.max(0,(I-x)/e)};return{get columns(){return e},get gap(){return s},update:(I)=>{if(I.columns!==void 0)e=Math.max(1,Math.floor(I.columns));if(I.gap!==void 0)s=I.gap;if(I.isHeaderFn!==void 0)n=I.isHeaderFn},getTotalRows:a,getPosition:r,getRow:g,getCol:w,getItemRange:_,fillItemRange:E,getItemIndex:V,getColumnWidth:W,getColumnOffset:(I,x)=>{let b=W(x);return I*(b+s)}}};var qe=16000000;var Xe="x",je=20,$e="_isPlaceholder",Ee="__placeholder_";var Me=(t,e,s)=>{if(String(s).startsWith(Ee))return!1;let n=Ee+e;if(t.has(n))return t.delete(n),t.add(s),!0;return!1},Je=(t)=>({selected:new Set(t??[]),focusedIndex:-1,focusVisible:!1}),ze=(t,e,s)=>{if(s==="none")return t;let n=new Set(t.selected);if(s==="single"){if(n.clear(),e.length>0)n.add(e[0])}else for(let u of e)n.add(u);return{...t,selected:n}},Ge=(t,e)=>{let s=new Set(t.selected);for(let n of e)s.delete(n);return{...t,selected:s}},Qe=(t,e,s)=>{if(s==="none")return t;if(t.selected.has(e))return Ge(t,[e]);else return ze(t,[e],s)},et=(t,e,s)=>{if(s!=="multiple")return t;return{...t,selected:new Set(e.map((n)=>n.id))}},tt=(t)=>({...t,selected:new Set});var nt=(t,e)=>t.selected.has(e),rt=(t)=>Array.from(t.selected),ot=(t,e)=>{let s=[];for(let n of t.selected){let u=e(n);if(u)s.push(u)}return s};var ke=(t,e,s)=>{let n=Array.from(e).sort((r,g)=>r-g);if(n.length<=1)return;let u=[];for(let r=0;r<n.length;r++){let g=s(n[r]);if(g)u.push(g)}if(u.length<=1)return;let a=t.firstChild;for(let r=0;r<u.length;r++){let g=u[r];if(g===a)a=a.nextSibling;else t.insertBefore(g,a)}};var gt=(t=200)=>{let e=[];return{acquire:()=>{let a=e.pop();if(a)return a;let r=document.createElement("div");return r.setAttribute("role","option"),r},release:(a)=>{if(a.remove(),e.length<t)a.className="",a.textContent="",a.removeAttribute("style"),a.removeAttribute("data-index"),a.removeAttribute("data-id"),a.removeAttribute("data-row"),a.removeAttribute("data-col"),e.push(a)},clear:()=>{e.length=0}}},bt=1,ht=(t,e,s,n,u,a,r,g,w=!1,E,_)=>{let V=gt(),W=new Map,c=a,C=!1,I=0,x="",b=-1,L={selected:!1,focused:!1},d=(l,p)=>(L.selected=l,L.focused=p,L),S=`${u}-item ${u}-grid-item`,O=`${u}-group-header`,A=`${u}-item--selected`,D=`${u}-item--focused`,Z=`${u}-item--placeholder`,j=`${u}-item--replaced`,J=(l,p)=>{if(typeof p==="string")l.innerHTML=p;else l.replaceChildren(p);He(l)},Q=(l,p,v)=>{l.classList.toggle(A,p),l.classList.toggle(D,v)},ie=(l)=>{let p=n.getRow(l);return s.getOffset(p)},oe=(l)=>{let p=n.getCol(l),B=C&&p===0?0:n.getColumnOffset(p,c),K;if(C){let h=n.getRow(l),m=0,H=-1;for(let P=0;P<l;P++){let k=n.getRow(P);if(k<h&&k!==H){let q=s.getSize(P);m+=q,H=k}}K=m}else K=ie(l);if(w)return`translate(${Math.round(K)}px, ${Math.round(B)}px)`;return`translate(${Math.round(B)}px, ${Math.round(K)}px)`},de=(l,p)=>{let v=l.classList.contains(O),B=v?c:n.getColumnWidth(c),K;if(C||v)K=s.getSize(p)-n.gap;else{let h=n.getRow(p);K=s.getSize(h)-n.gap}if(w)l.style.width=`${K}px`,l.style.height=`${B}px`;else l.style.width=`${B}px`,l.style.height=`${K}px`},N=(l,p,v,B,K)=>{let h=V.acquire(),m=!!p.__groupHeader,H=d(v,B);if(h.className=m?O:S,h.dataset.index=String(l),h.dataset.id=String(p.id),h.dataset.row=String(n.getRow(l)),h.dataset.col=String(n.getCol(l)),m)h.setAttribute("role","presentation"),h.removeAttribute("aria-selected"),h.removeAttribute("aria-setsize"),h.removeAttribute("aria-posinset"),h.removeAttribute("id");else if(_===!0){if(h.setAttribute("role","option"),h.ariaSelected=String(v),g)h.id=`${g}-item-${l}`;if(r){let q=r();if(q!==b)b=q,x=String(q);h.setAttribute("aria-setsize",x);let M=E?E(l):l+1;h.setAttribute("aria-posinset",String(M))}}else if(h.setAttribute("role","listitem"),h.removeAttribute("aria-selected"),r){let q=r();if(q!==b)b=q,x=String(q);h.setAttribute("aria-setsize",x);let M=E?E(l):l+1;h.setAttribute("aria-posinset",String(M))}de(h,l);let P=e(p,l,H);if(J(h,P),String(p.id).startsWith(Ee))h.classList.add(Z);return Q(h,v,B),h.style.transform=K,{element:h,lastItem:p,lastSelected:v,lastFocused:B,lastTransform:K,lastSeenFrame:I}},Y=(l,p,v,B)=>{if(I++,p.start===0&&l.length)C=Re(l[0]);let K=!1;if(r){let m=r();if(m!==b)b=m,x=String(m),K=!0}let h=null;for(let m=p.start;m<=p.end;m++){let H=m-p.start,P=l[H];if(!P)continue;let k=v.has(P.id),q=m===B,M=W.get(m);if(M){let te=M.lastItem!==P,se=M.lastSelected!==k,ne=M.lastFocused!==q;if(te){let ae=M.element.dataset.id??"",R=String(P.id),G=ae.startsWith(Ee),ee=R.startsWith(Ee);if(!ee&&Me(v,m,P.id))k=!0;let z=d(k,q),le=e(P,m,z);if(J(M.element,le),M.element.dataset.id=R,M.element.dataset.row=String(n.getRow(m)),M.element.dataset.col=String(n.getCol(m)),de(M.element,m),M.element.classList.toggle(Z,ee),G&&!ee)M.element.classList.add(j),setTimeout(()=>M.element.classList.remove(j),300);if(M.lastItem=P,!P.__groupHeader){let pe=E?E(m):m+1;M.element.setAttribute("aria-posinset",String(pe))}}if(te||se||ne)Q(M.element,k,q),M.element.ariaSelected=String(k),M.lastSelected=k,M.lastFocused=q;let Te=oe(m);if(M.lastTransform!==Te)M.element.style.transform=Te,M.lastTransform=Te;if(K&&!P.__groupHeader)M.element.setAttribute("aria-setsize",x)}else{if(Me(v,m,P.id))k=!0;let te=oe(m),se=N(m,P,k,q,te);if(!h)h=document.createDocumentFragment();h.appendChild(se.element),W.set(m,se)}}if(h)t.appendChild(h);for(let[m,H]of W)if(m>=p.start&&m<=p.end)H.lastSeenFrame=I;else if(I-H.lastSeenFrame>bt)V.release(H.element),W.delete(m)},y=(l,p,v,B)=>{let K=W.get(l);if(!K)return;let h=d(v,B),m=e(p,l,h);J(K.element,m),Q(K.element,v,B),K.element.dataset.id=String(p.id),K.element.ariaSelected=String(v),de(K.element,l),K.lastItem=p,K.lastSelected=v,K.lastFocused=B},o=(l,p,v)=>{let B=W.get(l);if(!B)return;let K=B.lastSelected!==p,h=B.lastFocused!==v;if(K||h)Q(B.element,p,v),B.lastSelected=p,B.lastFocused=v},f=(l)=>W.get(l)?.element,i=(l)=>{if(Math.abs(l-c)<1)return;c=l;for(let[p,v]of W){de(v.element,p);let B=oe(p);v.element.style.transform=B,v.lastTransform=B}},T=()=>{ke(t,W.keys(),(l)=>W.get(l)?.element)},F=()=>{for(let[,l]of W)V.release(l.element);W.clear()};return{render:Y,updateItem:y,updateItemClasses:o,getElement:f,sortDOM:T,updateContainerWidth:i,clear:F,destroy:()=>{F(),V.clear()}}};var st=(t,e=50,s=1/0,n=!0,u="none")=>{let a=t,r=[],g=0,w=0,E=()=>{r=a.map((d,S)=>({def:d,index:S,width:0,minWidth:yt(d.minWidth??e,1),maxWidth:d.maxWidth??s,resizable:d.resizable??n,offset:0}))},_=()=>{if(u==="none"||g<=0||g>=w)return;if(u==="spacer"){g=w;return}let d=w-g,S=g;for(let O=0;O<r.length;O++){let A=r[O];A.width=we(A.width+d*(A.width/S),A.minWidth,A.maxWidth)}W()},V=(d)=>{if(w=d,r.length===0){g=0;return}let S=0,O=0;for(let A=0;A<r.length;A++){let D=r[A],Z=D.def;if(Z.width!==void 0)D.width=we(Z.width,D.minWidth,D.maxWidth),S+=D.width;else O++}if(O){let D=Math.max(0,d-S)/O;for(let Z=0;Z<r.length;Z++){let j=r[Z];if(j.def.width===void 0)j.width=we(D,j.minWidth,j.maxWidth)}}W(),_()},W=()=>{let d=0;for(let S=0;S<r.length;S++){let O=r[S];O.offset=d,d+=O.width}g=d},c=(d,S)=>{if(d<0||d>=r.length)return 0;let O=r[d];if(!O.resizable)return O.width;let A=we(S,O.minWidth,O.maxWidth);if(O.width=A,W(),u==="spacer")_();return A},C=(d)=>r[d],I=(d)=>{if(r.length===0)return;if(d<0)return r[0];if(d>=g)return r[r.length-1];let S=0,O=r.length-1;while(S<O){let A=S+O>>>1,D=r[A];if(d<D.offset)O=A-1;else if(d>=D.offset+D.width)S=A+1;else return D}return r[S]},x=(d)=>{if(d<0||d>=r.length)return 0;return r[d].offset},b=(d)=>{if(d<0||d>=r.length)return 0;return r[d].width},L=(d)=>{a=d,E()};return E(),{get columns(){return r},get totalWidth(){return g},resolve:V,updateColumns:L,resizeColumn:c,getColumn:C,getColumnAtX:I,getColumnOffset:x,getColumnWidth:b}},we=(t,e,s)=>Math.min(s,Math.max(e,t)),yt=(t,e)=>Math.max(e,t);var at=(t,e,s,n,u,a)=>{let r=document.createElement("div");r.setAttribute("role","rowgroup");let g=document.createElement("div");g.className=`${s}-table-header`,g.setAttribute("role","row"),g.setAttribute("aria-rowindex","1"),g.style.height=`${e}px`;let w=document.createElement("div");w.className=`${s}-table-header-scroll`,w.setAttribute("role","presentation"),g.appendChild(w),r.appendChild(g),t.insertBefore(r,t.firstChild),t.style.setProperty("--vlist-table-header-height",`${e}px`);let E=[],_=[],V=!0,W=null,c="asc",C=null,I=!1,x=-1,b=0,L=0,d=0,S=(o,f)=>{let i=document.createElement("div");i.className=`${s}-table-header-cell`,i.setAttribute("role","columnheader"),i.setAttribute("aria-colindex",String(f+1)),i.setAttribute("tabindex",f===0?"0":"-1"),i.dataset.columnKey=o.def.key;let T=o.def.align;if(T==="center")i.classList.add(`${s}-table-header-cell--center`);else if(T==="right")i.classList.add(`${s}-table-header-cell--right`);let F=document.createElement("div");F.className=`${s}-table-header-content`;let X=o.def.header?o.def.header(o.def):o.def.label;if(typeof X==="string")F.textContent=X;else F.appendChild(X);if(i.appendChild(F),o.def.sortable){let l=document.createElement("span");l.className=`${s}-table-header-sort`,l.setAttribute("aria-hidden","true"),i.appendChild(l),_.push(l),i.classList.add(`${s}-table-header-cell--sortable`)}else _.push(null);if(o.resizable){let l=document.createElement("div");l.className=`${s}-table-header-resize`,l.dataset.resizeIndex=String(f),i.appendChild(l)}return i},O=(o)=>{C=o,w.textContent="",E=[],_=[];let f=o.columns;for(let i=0;i<f.length;i++){let T=f[i],F=S(T,i);E.push(F),w.appendChild(F)}if(A(o),W)D(W,c)},A=(o)=>{C=o;let f=o.columns;w.style.width=`${o.totalWidth}px`;for(let i=0;i<E.length&&i<f.length;i++){let T=E[i],F=f[i];T.style.width=`${F.width}px`}},D=(o,f)=>{if(W=o,c=f,!C)return;let i=C.columns;for(let T=0;T<_.length&&T<i.length;T++){let F=_[T];if(!F)continue;if(i[T].def.key===o)F.textContent=f==="asc"?"▲":"▼",F.style.opacity="0.7",E[T].setAttribute("aria-sort",f==="asc"?"ascending":"descending");else F.textContent="",F.style.opacity="0",E[T].removeAttribute("aria-sort")}},Z=(o)=>{w.style.transform=`translateX(${-o}px)`},j=(o)=>{let f=o.target;if(!f.dataset.resizeIndex)return;if(o.preventDefault(),o.stopPropagation(),x=+f.dataset.resizeIndex,!C)return;let i=C.getColumn(x);if(!i?.resizable)return;I=!0,b=o.clientX,L=i.width,t.classList.add(`${s}--col-resizing`),t.style.cursor="col-resize",f.classList.add(`${s}-table-header-resize--active`),f.setPointerCapture(o.pointerId),f.addEventListener("pointermove",J),f.addEventListener("pointerup",Q),f.addEventListener("pointercancel",Q)},J=(o)=>{if(!I||!C)return;let f=o.clientX-b;if(Math.abs(f)<1)return;let i=Math.max(0,L+f);n(x,i)},Q=(o)=>{if(!I)return;let f=o.target;f.removeEventListener("pointermove",J),f.removeEventListener("pointerup",Q),f.removeEventListener("pointercancel",Q);try{f.releasePointerCapture(o.pointerId)}catch{}f.classList.remove(`${s}-table-header-resize--active`),t.classList.remove(`${s}--col-resizing`),t.style.cursor="",I=!1,x=-1},ie=(o)=>{let f=o.target;if(f.dataset.resizeIndex)return;if(I)return;let i=f;while(i&&!i.dataset.columnKey)if(i=i.parentElement,i===g||i===null)return;let T=i.dataset.columnKey;if(!C)return;let F=C.columns,X=-1;for(let p=0;p<F.length;p++)if(F[p].def.key===T){X=p;break}if(X===-1)return;let l=F[X];if(a)a({key:T,index:X,event:o});if(l.def.sortable&&u){let p;if(W===T)p=c==="asc"?"desc":null;else p="asc";u({key:T,index:X,direction:p})}},oe=(o)=>{if(o<0||o>=E.length)return;E[d]?.setAttribute("tabindex","-1"),d=o;let f=E[d];f.setAttribute("tabindex","0"),f.focus()},de=(o)=>{let f=o.key;if(f==="ArrowRight"){if(o.ctrlKey||o.metaKey){if(!C)return;let i=C.getColumn(d);if(i?.resizable)n(d,i.width+10),o.preventDefault()}else if(d<E.length-1)oe(d+1),o.preventDefault();o.stopPropagation();return}if(f==="ArrowLeft"){if(o.ctrlKey||o.metaKey){if(!C)return;let i=C.getColumn(d);if(i?.resizable)n(d,i.width-10),o.preventDefault()}else if(d>0)oe(d-1),o.preventDefault();o.stopPropagation();return}if(f==="Home"){oe(0),o.preventDefault(),o.stopPropagation();return}if(f==="End"){oe(E.length-1),o.preventDefault(),o.stopPropagation();return}if(f==="Enter"||f===" "){if(!C)return;let i=C.getColumn(d);if(i?.def.sortable&&u){let T;if(W===i.def.key)T=c==="asc"?"desc":null;else T="asc";u({key:i.def.key,index:d,direction:T}),o.preventDefault()}o.stopPropagation();return}if(f==="ArrowDown"){t.focus(),o.preventDefault(),o.stopPropagation();return}};return g.addEventListener("pointerdown",j),g.addEventListener("click",ie),g.addEventListener("keydown",de),{element:g,update:A,updateSort:D,rebuild:O,show:()=>{if(V)return;V=!0,g.style.display=""},hide:()=>{if(!V)return;V=!1,g.style.display="none"},destroy:()=>{g.removeEventListener("pointerdown",j),g.removeEventListener("click",ie),g.removeEventListener("keydown",de),t.style.removeProperty("--vlist-table-header-height"),r.remove(),E=[],_=[],C=null,V=!1},syncScroll:Z}};var vt=()=>{let t=[];return{acquire:()=>t.pop()||document.createElement("div"),release:(e)=>{if(e.parentNode?.removeChild(e),t.length<200)e.className="",e.removeAttribute("data-id"),e.removeAttribute("data-index"),e.removeAttribute("aria-selected"),e.removeAttribute("aria-rowindex"),e.removeAttribute("role"),e.style.cssText="",e.textContent="",t.push(e)},clear:()=>{t.length=0}}},it=(t,e,s,n,u,a,r,g,w,E=()=>0)=>{let _=vt(),V=new Map,W=-1,c=s,C=null,I=null,x=null,b=(m,H)=>{I=m,x=H},L=(m,H)=>{H?m.setAttribute("aria-selected","true"):m.removeAttribute("aria-selected")},d=(m,H,P,k)=>{m.setAttribute("role",H),m.setAttribute("data-id",String(P)),m.setAttribute("data-index",String(k))},S=(m)=>String(m).startsWith("__placeholder_"),O=`${u}-item ${u}-table-row`,A=`${u}-item--selected`,D=`${u}-item--focused`,Z=`${u}-table-cell`,j=`${u}-table-cell--center`,J=`${u}-table-cell--right`,Q=`${u}-table-cell-skeleton`,ie=`${u}-item--odd`,oe=`${u}-item--placeholder`,de=`${u}-item--replaced`,N=`${u}-table-row ${u}-table-group-header`,Y=`${u}-table-group-header-content`,y=(m,H,P,k,q=!1)=>{if(P.def.cell){let M=P.def.cell(H,P.def,k);if(typeof M==="string")m.innerHTML=M;else m.replaceChildren(M)}else{let M=H[P.def.key],te=M!=null?String(M):"";if(q&&te)m.innerHTML=`<span>${te}</span>`;else m.textContent=te}if(q&&m.firstElementChild===null){m.replaceChildren();let M=document.createElement("span");M.className=Q,m.appendChild(M)}},o=(m,H,P,k,q=!1)=>{let M=O;if(g){if(C){let te=C(H);if(te>=0&&(te&1)===1)M+=` ${ie}`}else if((H&1)===1)M+=` ${ie}`}if(q)M+=` ${oe}`;if(P)M+=` ${A}`;if(k)M+=` ${D}`;m.className=M},f=(m,H)=>{let P=H.def.align;if(P==="center")m.classList.add(j),m.classList.remove(J);else if(P==="right")m.classList.add(J),m.classList.remove(j);else m.classList.remove(j,J)},i=(m,H)=>{let k=c.columns.length;if(H.length===k)return H;let q=[];for(let M=0;M<k;M++){let te;if(M<H.length)te=H[M];else te=document.createElement("div"),te.className=Z,m.appendChild(te);q.push(te)}for(let M=k;M<H.length;M++)H[M].remove();return q},T=(m,H,P)=>{let k=_.acquire(),q=m,M=P.getSize(H),te=P.getOffset(H)-E();k.style.cssText=`width:${c.totalWidth}px;height:${M}px;transform:translateY(${te}px)`,k.className=N,d(k,"presentation",m.id,H),k.removeAttribute("aria-selected"),k.removeAttribute("aria-rowindex"),k.replaceChildren();let se=document.createElement("div");if(se.className=Y,x){let ne=x(q.groupKey,q.groupIndex);if(typeof ne==="string")se.innerHTML=ne;else se.appendChild(ne)}return k.appendChild(se),{element:k,cells:[],index:H,isGroupHeader:!0,_lastItem:m,lastItemId:m.id,lastSelected:!1,lastFocused:!1,lastOffset:te,lastHeight:M}},F=(m,H,P,k,q)=>{let M=_.acquire(),te=q.getSize(H),se=q.getOffset(H)-E(),ne=S(m.id);M.style.cssText=`width:${c.totalWidth}px;height:${te}px;transform:translateY(${se}px)`,o(M,H,P,k,ne),d(M,"row",m.id,H),M.id=`${a}-item-${H}`,M.setAttribute("aria-rowindex",String(H+2)),L(M,P);let Te=i(M,[]),ae=c.columns;for(let R=0;R<Te.length&&R<ae.length;R++){let G=Te[R],ee=ae[R];G.style.cssText=`left:${ee.offset}px;width:${ee.width}px`,G.setAttribute("role","gridcell"),G.setAttribute("aria-colindex",String(R+1)),f(G,ee),y(G,m,ee,H,ne)}return{element:M,cells:Te,index:H,isGroupHeader:!1,_lastItem:m,lastItemId:m.id,lastSelected:P,lastFocused:k,lastOffset:se,lastHeight:te}},X=(m,H,P,k)=>{let q=!1,M=r();if(M!==W)W=M,q=!0;let te=null,se=e();C=typeof g==="string"&&w?w():null;for(let ne=H.start;ne<=H.end;ne++){let Te=ne-H.start,ae=m[Te];if(!ae)continue;let R=P.has(ae.id),G=ne===k,ee=I?I(ae):!1,z=V.get(ne);if(z){if(z.isGroupHeader!==ee){_.release(z.element),V.delete(ne);let le=ee?T(ae,ne,se):F(ae,ne,R,G,se);if(V.set(ne,le),!te)te=document.createDocumentFragment();te.appendChild(le.element);continue}if(ee){if(z._lastItem!==ae){let ve=ae,re=z.element.firstElementChild;if(re&&x){let fe=x(ve.groupKey,ve.groupIndex);if(typeof fe==="string")re.innerHTML=fe;else re.replaceChildren(fe)}z.element.setAttribute("data-id",String(ae.id)),z._lastItem=ae,z.lastItemId=ae.id}let ye=se.getOffset(ne)-E();if(z.lastOffset!==ye)z.lastOffset=ye,z.element.style.transform=`translateY(${ye}px)`;let pe=se.getSize(ne);if(z.lastHeight!==pe)z.lastHeight=pe,z.element.style.height=`${pe}px`}else{let le=z._lastItem!==ae,ye=z.lastSelected!==R,pe=z.lastFocused!==G;if(le){let fe=z.lastItemId!=null&&S(z.lastItemId),be=S(ae.id);if(!be&&Me(P,ne,ae.id))R=!0;let xe=c.columns;for(let ce=0;ce<z.cells.length&&ce<xe.length;ce++)y(z.cells[ce],ae,xe[ce],ne,be);if(o(z.element,ne,R,G,be),z.element.setAttribute("data-id",String(ae.id)),L(z.element,R),fe&&!be)z.element.classList.add(de),setTimeout(()=>{z.element.classList.remove(de)},300);z._lastItem=ae,z.lastItemId=ae.id,z.lastSelected=R,z.lastFocused=G}else if(ye||pe)o(z.element,ne,R,G,S(ae.id)),L(z.element,R),z.lastSelected=R,z.lastFocused=G;let ve=se.getOffset(ne)-E();if(z.lastOffset!==ve)z.lastOffset=ve,z.element.style.transform=`translateY(${ve}px)`;let re=se.getSize(ne);if(z.lastHeight!==re)z.lastHeight=re,z.element.style.height=`${re}px`;if(q)z.element.setAttribute("aria-rowindex",String(ne+2))}}else{if(Me(P,ne,ae.id))R=!0;let le=ee?T(ae,ne,se):F(ae,ne,R,G,se);if(V.set(ne,le),!te)te=document.createDocumentFragment();te.appendChild(le.element)}}if(te)t.appendChild(te);for(let[ne,Te]of V)if(ne<H.start||ne>H.end)_.release(Te.element),V.delete(ne)},l=(m,H,P,k)=>{let q=V.get(m);if(!q)return;if(q.isGroupHeader)return;let M=c.columns;for(let te=0;te<q.cells.length&&te<M.length;te++)y(q.cells[te],H,M[te],m);q.element.setAttribute("data-id",String(H.id)),q._lastItem=H,q.lastItemId=H.id,o(q.element,m,P,k),L(q.element,P),q.lastSelected=P,q.lastFocused=k},p=(m,H,P)=>{let k=V.get(m);if(!k)return;if(k.isGroupHeader)return;let q=k.lastSelected!==H,M=k.lastFocused!==P;if(q||M)o(k.element,m,H,P),L(k.element,H),k.lastSelected=H,k.lastFocused=P},v=(m)=>{c=m;let H=m.columns;for(let[,P]of V)if(P.element.style.width=`${m.totalWidth}px`,P.cells.length>0)for(let k=0;k<P.cells.length&&k<H.length;k++){let q=P.cells[k],M=H[k];q.style.left=`${M.offset}px`,q.style.width=`${M.width}px`}},B=(m)=>V.get(m)?.element,K=()=>{for(let[,m]of V)_.release(m.element);V.clear(),W=-1};return{render:X,updateItem:l,updateItemClasses:p,getElement:B,updateColumnLayout:v,setGroupHeaderFn:b,clear:K,destroy:()=>{K(),_.clear()}}};var lt=(t)=>{let e=Math.max(1,Math.floor(t.columns)),s=t.gap??0,n=t.containerSize,u=t.crossOffset??0,a=t.mainOffset??0,r=0,g=[],w=()=>{let b=(e-1)*s;r=Math.max(0,(n-b)/e),g=Array(e);let L=r+s;for(let d=0;d<e;d++)g[d]=u+d*L};w();let E=[],_=0,V=[],W=(b,L)=>{if(b<=0)return _=0,E=[],[];let d=Array(e).fill(a),S=Array(e);for(let D=0;D<e;D++)S[D]=[];let O=Array(b);for(let D=0;D<b;D++){let Z=0,j=d[0];for(let ie=1;ie<e;ie++){let oe=d[ie];if(oe<j)j=oe,Z=ie}let J=L(D),Q=d[Z];O[D]={index:D,x:g[Z],y:Q,lane:Z,size:J,crossSize:r},S[Z].push(D),d[Z]=Q+J+s}E=S;let A=0;for(let D=0;D<e;D++){let Z=d[D],j=Z>0?Z-s:0;if(j>A)A=j}return _=A,O},c=(b)=>{if(b.length===0)return _;if(_)return _;let L=Array(e).fill(0);for(let S of b){let O=S.y+S.size,A=L[S.lane];if(O>A)L[S.lane]=O}let d=0;for(let S=0;S<e;S++)if(L[S]>d)d=L[S];return d},C=(b,L,d)=>{if(b.length===0||d<=L)return V.length=0,V;if(E.length===0||E.length!==e)return I(b,L,d);V.length=0;for(let S=0;S<e;S++){let O=E[S],A=O.length;if(!A)continue;let D=0,Z=A;while(D<Z){let j=D+Z>>>1,J=b[O[j]];if(J.y+J.size<=L)D=j+1;else Z=j}for(let j=D;j<A;j++){let J=b[O[j]];if(J.y>=d)break;V.push(J)}}return V},I=(b,L,d)=>{V.length=0;for(let S of b)if(S.y+S.size>L&&S.y<d)V.push(S);return V};return{get columns(){return e},get gap(){return s},get containerSize(){return n},update:(b)=>{let L=!1;if(b.columns!==void 0){let d=Math.max(1,Math.floor(b.columns));if(d!==e)e=d,L=!0}if(b.gap!==void 0&&b.gap!==s)s=b.gap,L=!0;if(b.containerSize!==void 0&&b.containerSize!==n)n=b.containerSize,L=!0;if(b.crossOffset!==void 0&&b.crossOffset!==u)u=b.crossOffset,L=!0;if(b.mainOffset!==void 0&&b.mainOffset!==a)a=b.mainOffset,L=!0;if(L)w()},calculateLayout:W,getTotalSize:c,getVisibleItems:C}};var St=(t=200)=>{let e=[];return{acquire:()=>{let a=e.pop();if(a)return a;let r=document.createElement("div");return r.setAttribute("role","option"),r},release:(a)=>{if(a.remove(),e.length<t)a.className="",a.textContent="",a.removeAttribute("style"),a.removeAttribute("data-index"),a.removeAttribute("data-id"),a.removeAttribute("data-lane"),e.push(a)},clear:()=>{e.length=0}}},Tt=1,ct=(t,e,s,n=!1,u,a,r,g,w=()=>0)=>{let E=St(),_=new Map,V=new Set,W=0,c="",C=-1,I={selected:!1,focused:!1},x=(N,Y)=>(I.selected=N,I.focused=Y,I),b=`${s}-item ${s}-masonry-item`,L=`${s}-group-header`,d=`${s}-item--selected`,S=`${s}-item--focused`,O=(N,Y)=>{if(typeof Y==="string")N.innerHTML=Y;else N.replaceChildren(Y);He(N)},A=(N,Y,y)=>{N.classList.toggle(d,Y),N.classList.toggle(S,y)},D=(N,Y)=>{let y=Math.round(Y.y-w());if(n)N.style.transform=`translate(${y}px, ${Math.round(Y.x)}px)`;else N.style.transform=`translate(${Math.round(Y.x)}px, ${y}px)`},Z=(N,Y)=>{if(n)N.style.width=`${Y.size}px`,N.style.height=`${Y.crossSize}px`;else N.style.width=`${Y.crossSize}px`,N.style.height=`${Y.size}px`},j=(N,Y,y,o,f)=>{let i=E.acquire(),T=Y.__groupHeader,F=x(o,f);if(i.className=T?L:b,i.dataset.index=String(N),i.dataset.id=String(Y.id),i.dataset.lane=String(y.lane),T)i.setAttribute("role","presentation"),i.removeAttribute("aria-selected"),i.removeAttribute("aria-setsize"),i.removeAttribute("aria-posinset"),i.removeAttribute("id");else if(g===!0){if(i.setAttribute("role","option"),i.ariaSelected=String(o),a)i.id=`${a}-item-${N}`;if(u){let l=u();if(l!==C)C=l,c=String(l);i.setAttribute("aria-setsize",c);let p=r?r(N):N+1;i.setAttribute("aria-posinset",String(p))}}else if(i.setAttribute("role","listitem"),i.removeAttribute("aria-selected"),u){let l=u();if(l!==C)C=l,c=String(l);i.setAttribute("aria-setsize",c);let p=r?r(N):N+1;i.setAttribute("aria-posinset",String(p))}Z(i,y);let X=e(Y,N,F);return O(i,X),A(i,o,f),D(i,y),{element:i,lastItem:Y,lastSelected:o,lastFocused:f,lastY:y.y-w(),absY:y.y,lastX:y.x,lastSize:y.size,lastCrossSize:y.crossSize,lastSeenFrame:W}},J=(N,Y,y,o)=>{W++,V.clear();for(let i=0;i<Y.length;i++)V.add(Y[i].index);let f=null;for(let i=0;i<Y.length;i++){let T=Y[i],F=T.index,X=N(F);if(!X)continue;let l=y.has(X.id),p=F===o,v=_.get(F);if(v){let B=v.lastItem!==X,K=v.lastSelected!==l,h=v.lastFocused!==p,m=v.lastY!==T.y-w()||v.lastX!==T.x,H=v.lastSize!==T.size||v.lastCrossSize!==T.crossSize;if(B){let P=x(l,p),k=e(X,F,P);if(O(v.element,k),v.element.dataset.id=String(X.id),v.lastItem=X,!X.__groupHeader){let M=r?r(F):F+1;v.element.setAttribute("aria-posinset",String(M))}}if(B||K||h)A(v.element,l,p),v.element.ariaSelected=String(l),v.lastSelected=l,v.lastFocused=p;if(H)Z(v.element,T),v.lastSize=T.size,v.lastCrossSize=T.crossSize;if(m)D(v.element,T),v.lastY=T.y-w(),v.absY=T.y,v.lastX=T.x}else{let B=j(F,X,T,l,p);if(!f)f=document.createDocumentFragment();f.appendChild(B.element),_.set(F,B)}}if(f)t.appendChild(f);for(let[i,T]of _)if(V.has(i))T.lastSeenFrame=W;else if(W-T.lastSeenFrame>Tt)E.release(T.element),_.delete(i);else{let F=Math.round(T.absY-w());if(F!==T.lastY){T.lastY=F;let X=Math.round(T.lastX);T.element.style.transform=n?`translate(${F}px, ${X}px)`:`translate(${X}px, ${F}px)`}}},Q=()=>{for(let N of _.values())E.release(N.element);_.clear(),t.innerHTML=""};return{render:J,getElement:(N)=>_.get(N)?.element,updateItemClasses:(N,Y,y)=>{let o=_.get(N);if(!o)return;let f=o.lastSelected!==Y,i=o.lastFocused!==y;if(f||i)A(o.element,Y,y),o.lastSelected=Y,o.lastFocused=y},sortDOM:()=>{ke(t,_.keys(),(N)=>_.get(N)?.element)},clear:Q,destroy:()=>{Q(),E.clear()}}};var xt=(t,e)=>{let s=e;return{getOffset:(n)=>n*t,getSize:(n)=>t,indexAtOffset:(n)=>{if(s===0||t===0)return 0;return Math.max(0,Math.min(Math.floor(n/t),s-1))},getTotalSize:()=>s*t,getTotal:()=>s,rebuild:(n)=>{s=n},isVariable:()=>!1}},It=(t,e)=>{let s=e,n=new Float64Array(0),u=(r)=>{s=r,n=new Float64Array(r+1),n[0]=0;for(let g=0;g<r;g++)n[g+1]=n[g]+t(g)};u(e);let a=(r)=>{if(s===0)return 0;if(r<=0)return 0;if(r>=n[s])return s-1;let g=0,w=s-1;while(g<w){let E=g+w+1>>>1;if(n[E]<=r)g=E;else w=E-1}return g};return{getOffset:(r)=>{if(r<=0)return 0;if(r>=s)return n[s];return n[r]},getSize:(r)=>t(r),indexAtOffset:(r)=>a(r),getTotalSize:()=>n[s]??0,getTotal:()=>s,rebuild:(r)=>u(r),isVariable:()=>!0}},ut=(t,e)=>{if(typeof t==="number")return xt(t,e);return It(t,e)};var dt=()=>{let t={},e=(a,r)=>{if(!t[a])t[a]=new Set;return t[a].add(r),()=>s(a,r)},s=(a,r)=>{t[a]?.delete(r)};return{on:e,off:s,emit:(a,r)=>{t[a]?.forEach((g)=>{try{g(r)}catch(w){console.error(`[vlist] Error in event handler for "${String(a)}":`,w)}})},clear:(a)=>{if(a)delete t[a];else for(let r in t)delete t[r]}}};var _e=(t={})=>{let{chunkSize:e=100,maxCachedItems:s=5000,evictionBuffer:n=200,onEvict:u}=t,a=new Map,r=0,g=0,w=(y)=>{let o=a.get(y);if(!o)o={items:Array(e),count:0,lastAccess:Date.now()},a.set(y,o);else o.lastAccess=Date.now();return o},E=(y)=>Math.floor(y/e),_=(y)=>y%e,V=()=>r,W=(y)=>{r=y},c=(y)=>{if(y<0||y>=r)return;let o=E(y),f=a.get(o);if(!f)return;return f.items[_(y)]},C=(y)=>{if(y<0||y>=r)return!1;let o=E(y),f=a.get(o);if(!f)return!1;return f.items[_(y)]!==void 0},I=(y,o)=>{let f=E(y),i=w(f),T=_(y),F=i.items[T]===void 0;if(i.items[T]=o,F)i.count++,g++;if(y>=r)r=y+1},x=(y,o)=>{for(let f=0;f<o.length;f++){let i=o[f];if(i!==void 0)I(y+f,i)}},b=(y,o)=>{if(y<0||y>r)return;let f=E(y),i=Array.from(a.keys()).filter((p)=>p>=f).sort((p,v)=>p-v),T=[];for(let p of i){let v=a.get(p),B=p*e;for(let K=0;K<e;K++){if(v.items[K]===void 0)continue;let h=B+K;if(h<y)continue;T.push({oldIndex:h,item:v.items[K]})}}for(let{oldIndex:p}of T){let v=E(p),B=a.get(v);if(!B)continue;let K=_(p);if(B.items[K]!==void 0){if(B.items[K]=void 0,B.count--,g--,B.count===0)a.delete(v)}}r++;for(let{oldIndex:p,item:v}of T){let B=p+1,K=E(B),h=w(K),m=_(B);h.items[m]=v,h.count++,g++}let F=E(y),X=w(F),l=_(y);X.items[l]=o,X.count++,g++},L=(y)=>{if(y<0||y>=r)return!1;let o=E(y),f=a.get(o),i=_(y);if(!(f!==void 0&&f.items[i]!==void 0))return!1;let F=o,X=Array.from(a.keys()).filter((p)=>p>=F).sort((p,v)=>p-v),l=[];for(let p of X){let v=a.get(p),B=p*e;for(let K=0;K<e;K++){if(v.items[K]===void 0)continue;let h=B+K;if(h<=y)continue;l.push({oldIndex:h,item:v.items[K]})}}if(f.items[i]=void 0,f.count--,g--,f.count===0)a.delete(o);for(let{oldIndex:p}of l){let v=E(p),B=a.get(v);if(!B)continue;let K=_(p);if(B.items[K]!==void 0){if(B.items[K]=void 0,B.count--,g--,B.count===0)a.delete(v)}}for(let{oldIndex:p,item:v}of l){let B=p-1,K=E(B),h=w(K),m=_(B);h.items[m]=v,h.count++,g++}return r--,!0},d=(y,o)=>{let f=[];for(let i=y;i<=o&&i<r;i++)f.push(c(i));return f},S=(y,o)=>{for(let f=y;f<=o&&f<r;f++)if(!C(f))return!1;return!0},O=()=>{let y=[],o=null,f=Array.from(a.keys()).sort((i,T)=>i-T);for(let i of f){let T=a.get(i);if(!T)continue;let F=i*e;for(let X=0;X<e;X++){let l=F+X;if(l>=r)break;if(T.items[X]!==void 0)if(o===null)o={start:l,end:l};else if(l===o.end+1)o.end=l;else y.push(o),o={start:l,end:l};else if(o!==null)y.push(o),o=null}}if(o!==null)y.push(o);return y},A=(y,o)=>{let f=[],i=null;for(let T=y;T<=o&&T<r;T++)if(!C(T))if(i===null)i={start:T,end:T};else i.end=T;else if(i!==null)f.push(i),i=null;if(i!==null)f.push(i);return f},D=(y)=>a.has(y),Z=(y)=>{let o=a.get(y);if(!o)return!1;let f=y*e,i=Math.min(e,r-f);return o.count>=i},j=(y)=>{let o=a.get(y);if(o)o.lastAccess=Date.now()},J=(y,o)=>{if(y>o||a.size===0)return;let f=Date.now(),i=E(Math.max(0,y)),T=E(Math.min(r-1,o));for(let F=i;F<=T;F++){let X=a.get(F);if(X)X.lastAccess=f}},Q=(y,o)=>{if(g<=s)return 0;let f=Math.max(0,y-n),i=Math.min(r-1,o+n),T=E(f),F=E(i),X=0,l=[];for(let[p,v]of a)if(p<T||p>F)X+=v.count,l.push(p),g-=v.count,a.delete(p);if(X>0&&u)u(X,l);return X},ie=()=>{if(g<=s)return 0;let y=Array.from(a.entries()).sort(([,i],[,T])=>i.lastAccess-T.lastAccess),o=0,f=[];for(let[i,T]of y){if(g<=s)break;o+=T.count,g-=T.count,f.push(i),a.delete(i)}if(o>0&&u)u(o,f);return o},oe=()=>({totalItems:r,cachedItems:g,cachedChunks:a.size,chunkSize:e,maxCachedItems:s,memoryEfficiency:r>0?1-g/r:1}),de=()=>g,N=()=>{a.clear(),g=0};return{chunkSize:e,maxCachedItems:s,getTotal:V,setTotal:W,get:c,has:C,set:I,setRange:x,insert:b,delete:L,getRange:d,isRangeLoaded:S,getLoadedRanges:O,findUnloadedRanges:A,getChunkIndex:E,isChunkLoaded:D,isChunkFullyLoaded:Z,touchChunk:j,touchChunksForRange:J,evictDistant:Q,evictToLimit:ie,getStats:oe,getCachedCount:de,clear:N,reset:()=>{N(),r=0}}},De=(t)=>{if(t.length===0)return[];let e=[...t].sort((n,u)=>n.start-u.start),s=[{...e[0]}];for(let n=1;n<e.length;n++){let u=e[n],a=s[s.length-1];if(u.start<=a.end+1)a.end=Math.max(a.end,u.end);else s.push({...u})}return s},Fe=(t,e,s)=>{let n=Math.floor(t.start/s)*s,u=Math.ceil((t.end+1)/s)*s-1,a={start:n,end:u};if(e.length===0)return[a];let r=[],g=De(e),w=a.start;for(let E of g){if(E.end<w)continue;if(E.start>a.end)break;if(E.start>w)r.push({start:w,end:Math.min(E.start-1,a.end)});if(w=E.end+1,w>a.end)break}if(w<=a.end)r.push({start:w,end:a.end});return r};var Pe=(t={})=>{let{maskCharacter:e=Xe,maxSampleSize:s=je}=t,n=[],u=!1,a=(_)=>{if(u||_.length===0)return;let V=Math.min(_.length,s);for(let W=0;W<V;W++){let c=_[W];if(!c||typeof c!=="object")continue;let C={},I=!1;for(let[x,b]of Object.entries(c)){if(x.startsWith("_")||x==="id")continue;C[x]=String(b??"").length,I=!0}if(I)n.push(C)}u=!0},r=()=>u,g=(_)=>{let V={id:`${Ee}${_}`,[$e]:!0,_index:_};if(n.length===0)return V.label=e.repeat(12),V;let W=n[_%n.length];for(let[c,C]of Object.entries(W))V[c]=e.repeat(Math.max(1,C));return V};return{analyzeStructure:a,hasAnalyzedStructure:r,generate:g,generateRange:(_,V)=>{let W=[];for(let c=_;c<=V;c++)W.push(g(c));return W},clear:()=>{n=[],u=!1}}},Ce=(t)=>{if(!t||typeof t!=="object")return!1;return t[$e]===!0},Ve=(t)=>t.filter((e)=>!Ce(e));var Et=50,mt=(t={})=>{let{adapter:e,initialItems:s,initialTotal:n,storage:u,placeholder:a,pageSize:r=Et,maxConcurrent:g=0,onStateChange:w,onDataChange:E,onItemsLoaded:_,onItemsEvicted:V,onLoadError:W}=t,c=_e({...u,onEvict:(R,G)=>{V?.(R),Q(),J()}}),C=null,I=()=>{if(!C)C=Pe(a);return C},x=new Map,b=!1,L,d=!0,S,O,A=[],D=0,Z=new Map,j=()=>{for(let R of Z.values())R[1].abort();Z.clear()},J=()=>{w?.(i())},Q=()=>{E?.()},ie=()=>{x.clear();let R=c.getLoadedRanges();for(let G of R)for(let ee=G.start;ee<=G.end;ee++){let z=c.get(ee);if(z&&!Ce(z))x.set(z.id,ee)}},oe=(R,G)=>{if(!Ce(G))x.set(G.id,R)},de=(R)=>{x.delete(R)},N=(R,G)=>`${R}-${G}`,Y=()=>c.getTotal(),y=()=>c.getCachedCount(),o=()=>b,f=()=>d,i=()=>({total:c.getTotal(),cached:c.getCachedCount(),isLoading:b,pendingRanges:A,error:L,hasMore:d,cursor:S}),T=()=>c,F=()=>I(),X=(R)=>{let G=c.get(R);if(G!==void 0)return G;if(R>=0&&R<c.getTotal())return I().generate(R);return},l=(R)=>{let G=x.get(R);if(G===void 0)return;return c.get(G)},p=(R)=>x.get(R)??-1,v=(R)=>{let G=c.get(R);return G!==void 0&&!Ce(G)},B=(R,G)=>{let ee=[],z=c.getTotal();c.touchChunksForRange(R,Math.min(G,z-1));for(let le=R;le<=G&&le<z;le++){let ye=c.get(le);if(ye!==void 0)ee.push(ye);else ee.push(I().generate(le))}return ee},K=(R)=>{c.setTotal(R),d=c.getCachedCount()<R,Q(),J()},h=(R,G=0,ee)=>{if(e&&R.length>0){let z=I();if(!z.hasAnalyzedStructure())z.analyzeStructure(R)}for(let z=0;z<R.length;z++){let le=R[z];if(le!==void 0){let ye=G+z;c.set(ye,le),oe(ye,le)}}if(ee!==void 0)c.setTotal(ee);else if(G+R.length>c.getTotal())c.setTotal(G+R.length);if(c.getCachedCount()>=c.getTotal()&&c.getTotal()>0)d=!1;Q(),J(),_?.(R,G,c.getTotal())},m=(R,G)=>{let ee=c.get(R);if(!ee)return!1;let z=ee.id,le={...ee,...G};if(c.set(R,le),G.id!==void 0&&G.id!==z)de(z);return oe(R,le),Q(),J(),!0},H=(R,G)=>{c.insert(G,R),ie(),j(),Q(),J()},P=(R)=>{let G=x.get(R);if(G===void 0)return!1;if(!c.delete(G))return!1;return ie(),j(),Q(),J(),!0},k=async(R,G)=>{if(!e)return;let ee=c.chunkSize,z=Math.floor(R/ee),le=Math.floor(G/ee),ye=ee*2;for(let[re,fe]of Z){let be=re.indexOf("-"),xe=parseInt(re.slice(0,be),10);if(Math.abs(xe-R)>ye)fe[1].abort(),Z.delete(re)}let pe=[],ve=[];for(let re=z;re<=le;re++){let fe=re*ee,be=fe+ee-1,xe=N(fe,be);if(c.isChunkFullyLoaded(re))continue;let he=Z.get(xe);if(he)ve.push(he[0]);else pe.push({start:fe,end:be})}if(pe.length===0){if(ve.length>0)await Promise.all(ve);return}if(g>0){let re=Z.size+pe.length;if(re>g){let fe=(R+G)/2,be=Math.min(re-g,Z.size);while(be>0){let ce=null,he=-1,Se=null;for(let[U,ue]of Z){let me=U.indexOf("-"),ge=parseInt(U.slice(0,me),10),Le=parseInt(U.slice(me+1),10),Ie=Math.abs((ge+Le)/2-fe);if(Ie>he)he=Ie,ce=U,Se=ue[1]}if(ce)Se.abort(),Z.delete(ce);be--}let xe=g-Z.size;if(pe.length>xe)pe.sort((ce,he)=>{let Se=Math.abs((ce.start+ce.end)/2-fe),U=Math.abs((he.start+he.end)/2-fe);return Se-U}),pe.length=Math.max(0,xe)}}if(pe.length===0){if(ve.length>0)await Promise.all(ve);return}for(let re of pe){let fe=N(re.start,re.end),be=new AbortController,xe=(async()=>{A.push(re),b=!0,L=void 0,J();try{let ce=re.end-re.start+1,he={offset:re.start,limit:ce,cursor:re.start===O?S:void 0,signal:be.signal},Se=await e.read(he);if(h(Se.items,re.start,Se.total),Se.cursor)S=Se.cursor,O=re.start+Se.items.length;let U=re.start+Se.items.length;if(U>=D){if(D=U,Se.hasMore!==void 0)d=Se.hasMore;else if(Se.total!==void 0)d=U<Se.total}}catch(ce){if(ce?.name==="AbortError")return;L=ce instanceof Error?ce:Error(String(ce)),W?.(L,re)}finally{Z.delete(fe);let ce=A.findIndex((he)=>he.start===re.start&&he.end===re.end);if(ce>=0)A.splice(ce,1);b=Z.size>0,J()}})();Z.set(fe,[xe,be]),ve.push(xe)}await Promise.all(ve)},q=async(R,G)=>{if(c.isRangeLoaded(R,G))return;await k(R,G)},M=async()=>{if(!e)return;await k(0,r-1)},te=async()=>{if(!e||b||!d)return!1;let R=c.getCachedCount(),G=c.getTotal(),ee=R,z=Math.min(ee+r-1,G>0?G-1:ee+r-1);if(ee>=G&&G>0)return d=!1,!1;return await k(ee,z),c.getCachedCount()>R},se=async()=>{if(c.clear(),x.clear(),C)C.clear();j(),A=[],b=!1,S=void 0,O=void 0,d=!0,D=0,L=void 0,Q(),J()},ne=(R,G)=>{if(c.evictDistant(R,G)>0)ie()},Te=()=>{c.clear(),x.clear(),S=void 0,O=void 0,L=void 0,A=[],b=!1,Q(),J()},ae=()=>{if(c.reset(),x.clear(),C)C.clear();S=void 0,O=void 0,d=!0,D=0,L=void 0,A=[],b=!1,Q(),J()};if(s&&s.length>0)h(s,0,n??s.length);else if(n!==void 0)c.setTotal(n),Q(),J();return{getState:i,getTotal:Y,getCached:y,getIsLoading:o,getHasMore:f,getStorage:T,getPlaceholders:F,getItem:X,getItemById:l,getIndexById:p,isItemLoaded:v,getItemsInRange:B,setTotal:K,setItems:h,updateItem:m,insertItem:H,removeItem:P,loadRange:k,ensureRange:q,loadInitial:M,loadMore:te,reload:se,evictDistant:ne,clear:Te,reset:ae}};var Ct=(t)=>{if(typeof t!=="object"){let e=t??2;return{top:e,right:e,bottom:e,left:e}}return{top:t.top??2,right:t.right??2,bottom:t.bottom??2,left:t.left??2}},ft=(t,e,s={},n="vlist",u=!1,a)=>{let{autoHide:r=!0,autoHideDelay:g=1000,minThumbSize:w=15,showOnHover:E=!0,showOnViewportEnter:_=!0,clickBehavior:V="scroll"}=s,W=V==="page"?"scroll":V,c=a??t,C=Ct(s.padding),I=u?C.left:C.top,x=u?C.right:C.bottom,b=u?C.bottom:C.right,L=s.hoverZoneWidth??b+16,d=0,S=0,O=0,A=0,D=!1,Z=!1,j=0,J=0,Q=0,ie=null,oe=!1,de=null,N=0,Y=0,y=null,o=null,f=null,i=u?"width":"height",T=u?"translateX":"translateY",F=u?(U)=>U.clientX:(U)=>U.clientY,X=u?"left":"top",l=document.createElement("div"),p=document.createElement("div"),v=document.createElement("div"),B=u?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",K=()=>{if(c===t)return;let U=t.offsetTop;l.style[u?"left":"top"]=U?`calc(var(${B}) + ${U}px)`:`var(${B})`,v.style[u?"left":"top"]=`${U}px`},h=()=>{if(l.className=`${n}-scrollbar`,p.className=`${n}-scrollbar__thumb`,u)l.classList.add(`${n}-scrollbar--horizontal`);if(s.padding!==void 0)c.style.setProperty("--vlist-custom-scrollbar-padding-top",`${C.top}px`),c.style.setProperty("--vlist-custom-scrollbar-padding-right",`${C.right}px`),c.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${C.bottom}px`),c.style.setProperty("--vlist-custom-scrollbar-padding-left",`${C.left}px`);if(s.minThumbSize!==void 0)l.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${w}px`);if(l.appendChild(p),c.appendChild(l),v.className=`${n}-scrollbar__hover`,u)v.classList.add(`${n}-scrollbar__hover--horizontal`),v.style.height=`${L}px`;else v.style.width=`${L}px`;if(c.appendChild(v),c!==t)K()},m=()=>{if(ie)clearTimeout(ie),ie=null},H=()=>{if(!r)return;m(),ie=setTimeout(k,g)},P=()=>{if(d<=S)return;if(m(),!oe)l.classList.add(`${n}-scrollbar--visible`),oe=!0;if(r&&!D&&!Z)H()},k=()=>{if(D||Z)return;l.classList.remove(`${n}-scrollbar--visible`),oe=!1},q=(U,ue)=>{if(d=U,S=ue,K(),d<=S){l.style.display="none",k();return}l.style.display="";let me=Math.max(0,S-I-x),ge=S/d;if(O=Math.max(w,ge*me),p.style[i]=`${O}px`,A=me-O,M(Q),!r)P()},M=(U)=>{if(Q=U,d<=S||A<=0)return;let ue=d-S,me=Math.min(1,Math.max(0,U/ue));p.style.transform=`${T}(${me*A}px)`},te=(U)=>{if(U.target===p||W!=="jump"||A<=0)return;let ue=d-S,me=l.getBoundingClientRect(),ge=F(U)-me[X],Le=Math.max(0,Math.min(ge-O/2,A));e(Le/A*ue),P()},se=()=>{if(y!==null)clearTimeout(y),y=null;if(o!==null)cancelAnimationFrame(o),o=null;f=null},ne=(U)=>{let ue=A>0?Y/U*A:0;if(N<ue)return-1;if(N>=ue+O)return 1;return 0},Te=()=>{let U=d-S,ue=ne(U);if(ue===0){se();return}if(ue===-1){if(Y<=0){se();return}let me=Math.max(0,Y-S);Y=me,e(me)}else{if(Y>=U){se();return}let me=Math.min(U,Y+S);Y=me,e(me)}P()},ae=(U)=>{if(f===null){f=U,o=requestAnimationFrame(ae);return}let ue=d-S,me=U-f;f=U;let ge=ne(ue);if(ge===0){se();return}let Le=12*S/1000,Ie=Math.min(Le*me,S);if(ge===-1){if(Y<=0){se();return}let Ae=Math.max(0,Y-Ie);Y=Ae,e(Ae)}else{if(Y>=ue){se();return}let Ae=Math.min(ue,Y+Ie);Y=Ae,e(Ae)}m(),o=requestAnimationFrame(ae)},R=()=>{se(),H(),document.removeEventListener("mouseup",R)},G=(U)=>{if(U.target===p||W!=="scroll")return;U.preventDefault();let ue=l.getBoundingClientRect();N=F(U)-ue[X],Y=Q,Te(),y=setTimeout(()=>{o=requestAnimationFrame(ae)},350),document.addEventListener("mouseup",R)},ee=(U)=>{U.preventDefault(),U.stopPropagation(),D=!0,j=F(U),J=Q,m(),l.classList.add(`${n}-scrollbar--dragging`),document.addEventListener("mousemove",z),document.addEventListener("mouseup",le)},z=(U)=>{if(!D)return;let ue=F(U)-j,me=A>0?ue/A:0,ge=d-S,Le=me*ge,Ie=Math.max(0,Math.min(J+Le,ge));p.style.transform=`${T}(${Ie/ge*A}px)`,e(Ie)},le=()=>{if(D=!1,l.classList.remove(`${n}-scrollbar--dragging`),r&&!Z)H();document.removeEventListener("mousemove",z),document.removeEventListener("mouseup",le)},ye=u?(U)=>U.touches[0].clientX:(U)=>U.touches[0].clientY,pe=(U)=>{U.stopPropagation(),D=!0,j=ye(U),J=Q,m(),l.classList.add(`${n}-scrollbar--dragging`)},ve=(U)=>{if(!D)return;U.preventDefault();let ue=ye(U)-j,me=A>0?ue/A:0,ge=d-S,Le=me*ge,Ie=Math.max(0,Math.min(J+Le,ge));p.style.transform=`${T}(${Ie/ge*A}px)`,e(Ie)},re=()=>{if(D=!1,l.classList.remove(`${n}-scrollbar--dragging`),r)H()},fe=(U)=>{if(U.target===p)return;if(A<=0)return;let ue=U.touches[0],me=l.getBoundingClientRect(),ge=(u?ue.clientX:ue.clientY)-me[X];if(W==="jump"){let Le=d-S,Ie=Math.max(0,Math.min(ge-O/2,A));e(Ie/A*Le)}else N=ge,Y=Q,Te();P()},be=()=>{if(_)P()},xe=()=>{if(!D){if(Z=!1,r)H()}},ce=()=>{Z=!0,m(),P()},he=()=>{if(Z=!1,!D&&r)H()},Se=()=>{if(m(),se(),de!==null)cancelAnimationFrame(de),de=null;l.removeEventListener("click",te),l.removeEventListener("mousedown",G),l.removeEventListener("mouseenter",ce),document.removeEventListener("mouseup",R),l.removeEventListener("mouseleave",he),l.removeEventListener("touchstart",fe),p.removeEventListener("mousedown",ee),p.removeEventListener("touchstart",pe),p.removeEventListener("touchmove",ve),p.removeEventListener("touchend",re),t.removeEventListener("mouseenter",be),t.removeEventListener("mouseleave",xe),document.removeEventListener("mousemove",z),document.removeEventListener("mouseup",le),v.removeEventListener("click",te),v.removeEventListener("mousedown",G),v.removeEventListener("mouseenter",ce),v.removeEventListener("mouseleave",he),v.remove(),c.style.removeProperty("--vlist-custom-scrollbar-padding-top"),c.style.removeProperty("--vlist-custom-scrollbar-padding-right"),c.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),c.style.removeProperty("--vlist-custom-scrollbar-padding-left"),l.remove()};if(h(),l.addEventListener("click",te),l.addEventListener("mousedown",G),l.addEventListener("mouseenter",ce),l.addEventListener("mouseleave",he),l.addEventListener("touchstart",fe,{passive:!0}),p.addEventListener("mousedown",ee),p.addEventListener("touchstart",pe,{passive:!0}),p.addEventListener("touchmove",ve,{passive:!1}),p.addEventListener("touchend",re,{passive:!0}),t.addEventListener("mouseenter",be),t.addEventListener("mouseleave",xe),v.addEventListener("click",te),v.addEventListener("mousedown",G),E)v.addEventListener("mouseenter",ce),v.addEventListener("mouseleave",he);return{show:P,hide:k,updateBounds:q,updatePosition:M,isVisible:()=>oe,destroy:Se}};var Mt=50,At=0.1;function Ht(t){let e=0,s=0,n=0;function u(){return n>0?s/n:0}function a(w){if(e=w,w>At&&w<Mt)s+=w,n++}function r(){let w=t.getTotal();if(w===0)return 0;let E=t.getItemSize();if(E<=0)return 0;let _=t.getContainerSize();if(_<=0)return 0;let V=t.getScrollPosition(),W=typeof t.getColumns==="function"?t.getColumns():1,C=Math.ceil(w/W)*E,x=Math.min(C,qe)-_,b=C-_,L=x>0?b/x:1,d=V*L,S=Math.ceil((d+_)/E);return Math.min(S*W,w)}function g(){let w=t.getTotal(),E=r();return{progress:w>0?Math.min(100,Math.max(0,E/w*100)):0,velocity:e,velocityAvg:u(),itemCount:E,total:w}}return{getState:g,onVelocity:a}}export{We as buildLayoutItems,Fe as calculateMissingRanges,tt as clearSelection,mt as createAsyncManager,dt as createEmitter,Ze as createGridLayout,ht as createGridRenderer,Ue as createGroupLayout,Ke as createGroupedSizeFn,lt as createMasonryLayout,ct as createMasonryRenderer,Pe as createPlaceholderManager,ft as createScrollbar,Je as createSelectionState,ut as createSizeCache,_e as createSparseStorage,Ht as createStats,Ye as createStickyHeader,at as createTableHeader,st as createTableLayout,it as createTableRenderer,Ge as deselectItems,Ve as filterPlaceholders,rt as getSelectedIds,ot as getSelectedItems,Re as isGroupHeader,Ce as isPlaceholderItem,nt as isSelected,De as mergeRanges,et as selectAll,ze as selectItems,Qe as toggleSelection};
|
|
1
|
+
function ze(t){let e=t.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let r=0;r<e.length;r++)e[r].setAttribute("tabindex","-1")}var Ue=(t,e)=>{let r=0,n=t.length-1;while(r<n){let i=r+n+1>>>1;if(t[i].headerLayoutIndex<=e)r=i;else n=i-1}return r},nt=(t,e)=>{let r=0,n=t.length-1;while(r<n){let i=r+n+1>>>1;if(t[i].firstDataIndex<=e)r=i;else n=i-1}return r},rt=(t,e,r)=>{if(t===0)return[];let n=[],i=null,a=0,s=0;for(let y=0;y<t;y++){let D=r?.(y);if(!D)continue;let L=e(y,D);if(i===null)i=L,a=0;else if(L!==i){let H=y-a;n.push({key:i,groupIndex:n.length,headerLayoutIndex:s,firstDataIndex:a,count:H}),s=s+1+H,i=L,a=y}}if(i!==null)n.push({key:i,groupIndex:n.length,headerLayoutIndex:s,firstDataIndex:a,count:t-a});return n},ot=(t,e)=>{if(t.length===0||e.length===0)return[];let r=t.length+e.length,n=Array(r),i=0;for(let a of e){n[i]={id:`__group_header_${a.groupIndex}`,__groupHeader:!0,groupKey:a.key,groupIndex:a.groupIndex},i++;for(let s=0;s<a.count;s++)n[i]=t[a.firstDataIndex+s],i++}return n},st=(t,e,r=!1)=>{let n=typeof e==="number"?(i)=>e:e;return(i)=>{let a=t.getEntry(i);if(a.type==="header"){if(r&&a.group.groupIndex===0)return 0;return t.getHeaderHeight(a.group.groupIndex)}return n(a.dataIndex)}},at=(t,e,r)=>{let n=rt(t,e.getGroupForIndex,r),i=t+n.length,a=e.header?.height??e.header?.width??e.headerHeight;return{get totalEntries(){return i},get groupCount(){return n.length},get groups(){return n},getEntry:(c)=>{if(n.length===0)return{type:"item",dataIndex:c,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let _=Ue(n,c),I=n[_];if(c===I.headerLayoutIndex)return{type:"header",group:I};let x=c-I.headerLayoutIndex-1;return{type:"item",dataIndex:I.firstDataIndex+x,group:I}},layoutToDataIndex:(c)=>{if(n.length===0)return c;let _=Ue(n,c),I=n[_];if(c===I.headerLayoutIndex)return-1;let x=c-I.headerLayoutIndex-1;return I.firstDataIndex+x},dataToLayoutIndex:(c)=>{if(n.length===0)return c;let _=nt(n,c),I=n[_],x=c-I.firstDataIndex;return I.headerLayoutIndex+1+x},getGroupAtLayoutIndex:(c)=>{if(n.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let _=Ue(n,c);return n[_]},getGroupAtDataIndex:(c)=>{if(n.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let _=nt(n,c);return n[_]},getHeaderHeight:typeof a==="number"?(c)=>a:(c)=>{let _=n[c];if(!_)return 0;return a(_.key,c)},rebuild:(c,_)=>{n=rt(c,e.getGroupForIndex,_??r),i=c+n.length}}};var Ht=(t,e,r,n,i=0)=>{let a=r?"width":"height",s=document.createElement("div");return s.className=`${e}-sticky-header`,s.setAttribute("role","presentation"),s.setAttribute("aria-hidden","true"),s.style.cssText="z-index:5;pointer-events:none;overflow:hidden;"+(r?`position:absolute;top:0;bottom:0;left:${i||0}px`:`position:relative;top:${i||0}px`),s.style[a]=`${n}px`,t.insertBefore(s,t.firstChild),s},it=(t,e,r,n,i,a=!1,s=0,y,D)=>{let L=a?"width":"height",H=a?"height":"width",Z=a?"X":"Y",X=(g,u)=>{g.style[L]=`${u}px`},c=y??Ht(t,i,a,0,s),_=()=>{let g=document.createElement("div");return g.className="sticky-group",g.style.position="absolute",g.style.willChange="transform",g.style[H]="100%",g},I=_(),x=_();c.append(I,x);let l=I,v=x,m=e.groups,M=[],B=[],F=[],P=0,Y=()=>{m=e.groups,P=m.length,M=Array(P),B=Array(P),F=Array(P);for(let g=0;g<P;g++)M[g]=D?D(m[g].headerLayoutIndex):r.getOffset(m[g].headerLayoutIndex),B[g]=e.getHeaderHeight(g),F[g]=B[g]};Y();let V=-1,j=0,ee=0,re=-1,ae=!1,ge=0,de=!1,J=(g,u)=>{n(g,u);let E=B[u];return X(g,E),E},p=(g)=>{g.replaceChildren(),g.style.transform=""},o=(g)=>{if(g===V)return;if(V=g,j=0,ee=0,g<0||g>=P){p(l);return}j=J(l,g),ee=F[g],X(c,j),l.style.transform=""},d=(g)=>{if(g===ge)return;ge=g;let u=Math.round(g);l.style.transform=`translate${Z}(${u}px)`,v.style.transform=`translate${Z}(${u+j}px)`},f=()=>{ge=0,l.style.transform="",v.style.transform=""},S=()=>{if(!de)return;let g=l;l=v,v=g,V=re,j=V>=0?B[V]:0,ee=V>=0?F[V]:0,X(c,j),p(v),re=-1,de=!1,f()},K=()=>{if(!de)return;p(v),re=-1,de=!1,f()},W=!!y,h=()=>{if(ae)return;if(ae=!0,W)c.style.visibility="";else c.style.display=""},b=()=>{if(!ae)return;if(ae=!1,W)c.style.visibility="hidden";else c.style.display="none";p(l),V=-1,j=0,ee=0,K()},z=(g)=>{if(P===0){if(de)K();if(!ae)h();o(-1);return}if(g<M[0]){b();return}let u=0,E=P-1;while(u<E){let G=u+E+1>>>1;if(M[G]+F[G]<=g)u=G;else E=G-1}if(!ae)h();o(u);let N=u+1;if(N<P){let G=M[N]-g;if(G<=0&&G>-ee){if(re!==N||!de)re=N,J(v,N),de=!0;let O=ee>0?G/ee*j:G;d(O)}else if(G<=-ee){if(de)S()}else if(de)K()}else if(de)K()},U=()=>{Y();let g=V;if(V=-1,j=0,ee=0,g>=0)o(g)},T=()=>{c.remove(),V=-1,j=0,ee=0,re=-1,ae=!1,de=!1};if(!y)c.style.display="none";return{update:z,refresh:U,show:h,hide:b,destroy:T}};var Oe=(t)=>t!==null&&typeof t==="object"&&t.__groupHeader===!0;var lt=(t)=>{let e=Math.max(1,Math.floor(t.columns)),r=t.gap??0,n=t.isHeaderFn,i={row:0,col:0},a=(I)=>{if(I<=0)return 0;if(!n)return Math.ceil(I/e);let x=0,l=0,v=0;for(let m=0;m<I;m++)if(n(m)){if(v++,l)x++,l=0;x++,l=0}else if(l++,l>=e)x++,l=0;if(l)x++;return x},s=(I)=>(i.row=y(I),i.col=D(I),i),y=(I)=>{if(!n)return Math.floor(I/e);let x=0,l=0;for(let v=0;v<=I;v++)if(n(v)){if(l)x++,l=0;if(v===I)return x;x++,l=0}else{if(v===I)return x;if(l++,l>=e)x++,l=0}return console.warn(`⚠️ getRow(${I}) fell through - returning ${x}`),x},D=(I)=>{if(!n)return I%e;if(n(I))return 0;let x=0;for(let l=0;l<=I;l++)if(n(l))x=0;else{if(l===I)return x;if(x++,x>=e)x=0}return x},L=(I,x,l,v)=>{if(l<=0){v.start=0,v.end=-1;return}if(!n){v.start=Math.max(0,I*e),v.end=Math.min(l-1,(x+1)*e-1);return}let m=H(I,x,l);v.start=m.start,v.end=m.end},H=(I,x,l)=>{if(l<=0)return{start:0,end:-1};if(!n){let F=Math.max(0,I*e),P=Math.min(l-1,(x+1)*e-1);return{start:F,end:P}}let v=-1,m=-1,M=0,B=0;for(let F=0;F<l;F++){if(n(F)){if(B)M++,B=0;if(M>=I&&M<=x){if(v<0)v=F;m=F}M++,B=0}else{if(M>=I&&M<=x){if(v<0)v=F;m=F}if(B++,B>=e)M++,B=0}if(M>x&&!B)break}if(v<0)return{start:0,end:-1};return{start:v,end:m}},Z=(I,x,l)=>{if(x<0||x>=e)return-1;let v=I*e+x;if(v<0||v>=l)return-1;return v},X=(I)=>{let x=(e-1)*r;return Math.max(0,(I-x)/e)};return{get columns(){return e},get gap(){return r},update:(I)=>{if(I.columns!==void 0)e=Math.max(1,Math.floor(I.columns));if(I.gap!==void 0)r=I.gap;if(I.isHeaderFn!==void 0)n=I.isHeaderFn},getTotalRows:a,getPosition:s,getRow:y,getCol:D,getItemRange:H,fillItemRange:L,getItemIndex:Z,getColumnWidth:X,getColumnOffset:(I,x)=>{let l=X(x);return I*(l+r)}}};var ct=16000000;var ut="x",dt=20,Ye="_isPlaceholder",Ae="__placeholder_";var we=(t,e,r)=>{if(String(r).startsWith(Ae))return!1;let n=Ae+e;if(t.has(n))return t.delete(n),t.add(r),!0;return!1},mt=(t)=>({selected:new Set(t??[]),focusedIndex:-1,focusVisible:!1}),Ze=(t,e,r)=>{if(r==="none")return t;let n=new Set(t.selected);if(r==="single"){if(n.clear(),e.length>0)n.add(e[0])}else for(let i of e)n.add(i);return{...t,selected:n}},qe=(t,e)=>{let r=new Set(t.selected);for(let n of e)r.delete(n);return{...t,selected:r}},ft=(t,e,r)=>{if(r==="none")return t;if(t.selected.has(e))return qe(t,[e]);else return Ze(t,[e],r)},pt=(t,e,r)=>{if(r!=="multiple")return t;return{...t,selected:new Set(e.map((n)=>n.id))}},gt=(t)=>({...t,selected:new Set});var bt=(t,e)=>t.selected.has(e),ht=(t)=>Array.from(t.selected),yt=(t,e)=>{let r=[];for(let n of t.selected){let i=e(n);if(i)r.push(i)}return r};var Ge=(t,e,r)=>{let n=Array.from(e).sort((s,y)=>s-y);if(n.length<=1)return;let i=[];for(let s=0;s<n.length;s++){let y=r(n[s]);if(y)i.push(y)}if(i.length<=1)return;let a=t.firstChild;for(let s=0;s<i.length;s++){let y=i[s];if(y===a)a=a.nextSibling;else t.insertBefore(y,a)}};var Rt=(t=200)=>{let e=[];return{acquire:()=>{let a=e.pop();if(a)return a;let s=document.createElement("div");return s.setAttribute("role","option"),s},release:(a)=>{if(a.remove(),e.length<t)a.className="",a.textContent="",a.removeAttribute("style"),a.removeAttribute("data-index"),a.removeAttribute("data-id"),a.removeAttribute("data-row"),a.removeAttribute("data-col"),e.push(a)},clear:()=>{e.length=0}}},wt=1,kt=(t,e,r,n,i,a,s,y,D=!1,L,H)=>{let Z=Rt(),X=new Map,c=a,_=!1,I=0,x="",l=-1,v={selected:!1,focused:!1},m=(h,b)=>(v.selected=h,v.focused=b,v),M=`${i}-item ${i}-grid-item`,B=`${i}-group-header`,F=`${i}-item--selected`,P=`${i}-item--focused`,Y=`${i}-item--placeholder`,V=`${i}-item--replaced`,j=(h,b)=>{if(typeof b==="string")h.innerHTML=b;else h.replaceChildren(b);ze(h)},ee=(h,b,z)=>{h.classList.toggle(F,b),h.classList.toggle(P,z)},re=(h)=>{let b=n.getRow(h);return r.getOffset(b)},ae=(h)=>{let b=n.getCol(h),U=_&&b===0?0:n.getColumnOffset(b,c),T;if(_){let g=n.getRow(h),u=0,E=-1;for(let N=0;N<h;N++){let G=n.getRow(N);if(G<g&&G!==E){let O=r.getSize(N);u+=O,E=G}}T=u}else T=re(h);if(D)return`translate(${Math.round(T)}px, ${Math.round(U)}px)`;return`translate(${Math.round(U)}px, ${Math.round(T)}px)`},ge=(h,b)=>{let z=h.classList.contains(B),U=z?c:n.getColumnWidth(c),T;if(_||z)T=r.getSize(b)-n.gap;else{let g=n.getRow(b);T=r.getSize(g)-n.gap}if(D)h.style.width=`${T}px`,h.style.height=`${U}px`;else h.style.width=`${U}px`,h.style.height=`${T}px`},de=(h,b,z,U,T)=>{let g=Z.acquire(),u=!!b.__groupHeader,E=m(z,U);if(g.className=u?B:M,g.dataset.index=String(h),g.dataset.id=String(b.id),g.dataset.row=String(n.getRow(h)),g.dataset.col=String(n.getCol(h)),u)g.setAttribute("role","presentation"),g.removeAttribute("aria-selected"),g.removeAttribute("aria-setsize"),g.removeAttribute("aria-posinset"),g.removeAttribute("id");else if(H===!0){if(g.setAttribute("role","option"),g.ariaSelected=String(z),y)g.id=`${y}-item-${h}`;if(s){let O=s();if(O!==l)l=O,x=String(O);g.setAttribute("aria-setsize",x);let w=L?L(h):h+1;g.setAttribute("aria-posinset",String(w))}}else if(g.setAttribute("role","listitem"),g.removeAttribute("aria-selected"),s){let O=s();if(O!==l)l=O,x=String(O);g.setAttribute("aria-setsize",x);let w=L?L(h):h+1;g.setAttribute("aria-posinset",String(w))}ge(g,h);let N=e(b,h,E);if(j(g,N),String(b.id).startsWith(Ae))g.classList.add(Y);return ee(g,z,U),g.style.transform=T,{element:g,lastItem:b,lastSelected:z,lastFocused:U,lastTransform:T,lastSeenFrame:I}},J=(h,b,z,U)=>{if(I++,b.start===0&&h.length)_=Oe(h[0]);let T=!1;if(s){let u=s();if(u!==l)l=u,x=String(u),T=!0}let g=null;for(let u=b.start;u<=b.end;u++){let E=u-b.start,N=h[E];if(!N)continue;let G=z.has(N.id),O=u===U,w=X.get(u);if(w){let R=w.lastItem!==N,ie=w.lastSelected!==G,le=w.lastFocused!==O;if(R){let Ie=w.element.dataset.id??"",C=String(N.id),k=Ie.startsWith(Ae),Q=C.startsWith(Ae);if(!Q&&we(z,u,N.id))G=!0;let te=m(G,O),q=e(N,u,te);if(j(w.element,q),w.element.dataset.id=C,w.element.dataset.row=String(n.getRow(u)),w.element.dataset.col=String(n.getCol(u)),ge(w.element,u),w.element.classList.toggle(Y,Q),k&&!Q)w.element.classList.add(V),setTimeout(()=>w.element.classList.remove(V),300);if(w.lastItem=N,!N.__groupHeader){let be=L?L(u):u+1;w.element.setAttribute("aria-posinset",String(be))}}if(R||ie||le)ee(w.element,G,O),w.element.ariaSelected=String(G),w.lastSelected=G,w.lastFocused=O;let ne=ae(u);if(w.lastTransform!==ne)w.element.style.transform=ne,w.lastTransform=ne;if(T&&!N.__groupHeader)w.element.setAttribute("aria-setsize",x)}else{if(we(z,u,N.id))G=!0;let R=ae(u),ie=de(u,N,G,O,R);if(!g)g=document.createDocumentFragment();g.appendChild(ie.element),X.set(u,ie)}}if(g)t.appendChild(g);for(let[u,E]of X)if(u>=b.start&&u<=b.end)E.lastSeenFrame=I;else if(I-E.lastSeenFrame>wt)Z.release(E.element),X.delete(u)},p=(h,b,z,U)=>{let T=X.get(h);if(!T)return;let g=m(z,U),u=e(b,h,g);j(T.element,u),ee(T.element,z,U),T.element.dataset.id=String(b.id),T.element.ariaSelected=String(z),ge(T.element,h),T.lastItem=b,T.lastSelected=z,T.lastFocused=U},o=(h,b,z)=>{let U=X.get(h);if(!U)return;let T=U.lastSelected!==b,g=U.lastFocused!==z;if(T||g)ee(U.element,b,z),U.lastSelected=b,U.lastFocused=z},d=(h)=>X.get(h)?.element,f=(h)=>{if(Math.abs(h-c)<1)return;c=h;for(let[b,z]of X){ge(z.element,b);let U=ae(b);z.element.style.transform=U,z.lastTransform=U}},S=()=>{Ge(t,X.keys(),(h)=>X.get(h)?.element)},K=()=>{for(let[,h]of X)Z.release(h.element);X.clear()};return{render:J,updateItem:p,updateItemClasses:o,getElement:d,sortDOM:S,updateContainerWidth:f,clear:K,destroy:()=>{K(),Z.clear()}}};var St=(t,e=50,r=1/0,n=!0,i="none")=>{let a=t,s=[],y=0,D=0,L=()=>{s=a.map((m,M)=>({def:m,index:M,width:0,minWidth:_t(m.minWidth??e,1),maxWidth:m.maxWidth??r,resizable:m.resizable??n,offset:0}))},H=()=>{if(i==="none"||y<=0||y>=D)return;if(i==="spacer"){y=D;return}let m=D-y,M=y;for(let B=0;B<s.length;B++){let F=s[B];F.width=Fe(F.width+m*(F.width/M),F.minWidth,F.maxWidth)}X()},Z=(m)=>{if(D=m,s.length===0){y=0;return}let M=0,B=0;for(let F=0;F<s.length;F++){let P=s[F],Y=P.def;if(Y.width!==void 0)P.width=Fe(Y.width,P.minWidth,P.maxWidth),M+=P.width;else B++}if(B){let P=Math.max(0,m-M)/B;for(let Y=0;Y<s.length;Y++){let V=s[Y];if(V.def.width===void 0)V.width=Fe(P,V.minWidth,V.maxWidth)}}X(),H()},X=()=>{let m=0;for(let M=0;M<s.length;M++){let B=s[M];B.offset=m,m+=B.width}y=m},c=(m,M)=>{if(m<0||m>=s.length)return 0;let B=s[m];if(!B.resizable)return B.width;let F=Fe(M,B.minWidth,B.maxWidth);if(B.width=F,X(),i==="spacer")H();return F},_=(m)=>s[m],I=(m)=>{if(s.length===0)return;if(m<0)return s[0];if(m>=y)return s[s.length-1];let M=0,B=s.length-1;while(M<B){let F=M+B>>>1,P=s[F];if(m<P.offset)B=F-1;else if(m>=P.offset+P.width)M=F+1;else return P}return s[M]},x=(m)=>{if(m<0||m>=s.length)return 0;return s[m].offset},l=(m)=>{if(m<0||m>=s.length)return 0;return s[m].width},v=(m)=>{a=m,L()};return L(),{get columns(){return s},get totalWidth(){return y},resolve:Z,updateColumns:v,resizeColumn:c,getColumn:_,getColumnAtX:I,getColumnOffset:x,getColumnWidth:l}},Fe=(t,e,r)=>Math.min(r,Math.max(e,t)),_t=(t,e)=>Math.max(e,t);var vt=(t,e,r,n,i,a)=>{let s=document.createElement("div");s.setAttribute("role","rowgroup");let y=document.createElement("div");y.className=`${r}-table-header`,y.setAttribute("role","row"),y.setAttribute("aria-rowindex","1"),y.style.height=`${e}px`;let D=document.createElement("div");D.className=`${r}-table-header-scroll`,D.setAttribute("role","presentation"),y.appendChild(D),s.appendChild(y),t.insertBefore(s,t.firstChild),t.style.setProperty("--vlist-table-header-height",`${e}px`);let L=[],H=[],Z=!0,X=null,c="asc",_=null,I=!1,x=-1,l=0,v=0,m=0,M=(o,d)=>{let f=document.createElement("div");f.className=`${r}-table-header-cell`,f.setAttribute("role","columnheader"),f.setAttribute("aria-colindex",String(d+1)),f.setAttribute("tabindex",d===0?"0":"-1"),f.dataset.columnKey=o.def.key;let S=o.def.align;if(S==="center")f.classList.add(`${r}-table-header-cell--center`);else if(S==="right")f.classList.add(`${r}-table-header-cell--right`);let K=document.createElement("div");K.className=`${r}-table-header-content`;let W=o.def.header?o.def.header(o.def):o.def.label;if(typeof W==="string")K.textContent=W;else K.appendChild(W);if(f.appendChild(K),o.def.sortable){let h=document.createElement("span");h.className=`${r}-table-header-sort`,h.setAttribute("aria-hidden","true"),f.appendChild(h),H.push(h),f.classList.add(`${r}-table-header-cell--sortable`)}else H.push(null);if(o.resizable){let h=document.createElement("div");h.className=`${r}-table-header-resize`,h.dataset.resizeIndex=String(d),f.appendChild(h)}return f},B=(o)=>{_=o,D.textContent="",L=[],H=[];let d=o.columns;for(let f=0;f<d.length;f++){let S=d[f],K=M(S,f);L.push(K),D.appendChild(K)}if(F(o),X)P(X,c)},F=(o)=>{_=o;let d=o.columns;D.style.width=`${o.totalWidth}px`;for(let f=0;f<L.length&&f<d.length;f++){let S=L[f],K=d[f];S.style.width=`${K.width}px`}},P=(o,d)=>{if(X=o,c=d,!_)return;let f=_.columns;for(let S=0;S<H.length&&S<f.length;S++){let K=H[S];if(!K)continue;if(f[S].def.key===o)K.textContent=d==="asc"?"▲":"▼",K.style.opacity="0.7",L[S].setAttribute("aria-sort",d==="asc"?"ascending":"descending");else K.textContent="",K.style.opacity="0",L[S].removeAttribute("aria-sort")}},Y=(o)=>{D.style.transform=`translateX(${-o}px)`},V=(o)=>{let d=o.target;if(!d.dataset.resizeIndex)return;if(o.preventDefault(),o.stopPropagation(),x=+d.dataset.resizeIndex,!_)return;let f=_.getColumn(x);if(!f?.resizable)return;I=!0,l=o.clientX,v=f.width,t.classList.add(`${r}--col-resizing`),t.style.cursor="col-resize",d.classList.add(`${r}-table-header-resize--active`),d.setPointerCapture(o.pointerId),d.addEventListener("pointermove",j),d.addEventListener("pointerup",ee),d.addEventListener("pointercancel",ee)},j=(o)=>{if(!I||!_)return;let d=o.clientX-l;if(Math.abs(d)<1)return;let f=Math.max(0,v+d);n(x,f)},ee=(o)=>{if(!I)return;let d=o.target;d.removeEventListener("pointermove",j),d.removeEventListener("pointerup",ee),d.removeEventListener("pointercancel",ee);try{d.releasePointerCapture(o.pointerId)}catch{}d.classList.remove(`${r}-table-header-resize--active`),t.classList.remove(`${r}--col-resizing`),t.style.cursor="",I=!1,x=-1},re=(o)=>{let d=o.target;if(d.dataset.resizeIndex)return;if(I)return;let f=d;while(f&&!f.dataset.columnKey)if(f=f.parentElement,f===y||f===null)return;let S=f.dataset.columnKey;if(!_)return;let K=_.columns,W=-1;for(let b=0;b<K.length;b++)if(K[b].def.key===S){W=b;break}if(W===-1)return;let h=K[W];if(a)a({key:S,index:W,event:o});if(h.def.sortable&&i){let b;if(X===S)b=c==="asc"?"desc":null;else b="asc";i({key:S,index:W,direction:b})}},ae=(o)=>{if(o<0||o>=L.length)return;L[m]?.setAttribute("tabindex","-1"),m=o;let d=L[m];d.setAttribute("tabindex","0"),d.focus()},ge=(o)=>{let d=o.key;if(d==="ArrowRight"){if(o.ctrlKey||o.metaKey){if(!_)return;let f=_.getColumn(m);if(f?.resizable)n(m,f.width+10),o.preventDefault()}else if(m<L.length-1)ae(m+1),o.preventDefault();o.stopPropagation();return}if(d==="ArrowLeft"){if(o.ctrlKey||o.metaKey){if(!_)return;let f=_.getColumn(m);if(f?.resizable)n(m,f.width-10),o.preventDefault()}else if(m>0)ae(m-1),o.preventDefault();o.stopPropagation();return}if(d==="Home"){ae(0),o.preventDefault(),o.stopPropagation();return}if(d==="End"){ae(L.length-1),o.preventDefault(),o.stopPropagation();return}if(d==="Enter"||d===" "){if(!_)return;let f=_.getColumn(m);if(f?.def.sortable&&i){let S;if(X===f.def.key)S=c==="asc"?"desc":null;else S="asc";i({key:f.def.key,index:m,direction:S}),o.preventDefault()}o.stopPropagation();return}if(d==="ArrowDown"){t.focus(),o.preventDefault(),o.stopPropagation();return}};return y.addEventListener("pointerdown",V),y.addEventListener("click",re),y.addEventListener("keydown",ge),{element:y,update:F,updateSort:P,rebuild:B,show:()=>{if(Z)return;Z=!0,y.style.display=""},hide:()=>{if(!Z)return;Z=!1,y.style.display="none"},destroy:()=>{y.removeEventListener("pointerdown",V),y.removeEventListener("click",re),y.removeEventListener("keydown",ge),t.style.removeProperty("--vlist-table-header-height"),s.remove(),L=[],H=[],_=null,Z=!1},syncScroll:Y}};var Pt=()=>{let t=[];return{acquire:()=>t.pop()||document.createElement("div"),release:(e)=>{if(e.parentNode?.removeChild(e),t.length<200)e.className="",e.removeAttribute("data-id"),e.removeAttribute("data-index"),e.removeAttribute("aria-selected"),e.removeAttribute("aria-rowindex"),e.removeAttribute("role"),e.style.cssText="",e.textContent="",t.push(e)},clear:()=>{t.length=0}}},Tt=(t,e,r,n,i,a,s,y,D,L=()=>0)=>{let H=Pt(),Z=new Map,X=-1,c=r,_=null,I=null,x=null,l=(u,E)=>{I=u,x=E},v=(u,E)=>{E?u.setAttribute("aria-selected","true"):u.removeAttribute("aria-selected")},m=(u,E,N,G)=>{u.setAttribute("role",E),u.setAttribute("data-id",String(N)),u.setAttribute("data-index",String(G))},M=(u)=>String(u).startsWith("__placeholder_"),B=`${i}-item ${i}-table-row`,F=`${i}-item--selected`,P=`${i}-item--focused`,Y=`${i}-table-cell`,V=`${i}-table-cell--center`,j=`${i}-table-cell--right`,ee=`${i}-table-cell-skeleton`,re=`${i}-item--odd`,ae=`${i}-item--placeholder`,ge=`${i}-item--replaced`,de=`${i}-table-row ${i}-table-group-header`,J=`${i}-table-group-header-content`,p=(u,E,N,G,O=!1)=>{if(N.def.cell){let w=N.def.cell(E,N.def,G);if(typeof w==="string")u.innerHTML=w;else u.replaceChildren(w)}else{let w=E[N.def.key],R=w!=null?String(w):"";if(O&&R)u.innerHTML=`<span>${R}</span>`;else u.textContent=R}if(O&&u.firstElementChild===null){u.replaceChildren();let w=document.createElement("span");w.className=ee,u.appendChild(w)}},o=(u,E,N,G,O=!1)=>{let w=B;if(y){if(_){let R=_(E);if(R>=0&&(R&1)===1)w+=` ${re}`}else if((E&1)===1)w+=` ${re}`}if(O)w+=` ${ae}`;if(N)w+=` ${F}`;if(G)w+=` ${P}`;u.className=w},d=(u,E)=>{let N=E.def.align;if(N==="center")u.classList.add(V),u.classList.remove(j);else if(N==="right")u.classList.add(j),u.classList.remove(V);else u.classList.remove(V,j)},f=(u,E)=>{let G=c.columns.length;if(E.length===G)return E;let O=[];for(let w=0;w<G;w++){let R;if(w<E.length)R=E[w];else R=document.createElement("div"),R.className=Y,u.appendChild(R);O.push(R)}for(let w=G;w<E.length;w++)E[w].remove();return O},S=(u,E,N,G)=>{let O=H.acquire(),w=u,R=N.getSize(E),ie=N.getOffset(E)-G;O.style.cssText=`width:${c.totalWidth}px;height:${R}px;transform:translateY(${ie}px)`,O.className=de,m(O,"presentation",u.id,E),O.removeAttribute("aria-selected"),O.removeAttribute("aria-rowindex"),O.replaceChildren();let le=document.createElement("div");if(le.className=J,x){let ne=x(w.groupKey,w.groupIndex);if(typeof ne==="string")le.innerHTML=ne;else le.appendChild(ne)}return O.appendChild(le),{element:O,cells:[],index:E,isGroupHeader:!0,_lastItem:u,lastItemId:u.id,lastSelected:!1,lastFocused:!1,lastOffset:ie,lastHeight:R}},K=(u,E,N,G,O,w)=>{let R=H.acquire(),ie=O.getSize(E),le=O.getOffset(E)-w,ne=M(u.id);R.style.cssText=`width:${c.totalWidth}px;height:${ie}px;transform:translateY(${le}px)`,o(R,E,N,G,ne),m(R,"row",u.id,E),R.id=`${a}-item-${E}`,R.setAttribute("aria-rowindex",String(E+2)),v(R,N);let Ie=f(R,[]),C=c.columns;for(let k=0;k<Ie.length&&k<C.length;k++){let Q=Ie[k],te=C[k];Q.style.cssText=`left:${te.offset}px;width:${te.width}px`,Q.setAttribute("role","gridcell"),Q.setAttribute("aria-colindex",String(k+1)),d(Q,te),p(Q,u,te,E,ne)}return{element:R,cells:Ie,index:E,isGroupHeader:!1,_lastItem:u,lastItemId:u.id,lastSelected:N,lastFocused:G,lastOffset:le,lastHeight:ie}},W=(u,E,N,G,O=L())=>{let w=!1,R=s();if(R!==X)X=R,w=!0;let ie=null,le=e();_=typeof y==="string"&&D?D():null;for(let ne=E.start;ne<=E.end;ne++){let Ie=ne-E.start,C=u[Ie];if(!C)continue;let k=N.has(C.id),Q=ne===G,te=I?I(C):!1,q=Z.get(ne);if(q){if(q.isGroupHeader!==te){H.release(q.element),Z.delete(ne);let he=te?S(C,ne,le,O):K(C,ne,k,Q,le,O);if(Z.set(ne,he),!ie)ie=document.createDocumentFragment();ie.appendChild(he.element);continue}if(te){if(q._lastItem!==C){let se=C,ue=q.element.firstElementChild;if(ue&&x){let ye=x(se.groupKey,se.groupIndex);if(typeof ye==="string")ue.innerHTML=ye;else ue.replaceChildren(ye)}q.element.setAttribute("data-id",String(C.id)),q._lastItem=C,q.lastItemId=C.id}let be=le.getOffset(ne)-O;if(q.lastOffset!==be)q.lastOffset=be,q.element.style.transform=`translateY(${be}px)`;let xe=le.getSize(ne);if(q.lastHeight!==xe)q.lastHeight=xe,q.element.style.height=`${xe}px`}else{let he=q._lastItem!==C,be=q.lastSelected!==k,xe=q.lastFocused!==Q;if(he){let ye=q.lastItemId!=null&&M(q.lastItemId),Te=M(C.id);if(!Te&&we(N,ne,C.id))k=!0;let pe=c.columns;for(let me=0;me<q.cells.length&&me<pe.length;me++)p(q.cells[me],C,pe[me],ne,Te);if(o(q.element,ne,k,Q,Te),q.element.setAttribute("data-id",String(C.id)),v(q.element,k),ye&&!Te)q.element.classList.add(ge),setTimeout(()=>{q.element.classList.remove(ge)},300);q._lastItem=C,q.lastItemId=C.id,q.lastSelected=k,q.lastFocused=Q}else if(be||xe)o(q.element,ne,k,Q,M(C.id)),v(q.element,k),q.lastSelected=k,q.lastFocused=Q;let se=le.getOffset(ne)-O;if(q.lastOffset!==se)q.lastOffset=se,q.element.style.transform=`translateY(${se}px)`;let ue=le.getSize(ne);if(q.lastHeight!==ue)q.lastHeight=ue,q.element.style.height=`${ue}px`;if(w)q.element.setAttribute("aria-rowindex",String(ne+2))}}else{if(we(N,ne,C.id))k=!0;let he=te?S(C,ne,le,O):K(C,ne,k,Q,le,O);if(Z.set(ne,he),!ie)ie=document.createDocumentFragment();ie.appendChild(he.element)}}if(ie)t.appendChild(ie);for(let[ne,Ie]of Z)if(ne<E.start||ne>E.end)H.release(Ie.element),Z.delete(ne)},h=(u,E,N,G)=>{let O=Z.get(u);if(!O)return;if(O.isGroupHeader)return;let w=c.columns;for(let R=0;R<O.cells.length&&R<w.length;R++)p(O.cells[R],E,w[R],u);O.element.setAttribute("data-id",String(E.id)),O._lastItem=E,O.lastItemId=E.id,o(O.element,u,N,G),v(O.element,N),O.lastSelected=N,O.lastFocused=G},b=(u,E,N)=>{let G=Z.get(u);if(!G)return;if(G.isGroupHeader)return;let O=G.lastSelected!==E,w=G.lastFocused!==N;if(O||w)o(G.element,u,E,N),v(G.element,E),G.lastSelected=E,G.lastFocused=N},z=(u)=>{c=u;let E=u.columns;for(let[,N]of Z)if(N.element.style.width=`${u.totalWidth}px`,N.cells.length>0)for(let G=0;G<N.cells.length&&G<E.length;G++){let O=N.cells[G],w=E[G];O.style.left=`${w.offset}px`,O.style.width=`${w.width}px`}},U=(u)=>Z.get(u)?.element,T=()=>{for(let[,u]of Z)H.release(u.element);Z.clear(),X=-1};return{render:W,updateItem:h,updateItemClasses:b,getElement:U,updateColumnLayout:z,setGroupHeaderFn:l,clear:T,destroy:()=>{T(),H.clear()}}};var xt=(t)=>{let e=Math.max(1,Math.floor(t.columns)),r=t.gap??0,n=t.containerSize,i=t.crossOffset??0,a=t.mainOffset??0,s=0,y=[],D=()=>{let l=(e-1)*r;s=Math.max(0,(n-l)/e),y=Array(e);let v=s+r;for(let m=0;m<e;m++)y[m]=i+m*v};D();let L=[],H=0,Z=[],X=(l,v)=>{if(l<=0)return H=0,L=[],[];let m=Array(e).fill(a),M=Array(e);for(let P=0;P<e;P++)M[P]=[];let B=Array(l);for(let P=0;P<l;P++){let Y=0,V=m[0];for(let re=1;re<e;re++){let ae=m[re];if(ae<V)V=ae,Y=re}let j=v(P),ee=m[Y];B[P]={index:P,x:y[Y],y:ee,lane:Y,size:j,crossSize:s},M[Y].push(P),m[Y]=ee+j+r}L=M;let F=0;for(let P=0;P<e;P++){let Y=m[P],V=Y>0?Y-r:0;if(V>F)F=V}return H=F,B},c=(l)=>{if(l.length===0)return H;if(H)return H;let v=Array(e).fill(0);for(let M of l){let B=M.y+M.size,F=v[M.lane];if(B>F)v[M.lane]=B}let m=0;for(let M=0;M<e;M++)if(v[M]>m)m=v[M];return m},_=(l,v,m)=>{if(l.length===0||m<=v)return Z.length=0,Z;if(L.length===0||L.length!==e)return I(l,v,m);Z.length=0;for(let M=0;M<e;M++){let B=L[M],F=B.length;if(!F)continue;let P=0,Y=F;while(P<Y){let V=P+Y>>>1,j=l[B[V]];if(j.y+j.size<=v)P=V+1;else Y=V}for(let V=P;V<F;V++){let j=l[B[V]];if(j.y>=m)break;Z.push(j)}}return Z},I=(l,v,m)=>{Z.length=0;for(let M of l)if(M.y+M.size>v&&M.y<m)Z.push(M);return Z};return{get columns(){return e},get gap(){return r},get containerSize(){return n},update:(l)=>{let v=!1;if(l.columns!==void 0){let m=Math.max(1,Math.floor(l.columns));if(m!==e)e=m,v=!0}if(l.gap!==void 0&&l.gap!==r)r=l.gap,v=!0;if(l.containerSize!==void 0&&l.containerSize!==n)n=l.containerSize,v=!0;if(l.crossOffset!==void 0&&l.crossOffset!==i)i=l.crossOffset,v=!0;if(l.mainOffset!==void 0&&l.mainOffset!==a)a=l.mainOffset,v=!0;if(v)D()},calculateLayout:X,getTotalSize:c,getVisibleItems:_}};var Dt=(t=200)=>{let e=[];return{acquire:()=>{let a=e.pop();if(a)return a;let s=document.createElement("div");return s.setAttribute("role","option"),s},release:(a)=>{if(a.remove(),e.length<t)a.className="",a.textContent="",a.removeAttribute("style"),a.removeAttribute("data-index"),a.removeAttribute("data-id"),a.removeAttribute("data-lane"),e.push(a)},clear:()=>{e.length=0}}},$t=1,It=(t,e,r,n=!1,i,a,s,y,D=()=>0)=>{let L=Dt(),H=new Map,Z=new Set,X=0,c="",_=-1,I={selected:!1,focused:!1},x=(J,p)=>(I.selected=J,I.focused=p,I),l=`${r}-item ${r}-masonry-item`,v=`${r}-group-header`,m=`${r}-item--selected`,M=`${r}-item--focused`,B=(J,p)=>{if(typeof p==="string")J.innerHTML=p;else J.replaceChildren(p);ze(J)},F=(J,p,o)=>{J.classList.toggle(m,p),J.classList.toggle(M,o)},P=(J,p)=>{let o=Math.round(p.y-j);if(n)J.style.transform=`translate(${o}px, ${Math.round(p.x)}px)`;else J.style.transform=`translate(${Math.round(p.x)}px, ${o}px)`},Y=(J,p)=>{if(n)J.style.width=`${p.size}px`,J.style.height=`${p.crossSize}px`;else J.style.width=`${p.crossSize}px`,J.style.height=`${p.size}px`},V=(J,p,o,d,f)=>{let S=L.acquire(),K=p.__groupHeader,W=x(d,f);if(S.className=K?v:l,S.dataset.index=String(J),S.dataset.id=String(p.id),S.dataset.lane=String(o.lane),K)S.setAttribute("role","presentation"),S.removeAttribute("aria-selected"),S.removeAttribute("aria-setsize"),S.removeAttribute("aria-posinset"),S.removeAttribute("id");else if(y===!0){if(S.setAttribute("role","option"),S.ariaSelected=String(d),a)S.id=`${a}-item-${J}`;if(i){let b=i();if(b!==_)_=b,c=String(b);S.setAttribute("aria-setsize",c);let z=s?s(J):J+1;S.setAttribute("aria-posinset",String(z))}}else if(S.setAttribute("role","listitem"),S.removeAttribute("aria-selected"),i){let b=i();if(b!==_)_=b,c=String(b);S.setAttribute("aria-setsize",c);let z=s?s(J):J+1;S.setAttribute("aria-posinset",String(z))}Y(S,o);let h=e(p,J,W);return B(S,h),F(S,d,f),P(S,o),{element:S,lastItem:p,lastSelected:d,lastFocused:f,lastY:o.y-j,absY:o.y,lastX:o.x,lastSize:o.size,lastCrossSize:o.crossSize,lastSeenFrame:X}},j=0,ee=(J,p,o,d,f=D())=>{j=f,X++,Z.clear();for(let K=0;K<p.length;K++)Z.add(p[K].index);let S=null;for(let K=0;K<p.length;K++){let W=p[K],h=W.index,b=J(h);if(!b)continue;let z=o.has(b.id),U=h===d,T=H.get(h);if(T){let g=T.lastItem!==b,u=T.lastSelected!==z,E=T.lastFocused!==U,N=T.lastY!==W.y-j||T.lastX!==W.x,G=T.lastSize!==W.size||T.lastCrossSize!==W.crossSize;if(g){let O=x(z,U),w=e(b,h,O);if(B(T.element,w),T.element.dataset.id=String(b.id),T.lastItem=b,!b.__groupHeader){let ie=s?s(h):h+1;T.element.setAttribute("aria-posinset",String(ie))}}if(g||u||E)F(T.element,z,U),T.element.ariaSelected=String(z),T.lastSelected=z,T.lastFocused=U;if(G)Y(T.element,W),T.lastSize=W.size,T.lastCrossSize=W.crossSize;if(N)P(T.element,W),T.lastY=W.y-j,T.absY=W.y,T.lastX=W.x}else{let g=V(h,b,W,z,U);if(!S)S=document.createDocumentFragment();S.appendChild(g.element),H.set(h,g)}}if(S)t.appendChild(S);for(let[K,W]of H)if(Z.has(K))W.lastSeenFrame=X;else if(X-W.lastSeenFrame>$t)L.release(W.element),H.delete(K);else{let h=Math.round(W.absY-j);if(h!==W.lastY){W.lastY=h;let b=Math.round(W.lastX);W.element.style.transform=n?`translate(${h}px, ${b}px)`:`translate(${b}px, ${h}px)`}}},re=()=>{for(let J of H.values())L.release(J.element);H.clear(),t.innerHTML=""};return{render:ee,getElement:(J)=>H.get(J)?.element,updateItemClasses:(J,p,o)=>{let d=H.get(J);if(!d)return;let f=d.lastSelected!==p,S=d.lastFocused!==o;if(f||S)F(d.element,p,o),d.lastSelected=p,d.lastFocused=o},sortDOM:()=>{Ge(t,H.keys(),(J)=>H.get(J)?.element)},clear:re,destroy:()=>{re(),L.clear()}}};var zt=(t,e)=>{let r=e;return{getOffset:(n)=>n*t,getSize:(n)=>t,indexAtOffset:(n)=>{if(r===0||t===0)return 0;return Math.max(0,Math.min(Math.floor(n/t),r-1))},getTotalSize:()=>r*t,getTotal:()=>r,rebuild:(n)=>{r=n},isVariable:()=>!1}},Ot=(t,e)=>{let r=e,n=new Float64Array(0),i=(s)=>{r=s,n=new Float64Array(s+1),n[0]=0;for(let y=0;y<s;y++)n[y+1]=n[y]+t(y)};i(e);let a=(s)=>{if(r===0)return 0;if(s<=0)return 0;if(s>=n[r])return r-1;let y=0,D=r-1;while(y<D){let L=y+D+1>>>1;if(n[L]<=s)y=L;else D=L-1}return y};return{getOffset:(s)=>{if(s<=0)return 0;if(s>=r)return n[r];return n[s]},getSize:(s)=>t(s),indexAtOffset:(s)=>a(s),getTotalSize:()=>n[r]??0,getTotal:()=>r,rebuild:(s)=>i(s),isVariable:()=>!0}},Ct=(t,e)=>{if(typeof t==="number")return zt(t,e);return Ot(t,e)};var Lt=()=>{let t={},e=(a,s)=>{if(!t[a])t[a]=new Set;return t[a].add(s),()=>r(a,s)},r=(a,s)=>{t[a]?.delete(s)};return{on:e,off:r,emit:(a,s)=>{t[a]?.forEach((y)=>{try{y(s)}catch(D){console.error(`[vlist] Error in event handler for "${String(a)}":`,D)}})},clear:(a)=>{if(a)delete t[a];else for(let s in t)delete t[s]}}};var Ve=(t={})=>{let{chunkSize:e=100,maxCachedItems:r=5000,evictionBuffer:n=200,onEvict:i}=t,a=new Map,s=0,y=0,D=(p)=>{let o=a.get(p);if(!o)o={items:Array(e),count:0,lastAccess:Date.now()},a.set(p,o);else o.lastAccess=Date.now();return o},L=(p)=>Math.floor(p/e),H=(p)=>p%e,Z=()=>s,X=(p)=>{s=p},c=(p)=>{if(p<0||p>=s)return;let o=L(p),d=a.get(o);if(!d)return;return d.items[H(p)]},_=(p)=>{if(p<0||p>=s)return!1;let o=L(p),d=a.get(o);if(!d)return!1;return d.items[H(p)]!==void 0},I=(p,o)=>{let d=L(p),f=D(d),S=H(p),K=f.items[S]===void 0;if(f.items[S]=o,K)f.count++,y++;if(p>=s)s=p+1},x=(p,o)=>{for(let d=0;d<o.length;d++){let f=o[d];if(f!==void 0)I(p+d,f)}},l=(p,o)=>{if(p<0||p>s)return;let d=L(p),f=Array.from(a.keys()).filter((b)=>b>=d).sort((b,z)=>b-z),S=[];for(let b of f){let z=a.get(b),U=b*e;for(let T=0;T<e;T++){if(z.items[T]===void 0)continue;let g=U+T;if(g<p)continue;S.push({oldIndex:g,item:z.items[T]})}}for(let{oldIndex:b}of S){let z=L(b),U=a.get(z);if(!U)continue;let T=H(b);if(U.items[T]!==void 0){if(U.items[T]=void 0,U.count--,y--,U.count===0)a.delete(z)}}s++;for(let{oldIndex:b,item:z}of S){let U=b+1,T=L(U),g=D(T),u=H(U);g.items[u]=z,g.count++,y++}let K=L(p),W=D(K),h=H(p);W.items[h]=o,W.count++,y++},v=(p)=>{if(p<0||p>=s)return!1;let o=L(p),d=a.get(o),f=H(p);if(!(d!==void 0&&d.items[f]!==void 0))return!1;let K=o,W=Array.from(a.keys()).filter((b)=>b>=K).sort((b,z)=>b-z),h=[];for(let b of W){let z=a.get(b),U=b*e;for(let T=0;T<e;T++){if(z.items[T]===void 0)continue;let g=U+T;if(g<=p)continue;h.push({oldIndex:g,item:z.items[T]})}}if(d.items[f]=void 0,d.count--,y--,d.count===0)a.delete(o);for(let{oldIndex:b}of h){let z=L(b),U=a.get(z);if(!U)continue;let T=H(b);if(U.items[T]!==void 0){if(U.items[T]=void 0,U.count--,y--,U.count===0)a.delete(z)}}for(let{oldIndex:b,item:z}of h){let U=b-1,T=L(U),g=D(T),u=H(U);g.items[u]=z,g.count++,y++}return s--,!0},m=(p,o)=>{let d=[];for(let f=p;f<=o&&f<s;f++)d.push(c(f));return d},M=(p,o)=>{for(let d=p;d<=o&&d<s;d++)if(!_(d))return!1;return!0},B=()=>{let p=[],o=null,d=Array.from(a.keys()).sort((f,S)=>f-S);for(let f of d){let S=a.get(f);if(!S)continue;let K=f*e;for(let W=0;W<e;W++){let h=K+W;if(h>=s)break;if(S.items[W]!==void 0)if(o===null)o={start:h,end:h};else if(h===o.end+1)o.end=h;else p.push(o),o={start:h,end:h};else if(o!==null)p.push(o),o=null}}if(o!==null)p.push(o);return p},F=(p,o)=>{let d=[],f=null;for(let S=p;S<=o&&S<s;S++)if(!_(S))if(f===null)f={start:S,end:S};else f.end=S;else if(f!==null)d.push(f),f=null;if(f!==null)d.push(f);return d},P=(p)=>a.has(p),Y=(p)=>{let o=a.get(p);if(!o)return!1;let d=p*e,f=Math.min(e,s-d);return o.count>=f},V=(p)=>{let o=a.get(p);if(o)o.lastAccess=Date.now()},j=(p,o)=>{if(p>o||a.size===0)return;let d=Date.now(),f=L(Math.max(0,p)),S=L(Math.min(s-1,o));for(let K=f;K<=S;K++){let W=a.get(K);if(W)W.lastAccess=d}},ee=(p,o)=>{if(y<=r)return 0;let d=Math.max(0,p-n),f=Math.min(s-1,o+n),S=L(d),K=L(f),W=0,h=[];for(let[b,z]of a)if(b<S||b>K)W+=z.count,h.push(b),y-=z.count,a.delete(b);if(W>0&&i)i(W,h);return W},re=()=>{if(y<=r)return 0;let p=Array.from(a.entries()).sort(([,f],[,S])=>f.lastAccess-S.lastAccess),o=0,d=[];for(let[f,S]of p){if(y<=r)break;o+=S.count,y-=S.count,d.push(f),a.delete(f)}if(o>0&&i)i(o,d);return o},ae=()=>({totalItems:s,cachedItems:y,cachedChunks:a.size,chunkSize:e,maxCachedItems:r,memoryEfficiency:s>0?1-y/s:1}),ge=()=>y,de=()=>{a.clear(),y=0};return{chunkSize:e,maxCachedItems:r,getTotal:Z,setTotal:X,get:c,has:_,set:I,setRange:x,insert:l,delete:v,getRange:m,isRangeLoaded:M,getLoadedRanges:B,findUnloadedRanges:F,getChunkIndex:L,isChunkLoaded:P,isChunkFullyLoaded:Y,touchChunk:V,touchChunksForRange:j,evictDistant:ee,evictToLimit:re,getStats:ae,getCachedCount:ge,clear:de,reset:()=>{de(),s=0}}},Ne=(t)=>{if(t.length===0)return[];let e=[...t].sort((n,i)=>n.start-i.start),r=[{...e[0]}];for(let n=1;n<e.length;n++){let i=e[n],a=r[r.length-1];if(i.start<=a.end+1)a.end=Math.max(a.end,i.end);else r.push({...i})}return r},Xe=(t,e,r)=>{let n=Math.floor(t.start/r)*r,i=Math.ceil((t.end+1)/r)*r-1,a={start:n,end:i};if(e.length===0)return[a];let s=[],y=Ne(e),D=a.start;for(let L of y){if(L.end<D)continue;if(L.start>a.end)break;if(L.start>D)s.push({start:D,end:Math.min(L.start-1,a.end)});if(D=L.end+1,D>a.end)break}if(D<=a.end)s.push({start:D,end:a.end});return s};var Be=(t={})=>{let{maskCharacter:e=ut,maxSampleSize:r=dt}=t,n=[],i=!1,a=(H)=>{if(i||H.length===0)return;let Z=Math.min(H.length,r);for(let X=0;X<Z;X++){let c=H[X];if(!c||typeof c!=="object")continue;let _={},I=!1;for(let[x,l]of Object.entries(c)){if(x.startsWith("_")||x==="id")continue;_[x]=String(l??"").length,I=!0}if(I)n.push(_)}i=!0},s=()=>i,y=(H)=>{let Z={id:`${Ae}${H}`,[Ye]:!0,_index:H};if(n.length===0)return Z.label=e.repeat(12),Z;let X=n[H%n.length];for(let[c,_]of Object.entries(X))Z[c]=e.repeat(Math.max(1,_));return Z};return{analyzeStructure:a,hasAnalyzedStructure:s,generate:y,generateRange:(H,Z)=>{let X=[];for(let c=H;c<=Z;c++)X.push(y(c));return X},clear:()=>{n=[],i=!1}}},Re=(t)=>{if(!t||typeof t!=="object")return!1;return t[Ye]===!0},je=(t)=>t.filter((e)=>!Re(e));var Ft=50,Et=(t={})=>{let{adapter:e,initialItems:r,initialTotal:n,storage:i,placeholder:a,pageSize:s=Ft,maxConcurrent:y=0,onStateChange:D,onDataChange:L,onItemsLoaded:H,onItemsEvicted:Z,onLoadError:X}=t,c=Ve({...i,onEvict:(C,k)=>{Z?.(C),ee(),j()}}),_=null,I=()=>{if(!_)_=Be(a);return _},x=new Map,l=!1,v,m=!0,M,B,F=[],P=0,Y=new Map,V=()=>{for(let C of Y.values())C[1].abort();Y.clear()},j=()=>{D?.(f())},ee=()=>{L?.()},re=()=>{x.clear();let C=c.getLoadedRanges();for(let k of C)for(let Q=k.start;Q<=k.end;Q++){let te=c.get(Q);if(te&&!Re(te))x.set(te.id,Q)}},ae=(C,k)=>{if(!Re(k))x.set(k.id,C)},ge=(C)=>{x.delete(C)},de=(C,k)=>`${C}-${k}`,J=()=>c.getTotal(),p=()=>c.getCachedCount(),o=()=>l,d=()=>m,f=()=>({total:c.getTotal(),cached:c.getCachedCount(),isLoading:l,pendingRanges:F,error:v,hasMore:m,cursor:M}),S=()=>c,K=()=>I(),W=(C)=>{let k=c.get(C);if(k!==void 0)return k;if(C>=0&&C<c.getTotal())return I().generate(C);return},h=(C)=>{let k=x.get(C);if(k===void 0)return;return c.get(k)},b=(C)=>x.get(C)??-1,z=(C)=>{let k=c.get(C);return k!==void 0&&!Re(k)},U=(C,k)=>{let Q=[],te=c.getTotal();c.touchChunksForRange(C,Math.min(k,te-1));for(let q=C;q<=k&&q<te;q++){let he=c.get(q);if(he!==void 0)Q.push(he);else Q.push(I().generate(q))}return Q},T=(C)=>{c.setTotal(C),m=c.getCachedCount()<C,ee(),j()},g=(C,k=0,Q)=>{if(e&&C.length>0){let te=I();if(!te.hasAnalyzedStructure())te.analyzeStructure(C)}for(let te=0;te<C.length;te++){let q=C[te];if(q!==void 0){let he=k+te;c.set(he,q),ae(he,q)}}if(Q!==void 0)c.setTotal(Q);else if(k+C.length>c.getTotal())c.setTotal(k+C.length);if(c.getCachedCount()>=c.getTotal()&&c.getTotal()>0)m=!1;ee(),j(),H?.(C,k,c.getTotal())},u=(C,k)=>{let Q=c.get(C);if(!Q)return!1;let te=Q.id,q={...Q,...k};if(c.set(C,q),k.id!==void 0&&k.id!==te)ge(te);return ae(C,q),ee(),j(),!0},E=(C,k)=>{c.insert(k,C),re(),V(),ee(),j()},N=(C)=>{let k=x.get(C);if(k===void 0)return!1;if(!c.delete(k))return!1;return re(),V(),ee(),j(),!0},G=async(C,k)=>{if(!e)return;let Q=c.chunkSize,te=Math.floor(C/Q),q=Math.floor(k/Q),he=Q*2;for(let[se,ue]of Y){let ye=se.indexOf("-"),Te=parseInt(se.slice(0,ye),10);if(Math.abs(Te-C)>he)ue[1].abort(),Y.delete(se)}let be=[],xe=[];for(let se=te;se<=q;se++){let ue=se*Q,ye=ue+Q-1,Te=de(ue,ye);if(c.isChunkFullyLoaded(se))continue;let me=Y.get(Te);if(me)xe.push(me[0]);else be.push({start:ue,end:ye})}if(be.length===0){if(xe.length>0)await Promise.all(xe);return}if(y>0){let se=Y.size+be.length;if(se>y){let ue=(C+k)/2,ye=Math.min(se-y,Y.size);while(ye>0){let pe=null,me=-1,ve=null;for(let[Le,We]of Y){let _e=Le.indexOf("-"),Pe=parseInt(Le.slice(0,_e),10),De=parseInt(Le.slice(_e+1),10),Ee=Math.abs((Pe+De)/2-ue);if(Ee>me)me=Ee,pe=Le,ve=We[1]}if(pe)ve.abort(),Y.delete(pe);ye--}let Te=y-Y.size;if(be.length>Te)be.sort((pe,me)=>{let ve=Math.abs((pe.start+pe.end)/2-ue),Le=Math.abs((me.start+me.end)/2-ue);return ve-Le}),be.length=Math.max(0,Te)}}if(be.length===0){if(xe.length>0)await Promise.all(xe);return}for(let se of be){let ue=de(se.start,se.end),ye=new AbortController,Te=(async()=>{F.push(se),l=!0,v=void 0,j();try{let pe=se.end-se.start+1,me={offset:se.start,limit:pe,cursor:se.start===B?M:void 0,signal:ye.signal},ve=await e.read(me);if(g(ve.items,se.start,ve.total),ve.cursor)M=ve.cursor,B=se.start+ve.items.length;let Le=se.start+ve.items.length;if(Le>=P){if(P=Le,ve.hasMore!==void 0)m=ve.hasMore;else if(ve.total!==void 0)m=Le<ve.total}}catch(pe){if(pe?.name==="AbortError")return;v=pe instanceof Error?pe:Error(String(pe)),X?.(v,se)}finally{Y.delete(ue);let pe=F.findIndex((me)=>me.start===se.start&&me.end===se.end);if(pe>=0)F.splice(pe,1);l=Y.size>0,j()}})();Y.set(ue,[Te,ye]),xe.push(Te)}await Promise.all(xe)},O=async(C,k)=>{if(c.isRangeLoaded(C,k))return;await G(C,k)},w=async()=>{if(!e)return;await G(0,s-1)},R=async()=>{if(!e||l||!m)return!1;let C=c.getCachedCount(),k=c.getTotal(),Q=C,te=Math.min(Q+s-1,k>0?k-1:Q+s-1);if(Q>=k&&k>0)return m=!1,!1;return await G(Q,te),c.getCachedCount()>C},ie=async()=>{if(c.clear(),x.clear(),_)_.clear();V(),F=[],l=!1,M=void 0,B=void 0,m=!0,P=0,v=void 0,ee(),j()},le=(C,k)=>{if(c.evictDistant(C,k)>0)re()},ne=()=>{c.clear(),x.clear(),M=void 0,B=void 0,v=void 0,F=[],l=!1,ee(),j()},Ie=()=>{if(c.reset(),x.clear(),_)_.clear();M=void 0,B=void 0,m=!0,P=0,v=void 0,F=[],l=!1,ee(),j()};if(r&&r.length>0)g(r,0,n??r.length);else if(n!==void 0)c.setTotal(n),ee(),j();return{getState:f,getTotal:J,getCached:p,getIsLoading:o,getHasMore:d,getStorage:S,getPlaceholders:K,getItem:W,getItemById:h,getIndexById:b,isItemLoaded:z,getItemsInRange:U,setTotal:T,setItems:g,updateItem:u,insertItem:E,removeItem:N,loadRange:G,ensureRange:O,loadInitial:w,loadMore:R,reload:ie,evictDistant:le,clear:ne,reset:Ie}};var Vt=0,Nt=1000,Bt=15,Wt=!0,Kt=16,Ut=!0,ke=2,Yt="scroll",Zt=350,qt=12,Xt=(t)=>{if(typeof t!=="object"){let e=t??ke;return{top:e,right:e,bottom:e,left:e}}return{top:t.top??ke,right:t.right??ke,bottom:t.bottom??ke,left:t.left??ke}},Mt=(t,e,r={},n="vlist",i=!1,a,s,y)=>{let D=navigator.userAgentData?.platform||navigator.platform+navigator.userAgent,L=r.platform?r.platform==="windows":!/Mac|Android/i.test(D),{autoHide:H=!L,autoHideDelay:Z=Nt,minThumbSize:X=Bt,showOnHover:c=Wt,showOnViewportEnter:_=Ut,clickBehavior:I=Yt}=r,x=I==="page"?"scroll":I,l=a??t,v=Xt(r.padding),m=i?v.left:v.top,M=i?v.right:v.bottom,B=i?v.bottom:v.right,F=r.hoverZoneWidth??B+Kt,P=!0,Y=0,V=0,j=0,ee=0,re=!1,ae=!1,ge=0,de=0,J=0,p=null,o=!1,d=null,f=null,S=-1,K=-1,W=-1,h=-1,b=-1,z=t.id?"":(()=>{let A;do A=`${n}-scrollport-${++Vt}`;while(document.getElementById(A));return t.id=A,A})(),U=0,T=0,g=null,u=null,E=null,N=i?"width":"height",G=i?"translateX":"translateY",O=i?(A)=>A.clientX:(A)=>A.clientY,w=i?"left":"top",R=document.createElement("div"),ie=document.createElement("div"),le=document.createElement("div"),ne=i?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",Ie=()=>{if(l===t)return;let A=t.offsetTop;R.style[i?"left":"top"]=A?`calc(var(${ne}) + ${A}px)`:`var(${ne})`,le.style[i?"left":"top"]=`${A}px`},C=()=>{if(R.className=`${n}-scrollbar`,R.setAttribute("role","scrollbar"),R.setAttribute("aria-controls",t.id),R.setAttribute("aria-orientation",i?"horizontal":"vertical"),R.setAttribute("aria-label",t.getAttribute("aria-label")||"Scroll"),R.setAttribute("aria-valuemin","0"),R.tabIndex=0,ie.className=`${n}-scrollbar__thumb`,i)R.classList.add(`${n}-scrollbar--horizontal`);if(r.padding!==void 0)l.style.setProperty("--vlist-custom-scrollbar-padding-top",`${v.top}px`),l.style.setProperty("--vlist-custom-scrollbar-padding-right",`${v.right}px`),l.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${v.bottom}px`),l.style.setProperty("--vlist-custom-scrollbar-padding-left",`${v.left}px`);if(r.minThumbSize!==void 0)R.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${X}px`);if(R.appendChild(ie),l.appendChild(R),le.className=`${n}-scrollbar__hover`,i)le.classList.add(`${n}-scrollbar__hover--horizontal`),le.style.height=`${F}px`;else le.style.width=`${F}px`;if(l.appendChild(le),l!==t)Ie()},k=()=>{if(p)clearTimeout(p),p=null},Q=()=>{if(!H)return;k(),p=setTimeout(q,Z)},te=()=>{if(!P||Y<=V)return;if(k(),!o)R.classList.add(`${n}-scrollbar--visible`),o=!0;if(H&&!re&&!ae&&document.activeElement!==R)Q()},q=()=>{if(re||ae||document.activeElement===R)return;R.classList.remove(`${n}-scrollbar--visible`),o=!1},he=(A,oe)=>{if(Y=A,V=oe,Ie(),be(J),!P||Y<=V){R.style.display="none",R.classList.remove(`${n}-scrollbar--visible`),o=!1;return}R.style.display="";let ce=Math.max(0,V-m-M),fe=V/Y;if(j=Math.max(X,fe*ce),ie.style[N]=`${j}px`,ee=ce-j,be(J),!H)te()},be=(A)=>{let oe=Math.max(0,Y-V);if(J=Math.max(0,Math.min(A,oe)),S!==oe)S=oe,R.setAttribute("aria-valuemax",String(oe));if(K!==J)K=J,R.setAttribute("aria-valuenow",String(J));let ce=s?.(),fe=ce?.getTotal()??0,Se=fe?ce.indexAtOffset(J)+1:0;if(Se!==W||fe!==h)W=Se,h=fe,R.setAttribute("aria-valuetext",`Row ${Se} of ${fe}`);if(oe<=0||ee<=0)return;let Me=J/oe*ee;if(Me!==b)b=Me,ie.style.transform=`${G}(${Me}px)`},xe=(A)=>{if(!P||A.target!==R||document.activeElement!==R)return;if(A.stopPropagation(),A.altKey||A.ctrlKey||A.metaKey)return;let oe=s?.(),ce=oe?.getSize(oe.indexAtOffset(J))??40,fe=J;switch(A.key){case(i?"ArrowLeft":"ArrowUp"):fe-=ce;break;case(i?"ArrowRight":"ArrowDown"):fe+=ce;break;case"PageUp":fe-=V;break;case"PageDown":fe+=V;break;case"Home":fe=0;break;case"End":fe=Y;break;default:return}A.preventDefault(),e(Math.max(0,Math.min(fe,Math.max(0,Y-V)))),te()},se=(A)=>{if(A.target===ie||x!=="jump"||ee<=0)return;let oe=Y-V,ce=R.getBoundingClientRect(),fe=O(A)-ce[w],Se=Math.max(0,Math.min(fe-j/2,ee));e(Se/ee*oe),te()},ue=()=>{if(g!==null)clearTimeout(g),g=null;if(u!==null)cancelAnimationFrame(u),u=null;E=null},ye=(A)=>{let oe=ee>0?T/A*ee:0;if(U<oe)return-1;if(U>=oe+j)return 1;return 0},Te=()=>{let A=Y-V,oe=ye(A);if(oe===0){ue();return}if(oe===-1){if(T<=0){ue();return}let ce=Math.max(0,T-V);T=ce,e(ce)}else{if(T>=A){ue();return}let ce=Math.min(A,T+V);T=ce,e(ce)}te()},pe=(A)=>{if(E===null){E=A,u=requestAnimationFrame(pe);return}let oe=Y-V,ce=A-E;E=A;let fe=ye(oe);if(fe===0){ue();return}let Se=qt*V/1000,Me=Math.min(Se*ce,V);if(fe===-1){if(T<=0){ue();return}let He=Math.max(0,T-Me);T=He,e(He)}else{if(T>=oe){ue();return}let He=Math.min(oe,T+Me);T=He,e(He)}k(),u=requestAnimationFrame(pe)},me=(A)=>{if(A&&A.pointerId!==d)return;let oe=d,ce=f;if(d=null,f=null,re=!1,R.classList.remove(`${n}-scrollbar--dragging`),ue(),oe!==null&&ce?.hasPointerCapture(oe))ce.releasePointerCapture(oe);Q()},ve=(A)=>{if(!P||A.button!==0||d!==null||ee<=0)return;if(A.preventDefault(),A.stopPropagation(),d=A.pointerId,re=A.target===ie,f=re?ie:A.currentTarget,f.setPointerCapture(d),k(),re)ge=O(A),de=J,R.classList.add(`${n}-scrollbar--dragging`);else if(x==="jump")se(A);else U=O(A)-R.getBoundingClientRect()[w],T=J,Te(),g=setTimeout(()=>{u=requestAnimationFrame(pe)},Zt);te()},Le=(A)=>{if(!re||A.pointerId!==d)return;A.stopPropagation();let oe=O(A)-ge,ce=Math.max(0,Y-V),fe=Math.max(0,Math.min(de+oe/ee*ce,ce));be(fe),e(fe)},We=()=>{if(_)te()},_e=()=>{if(!re){if(ae=!1,H)Q()}},Pe=()=>{ae=!0,k(),te()},De=()=>{if(ae=!1,!re&&H)Q()},Ee=["width","radius","thumb-color","track-color"],Ke=(A,oe)=>l.style.setProperty(`--vlist-custom-scrollbar-${A}`,oe),$e=Ee.map((A)=>l.style.getPropertyValue(`--vlist-custom-scrollbar-${A}`)),Je=$e.slice(0,2),Qe=[],et=()=>{for(let Se=0;Se<2;Se++){let Me=Ee[Se],He=l.style.getPropertyValue(`--vlist-custom-scrollbar-${Me}`);if(He!==Qe[Se])Je[Se]=He;Ke(Me,Je[Se])}let A=getComputedStyle(y??l),oe=r.width??A.getPropertyValue("scrollbar-width"),ce=A.getPropertyValue("scrollbar-color").match(/[\w-]+\([^)]*\)|\S+/g);P=r.enabled!==!1&&oe!=="none";let fe=[typeof r.width==="number"?`${r.width}px`:A.getPropertyValue("--vlist-custom-scrollbar-width").trim()||(oe==="thin"||!L?"6px":"14px"),typeof r.radius==="number"?`${r.radius}px`:A.getPropertyValue("--vlist-custom-scrollbar-radius").trim()||(L?"0px":"4px"),r.thumbColor??(ce?.length===2?ce[0]:$e[2]),r.trackColor??(ce?.length===2?ce[1]:$e[3])];for(let Se=0;Se<Ee.length;Se++)Ke(Ee[Se],fe[Se]);if(Qe=fe.slice(0,2),le.style.display=P?"":"none",t.classList.toggle(`${n}-viewport--gutter`,P&&!!r.gutter),!P)me();he(Y,V)},At=()=>{k(),ue(),me(),k();for(let A of tt)A();for(let A=0;A<Ee.length;A++)Ke(Ee[A],$e[A]);if(t.classList.remove(`${n}-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"),R.remove(),z&&t.id===z)t.removeAttribute("id")};C();let tt=[],Ce=(A,oe,ce)=>{A.addEventListener(oe,ce),tt.push(()=>A.removeEventListener(oe,ce))};for(let A of[R,ie,le])Ce(A,"pointerdown",ve),Ce(A,"pointermove",Le),Ce(A,"pointerup",me),Ce(A,"pointercancel",me),Ce(A,"lostpointercapture",me);if(Ce(R,"keydown",xe),Ce(R,"focus",te),Ce(R,"blur",Q),Ce(t,"mouseenter",We),Ce(t,"mouseleave",_e),Ce(R,"mouseenter",Pe),Ce(R,"mouseleave",De),c)Ce(le,"mouseenter",Pe),Ce(le,"mouseleave",De);return et(),{refresh:et,show:te,hide:q,updateBounds:he,updatePosition:be,isVisible:()=>o,destroy:At}};var jt=50,Jt=0.1;function Qt(t){let e=0,r=0,n=0;function i(){return n>0?r/n:0}function a(D){if(e=D,D>Jt&&D<jt)r+=D,n++}function s(){let D=t.getTotal();if(D===0)return 0;let L=t.getItemSize();if(L<=0)return 0;let H=t.getContainerSize();if(H<=0)return 0;let Z=t.getScrollPosition(),X=typeof t.getColumns==="function"?t.getColumns():1,_=Math.ceil(D/X)*L,x=Math.min(_,ct)-H,l=_-H,v=x>0?l/x:1,m=Z*v,M=Math.ceil((m+H)/L);return Math.min(M*X,D)}function y(){let D=t.getTotal(),L=s();return{progress:D>0?Math.min(100,Math.max(0,L/D*100)):0,velocity:e,velocityAvg:i(),itemCount:L,total:D}}return{getState:y,onVelocity:a}}export{ot as buildLayoutItems,Xe as calculateMissingRanges,gt as clearSelection,Et as createAsyncManager,Lt as createEmitter,lt as createGridLayout,kt as createGridRenderer,at as createGroupLayout,st as createGroupedSizeFn,xt as createMasonryLayout,It as createMasonryRenderer,Be as createPlaceholderManager,Mt as createScrollbar,mt as createSelectionState,Ct as createSizeCache,Ve as createSparseStorage,Qt as createStats,it as createStickyHeader,vt as createTableHeader,St as createTableLayout,Tt as createTableRenderer,qe as deselectItems,je as filterPlaceholders,ht as getSelectedIds,yt as getSelectedItems,Oe as isGroupHeader,Re as isPlaceholderItem,bt as isSelected,Ne as mergeRanges,pt as selectAll,Ze as selectItems,ft as toggleSelection};
|
package/dist/native.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CreateVListConfig, VList, VListPlugin } from "./core/types";
|
|
2
|
+
import type { ScrollConfig, VListItem } from "./types";
|
|
3
|
+
/** Native scrollbar visibility is available only with this entry. */
|
|
4
|
+
export interface NativeScrollConfig extends Omit<ScrollConfig, "scrollbar"> {
|
|
5
|
+
scrollbar?: ScrollConfig["scrollbar"] | "native" | "none";
|
|
6
|
+
}
|
|
7
|
+
export interface NativeCreateVListConfig<T extends VListItem = VListItem> extends Omit<CreateVListConfig<T>, "scroll"> {
|
|
8
|
+
scroll?: NativeScrollConfig;
|
|
9
|
+
}
|
|
10
|
+
export declare function createVList<T extends VListItem = VListItem>(config: NativeCreateVListConfig<T>, plugins?: VListPlugin<T>[]): VList<T>;
|
|
11
|
+
//# sourceMappingURL=native.d.ts.map
|
package/dist/native.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var ye=3,ut="vlist";var We=16000000,se=150,pe=1,Te=(e)=>e<0.5?2*e*e:1-(-2*e+2)**2/2,mt=300,ft=2,bt=0.25,pt=0.75;var Le="__placeholder_";function Ie(e){let{state:t,viewport:o,isX:r,onFrame:l,onIdle:c}=e,i=e.idleTimeout||se,d=null,S=null;function E(T=r?o.scrollLeft:o.scrollTop){t.prevScrollPosition=t.scrollPosition,t.scrollPosition=T,t.scrollDirection=T>t.prevScrollPosition?1:T<t.prevScrollPosition?-1:0,l(),y()}function y(){if(d!==null)clearTimeout(d);d=setTimeout(()=>{d=null,t.scrollDirection=0,c()},i)}function h(){if(S!==null)cancelAnimationFrame(S),S=null}function p(T,z,V,m=Te,O){h();let f=t.scrollPosition,M=typeof T==="function"?T:()=>T,C=M();if(Math.abs(C-f)<1){if(V)V(C);else if(r)o.scrollLeft=C;else o.scrollTop=C;O?.();return}let a=performance.now();function g(R){C=M();let L=R-a,w=Math.min(L/z,1),v=f+(C-f)*m(w);if(V)V(v);else if(r)o.scrollLeft=v;else o.scrollTop=v;if(!V)E(v);if(w<1)S=requestAnimationFrame(g);else S=null,O?.()}S=requestAnimationFrame(g)}return{attach(){},detach(){if(h(),d!==null)clearTimeout(d),d=null},cancelScroll:h,smoothScrollTo:p,commitScroll:E}}function vt(e){let{state:t,viewport:o,isX:r,wheelEnabled:l}=e,c=e.scrollTarget??o,i=Ie(e),d=i.commitScroll;function S(){let y=r?o.scrollLeft:o.scrollTop;if(Math.abs(y-t.scrollPosition)<0.5)return;d(y)}function E(y){let h;if(r){if(Math.abs(y.deltaX)>Math.abs(y.deltaY))return;let p=o.scrollLeft,T=o.scrollWidth-o.clientWidth;if(h=Math.max(0,Math.min(p+y.deltaY*pe,T)),Math.abs(h-p)<1)return;y.preventDefault(),o.scrollLeft=h}else{let p=o.scrollWidth>o.clientWidth;if(p&&Math.abs(y.deltaX)>Math.abs(y.deltaY))return;if(p&&y.deltaX!==0)y.preventDefault(),o.scrollLeft+=y.deltaX;let T=o.scrollTop,z=o.scrollHeight-o.clientHeight;if(h=Math.max(0,Math.min(T+y.deltaY*pe,z)),Math.abs(h-T)<1)return;y.preventDefault(),o.scrollTop=h}d(h)}return{...i,attach(){if(c.addEventListener("scroll",S,{passive:!0}),l)c.addEventListener("wheel",E,{passive:!1})},detach(){if(c.removeEventListener("scroll",S),l)c.removeEventListener("wheel",E);i.detach()}}}function ae(e,t,o){if(e<t)return t;if(e>o)return o;return e}function gt(e){let{state:t,viewport:o,content:r,isX:l,wheelEnabled:c,onFrame:i,onIdle:d,mainAxisPadding:S}=e,E=e.idleTimeout||se,y=e.runwayFactor??ft,h=e.wrap??null,p=h!==null,T=e.scrollTarget??o,z=0,V=0,m=0,O=null,f=null;function M(){return l?o.scrollLeft:o.scrollTop}function C(b){if(l)o.scrollLeft=b;else o.scrollTop=b}function a(b){let x=p?b:ae(b,0,V);t.prevScrollPosition=t.scrollPosition,t.scrollPosition=x,t.scrollDirection=x>t.prevScrollPosition?1:x<t.prevScrollPosition?-1:0;let A=z/2;if(p){t.baseOffset=x-A,C(A);return}let P=ae(x-A,0,m);t.baseOffset=P,C(ae(x-P,0,z))}function g(b){a(b),i(),B()}function R(){let b=M(),x=t.baseOffset+b;if(Math.abs(x-t.scrollPosition)<0.5)return;if(t.prevScrollPosition=t.scrollPosition,t.scrollPosition=x,t.scrollDirection=x>t.prevScrollPosition?1:x<t.prevScrollPosition?-1:0,L(b),p)w();i(),B()}function L(b){let x=z*bt,A=z*pt,P=z/2;if(p){if(b>=x&&b<=A)return;t.baseOffset=t.scrollPosition-P,C(P);return}if(m<=0)return;let H=t.baseOffset,X=b<x&&H>0,Z=b>A&&H<m;if(!X&&!Z)return;let K=t.scrollPosition,W=ae(K-P,0,m);if(W===H)return;t.baseOffset=W,C(ae(K-W,0,z))}function w(){let b=h.lapSize();if(b<=0)return;let x=t.scrollPosition-h.home(),A=Math.trunc(x/b);if(Math.abs(A)<h.thresholdLaps)return;let P=A*b;t.scrollPosition-=P,t.prevScrollPosition-=P,t.baseOffset-=P}function v(b){let x;if(l)if(Math.abs(b.deltaX)>Math.abs(b.deltaY)){if(!p)return;x=b.deltaX}else x=b.deltaY;else{let X=o.scrollWidth>o.clientWidth;if(X&&Math.abs(b.deltaX)>Math.abs(b.deltaY))return;if(X&&b.deltaX!==0)b.preventDefault(),o.scrollLeft+=b.deltaX;x=b.deltaY}let A=t.scrollPosition,P=A+x*pe,H=p?P:ae(P,0,V);if(Math.abs(H-A)<1)return;if(b.preventDefault(),g(H),p)w()}function B(){if(O!==null)clearTimeout(O);O=setTimeout(()=>{O=null,t.scrollDirection=0,d()},E)}function k(){if(f!==null)cancelAnimationFrame(f),f=null}function D(b,x,A,P=Te,H){k();let X=t.scrollPosition,Z=typeof b==="function"?b:()=>b,K=Z();if(Math.abs(K-X)<1){g(K),H?.();return}let W=performance.now();function j(ge){K=Z();let oe=Math.min((ge-W)/x,1);if(a(X+(K-X)*P(oe)),i(),oe<1)f=requestAnimationFrame(j);else f=null,B(),H?.()}f=requestAnimationFrame(j)}function N(b){let x=t.containerSize,A=b+S,P=x*y,H=p?P:Math.min(A,P);z=Math.max(0,H-x),V=Math.max(0,A-x),m=Math.max(0,A-H),t.totalSize=b,r.style[l?"width":"height"]=H+"px",a(t.scrollPosition)}return{attach(){if(T.addEventListener("scroll",R,{passive:!0}),c)T.addEventListener("wheel",v,{passive:!1})},detach(){if(T.removeEventListener("scroll",R),c)T.removeEventListener("wheel",v);if(k(),O!==null)clearTimeout(O),O=null},cancelScroll:k,smoothScrollTo:D,setLogical:g,getLogical(){return t.scrollPosition},getMaxLogical(){return V},refresh:N}}var Ce={top:0,right:0,bottom:0,left:0},St=(e)=>{if(e==null)return Ce;if(typeof e==="number")return e===0?Ce:{top:e,right:e,bottom:e,left:e};if(e.length===2){let[c,i]=e;return c===0&&i===0?Ce:{top:c,right:i,bottom:c,left:i}}let[t,o,r,l]=e;return t===0&&o===0&&r===0&&l===0?Ce:{top:t,right:o,bottom:r,left:l}},ht=(e,t)=>t?e.left+e.right:e.top+e.bottom,xt=(e,t)=>t?e.top+e.bottom:e.left+e.right;function Et(e){let t={visibleIndices:new Int32Array(e),visibleOffsets:new Float64Array(e),visibleSizes:new Float64Array(e),visibleCount:0,startIndex:0,totalSize:0,capacity:e,scrollPosition:0,prevScrollPosition:0,scrollDirection:0,baseOffset:0,prevBaseOffset:0,containerSize:0,crossSize:0,totalItems:0,prevRangeStart:0,prevRangeEnd:-1,renderPending:!1,initialized:!1,destroyed:!1,prevAriaTotal:-1,resizeCapacity(o,r,l=ye){if(r<=0||o<=0)return;let c=Math.ceil(o/r)+l*2;if(c<=t.capacity)return;let i=c+8,d=new Int32Array(i),S=new Float64Array(i),E=new Float64Array(i);d.set(t.visibleIndices),S.set(t.visibleOffsets),E.set(t.visibleSizes),t.visibleIndices=d,t.visibleOffsets=S,t.visibleSizes=E,t.capacity=i},clear(){t.visibleCount=0,t.startIndex=0}};return t}var Dt=(e,t)=>{let o=t;return{getOffset:(r)=>r*e,getSize:(r)=>e,indexAtOffset:(r)=>{if(o===0||e===0)return 0;return Math.max(0,Math.min(Math.floor(r/e),o-1))},getTotalSize:()=>o*e,getTotal:()=>o,rebuild:(r)=>{o=r},isVariable:()=>!1}},kt=(e,t)=>{let o=t,r=new Float64Array(0),l=(i)=>{o=i,r=new Float64Array(i+1),r[0]=0;for(let d=0;d<i;d++)r[d+1]=r[d]+e(d)};l(t);let c=(i)=>{if(o===0)return 0;if(i<=0)return 0;if(i>=r[o])return o-1;let d=0,S=o-1;while(d<S){let E=d+S+1>>>1;if(r[E]<=i)d=E;else S=E-1}return d};return{getOffset:(i)=>{if(i<=0)return 0;if(i>=o)return r[o];return r[i]},getSize:(i)=>e(i),indexAtOffset:(i)=>c(i),getTotalSize:()=>r[o]??0,getTotal:()=>o,rebuild:(i)=>l(i),isVariable:()=>!0}},Pe=(e,t)=>{if(typeof e==="number")return Dt(e,t);return kt(e,t)};function yt(e){let t=[],o=`${e}-item`,r=document.createElement("div");return r.className=o,{acquire(){if(t.length>0)return t.pop();return r.cloneNode(!1)},release(l){if(l.className=o,l.removeAttribute("style"),l.removeAttribute("id"),l.removeAttribute("role"),l.removeAttribute("aria-selected"),l.removeAttribute("aria-posinset"),l.removeAttribute("aria-setsize"),l.removeAttribute("data-index"),l.removeAttribute("data-id"),l.textContent="",t.length<100)t.push(l)},get size(){return t.length},clear(){t.length=0}}}function $e(e){let t=e.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let o=0;o<t.length;o++)t[o].setAttribute("tabindex","-1")}function Ue(e){if(typeof e==="string"){let t=document.querySelector(e);if(!t)throw Error(`[vlist] Container not found: ${e}`);return t}return e}function Tt(e,t,o,r){let l=o?`${t} ${t}--horizontal`:t,c=o?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%",i=o?"position:relative;height:100%;overflow-anchor:none":"position:relative;width:100%;overflow-anchor:none",d=' role="list"';if(r)d+=` aria-label="${r.replace(/"/g,""")}"`;if(o)d+=' aria-orientation="horizontal"';e.insertAdjacentHTML("beforeend",`<div class="${l}"><div class="${t}-viewport" style="${c}" tabindex="-1"><div class="${t}-content" style="${i}"${d}></div></div></div>`);let S=e.lastElementChild,E=S.firstElementChild,y=E.firstElementChild,h=document.createElement("div");return h.className=`${t}-live`,h.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",h.setAttribute("aria-live","polite"),h.setAttribute("aria-atomic","true"),h.setAttribute("role","status"),S.appendChild(h),{root:S,viewport:E,content:y,liveRegion:h}}function Bt(e,t){if(e.getTotal()<=0)return{index:0,offsetPx:0};let r=t<=0?0:t,l=e.indexAtOffset(r),c=r-e.getOffset(l);return{index:l,offsetPx:c>0?c:0}}function Nt(e,t){let o=Wt(e,t);return e.getOffset(o.index)+o.offsetPx}function Wt(e,t){let o=e.getTotal();if(o<=0)return{index:0,offsetPx:0};let{index:r,offsetPx:l}=t;if(r<0)return{index:0,offsetPx:0};if(r>o-1)r=o-1;while(l>0&&r<o-1){let c=e.getSize(r);if(l<c)break;l-=c,r++}while(l<0&&r>0)r--,l+=e.getSize(r);if(l<0)l=0;return{index:r,offsetPx:l}}function Lt(e){let{sizeCache:t,getPixel:o,setPixel:r,getContainerSize:l}=e;function c(){let d=t.getTotalSize()+e.padding-l();return d>0?d:0}function i(d){if(d<=0)return 0;let S=c();return d>S?S:d}return{getLogical(){return Bt(t,o())},setLogical(d){r(i(Nt(t,d)))},getPixelEquivalent(){return o()},setPixelEquivalent(d){r(i(d))},getMaxPixelEquivalent:c,getRenderOrigin:e.getRenderOrigin,scrollByPx(d){r(i(o()+d))}}}var ve=[],$t={calculate:ve,commit:ve,afterScroll:ve,idle:ve,resize:ve};function It(e){if(e.length===0)return $t;let t=[],o=[],r=[],l=[],c=[];for(let i=0;i<e.length;i++){let d=e[i].hooks;if(d===void 0)continue;if(d.onCalculate!==void 0)t.push(d.onCalculate);if(d.onCommit!==void 0)o.push(d.onCommit);if(d.onAfterScroll!==void 0)r.push(d.onAfterScroll);if(d.onIdle!==void 0)l.push(d.onIdle);if(d.onResize!==void 0)c.push(d.onResize)}return{calculate:t,commit:o,afterScroll:r,idle:l,resize:c}}function Ct(e,t){for(let o=0;o<e.length;o++)e[o](t)}function Pt(e,t){for(let o=0;o<e.length;o++)e[o](t)}function Xe(e,t,o){for(let r=0;r<e.length;r++)e[r](t,o)}function At(e){for(let t=0;t<e.length;t++)e[t]()}function Mt(e,t,o){for(let r=0;r<e.length;r++)e[r](t,o)}function zt(e,t,o,r,l,c,i,d){let S=r!==0||l!==0;return{prefix:e,selectedClass:`${e}-item--selected`,focusedClass:`${e}-item--focused`,placeholderClass:`${e}-item--placeholder`,replacedClass:`${e}-item--replaced`,translateProp:t?"translateX(":"translateY(",sizeProp:t?"width":"height",itemRole:"listitem",interactive:!1,startPadding:o,gap:i,hasCrossPad:S,crossStartProp:S?t?"top":"left":"",crossEndProp:S?t?"bottom":"right":"",crossStartVal:S?r+"px":"",crossEndVal:S?l+"px":"",oddClass:c,emitter:d??null,indexMap:null,ariaTotalFn:null}}function Ut(e,t,o,r,l){if(e.containerSize<=0||e.totalItems===0)return e.clear(),!0;let{scrollPosition:c,containerSize:i,totalItems:d}=e,S=l??0;e.totalSize=t.getTotalSize();let E=t.indexAtOffset(S>0?Math.max(0,c-S):c),y=t.indexAtOffset(c+i);if(y<d-1)y++;E=Math.max(0,E),y=Math.min(d-1,Math.max(0,y));let h=Math.max(0,E-o),p=Math.min(d-1,y+o),T=Math.ceil(i/1)+o*2+10,z=p-h+1,V=Math.min(z,e.capacity,T);if(h===e.prevRangeStart&&p===e.prevRangeEnd&&!e.renderPending&&e.baseOffset===e.prevBaseOffset)return!1;e.visibleCount=V,e.startIndex=h;for(let m=0;m<V;m++){let O=h+m;e.visibleIndices[m]=O,e.visibleOffsets[m]=t.getOffset(O),e.visibleSizes[m]=t.getSize(O)}return Ct(r.calculate,e),e.prevRangeStart=h,e.prevRangeEnd=p,e.prevBaseOffset=e.baseOffset,e.renderPending=!1,!0}var F={selected:!1,focused:!1};function Xt(e,t,o){for(let r=0;r<t;r++)if(e[r]===o)return!0;return!1}function Yt(e,t){if(t<=1)return!0;let o=e[0];for(let r=1;r<t;r++){let l=e[r];if(l!==o+1)return!1;o=l}return!0}function Kt(e,t,o,r,l,c,i,d,S,E){let y=S?null:l(),{visibleCount:h,visibleIndices:p}=e,T=i.ariaTotalFn?i.ariaTotalFn():e.totalItems,z=i.interactive?String(T):"",V=i.interactive&&T!==e.prevAriaTotal,m=null,O=i.indexMap;for(let f=0;f<h;f++){let M=p[f],C=O?O(M):M,a=e.visibleOffsets[f],g=e.visibleSizes[f],R=S?S(M):y[M];if(E)E(C,F);else F.selected=!1,F.focused=!1;let L=c.get(M),w=L;if(L===void 0){let v=t.acquire();if(R!==void 0){let D;try{D=r(R,C,F)}catch(N){if(i.emitter)i.emitter.emit("error",{error:N instanceof Error?N:Error(String(N)),context:`template:render:${C}`});t.release(v);continue}if(typeof D==="string")v.innerHTML=D;else v.textContent="",v.appendChild(D);$e(v)}if(v.setAttribute("role",i.itemRole),v.setAttribute("data-index",String(C)),i.interactive)v.id=i.prefix+"-item-"+M,v.setAttribute("aria-posinset",String(C+1)),v.setAttribute("aria-setsize",z);if(R!==void 0){let D=String(R.id);if(v.setAttribute("data-id",D),D.startsWith(Le))v.classList.add(i.placeholderClass)}if(i.hasCrossPad)v.style.setProperty(i.crossStartProp,i.crossStartVal),v.style.setProperty(i.crossEndProp,i.crossEndVal);if(E){if(v.classList.toggle(i.selectedClass,F.selected),v.classList.toggle(i.focusedClass,F.focused),F.selected)v.setAttribute("aria-selected","true");else v.removeAttribute("aria-selected");v._lastSelected=F.selected,v._lastFocused=F.focused}if(i.oddClass)v.classList.toggle(i.oddClass,(M&1)===1);let B=a-e.baseOffset+i.startPadding;v.style.transform=i.translateProp+B+"px)",v._lastOffset=B;let k=g-i.gap;if(v.style[i.sizeProp]=k+"px",v._lastSize=k,v._lastItem=R,c.set(M,v),m===null)m=document.createDocumentFragment();m.appendChild(v)}else{if(V)L.setAttribute("aria-setsize",z);if(R!==void 0&&w._lastItem!==R){let k=L.getAttribute("data-id"),D=String(R.id),N;try{N=r(R,C,F)}catch(b){if(i.emitter)i.emitter.emit("error",{error:b instanceof Error?b:Error(String(b)),context:`template:render:${C}`});continue}if(typeof N==="string")L.innerHTML=N;else L.textContent="",L.appendChild(N);if($e(L),L.setAttribute("data-id",D),w._lastItem=R,k!==D){let b=k!==null&&k.startsWith(Le),x=D.startsWith(Le);if(b!==x)L.classList.toggle(i.placeholderClass,x);if(b&&!x)L.classList.add(i.replacedClass),setTimeout(()=>{L.classList.remove(i.replacedClass)},300)}}if(E){if(w._lastSelected!==F.selected){if(L.classList.toggle(i.selectedClass,F.selected),F.selected)L.setAttribute("aria-selected","true");else L.removeAttribute("aria-selected");w._lastSelected=F.selected}if(w._lastFocused!==F.focused)L.classList.toggle(i.focusedClass,F.focused),w._lastFocused=F.focused}let v=a-e.baseOffset+i.startPadding;if(w._lastOffset!==v)L.style.transform=i.translateProp+v+"px)",w._lastOffset=v;let B=g-i.gap;if(w._lastSize!==B)L.style[i.sizeProp]=B+"px",w._lastSize=B}}if(m!==null)o.appendChild(m);if(h>0&&Yt(p,h)){let f=p[0],M=p[h-1];for(let[C,a]of c)if(C<f||C>M)a.remove(),t.release(a),c.delete(C)}else for(let[f,M]of c)if(!Xt(p,h,f))M.remove(),t.release(M),c.delete(f);if(i.interactive)e.prevAriaTotal=e.totalItems;Pt(d.commit,e)}function Ye(e,t,o,r,l,c,i,d,S,E,y,h){if(Ut(e,t,o,E,S.startPadding))Kt(e,r,l,c,i,d,S,E,y,h)}var Ke=()=>{let e={},t=(c,i)=>{if(!e[c])e[c]=new Set;return e[c].add(i),()=>o(c,i)},o=(c,i)=>{e[c]?.delete(i)};return{on:t,off:o,emit:(c,i)=>{e[c]?.forEach((d)=>{try{d(i)}catch(S){console.error(`[vlist] Error in event handler for "${String(c)}":`,S)}})},clear:(c)=>{if(c)delete e[c];else for(let i in e)delete e[i]}}};var Ht=2,_t=(e=0)=>({velocity:0,sampleCount:0}),wt=(e,t)=>{let o=performance.now(),r=e._lt??o,l=e._lp??t,c=o-r;if(e._lp=t,e._lt=o,c===0)return e.sampleCount=Math.min(e.sampleCount+1,5),e;if(c>100)return e.velocity=0,e.sampleCount=1,e;return e.velocity=Math.abs(t-l)/c,e.sampleCount=Math.min(e.sampleCount+1,5),e};function qt(e){let{item:t}=e;if(t.height!==void 0&&typeof t.height==="number"){if(!Number.isFinite(t.height)||t.height<=0)throw Error(`vlist: item.height must be a positive number, got ${t.height}`)}if(t.width!==void 0&&typeof t.width==="number"){if(!Number.isFinite(t.width)||t.width<=0)throw Error(`vlist: item.width must be a positive number, got ${t.width}`)}if(t.estimatedHeight!==void 0){if(!Number.isFinite(t.estimatedHeight)||t.estimatedHeight<=0)throw Error(`vlist: item.estimatedHeight must be a positive number, got ${t.estimatedHeight}`)}if(t.estimatedWidth!==void 0){if(!Number.isFinite(t.estimatedWidth)||t.estimatedWidth<=0)throw Error(`vlist: item.estimatedWidth must be a positive number, got ${t.estimatedWidth}`)}if(t.gap!==void 0){if(typeof t.gap!=="number"||!Number.isFinite(t.gap)||t.gap<0)throw Error(`vlist: item.gap must be a non-negative number, got ${t.gap}`)}if(e.overscan!==void 0){if(typeof e.overscan!=="number"||!Number.isFinite(e.overscan)||e.overscan<0)throw Error(`vlist: overscan must be a non-negative number, got ${e.overscan}`)}let o=e.scroll;if(o?.mode!==void 0||o?.runway!==void 0)throw Error('vlist 3.0: scroll.mode and scroll.runway were removed; bounded mode is gone. Use "vlist" for huge lists or "vlist/native" for native scrolling.')}function Gt(e,t){let o=e==="horizontal"?"x":"y";if(t.some((l)=>l.name==="grid"))return{primary:o,cross:o==="x"?"y":"x"};return{primary:o}}function Zt(e,t){let o=Gt(e.orientation,t),r=o.primary==="x",l=St(e.padding);return{axis:o,hasCrossAxis:o.cross!==void 0,overscan:e.overscan??ye,reverse:e.reverse??!1,classPrefix:e.classPrefix??ut,mainAxisPadding:ht(l,r),crossAxisPadding:xt(l,r),startPadding:r?l.left:l.top,endPadding:r?l.right:l.bottom,crossPadStart:r?l.top:l.left,crossPadEnd:r?l.bottom:l.right,striped:e.item.striped||!1,gap:e.item.gap??0}}function jt(e,t){if(t)return e.item.width??e.item.estimatedWidth??100;return e.item.height??e.item.estimatedHeight??40}function Jt(e){let t=[...e];return t.sort((o,r)=>(o.priority??50)-(r.priority??50)),t}function Qt(e){let t=new Set;for(let o of e){if(t.has(o.name))throw Error(`[vlist] Duplicate plugin: ${o.name}`);t.add(o.name)}for(let o of e)if(o.conflicts){for(let r of o.conflicts)if(t.has(r))throw Error(`[vlist] Plugin "${o.name}" conflicts with "${r}"`)}}function Rt(e,t=[],o,r){if(qt(e),o){if(typeof e.scroll?.scrollbar==="string")throw Error('vlist 3.0: scroll.scrollbar strings require "vlist/native"; use the scrollbar() plugin with "vlist".');if(e.orientation==="horizontal"&&getComputedStyle(Ue(e.container)).direction==="rtl")throw Error('vlist: RTL horizontal lists require createVList from "vlist/native"');for(let s of t)if(s.name==="carousel"||s.name==="sortable")throw Error(`vlist: ${s.name} requires createVList from "vlist/native"`)}let l=Zt(e,t),c=l.axis.primary==="x",i=jt(e,c),d=l.gap,S=d>0?typeof i==="function"?(s)=>i(s)+d:i+d:i,E=typeof i==="number"?i:20,y=e.items?.length??0,h=l.striped?`${l.classPrefix}-item--odd`:"",p=Ke(),T=zt(l.classPrefix,c,l.startPadding,l.crossPadStart,l.crossPadEnd,h,d,p),z=t.length>0?Jt(t):t;if(t.length>0)Qt(z);let V=Ue(e.container),m=Tt(V,l.classPrefix,c,e.ariaLabel);if(e.scroll?.scrollbar==="none")m.viewport.classList.add(`${l.classPrefix}-viewport--no-scrollbar`);if(e.scroll?.gutter==="stable")m.viewport.classList.add(`${l.classPrefix}-viewport--gutter-stable`);let f=Pe(S,y);if(d>0){let s=f.getTotalSize;f.getTotalSize=()=>{let n=s();return n>0?n-d:0}}let M=yt(l.classPrefix),C=Math.ceil(4096/E)+l.overscan*2+8,a=Et(C);a.totalItems=y;let g=e.items??[],R=()=>g,L=new Map,w=_t(),v={velocity:0,reliable:!1},B={range:{start:0,end:-1}},k={scrollPosition:0,direction:"down"},D={scrollPosition:0},N=-1,b=-1,x=-1,A=null,P=It(z),H=new Map,X=[],Z=[],K=[],W=null,j=null,ge,oe,re=null,Ae=null,Y=null,Se=null,te=null,ce=null,Me=null,ze=null,ie=!1,qe=!1,de=null,Ge=0,Ze=0,je=null,Je=null,Qe=null,He=null,_e=null,we=null,he=null,q=null,ue=null;a.containerSize=c?m.viewport.clientWidth:m.viewport.clientHeight,a.crossSize=c?m.viewport.clientHeight:m.viewport.clientWidth;function Re(s){if(j)j(s);else{if(c)m.viewport.scrollLeft=s;else m.viewport.scrollTop=s;oe?.()}}let et=Lt({sizeCache:f,getPixel:()=>a.scrollPosition,setPixel:Re,getRenderOrigin:()=>a.baseOffset,getContainerSize:()=>a.containerSize,padding:l.mainAxisPadding});if(t.length>0){let s={dom:m,sizeCache:f,scroll:et,pool:M,config:l,emitter:p,template:e.item.template,registerMethod(n,u){H.set(n,u)},getMethod(n){return H.get(n)},registerClickHandler(n){X.push(n)},registerKeydownHandler(n){Z.push(n)},registerDestroyHandler(n){K.push(n)},enableListboxRole(){let n=m.content.getAttribute("role");if(!n||n==="list")m.content.setAttribute("role","listbox"),m.content.setAttribute("tabindex","0");T.itemRole="option",T.interactive=!0},setSizeConfig(n){let u=Pe(n,a.totalItems),I=H.get("_setSizeCacheBase");if(I){let _=f.rebuild;Object.assign(f,u),f.rebuild=_,I(u.rebuild)}else Object.assign(f,u)},setScrollSource(n){j=n.write,ge=n.onContentSize,ie=!0},commitScroll(n){oe(n)},setBoundedWrap(n){ue=n},cancelScroll(){ne?.cancelScroll()},setVirtualTotalFn(n){W=n,T.ariaTotalFn=n},setIndexMapFn(n){T.indexMap=n},getItems:R,getItem(n){return Y?Y(n):g[n]},getState(){return a},rebuildSizeCache(){f.rebuild(a.totalItems)},updateContentSize:nt,setRenderFn(n,u){re=n,Ae=u},renderIfNeeded(){me()},forceRender(){Q()},setGetItemFn(n){Y=n},setItemStateFn(n){Se=n},getItemStateFn(){return Se},get rawSizeSpec(){return i},scrollTo:Re,shiftScroll(n){if(q?.shiftBy)q.shiftBy(n);else s.scrollTo(a.scrollPosition+n)},smoothScrollTo(n,u,I,_){if(He)He(n,u,j??void 0,I,_);else s.scrollTo(typeof n==="function"?n():n)},disableDefaultResize(){qe=!0},setScrollTarget(n){de=n},setScrollToPosFn(n){_e=n},setScrollToIndexFn(n){we=n},onScrollFrame:Fe,onScrollIdle:xe,removeItemById(n){if(te)return te(n);let u=g.findIndex((I)=>I.id===n);if(u===-1)return-1;return g.splice(u,1),a.totalItems=g.length,f.rebuild(a.totalItems),J(),u},insertItemAt(n,u){if(ce){ce(n,u);return}g.splice(u,0,n),a.totalItems=g.length,f.rebuild(a.totalItems),J()},setRemoveItemFn(n){te=n},setInsertItemFn(n){ce=n},setUpdateItemFn(n){Me=n},setGetIndexByIdFn(n){ze=n},getRenderedElement(n){let u=H.get("_getRenderedElement");if(u)return u(n);return L.get(n)??null},setNavConfig(n){if(n.ud!==void 0)Ge=n.ud;if(n.lr!==void 0)Ze=n.lr;if(n.scrollIndex)je=n.scrollIndex;if(n.navigate)Je=n.navigate;if(n.total)Qe=n.total},getNavConfig:(()=>{let n={ud:0,lr:0,scrollIndex:null,navigate:null,total:null};return()=>(n.ud=Ge,n.lr=Ze,n.scrollIndex=je,n.navigate=Je,n.total=Qe,n)})()};for(let n of z)if(n.setup)try{n.setup(s)}catch(u){p.emit("error",{error:u instanceof Error?u:Error(String(u)),context:`plugin:setup:${n.name}`})}}let Oe=l.classPrefix+"--scrolling",le=!1,Ve=e.scroll?.idleTimeout??se;function tt(){if(k.scrollPosition=a.scrollPosition,c)k.direction=a.scrollDirection>0?"right":"left";else k.direction=a.scrollDirection>0?"down":"up";if(p.emit("scroll",k),wt(w,a.scrollPosition),v.velocity=w.velocity,v.reliable=w.sampleCount>=Ht,p.emit("velocity:change",v),a.startIndex!==N||a.prevRangeEnd!==b)N=a.startIndex,b=a.prevRangeEnd,B.range.start=a.startIndex,B.range.end=a.prevRangeEnd,p.emit("range:change",B)}function nt(s,n=!0){if(q){if(n)q.refresh(s);return}a.totalSize=s;let u=s+l.mainAxisPadding;if(ge?.(u),n)m.content.style[c?"width":"height"]=u+"px"}function J(){let s=re?a.totalSize:f.getTotalSize();if(nt(s,!re),q||re)return;r?.onContentSize(s,p)}function ot(){if(!he)return;if((W?W():g.length)===0)return;let n=he;he=null,Be.scrollToIndex(n.index,n.alignOrOptions)}function me(){if(ot(),re)re();else Ye(a,f,l.overscan,M,m.content,e.item.template,R,L,T,P,Y,Se)}function Fe(){if(!le)le=!0,m.root.classList.add(Oe);if(me(),Xe(P.afterScroll,a.scrollPosition,a.scrollDirection),a.scrollPosition!==x)x=a.scrollPosition,tt()}function xe(){if(le)le=!1,m.root.classList.remove(Oe);a.scrollDirection=0,At(P.idle),v.velocity=0,v.reliable=!1,p.emit("velocity:change",v),D.scrollPosition=a.scrollPosition,p.emit("scroll:idle",D)}function Q(){if(ot(),a.renderPending=!0,Ae)Ae();else Ye(a,f,l.overscan,M,m.content,e.item.template,R,L,T,P,Y,Se);if(Xe(P.afterScroll,a.scrollPosition,a.scrollDirection),a.scrollPosition!==x){if(x=a.scrollPosition,tt(),A!==null)clearTimeout(A);A=setTimeout(xe,Ve)}}let rt=ie?!1:e.scroll?.wheel!==!1,ne;if(ie&&ue)throw Error("vlist: page() is not compatible with the carousel plugin — bounded page-mode scrolling is not implemented yet.");if(!ie&&(o||ue))q=(o??r.wrap)({state:a,sizeCache:f,viewport:m.viewport,content:m.content,isX:c,wheelEnabled:rt,idleTimeout:Ve,...de?{scrollTarget:de}:{},mainAxisPadding:l.mainAxisPadding,...ue?{wrap:ue}:{},onFrame:Fe,onIdle:xe}),ne=q,j=(s)=>q.setLogical(s);else{let s=(ie?Ie:r.native)({state:a,viewport:m.viewport,isX:c,wheelEnabled:rt,idleTimeout:Ve,...de?{scrollTarget:de}:{},onFrame:Fe,onIdle:xe});ne=s,oe=s.commitScroll}He=ne.smoothScrollTo;function De(s){let u=s.target.closest("[data-index]");if(!u)return null;let I=parseInt(u.getAttribute("data-index"),10);if(Number.isNaN(I))return null;let _=H.get("_layoutToDataIndex"),U;if(_){let G=_(I);if(G<0)return null;let be=H.get("_getItem");U=be?be(G):Y?Y(G):g[G]}else U=Y?Y(I):g[I];if(U===void 0)return null;return{item:U,index:I}}function it(s){for(let u=0;u<X.length;u++)X[u](s);let n=De(s);if(n)p.emit("item:click",{item:n.item,index:n.index,event:s})}function lt(s){let n=De(s);if(n)p.emit("item:dblclick",{item:n.item,index:n.index,event:s})}function st(s){let n=De(s);if(n)p.emit("item:contextmenu",{item:n.item,index:n.index,event:s})}function at(s){let n=s.target?.tagName;if((n==="INPUT"||n==="TEXTAREA"||n==="SELECT")&&!((s.ctrlKey||s.metaKey)&&(s.key==="f"||s.key==="F")))return;for(let u=0;u<Z.length;u++)Z[u](s)}if(m.content.addEventListener("click",it),m.content.addEventListener("dblclick",lt),m.content.addEventListener("contextmenu",st),Z.length>0)m.root.addEventListener("keydown",at);let ke=null;if(!qe)setTimeout(()=>{if(a.destroyed)return;ke=new ResizeObserver((n)=>{for(let u of n){let{width:I,height:_}=u.contentRect,U=c?I:_,G=c?_:I;if(Math.abs(U-a.containerSize)<1&&Math.abs(G-a.crossSize)<1)continue;if(a.containerSize=U,a.crossSize=G,a.resizeCapacity(U,E,l.overscan),q)q.refresh(f.getTotalSize());Q(),Mt(P.resize,I,_),p.emit("resize",{width:I,height:_})}}),ke.observe(m.viewport)},0);a.resizeCapacity(a.containerSize,E,l.overscan),J(),a.initialized=!0;let fe=null;if(e.defer)fe=requestAnimationFrame(()=>{if(fe=null,!a.destroyed)me()});else me();if(!ie)ne.attach();let Be={get element(){return m.root},get items(){return g},get total(){return W?W():g.length},setItems(s){g=[...s],a.totalItems=g.length,f.rebuild(a.totalItems),J(),Q()},appendItems(s){g.push(...s),a.totalItems=g.length,f.rebuild(a.totalItems),J(),Q()},prependItems(s){g.unshift(...s),a.totalItems=g.length,f.rebuild(a.totalItems),J(),Q()},updateItem(s,n){if(Me){if(!Me(s,n))return}else{let u=g.findIndex((I)=>I.id===s);if(u===-1)return;g[u]={...g[u],...n}}Q()},insertItem(s,n){if(ce)ce(s,n??a.totalItems);else{if(n===void 0)g.push(s);else g.splice(n,0,s);a.totalItems=g.length,f.rebuild(a.totalItems),J()}Q()},removeItem(s){if(te){if(te(s)<0)return}else{let n=g.findIndex((u)=>u.id===s);if(n===-1)return;g.splice(n,1),a.totalItems=g.length,f.rebuild(a.totalItems),J()}Q()},removeItems(s){if(te){let _=0;for(let U of s)if(te(U)>=0)_++;if(_>0)Q();return _}let n=new Set(s),u=g.length;g=g.filter((_)=>!n.has(_.id));let I=u-g.length;if(I>0)a.totalItems=g.length,f.rebuild(a.totalItems),J(),a.renderPending=!0,me();return I},getItemAt(s){if(T.indexMap)return g[s];return Y?Y(s):g[s]},getIndexById(s){if(ze)return ze(s);return g.findIndex((n)=>n.id===s)},scrollToIndex(s,n="start"){let u=W?W():g.length;if(u===0){he={index:s,alignOrOptions:n};return}let I=Math.max(0,Math.min(s,u-1)),_=typeof n==="string"?n:n.align??"start",U=typeof n==="object"?n.behavior:void 0,G=typeof n==="object"?n.duration:void 0,be=typeof n==="object"?n.easing:void 0;if(we&&we(I,_,U,G,be)!==!1)return;let Ne=f.getOffset(I),ct=f.getSize(I),Ee=a.containerSize,Ot=f.getTotalSize(),dt=l.mainAxisPadding,Vt=Math.max(0,Ot+dt-Ee),ee;if(_e)ee=_e(I,f,Ee,u,_);else{let Ft=l.startPadding;switch(_){case"center":ee=Ft+Ne-(Ee-ct)/2;break;case"end":ee=Ne+ct+dt-Ee;break;default:ee=Ne}ee=Math.max(0,Math.min(ee,Vt))}if(U==="smooth")ne.smoothScrollTo(ee,G??mt,j??void 0,be);else Re(ee)},getScrollPosition(){return et.getPixelEquivalent()},on:p.on.bind(p),off:p.off.bind(p),destroy(){if(a.destroyed)return;if(a.destroyed=!0,le)le=!1,m.root.classList.remove(Oe);if(fe!==null)cancelAnimationFrame(fe),fe=null;if(A!==null)clearTimeout(A),A=null;ne.detach(),ke?.disconnect(),m.content.removeEventListener("click",it),m.content.removeEventListener("dblclick",lt),m.content.removeEventListener("contextmenu",st),m.root.removeEventListener("keydown",at);let s=[];for(let n of K)try{n()}catch(u){s.push(u instanceof Error?u:Error(String(u)))}for(let n of z)if(n.destroy)try{n.destroy()}catch(u){s.push(u instanceof Error?u:Error(String(u)))}for(let[,n]of L)n.remove();if(L.clear(),M.clear(),m.root.remove(),p.emit("destroy",void 0),p.clear(),s.length>0)for(let n of s)console.error("vlist: error during destroy:",n)}};for(let[s,n]of H)Be[s]=n;return Be}function Kn(e,t=[]){let o=!1;return Rt(e,t,void 0,{native:vt,wrap:gt,onContentSize(r,l){if(!o&&r>We)o=!0,l.emit("error",{error:Error(`Content size (${r}px) exceeds browser limit (${We}px). Use the default "vlist" synthetic entry for large datasets.`),context:"content:size:overflow"})}})}export{Kn as createVList};
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Because a pinned item cannot grow, content that changes size after the
|
|
9
9
|
* measurement (an image that loads or fails, a font swap, lazy content)
|
|
10
10
|
* needs a fresh measurement. `load` and `error` events from descendants
|
|
11
|
-
* trigger one automatically.
|
|
11
|
+
* trigger one automatically; `list.remeasure(index?)` does it on demand.
|
|
12
12
|
*
|
|
13
13
|
* Priority 5 — runs before grid/masonry (10) so the measured cache
|
|
14
14
|
* is in place before layout plugins consume it.
|
|
@@ -25,7 +25,9 @@ export type GetItemFn<T> = (index: number) => T | undefined;
|
|
|
25
25
|
/** Masonry renderer instance */
|
|
26
26
|
export interface MasonryRenderer<T extends VListItem = VListItem> {
|
|
27
27
|
/** Render visible items using pre-calculated placements */
|
|
28
|
-
render: (getItem: GetItemFn<T>, placements: ItemPlacement[], selectedIds: Set<string | number>, focusedIndex: number
|
|
28
|
+
render: (getItem: GetItemFn<T>, placements: ItemPlacement[], selectedIds: Set<string | number>, focusedIndex: number,
|
|
29
|
+
/** Reuse the plugin commit's origin; standalone renders read the callback once. */
|
|
30
|
+
origin?: number) => void;
|
|
29
31
|
/** Get rendered item element by flat item index */
|
|
30
32
|
getElement: (index: number) => HTMLElement | undefined;
|
|
31
33
|
/** Update only CSS classes on a rendered item (no template re-evaluation) */
|
|
@@ -12,13 +12,25 @@
|
|
|
12
12
|
* - CSS variables for customization
|
|
13
13
|
* - Horizontal mode support (direction-aware axis)
|
|
14
14
|
*/
|
|
15
|
+
import type { SizeCache } from "../../rendering/sizes";
|
|
15
16
|
import type { ScrollbarPadding } from "../../types";
|
|
16
17
|
export type { ScrollbarPadding } from "../../types";
|
|
17
18
|
/** Scrollbar configuration */
|
|
18
19
|
export interface ScrollbarConfig {
|
|
19
|
-
/**
|
|
20
|
+
/** Override the platform appearance selected once at setup. */
|
|
21
|
+
platform?: 'macos' | 'windows' | 'android';
|
|
22
|
+
/** Width in pixels, or a standard scrollbar-width keyword. */
|
|
23
|
+
width?: number | 'auto' | 'thin' | 'none';
|
|
24
|
+
/** Thumb radius in pixels; overrides the author CSS variable. */
|
|
25
|
+
radius?: number;
|
|
26
|
+
/** Explicit colors override author scrollbar-color. */
|
|
27
|
+
thumbColor?: string;
|
|
28
|
+
trackColor?: string;
|
|
29
|
+
/** Reserve a gutter while the scrollbar is enabled. */
|
|
30
|
+
gutter?: boolean;
|
|
31
|
+
/** Enable scrollbar (default: true; width:none also disables it). */
|
|
20
32
|
enabled?: boolean;
|
|
21
|
-
/** Auto-hide
|
|
33
|
+
/** Auto-hide after idle (default: true for overlays, false for Windows). */
|
|
22
34
|
autoHide?: boolean;
|
|
23
35
|
/** Auto-hide delay in milliseconds (default: 1000) */
|
|
24
36
|
autoHideDelay?: number;
|
|
@@ -71,6 +83,8 @@ export interface ScrollbarConfig {
|
|
|
71
83
|
}
|
|
72
84
|
/** Scrollbar instance */
|
|
73
85
|
export interface Scrollbar {
|
|
86
|
+
/** Re-read the container’s standard scrollbar CSS properties. */
|
|
87
|
+
refresh: () => void;
|
|
74
88
|
/** Show the scrollbar */
|
|
75
89
|
show: () => void;
|
|
76
90
|
/** Hide the scrollbar */
|
|
@@ -96,5 +110,5 @@ export type ScrollCallback = (position: number) => void;
|
|
|
96
110
|
* @param isX - Whether the primary axis is X (horizontal, default: false)
|
|
97
111
|
* @param parent - Element to append scrollbar DOM to (default: viewport)
|
|
98
112
|
*/
|
|
99
|
-
export declare const createScrollbar: (viewport: HTMLElement, onScroll: ScrollCallback, config?: ScrollbarConfig, classPrefix?: string, isX?: boolean, parent?: HTMLElement) => Scrollbar;
|
|
113
|
+
export declare const createScrollbar: (viewport: HTMLElement, onScroll: ScrollCallback, config?: ScrollbarConfig, classPrefix?: string, isX?: boolean, parent?: HTMLElement, getSizeCache?: () => SizeCache, styleSource?: HTMLElement) => Scrollbar;
|
|
100
114
|
//# sourceMappingURL=scrollbar.d.ts.map
|
|
@@ -35,7 +35,9 @@ import type { TableLayout, TableColumn } from "./types";
|
|
|
35
35
|
/** Table renderer instance */
|
|
36
36
|
export interface TableRendererInstance<T extends VListItem = VListItem> {
|
|
37
37
|
/** Render rows for a range, with cell-based layout */
|
|
38
|
-
render: (items: T[], range: Range, selectedIds: Set<string | number>, focusedIndex: number
|
|
38
|
+
render: (items: T[], range: Range, selectedIds: Set<string | number>, focusedIndex: number,
|
|
39
|
+
/** Reuse the plugin commit's origin; standalone renders read the callback once. */
|
|
40
|
+
origin?: number) => void;
|
|
39
41
|
/** Update a single row (e.g., after selection change) */
|
|
40
42
|
updateItem: (index: number, item: T, isSelected: boolean, isFocused: boolean) => void;
|
|
41
43
|
/** Update only CSS classes on a rendered row */
|
package/dist/size.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"base":{"minified":"
|
|
1
|
+
{"base":{"minified":"31.1","gzipped":"11.4","minBytes":31855,"gzBytes":11669},"synthetic":{"minified":"31.1","gzipped":"11.4","minBytes":31855,"gzBytes":11670},"native":{"minified":"28.1","gzipped":"10.1","minBytes":28814,"gzBytes":10393},"a11y":{"minified":"34.4","gzipped":"12.6","minBytes":35200,"gzBytes":12861},"selection":{"minified":"40.5","gzipped":"14.2","minBytes":41473,"gzBytes":14526},"data":{"minified":"44.8","gzipped":"16.2","minBytes":45854,"gzBytes":16588},"scrollbar":{"minified":"39.3","gzipped":"14.2","minBytes":40237,"gzBytes":14549},"sortable":{"minified":"40.6","gzipped":"14.3","minBytes":41588,"gzBytes":14660},"groups":{"minified":"47.1","gzipped":"16.7","minBytes":48258,"gzBytes":17091},"page":{"minified":"33.6","gzipped":"12.3","minBytes":34395,"gzBytes":12555},"snapshots":{"minified":"34.4","gzipped":"12.5","minBytes":35231,"gzBytes":12828},"transition":{"minified":"37.8","gzipped":"13.3","minBytes":38685,"gzBytes":13665},"autosize":{"minified":"34.2","gzipped":"12.4","minBytes":35003,"gzBytes":12730},"grid":{"minified":"38.2","gzipped":"13.8","minBytes":39097,"gzBytes":14170},"table":{"minified":"49.5","gzipped":"17.2","minBytes":50737,"gzBytes":17646},"masonry":{"minified":"42.5","gzipped":"15.5","minBytes":43494,"gzBytes":15880},"tree":{"minified":"46.4","gzipped":"16.4","minBytes":47526,"gzBytes":16829},"search":{"minified":"40.2","gzipped":"14.5","minBytes":41154,"gzBytes":14870},"carousel":{"minified":"41.0","gzipped":"14.9","minBytes":41973,"gzBytes":15266}}
|
package/dist/synthetic.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
mode?: "native" | "bounded" | "synthetic";
|
|
6
|
-
};
|
|
7
|
-
};
|
|
8
|
-
export declare function createVList<T extends VListItem = VListItem>(config: SyntheticVListConfig<T>, plugins?: VListPlugin<T>[]): VList<T>;
|
|
1
|
+
/** @deprecated Synthetic input is the default. Import from "vlist" instead. */
|
|
2
|
+
export { createVList } from "./core/create";
|
|
3
|
+
/** @deprecated Use CreateVListConfig from "vlist". */
|
|
4
|
+
export type { CreateVListConfig as SyntheticVListConfig } from "./core/types";
|
|
9
5
|
//# sourceMappingURL=synthetic.d.ts.map
|