@floor/vlist 1.2.9 → 1.3.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.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Lightweight, high-performance virtual list with zero dependencies and dimension-agnostic architecture.
4
4
 
5
- **v1.2.9** — [Changelog](./changelog.txt)
5
+ **v1.3.0** — [Changelog](./changelog.txt)
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/%40floor%2Fvlist.svg)](https://www.npmjs.com/package/@floor/vlist)
8
8
  [![bundle size](https://img.shields.io/bundlephobia/minzip/@floor/vlist)](https://bundlephobia.com/package/@floor/vlist)
9
- [![tests](https://img.shields.io/badge/tests-2493_passing-brightgreen)](https://github.com/floor/vlist)
9
+ [![CI](https://github.com/floor/vlist/actions/workflows/ci.yml/badge.svg)](https://github.com/floor/vlist/actions/workflows/ci.yml)
10
10
  [![license](https://img.shields.io/npm/l/vlist.svg)](https://github.com/floor/vlist/blob/main/LICENSE)
11
11
 
12
12
  - **Zero dependencies** — no external libraries
@@ -97,7 +97,7 @@ const list = vlist({
97
97
  | `withSelection()` | +1.8 KB | Single/multiple selection + keyboard nav |
98
98
  | `withScale()` | +2.6 KB | 1M+ items via scroll compression |
99
99
  | `withScrollbar()` | +1.2 KB | Custom scrollbar UI |
100
- | `withTable()` | +4.9 KB | Data table with columns, resize, sort, groups |
100
+ | `withTable()` | +5.0 KB | Data table with columns, resize, sort, groups |
101
101
  | `withPage()` | +0.4 KB | Document-level scrolling |
102
102
  | `withSnapshots()` | +0.5 KB | Scroll save/restore |
103
103
 
@@ -395,7 +395,7 @@ This makes the codebase clearer and eliminates semantic confusion when working w
395
395
  | + Grid | 12.8 KB |
396
396
  | + Groups | 12.9 KB |
397
397
  | + Async | 12.7 KB |
398
- | + Table | 13.6 KB |
398
+ | + Table | 13.7 KB |
399
399
 
400
400
  ### Memory Efficiency
401
401
 
@@ -446,7 +446,7 @@ const list: VList<Photo> = vlist<Photo>({
446
446
  ## Contributing
447
447
 
448
448
  1. Fork → branch → make changes → add tests → pull request
449
- 2. Run `bun test` (2493 tests) and `bun run build` before submitting
449
+ 2. Run `bun test` (2719 tests) and `bun run build` before submitting
450
450
 
451
451
  ## License
452
452
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var{defineProperty:P2,getOwnPropertyNames:N1,getOwnPropertyDescriptor:_1}=Object,V1=Object.prototype.hasOwnProperty;var r2=new WeakMap,W1=(J)=>{var q=r2.get(J),Q;if(q)return q;if(q=P2({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")N1(J).map((j)=>!V1.call(q,j)&&P2(q,j,{get:()=>J[j],enumerable:!(Q=_1(J,j))||Q.enumerable}));return r2.set(J,q),q};var D1=(J,q)=>{for(var Q in q)P2(J,Q,{get:q[Q],enumerable:!0,configurable:!0,set:(j)=>q[Q]=()=>j})};var s2=(J,q)=>()=>(J&&(q=J(J=0)),q);var G1=(J,q)=>{let Q=q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(Q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),Q-1))},getTotalSize:()=>Q*J,getTotal:()=>Q,rebuild:(j)=>{Q=j},isVariable:()=>!1}},M1=(J,q)=>{let Q=q,j=new Float64Array(0),Y=(U)=>{Q=U,j=new Float64Array(U+1),j[0]=0;for(let N=0;N<U;N++)j[N+1]=j[N]+J(N)};Y(q);let X=(U)=>{if(Q===0)return 0;if(U<=0)return 0;if(U>=j[Q])return Q-1;let N=0,_=Q-1;while(N<_){let K=N+_+1>>>1;if(j[K]<=U)N=K;else _=K-1}return N};return{getOffset:(U)=>{if(U<=0)return 0;if(U>=Q)return j[Q];return j[U]},getSize:(U)=>J(U),indexAtOffset:(U)=>X(U),getTotalSize:()=>j[Q]??0,getTotal:()=>Q,rebuild:(U)=>Y(U),isVariable:()=>!0}},k0=(J,q)=>{if(typeof J==="number")return G1(J,q);return M1(J,q)},d0=(J,q,Q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(Q/J.getSize(0));let Y=0,X=0,U=q;while(U<j&&X<Q)X+=J.getSize(U),Y++,U++;return Math.max(1,Y)},J2=(J,q,Q)=>{if(Q===0)return 0;if(!J.isVariable())return Math.floor(q/J.getSize(0));let j=0,Y=0;for(let X=Q-1;X>=0;X--){let U=J.getSize(X);if(Y+U>q)break;Y+=U,j++}return Math.max(j,1)},z2=(J,q,Q)=>{if(Q===0)return 0;let j=Math.floor(q),Y=q-j,X=Math.max(0,Math.min(j,Q-1));return J.getOffset(X)+Y*J.getSize(X)};var I0=(J,q,Q)=>{let j=Array.from(q).sort((U,N)=>U-N);if(j.length<=1)return;let Y=J.firstChild,X=!0;for(let U=0;U<j.length;U++){if(Q(j[U])!==Y){X=!1;break}Y=Y.nextSibling}if(X)return;for(let U=0;U<j.length;U++){let N=Q(j[U]);if(N)J.appendChild(N)}};var w2=200,p0=50,UJ=5,ZJ=2,NJ=50,y0=16000000,_J="x",VJ=20,v2="_isPlaceholder",WJ="__placeholder_";var DJ,T0=(J,q)=>{let Q=q.getTotalSize(),j=Q>y0,Y=j?y0:Q,X=Q>0?Y/Q:1;return{isCompressed:j,actualSize:Q,virtualSize:Y,ratio:X}},q2=(J,q,Q,j,Y,X)=>{if(j===0||q===0)return X.start=0,X.end=-1,X;if(!Y.isCompressed){let D=Q.indexAtOffset(J),b=Q.indexAtOffset(J+q);if(b<j-1)b++;return X.start=Math.max(0,D),X.end=Math.min(j-1,Math.max(0,b)),X}let{virtualSize:U}=Y,_=J/U*j,K=Math.floor(_),V=d0(Q,Math.max(0,K),q,j),T=Math.ceil(_)+V,y=U-q-J;if(y<=q&&y>=-1){let D=J2(Q,q,j),b=Math.max(0,j-D),Z=Math.max(0,Math.min(1,1-y/q));K=Math.floor(K+(b-K)*Z),T=y<=1?j-1:Math.min(j-1,K+V)}return X.start=Math.max(0,K),X.end=Math.min(j-1,Math.max(0,T)),X},GJ=(J,q,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q),j},h0=(J,q,Q,j,Y,X,U)=>{if(!X.isCompressed||j===0)return Q.getOffset(J);let{virtualSize:N}=X,_=N-Y,K=_-q;if(K<=Y&&K>=-1){if(q>=_-1){let $=Q.getTotalSize()-Q.getOffset(J);return Y-$}let y=J2(Q,Y,j),D=Math.max(0,j-y),Z=q/N*j,G=Math.max(0,Math.min(1,1-K/Y)),v=Q.getOffset(J)-Q.getOffset(D),O=Q.getOffset(J)-z2(Q,Z,j);return O+(v-O)*G}let V=q/N,T=Q.getTotalSize(),A=V*T;return Q.getOffset(J)-A},X2=(J,q,Q,j,Y,X="start")=>{if(j===0)return 0;let U;if(Y.isCompressed){if(X==="end"&&J===j-1)return Math.max(0,Y.virtualSize-Q);U=J/j*Y.virtualSize}else U=q.getOffset(J);let N=q.getSize(J);switch(X){case"center":U-=(Q-N)/2;break;case"end":U-=Q-N;break}let _=Y.virtualSize-Q;return Math.max(0,Math.min(U,_))},MJ=(J,q,Q,j)=>{if(Q===0)return 0;if(j.isCompressed){let Y=J/j.virtualSize;return Math.floor(Y*Q)}return q.indexAtOffset(J)},OJ=(J,q)=>{if(typeof q==="number")return J*q>y0;return q.getTotalSize()>y0},AJ=(J)=>{if(J<=0)return 0;return Math.floor(y0/J)},EJ=(J,q)=>{let Q=T0(J,q);if(!Q.isCompressed)return`No compression needed (${J} items, ${(Q.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(Q.ratio*100).toFixed(1)}% (${J} items, ${(Q.actualSize/1e6).toFixed(1)}M px → ${(Q.virtualSize/1e6).toFixed(1)}M px virtual)`};var Y2=s2(()=>{DJ=y0});var C0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var uJ={};D1(uJ,{createGridRenderer:()=>r0});var z1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let U=document.createElement("div");return U.setAttribute("role","option"),U},release:(X)=>{if(X.remove(),q.length<J)X.className="",X.textContent="",X.removeAttribute("style"),X.removeAttribute("data-index"),X.removeAttribute("data-id"),X.removeAttribute("data-row"),X.removeAttribute("data-col"),q.push(X)},clear:()=>{q.length=0}}},C1=2,r0=(J,q,Q,j,Y,X,U,N,_=!1)=>{let K=z1(),V=new Map,T=X,A=!1,y=null,D=0,b=0,Z="",G=-1,v=(E)=>{if(y&&D===E)return y;return y=T0(E,Q),D=E,y},O={selected:!1,focused:!1},$=(E,L)=>{return O.selected=E,O.focused=L,O},C=`${Y}-item ${Y}-grid-item`,W=`${Y}-item--selected`,d=`${Y}-item--focused`,S=(E,L)=>{if(typeof L==="string")E.innerHTML=L;else E.replaceChildren(L)},F=(E,L,z)=>{E.classList.toggle(W,L),E.classList.toggle(d,z)},h=(E,L)=>{let z=j.getRow(E);if(L){let M=L.totalItems,w=v(M);if(w.isCompressed)return h0(z,L.scrollPosition,Q,M,L.containerSize,w,L.rangeStart)}return Q.getOffset(z)},s=(E,L)=>{let z=A&&j.getCol(E)===0,M=z?0:j.getCol(E),w=z?0:j.getColumnOffset(M,T),g;if(A){let Q0=j.getRow(E),m=0,q0=new Set;for(let X0=0;X0<E;X0++){let c=j.getRow(X0);if(c<Q0&&!q0.has(c)){let n=Q.getSize(X0);m+=n,q0.add(c)}}g=m}else g=h(E,L);if(_)return`translate(${Math.round(g)}px, ${Math.round(w)}px)`;return`translate(${Math.round(w)}px, ${Math.round(g)}px)`},x=(E,L)=>{E.style.transform=L},r=(E,L)=>{let z=E.dataset.id?.startsWith("__group_header"),M=z?T:j.getColumnWidth(T),w;if(A||z)w=Q.getSize(L)-j.gap;else{let g=j.getRow(L);w=Q.getSize(g)-j.gap}if(_)E.style.width=`${w}px`,E.style.height=`${M}px`;else E.style.width=`${M}px`,E.style.height=`${w}px`},l=(E,L,z,M,w)=>{let g=K.acquire(),Q0=$(z,M);if(g.className=C,g.dataset.index=String(E),g.dataset.id=String(L.id),g.dataset.row=String(j.getRow(E)),g.dataset.col=String(j.getCol(E)),g.ariaSelected=String(z),N)g.id=`${N}-item-${E}`;if(U){let q0=U();if(q0!==G)G=q0,Z=String(q0);g.setAttribute("aria-setsize",Z),g.setAttribute("aria-posinset",String(E+1))}r(g,E);let m=q(L,E,Q0);return S(g,m),F(g,z,M),x(g,w),{element:g,lastItemId:L.id,lastSelected:z,lastFocused:M,lastTransform:w,lastSeenFrame:b}},B=(E,L,z,M,w)=>{if(b++,L.start===0&&E.length>0)A=C0(E[0]);for(let[m,q0]of V)if(m>=L.start&&m<=L.end)q0.lastSeenFrame=b;else if(b-q0.lastSeenFrame>C1)K.release(q0.element),V.delete(m);let g=!1;if(U){let m=U();if(m!==G)G=m,Z=String(m),g=!0}let Q0=null;for(let m=L.start;m<=L.end;m++){let q0=m-L.start,X0=E[q0];if(!X0){console.warn(`⚠️ RENDER: Missing item at index ${m} (range: ${L.start}-${L.end}, items.length: ${E.length})`);continue}let c=z.has(X0.id),n=m===M,e=V.get(m);if(e){let t=e.lastItemId!==X0.id,U0=e.lastSelected!==c,Z0=e.lastFocused!==n;if(t||U0||Z0){if(t){let W0=$(c,n),j0=q(X0,m,W0);S(e.element,j0),e.element.dataset.id=String(X0.id),e.element.dataset.row=String(j.getRow(m)),e.element.dataset.col=String(j.getCol(m)),r(e.element,m)}F(e.element,c,n),e.element.ariaSelected=String(c),e.lastItemId=X0.id,e.lastSelected=c,e.lastFocused=n}let V0=s(m,w);if(e.lastTransform!==V0)x(e.element,V0),e.lastTransform=V0;if(g)e.element.setAttribute("aria-setsize",Z)}else{let t=s(m,w),U0=l(m,X0,c,n,t);if(!Q0)Q0=document.createDocumentFragment();Q0.appendChild(U0.element),V.set(m,U0)}}if(Q0)J.appendChild(Q0)},u=(E)=>{for(let[L,z]of V){let M=s(L,E);if(z.lastTransform!==M)x(z.element,M),z.lastTransform=M}},k=(E,L,z,M)=>{let w=V.get(E);if(!w)return;let g=w.lastItemId!==L.id,Q0=w.lastSelected!==z,m=w.lastFocused!==M;if(g||Q0||m){let q0=$(z,M),X0=q(L,E,q0);S(w.element,X0),F(w.element,z,M),w.element.dataset.id=String(L.id),w.element.ariaSelected=String(z),r(w.element,E),w.lastItemId=L.id,w.lastSelected=z,w.lastFocused=M}},P=(E,L,z)=>{let M=V.get(E);if(!M)return;let w=M.lastSelected!==L,g=M.lastFocused!==z;if(w||g)F(M.element,L,z),M.lastSelected=L,M.lastFocused=z},I=(E)=>{return V.get(E)?.element},R=(E)=>{if(Math.abs(E-T)<1)return;T=E;for(let[L,z]of V){r(z.element,L);let M=s(L);x(z.element,M),z.lastTransform=M}},f=()=>{I0(J,V.keys(),(E)=>V.get(E)?.element)},a=()=>{for(let[,E]of V)K.release(E.element);V.clear()};return{render:B,updatePositions:u,updateItem:k,updateItemClasses:P,getElement:I,sortDOM:f,updateContainerWidth:R,clear:a,destroy:()=>{a(),K.clear()}}};var D2=s2(()=>{Y2()});var n2=2,o2=(J=0)=>{let q=[,,,,,];for(let Q=0;Q<5;Q++)q[Q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},R2=(J,q)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let X=J.samples[0];return X.position=q,X.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=q,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=q,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let X=(J.sampleIndex-J.sampleCount+5)%5,U=J.samples[X],N=q-U.position,_=Q-U.time;J.velocity=_>0?Math.abs(N)/_:0}return J.lastPosition=q,J.lastTime=Q,J};var Q2=(J,q)=>{let Q=new Map,j=(X)=>{let U=Q.get(X);return U!==void 0?U:J},Y=k0(j,q);return{getOffset(X){return Y.getOffset(X)},getSize(X){return j(X)},indexAtOffset(X){return Y.indexAtOffset(X)},getTotalSize(){return Y.getTotalSize()},getTotal(){return Y.getTotal()},rebuild(X){if(X<Y.getTotal()){for(let U of Q.keys())if(U>=X)Q.delete(U)}Y=k0(j,X)},isVariable(){return!0},setMeasuredSize(X,U){Q.set(X,U)},isMeasured(X){return Q.has(X)},getEstimatedSize(){return J},measuredCount(){return Q.size}}};var j2=()=>{let J={},q=(N,_)=>{if(!J[N])J[N]=new Set;return J[N].add(_),()=>Q(N,_)},Q=(N,_)=>{J[N]?.delete(_)};return{on:q,off:Q,emit:(N,_)=>{J[N]?.forEach((K)=>{try{K(_)}catch(V){console.error(`[vlist] Error in event handler for "${String(N)}":`,V)}})},once:(N,_)=>{let K=(V)=>{Q(N,K),_(V)};return q(N,K)},clear:(N)=>{if(N)delete J[N];else for(let _ in J)delete J[_]},listenerCount:(N)=>{return J[N]?.size??0}}};var i2=(J)=>{if(typeof J==="string"){let q=document.querySelector(J);if(!q)throw Error(`[vlist/builder] Container not found: ${J}`);return q}return J},t2=(J,q,Q,j)=>{let Y=document.createElement("div");if(Y.className=q,j)Y.classList.add(`${q}--horizontal`);Y.setAttribute("tabindex","0");let X=document.createElement("div");if(X.className=`${q}-viewport`,X.setAttribute("tabindex","-1"),j)X.style.overflowX="auto",X.style.overflowY="hidden";else X.style.overflow="auto";X.style.height="100%",X.style.width="100%";let U=document.createElement("div");if(U.className=`${q}-content`,U.style.position="relative",j)U.style.height="100%";else U.style.width="100%";let N=document.createElement("div");if(N.className=`${q}-items`,N.setAttribute("role","listbox"),Q)N.setAttribute("aria-label",Q);if(j)N.setAttribute("aria-orientation","horizontal");if(N.style.position="relative",j)N.style.height="100%";else N.style.width="100%";return U.appendChild(N),X.appendChild(U),Y.appendChild(X),J.appendChild(Y),{root:Y,viewport:X,content:U,items:N}};var e2=(J=100)=>{let q=[];return{acquire:()=>{let Q=q.pop();if(Q)return Q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(Q)=>{if(q.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),q.push(Q)},clear:()=>{q.length=0}}};var JJ=(J,q,Q,j,Y)=>{if(j===0||q===0){Y.start=0,Y.end=0;return}let X=Q.indexAtOffset(J),U=d0(Q,X,q,j),N=X+U;Y.start=Math.max(0,X),Y.end=Math.min(j-1,Math.max(0,N))},QJ=(J,q,Q,j)=>{if(Q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q)},jJ=(J,q,Q,j,Y)=>{if(j===0)return 0;let X=Math.max(0,Math.min(J,j-1)),U=q.getOffset(X),N=q.getSize(X),_=Math.max(0,q.getTotalSize()-Q),K;switch(Y){case"center":K=U-(Q-N)/2;break;case"end":K=U-Q+N;break;default:K=U}return Math.max(0,Math.min(K,_))};var C2=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,R0=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:300};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??300};return{align:"start",behavior:"auto",duration:300}},f0=(J,q)=>{let Q=null,j=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null};return{animateScroll:(X,U,N)=>{if(j(),Math.abs(U-X)<1){J.scrollTo(U);return}let _=performance.now(),K=(V)=>{let T=V-_,A=Math.min(T/N,1),y=X+(U-X)*C2(A);if(J.scrollTo(y),q(),A<1)Q=requestAnimationFrame(K);else Q=null};Q=requestAnimationFrame(K)},cancelScroll:j}};var qJ=(J,q)=>{let{dom:Q,emitter:j,resolvedConfig:Y,rawConfig:X,rendered:U,pool:N,sharedState:_,isHorizontal:K,classPrefix:V,contentSizeHandlers:T,idleHandlers:A,afterScroll:y,clickHandlers:D,keydownHandlers:b,resizeHandlers:Z,destroyHandlers:G,methods:v,onScrollFrame:O,resizeObserver:$,renderRange:C}=q;return{get dom(){return Q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return Y},get rawConfig(){return X},get renderer(){return{render:(W,d,S,F,h)=>{J.ss=S,J.fi=F,J.ffn()},updateItemClasses:(W,d,S)=>{let F=U.get(W);if(!F)return;F.classList.toggle(`${V}-item--selected`,d),F.classList.toggle(`${V}-item--focused`,S),F.ariaSelected=d?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(W)=>U.get(W)??null,clear:()=>{},destroy:()=>{}}},set renderer(W){},get dataManager(){return J.dm},set dataManager(W){J.dm=W},get scrollController(){return J.sc},set scrollController(W){J.sc=W},state:_,getContainerWidth(){return J.cw},afterScroll:y,idleHandlers:A,clickHandlers:D,keydownHandlers:b,resizeHandlers:Z,contentSizeHandlers:T,destroyHandlers:G,methods:v,replaceTemplate(W){J.at=W},replaceRenderer(W){},replaceDataManager(W){J.dm=W},replaceScrollController(W){J.sc=W},getItemsForRange(W){let{dm:d,it:S}=J,F=[];for(let h=W.start;h<=W.end;h++){let s=d?d.getItem(h):S[h];if(s)F.push(s)}return F},getAllLoadedItems(){let W=J.dm;if(W){let d=W.getTotal(),S=[];for(let F=0;F<d;F++){let h=W.getItem(F);if(h)S.push(h)}return S}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let W=J.hc;return{isCompressed:!1,actualSize:W.getTotalSize(),virtualSize:W.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:C.start}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,W]of U)W.remove(),N.release(W);U.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(W,d){J.rfn=W,J.ffn=d},setVirtualTotalFn(W){J.vtf=W},rebuildSizeCache(W){J.hc.rebuild(W??J.vtf())},setSizeConfig(W){J.hc=k0(W,J.vtf())},updateContentSize(W){let d=`${W}px`;if(K)Q.content.style.width=d;else Q.content.style.height=d},updateCompressionMode(){},setVisibleRangeFn(W){J.gvr=W},setScrollToPosFn(W){J.gsp=W},setPositionElementFn(W){J.pef=W},setScrollFns(W,d){J.sgt=W,J.sst=(S)=>{d(S),O()}},setScrollTarget(W){J.st.removeEventListener("scroll",O),J.st=W,J.st.addEventListener("scroll",O,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(W){J.gcw=W.width,J.gch=W.height,J.cw=W.width(),J.ch=W.height(),_.viewportState.containerSize=K?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,$.unobserve(Q.viewport)},disableWheelHandler(){if(J.wh)Q.viewport.removeEventListener("wheel",J.wh),J.wh=null}}},XJ=(J,q,Q)=>{let{rendered:j,itemState:Y,contentSizeHandlers:X,applyTemplate:U,updateContentSize:N}=q,_=()=>{J.hc.rebuild(J.vtf()),N(),Q.updateCompressionMode();for(let K=0;K<X.length;K++)X[K]();J.ffn()};return{getState:()=>({total:J.it.length,cached:J.it.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>J.it.length,getCached:()=>J.it.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(K)=>J.it[K],isItemLoaded:(K)=>K>=0&&K<J.it.length&&J.it[K]!==void 0,getItemsInRange:(K,V)=>{let T=J.it,A=[],y=Math.max(0,K),D=Math.min(V,T.length-1);for(let b=y;b<=D;b++)A.push(T[b]);return A},setTotal:(K)=>{},setItems:(K,V=0,T)=>{let A=J.it;if(V===0&&(T!==void 0||A.length===0))J.it=K;else{let y=V+K.length;if(A.length<y)A.length=y;for(let D=0;D<K.length;D++)A[V+D]=K[D]}if(J.ii)_()},updateItem:(K,V)=>{let T=J.it;if(K<0||K>=T.length)return!1;let A=T[K];if(!A)return!1;T[K]={...A,...V};let y=j.get(K);if(y)U(y,J.at(T[K],K,Y)),y.dataset.id=String(T[K].id);return!0},removeItem:(K)=>{if(K<0||K>=J.it.length)return!1;if(J.it.splice(K,1),J.ii)_();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),N(),J.ffn()}}},YJ=(J,q)=>{let{dom:Q,classPrefix:j}=q;return{getScrollTop:()=>J.sgt(),scrollTo:(Y)=>{J.sst(Y),J.ls=Y,J.rfn()},scrollBy:(Y)=>{let X=J.sgt()+Y;J.sst(X),J.ls=X,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(Y=2)=>J.sab(Y),getScrollPercentage:()=>{let Y=J.hc.getTotalSize(),X=Math.max(0,Y-J.ch);return X>0?J.ls/X:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>Q.root.classList.contains(`${j}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(Y)=>{J.ch=Y},destroy:()=>{}}};var O1=3,A1="vlist",KJ=150,E1=0,BJ=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let q=J.orientation==="horizontal",Q=q?"width":"height",j=q?"estimatedWidth":"estimatedHeight",Y=q?J.item.width:J.item.height,X=q?J.item.estimatedWidth:J.item.estimatedHeight;if(Y==null&&X==null)throw Error(`[vlist/builder] item.${Q} or item.${j} is required${q?" when orientation is 'horizontal'":""}`);if(Y!=null){if(typeof Y==="number"&&Y<=0)throw Error(`[vlist/builder] item.${Q} must be a positive number`);if(typeof Y!=="number"&&typeof Y!=="function")throw Error(`[vlist/builder] item.${Q} must be a number or a function (index) => number`)}else if(X!=null){if(typeof X!=="number"||X<=0)throw Error(`[vlist/builder] item.${j} must be a positive number`)}if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(q&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let U=new Map,N=!1,_={use(K){if(N)throw Error("[vlist/builder] Cannot call .use() after .build()");return U.set(K.name,K),_},build(){if(N)throw Error("[vlist/builder] .build() can only be called once");return N=!0,F1(J,U,q,Y,X??null)}};return _};function F1(J,q,Q,j,Y){let{item:X,items:U,overscan:N=O1,classPrefix:_=A1,ariaLabel:K,reverse:V=!1,scroll:T}=J,A=T,y=A?.wheel??!0,D=A?.wrap??!1,b=V,Z=`${_}-${E1++}`,G=j??Y,v=j==null&&Y!=null,O=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||navigator.maxTouchPoints&&navigator.maxTouchPoints>2,$=Q?typeof X.height==="number"?X.height:void 0:typeof X.width==="number"?X.width:void 0,C={overscan:N,classPrefix:_,reverse:b,wrap:D,horizontal:Q,ariaIdPrefix:Z},W=Array.from(q.values()).sort((H,o)=>(H.priority??50)-(o.priority??50)),d=new Set(W.map((H)=>H.name));for(let H of W)if(H.conflicts){for(let o of H.conflicts)if(d.has(o))throw Error(`[vlist/builder] ${H.name} and ${o} cannot be combined`)}if(b){if(d.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let S=i2(J.container),F=t2(S,_,K,Q);if(A?.wheel===!1)if(Q)F.viewport.style.overflowX="hidden";else F.viewport.style.overflow="hidden";if(A?.scrollbar==="none")F.viewport.classList.add(`${_}-viewport--no-scrollbar`);let h=j2(),s=U||[],x=typeof G==="function"&&(q.has("withGrid")||q.has("withMasonry")),r=v?Q2(Y,s.length):k0(G,x?0:s.length),l=e2(),B={it:s,hc:r,ch:F.viewport.clientHeight,cw:F.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:o2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:Q?()=>F.viewport.scrollLeft:()=>F.viewport.scrollTop,sst:Q?(H)=>{F.viewport.scrollLeft=H}:(H)=>{F.viewport.scrollTop=H},sab:(H=2)=>{let o=B.hc.getTotalSize();return B.ls+B.ch>=o-H},sic:!1,rfn:null,ffn:null,gvr:(H,o,i,J0,K0)=>{JJ(H,o,i,J0,K0)},gsp:(H,o,i,J0,K0)=>{return jJ(H,o,i,J0,K0)},pef:null,at:X.template,vre:!0,st:F.viewport,wh:null,gcw:()=>B.cw,gch:()=>B.ch};B.vtf=()=>B.dm?B.dm.getTotal():B.it.length;let u=null,k=null,P=!1,I={start:0,end:0},R={start:0,end:0},f={start:-1,end:-1},a={viewportState:{scrollPosition:0,containerSize:Q?B.cw:B.ch,totalSize:B.hc.getTotalSize(),actualSize:B.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},p=new Map,E=()=>{I0(F.items,p.keys(),(H)=>p.get(H))},L=v?new WeakMap:null,z=v?r:null,M=null,w=0,g=!1,Q0=()=>{if(!v)return;if(g){let H=B.sgt(),o=Q?F.viewport.scrollWidth-F.viewport.clientWidth:F.viewport.scrollHeight-F.viewport.clientHeight,i=o>0&&H>=o-2;if(x0(),g=!1,i){let J0=Math.max(0,B.hc.getTotalSize()-(Q?B.cw:B.ch));if(J0>H)B.sst(J0),B.ls=J0,B.rfn()}}};if(v&&z&&L)M=new ResizeObserver((H)=>{if(B.id)return;let o=!1,i=I.start;for(let J0 of H){let K0=L.get(J0.target);if(K0===void 0)continue;let Y0=Q?J0.borderBoxSize[0].inlineSize:J0.borderBoxSize[0].blockSize;if(!z.isMeasured(K0)){let B0=z.getSize(K0);if(z.setMeasuredSize(K0,Y0),o=!0,K0<i&&Y0!==B0)w+=Y0-B0;M.unobserve(J0.target);let N0=J0.target;if(Q)N0.style.width=`${Y0}px`;else N0.style.height=`${Y0}px`}}if(!o)return;if(z.rebuild(B.vtf()),B.hc=z,w!==0){let J0=B.sgt();B.sst(J0+w),B.ls=J0+w,w=0}if(P)g=!0;else{let J0=B.sgt(),K0=Q?F.viewport.scrollWidth-F.viewport.clientWidth:F.viewport.scrollHeight-F.viewport.clientHeight,Y0=K0>0&&J0>=K0-2;if(x0(),g=!1,Y0){let B0=Math.max(0,B.hc.getTotalSize()-(Q?B.cw:B.ch));if(B0>J0)B.sst(B0),B.ls=B0}}f.start=-1,f.end=-1,B.rfn()});let m={selected:!1,focused:!1},q0=`${_}-item`,X0=X.striped===!0,c=`${_}-item--odd`,n=[],e=[],t=[],U0=[],Z0=[],V0=[],W0=[],j0=new Map,M0=null,O0=null,D0=!1,$0=()=>{if(D0)return;D0=!0,M0=j0.get("_getSelectedIds")??null,O0=j0.get("_getFocusedIndex")??null},G0=(H,o)=>{if(typeof o==="string")H.innerHTML=o;else H.replaceChildren(o)},b0=(H,o)=>{let i=Math.round(B.hc.getOffset(o));if(Q)H.style.transform=`translateX(${i}px)`;else H.style.transform=`translateY(${i}px)`};B.pef=b0;let v0=(H,o)=>{let i=l.acquire();i.className=q0;let J0=!v||z&&z.isMeasured(H);if(Q){if(J0)i.style.width=`${B.hc.getSize(H)}px`;else i.style.width="";if($!=null)i.style.height=`${$}px`}else if(J0)i.style.height=`${B.hc.getSize(H)}px`;else i.style.height="";if(i.dataset.index=String(H),i.dataset.id=String(o.id),i.ariaSelected="false",i.id=`${Z}-item-${H}`,B.la=String(B.vtf()),i.setAttribute("aria-setsize",B.la),i.setAttribute("aria-posinset",String(H+1)),String(o.id).startsWith("__placeholder_"))i.classList.add(`${_}-item--placeholder`);if(X0)i.classList.toggle(c,(H&1)===1);return G0(i,B.at(o,H,m)),B.pef(i,H),i},x0=()=>{let H=`${B.hc.getTotalSize()}px`;if(Q)F.content.style.width=H;else F.content.style.height=H},rJ=()=>{if(B.id)return;$0();let H=M0?M0():B.ss,o=O0?O0():B.fi,i=B.vtf(),J0=Q?B.cw:B.ch;if(B.gvr(B.ls,J0,B.hc,i,I),QJ(I,N,i,R),R.start===f.start&&R.end===f.end){if(B.sic)for(let[_0,A0]of p)B.pef(A0,_0);return}let K0=String(i),Y0=K0!==B.la;B.la=K0;for(let[_0,A0]of p)if(_0<R.start||_0>R.end)A0.remove(),l.release(A0),p.delete(_0);let B0=document.createDocumentFragment(),N0=[],L0=[];for(let _0=R.start;_0<=R.end;_0++){let A0=B.dm?B.dm.getItem(_0):B.it[_0];if(A0===void 0)continue;let F0=p.get(_0);if(F0){let H0=F0.dataset.id,m0=String(A0.id);if(H0!==m0){let Z1=H0?.startsWith("__placeholder_"),l2=m0.startsWith("__placeholder_");G0(F0,B.at(A0,_0,m)),F0.dataset.id=m0;let a2=!v||z&&z.isMeasured(_0);if(Q)F0.style.width=a2?`${B.hc.getSize(_0)}px`:"";else F0.style.height=a2?`${B.hc.getSize(_0)}px`:"";if(l2)F0.classList.add(`${_}-item--placeholder`);else F0.classList.remove(`${_}-item--placeholder`);if(Z1&&!l2)F0.classList.add(`${_}-item--replaced`),setTimeout(()=>{F0.classList.remove(`${_}-item--replaced`)},300)}B.pef(F0,_0);let e0=H.has(A0.id),U1=_0===o;if(F0.classList.toggle(`${_}-item--selected`,e0),F0.classList.toggle(`${_}-item--focused`,U1),F0.ariaSelected=e0?"true":"false",Y0)F0.setAttribute("aria-setsize",B.la)}else{let H0=v0(_0,A0);L0.push({index:_0,element:H0});let m0=H.has(A0.id),e0=_0===o;if(m0)H0.classList.add(`${_}-item--selected`),H0.ariaSelected="true";if(e0)H0.classList.add(`${_}-item--focused`);B0.appendChild(H0),N0.push({index:_0,element:H0})}}if(N0.length>0){F.items.appendChild(B0);for(let{index:_0,element:A0}of N0)p.set(_0,A0)}if(v&&M&&z&&L){for(let{index:_0,element:A0}of L0)if(!z.isMeasured(_0))L.set(A0,_0),M.observe(A0)}f.start=R.start,f.end=R.end,a.lastRenderRange.start=R.start,a.lastRenderRange.end=R.end,a.viewportState.scrollPosition=B.ls,a.viewportState.visibleRange.start=I.start,a.viewportState.visibleRange.end=I.end,a.viewportState.renderRange.start=R.start,a.viewportState.renderRange.end=R.end,h.emit("range:change",{range:{start:R.start,end:R.end}})},sJ=()=>{f.start=-1,f.end=-1,B.rfn()};B.rfn=rJ,B.ffn=sJ;let H2=()=>{if(B.id)return;let H=B.sgt(),o=H>=B.ls?"down":"up";if(B.vt=R2(B.vt,H),!F.root.classList.contains(`${_}--scrolling`))F.root.classList.add(`${_}--scrolling`);P=!0,B.ls=H,B.rfn(),h.emit("scroll",{scrollPosition:H,direction:o}),h.emit("velocity:change",{velocity:B.vt.velocity,reliable:B.vt.sampleCount>=n2});for(let i=0;i<n.length;i++)n[i](H,o);if(k)clearTimeout(k);k=setTimeout(()=>{F.root.classList.remove(`${_}--scrolling`),P=!1,B.vt.velocity=0,B.vt.sampleCount=0,h.emit("velocity:change",{velocity:0,reliable:!1}),Q0(),E();for(let i=0;i<e.length;i++)e[i]()},A?.idleTimeout??KJ)},S0=null;if(B.st.addEventListener("scroll",H2,{passive:!0}),y&&!Q&&!O)S0=(H)=>{if(a.viewportState.isCompressed)return;let o=F.viewport.scrollWidth>F.viewport.clientWidth;if(o&&Math.abs(H.deltaX)>Math.abs(H.deltaY))return;if(H.preventDefault(),o&&H.deltaX!==0)F.viewport.scrollLeft+=H.deltaX;let i=B.sgt(),J0=H.deltaY,K0=F.viewport.scrollHeight-F.viewport.clientHeight,Y0=Math.max(0,Math.min(i+J0,K0));if(Math.abs(Y0-i)<1){if(B.vt.velocity!==0)B.vt.velocity=0,B.vt.sampleCount=0,h.emit("velocity:change",{velocity:0,reliable:!1});return}B.sst(Y0),B.ls=Y0,B.vt=R2(B.vt,Y0),B.rfn();let B0=Y0>=i?"down":"up";if(h.emit("scroll",{scrollPosition:Y0,direction:B0}),!F.root.classList.contains(`${_}--scrolling`))F.root.classList.add(`${_}--scrolling`);if(P=!0,k)clearTimeout(k);k=setTimeout(()=>{F.root.classList.remove(`${_}--scrolling`),P=!1,B.vt.velocity=0,B.vt.sampleCount=0,h.emit("velocity:change",{velocity:0,reliable:!1}),Q0(),E();for(let N0=0;N0<e.length;N0++)e[N0]()},A?.idleTimeout??KJ)},B.wh=S0,F.viewport.addEventListener("wheel",S0,{passive:!1});else if(Q&&y)S0=(H)=>{if(H.deltaX)return;H.preventDefault(),F.viewport.scrollLeft+=H.deltaY},B.wh=S0,F.viewport.addEventListener("wheel",S0,{passive:!1});let x2=(H)=>{let i=H.target.closest("[data-index]");if(i){let J0=parseInt(i.dataset.index??"-1",10);if(J0>=0){let K0=B.dm?.getItem(J0)??B.it[J0];if(K0){if(K0.__groupHeader)return;h.emit("item:click",{item:K0,index:J0,event:H})}}}for(let J0=0;J0<t.length;J0++)t[J0](H)},nJ=(H)=>{let i=H.target.closest("[data-index]");if(i){let J0=parseInt(i.dataset.index??"-1",10);if(J0>=0){let K0=B.dm?.getItem(J0)??B.it[J0];if(K0){if(K0.__groupHeader)return;h.emit("item:dblclick",{item:K0,index:J0,event:H})}}}},m2=(H)=>{for(let o=0;o<U0.length;o++)U0[o](H)};F.items.addEventListener("click",x2),F.items.addEventListener("dblclick",nJ),F.root.addEventListener("keydown",m2);let k2=new ResizeObserver((H)=>{if(B.id)return;for(let o of H){let i=o.contentRect.height,J0=o.contentRect.width,K0=Q?J0:i,Y0=Q?B.cw:B.ch;if(B.cw=J0,B.ch=i,Math.abs(K0-Y0)>1){if(a.viewportState.containerSize=K0,B.ii)x0(),B.rfn(),h.emit("resize",{height:i,width:J0})}if(B.ii)for(let B0=0;B0<Z0.length;B0++)Z0[B0](J0,i)}});if(B.vre)k2.observe(F.viewport);let y2={dom:F,emitter:h,resolvedConfig:C,rawConfig:J,rendered:p,pool:l,itemState:m,sharedState:a,renderRange:R,isHorizontal:Q,classPrefix:_,contentSizeHandlers:V0,idleHandlers:e,afterScroll:n,clickHandlers:t,keydownHandlers:U0,resizeHandlers:Z0,destroyHandlers:W0,methods:j0,onScrollFrame:H2,resizeObserver:k2,applyTemplate:G0,updateContentSize:x0},E0=qJ(B,y2);B.dm=XJ(B,y2,E0),B.sc=YJ(B,y2);let d2=new Map;for(let H of W)if(H.methods)for(let o of H.methods){let i=d2.get(o);if(i)throw Error(`[vlist/builder] Method "${o}" is registered by both "${i}" and "${H.name}"`);d2.set(o,H.name)}for(let H of W)H.setup(E0);if(!j0.has("_getFocusedIndex")){let H=-1,o=`${_}-item--focused`,i=(Y0,B0)=>{let N0=B.vtf();if(B0<0||B0>=N0)return;H=B0,F.root.setAttribute("aria-activedescendant",`${Z}-item-${B0}`);let L0=Q?B.cw:B.ch;if(B.sst(B.gsp(B0,B.hc,L0,N0,"center")),B.ls=B.sgt(),B.rfn(),Y0>=0&&Y0!==B0)p.get(Y0)?.classList.remove(o);p.get(B0)?.classList.add(o)},J0=()=>{if(B.id)return;if(!F.root.matches(":focus-visible"))return;let Y0=B.vtf();if(Y0===0)return;i(-1,H>=0?Math.min(H,Y0-1):0)};F.root.addEventListener("focusin",J0);let K0=(Y0)=>{if(B.id)return;let B0=Y0.relatedTarget;if(B0&&F.root.contains(B0))return;if(H>=0)p.get(H)?.classList.remove(o);F.root.removeAttribute("aria-activedescendant")};F.root.addEventListener("focusout",K0),U0.push((Y0)=>{if(B.id)return;let B0=B.vtf();if(B0===0)return;let N0=H,L0=N0;switch(Y0.key){case"ArrowUp":L0=N0<=0?B0-1:N0-1;break;case"ArrowDown":L0=N0>=B0-1?0:N0+1;break;case"Home":L0=0;break;case"End":L0=B0-1;break;default:return}Y0.preventDefault(),i(N0,L0)}),W0.push(()=>{F.root.removeEventListener("focusin",J0),F.root.removeEventListener("focusout",K0)})}if(B.ii=!0,E0.state.isInitialized=!0,x0(),B.rfn(),b&&B.it.length>0){let H=B.gsp(B.it.length-1,B.hc,B.ch,B.it.length,"end");B.sst(H),B.ls=H,B.rfn()}let oJ=(H)=>{E0.dataManager.setItems(H,0,H.length)},iJ=b?(H)=>{let o=B.sab(2),i=B.it.length;if(E0.dataManager.setItems(H,i),o&&B.it.length>0){let J0=B.gsp(B.it.length-1,B.hc,B.ch,B.it.length,"end");B.sst(J0),B.ls=J0,B.rfn()}}:(H)=>{let o=B.it.length;E0.dataManager.setItems(H,o)},tJ=b?(H)=>{let o=B.sgt(),i=B.hc.getTotalSize(),J0=[...B.it];E0.dataManager.clear(),E0.dataManager.setItems([...H,...J0],0);let Y0=B.hc.getTotalSize()-i;if(Y0>0)B.sst(o+Y0),B.ls=o+Y0}:(H)=>{let o=[...B.it];E0.dataManager.clear(),E0.dataManager.setItems([...H,...o],0)},eJ=(H,o)=>{E0.dataManager.updateItem(H,o)},J1=(H)=>{E0.dataManager.removeItem(H)},Q1=async()=>{if(E0.dataManager.reload)await E0.dataManager.reload()},t0=()=>{if(u!==null)cancelAnimationFrame(u),u=null},j1=(H,o,i)=>{if(t0(),Math.abs(o-H)<1){B.sst(o),B.ls=o,B.rfn();return}let J0=performance.now(),K0=(Y0)=>{let B0=Y0-J0,N0=Math.min(B0/i,1),L0=H+(o-H)*C2(N0);if(B.sst(L0),B.ls=L0,B.rfn(),N0<1)u=requestAnimationFrame(K0);else u=null};u=requestAnimationFrame(K0)},q1=(H,o)=>{let{align:i,behavior:J0,duration:K0}=R0(o),Y0=B.vtf(),B0=H;if(D&&Y0>0)B0=(B0%Y0+Y0)%Y0;let N0=B.gsp(B0,B.hc,B.ch,Y0,i);if(J0==="smooth")j1(B.sgt(),N0,K0);else t0(),B.sst(N0)},X1=()=>B.sgt(),Y1=(H,o)=>{return h.on(H,o)},K1=(H,o)=>{h.off(H,o)},B1=()=>{if(B.id)return;if(B.id=!0,E0.state.isDestroyed=!0,F.items.removeEventListener("click",x2),F.root.removeEventListener("keydown",m2),B.st.removeEventListener("scroll",H2),k2.disconnect(),M)M.disconnect(),M=null;if(B.wh)F.viewport.removeEventListener("wheel",B.wh);if(k)clearTimeout(k);for(let H=0;H<W0.length;H++)W0[H]();for(let H of W)if(H.destroy)H.destroy();t0();for(let[,H]of p)H.remove(),l.release(H);p.clear(),l.clear(),h.clear(),F.root.remove()},c2={get element(){return F.root},get items(){if(j0.has("_getItems"))return j0.get("_getItems")();return B.it},get total(){if(j0.has("_getTotal"))return j0.get("_getTotal")();return B.vtf()},setItems:j0.has("setItems")?j0.get("setItems"):oJ,appendItems:j0.has("appendItems")?j0.get("appendItems"):iJ,prependItems:j0.has("prependItems")?j0.get("prependItems"):tJ,updateItem:j0.has("updateItem")?j0.get("updateItem"):eJ,removeItem:j0.has("removeItem")?j0.get("removeItem"):J1,reload:j0.has("reload")?j0.get("reload"):Q1,scrollToIndex:j0.has("scrollToIndex")?j0.get("scrollToIndex"):q1,cancelScroll:j0.has("cancelScroll")?j0.get("cancelScroll"):t0,getScrollPosition:j0.has("getScrollPosition")?j0.get("getScrollPosition"):X1,on:Y1,off:K1,destroy:B1};for(let[H,o]of j0){if(H.charCodeAt(0)===95||H==="setItems"||H==="appendItems"||H==="prependItems"||H==="updateItem"||H==="removeItem"||H==="reload"||H==="scrollToIndex"||H==="scrollToItem"||H==="cancelScroll"||H==="getScrollPosition")continue;c2[H]=o}return c2}Y2();var u0=(J,q,Q={},j="vlist",Y=!1)=>{let{autoHide:X=!0,autoHideDelay:U=1000,minThumbSize:N=30,showOnHover:_=!0,hoverZoneWidth:K=16,showOnViewportEnter:V=!0}=Q,T=0,A=0,y=0,D=0,b=!1,Z=!1,G=0,v=0,O=0,$=null,C=!1,W=null,d=null,S=Y?"width":"height",F=Y?"translateX":"translateY",h=Y?(m)=>m.clientX:(m)=>m.clientY,s=Y?"left":"top",x=document.createElement("div"),r=document.createElement("div"),l=_?document.createElement("div"):null,B=()=>{if(x.className=`${j}-scrollbar`,r.className=`${j}-scrollbar-thumb`,Y)x.classList.add(`${j}-scrollbar--horizontal`);if(x.appendChild(r),J.appendChild(x),l){if(l.className=`${j}-scrollbar-hover`,Y)l.classList.add(`${j}-scrollbar-hover--horizontal`),l.style.height=`${K}px`;else l.style.width=`${K}px`;J.appendChild(l)}},u=()=>{if($)clearTimeout($),$=null},k=()=>{if(!X)return;u(),$=setTimeout(I,U)},P=()=>{if(T<=A)return;if(u(),!C)x.classList.add(`${j}-scrollbar--visible`),C=!0;if(X&&!b&&!Z)k()},I=()=>{if(b||Z)return;x.classList.remove(`${j}-scrollbar--visible`),C=!1},R=(m,q0)=>{T=m,A=q0;let X0=T>A;if(x.style.display=X0?"":"none",!X0){I();return}let c=A/T;y=Math.max(N,c*A),r.style[S]=`${y}px`,D=A-y,f(O)},f=(m)=>{if(O=m,T<=A||D<=0)return;let q0=T-A,c=Math.min(1,Math.max(0,m/q0))*D;r.style.transform=`${F}(${c}px)`},a=(m)=>{if(m.target===r)return;let q0=x.getBoundingClientRect(),n=h(m)-q0[s]-y/2,t=Math.max(0,Math.min(n,D))/D,U0=T-A,Z0=t*U0;q(Z0),P()},p=(m)=>{m.preventDefault(),m.stopPropagation(),b=!0,G=h(m),v=O,u(),x.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",E),document.addEventListener("mouseup",L)},E=(m)=>{if(!b)return;let q0=h(m)-G,X0=D>0?q0/D:0,c=T-A,n=X0*c,e=Math.max(0,Math.min(v+n,c)),U0=e/c*D;if(r.style.transform=`${F}(${U0}px)`,d=e,W===null)W=requestAnimationFrame(()=>{if(d!==null)q(d);W=null})},L=()=>{if(b=!1,W!==null)cancelAnimationFrame(W),W=null;if(d!==null)q(d),d=null;if(x.classList.remove(`${j}-scrollbar--dragging`),X&&!Z)k();document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",L)},z=()=>{if(V)P()},M=()=>{if(!b){if(Z=!1,X)k()}},w=()=>{Z=!0,u(),P()},g=()=>{if(Z=!1,!b&&X)k()},Q0=()=>{if(u(),W!==null)cancelAnimationFrame(W),W=null;if(x.removeEventListener("click",a),x.removeEventListener("mouseenter",w),x.removeEventListener("mouseleave",g),r.removeEventListener("mousedown",p),J.removeEventListener("mouseenter",z),J.removeEventListener("mouseleave",M),document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",L),l){if(l.removeEventListener("mouseenter",w),l.removeEventListener("mouseleave",g),l.parentNode)l.parentNode.removeChild(l)}if(x.parentNode)x.parentNode.removeChild(x)};if(B(),x.addEventListener("click",a),x.addEventListener("mouseenter",w),x.addEventListener("mouseleave",g),r.addEventListener("mousedown",p),J.addEventListener("mouseenter",z),J.addEventListener("mouseleave",M),l)l.addEventListener("mouseenter",w),l.addEventListener("mouseleave",g);return{show:P,hide:I,updateBounds:R,updatePosition:f,isVisible:()=>C,destroy:Q0}};var FJ=(J)=>{let q=null;return{name:"withScrollbar",priority:30,setup(Q){let{dom:j,config:Y}=Q,{classPrefix:X,horizontal:U}=Y;if(q=u0(j.viewport,(K)=>Q.scrollController.scrollTo(K),J??{},X,U),!j.viewport.classList.contains(`${X}-viewport--custom-scrollbar`))j.viewport.classList.add(`${X}-viewport--custom-scrollbar`);let N=Q.getCachedCompression();q.updateBounds(N.virtualSize,Q.state.viewportState.containerSize);let _=q;Q.afterScroll.push((K,V)=>{_.updatePosition(K),_.show()}),Q.resizeHandlers.push((K,V)=>{if(_){let T=Q.getCachedCompression();_.updateBounds(T.virtualSize,Q.state.viewportState.containerSize)}}),Q.contentSizeHandlers.push(()=>{if(_){let K=Q.getCachedCompression();_.updateBounds(K.virtualSize,Q.state.viewportState.containerSize)}}),Q.destroyHandlers.push(()=>{if(_)_.destroy()})},destroy(){if(q)q.destroy(),q=null}}};var LJ=(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}},K2=(J,q)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let X=J.samples[0];return X.position=q,X.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=q,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=q,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let X=(J.sampleIndex-J.sampleCount+8)%8,U=J.samples[X],N=q-U.position,_=Q-U.time;J.velocity=_>0?N/_:0}return J.lastPosition=q,J.lastTime=Q,J},L1=(J)=>J.sampleCount>=3,TJ=(J,q={})=>{let{wheel:Q=!0,sensitivity:j=1,smoothing:Y=!1,idleTimeout:X=150,onScroll:U,onIdle:N,scrollElement:_,horizontal:K=!1}=q,V=!!_,T=0,A=0,y=V?K?window.innerWidth:window.innerHeight:K?J.clientWidth:J.clientHeight,D=q.compressed??!1,b=q.compression,Z=LJ(),G=!1,v=null,$=B2(()=>{let M=K?J.scrollLeft:J.scrollTop,w=M>=T?"down":"up";if(Z=K2(Z,M),T=M,U)U({scrollTop:T,direction:w,velocity:Z.velocity});h()}),W=B2(()=>{let M=J.getBoundingClientRect(),w=K?Math.max(0,-M.left):Math.max(0,-M.top),g=w>=T?"down":"up";if(Z=K2(Z,w),T=w,!G)G=!0;if(U)U({scrollTop:T,direction:g,velocity:Z.velocity});h()}),d=(M)=>{M.preventDefault()},S=(M)=>{if(M.deltaX)return;M.preventDefault(),J.scrollLeft+=M.deltaY},F=(M)=>{if(!D)return;M.preventDefault();let w=(K?M.deltaX||M.deltaY:M.deltaY)*j,g=T+w;if(Y)g=T+w*0.3;if(g=Math.max(0,Math.min(g,A)),g!==T){let m=g>=T?"down":"up";if(Z=K2(Z,g),T=g,!G)G=!0;if(U)U({scrollTop:T,direction:m,velocity:Z.velocity});h()}},h=()=>{if(v)clearTimeout(v);v=setTimeout(()=>{if(G=!1,Z=LJ(T),N)N()},X)},s=(M)=>{if(D)return;if(D=!0,b=M,A=M.virtualSize-y,V)return;if($.cancel(),J.removeEventListener("scroll",$),!Q)J.removeEventListener("wheel",d);else if(K)J.removeEventListener("wheel",S);if(K)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Q)J.addEventListener("wheel",F,{passive:!1});let w=K?J.scrollLeft:J.scrollTop;if(w>0){let g=K?b?.actualSize??J.scrollWidth:b?.actualSize??J.scrollHeight;T=w/g*A}if(K)J.scrollLeft=0;else J.scrollTop=0},x=()=>{if(!D)return;if(D=!1,V){b=void 0;return}if(J.removeEventListener("wheel",F),K)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",$,{passive:!0}),!Q)J.addEventListener("wheel",d,{passive:!1});else if(K)J.addEventListener("wheel",S,{passive:!1});if(b&&T>0){let w=T/A*(b.actualSize-y);if(K)J.scrollLeft=w;else J.scrollTop=w}b=void 0},r=()=>{if(V||D)return T;return K?J.scrollLeft:J.scrollTop},l=(M,w=!1)=>{let g=Math.max(0,Math.min(M,A||1/0));if(V){let Q0=J.getBoundingClientRect();if(K){let m=Q0.left+window.scrollX;window.scrollTo({left:m+g,behavior:w?"smooth":"auto"})}else{let m=Q0.top+window.scrollY;window.scrollTo({top:m+g,behavior:w?"smooth":"auto"})}}else if(D){if(g===T)return;let m=g>=T?"down":"up";if(Z=K2(Z,g),T=g,!G)G=!0;if(U)U({scrollTop:T,direction:m,velocity:Z.velocity});h()}else if(K)J.scrollTo({left:g,behavior:w?"smooth":"auto"});else J.scrollTo({top:g,behavior:w?"smooth":"auto"})},B=(M)=>{l(r()+M)},u=()=>{return r()<=0},k=(M=0)=>{let w=r(),g=V||D?A:K?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return w>=g-M},P=()=>{let M=r(),w=V||D?A:K?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(w<=0)return 0;return Math.min(1,Math.max(0,M/w))},I=(M)=>{if(M.compression)b=M.compression,A=b.virtualSize-y},R=()=>D,f=()=>Math.abs(Z.velocity),a=()=>L1(Z),p=()=>G,E=()=>V,L=(M)=>{if(y=M,b)A=b.virtualSize-y},z=()=>{if(v)clearTimeout(v);if(V)W.cancel(),window.removeEventListener("scroll",W);else $.cancel(),J.removeEventListener("scroll",$),J.removeEventListener("wheel",F),J.removeEventListener("wheel",d),J.removeEventListener("wheel",S)};if(V){if(D&&b)A=b.virtualSize-y;window.addEventListener("scroll",W,{passive:!0})}else if(D&&b){if(A=b.virtualSize-y,K)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Q)J.addEventListener("wheel",F,{passive:!1})}else{if(K)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",$,{passive:!0}),!Q)J.addEventListener("wheel",d,{passive:!1});else if(K)J.addEventListener("wheel",S,{passive:!1})}return{getScrollTop:r,scrollTo:l,scrollBy:B,isAtTop:u,isAtBottom:k,getScrollPercentage:P,getVelocity:f,isTracking:a,isScrolling:p,updateConfig:I,enableCompression:s,disableCompression:x,isCompressed:R,isWindowMode:E,updateContainerHeight:L,destroy:z}},B2=(J)=>{let q=null,Q=null,j=(...Y)=>{if(Q=Y,q===null)q=requestAnimationFrame(()=>{if(q=null,Q)J(...Q)})};return j.cancel=()=>{if(q!==null)cancelAnimationFrame(q),q=null},j};var T1=0.65,$1=0.5,b1=0.95,H1=0.1,k1=5,y1=100,$J=()=>{let J=null,q=0,Q=!1,j=0,Y=null,X=0,U=0,N=null,_=[];return{name:"withScale",priority:20,setup(K){let{dom:V,config:T}=K,{classPrefix:A,horizontal:y}=T,D=()=>{let v=K.getVirtualTotal(),O=T0(v,K.sizeCache);if(O.isCompressed&&!Q){Q=!0,K.scrollController.enableCompression(O),K.updateContentSize(O.virtualSize),K.setScrollFns(()=>q,(x)=>{if(q=x,j=x,Y!==null)cancelAnimationFrame(Y),Y=null});let $=()=>{let x=j-q;if(Math.abs(x)<$1)q=j,Y=null;else{q+=x*T1;let l=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize;q=Math.max(0,Math.min(q,l)),Y=requestAnimationFrame($)}K.scrollController.scrollTo(q)},C=V.viewport,W=(x)=>{x.preventDefault();let l=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+x.deltaY,l)),Y===null)Y=requestAnimationFrame($)};C.addEventListener("wheel",W,{passive:!1});let d=()=>{if(N!==null)cancelAnimationFrame(N),N=null},S=(x)=>{if(d(),Y!==null)cancelAnimationFrame(Y),Y=null;let r=x.touches[0];if(!r)return;let l=y?r.clientX:r.clientY;X=l,U=q,_=[{time:performance.now(),y:l}]},F=(x)=>{x.preventDefault();let r=x.touches[0];if(!r)return;let l=y?r.clientX:r.clientY,B=performance.now();if(_.push({time:B,y:l}),_.length>k1)_.shift();let u=X-l,P=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize,I=Math.max(0,Math.min(U+u,P));q=I,j=I,K.scrollController.scrollTo(I)},h=(x)=>{let r=performance.now(),l=_.filter((P)=>r-P.time<y1),B=0;if(l.length>=2){let P=l[0],I=l[l.length-1],R=I.time-P.time;if(R>0)B=(P.y-I.y)/R}if(_=[],Math.abs(B)<H1)return;let u=B*16,k=()=>{if(u*=b1,Math.abs(u)<0.5){N=null;return}let I=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize,R=q+u;if(R=Math.max(0,Math.min(R,I)),R<=0&&u<0||R>=I&&u>0){q=R,j=R,K.scrollController.scrollTo(R),N=null;return}q=R,j=R,K.scrollController.scrollTo(R),N=requestAnimationFrame(k)};N=requestAnimationFrame(k)};if(C.addEventListener("touchstart",S,{passive:!0}),C.addEventListener("touchmove",F,{passive:!1}),C.addEventListener("touchend",h,{passive:!0}),C.addEventListener("touchcancel",h,{passive:!0}),K.destroyHandlers.push(()=>{if(C.removeEventListener("wheel",W),C.removeEventListener("touchstart",S),C.removeEventListener("touchmove",F),C.removeEventListener("touchend",h),C.removeEventListener("touchcancel",h),d(),Y!==null)cancelAnimationFrame(Y),Y=null}),!V.viewport.querySelector(`.${A}-scrollbar`)){if(J=u0(V.viewport,(r)=>K.scrollController.scrollTo(r),{},A,y),!V.viewport.classList.contains(`${A}-viewport--custom-scrollbar`))V.viewport.classList.add(`${A}-viewport--custom-scrollbar`);J.updateBounds(O.virtualSize,K.state.viewportState.containerSize);let x=J;K.afterScroll.push((r,l)=>{if(x)x.updatePosition(r),x.show()}),K.resizeHandlers.push((r,l)=>{if(x){let B=K.getCachedCompression();x.updateBounds(B.virtualSize,K.state.viewportState.containerSize)}})}}else if(!O.isCompressed&&Q)Q=!1,K.scrollController.disableCompression(),K.updateContentSize(O.actualSize);else if(O.isCompressed)K.scrollController.updateConfig({compression:O}),K.updateContentSize(O.virtualSize);if(J)J.updateBounds(O.virtualSize,K.state.viewportState.containerSize);K.state.cachedCompression={state:O,totalItems:v}};K.updateCompressionMode=D;let b=K.getCachedCompression.bind(K);K.getCachedCompression=()=>{if(K.state.cachedCompression)return K.state.cachedCompression.state;return b()},K.setVisibleRangeFn((v,O,$,C,W)=>{Z=null,G=null;let d=T0(C,$);q2(v,O,$,C,d,W)}),K.setScrollToPosFn((v,O,$,C,W)=>{let d=T0(C,O);return X2(v,O,$,C,d,W)});let Z=null,G=null;K.setPositionElementFn((v,O)=>{let $=K.getVirtualTotal(),C=T0($,K.sizeCache);if(C.isCompressed){let W=K.scrollController.getScrollTop();if(Z===null||O<G)G=O,Z=Math.round(h0(O,W,K.sizeCache,$,K.state.viewportState.containerSize,C));let d=Z+K.sizeCache.getOffset(O)-K.sizeCache.getOffset(G),S=K.config.horizontal;v.style.transform=S?`translateX(${d}px)`:`translateY(${d}px)`}else{let W=Math.round(K.sizeCache.getOffset(O)),d=K.config.horizontal;v.style.transform=d?`translateX(${W}px)`:`translateY(${W}px)`}}),D(),K.destroyHandlers.push(()=>{if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null})},destroy(){if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null;if(N!==null)cancelAnimationFrame(N),N=null}}};var U2=(J={})=>{let{chunkSize:q=100,maxCachedItems:Q=5000,evictionBuffer:j=200,onEvict:Y}=J,X=new Map,U=0,N=0,_=(B)=>{let u=X.get(B);if(!u)u={items:Array(q),count:0,lastAccess:Date.now()},X.set(B,u);else u.lastAccess=Date.now();return u},K=(B)=>{return Math.floor(B/q)},V=(B)=>{return B%q},T=()=>U,A=(B)=>{U=B},y=(B)=>{if(B<0||B>=U)return;let u=K(B),k=X.get(u);if(!k)return;return k.items[V(B)]},D=(B)=>{if(B<0||B>=U)return!1;let u=K(B),k=X.get(u);if(!k)return!1;return k.items[V(B)]!==void 0},b=(B,u)=>{let k=K(B),P=_(k),I=V(B),R=P.items[I]===void 0;if(P.items[I]=u,R)P.count++,N++;if(B>=U)U=B+1},Z=(B,u)=>{for(let k=0;k<u.length;k++){let P=u[k];if(P!==void 0)b(B+k,P)}},G=(B)=>{if(B<0||B>=U)return!1;let u=K(B),k=X.get(u);if(!k)return!1;let P=V(B);if(k.items[P]===void 0)return!1;if(k.items[P]=void 0,k.count--,N--,k.count===0)X.delete(u);return!0},v=(B,u)=>{let k=[];for(let P=B;P<=u&&P<U;P++)k.push(y(P));return k},O=(B,u)=>{for(let k=B;k<=u&&k<U;k++)if(!D(k))return!1;return!0},$=()=>{let B=[],u=null,k=Array.from(X.keys()).sort((P,I)=>P-I);for(let P of k){let I=X.get(P);if(!I)continue;let R=P*q;for(let f=0;f<q;f++){let a=R+f;if(a>=U)break;if(I.items[f]!==void 0)if(u===null)u={start:a,end:a};else if(a===u.end+1)u.end=a;else B.push(u),u={start:a,end:a};else if(u!==null)B.push(u),u=null}}if(u!==null)B.push(u);return B},C=(B,u)=>{let k=[],P=null;for(let I=B;I<=u&&I<U;I++)if(!D(I))if(P===null)P={start:I,end:I};else P.end=I;else if(P!==null)k.push(P),P=null;if(P!==null)k.push(P);return k},W=(B)=>{return X.has(B)},d=(B)=>{let u=X.get(B);if(u)u.lastAccess=Date.now()},S=(B,u)=>{if(B>u||X.size===0)return;let k=Date.now(),P=K(Math.max(0,B)),I=K(Math.min(U-1,u));for(let R=P;R<=I;R++){let f=X.get(R);if(f)f.lastAccess=k}},F=(B,u)=>{if(N<=Q)return 0;let k=Math.max(0,B-j),P=Math.min(U-1,u+j),I=K(k),R=K(P),f=0,a=[];for(let[p,E]of X)if(p<I||p>R)f+=E.count,a.push(p),N-=E.count,X.delete(p);if(f>0&&Y)Y(f,a);return f},h=()=>{if(N<=Q)return 0;let B=Array.from(X.entries()).sort(([,P],[,I])=>P.lastAccess-I.lastAccess),u=0,k=[];for(let[P,I]of B){if(N<=Q)break;u+=I.count,N-=I.count,k.push(P),X.delete(P)}if(u>0&&Y)Y(u,k);return u},s=()=>{return{totalItems:U,cachedItems:N,cachedChunks:X.size,chunkSize:q,maxCachedItems:Q,memoryEfficiency:U>0?1-N/U:1}},x=()=>N,r=()=>{X.clear(),N=0};return{chunkSize:q,maxCachedItems:Q,getTotal:T,setTotal:A,get:y,has:D,set:b,setRange:Z,delete:G,getRange:v,isRangeLoaded:O,getLoadedRanges:$,findUnloadedRanges:C,getChunkIndex:K,isChunkLoaded:W,touchChunk:d,touchChunksForRange:S,evictDistant:F,evictToLimit:h,getStats:s,getCachedCount:x,clear:r,reset:()=>{r(),U=0}}},Z2=(J)=>{if(J.length===0)return[];let q=[...J].sort((j,Y)=>j.start-Y.start),Q=[{...q[0]}];for(let j=1;j<q.length;j++){let Y=q[j],X=Q[Q.length-1];if(Y.start<=X.end+1)X.end=Math.max(X.end,Y.end);else Q.push({...Y})}return Q},c0=(J,q,Q)=>{let j=Math.floor(J.start/Q)*Q,Y=Math.ceil((J.end+1)/Q)*Q-1,X={start:j,end:Y};if(q.length===0)return[X];let U=[],N=Z2(q),_=X.start;for(let K of N){if(K.end<_)continue;if(K.start>X.end)break;if(K.start>_)U.push({start:_,end:Math.min(K.start-1,X.end)});if(_=K.end+1,_>X.end)break}if(_<=X.end)U.push({start:_,end:X.end});return U};var N2=(J={})=>{let{maskCharacter:q=_J,maxSampleSize:Q=VJ}=J,j=[],Y=!1,X=0,U=(T)=>{if(Y||T.length===0)return;let A=Math.min(T.length,Q);for(let y=0;y<A;y++){let D=T[y];if(!D||typeof D!=="object")continue;let b={};for(let[Z,G]of Object.entries(D)){if(Z.startsWith("_")||Z==="id")continue;b[Z]=String(G??"").length}if(Object.keys(b).length>0)j.push(b)}Y=!0},N=()=>Y,_=(T)=>{let A={id:`${WJ}${X++}`,[v2]:!0,_index:T};if(j.length===0)return A.label=q.repeat(12),A;let y=j[T%j.length];for(let[D,b]of Object.entries(y))A[D]=q.repeat(Math.max(1,b));return A};return{analyzeStructure:U,hasAnalyzedStructure:N,generate:_,generateRange:(T,A)=>{let y=[];for(let D=T;D<=A;D++)y.push(_(D));return y},clear:()=>{j=[],Y=!1,X=0}}},z0=(J)=>{if(!J||typeof J!=="object")return!1;return J[v2]===!0},S2=(J)=>{return J.filter((q)=>!z0(q))};var R1=50,_2=(J={})=>{let{adapter:q,initialItems:Q,initialTotal:j,storage:Y,placeholder:X,pageSize:U=R1,onStateChange:N,onItemsLoaded:_,onItemsEvicted:K}=J,V=U2({...Y,onEvict:(c,n)=>{K?.(c),C()}}),T=null,A=()=>{if(!T)T=N2(X);return T},y=new Map,D=!1,b,Z=!0,G,v=[],O=0,$=new Map,C=()=>{N?.(l())},W=()=>{y.clear();let c=V.getLoadedRanges();for(let n of c)for(let e=n.start;e<=n.end;e++){let t=V.get(e);if(t&&!z0(t))y.set(t.id,e)}},d=(c,n)=>{if(!z0(n))y.set(n.id,c)},S=(c)=>{y.delete(c)},F=(c,n)=>{return`${c}-${n}`},h=()=>V.getTotal(),s=()=>V.getCachedCount(),x=()=>D,r=()=>Z,l=()=>({total:V.getTotal(),cached:V.getCachedCount(),isLoading:D,pendingRanges:v,error:b,hasMore:Z,cursor:G}),B=()=>V,u=()=>A(),k=(c)=>{let n=V.get(c);if(n!==void 0)return n;if(c>=0&&c<V.getTotal())return A().generate(c);return},P=(c)=>{let n=y.get(c);if(n===void 0)return;return V.get(n)},I=(c)=>{return y.get(c)??-1},R=(c)=>{let n=V.get(c);return n!==void 0&&!z0(n)},f=(c,n)=>{let e=[],t=V.getTotal(),U0=0,Z0=0;V.touchChunksForRange(c,Math.min(n,t-1));for(let V0=c;V0<=n&&V0<t;V0++){let W0=V.get(V0);if(W0!==void 0)e.push(W0),U0++;else e.push(A().generate(V0)),Z0++}return e},a=(c)=>{V.setTotal(c),Z=V.getCachedCount()<c,C()},p=(c,n=0,e)=>{if(T&&!T.hasAnalyzedStructure()&&c.length>0)T.analyzeStructure(c);for(let t=0;t<c.length;t++){let U0=c[t];if(U0!==void 0){let Z0=n+t;V.set(Z0,U0),d(Z0,U0)}}if(e!==void 0)V.setTotal(e);else if(n+c.length>V.getTotal())V.setTotal(n+c.length);if(V.getCachedCount()>=V.getTotal()&&V.getTotal()>0)Z=!1;_?.(c,n,V.getTotal()),C()},E=(c,n)=>{let e=y.get(c);if(e===void 0)return!1;let t=V.get(e);if(!t)return!1;let U0={...t,...n};if(V.set(e,U0),n.id!==void 0&&n.id!==c)S(c),d(e,U0);return C(),!0},L=(c)=>{let n=y.get(c);if(n===void 0)return!1;V.delete(n),S(c);let e=V.getTotal();if(e>0)V.setTotal(e-1);return C(),!0},z=async(c,n)=>{if(!q)return;let e=F(c,n);if($.has(e))return;let t=V.getLoadedRanges(),U0=c0({start:c,end:n},t,V.chunkSize);if(U0.length===0)return;let Z0=V.chunkSize,V0=[];for(let j0 of U0){let M0=Math.floor(j0.start/Z0),O0=Math.floor(j0.end/Z0);for(let D0=M0;D0<=O0;D0++){let $0=D0*Z0,G0=$0+Z0-1,b0=F($0,G0);if(!V0.some((v0)=>v0.start===$0)&&!$.has(b0))V0.push({start:$0,end:G0})}}let W0=[];for(let j0 of U0){let M0=Math.floor(j0.start/Z0),O0=Math.floor(j0.end/Z0);for(let D0=M0;D0<=O0;D0++){let $0=D0*Z0,G0=$0+Z0-1,b0=F($0,G0);if($.has(b0)){let v0=$.get(b0);if(!W0.includes(v0))W0.push(v0)}}}for(let j0 of V0){let M0=F(j0.start,j0.end),O0=(async()=>{v.push(j0),D=!0,b=void 0,C();try{let D0=j0.end-j0.start+1,$0={offset:j0.start,limit:D0,cursor:void 0},G0=await q.read($0);if(p(G0.items,j0.start,G0.total),G0.cursor)G=G0.cursor;let b0=j0.start+G0.items.length;if(b0>=O){if(O=b0,G0.hasMore!==void 0)Z=G0.hasMore;else if(G0.total!==void 0)Z=b0<G0.total}}catch(D0){b=D0 instanceof Error?D0:Error(String(D0))}finally{$.delete(M0),v=v.filter((D0)=>D0.start!==j0.start||D0.end!==j0.end),D=$.size>0,C()}})();$.set(M0,O0),W0.push(O0)}await Promise.all(W0)},M=async(c,n)=>{if(V.isRangeLoaded(c,n))return;await z(c,n)},w=async()=>{if(!q)return;await z(0,U-1)},g=async()=>{if(!q||D||!Z)return!1;let c=V.getCachedCount(),n=V.getTotal(),e=c,t=Math.min(e+U-1,n>0?n-1:e+U-1);if(e>=n&&n>0)return Z=!1,!1;return await z(e,t),V.getCachedCount()>c},Q0=async()=>{if(V.clear(),V.setTotal(0),y.clear(),T)T.clear();$.clear(),v=[],D=!1,G=void 0,Z=!0,O=0,b=void 0,C()},m=(c,n)=>{if(V.evictDistant(c,n)>0)W()},q0=()=>{V.clear(),y.clear(),G=void 0,b=void 0,v=[],D=!1,C()},X0=()=>{if(V.reset(),y.clear(),T)T.clear();G=void 0,Z=!0,O=0,b=void 0,v=[],D=!1,C()};if(Q&&Q.length>0)p(Q,0,j??Q.length);else if(j!==void 0)V.setTotal(j),C();return{getState:l,getTotal:h,getCached:s,getIsLoading:x,getHasMore:r,getStorage:B,getPlaceholders:u,getItem:k,getItemById:P,getIndexById:I,isItemLoaded:R,getItemsInRange:f,setTotal:a,setItems:p,updateItem:E,removeItem:L,loadRange:z,ensureRange:M,loadInitial:w,loadMore:g,reload:Q0,evictDistant:m,clear:q0,reset:X0}};var bJ=(J)=>{let{adapter:q,loading:Q,storage:j,total:Y,autoLoad:X=!0}=J,U=Q?.cancelThreshold??UJ,N=Q?.preloadThreshold??ZJ,_=Q?.preloadAhead??NJ;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(K){let{emitter:V}=K,T=K.config.reverse,A=_2({adapter:q,...Y!==void 0&&{initialTotal:Y},pageSize:j?.chunkSize??p0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(K.state.isInitialized){let S=K.getVirtualTotal();K.sizeCache.rebuild(S),K.updateCompressionMode();let F=K.getCachedCompression();K.state.viewportState.totalSize=F.virtualSize,K.state.viewportState.actualSize=F.actualSize,K.state.viewportState.isCompressed=F.isCompressed,K.state.viewportState.compressionRatio=F.ratio,K.updateContentSize(F.virtualSize),K.renderIfNeeded()}},onItemsLoaded:(S,F,h)=>{if(K.state.isInitialized)K.forceRender(),V.emit("load:end",{items:S,total:h,offset:F})}});K.replaceDataManager(A);let y=null,D=null,b=0,Z=!1,G=null,v=120,O=(S=!1)=>{if(Z=!1,D=null,S)y=null;if(G!==null)clearTimeout(G),G=null},$=()=>{if(D){let S=D;D=null,K.dataManager.ensureRange(S.start,S.end).catch((F)=>{V.emit("error",{error:F,context:"ensureRange"})})}};K.afterScroll.push((S,F)=>{if(K.state.isDestroyed)return;let h=K.scrollController.getVelocity(),x=K.scrollController.isTracking()&&h<=U;if(b>U&&h<=U)Z=!0;else if(Z&&h>U)O();if(Z&&h<0.5)O(!0);if(b=h,(K.scrollController.isAtTop()||K.scrollController.isAtBottom())&&(Z||D))O(!0),x=!0;let l=Z&&h>0.5;if(x&&!K.dataManager.getIsLoading()&&K.dataManager.getHasMore()){if(T){if(S<w2)V.emit("load:start",{offset:K.dataManager.getCached(),limit:p0}),K.dataManager.loadMore().catch((k)=>{V.emit("error",{error:k,context:"loadMore"})})}else if(K.state.viewportState.totalSize-S-K.state.viewportState.containerSize<w2)V.emit("load:start",{offset:K.dataManager.getCached(),limit:p0}),K.dataManager.loadMore().catch((P)=>{V.emit("error",{error:P,context:"loadMore"})})}let{renderRange:B}=K.state.viewportState;if(!y||B.start!==y.start||B.end!==y.end){if(y={start:B.start,end:B.end},x&&!l){if(D=null,G!==null)clearTimeout(G),G=null;let{start:k,end:P}=B,I=K.getVirtualTotal();if(h>N)if(F==="down")P=Math.min(B.end+_,I-1);else k=Math.max(B.start-_,0);K.dataManager.ensureRange(k,P).catch((R)=>{V.emit("error",{error:R,context:"ensureRange"})})}else if(D={start:B.start,end:B.end},l){if(G!==null)clearTimeout(G);G=setTimeout(()=>{G=null,$(),O()},v)}}});let C=200,W=null;K.afterScroll.push((S,F)=>{if(W!==null)clearTimeout(W);W=setTimeout(()=>{W=null,$(),O()},C)}),K.destroyHandlers.push(()=>{if(W!==null)clearTimeout(W),W=null;O()});let d=()=>{if(K.state.isDestroyed)return;y=null;let{renderRange:S}=K.state.viewportState;if(S.end>0)K.dataManager.ensureRange(S.start,S.end).catch((F)=>{V.emit("error",{error:F,context:"ensureRange"})});$()};if(window.addEventListener("online",d),K.destroyHandlers.push(()=>{window.removeEventListener("online",d)}),V.on("load:start",()=>{K.dom.root.setAttribute("aria-busy","true")}),V.on("load:end",()=>{K.dom.root.removeAttribute("aria-busy")}),K.methods.set("loadVisibleRange",async()=>{y=null,D=null,K.forceRender();let{renderRange:S}=K.state.viewportState;if(S.end>0)V.emit("load:start",{offset:S.start,limit:S.end-S.start+1}),await K.dataManager.ensureRange(S.start,S.end)}),K.methods.set("reload",async()=>{y=null,D=null,K.invalidateRendered(),await K.dataManager.reload(),V.emit("load:start",{offset:0,limit:p0}),await K.dataManager.loadInitial(),K.forceRender();let{renderRange:S}=K.state.viewportState;if(S.end>0)await K.dataManager.ensureRange(S.start,S.end)}),X)V.emit("load:start",{offset:0,limit:p0}),K.dataManager.loadInitial().catch((S)=>{V.emit("error",{error:S,context:"loadInitial"})});else if(Y!==void 0)K.dataManager.setTotal(Y)}}};var HJ=()=>{let J=null;return{name:"withPage",priority:5,setup(q){let{dom:Q,state:j,config:Y,emitter:X}=q;if(Q.root.style.overflow="visible",Q.root.style.height="auto",Y.horizontal)Q.viewport.style.overflowX="visible",Q.viewport.style.overflowY="visible";else Q.viewport.style.overflow="visible";Q.viewport.classList.remove(`${Y.classPrefix}-viewport--custom-scrollbar`),q.disableViewportResize(),q.disableWheelHandler(),q.setScrollTarget(window),q.setScrollFns(()=>{let K=Q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-K.left);else return Math.max(0,-K.top)},(K)=>{let V=Q.viewport.getBoundingClientRect();if(Y.horizontal){let T=V.left+window.scrollX;window.scrollTo(T+K,window.scrollY)}else{let T=V.top+window.scrollY;window.scrollTo(window.scrollX,T+K)}}),q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:U,innerWidth:N}=window,_=()=>{let{innerWidth:K,innerHeight:V}=window,T=Y.horizontal?K:V,A=Y.horizontal?N:U;if(Math.abs(T-A)<=1)return;U=V,N=K,j.viewportState.containerSize=V,X.emit("resize",{width:K,height:V});for(let y=0;y<q.resizeHandlers.length;y++)q.resizeHandlers[y](K,V);q.renderIfNeeded()};window.addEventListener("resize",_,{passive:!0}),J=()=>{window.removeEventListener("resize",_)},q.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var f2=(J,q)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].headerLayoutIndex<=q)Q=Y;else j=Y-1}return Q},kJ=(J,q)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].firstDataIndex<=q)Q=Y;else j=Y-1}return Q},yJ=(J,q)=>{if(J===0)return[];let Q=[],j=q(0),Y=0,X=0;for(let U=1;U<J;U++){let N=q(U);if(N!==j){let _=U-Y;Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:Y,count:_}),X=X+1+_,j=N,Y=U}}return Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:Y,count:J-Y}),Q},l0=(J,q)=>{if(J.length===0||q.length===0)return[];let Q=J.length+q.length,j=Array(Q),Y=0;for(let X of q){j[Y]={id:`__group_header_${X.groupIndex}`,__groupHeader:!0,groupKey:X.key,groupIndex:X.groupIndex},Y++;for(let U=0;U<X.count;U++)j[Y]=J[X.firstDataIndex+U],Y++}return j},a0=(J,q)=>{let Q=typeof q==="number"?(j)=>q:q;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return Q(Y.dataIndex)}},V2=(J,q)=>{let Q=yJ(J,q.getGroupForIndex),j=J+Q.length,Y=q.headerHeight;return{get totalEntries(){return j},get groupCount(){return Q.length},get groups(){return Q},getEntry:(A)=>{if(Q.length===0)return{type:"item",dataIndex:A,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let y=f2(Q,A),D=Q[y];if(A===D.headerLayoutIndex)return{type:"header",group:D};let b=A-D.headerLayoutIndex-1;return{type:"item",dataIndex:D.firstDataIndex+b,group:D}},layoutToDataIndex:(A)=>{if(Q.length===0)return A;let y=f2(Q,A),D=Q[y];if(A===D.headerLayoutIndex)return-1;let b=A-D.headerLayoutIndex-1;return D.firstDataIndex+b},dataToLayoutIndex:(A)=>{if(Q.length===0)return A;let y=kJ(Q,A),D=Q[y],b=A-D.firstDataIndex;return D.headerLayoutIndex+1+b},getGroupAtLayoutIndex:(A)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=f2(Q,A);return Q[y]},getGroupAtDataIndex:(A)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=kJ(Q,A);return Q[y]},getHeaderHeight:typeof Y==="number"?(A)=>Y:(A)=>{let y=Q[A];if(!y)return 0;return Y(y.key,A)},rebuild:(A)=>{Q=yJ(A,q.getGroupForIndex),j=A+Q.length}}};var W2=(J,q,Q,j,Y,X=!1,U=0)=>{let N=document.createElement("div");if(N.className=`${Y}-sticky-header`,N.setAttribute("role","presentation"),N.setAttribute("aria-hidden","true"),N.style.position="absolute",N.style.zIndex="5",N.style.pointerEvents="none",N.style.willChange="transform",N.style.overflow="hidden",X)N.style.top="0",N.style.bottom="0",N.style.left=U?`${U}px`:"0";else N.style.top=U?`${U}px`:"0",N.style.left="0",N.style.right="0";J.insertBefore(N,J.firstChild);let _=-1,K=!1,V=0,T=(G)=>{if(G===_)return;_=G;let v=q.groups;if(G<0||G>=v.length){N.textContent="";return}let O=v[G],$=j.headerTemplate(O.key,O.groupIndex),C=q.getHeaderHeight(G);if(X)N.style.width=`${C}px`;else N.style.height=`${C}px`;if(typeof $==="string")N.innerHTML=$;else N.replaceChildren($)},A=(G)=>{let v=q.groups;if(v.length===0){D();return}let O=Q.getOffset(v[0].headerLayoutIndex);if(G<O){D();return}let $=0,C=v.length-1;while($<C){let h=$+C+1>>>1;if(Q.getOffset(v[h].headerLayoutIndex)<=G)$=h;else C=h-1}let W=$;if(!K)y();T(W);let d=q.getHeaderHeight(W),S=0,F=W+1;if(F<v.length){let s=Q.getOffset(v[F].headerLayoutIndex)-G;if(s<d)S=s-d}if(S!==V)if(V=S,S===0)N.style.transform="";else{let h=Math.round(S);N.style.transform=X?`translateX(${h}px)`:`translateY(${h}px)`}},y=()=>{if(K)return;K=!0,N.style.display=""},D=()=>{if(!K)return;K=!1,N.style.display="none",_=-1,V=0,N.style.transform=""},b=()=>{let G=_;if(_=-1,G>=0)T(G)},Z=()=>{N.remove(),_=-1,K=!1};return N.style.display="none",{update:A,refresh:b,show:y,hide:D,destroy:Z}};var PJ=(J,q,Q,j,Y,X)=>{if(j===0||q===0)return X.start=0,X.end=-1,X;let U=Q.indexAtOffset(J),N=Q.indexAtOffset(J+q);if(N<j-1)N++;return X.start=Math.max(0,U),X.end=Math.min(j-1,Math.max(0,N)),X},RJ=(J,q,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q),j},zJ=(J,q,Q,j,Y,X)=>{if(j===0)return 0;let U=Math.max(0,Math.min(J,j-1)),N=q.getOffset(U),_=q.getSize(U),K=q.getTotalSize(),V=Math.max(0,K-Q),T;switch(X){case"center":T=N-Q/2+_/2;break;case"end":T=N-Q+_;break;case"start":default:T=N;break}return Math.max(0,Math.min(T,V))},CJ=(J,q,Q)=>{if(Q&&Q.isCompressed)return Q.virtualSize;return q.getTotalSize()},wJ=(J,q)=>{return q.getTotalSize()},vJ=(J,q)=>{return q.getOffset(J)},SJ=(J,q,Q)=>{let j=Math.max(0,q-Q);return Math.max(0,Math.min(J,j))};var P0=(J,q,Q,j,Y="start",X,U=zJ)=>{return U(J,q,Q,j,X,Y)},fJ=(J,q)=>{return J.start===q.start&&J.end===q.end},IJ=(J,q)=>{return J>=q.start&&J<=q.end},pJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var hJ=(J,q)=>{let Q=[],j=[];for(let Y=J.start;Y<=J.end;Y++)if(Y<q.start||Y>q.end)j.push(Y);for(let Y=q.start;Y<=q.end;Y++)if(Y<J.start||Y>J.end)Q.push(Y);return{add:Q,remove:j}};Y2();var gJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let q=null,Q=null,j=[],Y=[];return{name:"withGroups",priority:10,setup(X){let{dom:U,config:N,rawConfig:_}=X,{classPrefix:K}=N,T=_.item.height;j=_.items?[..._.items]:[];let A=j.length,y={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};q=V2(A,y),Y=l0(j,q.groups);let D=a0(q,T);X.setSizeConfig(D),X.rebuildSizeCache(Y.length),X.dataManager.setItems(Y,0,Y.length);let b=_.item.template,{headerTemplate:Z}=J,G=(x,r,l)=>{if(C0(x))return Z(x.groupKey,x.groupIndex);return b(x,r,l)},v=X.methods.get("_getGridLayout"),O=X.methods.get("_replaceGridRenderer"),$=X.methods.get("_updateGridLayoutForGroups"),C=X.methods.get("_getTableLayout"),W=X.methods.get("_updateTableForGroups"),d=X.methods.get("_getTableHeaderHeight");if(v&&O){if($)$((B)=>{let u=Y[B];return!!(u&&C0(u))});let{createGridRenderer:x}=(D2(),W1(uJ)),r=v(),l=x(U.items,G,X.sizeCache,r,K,X.getContainerWidth(),()=>X.dataManager.getTotal(),N.ariaIdPrefix);O(l)}else if(C&&W)W((x)=>C0(x),J.headerTemplate);else X.replaceTemplate(G);let S=d?d():0;if(U.root.classList.add(`${K}--grouped`),J.sticky!==!1){Q=W2(U.root,q,X.sizeCache,{...y,sticky:y.sticky??!1},K,N.horizontal,S);let x=Q;X.afterScroll.push((r,l)=>{x.update(r)}),Q.update(X.scrollController.getScrollTop())}let F=()=>{if(!q)return;q.rebuild(j.length),Y=l0(j,q.groups);let x=a0(q,T);if(X.setSizeConfig(x),X.rebuildSizeCache(Y.length),X.dataManager.setItems(Y,0,Y.length),Q)Q.refresh()};X.methods.set("setItems",(x)=>{j=x.slice(),F()}),X.methods.set("appendItems",(x)=>{j.push(...x),F()}),X.methods.set("prependItems",(x)=>{j.unshift(...x),F()}),X.methods.set("removeItem",(x)=>{j=j.filter((r)=>r.id!==x),F()});let{animateScroll:h,cancelScroll:s}=f0(X.scrollController,X.renderIfNeeded);X.methods.set("scrollToIndex",(x,r)=>{let l=q.dataToLayoutIndex(x),{align:B,behavior:u,duration:k}=R0(r),P=X.dataManager.getTotal(),I=P0(l,X.sizeCache,X.state.viewportState.containerSize,P,B,X.getCachedCompression());if(u==="smooth")h(X.scrollController.getScrollTop(),I,k);else s(),X.scrollController.scrollTo(I)}),X.methods.set("_getItems",()=>j),X.methods.set("_getTotal",()=>j.length),X.destroyHandlers.push(()=>{if(s(),Q)Q.destroy(),Q=null;U.root.classList.remove(`${K}--grouped`)})},destroy(){if(Q)Q.destroy(),Q=null}}};var G2=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},X=(D)=>{if(D<=0)return 0;if(!j)return Math.ceil(D/q);let b=0,Z=0,G=0;for(let v=0;v<D;v++)if(j(v)){if(G++,Z>0)b++,Z=0;b++,Z=0}else if(Z++,Z>=q)b++,Z=0;if(Z>0)b++;return b},U=(D)=>{return Y.row=N(D),Y.col=_(D),Y},N=(D)=>{if(!j)return Math.floor(D/q);let b=0,Z=0;for(let G=0;G<=D;G++)if(j(G)){if(Z>0)b++,Z=0;if(G===D)return b;b++,Z=0}else{if(G===D)return b;if(Z++,Z>=q)b++,Z=0}return console.warn(`⚠️ getRow(${D}) fell through - returning ${b}`),b},_=(D)=>{if(!j)return D%q;if(j(D))return 0;let b=0;for(let Z=0;Z<=D;Z++)if(j(Z))b=0;else{if(Z===D)return b;if(b++,b>=q)b=0}return b},K=(D,b,Z)=>{if(Z<=0)return{start:0,end:-1};if(!j){let C=Math.max(0,D*q),W=Math.min(Z-1,(b+1)*q-1);return{start:C,end:W}}let G=-1,v=-1,O=0,$=0;for(let C=0;C<Z;C++){if(j(C)){if($>0)O++,$=0;if(O>=D&&O<=b){if(G===-1)G=C;v=C}O++,$=0}else{if(O>=D&&O<=b){if(G===-1)G=C;v=C}if($++,$>=q)O++,$=0}if(O>b&&$===0)break}if(G===-1)return{start:0,end:-1};return{start:G,end:v}},V=(D,b,Z)=>{if(b<0||b>=q)return-1;let G=D*q+b;if(G<0||G>=Z)return-1;return G},T=(D)=>{let b=(q-1)*Q;return Math.max(0,(D-b)/q)};return{get columns(){return q},get gap(){return Q},update:(D)=>{if(D.columns!==void 0)q=Math.max(1,Math.floor(D.columns));if(D.gap!==void 0)Q=D.gap;if(D.isHeaderFn!==void 0)j=D.isHeaderFn},getTotalRows:X,getPosition:U,getRow:N,getCol:_,getItemRange:K,getItemIndex:V,getColumnWidth:T,getColumnOffset:(D,b)=>{let Z=T(b);return D*(Z+Q)}}};D2();var w1=new Set,xJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let q=null,Q=null;return{name:"withGrid",priority:10,setup(j){let{dom:Y,emitter:X,config:U,rawConfig:N}=j,{classPrefix:_}=U;if(U.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let K=U.horizontal,V=()=>K?Y.viewport.clientHeight:j.getContainerWidth(),T=N.items?.some((R)=>R.__groupHeader===!0),A={columns:J.columns,gap:J.gap??0};if(T)A.isHeaderFn=(R)=>{let f=j.dataManager.getItem(R);return!!(f&&f.__groupHeader===!0)};q=G2(A);let y=q.gap;j.setVirtualTotalFn(()=>{let R=j.dataManager.getTotal();return q.getTotalRows(R)});let D=N.item,b=U.horizontal?D.width:D.height,Z={containerWidth:V(),columns:q.columns,gap:q.gap},G={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof b==="function")j.setSizeConfig((R)=>{let f=Z.containerWidth-2,a=(Z.columns-1)*Z.gap;return G.containerWidth=Z.containerWidth,G.columns=Z.columns,G.gap=Z.gap,G.columnWidth=(f-a)/Z.columns,G.row=q.getRow(R),G.column=q.getCol(R),G.totalRows=q.getTotalRows(j.dataManager.getTotal()),G.totalColumns=Z.columns,b(R,G)+Z.gap});else if(y>0)j.setSizeConfig(b+y);if(j.rebuildSizeCache(),y>0){let R=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let f=R();return f>0?f-Z.gap:0}}Y.root.classList.add(`${_}--grid`);let v=V(),O=N.item.template,$=()=>{Q=r0(Y.items,O,j.sizeCache,q,_,v,()=>j.dataManager.getTotal(),U.ariaIdPrefix,U.horizontal),j.replaceRenderer(Q)};$(),j.methods.set("_getGridLayout",()=>q),j.methods.set("_getGridConfig",()=>A),j.methods.set("_replaceGridRenderer",(R)=>{Q=R}),j.methods.set("_updateGridLayoutForGroups",(R)=>{q.update({isHeaderFn:R});let f=j.dataManager.getTotal(),a=0;for(let p=0;p<f;p++)if(q.getCol(p)===0){let E=j.sizeCache.getSize(p);a+=E}if(j.sizeCache.getTotalSize=()=>a,U.horizontal)j.dom.content.style.width=`${a}px`;else j.dom.content.style.height=`${a}px`;$()}),j.methods.set("updateGrid",(R)=>{if(R.columns!==void 0){if(!Number.isInteger(R.columns)||R.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");A.columns=R.columns}if(R.gap!==void 0){if(R.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");A.gap=R.gap}if(q)q.update(A);let f=V();if(Z.containerWidth=f,Z.columns=A.columns,Z.gap=A.gap??0,Q)Q.updateContainerWidth(f);j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let a=0;a<j.contentSizeHandlers.length;a++)j.contentSizeHandlers[a]();if(Q)Q.clear();j.forceRender()});let C=null,W=null,d=!1,S=()=>{if(d)return;d=!0,C=j.methods.get("_getSelectedIds")??null,W=j.methods.get("_getFocusedIndex")??null},F=-1,h=-1,s=!0,x=U.overscan??3,r={start:0,end:0},l={start:0,end:0},B=()=>{if(j.state.isDestroyed)return;let R=j.scrollController.getScrollTop(),f=j.state.viewportState.containerSize;if(!s&&R===F&&f===h)return;F=R,h=f,s=!1;let a=j.getVirtualTotal();if(a===0||f===0)r.start=0,r.end=0;else{r.start=Math.max(0,j.sizeCache.indexAtOffset(R));let q0=j.sizeCache.indexAtOffset(R+f);if(q0<a-1)q0++;r.end=Math.min(a-1,Math.max(0,q0))}l.start=Math.max(0,r.start-x),l.end=Math.min(a-1,r.end+x);let p=j.state.viewportState;p.scrollPosition=R,p.visibleRange.start=r.start,p.visibleRange.end=r.end,p.renderRange.start=l.start,p.renderRange.end=l.end;let E=j.state.lastRenderRange,L=p.isCompressed,z=j.dataManager.getTotal(),M=q.getItemRange(l.start,l.end,z),w=j.dataManager.getItemsInRange(M.start,M.end),g=L?j.getCompressionContext():void 0;S();let Q0=C?C():w1,m=W?W():-1;if(Q.render(w,M,Q0,m,g),E.start!==l.start||E.end!==l.end)E.start=l.start,E.end=l.end,X.emit("range:change",{range:{start:l.start,end:l.end}})},u=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,s=!0,B()};j.setRenderFns(B,u);let k=typeof b==="function";j.resizeHandlers.push((R,f)=>{let a=K?f:R;if(Z.containerWidth=a,Q)Q.updateContainerWidth(a);if(k){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let p=0;p<j.contentSizeHandlers.length;p++)j.contentSizeHandlers[p]();if(Q)Q.clear();j.forceRender()}});let{animateScroll:P,cancelScroll:I}=f0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",I),j.methods.set("scrollToIndex",(R,f)=>{let a=Math.floor(R/J.columns),{align:p,behavior:E,duration:L}=R0(f),z=j.dataManager.getState(),M=q.getTotalRows(z.total),w=Math.max(0,Math.min(a,M-1)),g=P0(w,j.sizeCache,j.state.viewportState.containerSize,M,p,j.getCachedCompression());if(E==="smooth")P(j.scrollController.getScrollTop(),g,L);else I(),j.scrollController.scrollTo(g)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.idleHandlers.push(()=>{if(Q)Q.sortDOM()}),j.destroyHandlers.push(()=>{if(I(),Q)Q.destroy(),Q=null;Y.root.classList.remove(`${_}--grid`)})},destroy(){if(Q)Q.destroy(),Q=null}}};D2();var M2=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.containerSize,Y=0,X=[],U=()=>{let Z=(q-1)*Q;Y=Math.max(0,(j-Z)/q),X=Array(q);let G=Y+Q;for(let v=0;v<q;v++)X[v]=v*G};U();let N=[],_=0,K=[],V=(Z)=>{let G=0,v=Z[0];for(let O=1;O<Z.length;O++){let $=Z[O];if($<v)v=$,G=O}return G},T=(Z,G)=>{if(Z<=0)return _=0,N=[],[];let v=Array(q).fill(0),O=Array(q);for(let W=0;W<q;W++)O[W]=[];let $=Array(Z);for(let W=0;W<Z;W++){let d=V(v),S=G(W),F=v[d];$[W]={index:W,x:X[d],y:F,lane:d,size:S,crossSize:Y},O[d].push(W),v[d]=F+S+Q}N=O;let C=0;for(let W=0;W<q;W++){let d=v[W],S=d>0?d-Q:0;if(S>C)C=S}return _=C,$},A=(Z)=>{if(Z.length===0)return _>0?_:0;if(_>0)return _;let G=Array(q).fill(0);for(let O of Z){let $=O.y+O.size,C=G[O.lane];if($>C)G[O.lane]=$}let v=0;for(let O=0;O<q;O++)if(G[O]>v)v=G[O];return v},y=(Z,G,v)=>{if(Z.length===0||v<=G)return K.length=0,K;if(N.length===0||N.length!==q)return D(Z,G,v);K.length=0;for(let O=0;O<q;O++){let $=N[O],C=$.length;if(C===0)continue;let W=0,d=C;while(W<d){let S=W+d>>>1,F=Z[$[S]];if(F.y+F.size<=G)W=S+1;else d=S}for(let S=W;S<C;S++){let F=Z[$[S]];if(F.y>=v)break;K.push(F)}}return K},D=(Z,G,v)=>{let O=[];for(let $ of Z)if($.y+$.size>G&&$.y<v)O.push($);return O};return{get columns(){return q},get gap(){return Q},get containerSize(){return j},update:(Z)=>{let G=!1;if(Z.columns!==void 0){let v=Math.max(1,Math.floor(Z.columns));if(v!==q)q=v,G=!0}if(Z.gap!==void 0&&Z.gap!==Q)Q=Z.gap,G=!0;if(Z.containerSize!==void 0&&Z.containerSize!==j)j=Z.containerSize,G=!0;if(G)U()},calculateLayout:T,getTotalSize:A,getVisibleItems:y}};var v1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let U=document.createElement("div");return U.setAttribute("role","option"),U},release:(X)=>{if(X.remove(),q.length<J)X.className="",X.textContent="",X.removeAttribute("style"),X.removeAttribute("data-index"),X.removeAttribute("data-id"),X.removeAttribute("data-lane"),q.push(X)},clear:()=>{q.length=0}}},S1=2,O2=(J,q,Q,j=!1,Y,X)=>{let U=v1(),N=new Map,_=new Set,K=0,V="",T=-1,A={selected:!1,focused:!1},y=(h,s)=>{return A.selected=h,A.focused=s,A},D=`${Q}-item ${Q}-masonry-item`,b=`${Q}-item--selected`,Z=`${Q}-item--focused`,G=(h,s)=>{if(typeof s==="string")h.innerHTML=s;else h.replaceChildren(s)},v=(h,s,x)=>{h.classList.toggle(b,s),h.classList.toggle(Z,x)},O=(h,s)=>{if(j)h.style.transform=`translate(${Math.round(s.y)}px, ${Math.round(s.x)}px)`;else h.style.transform=`translate(${Math.round(s.x)}px, ${Math.round(s.y)}px)`},$=(h,s)=>{if(j)h.style.width=`${s.size}px`,h.style.height=`${s.crossSize}px`;else h.style.width=`${s.crossSize}px`,h.style.height=`${s.size}px`},C=(h,s,x,r,l)=>{let B=U.acquire(),u=y(r,l);if(B.className=D,B.dataset.index=String(h),B.dataset.id=String(s.id),B.dataset.lane=String(x.lane),B.ariaSelected=String(r),X)B.id=`${X}-item-${h}`;if(Y){let P=Y();if(P!==T)T=P,V=String(P);B.setAttribute("aria-setsize",V),B.setAttribute("aria-posinset",String(h+1))}$(B,x);let k=q(s,h,u);return G(B,k),v(B,r,l),O(B,x),{element:B,lastItemId:s.id,lastSelected:r,lastFocused:l,lastY:x.y,lastX:x.x,lastSize:x.size,lastCrossSize:x.crossSize,lastSeenFrame:K}},W=(h,s,x,r)=>{K++,_.clear();for(let B=0;B<s.length;B++)_.add(s[B].index);for(let[B,u]of N)if(_.has(B))u.lastSeenFrame=K;else if(K-u.lastSeenFrame>S1)U.release(u.element),N.delete(B);let l=null;for(let B=0;B<s.length;B++){let u=s[B],k=u.index,P=h(k);if(!P)continue;let I=x.has(P.id),R=k===r,f=N.get(k);if(f){let a=f.lastItemId!==P.id,p=f.lastSelected!==I,E=f.lastFocused!==R,L=f.lastY!==u.y||f.lastX!==u.x,z=f.lastSize!==u.size||f.lastCrossSize!==u.crossSize;if(a||p||E){let M=y(I,R),w=q(P,k,M);G(f.element,w),v(f.element,I,R),f.element.dataset.id=String(P.id),f.element.ariaSelected=String(I),f.lastItemId=P.id,f.lastSelected=I,f.lastFocused=R}if(z)$(f.element,u),f.lastSize=u.size,f.lastCrossSize=u.crossSize;if(L)O(f.element,u),f.lastY=u.y,f.lastX=u.x}else{let a=C(k,P,u,I,R);if(!l)l=document.createDocumentFragment();l.appendChild(a.element),N.set(k,a)}}if(l)J.appendChild(l)},d=()=>{for(let{element:h}of N.values())U.release(h);N.clear(),J.innerHTML=""};return{render:W,getElement:(h)=>N.get(h)?.element,sortDOM:()=>{I0(J,N.keys(),(h)=>N.get(h)?.element)},clear:d,destroy:()=>{d(),U.clear()}}};var f1=new Set,mJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let q=null,Q=null,j=[];return{name:"withMasonry",priority:10,setup(Y){let{dom:X,emitter:U,config:N,rawConfig:_}=Y,K=N.classPrefix,V=N.horizontal;if(N.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");X.root.classList.add(`${K}--masonry`);let T=()=>{return V?X.viewport.clientHeight:X.viewport.clientWidth},A={columns:J.columns,gap:J.gap??0,containerSize:T()};q=M2(A);let y=_.item,D=V&&_.item.width?_.item.width:y.height,b={containerWidth:0,columns:0,gap:0,columnWidth:0},Z=typeof D==="function"?(R)=>D(R,b):()=>D,G=()=>{let R=Y.dataManager.getTotal(),f=q;b.containerWidth=f.containerSize,b.columns=f.columns,b.gap=f.gap;let a=(f.columns-1)*f.gap;b.columnWidth=Math.max(0,(b.containerWidth-a)/f.columns),j=f.calculateLayout(R,Z);let p=q.getTotalSize(j);if(Y.sizeCache.getTotalSize=()=>p,V)X.content.style.width=`${p}px`;else X.content.style.height=`${p}px`},v=_.item.template;Q=O2(X.items,v,K,V,()=>Y.dataManager.getTotal(),N.ariaIdPrefix);let O=null,$=null,C=!1,W=()=>{if(C)return;C=!0,O=Y.methods.get("_getSelectedIds")??null,$=Y.methods.get("_getFocusedIndex")??null},d=(R)=>Y.dataManager.getItem(R),S=-1,F=-1,h=!0,s=(N.overscan??3)*100,x=()=>{if(Y.state.isDestroyed)return;W();let R=Y.scrollController.getScrollTop(),f=Y.state.viewportState.containerSize;if(!h&&R===S&&f===F)return;S=R,F=f,h=!1;let a=Math.max(0,R-s),p=R+f+s,E=q.getVisibleItems(j,a,p),L=O?O():f1,z=$?$():-1;if(Q&&E.length>0)Q.render(d,E,L,z);let M=Y.state.viewportState;M.scrollPosition=R;let w=E.length,g=w>0?E[0].index:0,Q0=w>0?E[w-1].index:0;M.visibleRange.start=g,M.visibleRange.end=Q0,M.renderRange.start=g,M.renderRange.end=Q0;let m=Y.state.lastRenderRange;if(m.start!==g||m.end!==Q0)m.start=g,m.end=Q0,U.emit("range:change",{range:{start:g,end:Q0}})},r=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,h=!0,x()};Y.setRenderFns(x,r);let l=(R,f)=>{let a=V?f:R;if(q&&q.containerSize!==a){if(q.update({containerSize:a}),G(),Q)Q.clear();r()}};Y.resizeHandlers.push(l);let B=()=>{G(),r()},u=Y.dataManager,k=(R)=>{if(typeof u[R]!=="function")return;let f=u[R].bind(u);u[R]=(...a)=>{f(...a),B()}};k("setItems"),k("appendItems"),k("prependItems"),k("updateItem"),k("removeItem");let{animateScroll:P,cancelScroll:I}=f0(Y.scrollController,Y.renderIfNeeded);Y.methods.set("cancelScroll",I),Y.methods.set("scrollToIndex",(R,f)=>{let a=j[R];if(!a)return;let{align:p,behavior:E,duration:L}=R0(f),z=a.y,M=Y.state.viewportState.containerSize,w=z;if(p==="center")w=z-M/2+a.size/2;else if(p==="end")w=z-M+a.size;if(w=Math.max(0,w),E==="smooth")P(Y.scrollController.getScrollTop(),w,L);else I(),Y.scrollController.scrollTo(w)}),G(),Y.idleHandlers.push(()=>{if(Q)Q.sortDOM()}),Y.destroyHandlers.push(()=>{if(I(),Q)Q.destroy();X.root.classList.remove(`${K}--masonry`)})}}};var A2=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),s0=(J,q,Q)=>{if(Q==="none")return J;let j=new Set(J.selected);if(Q==="single"){if(j.clear(),q.length>0)j.add(q[0])}else for(let Y of q)j.add(Y);return{...J,selected:j}},n0=(J,q)=>{let Q=new Set(J.selected);for(let j of q)Q.delete(j);return{...J,selected:Q}},g0=(J,q,Q)=>{if(Q==="none")return J;if(J.selected.has(q))return n0(J,[q]);else return s0(J,[q],Q)},E2=(J,q,Q)=>{if(Q!=="multiple")return J;return{...J,selected:new Set(q.map((j)=>j.id))}},F2=(J)=>({...J,selected:new Set}),L2=(J,q)=>{return J.focusedIndex=q,J},I2=(J,q,Q=!1)=>{if(q===0)return J;let j=J.focusedIndex-1;if(j<0)j=Q?q-1:0;return J.focusedIndex=j,J},p2=(J,q,Q=!1)=>{if(q===0)return J;let j=J.focusedIndex+1;if(j>=q)j=Q?0:q-1;return J.focusedIndex=j,J},h2=(J,q)=>{if(q===0)return J;return J.focusedIndex=0,J},u2=(J,q)=>{if(q===0)return J;return J.focusedIndex=q-1,J};var dJ=(J,q)=>{return J.selected.has(q)},o0=(J)=>{return Array.from(J.selected)},i0=(J,q)=>{let Q=[];for(let j of J.selected){let Y=q(j);if(Y)Q.push(Y)}return Q};var cJ=(J)=>{let q=J?.mode??"single",Q=J?.initial,j=A2(Q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(X){let{dom:U,emitter:N,config:_}=X,{classPrefix:K,ariaIdPrefix:V}=_;if(q==="none"){X.methods.set("select",()=>{}),X.methods.set("deselect",()=>{}),X.methods.set("toggleSelect",()=>{}),X.methods.set("selectAll",()=>{}),X.methods.set("clearSelection",()=>{}),X.methods.set("getSelected",()=>[]),X.methods.set("getSelectedItems",()=>[]),X.methods.set("setSelectionMode",()=>{});return}U.root.classList.add(`${K}--selectable`);let T=new Map,A=()=>{T.clear();let O=X.dataManager.getTotal(),$=X.dataManager.getCached();if($===0)return;if($>=O){for(let W=0;W<O;W++){let d=X.dataManager.getItem(W);if(d)T.set(d.id,W)}return}let C=X.dataManager.getStorage();if(C&&typeof C.getLoadedRanges==="function"){let W=C.getLoadedRanges();for(let d of W)for(let S=d.start;S<=d.end;S++){let F=X.dataManager.getItem(S);if(F)T.set(F.id,S)}}};N.on("load:end",({items:O,offset:$})=>{if(!O||O.length===0)return;if($!==void 0)for(let C=0;C<O.length;C++){let W=O[C];if(W&&W.id!==void 0)T.set(W.id,$+C)}else A()}),A(),X.methods.set("_getSelectedIds",()=>{return j.selected}),X.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:y}=X.getRenderFns(),D=()=>{y();let O=($)=>{let C=T.get($);if(C===void 0)return;return X.dataManager.getItem(C)};N.emit("selection:change",{selected:o0(j),items:i0(j,O)})};Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${K}-live-region`,Y.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(U.root.getAttribute("role")==="grid"?U.root.parentElement??U.root:U.root).appendChild(Y);let Z=Y;N.on("selection:change",({selected:O})=>{let $=O.length;if($===0)Z.textContent="";else if($===1)Z.textContent="1 item selected";else Z.textContent=`${$} items selected`});let G=()=>{if(X.state.isDestroyed)return;if(!U.root.matches(":focus-visible"))return;let O=X.dataManager.getTotal();if(O===0)return;let $=j.focusedIndex>=0?Math.min(j.focusedIndex,O-1):0;j=L2(j,$),j.focusVisible=!0,U.root.setAttribute("aria-activedescendant",`${V}-item-${$}`),X.scrollController.scrollTo(P0($,X.sizeCache,X.state.viewportState.containerSize,X.dataManager.getState().total,"center",X.getCachedCompression()));let C=X.dataManager.getItem($);if(C)X.renderer.updateItemClasses($,j.selected.has(C.id),!0)};U.root.addEventListener("focusin",G);let v=(O)=>{if(X.state.isDestroyed)return;let $=O.relatedTarget;if($&&U.root.contains($))return;let C=j.focusedIndex;if(j.focusVisible=!1,U.root.removeAttribute("aria-activedescendant"),C>=0){let W=X.dataManager.getItem(C);if(W)X.renderer.updateItemClasses(C,j.selected.has(W.id),!1)}};U.root.addEventListener("focusout",v),X.clickHandlers.push((O)=>{if(X.state.isDestroyed)return;let C=O.target.closest("[data-index]");if(!C)return;let W=parseInt(C.dataset.index??"-1",10);if(W<0)return;let d=X.dataManager.getItem(W);if(!d)return;N.emit("item:click",{item:d,index:W,event:O}),j=L2(j,W),j.focusVisible=!1,U.root.setAttribute("aria-activedescendant",`${V}-item-${W}`),j=g0(j,d.id,q),D()}),X.keydownHandlers.push((O)=>{if(X.state.isDestroyed)return;let $=X.dataManager.getTotal(),C=j.focusedIndex,W=!1,d=!1,S=j;switch(O.key){case"ArrowUp":S=I2(j,$,_.wrap),S.focusVisible=!0,W=!0,d=!0;break;case"ArrowDown":S=p2(j,$,_.wrap),S.focusVisible=!0,W=!0,d=!0;break;case"Home":S=h2(j,$),S.focusVisible=!0,W=!0,d=!0;break;case"End":S=u2(j,$),S.focusVisible=!0,W=!0,d=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let F=X.dataManager.getItem(j.focusedIndex);if(F)S=g0(j,F.id,q),S.focusVisible=!0;W=!0}break}if(W){O.preventDefault(),j=S;let F=j.focusedIndex;if(F>=0){let h=X.dataManager.getState(),s=P0(F,X.sizeCache,X.state.viewportState.containerSize,h.total,"center",X.getCachedCompression());X.scrollController.scrollTo(s),U.root.setAttribute("aria-activedescendant",`${V}-item-${F}`)}else U.root.removeAttribute("aria-activedescendant");if(d){let{selected:h}=j;if(C>=0&&C!==F){let s=X.dataManager.getItem(C);if(s)X.renderer.updateItemClasses(C,h.has(s.id),!1)}if(F>=0){let s=X.dataManager.getItem(F);if(s)X.renderer.updateItemClasses(F,h.has(s.id),!0)}}else D()}}),X.methods.set("select",(...O)=>{j=s0(j,O,q),D()}),X.methods.set("deselect",(...O)=>{j=n0(j,O),D()}),X.methods.set("toggleSelect",(O)=>{j=g0(j,O,q),D()}),X.methods.set("selectAll",()=>{if(q!=="multiple")return;let O=X.getAllLoadedItems();j=E2(j,O,q),A(),D()}),X.methods.set("clearSelection",()=>{j=F2(j),D()}),X.methods.set("getSelected",()=>{return o0(j)}),X.methods.set("getSelectedItems",()=>{return i0(j,($)=>{let C=T.get($);if(C===void 0)return;return X.dataManager.getItem(C)})}),X.destroyHandlers.push(()=>{if(Z&&Z.parentNode)Z.remove();U.root.removeEventListener("focusin",G),U.root.removeEventListener("focusout",v)})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var lJ=(J)=>{let q=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(Q){Q.methods.set("getScrollSnapshot",()=>{let Y=Q.scrollController.getScrollTop(),X=Q.getCachedCompression(),U=Q.getVirtualTotal(),N=Q.methods.get("getSelected"),_=N&&N().length>0?N():void 0;if(U===0){let A={index:0,offsetInItem:0,total:0};if(_)A.selectedIds=_;return A}let K,V;if(X.isCompressed){let y=Y/X.virtualSize*U;K=Math.max(0,Math.min(Math.floor(y),U-1)),V=(y-K)*Q.sizeCache.getSize(K)}else K=Q.sizeCache.indexAtOffset(Y),V=Y-Q.sizeCache.getOffset(K);V=Math.max(0,V);let T={index:K,offsetInItem:V,total:U};if(_)T.selectedIds=_;return T});let j=(Y)=>{let{index:X,offsetInItem:U,selectedIds:N}=Y,_=Q.getVirtualTotal();if(_===0)return;if(!Number.isFinite(X)||!Number.isFinite(U))return;if(Q.sizeCache.getTotal()!==_){Q.sizeCache.rebuild(_),Q.updateCompressionMode();let Z=Q.getCachedCompression();Q.updateContentSize(Z.virtualSize)}let V=Q.getCachedCompression(),T=Math.max(0,Math.min(X,_-1)),A;if(V.isCompressed){let Z=Q.sizeCache.getSize(T),G=Z>0?U/Z:0;A=(T+G)/_*V.virtualSize}else A=Q.sizeCache.getOffset(T)+U;let y=Q.state.viewportState.containerSize,D=Math.max(0,V.virtualSize-y);if(A=Math.max(0,Math.min(A,D)),Q.scrollController.scrollTo(A),N&&N.length>0){let Z=Q.methods.get("select");if(Z)Z(...N)}let b=Q.methods.get("loadVisibleRange");if(b)requestAnimationFrame(()=>{b()});else{let Z=Q.methods.get("reload");if(Z)requestAnimationFrame(()=>{Z()})}};if(Q.methods.set("restoreScroll",j),q)queueMicrotask(()=>{j(q)})}}};var T2=(J,q=50,Q=1/0,j=!0)=>{let Y=J,X=[],U=0,N=()=>{X=Y.map((Z,G)=>({def:Z,index:G,width:0,minWidth:I1(Z.minWidth??q,1),maxWidth:Z.maxWidth??Q,resizable:Z.resizable??j,offset:0}))},_=(Z)=>{if(X.length===0){U=0;return}let G=0,v=0;for(let O=0;O<X.length;O++){let $=X[O],C=$.def;if(C.width!==void 0)$.width=g2(C.width,$.minWidth,$.maxWidth),G+=$.width;else v++}if(v>0){let $=Math.max(0,Z-G)/v;for(let C=0;C<X.length;C++){let W=X[C];if(W.def.width===void 0)W.width=g2($,W.minWidth,W.maxWidth)}}K()},K=()=>{let Z=0;for(let G=0;G<X.length;G++){let v=X[G];v.offset=Z,Z+=v.width}U=Z},V=(Z,G)=>{if(Z<0||Z>=X.length)return 0;let v=X[Z];if(!v.resizable)return v.width;let O=g2(G,v.minWidth,v.maxWidth);return v.width=O,K(),O},T=(Z)=>{return X[Z]},A=(Z)=>{if(X.length===0)return;if(Z<0)return X[0];if(Z>=U)return X[X.length-1];let G=0,v=X.length-1;while(G<v){let O=G+v>>>1,$=X[O];if(Z<$.offset)v=O-1;else if(Z>=$.offset+$.width)G=O+1;else return $}return X[G]},y=(Z)=>{if(Z<0||Z>=X.length)return 0;return X[Z].offset},D=(Z)=>{if(Z<0||Z>=X.length)return 0;return X[Z].width},b=(Z)=>{Y=Z,N()};return N(),{get columns(){return X},get totalWidth(){return U},resolve:_,updateColumns:b,resizeColumn:V,getColumn:T,getColumnAtX:A,getColumnOffset:y,getColumnWidth:D}},g2=(J,q,Q)=>Math.min(Q,Math.max(q,J)),I1=(J,q)=>Math.max(q,J);var $2=(J,q,Q,j,Y,X,U)=>{let N=document.createElement("div");N.setAttribute("role","rowgroup");let _=document.createElement("div");_.className=`${j}-table-header`,_.setAttribute("role","row"),_.setAttribute("aria-rowindex","1"),_.style.height=`${Q}px`;let K=document.createElement("div");K.className=`${j}-table-header-scroll`,K.setAttribute("role","presentation"),_.appendChild(K),N.appendChild(_),J.insertBefore(N,J.firstChild),q.style.position="absolute",q.style.top=`${Q}px`,q.style.left="0",q.style.right="0",q.style.bottom="0",q.style.height="auto";let V=[],T=[],A=[],y=!0,D=null,b="asc",Z=null,G=!1,v=-1,O=0,$=0,C=(k,P)=>{let I=document.createElement("div");I.className=`${j}-table-header-cell`,I.setAttribute("role","columnheader"),I.setAttribute("aria-colindex",String(P+1)),I.dataset.columnKey=k.def.key;let R=k.def.align;if(R==="center")I.classList.add(`${j}-table-header-cell--center`);else if(R==="right")I.classList.add(`${j}-table-header-cell--right`);let f=document.createElement("div");f.className=`${j}-table-header-content`;let a=k.def.header?k.def.header(k.def):k.def.label;if(typeof a==="string")f.textContent=a;else f.appendChild(a);if(I.appendChild(f),k.def.sortable){let p=document.createElement("span");p.className=`${j}-table-header-sort`,p.setAttribute("aria-hidden","true"),I.appendChild(p),A.push(p),I.classList.add(`${j}-table-header-cell--sortable`)}else A.push(null);if(k.resizable){let p=document.createElement("div");p.className=`${j}-table-header-resize`,p.dataset.resizeIndex=String(P),I.appendChild(p),T.push(p)}return I},W=(k)=>{Z=k,K.textContent="",V=[],T=[],A=[];let P=k.columns;for(let I=0;I<P.length;I++){let R=P[I],f=C(R,I);V.push(f),K.appendChild(f)}if(d(k),D)S(D,b)},d=(k)=>{Z=k;let P=k.columns;K.style.width=`${k.totalWidth}px`;for(let I=0;I<V.length&&I<P.length;I++){let R=V[I],f=P[I];R.style.width=`${f.width}px`}},S=(k,P)=>{if(D=k,b=P,!Z)return;let I=Z.columns;for(let R=0;R<A.length&&R<I.length;R++){let f=A[R];if(!f)continue;if(I[R].def.key===k&&k!==null)f.textContent=P==="asc"?"▲":"▼",f.style.opacity="0.7",V[R].setAttribute("aria-sort",P==="asc"?"ascending":"descending");else f.textContent="",f.style.opacity="0",V[R].removeAttribute("aria-sort")}},F=(k)=>{K.style.transform=`translateX(${-k}px)`},h=(k)=>{let P=k.target;if(!P.dataset.resizeIndex)return;if(k.preventDefault(),k.stopPropagation(),v=parseInt(P.dataset.resizeIndex,10),!Z)return;let I=Z.getColumn(v);if(!I||!I.resizable)return;G=!0,O=k.clientX,$=I.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",P.classList.add(`${j}-table-header-resize--active`),P.setPointerCapture(k.pointerId),P.addEventListener("pointermove",s),P.addEventListener("pointerup",x),P.addEventListener("pointercancel",x)},s=(k)=>{if(!G||!Z)return;let P=k.clientX-O;if(Math.abs(P)<1)return;let I=Math.max(0,$+P);Y(v,I)},x=(k)=>{if(!G)return;let P=k.target;P.removeEventListener("pointermove",s),P.removeEventListener("pointerup",x),P.removeEventListener("pointercancel",x);try{P.releasePointerCapture(k.pointerId)}catch{}P.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",G=!1,v=-1},r=(k)=>{let P=k.target;if(P.dataset.resizeIndex!==void 0)return;if(G)return;let I=P;while(I&&!I.dataset.columnKey)if(I=I.parentElement,I===_||I===null)return;if(!I||!I.dataset.columnKey)return;let R=I.dataset.columnKey;if(!Z)return;let f=Z.columns,a=-1;for(let E=0;E<f.length;E++)if(f[E].def.key===R){a=E;break}if(a===-1)return;let p=f[a];if(U)U({key:R,index:a,event:k});if(p.def.sortable&&X){let E;if(D===R)if(b==="asc")E="desc";else E=null;else E="asc";X({key:R,index:a,direction:E})}};return _.addEventListener("pointerdown",h),_.addEventListener("click",r),{element:_,update:d,updateSort:S,rebuild:W,show:()=>{if(y)return;y=!0,_.style.display=""},hide:()=>{if(!y)return;y=!1,_.style.display="none"},destroy:()=>{_.removeEventListener("pointerdown",h),_.removeEventListener("click",r),q.style.position="",q.style.top="",q.style.left="",q.style.right="",q.style.bottom="",N.remove(),V=[],T=[],A=[],Z=null,y=!1},syncScroll:F}};var p1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;return document.createElement("div")},release:(X)=>{if(X.parentNode)X.parentNode.removeChild(X);if(q.length<J)X.className="",X.removeAttribute("data-id"),X.removeAttribute("data-index"),X.removeAttribute("aria-selected"),X.removeAttribute("aria-rowindex"),X.removeAttribute("role"),X.style.cssText="",X.textContent="",q.push(X)},clear:()=>{q.length=0}}};var b2=(J,q,Q,j,Y,X,U,N)=>{let _=p1(),K=new Map,V=0,T=-1,A=Q,y=null,D=null,b=(p,E)=>{y=p,D=E},Z=(p,E)=>{if(E)p.setAttribute("aria-selected","true");else p.removeAttribute("aria-selected")},G=`${Y}-item ${Y}-table-row`,v=`${Y}-item--selected`,O=`${Y}-item--focused`,$=`${Y}-table-cell`,C=`${Y}-table-cell--center`,W=`${Y}-table-cell--right`,d=`${Y}-item--odd`,S=`${Y}-item ${Y}-table-row ${Y}-table-group-header`,F=`${Y}-table-group-header-content`,h=(p,E,L,z)=>{if(L.def.cell){let M=L.def.cell(E,L.def,z);if(typeof M==="string")p.innerHTML=M;else p.replaceChildren(M)}else{let M=E[L.def.key];p.textContent=M!=null?String(M):""}},s=(p,E,L,z)=>{let M=G;if(N&&(E&1)===1)M+=` ${d}`;if(L)M+=` ${v}`;if(z)M+=` ${O}`;p.className=M},x=(p,E)=>{let L=E.def.align;if(L==="center")p.classList.add(C),p.classList.remove(W);else if(L==="right")p.classList.add(W),p.classList.remove(C);else p.classList.remove(C,W)},r=(p,E)=>{let z=A.columns.length;if(E.length===z)return E;let M=[];for(let w=0;w<z;w++){let g;if(w<E.length)g=E[w];else g=document.createElement("div"),g.className=$,p.appendChild(g);M.push(g)}for(let w=z;w<E.length;w++)E[w].remove();return M},l=(p,E,L)=>{let z=_.acquire(),M=p;z.style.width=`${A.totalWidth}px`;let w=L.getSize(E);z.style.height=`${w}px`,z.className=S,z.setAttribute("role","presentation"),z.setAttribute("data-id",String(p.id)),z.setAttribute("data-index",String(E)),z.removeAttribute("aria-selected"),z.removeAttribute("aria-rowindex"),z.replaceChildren();let g=document.createElement("div");if(g.className=F,D){let m=D(M.groupKey,M.groupIndex);if(typeof m==="string")g.innerHTML=m;else g.appendChild(m)}z.appendChild(g);let Q0=L.getOffset(E);return z.style.transform=`translateY(${Q0}px)`,{element:z,cells:[],index:E,isGroupHeader:!0,lastItemId:p.id,lastSelected:!1,lastFocused:!1,lastOffset:Q0,lastHeight:w,lastSeenFrame:V}},B=(p,E,L,z,M)=>{let w=_.acquire();w.style.width=`${A.totalWidth}px`;let g=M.getSize(E);w.style.height=`${g}px`,s(w,E,L,z),w.setAttribute("role","row"),w.setAttribute("data-id",String(p.id)),w.setAttribute("data-index",String(E)),w.id=`${X}-${E}`,w.setAttribute("aria-rowindex",String(E+2));let Q0=U();if(Q0!==T)T=Q0;Z(w,L);let m=r(w,[]),q0=A.columns;for(let c=0;c<m.length&&c<q0.length;c++){let n=m[c],e=q0[c];n.style.left=`${e.offset}px`,n.style.width=`${e.width}px`,n.setAttribute("role","gridcell"),n.setAttribute("aria-colindex",String(c+1)),x(n,e),h(n,p,e,E)}let X0=M.getOffset(E);return w.style.transform=`translateY(${X0}px)`,{element:w,cells:m,index:E,isGroupHeader:!1,lastItemId:p.id,lastSelected:L,lastFocused:z,lastOffset:X0,lastHeight:g,lastSeenFrame:V}},u=(p,E,L,z)=>{V++;for(let[m,q0]of K)if(m>=E.start&&m<=E.end)q0.lastSeenFrame=V;else if(V-q0.lastSeenFrame>2)_.release(q0.element),K.delete(m);let M=!1,w=U();if(w!==T)T=w,M=!0;let g=null,Q0=q();for(let m=E.start;m<=E.end;m++){let q0=m-E.start,X0=p[q0];if(!X0)continue;let c=L.has(X0.id),n=m===z,e=y?y(X0):!1,t=K.get(m);if(t){if(t.isGroupHeader!==e){_.release(t.element),K.delete(m);let U0=e?l(X0,m,Q0):B(X0,m,c,n,Q0);if(K.set(m,U0),!g)g=document.createDocumentFragment();g.appendChild(U0.element);continue}if(e){if(t.lastItemId!==X0.id){let W0=X0,j0=t.element.firstElementChild;if(j0&&D){let M0=D(W0.groupKey,W0.groupIndex);if(typeof M0==="string")j0.innerHTML=M0;else j0.replaceChildren(M0)}t.element.setAttribute("data-id",String(X0.id)),t.lastItemId=X0.id}let Z0=Q0.getOffset(m);if(t.lastOffset!==Z0)t.lastOffset=Z0,t.element.style.transform=`translateY(${Z0}px)`;let V0=Q0.getSize(m);if(t.lastHeight!==V0)t.lastHeight=V0,t.element.style.height=`${V0}px`;t.lastSeenFrame=V}else{let U0=t.lastItemId!==X0.id,Z0=t.lastSelected!==c,V0=t.lastFocused!==n;if(U0){let M0=A.columns;for(let O0=0;O0<t.cells.length&&O0<M0.length;O0++)h(t.cells[O0],X0,M0[O0],m);s(t.element,m,c,n),t.element.setAttribute("data-id",String(X0.id)),Z(t.element,c),t.lastItemId=X0.id,t.lastSelected=c,t.lastFocused=n}else if(Z0||V0)s(t.element,m,c,n),Z(t.element,c),t.lastSelected=c,t.lastFocused=n;let W0=Q0.getOffset(m);if(t.lastOffset!==W0)t.lastOffset=W0,t.element.style.transform=`translateY(${W0}px)`;let j0=Q0.getSize(m);if(t.lastHeight!==j0)t.lastHeight=j0,t.element.style.height=`${j0}px`;if(M)t.element.setAttribute("aria-rowindex",String(m+2));t.lastSeenFrame=V}}else{let U0=e?l(X0,m,Q0):B(X0,m,c,n,Q0);if(K.set(m,U0),!g)g=document.createDocumentFragment();g.appendChild(U0.element)}}if(g)J.appendChild(g)},k=(p,E,L,z)=>{let M=K.get(p);if(!M)return;if(M.isGroupHeader)return;let w=M.lastItemId!==E.id,g=M.lastSelected!==L,Q0=M.lastFocused!==z;if(w||g||Q0){if(w){let m=A.columns;for(let q0=0;q0<M.cells.length&&q0<m.length;q0++)h(M.cells[q0],E,m[q0],p);M.element.setAttribute("data-id",String(E.id)),M.lastItemId=E.id}s(M.element,p,L,z),Z(M.element,L),M.lastSelected=L,M.lastFocused=z}},P=(p,E,L)=>{let z=K.get(p);if(!z)return;if(z.isGroupHeader)return;let M=z.lastSelected!==E,w=z.lastFocused!==L;if(M||w)s(z.element,p,E,L),Z(z.element,E),z.lastSelected=E,z.lastFocused=L},I=(p)=>{A=p;let E=p.columns;for(let[,L]of K)if(L.element.style.width=`${p.totalWidth}px`,L.cells.length>0)for(let z=0;z<L.cells.length&&z<E.length;z++){let M=L.cells[z],w=E[z];M.style.left=`${w.offset}px`,M.style.width=`${w.width}px`}},R=(p)=>{return K.get(p)?.element},f=()=>{for(let[,p]of K)_.release(p.element);K.clear(),V=0,T=-1};return{render:u,updateItem:k,updateItemClasses:P,getElement:R,updateColumnLayout:I,setGroupHeaderFn:b,clear:f,destroy:()=>{f(),_.clear()}}};var h1=new Set,aJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist/builder] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist/builder] withTable: either rowHeight or estimatedRowHeight is required");let q=null,Q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(Y){let{dom:X,emitter:U,config:N}=Y,{classPrefix:_}=N;if(N.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(N.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let K=J.resizable??!0,V=J.minColumnWidth??50,T=J.maxColumnWidth??1/0,A=J.columnBorders??!1,y=J.rowBorders??!0,D=J.rowHeight,b=J.headerHeight??(typeof D==="number"?D:40),Z=J.sort?.key??null,G=J.sort?.direction??"asc";if(q=T2(J.columns,V,T,K),typeof D==="function")Y.setSizeConfig(D);else if(typeof D==="number")Y.setSizeConfig(D);if(Y.rebuildSizeCache(),X.root.classList.add(`${_}--table`),y)X.root.classList.add(`${_}--table-row-borders`);if(A)X.root.classList.add(`${_}--table-col-borders`);X.root.setAttribute("role","grid"),X.root.setAttribute("aria-colcount",String(J.columns.length));let v=-1,O=X.items.getAttribute("aria-label");if(O)X.root.setAttribute("aria-label",O),X.items.removeAttribute("aria-label");X.items.setAttribute("role","rowgroup"),X.viewport.setAttribute("role","none"),X.content.setAttribute("role","none"),X.viewport.removeAttribute("tabindex");let $=Y.getContainerWidth();q.resolve($);let C=(L,z)=>{if(!q)return;let M=q.getColumn(L);if(!M)return;let w=M.width,g=q.resizeColumn(L,z);if(Q)Q.update(q);if(j)j.updateColumnLayout(q);S(),U.emit("column:resize",{key:M.def.key,index:L,previousWidth:w,width:g})},W=(L)=>{if(L.direction===null)Z=null,G="asc";else Z=L.key,G=L.direction;if(Q)Q.updateSort(Z,G);U.emit("column:sort",L)},d=(L)=>{U.emit("column:click",L)};if(Q=$2(X.root,X.viewport,b,_,C,W,d),Q.rebuild(q),Z)Q.updateSort(Z,G);let S=()=>{if(!q)return;let L=q.totalWidth;X.content.style.minWidth=`${L}px`,X.items.style.minWidth=`${L}px`};S(),j=b2(X.items,()=>Y.sizeCache,q,J.columns,_,N.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped);let F=null,h=null,s=!1,x=()=>{if(s)return;s=!0,F=Y.methods.get("_getSelectedIds")??null,h=Y.methods.get("_getFocusedIndex")??null},r=-1,l=-1,B=!0,u=N.overscan??3,k={start:0,end:0},P={start:0,end:0},I=()=>{if(Y.state.isDestroyed)return;let L=Y.scrollController.getScrollTop(),z=Y.state.viewportState.containerSize;if(!B&&L===r&&z===l)return;r=L,l=z,B=!1;let M=Y.getVirtualTotal(),w=M+1;if(w!==v)v=w,X.root.setAttribute("aria-rowcount",String(w));if(M===0||z===0)k.start=0,k.end=0;else{k.start=Math.max(0,Y.sizeCache.indexAtOffset(L));let c=Y.sizeCache.indexAtOffset(L+z);if(c<M-1)c++;k.end=Math.min(M-1,Math.max(0,c))}P.start=Math.max(0,k.start-u),P.end=Math.min(M-1,k.end+u);let g=Y.state.viewportState;g.scrollPosition=L,g.visibleRange.start=k.start,g.visibleRange.end=k.end,g.renderRange.start=P.start,g.renderRange.end=P.end;let Q0=Y.state.lastRenderRange,m=Y.dataManager.getItemsInRange(P.start,P.end);x();let q0=F?F():h1,X0=h?h():-1;if(j.render(m,P,q0,X0),Q0.start!==P.start||Q0.end!==P.end)Q0.start=P.start,Q0.end=P.end,U.emit("range:change",{range:{start:P.start,end:P.end}})},R=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,B=!0,I()};Y.setRenderFns(I,R);let f=Q,a=-1,p=()=>{let L=X.viewport.scrollLeft;if(L!==a){if(a=L,f.syncScroll)f.syncScroll(L)}};Y.afterScroll.push(()=>{p()});let E=()=>{p()};X.viewport.addEventListener("scroll",E,{passive:!0}),Y.resizeHandlers.push((L,z)=>{if(!q)return;if(q.resolve(L),Q)Q.update(q);if(j)j.updateColumnLayout(q);S()}),Y.methods.set("updateColumns",(L)=>{if(!q||!Q)return;if(q.updateColumns(L),q.resolve(Y.getContainerWidth()),Q.rebuild(q),Z)Q.updateSort(Z,G);if(S(),j)j.updateColumnLayout(q),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(L,z)=>{if(!q)return;let M;if(typeof L==="string"){let w=q.columns;M=-1;for(let g=0;g<w.length;g++)if(w[g].def.key===L){M=g;break}if(M===-1)return}else M=L;C(M,z)}),Y.methods.set("getColumnWidths",()=>{if(!q)return{};let L={},z=q.columns;for(let M=0;M<z.length;M++)L[z[M].def.key]=z[M].width;return L}),Y.methods.set("setSort",(L,z)=>{if(Z=L,G=z??"asc",Q)Q.updateSort(Z,G)}),Y.methods.set("getSort",()=>{return{key:Z,direction:G}}),Y.methods.set("_getTableLayout",()=>q),Y.methods.set("_replaceTableRenderer",(L)=>{j=L}),Y.methods.set("_updateTableForGroups",(L,z)=>{if(j)j.setGroupHeaderFn(L,z)}),Y.methods.set("_getTableHeaderHeight",()=>b),Y.contentSizeHandlers.push(()=>{S()}),Y.destroyHandlers.push(()=>{if(X.viewport.removeEventListener("scroll",E),Q)Q.destroy(),Q=null;if(j)j.destroy(),j=null;X.content.style.minWidth="",X.items.style.minWidth="",X.root.classList.remove(`${_}--table`),X.root.removeAttribute("role"),X.root.removeAttribute("aria-colcount"),X.viewport.removeAttribute("role"),X.viewport.setAttribute("tabindex","-1"),X.content.removeAttribute("role");let L=X.root.getAttribute("aria-label");if(L)X.items.setAttribute("aria-label",L),X.root.removeAttribute("aria-label");X.root.removeAttribute("aria-rowcount"),X.items.setAttribute("role","listbox")})},destroy(){if(Q)Q.destroy(),Q=null;if(j)j.destroy(),j=null}}};export{aJ as withTable,lJ as withSnapshots,cJ as withSelection,FJ as withScrollbar,$J as withScale,HJ as withPage,mJ as withMasonry,gJ as withGroups,xJ as withGrid,bJ as withAsync,BJ as vlist,g0 as toggleSelection,PJ as simpleVisibleRange,s0 as selectItems,E2 as selectAll,fJ as rangesEqual,B2 as rafThrottle,OJ as needsScaling,Z2 as mergeRanges,dJ as isSelected,z0 as isPlaceholderItem,IJ as isInRange,C0 as isGroupHeader,i0 as getSelectedItems,o0 as getSelectedIds,T0 as getScaleState,EJ as getScaleInfo,T0 as getScale,pJ as getRangeCount,AJ as getMaxItemsWithoutScaling,S2 as filterPlaceholders,hJ as diffRanges,n0 as deselectItems,b2 as createTableRenderer,T2 as createTableLayout,$2 as createTableHeader,W2 as createStickyHeader,U2 as createSparseStorage,k0 as createSizeCache,A2 as createSelectionState,u0 as createScrollbar,TJ as createScrollController,N2 as createPlaceholderManager,Q2 as createMeasuredSizeCache,O2 as createMasonryRenderer,M2 as createMasonryLayout,a0 as createGroupedSizeFn,V2 as createGroupLayout,r0 as createGridRenderer,G2 as createGridLayout,j2 as createEmitter,_2 as createAsyncManager,F2 as clearSelection,SJ as clampScrollPosition,CJ as calculateTotalSize,P0 as calculateScrollToIndex,q2 as calculateScaledVisibleRange,X2 as calculateScaledScrollToIndex,GJ as calculateScaledRenderRange,h0 as calculateScaledItemPosition,RJ as calculateRenderRange,c0 as calculateMissingRanges,vJ as calculateItemOffset,MJ as calculateIndexFromScrollPosition,wJ as calculateActualSize,l0 as buildLayoutItems,y0 as MAX_VIRTUAL_SIZE,DJ as MAX_VIRTUAL_HEIGHT};
1
+ var{defineProperty:P2,getOwnPropertyNames:N1,getOwnPropertyDescriptor:_1}=Object,V1=Object.prototype.hasOwnProperty;var r2=new WeakMap,W1=(J)=>{var q=r2.get(J),Q;if(q)return q;if(q=P2({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")N1(J).map((j)=>!V1.call(q,j)&&P2(q,j,{get:()=>J[j],enumerable:!(Q=_1(J,j))||Q.enumerable}));return r2.set(J,q),q};var D1=(J,q)=>{for(var Q in q)P2(J,Q,{get:q[Q],enumerable:!0,configurable:!0,set:(j)=>q[Q]=()=>j})};var s2=(J,q)=>()=>(J&&(q=J(J=0)),q);var G1=(J,q)=>{let Q=q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(Q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),Q-1))},getTotalSize:()=>Q*J,getTotal:()=>Q,rebuild:(j)=>{Q=j},isVariable:()=>!1}},M1=(J,q)=>{let Q=q,j=new Float64Array(0),Y=(U)=>{Q=U,j=new Float64Array(U+1),j[0]=0;for(let N=0;N<U;N++)j[N+1]=j[N]+J(N)};Y(q);let X=(U)=>{if(Q===0)return 0;if(U<=0)return 0;if(U>=j[Q])return Q-1;let N=0,_=Q-1;while(N<_){let K=N+_+1>>>1;if(j[K]<=U)N=K;else _=K-1}return N};return{getOffset:(U)=>{if(U<=0)return 0;if(U>=Q)return j[Q];return j[U]},getSize:(U)=>J(U),indexAtOffset:(U)=>X(U),getTotalSize:()=>j[Q]??0,getTotal:()=>Q,rebuild:(U)=>Y(U),isVariable:()=>!0}},k0=(J,q)=>{if(typeof J==="number")return G1(J,q);return M1(J,q)},d0=(J,q,Q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(Q/J.getSize(0));let Y=0,X=0,U=q;while(U<j&&X<Q)X+=J.getSize(U),Y++,U++;return Math.max(1,Y)},J2=(J,q,Q)=>{if(Q===0)return 0;if(!J.isVariable())return Math.floor(q/J.getSize(0));let j=0,Y=0;for(let X=Q-1;X>=0;X--){let U=J.getSize(X);if(Y+U>q)break;Y+=U,j++}return Math.max(j,1)},z2=(J,q,Q)=>{if(Q===0)return 0;let j=Math.floor(q),Y=q-j,X=Math.max(0,Math.min(j,Q-1));return J.getOffset(X)+Y*J.getSize(X)};var I0=(J,q,Q)=>{let j=Array.from(q).sort((U,N)=>U-N);if(j.length<=1)return;let Y=J.firstChild,X=!0;for(let U=0;U<j.length;U++){if(Q(j[U])!==Y){X=!1;break}Y=Y.nextSibling}if(X)return;for(let U=0;U<j.length;U++){let N=Q(j[U]);if(N)J.appendChild(N)}};var w2=200,p0=50,UJ=5,ZJ=2,NJ=50,y0=16000000,_J="x",VJ=20,v2="_isPlaceholder",WJ="__placeholder_";var DJ,T0=(J,q)=>{let Q=q.getTotalSize(),j=Q>y0,Y=j?y0:Q,X=Q>0?Y/Q:1;return{isCompressed:j,actualSize:Q,virtualSize:Y,ratio:X}},q2=(J,q,Q,j,Y,X)=>{if(j===0||q===0)return X.start=0,X.end=-1,X;if(!Y.isCompressed){let D=Q.indexAtOffset(J),b=Q.indexAtOffset(J+q);if(b<j-1)b++;return X.start=Math.max(0,D),X.end=Math.min(j-1,Math.max(0,b)),X}let{virtualSize:U}=Y,_=J/U*j,K=Math.floor(_),V=d0(Q,Math.max(0,K),q,j),T=Math.ceil(_)+V,y=U-q-J;if(y<=q&&y>=-1){let D=J2(Q,q,j),b=Math.max(0,j-D),Z=Math.max(0,Math.min(1,1-y/q));K=Math.floor(K+(b-K)*Z),T=y<=1?j-1:Math.min(j-1,K+V)}return X.start=Math.max(0,K),X.end=Math.min(j-1,Math.max(0,T)),X},GJ=(J,q,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q),j},h0=(J,q,Q,j,Y,X,U)=>{if(!X.isCompressed||j===0)return Q.getOffset(J);let{virtualSize:N}=X,_=N-Y,K=_-q;if(K<=Y&&K>=-1){if(q>=_-1){let $=Q.getTotalSize()-Q.getOffset(J);return Y-$}let y=J2(Q,Y,j),D=Math.max(0,j-y),Z=q/N*j,G=Math.max(0,Math.min(1,1-K/Y)),v=Q.getOffset(J)-Q.getOffset(D),O=Q.getOffset(J)-z2(Q,Z,j);return O+(v-O)*G}let V=q/N,T=Q.getTotalSize(),A=V*T;return Q.getOffset(J)-A},X2=(J,q,Q,j,Y,X="start")=>{if(j===0)return 0;let U;if(Y.isCompressed){if(X==="end"&&J===j-1)return Math.max(0,Y.virtualSize-Q);U=J/j*Y.virtualSize}else U=q.getOffset(J);let N=q.getSize(J);switch(X){case"center":U-=(Q-N)/2;break;case"end":U-=Q-N;break}let _=Y.virtualSize-Q;return Math.max(0,Math.min(U,_))},MJ=(J,q,Q,j)=>{if(Q===0)return 0;if(j.isCompressed){let Y=J/j.virtualSize;return Math.floor(Y*Q)}return q.indexAtOffset(J)},OJ=(J,q)=>{if(typeof q==="number")return J*q>y0;return q.getTotalSize()>y0},AJ=(J)=>{if(J<=0)return 0;return Math.floor(y0/J)},EJ=(J,q)=>{let Q=T0(J,q);if(!Q.isCompressed)return`No compression needed (${J} items, ${(Q.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(Q.ratio*100).toFixed(1)}% (${J} items, ${(Q.actualSize/1e6).toFixed(1)}M px → ${(Q.virtualSize/1e6).toFixed(1)}M px virtual)`};var Y2=s2(()=>{DJ=y0});var C0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var uJ={};D1(uJ,{createGridRenderer:()=>r0});var z1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let U=document.createElement("div");return U.setAttribute("role","option"),U},release:(X)=>{if(X.remove(),q.length<J)X.className="",X.textContent="",X.removeAttribute("style"),X.removeAttribute("data-index"),X.removeAttribute("data-id"),X.removeAttribute("data-row"),X.removeAttribute("data-col"),q.push(X)},clear:()=>{q.length=0}}},C1=2,r0=(J,q,Q,j,Y,X,U,N,_=!1)=>{let K=z1(),V=new Map,T=X,A=!1,y=null,D=0,b=0,Z="",G=-1,v=(E)=>{if(y&&D===E)return y;return y=T0(E,Q),D=E,y},O={selected:!1,focused:!1},$=(E,L)=>{return O.selected=E,O.focused=L,O},C=`${Y}-item ${Y}-grid-item`,W=`${Y}-item--selected`,d=`${Y}-item--focused`,S=(E,L)=>{if(typeof L==="string")E.innerHTML=L;else E.replaceChildren(L)},F=(E,L,z)=>{E.classList.toggle(W,L),E.classList.toggle(d,z)},h=(E,L)=>{let z=j.getRow(E);if(L){let M=L.totalItems,w=v(M);if(w.isCompressed)return h0(z,L.scrollPosition,Q,M,L.containerSize,w,L.rangeStart)}return Q.getOffset(z)},s=(E,L)=>{let z=A&&j.getCol(E)===0,M=z?0:j.getCol(E),w=z?0:j.getColumnOffset(M,T),g;if(A){let Q0=j.getRow(E),m=0,q0=new Set;for(let X0=0;X0<E;X0++){let c=j.getRow(X0);if(c<Q0&&!q0.has(c)){let n=Q.getSize(X0);m+=n,q0.add(c)}}g=m}else g=h(E,L);if(_)return`translate(${Math.round(g)}px, ${Math.round(w)}px)`;return`translate(${Math.round(w)}px, ${Math.round(g)}px)`},x=(E,L)=>{E.style.transform=L},r=(E,L)=>{let z=E.dataset.id?.startsWith("__group_header"),M=z?T:j.getColumnWidth(T),w;if(A||z)w=Q.getSize(L)-j.gap;else{let g=j.getRow(L);w=Q.getSize(g)-j.gap}if(_)E.style.width=`${w}px`,E.style.height=`${M}px`;else E.style.width=`${M}px`,E.style.height=`${w}px`},l=(E,L,z,M,w)=>{let g=K.acquire(),Q0=$(z,M);if(g.className=C,g.dataset.index=String(E),g.dataset.id=String(L.id),g.dataset.row=String(j.getRow(E)),g.dataset.col=String(j.getCol(E)),g.ariaSelected=String(z),N)g.id=`${N}-item-${E}`;if(U){let q0=U();if(q0!==G)G=q0,Z=String(q0);g.setAttribute("aria-setsize",Z),g.setAttribute("aria-posinset",String(E+1))}r(g,E);let m=q(L,E,Q0);return S(g,m),F(g,z,M),x(g,w),{element:g,lastItemId:L.id,lastSelected:z,lastFocused:M,lastTransform:w,lastSeenFrame:b}},B=(E,L,z,M,w)=>{if(b++,L.start===0&&E.length>0)A=C0(E[0]);for(let[m,q0]of V)if(m>=L.start&&m<=L.end)q0.lastSeenFrame=b;else if(b-q0.lastSeenFrame>C1)K.release(q0.element),V.delete(m);let g=!1;if(U){let m=U();if(m!==G)G=m,Z=String(m),g=!0}let Q0=null;for(let m=L.start;m<=L.end;m++){let q0=m-L.start,X0=E[q0];if(!X0){console.warn(`⚠️ RENDER: Missing item at index ${m} (range: ${L.start}-${L.end}, items.length: ${E.length})`);continue}let c=z.has(X0.id),n=m===M,e=V.get(m);if(e){let t=e.lastItemId!==X0.id,U0=e.lastSelected!==c,Z0=e.lastFocused!==n;if(t||U0||Z0){if(t){let W0=$(c,n),j0=q(X0,m,W0);S(e.element,j0),e.element.dataset.id=String(X0.id),e.element.dataset.row=String(j.getRow(m)),e.element.dataset.col=String(j.getCol(m)),r(e.element,m)}F(e.element,c,n),e.element.ariaSelected=String(c),e.lastItemId=X0.id,e.lastSelected=c,e.lastFocused=n}let V0=s(m,w);if(e.lastTransform!==V0)x(e.element,V0),e.lastTransform=V0;if(g)e.element.setAttribute("aria-setsize",Z)}else{let t=s(m,w),U0=l(m,X0,c,n,t);if(!Q0)Q0=document.createDocumentFragment();Q0.appendChild(U0.element),V.set(m,U0)}}if(Q0)J.appendChild(Q0)},u=(E)=>{for(let[L,z]of V){let M=s(L,E);if(z.lastTransform!==M)x(z.element,M),z.lastTransform=M}},k=(E,L,z,M)=>{let w=V.get(E);if(!w)return;let g=w.lastItemId!==L.id,Q0=w.lastSelected!==z,m=w.lastFocused!==M;if(g||Q0||m){let q0=$(z,M),X0=q(L,E,q0);S(w.element,X0),F(w.element,z,M),w.element.dataset.id=String(L.id),w.element.ariaSelected=String(z),r(w.element,E),w.lastItemId=L.id,w.lastSelected=z,w.lastFocused=M}},P=(E,L,z)=>{let M=V.get(E);if(!M)return;let w=M.lastSelected!==L,g=M.lastFocused!==z;if(w||g)F(M.element,L,z),M.lastSelected=L,M.lastFocused=z},I=(E)=>{return V.get(E)?.element},R=(E)=>{if(Math.abs(E-T)<1)return;T=E;for(let[L,z]of V){r(z.element,L);let M=s(L);x(z.element,M),z.lastTransform=M}},f=()=>{I0(J,V.keys(),(E)=>V.get(E)?.element)},a=()=>{for(let[,E]of V)K.release(E.element);V.clear()};return{render:B,updatePositions:u,updateItem:k,updateItemClasses:P,getElement:I,sortDOM:f,updateContainerWidth:R,clear:a,destroy:()=>{a(),K.clear()}}};var D2=s2(()=>{Y2()});var n2=2,o2=(J=0)=>{let q=[,,,,,];for(let Q=0;Q<5;Q++)q[Q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},R2=(J,q)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let X=J.samples[0];return X.position=q,X.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=q,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=q,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let X=(J.sampleIndex-J.sampleCount+5)%5,U=J.samples[X],N=q-U.position,_=Q-U.time;J.velocity=_>0?Math.abs(N)/_:0}return J.lastPosition=q,J.lastTime=Q,J};var Q2=(J,q)=>{let Q=new Map,j=(X)=>{let U=Q.get(X);return U!==void 0?U:J},Y=k0(j,q);return{getOffset(X){return Y.getOffset(X)},getSize(X){return j(X)},indexAtOffset(X){return Y.indexAtOffset(X)},getTotalSize(){return Y.getTotalSize()},getTotal(){return Y.getTotal()},rebuild(X){if(X<Y.getTotal()){for(let U of Q.keys())if(U>=X)Q.delete(U)}Y=k0(j,X)},isVariable(){return!0},setMeasuredSize(X,U){Q.set(X,U)},isMeasured(X){return Q.has(X)},getEstimatedSize(){return J},measuredCount(){return Q.size}}};var j2=()=>{let J={},q=(N,_)=>{if(!J[N])J[N]=new Set;return J[N].add(_),()=>Q(N,_)},Q=(N,_)=>{J[N]?.delete(_)};return{on:q,off:Q,emit:(N,_)=>{J[N]?.forEach((K)=>{try{K(_)}catch(V){console.error(`[vlist] Error in event handler for "${String(N)}":`,V)}})},once:(N,_)=>{let K=(V)=>{Q(N,K),_(V)};return q(N,K)},clear:(N)=>{if(N)delete J[N];else for(let _ in J)delete J[_]},listenerCount:(N)=>{return J[N]?.size??0}}};var i2=(J)=>{if(typeof J==="string"){let q=document.querySelector(J);if(!q)throw Error(`[vlist/builder] Container not found: ${J}`);return q}return J},t2=(J,q,Q,j)=>{let Y=document.createElement("div");if(Y.className=q,j)Y.classList.add(`${q}--horizontal`);Y.setAttribute("tabindex","0");let X=document.createElement("div");if(X.className=`${q}-viewport`,X.setAttribute("tabindex","-1"),j)X.style.overflowX="auto",X.style.overflowY="hidden";else X.style.overflow="auto";X.style.height="100%",X.style.width="100%";let U=document.createElement("div");if(U.className=`${q}-content`,U.style.position="relative",j)U.style.height="100%";else U.style.width="100%";let N=document.createElement("div");if(N.className=`${q}-items`,N.setAttribute("role","listbox"),Q)N.setAttribute("aria-label",Q);if(j)N.setAttribute("aria-orientation","horizontal");if(N.style.position="relative",j)N.style.height="100%";else N.style.width="100%";return U.appendChild(N),X.appendChild(U),Y.appendChild(X),J.appendChild(Y),{root:Y,viewport:X,content:U,items:N}};var e2=(J=100)=>{let q=[];return{acquire:()=>{let Q=q.pop();if(Q)return Q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(Q)=>{if(q.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),q.push(Q)},clear:()=>{q.length=0}}};var JJ=(J,q,Q,j,Y)=>{if(j===0||q===0){Y.start=0,Y.end=0;return}let X=Q.indexAtOffset(J),U=d0(Q,X,q,j),N=X+U;Y.start=Math.max(0,X),Y.end=Math.min(j-1,Math.max(0,N))},QJ=(J,q,Q,j)=>{if(Q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q)},jJ=(J,q,Q,j,Y)=>{if(j===0)return 0;let X=Math.max(0,Math.min(J,j-1)),U=q.getOffset(X),N=q.getSize(X),_=Math.max(0,q.getTotalSize()-Q),K;switch(Y){case"center":K=U-(Q-N)/2;break;case"end":K=U-Q+N;break;default:K=U}return Math.max(0,Math.min(K,_))};var C2=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,R0=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:300};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??300};return{align:"start",behavior:"auto",duration:300}},f0=(J,q)=>{let Q=null,j=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null};return{animateScroll:(X,U,N)=>{if(j(),Math.abs(U-X)<1){J.scrollTo(U);return}let _=performance.now(),K=(V)=>{let T=V-_,A=Math.min(T/N,1),y=X+(U-X)*C2(A);if(J.scrollTo(y),q(),A<1)Q=requestAnimationFrame(K);else Q=null};Q=requestAnimationFrame(K)},cancelScroll:j}};var qJ=(J,q)=>{let{dom:Q,emitter:j,resolvedConfig:Y,rawConfig:X,rendered:U,pool:N,sharedState:_,isHorizontal:K,classPrefix:V,contentSizeHandlers:T,idleHandlers:A,afterScroll:y,clickHandlers:D,keydownHandlers:b,resizeHandlers:Z,destroyHandlers:G,methods:v,onScrollFrame:O,resizeObserver:$,renderRange:C}=q;return{get dom(){return Q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return Y},get rawConfig(){return X},get renderer(){return{render:(W,d,S,F,h)=>{J.ss=S,J.fi=F,J.ffn()},updateItemClasses:(W,d,S)=>{let F=U.get(W);if(!F)return;F.classList.toggle(`${V}-item--selected`,d),F.classList.toggle(`${V}-item--focused`,S),F.ariaSelected=d?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(W)=>U.get(W)??null,clear:()=>{},destroy:()=>{}}},set renderer(W){},get dataManager(){return J.dm},set dataManager(W){J.dm=W},get scrollController(){return J.sc},set scrollController(W){J.sc=W},state:_,getContainerWidth(){return J.cw},afterScroll:y,idleHandlers:A,clickHandlers:D,keydownHandlers:b,resizeHandlers:Z,contentSizeHandlers:T,destroyHandlers:G,methods:v,replaceTemplate(W){J.at=W},replaceRenderer(W){},replaceDataManager(W){J.dm=W},replaceScrollController(W){J.sc=W},getItemsForRange(W){let{dm:d,it:S}=J,F=[];for(let h=W.start;h<=W.end;h++){let s=d?d.getItem(h):S[h];if(s)F.push(s)}return F},getAllLoadedItems(){let W=J.dm;if(W){let d=W.getTotal(),S=[];for(let F=0;F<d;F++){let h=W.getItem(F);if(h)S.push(h)}return S}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let W=J.hc;return{isCompressed:!1,actualSize:W.getTotalSize(),virtualSize:W.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:C.start}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,W]of U)W.remove(),N.release(W);U.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(W,d){J.rfn=W,J.ffn=d},setVirtualTotalFn(W){J.vtf=W},rebuildSizeCache(W){J.hc.rebuild(W??J.vtf())},setSizeConfig(W){J.hc=k0(W,J.vtf())},updateContentSize(W){let d=`${W}px`;if(K)Q.content.style.width=d;else Q.content.style.height=d},updateCompressionMode(){},setVisibleRangeFn(W){J.gvr=W},setScrollToPosFn(W){J.gsp=W},setPositionElementFn(W){J.pef=W},setScrollFns(W,d){J.sgt=W,J.sst=(S)=>{d(S),O()}},setScrollTarget(W){J.st.removeEventListener("scroll",O),J.st=W,J.st.addEventListener("scroll",O,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(W){J.gcw=W.width,J.gch=W.height,J.cw=W.width(),J.ch=W.height(),_.viewportState.containerSize=K?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,$.unobserve(Q.viewport)},disableWheelHandler(){if(J.wh)Q.viewport.removeEventListener("wheel",J.wh),J.wh=null}}},XJ=(J,q,Q)=>{let{rendered:j,itemState:Y,contentSizeHandlers:X,applyTemplate:U,updateContentSize:N}=q,_=()=>{J.hc.rebuild(J.vtf()),N(),Q.updateCompressionMode();for(let K=0;K<X.length;K++)X[K]();J.ffn()};return{getState:()=>({total:J.it.length,cached:J.it.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>J.it.length,getCached:()=>J.it.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(K)=>J.it[K],isItemLoaded:(K)=>K>=0&&K<J.it.length&&J.it[K]!==void 0,getItemsInRange:(K,V)=>{let T=J.it,A=[],y=Math.max(0,K),D=Math.min(V,T.length-1);for(let b=y;b<=D;b++)A.push(T[b]);return A},setTotal:(K)=>{},setItems:(K,V=0,T)=>{let A=J.it;if(V===0&&(T!==void 0||A.length===0))J.it=K;else{let y=V+K.length;if(A.length<y)A.length=y;for(let D=0;D<K.length;D++)A[V+D]=K[D]}if(J.ii)_()},updateItem:(K,V)=>{let T=J.it;if(K<0||K>=T.length)return!1;let A=T[K];if(!A)return!1;T[K]={...A,...V};let y=j.get(K);if(y)U(y,J.at(T[K],K,Y)),y.dataset.id=String(T[K].id);return!0},removeItem:(K)=>{if(K<0||K>=J.it.length)return!1;if(J.it.splice(K,1),J.ii)_();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),N(),J.ffn()}}},YJ=(J,q)=>{let{dom:Q,classPrefix:j}=q;return{getScrollTop:()=>J.sgt(),scrollTo:(Y)=>{J.sst(Y),J.ls=Y,J.rfn()},scrollBy:(Y)=>{let X=J.sgt()+Y;J.sst(X),J.ls=X,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(Y=2)=>J.sab(Y),getScrollPercentage:()=>{let Y=J.hc.getTotalSize(),X=Math.max(0,Y-J.ch);return X>0?J.ls/X:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>Q.root.classList.contains(`${j}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(Y)=>{J.ch=Y},destroy:()=>{}}};var O1=3,A1="vlist",KJ=150,E1=0,BJ=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let q=J.orientation==="horizontal",Q=q?"width":"height",j=q?"estimatedWidth":"estimatedHeight",Y=q?J.item.width:J.item.height,X=q?J.item.estimatedWidth:J.item.estimatedHeight;if(Y==null&&X==null)throw Error(`[vlist/builder] item.${Q} or item.${j} is required${q?" when orientation is 'horizontal'":""}`);if(Y!=null){if(typeof Y==="number"&&Y<=0)throw Error(`[vlist/builder] item.${Q} must be a positive number`);if(typeof Y!=="number"&&typeof Y!=="function")throw Error(`[vlist/builder] item.${Q} must be a number or a function (index) => number`)}else if(X!=null){if(typeof X!=="number"||X<=0)throw Error(`[vlist/builder] item.${j} must be a positive number`)}if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(q&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let U=new Map,N=!1,_={use(K){if(N)throw Error("[vlist/builder] Cannot call .use() after .build()");return U.set(K.name,K),_},build(){if(N)throw Error("[vlist/builder] .build() can only be called once");return N=!0,F1(J,U,q,Y,X??null)}};return _};function F1(J,q,Q,j,Y){let{item:X,items:U,overscan:N=O1,classPrefix:_=A1,ariaLabel:K,reverse:V=!1,scroll:T}=J,A=T,y=A?.wheel??!0,D=A?.wrap??!1,b=V,Z=`${_}-${E1++}`,G=j??Y,v=j==null&&Y!=null,O=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,$=Q?typeof X.height==="number"?X.height:void 0:typeof X.width==="number"?X.width:void 0,C={overscan:N,classPrefix:_,reverse:b,wrap:D,horizontal:Q,ariaIdPrefix:Z},W=Array.from(q.values()).sort((H,o)=>(H.priority??50)-(o.priority??50)),d=new Set(W.map((H)=>H.name));for(let H of W)if(H.conflicts){for(let o of H.conflicts)if(d.has(o))throw Error(`[vlist/builder] ${H.name} and ${o} cannot be combined`)}if(b){if(d.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let S=i2(J.container),F=t2(S,_,K,Q);if(A?.wheel===!1)if(Q)F.viewport.style.overflowX="hidden";else F.viewport.style.overflow="hidden";if(A?.scrollbar==="none")F.viewport.classList.add(`${_}-viewport--no-scrollbar`);let h=j2(),s=U||[],x=typeof G==="function"&&(q.has("withGrid")||q.has("withMasonry")),r=v?Q2(Y,s.length):k0(G,x?0:s.length),l=e2(),B={it:s,hc:r,ch:F.viewport.clientHeight,cw:F.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:o2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:Q?()=>F.viewport.scrollLeft:()=>F.viewport.scrollTop,sst:Q?(H)=>{F.viewport.scrollLeft=H}:(H)=>{F.viewport.scrollTop=H},sab:(H=2)=>{let o=B.hc.getTotalSize();return B.ls+B.ch>=o-H},sic:!1,rfn:null,ffn:null,gvr:(H,o,i,J0,K0)=>{JJ(H,o,i,J0,K0)},gsp:(H,o,i,J0,K0)=>{return jJ(H,o,i,J0,K0)},pef:null,at:X.template,vre:!0,st:F.viewport,wh:null,gcw:()=>B.cw,gch:()=>B.ch};B.vtf=()=>B.dm?B.dm.getTotal():B.it.length;let u=null,k=null,P=!1,I={start:0,end:0},R={start:0,end:0},f={start:-1,end:-1},a={viewportState:{scrollPosition:0,containerSize:Q?B.cw:B.ch,totalSize:B.hc.getTotalSize(),actualSize:B.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},p=new Map,E=()=>{I0(F.items,p.keys(),(H)=>p.get(H))},L=v?new WeakMap:null,z=v?r:null,M=null,w=0,g=!1,Q0=()=>{if(!v)return;if(g){let H=B.sgt(),o=Q?F.viewport.scrollWidth-F.viewport.clientWidth:F.viewport.scrollHeight-F.viewport.clientHeight,i=o>0&&H>=o-2;if(x0(),g=!1,i){let J0=Math.max(0,B.hc.getTotalSize()-(Q?B.cw:B.ch));if(J0>H)B.sst(J0),B.ls=J0,B.rfn()}}};if(v&&z&&L)M=new ResizeObserver((H)=>{if(B.id)return;let o=!1,i=I.start;for(let J0 of H){let K0=L.get(J0.target);if(K0===void 0)continue;let Y0=Q?J0.borderBoxSize[0].inlineSize:J0.borderBoxSize[0].blockSize;if(!z.isMeasured(K0)){let B0=z.getSize(K0);if(z.setMeasuredSize(K0,Y0),o=!0,K0<i&&Y0!==B0)w+=Y0-B0;M.unobserve(J0.target);let N0=J0.target;if(Q)N0.style.width=`${Y0}px`;else N0.style.height=`${Y0}px`}}if(!o)return;if(z.rebuild(B.vtf()),B.hc=z,w!==0){let J0=B.sgt();B.sst(J0+w),B.ls=J0+w,w=0}if(P)g=!0;else{let J0=B.sgt(),K0=Q?F.viewport.scrollWidth-F.viewport.clientWidth:F.viewport.scrollHeight-F.viewport.clientHeight,Y0=K0>0&&J0>=K0-2;if(x0(),g=!1,Y0){let B0=Math.max(0,B.hc.getTotalSize()-(Q?B.cw:B.ch));if(B0>J0)B.sst(B0),B.ls=B0}}f.start=-1,f.end=-1,B.rfn()});let m={selected:!1,focused:!1},q0=`${_}-item`,X0=X.striped===!0,c=`${_}-item--odd`,n=[],e=[],t=[],U0=[],Z0=[],V0=[],W0=[],j0=new Map,M0=null,O0=null,D0=!1,$0=()=>{if(D0)return;D0=!0,M0=j0.get("_getSelectedIds")??null,O0=j0.get("_getFocusedIndex")??null},G0=(H,o)=>{if(typeof o==="string")H.innerHTML=o;else H.replaceChildren(o)},b0=(H,o)=>{let i=Math.round(B.hc.getOffset(o));if(Q)H.style.transform=`translateX(${i}px)`;else H.style.transform=`translateY(${i}px)`};B.pef=b0;let v0=(H,o)=>{let i=l.acquire();i.className=q0;let J0=!v||z&&z.isMeasured(H);if(Q){if(J0)i.style.width=`${B.hc.getSize(H)}px`;else i.style.width="";if($!=null)i.style.height=`${$}px`}else if(J0)i.style.height=`${B.hc.getSize(H)}px`;else i.style.height="";if(i.dataset.index=String(H),i.dataset.id=String(o.id),i.ariaSelected="false",i.id=`${Z}-item-${H}`,B.la=String(B.vtf()),i.setAttribute("aria-setsize",B.la),i.setAttribute("aria-posinset",String(H+1)),String(o.id).startsWith("__placeholder_"))i.classList.add(`${_}-item--placeholder`);if(X0)i.classList.toggle(c,(H&1)===1);return G0(i,B.at(o,H,m)),B.pef(i,H),i},x0=()=>{let H=`${B.hc.getTotalSize()}px`;if(Q)F.content.style.width=H;else F.content.style.height=H},rJ=()=>{if(B.id)return;$0();let H=M0?M0():B.ss,o=O0?O0():B.fi,i=B.vtf(),J0=Q?B.cw:B.ch;if(B.gvr(B.ls,J0,B.hc,i,I),QJ(I,N,i,R),R.start===f.start&&R.end===f.end){if(B.sic)for(let[_0,A0]of p)B.pef(A0,_0);return}let K0=String(i),Y0=K0!==B.la;B.la=K0;for(let[_0,A0]of p)if(_0<R.start||_0>R.end)A0.remove(),l.release(A0),p.delete(_0);let B0=document.createDocumentFragment(),N0=[],L0=[];for(let _0=R.start;_0<=R.end;_0++){let A0=B.dm?B.dm.getItem(_0):B.it[_0];if(A0===void 0)continue;let F0=p.get(_0);if(F0){let H0=F0.dataset.id,m0=String(A0.id);if(H0!==m0){let Z1=H0?.startsWith("__placeholder_"),l2=m0.startsWith("__placeholder_");G0(F0,B.at(A0,_0,m)),F0.dataset.id=m0;let a2=!v||z&&z.isMeasured(_0);if(Q)F0.style.width=a2?`${B.hc.getSize(_0)}px`:"";else F0.style.height=a2?`${B.hc.getSize(_0)}px`:"";if(l2)F0.classList.add(`${_}-item--placeholder`);else F0.classList.remove(`${_}-item--placeholder`);if(Z1&&!l2)F0.classList.add(`${_}-item--replaced`),setTimeout(()=>{F0.classList.remove(`${_}-item--replaced`)},300)}B.pef(F0,_0);let e0=H.has(A0.id),U1=_0===o;if(F0.classList.toggle(`${_}-item--selected`,e0),F0.classList.toggle(`${_}-item--focused`,U1),F0.ariaSelected=e0?"true":"false",Y0)F0.setAttribute("aria-setsize",B.la)}else{let H0=v0(_0,A0);L0.push({index:_0,element:H0});let m0=H.has(A0.id),e0=_0===o;if(m0)H0.classList.add(`${_}-item--selected`),H0.ariaSelected="true";if(e0)H0.classList.add(`${_}-item--focused`);B0.appendChild(H0),N0.push({index:_0,element:H0})}}if(N0.length>0){F.items.appendChild(B0);for(let{index:_0,element:A0}of N0)p.set(_0,A0)}if(v&&M&&z&&L){for(let{index:_0,element:A0}of L0)if(!z.isMeasured(_0))L.set(A0,_0),M.observe(A0)}f.start=R.start,f.end=R.end,a.lastRenderRange.start=R.start,a.lastRenderRange.end=R.end,a.viewportState.scrollPosition=B.ls,a.viewportState.visibleRange.start=I.start,a.viewportState.visibleRange.end=I.end,a.viewportState.renderRange.start=R.start,a.viewportState.renderRange.end=R.end,h.emit("range:change",{range:{start:R.start,end:R.end}})},sJ=()=>{f.start=-1,f.end=-1,B.rfn()};B.rfn=rJ,B.ffn=sJ;let H2=()=>{if(B.id)return;let H=B.sgt(),o=H>=B.ls?"down":"up";if(B.vt=R2(B.vt,H),!F.root.classList.contains(`${_}--scrolling`))F.root.classList.add(`${_}--scrolling`);P=!0,B.ls=H,B.rfn(),h.emit("scroll",{scrollPosition:H,direction:o}),h.emit("velocity:change",{velocity:B.vt.velocity,reliable:B.vt.sampleCount>=n2});for(let i=0;i<n.length;i++)n[i](H,o);if(k)clearTimeout(k);k=setTimeout(()=>{F.root.classList.remove(`${_}--scrolling`),P=!1,B.vt.velocity=0,B.vt.sampleCount=0,h.emit("velocity:change",{velocity:0,reliable:!1}),Q0(),E();for(let i=0;i<e.length;i++)e[i]()},A?.idleTimeout??KJ)},S0=null;if(B.st.addEventListener("scroll",H2,{passive:!0}),y&&!Q&&!O)S0=(H)=>{if(a.viewportState.isCompressed)return;let o=F.viewport.scrollWidth>F.viewport.clientWidth;if(o&&Math.abs(H.deltaX)>Math.abs(H.deltaY))return;if(H.preventDefault(),o&&H.deltaX!==0)F.viewport.scrollLeft+=H.deltaX;let i=B.sgt(),J0=H.deltaY,K0=F.viewport.scrollHeight-F.viewport.clientHeight,Y0=Math.max(0,Math.min(i+J0,K0));if(Math.abs(Y0-i)<1){if(B.vt.velocity!==0)B.vt.velocity=0,B.vt.sampleCount=0,h.emit("velocity:change",{velocity:0,reliable:!1});return}B.sst(Y0),B.ls=Y0,B.vt=R2(B.vt,Y0),B.rfn();let B0=Y0>=i?"down":"up";if(h.emit("scroll",{scrollPosition:Y0,direction:B0}),!F.root.classList.contains(`${_}--scrolling`))F.root.classList.add(`${_}--scrolling`);if(P=!0,k)clearTimeout(k);k=setTimeout(()=>{F.root.classList.remove(`${_}--scrolling`),P=!1,B.vt.velocity=0,B.vt.sampleCount=0,h.emit("velocity:change",{velocity:0,reliable:!1}),Q0(),E();for(let N0=0;N0<e.length;N0++)e[N0]()},A?.idleTimeout??KJ)},B.wh=S0,F.viewport.addEventListener("wheel",S0,{passive:!1});else if(Q&&y)S0=(H)=>{if(H.deltaX)return;H.preventDefault(),F.viewport.scrollLeft+=H.deltaY},B.wh=S0,F.viewport.addEventListener("wheel",S0,{passive:!1});let x2=(H)=>{let i=H.target.closest("[data-index]");if(i){let J0=parseInt(i.dataset.index??"-1",10);if(J0>=0){let K0=B.dm?.getItem(J0)??B.it[J0];if(K0){if(K0.__groupHeader)return;h.emit("item:click",{item:K0,index:J0,event:H})}}}for(let J0=0;J0<t.length;J0++)t[J0](H)},nJ=(H)=>{let i=H.target.closest("[data-index]");if(i){let J0=parseInt(i.dataset.index??"-1",10);if(J0>=0){let K0=B.dm?.getItem(J0)??B.it[J0];if(K0){if(K0.__groupHeader)return;h.emit("item:dblclick",{item:K0,index:J0,event:H})}}}},m2=(H)=>{for(let o=0;o<U0.length;o++)U0[o](H)};F.items.addEventListener("click",x2),F.items.addEventListener("dblclick",nJ),F.root.addEventListener("keydown",m2);let k2=new ResizeObserver((H)=>{if(B.id)return;for(let o of H){let i=o.contentRect.height,J0=o.contentRect.width,K0=Q?J0:i,Y0=Q?B.cw:B.ch;if(B.cw=J0,B.ch=i,Math.abs(K0-Y0)>1){if(a.viewportState.containerSize=K0,B.ii)x0(),B.rfn(),h.emit("resize",{height:i,width:J0})}if(B.ii)for(let B0=0;B0<Z0.length;B0++)Z0[B0](J0,i)}});if(B.vre)k2.observe(F.viewport);let y2={dom:F,emitter:h,resolvedConfig:C,rawConfig:J,rendered:p,pool:l,itemState:m,sharedState:a,renderRange:R,isHorizontal:Q,classPrefix:_,contentSizeHandlers:V0,idleHandlers:e,afterScroll:n,clickHandlers:t,keydownHandlers:U0,resizeHandlers:Z0,destroyHandlers:W0,methods:j0,onScrollFrame:H2,resizeObserver:k2,applyTemplate:G0,updateContentSize:x0},E0=qJ(B,y2);B.dm=XJ(B,y2,E0),B.sc=YJ(B,y2);let d2=new Map;for(let H of W)if(H.methods)for(let o of H.methods){let i=d2.get(o);if(i)throw Error(`[vlist/builder] Method "${o}" is registered by both "${i}" and "${H.name}"`);d2.set(o,H.name)}for(let H of W)H.setup(E0);if(!j0.has("_getFocusedIndex")){let H=-1,o=`${_}-item--focused`,i=(Y0,B0)=>{let N0=B.vtf();if(B0<0||B0>=N0)return;H=B0,F.root.setAttribute("aria-activedescendant",`${Z}-item-${B0}`);let L0=Q?B.cw:B.ch;if(B.sst(B.gsp(B0,B.hc,L0,N0,"center")),B.ls=B.sgt(),B.rfn(),Y0>=0&&Y0!==B0)p.get(Y0)?.classList.remove(o);p.get(B0)?.classList.add(o)},J0=()=>{if(B.id)return;if(!F.root.matches(":focus-visible"))return;let Y0=B.vtf();if(Y0===0)return;i(-1,H>=0?Math.min(H,Y0-1):0)};F.root.addEventListener("focusin",J0);let K0=(Y0)=>{if(B.id)return;let B0=Y0.relatedTarget;if(B0&&F.root.contains(B0))return;if(H>=0)p.get(H)?.classList.remove(o);F.root.removeAttribute("aria-activedescendant")};F.root.addEventListener("focusout",K0),U0.push((Y0)=>{if(B.id)return;let B0=B.vtf();if(B0===0)return;let N0=H,L0=N0;switch(Y0.key){case"ArrowUp":L0=N0<=0?B0-1:N0-1;break;case"ArrowDown":L0=N0>=B0-1?0:N0+1;break;case"Home":L0=0;break;case"End":L0=B0-1;break;default:return}Y0.preventDefault(),i(N0,L0)}),W0.push(()=>{F.root.removeEventListener("focusin",J0),F.root.removeEventListener("focusout",K0)})}if(B.ii=!0,E0.state.isInitialized=!0,x0(),B.rfn(),b&&B.it.length>0){let H=B.gsp(B.it.length-1,B.hc,B.ch,B.it.length,"end");B.sst(H),B.ls=H,B.rfn()}let oJ=(H)=>{E0.dataManager.setItems(H,0,H.length)},iJ=b?(H)=>{let o=B.sab(2),i=B.it.length;if(E0.dataManager.setItems(H,i),o&&B.it.length>0){let J0=B.gsp(B.it.length-1,B.hc,B.ch,B.it.length,"end");B.sst(J0),B.ls=J0,B.rfn()}}:(H)=>{let o=B.it.length;E0.dataManager.setItems(H,o)},tJ=b?(H)=>{let o=B.sgt(),i=B.hc.getTotalSize(),J0=[...B.it];E0.dataManager.clear(),E0.dataManager.setItems([...H,...J0],0);let Y0=B.hc.getTotalSize()-i;if(Y0>0)B.sst(o+Y0),B.ls=o+Y0}:(H)=>{let o=[...B.it];E0.dataManager.clear(),E0.dataManager.setItems([...H,...o],0)},eJ=(H,o)=>{E0.dataManager.updateItem(H,o)},J1=(H)=>{E0.dataManager.removeItem(H)},Q1=async()=>{if(E0.dataManager.reload)await E0.dataManager.reload()},t0=()=>{if(u!==null)cancelAnimationFrame(u),u=null},j1=(H,o,i)=>{if(t0(),Math.abs(o-H)<1){B.sst(o),B.ls=o,B.rfn();return}let J0=performance.now(),K0=(Y0)=>{let B0=Y0-J0,N0=Math.min(B0/i,1),L0=H+(o-H)*C2(N0);if(B.sst(L0),B.ls=L0,B.rfn(),N0<1)u=requestAnimationFrame(K0);else u=null};u=requestAnimationFrame(K0)},q1=(H,o)=>{let{align:i,behavior:J0,duration:K0}=R0(o),Y0=B.vtf(),B0=H;if(D&&Y0>0)B0=(B0%Y0+Y0)%Y0;let N0=B.gsp(B0,B.hc,B.ch,Y0,i);if(J0==="smooth")j1(B.sgt(),N0,K0);else t0(),B.sst(N0)},X1=()=>B.sgt(),Y1=(H,o)=>{return h.on(H,o)},K1=(H,o)=>{h.off(H,o)},B1=()=>{if(B.id)return;if(B.id=!0,E0.state.isDestroyed=!0,F.items.removeEventListener("click",x2),F.root.removeEventListener("keydown",m2),B.st.removeEventListener("scroll",H2),k2.disconnect(),M)M.disconnect(),M=null;if(B.wh)F.viewport.removeEventListener("wheel",B.wh);if(k)clearTimeout(k);for(let H=0;H<W0.length;H++)W0[H]();for(let H of W)if(H.destroy)H.destroy();t0();for(let[,H]of p)H.remove(),l.release(H);p.clear(),l.clear(),h.clear(),F.root.remove()},c2={get element(){return F.root},get items(){if(j0.has("_getItems"))return j0.get("_getItems")();return B.it},get total(){if(j0.has("_getTotal"))return j0.get("_getTotal")();return B.vtf()},setItems:j0.has("setItems")?j0.get("setItems"):oJ,appendItems:j0.has("appendItems")?j0.get("appendItems"):iJ,prependItems:j0.has("prependItems")?j0.get("prependItems"):tJ,updateItem:j0.has("updateItem")?j0.get("updateItem"):eJ,removeItem:j0.has("removeItem")?j0.get("removeItem"):J1,reload:j0.has("reload")?j0.get("reload"):Q1,scrollToIndex:j0.has("scrollToIndex")?j0.get("scrollToIndex"):q1,cancelScroll:j0.has("cancelScroll")?j0.get("cancelScroll"):t0,getScrollPosition:j0.has("getScrollPosition")?j0.get("getScrollPosition"):X1,on:Y1,off:K1,destroy:B1};for(let[H,o]of j0){if(H.charCodeAt(0)===95||H==="setItems"||H==="appendItems"||H==="prependItems"||H==="updateItem"||H==="removeItem"||H==="reload"||H==="scrollToIndex"||H==="scrollToItem"||H==="cancelScroll"||H==="getScrollPosition")continue;c2[H]=o}return c2}Y2();var u0=(J,q,Q={},j="vlist",Y=!1)=>{let{autoHide:X=!0,autoHideDelay:U=1000,minThumbSize:N=30,showOnHover:_=!0,hoverZoneWidth:K=16,showOnViewportEnter:V=!0}=Q,T=0,A=0,y=0,D=0,b=!1,Z=!1,G=0,v=0,O=0,$=null,C=!1,W=null,d=null,S=Y?"width":"height",F=Y?"translateX":"translateY",h=Y?(m)=>m.clientX:(m)=>m.clientY,s=Y?"left":"top",x=document.createElement("div"),r=document.createElement("div"),l=_?document.createElement("div"):null,B=()=>{if(x.className=`${j}-scrollbar`,r.className=`${j}-scrollbar-thumb`,Y)x.classList.add(`${j}-scrollbar--horizontal`);if(x.appendChild(r),J.appendChild(x),l){if(l.className=`${j}-scrollbar-hover`,Y)l.classList.add(`${j}-scrollbar-hover--horizontal`),l.style.height=`${K}px`;else l.style.width=`${K}px`;J.appendChild(l)}},u=()=>{if($)clearTimeout($),$=null},k=()=>{if(!X)return;u(),$=setTimeout(I,U)},P=()=>{if(T<=A)return;if(u(),!C)x.classList.add(`${j}-scrollbar--visible`),C=!0;if(X&&!b&&!Z)k()},I=()=>{if(b||Z)return;x.classList.remove(`${j}-scrollbar--visible`),C=!1},R=(m,q0)=>{T=m,A=q0;let X0=T>A;if(x.style.display=X0?"":"none",!X0){I();return}let c=A/T;y=Math.max(N,c*A),r.style[S]=`${y}px`,D=A-y,f(O)},f=(m)=>{if(O=m,T<=A||D<=0)return;let q0=T-A,c=Math.min(1,Math.max(0,m/q0))*D;r.style.transform=`${F}(${c}px)`},a=(m)=>{if(m.target===r)return;let q0=x.getBoundingClientRect(),n=h(m)-q0[s]-y/2,t=Math.max(0,Math.min(n,D))/D,U0=T-A,Z0=t*U0;q(Z0),P()},p=(m)=>{m.preventDefault(),m.stopPropagation(),b=!0,G=h(m),v=O,u(),x.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",E),document.addEventListener("mouseup",L)},E=(m)=>{if(!b)return;let q0=h(m)-G,X0=D>0?q0/D:0,c=T-A,n=X0*c,e=Math.max(0,Math.min(v+n,c)),U0=e/c*D;if(r.style.transform=`${F}(${U0}px)`,d=e,W===null)W=requestAnimationFrame(()=>{if(d!==null)q(d);W=null})},L=()=>{if(b=!1,W!==null)cancelAnimationFrame(W),W=null;if(d!==null)q(d),d=null;if(x.classList.remove(`${j}-scrollbar--dragging`),X&&!Z)k();document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",L)},z=()=>{if(V)P()},M=()=>{if(!b){if(Z=!1,X)k()}},w=()=>{Z=!0,u(),P()},g=()=>{if(Z=!1,!b&&X)k()},Q0=()=>{if(u(),W!==null)cancelAnimationFrame(W),W=null;if(x.removeEventListener("click",a),x.removeEventListener("mouseenter",w),x.removeEventListener("mouseleave",g),r.removeEventListener("mousedown",p),J.removeEventListener("mouseenter",z),J.removeEventListener("mouseleave",M),document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",L),l){if(l.removeEventListener("mouseenter",w),l.removeEventListener("mouseleave",g),l.parentNode)l.parentNode.removeChild(l)}if(x.parentNode)x.parentNode.removeChild(x)};if(B(),x.addEventListener("click",a),x.addEventListener("mouseenter",w),x.addEventListener("mouseleave",g),r.addEventListener("mousedown",p),J.addEventListener("mouseenter",z),J.addEventListener("mouseleave",M),l)l.addEventListener("mouseenter",w),l.addEventListener("mouseleave",g);return{show:P,hide:I,updateBounds:R,updatePosition:f,isVisible:()=>C,destroy:Q0}};var FJ=(J)=>{let q=null;return{name:"withScrollbar",priority:30,setup(Q){let{dom:j,config:Y}=Q,{classPrefix:X,horizontal:U}=Y;if(q=u0(j.viewport,(K)=>Q.scrollController.scrollTo(K),J??{},X,U),!j.viewport.classList.contains(`${X}-viewport--custom-scrollbar`))j.viewport.classList.add(`${X}-viewport--custom-scrollbar`);let N=Q.getCachedCompression();q.updateBounds(N.virtualSize,Q.state.viewportState.containerSize);let _=q;Q.afterScroll.push((K,V)=>{_.updatePosition(K),_.show()}),Q.resizeHandlers.push((K,V)=>{if(_){let T=Q.getCachedCompression();_.updateBounds(T.virtualSize,Q.state.viewportState.containerSize)}}),Q.contentSizeHandlers.push(()=>{if(_){let K=Q.getCachedCompression();_.updateBounds(K.virtualSize,Q.state.viewportState.containerSize)}}),Q.destroyHandlers.push(()=>{if(_)_.destroy()})},destroy(){if(q)q.destroy(),q=null}}};var LJ=(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}},K2=(J,q)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let X=J.samples[0];return X.position=q,X.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=q,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=q,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let X=(J.sampleIndex-J.sampleCount+8)%8,U=J.samples[X],N=q-U.position,_=Q-U.time;J.velocity=_>0?N/_:0}return J.lastPosition=q,J.lastTime=Q,J},L1=(J)=>J.sampleCount>=3,TJ=(J,q={})=>{let{wheel:Q=!0,sensitivity:j=1,smoothing:Y=!1,idleTimeout:X=150,onScroll:U,onIdle:N,scrollElement:_,horizontal:K=!1}=q,V=!!_,T=0,A=0,y=V?K?window.innerWidth:window.innerHeight:K?J.clientWidth:J.clientHeight,D=q.compressed??!1,b=q.compression,Z=LJ(),G=!1,v=null,$=B2(()=>{let M=K?J.scrollLeft:J.scrollTop,w=M>=T?"down":"up";if(Z=K2(Z,M),T=M,U)U({scrollTop:T,direction:w,velocity:Z.velocity});h()}),W=B2(()=>{let M=J.getBoundingClientRect(),w=K?Math.max(0,-M.left):Math.max(0,-M.top),g=w>=T?"down":"up";if(Z=K2(Z,w),T=w,!G)G=!0;if(U)U({scrollTop:T,direction:g,velocity:Z.velocity});h()}),d=(M)=>{M.preventDefault()},S=(M)=>{if(M.deltaX)return;M.preventDefault(),J.scrollLeft+=M.deltaY},F=(M)=>{if(!D)return;M.preventDefault();let w=(K?M.deltaX||M.deltaY:M.deltaY)*j,g=T+w;if(Y)g=T+w*0.3;if(g=Math.max(0,Math.min(g,A)),g!==T){let m=g>=T?"down":"up";if(Z=K2(Z,g),T=g,!G)G=!0;if(U)U({scrollTop:T,direction:m,velocity:Z.velocity});h()}},h=()=>{if(v)clearTimeout(v);v=setTimeout(()=>{if(G=!1,Z=LJ(T),N)N()},X)},s=(M)=>{if(D)return;if(D=!0,b=M,A=M.virtualSize-y,V)return;if($.cancel(),J.removeEventListener("scroll",$),!Q)J.removeEventListener("wheel",d);else if(K)J.removeEventListener("wheel",S);if(K)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Q)J.addEventListener("wheel",F,{passive:!1});let w=K?J.scrollLeft:J.scrollTop;if(w>0){let g=K?b?.actualSize??J.scrollWidth:b?.actualSize??J.scrollHeight;T=w/g*A}if(K)J.scrollLeft=0;else J.scrollTop=0},x=()=>{if(!D)return;if(D=!1,V){b=void 0;return}if(J.removeEventListener("wheel",F),K)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",$,{passive:!0}),!Q)J.addEventListener("wheel",d,{passive:!1});else if(K)J.addEventListener("wheel",S,{passive:!1});if(b&&T>0){let w=T/A*(b.actualSize-y);if(K)J.scrollLeft=w;else J.scrollTop=w}b=void 0},r=()=>{if(V||D)return T;return K?J.scrollLeft:J.scrollTop},l=(M,w=!1)=>{let g=Math.max(0,Math.min(M,A||1/0));if(V){let Q0=J.getBoundingClientRect();if(K){let m=Q0.left+window.scrollX;window.scrollTo({left:m+g,behavior:w?"smooth":"auto"})}else{let m=Q0.top+window.scrollY;window.scrollTo({top:m+g,behavior:w?"smooth":"auto"})}}else if(D){if(g===T)return;let m=g>=T?"down":"up";if(Z=K2(Z,g),T=g,!G)G=!0;if(U)U({scrollTop:T,direction:m,velocity:Z.velocity});h()}else if(K)J.scrollTo({left:g,behavior:w?"smooth":"auto"});else J.scrollTo({top:g,behavior:w?"smooth":"auto"})},B=(M)=>{l(r()+M)},u=()=>{return r()<=0},k=(M=0)=>{let w=r(),g=V||D?A:K?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return w>=g-M},P=()=>{let M=r(),w=V||D?A:K?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(w<=0)return 0;return Math.min(1,Math.max(0,M/w))},I=(M)=>{if(M.compression)b=M.compression,A=b.virtualSize-y},R=()=>D,f=()=>Math.abs(Z.velocity),a=()=>L1(Z),p=()=>G,E=()=>V,L=(M)=>{if(y=M,b)A=b.virtualSize-y},z=()=>{if(v)clearTimeout(v);if(V)W.cancel(),window.removeEventListener("scroll",W);else $.cancel(),J.removeEventListener("scroll",$),J.removeEventListener("wheel",F),J.removeEventListener("wheel",d),J.removeEventListener("wheel",S)};if(V){if(D&&b)A=b.virtualSize-y;window.addEventListener("scroll",W,{passive:!0})}else if(D&&b){if(A=b.virtualSize-y,K)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Q)J.addEventListener("wheel",F,{passive:!1})}else{if(K)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",$,{passive:!0}),!Q)J.addEventListener("wheel",d,{passive:!1});else if(K)J.addEventListener("wheel",S,{passive:!1})}return{getScrollTop:r,scrollTo:l,scrollBy:B,isAtTop:u,isAtBottom:k,getScrollPercentage:P,getVelocity:f,isTracking:a,isScrolling:p,updateConfig:I,enableCompression:s,disableCompression:x,isCompressed:R,isWindowMode:E,updateContainerHeight:L,destroy:z}},B2=(J)=>{let q=null,Q=null,j=(...Y)=>{if(Q=Y,q===null)q=requestAnimationFrame(()=>{if(q=null,Q)J(...Q)})};return j.cancel=()=>{if(q!==null)cancelAnimationFrame(q),q=null},j};var T1=0.65,$1=0.5,b1=0.95,H1=0.1,k1=5,y1=100,$J=()=>{let J=null,q=0,Q=!1,j=0,Y=null,X=0,U=0,N=null,_=[];return{name:"withScale",priority:20,setup(K){let{dom:V,config:T}=K,{classPrefix:A,horizontal:y}=T,D=()=>{let v=K.getVirtualTotal(),O=T0(v,K.sizeCache);if(O.isCompressed&&!Q){Q=!0,K.scrollController.enableCompression(O),K.updateContentSize(O.virtualSize),K.setScrollFns(()=>q,(x)=>{if(q=x,j=x,Y!==null)cancelAnimationFrame(Y),Y=null});let $=()=>{let x=j-q;if(Math.abs(x)<$1)q=j,Y=null;else{q+=x*T1;let l=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize;q=Math.max(0,Math.min(q,l)),Y=requestAnimationFrame($)}K.scrollController.scrollTo(q)},C=V.viewport,W=(x)=>{x.preventDefault();let l=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+x.deltaY,l)),Y===null)Y=requestAnimationFrame($)};C.addEventListener("wheel",W,{passive:!1});let d=()=>{if(N!==null)cancelAnimationFrame(N),N=null},S=(x)=>{if(d(),Y!==null)cancelAnimationFrame(Y),Y=null;let r=x.touches[0];if(!r)return;let l=y?r.clientX:r.clientY;X=l,U=q,_=[{time:performance.now(),y:l}]},F=(x)=>{x.preventDefault();let r=x.touches[0];if(!r)return;let l=y?r.clientX:r.clientY,B=performance.now();if(_.push({time:B,y:l}),_.length>k1)_.shift();let u=X-l,P=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize,I=Math.max(0,Math.min(U+u,P));q=I,j=I,K.scrollController.scrollTo(I)},h=(x)=>{let r=performance.now(),l=_.filter((P)=>r-P.time<y1),B=0;if(l.length>=2){let P=l[0],I=l[l.length-1],R=I.time-P.time;if(R>0)B=(P.y-I.y)/R}if(_=[],Math.abs(B)<H1)return;let u=B*16,k=()=>{if(u*=b1,Math.abs(u)<0.5){N=null;return}let I=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize,R=q+u;if(R=Math.max(0,Math.min(R,I)),R<=0&&u<0||R>=I&&u>0){q=R,j=R,K.scrollController.scrollTo(R),N=null;return}q=R,j=R,K.scrollController.scrollTo(R),N=requestAnimationFrame(k)};N=requestAnimationFrame(k)};if(C.addEventListener("touchstart",S,{passive:!0}),C.addEventListener("touchmove",F,{passive:!1}),C.addEventListener("touchend",h,{passive:!0}),C.addEventListener("touchcancel",h,{passive:!0}),K.destroyHandlers.push(()=>{if(C.removeEventListener("wheel",W),C.removeEventListener("touchstart",S),C.removeEventListener("touchmove",F),C.removeEventListener("touchend",h),C.removeEventListener("touchcancel",h),d(),Y!==null)cancelAnimationFrame(Y),Y=null}),!V.viewport.querySelector(`.${A}-scrollbar`)){if(J=u0(V.viewport,(r)=>K.scrollController.scrollTo(r),{},A,y),!V.viewport.classList.contains(`${A}-viewport--custom-scrollbar`))V.viewport.classList.add(`${A}-viewport--custom-scrollbar`);J.updateBounds(O.virtualSize,K.state.viewportState.containerSize);let x=J;K.afterScroll.push((r,l)=>{if(x)x.updatePosition(r),x.show()}),K.resizeHandlers.push((r,l)=>{if(x){let B=K.getCachedCompression();x.updateBounds(B.virtualSize,K.state.viewportState.containerSize)}})}}else if(!O.isCompressed&&Q)Q=!1,K.scrollController.disableCompression(),K.updateContentSize(O.actualSize);else if(O.isCompressed)K.scrollController.updateConfig({compression:O}),K.updateContentSize(O.virtualSize);if(J)J.updateBounds(O.virtualSize,K.state.viewportState.containerSize);K.state.cachedCompression={state:O,totalItems:v}};K.updateCompressionMode=D;let b=K.getCachedCompression.bind(K);K.getCachedCompression=()=>{if(K.state.cachedCompression)return K.state.cachedCompression.state;return b()},K.setVisibleRangeFn((v,O,$,C,W)=>{Z=null,G=null;let d=T0(C,$);q2(v,O,$,C,d,W)}),K.setScrollToPosFn((v,O,$,C,W)=>{let d=T0(C,O);return X2(v,O,$,C,d,W)});let Z=null,G=null;K.setPositionElementFn((v,O)=>{let $=K.getVirtualTotal(),C=T0($,K.sizeCache);if(C.isCompressed){let W=K.scrollController.getScrollTop();if(Z===null||O<G)G=O,Z=Math.round(h0(O,W,K.sizeCache,$,K.state.viewportState.containerSize,C));let d=Z+K.sizeCache.getOffset(O)-K.sizeCache.getOffset(G),S=K.config.horizontal;v.style.transform=S?`translateX(${d}px)`:`translateY(${d}px)`}else{let W=Math.round(K.sizeCache.getOffset(O)),d=K.config.horizontal;v.style.transform=d?`translateX(${W}px)`:`translateY(${W}px)`}}),D(),K.destroyHandlers.push(()=>{if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null})},destroy(){if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null;if(N!==null)cancelAnimationFrame(N),N=null}}};var U2=(J={})=>{let{chunkSize:q=100,maxCachedItems:Q=5000,evictionBuffer:j=200,onEvict:Y}=J,X=new Map,U=0,N=0,_=(B)=>{let u=X.get(B);if(!u)u={items:Array(q),count:0,lastAccess:Date.now()},X.set(B,u);else u.lastAccess=Date.now();return u},K=(B)=>{return Math.floor(B/q)},V=(B)=>{return B%q},T=()=>U,A=(B)=>{U=B},y=(B)=>{if(B<0||B>=U)return;let u=K(B),k=X.get(u);if(!k)return;return k.items[V(B)]},D=(B)=>{if(B<0||B>=U)return!1;let u=K(B),k=X.get(u);if(!k)return!1;return k.items[V(B)]!==void 0},b=(B,u)=>{let k=K(B),P=_(k),I=V(B),R=P.items[I]===void 0;if(P.items[I]=u,R)P.count++,N++;if(B>=U)U=B+1},Z=(B,u)=>{for(let k=0;k<u.length;k++){let P=u[k];if(P!==void 0)b(B+k,P)}},G=(B)=>{if(B<0||B>=U)return!1;let u=K(B),k=X.get(u);if(!k)return!1;let P=V(B);if(k.items[P]===void 0)return!1;if(k.items[P]=void 0,k.count--,N--,k.count===0)X.delete(u);return!0},v=(B,u)=>{let k=[];for(let P=B;P<=u&&P<U;P++)k.push(y(P));return k},O=(B,u)=>{for(let k=B;k<=u&&k<U;k++)if(!D(k))return!1;return!0},$=()=>{let B=[],u=null,k=Array.from(X.keys()).sort((P,I)=>P-I);for(let P of k){let I=X.get(P);if(!I)continue;let R=P*q;for(let f=0;f<q;f++){let a=R+f;if(a>=U)break;if(I.items[f]!==void 0)if(u===null)u={start:a,end:a};else if(a===u.end+1)u.end=a;else B.push(u),u={start:a,end:a};else if(u!==null)B.push(u),u=null}}if(u!==null)B.push(u);return B},C=(B,u)=>{let k=[],P=null;for(let I=B;I<=u&&I<U;I++)if(!D(I))if(P===null)P={start:I,end:I};else P.end=I;else if(P!==null)k.push(P),P=null;if(P!==null)k.push(P);return k},W=(B)=>{return X.has(B)},d=(B)=>{let u=X.get(B);if(u)u.lastAccess=Date.now()},S=(B,u)=>{if(B>u||X.size===0)return;let k=Date.now(),P=K(Math.max(0,B)),I=K(Math.min(U-1,u));for(let R=P;R<=I;R++){let f=X.get(R);if(f)f.lastAccess=k}},F=(B,u)=>{if(N<=Q)return 0;let k=Math.max(0,B-j),P=Math.min(U-1,u+j),I=K(k),R=K(P),f=0,a=[];for(let[p,E]of X)if(p<I||p>R)f+=E.count,a.push(p),N-=E.count,X.delete(p);if(f>0&&Y)Y(f,a);return f},h=()=>{if(N<=Q)return 0;let B=Array.from(X.entries()).sort(([,P],[,I])=>P.lastAccess-I.lastAccess),u=0,k=[];for(let[P,I]of B){if(N<=Q)break;u+=I.count,N-=I.count,k.push(P),X.delete(P)}if(u>0&&Y)Y(u,k);return u},s=()=>{return{totalItems:U,cachedItems:N,cachedChunks:X.size,chunkSize:q,maxCachedItems:Q,memoryEfficiency:U>0?1-N/U:1}},x=()=>N,r=()=>{X.clear(),N=0};return{chunkSize:q,maxCachedItems:Q,getTotal:T,setTotal:A,get:y,has:D,set:b,setRange:Z,delete:G,getRange:v,isRangeLoaded:O,getLoadedRanges:$,findUnloadedRanges:C,getChunkIndex:K,isChunkLoaded:W,touchChunk:d,touchChunksForRange:S,evictDistant:F,evictToLimit:h,getStats:s,getCachedCount:x,clear:r,reset:()=>{r(),U=0}}},Z2=(J)=>{if(J.length===0)return[];let q=[...J].sort((j,Y)=>j.start-Y.start),Q=[{...q[0]}];for(let j=1;j<q.length;j++){let Y=q[j],X=Q[Q.length-1];if(Y.start<=X.end+1)X.end=Math.max(X.end,Y.end);else Q.push({...Y})}return Q},c0=(J,q,Q)=>{let j=Math.floor(J.start/Q)*Q,Y=Math.ceil((J.end+1)/Q)*Q-1,X={start:j,end:Y};if(q.length===0)return[X];let U=[],N=Z2(q),_=X.start;for(let K of N){if(K.end<_)continue;if(K.start>X.end)break;if(K.start>_)U.push({start:_,end:Math.min(K.start-1,X.end)});if(_=K.end+1,_>X.end)break}if(_<=X.end)U.push({start:_,end:X.end});return U};var N2=(J={})=>{let{maskCharacter:q=_J,maxSampleSize:Q=VJ}=J,j=[],Y=!1,X=0,U=(T)=>{if(Y||T.length===0)return;let A=Math.min(T.length,Q);for(let y=0;y<A;y++){let D=T[y];if(!D||typeof D!=="object")continue;let b={};for(let[Z,G]of Object.entries(D)){if(Z.startsWith("_")||Z==="id")continue;b[Z]=String(G??"").length}if(Object.keys(b).length>0)j.push(b)}Y=!0},N=()=>Y,_=(T)=>{let A={id:`${WJ}${X++}`,[v2]:!0,_index:T};if(j.length===0)return A.label=q.repeat(12),A;let y=j[T%j.length];for(let[D,b]of Object.entries(y))A[D]=q.repeat(Math.max(1,b));return A};return{analyzeStructure:U,hasAnalyzedStructure:N,generate:_,generateRange:(T,A)=>{let y=[];for(let D=T;D<=A;D++)y.push(_(D));return y},clear:()=>{j=[],Y=!1,X=0}}},z0=(J)=>{if(!J||typeof J!=="object")return!1;return J[v2]===!0},S2=(J)=>{return J.filter((q)=>!z0(q))};var R1=50,_2=(J={})=>{let{adapter:q,initialItems:Q,initialTotal:j,storage:Y,placeholder:X,pageSize:U=R1,onStateChange:N,onItemsLoaded:_,onItemsEvicted:K}=J,V=U2({...Y,onEvict:(c,n)=>{K?.(c),C()}}),T=null,A=()=>{if(!T)T=N2(X);return T},y=new Map,D=!1,b,Z=!0,G,v=[],O=0,$=new Map,C=()=>{N?.(l())},W=()=>{y.clear();let c=V.getLoadedRanges();for(let n of c)for(let e=n.start;e<=n.end;e++){let t=V.get(e);if(t&&!z0(t))y.set(t.id,e)}},d=(c,n)=>{if(!z0(n))y.set(n.id,c)},S=(c)=>{y.delete(c)},F=(c,n)=>{return`${c}-${n}`},h=()=>V.getTotal(),s=()=>V.getCachedCount(),x=()=>D,r=()=>Z,l=()=>({total:V.getTotal(),cached:V.getCachedCount(),isLoading:D,pendingRanges:v,error:b,hasMore:Z,cursor:G}),B=()=>V,u=()=>A(),k=(c)=>{let n=V.get(c);if(n!==void 0)return n;if(c>=0&&c<V.getTotal())return A().generate(c);return},P=(c)=>{let n=y.get(c);if(n===void 0)return;return V.get(n)},I=(c)=>{return y.get(c)??-1},R=(c)=>{let n=V.get(c);return n!==void 0&&!z0(n)},f=(c,n)=>{let e=[],t=V.getTotal(),U0=0,Z0=0;V.touchChunksForRange(c,Math.min(n,t-1));for(let V0=c;V0<=n&&V0<t;V0++){let W0=V.get(V0);if(W0!==void 0)e.push(W0),U0++;else e.push(A().generate(V0)),Z0++}return e},a=(c)=>{V.setTotal(c),Z=V.getCachedCount()<c,C()},p=(c,n=0,e)=>{if(T&&!T.hasAnalyzedStructure()&&c.length>0)T.analyzeStructure(c);for(let t=0;t<c.length;t++){let U0=c[t];if(U0!==void 0){let Z0=n+t;V.set(Z0,U0),d(Z0,U0)}}if(e!==void 0)V.setTotal(e);else if(n+c.length>V.getTotal())V.setTotal(n+c.length);if(V.getCachedCount()>=V.getTotal()&&V.getTotal()>0)Z=!1;_?.(c,n,V.getTotal()),C()},E=(c,n)=>{let e=y.get(c);if(e===void 0)return!1;let t=V.get(e);if(!t)return!1;let U0={...t,...n};if(V.set(e,U0),n.id!==void 0&&n.id!==c)S(c),d(e,U0);return C(),!0},L=(c)=>{let n=y.get(c);if(n===void 0)return!1;V.delete(n),S(c);let e=V.getTotal();if(e>0)V.setTotal(e-1);return C(),!0},z=async(c,n)=>{if(!q)return;let e=F(c,n);if($.has(e))return;let t=V.getLoadedRanges(),U0=c0({start:c,end:n},t,V.chunkSize);if(U0.length===0)return;let Z0=V.chunkSize,V0=[];for(let j0 of U0){let M0=Math.floor(j0.start/Z0),O0=Math.floor(j0.end/Z0);for(let D0=M0;D0<=O0;D0++){let $0=D0*Z0,G0=$0+Z0-1,b0=F($0,G0);if(!V0.some((v0)=>v0.start===$0)&&!$.has(b0))V0.push({start:$0,end:G0})}}let W0=[];for(let j0 of U0){let M0=Math.floor(j0.start/Z0),O0=Math.floor(j0.end/Z0);for(let D0=M0;D0<=O0;D0++){let $0=D0*Z0,G0=$0+Z0-1,b0=F($0,G0);if($.has(b0)){let v0=$.get(b0);if(!W0.includes(v0))W0.push(v0)}}}for(let j0 of V0){let M0=F(j0.start,j0.end),O0=(async()=>{v.push(j0),D=!0,b=void 0,C();try{let D0=j0.end-j0.start+1,$0={offset:j0.start,limit:D0,cursor:void 0},G0=await q.read($0);if(p(G0.items,j0.start,G0.total),G0.cursor)G=G0.cursor;let b0=j0.start+G0.items.length;if(b0>=O){if(O=b0,G0.hasMore!==void 0)Z=G0.hasMore;else if(G0.total!==void 0)Z=b0<G0.total}}catch(D0){b=D0 instanceof Error?D0:Error(String(D0))}finally{$.delete(M0),v=v.filter((D0)=>D0.start!==j0.start||D0.end!==j0.end),D=$.size>0,C()}})();$.set(M0,O0),W0.push(O0)}await Promise.all(W0)},M=async(c,n)=>{if(V.isRangeLoaded(c,n))return;await z(c,n)},w=async()=>{if(!q)return;await z(0,U-1)},g=async()=>{if(!q||D||!Z)return!1;let c=V.getCachedCount(),n=V.getTotal(),e=c,t=Math.min(e+U-1,n>0?n-1:e+U-1);if(e>=n&&n>0)return Z=!1,!1;return await z(e,t),V.getCachedCount()>c},Q0=async()=>{if(V.clear(),V.setTotal(0),y.clear(),T)T.clear();$.clear(),v=[],D=!1,G=void 0,Z=!0,O=0,b=void 0,C()},m=(c,n)=>{if(V.evictDistant(c,n)>0)W()},q0=()=>{V.clear(),y.clear(),G=void 0,b=void 0,v=[],D=!1,C()},X0=()=>{if(V.reset(),y.clear(),T)T.clear();G=void 0,Z=!0,O=0,b=void 0,v=[],D=!1,C()};if(Q&&Q.length>0)p(Q,0,j??Q.length);else if(j!==void 0)V.setTotal(j),C();return{getState:l,getTotal:h,getCached:s,getIsLoading:x,getHasMore:r,getStorage:B,getPlaceholders:u,getItem:k,getItemById:P,getIndexById:I,isItemLoaded:R,getItemsInRange:f,setTotal:a,setItems:p,updateItem:E,removeItem:L,loadRange:z,ensureRange:M,loadInitial:w,loadMore:g,reload:Q0,evictDistant:m,clear:q0,reset:X0}};var bJ=(J)=>{let{adapter:q,loading:Q,storage:j,total:Y,autoLoad:X=!0}=J,U=Q?.cancelThreshold??UJ,N=Q?.preloadThreshold??ZJ,_=Q?.preloadAhead??NJ;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(K){let{emitter:V}=K,T=K.config.reverse,A=_2({adapter:q,...Y!==void 0&&{initialTotal:Y},pageSize:j?.chunkSize??p0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(K.state.isInitialized){let S=K.getVirtualTotal();K.sizeCache.rebuild(S),K.updateCompressionMode();let F=K.getCachedCompression();K.state.viewportState.totalSize=F.virtualSize,K.state.viewportState.actualSize=F.actualSize,K.state.viewportState.isCompressed=F.isCompressed,K.state.viewportState.compressionRatio=F.ratio,K.updateContentSize(F.virtualSize),K.renderIfNeeded()}},onItemsLoaded:(S,F,h)=>{if(K.state.isInitialized)K.forceRender(),V.emit("load:end",{items:S,total:h,offset:F})}});K.replaceDataManager(A);let y=null,D=null,b=0,Z=!1,G=null,v=120,O=(S=!1)=>{if(Z=!1,D=null,S)y=null;if(G!==null)clearTimeout(G),G=null},$=()=>{if(D){let S=D;D=null,K.dataManager.ensureRange(S.start,S.end).catch((F)=>{V.emit("error",{error:F,context:"ensureRange"})})}};K.afterScroll.push((S,F)=>{if(K.state.isDestroyed)return;let h=K.scrollController.getVelocity(),x=K.scrollController.isTracking()&&h<=U;if(b>U&&h<=U)Z=!0;else if(Z&&h>U)O();if(Z&&h<0.5)O(!0);if(b=h,(K.scrollController.isAtTop()||K.scrollController.isAtBottom())&&(Z||D))O(!0),x=!0;let l=Z&&h>0.5;if(x&&!K.dataManager.getIsLoading()&&K.dataManager.getHasMore()){if(T){if(S<w2)V.emit("load:start",{offset:K.dataManager.getCached(),limit:p0}),K.dataManager.loadMore().catch((k)=>{V.emit("error",{error:k,context:"loadMore"})})}else if(K.state.viewportState.totalSize-S-K.state.viewportState.containerSize<w2)V.emit("load:start",{offset:K.dataManager.getCached(),limit:p0}),K.dataManager.loadMore().catch((P)=>{V.emit("error",{error:P,context:"loadMore"})})}let{renderRange:B}=K.state.viewportState;if(!y||B.start!==y.start||B.end!==y.end){if(y={start:B.start,end:B.end},x&&!l){if(D=null,G!==null)clearTimeout(G),G=null;let{start:k,end:P}=B,I=K.getVirtualTotal();if(h>N)if(F==="down")P=Math.min(B.end+_,I-1);else k=Math.max(B.start-_,0);K.dataManager.ensureRange(k,P).catch((R)=>{V.emit("error",{error:R,context:"ensureRange"})})}else if(D={start:B.start,end:B.end},l){if(G!==null)clearTimeout(G);G=setTimeout(()=>{G=null,$(),O()},v)}}});let C=200,W=null;K.afterScroll.push((S,F)=>{if(W!==null)clearTimeout(W);W=setTimeout(()=>{W=null,$(),O()},C)}),K.destroyHandlers.push(()=>{if(W!==null)clearTimeout(W),W=null;O()});let d=()=>{if(K.state.isDestroyed)return;y=null;let{renderRange:S}=K.state.viewportState;if(S.end>0)K.dataManager.ensureRange(S.start,S.end).catch((F)=>{V.emit("error",{error:F,context:"ensureRange"})});$()};if(window.addEventListener("online",d),K.destroyHandlers.push(()=>{window.removeEventListener("online",d)}),V.on("load:start",()=>{K.dom.root.setAttribute("aria-busy","true")}),V.on("load:end",()=>{K.dom.root.removeAttribute("aria-busy")}),K.methods.set("loadVisibleRange",async()=>{y=null,D=null,K.forceRender();let{renderRange:S}=K.state.viewportState;if(S.end>0)V.emit("load:start",{offset:S.start,limit:S.end-S.start+1}),await K.dataManager.ensureRange(S.start,S.end)}),K.methods.set("reload",async()=>{y=null,D=null,K.invalidateRendered(),await K.dataManager.reload(),V.emit("load:start",{offset:0,limit:p0}),await K.dataManager.loadInitial(),K.forceRender();let{renderRange:S}=K.state.viewportState;if(S.end>0)await K.dataManager.ensureRange(S.start,S.end)}),X)V.emit("load:start",{offset:0,limit:p0}),K.dataManager.loadInitial().catch((S)=>{V.emit("error",{error:S,context:"loadInitial"})});else if(Y!==void 0)K.dataManager.setTotal(Y)}}};var HJ=()=>{let J=null;return{name:"withPage",priority:5,setup(q){let{dom:Q,state:j,config:Y,emitter:X}=q;if(Q.root.style.overflow="visible",Q.root.style.height="auto",Y.horizontal)Q.viewport.style.overflowX="visible",Q.viewport.style.overflowY="visible";else Q.viewport.style.overflow="visible";Q.viewport.classList.remove(`${Y.classPrefix}-viewport--custom-scrollbar`),q.disableViewportResize(),q.disableWheelHandler(),q.setScrollTarget(window),q.setScrollFns(()=>{let K=Q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-K.left);else return Math.max(0,-K.top)},(K)=>{let V=Q.viewport.getBoundingClientRect();if(Y.horizontal){let T=V.left+window.scrollX;window.scrollTo(T+K,window.scrollY)}else{let T=V.top+window.scrollY;window.scrollTo(window.scrollX,T+K)}}),q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:U,innerWidth:N}=window,_=()=>{let{innerWidth:K,innerHeight:V}=window,T=Y.horizontal?K:V,A=Y.horizontal?N:U;if(Math.abs(T-A)<=1)return;U=V,N=K,j.viewportState.containerSize=V,X.emit("resize",{width:K,height:V});for(let y=0;y<q.resizeHandlers.length;y++)q.resizeHandlers[y](K,V);q.renderIfNeeded()};window.addEventListener("resize",_,{passive:!0}),J=()=>{window.removeEventListener("resize",_)},q.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var f2=(J,q)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].headerLayoutIndex<=q)Q=Y;else j=Y-1}return Q},kJ=(J,q)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].firstDataIndex<=q)Q=Y;else j=Y-1}return Q},yJ=(J,q)=>{if(J===0)return[];let Q=[],j=q(0),Y=0,X=0;for(let U=1;U<J;U++){let N=q(U);if(N!==j){let _=U-Y;Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:Y,count:_}),X=X+1+_,j=N,Y=U}}return Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:Y,count:J-Y}),Q},l0=(J,q)=>{if(J.length===0||q.length===0)return[];let Q=J.length+q.length,j=Array(Q),Y=0;for(let X of q){j[Y]={id:`__group_header_${X.groupIndex}`,__groupHeader:!0,groupKey:X.key,groupIndex:X.groupIndex},Y++;for(let U=0;U<X.count;U++)j[Y]=J[X.firstDataIndex+U],Y++}return j},a0=(J,q)=>{let Q=typeof q==="number"?(j)=>q:q;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return Q(Y.dataIndex)}},V2=(J,q)=>{let Q=yJ(J,q.getGroupForIndex),j=J+Q.length,Y=q.headerHeight;return{get totalEntries(){return j},get groupCount(){return Q.length},get groups(){return Q},getEntry:(A)=>{if(Q.length===0)return{type:"item",dataIndex:A,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let y=f2(Q,A),D=Q[y];if(A===D.headerLayoutIndex)return{type:"header",group:D};let b=A-D.headerLayoutIndex-1;return{type:"item",dataIndex:D.firstDataIndex+b,group:D}},layoutToDataIndex:(A)=>{if(Q.length===0)return A;let y=f2(Q,A),D=Q[y];if(A===D.headerLayoutIndex)return-1;let b=A-D.headerLayoutIndex-1;return D.firstDataIndex+b},dataToLayoutIndex:(A)=>{if(Q.length===0)return A;let y=kJ(Q,A),D=Q[y],b=A-D.firstDataIndex;return D.headerLayoutIndex+1+b},getGroupAtLayoutIndex:(A)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=f2(Q,A);return Q[y]},getGroupAtDataIndex:(A)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=kJ(Q,A);return Q[y]},getHeaderHeight:typeof Y==="number"?(A)=>Y:(A)=>{let y=Q[A];if(!y)return 0;return Y(y.key,A)},rebuild:(A)=>{Q=yJ(A,q.getGroupForIndex),j=A+Q.length}}};var W2=(J,q,Q,j,Y,X=!1,U=0)=>{let N=document.createElement("div");if(N.className=`${Y}-sticky-header`,N.setAttribute("role","presentation"),N.setAttribute("aria-hidden","true"),N.style.position="absolute",N.style.zIndex="5",N.style.pointerEvents="none",N.style.willChange="transform",N.style.overflow="hidden",X)N.style.top="0",N.style.bottom="0",N.style.left=U?`${U}px`:"0";else N.style.top=U?`${U}px`:"0",N.style.left="0",N.style.right="0";J.insertBefore(N,J.firstChild);let _=-1,K=!1,V=0,T=(G)=>{if(G===_)return;_=G;let v=q.groups;if(G<0||G>=v.length){N.textContent="";return}let O=v[G],$=j.headerTemplate(O.key,O.groupIndex),C=q.getHeaderHeight(G);if(X)N.style.width=`${C}px`;else N.style.height=`${C}px`;if(typeof $==="string")N.innerHTML=$;else N.replaceChildren($)},A=(G)=>{let v=q.groups;if(v.length===0){D();return}let O=Q.getOffset(v[0].headerLayoutIndex);if(G<O){D();return}let $=0,C=v.length-1;while($<C){let h=$+C+1>>>1;if(Q.getOffset(v[h].headerLayoutIndex)<=G)$=h;else C=h-1}let W=$;if(!K)y();T(W);let d=q.getHeaderHeight(W),S=0,F=W+1;if(F<v.length){let s=Q.getOffset(v[F].headerLayoutIndex)-G;if(s<d)S=s-d}if(S!==V)if(V=S,S===0)N.style.transform="";else{let h=Math.round(S);N.style.transform=X?`translateX(${h}px)`:`translateY(${h}px)`}},y=()=>{if(K)return;K=!0,N.style.display=""},D=()=>{if(!K)return;K=!1,N.style.display="none",_=-1,V=0,N.style.transform=""},b=()=>{let G=_;if(_=-1,G>=0)T(G)},Z=()=>{N.remove(),_=-1,K=!1};return N.style.display="none",{update:A,refresh:b,show:y,hide:D,destroy:Z}};var PJ=(J,q,Q,j,Y,X)=>{if(j===0||q===0)return X.start=0,X.end=-1,X;let U=Q.indexAtOffset(J),N=Q.indexAtOffset(J+q);if(N<j-1)N++;return X.start=Math.max(0,U),X.end=Math.min(j-1,Math.max(0,N)),X},RJ=(J,q,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q),j},zJ=(J,q,Q,j,Y,X)=>{if(j===0)return 0;let U=Math.max(0,Math.min(J,j-1)),N=q.getOffset(U),_=q.getSize(U),K=q.getTotalSize(),V=Math.max(0,K-Q),T;switch(X){case"center":T=N-Q/2+_/2;break;case"end":T=N-Q+_;break;case"start":default:T=N;break}return Math.max(0,Math.min(T,V))},CJ=(J,q,Q)=>{if(Q&&Q.isCompressed)return Q.virtualSize;return q.getTotalSize()},wJ=(J,q)=>{return q.getTotalSize()},vJ=(J,q)=>{return q.getOffset(J)},SJ=(J,q,Q)=>{let j=Math.max(0,q-Q);return Math.max(0,Math.min(J,j))};var P0=(J,q,Q,j,Y="start",X,U=zJ)=>{return U(J,q,Q,j,X,Y)},fJ=(J,q)=>{return J.start===q.start&&J.end===q.end},IJ=(J,q)=>{return J>=q.start&&J<=q.end},pJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var hJ=(J,q)=>{let Q=[],j=[];for(let Y=J.start;Y<=J.end;Y++)if(Y<q.start||Y>q.end)j.push(Y);for(let Y=q.start;Y<=q.end;Y++)if(Y<J.start||Y>J.end)Q.push(Y);return{add:Q,remove:j}};Y2();var gJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let q=null,Q=null,j=[],Y=[];return{name:"withGroups",priority:10,setup(X){let{dom:U,config:N,rawConfig:_}=X,{classPrefix:K}=N,T=_.item.height;j=_.items?[..._.items]:[];let A=j.length,y={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};q=V2(A,y),Y=l0(j,q.groups);let D=a0(q,T);X.setSizeConfig(D),X.rebuildSizeCache(Y.length),X.dataManager.setItems(Y,0,Y.length);let b=_.item.template,{headerTemplate:Z}=J,G=(x,r,l)=>{if(C0(x))return Z(x.groupKey,x.groupIndex);return b(x,r,l)},v=X.methods.get("_getGridLayout"),O=X.methods.get("_replaceGridRenderer"),$=X.methods.get("_updateGridLayoutForGroups"),C=X.methods.get("_getTableLayout"),W=X.methods.get("_updateTableForGroups"),d=X.methods.get("_getTableHeaderHeight");if(v&&O){if($)$((B)=>{let u=Y[B];return!!(u&&C0(u))});let{createGridRenderer:x}=(D2(),W1(uJ)),r=v(),l=x(U.items,G,X.sizeCache,r,K,X.getContainerWidth(),()=>X.dataManager.getTotal(),N.ariaIdPrefix);O(l)}else if(C&&W)W((x)=>C0(x),J.headerTemplate);else X.replaceTemplate(G);let S=d?d():0;if(U.root.classList.add(`${K}--grouped`),J.sticky!==!1){Q=W2(U.root,q,X.sizeCache,{...y,sticky:y.sticky??!1},K,N.horizontal,S);let x=Q;X.afterScroll.push((r,l)=>{x.update(r)}),Q.update(X.scrollController.getScrollTop())}let F=()=>{if(!q)return;q.rebuild(j.length),Y=l0(j,q.groups);let x=a0(q,T);if(X.setSizeConfig(x),X.rebuildSizeCache(Y.length),X.dataManager.setItems(Y,0,Y.length),Q)Q.refresh()};X.methods.set("setItems",(x)=>{j=x.slice(),F()}),X.methods.set("appendItems",(x)=>{j.push(...x),F()}),X.methods.set("prependItems",(x)=>{j.unshift(...x),F()}),X.methods.set("removeItem",(x)=>{j=j.filter((r)=>r.id!==x),F()});let{animateScroll:h,cancelScroll:s}=f0(X.scrollController,X.renderIfNeeded);X.methods.set("scrollToIndex",(x,r)=>{let l=q.dataToLayoutIndex(x),{align:B,behavior:u,duration:k}=R0(r),P=X.dataManager.getTotal(),I=P0(l,X.sizeCache,X.state.viewportState.containerSize,P,B,X.getCachedCompression());if(u==="smooth")h(X.scrollController.getScrollTop(),I,k);else s(),X.scrollController.scrollTo(I)}),X.methods.set("_getItems",()=>j),X.methods.set("_getTotal",()=>j.length),X.destroyHandlers.push(()=>{if(s(),Q)Q.destroy(),Q=null;U.root.classList.remove(`${K}--grouped`)})},destroy(){if(Q)Q.destroy(),Q=null}}};var G2=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},X=(D)=>{if(D<=0)return 0;if(!j)return Math.ceil(D/q);let b=0,Z=0,G=0;for(let v=0;v<D;v++)if(j(v)){if(G++,Z>0)b++,Z=0;b++,Z=0}else if(Z++,Z>=q)b++,Z=0;if(Z>0)b++;return b},U=(D)=>{return Y.row=N(D),Y.col=_(D),Y},N=(D)=>{if(!j)return Math.floor(D/q);let b=0,Z=0;for(let G=0;G<=D;G++)if(j(G)){if(Z>0)b++,Z=0;if(G===D)return b;b++,Z=0}else{if(G===D)return b;if(Z++,Z>=q)b++,Z=0}return console.warn(`⚠️ getRow(${D}) fell through - returning ${b}`),b},_=(D)=>{if(!j)return D%q;if(j(D))return 0;let b=0;for(let Z=0;Z<=D;Z++)if(j(Z))b=0;else{if(Z===D)return b;if(b++,b>=q)b=0}return b},K=(D,b,Z)=>{if(Z<=0)return{start:0,end:-1};if(!j){let C=Math.max(0,D*q),W=Math.min(Z-1,(b+1)*q-1);return{start:C,end:W}}let G=-1,v=-1,O=0,$=0;for(let C=0;C<Z;C++){if(j(C)){if($>0)O++,$=0;if(O>=D&&O<=b){if(G===-1)G=C;v=C}O++,$=0}else{if(O>=D&&O<=b){if(G===-1)G=C;v=C}if($++,$>=q)O++,$=0}if(O>b&&$===0)break}if(G===-1)return{start:0,end:-1};return{start:G,end:v}},V=(D,b,Z)=>{if(b<0||b>=q)return-1;let G=D*q+b;if(G<0||G>=Z)return-1;return G},T=(D)=>{let b=(q-1)*Q;return Math.max(0,(D-b)/q)};return{get columns(){return q},get gap(){return Q},update:(D)=>{if(D.columns!==void 0)q=Math.max(1,Math.floor(D.columns));if(D.gap!==void 0)Q=D.gap;if(D.isHeaderFn!==void 0)j=D.isHeaderFn},getTotalRows:X,getPosition:U,getRow:N,getCol:_,getItemRange:K,getItemIndex:V,getColumnWidth:T,getColumnOffset:(D,b)=>{let Z=T(b);return D*(Z+Q)}}};D2();var w1=new Set,xJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let q=null,Q=null;return{name:"withGrid",priority:10,setup(j){let{dom:Y,emitter:X,config:U,rawConfig:N}=j,{classPrefix:_}=U;if(U.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let K=U.horizontal,V=()=>K?Y.viewport.clientHeight:j.getContainerWidth(),T=N.items?.some((R)=>R.__groupHeader===!0),A={columns:J.columns,gap:J.gap??0};if(T)A.isHeaderFn=(R)=>{let f=j.dataManager.getItem(R);return!!(f&&f.__groupHeader===!0)};q=G2(A);let y=q.gap;j.setVirtualTotalFn(()=>{let R=j.dataManager.getTotal();return q.getTotalRows(R)});let D=N.item,b=U.horizontal?D.width:D.height,Z={containerWidth:V(),columns:q.columns,gap:q.gap},G={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof b==="function")j.setSizeConfig((R)=>{let f=Z.containerWidth-2,a=(Z.columns-1)*Z.gap;return G.containerWidth=Z.containerWidth,G.columns=Z.columns,G.gap=Z.gap,G.columnWidth=(f-a)/Z.columns,G.row=q.getRow(R),G.column=q.getCol(R),G.totalRows=q.getTotalRows(j.dataManager.getTotal()),G.totalColumns=Z.columns,b(R,G)+Z.gap});else if(y>0)j.setSizeConfig(b+y);if(j.rebuildSizeCache(),y>0){let R=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let f=R();return f>0?f-Z.gap:0}}Y.root.classList.add(`${_}--grid`);let v=V(),O=N.item.template,$=()=>{Q=r0(Y.items,O,j.sizeCache,q,_,v,()=>j.dataManager.getTotal(),U.ariaIdPrefix,U.horizontal),j.replaceRenderer(Q)};$(),j.methods.set("_getGridLayout",()=>q),j.methods.set("_getGridConfig",()=>A),j.methods.set("_replaceGridRenderer",(R)=>{Q=R}),j.methods.set("_updateGridLayoutForGroups",(R)=>{q.update({isHeaderFn:R});let f=j.dataManager.getTotal(),a=0;for(let p=0;p<f;p++)if(q.getCol(p)===0){let E=j.sizeCache.getSize(p);a+=E}if(j.sizeCache.getTotalSize=()=>a,U.horizontal)j.dom.content.style.width=`${a}px`;else j.dom.content.style.height=`${a}px`;$()}),j.methods.set("updateGrid",(R)=>{if(R.columns!==void 0){if(!Number.isInteger(R.columns)||R.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");A.columns=R.columns}if(R.gap!==void 0){if(R.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");A.gap=R.gap}if(q)q.update(A);let f=V();if(Z.containerWidth=f,Z.columns=A.columns,Z.gap=A.gap??0,Q)Q.updateContainerWidth(f);j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let a=0;a<j.contentSizeHandlers.length;a++)j.contentSizeHandlers[a]();if(Q)Q.clear();j.forceRender()});let C=null,W=null,d=!1,S=()=>{if(d)return;d=!0,C=j.methods.get("_getSelectedIds")??null,W=j.methods.get("_getFocusedIndex")??null},F=-1,h=-1,s=!0,x=U.overscan??3,r={start:0,end:0},l={start:0,end:0},B=()=>{if(j.state.isDestroyed)return;let R=j.scrollController.getScrollTop(),f=j.state.viewportState.containerSize;if(!s&&R===F&&f===h)return;F=R,h=f,s=!1;let a=j.getVirtualTotal();if(a===0||f===0)r.start=0,r.end=0;else{r.start=Math.max(0,j.sizeCache.indexAtOffset(R));let q0=j.sizeCache.indexAtOffset(R+f);if(q0<a-1)q0++;r.end=Math.min(a-1,Math.max(0,q0))}l.start=Math.max(0,r.start-x),l.end=Math.min(a-1,r.end+x);let p=j.state.viewportState;p.scrollPosition=R,p.visibleRange.start=r.start,p.visibleRange.end=r.end,p.renderRange.start=l.start,p.renderRange.end=l.end;let E=j.state.lastRenderRange,L=p.isCompressed,z=j.dataManager.getTotal(),M=q.getItemRange(l.start,l.end,z),w=j.dataManager.getItemsInRange(M.start,M.end),g=L?j.getCompressionContext():void 0;S();let Q0=C?C():w1,m=W?W():-1;if(Q.render(w,M,Q0,m,g),E.start!==l.start||E.end!==l.end)E.start=l.start,E.end=l.end,X.emit("range:change",{range:{start:l.start,end:l.end}})},u=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,s=!0,B()};j.setRenderFns(B,u);let k=typeof b==="function";j.resizeHandlers.push((R,f)=>{let a=K?f:R;if(Z.containerWidth=a,Q)Q.updateContainerWidth(a);if(k){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let p=0;p<j.contentSizeHandlers.length;p++)j.contentSizeHandlers[p]();if(Q)Q.clear();j.forceRender()}});let{animateScroll:P,cancelScroll:I}=f0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",I),j.methods.set("scrollToIndex",(R,f)=>{let a=Math.floor(R/J.columns),{align:p,behavior:E,duration:L}=R0(f),z=j.dataManager.getState(),M=q.getTotalRows(z.total),w=Math.max(0,Math.min(a,M-1)),g=P0(w,j.sizeCache,j.state.viewportState.containerSize,M,p,j.getCachedCompression());if(E==="smooth")P(j.scrollController.getScrollTop(),g,L);else I(),j.scrollController.scrollTo(g)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.idleHandlers.push(()=>{if(Q)Q.sortDOM()}),j.destroyHandlers.push(()=>{if(I(),Q)Q.destroy(),Q=null;Y.root.classList.remove(`${_}--grid`)})},destroy(){if(Q)Q.destroy(),Q=null}}};D2();var M2=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.containerSize,Y=0,X=[],U=()=>{let Z=(q-1)*Q;Y=Math.max(0,(j-Z)/q),X=Array(q);let G=Y+Q;for(let v=0;v<q;v++)X[v]=v*G};U();let N=[],_=0,K=[],V=(Z)=>{let G=0,v=Z[0];for(let O=1;O<Z.length;O++){let $=Z[O];if($<v)v=$,G=O}return G},T=(Z,G)=>{if(Z<=0)return _=0,N=[],[];let v=Array(q).fill(0),O=Array(q);for(let W=0;W<q;W++)O[W]=[];let $=Array(Z);for(let W=0;W<Z;W++){let d=V(v),S=G(W),F=v[d];$[W]={index:W,x:X[d],y:F,lane:d,size:S,crossSize:Y},O[d].push(W),v[d]=F+S+Q}N=O;let C=0;for(let W=0;W<q;W++){let d=v[W],S=d>0?d-Q:0;if(S>C)C=S}return _=C,$},A=(Z)=>{if(Z.length===0)return _>0?_:0;if(_>0)return _;let G=Array(q).fill(0);for(let O of Z){let $=O.y+O.size,C=G[O.lane];if($>C)G[O.lane]=$}let v=0;for(let O=0;O<q;O++)if(G[O]>v)v=G[O];return v},y=(Z,G,v)=>{if(Z.length===0||v<=G)return K.length=0,K;if(N.length===0||N.length!==q)return D(Z,G,v);K.length=0;for(let O=0;O<q;O++){let $=N[O],C=$.length;if(C===0)continue;let W=0,d=C;while(W<d){let S=W+d>>>1,F=Z[$[S]];if(F.y+F.size<=G)W=S+1;else d=S}for(let S=W;S<C;S++){let F=Z[$[S]];if(F.y>=v)break;K.push(F)}}return K},D=(Z,G,v)=>{let O=[];for(let $ of Z)if($.y+$.size>G&&$.y<v)O.push($);return O};return{get columns(){return q},get gap(){return Q},get containerSize(){return j},update:(Z)=>{let G=!1;if(Z.columns!==void 0){let v=Math.max(1,Math.floor(Z.columns));if(v!==q)q=v,G=!0}if(Z.gap!==void 0&&Z.gap!==Q)Q=Z.gap,G=!0;if(Z.containerSize!==void 0&&Z.containerSize!==j)j=Z.containerSize,G=!0;if(G)U()},calculateLayout:T,getTotalSize:A,getVisibleItems:y}};var v1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let U=document.createElement("div");return U.setAttribute("role","option"),U},release:(X)=>{if(X.remove(),q.length<J)X.className="",X.textContent="",X.removeAttribute("style"),X.removeAttribute("data-index"),X.removeAttribute("data-id"),X.removeAttribute("data-lane"),q.push(X)},clear:()=>{q.length=0}}},S1=2,O2=(J,q,Q,j=!1,Y,X)=>{let U=v1(),N=new Map,_=new Set,K=0,V="",T=-1,A={selected:!1,focused:!1},y=(h,s)=>{return A.selected=h,A.focused=s,A},D=`${Q}-item ${Q}-masonry-item`,b=`${Q}-item--selected`,Z=`${Q}-item--focused`,G=(h,s)=>{if(typeof s==="string")h.innerHTML=s;else h.replaceChildren(s)},v=(h,s,x)=>{h.classList.toggle(b,s),h.classList.toggle(Z,x)},O=(h,s)=>{if(j)h.style.transform=`translate(${Math.round(s.y)}px, ${Math.round(s.x)}px)`;else h.style.transform=`translate(${Math.round(s.x)}px, ${Math.round(s.y)}px)`},$=(h,s)=>{if(j)h.style.width=`${s.size}px`,h.style.height=`${s.crossSize}px`;else h.style.width=`${s.crossSize}px`,h.style.height=`${s.size}px`},C=(h,s,x,r,l)=>{let B=U.acquire(),u=y(r,l);if(B.className=D,B.dataset.index=String(h),B.dataset.id=String(s.id),B.dataset.lane=String(x.lane),B.ariaSelected=String(r),X)B.id=`${X}-item-${h}`;if(Y){let P=Y();if(P!==T)T=P,V=String(P);B.setAttribute("aria-setsize",V),B.setAttribute("aria-posinset",String(h+1))}$(B,x);let k=q(s,h,u);return G(B,k),v(B,r,l),O(B,x),{element:B,lastItemId:s.id,lastSelected:r,lastFocused:l,lastY:x.y,lastX:x.x,lastSize:x.size,lastCrossSize:x.crossSize,lastSeenFrame:K}},W=(h,s,x,r)=>{K++,_.clear();for(let B=0;B<s.length;B++)_.add(s[B].index);for(let[B,u]of N)if(_.has(B))u.lastSeenFrame=K;else if(K-u.lastSeenFrame>S1)U.release(u.element),N.delete(B);let l=null;for(let B=0;B<s.length;B++){let u=s[B],k=u.index,P=h(k);if(!P)continue;let I=x.has(P.id),R=k===r,f=N.get(k);if(f){let a=f.lastItemId!==P.id,p=f.lastSelected!==I,E=f.lastFocused!==R,L=f.lastY!==u.y||f.lastX!==u.x,z=f.lastSize!==u.size||f.lastCrossSize!==u.crossSize;if(a||p||E){let M=y(I,R),w=q(P,k,M);G(f.element,w),v(f.element,I,R),f.element.dataset.id=String(P.id),f.element.ariaSelected=String(I),f.lastItemId=P.id,f.lastSelected=I,f.lastFocused=R}if(z)$(f.element,u),f.lastSize=u.size,f.lastCrossSize=u.crossSize;if(L)O(f.element,u),f.lastY=u.y,f.lastX=u.x}else{let a=C(k,P,u,I,R);if(!l)l=document.createDocumentFragment();l.appendChild(a.element),N.set(k,a)}}if(l)J.appendChild(l)},d=()=>{for(let{element:h}of N.values())U.release(h);N.clear(),J.innerHTML=""};return{render:W,getElement:(h)=>N.get(h)?.element,sortDOM:()=>{I0(J,N.keys(),(h)=>N.get(h)?.element)},clear:d,destroy:()=>{d(),U.clear()}}};var f1=new Set,mJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let q=null,Q=null,j=[];return{name:"withMasonry",priority:10,setup(Y){let{dom:X,emitter:U,config:N,rawConfig:_}=Y,K=N.classPrefix,V=N.horizontal;if(N.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");X.root.classList.add(`${K}--masonry`);let T=()=>{return V?X.viewport.clientHeight:X.viewport.clientWidth},A={columns:J.columns,gap:J.gap??0,containerSize:T()};q=M2(A);let y=_.item,D=V&&_.item.width?_.item.width:y.height,b={containerWidth:0,columns:0,gap:0,columnWidth:0},Z=typeof D==="function"?(R)=>D(R,b):()=>D,G=()=>{let R=Y.dataManager.getTotal(),f=q;b.containerWidth=f.containerSize,b.columns=f.columns,b.gap=f.gap;let a=(f.columns-1)*f.gap;b.columnWidth=Math.max(0,(b.containerWidth-a)/f.columns),j=f.calculateLayout(R,Z);let p=q.getTotalSize(j);if(Y.sizeCache.getTotalSize=()=>p,V)X.content.style.width=`${p}px`;else X.content.style.height=`${p}px`},v=_.item.template;Q=O2(X.items,v,K,V,()=>Y.dataManager.getTotal(),N.ariaIdPrefix);let O=null,$=null,C=!1,W=()=>{if(C)return;C=!0,O=Y.methods.get("_getSelectedIds")??null,$=Y.methods.get("_getFocusedIndex")??null},d=(R)=>Y.dataManager.getItem(R),S=-1,F=-1,h=!0,s=(N.overscan??3)*100,x=()=>{if(Y.state.isDestroyed)return;W();let R=Y.scrollController.getScrollTop(),f=Y.state.viewportState.containerSize;if(!h&&R===S&&f===F)return;S=R,F=f,h=!1;let a=Math.max(0,R-s),p=R+f+s,E=q.getVisibleItems(j,a,p),L=O?O():f1,z=$?$():-1;if(Q&&E.length>0)Q.render(d,E,L,z);let M=Y.state.viewportState;M.scrollPosition=R;let w=E.length,g=w>0?E[0].index:0,Q0=w>0?E[w-1].index:0;M.visibleRange.start=g,M.visibleRange.end=Q0,M.renderRange.start=g,M.renderRange.end=Q0;let m=Y.state.lastRenderRange;if(m.start!==g||m.end!==Q0)m.start=g,m.end=Q0,U.emit("range:change",{range:{start:g,end:Q0}})},r=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,h=!0,x()};Y.setRenderFns(x,r);let l=(R,f)=>{let a=V?f:R;if(q&&q.containerSize!==a){if(q.update({containerSize:a}),G(),Q)Q.clear();r()}};Y.resizeHandlers.push(l);let B=()=>{G(),r()},u=Y.dataManager,k=(R)=>{if(typeof u[R]!=="function")return;let f=u[R].bind(u);u[R]=(...a)=>{f(...a),B()}};k("setItems"),k("appendItems"),k("prependItems"),k("updateItem"),k("removeItem");let{animateScroll:P,cancelScroll:I}=f0(Y.scrollController,Y.renderIfNeeded);Y.methods.set("cancelScroll",I),Y.methods.set("scrollToIndex",(R,f)=>{let a=j[R];if(!a)return;let{align:p,behavior:E,duration:L}=R0(f),z=a.y,M=Y.state.viewportState.containerSize,w=z;if(p==="center")w=z-M/2+a.size/2;else if(p==="end")w=z-M+a.size;if(w=Math.max(0,w),E==="smooth")P(Y.scrollController.getScrollTop(),w,L);else I(),Y.scrollController.scrollTo(w)}),G(),Y.idleHandlers.push(()=>{if(Q)Q.sortDOM()}),Y.destroyHandlers.push(()=>{if(I(),Q)Q.destroy();X.root.classList.remove(`${K}--masonry`)})}}};var A2=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),s0=(J,q,Q)=>{if(Q==="none")return J;let j=new Set(J.selected);if(Q==="single"){if(j.clear(),q.length>0)j.add(q[0])}else for(let Y of q)j.add(Y);return{...J,selected:j}},n0=(J,q)=>{let Q=new Set(J.selected);for(let j of q)Q.delete(j);return{...J,selected:Q}},g0=(J,q,Q)=>{if(Q==="none")return J;if(J.selected.has(q))return n0(J,[q]);else return s0(J,[q],Q)},E2=(J,q,Q)=>{if(Q!=="multiple")return J;return{...J,selected:new Set(q.map((j)=>j.id))}},F2=(J)=>({...J,selected:new Set}),L2=(J,q)=>{return J.focusedIndex=q,J},I2=(J,q,Q=!1)=>{if(q===0)return J;let j=J.focusedIndex-1;if(j<0)j=Q?q-1:0;return J.focusedIndex=j,J},p2=(J,q,Q=!1)=>{if(q===0)return J;let j=J.focusedIndex+1;if(j>=q)j=Q?0:q-1;return J.focusedIndex=j,J},h2=(J,q)=>{if(q===0)return J;return J.focusedIndex=0,J},u2=(J,q)=>{if(q===0)return J;return J.focusedIndex=q-1,J};var dJ=(J,q)=>{return J.selected.has(q)},o0=(J)=>{return Array.from(J.selected)},i0=(J,q)=>{let Q=[];for(let j of J.selected){let Y=q(j);if(Y)Q.push(Y)}return Q};var cJ=(J)=>{let q=J?.mode??"single",Q=J?.initial,j=A2(Q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(X){let{dom:U,emitter:N,config:_}=X,{classPrefix:K,ariaIdPrefix:V}=_;if(q==="none"){X.methods.set("select",()=>{}),X.methods.set("deselect",()=>{}),X.methods.set("toggleSelect",()=>{}),X.methods.set("selectAll",()=>{}),X.methods.set("clearSelection",()=>{}),X.methods.set("getSelected",()=>[]),X.methods.set("getSelectedItems",()=>[]),X.methods.set("setSelectionMode",()=>{});return}U.root.classList.add(`${K}--selectable`);let T=new Map,A=()=>{T.clear();let O=X.dataManager.getTotal(),$=X.dataManager.getCached();if($===0)return;if($>=O){for(let W=0;W<O;W++){let d=X.dataManager.getItem(W);if(d)T.set(d.id,W)}return}let C=X.dataManager.getStorage();if(C&&typeof C.getLoadedRanges==="function"){let W=C.getLoadedRanges();for(let d of W)for(let S=d.start;S<=d.end;S++){let F=X.dataManager.getItem(S);if(F)T.set(F.id,S)}}};N.on("load:end",({items:O,offset:$})=>{if(!O||O.length===0)return;if($!==void 0)for(let C=0;C<O.length;C++){let W=O[C];if(W&&W.id!==void 0)T.set(W.id,$+C)}else A()}),A(),X.methods.set("_getSelectedIds",()=>{return j.selected}),X.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:y}=X.getRenderFns(),D=()=>{y();let O=($)=>{let C=T.get($);if(C===void 0)return;return X.dataManager.getItem(C)};N.emit("selection:change",{selected:o0(j),items:i0(j,O)})};Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${K}-live-region`,Y.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(U.root.getAttribute("role")==="grid"?U.root.parentElement??U.root:U.root).appendChild(Y);let Z=Y;N.on("selection:change",({selected:O})=>{let $=O.length;if($===0)Z.textContent="";else if($===1)Z.textContent="1 item selected";else Z.textContent=`${$} items selected`});let G=()=>{if(X.state.isDestroyed)return;if(!U.root.matches(":focus-visible"))return;let O=X.dataManager.getTotal();if(O===0)return;let $=j.focusedIndex>=0?Math.min(j.focusedIndex,O-1):0;j=L2(j,$),j.focusVisible=!0,U.root.setAttribute("aria-activedescendant",`${V}-item-${$}`),X.scrollController.scrollTo(P0($,X.sizeCache,X.state.viewportState.containerSize,X.dataManager.getState().total,"center",X.getCachedCompression()));let C=X.dataManager.getItem($);if(C)X.renderer.updateItemClasses($,j.selected.has(C.id),!0)};U.root.addEventListener("focusin",G);let v=(O)=>{if(X.state.isDestroyed)return;let $=O.relatedTarget;if($&&U.root.contains($))return;let C=j.focusedIndex;if(j.focusVisible=!1,U.root.removeAttribute("aria-activedescendant"),C>=0){let W=X.dataManager.getItem(C);if(W)X.renderer.updateItemClasses(C,j.selected.has(W.id),!1)}};U.root.addEventListener("focusout",v),X.clickHandlers.push((O)=>{if(X.state.isDestroyed)return;let C=O.target.closest("[data-index]");if(!C)return;let W=parseInt(C.dataset.index??"-1",10);if(W<0)return;let d=X.dataManager.getItem(W);if(!d)return;N.emit("item:click",{item:d,index:W,event:O}),j=L2(j,W),j.focusVisible=!1,U.root.setAttribute("aria-activedescendant",`${V}-item-${W}`),j=g0(j,d.id,q),D()}),X.keydownHandlers.push((O)=>{if(X.state.isDestroyed)return;let $=X.dataManager.getTotal(),C=j.focusedIndex,W=!1,d=!1,S=j;switch(O.key){case"ArrowUp":S=I2(j,$,_.wrap),S.focusVisible=!0,W=!0,d=!0;break;case"ArrowDown":S=p2(j,$,_.wrap),S.focusVisible=!0,W=!0,d=!0;break;case"Home":S=h2(j,$),S.focusVisible=!0,W=!0,d=!0;break;case"End":S=u2(j,$),S.focusVisible=!0,W=!0,d=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let F=X.dataManager.getItem(j.focusedIndex);if(F)S=g0(j,F.id,q),S.focusVisible=!0;W=!0}break}if(W){O.preventDefault(),j=S;let F=j.focusedIndex;if(F>=0){let h=X.dataManager.getState(),s=P0(F,X.sizeCache,X.state.viewportState.containerSize,h.total,"center",X.getCachedCompression());X.scrollController.scrollTo(s),U.root.setAttribute("aria-activedescendant",`${V}-item-${F}`)}else U.root.removeAttribute("aria-activedescendant");if(d){let{selected:h}=j;if(C>=0&&C!==F){let s=X.dataManager.getItem(C);if(s)X.renderer.updateItemClasses(C,h.has(s.id),!1)}if(F>=0){let s=X.dataManager.getItem(F);if(s)X.renderer.updateItemClasses(F,h.has(s.id),!0)}}else D()}}),X.methods.set("select",(...O)=>{j=s0(j,O,q),D()}),X.methods.set("deselect",(...O)=>{j=n0(j,O),D()}),X.methods.set("toggleSelect",(O)=>{j=g0(j,O,q),D()}),X.methods.set("selectAll",()=>{if(q!=="multiple")return;let O=X.getAllLoadedItems();j=E2(j,O,q),A(),D()}),X.methods.set("clearSelection",()=>{j=F2(j),D()}),X.methods.set("getSelected",()=>{return o0(j)}),X.methods.set("getSelectedItems",()=>{return i0(j,($)=>{let C=T.get($);if(C===void 0)return;return X.dataManager.getItem(C)})}),X.destroyHandlers.push(()=>{if(Z&&Z.parentNode)Z.remove();U.root.removeEventListener("focusin",G),U.root.removeEventListener("focusout",v)})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var lJ=(J)=>{let q=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(Q){Q.methods.set("getScrollSnapshot",()=>{let Y=Q.scrollController.getScrollTop(),X=Q.getCachedCompression(),U=Q.getVirtualTotal(),N=Q.methods.get("getSelected"),_=N&&N().length>0?N():void 0;if(U===0){let A={index:0,offsetInItem:0,total:0};if(_)A.selectedIds=_;return A}let K,V;if(X.isCompressed){let y=Y/X.virtualSize*U;K=Math.max(0,Math.min(Math.floor(y),U-1)),V=(y-K)*Q.sizeCache.getSize(K)}else K=Q.sizeCache.indexAtOffset(Y),V=Y-Q.sizeCache.getOffset(K);V=Math.max(0,V);let T={index:K,offsetInItem:V,total:U};if(_)T.selectedIds=_;return T});let j=(Y)=>{let{index:X,offsetInItem:U,selectedIds:N}=Y,_=Q.getVirtualTotal();if(_===0)return;if(!Number.isFinite(X)||!Number.isFinite(U))return;if(Q.sizeCache.getTotal()!==_){Q.sizeCache.rebuild(_),Q.updateCompressionMode();let Z=Q.getCachedCompression();Q.updateContentSize(Z.virtualSize)}let V=Q.getCachedCompression(),T=Math.max(0,Math.min(X,_-1)),A;if(V.isCompressed){let Z=Q.sizeCache.getSize(T),G=Z>0?U/Z:0;A=(T+G)/_*V.virtualSize}else A=Q.sizeCache.getOffset(T)+U;let y=Q.state.viewportState.containerSize,D=Math.max(0,V.virtualSize-y);if(A=Math.max(0,Math.min(A,D)),Q.scrollController.scrollTo(A),N&&N.length>0){let Z=Q.methods.get("select");if(Z)Z(...N)}let b=Q.methods.get("loadVisibleRange");if(b)requestAnimationFrame(()=>{b()});else{let Z=Q.methods.get("reload");if(Z)requestAnimationFrame(()=>{Z()})}};if(Q.methods.set("restoreScroll",j),q)queueMicrotask(()=>{j(q)})}}};var T2=(J,q=50,Q=1/0,j=!0)=>{let Y=J,X=[],U=0,N=()=>{X=Y.map((Z,G)=>({def:Z,index:G,width:0,minWidth:I1(Z.minWidth??q,1),maxWidth:Z.maxWidth??Q,resizable:Z.resizable??j,offset:0}))},_=(Z)=>{if(X.length===0){U=0;return}let G=0,v=0;for(let O=0;O<X.length;O++){let $=X[O],C=$.def;if(C.width!==void 0)$.width=g2(C.width,$.minWidth,$.maxWidth),G+=$.width;else v++}if(v>0){let $=Math.max(0,Z-G)/v;for(let C=0;C<X.length;C++){let W=X[C];if(W.def.width===void 0)W.width=g2($,W.minWidth,W.maxWidth)}}K()},K=()=>{let Z=0;for(let G=0;G<X.length;G++){let v=X[G];v.offset=Z,Z+=v.width}U=Z},V=(Z,G)=>{if(Z<0||Z>=X.length)return 0;let v=X[Z];if(!v.resizable)return v.width;let O=g2(G,v.minWidth,v.maxWidth);return v.width=O,K(),O},T=(Z)=>{return X[Z]},A=(Z)=>{if(X.length===0)return;if(Z<0)return X[0];if(Z>=U)return X[X.length-1];let G=0,v=X.length-1;while(G<v){let O=G+v>>>1,$=X[O];if(Z<$.offset)v=O-1;else if(Z>=$.offset+$.width)G=O+1;else return $}return X[G]},y=(Z)=>{if(Z<0||Z>=X.length)return 0;return X[Z].offset},D=(Z)=>{if(Z<0||Z>=X.length)return 0;return X[Z].width},b=(Z)=>{Y=Z,N()};return N(),{get columns(){return X},get totalWidth(){return U},resolve:_,updateColumns:b,resizeColumn:V,getColumn:T,getColumnAtX:A,getColumnOffset:y,getColumnWidth:D}},g2=(J,q,Q)=>Math.min(Q,Math.max(q,J)),I1=(J,q)=>Math.max(q,J);var $2=(J,q,Q,j,Y,X,U)=>{let N=document.createElement("div");N.setAttribute("role","rowgroup");let _=document.createElement("div");_.className=`${j}-table-header`,_.setAttribute("role","row"),_.setAttribute("aria-rowindex","1"),_.style.height=`${Q}px`;let K=document.createElement("div");K.className=`${j}-table-header-scroll`,K.setAttribute("role","presentation"),_.appendChild(K),N.appendChild(_),J.insertBefore(N,J.firstChild),q.style.position="absolute",q.style.top=`${Q}px`,q.style.left="0",q.style.right="0",q.style.bottom="0",q.style.height="auto";let V=[],T=[],A=[],y=!0,D=null,b="asc",Z=null,G=!1,v=-1,O=0,$=0,C=(k,P)=>{let I=document.createElement("div");I.className=`${j}-table-header-cell`,I.setAttribute("role","columnheader"),I.setAttribute("aria-colindex",String(P+1)),I.dataset.columnKey=k.def.key;let R=k.def.align;if(R==="center")I.classList.add(`${j}-table-header-cell--center`);else if(R==="right")I.classList.add(`${j}-table-header-cell--right`);let f=document.createElement("div");f.className=`${j}-table-header-content`;let a=k.def.header?k.def.header(k.def):k.def.label;if(typeof a==="string")f.textContent=a;else f.appendChild(a);if(I.appendChild(f),k.def.sortable){let p=document.createElement("span");p.className=`${j}-table-header-sort`,p.setAttribute("aria-hidden","true"),I.appendChild(p),A.push(p),I.classList.add(`${j}-table-header-cell--sortable`)}else A.push(null);if(k.resizable){let p=document.createElement("div");p.className=`${j}-table-header-resize`,p.dataset.resizeIndex=String(P),I.appendChild(p),T.push(p)}return I},W=(k)=>{Z=k,K.textContent="",V=[],T=[],A=[];let P=k.columns;for(let I=0;I<P.length;I++){let R=P[I],f=C(R,I);V.push(f),K.appendChild(f)}if(d(k),D)S(D,b)},d=(k)=>{Z=k;let P=k.columns;K.style.width=`${k.totalWidth}px`;for(let I=0;I<V.length&&I<P.length;I++){let R=V[I],f=P[I];R.style.width=`${f.width}px`}},S=(k,P)=>{if(D=k,b=P,!Z)return;let I=Z.columns;for(let R=0;R<A.length&&R<I.length;R++){let f=A[R];if(!f)continue;if(I[R].def.key===k&&k!==null)f.textContent=P==="asc"?"▲":"▼",f.style.opacity="0.7",V[R].setAttribute("aria-sort",P==="asc"?"ascending":"descending");else f.textContent="",f.style.opacity="0",V[R].removeAttribute("aria-sort")}},F=(k)=>{K.style.transform=`translateX(${-k}px)`},h=(k)=>{let P=k.target;if(!P.dataset.resizeIndex)return;if(k.preventDefault(),k.stopPropagation(),v=parseInt(P.dataset.resizeIndex,10),!Z)return;let I=Z.getColumn(v);if(!I||!I.resizable)return;G=!0,O=k.clientX,$=I.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",P.classList.add(`${j}-table-header-resize--active`),P.setPointerCapture(k.pointerId),P.addEventListener("pointermove",s),P.addEventListener("pointerup",x),P.addEventListener("pointercancel",x)},s=(k)=>{if(!G||!Z)return;let P=k.clientX-O;if(Math.abs(P)<1)return;let I=Math.max(0,$+P);Y(v,I)},x=(k)=>{if(!G)return;let P=k.target;P.removeEventListener("pointermove",s),P.removeEventListener("pointerup",x),P.removeEventListener("pointercancel",x);try{P.releasePointerCapture(k.pointerId)}catch{}P.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",G=!1,v=-1},r=(k)=>{let P=k.target;if(P.dataset.resizeIndex!==void 0)return;if(G)return;let I=P;while(I&&!I.dataset.columnKey)if(I=I.parentElement,I===_||I===null)return;if(!I||!I.dataset.columnKey)return;let R=I.dataset.columnKey;if(!Z)return;let f=Z.columns,a=-1;for(let E=0;E<f.length;E++)if(f[E].def.key===R){a=E;break}if(a===-1)return;let p=f[a];if(U)U({key:R,index:a,event:k});if(p.def.sortable&&X){let E;if(D===R)if(b==="asc")E="desc";else E=null;else E="asc";X({key:R,index:a,direction:E})}};return _.addEventListener("pointerdown",h),_.addEventListener("click",r),{element:_,update:d,updateSort:S,rebuild:W,show:()=>{if(y)return;y=!0,_.style.display=""},hide:()=>{if(!y)return;y=!1,_.style.display="none"},destroy:()=>{_.removeEventListener("pointerdown",h),_.removeEventListener("click",r),q.style.position="",q.style.top="",q.style.left="",q.style.right="",q.style.bottom="",N.remove(),V=[],T=[],A=[],Z=null,y=!1},syncScroll:F}};var p1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;return document.createElement("div")},release:(X)=>{if(X.parentNode)X.parentNode.removeChild(X);if(q.length<J)X.className="",X.removeAttribute("data-id"),X.removeAttribute("data-index"),X.removeAttribute("aria-selected"),X.removeAttribute("aria-rowindex"),X.removeAttribute("role"),X.style.cssText="",X.textContent="",q.push(X)},clear:()=>{q.length=0}}};var b2=(J,q,Q,j,Y,X,U,N)=>{let _=p1(),K=new Map,V=0,T=-1,A=Q,y=null,D=null,b=(p,E)=>{y=p,D=E},Z=(p,E)=>{if(E)p.setAttribute("aria-selected","true");else p.removeAttribute("aria-selected")},G=`${Y}-item ${Y}-table-row`,v=`${Y}-item--selected`,O=`${Y}-item--focused`,$=`${Y}-table-cell`,C=`${Y}-table-cell--center`,W=`${Y}-table-cell--right`,d=`${Y}-item--odd`,S=`${Y}-item ${Y}-table-row ${Y}-table-group-header`,F=`${Y}-table-group-header-content`,h=(p,E,L,z)=>{if(L.def.cell){let M=L.def.cell(E,L.def,z);if(typeof M==="string")p.innerHTML=M;else p.replaceChildren(M)}else{let M=E[L.def.key];p.textContent=M!=null?String(M):""}},s=(p,E,L,z)=>{let M=G;if(N&&(E&1)===1)M+=` ${d}`;if(L)M+=` ${v}`;if(z)M+=` ${O}`;p.className=M},x=(p,E)=>{let L=E.def.align;if(L==="center")p.classList.add(C),p.classList.remove(W);else if(L==="right")p.classList.add(W),p.classList.remove(C);else p.classList.remove(C,W)},r=(p,E)=>{let z=A.columns.length;if(E.length===z)return E;let M=[];for(let w=0;w<z;w++){let g;if(w<E.length)g=E[w];else g=document.createElement("div"),g.className=$,p.appendChild(g);M.push(g)}for(let w=z;w<E.length;w++)E[w].remove();return M},l=(p,E,L)=>{let z=_.acquire(),M=p;z.style.width=`${A.totalWidth}px`;let w=L.getSize(E);z.style.height=`${w}px`,z.className=S,z.setAttribute("role","presentation"),z.setAttribute("data-id",String(p.id)),z.setAttribute("data-index",String(E)),z.removeAttribute("aria-selected"),z.removeAttribute("aria-rowindex"),z.replaceChildren();let g=document.createElement("div");if(g.className=F,D){let m=D(M.groupKey,M.groupIndex);if(typeof m==="string")g.innerHTML=m;else g.appendChild(m)}z.appendChild(g);let Q0=L.getOffset(E);return z.style.transform=`translateY(${Q0}px)`,{element:z,cells:[],index:E,isGroupHeader:!0,lastItemId:p.id,lastSelected:!1,lastFocused:!1,lastOffset:Q0,lastHeight:w,lastSeenFrame:V}},B=(p,E,L,z,M)=>{let w=_.acquire();w.style.width=`${A.totalWidth}px`;let g=M.getSize(E);w.style.height=`${g}px`,s(w,E,L,z),w.setAttribute("role","row"),w.setAttribute("data-id",String(p.id)),w.setAttribute("data-index",String(E)),w.id=`${X}-${E}`,w.setAttribute("aria-rowindex",String(E+2));let Q0=U();if(Q0!==T)T=Q0;Z(w,L);let m=r(w,[]),q0=A.columns;for(let c=0;c<m.length&&c<q0.length;c++){let n=m[c],e=q0[c];n.style.left=`${e.offset}px`,n.style.width=`${e.width}px`,n.setAttribute("role","gridcell"),n.setAttribute("aria-colindex",String(c+1)),x(n,e),h(n,p,e,E)}let X0=M.getOffset(E);return w.style.transform=`translateY(${X0}px)`,{element:w,cells:m,index:E,isGroupHeader:!1,lastItemId:p.id,lastSelected:L,lastFocused:z,lastOffset:X0,lastHeight:g,lastSeenFrame:V}},u=(p,E,L,z)=>{V++;for(let[m,q0]of K)if(m>=E.start&&m<=E.end)q0.lastSeenFrame=V;else if(V-q0.lastSeenFrame>2)_.release(q0.element),K.delete(m);let M=!1,w=U();if(w!==T)T=w,M=!0;let g=null,Q0=q();for(let m=E.start;m<=E.end;m++){let q0=m-E.start,X0=p[q0];if(!X0)continue;let c=L.has(X0.id),n=m===z,e=y?y(X0):!1,t=K.get(m);if(t){if(t.isGroupHeader!==e){_.release(t.element),K.delete(m);let U0=e?l(X0,m,Q0):B(X0,m,c,n,Q0);if(K.set(m,U0),!g)g=document.createDocumentFragment();g.appendChild(U0.element);continue}if(e){if(t.lastItemId!==X0.id){let W0=X0,j0=t.element.firstElementChild;if(j0&&D){let M0=D(W0.groupKey,W0.groupIndex);if(typeof M0==="string")j0.innerHTML=M0;else j0.replaceChildren(M0)}t.element.setAttribute("data-id",String(X0.id)),t.lastItemId=X0.id}let Z0=Q0.getOffset(m);if(t.lastOffset!==Z0)t.lastOffset=Z0,t.element.style.transform=`translateY(${Z0}px)`;let V0=Q0.getSize(m);if(t.lastHeight!==V0)t.lastHeight=V0,t.element.style.height=`${V0}px`;t.lastSeenFrame=V}else{let U0=t.lastItemId!==X0.id,Z0=t.lastSelected!==c,V0=t.lastFocused!==n;if(U0){let M0=A.columns;for(let O0=0;O0<t.cells.length&&O0<M0.length;O0++)h(t.cells[O0],X0,M0[O0],m);s(t.element,m,c,n),t.element.setAttribute("data-id",String(X0.id)),Z(t.element,c),t.lastItemId=X0.id,t.lastSelected=c,t.lastFocused=n}else if(Z0||V0)s(t.element,m,c,n),Z(t.element,c),t.lastSelected=c,t.lastFocused=n;let W0=Q0.getOffset(m);if(t.lastOffset!==W0)t.lastOffset=W0,t.element.style.transform=`translateY(${W0}px)`;let j0=Q0.getSize(m);if(t.lastHeight!==j0)t.lastHeight=j0,t.element.style.height=`${j0}px`;if(M)t.element.setAttribute("aria-rowindex",String(m+2));t.lastSeenFrame=V}}else{let U0=e?l(X0,m,Q0):B(X0,m,c,n,Q0);if(K.set(m,U0),!g)g=document.createDocumentFragment();g.appendChild(U0.element)}}if(g)J.appendChild(g)},k=(p,E,L,z)=>{let M=K.get(p);if(!M)return;if(M.isGroupHeader)return;let w=M.lastItemId!==E.id,g=M.lastSelected!==L,Q0=M.lastFocused!==z;if(w||g||Q0){if(w){let m=A.columns;for(let q0=0;q0<M.cells.length&&q0<m.length;q0++)h(M.cells[q0],E,m[q0],p);M.element.setAttribute("data-id",String(E.id)),M.lastItemId=E.id}s(M.element,p,L,z),Z(M.element,L),M.lastSelected=L,M.lastFocused=z}},P=(p,E,L)=>{let z=K.get(p);if(!z)return;if(z.isGroupHeader)return;let M=z.lastSelected!==E,w=z.lastFocused!==L;if(M||w)s(z.element,p,E,L),Z(z.element,E),z.lastSelected=E,z.lastFocused=L},I=(p)=>{A=p;let E=p.columns;for(let[,L]of K)if(L.element.style.width=`${p.totalWidth}px`,L.cells.length>0)for(let z=0;z<L.cells.length&&z<E.length;z++){let M=L.cells[z],w=E[z];M.style.left=`${w.offset}px`,M.style.width=`${w.width}px`}},R=(p)=>{return K.get(p)?.element},f=()=>{for(let[,p]of K)_.release(p.element);K.clear(),V=0,T=-1};return{render:u,updateItem:k,updateItemClasses:P,getElement:R,updateColumnLayout:I,setGroupHeaderFn:b,clear:f,destroy:()=>{f(),_.clear()}}};var h1=new Set,aJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist/builder] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist/builder] withTable: either rowHeight or estimatedRowHeight is required");let q=null,Q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(Y){let{dom:X,emitter:U,config:N}=Y,{classPrefix:_}=N;if(N.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(N.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let K=J.resizable??!0,V=J.minColumnWidth??50,T=J.maxColumnWidth??1/0,A=J.columnBorders??!1,y=J.rowBorders??!0,D=J.rowHeight,b=J.headerHeight??(typeof D==="number"?D:40),Z=J.sort?.key??null,G=J.sort?.direction??"asc";if(q=T2(J.columns,V,T,K),typeof D==="function")Y.setSizeConfig(D);else if(typeof D==="number")Y.setSizeConfig(D);if(Y.rebuildSizeCache(),X.root.classList.add(`${_}--table`),y)X.root.classList.add(`${_}--table-row-borders`);if(A)X.root.classList.add(`${_}--table-col-borders`);X.root.setAttribute("role","grid"),X.root.setAttribute("aria-colcount",String(J.columns.length));let v=-1,O=X.items.getAttribute("aria-label");if(O)X.root.setAttribute("aria-label",O),X.items.removeAttribute("aria-label");X.items.setAttribute("role","rowgroup"),X.viewport.setAttribute("role","none"),X.content.setAttribute("role","none"),X.viewport.removeAttribute("tabindex");let $=Y.getContainerWidth();q.resolve($);let C=(L,z)=>{if(!q)return;let M=q.getColumn(L);if(!M)return;let w=M.width,g=q.resizeColumn(L,z);if(Q)Q.update(q);if(j)j.updateColumnLayout(q);S(),U.emit("column:resize",{key:M.def.key,index:L,previousWidth:w,width:g})},W=(L)=>{if(L.direction===null)Z=null,G="asc";else Z=L.key,G=L.direction;if(Q)Q.updateSort(Z,G);U.emit("column:sort",L)},d=(L)=>{U.emit("column:click",L)};if(Q=$2(X.root,X.viewport,b,_,C,W,d),Q.rebuild(q),Z)Q.updateSort(Z,G);let S=()=>{if(!q)return;let L=q.totalWidth;X.content.style.minWidth=`${L}px`,X.items.style.minWidth=`${L}px`};S(),j=b2(X.items,()=>Y.sizeCache,q,J.columns,_,N.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped);let F=null,h=null,s=!1,x=()=>{if(s)return;s=!0,F=Y.methods.get("_getSelectedIds")??null,h=Y.methods.get("_getFocusedIndex")??null},r=-1,l=-1,B=!0,u=N.overscan??3,k={start:0,end:0},P={start:0,end:0},I=()=>{if(Y.state.isDestroyed)return;let L=Y.scrollController.getScrollTop(),z=Y.state.viewportState.containerSize;if(!B&&L===r&&z===l)return;r=L,l=z,B=!1;let M=Y.getVirtualTotal(),w=M+1;if(w!==v)v=w,X.root.setAttribute("aria-rowcount",String(w));if(M===0||z===0)k.start=0,k.end=0;else{k.start=Math.max(0,Y.sizeCache.indexAtOffset(L));let c=Y.sizeCache.indexAtOffset(L+z);if(c<M-1)c++;k.end=Math.min(M-1,Math.max(0,c))}P.start=Math.max(0,k.start-u),P.end=Math.min(M-1,k.end+u);let g=Y.state.viewportState;g.scrollPosition=L,g.visibleRange.start=k.start,g.visibleRange.end=k.end,g.renderRange.start=P.start,g.renderRange.end=P.end;let Q0=Y.state.lastRenderRange,m=Y.dataManager.getItemsInRange(P.start,P.end);x();let q0=F?F():h1,X0=h?h():-1;if(j.render(m,P,q0,X0),Q0.start!==P.start||Q0.end!==P.end)Q0.start=P.start,Q0.end=P.end,U.emit("range:change",{range:{start:P.start,end:P.end}})},R=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,B=!0,I()};Y.setRenderFns(I,R);let f=Q,a=-1,p=()=>{let L=X.viewport.scrollLeft;if(L!==a){if(a=L,f.syncScroll)f.syncScroll(L)}};Y.afterScroll.push(()=>{p()});let E=()=>{p()};X.viewport.addEventListener("scroll",E,{passive:!0}),Y.resizeHandlers.push((L,z)=>{if(!q)return;if(q.resolve(L),Q)Q.update(q);if(j)j.updateColumnLayout(q);S()}),Y.methods.set("updateColumns",(L)=>{if(!q||!Q)return;if(q.updateColumns(L),q.resolve(Y.getContainerWidth()),Q.rebuild(q),Z)Q.updateSort(Z,G);if(S(),j)j.updateColumnLayout(q),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(L,z)=>{if(!q)return;let M;if(typeof L==="string"){let w=q.columns;M=-1;for(let g=0;g<w.length;g++)if(w[g].def.key===L){M=g;break}if(M===-1)return}else M=L;C(M,z)}),Y.methods.set("getColumnWidths",()=>{if(!q)return{};let L={},z=q.columns;for(let M=0;M<z.length;M++)L[z[M].def.key]=z[M].width;return L}),Y.methods.set("setSort",(L,z)=>{if(Z=L,G=z??"asc",Q)Q.updateSort(Z,G)}),Y.methods.set("getSort",()=>{return{key:Z,direction:G}}),Y.methods.set("_getTableLayout",()=>q),Y.methods.set("_replaceTableRenderer",(L)=>{j=L}),Y.methods.set("_updateTableForGroups",(L,z)=>{if(j)j.setGroupHeaderFn(L,z)}),Y.methods.set("_getTableHeaderHeight",()=>b),Y.contentSizeHandlers.push(()=>{S()}),Y.destroyHandlers.push(()=>{if(X.viewport.removeEventListener("scroll",E),Q)Q.destroy(),Q=null;if(j)j.destroy(),j=null;X.content.style.minWidth="",X.items.style.minWidth="",X.root.classList.remove(`${_}--table`),X.root.removeAttribute("role"),X.root.removeAttribute("aria-colcount"),X.viewport.removeAttribute("role"),X.viewport.setAttribute("tabindex","-1"),X.content.removeAttribute("role");let L=X.root.getAttribute("aria-label");if(L)X.items.setAttribute("aria-label",L),X.root.removeAttribute("aria-label");X.root.removeAttribute("aria-rowcount"),X.items.setAttribute("role","listbox")})},destroy(){if(Q)Q.destroy(),Q=null;if(j)j.destroy(),j=null}}};export{aJ as withTable,lJ as withSnapshots,cJ as withSelection,FJ as withScrollbar,$J as withScale,HJ as withPage,mJ as withMasonry,gJ as withGroups,xJ as withGrid,bJ as withAsync,BJ as vlist,g0 as toggleSelection,PJ as simpleVisibleRange,s0 as selectItems,E2 as selectAll,fJ as rangesEqual,B2 as rafThrottle,OJ as needsScaling,Z2 as mergeRanges,dJ as isSelected,z0 as isPlaceholderItem,IJ as isInRange,C0 as isGroupHeader,i0 as getSelectedItems,o0 as getSelectedIds,T0 as getScaleState,EJ as getScaleInfo,T0 as getScale,pJ as getRangeCount,AJ as getMaxItemsWithoutScaling,S2 as filterPlaceholders,hJ as diffRanges,n0 as deselectItems,b2 as createTableRenderer,T2 as createTableLayout,$2 as createTableHeader,W2 as createStickyHeader,U2 as createSparseStorage,k0 as createSizeCache,A2 as createSelectionState,u0 as createScrollbar,TJ as createScrollController,N2 as createPlaceholderManager,Q2 as createMeasuredSizeCache,O2 as createMasonryRenderer,M2 as createMasonryLayout,a0 as createGroupedSizeFn,V2 as createGroupLayout,r0 as createGridRenderer,G2 as createGridLayout,j2 as createEmitter,_2 as createAsyncManager,F2 as clearSelection,SJ as clampScrollPosition,CJ as calculateTotalSize,P0 as calculateScrollToIndex,q2 as calculateScaledVisibleRange,X2 as calculateScaledScrollToIndex,GJ as calculateScaledRenderRange,h0 as calculateScaledItemPosition,RJ as calculateRenderRange,c0 as calculateMissingRanges,vJ as calculateItemOffset,MJ as calculateIndexFromScrollPosition,wJ as calculateActualSize,l0 as buildLayoutItems,y0 as MAX_VIRTUAL_SIZE,DJ as MAX_VIRTUAL_HEIGHT};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floor/vlist",
3
- "version": "1.2.9",
3
+ "version": "1.3.0",
4
4
  "description": "Lightweight, high-performance virtual list with zero dependencies",
5
5
  "author": {
6
6
  "name": "Floor IO",