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