@floor/vlist 0.9.8 → 0.9.9

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.
@@ -11,7 +11,7 @@
11
11
  import type { VListItem } from "../../types";
12
12
  /** Placeholder configuration */
13
13
  export interface PlaceholderConfig {
14
- /** Character used for masking text (default: '') */
14
+ /** Character used for masking text (default: 'x') */
15
15
  maskCharacter?: string;
16
16
  /** Maximum items to sample for length profiling (default: 20) */
17
17
  maxSampleSize?: number;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var{defineProperty:_2,getOwnPropertyNames:lj,getOwnPropertyDescriptor:aj}=Object,sj=Object.prototype.hasOwnProperty;var v2=new WeakMap,rj=(j)=>{var q=v2.get(j),J;if(q)return q;if(q=_2({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function")lj(j).map((Q)=>!sj.call(q,Q)&&_2(q,Q,{get:()=>j[Q],enumerable:!(J=aj(j,Q))||J.enumerable}));return v2.set(j,q),q};var nj=(j,q)=>{for(var J in q)_2(j,J,{get:q[J],enumerable:!0,configurable:!0,set:(Q)=>q[J]=()=>Q})};var w2=(j,q)=>()=>(j&&(q=j(j=0)),q);var oj=(j,q)=>{let J=q;return{getOffset:(Q)=>Q*j,getSize:(Q)=>j,indexAtOffset:(Q)=>{if(J===0||j===0)return 0;return Math.max(0,Math.min(Math.floor(Q/j),J-1))},getTotalSize:()=>J*j,getTotal:()=>J,rebuild:(Q)=>{J=Q},isVariable:()=>!1}},ij=(j,q)=>{let J=q,Q=new Float64Array(0),K=(Z)=>{J=Z,Q=new Float64Array(Z+1),Q[0]=0;for(let N=0;N<Z;N++)Q[N+1]=Q[N]+j(N)};K(q);let X=(Z)=>{if(J===0)return 0;if(Z<=0)return 0;if(Z>=Q[J])return J-1;let N=0,W=J-1;while(N<W){let Y=N+W+1>>>1;if(Q[Y]<=Z)N=Y;else W=Y-1}return N};return{getOffset:(Z)=>{if(Z<=0)return 0;if(Z>=J)return Q[J];return Q[Z]},getSize:(Z)=>j(Z),indexAtOffset:(Z)=>X(Z),getTotalSize:()=>Q[J]??0,getTotal:()=>J,rebuild:(Z)=>K(Z),isVariable:()=>!0}},y0=(j,q)=>{if(typeof j==="number")return oj(j,q);return ij(j,q)},u0=(j,q,J,Q)=>{if(Q===0)return 0;if(!j.isVariable())return Math.ceil(J/j.getSize(0));let K=0,X=0,Z=q;while(Z<Q&&X<J)X+=j.getSize(Z),K++,Z++;return Math.max(1,K)},r0=(j,q,J)=>{if(J===0)return 0;if(!j.isVariable())return Math.floor(q/j.getSize(0));let Q=0,K=0;for(let X=J-1;X>=0;X--){let Z=j.getSize(X);if(K+Z>q)break;K+=Z,Q++}return Math.max(Q,1)},M2=(j,q,J)=>{if(J===0)return 0;let Q=Math.floor(q),K=q-Q,X=Math.max(0,Math.min(Q,J-1));return j.getOffset(X)+K*j.getSize(X)};var F2=200,z0=50,n2=15,o2=2,i2=50,$0=16000000,t2="x",e2=20,A2="_isPlaceholder",jj="__placeholder_";var A0=(j,q)=>{let J=q.getTotalSize(),Q=J>$0,K=Q?$0:J,X=J>0?K/J:1;return{isCompressed:Q,actualSize:J,virtualSize:K,ratio:X}},i0=(j,q,J,Q,K,X)=>{if(Q===0||q===0)return X.start=0,X.end=-1,X;if(!K.isCompressed){let D=J.indexAtOffset(j),M=J.indexAtOffset(j+q);if(M<Q-1)M++;return X.start=Math.max(0,D),X.end=Math.min(Q-1,Math.max(0,M)),X}let{virtualSize:Z}=K,W=j/Z*Q,Y=Math.floor(W),U=u0(J,Math.max(0,Y),q,Q),A=Math.ceil(W)+U,O=Z-q-j;if(O<=q&&O>=-1){let D=r0(J,q,Q),M=Math.max(0,Q-D),_=Math.max(0,Math.min(1,1-O/q));Y=Math.floor(Y+(M-Y)*_),A=O<=1?Q-1:Math.min(Q-1,Y+U)}return X.start=Math.max(0,Y),X.end=Math.min(Q-1,Math.max(0,A)),X},Jj=(j,q,J,Q)=>{if(J===0)return Q.start=0,Q.end=-1,Q;return Q.start=Math.max(0,j.start-q),Q.end=Math.min(J-1,j.end+q),Q},v0=(j,q,J,Q,K,X,Z)=>{if(!X.isCompressed||Q===0)return J.getOffset(j);let{virtualSize:N}=X,W=N-K,Y=W-q;if(Y<=K&&Y>=-1){if(q>=W-1){let b=J.getTotalSize()-J.getOffset(j);return K-b}let O=r0(J,K,Q),D=Math.max(0,Q-O),_=q/N*Q,v=Math.max(0,Math.min(1,1-Y/K)),k=J.getOffset(j)-J.getOffset(D),T=J.getOffset(j)-M2(J,_,Q);return T+(k-T)*v}let U=q/N,A=J.getTotalSize(),V=U*A;return J.getOffset(j)-V},t0=(j,q,J,Q,K,X="start")=>{if(Q===0)return 0;let Z;if(K.isCompressed){if(X==="end"&&j===Q-1)return Math.max(0,K.virtualSize-J);Z=j/Q*K.virtualSize}else Z=q.getOffset(j);let N=q.getSize(j);switch(X){case"center":Z-=(J-N)/2;break;case"end":Z-=J-N;break}let W=K.virtualSize-J;return Math.max(0,Math.min(Z,W))},Qj=(j,q,J,Q)=>{if(J===0)return 0;if(Q.isCompressed){let K=j/Q.virtualSize;return Math.floor(K*J)}return q.indexAtOffset(j)},qj=(j,q)=>{if(typeof q==="number")return j*q>$0;return q.getTotalSize()>$0},Xj=(j)=>{if(j<=0)return 0;return Math.floor($0/j)},Yj=(j,q)=>{let J=A0(j,q);if(!J.isCompressed)return`No compression needed (${j} items, ${(J.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(J.ratio*100).toFixed(1)}% (${j} items, ${(J.actualSize/1e6).toFixed(1)}M px → ${(J.virtualSize/1e6).toFixed(1)}M px virtual)`};var e0=()=>{};var R0=(j)=>{return j!==null&&typeof j==="object"&&j.__groupHeader===!0};var Hj={};nj(Hj,{createGridRenderer:()=>d0});var GJ=(j=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let Z=document.createElement("div");return Z.setAttribute("role","option"),Z},release:(X)=>{if(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}}},d0=(j,q,J,Q,K,X,Z,N,W=!1)=>{let Y=GJ(),U=new Map,A=X,V=!1,O=null,D=0,M="",_=(H)=>{if(O&&D===H)return O;return O=A0(H,J),D=H,O},v={selected:!1,focused:!1},k=(H,w)=>{return v.selected=H,v.focused=w,v},T=`${K}-item ${K}-grid-item`,b=`${K}-item--selected`,G=`${K}-item--focused`,P=(H,w)=>{if(typeof w==="string")H.innerHTML=w;else H.replaceChildren(w)},L=(H,w,c)=>{H.classList.toggle(b,w),H.classList.toggle(G,c)},y=(H,w)=>{let c=Q.getRow(H);if(w){let t=w.totalItems,s=_(t);if(s.isCompressed)return v0(c,w.scrollPosition,J,t,w.containerSize,s,w.rangeStart)}return J.getOffset(c)},E=(H,w,c)=>{let t=H.dataset.id?.startsWith("__group_header"),s=t?0:Q.getCol(w),o=t?0:Q.getColumnOffset(s,A),Q0;if(V){let l=Q.getRow(w),u=0,n=new Set;for(let K0=0;K0<w;K0++){let i=Q.getRow(K0);if(i<l&&!n.has(i)){let B0=J.getSize(K0);u+=B0,n.add(i)}}Q0=u}else Q0=y(w,c);if(W)H.style.transform=`translate(${Math.round(Q0)}px, ${Math.round(o)}px)`;else H.style.transform=`translate(${Math.round(o)}px, ${Math.round(Q0)}px)`},$=(H,w)=>{let c=H.dataset.id?.startsWith("__group_header"),t=c?A:Q.getColumnWidth(A),s;if(V||c)s=J.getSize(w)-Q.gap;else{let o=Q.getRow(w);s=J.getSize(o)-Q.gap}if(W)H.style.width=`${s}px`,H.style.height=`${t}px`;else H.style.width=`${t}px`,H.style.height=`${s}px`},r=(H,w,c,t,s)=>{let o=Y.acquire(),Q0=k(c,t);if(o.className=T,o.dataset.index=String(H),o.dataset.id=String(w.id),o.dataset.row=String(Q.getRow(H)),o.dataset.col=String(Q.getCol(H)),o.ariaSelected=String(c),N)o.id=`${N}-item-${H}`;if(Z)M=String(Z()),o.setAttribute("aria-setsize",M),o.setAttribute("aria-posinset",String(H+1));$(o,H);let l=q(w,H,Q0);return P(o,l),L(o,c,t),E(o,H,s),o},z=(H,w,c,t,s)=>{if(w.start===0&&H.length>0)V=R0(H[0]);for(let[u,n]of U)if(u<w.start||u>w.end)n.element.remove(),Y.release(n.element),U.delete(u);let o=!1;if(Z){let u=String(Z());o=u!==M,M=u}let Q0=document.createDocumentFragment(),l=[];for(let u=w.start;u<=w.end;u++){let n=u-w.start,K0=H[n];if(!K0){console.warn(`⚠️ RENDER: Missing item at index ${u} (range: ${w.start}-${w.end}, items.length: ${H.length})`);continue}let i=c.has(K0.id),B0=u===t,X0=U.get(u);if(X0){let S=X0.element.dataset.id,d=String(K0.id);if(S!==d){let a=k(i,B0),Z0=q(K0,u,a);P(X0.element,Z0),X0.element.dataset.id=d,X0.element.dataset.row=String(Q.getRow(u)),X0.element.dataset.col=String(Q.getCol(u)),$(X0.element,u)}if(L(X0.element,i,B0),X0.element.ariaSelected=String(i),E(X0.element,u,s),o)X0.element.setAttribute("aria-setsize",M)}else{let S=r(u,K0,i,B0,s);Q0.appendChild(S),l.push({index:u,element:S})}}if(l.length>0){j.appendChild(Q0);for(let{index:u,element:n}of l)U.set(u,{index:u,element:n})}},m=(H)=>{for(let[w,c]of U)E(c.element,w,H)},B=(H,w,c,t)=>{let s=U.get(H);if(s){let o=k(c,t),Q0=q(w,H,o);P(s.element,Q0),L(s.element,c,t),s.element.dataset.id=String(w.id),s.element.ariaSelected=String(c),$(s.element,H)}},R=(H,w,c)=>{let t=U.get(H);if(t)L(t.element,w,c)},C=(H)=>{return U.get(H)?.element},h=(H)=>{if(Math.abs(H-A)<1)return;A=H;for(let[w,c]of U)$(c.element,w),E(c.element,w)},I=()=>{for(let[,H]of U)H.element.remove(),Y.release(H.element);U.clear()};return{render:z,updatePositions:m,updateItem:B,updateItemClasses:R,getElement:C,updateContainerWidth:h,clear:I,destroy:()=>{I(),Y.clear()}}};var B2=w2(()=>{e0()});var f2=2,S2=(j=0)=>{let q=[,,,,,];for(let J=0;J<5;J++)q[J]={position:0,time:0};return{velocity:0,lastPosition:j,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},V2=(j,q)=>{let J=performance.now(),Q=J-j.lastTime;if(Q===0)return j;if(Q>100){j.sampleCount=0,j.sampleIndex=0,j.velocity=0;let X=j.samples[0];return X.position=q,X.time=J,j.sampleIndex=1,j.sampleCount=1,j.lastPosition=q,j.lastTime=J,j}let K=j.samples[j.sampleIndex];if(K.position=q,K.time=J,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,Z=j.samples[X],N=q-Z.position,W=J-Z.time;j.velocity=W>0?Math.abs(N)/W:0}return j.lastPosition=q,j.lastTime=J,j};var n0=(j,q)=>{let J=new Map,Q=(X)=>{let Z=J.get(X);return Z!==void 0?Z:j},K=y0(Q,q);return{getOffset(X){return K.getOffset(X)},getSize(X){return Q(X)},indexAtOffset(X){return K.indexAtOffset(X)},getTotalSize(){return K.getTotalSize()},getTotal(){return K.getTotal()},rebuild(X){if(X<K.getTotal()){for(let Z of J.keys())if(Z>=X)J.delete(Z)}K=y0(Q,X)},isVariable(){return!0},setMeasuredSize(X,Z){J.set(X,Z)},isMeasured(X){return J.has(X)},getEstimatedSize(){return j},measuredCount(){return J.size}}};var o0=()=>{let j={},q=(N,W)=>{if(!j[N])j[N]=new Set;return j[N].add(W),()=>J(N,W)},J=(N,W)=>{j[N]?.delete(W)};return{on:q,off:J,emit:(N,W)=>{j[N]?.forEach((Y)=>{try{Y(W)}catch(U){console.error(`[vlist] Error in event handler for "${String(N)}":`,U)}})},once:(N,W)=>{let Y=(U)=>{J(N,Y),W(U)};return q(N,Y)},clear:(N)=>{if(N)delete j[N];else for(let W in j)delete j[W]},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},p2=(j,q,J,Q)=>{let K=document.createElement("div");if(K.className=q,Q)K.classList.add(`${q}--horizontal`);if(K.setAttribute("role","listbox"),K.setAttribute("tabindex","0"),J)K.setAttribute("aria-label",J);if(Q)K.setAttribute("aria-orientation","horizontal");let X=document.createElement("div");if(X.className=`${q}-viewport`,Q)X.style.overflowX="auto",X.style.overflowY="hidden";else X.style.overflow="auto";X.style.height="100%",X.style.width="100%";let Z=document.createElement("div");if(Z.className=`${q}-content`,Z.style.position="relative",Q)Z.style.height="100%";else Z.style.width="100%";let N=document.createElement("div");if(N.className=`${q}-items`,N.style.position="relative",Q)N.style.height="100%";else N.style.width="100%";return Z.appendChild(N),X.appendChild(Z),K.appendChild(X),j.appendChild(K),{root:K,viewport:X,content:Z,items:N}};var h2=(j=100)=>{let q=[];return{acquire:()=>{let J=q.pop();if(J)return J;let Q=document.createElement("div");return Q.setAttribute("role","option"),Q},release:(J)=>{if(q.length<j)J.className="",J.textContent="",J.removeAttribute("style"),J.removeAttribute("data-index"),J.removeAttribute("data-id"),q.push(J)},clear:()=>{q.length=0}}};var u2=(j,q,J,Q,K)=>{if(Q===0||q===0){K.start=0,K.end=0;return}let X=J.indexAtOffset(j),Z=u0(J,X,q,Q),N=X+Z;K.start=Math.max(0,X),K.end=Math.min(Q-1,Math.max(0,N))},g2=(j,q,J,Q)=>{if(J===0){Q.start=0,Q.end=0;return}Q.start=Math.max(0,j.start-q),Q.end=Math.min(J-1,j.end+q)},x2=(j,q,J,Q,K)=>{if(Q===0)return 0;let X=Math.max(0,Math.min(j,Q-1)),Z=q.getOffset(X),N=q.getSize(X),W=Math.max(0,q.getTotalSize()-J),Y;switch(K){case"center":Y=Z-(J-N)/2;break;case"end":Y=Z-J+N;break;default:Y=Z}return Math.max(0,Math.min(Y,W))};var m2=(j)=>j<0.5?2*j*j:-1+(4-2*j)*j,d2=(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}};var c2=(j,q)=>{let{dom:J,emitter:Q,resolvedConfig:K,rawConfig:X,rendered:Z,pool:N,sharedState:W,isHorizontal:Y,classPrefix:U,contentSizeHandlers:A,afterScroll:V,clickHandlers:O,keydownHandlers:D,resizeHandlers:M,destroyHandlers:_,methods:v,onScrollFrame:k,resizeObserver:T,renderRange:b}=q;return{get dom(){return J},get sizeCache(){return j.hc},get emitter(){return Q},get config(){return K},get rawConfig(){return X},get renderer(){return{render:(G,P,L,y,E)=>{j.ss=L,j.fi=y,j.ffn()},updateItemClasses:(G,P,L)=>{let y=Z.get(G);if(!y)return;y.classList.toggle(`${U}-item--selected`,P),y.classList.toggle(`${U}-item--focused`,L),y.ariaSelected=P?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(G)=>Z.get(G)??null,clear:()=>{},destroy:()=>{}}},set renderer(G){},get dataManager(){return j.dm},set dataManager(G){j.dm=G},get scrollController(){return j.sc},set scrollController(G){j.sc=G},state:W,getContainerWidth(){return j.cw},afterScroll:V,clickHandlers:O,keydownHandlers:D,resizeHandlers:M,contentSizeHandlers:A,destroyHandlers:_,methods:v,replaceTemplate(G){j.at=G},replaceRenderer(G){},replaceDataManager(G){j.dm=G},replaceScrollController(G){j.sc=G},getItemsForRange(G){let{dm:P,it:L}=j,y=[];for(let E=G.start;E<=G.end;E++){let $=P?P.getItem(E):L[E];if($)y.push($)}return y},getAllLoadedItems(){let G=j.dm;if(G){let P=G.getTotal(),L=[];for(let y=0;y<P;y++){let E=G.getItem(y);if(E)L.push(E)}return L}return[...j.it]},getVirtualTotal(){return j.vtf()},getCachedCompression(){let G=j.hc;return{isCompressed:!1,actualSize:G.getTotalSize(),virtualSize:G.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:j.ls,totalItems:j.vtf(),containerSize:j.ch,rangeStart:b.start}},renderIfNeeded(){j.rfn()},forceRender(){j.ffn()},invalidateRendered(){for(let[,G]of Z)G.remove(),N.release(G);Z.clear()},getRenderFns(){return{renderIfNeeded:j.rfn,forceRender:j.ffn}},setRenderFns(G,P){j.rfn=G,j.ffn=P},setVirtualTotalFn(G){j.vtf=G},rebuildSizeCache(G){j.hc.rebuild(G??j.vtf())},setSizeConfig(G){j.hc=y0(G,j.vtf())},updateContentSize(G){let P=`${G}px`;if(Y)J.content.style.width=P;else J.content.style.height=P},updateCompressionMode(){},setVisibleRangeFn(G){j.gvr=G},setScrollToPosFn(G){j.gsp=G},setPositionElementFn(G){j.pef=G},setScrollFns(G,P){j.sgt=G,j.sst=(L)=>{P(L),k()}},setScrollTarget(G){j.st.removeEventListener("scroll",k),j.st=G,j.st.addEventListener("scroll",k,{passive:!0})},getScrollTarget(){return j.st},setContainerDimensions(G){j.gcw=G.width,j.gch=G.height,j.cw=G.width(),j.ch=G.height(),W.viewportState.containerSize=Y?j.cw:j.ch},disableViewportResize(){if(j.vre)j.vre=!1,T.unobserve(J.viewport)},disableWheelHandler(){if(j.wh)J.viewport.removeEventListener("wheel",j.wh),j.wh=null}}},l2=(j,q,J)=>{let{rendered:Q,itemState:K,contentSizeHandlers:X,applyTemplate:Z,updateContentSize:N}=q,W=()=>{j.hc.rebuild(j.vtf()),N(),J.updateCompressionMode();for(let Y=0;Y<X.length;Y++)X[Y]();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:(Y)=>j.it[Y],isItemLoaded:(Y)=>Y>=0&&Y<j.it.length&&j.it[Y]!==void 0,getItemsInRange:(Y,U)=>{let A=j.it,V=[],O=Math.max(0,Y),D=Math.min(U,A.length-1);for(let M=O;M<=D;M++)V.push(A[M]);return V},setTotal:(Y)=>{},setItems:(Y,U=0,A)=>{let V=j.it;if(U===0&&(A!==void 0||V.length===0))j.it=Y;else{let O=U+Y.length;if(V.length<O)V.length=O;for(let D=0;D<Y.length;D++)V[U+D]=Y[D]}if(j.ii)W()},updateItem:(Y,U)=>{let A=j.it;if(Y<0||Y>=A.length)return!1;let V=A[Y];if(!V)return!1;A[Y]={...V,...U};let O=Q.get(Y);if(O)Z(O,j.at(A[Y],Y,K)),O.dataset.id=String(A[Y].id);return!0},removeItem:(Y)=>{if(Y<0||Y>=j.it.length)return!1;if(j.it.splice(Y,1),j.ii)W();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()}}},a2=(j,q)=>{let{dom:J,classPrefix:Q}=q;return{getScrollTop:()=>j.sgt(),scrollTo:(K)=>{j.sst(K),j.ls=K,j.rfn()},scrollBy:(K)=>{let X=j.sgt()+K;j.sst(X),j.ls=X,j.rfn()},isAtTop:()=>j.ls<=2,isAtBottom:(K=2)=>j.sab(K),getScrollPercentage:()=>{let K=j.hc.getTotalSize(),X=Math.max(0,K-j.ch);return X>0?j.ls/X:0},getVelocity:()=>j.vt.velocity,isTracking:()=>j.vt.sampleCount>=2,isScrolling:()=>J.root.classList.contains(`${Q}--scrolling`),updateConfig:()=>{},enableCompression:()=>{j.sic=!0},disableCompression:()=>{j.sic=!1},isCompressed:()=>j.sic,isWindowMode:()=>!1,updateContainerHeight:(K)=>{j.ch=K},destroy:()=>{}}};var tj=3,ej="vlist",s2=150,jJ=0,r2=(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",J=q?"width":"height",Q=q?"estimatedWidth":"estimatedHeight",K=q?j.item.width:j.item.height,X=q?j.item.estimatedWidth:j.item.estimatedHeight;if(K==null&&X==null)throw Error(`[vlist/builder] item.${J} or item.${Q} is required${q?" when orientation is 'horizontal'":""}`);if(K!=null){if(typeof K==="number"&&K<=0)throw Error(`[vlist/builder] item.${J} must be a positive number`);if(typeof K!=="number"&&typeof K!=="function")throw Error(`[vlist/builder] item.${J} must be a number or a function (index) => number`)}else if(X!=null){if(typeof X!=="number"||X<=0)throw Error(`[vlist/builder] item.${Q} 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 Z=new Map,N=!1,W={use(Y){if(N)throw Error("[vlist/builder] Cannot call .use() after .build()");return Z.set(Y.name,Y),W},build(){if(N)throw Error("[vlist/builder] .build() can only be called once");return N=!0,JJ(j,Z,q,K,X??null)}};return W};function JJ(j,q,J,Q,K){let{item:X,items:Z,overscan:N=tj,classPrefix:W=ej,ariaLabel:Y,reverse:U=!1,scroll:A}=j,V=A,O=V?.wheel??!0,D=V?.wrap??!1,M=U,_=`${W}-${jJ++}`,v=Q??K,k=Q==null&&K!=null,T=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||navigator.maxTouchPoints&&navigator.maxTouchPoints>2,b=J?typeof X.height==="number"?X.height:void 0:typeof X.width==="number"?X.width:void 0,G={overscan:N,classPrefix:W,reverse:M,wrap:D,horizontal:J,ariaIdPrefix:_},P=Array.from(q.values()).sort((F,f)=>(F.priority??50)-(f.priority??50)),L=new Set(P.map((F)=>F.name));for(let F of P)if(F.conflicts){for(let f of F.conflicts)if(L.has(f))throw Error(`[vlist/builder] ${F.name} and ${f} cannot be combined`)}if(M){if(L.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let y=I2(j.container),E=p2(y,W,Y,J);if(V?.wheel===!1)if(J)E.viewport.style.overflowX="hidden";else E.viewport.style.overflow="hidden";if(V?.scrollbar==="none")E.viewport.classList.add(`${W}-viewport--no-scrollbar`);let $=o0(),r=Z||[],z=k?n0(K,r.length):y0(v,r.length),m=h2(),B={it:r,hc:z,ch:E.viewport.clientHeight,cw:E.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:S2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:J?()=>E.viewport.scrollLeft:()=>E.viewport.scrollTop,sst:J?(F)=>{E.viewport.scrollLeft=F}:(F)=>{E.viewport.scrollTop=F},sab:(F=2)=>{let f=B.hc.getTotalSize();return B.ls+B.ch>=f-F},sic:!1,rfn:null,ffn:null,gvr:(F,f,g,x,j0)=>{u2(F,f,g,x,j0)},gsp:(F,f,g,x,j0)=>{return x2(F,f,g,x,j0)},pef:null,at:X.template,vre:!0,st:E.viewport,wh:null,gcw:()=>B.cw,gch:()=>B.ch};B.vtf=()=>B.dm?B.dm.getTotal():B.it.length;let R=null,C=null,h=!1,I={start:0,end:0},p={start:0,end:0},H={start:-1,end:-1},w={viewportState:{scrollPosition:0,containerSize:J?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},c=new Map,t=k?new WeakMap:null,s=k?z:null,o=null,Q0=0,l=!1,u=()=>{if(!k)return;if(l){let F=B.sgt(),f=J?E.viewport.scrollWidth-E.viewport.clientWidth:E.viewport.scrollHeight-E.viewport.clientHeight,g=f>0&&F>=f-2;if(M0(),l=!1,g){let x=Math.max(0,B.hc.getTotalSize()-(J?B.cw:B.ch));if(x>F)B.sst(x),B.ls=x,B.rfn()}}};if(k&&s&&t)o=new ResizeObserver((F)=>{if(B.id)return;let f=!1,g=I.start;for(let x of F){let j0=t.get(x.target);if(j0===void 0)continue;let q0=J?x.borderBoxSize[0].inlineSize:x.borderBoxSize[0].blockSize;if(!s.isMeasured(j0)){let U0=s.getSize(j0);if(s.setMeasuredSize(j0,q0),f=!0,j0<g&&q0!==U0)Q0+=q0-U0;o.unobserve(x.target);let J0=x.target;if(J)J0.style.width=`${q0}px`;else J0.style.height=`${q0}px`}}if(!f)return;if(s.rebuild(B.vtf()),B.hc=s,Q0!==0){let x=B.sgt();B.sst(x+Q0),B.ls=x+Q0,Q0=0}if(h)l=!0;else{let x=B.sgt(),j0=J?E.viewport.scrollWidth-E.viewport.clientWidth:E.viewport.scrollHeight-E.viewport.clientHeight,q0=j0>0&&x>=j0-2;if(M0(),l=!1,q0){let U0=Math.max(0,B.hc.getTotalSize()-(J?B.cw:B.ch));if(U0>x)B.sst(U0),B.ls=U0}}H.start=-1,H.end=-1,B.rfn()});let n={selected:!1,focused:!1},K0=`${W}-item`,i=[],B0=[],X0=[],S=[],d=[],e=[],a=new Map,Z0=(F,f)=>{if(typeof f==="string")F.innerHTML=f;else F.replaceChildren(f)},W0=(F,f)=>{let g=Math.round(B.hc.getOffset(f));if(J)F.style.transform=`translateX(${g}px)`;else F.style.transform=`translateY(${g}px)`};B.pef=W0;let E0=(F,f)=>{let g=m.acquire();g.className=K0;let x=!k||s&&s.isMeasured(F);if(J){if(x)g.style.width=`${B.hc.getSize(F)}px`;else g.style.width="";if(b!=null)g.style.height=`${b}px`}else if(x)g.style.height=`${B.hc.getSize(F)}px`;else g.style.height="";if(g.dataset.index=String(F),g.dataset.id=String(f.id),g.ariaSelected="false",g.id=`${_}-item-${F}`,B.la=String(B.vtf()),g.setAttribute("aria-setsize",B.la),g.setAttribute("aria-posinset",String(F+1)),String(f.id).startsWith("__placeholder_"))g.classList.add(`${W}-item--placeholder`);return Z0(g,B.at(f,F,n)),B.pef(g,F),g},M0=()=>{let F=`${B.hc.getTotalSize()}px`;if(J)E.content.style.width=F;else E.content.style.height=F},G0=()=>{if(B.id)return;let F=B.vtf(),f=J?B.cw:B.ch;if(B.gvr(B.ls,f,B.hc,F,I),g2(I,N,F,p),p.start===H.start&&p.end===H.end){if(B.sic)for(let[J0,N0]of c)B.pef(N0,J0);return}let g=String(F),x=g!==B.la;B.la=g;for(let[J0,N0]of c)if(J0<p.start||J0>p.end)N0.remove(),m.release(N0),c.delete(J0);let j0=document.createDocumentFragment(),q0=[],U0=[];for(let J0=p.start;J0<=p.end;J0++){let N0=B.dm?B.dm.getItem(J0):B.it[J0];if(!N0)continue;let V0=c.get(J0);if(V0){let b0=V0.dataset.id,p0=String(N0.id);if(b0!==p0){let cj=b0?.startsWith("__placeholder_"),C2=p0.startsWith("__placeholder_");Z0(V0,B.at(N0,J0,n)),V0.dataset.id=p0;let z2=!k||s&&s.isMeasured(J0);if(J)V0.style.width=z2?`${B.hc.getSize(J0)}px`:"";else V0.style.height=z2?`${B.hc.getSize(J0)}px`:"";if(C2)V0.classList.add(`${W}-item--placeholder`);else V0.classList.remove(`${W}-item--placeholder`);if(cj&&!C2)V0.classList.add(`${W}-item--replaced`),setTimeout(()=>{V0.classList.remove(`${W}-item--replaced`)},300)}B.pef(V0,J0);let s0=B.ss.has(N0.id),dj=J0===B.fi;if(V0.classList.toggle(`${W}-item--selected`,s0),V0.classList.toggle(`${W}-item--focused`,dj),V0.ariaSelected=s0?"true":"false",x)V0.setAttribute("aria-setsize",B.la)}else{let b0=E0(J0,N0);U0.push({index:J0,element:b0});let p0=B.ss.has(N0.id),s0=J0===B.fi;if(p0)b0.classList.add(`${W}-item--selected`),b0.ariaSelected="true";if(s0)b0.classList.add(`${W}-item--focused`);j0.appendChild(b0),q0.push({index:J0,element:b0})}}if(q0.length>0){E.items.appendChild(j0);for(let{index:J0,element:N0}of q0)c.set(J0,N0)}if(k&&o&&s&&t){for(let{index:J0,element:N0}of U0)if(!s.isMeasured(J0))t.set(N0,J0),o.observe(N0)}H.start=p.start,H.end=p.end,w.lastRenderRange.start=p.start,w.lastRenderRange.end=p.end,w.viewportState.scrollPosition=B.ls,w.viewportState.visibleRange.start=I.start,w.viewportState.visibleRange.end=I.end,w.viewportState.renderRange.start=p.start,w.viewportState.renderRange.end=p.end,$.emit("range:change",{range:{start:p.start,end:p.end}})},H0=()=>{H.start=-1,H.end=-1,B.rfn()};B.rfn=G0,B.ffn=H0;let O0=()=>{if(B.id)return;let F=B.sgt(),f=F>=B.ls?"down":"up";if(B.vt=V2(B.vt,F),!E.root.classList.contains(`${W}--scrolling`))E.root.classList.add(`${W}--scrolling`);h=!0,B.ls=F,B.rfn(),$.emit("scroll",{scrollPosition:F,direction:f}),$.emit("velocity:change",{velocity:B.vt.velocity,reliable:B.vt.sampleCount>=f2});for(let g=0;g<i.length;g++)i[g](F,f);if(C)clearTimeout(C);C=setTimeout(()=>{E.root.classList.remove(`${W}--scrolling`),h=!1,B.vt.velocity=0,B.vt.sampleCount=0,$.emit("velocity:change",{velocity:0,reliable:!1}),u()},V?.idleTimeout??s2)},Y0=null;if(B.st.addEventListener("scroll",O0,{passive:!0}),O&&!J&&!T)Y0=(F)=>{F.preventDefault();let f=B.sgt(),g=F.deltaY,x=Math.max(0,Math.min(f+g,B.hc.getTotalSize()-B.ch));B.sst(x),B.ls=x,B.vt=V2(B.vt,x),B.rfn();let j0=x>=f?"down":"up";if($.emit("scroll",{scrollPosition:x,direction:j0}),!E.root.classList.contains(`${W}--scrolling`))E.root.classList.add(`${W}--scrolling`);if(h=!0,C)clearTimeout(C);C=setTimeout(()=>{E.root.classList.remove(`${W}--scrolling`),h=!1,B.vt.velocity=0,B.vt.sampleCount=0,$.emit("velocity:change",{velocity:0,reliable:!1}),u()},V?.idleTimeout??s2)},B.wh=Y0,E.viewport.addEventListener("wheel",Y0,{passive:!1});else if(J&&O)Y0=(F)=>{if(F.deltaX)return;F.preventDefault(),E.viewport.scrollLeft+=F.deltaY},B.wh=Y0,E.viewport.addEventListener("wheel",Y0,{passive:!1});let F0=(F)=>{let g=F.target.closest("[data-index]");if(g){let x=parseInt(g.dataset.index??"-1",10);if(x>=0){let j0=B.dm?.getItem(x)??B.it[x];if(j0){if(j0.__groupHeader)return;$.emit("item:click",{item:j0,index:x,event:F})}}}for(let x=0;x<B0.length;x++)B0[x](F)},D0=(F)=>{let g=F.target.closest("[data-index]");if(g){let x=parseInt(g.dataset.index??"-1",10);if(x>=0){let j0=B.dm?.getItem(x)??B.it[x];if(j0){if(j0.__groupHeader)return;$.emit("item:dblclick",{item:j0,index:x,event:F})}}}},L0=(F)=>{for(let f=0;f<X0.length;f++)X0[f](F)};E.items.addEventListener("click",F0),E.items.addEventListener("dblclick",D0),E.root.addEventListener("keydown",L0);let P0=new ResizeObserver((F)=>{if(B.id)return;for(let f of F){let g=f.contentRect.height,x=f.contentRect.width,j0=J?x:g,q0=J?B.cw:B.ch;if(B.cw=x,B.ch=g,Math.abs(j0-q0)>1){if(w.viewportState.containerSize=j0,B.ii)M0(),B.rfn(),$.emit("resize",{height:g,width:x})}if(B.ii)for(let U0=0;U0<S.length;U0++)S[U0](x,g)}});if(B.vre)P0.observe(E.viewport);let D2={dom:E,emitter:$,resolvedConfig:G,rawConfig:j,rendered:c,pool:m,itemState:n,sharedState:w,renderRange:p,isHorizontal:J,classPrefix:W,contentSizeHandlers:d,afterScroll:i,clickHandlers:B0,keydownHandlers:X0,resizeHandlers:S,destroyHandlers:e,methods:a,onScrollFrame:O0,resizeObserver:P0,applyTemplate:Z0,updateContentSize:M0},_0=c2(B,D2);B.dm=l2(B,D2,_0),B.sc=a2(B,D2);let k2=new Map;for(let F of P)if(F.methods)for(let f of F.methods){let g=k2.get(f);if(g)throw Error(`[vlist/builder] Method "${f}" is registered by both "${g}" and "${F.name}"`);k2.set(f,F.name)}for(let F of P)F.setup(_0);if(B.ii=!0,_0.state.isInitialized=!0,M0(),B.rfn(),M&&B.it.length>0){let F=B.gsp(B.it.length-1,B.hc,B.ch,B.it.length,"end");B.sst(F),B.ls=F,B.rfn()}let zj=(F)=>{_0.dataManager.setItems(F,0,F.length)},vj=M?(F)=>{let f=B.sab(2),g=B.it.length;if(_0.dataManager.setItems(F,g),f&&B.it.length>0){let x=B.gsp(B.it.length-1,B.hc,B.ch,B.it.length,"end");B.sst(x),B.ls=x,B.rfn()}}:(F)=>{let f=B.it.length;_0.dataManager.setItems(F,f)},wj=M?(F)=>{let f=B.sgt(),g=B.hc.getTotalSize(),x=[...B.it];_0.dataManager.clear(),_0.dataManager.setItems([...F,...x],0);let q0=B.hc.getTotalSize()-g;if(q0>0)B.sst(f+q0),B.ls=f+q0}:(F)=>{let f=[...B.it];_0.dataManager.clear(),_0.dataManager.setItems([...F,...f],0)},fj=(F,f)=>{_0.dataManager.updateItem(F,f)},Sj=(F)=>{_0.dataManager.removeItem(F)},Ij=async()=>{if(_0.dataManager.reload)await _0.dataManager.reload()},a0=()=>{if(R!==null)cancelAnimationFrame(R),R=null},pj=(F,f,g)=>{if(a0(),Math.abs(f-F)<1){B.sst(f),B.ls=f,B.rfn();return}let x=performance.now(),j0=(q0)=>{let U0=q0-x,J0=Math.min(U0/g,1),N0=F+(f-F)*m2(J0);if(B.sst(N0),B.ls=N0,B.rfn(),J0<1)R=requestAnimationFrame(j0);else R=null};R=requestAnimationFrame(j0)},hj=(F,f)=>{let{align:g,behavior:x,duration:j0}=d2(f),q0=B.vtf(),U0=F;if(D&&q0>0)U0=(U0%q0+q0)%q0;let J0=B.gsp(U0,B.hc,B.ch,q0,g);if(x==="smooth")pj(B.sgt(),J0,j0);else a0(),B.sst(J0)},uj=()=>B.sgt(),gj=(F,f)=>{return $.on(F,f)},xj=(F,f)=>{$.off(F,f)},mj=()=>{if(B.id)return;if(B.id=!0,_0.state.isDestroyed=!0,E.items.removeEventListener("click",F0),E.root.removeEventListener("keydown",L0),B.st.removeEventListener("scroll",O0),P0.disconnect(),o)o.disconnect(),o=null;if(B.wh)E.viewport.removeEventListener("wheel",B.wh);if(C)clearTimeout(C);for(let F=0;F<e.length;F++)e[F]();for(let F of P)if(F.destroy)F.destroy();a0();for(let[,F]of c)F.remove(),m.release(F);c.clear(),m.clear(),$.clear(),E.root.remove()},R2={get element(){return E.root},get items(){if(a.has("_getItems"))return a.get("_getItems")();return B.it},get total(){if(a.has("_getTotal"))return a.get("_getTotal")();return B.vtf()},setItems:a.has("setItems")?a.get("setItems"):zj,appendItems:a.has("appendItems")?a.get("appendItems"):vj,prependItems:a.has("prependItems")?a.get("prependItems"):wj,updateItem:a.has("updateItem")?a.get("updateItem"):fj,removeItem:a.has("removeItem")?a.get("removeItem"):Sj,reload:a.has("reload")?a.get("reload"):Ij,scrollToIndex:a.has("scrollToIndex")?a.get("scrollToIndex"):hj,cancelScroll:a.has("cancelScroll")?a.get("cancelScroll"):a0,getScrollPosition:a.has("getScrollPosition")?a.get("getScrollPosition"):uj,on:gj,off:xj,destroy:mj};for(let[F,f]of a){if(F==="setItems"||F==="appendItems"||F==="prependItems"||F==="updateItem"||F==="removeItem"||F==="reload"||F==="scrollToIndex"||F==="scrollToItem"||F==="cancelScroll"||F==="getScrollPosition")continue;R2[F]=f}return R2}e0();var w0=(j,q,J={},Q="vlist",K=!1)=>{let{autoHide:X=!0,autoHideDelay:Z=1000,minThumbSize:N=30,showOnHover:W=!0,hoverZoneWidth:Y=16,showOnViewportEnter:U=!0}=J,A=0,V=0,O=0,D=0,M=!1,_=!1,v=0,k=0,T=0,b=null,G=!1,P=null,L=null,y=K?"width":"height",E=K?"translateX":"translateY",$=K?(i)=>i.clientX:(i)=>i.clientY,r=K?"left":"top",z=document.createElement("div"),m=document.createElement("div"),B=W?document.createElement("div"):null,R=()=>{if(z.className=`${Q}-scrollbar`,m.className=`${Q}-scrollbar-thumb`,K)z.classList.add(`${Q}-scrollbar--horizontal`);if(z.appendChild(m),j.appendChild(z),B){if(B.className=`${Q}-scrollbar-hover`,K)B.classList.add(`${Q}-scrollbar-hover--horizontal`),B.style.height=`${Y}px`;else B.style.width=`${Y}px`;j.appendChild(B)}},C=()=>{if(b)clearTimeout(b),b=null},h=()=>{if(!X)return;C(),b=setTimeout(p,Z)},I=()=>{if(A<=V)return;if(C(),!G)z.classList.add(`${Q}-scrollbar--visible`),G=!0;if(X&&!M&&!_)h()},p=()=>{if(M||_)return;z.classList.remove(`${Q}-scrollbar--visible`),G=!1},H=(i,B0)=>{A=i,V=B0;let X0=A>V;if(z.style.display=X0?"":"none",!X0){p();return}let S=V/A;O=Math.max(N,S*V),m.style[y]=`${O}px`,D=V-O,w(T)},w=(i)=>{if(T=i,A<=V||D<=0)return;let B0=A-V,S=Math.min(1,Math.max(0,i/B0))*D;m.style.transform=`${E}(${S}px)`},c=(i)=>{if(i.target===m)return;let B0=z.getBoundingClientRect(),d=$(i)-B0[r]-O/2,a=Math.max(0,Math.min(d,D))/D,Z0=A-V,W0=a*Z0;q(W0),I()},t=(i)=>{i.preventDefault(),i.stopPropagation(),M=!0,v=$(i),k=T,C(),z.classList.add(`${Q}-scrollbar--dragging`),document.addEventListener("mousemove",s),document.addEventListener("mouseup",o)},s=(i)=>{if(!M)return;let B0=$(i)-v,X0=D>0?B0/D:0,S=A-V,d=X0*S,e=Math.max(0,Math.min(k+d,S)),Z0=e/S*D;if(m.style.transform=`${E}(${Z0}px)`,L=e,P===null)P=requestAnimationFrame(()=>{if(L!==null)q(L);P=null})},o=()=>{if(M=!1,P!==null)cancelAnimationFrame(P),P=null;if(L!==null)q(L),L=null;if(z.classList.remove(`${Q}-scrollbar--dragging`),X&&!_)h();document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",o)},Q0=()=>{if(U)I()},l=()=>{if(!M){if(_=!1,X)h()}},u=()=>{_=!0,C(),I()},n=()=>{if(_=!1,!M&&X)h()},K0=()=>{if(C(),P!==null)cancelAnimationFrame(P),P=null;if(z.removeEventListener("click",c),z.removeEventListener("mouseenter",u),z.removeEventListener("mouseleave",n),m.removeEventListener("mousedown",t),j.removeEventListener("mouseenter",Q0),j.removeEventListener("mouseleave",l),document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",o),B){if(B.removeEventListener("mouseenter",u),B.removeEventListener("mouseleave",n),B.parentNode)B.parentNode.removeChild(B)}if(z.parentNode)z.parentNode.removeChild(z)};if(R(),z.addEventListener("click",c),z.addEventListener("mouseenter",u),z.addEventListener("mouseleave",n),m.addEventListener("mousedown",t),j.addEventListener("mouseenter",Q0),j.addEventListener("mouseleave",l),B)B.addEventListener("mouseenter",u),B.addEventListener("mouseleave",n);return{show:I,hide:p,updateBounds:H,updatePosition:w,isVisible:()=>G,destroy:K0}};var Kj=(j)=>{let q=null;return{name:"withScrollbar",priority:30,setup(J){let{dom:Q,config:K}=J,{classPrefix:X,horizontal:Z}=K;if(q=w0(Q.viewport,(Y)=>J.scrollController.scrollTo(Y),j??{},X,Z),!Q.viewport.classList.contains(`${X}-viewport--custom-scrollbar`))Q.viewport.classList.add(`${X}-viewport--custom-scrollbar`);let N=J.getCachedCompression();q.updateBounds(N.virtualSize,J.state.viewportState.containerSize);let W=q;J.afterScroll.push((Y,U)=>{W.updatePosition(Y),W.show()}),J.resizeHandlers.push((Y,U)=>{if(W){let A=J.getCachedCompression();W.updateBounds(A.virtualSize,J.state.viewportState.containerSize)}}),J.contentSizeHandlers.push(()=>{if(W){let Y=J.getCachedCompression();W.updateBounds(Y.virtualSize,J.state.viewportState.containerSize)}}),J.destroyHandlers.push(()=>{if(W)W.destroy()})},destroy(){if(q)q.destroy(),q=null}}};var Zj=(j=0)=>{let q=[,,,,,,,,];for(let J=0;J<8;J++)q[J]={position:0,time:0};return{velocity:0,lastPosition:j,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},j2=(j,q)=>{let J=performance.now(),Q=J-j.lastTime;if(Q===0)return j;if(Q>100){j.sampleCount=0,j.sampleIndex=0,j.velocity=0;let X=j.samples[0];return X.position=q,X.time=J,j.sampleIndex=1,j.sampleCount=1,j.lastPosition=q,j.lastTime=J,j}let K=j.samples[j.sampleIndex];if(K.position=q,K.time=J,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,Z=j.samples[X],N=q-Z.position,W=J-Z.time;j.velocity=W>0?N/W:0}return j.lastPosition=q,j.lastTime=J,j},QJ=(j)=>j.sampleCount>=3,Bj=(j,q={})=>{let{wheel:J=!0,sensitivity:Q=1,smoothing:K=!1,idleTimeout:X=150,onScroll:Z,onIdle:N,scrollElement:W,horizontal:Y=!1}=q,U=!!W,A=0,V=0,O=U?Y?window.innerWidth:window.innerHeight:Y?j.clientWidth:j.clientHeight,D=q.compressed??!1,M=q.compression,_=Zj(),v=!1,k=null,b=J2(()=>{let l=Y?j.scrollLeft:j.scrollTop,u=l>=A?"down":"up";if(_=j2(_,l),A=l,Z)Z({scrollTop:A,direction:u,velocity:_.velocity});$()}),P=J2(()=>{let l=j.getBoundingClientRect(),u=Y?Math.max(0,-l.left):Math.max(0,-l.top),n=u>=A?"down":"up";if(_=j2(_,u),A=u,!v)v=!0;if(Z)Z({scrollTop:A,direction:n,velocity:_.velocity});$()}),L=(l)=>{l.preventDefault()},y=(l)=>{if(l.deltaX)return;l.preventDefault(),j.scrollLeft+=l.deltaY},E=(l)=>{if(!D)return;l.preventDefault();let u=(Y?l.deltaX||l.deltaY:l.deltaY)*Q,n=A+u;if(K)n=A+u*0.3;if(n=Math.max(0,Math.min(n,V)),n!==A){let i=n>=A?"down":"up";if(_=j2(_,n),A=n,!v)v=!0;if(Z)Z({scrollTop:A,direction:i,velocity:_.velocity});$()}},$=()=>{if(k)clearTimeout(k);k=setTimeout(()=>{if(v=!1,_=Zj(A),N)N()},X)},r=(l)=>{if(D)return;if(D=!0,M=l,V=l.virtualSize-O,U)return;if(b.cancel(),j.removeEventListener("scroll",b),!J)j.removeEventListener("wheel",L);else if(Y)j.removeEventListener("wheel",y);if(Y)j.style.overflowX="hidden";else j.style.overflow="hidden";if(J)j.addEventListener("wheel",E,{passive:!1});let u=Y?j.scrollLeft:j.scrollTop;if(u>0){let n=Y?M?.actualSize??j.scrollWidth:M?.actualSize??j.scrollHeight;A=u/n*V}if(Y)j.scrollLeft=0;else j.scrollTop=0},z=()=>{if(!D)return;if(D=!1,U){M=void 0;return}if(j.removeEventListener("wheel",E),Y)j.style.overflowX="auto";else j.style.overflow="auto";if(j.addEventListener("scroll",b,{passive:!0}),!J)j.addEventListener("wheel",L,{passive:!1});else if(Y)j.addEventListener("wheel",y,{passive:!1});if(M&&A>0){let u=A/V*(M.actualSize-O);if(Y)j.scrollLeft=u;else j.scrollTop=u}M=void 0},m=()=>{if(U||D)return A;return Y?j.scrollLeft:j.scrollTop},B=(l,u=!1)=>{let n=Math.max(0,Math.min(l,V||1/0));if(U){let K0=j.getBoundingClientRect();if(Y){let i=K0.left+window.scrollX;window.scrollTo({left:i+n,behavior:u?"smooth":"auto"})}else{let i=K0.top+window.scrollY;window.scrollTo({top:i+n,behavior:u?"smooth":"auto"})}}else if(D){if(n===A)return;let i=n>=A?"down":"up";if(_=j2(_,n),A=n,!v)v=!0;if(Z)Z({scrollTop:A,direction:i,velocity:_.velocity});$()}else if(Y)j.scrollTo({left:n,behavior:u?"smooth":"auto"});else j.scrollTo({top:n,behavior:u?"smooth":"auto"})},R=(l)=>{B(m()+l)},C=()=>{return m()<=0},h=(l=0)=>{let u=m(),n=U||D?V:Y?j.scrollWidth-j.clientWidth:j.scrollHeight-j.clientHeight;return u>=n-l},I=()=>{let l=m(),u=U||D?V:Y?j.scrollWidth-j.clientWidth:j.scrollHeight-j.clientHeight;if(u<=0)return 0;return Math.min(1,Math.max(0,l/u))},p=(l)=>{if(l.compression)M=l.compression,V=M.virtualSize-O},H=()=>D,w=()=>Math.abs(_.velocity),c=()=>QJ(_),t=()=>v,s=()=>U,o=(l)=>{if(O=l,M)V=M.virtualSize-O},Q0=()=>{if(k)clearTimeout(k);if(U)P.cancel(),window.removeEventListener("scroll",P);else b.cancel(),j.removeEventListener("scroll",b),j.removeEventListener("wheel",E),j.removeEventListener("wheel",L),j.removeEventListener("wheel",y)};if(U){if(D&&M)V=M.virtualSize-O;window.addEventListener("scroll",P,{passive:!0})}else if(D&&M){if(V=M.virtualSize-O,Y)j.style.overflowX="hidden";else j.style.overflow="hidden";if(J)j.addEventListener("wheel",E,{passive:!1})}else{if(Y)j.style.overflowX="auto",j.style.overflowY="hidden";else j.style.overflow="auto";if(j.addEventListener("scroll",b,{passive:!0}),!J)j.addEventListener("wheel",L,{passive:!1});else if(Y)j.addEventListener("wheel",y,{passive:!1})}return{getScrollTop:m,scrollTo:B,scrollBy:R,isAtTop:C,isAtBottom:h,getScrollPercentage:I,getVelocity:w,isTracking:c,isScrolling:t,updateConfig:p,enableCompression:r,disableCompression:z,isCompressed:H,isWindowMode:s,updateContainerHeight:o,destroy:Q0}},J2=(j)=>{let q=null,J=null,Q=(...K)=>{if(J=K,q===null)q=requestAnimationFrame(()=>{if(q=null,J)j(...J)})};return Q.cancel=()=>{if(q!==null)cancelAnimationFrame(q),q=null},Q};var qJ=0.65,XJ=0.5,YJ=0.95,KJ=0.1,ZJ=5,BJ=100,Uj=()=>{let j=null,q=0,J=!1,Q=0,K=null,X=0,Z=0,N=null,W=[];return{name:"withScale",priority:20,setup(Y){let{dom:U,config:A}=Y,{classPrefix:V,horizontal:O}=A,D=()=>{let k=Y.getVirtualTotal(),T=A0(k,Y.sizeCache);if(T.isCompressed&&!J){J=!0,Y.scrollController.enableCompression(T),Y.updateContentSize(T.virtualSize),Y.setScrollFns(()=>q,(z)=>{if(q=z,Q=z,K!==null)cancelAnimationFrame(K),K=null});let b=()=>{let z=Q-q;if(Math.abs(z)<XJ)q=Q,K=null;else{q+=z*qJ;let B=Y.getCachedCompression().virtualSize-Y.state.viewportState.containerSize;q=Math.max(0,Math.min(q,B)),K=requestAnimationFrame(b)}Y.scrollController.scrollTo(q)},G=U.viewport,P=(z)=>{z.preventDefault();let B=Y.getCachedCompression().virtualSize-Y.state.viewportState.containerSize;if(Q=Math.max(0,Math.min(Q+z.deltaY,B)),K===null)K=requestAnimationFrame(b)};G.addEventListener("wheel",P,{passive:!1});let L=()=>{if(N!==null)cancelAnimationFrame(N),N=null},y=(z)=>{if(L(),K!==null)cancelAnimationFrame(K),K=null;let m=z.touches[0];if(!m)return;let B=O?m.clientX:m.clientY;X=B,Z=q,W=[{time:performance.now(),y:B}]},E=(z)=>{z.preventDefault();let m=z.touches[0];if(!m)return;let B=O?m.clientX:m.clientY,R=performance.now();if(W.push({time:R,y:B}),W.length>ZJ)W.shift();let C=X-B,I=Y.getCachedCompression().virtualSize-Y.state.viewportState.containerSize,p=Math.max(0,Math.min(Z+C,I));q=p,Q=p,Y.scrollController.scrollTo(p)},$=(z)=>{let m=performance.now(),B=W.filter((I)=>m-I.time<BJ),R=0;if(B.length>=2){let I=B[0],p=B[B.length-1],H=p.time-I.time;if(H>0)R=(I.y-p.y)/H}if(W=[],Math.abs(R)<KJ)return;let C=R*16,h=()=>{if(C*=YJ,Math.abs(C)<0.5){N=null;return}let p=Y.getCachedCompression().virtualSize-Y.state.viewportState.containerSize,H=q+C;if(H=Math.max(0,Math.min(H,p)),H<=0&&C<0||H>=p&&C>0){q=H,Q=H,Y.scrollController.scrollTo(H),N=null;return}q=H,Q=H,Y.scrollController.scrollTo(H),N=requestAnimationFrame(h)};N=requestAnimationFrame(h)};if(G.addEventListener("touchstart",y,{passive:!0}),G.addEventListener("touchmove",E,{passive:!1}),G.addEventListener("touchend",$,{passive:!0}),G.addEventListener("touchcancel",$,{passive:!0}),Y.destroyHandlers.push(()=>{if(G.removeEventListener("wheel",P),G.removeEventListener("touchstart",y),G.removeEventListener("touchmove",E),G.removeEventListener("touchend",$),G.removeEventListener("touchcancel",$),L(),K!==null)cancelAnimationFrame(K),K=null}),!U.viewport.querySelector(`.${V}-scrollbar-track`)){if(j=w0(U.viewport,(m)=>Y.scrollController.scrollTo(m),{},V,O),!U.viewport.classList.contains(`${V}-viewport--custom-scrollbar`))U.viewport.classList.add(`${V}-viewport--custom-scrollbar`);j.updateBounds(T.virtualSize,Y.state.viewportState.containerSize);let z=j;Y.afterScroll.push((m,B)=>{if(z)z.updatePosition(m),z.show()}),Y.resizeHandlers.push((m,B)=>{if(z){let R=Y.getCachedCompression();z.updateBounds(R.virtualSize,Y.state.viewportState.containerSize)}})}}else if(!T.isCompressed&&J)J=!1,Y.scrollController.disableCompression(),Y.updateContentSize(T.actualSize);else if(T.isCompressed)Y.scrollController.updateConfig({compression:T}),Y.updateContentSize(T.virtualSize);if(j)j.updateBounds(T.virtualSize,Y.state.viewportState.containerSize);Y.state.cachedCompression={state:T,totalItems:k}};Y.updateCompressionMode=D;let M=Y.getCachedCompression.bind(Y);Y.getCachedCompression=()=>{if(Y.state.cachedCompression)return Y.state.cachedCompression.state;return M()},Y.setVisibleRangeFn((k,T,b,G,P)=>{_=null,v=null;let L=A0(G,b);i0(k,T,b,G,L,P)}),Y.setScrollToPosFn((k,T,b,G,P)=>{let L=A0(G,T);return t0(k,T,b,G,L,P)});let _=null,v=null;Y.setPositionElementFn((k,T)=>{let b=Y.getVirtualTotal(),G=A0(b,Y.sizeCache);if(G.isCompressed){let P=Y.scrollController.getScrollTop();if(_===null||T<v)v=T,_=Math.round(v0(T,P,Y.sizeCache,b,Y.state.viewportState.containerSize,G));let L=_+Y.sizeCache.getOffset(T)-Y.sizeCache.getOffset(v),y=Y.config.horizontal;k.style.transform=y?`translateX(${L}px)`:`translateY(${L}px)`}else{let P=Math.round(Y.sizeCache.getOffset(T)),L=Y.config.horizontal;k.style.transform=L?`translateX(${P}px)`:`translateY(${P}px)`}}),D(),Y.destroyHandlers.push(()=>{if(j)j.destroy(),j=null;if(K!==null)cancelAnimationFrame(K),K=null})},destroy(){if(j)j.destroy(),j=null;if(K!==null)cancelAnimationFrame(K),K=null;if(N!==null)cancelAnimationFrame(N),N=null}}};var Q2=(j={})=>{let{chunkSize:q=100,maxCachedItems:J=5000,evictionBuffer:Q=200,onEvict:K}=j,X=new Map,Z=0,N=0,W=(R)=>{let C=X.get(R);if(!C)C={items:Array(q),count:0,lastAccess:Date.now()},X.set(R,C);else C.lastAccess=Date.now();return C},Y=(R)=>{return Math.floor(R/q)},U=(R)=>{return R%q},A=()=>Z,V=(R)=>{Z=R},O=(R)=>{if(R<0||R>=Z)return;let C=Y(R),h=X.get(C);if(!h)return;return h.items[U(R)]},D=(R)=>{if(R<0||R>=Z)return!1;let C=Y(R),h=X.get(C);if(!h)return!1;return h.items[U(R)]!==void 0},M=(R,C)=>{let h=Y(R),I=W(h),p=U(R),H=I.items[p]===void 0;if(I.items[p]=C,H)I.count++,N++;if(R>=Z)Z=R+1},_=(R,C)=>{for(let h=0;h<C.length;h++){let I=C[h];if(I!==void 0)M(R+h,I)}},v=(R)=>{if(R<0||R>=Z)return!1;let C=Y(R),h=X.get(C);if(!h)return!1;let I=U(R);if(h.items[I]===void 0)return!1;if(h.items[I]=void 0,h.count--,N--,h.count===0)X.delete(C);return!0},k=(R,C)=>{let h=[];for(let I=R;I<=C&&I<Z;I++)h.push(O(I));return h},T=(R,C)=>{for(let h=R;h<=C&&h<Z;h++)if(!D(h))return!1;return!0},b=()=>{let R=[],C=null,h=Array.from(X.keys()).sort((I,p)=>I-p);for(let I of h){let p=X.get(I);if(!p)continue;let H=I*q;for(let w=0;w<q;w++){let c=H+w;if(c>=Z)break;if(p.items[w]!==void 0)if(C===null)C={start:c,end:c};else if(c===C.end+1)C.end=c;else R.push(C),C={start:c,end:c};else if(C!==null)R.push(C),C=null}}if(C!==null)R.push(C);return R},G=(R,C)=>{let h=[],I=null;for(let p=R;p<=C&&p<Z;p++)if(!D(p))if(I===null)I={start:p,end:p};else I.end=p;else if(I!==null)h.push(I),I=null;if(I!==null)h.push(I);return h},P=(R)=>{return X.has(R)},L=(R)=>{let C=X.get(R);if(C)C.lastAccess=Date.now()},y=(R,C)=>{if(R>C||X.size===0)return;let h=Date.now(),I=Y(Math.max(0,R)),p=Y(Math.min(Z-1,C));for(let H=I;H<=p;H++){let w=X.get(H);if(w)w.lastAccess=h}},E=(R,C)=>{if(N<=J)return 0;let h=Math.max(0,R-Q),I=Math.min(Z-1,C+Q),p=Y(h),H=Y(I),w=0,c=[];for(let[t,s]of X)if(t<p||t>H)w+=s.count,c.push(t),N-=s.count,X.delete(t);if(w>0&&K)K(w,c);return w},$=()=>{if(N<=J)return 0;let R=Array.from(X.entries()).sort(([,I],[,p])=>I.lastAccess-p.lastAccess),C=0,h=[];for(let[I,p]of R){if(N<=J)break;C+=p.count,N-=p.count,h.push(I),X.delete(I)}if(C>0&&K)K(C,h);return C},r=()=>{return{totalItems:Z,cachedItems:N,cachedChunks:X.size,chunkSize:q,maxCachedItems:J,memoryEfficiency:Z>0?1-N/Z:1}},z=()=>N,m=()=>{X.clear(),N=0};return{chunkSize:q,maxCachedItems:J,getTotal:A,setTotal:V,get:O,has:D,set:M,setRange:_,delete:v,getRange:k,isRangeLoaded:T,getLoadedRanges:b,findUnloadedRanges:G,getChunkIndex:Y,isChunkLoaded:P,touchChunk:L,touchChunksForRange:y,evictDistant:E,evictToLimit:$,getStats:r,getCachedCount:z,clear:m,reset:()=>{m(),Z=0}}},q2=(j)=>{if(j.length===0)return[];let q=[...j].sort((Q,K)=>Q.start-K.start),J=[{...q[0]}];for(let Q=1;Q<q.length;Q++){let K=q[Q],X=J[J.length-1];if(K.start<=X.end+1)X.end=Math.max(X.end,K.end);else J.push({...K})}return J},g0=(j,q,J)=>{let Q=Math.floor(j.start/J)*J,K=Math.ceil((j.end+1)/J)*J-1,X={start:Q,end:K};if(q.length===0)return[X];let Z=[],N=q2(q),W=X.start;for(let Y of N){if(Y.end<W)continue;if(Y.start>X.end)break;if(Y.start>W)Z.push({start:W,end:Math.min(Y.start-1,X.end)});if(W=Y.end+1,W>X.end)break}if(W<=X.end)Z.push({start:W,end:X.end});return Z};var X2=(j={})=>{let{maskCharacter:q=t2,maxSampleSize:J=e2}=j,Q=[],K=!1,X=0,Z=(A)=>{if(K||A.length===0)return;let V=Math.min(A.length,J);for(let O=0;O<V;O++){let D=A[O];if(!D||typeof D!=="object")continue;let M={};for(let[_,v]of Object.entries(D)){if(_.startsWith("_")||_==="id")continue;M[_]=String(v??"").length}if(Object.keys(M).length>0)Q.push(M)}K=!0},N=()=>K,W=(A)=>{let V={id:`${jj}${X++}`,[A2]:!0,_index:A};if(Q.length===0)return V.label=q.repeat(12),V;let O=Q[A%Q.length];for(let[D,M]of Object.entries(O))V[D]=q.repeat(Math.max(1,M));return V};return{analyzeStructure:Z,hasAnalyzedStructure:N,generate:W,generateRange:(A,V)=>{let O=[];for(let D=A;D<=V;D++)O.push(W(D));return O},clear:()=>{Q=[],K=!1,X=0}}},k0=(j)=>{if(!j||typeof j!=="object")return!1;return j[A2]===!0},E2=(j)=>{return j.filter((q)=>!k0(q))};var NJ=50,Y2=(j={})=>{let{adapter:q,initialItems:J,initialTotal:Q,storage:K,placeholder:X,pageSize:Z=NJ,onStateChange:N,onItemsLoaded:W,onItemsEvicted:Y}=j,U=Q2({...K,onEvict:(S,d)=>{Y?.(S),G()}}),A=null,V=()=>{if(!A)A=X2(X);return A},O=new Map,D=!1,M,_=!0,v,k=[],T=0,b=new Map,G=()=>{N?.(B())},P=()=>{O.clear();let S=U.getLoadedRanges();for(let d of S)for(let e=d.start;e<=d.end;e++){let a=U.get(e);if(a&&!k0(a))O.set(a.id,e)}},L=(S,d)=>{if(!k0(d))O.set(d.id,S)},y=(S)=>{O.delete(S)},E=(S,d)=>{return`${S}-${d}`},$=()=>U.getTotal(),r=()=>U.getCachedCount(),z=()=>D,m=()=>_,B=()=>({total:U.getTotal(),cached:U.getCachedCount(),isLoading:D,pendingRanges:k,error:M,hasMore:_,cursor:v}),R=()=>U,C=()=>V(),h=(S)=>{let d=U.get(S);if(d!==void 0)return d;if(S>=0&&S<U.getTotal())return V().generate(S);return},I=(S)=>{let d=O.get(S);if(d===void 0)return;return U.get(d)},p=(S)=>{return O.get(S)??-1},H=(S)=>{let d=U.get(S);return d!==void 0&&!k0(d)},w=(S,d)=>{let e=[],a=U.getTotal(),Z0=0,W0=0;U.touchChunksForRange(S,Math.min(d,a-1));for(let E0=S;E0<=d&&E0<a;E0++){let M0=U.get(E0);if(M0!==void 0)e.push(M0),Z0++;else e.push(V().generate(E0)),W0++}return e},c=(S)=>{U.setTotal(S),_=U.getCachedCount()<S,G()},t=(S,d=0,e)=>{if(A&&!A.hasAnalyzedStructure()&&S.length>0)A.analyzeStructure(S);for(let a=0;a<S.length;a++){let Z0=S[a];if(Z0!==void 0){let W0=d+a;U.set(W0,Z0),L(W0,Z0)}}if(e!==void 0)U.setTotal(e);else if(d+S.length>U.getTotal())U.setTotal(d+S.length);if(U.getCachedCount()>=U.getTotal()&&U.getTotal()>0)_=!1;W?.(S,d,U.getTotal()),G()},s=(S,d)=>{let e=O.get(S);if(e===void 0)return!1;let a=U.get(e);if(!a)return!1;let Z0={...a,...d};if(U.set(e,Z0),d.id!==void 0&&d.id!==S)y(S),L(e,Z0);return G(),!0},o=(S)=>{let d=O.get(S);if(d===void 0)return!1;U.delete(d),y(S);let e=U.getTotal();if(e>0)U.setTotal(e-1);return G(),!0},Q0=async(S,d)=>{if(!q)return;let e=E(S,d);if(b.has(e))return;let a=U.getLoadedRanges(),Z0=g0({start:S,end:d},a,U.chunkSize);if(Z0.length===0)return;let W0=U.chunkSize,E0=[];for(let G0 of Z0){let H0=Math.floor(G0.start/W0),O0=Math.floor(G0.end/W0);for(let Y0=H0;Y0<=O0;Y0++){let F0=Y0*W0,D0=F0+W0-1,L0=E(F0,D0);if(!E0.some((P0)=>P0.start===F0)&&!b.has(L0))E0.push({start:F0,end:D0})}}let M0=[];for(let G0 of Z0){let H0=Math.floor(G0.start/W0),O0=Math.floor(G0.end/W0);for(let Y0=H0;Y0<=O0;Y0++){let F0=Y0*W0,D0=F0+W0-1,L0=E(F0,D0);if(b.has(L0)){let P0=b.get(L0);if(!M0.includes(P0))M0.push(P0)}}}for(let G0 of E0){let H0=E(G0.start,G0.end),O0=(async()=>{k.push(G0),D=!0,M=void 0,G();try{let Y0=G0.end-G0.start+1,F0={offset:G0.start,limit:Y0,cursor:void 0},D0=await q.read(F0);if(t(D0.items,G0.start,D0.total),D0.cursor)v=D0.cursor;let L0=G0.start+D0.items.length;if(L0>=T){if(T=L0,D0.hasMore!==void 0)_=D0.hasMore;else if(D0.total!==void 0)_=L0<D0.total}}catch(Y0){M=Y0 instanceof Error?Y0:Error(String(Y0))}finally{b.delete(H0),k=k.filter((Y0)=>Y0.start!==G0.start||Y0.end!==G0.end),D=b.size>0,G()}})();b.set(H0,O0),M0.push(O0)}await Promise.all(M0)},l=async(S,d)=>{if(U.isRangeLoaded(S,d))return;await Q0(S,d)},u=async()=>{if(!q)return;await Q0(0,Z-1)},n=async()=>{if(!q||D||!_)return!1;let S=U.getCachedCount(),d=U.getTotal(),e=S,a=Math.min(e+Z-1,d>0?d-1:e+Z-1);if(e>=d&&d>0)return _=!1,!1;return await Q0(e,a),U.getCachedCount()>S},K0=async()=>{if(U.clear(),U.setTotal(0),O.clear(),A)A.clear();b.clear(),k=[],D=!1,v=void 0,_=!0,T=0,M=void 0,G()},i=(S,d)=>{if(U.evictDistant(S,d)>0)P()},B0=()=>{U.clear(),O.clear(),v=void 0,M=void 0,k=[],D=!1,G()},X0=()=>{if(U.reset(),O.clear(),A)A.clear();v=void 0,_=!0,T=0,M=void 0,k=[],D=!1,G()};if(J&&J.length>0)t(J,0,Q??J.length);else if(Q!==void 0)U.setTotal(Q),G();return{getState:B,getTotal:$,getCached:r,getIsLoading:z,getHasMore:m,getStorage:R,getPlaceholders:C,getItem:h,getItemById:I,getIndexById:p,isItemLoaded:H,getItemsInRange:w,setTotal:c,setItems:t,updateItem:s,removeItem:o,loadRange:Q0,ensureRange:l,loadInitial:u,loadMore:n,reload:K0,evictDistant:i,clear:B0,reset:X0}};var Nj=(j)=>{let{adapter:q,loading:J,storage:Q,total:K,autoLoad:X=!0}=j,Z=J?.cancelThreshold??n2,N=J?.preloadThreshold??o2,W=J?.preloadAhead??i2;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(Y){let{emitter:U}=Y,A=Y.config.reverse,V=Y2({adapter:q,...K!==void 0&&{initialTotal:K},pageSize:Q?.chunkSize??z0,...Q&&{storage:{...Q.chunkSize!==void 0&&{chunkSize:Q.chunkSize},...Q.maxCachedItems!==void 0&&{maxCachedItems:Q.maxCachedItems}}},onStateChange:()=>{if(Y.state.isInitialized){let T=Y.getVirtualTotal();Y.sizeCache.rebuild(T),Y.updateCompressionMode();let b=Y.getCachedCompression();Y.state.viewportState.totalSize=b.virtualSize,Y.state.viewportState.actualSize=b.actualSize,Y.state.viewportState.isCompressed=b.isCompressed,Y.state.viewportState.compressionRatio=b.ratio,Y.updateContentSize(b.virtualSize),Y.renderIfNeeded()}},onItemsLoaded:(T,b,G)=>{if(Y.state.isInitialized)Y.forceRender(),U.emit("load:end",{items:T,total:G})}});Y.replaceDataManager(V);let O=null,D=null,M=0,_=()=>{if(D){let T=D;D=null,Y.dataManager.ensureRange(T.start,T.end).catch((b)=>{U.emit("error",{error:b,context:"ensureRange"})})}};Y.afterScroll.push((T,b)=>{if(Y.state.isDestroyed)return;let G=Y.scrollController.getVelocity(),L=Y.scrollController.isTracking()&&G<=Z;if(D&&M>Z&&G<=Z){let $=D;D=null,Y.dataManager.ensureRange($.start,$.end).catch((r)=>{U.emit("error",{error:r,context:"ensureRange"})})}if(M=G,L&&!Y.dataManager.getIsLoading()&&Y.dataManager.getHasMore()){if(A){if(T<F2)U.emit("load:start",{offset:Y.dataManager.getCached(),limit:z0}),Y.dataManager.loadMore().catch(($)=>{U.emit("error",{error:$,context:"loadMore"})})}else if(Y.state.viewportState.totalSize-T-Y.state.viewportState.containerSize<F2)U.emit("load:start",{offset:Y.dataManager.getCached(),limit:z0}),Y.dataManager.loadMore().catch((r)=>{U.emit("error",{error:r,context:"loadMore"})})}let{renderRange:y}=Y.state.viewportState;if(!O||y.start!==O.start||y.end!==O.end)if(O={start:y.start,end:y.end},L){D=null;let{start:$,end:r}=y,z=Y.getVirtualTotal();if(G>N)if(b==="down")r=Math.min(y.end+W,z-1);else $=Math.max(y.start-W,0);Y.dataManager.ensureRange($,r).catch((m)=>{U.emit("error",{error:m,context:"ensureRange"})})}else D={start:y.start,end:y.end}});let v=200,k=null;if(Y.afterScroll.push((T,b)=>{if(k!==null)clearTimeout(k);k=setTimeout(()=>{k=null,_()},v)}),Y.destroyHandlers.push(()=>{if(k!==null)clearTimeout(k),k=null}),U.on("load:start",()=>{Y.dom.root.setAttribute("aria-busy","true")}),U.on("load:end",()=>{Y.dom.root.removeAttribute("aria-busy")}),Y.methods.set("loadVisibleRange",async()=>{O=null,D=null,Y.forceRender();let{renderRange:T}=Y.state.viewportState;if(T.end>0)U.emit("load:start",{offset:T.start,limit:T.end-T.start+1}),await Y.dataManager.ensureRange(T.start,T.end)}),Y.methods.set("reload",async()=>{O=null,D=null,Y.invalidateRendered(),await Y.dataManager.reload(),U.emit("load:start",{offset:0,limit:z0}),await Y.dataManager.loadInitial(),Y.forceRender();let{renderRange:T}=Y.state.viewportState;if(T.end>0)await Y.dataManager.ensureRange(T.start,T.end)}),X)U.emit("load:start",{offset:0,limit:z0}),Y.dataManager.loadInitial().catch((T)=>{U.emit("error",{error:T,context:"loadInitial"})});else if(K!==void 0)Y.dataManager.setTotal(K)}}};var Gj=()=>{let j=null;return{name:"withPage",priority:5,setup(q){let{dom:J,state:Q,config:K,emitter:X}=q;if(J.root.style.overflow="visible",J.root.style.height="auto",K.horizontal)J.viewport.style.overflowX="visible",J.viewport.style.overflowY="visible";else J.viewport.style.overflow="visible";J.viewport.classList.remove(`${K.classPrefix}-viewport--custom-scrollbar`),q.disableViewportResize(),q.disableWheelHandler(),q.setScrollTarget(window),q.setScrollFns(()=>{let Y=J.viewport.getBoundingClientRect();if(K.horizontal)return Math.max(0,-Y.left);else return Math.max(0,-Y.top)},(Y)=>{let U=J.viewport.getBoundingClientRect();if(K.horizontal){let A=U.left+window.scrollX;window.scrollTo(A+Y,window.scrollY)}else{let A=U.top+window.scrollY;window.scrollTo(window.scrollX,A+Y)}}),q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),Q.viewportState.containerSize=window.innerHeight;let{innerHeight:Z,innerWidth:N}=window,W=()=>{let{innerWidth:Y,innerHeight:U}=window,A=K.horizontal?Y:U,V=K.horizontal?N:Z;if(Math.abs(A-V)<=1)return;Z=U,N=Y,Q.viewportState.containerSize=U,X.emit("resize",{width:Y,height:U});for(let O=0;O<q.resizeHandlers.length;O++)q.resizeHandlers[O](Y,U);q.renderIfNeeded()};window.addEventListener("resize",W,{passive:!0}),j=()=>{window.removeEventListener("resize",W)},q.destroyHandlers.push(j)},destroy(){if(j)j(),j=null}}};var L2=(j,q)=>{let J=0,Q=j.length-1;while(J<Q){let K=J+Q+1>>>1;if(j[K].headerLayoutIndex<=q)J=K;else Q=K-1}return J},Wj=(j,q)=>{let J=0,Q=j.length-1;while(J<Q){let K=J+Q+1>>>1;if(j[K].firstDataIndex<=q)J=K;else Q=K-1}return J},Dj=(j,q)=>{if(j===0)return[];let J=[],Q=q(0),K=0,X=0;for(let Z=1;Z<j;Z++){let N=q(Z);if(N!==Q){let W=Z-K;J.push({key:Q,groupIndex:J.length,headerLayoutIndex:X,firstDataIndex:K,count:W}),X=X+1+W,Q=N,K=Z}}return J.push({key:Q,groupIndex:J.length,headerLayoutIndex:X,firstDataIndex:K,count:j-K}),J},x0=(j,q)=>{if(j.length===0||q.length===0)return[];let J=j.length+q.length,Q=Array(J),K=0;for(let X of q){Q[K]={id:`__group_header_${X.groupIndex}`,__groupHeader:!0,groupKey:X.key,groupIndex:X.groupIndex},K++;for(let Z=0;Z<X.count;Z++)Q[K]=j[X.firstDataIndex+Z],K++}return Q},m0=(j,q)=>{let J=typeof q==="number"?(Q)=>q:q;return(Q)=>{let K=j.getEntry(Q);if(K.type==="header")return j.getHeaderHeight(K.group.groupIndex);return J(K.dataIndex)}},K2=(j,q)=>{let J=Dj(j,q.getGroupForIndex),Q=j+J.length,K=q.headerHeight;return{get totalEntries(){return Q},get groupCount(){return J.length},get groups(){return J},getEntry:(V)=>{if(J.length===0)return{type:"item",dataIndex:V,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let O=L2(J,V),D=J[O];if(V===D.headerLayoutIndex)return{type:"header",group:D};let M=V-D.headerLayoutIndex-1;return{type:"item",dataIndex:D.firstDataIndex+M,group:D}},layoutToDataIndex:(V)=>{if(J.length===0)return V;let O=L2(J,V),D=J[O];if(V===D.headerLayoutIndex)return-1;let M=V-D.headerLayoutIndex-1;return D.firstDataIndex+M},dataToLayoutIndex:(V)=>{if(J.length===0)return V;let O=Wj(J,V),D=J[O],M=V-D.firstDataIndex;return D.headerLayoutIndex+1+M},getGroupAtLayoutIndex:(V)=>{if(J.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let O=L2(J,V);return J[O]},getGroupAtDataIndex:(V)=>{if(J.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let O=Wj(J,V);return J[O]},getHeaderHeight:typeof K==="number"?(V)=>K:(V)=>{let O=J[V];if(!O)return 0;return K(O.key,V)},rebuild:(V)=>{J=Dj(V,q.getGroupForIndex),Q=V+J.length}}};var Z2=(j,q,J,Q,K,X=!1)=>{let Z=document.createElement("div");if(Z.className=`${K}-sticky-header`,Z.setAttribute("role","presentation"),Z.setAttribute("aria-hidden","true"),Z.style.position="absolute",Z.style.zIndex="5",Z.style.pointerEvents="none",Z.style.willChange="transform",Z.style.overflow="hidden",X)Z.style.top="0",Z.style.bottom="0",Z.style.left="0";else Z.style.top="0",Z.style.left="0",Z.style.right="0";j.insertBefore(Z,j.firstChild);let N=-1,W=!1,Y=0,U=(_)=>{if(_===N)return;N=_;let v=q.groups;if(_<0||_>=v.length){Z.textContent="";return}let k=v[_],T=Q.headerTemplate(k.key,k.groupIndex),b=q.getHeaderHeight(_);if(X)Z.style.width=`${b}px`;else Z.style.height=`${b}px`;if(typeof T==="string")Z.innerHTML=T;else Z.replaceChildren(T)},A=(_)=>{let v=q.groups;if(v.length===0){O();return}let k=0;for(let L=v.length-1;L>=0;L--)if(J.getOffset(v[L].headerLayoutIndex)<=_){k=L;break}let T=J.getOffset(v[0].headerLayoutIndex);if(_<T){O();return}if(!W)V();U(k);let b=q.getHeaderHeight(k),G=0,P=k+1;if(P<v.length){let y=J.getOffset(v[P].headerLayoutIndex)-_;if(y<b)G=y-b}if(G!==Y)if(Y=G,G===0)Z.style.transform="";else{let L=Math.round(G);Z.style.transform=X?`translateX(${L}px)`:`translateY(${L}px)`}},V=()=>{if(W)return;W=!0,Z.style.display=""},O=()=>{if(!W)return;W=!1,Z.style.display="none",N=-1,Y=0,Z.style.transform=""},D=()=>{let _=N;if(N=-1,_>=0)U(_)},M=()=>{Z.remove(),N=-1,W=!1};return Z.style.display="none",{update:A,refresh:D,show:V,hide:O,destroy:M}};var _j=(j,q,J,Q,K,X)=>{if(Q===0||q===0)return X.start=0,X.end=-1,X;let Z=J.indexAtOffset(j),N=J.indexAtOffset(j+q);if(N<Q-1)N++;return X.start=Math.max(0,Z),X.end=Math.min(Q-1,Math.max(0,N)),X},Vj=(j,q,J,Q)=>{if(J===0)return Q.start=0,Q.end=-1,Q;return Q.start=Math.max(0,j.start-q),Q.end=Math.min(J-1,j.end+q),Q},Mj=(j,q,J,Q,K,X)=>{if(Q===0)return 0;let Z=Math.max(0,Math.min(j,Q-1)),N=q.getOffset(Z),W=q.getSize(Z),Y=q.getTotalSize(),U=Math.max(0,Y-J),A;switch(X){case"center":A=N-J/2+W/2;break;case"end":A=N-J+W;break;case"start":default:A=N;break}return Math.max(0,Math.min(A,U))},Fj=(j,q,J)=>{if(J&&J.isCompressed)return J.virtualSize;return q.getTotalSize()},Aj=(j,q)=>{return q.getTotalSize()},Ej=(j,q)=>{return q.getOffset(j)},Lj=(j,q,J)=>{let Q=Math.max(0,q-J);return Math.max(0,Math.min(j,Q))};var C0=(j,q,J,Q,K="start",X,Z=Mj)=>{return Z(j,q,J,Q,X,K)},Oj=(j,q)=>{return j.start===q.start&&j.end===q.end},bj=(j,q)=>{return j>=q.start&&j<=q.end},yj=(j)=>{if(j.end<j.start)return 0;return j.end-j.start+1};var Tj=(j,q)=>{let J=[],Q=[];for(let K=j.start;K<=j.end;K++)if(K<q.start||K>q.end)Q.push(K);for(let K=q.start;K<=q.end;K++)if(K<j.start||K>j.end)J.push(K);return{add:J,remove:Q}};e0();var Pj=(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,J=null,Q=[],K=[];return{name:"withSections",priority:10,setup(X){let{dom:Z,config:N,rawConfig:W}=X,{classPrefix:Y}=N,A=W.item.height;Q=W.items?[...W.items]:[];let V=Q.length,O={getGroupForIndex:j.getGroupForIndex,headerHeight:j.headerHeight,headerTemplate:j.headerTemplate,sticky:j.sticky??!1};q=K2(V,O),K=x0(Q,q.groups);let D=m0(q,A);X.setSizeConfig(D),X.rebuildSizeCache(K.length),X.dataManager.setItems(K,0,K.length);let M=W.item.template,{headerTemplate:_}=j,v=(y,E,$)=>{if(R0(y))return _(y.groupKey,y.groupIndex);return M(y,E,$)},k=X.methods.get("_getGridLayout"),T=X.methods.get("_replaceGridRenderer"),b=X.methods.get("_updateGridLayoutForGroups");if(k&&T){if(b)b((r)=>{let z=K[r];return!!(z&&R0(z))});let{createGridRenderer:y}=(B2(),rj(Hj)),E=k(),$=y(Z.items,v,X.sizeCache,E,Y,X.getContainerWidth(),()=>X.dataManager.getTotal(),N.ariaIdPrefix);T($)}else X.replaceTemplate(v);if(Z.root.classList.add(`${Y}--grouped`),j.sticky!==!1){J=Z2(Z.root,q,X.sizeCache,{...O,sticky:O.sticky??!1},Y,N.horizontal);let y=J;X.afterScroll.push((E,$)=>{y.update(E)}),J.update(X.scrollController.getScrollTop())}let G=()=>{if(!q)return;q.rebuild(Q.length),K=x0(Q,q.groups);let y=m0(q,A);if(X.setSizeConfig(y),X.rebuildSizeCache(K.length),X.dataManager.setItems(K,0,K.length),J)J.refresh()};X.methods.set("setItems",(y)=>{Q=[...y],G()}),X.methods.set("appendItems",(y)=>{Q=[...Q,...y],G()}),X.methods.set("prependItems",(y)=>{Q=[...y,...Q],G()}),X.methods.set("removeItem",(y)=>{Q=Q.filter((E)=>E.id!==y),G()});let{animateScroll:P,cancelScroll:L}=DJ(X.scrollController,X.renderIfNeeded);X.methods.set("scrollToIndex",(y,E)=>{let $=q.dataToLayoutIndex(y),{align:r,behavior:z,duration:m}=_J(E),B=X.dataManager.getTotal(),R=C0($,X.sizeCache,X.state.viewportState.containerSize,B,r,X.getCachedCompression());if(z==="smooth")P(X.scrollController.getScrollTop(),R,m);else L(),X.scrollController.scrollTo(R)}),X.methods.set("_getItems",()=>Q),X.methods.set("_getTotal",()=>Q.length),X.destroyHandlers.push(()=>{if(T0!==null)cancelAnimationFrame(T0),T0=null;if(J)J.destroy(),J=null;Z.root.classList.remove(`${Y}--grouped`)})},destroy(){if(J)J.destroy(),J=null}}},O2=300,WJ=(j)=>j<0.5?2*j*j:-1+(4-2*j)*j,T0=null,DJ=(j,q)=>{let J=()=>{if(T0!==null)cancelAnimationFrame(T0),T0=null};return{animateScroll:(K,X,Z)=>{if(J(),Math.abs(X-K)<1){j.scrollTo(X);return}let N=performance.now(),W=(Y)=>{let U=Y-N,A=Math.min(U/Z,1),V=K+(X-K)*WJ(A);if(j.scrollTo(V),q(),A<1)T0=requestAnimationFrame(W);else T0=null};T0=requestAnimationFrame(W)},cancelScroll:J}},_J=(j)=>{if(typeof j==="string")return{align:j,behavior:"auto",duration:O2};if(j&&typeof j==="object")return{align:j.align??"start",behavior:j.behavior??"auto",duration:j.duration??O2};return{align:"start",behavior:"auto",duration:O2}};var U2=(j)=>{let q=Math.max(1,Math.floor(j.columns)),J=j.gap??0,Q=j.isHeaderFn,K={row:0,col:0},X=(D)=>{if(D<=0)return 0;if(!Q)return Math.ceil(D/q);let M=0,_=0,v=0;for(let k=0;k<D;k++)if(Q(k)){if(v++,_>0)M++,_=0;M++,_=0}else if(_++,_>=q)M++,_=0;if(_>0)M++;return M},Z=(D)=>{return K.row=N(D),K.col=W(D),K},N=(D)=>{if(!Q)return Math.floor(D/q);let M=0,_=0;for(let v=0;v<=D;v++)if(Q(v)){if(_>0)M++,_=0;if(v===D)return M;M++,_=0}else{if(v===D)return M;if(_++,_>=q)M++,_=0}return console.warn(`⚠️ getRow(${D}) fell through - returning ${M}`),M},W=(D)=>{if(!Q)return D%q;if(Q(D))return 0;let M=0;for(let _=0;_<=D;_++)if(Q(_))M=0;else{if(_===D)return M;if(M++,M>=q)M=0}return M},Y=(D,M,_)=>{if(_<=0)return{start:0,end:-1};if(!Q){let G=Math.max(0,D*q),P=Math.min(_-1,(M+1)*q-1);return{start:G,end:P}}let v=-1,k=-1,T=0,b=0;for(let G=0;G<_;G++){if(Q(G)){if(b>0)T++,b=0;if(T>=D&&T<=M){if(v===-1)v=G;k=G}T++,b=0}else{if(T>=D&&T<=M){if(v===-1)v=G;k=G}if(b++,b>=q)T++,b=0}if(T>M&&b===0)break}if(v===-1)return{start:0,end:-1};return{start:v,end:k}},U=(D,M,_)=>{if(M<0||M>=q)return-1;let v=D*q+M;if(v<0||v>=_)return-1;return v},A=(D)=>{let M=(q-1)*J;return Math.max(0,(D-M)/q)};return{get columns(){return q},get gap(){return J},update:(D)=>{if(D.columns!==void 0)q=Math.max(1,Math.floor(D.columns));if(D.gap!==void 0)J=D.gap;if(D.isHeaderFn!==void 0)Q=D.isHeaderFn},getTotalRows:X,getPosition:Z,getRow:N,getCol:W,getItemRange:Y,getItemIndex:U,getColumnWidth:A,getColumnOffset:(D,M)=>{let _=A(M);return D*(_+J)}}};B2();var $j=(j)=>{if(!j.columns||j.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let q=null,J=null;return{name:"withGrid",priority:10,setup(Q){let{dom:K,emitter:X,config:Z,rawConfig:N}=Q,{classPrefix:W}=Z;if(Z.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let Y=Z.horizontal,U=()=>Y?K.viewport.clientHeight:Q.getContainerWidth(),A=N.items?.some((L)=>L.__groupHeader===!0),V={columns:j.columns,gap:j.gap??0};if(A)V.isHeaderFn=(L)=>{let y=Q.dataManager.getItem(L);return!!(y&&y.__groupHeader===!0)};q=U2(V);let O=q.gap;Q.setVirtualTotalFn(()=>{let L=Q.dataManager.getTotal();return q.getTotalRows(L)});let D=N.item,M=Z.horizontal?D.width:D.height,_={containerWidth:U(),columns:q.columns,gap:q.gap};if(typeof M==="function")Q.setSizeConfig((L)=>{let y=_.containerWidth-2,E=(_.columns-1)*_.gap,$=(y-E)/_.columns,r={containerWidth:_.containerWidth,columns:_.columns,gap:_.gap,columnWidth:$,row:q.getRow(L),column:q.getCol(L),totalRows:q.getTotalRows(Q.dataManager.getTotal()),totalColumns:_.columns};return M(L,r)+_.gap});else if(O>0)Q.setSizeConfig(M+O);Q.rebuildSizeCache(),K.root.classList.add(`${W}--grid`);let v=U(),k=N.item.template,T=()=>{J=d0(K.items,k,Q.sizeCache,q,W,v,()=>Q.dataManager.getTotal(),Z.ariaIdPrefix,Z.horizontal),Q.replaceRenderer(J)};T(),Q.methods.set("_getGridLayout",()=>q),Q.methods.set("_getGridConfig",()=>V),Q.methods.set("_replaceGridRenderer",(L)=>{J=L}),Q.methods.set("_updateGridLayoutForGroups",(L)=>{q.update({isHeaderFn:L});let y=Q.dataManager.getTotal(),E=0;for(let $=0;$<y;$++)if(q.getCol($)===0){let r=Q.sizeCache.getSize($);E+=r}if(Q.sizeCache.getTotalSize=()=>E,Z.horizontal)Q.dom.content.style.width=`${E}px`;else Q.dom.content.style.height=`${E}px`;T()}),Q.methods.set("updateGrid",(L)=>{if(L.columns!==void 0){if(!Number.isInteger(L.columns)||L.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");V.columns=L.columns}if(L.gap!==void 0){if(L.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");V.gap=L.gap}if(q)q.update(V);let y=U();if(_.containerWidth=y,_.columns=V.columns,_.gap=V.gap??0,J)J.updateContainerWidth(y);Q.rebuildSizeCache(),Q.updateContentSize(Q.sizeCache.getTotalSize()),Q.updateCompressionMode();for(let E=0;E<Q.contentSizeHandlers.length;E++)Q.contentSizeHandlers[E]();if(J)J.clear();Q.forceRender()});let b=()=>{if(Q.state.isDestroyed)return;let L=Q.scrollController.getScrollTop(),y=Q.state.viewportState.containerSize,E=Q.getVirtualTotal(),$={start:0,end:0};if(E===0||y===0)$.start=0,$.end=0;else{$.start=Math.max(0,Q.sizeCache.indexAtOffset(L));let p=Q.sizeCache.indexAtOffset(L+y);if(p<E-1)p++;$.end=Math.min(E-1,Math.max(0,p))}let r=Z.overscan??3,z={start:Math.max(0,$.start-r),end:Math.min(E-1,$.end+r)};Q.state.viewportState.scrollPosition=L,Q.state.viewportState.visibleRange=$,Q.state.viewportState.renderRange=z;let m=Q.state.lastRenderRange,B=Q.state.viewportState.isCompressed;if(z.start===m.start&&z.end===m.end){if(B)J.updatePositions(Q.getCompressionContext());return}let R=Q.dataManager.getTotal(),C=q.getItemRange(z.start,z.end,R),h=Q.dataManager.getItemsInRange(C.start,C.end),I=B?Q.getCompressionContext():void 0;J.render(h,C,new Set,-1,I),Q.state.lastRenderRange={...z},X.emit("range:change",{range:z})},G=()=>{if(Q.state.isDestroyed)return;Q.state.lastRenderRange={start:-1,end:-1},b()};Q.setRenderFns(b,G);let P=typeof M==="function";if(Q.resizeHandlers.push((L,y)=>{let E=Y?y:L;if(_.containerWidth=E,J)J.updateContainerWidth(E);if(P){Q.rebuildSizeCache(),Q.updateContentSize(Q.sizeCache.getTotalSize()),Q.updateCompressionMode();for(let $=0;$<Q.contentSizeHandlers.length;$++)Q.contentSizeHandlers[$]();if(J)J.clear();Q.forceRender()}}),Q.methods.set("scrollToIndex",(L,y)=>{let E=Math.floor(L/j.columns),{align:$,behavior:r}=VJ(y),z=Q.dataManager.getState(),m=q.getTotalRows(z.total),B=Math.max(0,Math.min(E,m-1)),R=C0(B,Q.sizeCache,Q.state.viewportState.containerSize,m,$,Q.getCachedCompression());if(r==="smooth")Q.scrollController.scrollTo(R);else Q.scrollController.scrollTo(R)}),!Q.methods.has("_getTotal"))Q.methods.set("_getTotal",()=>Q.dataManager.getTotal());Q.destroyHandlers.push(()=>{if(J)J.destroy(),J=null;K.root.classList.remove(`${W}--grid`)})},destroy(){if(J)J.destroy(),J=null}}},b2=300,VJ=(j)=>{if(typeof j==="string")return{align:j,behavior:"auto",duration:b2};if(j&&typeof j==="object")return{align:j.align??"start",behavior:j.behavior??"auto",duration:j.duration??b2};return{align:"start",behavior:"auto",duration:b2}};B2();var N2=(j)=>({selected:new Set(j??[]),focusedIndex:-1}),c0=(j,q,J)=>{if(J==="none")return j;let Q=new Set(j.selected);if(J==="single"){if(Q.clear(),q.length>0)Q.add(q[0])}else for(let K of q)Q.add(K);return{...j,selected:Q}},l0=(j,q)=>{let J=new Set(j.selected);for(let Q of q)J.delete(Q);return{...j,selected:J}},f0=(j,q,J)=>{if(J==="none")return j;if(j.selected.has(q))return l0(j,[q]);else return c0(j,[q],J)},G2=(j,q,J)=>{if(J!=="multiple")return j;return{...j,selected:new Set(q.map((Q)=>Q.id))}},W2=(j)=>({...j,selected:new Set}),y2=(j,q)=>{return j.focusedIndex=q,j},T2=(j,q,J=!0)=>{if(q===0)return j;let Q=j.focusedIndex-1;if(Q<0)Q=J?q-1:0;return j.focusedIndex=Q,j},H2=(j,q,J=!0)=>{if(q===0)return j;let Q=j.focusedIndex+1;if(Q>=q)Q=J?0:q-1;return j.focusedIndex=Q,j},P2=(j,q)=>{if(q===0)return j;return j.focusedIndex=0,j},$2=(j,q)=>{if(q===0)return j;return j.focusedIndex=q-1,j};var kj=(j,q)=>{return j.selected.has(q)},S0=(j)=>{return Array.from(j.selected)},I0=(j,q)=>{let J=[];for(let Q of j.selected){let K=q(Q);if(K)J.push(K)}return J};var Rj=(j)=>{let q=j?.mode??"single",J=j?.initial,Q=N2(J),K=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(X){let{dom:Z,emitter:N,config:W}=X,{classPrefix:Y,ariaIdPrefix:U}=W;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}let A=new Map,V=()=>{A.clear();let b=X.dataManager.getTotal();for(let G=0;G<b;G++){let P=X.dataManager.getItem(G);if(P)A.set(P.id,G)}};V();let{renderIfNeeded:O,forceRender:D}=X.getRenderFns(),M=()=>{X.dom.items.querySelectorAll("[data-index]").forEach((G)=>{let P=G,L=P.dataset.id;if(L!==void 0){let y=/^\d+$/.test(L)?parseInt(L,10):L,E=Q.selected.has(y),r=parseInt(P.dataset.index??"-1",10)===Q.focusedIndex;P.classList.toggle(`${Y}-item--selected`,E),P.classList.toggle(`${Y}-item--focused`,r),P.ariaSelected=E?"true":"false"}})},_=()=>{if(X.state.isDestroyed)return;O(),M()},v=()=>{if(X.state.isDestroyed)return;D(),M()};X.setRenderFns(_,v);let k=()=>{M();let b=(G)=>{let P=A.get(G);if(P===void 0)return;return X.dataManager.getItem(P)};N.emit("selection:change",{selected:S0(Q),items:I0(Q,b)})};K=document.createElement("div"),K.setAttribute("aria-live","polite"),K.setAttribute("aria-atomic","true"),K.className=`${Y}-live-region`,K.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",Z.root.appendChild(K);let T=K;N.on("selection:change",({selected:b})=>{let G=b.length;if(G===0)T.textContent="";else if(G===1)T.textContent="1 item selected";else T.textContent=`${G} items selected`}),X.clickHandlers.push((b)=>{if(X.state.isDestroyed)return;let P=b.target.closest("[data-index]");if(!P)return;let L=parseInt(P.dataset.index??"-1",10);if(L<0)return;let y=X.dataManager.getItem(L);if(!y)return;N.emit("item:click",{item:y,index:L,event:b}),Q=y2(Q,L),Z.root.setAttribute("aria-activedescendant",`${U}-item-${L}`),Q=f0(Q,y.id,q),k()}),X.keydownHandlers.push((b)=>{if(X.state.isDestroyed)return;let G=X.dataManager.getTotal(),P=Q.focusedIndex,L=!1,y=!1,E=Q;switch(b.key){case"ArrowUp":E=T2(Q,G),L=!0,y=!0;break;case"ArrowDown":E=H2(Q,G),L=!0,y=!0;break;case"Home":E=P2(Q,G),L=!0,y=!0;break;case"End":E=$2(Q,G),L=!0,y=!0;break;case" ":case"Enter":if(Q.focusedIndex>=0){let $=X.dataManager.getItem(Q.focusedIndex);if($)E=f0(Q,$.id,q);L=!0}break}if(L){b.preventDefault(),Q=E;let $=Q.focusedIndex;if($>=0){let r=X.dataManager.getState(),z=C0($,X.sizeCache,X.state.viewportState.containerSize,r.total,"center",X.getCachedCompression());X.scrollController.scrollTo(z),Z.root.setAttribute("aria-activedescendant",`${U}-item-${$}`)}else Z.root.removeAttribute("aria-activedescendant");if(y){let{selected:r}=Q;if(P>=0&&P!==$){let z=X.dataManager.getItem(P);if(z)X.renderer.updateItemClasses(P,r.has(z.id),!1)}if($>=0){let z=X.dataManager.getItem($);if(z)X.renderer.updateItemClasses($,r.has(z.id),!0)}}else{v();let r=(z)=>{let m=A.get(z);if(m===void 0)return;return X.dataManager.getItem(m)};N.emit("selection:change",{selected:S0(Q),items:I0(Q,r)})}}}),X.methods.set("select",(...b)=>{Q=c0(Q,b,q),k()}),X.methods.set("deselect",(...b)=>{Q=l0(Q,b),k()}),X.methods.set("toggleSelect",(b)=>{Q=f0(Q,b,q),k()}),X.methods.set("selectAll",()=>{if(q!=="multiple")return;let b=X.getAllLoadedItems();Q=G2(Q,b,q),V(),k()}),X.methods.set("clearSelection",()=>{Q=W2(Q);let{renderRange:b,isCompressed:G}=X.state.viewportState,P=X.getItemsForRange(b),L=G?X.getCompressionContext():void 0;X.renderer.render(P,b,Q.selected,Q.focusedIndex,L),N.emit("selection:change",{selected:[],items:[]})}),X.methods.set("getSelected",()=>{return S0(Q)}),X.methods.set("getSelectedItems",()=>{return I0(Q,(G)=>{let P=A.get(G);if(P===void 0)return;return X.dataManager.getItem(P)})}),X.destroyHandlers.push(()=>{if(T&&T.parentNode)T.remove()})},destroy(){if(K&&K.parentNode)K.remove();K=null}}};var Cj=(j)=>{let q=j?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(J){J.methods.set("getScrollSnapshot",()=>{let K=J.scrollController.getScrollTop(),X=J.getCachedCompression(),Z=J.getVirtualTotal(),N=J.methods.get("getSelected"),W=N&&N().length>0?N():void 0;if(Z===0){let V={index:0,offsetInItem:0,total:0};if(W)V.selectedIds=W;return V}let Y,U;if(X.isCompressed){let O=K/X.virtualSize*Z;Y=Math.max(0,Math.min(Math.floor(O),Z-1)),U=(O-Y)*J.sizeCache.getSize(Y)}else Y=J.sizeCache.indexAtOffset(K),U=K-J.sizeCache.getOffset(Y);U=Math.max(0,U);let A={index:Y,offsetInItem:U,total:Z};if(W)A.selectedIds=W;return A});let Q=(K)=>{let{index:X,offsetInItem:Z,selectedIds:N}=K,W=J.getVirtualTotal();if(W===0)return;if(!Number.isFinite(X)||!Number.isFinite(Z))return;if(J.sizeCache.getTotal()!==W){J.sizeCache.rebuild(W),J.updateCompressionMode();let _=J.getCachedCompression();J.updateContentSize(_.virtualSize)}let U=J.getCachedCompression(),A=Math.max(0,Math.min(X,W-1)),V;if(U.isCompressed){let _=J.sizeCache.getSize(A),v=_>0?Z/_:0;V=(A+v)/W*U.virtualSize}else V=J.sizeCache.getOffset(A)+Z;let O=J.state.viewportState.containerSize,D=Math.max(0,U.virtualSize-O);if(V=Math.max(0,Math.min(V,D)),J.scrollController.scrollTo(V),N&&N.length>0){let _=J.methods.get("select");if(_)_(...N)}let M=J.methods.get("loadVisibleRange");if(M)requestAnimationFrame(()=>{M()});else{let _=J.methods.get("reload");if(_)requestAnimationFrame(()=>{_()})}};if(J.methods.set("restoreScroll",Q),q)queueMicrotask(()=>{Q(q)})}}};export{Cj as withSnapshots,Rj as withSelection,Pj as withSections,Kj as withScrollbar,Uj as withScale,Gj as withPage,$j as withGrid,Nj as withAsync,r2 as vlist,f0 as toggleSelection,_j as simpleVisibleRange,c0 as selectItems,G2 as selectAll,Oj as rangesEqual,J2 as rafThrottle,qj as needsScaling,q2 as mergeRanges,kj as isSelected,R0 as isSectionHeader,k0 as isPlaceholderItem,bj as isInRange,I0 as getSelectedItems,S0 as getSelectedIds,A0 as getScaleState,Yj as getScaleInfo,A0 as getScale,yj as getRangeCount,Xj as getMaxItemsWithoutScaling,E2 as filterPlaceholders,Tj as diffRanges,l0 as deselectItems,Z2 as createStickyHeader,Q2 as createSparseStorage,y0 as createSizeCache,N2 as createSelectionState,m0 as createSectionedSizeFn,K2 as createSectionLayout,w0 as createScrollbar,Bj as createScrollController,X2 as createPlaceholderManager,n0 as createMeasuredSizeCache,d0 as createGridRenderer,U2 as createGridLayout,o0 as createEmitter,Y2 as createAsyncManager,W2 as clearSelection,Lj as clampScrollPosition,Fj as calculateTotalSize,C0 as calculateScrollToIndex,i0 as calculateScaledVisibleRange,t0 as calculateScaledScrollToIndex,Jj as calculateScaledRenderRange,v0 as calculateScaledItemPosition,Vj as calculateRenderRange,g0 as calculateMissingRanges,Ej as calculateItemOffset,Qj as calculateIndexFromScrollPosition,Aj as calculateActualSize,x0 as buildLayoutItems,$0 as MAX_VIRTUAL_HEIGHT};
1
+ var{defineProperty:_2,getOwnPropertyNames:lj,getOwnPropertyDescriptor:aj}=Object,sj=Object.prototype.hasOwnProperty;var v2=new WeakMap,rj=(j)=>{var q=v2.get(j),J;if(q)return q;if(q=_2({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function")lj(j).map((Q)=>!sj.call(q,Q)&&_2(q,Q,{get:()=>j[Q],enumerable:!(J=aj(j,Q))||J.enumerable}));return v2.set(j,q),q};var nj=(j,q)=>{for(var J in q)_2(j,J,{get:q[J],enumerable:!0,configurable:!0,set:(Q)=>q[J]=()=>Q})};var w2=(j,q)=>()=>(j&&(q=j(j=0)),q);var oj=(j,q)=>{let J=q;return{getOffset:(Q)=>Q*j,getSize:(Q)=>j,indexAtOffset:(Q)=>{if(J===0||j===0)return 0;return Math.max(0,Math.min(Math.floor(Q/j),J-1))},getTotalSize:()=>J*j,getTotal:()=>J,rebuild:(Q)=>{J=Q},isVariable:()=>!1}},ij=(j,q)=>{let J=q,Q=new Float64Array(0),K=(B)=>{J=B,Q=new Float64Array(B+1),Q[0]=0;for(let G=0;G<B;G++)Q[G+1]=Q[G]+j(G)};K(q);let X=(B)=>{if(J===0)return 0;if(B<=0)return 0;if(B>=Q[J])return J-1;let G=0,W=J-1;while(G<W){let Y=G+W+1>>>1;if(Q[Y]<=B)G=Y;else W=Y-1}return G};return{getOffset:(B)=>{if(B<=0)return 0;if(B>=J)return Q[J];return Q[B]},getSize:(B)=>j(B),indexAtOffset:(B)=>X(B),getTotalSize:()=>Q[J]??0,getTotal:()=>J,rebuild:(B)=>K(B),isVariable:()=>!0}},y0=(j,q)=>{if(typeof j==="number")return oj(j,q);return ij(j,q)},u0=(j,q,J,Q)=>{if(Q===0)return 0;if(!j.isVariable())return Math.ceil(J/j.getSize(0));let K=0,X=0,B=q;while(B<Q&&X<J)X+=j.getSize(B),K++,B++;return Math.max(1,K)},r0=(j,q,J)=>{if(J===0)return 0;if(!j.isVariable())return Math.floor(q/j.getSize(0));let Q=0,K=0;for(let X=J-1;X>=0;X--){let B=j.getSize(X);if(K+B>q)break;K+=B,Q++}return Math.max(Q,1)},M2=(j,q,J)=>{if(J===0)return 0;let Q=Math.floor(q),K=q-Q,X=Math.max(0,Math.min(Q,J-1));return j.getOffset(X)+K*j.getSize(X)};var F2=200,z0=50,n2=15,o2=2,i2=50,$0=16000000,t2="x",e2=20,A2="_isPlaceholder",jj="__placeholder_";var A0=(j,q)=>{let J=q.getTotalSize(),Q=J>$0,K=Q?$0:J,X=J>0?K/J:1;return{isCompressed:Q,actualSize:J,virtualSize:K,ratio:X}},i0=(j,q,J,Q,K,X)=>{if(Q===0||q===0)return X.start=0,X.end=-1,X;if(!K.isCompressed){let D=J.indexAtOffset(j),A=J.indexAtOffset(j+q);if(A<Q-1)A++;return X.start=Math.max(0,D),X.end=Math.min(Q-1,Math.max(0,A)),X}let{virtualSize:B}=K,W=j/B*Q,Y=Math.floor(W),N=u0(J,Math.max(0,Y),q,Q),F=Math.ceil(W)+N,b=B-q-j;if(b<=q&&b>=-1){let D=r0(J,q,Q),A=Math.max(0,Q-D),_=Math.max(0,Math.min(1,1-b/q));Y=Math.floor(Y+(A-Y)*_),F=b<=1?Q-1:Math.min(Q-1,Y+N)}return X.start=Math.max(0,Y),X.end=Math.min(Q-1,Math.max(0,F)),X},Jj=(j,q,J,Q)=>{if(J===0)return Q.start=0,Q.end=-1,Q;return Q.start=Math.max(0,j.start-q),Q.end=Math.min(J-1,j.end+q),Q},v0=(j,q,J,Q,K,X,B)=>{if(!X.isCompressed||Q===0)return J.getOffset(j);let{virtualSize:G}=X,W=G-K,Y=W-q;if(Y<=K&&Y>=-1){if(q>=W-1){let L=J.getTotalSize()-J.getOffset(j);return K-L}let b=r0(J,K,Q),D=Math.max(0,Q-b),_=q/G*Q,z=Math.max(0,Math.min(1,1-Y/K)),$=J.getOffset(j)-J.getOffset(D),v=J.getOffset(j)-M2(J,_,Q);return v+($-v)*z}let N=q/G,F=J.getTotalSize(),V=N*F;return J.getOffset(j)-V},t0=(j,q,J,Q,K,X="start")=>{if(Q===0)return 0;let B;if(K.isCompressed){if(X==="end"&&j===Q-1)return Math.max(0,K.virtualSize-J);B=j/Q*K.virtualSize}else B=q.getOffset(j);let G=q.getSize(j);switch(X){case"center":B-=(J-G)/2;break;case"end":B-=J-G;break}let W=K.virtualSize-J;return Math.max(0,Math.min(B,W))},Qj=(j,q,J,Q)=>{if(J===0)return 0;if(Q.isCompressed){let K=j/Q.virtualSize;return Math.floor(K*J)}return q.indexAtOffset(j)},qj=(j,q)=>{if(typeof q==="number")return j*q>$0;return q.getTotalSize()>$0},Xj=(j)=>{if(j<=0)return 0;return Math.floor($0/j)},Yj=(j,q)=>{let J=A0(j,q);if(!J.isCompressed)return`No compression needed (${j} items, ${(J.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(J.ratio*100).toFixed(1)}% (${j} items, ${(J.actualSize/1e6).toFixed(1)}M px → ${(J.virtualSize/1e6).toFixed(1)}M px virtual)`};var e0=()=>{};var R0=(j)=>{return j!==null&&typeof j==="object"&&j.__groupHeader===!0};var Hj={};nj(Hj,{createGridRenderer:()=>d0});var GJ=(j=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(X)=>{if(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}}},d0=(j,q,J,Q,K,X,B,G,W=!1)=>{let Y=GJ(),N=new Map,F=X,V=!1,b=null,D=0,A="",_=(H)=>{if(b&&D===H)return b;return b=A0(H,J),D=H,b},z={selected:!1,focused:!1},$=(H,w)=>{return z.selected=H,z.focused=w,z},v=`${K}-item ${K}-grid-item`,L=`${K}-item--selected`,U=`${K}-item--focused`,y=(H,w)=>{if(typeof w==="string")H.innerHTML=w;else H.replaceChildren(w)},O=(H,w,c)=>{H.classList.toggle(L,w),H.classList.toggle(U,c)},T=(H,w)=>{let c=Q.getRow(H);if(w){let t=w.totalItems,r=_(t);if(r.isCompressed)return v0(c,w.scrollPosition,J,t,w.containerSize,r,w.rangeStart)}return J.getOffset(c)},M=(H,w,c)=>{let t=H.dataset.id?.startsWith("__group_header"),r=t?0:Q.getCol(w),o=t?0:Q.getColumnOffset(r,F),Q0;if(V){let l=Q.getRow(w),u=0,n=new Set;for(let K0=0;K0<w;K0++){let i=Q.getRow(K0);if(i<l&&!n.has(i)){let B0=J.getSize(K0);u+=B0,n.add(i)}}Q0=u}else Q0=T(w,c);if(W)H.style.transform=`translate(${Math.round(Q0)}px, ${Math.round(o)}px)`;else H.style.transform=`translate(${Math.round(o)}px, ${Math.round(Q0)}px)`},k=(H,w)=>{let c=H.dataset.id?.startsWith("__group_header"),t=c?F:Q.getColumnWidth(F),r;if(V||c)r=J.getSize(w)-Q.gap;else{let o=Q.getRow(w);r=J.getSize(o)-Q.gap}if(W)H.style.width=`${r}px`,H.style.height=`${t}px`;else H.style.width=`${t}px`,H.style.height=`${r}px`},s=(H,w,c,t,r)=>{let o=Y.acquire(),Q0=$(c,t);if(o.className=v,o.dataset.index=String(H),o.dataset.id=String(w.id),o.dataset.row=String(Q.getRow(H)),o.dataset.col=String(Q.getCol(H)),o.ariaSelected=String(c),G)o.id=`${G}-item-${H}`;if(B)A=String(B()),o.setAttribute("aria-setsize",A),o.setAttribute("aria-posinset",String(H+1));k(o,H);let l=q(w,H,Q0);return y(o,l),O(o,c,t),M(o,H,r),o},P=(H,w,c,t,r)=>{if(w.start===0&&H.length>0)V=R0(H[0]);for(let[u,n]of N)if(u<w.start||u>w.end)n.element.remove(),Y.release(n.element),N.delete(u);let o=!1;if(B){let u=String(B());o=u!==A,A=u}let Q0=document.createDocumentFragment(),l=[];for(let u=w.start;u<=w.end;u++){let n=u-w.start,K0=H[n];if(!K0){console.warn(`⚠️ RENDER: Missing item at index ${u} (range: ${w.start}-${w.end}, items.length: ${H.length})`);continue}let i=c.has(K0.id),B0=u===t,X0=N.get(u);if(X0){let f=X0.element.dataset.id,d=String(K0.id);if(f!==d){let a=$(i,B0),Z0=q(K0,u,a);y(X0.element,Z0),X0.element.dataset.id=d,X0.element.dataset.row=String(Q.getRow(u)),X0.element.dataset.col=String(Q.getCol(u)),k(X0.element,u)}if(O(X0.element,i,B0),X0.element.ariaSelected=String(i),M(X0.element,u,r),o)X0.element.setAttribute("aria-setsize",A)}else{let f=s(u,K0,i,B0,r);Q0.appendChild(f),l.push({index:u,element:f})}}if(l.length>0){j.appendChild(Q0);for(let{index:u,element:n}of l)N.set(u,{index:u,element:n})}},m=(H)=>{for(let[w,c]of N)M(c.element,w,H)},Z=(H,w,c,t)=>{let r=N.get(H);if(r){let o=$(c,t),Q0=q(w,H,o);y(r.element,Q0),O(r.element,c,t),r.element.dataset.id=String(w.id),r.element.ariaSelected=String(c),k(r.element,H)}},R=(H,w,c)=>{let t=N.get(H);if(t)O(t.element,w,c)},C=(H)=>{return N.get(H)?.element},h=(H)=>{if(Math.abs(H-F)<1)return;F=H;for(let[w,c]of N)k(c.element,w),M(c.element,w)},p=()=>{for(let[,H]of N)H.element.remove(),Y.release(H.element);N.clear()};return{render:P,updatePositions:m,updateItem:Z,updateItemClasses:R,getElement:C,updateContainerWidth:h,clear:p,destroy:()=>{p(),Y.clear()}}};var B2=w2(()=>{e0()});var S2=2,f2=(j=0)=>{let q=[,,,,,];for(let J=0;J<5;J++)q[J]={position:0,time:0};return{velocity:0,lastPosition:j,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},V2=(j,q)=>{let J=performance.now(),Q=J-j.lastTime;if(Q===0)return j;if(Q>100){j.sampleCount=0,j.sampleIndex=0,j.velocity=0;let X=j.samples[0];return X.position=q,X.time=J,j.sampleIndex=1,j.sampleCount=1,j.lastPosition=q,j.lastTime=J,j}let K=j.samples[j.sampleIndex];if(K.position=q,K.time=J,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,B=j.samples[X],G=q-B.position,W=J-B.time;j.velocity=W>0?Math.abs(G)/W:0}return j.lastPosition=q,j.lastTime=J,j};var n0=(j,q)=>{let J=new Map,Q=(X)=>{let B=J.get(X);return B!==void 0?B:j},K=y0(Q,q);return{getOffset(X){return K.getOffset(X)},getSize(X){return Q(X)},indexAtOffset(X){return K.indexAtOffset(X)},getTotalSize(){return K.getTotalSize()},getTotal(){return K.getTotal()},rebuild(X){if(X<K.getTotal()){for(let B of J.keys())if(B>=X)J.delete(B)}K=y0(Q,X)},isVariable(){return!0},setMeasuredSize(X,B){J.set(X,B)},isMeasured(X){return J.has(X)},getEstimatedSize(){return j},measuredCount(){return J.size}}};var o0=()=>{let j={},q=(G,W)=>{if(!j[G])j[G]=new Set;return j[G].add(W),()=>J(G,W)},J=(G,W)=>{j[G]?.delete(W)};return{on:q,off:J,emit:(G,W)=>{j[G]?.forEach((Y)=>{try{Y(W)}catch(N){console.error(`[vlist] Error in event handler for "${String(G)}":`,N)}})},once:(G,W)=>{let Y=(N)=>{J(G,Y),W(N)};return q(G,Y)},clear:(G)=>{if(G)delete j[G];else for(let W in j)delete j[W]},listenerCount:(G)=>{return j[G]?.size??0}}};var p2=(j)=>{if(typeof j==="string"){let q=document.querySelector(j);if(!q)throw Error(`[vlist/builder] Container not found: ${j}`);return q}return j},I2=(j,q,J,Q)=>{let K=document.createElement("div");if(K.className=q,Q)K.classList.add(`${q}--horizontal`);if(K.setAttribute("role","listbox"),K.setAttribute("tabindex","0"),J)K.setAttribute("aria-label",J);if(Q)K.setAttribute("aria-orientation","horizontal");let X=document.createElement("div");if(X.className=`${q}-viewport`,Q)X.style.overflowX="auto",X.style.overflowY="hidden";else X.style.overflow="auto";X.style.height="100%",X.style.width="100%";let B=document.createElement("div");if(B.className=`${q}-content`,B.style.position="relative",Q)B.style.height="100%";else B.style.width="100%";let G=document.createElement("div");if(G.className=`${q}-items`,G.style.position="relative",Q)G.style.height="100%";else G.style.width="100%";return B.appendChild(G),X.appendChild(B),K.appendChild(X),j.appendChild(K),{root:K,viewport:X,content:B,items:G}};var h2=(j=100)=>{let q=[];return{acquire:()=>{let J=q.pop();if(J)return J;let Q=document.createElement("div");return Q.setAttribute("role","option"),Q},release:(J)=>{if(q.length<j)J.className="",J.textContent="",J.removeAttribute("style"),J.removeAttribute("data-index"),J.removeAttribute("data-id"),q.push(J)},clear:()=>{q.length=0}}};var u2=(j,q,J,Q,K)=>{if(Q===0||q===0){K.start=0,K.end=0;return}let X=J.indexAtOffset(j),B=u0(J,X,q,Q),G=X+B;K.start=Math.max(0,X),K.end=Math.min(Q-1,Math.max(0,G))},g2=(j,q,J,Q)=>{if(J===0){Q.start=0,Q.end=0;return}Q.start=Math.max(0,j.start-q),Q.end=Math.min(J-1,j.end+q)},x2=(j,q,J,Q,K)=>{if(Q===0)return 0;let X=Math.max(0,Math.min(j,Q-1)),B=q.getOffset(X),G=q.getSize(X),W=Math.max(0,q.getTotalSize()-J),Y;switch(K){case"center":Y=B-(J-G)/2;break;case"end":Y=B-J+G;break;default:Y=B}return Math.max(0,Math.min(Y,W))};var m2=(j)=>j<0.5?2*j*j:-1+(4-2*j)*j,d2=(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}};var c2=(j,q)=>{let{dom:J,emitter:Q,resolvedConfig:K,rawConfig:X,rendered:B,pool:G,sharedState:W,isHorizontal:Y,classPrefix:N,contentSizeHandlers:F,afterScroll:V,clickHandlers:b,keydownHandlers:D,resizeHandlers:A,destroyHandlers:_,methods:z,onScrollFrame:$,resizeObserver:v,renderRange:L}=q;return{get dom(){return J},get sizeCache(){return j.hc},get emitter(){return Q},get config(){return K},get rawConfig(){return X},get renderer(){return{render:(U,y,O,T,M)=>{j.ss=O,j.fi=T,j.ffn()},updateItemClasses:(U,y,O)=>{let T=B.get(U);if(!T)return;T.classList.toggle(`${N}-item--selected`,y),T.classList.toggle(`${N}-item--focused`,O),T.ariaSelected=y?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(U)=>B.get(U)??null,clear:()=>{},destroy:()=>{}}},set renderer(U){},get dataManager(){return j.dm},set dataManager(U){j.dm=U},get scrollController(){return j.sc},set scrollController(U){j.sc=U},state:W,getContainerWidth(){return j.cw},afterScroll:V,clickHandlers:b,keydownHandlers:D,resizeHandlers:A,contentSizeHandlers:F,destroyHandlers:_,methods:z,replaceTemplate(U){j.at=U},replaceRenderer(U){},replaceDataManager(U){j.dm=U},replaceScrollController(U){j.sc=U},getItemsForRange(U){let{dm:y,it:O}=j,T=[];for(let M=U.start;M<=U.end;M++){let k=y?y.getItem(M):O[M];if(k)T.push(k)}return T},getAllLoadedItems(){let U=j.dm;if(U){let y=U.getTotal(),O=[];for(let T=0;T<y;T++){let M=U.getItem(T);if(M)O.push(M)}return O}return[...j.it]},getVirtualTotal(){return j.vtf()},getCachedCompression(){let U=j.hc;return{isCompressed:!1,actualSize:U.getTotalSize(),virtualSize:U.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:j.ls,totalItems:j.vtf(),containerSize:j.ch,rangeStart:L.start}},renderIfNeeded(){j.rfn()},forceRender(){j.ffn()},invalidateRendered(){for(let[,U]of B)U.remove(),G.release(U);B.clear()},getRenderFns(){return{renderIfNeeded:j.rfn,forceRender:j.ffn}},setRenderFns(U,y){j.rfn=U,j.ffn=y},setVirtualTotalFn(U){j.vtf=U},rebuildSizeCache(U){j.hc.rebuild(U??j.vtf())},setSizeConfig(U){j.hc=y0(U,j.vtf())},updateContentSize(U){let y=`${U}px`;if(Y)J.content.style.width=y;else J.content.style.height=y},updateCompressionMode(){},setVisibleRangeFn(U){j.gvr=U},setScrollToPosFn(U){j.gsp=U},setPositionElementFn(U){j.pef=U},setScrollFns(U,y){j.sgt=U,j.sst=(O)=>{y(O),$()}},setScrollTarget(U){j.st.removeEventListener("scroll",$),j.st=U,j.st.addEventListener("scroll",$,{passive:!0})},getScrollTarget(){return j.st},setContainerDimensions(U){j.gcw=U.width,j.gch=U.height,j.cw=U.width(),j.ch=U.height(),W.viewportState.containerSize=Y?j.cw:j.ch},disableViewportResize(){if(j.vre)j.vre=!1,v.unobserve(J.viewport)},disableWheelHandler(){if(j.wh)J.viewport.removeEventListener("wheel",j.wh),j.wh=null}}},l2=(j,q,J)=>{let{rendered:Q,itemState:K,contentSizeHandlers:X,applyTemplate:B,updateContentSize:G}=q,W=()=>{j.hc.rebuild(j.vtf()),G(),J.updateCompressionMode();for(let Y=0;Y<X.length;Y++)X[Y]();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:(Y)=>j.it[Y],isItemLoaded:(Y)=>Y>=0&&Y<j.it.length&&j.it[Y]!==void 0,getItemsInRange:(Y,N)=>{let F=j.it,V=[],b=Math.max(0,Y),D=Math.min(N,F.length-1);for(let A=b;A<=D;A++)V.push(F[A]);return V},setTotal:(Y)=>{},setItems:(Y,N=0,F)=>{let V=j.it;if(N===0&&(F!==void 0||V.length===0))j.it=Y;else{let b=N+Y.length;if(V.length<b)V.length=b;for(let D=0;D<Y.length;D++)V[N+D]=Y[D]}if(j.ii)W()},updateItem:(Y,N)=>{let F=j.it;if(Y<0||Y>=F.length)return!1;let V=F[Y];if(!V)return!1;F[Y]={...V,...N};let b=Q.get(Y);if(b)B(b,j.at(F[Y],Y,K)),b.dataset.id=String(F[Y].id);return!0},removeItem:(Y)=>{if(Y<0||Y>=j.it.length)return!1;if(j.it.splice(Y,1),j.ii)W();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),G(),j.ffn()}}},a2=(j,q)=>{let{dom:J,classPrefix:Q}=q;return{getScrollTop:()=>j.sgt(),scrollTo:(K)=>{j.sst(K),j.ls=K,j.rfn()},scrollBy:(K)=>{let X=j.sgt()+K;j.sst(X),j.ls=X,j.rfn()},isAtTop:()=>j.ls<=2,isAtBottom:(K=2)=>j.sab(K),getScrollPercentage:()=>{let K=j.hc.getTotalSize(),X=Math.max(0,K-j.ch);return X>0?j.ls/X:0},getVelocity:()=>j.vt.velocity,isTracking:()=>j.vt.sampleCount>=2,isScrolling:()=>J.root.classList.contains(`${Q}--scrolling`),updateConfig:()=>{},enableCompression:()=>{j.sic=!0},disableCompression:()=>{j.sic=!1},isCompressed:()=>j.sic,isWindowMode:()=>!1,updateContainerHeight:(K)=>{j.ch=K},destroy:()=>{}}};var tj=3,ej="vlist",s2=150,jJ=0,r2=(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",J=q?"width":"height",Q=q?"estimatedWidth":"estimatedHeight",K=q?j.item.width:j.item.height,X=q?j.item.estimatedWidth:j.item.estimatedHeight;if(K==null&&X==null)throw Error(`[vlist/builder] item.${J} or item.${Q} is required${q?" when orientation is 'horizontal'":""}`);if(K!=null){if(typeof K==="number"&&K<=0)throw Error(`[vlist/builder] item.${J} must be a positive number`);if(typeof K!=="number"&&typeof K!=="function")throw Error(`[vlist/builder] item.${J} must be a number or a function (index) => number`)}else if(X!=null){if(typeof X!=="number"||X<=0)throw Error(`[vlist/builder] item.${Q} 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 B=new Map,G=!1,W={use(Y){if(G)throw Error("[vlist/builder] Cannot call .use() after .build()");return B.set(Y.name,Y),W},build(){if(G)throw Error("[vlist/builder] .build() can only be called once");return G=!0,JJ(j,B,q,K,X??null)}};return W};function JJ(j,q,J,Q,K){let{item:X,items:B,overscan:G=tj,classPrefix:W=ej,ariaLabel:Y,reverse:N=!1,scroll:F}=j,V=F,b=V?.wheel??!0,D=V?.wrap??!1,A=N,_=`${W}-${jJ++}`,z=Q??K,$=Q==null&&K!=null,v=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||navigator.maxTouchPoints&&navigator.maxTouchPoints>2,L=J?typeof X.height==="number"?X.height:void 0:typeof X.width==="number"?X.width:void 0,U={overscan:G,classPrefix:W,reverse:A,wrap:D,horizontal:J,ariaIdPrefix:_},y=Array.from(q.values()).sort((E,S)=>(E.priority??50)-(S.priority??50)),O=new Set(y.map((E)=>E.name));for(let E of y)if(E.conflicts){for(let S of E.conflicts)if(O.has(S))throw Error(`[vlist/builder] ${E.name} and ${S} cannot be combined`)}if(A){if(O.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let T=p2(j.container),M=I2(T,W,Y,J);if(V?.wheel===!1)if(J)M.viewport.style.overflowX="hidden";else M.viewport.style.overflow="hidden";if(V?.scrollbar==="none")M.viewport.classList.add(`${W}-viewport--no-scrollbar`);let k=o0(),s=B||[],P=$?n0(K,s.length):y0(z,s.length),m=h2(),Z={it:s,hc:P,ch:M.viewport.clientHeight,cw:M.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:f2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:J?()=>M.viewport.scrollLeft:()=>M.viewport.scrollTop,sst:J?(E)=>{M.viewport.scrollLeft=E}:(E)=>{M.viewport.scrollTop=E},sab:(E=2)=>{let S=Z.hc.getTotalSize();return Z.ls+Z.ch>=S-E},sic:!1,rfn:null,ffn:null,gvr:(E,S,g,x,j0)=>{u2(E,S,g,x,j0)},gsp:(E,S,g,x,j0)=>{return x2(E,S,g,x,j0)},pef:null,at:X.template,vre:!0,st:M.viewport,wh:null,gcw:()=>Z.cw,gch:()=>Z.ch};Z.vtf=()=>Z.dm?Z.dm.getTotal():Z.it.length;let R=null,C=null,h=!1,p={start:0,end:0},I={start:0,end:0},H={start:-1,end:-1},w={viewportState:{scrollPosition:0,containerSize:J?Z.cw:Z.ch,totalSize:Z.hc.getTotalSize(),actualSize:Z.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},c=new Map,t=$?new WeakMap:null,r=$?P:null,o=null,Q0=0,l=!1,u=()=>{if(!$)return;if(l){let E=Z.sgt(),S=J?M.viewport.scrollWidth-M.viewport.clientWidth:M.viewport.scrollHeight-M.viewport.clientHeight,g=S>0&&E>=S-2;if(M0(),l=!1,g){let x=Math.max(0,Z.hc.getTotalSize()-(J?Z.cw:Z.ch));if(x>E)Z.sst(x),Z.ls=x,Z.rfn()}}};if($&&r&&t)o=new ResizeObserver((E)=>{if(Z.id)return;let S=!1,g=p.start;for(let x of E){let j0=t.get(x.target);if(j0===void 0)continue;let q0=J?x.borderBoxSize[0].inlineSize:x.borderBoxSize[0].blockSize;if(!r.isMeasured(j0)){let U0=r.getSize(j0);if(r.setMeasuredSize(j0,q0),S=!0,j0<g&&q0!==U0)Q0+=q0-U0;o.unobserve(x.target);let J0=x.target;if(J)J0.style.width=`${q0}px`;else J0.style.height=`${q0}px`}}if(!S)return;if(r.rebuild(Z.vtf()),Z.hc=r,Q0!==0){let x=Z.sgt();Z.sst(x+Q0),Z.ls=x+Q0,Q0=0}if(h)l=!0;else{let x=Z.sgt(),j0=J?M.viewport.scrollWidth-M.viewport.clientWidth:M.viewport.scrollHeight-M.viewport.clientHeight,q0=j0>0&&x>=j0-2;if(M0(),l=!1,q0){let U0=Math.max(0,Z.hc.getTotalSize()-(J?Z.cw:Z.ch));if(U0>x)Z.sst(U0),Z.ls=U0}}H.start=-1,H.end=-1,Z.rfn()});let n={selected:!1,focused:!1},K0=`${W}-item`,i=[],B0=[],X0=[],f=[],d=[],e=[],a=new Map,Z0=(E,S)=>{if(typeof S==="string")E.innerHTML=S;else E.replaceChildren(S)},W0=(E,S)=>{let g=Math.round(Z.hc.getOffset(S));if(J)E.style.transform=`translateX(${g}px)`;else E.style.transform=`translateY(${g}px)`};Z.pef=W0;let E0=(E,S)=>{let g=m.acquire();g.className=K0;let x=!$||r&&r.isMeasured(E);if(J){if(x)g.style.width=`${Z.hc.getSize(E)}px`;else g.style.width="";if(L!=null)g.style.height=`${L}px`}else if(x)g.style.height=`${Z.hc.getSize(E)}px`;else g.style.height="";if(g.dataset.index=String(E),g.dataset.id=String(S.id),g.ariaSelected="false",g.id=`${_}-item-${E}`,Z.la=String(Z.vtf()),g.setAttribute("aria-setsize",Z.la),g.setAttribute("aria-posinset",String(E+1)),String(S.id).startsWith("__placeholder_"))g.classList.add(`${W}-item--placeholder`);return Z0(g,Z.at(S,E,n)),Z.pef(g,E),g},M0=()=>{let E=`${Z.hc.getTotalSize()}px`;if(J)M.content.style.width=E;else M.content.style.height=E},G0=()=>{if(Z.id)return;let E=Z.vtf(),S=J?Z.cw:Z.ch;if(Z.gvr(Z.ls,S,Z.hc,E,p),g2(p,G,E,I),I.start===H.start&&I.end===H.end){if(Z.sic)for(let[J0,N0]of c)Z.pef(N0,J0);return}let g=String(E),x=g!==Z.la;Z.la=g;for(let[J0,N0]of c)if(J0<I.start||J0>I.end)N0.remove(),m.release(N0),c.delete(J0);let j0=document.createDocumentFragment(),q0=[],U0=[];for(let J0=I.start;J0<=I.end;J0++){let N0=Z.dm?Z.dm.getItem(J0):Z.it[J0];if(!N0)continue;let V0=c.get(J0);if(V0){let b0=V0.dataset.id,I0=String(N0.id);if(b0!==I0){let cj=b0?.startsWith("__placeholder_"),C2=I0.startsWith("__placeholder_");Z0(V0,Z.at(N0,J0,n)),V0.dataset.id=I0;let z2=!$||r&&r.isMeasured(J0);if(J)V0.style.width=z2?`${Z.hc.getSize(J0)}px`:"";else V0.style.height=z2?`${Z.hc.getSize(J0)}px`:"";if(C2)V0.classList.add(`${W}-item--placeholder`);else V0.classList.remove(`${W}-item--placeholder`);if(cj&&!C2)V0.classList.add(`${W}-item--replaced`),setTimeout(()=>{V0.classList.remove(`${W}-item--replaced`)},300)}Z.pef(V0,J0);let s0=Z.ss.has(N0.id),dj=J0===Z.fi;if(V0.classList.toggle(`${W}-item--selected`,s0),V0.classList.toggle(`${W}-item--focused`,dj),V0.ariaSelected=s0?"true":"false",x)V0.setAttribute("aria-setsize",Z.la)}else{let b0=E0(J0,N0);U0.push({index:J0,element:b0});let I0=Z.ss.has(N0.id),s0=J0===Z.fi;if(I0)b0.classList.add(`${W}-item--selected`),b0.ariaSelected="true";if(s0)b0.classList.add(`${W}-item--focused`);j0.appendChild(b0),q0.push({index:J0,element:b0})}}if(q0.length>0){M.items.appendChild(j0);for(let{index:J0,element:N0}of q0)c.set(J0,N0)}if($&&o&&r&&t){for(let{index:J0,element:N0}of U0)if(!r.isMeasured(J0))t.set(N0,J0),o.observe(N0)}H.start=I.start,H.end=I.end,w.lastRenderRange.start=I.start,w.lastRenderRange.end=I.end,w.viewportState.scrollPosition=Z.ls,w.viewportState.visibleRange.start=p.start,w.viewportState.visibleRange.end=p.end,w.viewportState.renderRange.start=I.start,w.viewportState.renderRange.end=I.end,k.emit("range:change",{range:{start:I.start,end:I.end}})},H0=()=>{H.start=-1,H.end=-1,Z.rfn()};Z.rfn=G0,Z.ffn=H0;let O0=()=>{if(Z.id)return;let E=Z.sgt(),S=E>=Z.ls?"down":"up";if(Z.vt=V2(Z.vt,E),!M.root.classList.contains(`${W}--scrolling`))M.root.classList.add(`${W}--scrolling`);h=!0,Z.ls=E,Z.rfn(),k.emit("scroll",{scrollPosition:E,direction:S}),k.emit("velocity:change",{velocity:Z.vt.velocity,reliable:Z.vt.sampleCount>=S2});for(let g=0;g<i.length;g++)i[g](E,S);if(C)clearTimeout(C);C=setTimeout(()=>{M.root.classList.remove(`${W}--scrolling`),h=!1,Z.vt.velocity=0,Z.vt.sampleCount=0,k.emit("velocity:change",{velocity:0,reliable:!1}),u()},V?.idleTimeout??s2)},Y0=null;if(Z.st.addEventListener("scroll",O0,{passive:!0}),b&&!J&&!v)Y0=(E)=>{E.preventDefault();let S=Z.sgt(),g=E.deltaY,x=Math.max(0,Math.min(S+g,Z.hc.getTotalSize()-Z.ch));Z.sst(x),Z.ls=x,Z.vt=V2(Z.vt,x),Z.rfn();let j0=x>=S?"down":"up";if(k.emit("scroll",{scrollPosition:x,direction:j0}),!M.root.classList.contains(`${W}--scrolling`))M.root.classList.add(`${W}--scrolling`);if(h=!0,C)clearTimeout(C);C=setTimeout(()=>{M.root.classList.remove(`${W}--scrolling`),h=!1,Z.vt.velocity=0,Z.vt.sampleCount=0,k.emit("velocity:change",{velocity:0,reliable:!1}),u()},V?.idleTimeout??s2)},Z.wh=Y0,M.viewport.addEventListener("wheel",Y0,{passive:!1});else if(J&&b)Y0=(E)=>{if(E.deltaX)return;E.preventDefault(),M.viewport.scrollLeft+=E.deltaY},Z.wh=Y0,M.viewport.addEventListener("wheel",Y0,{passive:!1});let F0=(E)=>{let g=E.target.closest("[data-index]");if(g){let x=parseInt(g.dataset.index??"-1",10);if(x>=0){let j0=Z.dm?.getItem(x)??Z.it[x];if(j0){if(j0.__groupHeader)return;k.emit("item:click",{item:j0,index:x,event:E})}}}for(let x=0;x<B0.length;x++)B0[x](E)},D0=(E)=>{let g=E.target.closest("[data-index]");if(g){let x=parseInt(g.dataset.index??"-1",10);if(x>=0){let j0=Z.dm?.getItem(x)??Z.it[x];if(j0){if(j0.__groupHeader)return;k.emit("item:dblclick",{item:j0,index:x,event:E})}}}},L0=(E)=>{for(let S=0;S<X0.length;S++)X0[S](E)};M.items.addEventListener("click",F0),M.items.addEventListener("dblclick",D0),M.root.addEventListener("keydown",L0);let P0=new ResizeObserver((E)=>{if(Z.id)return;for(let S of E){let g=S.contentRect.height,x=S.contentRect.width,j0=J?x:g,q0=J?Z.cw:Z.ch;if(Z.cw=x,Z.ch=g,Math.abs(j0-q0)>1){if(w.viewportState.containerSize=j0,Z.ii)M0(),Z.rfn(),k.emit("resize",{height:g,width:x})}if(Z.ii)for(let U0=0;U0<f.length;U0++)f[U0](x,g)}});if(Z.vre)P0.observe(M.viewport);let D2={dom:M,emitter:k,resolvedConfig:U,rawConfig:j,rendered:c,pool:m,itemState:n,sharedState:w,renderRange:I,isHorizontal:J,classPrefix:W,contentSizeHandlers:d,afterScroll:i,clickHandlers:B0,keydownHandlers:X0,resizeHandlers:f,destroyHandlers:e,methods:a,onScrollFrame:O0,resizeObserver:P0,applyTemplate:Z0,updateContentSize:M0},_0=c2(Z,D2);Z.dm=l2(Z,D2,_0),Z.sc=a2(Z,D2);let k2=new Map;for(let E of y)if(E.methods)for(let S of E.methods){let g=k2.get(S);if(g)throw Error(`[vlist/builder] Method "${S}" is registered by both "${g}" and "${E.name}"`);k2.set(S,E.name)}for(let E of y)E.setup(_0);if(Z.ii=!0,_0.state.isInitialized=!0,M0(),Z.rfn(),A&&Z.it.length>0){let E=Z.gsp(Z.it.length-1,Z.hc,Z.ch,Z.it.length,"end");Z.sst(E),Z.ls=E,Z.rfn()}let zj=(E)=>{_0.dataManager.setItems(E,0,E.length)},vj=A?(E)=>{let S=Z.sab(2),g=Z.it.length;if(_0.dataManager.setItems(E,g),S&&Z.it.length>0){let x=Z.gsp(Z.it.length-1,Z.hc,Z.ch,Z.it.length,"end");Z.sst(x),Z.ls=x,Z.rfn()}}:(E)=>{let S=Z.it.length;_0.dataManager.setItems(E,S)},wj=A?(E)=>{let S=Z.sgt(),g=Z.hc.getTotalSize(),x=[...Z.it];_0.dataManager.clear(),_0.dataManager.setItems([...E,...x],0);let q0=Z.hc.getTotalSize()-g;if(q0>0)Z.sst(S+q0),Z.ls=S+q0}:(E)=>{let S=[...Z.it];_0.dataManager.clear(),_0.dataManager.setItems([...E,...S],0)},Sj=(E,S)=>{_0.dataManager.updateItem(E,S)},fj=(E)=>{_0.dataManager.removeItem(E)},pj=async()=>{if(_0.dataManager.reload)await _0.dataManager.reload()},a0=()=>{if(R!==null)cancelAnimationFrame(R),R=null},Ij=(E,S,g)=>{if(a0(),Math.abs(S-E)<1){Z.sst(S),Z.ls=S,Z.rfn();return}let x=performance.now(),j0=(q0)=>{let U0=q0-x,J0=Math.min(U0/g,1),N0=E+(S-E)*m2(J0);if(Z.sst(N0),Z.ls=N0,Z.rfn(),J0<1)R=requestAnimationFrame(j0);else R=null};R=requestAnimationFrame(j0)},hj=(E,S)=>{let{align:g,behavior:x,duration:j0}=d2(S),q0=Z.vtf(),U0=E;if(D&&q0>0)U0=(U0%q0+q0)%q0;let J0=Z.gsp(U0,Z.hc,Z.ch,q0,g);if(x==="smooth")Ij(Z.sgt(),J0,j0);else a0(),Z.sst(J0)},uj=()=>Z.sgt(),gj=(E,S)=>{return k.on(E,S)},xj=(E,S)=>{k.off(E,S)},mj=()=>{if(Z.id)return;if(Z.id=!0,_0.state.isDestroyed=!0,M.items.removeEventListener("click",F0),M.root.removeEventListener("keydown",L0),Z.st.removeEventListener("scroll",O0),P0.disconnect(),o)o.disconnect(),o=null;if(Z.wh)M.viewport.removeEventListener("wheel",Z.wh);if(C)clearTimeout(C);for(let E=0;E<e.length;E++)e[E]();for(let E of y)if(E.destroy)E.destroy();a0();for(let[,E]of c)E.remove(),m.release(E);c.clear(),m.clear(),k.clear(),M.root.remove()},R2={get element(){return M.root},get items(){if(a.has("_getItems"))return a.get("_getItems")();return Z.it},get total(){if(a.has("_getTotal"))return a.get("_getTotal")();return Z.vtf()},setItems:a.has("setItems")?a.get("setItems"):zj,appendItems:a.has("appendItems")?a.get("appendItems"):vj,prependItems:a.has("prependItems")?a.get("prependItems"):wj,updateItem:a.has("updateItem")?a.get("updateItem"):Sj,removeItem:a.has("removeItem")?a.get("removeItem"):fj,reload:a.has("reload")?a.get("reload"):pj,scrollToIndex:a.has("scrollToIndex")?a.get("scrollToIndex"):hj,cancelScroll:a.has("cancelScroll")?a.get("cancelScroll"):a0,getScrollPosition:a.has("getScrollPosition")?a.get("getScrollPosition"):uj,on:gj,off:xj,destroy:mj};for(let[E,S]of a){if(E==="setItems"||E==="appendItems"||E==="prependItems"||E==="updateItem"||E==="removeItem"||E==="reload"||E==="scrollToIndex"||E==="scrollToItem"||E==="cancelScroll"||E==="getScrollPosition")continue;R2[E]=S}return R2}e0();var w0=(j,q,J={},Q="vlist",K=!1)=>{let{autoHide:X=!0,autoHideDelay:B=1000,minThumbSize:G=30,showOnHover:W=!0,hoverZoneWidth:Y=16,showOnViewportEnter:N=!0}=J,F=0,V=0,b=0,D=0,A=!1,_=!1,z=0,$=0,v=0,L=null,U=!1,y=null,O=null,T=K?"width":"height",M=K?"translateX":"translateY",k=K?(i)=>i.clientX:(i)=>i.clientY,s=K?"left":"top",P=document.createElement("div"),m=document.createElement("div"),Z=W?document.createElement("div"):null,R=()=>{if(P.className=`${Q}-scrollbar`,m.className=`${Q}-scrollbar-thumb`,K)P.classList.add(`${Q}-scrollbar--horizontal`);if(P.appendChild(m),j.appendChild(P),Z){if(Z.className=`${Q}-scrollbar-hover`,K)Z.classList.add(`${Q}-scrollbar-hover--horizontal`),Z.style.height=`${Y}px`;else Z.style.width=`${Y}px`;j.appendChild(Z)}},C=()=>{if(L)clearTimeout(L),L=null},h=()=>{if(!X)return;C(),L=setTimeout(I,B)},p=()=>{if(F<=V)return;if(C(),!U)P.classList.add(`${Q}-scrollbar--visible`),U=!0;if(X&&!A&&!_)h()},I=()=>{if(A||_)return;P.classList.remove(`${Q}-scrollbar--visible`),U=!1},H=(i,B0)=>{F=i,V=B0;let X0=F>V;if(P.style.display=X0?"":"none",!X0){I();return}let f=V/F;b=Math.max(G,f*V),m.style[T]=`${b}px`,D=V-b,w(v)},w=(i)=>{if(v=i,F<=V||D<=0)return;let B0=F-V,f=Math.min(1,Math.max(0,i/B0))*D;m.style.transform=`${M}(${f}px)`},c=(i)=>{if(i.target===m)return;let B0=P.getBoundingClientRect(),d=k(i)-B0[s]-b/2,a=Math.max(0,Math.min(d,D))/D,Z0=F-V,W0=a*Z0;q(W0),p()},t=(i)=>{i.preventDefault(),i.stopPropagation(),A=!0,z=k(i),$=v,C(),P.classList.add(`${Q}-scrollbar--dragging`),document.addEventListener("mousemove",r),document.addEventListener("mouseup",o)},r=(i)=>{if(!A)return;let B0=k(i)-z,X0=D>0?B0/D:0,f=F-V,d=X0*f,e=Math.max(0,Math.min($+d,f)),Z0=e/f*D;if(m.style.transform=`${M}(${Z0}px)`,O=e,y===null)y=requestAnimationFrame(()=>{if(O!==null)q(O);y=null})},o=()=>{if(A=!1,y!==null)cancelAnimationFrame(y),y=null;if(O!==null)q(O),O=null;if(P.classList.remove(`${Q}-scrollbar--dragging`),X&&!_)h();document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",o)},Q0=()=>{if(N)p()},l=()=>{if(!A){if(_=!1,X)h()}},u=()=>{_=!0,C(),p()},n=()=>{if(_=!1,!A&&X)h()},K0=()=>{if(C(),y!==null)cancelAnimationFrame(y),y=null;if(P.removeEventListener("click",c),P.removeEventListener("mouseenter",u),P.removeEventListener("mouseleave",n),m.removeEventListener("mousedown",t),j.removeEventListener("mouseenter",Q0),j.removeEventListener("mouseleave",l),document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",o),Z){if(Z.removeEventListener("mouseenter",u),Z.removeEventListener("mouseleave",n),Z.parentNode)Z.parentNode.removeChild(Z)}if(P.parentNode)P.parentNode.removeChild(P)};if(R(),P.addEventListener("click",c),P.addEventListener("mouseenter",u),P.addEventListener("mouseleave",n),m.addEventListener("mousedown",t),j.addEventListener("mouseenter",Q0),j.addEventListener("mouseleave",l),Z)Z.addEventListener("mouseenter",u),Z.addEventListener("mouseleave",n);return{show:p,hide:I,updateBounds:H,updatePosition:w,isVisible:()=>U,destroy:K0}};var Kj=(j)=>{let q=null;return{name:"withScrollbar",priority:30,setup(J){let{dom:Q,config:K}=J,{classPrefix:X,horizontal:B}=K;if(q=w0(Q.viewport,(Y)=>J.scrollController.scrollTo(Y),j??{},X,B),!Q.viewport.classList.contains(`${X}-viewport--custom-scrollbar`))Q.viewport.classList.add(`${X}-viewport--custom-scrollbar`);let G=J.getCachedCompression();q.updateBounds(G.virtualSize,J.state.viewportState.containerSize);let W=q;J.afterScroll.push((Y,N)=>{W.updatePosition(Y),W.show()}),J.resizeHandlers.push((Y,N)=>{if(W){let F=J.getCachedCompression();W.updateBounds(F.virtualSize,J.state.viewportState.containerSize)}}),J.contentSizeHandlers.push(()=>{if(W){let Y=J.getCachedCompression();W.updateBounds(Y.virtualSize,J.state.viewportState.containerSize)}}),J.destroyHandlers.push(()=>{if(W)W.destroy()})},destroy(){if(q)q.destroy(),q=null}}};var Zj=(j=0)=>{let q=[,,,,,,,,];for(let J=0;J<8;J++)q[J]={position:0,time:0};return{velocity:0,lastPosition:j,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},j2=(j,q)=>{let J=performance.now(),Q=J-j.lastTime;if(Q===0)return j;if(Q>100){j.sampleCount=0,j.sampleIndex=0,j.velocity=0;let X=j.samples[0];return X.position=q,X.time=J,j.sampleIndex=1,j.sampleCount=1,j.lastPosition=q,j.lastTime=J,j}let K=j.samples[j.sampleIndex];if(K.position=q,K.time=J,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,B=j.samples[X],G=q-B.position,W=J-B.time;j.velocity=W>0?G/W:0}return j.lastPosition=q,j.lastTime=J,j},QJ=(j)=>j.sampleCount>=3,Bj=(j,q={})=>{let{wheel:J=!0,sensitivity:Q=1,smoothing:K=!1,idleTimeout:X=150,onScroll:B,onIdle:G,scrollElement:W,horizontal:Y=!1}=q,N=!!W,F=0,V=0,b=N?Y?window.innerWidth:window.innerHeight:Y?j.clientWidth:j.clientHeight,D=q.compressed??!1,A=q.compression,_=Zj(),z=!1,$=null,L=J2(()=>{let l=Y?j.scrollLeft:j.scrollTop,u=l>=F?"down":"up";if(_=j2(_,l),F=l,B)B({scrollTop:F,direction:u,velocity:_.velocity});k()}),y=J2(()=>{let l=j.getBoundingClientRect(),u=Y?Math.max(0,-l.left):Math.max(0,-l.top),n=u>=F?"down":"up";if(_=j2(_,u),F=u,!z)z=!0;if(B)B({scrollTop:F,direction:n,velocity:_.velocity});k()}),O=(l)=>{l.preventDefault()},T=(l)=>{if(l.deltaX)return;l.preventDefault(),j.scrollLeft+=l.deltaY},M=(l)=>{if(!D)return;l.preventDefault();let u=(Y?l.deltaX||l.deltaY:l.deltaY)*Q,n=F+u;if(K)n=F+u*0.3;if(n=Math.max(0,Math.min(n,V)),n!==F){let i=n>=F?"down":"up";if(_=j2(_,n),F=n,!z)z=!0;if(B)B({scrollTop:F,direction:i,velocity:_.velocity});k()}},k=()=>{if($)clearTimeout($);$=setTimeout(()=>{if(z=!1,_=Zj(F),G)G()},X)},s=(l)=>{if(D)return;if(D=!0,A=l,V=l.virtualSize-b,N)return;if(L.cancel(),j.removeEventListener("scroll",L),!J)j.removeEventListener("wheel",O);else if(Y)j.removeEventListener("wheel",T);if(Y)j.style.overflowX="hidden";else j.style.overflow="hidden";if(J)j.addEventListener("wheel",M,{passive:!1});let u=Y?j.scrollLeft:j.scrollTop;if(u>0){let n=Y?A?.actualSize??j.scrollWidth:A?.actualSize??j.scrollHeight;F=u/n*V}if(Y)j.scrollLeft=0;else j.scrollTop=0},P=()=>{if(!D)return;if(D=!1,N){A=void 0;return}if(j.removeEventListener("wheel",M),Y)j.style.overflowX="auto";else j.style.overflow="auto";if(j.addEventListener("scroll",L,{passive:!0}),!J)j.addEventListener("wheel",O,{passive:!1});else if(Y)j.addEventListener("wheel",T,{passive:!1});if(A&&F>0){let u=F/V*(A.actualSize-b);if(Y)j.scrollLeft=u;else j.scrollTop=u}A=void 0},m=()=>{if(N||D)return F;return Y?j.scrollLeft:j.scrollTop},Z=(l,u=!1)=>{let n=Math.max(0,Math.min(l,V||1/0));if(N){let K0=j.getBoundingClientRect();if(Y){let i=K0.left+window.scrollX;window.scrollTo({left:i+n,behavior:u?"smooth":"auto"})}else{let i=K0.top+window.scrollY;window.scrollTo({top:i+n,behavior:u?"smooth":"auto"})}}else if(D){if(n===F)return;let i=n>=F?"down":"up";if(_=j2(_,n),F=n,!z)z=!0;if(B)B({scrollTop:F,direction:i,velocity:_.velocity});k()}else if(Y)j.scrollTo({left:n,behavior:u?"smooth":"auto"});else j.scrollTo({top:n,behavior:u?"smooth":"auto"})},R=(l)=>{Z(m()+l)},C=()=>{return m()<=0},h=(l=0)=>{let u=m(),n=N||D?V:Y?j.scrollWidth-j.clientWidth:j.scrollHeight-j.clientHeight;return u>=n-l},p=()=>{let l=m(),u=N||D?V:Y?j.scrollWidth-j.clientWidth:j.scrollHeight-j.clientHeight;if(u<=0)return 0;return Math.min(1,Math.max(0,l/u))},I=(l)=>{if(l.compression)A=l.compression,V=A.virtualSize-b},H=()=>D,w=()=>Math.abs(_.velocity),c=()=>QJ(_),t=()=>z,r=()=>N,o=(l)=>{if(b=l,A)V=A.virtualSize-b},Q0=()=>{if($)clearTimeout($);if(N)y.cancel(),window.removeEventListener("scroll",y);else L.cancel(),j.removeEventListener("scroll",L),j.removeEventListener("wheel",M),j.removeEventListener("wheel",O),j.removeEventListener("wheel",T)};if(N){if(D&&A)V=A.virtualSize-b;window.addEventListener("scroll",y,{passive:!0})}else if(D&&A){if(V=A.virtualSize-b,Y)j.style.overflowX="hidden";else j.style.overflow="hidden";if(J)j.addEventListener("wheel",M,{passive:!1})}else{if(Y)j.style.overflowX="auto",j.style.overflowY="hidden";else j.style.overflow="auto";if(j.addEventListener("scroll",L,{passive:!0}),!J)j.addEventListener("wheel",O,{passive:!1});else if(Y)j.addEventListener("wheel",T,{passive:!1})}return{getScrollTop:m,scrollTo:Z,scrollBy:R,isAtTop:C,isAtBottom:h,getScrollPercentage:p,getVelocity:w,isTracking:c,isScrolling:t,updateConfig:I,enableCompression:s,disableCompression:P,isCompressed:H,isWindowMode:r,updateContainerHeight:o,destroy:Q0}},J2=(j)=>{let q=null,J=null,Q=(...K)=>{if(J=K,q===null)q=requestAnimationFrame(()=>{if(q=null,J)j(...J)})};return Q.cancel=()=>{if(q!==null)cancelAnimationFrame(q),q=null},Q};var qJ=0.65,XJ=0.5,YJ=0.95,KJ=0.1,ZJ=5,BJ=100,Uj=()=>{let j=null,q=0,J=!1,Q=0,K=null,X=0,B=0,G=null,W=[];return{name:"withScale",priority:20,setup(Y){let{dom:N,config:F}=Y,{classPrefix:V,horizontal:b}=F,D=()=>{let $=Y.getVirtualTotal(),v=A0($,Y.sizeCache);if(v.isCompressed&&!J){J=!0,Y.scrollController.enableCompression(v),Y.updateContentSize(v.virtualSize),Y.setScrollFns(()=>q,(P)=>{if(q=P,Q=P,K!==null)cancelAnimationFrame(K),K=null});let L=()=>{let P=Q-q;if(Math.abs(P)<XJ)q=Q,K=null;else{q+=P*qJ;let Z=Y.getCachedCompression().virtualSize-Y.state.viewportState.containerSize;q=Math.max(0,Math.min(q,Z)),K=requestAnimationFrame(L)}Y.scrollController.scrollTo(q)},U=N.viewport,y=(P)=>{P.preventDefault();let Z=Y.getCachedCompression().virtualSize-Y.state.viewportState.containerSize;if(Q=Math.max(0,Math.min(Q+P.deltaY,Z)),K===null)K=requestAnimationFrame(L)};U.addEventListener("wheel",y,{passive:!1});let O=()=>{if(G!==null)cancelAnimationFrame(G),G=null},T=(P)=>{if(O(),K!==null)cancelAnimationFrame(K),K=null;let m=P.touches[0];if(!m)return;let Z=b?m.clientX:m.clientY;X=Z,B=q,W=[{time:performance.now(),y:Z}]},M=(P)=>{P.preventDefault();let m=P.touches[0];if(!m)return;let Z=b?m.clientX:m.clientY,R=performance.now();if(W.push({time:R,y:Z}),W.length>ZJ)W.shift();let C=X-Z,p=Y.getCachedCompression().virtualSize-Y.state.viewportState.containerSize,I=Math.max(0,Math.min(B+C,p));q=I,Q=I,Y.scrollController.scrollTo(I)},k=(P)=>{let m=performance.now(),Z=W.filter((p)=>m-p.time<BJ),R=0;if(Z.length>=2){let p=Z[0],I=Z[Z.length-1],H=I.time-p.time;if(H>0)R=(p.y-I.y)/H}if(W=[],Math.abs(R)<KJ)return;let C=R*16,h=()=>{if(C*=YJ,Math.abs(C)<0.5){G=null;return}let I=Y.getCachedCompression().virtualSize-Y.state.viewportState.containerSize,H=q+C;if(H=Math.max(0,Math.min(H,I)),H<=0&&C<0||H>=I&&C>0){q=H,Q=H,Y.scrollController.scrollTo(H),G=null;return}q=H,Q=H,Y.scrollController.scrollTo(H),G=requestAnimationFrame(h)};G=requestAnimationFrame(h)};if(U.addEventListener("touchstart",T,{passive:!0}),U.addEventListener("touchmove",M,{passive:!1}),U.addEventListener("touchend",k,{passive:!0}),U.addEventListener("touchcancel",k,{passive:!0}),Y.destroyHandlers.push(()=>{if(U.removeEventListener("wheel",y),U.removeEventListener("touchstart",T),U.removeEventListener("touchmove",M),U.removeEventListener("touchend",k),U.removeEventListener("touchcancel",k),O(),K!==null)cancelAnimationFrame(K),K=null}),!N.viewport.querySelector(`.${V}-scrollbar-track`)){if(j=w0(N.viewport,(m)=>Y.scrollController.scrollTo(m),{},V,b),!N.viewport.classList.contains(`${V}-viewport--custom-scrollbar`))N.viewport.classList.add(`${V}-viewport--custom-scrollbar`);j.updateBounds(v.virtualSize,Y.state.viewportState.containerSize);let P=j;Y.afterScroll.push((m,Z)=>{if(P)P.updatePosition(m),P.show()}),Y.resizeHandlers.push((m,Z)=>{if(P){let R=Y.getCachedCompression();P.updateBounds(R.virtualSize,Y.state.viewportState.containerSize)}})}}else if(!v.isCompressed&&J)J=!1,Y.scrollController.disableCompression(),Y.updateContentSize(v.actualSize);else if(v.isCompressed)Y.scrollController.updateConfig({compression:v}),Y.updateContentSize(v.virtualSize);if(j)j.updateBounds(v.virtualSize,Y.state.viewportState.containerSize);Y.state.cachedCompression={state:v,totalItems:$}};Y.updateCompressionMode=D;let A=Y.getCachedCompression.bind(Y);Y.getCachedCompression=()=>{if(Y.state.cachedCompression)return Y.state.cachedCompression.state;return A()},Y.setVisibleRangeFn(($,v,L,U,y)=>{_=null,z=null;let O=A0(U,L);i0($,v,L,U,O,y)}),Y.setScrollToPosFn(($,v,L,U,y)=>{let O=A0(U,v);return t0($,v,L,U,O,y)});let _=null,z=null;Y.setPositionElementFn(($,v)=>{let L=Y.getVirtualTotal(),U=A0(L,Y.sizeCache);if(U.isCompressed){let y=Y.scrollController.getScrollTop();if(_===null||v<z)z=v,_=Math.round(v0(v,y,Y.sizeCache,L,Y.state.viewportState.containerSize,U));let O=_+Y.sizeCache.getOffset(v)-Y.sizeCache.getOffset(z),T=Y.config.horizontal;$.style.transform=T?`translateX(${O}px)`:`translateY(${O}px)`}else{let y=Math.round(Y.sizeCache.getOffset(v)),O=Y.config.horizontal;$.style.transform=O?`translateX(${y}px)`:`translateY(${y}px)`}}),D(),Y.destroyHandlers.push(()=>{if(j)j.destroy(),j=null;if(K!==null)cancelAnimationFrame(K),K=null})},destroy(){if(j)j.destroy(),j=null;if(K!==null)cancelAnimationFrame(K),K=null;if(G!==null)cancelAnimationFrame(G),G=null}}};var Q2=(j={})=>{let{chunkSize:q=100,maxCachedItems:J=5000,evictionBuffer:Q=200,onEvict:K}=j,X=new Map,B=0,G=0,W=(R)=>{let C=X.get(R);if(!C)C={items:Array(q),count:0,lastAccess:Date.now()},X.set(R,C);else C.lastAccess=Date.now();return C},Y=(R)=>{return Math.floor(R/q)},N=(R)=>{return R%q},F=()=>B,V=(R)=>{B=R},b=(R)=>{if(R<0||R>=B)return;let C=Y(R),h=X.get(C);if(!h)return;return h.items[N(R)]},D=(R)=>{if(R<0||R>=B)return!1;let C=Y(R),h=X.get(C);if(!h)return!1;return h.items[N(R)]!==void 0},A=(R,C)=>{let h=Y(R),p=W(h),I=N(R),H=p.items[I]===void 0;if(p.items[I]=C,H)p.count++,G++;if(R>=B)B=R+1},_=(R,C)=>{for(let h=0;h<C.length;h++){let p=C[h];if(p!==void 0)A(R+h,p)}},z=(R)=>{if(R<0||R>=B)return!1;let C=Y(R),h=X.get(C);if(!h)return!1;let p=N(R);if(h.items[p]===void 0)return!1;if(h.items[p]=void 0,h.count--,G--,h.count===0)X.delete(C);return!0},$=(R,C)=>{let h=[];for(let p=R;p<=C&&p<B;p++)h.push(b(p));return h},v=(R,C)=>{for(let h=R;h<=C&&h<B;h++)if(!D(h))return!1;return!0},L=()=>{let R=[],C=null,h=Array.from(X.keys()).sort((p,I)=>p-I);for(let p of h){let I=X.get(p);if(!I)continue;let H=p*q;for(let w=0;w<q;w++){let c=H+w;if(c>=B)break;if(I.items[w]!==void 0)if(C===null)C={start:c,end:c};else if(c===C.end+1)C.end=c;else R.push(C),C={start:c,end:c};else if(C!==null)R.push(C),C=null}}if(C!==null)R.push(C);return R},U=(R,C)=>{let h=[],p=null;for(let I=R;I<=C&&I<B;I++)if(!D(I))if(p===null)p={start:I,end:I};else p.end=I;else if(p!==null)h.push(p),p=null;if(p!==null)h.push(p);return h},y=(R)=>{return X.has(R)},O=(R)=>{let C=X.get(R);if(C)C.lastAccess=Date.now()},T=(R,C)=>{if(R>C||X.size===0)return;let h=Date.now(),p=Y(Math.max(0,R)),I=Y(Math.min(B-1,C));for(let H=p;H<=I;H++){let w=X.get(H);if(w)w.lastAccess=h}},M=(R,C)=>{if(G<=J)return 0;let h=Math.max(0,R-Q),p=Math.min(B-1,C+Q),I=Y(h),H=Y(p),w=0,c=[];for(let[t,r]of X)if(t<I||t>H)w+=r.count,c.push(t),G-=r.count,X.delete(t);if(w>0&&K)K(w,c);return w},k=()=>{if(G<=J)return 0;let R=Array.from(X.entries()).sort(([,p],[,I])=>p.lastAccess-I.lastAccess),C=0,h=[];for(let[p,I]of R){if(G<=J)break;C+=I.count,G-=I.count,h.push(p),X.delete(p)}if(C>0&&K)K(C,h);return C},s=()=>{return{totalItems:B,cachedItems:G,cachedChunks:X.size,chunkSize:q,maxCachedItems:J,memoryEfficiency:B>0?1-G/B:1}},P=()=>G,m=()=>{X.clear(),G=0};return{chunkSize:q,maxCachedItems:J,getTotal:F,setTotal:V,get:b,has:D,set:A,setRange:_,delete:z,getRange:$,isRangeLoaded:v,getLoadedRanges:L,findUnloadedRanges:U,getChunkIndex:Y,isChunkLoaded:y,touchChunk:O,touchChunksForRange:T,evictDistant:M,evictToLimit:k,getStats:s,getCachedCount:P,clear:m,reset:()=>{m(),B=0}}},q2=(j)=>{if(j.length===0)return[];let q=[...j].sort((Q,K)=>Q.start-K.start),J=[{...q[0]}];for(let Q=1;Q<q.length;Q++){let K=q[Q],X=J[J.length-1];if(K.start<=X.end+1)X.end=Math.max(X.end,K.end);else J.push({...K})}return J},g0=(j,q,J)=>{let Q=Math.floor(j.start/J)*J,K=Math.ceil((j.end+1)/J)*J-1,X={start:Q,end:K};if(q.length===0)return[X];let B=[],G=q2(q),W=X.start;for(let Y of G){if(Y.end<W)continue;if(Y.start>X.end)break;if(Y.start>W)B.push({start:W,end:Math.min(Y.start-1,X.end)});if(W=Y.end+1,W>X.end)break}if(W<=X.end)B.push({start:W,end:X.end});return B};var X2=(j={})=>{let{maskCharacter:q=t2,maxSampleSize:J=e2}=j,Q=[],K=!1,X=0,B=(F)=>{if(K||F.length===0)return;let V=Math.min(F.length,J);for(let b=0;b<V;b++){let D=F[b];if(!D||typeof D!=="object")continue;let A={};for(let[_,z]of Object.entries(D)){if(_.startsWith("_")||_==="id")continue;A[_]=String(z??"").length}if(Object.keys(A).length>0)Q.push(A)}K=!0},G=()=>K,W=(F)=>{let V={id:`${jj}${X++}`,[A2]:!0,_index:F};if(Q.length===0)return V.label=q.repeat(12),V;let b=Q[F%Q.length];for(let[D,A]of Object.entries(b))V[D]=q.repeat(Math.max(1,A));return V};return{analyzeStructure:B,hasAnalyzedStructure:G,generate:W,generateRange:(F,V)=>{let b=[];for(let D=F;D<=V;D++)b.push(W(D));return b},clear:()=>{Q=[],K=!1,X=0}}},k0=(j)=>{if(!j||typeof j!=="object")return!1;return j[A2]===!0},E2=(j)=>{return j.filter((q)=>!k0(q))};var NJ=50,Y2=(j={})=>{let{adapter:q,initialItems:J,initialTotal:Q,storage:K,placeholder:X,pageSize:B=NJ,onStateChange:G,onItemsLoaded:W,onItemsEvicted:Y}=j,N=Q2({...K,onEvict:(f,d)=>{Y?.(f),U()}}),F=null,V=()=>{if(!F)F=X2(X);return F},b=new Map,D=!1,A,_=!0,z,$=[],v=0,L=new Map,U=()=>{G?.(Z())},y=()=>{b.clear();let f=N.getLoadedRanges();for(let d of f)for(let e=d.start;e<=d.end;e++){let a=N.get(e);if(a&&!k0(a))b.set(a.id,e)}},O=(f,d)=>{if(!k0(d))b.set(d.id,f)},T=(f)=>{b.delete(f)},M=(f,d)=>{return`${f}-${d}`},k=()=>N.getTotal(),s=()=>N.getCachedCount(),P=()=>D,m=()=>_,Z=()=>({total:N.getTotal(),cached:N.getCachedCount(),isLoading:D,pendingRanges:$,error:A,hasMore:_,cursor:z}),R=()=>N,C=()=>V(),h=(f)=>{let d=N.get(f);if(d!==void 0)return d;if(f>=0&&f<N.getTotal())return V().generate(f);return},p=(f)=>{let d=b.get(f);if(d===void 0)return;return N.get(d)},I=(f)=>{return b.get(f)??-1},H=(f)=>{let d=N.get(f);return d!==void 0&&!k0(d)},w=(f,d)=>{let e=[],a=N.getTotal(),Z0=0,W0=0;N.touchChunksForRange(f,Math.min(d,a-1));for(let E0=f;E0<=d&&E0<a;E0++){let M0=N.get(E0);if(M0!==void 0)e.push(M0),Z0++;else e.push(V().generate(E0)),W0++}return e},c=(f)=>{N.setTotal(f),_=N.getCachedCount()<f,U()},t=(f,d=0,e)=>{if(F&&!F.hasAnalyzedStructure()&&f.length>0)F.analyzeStructure(f);for(let a=0;a<f.length;a++){let Z0=f[a];if(Z0!==void 0){let W0=d+a;N.set(W0,Z0),O(W0,Z0)}}if(e!==void 0)N.setTotal(e);else if(d+f.length>N.getTotal())N.setTotal(d+f.length);if(N.getCachedCount()>=N.getTotal()&&N.getTotal()>0)_=!1;W?.(f,d,N.getTotal()),U()},r=(f,d)=>{let e=b.get(f);if(e===void 0)return!1;let a=N.get(e);if(!a)return!1;let Z0={...a,...d};if(N.set(e,Z0),d.id!==void 0&&d.id!==f)T(f),O(e,Z0);return U(),!0},o=(f)=>{let d=b.get(f);if(d===void 0)return!1;N.delete(d),T(f);let e=N.getTotal();if(e>0)N.setTotal(e-1);return U(),!0},Q0=async(f,d)=>{if(!q)return;let e=M(f,d);if(L.has(e))return;let a=N.getLoadedRanges(),Z0=g0({start:f,end:d},a,N.chunkSize);if(Z0.length===0)return;let W0=N.chunkSize,E0=[];for(let G0 of Z0){let H0=Math.floor(G0.start/W0),O0=Math.floor(G0.end/W0);for(let Y0=H0;Y0<=O0;Y0++){let F0=Y0*W0,D0=F0+W0-1,L0=M(F0,D0);if(!E0.some((P0)=>P0.start===F0)&&!L.has(L0))E0.push({start:F0,end:D0})}}let M0=[];for(let G0 of Z0){let H0=Math.floor(G0.start/W0),O0=Math.floor(G0.end/W0);for(let Y0=H0;Y0<=O0;Y0++){let F0=Y0*W0,D0=F0+W0-1,L0=M(F0,D0);if(L.has(L0)){let P0=L.get(L0);if(!M0.includes(P0))M0.push(P0)}}}for(let G0 of E0){let H0=M(G0.start,G0.end),O0=(async()=>{$.push(G0),D=!0,A=void 0,U();try{let Y0=G0.end-G0.start+1,F0={offset:G0.start,limit:Y0,cursor:void 0},D0=await q.read(F0);if(t(D0.items,G0.start,D0.total),D0.cursor)z=D0.cursor;let L0=G0.start+D0.items.length;if(L0>=v){if(v=L0,D0.hasMore!==void 0)_=D0.hasMore;else if(D0.total!==void 0)_=L0<D0.total}}catch(Y0){A=Y0 instanceof Error?Y0:Error(String(Y0))}finally{L.delete(H0),$=$.filter((Y0)=>Y0.start!==G0.start||Y0.end!==G0.end),D=L.size>0,U()}})();L.set(H0,O0),M0.push(O0)}await Promise.all(M0)},l=async(f,d)=>{if(N.isRangeLoaded(f,d))return;await Q0(f,d)},u=async()=>{if(!q)return;await Q0(0,B-1)},n=async()=>{if(!q||D||!_)return!1;let f=N.getCachedCount(),d=N.getTotal(),e=f,a=Math.min(e+B-1,d>0?d-1:e+B-1);if(e>=d&&d>0)return _=!1,!1;return await Q0(e,a),N.getCachedCount()>f},K0=async()=>{if(N.clear(),N.setTotal(0),b.clear(),F)F.clear();L.clear(),$=[],D=!1,z=void 0,_=!0,v=0,A=void 0,U()},i=(f,d)=>{if(N.evictDistant(f,d)>0)y()},B0=()=>{N.clear(),b.clear(),z=void 0,A=void 0,$=[],D=!1,U()},X0=()=>{if(N.reset(),b.clear(),F)F.clear();z=void 0,_=!0,v=0,A=void 0,$=[],D=!1,U()};if(J&&J.length>0)t(J,0,Q??J.length);else if(Q!==void 0)N.setTotal(Q),U();return{getState:Z,getTotal:k,getCached:s,getIsLoading:P,getHasMore:m,getStorage:R,getPlaceholders:C,getItem:h,getItemById:p,getIndexById:I,isItemLoaded:H,getItemsInRange:w,setTotal:c,setItems:t,updateItem:r,removeItem:o,loadRange:Q0,ensureRange:l,loadInitial:u,loadMore:n,reload:K0,evictDistant:i,clear:B0,reset:X0}};var Nj=(j)=>{let{adapter:q,loading:J,storage:Q,total:K,autoLoad:X=!0}=j,B=J?.cancelThreshold??n2,G=J?.preloadThreshold??o2,W=J?.preloadAhead??i2;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(Y){let{emitter:N}=Y,F=Y.config.reverse,V=Y2({adapter:q,...K!==void 0&&{initialTotal:K},pageSize:Q?.chunkSize??z0,...Q&&{storage:{...Q.chunkSize!==void 0&&{chunkSize:Q.chunkSize},...Q.maxCachedItems!==void 0&&{maxCachedItems:Q.maxCachedItems}}},onStateChange:()=>{if(Y.state.isInitialized){let L=Y.getVirtualTotal();Y.sizeCache.rebuild(L),Y.updateCompressionMode();let U=Y.getCachedCompression();Y.state.viewportState.totalSize=U.virtualSize,Y.state.viewportState.actualSize=U.actualSize,Y.state.viewportState.isCompressed=U.isCompressed,Y.state.viewportState.compressionRatio=U.ratio,Y.updateContentSize(U.virtualSize),Y.renderIfNeeded()}},onItemsLoaded:(L,U,y)=>{if(Y.state.isInitialized)Y.forceRender(),N.emit("load:end",{items:L,total:y,offset:U})}});Y.replaceDataManager(V);let b=null,D=null,A=0,_=()=>{if(D){let L=D;D=null,Y.dataManager.ensureRange(L.start,L.end).catch((U)=>{N.emit("error",{error:U,context:"ensureRange"})})}};Y.afterScroll.push((L,U)=>{if(Y.state.isDestroyed)return;let y=Y.scrollController.getVelocity(),T=Y.scrollController.isTracking()&&y<=B;if(D&&A>B&&y<=B){let s=D;D=null,Y.dataManager.ensureRange(s.start,s.end).catch((P)=>{N.emit("error",{error:P,context:"ensureRange"})})}if(A=y,T&&!Y.dataManager.getIsLoading()&&Y.dataManager.getHasMore()){if(F){if(L<F2)N.emit("load:start",{offset:Y.dataManager.getCached(),limit:z0}),Y.dataManager.loadMore().catch((s)=>{N.emit("error",{error:s,context:"loadMore"})})}else if(Y.state.viewportState.totalSize-L-Y.state.viewportState.containerSize<F2)N.emit("load:start",{offset:Y.dataManager.getCached(),limit:z0}),Y.dataManager.loadMore().catch((P)=>{N.emit("error",{error:P,context:"loadMore"})})}let{renderRange:M}=Y.state.viewportState;if(!b||M.start!==b.start||M.end!==b.end)if(b={start:M.start,end:M.end},T){D=null;let{start:s,end:P}=M,m=Y.getVirtualTotal();if(y>G)if(U==="down")P=Math.min(M.end+W,m-1);else s=Math.max(M.start-W,0);Y.dataManager.ensureRange(s,P).catch((Z)=>{N.emit("error",{error:Z,context:"ensureRange"})})}else D={start:M.start,end:M.end}});let z=200,$=null;Y.afterScroll.push((L,U)=>{if($!==null)clearTimeout($);$=setTimeout(()=>{$=null,_()},z)}),Y.destroyHandlers.push(()=>{if($!==null)clearTimeout($),$=null});let v=()=>{if(Y.state.isDestroyed)return;b=null;let{renderRange:L}=Y.state.viewportState;if(L.end>0)Y.dataManager.ensureRange(L.start,L.end).catch((U)=>{N.emit("error",{error:U,context:"ensureRange"})});_()};if(window.addEventListener("online",v),Y.destroyHandlers.push(()=>{window.removeEventListener("online",v)}),N.on("load:start",()=>{Y.dom.root.setAttribute("aria-busy","true")}),N.on("load:end",()=>{Y.dom.root.removeAttribute("aria-busy")}),Y.methods.set("loadVisibleRange",async()=>{b=null,D=null,Y.forceRender();let{renderRange:L}=Y.state.viewportState;if(L.end>0)N.emit("load:start",{offset:L.start,limit:L.end-L.start+1}),await Y.dataManager.ensureRange(L.start,L.end)}),Y.methods.set("reload",async()=>{b=null,D=null,Y.invalidateRendered(),await Y.dataManager.reload(),N.emit("load:start",{offset:0,limit:z0}),await Y.dataManager.loadInitial(),Y.forceRender();let{renderRange:L}=Y.state.viewportState;if(L.end>0)await Y.dataManager.ensureRange(L.start,L.end)}),X)N.emit("load:start",{offset:0,limit:z0}),Y.dataManager.loadInitial().catch((L)=>{N.emit("error",{error:L,context:"loadInitial"})});else if(K!==void 0)Y.dataManager.setTotal(K)}}};var Gj=()=>{let j=null;return{name:"withPage",priority:5,setup(q){let{dom:J,state:Q,config:K,emitter:X}=q;if(J.root.style.overflow="visible",J.root.style.height="auto",K.horizontal)J.viewport.style.overflowX="visible",J.viewport.style.overflowY="visible";else J.viewport.style.overflow="visible";J.viewport.classList.remove(`${K.classPrefix}-viewport--custom-scrollbar`),q.disableViewportResize(),q.disableWheelHandler(),q.setScrollTarget(window),q.setScrollFns(()=>{let Y=J.viewport.getBoundingClientRect();if(K.horizontal)return Math.max(0,-Y.left);else return Math.max(0,-Y.top)},(Y)=>{let N=J.viewport.getBoundingClientRect();if(K.horizontal){let F=N.left+window.scrollX;window.scrollTo(F+Y,window.scrollY)}else{let F=N.top+window.scrollY;window.scrollTo(window.scrollX,F+Y)}}),q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),Q.viewportState.containerSize=window.innerHeight;let{innerHeight:B,innerWidth:G}=window,W=()=>{let{innerWidth:Y,innerHeight:N}=window,F=K.horizontal?Y:N,V=K.horizontal?G:B;if(Math.abs(F-V)<=1)return;B=N,G=Y,Q.viewportState.containerSize=N,X.emit("resize",{width:Y,height:N});for(let b=0;b<q.resizeHandlers.length;b++)q.resizeHandlers[b](Y,N);q.renderIfNeeded()};window.addEventListener("resize",W,{passive:!0}),j=()=>{window.removeEventListener("resize",W)},q.destroyHandlers.push(j)},destroy(){if(j)j(),j=null}}};var L2=(j,q)=>{let J=0,Q=j.length-1;while(J<Q){let K=J+Q+1>>>1;if(j[K].headerLayoutIndex<=q)J=K;else Q=K-1}return J},Wj=(j,q)=>{let J=0,Q=j.length-1;while(J<Q){let K=J+Q+1>>>1;if(j[K].firstDataIndex<=q)J=K;else Q=K-1}return J},Dj=(j,q)=>{if(j===0)return[];let J=[],Q=q(0),K=0,X=0;for(let B=1;B<j;B++){let G=q(B);if(G!==Q){let W=B-K;J.push({key:Q,groupIndex:J.length,headerLayoutIndex:X,firstDataIndex:K,count:W}),X=X+1+W,Q=G,K=B}}return J.push({key:Q,groupIndex:J.length,headerLayoutIndex:X,firstDataIndex:K,count:j-K}),J},x0=(j,q)=>{if(j.length===0||q.length===0)return[];let J=j.length+q.length,Q=Array(J),K=0;for(let X of q){Q[K]={id:`__group_header_${X.groupIndex}`,__groupHeader:!0,groupKey:X.key,groupIndex:X.groupIndex},K++;for(let B=0;B<X.count;B++)Q[K]=j[X.firstDataIndex+B],K++}return Q},m0=(j,q)=>{let J=typeof q==="number"?(Q)=>q:q;return(Q)=>{let K=j.getEntry(Q);if(K.type==="header")return j.getHeaderHeight(K.group.groupIndex);return J(K.dataIndex)}},K2=(j,q)=>{let J=Dj(j,q.getGroupForIndex),Q=j+J.length,K=q.headerHeight;return{get totalEntries(){return Q},get groupCount(){return J.length},get groups(){return J},getEntry:(V)=>{if(J.length===0)return{type:"item",dataIndex:V,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let b=L2(J,V),D=J[b];if(V===D.headerLayoutIndex)return{type:"header",group:D};let A=V-D.headerLayoutIndex-1;return{type:"item",dataIndex:D.firstDataIndex+A,group:D}},layoutToDataIndex:(V)=>{if(J.length===0)return V;let b=L2(J,V),D=J[b];if(V===D.headerLayoutIndex)return-1;let A=V-D.headerLayoutIndex-1;return D.firstDataIndex+A},dataToLayoutIndex:(V)=>{if(J.length===0)return V;let b=Wj(J,V),D=J[b],A=V-D.firstDataIndex;return D.headerLayoutIndex+1+A},getGroupAtLayoutIndex:(V)=>{if(J.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let b=L2(J,V);return J[b]},getGroupAtDataIndex:(V)=>{if(J.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let b=Wj(J,V);return J[b]},getHeaderHeight:typeof K==="number"?(V)=>K:(V)=>{let b=J[V];if(!b)return 0;return K(b.key,V)},rebuild:(V)=>{J=Dj(V,q.getGroupForIndex),Q=V+J.length}}};var Z2=(j,q,J,Q,K,X=!1)=>{let B=document.createElement("div");if(B.className=`${K}-sticky-header`,B.setAttribute("role","presentation"),B.setAttribute("aria-hidden","true"),B.style.position="absolute",B.style.zIndex="5",B.style.pointerEvents="none",B.style.willChange="transform",B.style.overflow="hidden",X)B.style.top="0",B.style.bottom="0",B.style.left="0";else B.style.top="0",B.style.left="0",B.style.right="0";j.insertBefore(B,j.firstChild);let G=-1,W=!1,Y=0,N=(_)=>{if(_===G)return;G=_;let z=q.groups;if(_<0||_>=z.length){B.textContent="";return}let $=z[_],v=Q.headerTemplate($.key,$.groupIndex),L=q.getHeaderHeight(_);if(X)B.style.width=`${L}px`;else B.style.height=`${L}px`;if(typeof v==="string")B.innerHTML=v;else B.replaceChildren(v)},F=(_)=>{let z=q.groups;if(z.length===0){b();return}let $=0;for(let O=z.length-1;O>=0;O--)if(J.getOffset(z[O].headerLayoutIndex)<=_){$=O;break}let v=J.getOffset(z[0].headerLayoutIndex);if(_<v){b();return}if(!W)V();N($);let L=q.getHeaderHeight($),U=0,y=$+1;if(y<z.length){let T=J.getOffset(z[y].headerLayoutIndex)-_;if(T<L)U=T-L}if(U!==Y)if(Y=U,U===0)B.style.transform="";else{let O=Math.round(U);B.style.transform=X?`translateX(${O}px)`:`translateY(${O}px)`}},V=()=>{if(W)return;W=!0,B.style.display=""},b=()=>{if(!W)return;W=!1,B.style.display="none",G=-1,Y=0,B.style.transform=""},D=()=>{let _=G;if(G=-1,_>=0)N(_)},A=()=>{B.remove(),G=-1,W=!1};return B.style.display="none",{update:F,refresh:D,show:V,hide:b,destroy:A}};var _j=(j,q,J,Q,K,X)=>{if(Q===0||q===0)return X.start=0,X.end=-1,X;let B=J.indexAtOffset(j),G=J.indexAtOffset(j+q);if(G<Q-1)G++;return X.start=Math.max(0,B),X.end=Math.min(Q-1,Math.max(0,G)),X},Vj=(j,q,J,Q)=>{if(J===0)return Q.start=0,Q.end=-1,Q;return Q.start=Math.max(0,j.start-q),Q.end=Math.min(J-1,j.end+q),Q},Mj=(j,q,J,Q,K,X)=>{if(Q===0)return 0;let B=Math.max(0,Math.min(j,Q-1)),G=q.getOffset(B),W=q.getSize(B),Y=q.getTotalSize(),N=Math.max(0,Y-J),F;switch(X){case"center":F=G-J/2+W/2;break;case"end":F=G-J+W;break;case"start":default:F=G;break}return Math.max(0,Math.min(F,N))},Fj=(j,q,J)=>{if(J&&J.isCompressed)return J.virtualSize;return q.getTotalSize()},Aj=(j,q)=>{return q.getTotalSize()},Ej=(j,q)=>{return q.getOffset(j)},Lj=(j,q,J)=>{let Q=Math.max(0,q-J);return Math.max(0,Math.min(j,Q))};var C0=(j,q,J,Q,K="start",X,B=Mj)=>{return B(j,q,J,Q,X,K)},Oj=(j,q)=>{return j.start===q.start&&j.end===q.end},bj=(j,q)=>{return j>=q.start&&j<=q.end},yj=(j)=>{if(j.end<j.start)return 0;return j.end-j.start+1};var Tj=(j,q)=>{let J=[],Q=[];for(let K=j.start;K<=j.end;K++)if(K<q.start||K>q.end)Q.push(K);for(let K=q.start;K<=q.end;K++)if(K<j.start||K>j.end)J.push(K);return{add:J,remove:Q}};e0();var Pj=(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,J=null,Q=[],K=[];return{name:"withSections",priority:10,setup(X){let{dom:B,config:G,rawConfig:W}=X,{classPrefix:Y}=G,F=W.item.height;Q=W.items?[...W.items]:[];let V=Q.length,b={getGroupForIndex:j.getGroupForIndex,headerHeight:j.headerHeight,headerTemplate:j.headerTemplate,sticky:j.sticky??!1};q=K2(V,b),K=x0(Q,q.groups);let D=m0(q,F);X.setSizeConfig(D),X.rebuildSizeCache(K.length),X.dataManager.setItems(K,0,K.length);let A=W.item.template,{headerTemplate:_}=j,z=(T,M,k)=>{if(R0(T))return _(T.groupKey,T.groupIndex);return A(T,M,k)},$=X.methods.get("_getGridLayout"),v=X.methods.get("_replaceGridRenderer"),L=X.methods.get("_updateGridLayoutForGroups");if($&&v){if(L)L((s)=>{let P=K[s];return!!(P&&R0(P))});let{createGridRenderer:T}=(B2(),rj(Hj)),M=$(),k=T(B.items,z,X.sizeCache,M,Y,X.getContainerWidth(),()=>X.dataManager.getTotal(),G.ariaIdPrefix);v(k)}else X.replaceTemplate(z);if(B.root.classList.add(`${Y}--grouped`),j.sticky!==!1){J=Z2(B.root,q,X.sizeCache,{...b,sticky:b.sticky??!1},Y,G.horizontal);let T=J;X.afterScroll.push((M,k)=>{T.update(M)}),J.update(X.scrollController.getScrollTop())}let U=()=>{if(!q)return;q.rebuild(Q.length),K=x0(Q,q.groups);let T=m0(q,F);if(X.setSizeConfig(T),X.rebuildSizeCache(K.length),X.dataManager.setItems(K,0,K.length),J)J.refresh()};X.methods.set("setItems",(T)=>{Q=[...T],U()}),X.methods.set("appendItems",(T)=>{Q=[...Q,...T],U()}),X.methods.set("prependItems",(T)=>{Q=[...T,...Q],U()}),X.methods.set("removeItem",(T)=>{Q=Q.filter((M)=>M.id!==T),U()});let{animateScroll:y,cancelScroll:O}=DJ(X.scrollController,X.renderIfNeeded);X.methods.set("scrollToIndex",(T,M)=>{let k=q.dataToLayoutIndex(T),{align:s,behavior:P,duration:m}=_J(M),Z=X.dataManager.getTotal(),R=C0(k,X.sizeCache,X.state.viewportState.containerSize,Z,s,X.getCachedCompression());if(P==="smooth")y(X.scrollController.getScrollTop(),R,m);else O(),X.scrollController.scrollTo(R)}),X.methods.set("_getItems",()=>Q),X.methods.set("_getTotal",()=>Q.length),X.destroyHandlers.push(()=>{if(T0!==null)cancelAnimationFrame(T0),T0=null;if(J)J.destroy(),J=null;B.root.classList.remove(`${Y}--grouped`)})},destroy(){if(J)J.destroy(),J=null}}},O2=300,WJ=(j)=>j<0.5?2*j*j:-1+(4-2*j)*j,T0=null,DJ=(j,q)=>{let J=()=>{if(T0!==null)cancelAnimationFrame(T0),T0=null};return{animateScroll:(K,X,B)=>{if(J(),Math.abs(X-K)<1){j.scrollTo(X);return}let G=performance.now(),W=(Y)=>{let N=Y-G,F=Math.min(N/B,1),V=K+(X-K)*WJ(F);if(j.scrollTo(V),q(),F<1)T0=requestAnimationFrame(W);else T0=null};T0=requestAnimationFrame(W)},cancelScroll:J}},_J=(j)=>{if(typeof j==="string")return{align:j,behavior:"auto",duration:O2};if(j&&typeof j==="object")return{align:j.align??"start",behavior:j.behavior??"auto",duration:j.duration??O2};return{align:"start",behavior:"auto",duration:O2}};var U2=(j)=>{let q=Math.max(1,Math.floor(j.columns)),J=j.gap??0,Q=j.isHeaderFn,K={row:0,col:0},X=(D)=>{if(D<=0)return 0;if(!Q)return Math.ceil(D/q);let A=0,_=0,z=0;for(let $=0;$<D;$++)if(Q($)){if(z++,_>0)A++,_=0;A++,_=0}else if(_++,_>=q)A++,_=0;if(_>0)A++;return A},B=(D)=>{return K.row=G(D),K.col=W(D),K},G=(D)=>{if(!Q)return Math.floor(D/q);let A=0,_=0;for(let z=0;z<=D;z++)if(Q(z)){if(_>0)A++,_=0;if(z===D)return A;A++,_=0}else{if(z===D)return A;if(_++,_>=q)A++,_=0}return console.warn(`⚠️ getRow(${D}) fell through - returning ${A}`),A},W=(D)=>{if(!Q)return D%q;if(Q(D))return 0;let A=0;for(let _=0;_<=D;_++)if(Q(_))A=0;else{if(_===D)return A;if(A++,A>=q)A=0}return A},Y=(D,A,_)=>{if(_<=0)return{start:0,end:-1};if(!Q){let U=Math.max(0,D*q),y=Math.min(_-1,(A+1)*q-1);return{start:U,end:y}}let z=-1,$=-1,v=0,L=0;for(let U=0;U<_;U++){if(Q(U)){if(L>0)v++,L=0;if(v>=D&&v<=A){if(z===-1)z=U;$=U}v++,L=0}else{if(v>=D&&v<=A){if(z===-1)z=U;$=U}if(L++,L>=q)v++,L=0}if(v>A&&L===0)break}if(z===-1)return{start:0,end:-1};return{start:z,end:$}},N=(D,A,_)=>{if(A<0||A>=q)return-1;let z=D*q+A;if(z<0||z>=_)return-1;return z},F=(D)=>{let A=(q-1)*J;return Math.max(0,(D-A)/q)};return{get columns(){return q},get gap(){return J},update:(D)=>{if(D.columns!==void 0)q=Math.max(1,Math.floor(D.columns));if(D.gap!==void 0)J=D.gap;if(D.isHeaderFn!==void 0)Q=D.isHeaderFn},getTotalRows:X,getPosition:B,getRow:G,getCol:W,getItemRange:Y,getItemIndex:N,getColumnWidth:F,getColumnOffset:(D,A)=>{let _=F(A);return D*(_+J)}}};B2();var $j=(j)=>{if(!j.columns||j.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let q=null,J=null;return{name:"withGrid",priority:10,setup(Q){let{dom:K,emitter:X,config:B,rawConfig:G}=Q,{classPrefix:W}=B;if(B.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let Y=B.horizontal,N=()=>Y?K.viewport.clientHeight:Q.getContainerWidth(),F=G.items?.some((O)=>O.__groupHeader===!0),V={columns:j.columns,gap:j.gap??0};if(F)V.isHeaderFn=(O)=>{let T=Q.dataManager.getItem(O);return!!(T&&T.__groupHeader===!0)};q=U2(V);let b=q.gap;Q.setVirtualTotalFn(()=>{let O=Q.dataManager.getTotal();return q.getTotalRows(O)});let D=G.item,A=B.horizontal?D.width:D.height,_={containerWidth:N(),columns:q.columns,gap:q.gap};if(typeof A==="function")Q.setSizeConfig((O)=>{let T=_.containerWidth-2,M=(_.columns-1)*_.gap,k=(T-M)/_.columns,s={containerWidth:_.containerWidth,columns:_.columns,gap:_.gap,columnWidth:k,row:q.getRow(O),column:q.getCol(O),totalRows:q.getTotalRows(Q.dataManager.getTotal()),totalColumns:_.columns};return A(O,s)+_.gap});else if(b>0)Q.setSizeConfig(A+b);Q.rebuildSizeCache(),K.root.classList.add(`${W}--grid`);let z=N(),$=G.item.template,v=()=>{J=d0(K.items,$,Q.sizeCache,q,W,z,()=>Q.dataManager.getTotal(),B.ariaIdPrefix,B.horizontal),Q.replaceRenderer(J)};v(),Q.methods.set("_getGridLayout",()=>q),Q.methods.set("_getGridConfig",()=>V),Q.methods.set("_replaceGridRenderer",(O)=>{J=O}),Q.methods.set("_updateGridLayoutForGroups",(O)=>{q.update({isHeaderFn:O});let T=Q.dataManager.getTotal(),M=0;for(let k=0;k<T;k++)if(q.getCol(k)===0){let s=Q.sizeCache.getSize(k);M+=s}if(Q.sizeCache.getTotalSize=()=>M,B.horizontal)Q.dom.content.style.width=`${M}px`;else Q.dom.content.style.height=`${M}px`;v()}),Q.methods.set("updateGrid",(O)=>{if(O.columns!==void 0){if(!Number.isInteger(O.columns)||O.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");V.columns=O.columns}if(O.gap!==void 0){if(O.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");V.gap=O.gap}if(q)q.update(V);let T=N();if(_.containerWidth=T,_.columns=V.columns,_.gap=V.gap??0,J)J.updateContainerWidth(T);Q.rebuildSizeCache(),Q.updateContentSize(Q.sizeCache.getTotalSize()),Q.updateCompressionMode();for(let M=0;M<Q.contentSizeHandlers.length;M++)Q.contentSizeHandlers[M]();if(J)J.clear();Q.forceRender()});let L=()=>{if(Q.state.isDestroyed)return;let O=Q.scrollController.getScrollTop(),T=Q.state.viewportState.containerSize,M=Q.getVirtualTotal(),k={start:0,end:0};if(M===0||T===0)k.start=0,k.end=0;else{k.start=Math.max(0,Q.sizeCache.indexAtOffset(O));let I=Q.sizeCache.indexAtOffset(O+T);if(I<M-1)I++;k.end=Math.min(M-1,Math.max(0,I))}let s=B.overscan??3,P={start:Math.max(0,k.start-s),end:Math.min(M-1,k.end+s)};Q.state.viewportState.scrollPosition=O,Q.state.viewportState.visibleRange=k,Q.state.viewportState.renderRange=P;let m=Q.state.lastRenderRange,Z=Q.state.viewportState.isCompressed;if(P.start===m.start&&P.end===m.end){if(Z)J.updatePositions(Q.getCompressionContext());return}let R=Q.dataManager.getTotal(),C=q.getItemRange(P.start,P.end,R),h=Q.dataManager.getItemsInRange(C.start,C.end),p=Z?Q.getCompressionContext():void 0;J.render(h,C,new Set,-1,p),Q.state.lastRenderRange={...P},X.emit("range:change",{range:P})},U=()=>{if(Q.state.isDestroyed)return;Q.state.lastRenderRange={start:-1,end:-1},L()};Q.setRenderFns(L,U);let y=typeof A==="function";if(Q.resizeHandlers.push((O,T)=>{let M=Y?T:O;if(_.containerWidth=M,J)J.updateContainerWidth(M);if(y){Q.rebuildSizeCache(),Q.updateContentSize(Q.sizeCache.getTotalSize()),Q.updateCompressionMode();for(let k=0;k<Q.contentSizeHandlers.length;k++)Q.contentSizeHandlers[k]();if(J)J.clear();Q.forceRender()}}),Q.methods.set("scrollToIndex",(O,T)=>{let M=Math.floor(O/j.columns),{align:k,behavior:s}=VJ(T),P=Q.dataManager.getState(),m=q.getTotalRows(P.total),Z=Math.max(0,Math.min(M,m-1)),R=C0(Z,Q.sizeCache,Q.state.viewportState.containerSize,m,k,Q.getCachedCompression());if(s==="smooth")Q.scrollController.scrollTo(R);else Q.scrollController.scrollTo(R)}),!Q.methods.has("_getTotal"))Q.methods.set("_getTotal",()=>Q.dataManager.getTotal());Q.destroyHandlers.push(()=>{if(J)J.destroy(),J=null;K.root.classList.remove(`${W}--grid`)})},destroy(){if(J)J.destroy(),J=null}}},b2=300,VJ=(j)=>{if(typeof j==="string")return{align:j,behavior:"auto",duration:b2};if(j&&typeof j==="object")return{align:j.align??"start",behavior:j.behavior??"auto",duration:j.duration??b2};return{align:"start",behavior:"auto",duration:b2}};B2();var N2=(j)=>({selected:new Set(j??[]),focusedIndex:-1}),c0=(j,q,J)=>{if(J==="none")return j;let Q=new Set(j.selected);if(J==="single"){if(Q.clear(),q.length>0)Q.add(q[0])}else for(let K of q)Q.add(K);return{...j,selected:Q}},l0=(j,q)=>{let J=new Set(j.selected);for(let Q of q)J.delete(Q);return{...j,selected:J}},S0=(j,q,J)=>{if(J==="none")return j;if(j.selected.has(q))return l0(j,[q]);else return c0(j,[q],J)},G2=(j,q,J)=>{if(J!=="multiple")return j;return{...j,selected:new Set(q.map((Q)=>Q.id))}},W2=(j)=>({...j,selected:new Set}),y2=(j,q)=>{return j.focusedIndex=q,j},T2=(j,q,J=!0)=>{if(q===0)return j;let Q=j.focusedIndex-1;if(Q<0)Q=J?q-1:0;return j.focusedIndex=Q,j},H2=(j,q,J=!0)=>{if(q===0)return j;let Q=j.focusedIndex+1;if(Q>=q)Q=J?0:q-1;return j.focusedIndex=Q,j},P2=(j,q)=>{if(q===0)return j;return j.focusedIndex=0,j},$2=(j,q)=>{if(q===0)return j;return j.focusedIndex=q-1,j};var kj=(j,q)=>{return j.selected.has(q)},f0=(j)=>{return Array.from(j.selected)},p0=(j,q)=>{let J=[];for(let Q of j.selected){let K=q(Q);if(K)J.push(K)}return J};var Rj=(j)=>{let q=j?.mode??"single",J=j?.initial,Q=N2(J),K=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(X){let{dom:B,emitter:G,config:W}=X,{classPrefix:Y,ariaIdPrefix:N}=W;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}let F=new Map,V=()=>{F.clear();let L=X.dataManager.getTotal(),U=X.dataManager.getCached();if(U===0)return;if(U>=L){for(let O=0;O<L;O++){let T=X.dataManager.getItem(O);if(T)F.set(T.id,O)}return}let y=X.dataManager.getStorage();if(y&&typeof y.getLoadedRanges==="function"){let O=y.getLoadedRanges();for(let T of O)for(let M=T.start;M<=T.end;M++){let k=X.dataManager.getItem(M);if(k)F.set(k.id,M)}}};G.on("load:end",({items:L,offset:U})=>{if(!L||L.length===0)return;if(U!==void 0)for(let y=0;y<L.length;y++){let O=L[y];if(O&&O.id!==void 0)F.set(O.id,U+y)}else V()}),V();let{renderIfNeeded:b,forceRender:D}=X.getRenderFns(),A=()=>{X.dom.items.querySelectorAll("[data-index]").forEach((U)=>{let y=U,O=y.dataset.id;if(O!==void 0){let T=/^\d+$/.test(O)?parseInt(O,10):O,M=Q.selected.has(T),s=parseInt(y.dataset.index??"-1",10)===Q.focusedIndex;y.classList.toggle(`${Y}-item--selected`,M),y.classList.toggle(`${Y}-item--focused`,s),y.ariaSelected=M?"true":"false"}})},_=()=>{if(X.state.isDestroyed)return;b(),A()},z=()=>{if(X.state.isDestroyed)return;D(),A()};X.setRenderFns(_,z);let $=()=>{A();let L=(U)=>{let y=F.get(U);if(y===void 0)return;return X.dataManager.getItem(y)};G.emit("selection:change",{selected:f0(Q),items:p0(Q,L)})};K=document.createElement("div"),K.setAttribute("aria-live","polite"),K.setAttribute("aria-atomic","true"),K.className=`${Y}-live-region`,K.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",B.root.appendChild(K);let v=K;G.on("selection:change",({selected:L})=>{let U=L.length;if(U===0)v.textContent="";else if(U===1)v.textContent="1 item selected";else v.textContent=`${U} items selected`}),X.clickHandlers.push((L)=>{if(X.state.isDestroyed)return;let y=L.target.closest("[data-index]");if(!y)return;let O=parseInt(y.dataset.index??"-1",10);if(O<0)return;let T=X.dataManager.getItem(O);if(!T)return;G.emit("item:click",{item:T,index:O,event:L}),Q=y2(Q,O),B.root.setAttribute("aria-activedescendant",`${N}-item-${O}`),Q=S0(Q,T.id,q),$()}),X.keydownHandlers.push((L)=>{if(X.state.isDestroyed)return;let U=X.dataManager.getTotal(),y=Q.focusedIndex,O=!1,T=!1,M=Q;switch(L.key){case"ArrowUp":M=T2(Q,U),O=!0,T=!0;break;case"ArrowDown":M=H2(Q,U),O=!0,T=!0;break;case"Home":M=P2(Q,U),O=!0,T=!0;break;case"End":M=$2(Q,U),O=!0,T=!0;break;case" ":case"Enter":if(Q.focusedIndex>=0){let k=X.dataManager.getItem(Q.focusedIndex);if(k)M=S0(Q,k.id,q);O=!0}break}if(O){L.preventDefault(),Q=M;let k=Q.focusedIndex;if(k>=0){let s=X.dataManager.getState(),P=C0(k,X.sizeCache,X.state.viewportState.containerSize,s.total,"center",X.getCachedCompression());X.scrollController.scrollTo(P),B.root.setAttribute("aria-activedescendant",`${N}-item-${k}`)}else B.root.removeAttribute("aria-activedescendant");if(T){let{selected:s}=Q;if(y>=0&&y!==k){let P=X.dataManager.getItem(y);if(P)X.renderer.updateItemClasses(y,s.has(P.id),!1)}if(k>=0){let P=X.dataManager.getItem(k);if(P)X.renderer.updateItemClasses(k,s.has(P.id),!0)}}else{z();let s=(P)=>{let m=F.get(P);if(m===void 0)return;return X.dataManager.getItem(m)};G.emit("selection:change",{selected:f0(Q),items:p0(Q,s)})}}}),X.methods.set("select",(...L)=>{Q=c0(Q,L,q),$()}),X.methods.set("deselect",(...L)=>{Q=l0(Q,L),$()}),X.methods.set("toggleSelect",(L)=>{Q=S0(Q,L,q),$()}),X.methods.set("selectAll",()=>{if(q!=="multiple")return;let L=X.getAllLoadedItems();Q=G2(Q,L,q),V(),$()}),X.methods.set("clearSelection",()=>{Q=W2(Q);let{renderRange:L,isCompressed:U}=X.state.viewportState,y=X.getItemsForRange(L),O=U?X.getCompressionContext():void 0;X.renderer.render(y,L,Q.selected,Q.focusedIndex,O),G.emit("selection:change",{selected:[],items:[]})}),X.methods.set("getSelected",()=>{return f0(Q)}),X.methods.set("getSelectedItems",()=>{return p0(Q,(U)=>{let y=F.get(U);if(y===void 0)return;return X.dataManager.getItem(y)})}),X.destroyHandlers.push(()=>{if(v&&v.parentNode)v.remove()})},destroy(){if(K&&K.parentNode)K.remove();K=null}}};var Cj=(j)=>{let q=j?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(J){J.methods.set("getScrollSnapshot",()=>{let K=J.scrollController.getScrollTop(),X=J.getCachedCompression(),B=J.getVirtualTotal(),G=J.methods.get("getSelected"),W=G&&G().length>0?G():void 0;if(B===0){let V={index:0,offsetInItem:0,total:0};if(W)V.selectedIds=W;return V}let Y,N;if(X.isCompressed){let b=K/X.virtualSize*B;Y=Math.max(0,Math.min(Math.floor(b),B-1)),N=(b-Y)*J.sizeCache.getSize(Y)}else Y=J.sizeCache.indexAtOffset(K),N=K-J.sizeCache.getOffset(Y);N=Math.max(0,N);let F={index:Y,offsetInItem:N,total:B};if(W)F.selectedIds=W;return F});let Q=(K)=>{let{index:X,offsetInItem:B,selectedIds:G}=K,W=J.getVirtualTotal();if(W===0)return;if(!Number.isFinite(X)||!Number.isFinite(B))return;if(J.sizeCache.getTotal()!==W){J.sizeCache.rebuild(W),J.updateCompressionMode();let _=J.getCachedCompression();J.updateContentSize(_.virtualSize)}let N=J.getCachedCompression(),F=Math.max(0,Math.min(X,W-1)),V;if(N.isCompressed){let _=J.sizeCache.getSize(F),z=_>0?B/_:0;V=(F+z)/W*N.virtualSize}else V=J.sizeCache.getOffset(F)+B;let b=J.state.viewportState.containerSize,D=Math.max(0,N.virtualSize-b);if(V=Math.max(0,Math.min(V,D)),J.scrollController.scrollTo(V),G&&G.length>0){let _=J.methods.get("select");if(_)_(...G)}let A=J.methods.get("loadVisibleRange");if(A)requestAnimationFrame(()=>{A()});else{let _=J.methods.get("reload");if(_)requestAnimationFrame(()=>{_()})}};if(J.methods.set("restoreScroll",Q),q)queueMicrotask(()=>{Q(q)})}}};export{Cj as withSnapshots,Rj as withSelection,Pj as withSections,Kj as withScrollbar,Uj as withScale,Gj as withPage,$j as withGrid,Nj as withAsync,r2 as vlist,S0 as toggleSelection,_j as simpleVisibleRange,c0 as selectItems,G2 as selectAll,Oj as rangesEqual,J2 as rafThrottle,qj as needsScaling,q2 as mergeRanges,kj as isSelected,R0 as isSectionHeader,k0 as isPlaceholderItem,bj as isInRange,p0 as getSelectedItems,f0 as getSelectedIds,A0 as getScaleState,Yj as getScaleInfo,A0 as getScale,yj as getRangeCount,Xj as getMaxItemsWithoutScaling,E2 as filterPlaceholders,Tj as diffRanges,l0 as deselectItems,Z2 as createStickyHeader,Q2 as createSparseStorage,y0 as createSizeCache,N2 as createSelectionState,m0 as createSectionedSizeFn,K2 as createSectionLayout,w0 as createScrollbar,Bj as createScrollController,X2 as createPlaceholderManager,n0 as createMeasuredSizeCache,d0 as createGridRenderer,U2 as createGridLayout,o0 as createEmitter,Y2 as createAsyncManager,W2 as clearSelection,Lj as clampScrollPosition,Fj as calculateTotalSize,C0 as calculateScrollToIndex,i0 as calculateScaledVisibleRange,t0 as calculateScaledScrollToIndex,Jj as calculateScaledRenderRange,v0 as calculateScaledItemPosition,Vj as calculateRenderRange,g0 as calculateMissingRanges,Ej as calculateItemOffset,Qj as calculateIndexFromScrollPosition,Aj as calculateActualSize,x0 as buildLayoutItems,$0 as MAX_VIRTUAL_HEIGHT};
package/dist/types.d.ts CHANGED
@@ -501,6 +501,7 @@ export interface VListEvents<T extends VListItem = VListItem> extends EventMap {
501
501
  "load:end": {
502
502
  items: T[];
503
503
  total?: number;
504
+ offset?: number;
504
505
  };
505
506
  /** Error occurred */
506
507
  error: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floor/vlist",
3
- "version": "0.9.8",
3
+ "version": "0.9.9",
4
4
  "description": "Lightweight, high-performance virtual list with zero dependencies",
5
5
  "author": {
6
6
  "name": "Floor IO",