vlist 3.0.0-next.2 → 3.0.0-next.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.github.md +88 -39
- package/README.md +44 -27
- package/dist/config.d.ts +129 -12
- package/dist/config.js +1 -1
- package/dist/core/create.d.ts +22 -4
- package/dist/core/dom.d.ts +22 -2
- package/dist/core/fold.d.ts +52 -0
- package/dist/core/hooks.d.ts +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/pipeline.d.ts +1 -1
- package/dist/core/pool.d.ts +9 -2
- package/dist/core/runway.d.ts +29 -3
- package/dist/core/scroll.d.ts +1 -1
- package/dist/core/sizes.d.ts +1 -1
- package/dist/core/state.d.ts +13 -1
- package/dist/core/types.d.ts +151 -61
- package/dist/core/velocity.d.ts +1 -1
- package/dist/index.d.ts +17 -2
- package/dist/index.js +1 -1
- package/dist/internals.d.ts +0 -1
- package/dist/internals.js +1 -1
- package/dist/plugins/a11y/index.d.ts +1 -0
- package/dist/plugins/a11y/plugin.d.ts +1 -1
- package/dist/plugins/autosize/index.d.ts +2 -1
- package/dist/plugins/autosize/plugin.d.ts +13 -2
- package/dist/plugins/carousel/engine.d.ts +1 -1
- package/dist/plugins/carousel/index.d.ts +1 -0
- package/dist/plugins/carousel/plugin.d.ts +42 -6
- package/dist/plugins/carousel/presets.d.ts +1 -1
- package/dist/plugins/data/index.d.ts +1 -0
- package/dist/plugins/data/plugin.d.ts +15 -2
- package/dist/plugins/grid/index.d.ts +2 -1
- package/dist/plugins/grid/plugin.d.ts +14 -2
- package/dist/plugins/groups/async-bridge.d.ts +6 -6
- package/dist/plugins/groups/index.d.ts +1 -0
- package/dist/plugins/groups/layout.d.ts +2 -2
- package/dist/plugins/groups/plugin.d.ts +12 -4
- package/dist/plugins/groups/sticky.d.ts +2 -1
- package/dist/plugins/groups/types.d.ts +8 -3
- package/dist/plugins/masonry/index.d.ts +2 -1
- package/dist/plugins/masonry/plugin.d.ts +10 -2
- package/dist/plugins/masonry/renderer.d.ts +5 -1
- package/dist/plugins/page/plugin.d.ts +1 -1
- package/dist/plugins/scrollbar/index.d.ts +2 -1
- package/dist/plugins/scrollbar/plugin.d.ts +7 -2
- package/dist/plugins/search/index.d.ts +1 -0
- package/dist/plugins/search/plugin.d.ts +29 -1
- package/dist/plugins/selection/index.d.ts +2 -1
- package/dist/plugins/selection/plugin.d.ts +23 -2
- package/dist/plugins/snapshots/index.d.ts +1 -0
- package/dist/plugins/snapshots/plugin.d.ts +9 -2
- package/dist/plugins/sortable/index.d.ts +1 -0
- package/dist/plugins/sortable/plugin.d.ts +14 -3
- package/dist/plugins/table/index.d.ts +1 -0
- package/dist/plugins/table/plugin.d.ts +19 -3
- package/dist/plugins/transition/plugin.d.ts +1 -1
- package/dist/plugins/tree/index.d.ts +1 -0
- package/dist/plugins/tree/layout.d.ts +3 -1
- package/dist/plugins/tree/plugin.d.ts +37 -3
- package/dist/plugins/tree/types.d.ts +1 -1
- package/dist/rendering/sizes.d.ts +19 -1
- package/dist/size.json +1 -1
- package/dist/synthetic.d.ts +2 -2
- package/dist/synthetic.js +1 -1
- package/dist/types.d.ts +14 -21
- package/dist/utils/apply-scroll-behavior.d.ts +15 -0
- package/dist/utils/scroll-padding.d.ts +36 -0
- package/dist/utils/stats.d.ts +9 -1
- package/dist/vlist-tree.css +1 -1
- package/dist/vlist.css +1 -1
- package/package.json +6 -2
- package/dist/plugins/grid/renderer.d.ts +0 -68
package/dist/internals.d.ts
CHANGED
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export { createGroupLayout, buildLayoutItems, createGroupedSizeFn, createStickyHeader, isGroupHeader, type GroupsConfig, type GroupBoundary, type LayoutEntry, type GroupHeaderItem, type GroupLayout, type StickyHeader, } from "./plugins/groups";
|
|
12
12
|
export { createGridLayout, type GridLayout, type GridPosition, type ItemRange, } from "./plugins/grid";
|
|
13
|
-
export { createGridRenderer, type GridRenderer, } from "./plugins/grid/renderer";
|
|
14
13
|
export type { GridConfig } from "./plugins/grid/types";
|
|
15
14
|
export { createTableLayout, createTableHeader, createTableRenderer, type TableConfig, type TableColumn, type TableLayout, type TableHeader, type TableRenderer, type TableRendererInstance, type ResolvedColumn, type ColumnResizeEvent, type ColumnSortEvent, type ColumnClickEvent, } from "./plugins/table";
|
|
16
15
|
export { createMasonryLayout, createMasonryRenderer, type MasonryConfig, type MasonryLayout, type MasonryRenderer, type GetItemFn, type ItemPlacement, } from "./plugins/masonry";
|
package/dist/internals.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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};
|
|
1
|
+
var tt="x",nt=20,We="_isPlaceholder",we="__placeholder_";function Re(t){let e=t.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let o=0;o<e.length;o++)e[o].setAttribute("tabindex","-1");t._stamp=0}var ke={key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0},Ue=(t,e)=>{let o=0,r=t.length-1;while(o<r){let s=o+r+1>>>1;if(t[s].headerLayoutIndex<=e)o=s;else r=s-1}return o},rt=(t,e)=>{let o=0,r=t.length-1;while(o<r){let s=o+r+1>>>1;if(t[s].firstDataIndex<=e)o=s;else r=s-1}return o},ot=(t,e,o)=>{if(t===0)return[];let r=[],s=null,a=0,i=0;for(let f=0;f<t;f++){let A=o?.(f);if(!A)continue;let C=e(f,A);if(s===null)s=C,a=0;else if(C!==s){let b=f-a;r.push({key:s,groupIndex:r.length,headerLayoutIndex:i,firstDataIndex:a,count:b}),i=i+1+b,s=C,a=f}}if(s!==null)r.push({key:s,groupIndex:r.length,headerLayoutIndex:i,firstDataIndex:a,count:t-a});return r},st=(t,e)=>{if(t.length===0||e.length===0)return[];let o=t.length+e.length,r=Array(o),s=0;for(let a of e){r[s]={id:`__group_header_${a.groupIndex}`,__groupHeader:!0,groupKey:a.key,groupIndex:a.groupIndex},s++;for(let i=0;i<a.count;i++)r[s]=t[a.firstDataIndex+i],s++}return r},at=(t,e,o=!1)=>{let r=typeof e==="number"?(s)=>e:e;return(s)=>{let a=t.getEntry(s);if(a.type==="header"){if(o&&a.group.groupIndex===0)return 0;return t.getHeaderHeight(a.group.groupIndex)}return r(a.dataIndex)}},it=(t,e,o)=>{let r=ot(t,e.getGroupForIndex,o),s=t+r.length,a=e.header?.height??e.header?.width??e.headerHeight,i=typeof a==="number"?(p)=>a:(p)=>{let g=r[p];if(!g)return 0;return a(g.key,p)},f={type:"header",group:ke},A={type:"item",dataIndex:0,group:ke};return{get totalEntries(){return s},get groupCount(){return r.length},get groups(){return r},getEntry:(p)=>{if(r.length===0)return A.dataIndex=p,A.group=ke,A;let g=Ue(r,p),l=r[g];if(p===l.headerLayoutIndex)return f.group=l,f;let h=p-l.headerLayoutIndex-1;return A.dataIndex=l.firstDataIndex+h,A.group=l,A},layoutToDataIndex:(p)=>{if(r.length===0)return p;let g=Ue(r,p),l=r[g];if(p===l.headerLayoutIndex)return-1;let h=p-l.headerLayoutIndex-1;return l.firstDataIndex+h},dataToLayoutIndex:(p)=>{if(r.length===0)return p;let g=rt(r,p),l=r[g],h=p-l.firstDataIndex;return l.headerLayoutIndex+1+h},getGroupAtLayoutIndex:(p)=>{if(r.length===0)return ke;let g=Ue(r,p);return r[g]},getGroupAtDataIndex:(p)=>{if(r.length===0)return ke;let g=rt(r,p);return r[g]},getHeaderHeight:i,rebuild:(p,g)=>{r=ot(p,e.getGroupForIndex,g??o),s=p+r.length}}};var Rt=(t,e,o,r,s=0)=>{let a=o?"width":"height",i=document.createElement("div");return i.className=`${e}-sticky-header`,i.setAttribute("role","presentation"),i.setAttribute("aria-hidden","true"),i.style.cssText="z-index:5;pointer-events:none;overflow:hidden;"+(o?`position:absolute;top:0;bottom:0;left:${s||0}px`:`position:relative;top:${s||0}px`),i.style[a]=`${r}px`,t.insertBefore(i,t.firstChild),i},lt=(t,e,o,r,s,a=!1,i=0,f,A)=>{let C=a?"width":"height",b=a?"height":"width",P=a?"X":"Y",F=(v,S)=>{v.style[C]=`${S}px`},y=f??Rt(t,s,a,0,i),B=()=>{let v=document.createElement("div");return v.className="sticky-group",v.style.position="absolute",v.style.willChange="transform",v.style[b]="100%",v},p=B(),g=B();y.append(p,g);let l=p,h=g,m=e.groups,E=[],z=[],O=[],R=0,V=()=>{m=e.groups,R=m.length,E=Array(R),z=Array(R),O=Array(R);for(let v=0;v<R;v++)E[v]=A?A(m[v].headerLayoutIndex):o.getOffset(m[v].headerLayoutIndex),z[v]=e.getHeaderHeight(v),O[v]=z[v]};V();let _=-1,Y=0,U=0,re=-1,ie=!1,Se=0,me=!1,pe=(v,S)=>{r(v,S);let w=z[S];return F(v,w),w},d=(v)=>{v.replaceChildren(),v.style.transform=""},n=(v)=>{if(v===_)return;if(_=v,Y=0,U=0,v<0||v>=R){d(l);return}Y=pe(l,v),U=O[v],F(y,Y),l.style.transform=""},u=(v)=>{if(v===Se)return;Se=v;let S=Math.round(v);l.style.transform=`translate${P}(${S}px)`,h.style.transform=`translate${P}(${S+Y}px)`},c=()=>{Se=0,l.style.transform="",h.style.transform=""},H=()=>{if(!me)return;let v=l;l=h,h=v,_=re,Y=_>=0?z[_]:0,U=_>=0?O[_]:0,F(y,Y),d(h),re=-1,me=!1,c()},T=()=>{if(!me)return;d(h),re=-1,me=!1,c()},N=!!f,k=()=>{if(ie)return;if(ie=!0,N)y.style.visibility="";else y.style.display=""},D=()=>{if(!ie)return;if(ie=!1,N)y.style.visibility="hidden";else y.style.display="none";d(l),_=-1,Y=0,U=0,T()},j=(v)=>{if(R===0){if(me)T();if(!ie)k();n(-1);return}if(v<E[0]){D();return}let S=0,w=R-1;while(S<w){let W=S+w+1>>>1;if(E[W]+O[W]<=v)S=W;else w=W-1}if(!ie)k();n(S);let X=S+1;if(X<R){let W=E[X]-v;if(W<=0&&W>-U){if(re!==X||!me)re=X,pe(h,X),me=!0;let K=U>0?W/U*Y:W;u(K)}else if(W<=-U){if(me)H()}else if(me)T()}else if(me)T()},ee=()=>{V();let v=_;if(_=-1,Y=0,U=0,v>=0)n(v)},Z=()=>{y.remove(),_=-1,Y=0,U=0,re=-1,ie=!1,me=!1};if(!f)y.style.display="none";return{update:j,refresh:ee,show:k,hide:D,destroy:Z}};var ut=(t)=>t!==null&&typeof t==="object"&&t.__groupHeader===!0;var ct=(t)=>{let e=Math.max(1,Math.floor(t.columns)),o=t.gap??0,r=t.isHeaderFn,s={row:0,col:0},a=(p)=>{if(p<=0)return 0;if(!r)return Math.ceil(p/e);let g=0,l=0,h=0;for(let m=0;m<p;m++)if(r(m)){if(h++,l)g++,l=0;g++,l=0}else if(l++,l>=e)g++,l=0;if(l)g++;return g},i=(p)=>(s.row=f(p),s.col=A(p),s),f=(p)=>{if(!r)return Math.floor(p/e);let g=0,l=0;for(let h=0;h<=p;h++)if(r(h)){if(l)g++,l=0;if(h===p)return g;g++,l=0}else{if(h===p)return g;if(l++,l>=e)g++,l=0}return g},A=(p)=>{if(!r)return p%e;if(r(p))return 0;let g=0;for(let l=0;l<=p;l++)if(r(l))g=0;else{if(l===p)return g;if(g++,g>=e)g=0}return g},C=(p,g,l,h)=>{if(l<=0){h.start=0,h.end=-1;return}if(!r){h.start=Math.max(0,p*e),h.end=Math.min(l-1,(g+1)*e-1);return}let m=b(p,g,l);h.start=m.start,h.end=m.end},b=(p,g,l)=>{if(l<=0)return{start:0,end:-1};if(!r){let O=Math.max(0,p*e),R=Math.min(l-1,(g+1)*e-1);return{start:O,end:R}}let h=-1,m=-1,E=0,z=0;for(let O=0;O<l;O++){if(r(O)){if(z)E++,z=0;if(E>=p&&E<=g){if(h<0)h=O;m=O}E++,z=0}else{if(E>=p&&E<=g){if(h<0)h=O;m=O}if(z++,z>=e)E++,z=0}if(E>g&&!z)break}if(h<0)return{start:0,end:-1};return{start:h,end:m}},P=(p,g,l)=>{if(g<0||g>=e)return-1;let h=p*e+g;if(h<0||h>=l)return-1;return h},F=(p)=>{let g=(e-1)*o;return Math.max(0,(p-g)/e)};return{get columns(){return e},get gap(){return o},update:(p)=>{if(p.columns!==void 0)e=Math.max(1,Math.floor(p.columns));if(p.gap!==void 0)o=p.gap;if(p.isHeaderFn!==void 0)r=p.isHeaderFn},getTotalRows:a,getPosition:i,getRow:f,getCol:A,getItemRange:b,fillItemRange:C,getItemIndex:P,getColumnWidth:F,getColumnOffset:(p,g)=>{let l=F(g);return p*(l+o)}}};var dt=(t,e=50,o=1/0,r=!0,s="none")=>{let a=t,i=[],f=0,A=0,C=()=>{i=a.map((m,E)=>({def:m,index:E,width:0,minWidth:wt(m.minWidth??e,1),maxWidth:m.maxWidth??o,resizable:m.resizable??r,offset:0}))},b=()=>{if(s==="none"||f<=0||f>=A)return;if(s==="spacer"){f=A;return}let m=A-f,E=f;for(let z=0;z<i.length;z++){let O=i[z];O.width=$e(O.width+m*(O.width/E),O.minWidth,O.maxWidth)}F()},P=(m)=>{if(A=m,i.length===0){f=0;return}let E=0,z=0;for(let O=0;O<i.length;O++){let R=i[O],V=R.def;if(V.width!==void 0)R.width=$e(V.width,R.minWidth,R.maxWidth),E+=R.width;else z++}if(z){let R=Math.max(0,m-E)/z;for(let V=0;V<i.length;V++){let _=i[V];if(_.def.width===void 0)_.width=$e(R,_.minWidth,_.maxWidth)}}F(),b()},F=()=>{let m=0;for(let E=0;E<i.length;E++){let z=i[E];z.offset=m,m+=z.width}f=m},y=(m,E)=>{if(m<0||m>=i.length)return 0;let z=i[m];if(!z.resizable)return z.width;let O=$e(E,z.minWidth,z.maxWidth);if(z.width=O,F(),s==="spacer")b();return O},B=(m)=>i[m],p=(m)=>{if(i.length===0)return;if(m<0)return i[0];if(m>=f)return i[i.length-1];let E=0,z=i.length-1;while(E<z){let O=E+z>>>1,R=i[O];if(m<R.offset)z=O-1;else if(m>=R.offset+R.width)E=O+1;else return R}return i[E]},g=(m)=>{if(m<0||m>=i.length)return 0;return i[m].offset},l=(m)=>{if(m<0||m>=i.length)return 0;return i[m].width},h=(m)=>{a=m,C()};return C(),{get columns(){return i},get totalWidth(){return f},resolve:P,updateColumns:h,resizeColumn:y,getColumn:B,getColumnAtX:p,getColumnOffset:g,getColumnWidth:l}},$e=(t,e,o)=>Math.min(o,Math.max(e,t)),wt=(t,e)=>Math.max(e,t);var mt=(t,e,o,r,s,a)=>{let i=document.createElement("div");i.setAttribute("role","rowgroup");let f=document.createElement("div");f.className=`${o}-table-header`,f.setAttribute("role","row"),f.setAttribute("aria-rowindex","1"),f.style.height=`${e}px`;let A=document.createElement("div");A.className=`${o}-table-header-scroll`,A.setAttribute("role","presentation"),f.appendChild(A),i.appendChild(f),t.insertBefore(i,t.firstChild),t.style.setProperty("--vlist-table-header-height",`${e}px`);let C=[],b=[],P=!0,F=null,y="asc",B=null,p=!1,g=-1,l=0,h=0,m=0,E=(n,u)=>{let c=document.createElement("div");c.className=`${o}-table-header-cell`,c.setAttribute("role","columnheader"),c.setAttribute("aria-colindex",String(u+1)),c.setAttribute("tabindex",u===0?"0":"-1"),c.dataset.columnKey=n.def.key;let H=n.def.align;if(H==="center")c.classList.add(`${o}-table-header-cell--center`);else if(H==="right")c.classList.add(`${o}-table-header-cell--right`);let T=document.createElement("div");T.className=`${o}-table-header-content`;let N=n.def.header?n.def.header(n.def):n.def.label;if(typeof N==="string")T.textContent=N;else T.appendChild(N);if(c.appendChild(T),n.def.sortable){let k=document.createElement("span");k.className=`${o}-table-header-sort`,k.setAttribute("aria-hidden","true"),c.appendChild(k),b.push(k),c.classList.add(`${o}-table-header-cell--sortable`)}else b.push(null);if(n.resizable){let k=document.createElement("div");k.className=`${o}-table-header-resize`,k.dataset.resizeIndex=String(u),c.appendChild(k)}return c},z=(n)=>{B=n,A.textContent="",C=[],b=[];let u=n.columns;for(let c=0;c<u.length;c++){let H=u[c],T=E(H,c);C.push(T),A.appendChild(T)}if(O(n),F)R(F,y)},O=(n)=>{B=n;let u=n.columns;A.style.width=`${n.totalWidth}px`;for(let c=0;c<C.length&&c<u.length;c++){let H=C[c],T=u[c];H.style.width=`${T.width}px`}},R=(n,u)=>{if(F=n,y=u,!B)return;let c=B.columns;for(let H=0;H<b.length&&H<c.length;H++){let T=b[H];if(!T)continue;if(c[H].def.key===n)T.textContent=u==="asc"?"▲":"▼",T.style.opacity="0.7",C[H].setAttribute("aria-sort",u==="asc"?"ascending":"descending");else T.textContent="",T.style.opacity="0",C[H].removeAttribute("aria-sort")}},V=(n)=>{A.style.transform=`translateX(${-n}px)`},_=(n)=>{let u=n.target;if(!u.dataset.resizeIndex)return;if(n.preventDefault(),n.stopPropagation(),g=+u.dataset.resizeIndex,!B)return;let c=B.getColumn(g);if(!c?.resizable)return;p=!0,l=n.clientX,h=c.width,t.classList.add(`${o}--col-resizing`),t.style.cursor="col-resize",u.classList.add(`${o}-table-header-resize--active`),u.setPointerCapture(n.pointerId),u.addEventListener("pointermove",Y),u.addEventListener("pointerup",U),u.addEventListener("pointercancel",U)},Y=(n)=>{if(!p||!B)return;let u=n.clientX-l;if(Math.abs(u)<1)return;let c=Math.max(0,h+u);r(g,c)},U=(n)=>{if(!p)return;let u=n.target;u.removeEventListener("pointermove",Y),u.removeEventListener("pointerup",U),u.removeEventListener("pointercancel",U);try{u.releasePointerCapture(n.pointerId)}catch{}u.classList.remove(`${o}-table-header-resize--active`),t.classList.remove(`${o}--col-resizing`),t.style.cursor="",p=!1,g=-1},re=(n)=>{let u=n.target;if(u.dataset.resizeIndex)return;if(p)return;let c=u;while(c&&!c.dataset.columnKey)if(c=c.parentElement,c===f||c===null)return;let H=c.dataset.columnKey;if(!B)return;let T=B.columns,N=-1;for(let D=0;D<T.length;D++)if(T[D].def.key===H){N=D;break}if(N===-1)return;let k=T[N];if(a)a({key:H,index:N,event:n});if(k.def.sortable&&s){let D;if(F===H)D=y==="asc"?"desc":null;else D="asc";s({key:H,index:N,direction:D})}},ie=(n)=>{if(n<0||n>=C.length)return;C[m]?.setAttribute("tabindex","-1"),m=n;let u=C[m];u.setAttribute("tabindex","0"),u.focus()},Se=(n)=>{let u=n.key;if(u==="ArrowRight"){if(n.ctrlKey||n.metaKey){if(!B)return;let c=B.getColumn(m);if(c?.resizable)r(m,c.width+10),n.preventDefault()}else if(m<C.length-1)ie(m+1),n.preventDefault();n.stopPropagation();return}if(u==="ArrowLeft"){if(n.ctrlKey||n.metaKey){if(!B)return;let c=B.getColumn(m);if(c?.resizable)r(m,c.width-10),n.preventDefault()}else if(m>0)ie(m-1),n.preventDefault();n.stopPropagation();return}if(u==="Home"){ie(0),n.preventDefault(),n.stopPropagation();return}if(u==="End"){ie(C.length-1),n.preventDefault(),n.stopPropagation();return}if(u==="Enter"||u===" "){if(!B)return;let c=B.getColumn(m);if(c?.def.sortable&&s){let H;if(F===c.def.key)H=y==="asc"?"desc":null;else H="asc";s({key:c.def.key,index:m,direction:H}),n.preventDefault()}n.stopPropagation();return}if(u==="ArrowDown"){t.focus(),n.preventDefault(),n.stopPropagation();return}};return f.addEventListener("pointerdown",_),f.addEventListener("click",re),f.addEventListener("keydown",Se),{element:f,update:O,updateSort:R,rebuild:z,show:()=>{if(P)return;P=!0,f.style.display=""},hide:()=>{if(!P)return;P=!1,f.style.display="none"},destroy:()=>{f.removeEventListener("pointerdown",_),f.removeEventListener("click",re),f.removeEventListener("keydown",Se),t.style.removeProperty("--vlist-table-header-height"),i.remove(),C=[],b=[],B=null,P=!1},syncScroll:V}};var Ge=(t,e,o)=>{if(String(o).startsWith(we))return!1;let r=we+e;if(t.has(r))return t.delete(r),t.add(o),!0;return!1},ft=(t)=>({selected:new Set(t??[]),focusedIndex:-1,focusVisible:!1}),Ye=(t,e,o)=>{if(o==="none")return t;let r=new Set(t.selected);if(o==="single"){if(r.clear(),e.length>0)r.add(e[0])}else for(let s of e)r.add(s);return{...t,selected:r}},Ze=(t,e)=>{let o=new Set(t.selected);for(let r of e)o.delete(r);return{...t,selected:o}},pt=(t,e,o)=>{if(o==="none")return t;if(t.selected.has(e))return Ze(t,[e]);else return Ye(t,[e],o)},bt=(t,e,o)=>{if(o!=="multiple")return t;return{...t,selected:new Set(e.map((r)=>r.id))}},gt=(t)=>({...t,selected:new Set});var ht=(t,e)=>t.selected.has(e),yt=(t)=>Array.from(t.selected),St=(t,e)=>{let o=[];for(let r of t.selected){let s=e(r);if(s)o.push(s)}return o};var kt=()=>{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}}},vt=(t,e,o,r,s,a,i,f,A,C=()=>0)=>{let b=kt(),P=new Map,F=-1,y=o,B=null,p=null,g=null,l=(S,w)=>{p=S,g=w},h=(S,w)=>{w?S.setAttribute("aria-selected","true"):S.removeAttribute("aria-selected")},m=(S,w,X,W)=>{S.setAttribute("role",w),S.setAttribute("data-id",String(X)),S.setAttribute("data-index",String(W))},E=(S)=>String(S).startsWith("__placeholder_"),z=`${s}-item ${s}-table-row`,O=`${s}-item--selected`,R=`${s}-item--focused`,V=`${s}-table-cell`,_=`${s}-table-cell--center`,Y=`${s}-table-cell--right`,U=`${s}-table-cell-skeleton`,re=`${s}-item--odd`,ie=`${s}-item--placeholder`,Se=`${s}-item--replaced`,me=`${s}-table-row ${s}-table-group-header`,pe=`${s}-table-group-header-content`,d=(S,w,X,W,K=!1)=>{if(X.def.cell){let I=X.def.cell(w,X.def,W);if(typeof I==="string")S.innerHTML=I;else S.replaceChildren(I)}else{let I=w[X.def.key],le=I!=null?String(I):"";if(K&&le)S.innerHTML=`<span>${le}</span>`;else S.textContent=le}if(K&&S.firstElementChild===null){S.replaceChildren();let I=document.createElement("span");I.className=U,S.appendChild(I)}Re(S);let J=S.parentElement;if(J)J._stamp=0},n=(S,w,X,W,K=!1)=>{let J=z;if(f){if(B){let I=B(w);if(I>=0&&(I&1)===1)J+=` ${re}`}else if((w&1)===1)J+=` ${re}`}if(K)J+=` ${ie}`;if(X)J+=` ${O}`;if(W)J+=` ${R}`;S.className=J},u=(S,w)=>{let X=w.def.align;if(X==="center")S.classList.add(_),S.classList.remove(Y);else if(X==="right")S.classList.add(Y),S.classList.remove(_);else S.classList.remove(_,Y)},c=(S,w)=>{let W=y.columns.length;if(w.length===W)return w;let K=[];for(let J=0;J<W;J++){let I;if(J<w.length)I=w[J];else I=document.createElement("div"),I.className=V,S.appendChild(I);K.push(I)}for(let J=W;J<w.length;J++)w[J].remove();return K},H=(S,w,X,W)=>{let K=b.acquire(),J=S,I=X.getSize(w),le=X.getOffset(w)-W;K.style.cssText=`width:${y.totalWidth}px;height:${I}px;transform:translateY(${le}px)`,K.className=me,m(K,"presentation",S.id,w),K.removeAttribute("aria-selected"),K.removeAttribute("aria-rowindex"),K.replaceChildren();let se=document.createElement("div");if(se.className=pe,g){let te=g(J.groupKey,J.groupIndex);if(typeof te==="string")se.innerHTML=te;else se.appendChild(te)}return K.appendChild(se),Re(K),{element:K,cells:[],index:w,isGroupHeader:!0,_lastItem:S,lastItemId:S.id,lastSelected:!1,lastFocused:!1,lastOffset:le,lastHeight:I}},T=(S,w,X,W,K,J)=>{let I=b.acquire(),le=K.getSize(w),se=K.getOffset(w)-J,te=E(S.id);I.style.cssText=`width:${y.totalWidth}px;height:${le}px;transform:translateY(${se}px)`,n(I,w,X,W,te),m(I,"row",S.id,w),I.id=`${a}-item-${w}`,I.setAttribute("aria-rowindex",String(w+2)),h(I,X);let Le=c(I,[]),x=y.columns;for(let M=0;M<Le.length&&M<x.length;M++){let q=Le[M],Q=x[M];q.style.cssText=`left:${Q.offset}px;width:${Q.width}px`,q.setAttribute("role","gridcell"),q.setAttribute("aria-colindex",String(M+1)),u(q,Q),d(q,S,Q,w,te)}return{element:I,cells:Le,index:w,isGroupHeader:!1,_lastItem:S,lastItemId:S.id,lastSelected:X,lastFocused:W,lastOffset:se,lastHeight:le}},N=(S,w,X,W,K=C())=>{let J=!1,I=i();if(I!==F)F=I,J=!0;let le=null,se=e();B=typeof f==="string"&&A?A():null;for(let te=w.start;te<=w.end;te++){let Le=te-w.start,x=S[Le];if(!x)continue;let M=X.has(x.id),q=te===W,Q=p?p(x):!1,G=P.get(te);if(G){if(G.isGroupHeader!==Q){b.release(G.element),P.delete(te);let be=Q?H(x,te,se,K):T(x,te,M,q,se,K);if(P.set(te,be),!le)le=document.createDocumentFragment();le.appendChild(be.element);continue}if(Q){if(G._lastItem!==x){let oe=x,ue=G.element.firstElementChild;if(ue&&g){let he=g(oe.groupKey,oe.groupIndex);if(typeof he==="string")ue.innerHTML=he;else ue.replaceChildren(he);Re(G.element)}G.element.setAttribute("data-id",String(x.id)),G._lastItem=x,G.lastItemId=x.id}let ge=se.getOffset(te)-K;if(G.lastOffset!==ge)G.lastOffset=ge,G.element.style.transform=`translateY(${ge}px)`;let Te=se.getSize(te);if(G.lastHeight!==Te)G.lastHeight=Te,G.element.style.height=`${Te}px`}else{let be=G._lastItem!==x,ge=G.lastSelected!==M,Te=G.lastFocused!==q;if(be){let he=G.lastItemId!=null&&E(G.lastItemId),xe=E(x.id);if(!xe&&Ge(X,te,x.id))M=!0;let fe=y.columns;for(let ce=0;ce<G.cells.length&&ce<fe.length;ce++)d(G.cells[ce],x,fe[ce],te,xe);if(n(G.element,te,M,q,xe),G.element.setAttribute("data-id",String(x.id)),h(G.element,M),he&&!xe)G.element.classList.add(Se),setTimeout(()=>{G.element.classList.remove(Se)},300);G._lastItem=x,G.lastItemId=x.id,G.lastSelected=M,G.lastFocused=q}else if(ge||Te)n(G.element,te,M,q,E(x.id)),h(G.element,M),G.lastSelected=M,G.lastFocused=q;let oe=se.getOffset(te)-K;if(G.lastOffset!==oe)G.lastOffset=oe,G.element.style.transform=`translateY(${oe}px)`;let ue=se.getSize(te);if(G.lastHeight!==ue)G.lastHeight=ue,G.element.style.height=`${ue}px`;if(J)G.element.setAttribute("aria-rowindex",String(te+2))}}else{if(Ge(X,te,x.id))M=!0;let be=Q?H(x,te,se,K):T(x,te,M,q,se,K);if(P.set(te,be),!le)le=document.createDocumentFragment();le.appendChild(be.element)}}if(le)t.appendChild(le);for(let[te,Le]of P)if(te<w.start||te>w.end)b.release(Le.element),P.delete(te)},k=(S,w,X,W)=>{let K=P.get(S);if(!K)return;if(K.isGroupHeader)return;let J=y.columns;for(let I=0;I<K.cells.length&&I<J.length;I++)d(K.cells[I],w,J[I],S);K.element.setAttribute("data-id",String(w.id)),K._lastItem=w,K.lastItemId=w.id,n(K.element,S,X,W),h(K.element,X),K.lastSelected=X,K.lastFocused=W},D=(S,w,X)=>{let W=P.get(S);if(!W)return;if(W.isGroupHeader)return;let K=W.lastSelected!==w,J=W.lastFocused!==X;if(K||J)n(W.element,S,w,X),h(W.element,w),W.lastSelected=w,W.lastFocused=X},j=(S)=>{y=S;let w=S.columns;for(let[,X]of P)if(X.element.style.width=`${S.totalWidth}px`,X.cells.length>0)for(let W=0;W<X.cells.length&&W<w.length;W++){let K=X.cells[W],J=w[W];K.style.left=`${J.offset}px`,K.style.width=`${J.width}px`}},ee=(S)=>P.get(S)?.element,Z=()=>{for(let[,S]of P)b.release(S.element);P.clear(),F=-1};return{render:N,updateItem:k,updateItemClasses:D,getElement:ee,updateColumnLayout:j,setGroupHeaderFn:l,clear:Z,destroy:()=>{Z(),b.clear()}}};var xt=(t)=>{let e=Math.max(1,Math.floor(t.columns)),o=t.gap??0,r=t.containerSize,s=t.crossOffset??0,a=t.mainOffset??0,i=0,f=[],A=()=>{let l=(e-1)*o;i=Math.max(0,(r-l)/e),f=Array(e);let h=i+o;for(let m=0;m<e;m++)f[m]=s+m*h};A();let C=[],b=0,P=[],F=(l,h)=>{if(l<=0)return b=0,C=[],[];let m=Array(e).fill(a),E=Array(e);for(let R=0;R<e;R++)E[R]=[];let z=Array(l);for(let R=0;R<l;R++){let V=0,_=m[0];for(let re=1;re<e;re++){let ie=m[re];if(ie<_)_=ie,V=re}let Y=h(R),U=m[V];z[R]={index:R,x:f[V],y:U,lane:V,size:Y,crossSize:i},E[V].push(R),m[V]=U+Y+o}C=E;let O=0;for(let R=0;R<e;R++){let V=m[R],_=V>0?V-o:0;if(_>O)O=_}return b=O,z},y=(l)=>{if(l.length===0)return b;if(b)return b;let h=Array(e).fill(0);for(let E of l){let z=E.y+E.size,O=h[E.lane];if(z>O)h[E.lane]=z}let m=0;for(let E=0;E<e;E++)if(h[E]>m)m=h[E];return m},B=(l,h,m)=>{if(l.length===0||m<=h)return P.length=0,P;if(C.length===0||C.length!==e)return p(l,h,m);P.length=0;for(let E=0;E<e;E++){let z=C[E],O=z.length;if(!O)continue;let R=0,V=O;while(R<V){let _=R+V>>>1,Y=l[z[_]];if(Y.y+Y.size<=h)R=_+1;else V=_}for(let _=R;_<O;_++){let Y=l[z[_]];if(Y.y>=m)break;P.push(Y)}}return P},p=(l,h,m)=>{P.length=0;for(let E of l)if(E.y+E.size>h&&E.y<m)P.push(E);return P};return{get columns(){return e},get gap(){return o},get containerSize(){return r},update:(l)=>{let h=!1;if(l.columns!==void 0){let m=Math.max(1,Math.floor(l.columns));if(m!==e)e=m,h=!0}if(l.gap!==void 0&&l.gap!==o)o=l.gap,h=!0;if(l.containerSize!==void 0&&l.containerSize!==r)r=l.containerSize,h=!0;if(l.crossOffset!==void 0&&l.crossOffset!==s)s=l.crossOffset,h=!0;if(l.mainOffset!==void 0&&l.mainOffset!==a)a=l.mainOffset,h=!0;if(h)A()},calculateLayout:F,getTotalSize:y,getVisibleItems:B}};var Tt=(t,e,o)=>{let r=Array.from(e).sort((i,f)=>i-f);if(r.length<=1)return;let s=[];for(let i=0;i<r.length;i++){let f=o(r[i]);if(f)s.push(f)}if(s.length<=1)return;let a=t.firstChild;for(let i=0;i<s.length;i++){let f=s[i];if(f===a)a=a.nextSibling;else t.insertBefore(f,a)}};var _t=(t=200)=>{let e=[];return{acquire:()=>{let a=e.pop();if(a)return a;let i=document.createElement("div");return i.setAttribute("role","option"),i},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}}},Pt=1,It=(t,e,o,r=!1,s,a,i,f,A=()=>0)=>{let C=_t(),b=new Map,P=new Set,F=0,y="",B=-1,p=!1,g={selected:!1,focused:!1},l=(d,n)=>(g.selected=d,g.focused=n,g),h=`${o}-item ${o}-masonry-item`,m=`${o}-group-header`,E=`${o}-item--selected`,z=`${o}-item--focused`,O=(d,n)=>{if(typeof n==="string")d.innerHTML=n;else d.replaceChildren(n);Re(d)},R=(d,n,u)=>{d.classList.toggle(E,n),d.classList.toggle(z,u)},V=(d,n)=>{let u=Math.round(n.y-U);if(r)d.style.transform=`translate(${u}px, ${Math.round(n.x)}px)`;else d.style.transform=`translate(${Math.round(n.x)}px, ${u}px)`},_=(d,n)=>{if(r)d.style.width=`${n.size}px`,d.style.height=`${n.crossSize}px`;else d.style.width=`${n.crossSize}px`,d.style.height=`${n.size}px`},Y=(d,n,u,c,H)=>{let T=C.acquire(),N=n.__groupHeader,k=l(c,H);if(T.className=N?m:h,T.dataset.index=String(d),T.dataset.id=String(n.id),T.dataset.lane=String(u.lane),N)T.setAttribute("role","presentation"),T.removeAttribute("aria-selected"),T.removeAttribute("aria-setsize"),T.removeAttribute("aria-posinset"),T.removeAttribute("id");else if(p){if(T.setAttribute("role","option"),T.ariaSelected=String(c),a)T.id=`${a}-item-${d}`;if(s){let j=s();if(j!==B)B=j,y=String(j);T.setAttribute("aria-setsize",y);let ee=i?i(d):d+1;T.setAttribute("aria-posinset",String(ee))}}else T.setAttribute("role","listitem"),T.removeAttribute("aria-selected"),T.removeAttribute("aria-setsize"),T.removeAttribute("aria-posinset"),T.removeAttribute("id");_(T,u);let D=e(n,d,k);return O(T,D),R(T,c,H),V(T,u),{element:T,lastItem:n,lastSelected:c,lastFocused:H,lastY:u.y-U,absY:u.y,lastX:u.x,lastSize:u.size,lastCrossSize:u.crossSize,lastSeenFrame:F}},U=0,re=(d,n,u,c,H=A())=>{if(U=H,F++,p=typeof f==="function"?f():f===!0,p&&s){let N=s();if(N!==B){B=N,y=String(N);for(let k of b.values())if(k.element.getAttribute("role")==="option")k.element.setAttribute("aria-setsize",y)}}P.clear();for(let N=0;N<n.length;N++)P.add(n[N].index);let T=null;for(let N=0;N<n.length;N++){let k=n[N],D=k.index,j=d(D);if(!j)continue;let ee=u.has(j.id),Z=D===c,v=b.get(D);if(v){let S=v.lastItem!==j,w=v.lastSelected!==ee,X=v.lastFocused!==Z,W=v.lastY!==k.y-U||v.lastX!==k.x,K=v.lastSize!==k.size||v.lastCrossSize!==k.crossSize;if(S){let J=l(ee,Z),I=e(j,D,J);if(O(v.element,I),v.element.dataset.id=String(j.id),v.lastItem=j,!j.__groupHeader&&p){let se=i?i(D):D+1;v.element.setAttribute("aria-posinset",String(se))}}if(S||w||X){if(R(v.element,ee,Z),p)v.element.ariaSelected=String(ee);else v.element.removeAttribute("aria-selected");v.lastSelected=ee,v.lastFocused=Z}if(K)_(v.element,k),v.lastSize=k.size,v.lastCrossSize=k.crossSize;if(W)V(v.element,k),v.lastY=k.y-U,v.absY=k.y,v.lastX=k.x}else{let S=Y(D,j,k,ee,Z);if(!T)T=document.createDocumentFragment();T.appendChild(S.element),b.set(D,S)}}if(T)t.appendChild(T);for(let[N,k]of b)if(P.has(N))k.lastSeenFrame=F;else if(F-k.lastSeenFrame>Pt)C.release(k.element),b.delete(N);else{let D=Math.round(k.absY-U);if(D!==k.lastY){k.lastY=D;let j=Math.round(k.lastX);k.element.style.transform=r?`translate(${D}px, ${j}px)`:`translate(${j}px, ${D}px)`}}},ie=()=>{for(let d of b.values())C.release(d.element);b.clear(),t.innerHTML=""};return{render:re,getElement:(d)=>b.get(d)?.element,updateItemClasses:(d,n,u)=>{let c=b.get(d);if(!c)return;let H=c.lastSelected!==n,T=c.lastFocused!==u;if(H||T)R(c.element,n,u),c.lastSelected=n,c.lastFocused=u},sortDOM:()=>{Tt(t,b.keys(),(d)=>b.get(d)?.element)},clear:ie,destroy:()=>{ie(),C.clear()}}};var Ot=(t,e,o)=>{let r=e;return{getOffset:(s)=>s*t,getSize:(s)=>t,indexAtOffset:(s)=>{if(r===0||t===0)return 0;return Math.max(0,Math.min(Math.floor(s/t),r-1))},getTotalSize:()=>{let s=r*t;return s>0?s-o:0},getTotal:()=>r,rebuild:(s)=>{r=s},invalidate:()=>{},isVariable:()=>!1}};var Lt=(t,e,o,r)=>{while(e<o){let s=e+o+1>>>1;if(t[s]<=r)e=s;else o=s-1}return e},Dt=(t,e,o)=>{let r=0,s=0,a=new Float64Array(0),i=new Float64Array(0),f=new Float64Array(1),A=(b,P)=>{for(let F=b;F<s;F++){if(F<=P){let y=F<<9,B=Math.min(y+512,r),p=0;for(let g=y;g<B;g++)a[g]=p,p+=t(g);i[F]=p}f[F+1]=f[F]+i[F]}},C=(b)=>{r=b,s=Math.ceil(b/512),a=new Float64Array(b),i=new Float64Array(s),f=new Float64Array(s+1),A(0,s-1)};return C(e),{getOffset:(b)=>{if(b<=0)return 0;if(b>=r)return f[s];return f[b>>>9]+a[b]},getSize:(b)=>t(b),indexAtOffset:(b)=>{if(r===0||b<=0)return 0;if(b>=f[s])return r-1;let P=Lt(f,0,s-1,b),F=P<<9;return Lt(a,F,Math.min(F+512,r)-1,b-f[P])},getTotalSize:()=>{let b=f[s];return b>0?b-o:0},getTotal:()=>r,rebuild:(b)=>C(b),invalidate:(b,P=b)=>{if(b>=0&&P<r)A(b>>>9,P>>>9)},isVariable:()=>!0}},Ct=(t,e,o=0)=>{if(typeof t==="number")return Ot(t,e,o);return Dt(t,e,o)};var Et=()=>{let t={},e=(a,i)=>{if(!t[a])t[a]=new Set;return t[a].add(i),()=>o(a,i)},o=(a,i)=>{t[a]?.delete(i)};return{on:e,off:o,emit:(a,i)=>{t[a]?.forEach((f)=>{try{f(i)}catch(A){}})},clear:(a)=>{if(a)delete t[a];else for(let i in t)delete t[i]}}};var Fe=(t={})=>{let{chunkSize:e=100,maxCachedItems:o=5000,evictionBuffer:r=200,onEvict:s}=t,a=new Map,i=0,f=0,A=(d)=>{let n=a.get(d);if(!n)n={items:Array(e),count:0,lastAccess:Date.now()},a.set(d,n);else n.lastAccess=Date.now();return n},C=(d)=>Math.floor(d/e),b=(d)=>d%e,P=()=>i,F=(d)=>{i=d},y=(d)=>{if(d<0||d>=i)return;let n=C(d),u=a.get(n);if(!u)return;return u.items[b(d)]},B=(d)=>{if(d<0||d>=i)return!1;let n=C(d),u=a.get(n);if(!u)return!1;return u.items[b(d)]!==void 0},p=(d,n)=>{let u=C(d),c=A(u),H=b(d),T=c.items[H]===void 0;if(c.items[H]=n,T)c.count++,f++;if(d>=i)i=d+1},g=(d,n)=>{for(let u=0;u<n.length;u++){let c=n[u];if(c!==void 0)p(d+u,c)}},l=(d,n)=>{if(d<0||d>i)return;let u=C(d),c=Array.from(a.keys()).filter((D)=>D>=u).sort((D,j)=>D-j),H=[];for(let D of c){let j=a.get(D),ee=D*e;for(let Z=0;Z<e;Z++){if(j.items[Z]===void 0)continue;let v=ee+Z;if(v<d)continue;H.push({oldIndex:v,item:j.items[Z]})}}for(let{oldIndex:D}of H){let j=C(D),ee=a.get(j);if(!ee)continue;let Z=b(D);if(ee.items[Z]!==void 0){if(ee.items[Z]=void 0,ee.count--,f--,ee.count===0)a.delete(j)}}i++;for(let{oldIndex:D,item:j}of H){let ee=D+1,Z=C(ee),v=A(Z),S=b(ee);v.items[S]=j,v.count++,f++}let T=C(d),N=A(T),k=b(d);N.items[k]=n,N.count++,f++},h=(d)=>{if(d<0||d>=i)return!1;let n=C(d),u=a.get(n),c=b(d);if(!(u!==void 0&&u.items[c]!==void 0))return!1;let T=n,N=Array.from(a.keys()).filter((D)=>D>=T).sort((D,j)=>D-j),k=[];for(let D of N){let j=a.get(D),ee=D*e;for(let Z=0;Z<e;Z++){if(j.items[Z]===void 0)continue;let v=ee+Z;if(v<=d)continue;k.push({oldIndex:v,item:j.items[Z]})}}if(u.items[c]=void 0,u.count--,f--,u.count===0)a.delete(n);for(let{oldIndex:D}of k){let j=C(D),ee=a.get(j);if(!ee)continue;let Z=b(D);if(ee.items[Z]!==void 0){if(ee.items[Z]=void 0,ee.count--,f--,ee.count===0)a.delete(j)}}for(let{oldIndex:D,item:j}of k){let ee=D-1,Z=C(ee),v=A(Z),S=b(ee);v.items[S]=j,v.count++,f++}return i--,!0},m=(d,n)=>{let u=[];for(let c=d;c<=n&&c<i;c++)u.push(y(c));return u},E=(d,n)=>{for(let u=d;u<=n&&u<i;u++)if(!B(u))return!1;return!0},z=()=>{let d=[],n=null,u=Array.from(a.keys()).sort((c,H)=>c-H);for(let c of u){let H=a.get(c);if(!H)continue;let T=c*e;for(let N=0;N<e;N++){let k=T+N;if(k>=i)break;if(H.items[N]!==void 0)if(n===null)n={start:k,end:k};else if(k===n.end+1)n.end=k;else d.push(n),n={start:k,end:k};else if(n!==null)d.push(n),n=null}}if(n!==null)d.push(n);return d},O=(d,n)=>{let u=[],c=null;for(let H=d;H<=n&&H<i;H++)if(!B(H))if(c===null)c={start:H,end:H};else c.end=H;else if(c!==null)u.push(c),c=null;if(c!==null)u.push(c);return u},R=(d)=>a.has(d),V=(d)=>{let n=a.get(d);if(!n)return!1;let u=d*e,c=Math.min(e,i-u);return n.count>=c},_=(d)=>{let n=a.get(d);if(n)n.lastAccess=Date.now()},Y=(d,n)=>{if(d>n||a.size===0)return;let u=Date.now(),c=C(Math.max(0,d)),H=C(Math.min(i-1,n));for(let T=c;T<=H;T++){let N=a.get(T);if(N)N.lastAccess=u}},U=(d,n)=>{if(f<=o)return 0;let u=Math.max(0,d-r),c=Math.min(i-1,n+r),H=C(u),T=C(c),N=0,k=[];for(let[D,j]of a)if(D<H||D>T)N+=j.count,k.push(D),f-=j.count,a.delete(D);if(N>0&&s)s(N,k);return N},re=()=>{if(f<=o)return 0;let d=Array.from(a.entries()).sort(([,c],[,H])=>c.lastAccess-H.lastAccess),n=0,u=[];for(let[c,H]of d){if(f<=o)break;n+=H.count,f-=H.count,u.push(c),a.delete(c)}if(n>0&&s)s(n,u);return n},ie=()=>({totalItems:i,cachedItems:f,cachedChunks:a.size,chunkSize:e,maxCachedItems:o,memoryEfficiency:i>0?1-f/i:1}),Se=()=>f,me=()=>{a.clear(),f=0};return{chunkSize:e,maxCachedItems:o,getTotal:P,setTotal:F,get:y,has:B,set:p,setRange:g,insert:l,delete:h,getRange:m,isRangeLoaded:E,getLoadedRanges:z,findUnloadedRanges:O,getChunkIndex:C,isChunkLoaded:R,isChunkFullyLoaded:V,touchChunk:_,touchChunksForRange:Y,evictDistant:U,evictToLimit:re,getStats:ie,getCachedCount:Se,clear:me,reset:()=>{me(),i=0}}},Ve=(t)=>{if(t.length===0)return[];let e=[...t].sort((r,s)=>r.start-s.start),o=[{...e[0]}];for(let r=1;r<e.length;r++){let s=e[r],a=o[o.length-1];if(s.start<=a.end+1)a.end=Math.max(a.end,s.end);else o.push({...s})}return o},qe=(t,e,o)=>{let r=Math.floor(t.start/o)*o,s=Math.ceil((t.end+1)/o)*o-1,a={start:r,end:s};if(e.length===0)return[a];let i=[],f=Ve(e),A=a.start;for(let C of f){if(C.end<A)continue;if(C.start>a.end)break;if(C.start>A)i.push({start:A,end:Math.min(C.start-1,a.end)});if(A=C.end+1,A>a.end)break}if(A<=a.end)i.push({start:A,end:a.end});return i};var Be=(t={})=>{let{maskCharacter:e=tt,maxSampleSize:o=nt}=t,r=[],s=!1,a=(b)=>{if(s||b.length===0)return;let P=Math.min(b.length,o);for(let F=0;F<P;F++){let y=b[F];if(!y||typeof y!=="object")continue;let B={},p=!1;for(let[g,l]of Object.entries(y)){if(g.startsWith("_")||g==="id")continue;B[g]=String(l??"").length,p=!0}if(p)r.push(B)}s=!0},i=()=>s,f=(b)=>{let P={id:`${we}${b}`,[We]:!0,_index:b};if(r.length===0)return P.label=e.repeat(12),P;let F=r[b%r.length];for(let[y,B]of Object.entries(F))P[y]=e.repeat(Math.max(1,B));return P};return{analyzeStructure:a,hasAnalyzedStructure:i,generate:f,generateRange:(b,P)=>{let F=[];for(let y=b;y<=P;y++)F.push(f(y));return F},clear:()=>{r=[],s=!1}}},He=(t)=>{if(!t||typeof t!=="object")return!1;return t[We]===!0},Xe=(t)=>t.filter((e)=>!He(e));var $t=50,Mt=(t={})=>{let{adapter:e,initialItems:o,initialTotal:r,storage:s,placeholder:a,pageSize:i=$t,maxConcurrent:f=0,onStateChange:A,onDataChange:C,onItemsLoaded:b,onItemsEvicted:P,onLoadError:F}=t,y=Fe({...s,onEvict:(x,M)=>{P?.(x),U(),Y()}}),B=null,p=()=>{if(!B)B=Be(a);return B},g=new Map,l=!1,h,m=!0,E,z,O=[],R=0,V=new Map,_=()=>{for(let x of V.values())x[1].abort();V.clear()},Y=()=>{A?.(c())},U=()=>{C?.()},re=()=>{g.clear();let x=y.getLoadedRanges();for(let M of x)for(let q=M.start;q<=M.end;q++){let Q=y.get(q);if(Q&&!He(Q))g.set(Q.id,q)}},ie=(x,M)=>{if(!He(M))g.set(M.id,x)},Se=(x)=>{g.delete(x)},me=(x,M)=>`${x}-${M}`,pe=()=>y.getTotal(),d=()=>y.getCachedCount(),n=()=>l,u=()=>m,c=()=>({total:y.getTotal(),cached:y.getCachedCount(),isLoading:l,pendingRanges:O,error:h,hasMore:m,cursor:E}),H=()=>y,T=()=>p(),N=(x)=>{let M=y.get(x);if(M!==void 0)return M;if(x>=0&&x<y.getTotal())return p().generate(x);return},k=(x)=>{let M=g.get(x);if(M===void 0)return;return y.get(M)},D=(x)=>g.get(x)??-1,j=(x)=>{let M=y.get(x);return M!==void 0&&!He(M)},ee=(x,M)=>{let q=[],Q=y.getTotal();y.touchChunksForRange(x,Math.min(M,Q-1));for(let G=x;G<=M&&G<Q;G++){let be=y.get(G);if(be!==void 0)q.push(be);else q.push(p().generate(G))}return q},Z=(x)=>{y.setTotal(x),m=y.getCachedCount()<x,U(),Y()},v=(x,M=0,q)=>{if(e&&x.length>0){let Q=p();if(!Q.hasAnalyzedStructure())Q.analyzeStructure(x)}for(let Q=0;Q<x.length;Q++){let G=x[Q];if(G!==void 0){let be=M+Q;y.set(be,G),ie(be,G)}}if(q!==void 0)y.setTotal(q);else if(M+x.length>y.getTotal())y.setTotal(M+x.length);if(y.getCachedCount()>=y.getTotal()&&y.getTotal()>0)m=!1;U(),Y(),b?.(x,M,y.getTotal())},S=(x,M)=>{let q=y.get(x);if(!q)return!1;let Q=q.id,G={...q,...M};if(y.set(x,G),M.id!==void 0&&M.id!==Q)Se(Q);return ie(x,G),U(),Y(),!0},w=(x,M)=>{y.insert(M,x),re(),_(),U(),Y()},X=(x)=>{let M=g.get(x);if(M===void 0)return!1;if(!y.delete(M))return!1;return re(),_(),U(),Y(),!0},W=async(x,M)=>{if(!e)return;let q=y.chunkSize,Q=Math.floor(x/q),G=Math.floor(M/q),be=q*2;for(let[oe,ue]of V){let he=oe.indexOf("-"),xe=parseInt(oe.slice(0,he),10);if(Math.abs(xe-x)>be)ue[1].abort(),V.delete(oe)}let ge=[],Te=[];for(let oe=Q;oe<=G;oe++){let ue=oe*q,he=ue+q-1,xe=me(ue,he);if(y.isChunkFullyLoaded(oe))continue;let ce=V.get(xe);if(ce)Te.push(ce[0]);else ge.push({start:ue,end:he})}if(ge.length===0){if(Te.length>0)await Promise.all(Te);return}if(f>0){let oe=V.size+ge.length;if(oe>f){let ue=(x+M)/2,he=Math.min(oe-f,V.size);while(he>0){let fe=null,ce=-1,ve=null;for(let[Ce,Ne]of V){let Pe=Ce.indexOf("-"),Oe=parseInt(Ce.slice(0,Pe),10),De=parseInt(Ce.slice(Pe+1),10),Ee=Math.abs((Oe+De)/2-ue);if(Ee>ce)ce=Ee,fe=Ce,ve=Ne[1]}if(fe)ve.abort(),V.delete(fe);he--}let xe=f-V.size;if(ge.length>xe)ge.sort((fe,ce)=>{let ve=Math.abs((fe.start+fe.end)/2-ue),Ce=Math.abs((ce.start+ce.end)/2-ue);return ve-Ce}),ge.length=Math.max(0,xe)}}if(ge.length===0){if(Te.length>0)await Promise.all(Te);return}for(let oe of ge){let ue=me(oe.start,oe.end),he=new AbortController,xe=(async()=>{O.push(oe),l=!0,h=void 0,Y();try{let fe=oe.end-oe.start+1,ce={offset:oe.start,limit:fe,cursor:oe.start===z?E:void 0,signal:he.signal},ve=await e.read(ce);if(v(ve.items,oe.start,ve.total),ve.cursor)E=ve.cursor,z=oe.start+ve.items.length;let Ce=oe.start+ve.items.length;if(Ce>=R){if(R=Ce,ve.hasMore!==void 0)m=ve.hasMore;else if(ve.total!==void 0)m=Ce<ve.total}}catch(fe){if(fe?.name==="AbortError")return;h=fe instanceof Error?fe:Error(String(fe)),F?.(h,oe)}finally{V.delete(ue);let fe=O.findIndex((ce)=>ce.start===oe.start&&ce.end===oe.end);if(fe>=0)O.splice(fe,1);l=V.size>0,Y()}})();V.set(ue,[xe,he]),Te.push(xe)}await Promise.all(Te)},K=async(x,M)=>{if(y.isRangeLoaded(x,M))return;await W(x,M)},J=async()=>{if(!e)return;await W(0,i-1)},I=async()=>{if(!e||l||!m)return!1;let x=y.getCachedCount(),M=y.getTotal(),q=x,Q=Math.min(q+i-1,M>0?M-1:q+i-1);if(q>=M&&M>0)return m=!1,!1;return await W(q,Q),y.getCachedCount()>x},le=async()=>{if(y.clear(),g.clear(),B)B.clear();_(),O=[],l=!1,E=void 0,z=void 0,m=!0,R=0,h=void 0,U(),Y()},se=(x,M)=>{if(y.evictDistant(x,M)>0)re()},te=()=>{y.clear(),g.clear(),E=void 0,z=void 0,h=void 0,O=[],l=!1,U(),Y()},Le=()=>{if(y.reset(),g.clear(),B)B.clear();E=void 0,z=void 0,m=!0,R=0,h=void 0,O=[],l=!1,U(),Y()};if(o&&o.length>0)v(o,0,r??o.length);else if(r!==void 0)y.setTotal(r),U(),Y();return{getState:c,getTotal:pe,getCached:d,getIsLoading:n,getHasMore:u,getStorage:H,getPlaceholders:T,getItem:N,getItemById:k,getIndexById:D,isItemLoaded:j,getItemsInRange:ee,setTotal:Z,setItems:v,updateItem:S,insertItem:w,removeItem:X,loadRange:W,ensureRange:K,loadInitial:J,loadMore:I,reload:le,evictDistant:se,clear:te,reset:Le}};var Gt=0,Ft=1000,Vt=15,Bt=!0,Nt=16,Kt=!0,_e=2,Wt="scroll",Ut=350,Yt=12,Zt=(t)=>{if(typeof t!=="object"){let e=t??_e;return{top:e,right:e,bottom:e,left:e}}return{top:t.top??_e,right:t.right??_e,bottom:t.bottom??_e,left:t.left??_e}},At=(t,e,o={},r="vlist",s=!1,a,i,f)=>{let A=navigator.userAgentData?.platform||navigator.platform+navigator.userAgent,C=o.platform?o.platform==="windows":!/Mac|Android/i.test(A),{autoHide:b=!C,autoHideDelay:P=Ft,minThumbSize:F=Vt,showOnHover:y=Bt,showOnViewportEnter:B=Kt,clickBehavior:p=Wt}=o,g=p==="page"?"scroll":p,l=a??t,h=Zt(o.padding),m=s?h.left:h.top,E=s?h.right:h.bottom,z=s?h.bottom:h.right,O=o.hoverZoneWidth??z+Nt,R=!0,V=0,_=0,Y=0,U=0,re=!1,ie=!1,Se=0,me=0,pe=0,d=null,n=!1,u=null,c=null,H=-1,T=-1,N=-1,k=-1,D=-1,j=t.id?"":(()=>{let L;do L=`${r}-scrollport-${++Gt}`;while(document.getElementById(L));return t.id=L,L})(),ee=0,Z=0,v=null,S=null,w=null,X=s?"width":"height",W=s?"translateX":"translateY",K=s?(L)=>L.clientX:(L)=>L.clientY,J=s?"left":"top",I=document.createElement("div"),le=document.createElement("div"),se=document.createElement("div"),te=s?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",Le=()=>{if(l===t)return;let L=t.offsetTop;I.style[s?"left":"top"]=L?`calc(var(${te}) + ${L}px)`:`var(${te})`,se.style[s?"left":"top"]=`${L}px`},x=()=>{if(I.className=`${r}-scrollbar`,I.setAttribute("role","scrollbar"),I.setAttribute("aria-controls",t.id),I.setAttribute("aria-orientation",s?"horizontal":"vertical"),I.setAttribute("aria-label",t.getAttribute("aria-label")||"Scroll"),I.setAttribute("aria-valuemin","0"),I.tabIndex=0,le.className=`${r}-scrollbar__thumb`,s)I.classList.add(`${r}-scrollbar--horizontal`);if(o.padding!==void 0)l.style.setProperty("--vlist-custom-scrollbar-padding-top",`${h.top}px`),l.style.setProperty("--vlist-custom-scrollbar-padding-right",`${h.right}px`),l.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${h.bottom}px`),l.style.setProperty("--vlist-custom-scrollbar-padding-left",`${h.left}px`);if(o.minThumbSize!==void 0)I.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${F}px`);if(I.appendChild(le),l.appendChild(I),se.className=`${r}-scrollbar__hover`,s)se.classList.add(`${r}-scrollbar__hover--horizontal`),se.style.height=`${O}px`;else se.style.width=`${O}px`;if(l.appendChild(se),l!==t)Le()},M=()=>{if(d)clearTimeout(d),d=null},q=()=>{if(!b)return;M(),d=setTimeout(G,P)},Q=()=>{if(!R||V<=_)return;if(M(),!n)I.classList.add(`${r}-scrollbar--visible`),n=!0;if(b&&!re&&!ie&&document.activeElement!==I)q()},G=()=>{if(re||ie||document.activeElement===I)return;I.classList.remove(`${r}-scrollbar--visible`),n=!1},be=(L,ne)=>{if(V=L,_=ne,Le(),ge(pe),!R||V<=_){I.style.display="none",I.classList.remove(`${r}-scrollbar--visible`),n=!1;return}I.style.display="";let ae=Math.max(0,_-m-E),de=_/V;if(Y=Math.max(F,de*ae),le.style[X]=`${Y}px`,U=ae-Y,ge(pe),!b)Q()},ge=(L)=>{let ne=Math.max(0,V-_);if(pe=Math.max(0,Math.min(L,ne)),H!==ne)H=ne,I.setAttribute("aria-valuemax",String(ne));if(T!==pe)T=pe,I.setAttribute("aria-valuenow",String(pe));let ae=i?.(),de=ae?.getTotal()??0,ye=de?ae.indexAtOffset(pe)+1:0;if(ye!==N||de!==k)N=ye,k=de,I.setAttribute("aria-valuetext",`Row ${ye} of ${de}`);if(ne<=0||U<=0)return;let Me=pe/ne*U;if(Me!==D)D=Me,le.style.transform=`${W}(${Me}px)`},Te=(L)=>{if(!R||L.target!==I||document.activeElement!==I)return;if(L.stopPropagation(),L.altKey||L.ctrlKey||L.metaKey)return;let ne=i?.(),ae=ne?.getSize(ne.indexAtOffset(pe))??40,de=pe;switch(L.key){case(s?"ArrowLeft":"ArrowUp"):de-=ae;break;case(s?"ArrowRight":"ArrowDown"):de+=ae;break;case"PageUp":de-=_;break;case"PageDown":de+=_;break;case"Home":de=0;break;case"End":de=V;break;default:return}L.preventDefault(),e(Math.max(0,Math.min(de,Math.max(0,V-_)))),Q()},oe=(L)=>{if(L.target===le||g!=="jump"||U<=0)return;let ne=V-_,ae=I.getBoundingClientRect(),de=K(L)-ae[J],ye=Math.max(0,Math.min(de-Y/2,U));e(ye/U*ne),Q()},ue=()=>{if(v!==null)clearTimeout(v),v=null;if(S!==null)cancelAnimationFrame(S),S=null;w=null},he=(L)=>{let ne=U>0?Z/L*U:0;if(ee<ne)return-1;if(ee>=ne+Y)return 1;return 0},xe=()=>{let L=V-_,ne=he(L);if(ne===0){ue();return}if(ne===-1){if(Z<=0){ue();return}let ae=Math.max(0,Z-_);Z=ae,e(ae)}else{if(Z>=L){ue();return}let ae=Math.min(L,Z+_);Z=ae,e(ae)}Q()},fe=(L)=>{if(w===null){w=L,S=requestAnimationFrame(fe);return}let ne=V-_,ae=L-w;w=L;let de=he(ne);if(de===0){ue();return}let ye=Yt*_/1000,Me=Math.min(ye*ae,_);if(de===-1){if(Z<=0){ue();return}let Ae=Math.max(0,Z-Me);Z=Ae,e(Ae)}else{if(Z>=ne){ue();return}let Ae=Math.min(ne,Z+Me);Z=Ae,e(Ae)}M(),S=requestAnimationFrame(fe)},ce=(L)=>{if(L&&L.pointerId!==u)return;let ne=u,ae=c;if(u=null,c=null,re=!1,I.classList.remove(`${r}-scrollbar--dragging`),ue(),ne!==null&&ae?.hasPointerCapture(ne))ae.releasePointerCapture(ne);q()},ve=(L)=>{if(!R||L.button!==0||u!==null||U<=0)return;if(L.preventDefault(),L.stopPropagation(),u=L.pointerId,re=L.target===le,c=re?le:L.currentTarget,c.setPointerCapture(u),M(),re)Se=K(L),me=pe,I.classList.add(`${r}-scrollbar--dragging`);else if(g==="jump")oe(L);else ee=K(L)-I.getBoundingClientRect()[J],Z=pe,xe(),v=setTimeout(()=>{S=requestAnimationFrame(fe)},Ut);Q()},Ce=(L)=>{if(!re||L.pointerId!==u)return;L.stopPropagation();let ne=K(L)-Se,ae=Math.max(0,V-_),de=Math.max(0,Math.min(me+ne/U*ae,ae));ge(de),e(de)},Ne=()=>{if(B)Q()},Pe=()=>{if(!re){if(ie=!1,b)q()}},Oe=()=>{ie=!0,M(),Q()},De=()=>{if(ie=!1,!re&&b)q()},Ee=["width","radius","thumb-color","track-color"],Ke=(L,ne)=>l.style.setProperty(`--vlist-custom-scrollbar-${L}`,ne),ze=Ee.map((L)=>l.style.getPropertyValue(`--vlist-custom-scrollbar-${L}`)),je=ze.slice(0,2),Je=[],Qe=()=>{for(let ye=0;ye<2;ye++){let Me=Ee[ye],Ae=l.style.getPropertyValue(`--vlist-custom-scrollbar-${Me}`);if(Ae!==Je[ye])je[ye]=Ae;Ke(Me,je[ye])}let L=getComputedStyle(f??l),ne=o.width??L.getPropertyValue("scrollbar-width"),ae=L.getPropertyValue("scrollbar-color").match(/[\w-]+\([^)]*\)|\S+/g);R=o.enabled!==!1&&ne!=="none";let de=[typeof o.width==="number"?`${o.width}px`:L.getPropertyValue("--vlist-custom-scrollbar-width").trim()||(ne==="thin"||!C?"6px":"14px"),typeof o.radius==="number"?`${o.radius}px`:L.getPropertyValue("--vlist-custom-scrollbar-radius").trim()||(C?"0px":"4px"),o.thumbColor??(ae?.length===2?ae[0]:ze[2]),o.trackColor??(ae?.length===2?ae[1]:ze[3])];for(let ye=0;ye<Ee.length;ye++)Ke(Ee[ye],de[ye]);if(Je=de.slice(0,2),se.style.display=R?"":"none",t.classList.toggle(`${r}-viewport--gutter`,R&&!!o.gutter),!R)ce();be(V,_)},Ht=()=>{M(),ue(),ce(),M();for(let L of et)L();for(let L=0;L<Ee.length;L++)Ke(Ee[L],ze[L]);if(t.classList.remove(`${r}-viewport--gutter`),se.remove(),l.style.removeProperty("--vlist-custom-scrollbar-padding-top"),l.style.removeProperty("--vlist-custom-scrollbar-padding-right"),l.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),l.style.removeProperty("--vlist-custom-scrollbar-padding-left"),I.remove(),j&&t.id===j)t.removeAttribute("id")};x();let et=[],Ie=(L,ne,ae)=>{L.addEventListener(ne,ae),et.push(()=>L.removeEventListener(ne,ae))};for(let L of[I,le,se])Ie(L,"pointerdown",ve),Ie(L,"pointermove",Ce),Ie(L,"pointerup",ce),Ie(L,"pointercancel",ce),Ie(L,"lostpointercapture",ce);if(Ie(I,"keydown",Te),Ie(I,"focus",Q),Ie(I,"blur",q),Ie(t,"mouseenter",Ne),Ie(t,"mouseleave",Pe),Ie(I,"mouseenter",Oe),Ie(I,"mouseleave",De),y)Ie(se,"mouseenter",Oe),Ie(se,"mouseleave",De);return Qe(),{refresh:Qe,show:Q,hide:G,updateBounds:be,updatePosition:ge,isVisible:()=>n,destroy:Ht}};function qt(t){let e=0,o=0,r=0;function s(){return r>0?o/r:0}function a(A){if(e=A,A>0.1&&A<50)o+=A,r++}function i(){let A=t.getTotal();if(A===0)return 0;let C=t.getItemSize();if(C<=0)return 0;let b=t.getContainerSize();if(b<=0)return 0;let P=t.getScrollPosition(),F=typeof t.getColumns==="function"?t.getColumns():1,y=Math.ceil(A/F),B=Math.max(0,y*C-b),p=Math.max(0,Math.min(P,B)),g=Math.ceil((p+b)/C);return Math.min(g*F,A)}function f(){let A=t.getTotal(),C=i();return{progress:A>0?Math.min(100,Math.max(0,C/A*100)):0,velocity:e,velocityAvg:s(),itemCount:C,total:A}}return{getState:f,onVelocity:a}}export{st as buildLayoutItems,qe as calculateMissingRanges,gt as clearSelection,Mt as createAsyncManager,Et as createEmitter,ct as createGridLayout,it as createGroupLayout,at as createGroupedSizeFn,xt as createMasonryLayout,It as createMasonryRenderer,Be as createPlaceholderManager,At as createScrollbar,ft as createSelectionState,Ct as createSizeCache,Fe as createSparseStorage,qt as createStats,lt as createStickyHeader,mt as createTableHeader,dt as createTableLayout,vt as createTableRenderer,Ze as deselectItems,Xe as filterPlaceholders,yt as getSelectedIds,St as getSelectedItems,ut as isGroupHeader,He as isPlaceholderItem,ht as isSelected,Ve as mergeRanges,bt as selectAll,Ye as selectItems,pt as toggleSelection};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* vlist
|
|
2
|
+
* vlist — Autosize Plugin
|
|
3
3
|
*
|
|
4
4
|
* Enables dynamic item measurement via ResizeObserver for items with
|
|
5
5
|
* unknown sizes. Items are rendered without an explicit main-axis size,
|
|
@@ -20,5 +20,16 @@ import type { VListPlugin } from "../../core/types";
|
|
|
20
20
|
export interface AutosizePluginConfig {
|
|
21
21
|
gap?: number;
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
/** Methods the autosize plugin adds to the list instance. */
|
|
24
|
+
export interface AutosizeMethods {
|
|
25
|
+
/** Whether the item at `index` has been measured. */
|
|
26
|
+
isMeasured(index: number): boolean;
|
|
27
|
+
/** Drop the measurement for `index`, or for every item when omitted. */
|
|
28
|
+
remeasure(index?: number): void;
|
|
29
|
+
/** Record a measured size for `index`. */
|
|
30
|
+
setMeasuredSize(index: number, size: number): void;
|
|
31
|
+
/** How many items have been measured. */
|
|
32
|
+
getMeasuredCount(): number;
|
|
33
|
+
}
|
|
34
|
+
export declare function autosize<T extends VListItem = VListItem>(config?: AutosizePluginConfig): VListPlugin<T, AutosizeMethods>;
|
|
24
35
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -4,4 +4,5 @@ export { createLayoutEngine } from "./engine";
|
|
|
4
4
|
export type { LayoutConfig, ItemLayout } from "./engine";
|
|
5
5
|
export { resolvePreset, registerPreset, getPreset, hasSlots, full, hero, heroCenter, multi, uncontained } from "./presets";
|
|
6
6
|
export type { SlotConfig, NoEngineConfig, PresetResult, SlotConfigResolver, TextFade } from "./presets";
|
|
7
|
+
export type { CarouselMethods } from "./plugin";
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* vlist
|
|
2
|
+
* vlist — Carousel Plugin (RFC-011)
|
|
3
3
|
*
|
|
4
4
|
* Infinite-loop scrolling with snap-to-item, focal scaling, and peek.
|
|
5
5
|
* Uses a finite virtual scroll window with silent rebasing — the scroll
|
|
@@ -7,13 +7,28 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Priority 10 — layout tier (replaces scroll contract).
|
|
9
9
|
*
|
|
10
|
-
* Implementation: the
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* Implementation: the virtual index space is three laps — the home lap
|
|
11
|
+
* plus one lap of margin on each side. Overscan before index 0 and the
|
|
12
|
+
* shortest-path snap both reach into the neighbouring lap, and the engine
|
|
13
|
+
* has no negative indices. The bounded handler folds the logical position
|
|
14
|
+
* back toward the home lap as soon as it leaves it. Items are mapped via
|
|
15
|
+
* modulo so virtual index 17 with 16 real items → item 1. The scroll
|
|
16
|
+
* starts in the home lap.
|
|
14
17
|
*
|
|
15
18
|
* Public API (list.total, ARIA, selection, click events) stays at the
|
|
16
19
|
* real item count. The inflated virtual window is strictly internal.
|
|
20
|
+
*
|
|
21
|
+
* Restrictions:
|
|
22
|
+
* - Cannot be combined with `groups()`: an infinite wrap has no sections to
|
|
23
|
+
* group, and mechanically groups' `setSizeConfig` replaces the size cache
|
|
24
|
+
* methods this plugin installs directly.
|
|
25
|
+
* - Cannot be combined with `grid()`, `table()`, `masonry()` or `tree()`:
|
|
26
|
+
* two plugins owning one list's layout, where this one has also made the
|
|
27
|
+
* size cache speak virtual indices. Permanent.
|
|
28
|
+
* - Cannot yet be combined with `search()` or `sortable()` — see the comments
|
|
29
|
+
* on their own `conflicts`. Both are fixable and meant to be fixed.
|
|
30
|
+
* - `page()` is rejected by core, since bounded page-mode scrolling does not
|
|
31
|
+
* exist: document scrolling cannot wrap.
|
|
17
32
|
*/
|
|
18
33
|
import type { VListItem } from "../../types";
|
|
19
34
|
import type { VListPlugin } from "../../core/types";
|
|
@@ -44,5 +59,26 @@ export interface CarouselState {
|
|
|
44
59
|
scrollPosition: number;
|
|
45
60
|
role: "large" | "medium" | "small";
|
|
46
61
|
}
|
|
47
|
-
|
|
62
|
+
/** Methods the carousel plugin adds to the list instance. */
|
|
63
|
+
export interface CarouselMethods {
|
|
64
|
+
/** Move forward by `step` slides (default 1). */
|
|
65
|
+
next(step?: number, options?: {
|
|
66
|
+
behavior?: string;
|
|
67
|
+
duration?: number;
|
|
68
|
+
}): void;
|
|
69
|
+
/** Move back by `step` slides (default 1). */
|
|
70
|
+
prev(step?: number, options?: {
|
|
71
|
+
behavior?: string;
|
|
72
|
+
duration?: number;
|
|
73
|
+
}): void;
|
|
74
|
+
/** Move to a slide index. */
|
|
75
|
+
goTo(index: number, options?: {
|
|
76
|
+
direction?: CarouselDirection;
|
|
77
|
+
behavior?: string;
|
|
78
|
+
duration?: number;
|
|
79
|
+
}): void;
|
|
80
|
+
/** Current index, progress, offset and focal role. */
|
|
81
|
+
getCarouselState(): CarouselState;
|
|
82
|
+
}
|
|
83
|
+
export declare function carousel<T extends VListItem = VListItem>(config?: CarouselPluginConfig): VListPlugin<T, CarouselMethods>;
|
|
48
84
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -6,4 +6,5 @@ export { data, type DataPluginConfig } from "./plugin";
|
|
|
6
6
|
export { createDataManager, mergeRanges, calculateMissingRanges, isPlaceholderItem, filterPlaceholders, countRealItems, type DataManager, type DataManagerConfig, type DataState, } from "./manager";
|
|
7
7
|
export { createSparseStorage, type SparseStorage, type SparseStorageConfig, type SparseStorageStats, } from "./sparse";
|
|
8
8
|
export { createPlaceholderManager, type PlaceholderManager, type PlaceholderConfig, } from "./placeholder";
|
|
9
|
+
export type { DataMethods } from "./plugin";
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* vlist
|
|
2
|
+
* vlist — Async Plugin
|
|
3
3
|
*
|
|
4
4
|
* Enables async data loading with sparse storage, placeholders, and infinite scroll.
|
|
5
5
|
* Priority 20 — runs before scrollbar and selection, after layout plugins.
|
|
@@ -44,5 +44,18 @@ export interface DataPluginConfig<T extends VListItem = VListItem> {
|
|
|
44
44
|
maxConcurrent?: number;
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
/** Methods the data plugin adds to the list instance. */
|
|
48
|
+
export interface DataMethods {
|
|
49
|
+
/** Drop loaded pages and load the first range again. */
|
|
50
|
+
reload(): Promise<void>;
|
|
51
|
+
/** Load the range currently in view. */
|
|
52
|
+
loadVisibleRange(): Promise<void>;
|
|
53
|
+
/** Load the first range. */
|
|
54
|
+
loadInitial(): Promise<void>;
|
|
55
|
+
/** Total item count known to the adapter. */
|
|
56
|
+
getTotal(): number;
|
|
57
|
+
/** Set the total item count. */
|
|
58
|
+
setTotal(total: number): void;
|
|
59
|
+
}
|
|
60
|
+
export declare function data<T extends VListItem = VListItem>(config: DataPluginConfig<T>): VListPlugin<T, DataMethods>;
|
|
48
61
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* vlist
|
|
2
|
+
* vlist — Grid Plugin
|
|
3
3
|
*/
|
|
4
4
|
export { grid, type GridPluginConfig } from "./plugin";
|
|
5
5
|
export { createGridLayout, type GridConfigWithGroups, } from "./layout";
|
|
6
6
|
export type { GridLayout, GridPosition, ItemRange, } from "./types";
|
|
7
|
+
export type { GridMethods } from "./plugin";
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* vlist
|
|
2
|
+
* vlist — Grid Plugin
|
|
3
3
|
*
|
|
4
4
|
* Switches from list layout to a 2D grid with configurable columns and gap.
|
|
5
5
|
* Priority 10 — runs before selection (50) so layout is ready for other plugins.
|
|
@@ -12,12 +12,24 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Restrictions:
|
|
14
14
|
* - Cannot be combined with masonry or table plugins
|
|
15
|
+
* - Cannot be combined with autosize: it measures items, while this size cache
|
|
16
|
+
* is indexed by row. A row's height is a question about the row's cells, and
|
|
17
|
+
* answering it belongs to whichever plugin owns the layout. Give grid lists a
|
|
18
|
+
* fixed `item.height` (or `item.width` when horizontal).
|
|
15
19
|
*/
|
|
16
20
|
import type { VListItem } from "../../types";
|
|
17
21
|
import type { VListPlugin } from "../../core/types";
|
|
22
|
+
import type { GridLayout } from "./types";
|
|
18
23
|
export interface GridPluginConfig {
|
|
19
24
|
columns: number;
|
|
20
25
|
gap?: number;
|
|
21
26
|
}
|
|
22
|
-
|
|
27
|
+
/** Methods the grid plugin adds to the list instance. */
|
|
28
|
+
export interface GridMethods {
|
|
29
|
+
/** The current grid layout. */
|
|
30
|
+
getGridLayout(): GridLayout;
|
|
31
|
+
/** Change columns, gap or aspect ratio at runtime. */
|
|
32
|
+
updateGrid(config: Partial<GridPluginConfig>): void;
|
|
33
|
+
}
|
|
34
|
+
export declare function grid<T extends VListItem = VListItem>(config: GridPluginConfig): VListPlugin<T, GridMethods>;
|
|
23
35
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -18,16 +18,16 @@
|
|
|
18
18
|
import type { VListItem } from "../../types";
|
|
19
19
|
import type { GroupBoundary, GroupHeaderItem } from "./types";
|
|
20
20
|
/** Configuration for the async group bridge */
|
|
21
|
-
export interface AsyncBridgeConfig {
|
|
21
|
+
export interface AsyncBridgeConfig<T extends VListItem = VListItem> {
|
|
22
22
|
/** Determine group key for an item */
|
|
23
|
-
getGroupForIndex: (index: number, item?:
|
|
23
|
+
getGroupForIndex: (index: number, item?: T) => string;
|
|
24
24
|
/** Header height in pixels (resolved for current orientation) */
|
|
25
25
|
headerHeight: number;
|
|
26
26
|
}
|
|
27
27
|
/** Async group bridge instance */
|
|
28
|
-
export interface AsyncGroupBridge {
|
|
28
|
+
export interface AsyncGroupBridge<T extends VListItem = VListItem> {
|
|
29
29
|
/** Process newly loaded items — updates group boundaries */
|
|
30
|
-
onItemsLoaded(items:
|
|
30
|
+
onItemsLoaded(items: T[], offset: number, total: number): void;
|
|
31
31
|
/** Total layout entries (data items + discovered headers) */
|
|
32
32
|
readonly totalEntries: number;
|
|
33
33
|
/** Number of discovered groups */
|
|
@@ -49,7 +49,7 @@ export interface AsyncGroupBridge {
|
|
|
49
49
|
/** Get the group boundary at a data index */
|
|
50
50
|
getGroupAtDataIndex(dataIndex: number): GroupBoundary;
|
|
51
51
|
/** Insert item at data index — shifts group keys up and rebuilds */
|
|
52
|
-
insertAt(dataIndex: number, item:
|
|
52
|
+
insertAt(dataIndex: number, item: T): void;
|
|
53
53
|
/** Remove item at data index — shifts group keys and rebuilds */
|
|
54
54
|
removeAt(dataIndex: number): void;
|
|
55
55
|
/** Reset all state (e.g. on reload) */
|
|
@@ -66,5 +66,5 @@ export interface AsyncGroupBridge {
|
|
|
66
66
|
* @param getItem - Item accessor from the async data manager
|
|
67
67
|
* @param isItemLoaded - Check if an item at index is loaded (not placeholder)
|
|
68
68
|
*/
|
|
69
|
-
export declare const createAsyncGroupBridge: (config: AsyncBridgeConfig
|
|
69
|
+
export declare const createAsyncGroupBridge: <T extends VListItem = VListItem>(config: AsyncBridgeConfig<T>, _getItem?: (index: number) => T | undefined, _isItemLoaded?: (index: number) => boolean) => AsyncGroupBridge<T>;
|
|
70
70
|
//# sourceMappingURL=async-bridge.d.ts.map
|
|
@@ -8,4 +8,5 @@ export { isGroupHeader } from "./types";
|
|
|
8
8
|
export { createGroupLayout, buildLayoutItems, createGroupedSizeFn, } from "./layout";
|
|
9
9
|
export { createStickyHeader } from "./sticky";
|
|
10
10
|
export { createAsyncGroupBridge, type AsyncBridgeConfig, type AsyncGroupBridge } from "./async-bridge";
|
|
11
|
+
export type { GroupsMethods } from "./plugin";
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -43,7 +43,7 @@ export declare const buildLayoutItems: <T extends VListItem>(items: T[], groups:
|
|
|
43
43
|
* @param itemSize - Original item size config (number or function)
|
|
44
44
|
* @returns A size function (layoutIndex) => number suitable for SizeCache
|
|
45
45
|
*/
|
|
46
|
-
export declare const createGroupedSizeFn: (layout: GroupLayout
|
|
46
|
+
export declare const createGroupedSizeFn: <T extends VListItem = VListItem>(layout: GroupLayout<T>, itemSize: number | ((index: number) => number), sticky?: boolean) => ((layoutIndex: number) => number);
|
|
47
47
|
/**
|
|
48
48
|
* Create a GroupLayout instance.
|
|
49
49
|
*
|
|
@@ -53,5 +53,5 @@ export declare const createGroupedSizeFn: (layout: GroupLayout, itemSize: number
|
|
|
53
53
|
* @param itemCount - Number of data items
|
|
54
54
|
* @param config - Groups configuration
|
|
55
55
|
*/
|
|
56
|
-
export declare const createGroupLayout: (itemCount: number, config: GroupsConfig
|
|
56
|
+
export declare const createGroupLayout: <T extends VListItem = VListItem>(itemCount: number, config: GroupsConfig<T>, getItem?: (index: number) => T | undefined) => GroupLayout<T>;
|
|
57
57
|
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* vlist
|
|
2
|
+
* vlist — Groups Plugin
|
|
3
3
|
*
|
|
4
4
|
* Adds grouped lists with sticky headers.
|
|
5
|
-
* Priority
|
|
5
|
+
* Priority 11 — after layout plugins (grid/masonry/table at 10) so it can
|
|
6
|
+
* wrap the size cache and take over render regardless of array order;
|
|
7
|
+
* before selection (50).
|
|
6
8
|
*
|
|
7
9
|
* Architecture:
|
|
8
10
|
* - Transforms items list: inserts group header pseudo-items at group boundaries
|
|
@@ -16,7 +18,13 @@
|
|
|
16
18
|
*/
|
|
17
19
|
import type { VListItem, GroupsConfig } from "../../types";
|
|
18
20
|
import type { VListPlugin } from "../../core/types";
|
|
19
|
-
|
|
21
|
+
import { type GroupLayout } from "./types";
|
|
22
|
+
export interface GroupsPluginConfig<T extends VListItem = VListItem> extends GroupsConfig<T> {
|
|
20
23
|
}
|
|
21
|
-
|
|
24
|
+
/** Methods the groups plugin adds to the list instance. */
|
|
25
|
+
export interface GroupsMethods<T extends VListItem = VListItem> {
|
|
26
|
+
/** The current group layout: entries, boundaries and sticky state. */
|
|
27
|
+
getGroupLayout(): GroupLayout<T>;
|
|
28
|
+
}
|
|
29
|
+
export declare function groups<T extends VListItem = VListItem>(config: GroupsPluginConfig<T>): VListPlugin<T, GroupsMethods<T>>;
|
|
22
30
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
* └── .sticky-group (standby slot — translated during push)
|
|
17
17
|
*/
|
|
18
18
|
import type { GroupLayout, StickyHeader } from "./types";
|
|
19
|
+
import type { VListItem } from "../../types";
|
|
19
20
|
import type { SizeCache } from "../../rendering/sizes";
|
|
20
21
|
/**
|
|
21
22
|
* Create the sticky header container element upfront (before data arrives)
|
|
22
23
|
* so the DOM structure is stable and doesn't cause a visual shift.
|
|
23
24
|
*/
|
|
24
25
|
export declare const createStickyContainer: (root: HTMLElement, classPrefix: string, horizontal: boolean, headerHeight: number, stickyOffset?: number) => HTMLElement;
|
|
25
|
-
export declare const createStickyHeader: (root: HTMLElement, layout: GroupLayout
|
|
26
|
+
export declare const createStickyHeader: <T extends VListItem = VListItem>(root: HTMLElement, layout: GroupLayout<T>, sizeCache: SizeCache, renderInto: (slot: HTMLElement, groupIndex: number) => void, classPrefix: string, horizontal?: boolean, stickyOffset?: number, existingContainer?: HTMLElement, getHeaderOffset?: (headerLayoutIndex: number) => number) => StickyHeader;
|
|
26
27
|
//# sourceMappingURL=sticky.d.ts.map
|
|
@@ -45,14 +45,19 @@ export interface GroupHeaderItem extends VListItem {
|
|
|
45
45
|
*/
|
|
46
46
|
export declare const isGroupHeader: (item: unknown) => item is GroupHeaderItem;
|
|
47
47
|
/** Group layout — maps between data indices and layout indices */
|
|
48
|
-
export interface GroupLayout {
|
|
48
|
+
export interface GroupLayout<T extends VListItem = VListItem> {
|
|
49
49
|
/** Total layout entries (data items + group headers) */
|
|
50
50
|
readonly totalEntries: number;
|
|
51
51
|
/** Number of groups */
|
|
52
52
|
readonly groupCount: number;
|
|
53
53
|
/** All group boundaries, in order */
|
|
54
54
|
readonly groups: readonly GroupBoundary[];
|
|
55
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Get the layout entry at a layout index — O(log g).
|
|
57
|
+
*
|
|
58
|
+
* The returned object is reused and mutated in place. Read fields
|
|
59
|
+
* immediately; do not retain the reference across calls.
|
|
60
|
+
*/
|
|
56
61
|
getEntry: (layoutIndex: number) => LayoutEntry;
|
|
57
62
|
/** Map layout index → data index, or -1 if it's a header — O(log g) */
|
|
58
63
|
layoutToDataIndex: (layoutIndex: number) => number;
|
|
@@ -71,7 +76,7 @@ export interface GroupLayout {
|
|
|
71
76
|
* @param itemCount - Number of data items
|
|
72
77
|
* @param getItem - Optional item accessor for passing items to getGroupForIndex
|
|
73
78
|
*/
|
|
74
|
-
rebuild: (itemCount: number, getItem?: (index: number) =>
|
|
79
|
+
rebuild: (itemCount: number, getItem?: (index: number) => T | undefined) => void;
|
|
75
80
|
}
|
|
76
81
|
/** Sticky header manager */
|
|
77
82
|
export interface StickyHeader {
|