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