vlist 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.github.md +13 -14
- package/README.md +12 -11
- package/dist/constants.d.ts +28 -0
- package/dist/core/adapter.d.ts +92 -0
- package/dist/core/pipeline.d.ts +2 -0
- package/dist/core/runway.d.ts +82 -0
- package/dist/core/state.d.ts +6 -2
- package/dist/core/types.d.ts +31 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.js +1 -1
- package/dist/internals.d.ts +2 -2
- package/dist/internals.js +1 -1
- package/dist/plugins/carousel/engine.d.ts +56 -0
- package/dist/plugins/carousel/index.d.ts +7 -0
- package/dist/plugins/carousel/plugin.d.ts +44 -0
- package/dist/plugins/carousel/presets.d.ts +18 -0
- package/dist/plugins/grid/renderer.d.ts +1 -4
- package/dist/plugins/groups/sticky.d.ts +1 -1
- package/dist/plugins/masonry/renderer.d.ts +1 -1
- package/dist/plugins/scale/index.d.ts +0 -3
- package/dist/plugins/scale/plugin.d.ts +1 -18
- package/dist/plugins/scrollbar/index.d.ts +0 -1
- package/dist/plugins/table/renderer.d.ts +2 -5
- package/dist/rendering/index.d.ts +1 -6
- package/dist/size.json +1 -1
- package/dist/types.d.ts +2 -9
- package/package.json +1 -1
- package/dist/plugins/scrollbar/controller.d.ts +0 -121
- package/dist/rendering/measured.d.ts +0 -52
- package/dist/rendering/renderer.d.ts +0 -113
- package/dist/rendering/scale.d.ts +0 -121
- package/dist/rendering/scroll.d.ts +0 -23
- package/dist/rendering/viewport.d.ts +0 -139
package/dist/internals.d.ts
CHANGED
|
@@ -14,12 +14,12 @@ export { createGridRenderer, type GridRenderer, } from "./plugins/grid/renderer"
|
|
|
14
14
|
export type { GridConfig } from "./plugins/grid/types";
|
|
15
15
|
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
16
|
export { createMasonryLayout, createMasonryRenderer, type MasonryConfig, type MasonryLayout, type MasonryRenderer, type GetItemFn, type ItemPlacement, } from "./plugins/masonry";
|
|
17
|
-
export { createSizeCache, type SizeCache,
|
|
17
|
+
export { createSizeCache, type SizeCache, } from "./rendering";
|
|
18
18
|
export { createSelectionState, selectItems, deselectItems, toggleSelection, selectAll, clearSelection, isSelected, getSelectedIds, } from "./plugins/selection";
|
|
19
19
|
export { getSelectedItemsImmutable as getSelectedItems } from "./plugins/selection/state";
|
|
20
20
|
export { createEmitter, type Emitter } from "./events";
|
|
21
21
|
export { createDataManager as createAsyncManager, createSparseStorage, createPlaceholderManager, isPlaceholderItem, filterPlaceholders, mergeRanges, calculateMissingRanges, type DataManager as AsyncManager, type SparseStorage, type PlaceholderManager, } from "./plugins/data";
|
|
22
|
-
export {
|
|
22
|
+
export { createScrollbar, type Scrollbar, } from "./plugins/scrollbar";
|
|
23
23
|
export type { ScrollbarConfig } from "./plugins/scrollbar/scrollbar";
|
|
24
24
|
export { createStats, type StatsConfig, type StatsState, type Stats, } from "./utils/stats";
|
|
25
25
|
//# sourceMappingURL=internals.d.ts.map
|
package/dist/internals.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var w2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var u2=(J,Q)=>{let q=0,$=J.length-1;while(q<$){let B=q+$+1>>>1;if(J[B].headerLayoutIndex<=Q)q=B;else $=B-1}return q},s2=(J,Q)=>{let q=0,$=J.length-1;while(q<$){let B=q+$+1>>>1;if(J[B].firstDataIndex<=Q)q=B;else $=B-1}return q},n2=(J,Q,q)=>{if(J===0)return[];let $=[],B=null,j=0,Y=0;for(let W=0;W<J;W++){let z=q?.(W);if(!z)continue;let V=Q(W,z);if(B===null)B=V,j=0;else if(V!==B){let T=W-j;$.push({key:B,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:j,count:T}),Y=Y+1+T,B=V,j=W}}if(B!==null)$.push({key:B,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:j,count:J-j});return $},o2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let q=J.length+Q.length,$=Array(q),B=0;for(let j of Q){$[B]={id:`__group_header_${j.groupIndex}`,__groupHeader:!0,groupKey:j.key,groupIndex:j.groupIndex},B++;for(let Y=0;Y<j.count;Y++)$[B]=J[j.firstDataIndex+Y],B++}return $},i2=(J,Q,q=!1)=>{let $=typeof Q==="number"?(B)=>Q:Q;return(B)=>{let j=J.getEntry(B);if(j.type==="header"){if(q&&j.group.groupIndex===0)return 0;return J.getHeaderHeight(j.group.groupIndex)}return $(j.dataIndex)}},t2=(J,Q,q)=>{let $=n2(J,Q.getGroupForIndex,q),B=J+$.length,j=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return B},get groupCount(){return $.length},get groups(){return $},getEntry:(_)=>{if($.length===0)return{type:"item",dataIndex:_,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let O=u2($,_),E=$[O];if(_===E.headerLayoutIndex)return{type:"header",group:E};let L=_-E.headerLayoutIndex-1;return{type:"item",dataIndex:E.firstDataIndex+L,group:E}},layoutToDataIndex:(_)=>{if($.length===0)return _;let O=u2($,_),E=$[O];if(_===E.headerLayoutIndex)return-1;let L=_-E.headerLayoutIndex-1;return E.firstDataIndex+L},dataToLayoutIndex:(_)=>{if($.length===0)return _;let O=s2($,_),E=$[O],L=_-E.firstDataIndex;return E.headerLayoutIndex+1+L},getGroupAtLayoutIndex:(_)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let O=u2($,_);return $[O]},getGroupAtDataIndex:(_)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let O=s2($,_);return $[O]},getHeaderHeight:typeof j==="number"?(_)=>j:(_)=>{let O=$[_];if(!O)return 0;return j(O.key,_)},rebuild:(_,O)=>{$=n2(_,Q.getGroupForIndex,O??q),B=_+$.length}}};var gJ=(J,Q,q,$,B=0)=>{let j=q?"width":"height",Y=document.createElement("div");return Y.className=`${Q}-sticky-header`,Y.setAttribute("role","presentation"),Y.setAttribute("aria-hidden","true"),Y.style.cssText="z-index:5;pointer-events:none;overflow:hidden;"+(q?`position:absolute;top:0;bottom:0;left:${B||0}px`:`position:relative;top:${B||0}px`),Y.style[j]=`${$}px`,J.insertBefore(Y,J.firstChild),Y},e2=(J,Q,q,$,B,j=!1,Y=0,W,z,V)=>{let T=j?"width":"height",v=j?"height":"width",C=j?"X":"Y",_=(F,G)=>{F.style[T]=`${G}px`},O=z??gJ(J,B,j,0,Y),E=()=>{let F=document.createElement("div");return F.className="sticky-group",F.style.position="absolute",F.style.willChange="transform",F.style[v]="100%",F},L=E(),M=E();O.append(L,M);let y=L,Z=M,H=Q.groups,g=[],k=[],h=[],d=0,Q2=()=>{H=Q.groups,d=H.length,g=Array(d),k=Array(d),h=Array(d);let F=W?W():1;for(let G=0;G<d;G++)g[G]=(V?V(H[G].headerLayoutIndex):q.getOffset(H[G].headerLayoutIndex))*F,k[G]=Q.getHeaderHeight(G),h[G]=k[G]*F};Q2();let o=-1,$2=0,B2=0,j2=-1,r=!1,J2=0,i=!1,R=(F,G)=>{$(F,G);let X=k[G];return _(F,X),X},U=(F)=>{F.replaceChildren(),F.style.transform=""},N=(F)=>{if(F===o)return;if(o=F,$2=0,B2=0,F<0||F>=d){U(y);return}$2=R(y,F),B2=h[F],_(O,$2),y.style.transform=""},D=(F)=>{if(F===J2)return;J2=F;let G=Math.round(F);y.style.transform=`translate${C}(${G}px)`,Z.style.transform=`translate${C}(${G+$2}px)`},w=()=>{J2=0,y.style.transform="",Z.style.transform=""},a=()=>{if(!i)return;let F=y;y=Z,Z=F,o=j2,$2=o>=0?k[o]:0,B2=o>=0?h[o]:0,_(O,$2),U(Z),j2=-1,i=!1,w()},l=()=>{if(!i)return;U(Z),j2=-1,i=!1,w()},f=!!z,K=()=>{if(r)return;if(r=!0,f)O.style.visibility="";else O.style.display=""},b=()=>{if(!r)return;if(r=!1,f)O.style.visibility="hidden";else O.style.display="none";U(y),o=-1,$2=0,B2=0,l()},A=(F)=>{if(d===0){if(i)l();if(!r)K();N(-1);return}if(F<g[0]){b();return}let G=0,X=d-1;while(G<X){let x=G+X+1>>>1;if(g[x]+h[x]<=F)G=x;else X=x-1}if(!r)K();N(G);let u=G+1;if(u<d){let x=g[u]-F;if(x<=0&&x>-B2){if(j2!==u||!i)j2=u,R(Z,u),i=!0;let p=B2>0?x/B2*$2:x;D(p)}else if(x<=-B2){if(i)a()}else if(i)l()}else if(i)l()},P=()=>{Q2();let F=o;if(o=-1,$2=0,B2=0,F>=0)N(F)},I=()=>{O.remove(),o=-1,$2=0,B2=0,j2=-1,r=!1,i=!1};if(!z)O.style.display="none";return{update:A,refresh:P,show:K,hide:b,destroy:I}};var JJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),q=J.gap??0,$=J.isHeaderFn,B={row:0,col:0},j=(E)=>{if(E<=0)return 0;if(!$)return Math.ceil(E/Q);let L=0,M=0,y=0;for(let Z=0;Z<E;Z++)if($(Z)){if(y++,M)L++,M=0;L++,M=0}else if(M++,M>=Q)L++,M=0;if(M)L++;return L},Y=(E)=>{return B.row=W(E),B.col=z(E),B},W=(E)=>{if(!$)return Math.floor(E/Q);let L=0,M=0;for(let y=0;y<=E;y++)if($(y)){if(M)L++,M=0;if(y===E)return L;L++,M=0}else{if(y===E)return L;if(M++,M>=Q)L++,M=0}return console.warn(`⚠️ getRow(${E}) fell through - returning ${L}`),L},z=(E)=>{if(!$)return E%Q;if($(E))return 0;let L=0;for(let M=0;M<=E;M++)if($(M))L=0;else{if(M===E)return L;if(L++,L>=Q)L=0}return L},V=(E,L,M,y)=>{if(M<=0){y.start=0,y.end=-1;return}if(!$){y.start=Math.max(0,E*Q),y.end=Math.min(M-1,(L+1)*Q-1);return}let Z=T(E,L,M);y.start=Z.start,y.end=Z.end},T=(E,L,M)=>{if(M<=0)return{start:0,end:-1};if(!$){let k=Math.max(0,E*Q),h=Math.min(M-1,(L+1)*Q-1);return{start:k,end:h}}let y=-1,Z=-1,H=0,g=0;for(let k=0;k<M;k++){if($(k)){if(g)H++,g=0;if(H>=E&&H<=L){if(y<0)y=k;Z=k}H++,g=0}else{if(H>=E&&H<=L){if(y<0)y=k;Z=k}if(g++,g>=Q)H++,g=0}if(H>L&&!g)break}if(y<0)return{start:0,end:-1};return{start:y,end:Z}},v=(E,L,M)=>{if(L<0||L>=Q)return-1;let y=E*Q+L;if(y<0||y>=M)return-1;return y},C=(E)=>{let L=(Q-1)*q;return Math.max(0,(E-L)/Q)};return{get columns(){return Q},get gap(){return q},update:(E)=>{if(E.columns!==void 0)Q=Math.max(1,Math.floor(E.columns));if(E.gap!==void 0)q=E.gap;if(E.isHeaderFn!==void 0)$=E.isHeaderFn},getTotalRows:j,getPosition:Y,getRow:W,getCol:z,getItemRange:T,fillItemRange:V,getItemIndex:v,getColumnWidth:C,getColumnOffset:(E,L)=>{let M=C(L);return E*(M+q)}}};var b2=16000000;var QJ="x",$J=20,m2="_isPlaceholder",R2="__placeholder_";function C2(J){let Q=J.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let q=0;q<Q.length;q++)Q[q].setAttribute("tabindex","-1")}var y2=(J,Q,q)=>{if(String(q).startsWith(R2))return!1;let $=R2+Q;if(J.has($))return J.delete($),J.add(q),!0;return!1},qJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),d2=(J,Q,q)=>{if(q==="none")return J;let $=new Set(J.selected);if(q==="single"){if($.clear(),Q.length>0)$.add(Q[0])}else for(let B of Q)$.add(B);return{...J,selected:$}},c2=(J,Q)=>{let q=new Set(J.selected);for(let $ of Q)q.delete($);return{...J,selected:q}},YJ=(J,Q,q)=>{if(q==="none")return J;if(J.selected.has(Q))return c2(J,[Q]);else return d2(J,[Q],q)},jJ=(J,Q,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(Q.map(($)=>$.id))}},BJ=(J)=>({...J,selected:new Set});var UJ=(J,Q)=>{return J.selected.has(Q)},NJ=(J)=>{return Array.from(J.selected)},KJ=(J,Q)=>{let q=[];for(let $ of J.selected){let B=Q($);if(B)q.push(B)}return q};var uJ=(J,Q)=>{let q=Q;return{getOffset:($)=>$*J,getSize:($)=>J,indexAtOffset:($)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor($/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:($)=>{q=$},isVariable:()=>!1}},mJ=(J,Q)=>{let q=Q,$=new Float64Array(0),B=(Y)=>{q=Y,$=new Float64Array(Y+1),$[0]=0;for(let W=0;W<Y;W++)$[W+1]=$[W]+J(W)};B(Q);let j=(Y)=>{if(q===0)return 0;if(Y<=0)return 0;if(Y>=$[q])return q-1;let W=0,z=q-1;while(W<z){let V=W+z+1>>>1;if($[V]<=Y)W=V;else z=V-1}return W};return{getOffset:(Y)=>{if(Y<=0)return 0;if(Y>=q)return $[q];return $[Y]},getSize:(Y)=>J(Y),indexAtOffset:(Y)=>j(Y),getTotalSize:()=>$[q]??0,getTotal:()=>q,rebuild:(Y)=>B(Y),isVariable:()=>!0}},k2=(J,Q)=>{if(typeof J==="number")return uJ(J,Q);return mJ(J,Q)},r2=(J,Q,q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let B=0,j=0,Y=Q;while(Y<$&&j<q)j+=J.getSize(Y),B++,Y++;return Math.max(1,B)};var v2=(J,Q,q)=>{let $=Q.getTotalSize(),B=q===!0||$>b2,j=$>b2?b2:$,Y=$>0?j/$:1;return{isCompressed:B,actualSize:$,virtualSize:j,ratio:Y}},ZJ=(J,Q,q,$,B,j)=>{if($===0||Q===0)return j.start=0,j.end=-1,j;if(!B.isCompressed||B.ratio===1){let _=q.indexAtOffset(J),O=q.indexAtOffset(J+Q);if(O<$-1)O++;return j.start=Math.max(0,_),j.end=Math.min($-1,Math.max(0,O)),j}let{virtualSize:Y}=B,W=J/Y,z=q.getTotalSize(),V=W*z,T=q.indexAtOffset(V),v=r2(q,Math.max(0,T),Q,$),C=T+v;return j.start=Math.max(0,T),j.end=Math.min($-1,Math.max(0,C)),j},_J=(J,Q,q,$)=>{if(q===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(q-1,J.end+Q),$},z2=(J,Q,q,$,B,j,Y)=>{if(!j.isCompressed||$===0)return q.getOffset(J);if(j.ratio===1)return q.getOffset(J)-Q;let{virtualSize:W}=j,z=Q/W,V=q.getTotalSize(),T=z*V;return q.getOffset(J)-T},VJ=(J,Q,q,$,B,j="start")=>{if($===0)return 0;let Y;if(B.isCompressed&&B.ratio!==1){Y=J/$*B.virtualSize;let T=Q.getSize(J);switch(j){case"center":Y-=(q-T)/2*B.ratio;break;case"end":Y-=(q-T)*B.ratio;break}return Math.max(0,Y)}Y=Q.getOffset(J);let W=Q.getSize(J);switch(j){case"center":Y-=(q-W)/2;break;case"end":Y-=q-W;break}let z=B.virtualSize-q;return Math.max(0,Math.min(Y,z))},WJ=(J,Q,q,$)=>{if(q===0)return 0;if($.isCompressed&&$.ratio!==1){let B=J/$.virtualSize;return Math.floor(B*q)}return Q.indexAtOffset(J)},DJ=(J,Q)=>{if(typeof Q==="number")return J*Q>b2;return Q.getTotalSize()>b2},GJ=(J)=>{if(J<=0)return 0;return Math.floor(b2/J)},MJ=(J,Q,q)=>{let $=v2(J,Q,q);if(!$.isCompressed)return`No compression needed (${J} items, ${($.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${($.ratio*100).toFixed(1)}% (${J} items, ${($.actualSize/1e6).toFixed(1)}M px → ${($.virtualSize/1e6).toFixed(1)}M px virtual)`};var S2=(J,Q,q)=>{let $=Array.from(Q).sort((Y,W)=>Y-W);if($.length<=1)return;let B=[];for(let Y=0;Y<$.length;Y++){let W=q($[Y]);if(W)B.push(W)}if(B.length<=1)return;let j=J.firstChild;for(let Y=0;Y<B.length;Y++){let W=B[Y];if(W===j)j=j.nextSibling;else J.insertBefore(W,j)}};var dJ=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let Y=document.createElement("div");return Y.setAttribute("role","option"),Y},release:(j)=>{if(j.remove(),Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-row"),j.removeAttribute("data-col"),Q.push(j)},clear:()=>{Q.length=0}}},cJ=1,rJ=(J,Q,q,$,B,j,Y,W,z=!1,V,T)=>{let v=dJ(),C=new Map,_=j,O=!1,E=0,L="",M=-1,y={selected:!1,focused:!1},Z=(K,b)=>{return y.selected=K,y.focused=b,y},H=`${B}-item ${B}-grid-item`,g=`${B}-group-header`,k=`${B}-item--selected`,h=`${B}-item--focused`,d=`${B}-item--placeholder`,Q2=`${B}-item--replaced`,o=(K,b)=>{if(typeof b==="string")K.innerHTML=b;else K.replaceChildren(b);C2(K)},$2=(K,b,A)=>{K.classList.toggle(k,b),K.classList.toggle(h,A)},B2=(K,b)=>{let A=$.getRow(K);if(b?.compression?.isCompressed)return z2(A,b.scrollPosition,q,b.totalItems,b.containerSize,b.compression,b.rangeStart);return q.getOffset(A)},j2=(K,b)=>{let A=$.getCol(K),I=O&&A===0?0:$.getColumnOffset(A,_),F;if(O){let G=$.getRow(K),X=0,u=-1;for(let x=0;x<K;x++){let p=$.getRow(x);if(p<G&&p!==u){let s=q.getSize(x);X+=s,u=p}}F=X}else F=B2(K,b);if(z)return`translate(${Math.round(F)}px, ${Math.round(I)}px)`;return`translate(${Math.round(I)}px, ${Math.round(F)}px)`},r=(K,b)=>{let A=K.classList.contains(g),P=A?_:$.getColumnWidth(_),I;if(O||A)I=q.getSize(b)-$.gap;else{let F=$.getRow(b);I=q.getSize(F)-$.gap}if(z)K.style.width=`${I}px`,K.style.height=`${P}px`;else K.style.width=`${P}px`,K.style.height=`${I}px`},J2=(K,b,A,P,I)=>{let F=v.acquire(),G=!!b.__groupHeader,X=Z(A,P);if(F.className=G?g:H,F.dataset.index=String(K),F.dataset.id=String(b.id),F.dataset.row=String($.getRow(K)),F.dataset.col=String($.getCol(K)),G)F.setAttribute("role","presentation"),F.removeAttribute("aria-selected"),F.removeAttribute("aria-setsize"),F.removeAttribute("aria-posinset"),F.removeAttribute("id");else if(T===!0){if(F.setAttribute("role","option"),F.ariaSelected=String(A),W)F.id=`${W}-item-${K}`;if(Y){let p=Y();if(p!==M)M=p,L=String(p);F.setAttribute("aria-setsize",L);let s=V?V(K):K+1;F.setAttribute("aria-posinset",String(s))}}else if(F.setAttribute("role","listitem"),F.removeAttribute("aria-selected"),Y){let p=Y();if(p!==M)M=p,L=String(p);F.setAttribute("aria-setsize",L);let s=V?V(K):K+1;F.setAttribute("aria-posinset",String(s))}r(F,K);let u=Q(b,K,X);if(o(F,u),String(b.id).startsWith(R2))F.classList.add(d);return $2(F,A,P),F.style.transform=I,{element:F,lastItem:b,lastSelected:A,lastFocused:P,lastTransform:I,lastSeenFrame:E}},i=(K,b,A,P,I)=>{if(E++,b.start===0&&K.length)O=w2(K[0]);let F=!1;if(Y){let X=Y();if(X!==M)M=X,L=String(X),F=!0}let G=null;for(let X=b.start;X<=b.end;X++){let u=X-b.start,x=K[u];if(!x)continue;let p=A.has(x.id),s=X===P,c=C.get(X);if(c){let V2=c.lastItem!==x,Z2=c.lastSelected!==p,q2=c.lastFocused!==s;if(V2){let S=c.element.dataset.id??"",t=String(x.id),Y2=S.startsWith(R2),N2=t.startsWith(R2);if(!N2&&y2(A,X,x.id))p=!0;let e=Z(p,s),G2=Q(x,X,e);if(o(c.element,G2),c.element.dataset.id=t,c.element.dataset.row=String($.getRow(X)),c.element.dataset.col=String($.getCol(X)),r(c.element,X),c.element.classList.toggle(d,N2),Y2&&!N2)c.element.classList.add(Q2),setTimeout(()=>c.element.classList.remove(Q2),300);if(c.lastItem=x,!x.__groupHeader){let U2=V?V(X):X+1;c.element.setAttribute("aria-posinset",String(U2))}}if(V2||Z2||q2)$2(c.element,p,s),c.element.ariaSelected=String(p),c.lastSelected=p,c.lastFocused=s;let m=j2(X,I);if(c.lastTransform!==m)c.element.style.transform=m,c.lastTransform=m;if(F&&!x.__groupHeader)c.element.setAttribute("aria-setsize",L)}else{if(y2(A,X,x.id))p=!0;let V2=j2(X,I),Z2=J2(X,x,p,s,V2);if(!G)G=document.createDocumentFragment();G.appendChild(Z2.element),C.set(X,Z2)}}if(G)J.appendChild(G);for(let[X,u]of C)if(X>=b.start&&X<=b.end)u.lastSeenFrame=E;else if(E-u.lastSeenFrame>cJ)v.release(u.element),C.delete(X)},R=(K)=>{for(let[b,A]of C){let P=j2(b,K);if(A.lastTransform!==P)A.element.style.transform=P,A.lastTransform=P}},U=(K,b,A,P)=>{let I=C.get(K);if(!I)return;let F=Z(A,P),G=Q(b,K,F);o(I.element,G),$2(I.element,A,P),I.element.dataset.id=String(b.id),I.element.ariaSelected=String(A),r(I.element,K),I.lastItem=b,I.lastSelected=A,I.lastFocused=P},N=(K,b,A)=>{let P=C.get(K);if(!P)return;let I=P.lastSelected!==b,F=P.lastFocused!==A;if(I||F)$2(P.element,b,A),P.lastSelected=b,P.lastFocused=A},D=(K)=>{return C.get(K)?.element},w=(K)=>{if(Math.abs(K-_)<1)return;_=K;for(let[b,A]of C){r(A.element,b);let P=j2(b);A.element.style.transform=P,A.lastTransform=P}},a=()=>{S2(J,C.keys(),(K)=>C.get(K)?.element)},l=()=>{for(let[,K]of C)v.release(K.element);C.clear()};return{render:i,updatePositions:R,updateItem:U,updateItemClasses:N,getElement:D,sortDOM:a,updateContainerWidth:w,clear:l,destroy:()=>{l(),v.clear()}}};var XJ=(J,Q=50,q=1/0,$=!0,B="none")=>{let j=J,Y=[],W=0,z=0,V=()=>{Y=j.map((Z,H)=>({def:Z,index:H,width:0,minWidth:lJ(Z.minWidth??Q,1),maxWidth:Z.maxWidth??q,resizable:Z.resizable??$,offset:0}))},T=()=>{if(B==="none"||W<=0||W>=z)return;if(B==="spacer"){W=z;return}let Z=z-W,H=W;for(let g=0;g<Y.length;g++){let k=Y[g];k.width=f2(k.width+Z*(k.width/H),k.minWidth,k.maxWidth)}C()},v=(Z)=>{if(z=Z,Y.length===0){W=0;return}let H=0,g=0;for(let k=0;k<Y.length;k++){let h=Y[k],d=h.def;if(d.width!==void 0)h.width=f2(d.width,h.minWidth,h.maxWidth),H+=h.width;else g++}if(g){let h=Math.max(0,Z-H)/g;for(let d=0;d<Y.length;d++){let Q2=Y[d];if(Q2.def.width===void 0)Q2.width=f2(h,Q2.minWidth,Q2.maxWidth)}}C(),T()},C=()=>{let Z=0;for(let H=0;H<Y.length;H++){let g=Y[H];g.offset=Z,Z+=g.width}W=Z},_=(Z,H)=>{if(Z<0||Z>=Y.length)return 0;let g=Y[Z];if(!g.resizable)return g.width;let k=f2(H,g.minWidth,g.maxWidth);if(g.width=k,C(),B==="spacer")T();return k},O=(Z)=>{return Y[Z]},E=(Z)=>{if(Y.length===0)return;if(Z<0)return Y[0];if(Z>=W)return Y[Y.length-1];let H=0,g=Y.length-1;while(H<g){let k=H+g>>>1,h=Y[k];if(Z<h.offset)g=k-1;else if(Z>=h.offset+h.width)H=k+1;else return h}return Y[H]},L=(Z)=>{if(Z<0||Z>=Y.length)return 0;return Y[Z].offset},M=(Z)=>{if(Z<0||Z>=Y.length)return 0;return Y[Z].width},y=(Z)=>{j=Z,V()};return V(),{get columns(){return Y},get totalWidth(){return W},resolve:v,updateColumns:y,resizeColumn:_,getColumn:O,getColumnAtX:E,getColumnOffset:L,getColumnWidth:M}},f2=(J,Q,q)=>Math.min(q,Math.max(Q,J)),lJ=(J,Q)=>Math.max(Q,J);var OJ=(J,Q,q,$,B,j)=>{let Y=document.createElement("div");Y.setAttribute("role","rowgroup");let W=document.createElement("div");W.className=`${q}-table-header`,W.setAttribute("role","row"),W.setAttribute("aria-rowindex","1"),W.style.height=`${Q}px`;let z=document.createElement("div");z.className=`${q}-table-header-scroll`,z.setAttribute("role","presentation"),W.appendChild(z),Y.appendChild(W),J.insertBefore(Y,J.firstChild),J.style.setProperty("--vlist-table-header-height",`${Q}px`);let V=[],T=[],v=!0,C=null,_="asc",O=null,E=!1,L=-1,M=0,y=0,Z=0,H=(U,N)=>{let D=document.createElement("div");D.className=`${q}-table-header-cell`,D.setAttribute("role","columnheader"),D.setAttribute("aria-colindex",String(N+1)),D.setAttribute("tabindex",N===0?"0":"-1"),D.dataset.columnKey=U.def.key;let w=U.def.align;if(w==="center")D.classList.add(`${q}-table-header-cell--center`);else if(w==="right")D.classList.add(`${q}-table-header-cell--right`);let a=document.createElement("div");a.className=`${q}-table-header-content`;let l=U.def.header?U.def.header(U.def):U.def.label;if(typeof l==="string")a.textContent=l;else a.appendChild(l);if(D.appendChild(a),U.def.sortable){let f=document.createElement("span");f.className=`${q}-table-header-sort`,f.setAttribute("aria-hidden","true"),D.appendChild(f),T.push(f),D.classList.add(`${q}-table-header-cell--sortable`)}else T.push(null);if(U.resizable){let f=document.createElement("div");f.className=`${q}-table-header-resize`,f.dataset.resizeIndex=String(N),D.appendChild(f)}return D},g=(U)=>{O=U,z.textContent="",V=[],T=[];let N=U.columns;for(let D=0;D<N.length;D++){let w=N[D],a=H(w,D);V.push(a),z.appendChild(a)}if(k(U),C)h(C,_)},k=(U)=>{O=U;let N=U.columns;z.style.width=`${U.totalWidth}px`;for(let D=0;D<V.length&&D<N.length;D++){let w=V[D],a=N[D];w.style.width=`${a.width}px`}},h=(U,N)=>{if(C=U,_=N,!O)return;let D=O.columns;for(let w=0;w<T.length&&w<D.length;w++){let a=T[w];if(!a)continue;if(D[w].def.key===U)a.textContent=N==="asc"?"▲":"▼",a.style.opacity="0.7",V[w].setAttribute("aria-sort",N==="asc"?"ascending":"descending");else a.textContent="",a.style.opacity="0",V[w].removeAttribute("aria-sort")}},d=(U)=>{z.style.transform=`translateX(${-U}px)`},Q2=(U)=>{let N=U.target;if(!N.dataset.resizeIndex)return;if(U.preventDefault(),U.stopPropagation(),L=+N.dataset.resizeIndex,!O)return;let D=O.getColumn(L);if(!D?.resizable)return;E=!0,M=U.clientX,y=D.width,J.classList.add(`${q}--col-resizing`),J.style.cursor="col-resize",N.classList.add(`${q}-table-header-resize--active`),N.setPointerCapture(U.pointerId),N.addEventListener("pointermove",o),N.addEventListener("pointerup",$2),N.addEventListener("pointercancel",$2)},o=(U)=>{if(!E||!O)return;let N=U.clientX-M;if(Math.abs(N)<1)return;let D=Math.max(0,y+N);$(L,D)},$2=(U)=>{if(!E)return;let N=U.target;N.removeEventListener("pointermove",o),N.removeEventListener("pointerup",$2),N.removeEventListener("pointercancel",$2);try{N.releasePointerCapture(U.pointerId)}catch{}N.classList.remove(`${q}-table-header-resize--active`),J.classList.remove(`${q}--col-resizing`),J.style.cursor="",E=!1,L=-1},B2=(U)=>{let N=U.target;if(N.dataset.resizeIndex)return;if(E)return;let D=N;while(D&&!D.dataset.columnKey)if(D=D.parentElement,D===W||D===null)return;let w=D.dataset.columnKey;if(!O)return;let a=O.columns,l=-1;for(let K=0;K<a.length;K++)if(a[K].def.key===w){l=K;break}if(l===-1)return;let f=a[l];if(j)j({key:w,index:l,event:U});if(f.def.sortable&&B){let K;if(C===w)K=_==="asc"?"desc":null;else K="asc";B({key:w,index:l,direction:K})}},j2=(U)=>{if(U<0||U>=V.length)return;V[Z]?.setAttribute("tabindex","-1"),Z=U;let N=V[Z];N.setAttribute("tabindex","0"),N.focus()},r=(U)=>{let N=U.key;if(N==="ArrowRight"){if(U.ctrlKey||U.metaKey){if(!O)return;let D=O.getColumn(Z);if(D?.resizable)$(Z,D.width+10),U.preventDefault()}else if(Z<V.length-1)j2(Z+1),U.preventDefault();U.stopPropagation();return}if(N==="ArrowLeft"){if(U.ctrlKey||U.metaKey){if(!O)return;let D=O.getColumn(Z);if(D?.resizable)$(Z,D.width-10),U.preventDefault()}else if(Z>0)j2(Z-1),U.preventDefault();U.stopPropagation();return}if(N==="Home"){j2(0),U.preventDefault(),U.stopPropagation();return}if(N==="End"){j2(V.length-1),U.preventDefault(),U.stopPropagation();return}if(N==="Enter"||N===" "){if(!O)return;let D=O.getColumn(Z);if(D?.def.sortable&&B){let w;if(C===D.def.key)w=_==="asc"?"desc":null;else w="asc";B({key:D.def.key,index:Z,direction:w}),U.preventDefault()}U.stopPropagation();return}if(N==="ArrowDown"){J.focus(),U.preventDefault(),U.stopPropagation();return}};return W.addEventListener("pointerdown",Q2),W.addEventListener("click",B2),W.addEventListener("keydown",r),{element:W,update:k,updateSort:h,rebuild:g,show:()=>{if(v)return;v=!0,W.style.display=""},hide:()=>{if(!v)return;v=!1,W.style.display="none"},destroy:()=>{W.removeEventListener("pointerdown",Q2),W.removeEventListener("click",B2),W.removeEventListener("keydown",r),J.style.removeProperty("--vlist-table-header-height"),Y.remove(),V=[],T=[],O=null,v=!1},syncScroll:d}};var aJ=()=>{let J=[];return{acquire:()=>J.pop()||document.createElement("div"),release:(Q)=>{if(Q.parentNode?.removeChild(Q),J.length<200)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",J.push(Q)},clear:()=>{J.length=0}}},EJ=(J,Q,q,$,B,j,Y,W,z)=>{let V=aJ(),T=new Map,v=-1,C=q,_=null,O=null,E=null,L=(G,X)=>{O=G,E=X},M=(G,X)=>{X?G.setAttribute("aria-selected","true"):G.removeAttribute("aria-selected")},y=(G,X,u,x)=>{G.setAttribute("role",X),G.setAttribute("data-id",String(u)),G.setAttribute("data-index",String(x))},Z=(G)=>String(G).startsWith("__placeholder_"),H=`${B}-item ${B}-table-row`,g=`${B}-item--selected`,k=`${B}-item--focused`,h=`${B}-table-cell`,d=`${B}-table-cell--center`,Q2=`${B}-table-cell--right`,o=`${B}-table-cell-skeleton`,$2=`${B}-item--odd`,B2=`${B}-item--placeholder`,j2=`${B}-item--replaced`,r=`${B}-table-row ${B}-table-group-header`,J2=`${B}-table-group-header-content`,i=(G,X,u,x,p=!1)=>{if(u.def.cell){let s=u.def.cell(X,u.def,x);if(typeof s==="string")G.innerHTML=s;else G.replaceChildren(s)}else{let s=X[u.def.key],c=s!=null?String(s):"";if(p&&c)G.innerHTML=`<span>${c}</span>`;else G.textContent=c}if(p&&G.firstElementChild===null){G.replaceChildren();let s=document.createElement("span");s.className=o,G.appendChild(s)}},R=(G,X,u,x,p=!1)=>{let s=H;if(W){if(_){let c=_(X);if(c>=0&&(c&1)===1)s+=` ${$2}`}else if((X&1)===1)s+=` ${$2}`}if(p)s+=` ${B2}`;if(u)s+=` ${g}`;if(x)s+=` ${k}`;G.className=s},U=(G,X,u)=>{if(u?.compression?.isCompressed)return Math.round(z2(G,u.scrollPosition,X,u.totalItems,u.containerSize,u.compression,u.rangeStart));return X.getOffset(G)},N=(G,X)=>{let u=X.def.align;if(u==="center")G.classList.add(d),G.classList.remove(Q2);else if(u==="right")G.classList.add(Q2),G.classList.remove(d);else G.classList.remove(d,Q2)},D=(G,X)=>{let x=C.columns.length;if(X.length===x)return X;let p=[];for(let s=0;s<x;s++){let c;if(s<X.length)c=X[s];else c=document.createElement("div"),c.className=h,G.appendChild(c);p.push(c)}for(let s=x;s<X.length;s++)X[s].remove();return p},w=(G,X,u,x)=>{let p=V.acquire(),s=G,c=u.getSize(X),V2=U(X,u,x);p.style.cssText=`width:${C.totalWidth}px;height:${c}px;transform:translateY(${V2}px)`,p.className=r,y(p,"presentation",G.id,X),p.removeAttribute("aria-selected"),p.removeAttribute("aria-rowindex"),p.replaceChildren();let Z2=document.createElement("div");if(Z2.className=J2,E){let q2=E(s.groupKey,s.groupIndex);if(typeof q2==="string")Z2.innerHTML=q2;else Z2.appendChild(q2)}return p.appendChild(Z2),{element:p,cells:[],index:X,isGroupHeader:!0,_lastItem:G,lastItemId:G.id,lastSelected:!1,lastFocused:!1,lastOffset:V2,lastHeight:c}},a=(G,X,u,x,p,s)=>{let c=V.acquire(),V2=p.getSize(X),Z2=U(X,p,s),q2=Z(G.id);c.style.cssText=`width:${C.totalWidth}px;height:${V2}px;transform:translateY(${Z2}px)`,R(c,X,u,x,q2),y(c,"row",G.id,X),c.id=`${j}-item-${X}`,c.setAttribute("aria-rowindex",String(X+2)),M(c,u);let m=D(c,[]),S=C.columns;for(let t=0;t<m.length&&t<S.length;t++){let Y2=m[t],N2=S[t];Y2.style.cssText=`left:${N2.offset}px;width:${N2.width}px`,Y2.setAttribute("role","gridcell"),Y2.setAttribute("aria-colindex",String(t+1)),N(Y2,N2),i(Y2,G,N2,X,q2)}return{element:c,cells:m,index:X,isGroupHeader:!1,_lastItem:G,lastItemId:G.id,lastSelected:u,lastFocused:x,lastOffset:Z2,lastHeight:V2}},l=(G,X,u,x,p)=>{let s=!1,c=Y();if(c!==v)v=c,s=!0;let V2=null,Z2=Q();_=typeof W==="string"&&z?z():null;for(let q2=X.start;q2<=X.end;q2++){let m=q2-X.start,S=G[m];if(!S)continue;let t=u.has(S.id),Y2=q2===x,N2=O?O(S):!1,e=T.get(q2);if(e){if(e.isGroupHeader!==N2){V.release(e.element),T.delete(q2);let G2=N2?w(S,q2,Z2,p):a(S,q2,t,Y2,Z2,p);if(T.set(q2,G2),!V2)V2=document.createDocumentFragment();V2.appendChild(G2.element);continue}if(N2){if(e._lastItem!==S){let M2=S,X2=e.element.firstElementChild;if(X2&&E){let A2=E(M2.groupKey,M2.groupIndex);if(typeof A2==="string")X2.innerHTML=A2;else X2.replaceChildren(A2)}e.element.setAttribute("data-id",String(S.id)),e._lastItem=S,e.lastItemId=S.id}let F2=U(q2,Z2,p);if(e.lastOffset!==F2)e.lastOffset=F2,e.element.style.transform=`translateY(${F2}px)`;let U2=Z2.getSize(q2);if(e.lastHeight!==U2)e.lastHeight=U2,e.element.style.height=`${U2}px`}else{let G2=e._lastItem!==S,F2=e.lastSelected!==t,U2=e.lastFocused!==Y2;if(G2){let A2=e.lastItemId!=null&&Z(e.lastItemId),K2=Z(S.id);if(!K2&&y2(u,q2,S.id))t=!0;let O2=C.columns;for(let W2=0;W2<e.cells.length&&W2<O2.length;W2++)i(e.cells[W2],S,O2[W2],q2,K2);if(R(e.element,q2,t,Y2,K2),e.element.setAttribute("data-id",String(S.id)),M(e.element,t),A2&&!K2)e.element.classList.add(j2),setTimeout(()=>{e.element.classList.remove(j2)},300);e._lastItem=S,e.lastItemId=S.id,e.lastSelected=t,e.lastFocused=Y2}else if(F2||U2)R(e.element,q2,t,Y2,Z(S.id)),M(e.element,t),e.lastSelected=t,e.lastFocused=Y2;let M2=U(q2,Z2,p);if(e.lastOffset!==M2)e.lastOffset=M2,e.element.style.transform=`translateY(${M2}px)`;let X2=Z2.getSize(q2);if(e.lastHeight!==X2)e.lastHeight=X2,e.element.style.height=`${X2}px`;if(s)e.element.setAttribute("aria-rowindex",String(q2+2))}}else{if(y2(u,q2,S.id))t=!0;let G2=N2?w(S,q2,Z2,p):a(S,q2,t,Y2,Z2,p);if(T.set(q2,G2),!V2)V2=document.createDocumentFragment();V2.appendChild(G2.element)}}if(V2)J.appendChild(V2);for(let[q2,m]of T)if(q2<X.start||q2>X.end)V.release(m.element),T.delete(q2)},f=(G)=>{let X=Q();for(let[u,x]of T){let p=U(u,X,G);if(x.lastOffset!==p)x.lastOffset=p,x.element.style.transform=`translateY(${p}px)`}},K=(G,X,u,x)=>{let p=T.get(G);if(!p)return;if(p.isGroupHeader)return;let s=C.columns;for(let c=0;c<p.cells.length&&c<s.length;c++)i(p.cells[c],X,s[c],G);p.element.setAttribute("data-id",String(X.id)),p._lastItem=X,p.lastItemId=X.id,R(p.element,G,u,x),M(p.element,u),p.lastSelected=u,p.lastFocused=x},b=(G,X,u)=>{let x=T.get(G);if(!x)return;if(x.isGroupHeader)return;let p=x.lastSelected!==X,s=x.lastFocused!==u;if(p||s)R(x.element,G,X,u),M(x.element,X),x.lastSelected=X,x.lastFocused=u},A=(G)=>{C=G;let X=G.columns;for(let[,u]of T)if(u.element.style.width=`${G.totalWidth}px`,u.cells.length>0)for(let x=0;x<u.cells.length&&x<X.length;x++){let p=u.cells[x],s=X[x];p.style.left=`${s.offset}px`,p.style.width=`${s.width}px`}},P=(G)=>{return T.get(G)?.element},I=()=>{for(let[,G]of T)V.release(G.element);T.clear(),v=-1};return{render:l,updatePositions:f,updateItem:K,updateItemClasses:b,getElement:P,updateColumnLayout:A,setGroupHeaderFn:L,clear:I,destroy:()=>{I(),V.clear()}}};var AJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),q=J.gap??0,$=J.containerSize,B=J.crossOffset??0,j=J.mainOffset??0,Y=0,W=[],z=()=>{let M=(Q-1)*q;Y=Math.max(0,($-M)/Q),W=Array(Q);let y=Y+q;for(let Z=0;Z<Q;Z++)W[Z]=B+Z*y};z();let V=[],T=0,v=[],C=(M,y)=>{if(M<=0)return T=0,V=[],[];let Z=Array(Q).fill(j),H=Array(Q);for(let h=0;h<Q;h++)H[h]=[];let g=Array(M);for(let h=0;h<M;h++){let d=0,Q2=Z[0];for(let B2=1;B2<Q;B2++){let j2=Z[B2];if(j2<Q2)Q2=j2,d=B2}let o=y(h),$2=Z[d];g[h]={index:h,x:W[d],y:$2,lane:d,size:o,crossSize:Y},H[d].push(h),Z[d]=$2+o+q}V=H;let k=0;for(let h=0;h<Q;h++){let d=Z[h],Q2=d>0?d-q:0;if(Q2>k)k=Q2}return T=k,g},_=(M)=>{if(M.length===0)return T;if(T)return T;let y=Array(Q).fill(0);for(let H of M){let g=H.y+H.size,k=y[H.lane];if(g>k)y[H.lane]=g}let Z=0;for(let H=0;H<Q;H++)if(y[H]>Z)Z=y[H];return Z},O=(M,y,Z)=>{if(M.length===0||Z<=y)return v.length=0,v;if(V.length===0||V.length!==Q)return E(M,y,Z);v.length=0;for(let H=0;H<Q;H++){let g=V[H],k=g.length;if(!k)continue;let h=0,d=k;while(h<d){let Q2=h+d>>>1,o=M[g[Q2]];if(o.y+o.size<=y)h=Q2+1;else d=Q2}for(let Q2=h;Q2<k;Q2++){let o=M[g[Q2]];if(o.y>=Z)break;v.push(o)}}return v},E=(M,y,Z)=>{v.length=0;for(let H of M)if(H.y+H.size>y&&H.y<Z)v.push(H);return v};return{get columns(){return Q},get gap(){return q},get containerSize(){return $},update:(M)=>{let y=!1;if(M.columns!==void 0){let Z=Math.max(1,Math.floor(M.columns));if(Z!==Q)Q=Z,y=!0}if(M.gap!==void 0&&M.gap!==q)q=M.gap,y=!0;if(M.containerSize!==void 0&&M.containerSize!==$)$=M.containerSize,y=!0;if(M.crossOffset!==void 0&&M.crossOffset!==B)B=M.crossOffset,y=!0;if(M.mainOffset!==void 0&&M.mainOffset!==j)j=M.mainOffset,y=!0;if(y)z()},calculateLayout:C,getTotalSize:_,getVisibleItems:O}};var sJ=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let Y=document.createElement("div");return Y.setAttribute("role","option"),Y},release:(j)=>{if(j.remove(),Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-lane"),Q.push(j)},clear:()=>{Q.length=0}}},nJ=1,FJ=(J,Q,q,$=!1,B,j,Y,W)=>{let z=sJ(),V=new Map,T=new Set,v=0,C="",_=-1,O={selected:!1,focused:!1},E=(r,J2)=>{return O.selected=r,O.focused=J2,O},L=`${q}-item ${q}-masonry-item`,M=`${q}-group-header`,y=`${q}-item--selected`,Z=`${q}-item--focused`,H=(r,J2)=>{if(typeof J2==="string")r.innerHTML=J2;else r.replaceChildren(J2);C2(r)},g=(r,J2,i)=>{r.classList.toggle(y,J2),r.classList.toggle(Z,i)},k=(r,J2)=>{if($)r.style.transform=`translate(${Math.round(J2.y)}px, ${Math.round(J2.x)}px)`;else r.style.transform=`translate(${Math.round(J2.x)}px, ${Math.round(J2.y)}px)`},h=(r,J2)=>{if($)r.style.width=`${J2.size}px`,r.style.height=`${J2.crossSize}px`;else r.style.width=`${J2.crossSize}px`,r.style.height=`${J2.size}px`},d=(r,J2,i,R,U)=>{let N=z.acquire(),D=J2.__groupHeader,w=E(R,U);if(N.className=D?M:L,N.dataset.index=String(r),N.dataset.id=String(J2.id),N.dataset.lane=String(i.lane),D)N.setAttribute("role","presentation"),N.removeAttribute("aria-selected"),N.removeAttribute("aria-setsize"),N.removeAttribute("aria-posinset"),N.removeAttribute("id");else if(W===!0){if(N.setAttribute("role","option"),N.ariaSelected=String(R),j)N.id=`${j}-item-${r}`;if(B){let l=B();if(l!==_)_=l,C=String(l);N.setAttribute("aria-setsize",C);let f=Y?Y(r):r+1;N.setAttribute("aria-posinset",String(f))}}else if(N.setAttribute("role","listitem"),N.removeAttribute("aria-selected"),B){let l=B();if(l!==_)_=l,C=String(l);N.setAttribute("aria-setsize",C);let f=Y?Y(r):r+1;N.setAttribute("aria-posinset",String(f))}h(N,i);let a=Q(J2,r,w);return H(N,a),g(N,R,U),k(N,i),{element:N,lastItem:J2,lastSelected:R,lastFocused:U,lastY:i.y,lastX:i.x,lastSize:i.size,lastCrossSize:i.crossSize,lastSeenFrame:v}},Q2=(r,J2,i,R)=>{v++,T.clear();for(let N=0;N<J2.length;N++)T.add(J2[N].index);let U=null;for(let N=0;N<J2.length;N++){let D=J2[N],w=D.index,a=r(w);if(!a)continue;let l=i.has(a.id),f=w===R,K=V.get(w);if(K){let b=K.lastItem!==a,A=K.lastSelected!==l,P=K.lastFocused!==f,I=K.lastY!==D.y||K.lastX!==D.x,F=K.lastSize!==D.size||K.lastCrossSize!==D.crossSize;if(b){let G=E(l,f),X=Q(a,w,G);if(H(K.element,X),K.element.dataset.id=String(a.id),K.lastItem=a,!a.__groupHeader){let x=Y?Y(w):w+1;K.element.setAttribute("aria-posinset",String(x))}}if(b||A||P)g(K.element,l,f),K.element.ariaSelected=String(l),K.lastSelected=l,K.lastFocused=f;if(F)h(K.element,D),K.lastSize=D.size,K.lastCrossSize=D.crossSize;if(I)k(K.element,D),K.lastY=D.y,K.lastX=D.x}else{let b=d(w,a,D,l,f);if(!U)U=document.createDocumentFragment();U.appendChild(b.element),V.set(w,b)}}if(U)J.appendChild(U);for(let[N,D]of V)if(T.has(N))D.lastSeenFrame=v;else if(v-D.lastSeenFrame>nJ)z.release(D.element),V.delete(N)},o=()=>{for(let r of V.values())z.release(r.element);V.clear(),J.innerHTML=""};return{render:Q2,getElement:(r)=>V.get(r)?.element,updateItemClasses:(r,J2,i)=>{let R=V.get(r);if(!R)return;let U=R.lastSelected!==J2,N=R.lastFocused!==i;if(U||N)g(R.element,J2,i),R.lastSelected=J2,R.lastFocused=i},sortDOM:()=>{S2(J,V.keys(),(r)=>V.get(r)?.element)},clear:o,destroy:()=>{o(),z.clear()}}};var LJ=(J,Q)=>{let q=new Map,$=(j)=>q.get(j)??J,B=k2($,Q);return{getOffset(j){return B.getOffset(j)},getSize(j){return $(j)},indexAtOffset(j){return B.indexAtOffset(j)},getTotalSize(){return B.getTotalSize()},getTotal(){return B.getTotal()},rebuild(j){if(j<B.getTotal()){for(let Y of q.keys())if(Y>=j)q.delete(Y)}B=k2($,j)},isVariable(){return!0},setMeasuredSize(j,Y){q.set(j,Y)},isMeasured(j){return q.has(j)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var HJ=(J,Q,q,$,B,j)=>{if($===0||Q===0)return j.start=0,j.end=-1,j;let Y=q.indexAtOffset(J),W=q.indexAtOffset(J+Q);if(W<$-1)W++;return j.start=Math.max(0,Y),j.end=Math.min($-1,Math.max(0,W)),j},bJ=(J,Q,q,$)=>{if(q===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(q-1,J.end+Q),$},RJ=(J,Q,q,$,B,j)=>{if($===0)return 0;let Y=Math.max(0,Math.min(J,$-1)),W=Q.getOffset(Y),z=Q.getSize(Y),V=Q.getTotalSize(),T=Math.max(0,V-q),v;switch(j){case"center":v=W-q/2+z/2;break;case"end":v=W-q+z;break;case"start":default:v=W;break}return Math.max(0,Math.min(v,T))},TJ=(J,Q,q)=>{if(q&&q.isCompressed)return q.virtualSize;return Q.getTotalSize()},yJ=(J,Q)=>{return Q.getTotalSize()},zJ=(J,Q)=>{return Q.getOffset(J)},PJ=(J,Q,q)=>{let $=Math.max(0,Q-q);return Math.max(0,Math.min(J,$))};var kJ=(J,Q,q,$,B="start",j,Y=RJ)=>{return Y(J,Q,q,$,j,B)},vJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},wJ=(J,Q)=>{return J>=Q.start&&J<=Q.end},CJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var SJ=(J,Q)=>{let q=[],$=[];for(let B=J.start;B<=J.end;B++)if(B<Q.start||B>Q.end)$.push(B);for(let B=Q.start;B<=Q.end;B++)if(B<J.start||B>J.end)q.push(B);return{add:q,remove:$}};var fJ=()=>{let J={},Q=(j,Y)=>{if(!J[j])J[j]=new Set;return J[j].add(Y),()=>q(j,Y)},q=(j,Y)=>{J[j]?.delete(Y)};return{on:Q,off:q,emit:(j,Y)=>{J[j]?.forEach((W)=>{try{W(Y)}catch(z){console.error(`[vlist] Error in event handler for "${String(j)}":`,z)}})},clear:(j)=>{if(j)delete J[j];else for(let Y in J)delete J[Y]}}};var I2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:q=5000,evictionBuffer:$=200,onEvict:B}=J,j=new Map,Y=0,W=0,z=(R)=>{let U=j.get(R);if(!U)U={items:Array(Q),count:0,lastAccess:Date.now()},j.set(R,U);else U.lastAccess=Date.now();return U},V=(R)=>{return Math.floor(R/Q)},T=(R)=>{return R%Q},v=()=>Y,C=(R)=>{Y=R},_=(R)=>{if(R<0||R>=Y)return;let U=V(R),N=j.get(U);if(!N)return;return N.items[T(R)]},O=(R)=>{if(R<0||R>=Y)return!1;let U=V(R),N=j.get(U);if(!N)return!1;return N.items[T(R)]!==void 0},E=(R,U)=>{let N=V(R),D=z(N),w=T(R),a=D.items[w]===void 0;if(D.items[w]=U,a)D.count++,W++;if(R>=Y)Y=R+1},L=(R,U)=>{for(let N=0;N<U.length;N++){let D=U[N];if(D!==void 0)E(R+N,D)}},M=(R,U)=>{if(R<0||R>Y)return;let N=V(R),D=Array.from(j.keys()).filter((K)=>K>=N).sort((K,b)=>K-b),w=[];for(let K of D){let b=j.get(K),A=K*Q;for(let P=0;P<Q;P++){if(b.items[P]===void 0)continue;let I=A+P;if(I<R)continue;w.push({oldIndex:I,item:b.items[P]})}}for(let{oldIndex:K}of w){let b=V(K),A=j.get(b);if(!A)continue;let P=T(K);if(A.items[P]!==void 0){if(A.items[P]=void 0,A.count--,W--,A.count===0)j.delete(b)}}Y++;for(let{oldIndex:K,item:b}of w){let A=K+1,P=V(A),I=z(P),F=T(A);I.items[F]=b,I.count++,W++}let a=V(R),l=z(a),f=T(R);l.items[f]=U,l.count++,W++},y=(R)=>{if(R<0||R>=Y)return!1;let U=V(R),N=j.get(U),D=T(R);if(!(N!==void 0&&N.items[D]!==void 0))return!1;let a=U,l=Array.from(j.keys()).filter((K)=>K>=a).sort((K,b)=>K-b),f=[];for(let K of l){let b=j.get(K),A=K*Q;for(let P=0;P<Q;P++){if(b.items[P]===void 0)continue;let I=A+P;if(I<=R)continue;f.push({oldIndex:I,item:b.items[P]})}}if(N.items[D]=void 0,N.count--,W--,N.count===0)j.delete(U);for(let{oldIndex:K}of f){let b=V(K),A=j.get(b);if(!A)continue;let P=T(K);if(A.items[P]!==void 0){if(A.items[P]=void 0,A.count--,W--,A.count===0)j.delete(b)}}for(let{oldIndex:K,item:b}of f){let A=K-1,P=V(A),I=z(P),F=T(A);I.items[F]=b,I.count++,W++}return Y--,!0},Z=(R,U)=>{let N=[];for(let D=R;D<=U&&D<Y;D++)N.push(_(D));return N},H=(R,U)=>{for(let N=R;N<=U&&N<Y;N++)if(!O(N))return!1;return!0},g=()=>{let R=[],U=null,N=Array.from(j.keys()).sort((D,w)=>D-w);for(let D of N){let w=j.get(D);if(!w)continue;let a=D*Q;for(let l=0;l<Q;l++){let f=a+l;if(f>=Y)break;if(w.items[l]!==void 0)if(U===null)U={start:f,end:f};else if(f===U.end+1)U.end=f;else R.push(U),U={start:f,end:f};else if(U!==null)R.push(U),U=null}}if(U!==null)R.push(U);return R},k=(R,U)=>{let N=[],D=null;for(let w=R;w<=U&&w<Y;w++)if(!O(w))if(D===null)D={start:w,end:w};else D.end=w;else if(D!==null)N.push(D),D=null;if(D!==null)N.push(D);return N},h=(R)=>{return j.has(R)},d=(R)=>{let U=j.get(R);if(!U)return!1;let N=R*Q,D=Math.min(Q,Y-N);return U.count>=D},Q2=(R)=>{let U=j.get(R);if(U)U.lastAccess=Date.now()},o=(R,U)=>{if(R>U||j.size===0)return;let N=Date.now(),D=V(Math.max(0,R)),w=V(Math.min(Y-1,U));for(let a=D;a<=w;a++){let l=j.get(a);if(l)l.lastAccess=N}},$2=(R,U)=>{if(W<=q)return 0;let N=Math.max(0,R-$),D=Math.min(Y-1,U+$),w=V(N),a=V(D),l=0,f=[];for(let[K,b]of j)if(K<w||K>a)l+=b.count,f.push(K),W-=b.count,j.delete(K);if(l>0&&B)B(l,f);return l},B2=()=>{if(W<=q)return 0;let R=Array.from(j.entries()).sort(([,D],[,w])=>D.lastAccess-w.lastAccess),U=0,N=[];for(let[D,w]of R){if(W<=q)break;U+=w.count,W-=w.count,N.push(D),j.delete(D)}if(U>0&&B)B(U,N);return U},j2=()=>{return{totalItems:Y,cachedItems:W,cachedChunks:j.size,chunkSize:Q,maxCachedItems:q,memoryEfficiency:Y>0?1-W/Y:1}},r=()=>W,J2=()=>{j.clear(),W=0};return{chunkSize:Q,maxCachedItems:q,getTotal:v,setTotal:C,get:_,has:O,set:E,setRange:L,insert:M,delete:y,getRange:Z,isRangeLoaded:H,getLoadedRanges:g,findUnloadedRanges:k,getChunkIndex:V,isChunkLoaded:h,isChunkFullyLoaded:d,touchChunk:Q2,touchChunksForRange:o,evictDistant:$2,evictToLimit:B2,getStats:j2,getCachedCount:r,clear:J2,reset:()=>{J2(),Y=0}}},p2=(J)=>{if(J.length===0)return[];let Q=[...J].sort(($,B)=>$.start-B.start),q=[{...Q[0]}];for(let $=1;$<Q.length;$++){let B=Q[$],j=q[q.length-1];if(B.start<=j.end+1)j.end=Math.max(j.end,B.end);else q.push({...B})}return q},l2=(J,Q,q)=>{let $=Math.floor(J.start/q)*q,B=Math.ceil((J.end+1)/q)*q-1,j={start:$,end:B};if(Q.length===0)return[j];let Y=[],W=p2(Q),z=j.start;for(let V of W){if(V.end<z)continue;if(V.start>j.end)break;if(V.start>z)Y.push({start:z,end:Math.min(V.start-1,j.end)});if(z=V.end+1,z>j.end)break}if(z<=j.end)Y.push({start:z,end:j.end});return Y};var h2=(J={})=>{let{maskCharacter:Q=QJ,maxSampleSize:q=$J}=J,$=[],B=!1,j=(T)=>{if(B||T.length===0)return;let v=Math.min(T.length,q);for(let C=0;C<v;C++){let _=T[C];if(!_||typeof _!=="object")continue;let O={},E=!1;for(let[L,M]of Object.entries(_)){if(L.startsWith("_")||L==="id")continue;O[L]=String(M??"").length,E=!0}if(E)$.push(O)}B=!0},Y=()=>B,W=(T)=>{let v={id:`${R2}${T}`,[m2]:!0,_index:T};if($.length===0)return v.label=Q.repeat(12),v;let C=$[T%$.length];for(let[_,O]of Object.entries(C))v[_]=Q.repeat(Math.max(1,O));return v};return{analyzeStructure:j,hasAnalyzedStructure:Y,generate:W,generateRange:(T,v)=>{let C=[];for(let _=T;_<=v;_++)C.push(W(_));return C},clear:()=>{$=[],B=!1}}},T2=(J)=>{if(!J||typeof J!=="object")return!1;return J[m2]===!0},a2=(J)=>{return J.filter((Q)=>!T2(Q))};var iJ=50,IJ=(J={})=>{let{adapter:Q,initialItems:q,initialTotal:$,storage:B,placeholder:j,pageSize:Y=iJ,maxConcurrent:W=0,onStateChange:z,onDataChange:V,onItemsLoaded:T,onItemsEvicted:v,onLoadError:C}=J,_=I2({...B,onEvict:(m,S)=>{v?.(m),$2(),o()}}),O=null,E=()=>{if(!O)O=h2(j);return O},L=new Map,M=!1,y,Z=!0,H,g,k=[],h=0,d=new Map,Q2=()=>{for(let m of d.values())m[1].abort();d.clear()},o=()=>{z?.(D())},$2=()=>{V?.()},B2=()=>{L.clear();let m=_.getLoadedRanges();for(let S of m)for(let t=S.start;t<=S.end;t++){let Y2=_.get(t);if(Y2&&!T2(Y2))L.set(Y2.id,t)}},j2=(m,S)=>{if(!T2(S))L.set(S.id,m)},r=(m)=>{L.delete(m)},J2=(m,S)=>{return`${m}-${S}`},i=()=>_.getTotal(),R=()=>_.getCachedCount(),U=()=>M,N=()=>Z,D=()=>({total:_.getTotal(),cached:_.getCachedCount(),isLoading:M,pendingRanges:k,error:y,hasMore:Z,cursor:H}),w=()=>_,a=()=>E(),l=(m)=>{let S=_.get(m);if(S!==void 0)return S;if(m>=0&&m<_.getTotal())return E().generate(m);return},f=(m)=>{let S=L.get(m);if(S===void 0)return;return _.get(S)},K=(m)=>{return L.get(m)??-1},b=(m)=>{let S=_.get(m);return S!==void 0&&!T2(S)},A=(m,S)=>{let t=[],Y2=_.getTotal();_.touchChunksForRange(m,Math.min(S,Y2-1));for(let N2=m;N2<=S&&N2<Y2;N2++){let e=_.get(N2);if(e!==void 0)t.push(e);else t.push(E().generate(N2))}return t},P=(m)=>{_.setTotal(m),Z=_.getCachedCount()<m,$2(),o()},I=(m,S=0,t)=>{if(Q&&m.length>0){let Y2=E();if(!Y2.hasAnalyzedStructure())Y2.analyzeStructure(m)}for(let Y2=0;Y2<m.length;Y2++){let N2=m[Y2];if(N2!==void 0){let e=S+Y2;_.set(e,N2),j2(e,N2)}}if(t!==void 0)_.setTotal(t);else if(S+m.length>_.getTotal())_.setTotal(S+m.length);if(_.getCachedCount()>=_.getTotal()&&_.getTotal()>0)Z=!1;$2(),o(),T?.(m,S,_.getTotal())},F=(m,S)=>{let t=_.get(m);if(!t)return!1;let Y2=t.id,N2={...t,...S};if(_.set(m,N2),S.id!==void 0&&S.id!==Y2)r(Y2);return j2(m,N2),$2(),o(),!0},G=(m,S)=>{_.insert(S,m),B2(),Q2(),$2(),o()},X=(m)=>{let S=L.get(m);if(S===void 0)return!1;if(!_.delete(S))return!1;return B2(),Q2(),$2(),o(),!0},u=async(m,S)=>{if(!Q)return;let t=_.chunkSize,Y2=Math.floor(m/t),N2=Math.floor(S/t),e=t*2;for(let[U2,M2]of d){let X2=U2.indexOf("-"),A2=parseInt(U2.slice(0,X2),10);if(Math.abs(A2-m)>e)M2[1].abort(),d.delete(U2)}let G2=[],F2=[];for(let U2=Y2;U2<=N2;U2++){let M2=U2*t,X2=M2+t-1,A2=J2(M2,X2);if(_.isChunkFullyLoaded(U2))continue;let O2=d.get(A2);if(O2)F2.push(O2[0]);else G2.push({start:M2,end:X2})}if(G2.length===0){if(F2.length>0)await Promise.all(F2);return}if(W>0){let U2=d.size+G2.length;if(U2>W){let M2=(m+S)/2,X2=Math.min(U2-W,d.size);while(X2>0){let K2=null,O2=-1,W2=null;for(let[n,_2]of d){let D2=n.indexOf("-"),E2=parseInt(n.slice(0,D2),10),H2=parseInt(n.slice(D2+1),10),L2=Math.abs((E2+H2)/2-M2);if(L2>O2)O2=L2,K2=n,W2=_2[1]}if(K2)W2.abort(),d.delete(K2);X2--}let A2=W-d.size;if(G2.length>A2)G2.sort((K2,O2)=>{let W2=Math.abs((K2.start+K2.end)/2-M2),n=Math.abs((O2.start+O2.end)/2-M2);return W2-n}),G2.length=Math.max(0,A2)}}if(G2.length===0){if(F2.length>0)await Promise.all(F2);return}for(let U2 of G2){let M2=J2(U2.start,U2.end),X2=new AbortController,A2=(async()=>{k.push(U2),M=!0,y=void 0,o();try{let K2=U2.end-U2.start+1,O2={offset:U2.start,limit:K2,cursor:U2.start===g?H:void 0,signal:X2.signal},W2=await Q.read(O2);if(I(W2.items,U2.start,W2.total),W2.cursor)H=W2.cursor,g=U2.start+W2.items.length;let n=U2.start+W2.items.length;if(n>=h){if(h=n,W2.hasMore!==void 0)Z=W2.hasMore;else if(W2.total!==void 0)Z=n<W2.total}}catch(K2){if(K2?.name==="AbortError")return;y=K2 instanceof Error?K2:Error(String(K2)),C?.(y,U2)}finally{d.delete(M2);let K2=k.findIndex((O2)=>O2.start===U2.start&&O2.end===U2.end);if(K2>=0)k.splice(K2,1);M=d.size>0,o()}})();d.set(M2,[A2,X2]),F2.push(A2)}await Promise.all(F2)},x=async(m,S)=>{if(_.isRangeLoaded(m,S))return;await u(m,S)},p=async()=>{if(!Q)return;await u(0,Y-1)},s=async()=>{if(!Q||M||!Z)return!1;let m=_.getCachedCount(),S=_.getTotal(),t=m,Y2=Math.min(t+Y-1,S>0?S-1:t+Y-1);if(t>=S&&S>0)return Z=!1,!1;return await u(t,Y2),_.getCachedCount()>m},c=async()=>{if(_.clear(),L.clear(),O)O.clear();Q2(),k=[],M=!1,H=void 0,g=void 0,Z=!0,h=0,y=void 0,$2(),o()},V2=(m,S)=>{if(_.evictDistant(m,S)>0)B2()},Z2=()=>{_.clear(),L.clear(),H=void 0,g=void 0,y=void 0,k=[],M=!1,$2(),o()},q2=()=>{if(_.reset(),L.clear(),O)O.clear();H=void 0,g=void 0,Z=!0,h=0,y=void 0,k=[],M=!1,$2(),o()};if(q&&q.length>0)I(q,0,$??q.length);else if($!==void 0)_.setTotal($),$2(),o();return{getState:D,getTotal:i,getCached:R,getIsLoading:U,getHasMore:N,getStorage:w,getPlaceholders:a,getItem:l,getItemById:f,getIndexById:K,isItemLoaded:b,getItemsInRange:A,setTotal:P,setItems:I,updateItem:F,insertItem:G,removeItem:X,loadRange:u,ensureRange:x,loadInitial:p,loadMore:s,reload:c,evictDistant:V2,clear:Z2,reset:q2}};var tJ=(J)=>{if(typeof J!=="object"){let Q=J??2;return{top:Q,right:Q,bottom:Q,left:Q}}return{top:J.top??2,right:J.right??2,bottom:J.bottom??2,left:J.left??2}},pJ=(J,Q,q={},$="vlist",B=!1,j)=>{let{autoHide:Y=!0,autoHideDelay:W=1000,minThumbSize:z=15,showOnHover:V=!0,showOnViewportEnter:T=!0,clickBehavior:v="scroll"}=q,C=v==="page"?"scroll":v,_=j??J,O=tJ(q.padding),E=B?O.left:O.top,L=B?O.right:O.bottom,M=B?O.bottom:O.right,y=q.hoverZoneWidth??M+16,Z=0,H=0,g=0,k=0,h=!1,d=!1,Q2=0,o=0,$2=0,B2=null,j2=!1,r=null,J2=0,i=0,R=null,U=null,N=null,D=B?"width":"height",w=B?"translateX":"translateY",a=B?(n)=>n.clientX:(n)=>n.clientY,l=B?"left":"top",f=document.createElement("div"),K=document.createElement("div"),b=document.createElement("div"),A=B?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",P=()=>{if(_===J)return;let n=J.offsetTop;f.style[B?"left":"top"]=n?`calc(var(${A}) + ${n}px)`:`var(${A})`,b.style[B?"left":"top"]=`${n}px`},I=()=>{if(f.className=`${$}-scrollbar`,K.className=`${$}-scrollbar__thumb`,B)f.classList.add(`${$}-scrollbar--horizontal`);if(q.padding!==void 0)_.style.setProperty("--vlist-custom-scrollbar-padding-top",`${O.top}px`),_.style.setProperty("--vlist-custom-scrollbar-padding-right",`${O.right}px`),_.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${O.bottom}px`),_.style.setProperty("--vlist-custom-scrollbar-padding-left",`${O.left}px`);if(q.minThumbSize!==void 0)f.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${z}px`);if(f.appendChild(K),_.appendChild(f),b.className=`${$}-scrollbar__hover`,B)b.classList.add(`${$}-scrollbar__hover--horizontal`),b.style.height=`${y}px`;else b.style.width=`${y}px`;if(_.appendChild(b),_!==J)P()},F=()=>{if(B2)clearTimeout(B2),B2=null},G=()=>{if(!Y)return;F(),B2=setTimeout(u,W)},X=()=>{if(Z<=H)return;if(F(),!j2)f.classList.add(`${$}-scrollbar--visible`),j2=!0;if(Y&&!h&&!d)G()},u=()=>{if(h||d)return;f.classList.remove(`${$}-scrollbar--visible`),j2=!1},x=(n,_2)=>{if(Z=n,H=_2,P(),Z<=H){f.style.display="none",u();return}f.style.display="";let D2=Math.max(0,H-E-L),E2=H/Z;if(g=Math.max(z,E2*D2),K.style[D]=`${g}px`,k=D2-g,p($2),!Y)X()},p=(n)=>{if($2=n,Z<=H||k<=0)return;let _2=Z-H,D2=Math.min(1,Math.max(0,n/_2));K.style.transform=`${w}(${D2*k}px)`},s=(n)=>{if(n.target===K||C!=="jump"||k<=0)return;let _2=Z-H,D2=f.getBoundingClientRect(),E2=a(n)-D2[l],H2=Math.max(0,Math.min(E2-g/2,k));Q(H2/k*_2),X()},c=()=>{if(R!==null)clearTimeout(R),R=null;if(U!==null)cancelAnimationFrame(U),U=null;N=null},V2=(n)=>{let _2=k>0?i/n*k:0;if(J2<_2)return-1;if(J2>=_2+g)return 1;return 0},Z2=()=>{let n=Z-H,_2=V2(n);if(_2===0){c();return}if(_2===-1){if(i<=0){c();return}let D2=Math.max(0,i-H);i=D2,Q(D2)}else{if(i>=n){c();return}let D2=Math.min(n,i+H);i=D2,Q(D2)}X()},q2=(n)=>{if(N===null){N=n,U=requestAnimationFrame(q2);return}let _2=Z-H,D2=n-N;N=n;let E2=V2(_2);if(E2===0){c();return}let H2=12*H/1000,L2=Math.min(H2*D2,H);if(E2===-1){if(i<=0){c();return}let P2=Math.max(0,i-L2);i=P2,Q(P2)}else{if(i>=_2){c();return}let P2=Math.min(_2,i+L2);i=P2,Q(P2)}F(),U=requestAnimationFrame(q2)},m=()=>{c(),G(),document.removeEventListener("mouseup",m)},S=(n)=>{if(n.target===K||C!=="scroll")return;n.preventDefault();let _2=f.getBoundingClientRect();J2=a(n)-_2[l],i=$2,Z2(),R=setTimeout(()=>{U=requestAnimationFrame(q2)},350),document.addEventListener("mouseup",m)},t=(n)=>{n.preventDefault(),n.stopPropagation(),h=!0,Q2=a(n),o=$2,F(),f.classList.add(`${$}-scrollbar--dragging`),document.addEventListener("mousemove",Y2),document.addEventListener("mouseup",N2)},Y2=(n)=>{if(!h)return;let _2=a(n)-Q2,D2=k>0?_2/k:0,E2=Z-H,H2=D2*E2,L2=Math.max(0,Math.min(o+H2,E2));K.style.transform=`${w}(${L2/E2*k}px)`,Q(L2)},N2=()=>{if(h=!1,f.classList.remove(`${$}-scrollbar--dragging`),Y&&!d)G();document.removeEventListener("mousemove",Y2),document.removeEventListener("mouseup",N2)},e=B?(n)=>n.touches[0].clientX:(n)=>n.touches[0].clientY,G2=(n)=>{n.stopPropagation(),h=!0,Q2=e(n),o=$2,F(),f.classList.add(`${$}-scrollbar--dragging`)},F2=(n)=>{if(!h)return;n.preventDefault();let _2=e(n)-Q2,D2=k>0?_2/k:0,E2=Z-H,H2=D2*E2,L2=Math.max(0,Math.min(o+H2,E2));K.style.transform=`${w}(${L2/E2*k}px)`,Q(L2)},U2=()=>{if(h=!1,f.classList.remove(`${$}-scrollbar--dragging`),Y)G()},M2=(n)=>{if(n.target===K)return;if(k<=0)return;let _2=n.touches[0],D2=f.getBoundingClientRect(),E2=(B?_2.clientX:_2.clientY)-D2[l];if(C==="jump"){let H2=Z-H,L2=Math.max(0,Math.min(E2-g/2,k));Q(L2/k*H2)}else J2=E2,i=$2,Z2();X()},X2=()=>{if(T)X()},A2=()=>{if(!h){if(d=!1,Y)G()}},K2=()=>{d=!0,F(),X()},O2=()=>{if(d=!1,!h&&Y)G()},W2=()=>{if(F(),c(),r!==null)cancelAnimationFrame(r),r=null;f.removeEventListener("click",s),f.removeEventListener("mousedown",S),f.removeEventListener("mouseenter",K2),document.removeEventListener("mouseup",m),f.removeEventListener("mouseleave",O2),f.removeEventListener("touchstart",M2),K.removeEventListener("mousedown",t),K.removeEventListener("touchstart",G2),K.removeEventListener("touchmove",F2),K.removeEventListener("touchend",U2),J.removeEventListener("mouseenter",X2),J.removeEventListener("mouseleave",A2),document.removeEventListener("mousemove",Y2),document.removeEventListener("mouseup",N2),b.removeEventListener("click",s),b.removeEventListener("mousedown",S),b.removeEventListener("mouseenter",K2),b.removeEventListener("mouseleave",O2),b.remove(),_.style.removeProperty("--vlist-custom-scrollbar-padding-top"),_.style.removeProperty("--vlist-custom-scrollbar-padding-right"),_.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),_.style.removeProperty("--vlist-custom-scrollbar-padding-left"),f.remove()};if(I(),f.addEventListener("click",s),f.addEventListener("mousedown",S),f.addEventListener("mouseenter",K2),f.addEventListener("mouseleave",O2),f.addEventListener("touchstart",M2,{passive:!0}),K.addEventListener("mousedown",t),K.addEventListener("touchstart",G2,{passive:!0}),K.addEventListener("touchmove",F2,{passive:!1}),K.addEventListener("touchend",U2,{passive:!0}),J.addEventListener("mouseenter",X2),J.addEventListener("mouseleave",A2),b.addEventListener("click",s),b.addEventListener("mousedown",S),V)b.addEventListener("mouseenter",K2),b.addEventListener("mouseleave",O2);return{show:X,hide:u,updateBounds:x,updatePosition:p,isVisible:()=>j2,destroy:W2}};var hJ=(J=0)=>{let Q=[,,,,,,,,];for(let q=0;q<8;q++)Q[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},x2=(J,Q)=>{let q=performance.now(),$=q-J.lastTime;if($===0)return J;if($>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let j=J.samples[0];return j.position=Q,j.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=q,J}let B=J.samples[J.sampleIndex];if(B.position=Q,B.time=q,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let j=(J.sampleIndex-J.sampleCount+8)%8,Y=J.samples[j],W=Q-Y.position,z=q-Y.time;J.velocity=z>0?W/z:0}return J.lastPosition=Q,J.lastTime=q,J},eJ=(J)=>J.sampleCount>=3,xJ=(J,Q={})=>{let{wheel:q=!0,sensitivity:$=1,smoothing:B=!1,idleTimeout:j=150,onScroll:Y,onIdle:W,scrollElement:z,isX:V=!1}=Q,T=!!z,v=0,C=0,_=T?V?window.innerWidth:window.innerHeight:V?J.clientWidth:J.clientHeight,O=Q.compressed??!1,E=Q.compression,L=hJ(),M=!1,y=null,H=g2(()=>{let A=V?J.scrollLeft:J.scrollTop,P=V?A>=v?"right":"left":A>=v?"down":"up";if(L=x2(L,A),v=A,Y)Y({scrollTop:v,direction:P,velocity:L.velocity});o()}),k=g2(()=>{let A=J.getBoundingClientRect(),P=V?Math.max(0,-A.left):Math.max(0,-A.top),I=V?P>=v?"right":"left":P>=v?"down":"up";if(L=x2(L,P),v=P,!M)M=!0;if(Y)Y({scrollTop:v,direction:I,velocity:L.velocity});o()}),h=(A)=>{A.preventDefault()},d=(A)=>{if(A.deltaX)return;A.preventDefault(),J.scrollLeft+=A.deltaY},Q2=(A)=>{if(!O)return;A.preventDefault();let P=(V?A.deltaX||A.deltaY:A.deltaY)*$,I=v+P;if(B)I=v+P*0.3;if(I=Math.max(0,Math.min(I,C)),I!==v){let F=v,G=V?I>=F?"right":"left":I>=F?"down":"up";if(L=x2(L,I),v=I,!M)M=!0;if(Y)Y({scrollTop:v,direction:G,velocity:L.velocity});o()}},o=()=>{if(y)clearTimeout(y);y=setTimeout(()=>{if(M=!1,L=hJ(v),W)W()},j)},$2=(A)=>{if(O)return;if(O=!0,E=A,C=A.virtualSize-_,T)return;if(H.cancel(),J.removeEventListener("scroll",H),!q)J.removeEventListener("wheel",h);else if(V)J.removeEventListener("wheel",d);if(V)J.style.overflowX="hidden";else J.style.overflow="hidden";if(q)J.addEventListener("wheel",Q2,{passive:!1});let P=V?J.scrollLeft:J.scrollTop;if(P>0){let I=V?E?.actualSize??J.scrollWidth:E?.actualSize??J.scrollHeight;v=P/I*C}if(V)J.scrollLeft=0;else J.scrollTop=0},B2=()=>{if(!O)return;if(O=!1,T){E=void 0;return}if(J.removeEventListener("wheel",Q2),V)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",H,{passive:!0}),!q)J.addEventListener("wheel",h,{passive:!1});else if(V)J.addEventListener("wheel",d,{passive:!1});if(E&&v>0){let P=v/C*(E.actualSize-_);if(V)J.scrollLeft=P;else J.scrollTop=P}E=void 0},j2=()=>{if(T||O)return v;return V?J.scrollLeft:J.scrollTop},r=(A,P=!1)=>{let I=Math.max(0,Math.min(A,C||1/0));if(T){let F=J.getBoundingClientRect();if(V){let G=F.left+window.scrollX;window.scrollTo({left:G+I,behavior:P?"smooth":"auto"})}else{let G=F.top+window.scrollY;window.scrollTo({top:G+I,behavior:P?"smooth":"auto"})}}else if(O){if(I===v)return;let F=v,G=V?I>=F?"right":"left":I>=F?"down":"up";if(L=x2(L,I),v=I,!M)M=!0;if(Y)Y({scrollTop:v,direction:G,velocity:L.velocity});o()}else if(V)J.scrollTo({left:I,behavior:P?"smooth":"auto"});else J.scrollTo({top:I,behavior:P?"smooth":"auto"})},J2=(A)=>{r(j2()+A)},i=()=>{return j2()<=0},R=(A=0)=>{let P=j2(),I=T||O?C:V?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return P>=I-A},U=()=>{let A=j2(),P=T||O?C:V?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(P<=0)return 0;return Math.min(1,Math.max(0,A/P))},N=(A)=>{if(A.compression)E=A.compression,C=E.virtualSize-_},D=()=>O,w=()=>Math.abs(L.velocity),a=()=>eJ(L),l=()=>M,f=()=>T,K=(A)=>{if(_=A,E)C=E.virtualSize-_},b=()=>{if(y)clearTimeout(y);if(T)k.cancel(),window.removeEventListener("scroll",k);else H.cancel(),J.removeEventListener("scroll",H),J.removeEventListener("wheel",Q2),J.removeEventListener("wheel",h),J.removeEventListener("wheel",d)};if(T){if(O&&E)C=E.virtualSize-_;window.addEventListener("scroll",k,{passive:!0})}else if(O&&E){if(C=E.virtualSize-_,V)J.style.overflowX="hidden";else J.style.overflow="hidden";if(q)J.addEventListener("wheel",Q2,{passive:!1})}else{if(V)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",H,{passive:!0}),!q)J.addEventListener("wheel",h,{passive:!1});else if(V)J.addEventListener("wheel",d,{passive:!1})}return{getScrollTop:j2,scrollTo:r,scrollBy:J2,isAtTop:i,isAtBottom:R,getScrollPercentage:U,getVelocity:w,isTracking:a,isScrolling:l,updateConfig:N,enableCompression:$2,disableCompression:B2,isCompressed:D,isWindowMode:f,updateContainerHeight:K,destroy:b}},g2=(J)=>{let Q=null,q=null,$=(...B)=>{if(q=B,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,q)J(...q)})};return $.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},$};var JQ=50,QQ=0.1;function $Q(J){let Q=0,q=0,$=0;function B(){return $>0?q/$:0}function j(z){if(Q=z,z>QQ&&z<JQ)q+=z,$++}function Y(){let z=J.getTotal();if(z===0)return 0;let V=J.getItemSize();if(V<=0)return 0;let T=J.getContainerSize();if(T<=0)return 0;let v=J.getScrollPosition(),C=typeof J.getColumns==="function"?J.getColumns():1,O=Math.ceil(z/C)*V,L=Math.min(O,b2)-T,M=O-T,y=L>0?M/L:1,Z=v*y,H=Math.ceil((Z+T)/V);return Math.min(H*C,z)}function W(){let z=J.getTotal(),V=Y();return{progress:z>0?Math.min(100,Math.max(0,V/z*100)):0,velocity:Q,velocityAvg:B(),itemCount:V,total:z}}return{getState:W,onVelocity:j}}export{YJ as toggleSelection,HJ as simpleVisibleRange,d2 as selectItems,jJ as selectAll,vJ as rangesEqual,g2 as rafThrottle,DJ as needsScaling,p2 as mergeRanges,UJ as isSelected,T2 as isPlaceholderItem,wJ as isInRange,w2 as isGroupHeader,KJ as getSelectedItems,NJ as getSelectedIds,v2 as getScaleState,MJ as getScaleInfo,v2 as getScale,CJ as getRangeCount,GJ as getMaxItemsWithoutScaling,a2 as filterPlaceholders,SJ as diffRanges,c2 as deselectItems,EJ as createTableRenderer,XJ as createTableLayout,OJ as createTableHeader,e2 as createStickyHeader,$Q as createStats,I2 as createSparseStorage,k2 as createSizeCache,qJ as createSelectionState,pJ as createScrollbar,xJ as createScrollController,h2 as createPlaceholderManager,LJ as createMeasuredSizeCache,FJ as createMasonryRenderer,AJ as createMasonryLayout,i2 as createGroupedSizeFn,t2 as createGroupLayout,rJ as createGridRenderer,JJ as createGridLayout,fJ as createEmitter,IJ as createAsyncManager,BJ as clearSelection,PJ as clampScrollPosition,TJ as calculateTotalSize,kJ as calculateScrollToIndex,ZJ as calculateScaledVisibleRange,VJ as calculateScaledScrollToIndex,_J as calculateScaledRenderRange,z2 as calculateScaledItemPosition,bJ as calculateRenderRange,l2 as calculateMissingRanges,zJ as calculateItemOffset,WJ as calculateIndexFromScrollPosition,yJ as calculateActualSize,o2 as buildLayoutItems,b2 as MAX_VIRTUAL_SIZE};
|
|
1
|
+
var v2=(Q)=>{return Q!==null&&typeof Q==="object"&&Q.__groupHeader===!0};var p2=(Q,J)=>{let j=0,$=Q.length-1;while(j<$){let K=j+$+1>>>1;if(Q[K].headerLayoutIndex<=J)j=K;else $=K-1}return j},u2=(Q,J)=>{let j=0,$=Q.length-1;while(j<$){let K=j+$+1>>>1;if(Q[K].firstDataIndex<=J)j=K;else $=K-1}return j},m2=(Q,J,j)=>{if(Q===0)return[];let $=[],K=null,U=0,q=0;for(let W=0;W<Q;W++){let k=j?.(W);if(!k)continue;let R=J(W,k);if(K===null)K=R,U=0;else if(R!==K){let C=W-U;$.push({key:K,groupIndex:$.length,headerLayoutIndex:q,firstDataIndex:U,count:C}),q=q+1+C,K=R,U=W}}if(K!==null)$.push({key:K,groupIndex:$.length,headerLayoutIndex:q,firstDataIndex:U,count:Q-U});return $},d2=(Q,J)=>{if(Q.length===0||J.length===0)return[];let j=Q.length+J.length,$=Array(j),K=0;for(let U of J){$[K]={id:`__group_header_${U.groupIndex}`,__groupHeader:!0,groupKey:U.key,groupIndex:U.groupIndex},K++;for(let q=0;q<U.count;q++)$[K]=Q[U.firstDataIndex+q],K++}return $},c2=(Q,J,j=!1)=>{let $=typeof J==="number"?(K)=>J:J;return(K)=>{let U=Q.getEntry(K);if(U.type==="header"){if(j&&U.group.groupIndex===0)return 0;return Q.getHeaderHeight(U.group.groupIndex)}return $(U.dataIndex)}},r2=(Q,J,j)=>{let $=m2(Q,J.getGroupForIndex,j),K=Q+$.length,U=J.header?.height??J.header?.width??J.headerHeight;return{get totalEntries(){return K},get groupCount(){return $.length},get groups(){return $},getEntry:(_)=>{if($.length===0)return{type:"item",dataIndex:_,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let T=p2($,_),F=$[T];if(_===F.headerLayoutIndex)return{type:"header",group:F};let A=_-F.headerLayoutIndex-1;return{type:"item",dataIndex:F.firstDataIndex+A,group:F}},layoutToDataIndex:(_)=>{if($.length===0)return _;let T=p2($,_),F=$[T];if(_===F.headerLayoutIndex)return-1;let A=_-F.headerLayoutIndex-1;return F.firstDataIndex+A},dataToLayoutIndex:(_)=>{if($.length===0)return _;let T=u2($,_),F=$[T],A=_-F.firstDataIndex;return F.headerLayoutIndex+1+A},getGroupAtLayoutIndex:(_)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let T=p2($,_);return $[T]},getGroupAtDataIndex:(_)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let T=u2($,_);return $[T]},getHeaderHeight:typeof U==="number"?(_)=>U:(_)=>{let T=$[_];if(!T)return 0;return U(T.key,_)},rebuild:(_,T)=>{$=m2(_,J.getGroupForIndex,T??j),K=_+$.length}}};var XJ=(Q,J,j,$,K=0)=>{let U=j?"width":"height",q=document.createElement("div");return q.className=`${J}-sticky-header`,q.setAttribute("role","presentation"),q.setAttribute("aria-hidden","true"),q.style.cssText="z-index:5;pointer-events:none;overflow:hidden;"+(j?`position:absolute;top:0;bottom:0;left:${K||0}px`:`position:relative;top:${K||0}px`),q.style[U]=`${$}px`,Q.insertBefore(q,Q.firstChild),q},l2=(Q,J,j,$,K,U=!1,q=0,W,k)=>{let R=U?"width":"height",C=U?"height":"width",x=U?"X":"Y",d=(G,V)=>{G.style[R]=`${V}px`},_=W??XJ(Q,K,U,0,q),T=()=>{let G=document.createElement("div");return G.className="sticky-group",G.style.position="absolute",G.style.willChange="transform",G.style[C]="100%",G},F=T(),A=T();_.append(F,A);let D=F,L=A,B=J.groups,E=[],f=[],v=[],S=0,o=()=>{B=J.groups,S=B.length,E=Array(S),f=Array(S),v=Array(S);for(let G=0;G<S;G++)E[G]=k?k(B[G].headerLayoutIndex):j.getOffset(B[G].headerLayoutIndex),f[G]=J.getHeaderHeight(G),v[G]=f[G]};o();let s=-1,n=0,t=0,U2=-1,q2=!1,K2=0,g=!1,l=(G,V)=>{$(G,V);let w=f[V];return d(G,w),w},O=(G)=>{G.replaceChildren(),G.style.transform=""},Y=(G)=>{if(G===s)return;if(s=G,n=0,t=0,G<0||G>=S){O(D);return}n=l(D,G),t=v[G],d(_,n),D.style.transform=""},X=(G)=>{if(G===K2)return;K2=G;let V=Math.round(G);D.style.transform=`translate${x}(${V}px)`,L.style.transform=`translate${x}(${V+n}px)`},N=()=>{K2=0,D.style.transform="",L.style.transform=""},b=()=>{if(!g)return;let G=D;D=L,L=G,s=U2,n=s>=0?f[s]:0,t=s>=0?v[s]:0,d(_,n),O(L),U2=-1,g=!1,N()},u=()=>{if(!g)return;O(L),U2=-1,g=!1,N()},i=!!W,Z=()=>{if(q2)return;if(q2=!0,i)_.style.visibility="";else _.style.display=""},M=()=>{if(!q2)return;if(q2=!1,i)_.style.visibility="hidden";else _.style.display="none";O(D),s=-1,n=0,t=0,u()},H=(G)=>{if(S===0){if(g)u();if(!q2)Z();Y(-1);return}if(G<E[0]){M();return}let V=0,w=S-1;while(V<w){let P=V+w+1>>>1;if(E[P]+v[P]<=G)V=P;else w=P-1}if(!q2)Z();Y(V);let p=V+1;if(p<S){let P=E[p]-G;if(P<=0&&P>-t){if(U2!==p||!g)U2=p,l(L,p),g=!0;let a=t>0?P/t*n:P;X(a)}else if(P<=-t){if(g)b()}else if(g)u()}else if(g)u()},m=()=>{o();let G=s;if(s=-1,n=0,t=0,G>=0)Y(G)},c=()=>{_.remove(),s=-1,n=0,t=0,U2=-1,q2=!1,g=!1};if(!W)_.style.display="none";return{update:H,refresh:m,show:Z,hide:M,destroy:c}};var o2=(Q)=>{let J=Math.max(1,Math.floor(Q.columns)),j=Q.gap??0,$=Q.isHeaderFn,K={row:0,col:0},U=(F)=>{if(F<=0)return 0;if(!$)return Math.ceil(F/J);let A=0,D=0,L=0;for(let B=0;B<F;B++)if($(B)){if(L++,D)A++,D=0;A++,D=0}else if(D++,D>=J)A++,D=0;if(D)A++;return A},q=(F)=>{return K.row=W(F),K.col=k(F),K},W=(F)=>{if(!$)return Math.floor(F/J);let A=0,D=0;for(let L=0;L<=F;L++)if($(L)){if(D)A++,D=0;if(L===F)return A;A++,D=0}else{if(L===F)return A;if(D++,D>=J)A++,D=0}return console.warn(`⚠️ getRow(${F}) fell through - returning ${A}`),A},k=(F)=>{if(!$)return F%J;if($(F))return 0;let A=0;for(let D=0;D<=F;D++)if($(D))A=0;else{if(D===F)return A;if(A++,A>=J)A=0}return A},R=(F,A,D,L)=>{if(D<=0){L.start=0,L.end=-1;return}if(!$){L.start=Math.max(0,F*J),L.end=Math.min(D-1,(A+1)*J-1);return}let B=C(F,A,D);L.start=B.start,L.end=B.end},C=(F,A,D)=>{if(D<=0)return{start:0,end:-1};if(!$){let v=Math.max(0,F*J),S=Math.min(D-1,(A+1)*J-1);return{start:v,end:S}}let L=-1,B=-1,E=0,f=0;for(let v=0;v<D;v++){if($(v)){if(f)E++,f=0;if(E>=F&&E<=A){if(L<0)L=v;B=v}E++,f=0}else{if(E>=F&&E<=A){if(L<0)L=v;B=v}if(f++,f>=J)E++,f=0}if(E>A&&!f)break}if(L<0)return{start:0,end:-1};return{start:L,end:B}},x=(F,A,D)=>{if(A<0||A>=J)return-1;let L=F*J+A;if(L<0||L>=D)return-1;return L},d=(F)=>{let A=(J-1)*j;return Math.max(0,(F-A)/J)};return{get columns(){return J},get gap(){return j},update:(F)=>{if(F.columns!==void 0)J=Math.max(1,Math.floor(F.columns));if(F.gap!==void 0)j=F.gap;if(F.isHeaderFn!==void 0)$=F.isHeaderFn},getTotalRows:U,getPosition:q,getRow:W,getCol:k,getItemRange:C,fillItemRange:R,getItemIndex:x,getColumnWidth:d,getColumnOffset:(F,A)=>{let D=d(A);return F*(D+j)}}};var a2=16000000;var s2="x",n2=20,f2="_isPlaceholder",b2="__placeholder_";function w2(Q){let J=Q.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let j=0;j<J.length;j++)J[j].setAttribute("tabindex","-1")}var T2=(Q,J,j)=>{if(String(j).startsWith(b2))return!1;let $=b2+J;if(Q.has($))return Q.delete($),Q.add(j),!0;return!1},i2=(Q)=>({selected:new Set(Q??[]),focusedIndex:-1,focusVisible:!1}),I2=(Q,J,j)=>{if(j==="none")return Q;let $=new Set(Q.selected);if(j==="single"){if($.clear(),J.length>0)$.add(J[0])}else for(let K of J)$.add(K);return{...Q,selected:$}},h2=(Q,J)=>{let j=new Set(Q.selected);for(let $ of J)j.delete($);return{...Q,selected:j}},t2=(Q,J,j)=>{if(j==="none")return Q;if(Q.selected.has(J))return h2(Q,[J]);else return I2(Q,[J],j)},e2=(Q,J,j)=>{if(j!=="multiple")return Q;return{...Q,selected:new Set(J.map(($)=>$.id))}},JJ=(Q)=>({...Q,selected:new Set});var QJ=(Q,J)=>{return Q.selected.has(J)},$J=(Q)=>{return Array.from(Q.selected)},qJ=(Q,J)=>{let j=[];for(let $ of Q.selected){let K=J($);if(K)j.push(K)}return j};var z2=(Q,J,j)=>{let $=Array.from(J).sort((q,W)=>q-W);if($.length<=1)return;let K=[];for(let q=0;q<$.length;q++){let W=j($[q]);if(W)K.push(W)}if(K.length<=1)return;let U=Q.firstChild;for(let q=0;q<K.length;q++){let W=K[q];if(W===U)U=U.nextSibling;else Q.insertBefore(W,U)}};var MJ=(Q=200)=>{let J=[];return{acquire:()=>{let U=J.pop();if(U)return U;let q=document.createElement("div");return q.setAttribute("role","option"),q},release:(U)=>{if(U.remove(),J.length<Q)U.className="",U.textContent="",U.removeAttribute("style"),U.removeAttribute("data-index"),U.removeAttribute("data-id"),U.removeAttribute("data-row"),U.removeAttribute("data-col"),J.push(U)},clear:()=>{J.length=0}}},WJ=1,DJ=(Q,J,j,$,K,U,q,W,k=!1,R,C)=>{let x=MJ(),d=new Map,_=U,T=!1,F=0,A="",D=-1,L={selected:!1,focused:!1},B=(Z,M)=>{return L.selected=Z,L.focused=M,L},E=`${K}-item ${K}-grid-item`,f=`${K}-group-header`,v=`${K}-item--selected`,S=`${K}-item--focused`,o=`${K}-item--placeholder`,s=`${K}-item--replaced`,n=(Z,M)=>{if(typeof M==="string")Z.innerHTML=M;else Z.replaceChildren(M);w2(Z)},t=(Z,M,H)=>{Z.classList.toggle(v,M),Z.classList.toggle(S,H)},U2=(Z)=>{let M=$.getRow(Z);return j.getOffset(M)},q2=(Z)=>{let M=$.getCol(Z),m=T&&M===0?0:$.getColumnOffset(M,_),c;if(T){let G=$.getRow(Z),V=0,w=-1;for(let p=0;p<Z;p++){let P=$.getRow(p);if(P<G&&P!==w){let a=j.getSize(p);V+=a,w=P}}c=V}else c=U2(Z);if(k)return`translate(${Math.round(c)}px, ${Math.round(m)}px)`;return`translate(${Math.round(m)}px, ${Math.round(c)}px)`},K2=(Z,M)=>{let H=Z.classList.contains(f),m=H?_:$.getColumnWidth(_),c;if(T||H)c=j.getSize(M)-$.gap;else{let G=$.getRow(M);c=j.getSize(G)-$.gap}if(k)Z.style.width=`${c}px`,Z.style.height=`${m}px`;else Z.style.width=`${m}px`,Z.style.height=`${c}px`},g=(Z,M,H,m,c)=>{let G=x.acquire(),V=!!M.__groupHeader,w=B(H,m);if(G.className=V?f:E,G.dataset.index=String(Z),G.dataset.id=String(M.id),G.dataset.row=String($.getRow(Z)),G.dataset.col=String($.getCol(Z)),V)G.setAttribute("role","presentation"),G.removeAttribute("aria-selected"),G.removeAttribute("aria-setsize"),G.removeAttribute("aria-posinset"),G.removeAttribute("id");else if(C===!0){if(G.setAttribute("role","option"),G.ariaSelected=String(H),W)G.id=`${W}-item-${Z}`;if(q){let a=q();if(a!==D)D=a,A=String(a);G.setAttribute("aria-setsize",A);let y=R?R(Z):Z+1;G.setAttribute("aria-posinset",String(y))}}else if(G.setAttribute("role","listitem"),G.removeAttribute("aria-selected"),q){let a=q();if(a!==D)D=a,A=String(a);G.setAttribute("aria-setsize",A);let y=R?R(Z):Z+1;G.setAttribute("aria-posinset",String(y))}K2(G,Z);let p=J(M,Z,w);if(n(G,p),String(M.id).startsWith(b2))G.classList.add(o);return t(G,H,m),G.style.transform=c,{element:G,lastItem:M,lastSelected:H,lastFocused:m,lastTransform:c,lastSeenFrame:F}},l=(Z,M,H,m)=>{if(F++,M.start===0&&Z.length)T=v2(Z[0]);let c=!1;if(q){let V=q();if(V!==D)D=V,A=String(V),c=!0}let G=null;for(let V=M.start;V<=M.end;V++){let w=V-M.start,p=Z[w];if(!p)continue;let P=H.has(p.id),a=V===m,y=d.get(V);if(y){let J2=y.lastItem!==p,Y2=y.lastSelected!==P,Q2=y.lastFocused!==a;if(J2){let j2=y.element.dataset.id??"",z=String(p.id),h=j2.startsWith(b2),e=z.startsWith(b2);if(!e&&T2(H,V,p.id))P=!0;let I=B(P,a),N2=J(p,V,I);if(n(y.element,N2),y.element.dataset.id=z,y.element.dataset.row=String($.getRow(V)),y.element.dataset.col=String($.getCol(V)),K2(y.element,V),y.element.classList.toggle(o,e),h&&!e)y.element.classList.add(s),setTimeout(()=>y.element.classList.remove(s),300);if(y.lastItem=p,!p.__groupHeader){let X2=R?R(V):V+1;y.element.setAttribute("aria-posinset",String(X2))}}if(J2||Y2||Q2)t(y.element,P,a),y.element.ariaSelected=String(P),y.lastSelected=P,y.lastFocused=a;let H2=q2(V);if(y.lastTransform!==H2)y.element.style.transform=H2,y.lastTransform=H2;if(c&&!p.__groupHeader)y.element.setAttribute("aria-setsize",A)}else{if(T2(H,V,p.id))P=!0;let J2=q2(V),Y2=g(V,p,P,a,J2);if(!G)G=document.createDocumentFragment();G.appendChild(Y2.element),d.set(V,Y2)}}if(G)Q.appendChild(G);for(let[V,w]of d)if(V>=M.start&&V<=M.end)w.lastSeenFrame=F;else if(F-w.lastSeenFrame>WJ)x.release(w.element),d.delete(V)},O=(Z,M,H,m)=>{let c=d.get(Z);if(!c)return;let G=B(H,m),V=J(M,Z,G);n(c.element,V),t(c.element,H,m),c.element.dataset.id=String(M.id),c.element.ariaSelected=String(H),K2(c.element,Z),c.lastItem=M,c.lastSelected=H,c.lastFocused=m},Y=(Z,M,H)=>{let m=d.get(Z);if(!m)return;let c=m.lastSelected!==M,G=m.lastFocused!==H;if(c||G)t(m.element,M,H),m.lastSelected=M,m.lastFocused=H},X=(Z)=>{return d.get(Z)?.element},N=(Z)=>{if(Math.abs(Z-_)<1)return;_=Z;for(let[M,H]of d){K2(H.element,M);let m=q2(M);H.element.style.transform=m,H.lastTransform=m}},b=()=>{z2(Q,d.keys(),(Z)=>d.get(Z)?.element)},u=()=>{for(let[,Z]of d)x.release(Z.element);d.clear()};return{render:l,updateItem:O,updateItemClasses:Y,getElement:X,sortDOM:b,updateContainerWidth:N,clear:u,destroy:()=>{u(),x.clear()}}};var YJ=(Q,J=50,j=1/0,$=!0,K="none")=>{let U=Q,q=[],W=0,k=0,R=()=>{q=U.map((B,E)=>({def:B,index:E,width:0,minWidth:GJ(B.minWidth??J,1),maxWidth:B.maxWidth??j,resizable:B.resizable??$,offset:0}))},C=()=>{if(K==="none"||W<=0||W>=k)return;if(K==="spacer"){W=k;return}let B=k-W,E=W;for(let f=0;f<q.length;f++){let v=q[f];v.width=P2(v.width+B*(v.width/E),v.minWidth,v.maxWidth)}d()},x=(B)=>{if(k=B,q.length===0){W=0;return}let E=0,f=0;for(let v=0;v<q.length;v++){let S=q[v],o=S.def;if(o.width!==void 0)S.width=P2(o.width,S.minWidth,S.maxWidth),E+=S.width;else f++}if(f){let S=Math.max(0,B-E)/f;for(let o=0;o<q.length;o++){let s=q[o];if(s.def.width===void 0)s.width=P2(S,s.minWidth,s.maxWidth)}}d(),C()},d=()=>{let B=0;for(let E=0;E<q.length;E++){let f=q[E];f.offset=B,B+=f.width}W=B},_=(B,E)=>{if(B<0||B>=q.length)return 0;let f=q[B];if(!f.resizable)return f.width;let v=P2(E,f.minWidth,f.maxWidth);if(f.width=v,d(),K==="spacer")C();return v},T=(B)=>{return q[B]},F=(B)=>{if(q.length===0)return;if(B<0)return q[0];if(B>=W)return q[q.length-1];let E=0,f=q.length-1;while(E<f){let v=E+f>>>1,S=q[v];if(B<S.offset)f=v-1;else if(B>=S.offset+S.width)E=v+1;else return S}return q[E]},A=(B)=>{if(B<0||B>=q.length)return 0;return q[B].offset},D=(B)=>{if(B<0||B>=q.length)return 0;return q[B].width},L=(B)=>{U=B,R()};return R(),{get columns(){return q},get totalWidth(){return W},resolve:x,updateColumns:L,resizeColumn:_,getColumn:T,getColumnAtX:F,getColumnOffset:A,getColumnWidth:D}},P2=(Q,J,j)=>Math.min(j,Math.max(J,Q)),GJ=(Q,J)=>Math.max(J,Q);var jJ=(Q,J,j,$,K,U)=>{let q=document.createElement("div");q.setAttribute("role","rowgroup");let W=document.createElement("div");W.className=`${j}-table-header`,W.setAttribute("role","row"),W.setAttribute("aria-rowindex","1"),W.style.height=`${J}px`;let k=document.createElement("div");k.className=`${j}-table-header-scroll`,k.setAttribute("role","presentation"),W.appendChild(k),q.appendChild(W),Q.insertBefore(q,Q.firstChild),Q.style.setProperty("--vlist-table-header-height",`${J}px`);let R=[],C=[],x=!0,d=null,_="asc",T=null,F=!1,A=-1,D=0,L=0,B=0,E=(Y,X)=>{let N=document.createElement("div");N.className=`${j}-table-header-cell`,N.setAttribute("role","columnheader"),N.setAttribute("aria-colindex",String(X+1)),N.setAttribute("tabindex",X===0?"0":"-1"),N.dataset.columnKey=Y.def.key;let b=Y.def.align;if(b==="center")N.classList.add(`${j}-table-header-cell--center`);else if(b==="right")N.classList.add(`${j}-table-header-cell--right`);let u=document.createElement("div");u.className=`${j}-table-header-content`;let i=Y.def.header?Y.def.header(Y.def):Y.def.label;if(typeof i==="string")u.textContent=i;else u.appendChild(i);if(N.appendChild(u),Y.def.sortable){let Z=document.createElement("span");Z.className=`${j}-table-header-sort`,Z.setAttribute("aria-hidden","true"),N.appendChild(Z),C.push(Z),N.classList.add(`${j}-table-header-cell--sortable`)}else C.push(null);if(Y.resizable){let Z=document.createElement("div");Z.className=`${j}-table-header-resize`,Z.dataset.resizeIndex=String(X),N.appendChild(Z)}return N},f=(Y)=>{T=Y,k.textContent="",R=[],C=[];let X=Y.columns;for(let N=0;N<X.length;N++){let b=X[N],u=E(b,N);R.push(u),k.appendChild(u)}if(v(Y),d)S(d,_)},v=(Y)=>{T=Y;let X=Y.columns;k.style.width=`${Y.totalWidth}px`;for(let N=0;N<R.length&&N<X.length;N++){let b=R[N],u=X[N];b.style.width=`${u.width}px`}},S=(Y,X)=>{if(d=Y,_=X,!T)return;let N=T.columns;for(let b=0;b<C.length&&b<N.length;b++){let u=C[b];if(!u)continue;if(N[b].def.key===Y)u.textContent=X==="asc"?"▲":"▼",u.style.opacity="0.7",R[b].setAttribute("aria-sort",X==="asc"?"ascending":"descending");else u.textContent="",u.style.opacity="0",R[b].removeAttribute("aria-sort")}},o=(Y)=>{k.style.transform=`translateX(${-Y}px)`},s=(Y)=>{let X=Y.target;if(!X.dataset.resizeIndex)return;if(Y.preventDefault(),Y.stopPropagation(),A=+X.dataset.resizeIndex,!T)return;let N=T.getColumn(A);if(!N?.resizable)return;F=!0,D=Y.clientX,L=N.width,Q.classList.add(`${j}--col-resizing`),Q.style.cursor="col-resize",X.classList.add(`${j}-table-header-resize--active`),X.setPointerCapture(Y.pointerId),X.addEventListener("pointermove",n),X.addEventListener("pointerup",t),X.addEventListener("pointercancel",t)},n=(Y)=>{if(!F||!T)return;let X=Y.clientX-D;if(Math.abs(X)<1)return;let N=Math.max(0,L+X);$(A,N)},t=(Y)=>{if(!F)return;let X=Y.target;X.removeEventListener("pointermove",n),X.removeEventListener("pointerup",t),X.removeEventListener("pointercancel",t);try{X.releasePointerCapture(Y.pointerId)}catch{}X.classList.remove(`${j}-table-header-resize--active`),Q.classList.remove(`${j}--col-resizing`),Q.style.cursor="",F=!1,A=-1},U2=(Y)=>{let X=Y.target;if(X.dataset.resizeIndex)return;if(F)return;let N=X;while(N&&!N.dataset.columnKey)if(N=N.parentElement,N===W||N===null)return;let b=N.dataset.columnKey;if(!T)return;let u=T.columns,i=-1;for(let M=0;M<u.length;M++)if(u[M].def.key===b){i=M;break}if(i===-1)return;let Z=u[i];if(U)U({key:b,index:i,event:Y});if(Z.def.sortable&&K){let M;if(d===b)M=_==="asc"?"desc":null;else M="asc";K({key:b,index:i,direction:M})}},q2=(Y)=>{if(Y<0||Y>=R.length)return;R[B]?.setAttribute("tabindex","-1"),B=Y;let X=R[B];X.setAttribute("tabindex","0"),X.focus()},K2=(Y)=>{let X=Y.key;if(X==="ArrowRight"){if(Y.ctrlKey||Y.metaKey){if(!T)return;let N=T.getColumn(B);if(N?.resizable)$(B,N.width+10),Y.preventDefault()}else if(B<R.length-1)q2(B+1),Y.preventDefault();Y.stopPropagation();return}if(X==="ArrowLeft"){if(Y.ctrlKey||Y.metaKey){if(!T)return;let N=T.getColumn(B);if(N?.resizable)$(B,N.width-10),Y.preventDefault()}else if(B>0)q2(B-1),Y.preventDefault();Y.stopPropagation();return}if(X==="Home"){q2(0),Y.preventDefault(),Y.stopPropagation();return}if(X==="End"){q2(R.length-1),Y.preventDefault(),Y.stopPropagation();return}if(X==="Enter"||X===" "){if(!T)return;let N=T.getColumn(B);if(N?.def.sortable&&K){let b;if(d===N.def.key)b=_==="asc"?"desc":null;else b="asc";K({key:N.def.key,index:B,direction:b}),Y.preventDefault()}Y.stopPropagation();return}if(X==="ArrowDown"){Q.focus(),Y.preventDefault(),Y.stopPropagation();return}};return W.addEventListener("pointerdown",s),W.addEventListener("click",U2),W.addEventListener("keydown",K2),{element:W,update:v,updateSort:S,rebuild:f,show:()=>{if(x)return;x=!0,W.style.display=""},hide:()=>{if(!x)return;x=!1,W.style.display="none"},destroy:()=>{W.removeEventListener("pointerdown",s),W.removeEventListener("click",U2),W.removeEventListener("keydown",K2),Q.style.removeProperty("--vlist-table-header-height"),q.remove(),R=[],C=[],T=null,x=!1},syncScroll:o}};var OJ=()=>{let Q=[];return{acquire:()=>Q.pop()||document.createElement("div"),release:(J)=>{if(J.parentNode?.removeChild(J),Q.length<200)J.className="",J.removeAttribute("data-id"),J.removeAttribute("data-index"),J.removeAttribute("aria-selected"),J.removeAttribute("aria-rowindex"),J.removeAttribute("role"),J.style.cssText="",J.textContent="",Q.push(J)},clear:()=>{Q.length=0}}},UJ=(Q,J,j,$,K,U,q,W,k,R=()=>0)=>{let C=OJ(),x=new Map,d=-1,_=j,T=null,F=null,A=null,D=(V,w)=>{F=V,A=w},L=(V,w)=>{w?V.setAttribute("aria-selected","true"):V.removeAttribute("aria-selected")},B=(V,w,p,P)=>{V.setAttribute("role",w),V.setAttribute("data-id",String(p)),V.setAttribute("data-index",String(P))},E=(V)=>String(V).startsWith("__placeholder_"),f=`${K}-item ${K}-table-row`,v=`${K}-item--selected`,S=`${K}-item--focused`,o=`${K}-table-cell`,s=`${K}-table-cell--center`,n=`${K}-table-cell--right`,t=`${K}-table-cell-skeleton`,U2=`${K}-item--odd`,q2=`${K}-item--placeholder`,K2=`${K}-item--replaced`,g=`${K}-table-row ${K}-table-group-header`,l=`${K}-table-group-header-content`,O=(V,w,p,P,a=!1)=>{if(p.def.cell){let y=p.def.cell(w,p.def,P);if(typeof y==="string")V.innerHTML=y;else V.replaceChildren(y)}else{let y=w[p.def.key],J2=y!=null?String(y):"";if(a&&J2)V.innerHTML=`<span>${J2}</span>`;else V.textContent=J2}if(a&&V.firstElementChild===null){V.replaceChildren();let y=document.createElement("span");y.className=t,V.appendChild(y)}},Y=(V,w,p,P,a=!1)=>{let y=f;if(W){if(T){let J2=T(w);if(J2>=0&&(J2&1)===1)y+=` ${U2}`}else if((w&1)===1)y+=` ${U2}`}if(a)y+=` ${q2}`;if(p)y+=` ${v}`;if(P)y+=` ${S}`;V.className=y},X=(V,w)=>{let p=w.def.align;if(p==="center")V.classList.add(s),V.classList.remove(n);else if(p==="right")V.classList.add(n),V.classList.remove(s);else V.classList.remove(s,n)},N=(V,w)=>{let P=_.columns.length;if(w.length===P)return w;let a=[];for(let y=0;y<P;y++){let J2;if(y<w.length)J2=w[y];else J2=document.createElement("div"),J2.className=o,V.appendChild(J2);a.push(J2)}for(let y=P;y<w.length;y++)w[y].remove();return a},b=(V,w,p)=>{let P=C.acquire(),a=V,y=p.getSize(w),J2=p.getOffset(w)-R();P.style.cssText=`width:${_.totalWidth}px;height:${y}px;transform:translateY(${J2}px)`,P.className=g,B(P,"presentation",V.id,w),P.removeAttribute("aria-selected"),P.removeAttribute("aria-rowindex"),P.replaceChildren();let Y2=document.createElement("div");if(Y2.className=l,A){let Q2=A(a.groupKey,a.groupIndex);if(typeof Q2==="string")Y2.innerHTML=Q2;else Y2.appendChild(Q2)}return P.appendChild(Y2),{element:P,cells:[],index:w,isGroupHeader:!0,_lastItem:V,lastItemId:V.id,lastSelected:!1,lastFocused:!1,lastOffset:J2,lastHeight:y}},u=(V,w,p,P,a)=>{let y=C.acquire(),J2=a.getSize(w),Y2=a.getOffset(w)-R(),Q2=E(V.id);y.style.cssText=`width:${_.totalWidth}px;height:${J2}px;transform:translateY(${Y2}px)`,Y(y,w,p,P,Q2),B(y,"row",V.id,w),y.id=`${U}-item-${w}`,y.setAttribute("aria-rowindex",String(w+2)),L(y,p);let H2=N(y,[]),j2=_.columns;for(let z=0;z<H2.length&&z<j2.length;z++){let h=H2[z],e=j2[z];h.style.cssText=`left:${e.offset}px;width:${e.width}px`,h.setAttribute("role","gridcell"),h.setAttribute("aria-colindex",String(z+1)),X(h,e),O(h,V,e,w,Q2)}return{element:y,cells:H2,index:w,isGroupHeader:!1,_lastItem:V,lastItemId:V.id,lastSelected:p,lastFocused:P,lastOffset:Y2,lastHeight:J2}},i=(V,w,p,P)=>{let a=!1,y=q();if(y!==d)d=y,a=!0;let J2=null,Y2=J();T=typeof W==="string"&&k?k():null;for(let Q2=w.start;Q2<=w.end;Q2++){let H2=Q2-w.start,j2=V[H2];if(!j2)continue;let z=p.has(j2.id),h=Q2===P,e=F?F(j2):!1,I=x.get(Q2);if(I){if(I.isGroupHeader!==e){C.release(I.element),x.delete(Q2);let N2=e?b(j2,Q2,Y2):u(j2,Q2,z,h,Y2);if(x.set(Q2,N2),!J2)J2=document.createDocumentFragment();J2.appendChild(N2.element);continue}if(e){if(I._lastItem!==j2){let O2=j2,$2=I.element.firstElementChild;if($2&&A){let V2=A(O2.groupKey,O2.groupIndex);if(typeof V2==="string")$2.innerHTML=V2;else $2.replaceChildren(V2)}I.element.setAttribute("data-id",String(j2.id)),I._lastItem=j2,I.lastItemId=j2.id}let G2=Y2.getOffset(Q2)-R();if(I.lastOffset!==G2)I.lastOffset=G2,I.element.style.transform=`translateY(${G2}px)`;let X2=Y2.getSize(Q2);if(I.lastHeight!==X2)I.lastHeight=X2,I.element.style.height=`${X2}px`}else{let N2=I._lastItem!==j2,G2=I.lastSelected!==z,X2=I.lastFocused!==h;if(N2){let V2=I.lastItemId!=null&&E(I.lastItemId),W2=E(j2.id);if(!W2&&T2(p,Q2,j2.id))z=!0;let A2=_.columns;for(let Z2=0;Z2<I.cells.length&&Z2<A2.length;Z2++)O(I.cells[Z2],j2,A2[Z2],Q2,W2);if(Y(I.element,Q2,z,h,W2),I.element.setAttribute("data-id",String(j2.id)),L(I.element,z),V2&&!W2)I.element.classList.add(K2),setTimeout(()=>{I.element.classList.remove(K2)},300);I._lastItem=j2,I.lastItemId=j2.id,I.lastSelected=z,I.lastFocused=h}else if(G2||X2)Y(I.element,Q2,z,h,E(j2.id)),L(I.element,z),I.lastSelected=z,I.lastFocused=h;let O2=Y2.getOffset(Q2)-R();if(I.lastOffset!==O2)I.lastOffset=O2,I.element.style.transform=`translateY(${O2}px)`;let $2=Y2.getSize(Q2);if(I.lastHeight!==$2)I.lastHeight=$2,I.element.style.height=`${$2}px`;if(a)I.element.setAttribute("aria-rowindex",String(Q2+2))}}else{if(T2(p,Q2,j2.id))z=!0;let N2=e?b(j2,Q2,Y2):u(j2,Q2,z,h,Y2);if(x.set(Q2,N2),!J2)J2=document.createDocumentFragment();J2.appendChild(N2.element)}}if(J2)Q.appendChild(J2);for(let[Q2,H2]of x)if(Q2<w.start||Q2>w.end)C.release(H2.element),x.delete(Q2)},Z=(V,w,p,P)=>{let a=x.get(V);if(!a)return;if(a.isGroupHeader)return;let y=_.columns;for(let J2=0;J2<a.cells.length&&J2<y.length;J2++)O(a.cells[J2],w,y[J2],V);a.element.setAttribute("data-id",String(w.id)),a._lastItem=w,a.lastItemId=w.id,Y(a.element,V,p,P),L(a.element,p),a.lastSelected=p,a.lastFocused=P},M=(V,w,p)=>{let P=x.get(V);if(!P)return;if(P.isGroupHeader)return;let a=P.lastSelected!==w,y=P.lastFocused!==p;if(a||y)Y(P.element,V,w,p),L(P.element,w),P.lastSelected=w,P.lastFocused=p},H=(V)=>{_=V;let w=V.columns;for(let[,p]of x)if(p.element.style.width=`${V.totalWidth}px`,p.cells.length>0)for(let P=0;P<p.cells.length&&P<w.length;P++){let a=p.cells[P],y=w[P];a.style.left=`${y.offset}px`,a.style.width=`${y.width}px`}},m=(V)=>{return x.get(V)?.element},c=()=>{for(let[,V]of x)C.release(V.element);x.clear(),d=-1};return{render:i,updateItem:Z,updateItemClasses:M,getElement:m,updateColumnLayout:H,setGroupHeaderFn:D,clear:c,destroy:()=>{c(),C.clear()}}};var NJ=(Q)=>{let J=Math.max(1,Math.floor(Q.columns)),j=Q.gap??0,$=Q.containerSize,K=Q.crossOffset??0,U=Q.mainOffset??0,q=0,W=[],k=()=>{let D=(J-1)*j;q=Math.max(0,($-D)/J),W=Array(J);let L=q+j;for(let B=0;B<J;B++)W[B]=K+B*L};k();let R=[],C=0,x=[],d=(D,L)=>{if(D<=0)return C=0,R=[],[];let B=Array(J).fill(U),E=Array(J);for(let S=0;S<J;S++)E[S]=[];let f=Array(D);for(let S=0;S<D;S++){let o=0,s=B[0];for(let U2=1;U2<J;U2++){let q2=B[U2];if(q2<s)s=q2,o=U2}let n=L(S),t=B[o];f[S]={index:S,x:W[o],y:t,lane:o,size:n,crossSize:q},E[o].push(S),B[o]=t+n+j}R=E;let v=0;for(let S=0;S<J;S++){let o=B[S],s=o>0?o-j:0;if(s>v)v=s}return C=v,f},_=(D)=>{if(D.length===0)return C;if(C)return C;let L=Array(J).fill(0);for(let E of D){let f=E.y+E.size,v=L[E.lane];if(f>v)L[E.lane]=f}let B=0;for(let E=0;E<J;E++)if(L[E]>B)B=L[E];return B},T=(D,L,B)=>{if(D.length===0||B<=L)return x.length=0,x;if(R.length===0||R.length!==J)return F(D,L,B);x.length=0;for(let E=0;E<J;E++){let f=R[E],v=f.length;if(!v)continue;let S=0,o=v;while(S<o){let s=S+o>>>1,n=D[f[s]];if(n.y+n.size<=L)S=s+1;else o=s}for(let s=S;s<v;s++){let n=D[f[s]];if(n.y>=B)break;x.push(n)}}return x},F=(D,L,B)=>{x.length=0;for(let E of D)if(E.y+E.size>L&&E.y<B)x.push(E);return x};return{get columns(){return J},get gap(){return j},get containerSize(){return $},update:(D)=>{let L=!1;if(D.columns!==void 0){let B=Math.max(1,Math.floor(D.columns));if(B!==J)J=B,L=!0}if(D.gap!==void 0&&D.gap!==j)j=D.gap,L=!0;if(D.containerSize!==void 0&&D.containerSize!==$)$=D.containerSize,L=!0;if(D.crossOffset!==void 0&&D.crossOffset!==K)K=D.crossOffset,L=!0;if(D.mainOffset!==void 0&&D.mainOffset!==U)U=D.mainOffset,L=!0;if(L)k()},calculateLayout:d,getTotalSize:_,getVisibleItems:T}};var EJ=(Q=200)=>{let J=[];return{acquire:()=>{let U=J.pop();if(U)return U;let q=document.createElement("div");return q.setAttribute("role","option"),q},release:(U)=>{if(U.remove(),J.length<Q)U.className="",U.textContent="",U.removeAttribute("style"),U.removeAttribute("data-index"),U.removeAttribute("data-id"),U.removeAttribute("data-lane"),J.push(U)},clear:()=>{J.length=0}}},HJ=1,ZJ=(Q,J,j,$=!1,K,U,q,W,k=()=>0)=>{let R=EJ(),C=new Map,x=new Set,d=0,_="",T=-1,F={selected:!1,focused:!1},A=(g,l)=>{return F.selected=g,F.focused=l,F},D=`${j}-item ${j}-masonry-item`,L=`${j}-group-header`,B=`${j}-item--selected`,E=`${j}-item--focused`,f=(g,l)=>{if(typeof l==="string")g.innerHTML=l;else g.replaceChildren(l);w2(g)},v=(g,l,O)=>{g.classList.toggle(B,l),g.classList.toggle(E,O)},S=(g,l)=>{let O=Math.round(l.y-k());if($)g.style.transform=`translate(${O}px, ${Math.round(l.x)}px)`;else g.style.transform=`translate(${Math.round(l.x)}px, ${O}px)`},o=(g,l)=>{if($)g.style.width=`${l.size}px`,g.style.height=`${l.crossSize}px`;else g.style.width=`${l.crossSize}px`,g.style.height=`${l.size}px`},s=(g,l,O,Y,X)=>{let N=R.acquire(),b=l.__groupHeader,u=A(Y,X);if(N.className=b?L:D,N.dataset.index=String(g),N.dataset.id=String(l.id),N.dataset.lane=String(O.lane),b)N.setAttribute("role","presentation"),N.removeAttribute("aria-selected"),N.removeAttribute("aria-setsize"),N.removeAttribute("aria-posinset"),N.removeAttribute("id");else if(W===!0){if(N.setAttribute("role","option"),N.ariaSelected=String(Y),U)N.id=`${U}-item-${g}`;if(K){let Z=K();if(Z!==T)T=Z,_=String(Z);N.setAttribute("aria-setsize",_);let M=q?q(g):g+1;N.setAttribute("aria-posinset",String(M))}}else if(N.setAttribute("role","listitem"),N.removeAttribute("aria-selected"),K){let Z=K();if(Z!==T)T=Z,_=String(Z);N.setAttribute("aria-setsize",_);let M=q?q(g):g+1;N.setAttribute("aria-posinset",String(M))}o(N,O);let i=J(l,g,u);return f(N,i),v(N,Y,X),S(N,O),{element:N,lastItem:l,lastSelected:Y,lastFocused:X,lastY:O.y-k(),lastX:O.x,lastSize:O.size,lastCrossSize:O.crossSize,lastSeenFrame:d}},n=(g,l,O,Y)=>{d++,x.clear();for(let N=0;N<l.length;N++)x.add(l[N].index);let X=null;for(let N=0;N<l.length;N++){let b=l[N],u=b.index,i=g(u);if(!i)continue;let Z=O.has(i.id),M=u===Y,H=C.get(u);if(H){let m=H.lastItem!==i,c=H.lastSelected!==Z,G=H.lastFocused!==M,V=H.lastY!==b.y-k()||H.lastX!==b.x,w=H.lastSize!==b.size||H.lastCrossSize!==b.crossSize;if(m){let p=A(Z,M),P=J(i,u,p);if(f(H.element,P),H.element.dataset.id=String(i.id),H.lastItem=i,!i.__groupHeader){let y=q?q(u):u+1;H.element.setAttribute("aria-posinset",String(y))}}if(m||c||G)v(H.element,Z,M),H.element.ariaSelected=String(Z),H.lastSelected=Z,H.lastFocused=M;if(w)o(H.element,b),H.lastSize=b.size,H.lastCrossSize=b.crossSize;if(V)S(H.element,b),H.lastY=b.y-k(),H.lastX=b.x}else{let m=s(u,i,b,Z,M);if(!X)X=document.createDocumentFragment();X.appendChild(m.element),C.set(u,m)}}if(X)Q.appendChild(X);for(let[N,b]of C)if(x.has(N))b.lastSeenFrame=d;else if(d-b.lastSeenFrame>HJ)R.release(b.element),C.delete(N)},t=()=>{for(let g of C.values())R.release(g.element);C.clear(),Q.innerHTML=""};return{render:n,getElement:(g)=>C.get(g)?.element,updateItemClasses:(g,l,O)=>{let Y=C.get(g);if(!Y)return;let X=Y.lastSelected!==l,N=Y.lastFocused!==O;if(X||N)v(Y.element,l,O),Y.lastSelected=l,Y.lastFocused=O},sortDOM:()=>{z2(Q,C.keys(),(g)=>C.get(g)?.element)},clear:t,destroy:()=>{t(),R.clear()}}};var AJ=(Q,J)=>{let j=J;return{getOffset:($)=>$*Q,getSize:($)=>Q,indexAtOffset:($)=>{if(j===0||Q===0)return 0;return Math.max(0,Math.min(Math.floor($/Q),j-1))},getTotalSize:()=>j*Q,getTotal:()=>j,rebuild:($)=>{j=$},isVariable:()=>!1}},FJ=(Q,J)=>{let j=J,$=new Float64Array(0),K=(q)=>{j=q,$=new Float64Array(q+1),$[0]=0;for(let W=0;W<q;W++)$[W+1]=$[W]+Q(W)};K(J);let U=(q)=>{if(j===0)return 0;if(q<=0)return 0;if(q>=$[j])return j-1;let W=0,k=j-1;while(W<k){let R=W+k+1>>>1;if($[R]<=q)W=R;else k=R-1}return W};return{getOffset:(q)=>{if(q<=0)return 0;if(q>=j)return $[j];return $[q]},getSize:(q)=>Q(q),indexAtOffset:(q)=>U(q),getTotalSize:()=>$[j]??0,getTotal:()=>j,rebuild:(q)=>K(q),isVariable:()=>!0}},_J=(Q,J)=>{if(typeof Q==="number")return AJ(Q,J);return FJ(Q,J)};var KJ=()=>{let Q={},J=(U,q)=>{if(!Q[U])Q[U]=new Set;return Q[U].add(q),()=>j(U,q)},j=(U,q)=>{Q[U]?.delete(q)};return{on:J,off:j,emit:(U,q)=>{Q[U]?.forEach((W)=>{try{W(q)}catch(k){console.error(`[vlist] Error in event handler for "${String(U)}":`,k)}})},clear:(U)=>{if(U)delete Q[U];else for(let q in Q)delete Q[q]}}};var k2=(Q={})=>{let{chunkSize:J=100,maxCachedItems:j=5000,evictionBuffer:$=200,onEvict:K}=Q,U=new Map,q=0,W=0,k=(O)=>{let Y=U.get(O);if(!Y)Y={items:Array(J),count:0,lastAccess:Date.now()},U.set(O,Y);else Y.lastAccess=Date.now();return Y},R=(O)=>{return Math.floor(O/J)},C=(O)=>{return O%J},x=()=>q,d=(O)=>{q=O},_=(O)=>{if(O<0||O>=q)return;let Y=R(O),X=U.get(Y);if(!X)return;return X.items[C(O)]},T=(O)=>{if(O<0||O>=q)return!1;let Y=R(O),X=U.get(Y);if(!X)return!1;return X.items[C(O)]!==void 0},F=(O,Y)=>{let X=R(O),N=k(X),b=C(O),u=N.items[b]===void 0;if(N.items[b]=Y,u)N.count++,W++;if(O>=q)q=O+1},A=(O,Y)=>{for(let X=0;X<Y.length;X++){let N=Y[X];if(N!==void 0)F(O+X,N)}},D=(O,Y)=>{if(O<0||O>q)return;let X=R(O),N=Array.from(U.keys()).filter((M)=>M>=X).sort((M,H)=>M-H),b=[];for(let M of N){let H=U.get(M),m=M*J;for(let c=0;c<J;c++){if(H.items[c]===void 0)continue;let G=m+c;if(G<O)continue;b.push({oldIndex:G,item:H.items[c]})}}for(let{oldIndex:M}of b){let H=R(M),m=U.get(H);if(!m)continue;let c=C(M);if(m.items[c]!==void 0){if(m.items[c]=void 0,m.count--,W--,m.count===0)U.delete(H)}}q++;for(let{oldIndex:M,item:H}of b){let m=M+1,c=R(m),G=k(c),V=C(m);G.items[V]=H,G.count++,W++}let u=R(O),i=k(u),Z=C(O);i.items[Z]=Y,i.count++,W++},L=(O)=>{if(O<0||O>=q)return!1;let Y=R(O),X=U.get(Y),N=C(O);if(!(X!==void 0&&X.items[N]!==void 0))return!1;let u=Y,i=Array.from(U.keys()).filter((M)=>M>=u).sort((M,H)=>M-H),Z=[];for(let M of i){let H=U.get(M),m=M*J;for(let c=0;c<J;c++){if(H.items[c]===void 0)continue;let G=m+c;if(G<=O)continue;Z.push({oldIndex:G,item:H.items[c]})}}if(X.items[N]=void 0,X.count--,W--,X.count===0)U.delete(Y);for(let{oldIndex:M}of Z){let H=R(M),m=U.get(H);if(!m)continue;let c=C(M);if(m.items[c]!==void 0){if(m.items[c]=void 0,m.count--,W--,m.count===0)U.delete(H)}}for(let{oldIndex:M,item:H}of Z){let m=M-1,c=R(m),G=k(c),V=C(m);G.items[V]=H,G.count++,W++}return q--,!0},B=(O,Y)=>{let X=[];for(let N=O;N<=Y&&N<q;N++)X.push(_(N));return X},E=(O,Y)=>{for(let X=O;X<=Y&&X<q;X++)if(!T(X))return!1;return!0},f=()=>{let O=[],Y=null,X=Array.from(U.keys()).sort((N,b)=>N-b);for(let N of X){let b=U.get(N);if(!b)continue;let u=N*J;for(let i=0;i<J;i++){let Z=u+i;if(Z>=q)break;if(b.items[i]!==void 0)if(Y===null)Y={start:Z,end:Z};else if(Z===Y.end+1)Y.end=Z;else O.push(Y),Y={start:Z,end:Z};else if(Y!==null)O.push(Y),Y=null}}if(Y!==null)O.push(Y);return O},v=(O,Y)=>{let X=[],N=null;for(let b=O;b<=Y&&b<q;b++)if(!T(b))if(N===null)N={start:b,end:b};else N.end=b;else if(N!==null)X.push(N),N=null;if(N!==null)X.push(N);return X},S=(O)=>{return U.has(O)},o=(O)=>{let Y=U.get(O);if(!Y)return!1;let X=O*J,N=Math.min(J,q-X);return Y.count>=N},s=(O)=>{let Y=U.get(O);if(Y)Y.lastAccess=Date.now()},n=(O,Y)=>{if(O>Y||U.size===0)return;let X=Date.now(),N=R(Math.max(0,O)),b=R(Math.min(q-1,Y));for(let u=N;u<=b;u++){let i=U.get(u);if(i)i.lastAccess=X}},t=(O,Y)=>{if(W<=j)return 0;let X=Math.max(0,O-$),N=Math.min(q-1,Y+$),b=R(X),u=R(N),i=0,Z=[];for(let[M,H]of U)if(M<b||M>u)i+=H.count,Z.push(M),W-=H.count,U.delete(M);if(i>0&&K)K(i,Z);return i},U2=()=>{if(W<=j)return 0;let O=Array.from(U.entries()).sort(([,N],[,b])=>N.lastAccess-b.lastAccess),Y=0,X=[];for(let[N,b]of O){if(W<=j)break;Y+=b.count,W-=b.count,X.push(N),U.delete(N)}if(Y>0&&K)K(Y,X);return Y},q2=()=>{return{totalItems:q,cachedItems:W,cachedChunks:U.size,chunkSize:J,maxCachedItems:j,memoryEfficiency:q>0?1-W/q:1}},K2=()=>W,g=()=>{U.clear(),W=0};return{chunkSize:J,maxCachedItems:j,getTotal:x,setTotal:d,get:_,has:T,set:F,setRange:A,insert:D,delete:L,getRange:B,isRangeLoaded:E,getLoadedRanges:f,findUnloadedRanges:v,getChunkIndex:R,isChunkLoaded:S,isChunkFullyLoaded:o,touchChunk:s,touchChunksForRange:n,evictDistant:t,evictToLimit:U2,getStats:q2,getCachedCount:K2,clear:g,reset:()=>{g(),q=0}}},C2=(Q)=>{if(Q.length===0)return[];let J=[...Q].sort(($,K)=>$.start-K.start),j=[{...J[0]}];for(let $=1;$<J.length;$++){let K=J[$],U=j[j.length-1];if(K.start<=U.end+1)U.end=Math.max(U.end,K.end);else j.push({...K})}return j},x2=(Q,J,j)=>{let $=Math.floor(Q.start/j)*j,K=Math.ceil((Q.end+1)/j)*j-1,U={start:$,end:K};if(J.length===0)return[U];let q=[],W=C2(J),k=U.start;for(let R of W){if(R.end<k)continue;if(R.start>U.end)break;if(R.start>k)q.push({start:k,end:Math.min(R.start-1,U.end)});if(k=R.end+1,k>U.end)break}if(k<=U.end)q.push({start:k,end:U.end});return q};var S2=(Q={})=>{let{maskCharacter:J=s2,maxSampleSize:j=n2}=Q,$=[],K=!1,U=(C)=>{if(K||C.length===0)return;let x=Math.min(C.length,j);for(let d=0;d<x;d++){let _=C[d];if(!_||typeof _!=="object")continue;let T={},F=!1;for(let[A,D]of Object.entries(_)){if(A.startsWith("_")||A==="id")continue;T[A]=String(D??"").length,F=!0}if(F)$.push(T)}K=!0},q=()=>K,W=(C)=>{let x={id:`${b2}${C}`,[f2]:!0,_index:C};if($.length===0)return x.label=J.repeat(12),x;let d=$[C%$.length];for(let[_,T]of Object.entries(d))x[_]=J.repeat(Math.max(1,T));return x};return{analyzeStructure:U,hasAnalyzedStructure:q,generate:W,generateRange:(C,x)=>{let d=[];for(let _=C;_<=x;_++)d.push(W(_));return d},clear:()=>{$=[],K=!1}}},R2=(Q)=>{if(!Q||typeof Q!=="object")return!1;return Q[f2]===!0},g2=(Q)=>{return Q.filter((J)=>!R2(J))};var bJ=50,BJ=(Q={})=>{let{adapter:J,initialItems:j,initialTotal:$,storage:K,placeholder:U,pageSize:q=bJ,maxConcurrent:W=0,onStateChange:k,onDataChange:R,onItemsLoaded:C,onItemsEvicted:x,onLoadError:d}=Q,_=k2({...K,onEvict:(z,h)=>{x?.(z),t(),n()}}),T=null,F=()=>{if(!T)T=S2(U);return T},A=new Map,D=!1,L,B=!0,E,f,v=[],S=0,o=new Map,s=()=>{for(let z of o.values())z[1].abort();o.clear()},n=()=>{k?.(N())},t=()=>{R?.()},U2=()=>{A.clear();let z=_.getLoadedRanges();for(let h of z)for(let e=h.start;e<=h.end;e++){let I=_.get(e);if(I&&!R2(I))A.set(I.id,e)}},q2=(z,h)=>{if(!R2(h))A.set(h.id,z)},K2=(z)=>{A.delete(z)},g=(z,h)=>{return`${z}-${h}`},l=()=>_.getTotal(),O=()=>_.getCachedCount(),Y=()=>D,X=()=>B,N=()=>({total:_.getTotal(),cached:_.getCachedCount(),isLoading:D,pendingRanges:v,error:L,hasMore:B,cursor:E}),b=()=>_,u=()=>F(),i=(z)=>{let h=_.get(z);if(h!==void 0)return h;if(z>=0&&z<_.getTotal())return F().generate(z);return},Z=(z)=>{let h=A.get(z);if(h===void 0)return;return _.get(h)},M=(z)=>{return A.get(z)??-1},H=(z)=>{let h=_.get(z);return h!==void 0&&!R2(h)},m=(z,h)=>{let e=[],I=_.getTotal();_.touchChunksForRange(z,Math.min(h,I-1));for(let N2=z;N2<=h&&N2<I;N2++){let G2=_.get(N2);if(G2!==void 0)e.push(G2);else e.push(F().generate(N2))}return e},c=(z)=>{_.setTotal(z),B=_.getCachedCount()<z,t(),n()},G=(z,h=0,e)=>{if(J&&z.length>0){let I=F();if(!I.hasAnalyzedStructure())I.analyzeStructure(z)}for(let I=0;I<z.length;I++){let N2=z[I];if(N2!==void 0){let G2=h+I;_.set(G2,N2),q2(G2,N2)}}if(e!==void 0)_.setTotal(e);else if(h+z.length>_.getTotal())_.setTotal(h+z.length);if(_.getCachedCount()>=_.getTotal()&&_.getTotal()>0)B=!1;t(),n(),C?.(z,h,_.getTotal())},V=(z,h)=>{let e=_.get(z);if(!e)return!1;let I=e.id,N2={...e,...h};if(_.set(z,N2),h.id!==void 0&&h.id!==I)K2(I);return q2(z,N2),t(),n(),!0},w=(z,h)=>{_.insert(h,z),U2(),s(),t(),n()},p=(z)=>{let h=A.get(z);if(h===void 0)return!1;if(!_.delete(h))return!1;return U2(),s(),t(),n(),!0},P=async(z,h)=>{if(!J)return;let e=_.chunkSize,I=Math.floor(z/e),N2=Math.floor(h/e),G2=e*2;for(let[$2,V2]of o){let W2=$2.indexOf("-"),A2=parseInt($2.slice(0,W2),10);if(Math.abs(A2-z)>G2)V2[1].abort(),o.delete($2)}let X2=[],O2=[];for(let $2=I;$2<=N2;$2++){let V2=$2*e,W2=V2+e-1,A2=g(V2,W2);if(_.isChunkFullyLoaded($2))continue;let D2=o.get(A2);if(D2)O2.push(D2[0]);else X2.push({start:V2,end:W2})}if(X2.length===0){if(O2.length>0)await Promise.all(O2);return}if(W>0){let $2=o.size+X2.length;if($2>W){let V2=(z+h)/2,W2=Math.min($2-W,o.size);while(W2>0){let Z2=null,D2=-1,E2=null;for(let[r,_2]of o){let B2=r.indexOf("-"),M2=parseInt(r.slice(0,B2),10),L2=parseInt(r.slice(B2+1),10),F2=Math.abs((M2+L2)/2-V2);if(F2>D2)D2=F2,Z2=r,E2=_2[1]}if(Z2)E2.abort(),o.delete(Z2);W2--}let A2=W-o.size;if(X2.length>A2)X2.sort((Z2,D2)=>{let E2=Math.abs((Z2.start+Z2.end)/2-V2),r=Math.abs((D2.start+D2.end)/2-V2);return E2-r}),X2.length=Math.max(0,A2)}}if(X2.length===0){if(O2.length>0)await Promise.all(O2);return}for(let $2 of X2){let V2=g($2.start,$2.end),W2=new AbortController,A2=(async()=>{v.push($2),D=!0,L=void 0,n();try{let Z2=$2.end-$2.start+1,D2={offset:$2.start,limit:Z2,cursor:$2.start===f?E:void 0,signal:W2.signal},E2=await J.read(D2);if(G(E2.items,$2.start,E2.total),E2.cursor)E=E2.cursor,f=$2.start+E2.items.length;let r=$2.start+E2.items.length;if(r>=S){if(S=r,E2.hasMore!==void 0)B=E2.hasMore;else if(E2.total!==void 0)B=r<E2.total}}catch(Z2){if(Z2?.name==="AbortError")return;L=Z2 instanceof Error?Z2:Error(String(Z2)),d?.(L,$2)}finally{o.delete(V2);let Z2=v.findIndex((D2)=>D2.start===$2.start&&D2.end===$2.end);if(Z2>=0)v.splice(Z2,1);D=o.size>0,n()}})();o.set(V2,[A2,W2]),O2.push(A2)}await Promise.all(O2)},a=async(z,h)=>{if(_.isRangeLoaded(z,h))return;await P(z,h)},y=async()=>{if(!J)return;await P(0,q-1)},J2=async()=>{if(!J||D||!B)return!1;let z=_.getCachedCount(),h=_.getTotal(),e=z,I=Math.min(e+q-1,h>0?h-1:e+q-1);if(e>=h&&h>0)return B=!1,!1;return await P(e,I),_.getCachedCount()>z},Y2=async()=>{if(_.clear(),A.clear(),T)T.clear();s(),v=[],D=!1,E=void 0,f=void 0,B=!0,S=0,L=void 0,t(),n()},Q2=(z,h)=>{if(_.evictDistant(z,h)>0)U2()},H2=()=>{_.clear(),A.clear(),E=void 0,f=void 0,L=void 0,v=[],D=!1,t(),n()},j2=()=>{if(_.reset(),A.clear(),T)T.clear();E=void 0,f=void 0,B=!0,S=0,L=void 0,v=[],D=!1,t(),n()};if(j&&j.length>0)G(j,0,$??j.length);else if($!==void 0)_.setTotal($),t(),n();return{getState:N,getTotal:l,getCached:O,getIsLoading:Y,getHasMore:X,getStorage:b,getPlaceholders:u,getItem:i,getItemById:Z,getIndexById:M,isItemLoaded:H,getItemsInRange:m,setTotal:c,setItems:G,updateItem:V,insertItem:w,removeItem:p,loadRange:P,ensureRange:a,loadInitial:y,loadMore:J2,reload:Y2,evictDistant:Q2,clear:H2,reset:j2}};var RJ=(Q)=>{if(typeof Q!=="object"){let J=Q??2;return{top:J,right:J,bottom:J,left:J}}return{top:Q.top??2,right:Q.right??2,bottom:Q.bottom??2,left:Q.left??2}},VJ=(Q,J,j={},$="vlist",K=!1,U)=>{let{autoHide:q=!0,autoHideDelay:W=1000,minThumbSize:k=15,showOnHover:R=!0,showOnViewportEnter:C=!0,clickBehavior:x="scroll"}=j,d=x==="page"?"scroll":x,_=U??Q,T=RJ(j.padding),F=K?T.left:T.top,A=K?T.right:T.bottom,D=K?T.bottom:T.right,L=j.hoverZoneWidth??D+16,B=0,E=0,f=0,v=0,S=!1,o=!1,s=0,n=0,t=0,U2=null,q2=!1,K2=null,g=0,l=0,O=null,Y=null,X=null,N=K?"width":"height",b=K?"translateX":"translateY",u=K?(r)=>r.clientX:(r)=>r.clientY,i=K?"left":"top",Z=document.createElement("div"),M=document.createElement("div"),H=document.createElement("div"),m=K?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",c=()=>{if(_===Q)return;let r=Q.offsetTop;Z.style[K?"left":"top"]=r?`calc(var(${m}) + ${r}px)`:`var(${m})`,H.style[K?"left":"top"]=`${r}px`},G=()=>{if(Z.className=`${$}-scrollbar`,M.className=`${$}-scrollbar__thumb`,K)Z.classList.add(`${$}-scrollbar--horizontal`);if(j.padding!==void 0)_.style.setProperty("--vlist-custom-scrollbar-padding-top",`${T.top}px`),_.style.setProperty("--vlist-custom-scrollbar-padding-right",`${T.right}px`),_.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${T.bottom}px`),_.style.setProperty("--vlist-custom-scrollbar-padding-left",`${T.left}px`);if(j.minThumbSize!==void 0)Z.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${k}px`);if(Z.appendChild(M),_.appendChild(Z),H.className=`${$}-scrollbar__hover`,K)H.classList.add(`${$}-scrollbar__hover--horizontal`),H.style.height=`${L}px`;else H.style.width=`${L}px`;if(_.appendChild(H),_!==Q)c()},V=()=>{if(U2)clearTimeout(U2),U2=null},w=()=>{if(!q)return;V(),U2=setTimeout(P,W)},p=()=>{if(B<=E)return;if(V(),!q2)Z.classList.add(`${$}-scrollbar--visible`),q2=!0;if(q&&!S&&!o)w()},P=()=>{if(S||o)return;Z.classList.remove(`${$}-scrollbar--visible`),q2=!1},a=(r,_2)=>{if(B=r,E=_2,c(),B<=E){Z.style.display="none",P();return}Z.style.display="";let B2=Math.max(0,E-F-A),M2=E/B;if(f=Math.max(k,M2*B2),M.style[N]=`${f}px`,v=B2-f,y(t),!q)p()},y=(r)=>{if(t=r,B<=E||v<=0)return;let _2=B-E,B2=Math.min(1,Math.max(0,r/_2));M.style.transform=`${b}(${B2*v}px)`},J2=(r)=>{if(r.target===M||d!=="jump"||v<=0)return;let _2=B-E,B2=Z.getBoundingClientRect(),M2=u(r)-B2[i],L2=Math.max(0,Math.min(M2-f/2,v));J(L2/v*_2),p()},Y2=()=>{if(O!==null)clearTimeout(O),O=null;if(Y!==null)cancelAnimationFrame(Y),Y=null;X=null},Q2=(r)=>{let _2=v>0?l/r*v:0;if(g<_2)return-1;if(g>=_2+f)return 1;return 0},H2=()=>{let r=B-E,_2=Q2(r);if(_2===0){Y2();return}if(_2===-1){if(l<=0){Y2();return}let B2=Math.max(0,l-E);l=B2,J(B2)}else{if(l>=r){Y2();return}let B2=Math.min(r,l+E);l=B2,J(B2)}p()},j2=(r)=>{if(X===null){X=r,Y=requestAnimationFrame(j2);return}let _2=B-E,B2=r-X;X=r;let M2=Q2(_2);if(M2===0){Y2();return}let L2=12*E/1000,F2=Math.min(L2*B2,E);if(M2===-1){if(l<=0){Y2();return}let y2=Math.max(0,l-F2);l=y2,J(y2)}else{if(l>=_2){Y2();return}let y2=Math.min(_2,l+F2);l=y2,J(y2)}V(),Y=requestAnimationFrame(j2)},z=()=>{Y2(),w(),document.removeEventListener("mouseup",z)},h=(r)=>{if(r.target===M||d!=="scroll")return;r.preventDefault();let _2=Z.getBoundingClientRect();g=u(r)-_2[i],l=t,H2(),O=setTimeout(()=>{Y=requestAnimationFrame(j2)},350),document.addEventListener("mouseup",z)},e=(r)=>{r.preventDefault(),r.stopPropagation(),S=!0,s=u(r),n=t,V(),Z.classList.add(`${$}-scrollbar--dragging`),document.addEventListener("mousemove",I),document.addEventListener("mouseup",N2)},I=(r)=>{if(!S)return;let _2=u(r)-s,B2=v>0?_2/v:0,M2=B-E,L2=B2*M2,F2=Math.max(0,Math.min(n+L2,M2));M.style.transform=`${b}(${F2/M2*v}px)`,J(F2)},N2=()=>{if(S=!1,Z.classList.remove(`${$}-scrollbar--dragging`),q&&!o)w();document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",N2)},G2=K?(r)=>r.touches[0].clientX:(r)=>r.touches[0].clientY,X2=(r)=>{r.stopPropagation(),S=!0,s=G2(r),n=t,V(),Z.classList.add(`${$}-scrollbar--dragging`)},O2=(r)=>{if(!S)return;r.preventDefault();let _2=G2(r)-s,B2=v>0?_2/v:0,M2=B-E,L2=B2*M2,F2=Math.max(0,Math.min(n+L2,M2));M.style.transform=`${b}(${F2/M2*v}px)`,J(F2)},$2=()=>{if(S=!1,Z.classList.remove(`${$}-scrollbar--dragging`),q)w()},V2=(r)=>{if(r.target===M)return;if(v<=0)return;let _2=r.touches[0],B2=Z.getBoundingClientRect(),M2=(K?_2.clientX:_2.clientY)-B2[i];if(d==="jump"){let L2=B-E,F2=Math.max(0,Math.min(M2-f/2,v));J(F2/v*L2)}else g=M2,l=t,H2();p()},W2=()=>{if(C)p()},A2=()=>{if(!S){if(o=!1,q)w()}},Z2=()=>{o=!0,V(),p()},D2=()=>{if(o=!1,!S&&q)w()},E2=()=>{if(V(),Y2(),K2!==null)cancelAnimationFrame(K2),K2=null;Z.removeEventListener("click",J2),Z.removeEventListener("mousedown",h),Z.removeEventListener("mouseenter",Z2),document.removeEventListener("mouseup",z),Z.removeEventListener("mouseleave",D2),Z.removeEventListener("touchstart",V2),M.removeEventListener("mousedown",e),M.removeEventListener("touchstart",X2),M.removeEventListener("touchmove",O2),M.removeEventListener("touchend",$2),Q.removeEventListener("mouseenter",W2),Q.removeEventListener("mouseleave",A2),document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",N2),H.removeEventListener("click",J2),H.removeEventListener("mousedown",h),H.removeEventListener("mouseenter",Z2),H.removeEventListener("mouseleave",D2),H.remove(),_.style.removeProperty("--vlist-custom-scrollbar-padding-top"),_.style.removeProperty("--vlist-custom-scrollbar-padding-right"),_.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),_.style.removeProperty("--vlist-custom-scrollbar-padding-left"),Z.remove()};if(G(),Z.addEventListener("click",J2),Z.addEventListener("mousedown",h),Z.addEventListener("mouseenter",Z2),Z.addEventListener("mouseleave",D2),Z.addEventListener("touchstart",V2,{passive:!0}),M.addEventListener("mousedown",e),M.addEventListener("touchstart",X2,{passive:!0}),M.addEventListener("touchmove",O2,{passive:!1}),M.addEventListener("touchend",$2,{passive:!0}),Q.addEventListener("mouseenter",W2),Q.addEventListener("mouseleave",A2),H.addEventListener("click",J2),H.addEventListener("mousedown",h),R)H.addEventListener("mouseenter",Z2),H.addEventListener("mouseleave",D2);return{show:p,hide:P,updateBounds:a,updatePosition:y,isVisible:()=>q2,destroy:E2}};var TJ=50,yJ=0.1;function vJ(Q){let J=0,j=0,$=0;function K(){return $>0?j/$:0}function U(k){if(J=k,k>yJ&&k<TJ)j+=k,$++}function q(){let k=Q.getTotal();if(k===0)return 0;let R=Q.getItemSize();if(R<=0)return 0;let C=Q.getContainerSize();if(C<=0)return 0;let x=Q.getScrollPosition(),d=typeof Q.getColumns==="function"?Q.getColumns():1,T=Math.ceil(k/d)*R,A=Math.min(T,a2)-C,D=T-C,L=A>0?D/A:1,B=x*L,E=Math.ceil((B+C)/R);return Math.min(E*d,k)}function W(){let k=Q.getTotal(),R=q();return{progress:k>0?Math.min(100,Math.max(0,R/k*100)):0,velocity:J,velocityAvg:K(),itemCount:R,total:k}}return{getState:W,onVelocity:U}}export{t2 as toggleSelection,I2 as selectItems,e2 as selectAll,C2 as mergeRanges,QJ as isSelected,R2 as isPlaceholderItem,v2 as isGroupHeader,qJ as getSelectedItems,$J as getSelectedIds,g2 as filterPlaceholders,h2 as deselectItems,UJ as createTableRenderer,YJ as createTableLayout,jJ as createTableHeader,l2 as createStickyHeader,vJ as createStats,k2 as createSparseStorage,_J as createSizeCache,i2 as createSelectionState,VJ as createScrollbar,S2 as createPlaceholderManager,ZJ as createMasonryRenderer,NJ as createMasonryLayout,c2 as createGroupedSizeFn,r2 as createGroupLayout,DJ as createGridRenderer,o2 as createGridLayout,KJ as createEmitter,BJ as createAsyncManager,JJ as clearSelection,x2 as calculateMissingRanges,d2 as buildLayoutItems};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Carousel Layout Engine
|
|
3
|
+
*
|
|
4
|
+
* Computes per-item sizes and positions for carousel variants.
|
|
5
|
+
* All MD3 variants use the same engine — the difference is the
|
|
6
|
+
* slot configuration (how many items are visible and their ratios).
|
|
7
|
+
*
|
|
8
|
+
* A "slot" is a visible position in the carousel at rest.
|
|
9
|
+
* During scroll, items transition between slots with smooth
|
|
10
|
+
* size interpolation. The sum of all slot widths always equals
|
|
11
|
+
* the container size.
|
|
12
|
+
*
|
|
13
|
+
* Example configurations:
|
|
14
|
+
* full: slots [1.0] focal 0
|
|
15
|
+
* hero: slots [0.80, 0.20] focal 0
|
|
16
|
+
* hero-center: slots [0.15, 0.70, 0.15] focal 1
|
|
17
|
+
* multi: slots [0.40, 0.30, 0.20, 0.10] focal 0
|
|
18
|
+
* uncontained: slots [0.33, 0.34, 0.33] focal 0
|
|
19
|
+
*/
|
|
20
|
+
export interface LayoutConfig {
|
|
21
|
+
/** Slot ratios — must sum to 1.0. Each value is the fraction of containerSize. */
|
|
22
|
+
slots: number[];
|
|
23
|
+
/** Which slot is the focal/active one (0-indexed). */
|
|
24
|
+
focalSlot: number;
|
|
25
|
+
/** Container size in pixels along the primary axis. */
|
|
26
|
+
containerSize: number;
|
|
27
|
+
/** Gap between items in pixels (default: 0). Applied as visual spacing — does not affect step size. */
|
|
28
|
+
gap?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ItemLayout {
|
|
31
|
+
/** Pixel width (or height in vertical mode) of this item. */
|
|
32
|
+
size: number;
|
|
33
|
+
/** Absolute offset in content space. */
|
|
34
|
+
offset: number;
|
|
35
|
+
/** 0 = fully focal, 1 = fully exiting/entering. */
|
|
36
|
+
progress: number;
|
|
37
|
+
/** Relative index from the focal item. */
|
|
38
|
+
relOffset: number;
|
|
39
|
+
/** Size role based on progress. */
|
|
40
|
+
role: "large" | "medium" | "small";
|
|
41
|
+
}
|
|
42
|
+
export declare function createLayoutEngine(config: LayoutConfig): {
|
|
43
|
+
/** Slot widths in pixels at rest. */
|
|
44
|
+
slotWidths: number[];
|
|
45
|
+
/** Scroll distance to advance one item. */
|
|
46
|
+
stepSize: number;
|
|
47
|
+
/** Index of the focal slot. */
|
|
48
|
+
focalSlot: number;
|
|
49
|
+
/** Compute the layout for a single item given the scroll state. */
|
|
50
|
+
getItemLayout(vi: number, focalVi: number, frac: number, anchor: number): ItemLayout;
|
|
51
|
+
/** Compute the dynamic size of a single item (no offset calculation). */
|
|
52
|
+
getItemSize(vi: number, focalVi: number, frac: number): number;
|
|
53
|
+
/** Compute the anchor offset for pre-focal slots (centering). */
|
|
54
|
+
getAnchorOffset(focalVi: number, frac: number): number;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { carousel } from "./plugin";
|
|
2
|
+
export type { CarouselPluginConfig, CarouselVariant, CarouselDirection, CarouselState } from "./plugin";
|
|
3
|
+
export { createLayoutEngine } from "./engine";
|
|
4
|
+
export type { LayoutConfig, ItemLayout } from "./engine";
|
|
5
|
+
export { resolvePreset, full, hero, heroCenter, multi, uncontained } from "./presets";
|
|
6
|
+
export type { SlotConfig } from "./presets";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Carousel Plugin (RFC-011)
|
|
3
|
+
*
|
|
4
|
+
* Infinite-loop scrolling with snap-to-item, focal scaling, and peek.
|
|
5
|
+
* Uses a finite virtual scroll window with silent rebasing — the scroll
|
|
6
|
+
* position wraps seamlessly without rewinding through the entire list.
|
|
7
|
+
*
|
|
8
|
+
* Priority 10 — layout tier (replaces scroll contract).
|
|
9
|
+
*
|
|
10
|
+
* Implementation: the content size is `lapSize * CYCLES`. Items are
|
|
11
|
+
* mapped via modulo so virtual index 817 with 16 real items → item 1.
|
|
12
|
+
* The scroll starts in the middle cycle. When approaching the edges,
|
|
13
|
+
* the position is silently rebased to the middle cycle.
|
|
14
|
+
*
|
|
15
|
+
* Public API (list.total, ARIA, selection, click events) stays at the
|
|
16
|
+
* real item count. The inflated virtual window is strictly internal.
|
|
17
|
+
*/
|
|
18
|
+
import type { VListItem } from "../../types";
|
|
19
|
+
import type { VListPlugin } from "../../core/types";
|
|
20
|
+
import type { SlotConfig } from "./presets";
|
|
21
|
+
export type CarouselVariant = "static" | "full" | "hero" | "hero-center" | "multi" | "uncontained" | "free";
|
|
22
|
+
export type CarouselDirection = "auto" | "forward" | "backward";
|
|
23
|
+
export interface CarouselPluginConfig {
|
|
24
|
+
variant?: CarouselVariant | SlotConfig;
|
|
25
|
+
snap?: boolean;
|
|
26
|
+
snapDuration?: number;
|
|
27
|
+
peek?: number | string | "auto";
|
|
28
|
+
largeItemMaxWidth?: number | "auto";
|
|
29
|
+
parallax?: number;
|
|
30
|
+
visibleCount?: number;
|
|
31
|
+
focalAlign?: "center" | "start";
|
|
32
|
+
initialIndex?: number;
|
|
33
|
+
cornerRadius?: number;
|
|
34
|
+
gap?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface CarouselState {
|
|
37
|
+
index: number;
|
|
38
|
+
progress: number;
|
|
39
|
+
offset: number;
|
|
40
|
+
scrollPosition: number;
|
|
41
|
+
role: "large" | "medium" | "small";
|
|
42
|
+
}
|
|
43
|
+
export declare function carousel<T extends VListItem = VListItem>(config?: CarouselPluginConfig): VListPlugin<T>;
|
|
44
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Carousel Presets
|
|
3
|
+
*
|
|
4
|
+
* Each preset maps a variant name to a slot configuration
|
|
5
|
+
* for the layout engine. Adding a new variant = adding a
|
|
6
|
+
* new function to this file.
|
|
7
|
+
*/
|
|
8
|
+
export interface SlotConfig {
|
|
9
|
+
slots: number[];
|
|
10
|
+
focalSlot: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function full(): SlotConfig;
|
|
13
|
+
export declare function hero(containerSize: number, peek: number): SlotConfig;
|
|
14
|
+
export declare function heroCenter(containerSize: number, peek: number): SlotConfig;
|
|
15
|
+
export declare function multi(): SlotConfig;
|
|
16
|
+
export declare function uncontained(containerSize: number): SlotConfig;
|
|
17
|
+
export declare function resolvePreset(variant: string, containerSize: number, peek: number): SlotConfig | null;
|
|
18
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -24,14 +24,11 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import type { VListItem, ItemTemplate, Range } from "../../types";
|
|
26
26
|
import type { SizeCache } from "../../rendering/sizes";
|
|
27
|
-
import type { CompressionContext } from "../../rendering/renderer";
|
|
28
27
|
import type { GridLayout } from "./types";
|
|
29
28
|
/** Grid renderer instance */
|
|
30
29
|
export interface GridRenderer<T extends VListItem = VListItem> {
|
|
31
30
|
/** Render items for a flat item range, positioned in a 2D grid */
|
|
32
|
-
render: (items: T[], range: Range, selectedIds: Set<string | number>, focusedIndex: number
|
|
33
|
-
/** Update item positions (for compressed scrolling) */
|
|
34
|
-
updatePositions: (compressionCtx: CompressionContext) => void;
|
|
31
|
+
render: (items: T[], range: Range, selectedIds: Set<string | number>, focusedIndex: number) => void;
|
|
35
32
|
/** Update a single item (used by selection feature for focused item changes) */
|
|
36
33
|
updateItem: (index: number, item: T, isSelected: boolean, isFocused: boolean) => void;
|
|
37
34
|
/** Update only CSS classes on a rendered item (no template re-evaluation) */
|
|
@@ -22,5 +22,5 @@ import type { SizeCache } from "../../rendering/sizes";
|
|
|
22
22
|
* so the DOM structure is stable and doesn't cause a visual shift.
|
|
23
23
|
*/
|
|
24
24
|
export declare const createStickyContainer: (root: HTMLElement, classPrefix: string, horizontal: boolean, headerHeight: number, stickyOffset?: number) => HTMLElement;
|
|
25
|
-
export declare const createStickyHeader: (root: HTMLElement, layout: GroupLayout, sizeCache: SizeCache, renderInto: (slot: HTMLElement, groupIndex: number) => void, classPrefix: string, horizontal?: boolean, stickyOffset?: number,
|
|
25
|
+
export declare const createStickyHeader: (root: HTMLElement, layout: GroupLayout, sizeCache: SizeCache, renderInto: (slot: HTMLElement, groupIndex: number) => void, classPrefix: string, horizontal?: boolean, stickyOffset?: number, existingContainer?: HTMLElement, getHeaderOffset?: (headerLayoutIndex: number) => number) => StickyHeader;
|
|
26
26
|
//# sourceMappingURL=sticky.d.ts.map
|
|
@@ -51,5 +51,5 @@ export interface MasonryRenderer<T extends VListItem = VListItem> {
|
|
|
51
51
|
* @param totalItemsGetter - Optional getter for total item count (for aria-setsize)
|
|
52
52
|
* @param ariaIdPrefix - Optional unique prefix for element IDs (for aria-activedescendant)
|
|
53
53
|
*/
|
|
54
|
-
export declare const createMasonryRenderer: <T extends VListItem = VListItem>(itemsContainer: HTMLElement, template: ItemTemplate<T>, classPrefix: string, isHorizontal?: boolean, totalItemsGetter?: () => number, ariaIdPrefix?: string, ariaPosInSetGetter?: (layoutIndex: number) => number, interactive?: boolean) => MasonryRenderer<T>;
|
|
54
|
+
export declare const createMasonryRenderer: <T extends VListItem = VListItem>(itemsContainer: HTMLElement, template: ItemTemplate<T>, classPrefix: string, isHorizontal?: boolean, totalItemsGetter?: () => number, ariaIdPrefix?: string, ariaPosInSetGetter?: (layoutIndex: number) => number, interactive?: boolean, getBaseOffset?: () => number) => MasonryRenderer<T>;
|
|
55
55
|
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -1,24 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* vlist v2 — Scale Plugin
|
|
3
|
-
*
|
|
4
|
-
* Enables support for 1M+ item lists by compressing the scroll space
|
|
5
|
-
* when total content size exceeds the browser's ~16.7M pixel limit.
|
|
6
|
-
*
|
|
7
|
-
* Priority 20 — runs after layout plugins (10), before selection (50).
|
|
8
|
-
*
|
|
9
|
-
* When compressed:
|
|
10
|
-
* - Native scroll is disabled (overflow: hidden)
|
|
11
|
-
* - Custom wheel handler with lerp smooth scroll
|
|
12
|
-
* - Custom touch handler with momentum
|
|
13
|
-
* - Items positioned relative to viewport via onCalculate hook
|
|
14
|
-
* - Fallback scrollbar created if no scrollbar plugin present
|
|
15
|
-
*
|
|
16
|
-
* Uses v1's rendering/scale.ts pure math functions directly.
|
|
17
|
-
*/
|
|
18
1
|
import type { VListItem } from "../../types";
|
|
19
2
|
import type { VListPlugin } from "../../core/types";
|
|
20
3
|
export interface ScalePluginConfig {
|
|
21
4
|
force?: boolean;
|
|
22
5
|
}
|
|
23
|
-
export declare function scale<T extends VListItem = VListItem>(
|
|
6
|
+
export declare function scale<T extends VListItem = VListItem>(_config?: ScalePluginConfig): VListPlugin<T>;
|
|
24
7
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -3,5 +3,4 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { scrollbar, type ScrollbarPluginConfig } from "./plugin";
|
|
5
5
|
export { createScrollbar, type Scrollbar, type ScrollbarConfig, type ScrollCallback, } from "./scrollbar";
|
|
6
|
-
export { createScrollController, rafThrottle, isAtBottom, isAtTop, getScrollPercentage, isRangeVisible, type ScrollController, } from "./controller";
|
|
7
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -31,14 +31,11 @@
|
|
|
31
31
|
*/
|
|
32
32
|
import type { VListItem, Range } from "../../types";
|
|
33
33
|
import type { SizeCache } from "../../rendering/sizes";
|
|
34
|
-
import type { CompressionContext } from "../../rendering/renderer";
|
|
35
34
|
import type { TableLayout, TableColumn } from "./types";
|
|
36
35
|
/** Table renderer instance */
|
|
37
36
|
export interface TableRendererInstance<T extends VListItem = VListItem> {
|
|
38
37
|
/** Render rows for a range, with cell-based layout */
|
|
39
|
-
render: (items: T[], range: Range, selectedIds: Set<string | number>, focusedIndex: number
|
|
40
|
-
/** Update item positions (for compressed scrolling) */
|
|
41
|
-
updatePositions: (compressionCtx: CompressionContext) => void;
|
|
38
|
+
render: (items: T[], range: Range, selectedIds: Set<string | number>, focusedIndex: number) => void;
|
|
42
39
|
/** Update a single row (e.g., after selection change) */
|
|
43
40
|
updateItem: (index: number, item: T, isSelected: boolean, isFocused: boolean) => void;
|
|
44
41
|
/** Update only CSS classes on a rendered row */
|
|
@@ -68,5 +65,5 @@ export interface TableRendererInstance<T extends VListItem = VListItem> {
|
|
|
68
65
|
* @param getTotalItems - Function to get total item count (for ARIA)
|
|
69
66
|
* @returns TableRendererInstance
|
|
70
67
|
*/
|
|
71
|
-
export declare const createTableRenderer: <T extends VListItem = VListItem>(container: HTMLElement, getSizeCache: () => SizeCache, layout: TableLayout<T>, _columns: TableColumn<T>[], classPrefix: string, ariaIdPrefix: string, getTotalItems: () => number, striped?: boolean | "data" | "even" | "odd", stripeIndexFn?: () => (index: number) => number) => TableRendererInstance<T>;
|
|
68
|
+
export declare const createTableRenderer: <T extends VListItem = VListItem>(container: HTMLElement, getSizeCache: () => SizeCache, layout: TableLayout<T>, _columns: TableColumn<T>[], classPrefix: string, ariaIdPrefix: string, getTotalItems: () => number, striped?: boolean | "data" | "even" | "odd", stripeIndexFn?: () => (index: number) => number, getBaseOffset?: () => number) => TableRendererInstance<T>;
|
|
72
69
|
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* vlist - Rendering Domain
|
|
3
|
-
*
|
|
3
|
+
* Size cache and DOM sorting shared by the core engine and layout plugins.
|
|
4
4
|
*/
|
|
5
5
|
export { createSizeCache, countVisibleItems, countItemsFittingFromBottom, getOffsetForVirtualIndex, type SizeCache, } from "./sizes";
|
|
6
|
-
export { createMeasuredSizeCache, type MeasuredSizeCache, } from "./measured";
|
|
7
6
|
export { sortRenderedDOM } from "./sort";
|
|
8
|
-
export { createRenderer, createDOMStructure, updateContentHeight, updateContentWidth, resolveContainer, getContainerDimensions, type Renderer, type DOMStructure, type CompressionContext, type CompressedPositionFn, type CompressionStateFn, } from "./renderer";
|
|
9
|
-
export { createViewportState, updateViewportState, updateViewportSize, updateViewportItems, calculateRenderRange, calculateTotalSize, calculateActualSize, calculateItemOffset, calculateScrollToIndex, clampScrollPosition, getScrollDirection, rangesEqual, isInRange, getRangeCount, rangeToIndices, diffRanges, getSimpleCompressionState, simpleVisibleRange, simpleScrollToIndex, NO_COMPRESSION, type CompressionState, type VisibleRangeFn, type ScrollToIndexFn, } from "./viewport";
|
|
10
|
-
export { MAX_VIRTUAL_SIZE, getCompressionState, getCompressionState as getCompression, needsCompression, getMaxItemsWithoutCompression, getCompressionInfo, calculateCompressedVisibleRange, calculateCompressedRenderRange, calculateCompressedItemPosition, calculateCompressedScrollToIndex, calculateIndexFromScrollPosition, } from "./scale";
|
|
11
|
-
export { scrollToFocus, scrollToFocusSimple, } from "./scroll";
|
|
12
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/size.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"base":{"minified":"
|
|
1
|
+
{"base":{"minified":"27.4","gzipped":"9.9","minBytes":28041,"gzBytes":10108},"a11y":{"minified":"30.5","gzipped":"11.0","minBytes":31188,"gzBytes":11254},"selection":{"minified":"36.3","gzipped":"12.5","minBytes":37221,"gzBytes":12828},"data":{"minified":"41.1","gzipped":"14.7","minBytes":42072,"gzBytes":15057},"scrollbar":{"minified":"34.5","gzipped":"11.9","minBytes":35288,"gzBytes":12152},"sortable":{"minified":"36.8","gzipped":"12.9","minBytes":37674,"gzBytes":13175},"groups":{"minified":"43.3","gzipped":"15.2","minBytes":44362,"gzBytes":15525},"page":{"minified":"29.8","gzipped":"10.6","minBytes":30527,"gzBytes":10892},"snapshots":{"minified":"30.6","gzipped":"11.0","minBytes":31385,"gzBytes":11289},"transition":{"minified":"34.1","gzipped":"11.7","minBytes":34965,"gzBytes":11981},"autosize":{"minified":"29.8","gzipped":"10.7","minBytes":30517,"gzBytes":10980},"grid":{"minified":"34.4","gzipped":"12.3","minBytes":35224,"gzBytes":12605},"table":{"minified":"45.6","gzipped":"15.6","minBytes":46658,"gzBytes":15992},"masonry":{"minified":"38.4","gzipped":"13.9","minBytes":39362,"gzBytes":14219},"tree":{"minified":"42.5","gzipped":"14.9","minBytes":43528,"gzBytes":15255},"search":{"minified":"36.5","gzipped":"13.0","minBytes":37354,"gzBytes":13354},"carousel":{"minified":"33.9","gzipped":"12.2","minBytes":34710,"gzBytes":12509}}
|
package/dist/types.d.ts
CHANGED
|
@@ -295,7 +295,7 @@ export interface ScrollConfig {
|
|
|
295
295
|
* Scrollbar mode (default: custom scrollbar).
|
|
296
296
|
*
|
|
297
297
|
* - *omitted* — Custom scrollbar (default), native scrollbar hidden via CSS
|
|
298
|
-
* - `'native'` — Browser native scrollbar
|
|
298
|
+
* - `'native'` — Browser native scrollbar
|
|
299
299
|
* - `'none'` — No scrollbar at all (native hidden, custom not created)
|
|
300
300
|
* - `ScrollbarOptions` — Custom scrollbar with fine-tuning options
|
|
301
301
|
*/
|
|
@@ -449,14 +449,8 @@ export interface ViewportState {
|
|
|
449
449
|
scrollPosition: number;
|
|
450
450
|
/** Container size along main axis (height for vertical, width for horizontal) */
|
|
451
451
|
containerSize: number;
|
|
452
|
-
/** Total content size
|
|
452
|
+
/** Total content size */
|
|
453
453
|
totalSize: number;
|
|
454
|
-
/** Actual total size without compression */
|
|
455
|
-
actualSize: number;
|
|
456
|
-
/** Whether compression is active */
|
|
457
|
-
isCompressed: boolean;
|
|
458
|
-
/** Compression ratio (1 = no compression, <1 = compressed) */
|
|
459
|
-
compressionRatio: number;
|
|
460
454
|
/** Visible item range */
|
|
461
455
|
visibleRange: Range;
|
|
462
456
|
/** Render range (includes overscan) */
|
|
@@ -475,7 +469,6 @@ export interface ErrorViewportSnapshot {
|
|
|
475
469
|
end: number;
|
|
476
470
|
};
|
|
477
471
|
totalItems: number;
|
|
478
|
-
isCompressed: boolean;
|
|
479
472
|
}
|
|
480
473
|
/** Event types and their payloads */
|
|
481
474
|
export interface VListEvents<T extends VListItem = VListItem> extends EventMap {
|